@oddmaki-protocol/sdk 1.10.1 → 1.11.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -1 +1 @@
1
- {"version":3,"sources":["../src/config.ts","../src/subgraph/client.ts","../src/modules/base.ts","../src/contracts/abis/VenueFacet.json","../src/contracts/abis/MarketsFacet.json","../src/contracts/abis/LimitOrdersFacet.json","../src/contracts/abis/MatchingFacet.json","../src/contracts/abis/OrderBookFacet.json","../src/contracts/abis/MarketGroupFacet.json","../src/contracts/abis/MarketOrdersFacet.json","../src/contracts/abis/ResolutionFacet.json","../src/contracts/abis/VaultFacet.json","../src/contracts/abis/NegRiskFacet.json","../src/contracts/abis/ProtocolFacet.json","../src/contracts/abis/AccessControlFacet.json","../src/contracts/abis/TagsFacet.json","../src/contracts/abis/MetadataFacet.json","../src/contracts/abis/PriceMarketFacet.json","../src/contracts/abis/PythResolutionFacet.json","../src/contracts/abis/BatchOrdersFacet.json","../src/contracts/abis/WhitelistAccessControl.json","../src/contracts/abis/ConditionalTokens.json","../src/contracts/abis/ERC20.json","../src/contracts/abis/UmaOracle.json","../src/modules/venue.ts","../src/utils/conversions.ts","../src/utils/decimals.ts","../src/modules/market.ts","../src/modules/trade.ts","../src/subgraph/queries.ts","../src/modules/public.ts","../src/modules/token.ts","../src/modules/uma.ts","../src/modules/accessControl.ts","../src/modules/priceMarket.ts","../src/client.ts","../src/constants.ts","../src/utils/metadata.ts","../src/index.ts"],"names":["gql","erc20Abi","FeedProvider","stringToHex","base","gateway"],"mappings":"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A;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AA0KhC,IAAM,iCAAA,GAAoC,GAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAiK1C,IAAM,oBAAA,GAAuB,GAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAuJ7B,IAAM,8BAAA,GAAiC,GAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAkJvC,IAAM,uBAAA,GAA0B,GAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAgDhC,IAAM,iBAAA,GAAoB,GAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAuC1B,IAAM,kBAAA,GAAqB,GAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAgC3B,IAAM,kBAAA,GAAqB,GAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAkB3B,IAAM,oBAAA,GAAuB,GAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AA8C7B,IAAM,2BAAA,GAA8B,GAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AA8CpC,IAAM,gBAAA,GAAmB,GAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AA2CzB,IAAM,eAAA,GAAkB,GAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AA0BxB,IAAM,sBAAA,GAAyB,GAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;;;ACv6CtC,IAAM,mBAAA,GAAsC,CAAC,OAAA,EAAS,QAAA,EAAU,YAAY,SAAS,CAAA;AAgC9E,IAAM,YAAA,GAAN,cAA2B,UAAA,CAAW;AAAA;AAAA;AAAA;AAAA,EAI3C,MAAM,UAAU,MAAA,EAKb;AACD,IAAA,OAAO,IAAA,CAAK,QAAA,CAAS,OAAA,CAAQ,UAAA,EAAY;AAAA,MACvC,KAAA,EAAO,QAAQ,KAAA,IAAS,GAAA;AAAA,MACxB,IAAA,EAAM,QAAQ,IAAA,IAAQ,CAAA;AAAA,MACtB,OAAA,EAAS,QAAQ,OAAA,IAAW,WAAA;AAAA,MAC5B,cAAA,EAAgB,QAAQ,cAAA,IAAkB;AAAA,KAC3C,CAAA;AAAA,EACH;AAAA;AAAA;AAAA;AAAA,EAKA,MAAM,WAAW,MAAA,EAMd;AACD,IAAA,OAAO,IAAA,CAAK,QAAA,CAAS,OAAA,CAAQ,WAAA,EAAa;AAAA,MACxC,OAAA,EAAS,MAAA,CAAO,OAAA,EAAS,QAAA,EAAS;AAAA,MAClC,MAAA,EAAQ,OAAO,MAAA,IAAU,EAAA;AAAA,MACzB,QAAA,EAAU,OAAO,QAAA,IAAY,mBAAA;AAAA,MAC7B,KAAA,EAAO,OAAO,KAAA,IAAS,GAAA;AAAA,MACvB,IAAA,EAAM,OAAO,IAAA,IAAQ;AAAA,KACtB,CAAA;AAAA,EACH;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,EAUA,MAAM,sBAAsB,MAAA,EAMzB;AACD,IAAA,OAAO,IAAA,CAAK,QAAA,CAAS,OAAA,CAAQ,wBAAA,EAA0B;AAAA,MACrD,OAAA,EAAS,MAAA,CAAO,OAAA,EAAS,QAAA,EAAS;AAAA,MAClC,MAAA,EAAQ,OAAO,MAAA,IAAU,EAAA;AAAA,MACzB,QAAA,EAAU,OAAO,QAAA,IAAY,mBAAA;AAAA,MAC7B,KAAA,EAAO,OAAO,KAAA,IAAS,GAAA;AAAA,MACvB,IAAA,EAAM,OAAO,IAAA,IAAQ;AAAA,KACtB,CAAA;AAAA,EACH;AAAA;AAAA;AAAA;AAAA,EAKA,MAAM,UAAU,QAAA,EAAkB;AAChC,IAAA,MAAM,QAAA,GAAW,MAAM,IAAA,CAAK,QAAA,CAAS,QAAa,UAAA,EAAY;AAAA,MAC5D,QAAA,EAAU,SAAS,QAAA;AAAS,KAC7B,CAAA;AACD,IAAA,OAAO,QAAA,CAAS,OAAA,CAAQ,CAAC,CAAA,IAAK,IAAA;AAAA,EAChC;AAAA;AAAA;AAAA;AAAA,EAKA,MAAM,gBAAgB,MAAA,EAInB;AACD,IAAA,OAAO,IAAA,CAAK,QAAA,CAAS,OAAA,CAAa,UAAA,EAAY;AAAA,MAC5C,QAAA,EAAU,MAAA,CAAO,QAAA,CAAS,QAAA,EAAS;AAAA,MACnC,KAAA,EAAO,OAAO,KAAA,IAAS,GAAA;AAAA,MACvB,IAAA,EAAM,OAAO,IAAA,IAAQ;AAAA,KACtB,CAAA;AAAA,EACH;AAAA;AAAA;AAAA;AAAA;AAAA,EAMA,MAAM,eAAe,MAAA,EAKlB;AACD,IAAA,MAAM,SAAA,GAAiC;AAAA,MACrC,QAAA,EAAU,MAAA,CAAO,QAAA,CAAS,QAAA,EAAS;AAAA,MACnC,KAAA,EAAO,OAAO,KAAA,IAAS,GAAA;AAAA,MACvB,IAAA,EAAM,OAAO,IAAA,IAAQ;AAAA,KACvB;AAIA,IAAA,IAAI,MAAA,CAAO,iBAAiB,MAAA,EAAW;AACrC,MAAA,SAAA,CAAU,YAAA,GAAe,MAAA,CAAO,YAAA,CAAa,QAAA,EAAS;AACtD,MAAA,OAAO,IAAA,CAAK,QAAA,CAAS,OAAA,CAAa,gBAAA,EAAkB,SAAS,CAAA;AAAA,IAC/D;AAEA,IAAA,OAAO,IAAA,CAAK,QAAA,CAAS,OAAA,CAAa,oBAAA,EAAsB,SAAS,CAAA;AAAA,EACnE;AAAA;AAAA;AAAA;AAAA,EAKA,MAAM,UAAU,MAAA,EAA6D;AAC3E,IAAA,OAAO,IAAA,CAAK,QAAA,CAAS,OAAA,CAAa,UAAA,EAAY;AAAA,MAC5C,QAAA,EAAU,MAAA,CAAO,QAAA,CAAS,QAAA,EAAS;AAAA,MACnC,KAAA,EAAO,OAAO,KAAA,IAAS,GAAA;AAAA,MACvB,IAAA,EAAM,OAAO,IAAA,IAAQ;AAAA,KACtB,CAAA;AAAA,EACH;AAAA;AAAA;AAAA;AAAA,EAKA,MAAM,QAAQ,OAAA,EAAiB;AAC7B,IAAA,OAAO,IAAA,CAAK,QAAA,CAAS,OAAA,CAAa,QAAA,EAAU;AAAA,MAC1C,OAAA,EAAS,QAAQ,WAAA;AAAY,KAC9B,CAAA;AAAA,EACH;AAAA;AAAA;AAAA;AAAA,EAKA,MAAM,aAAa,QAAA,EAAkB;AACnC,IAAA,OAAO,IAAA,CAAK,QAAA,CAAS,OAAA,CAAa,eAAA,EAAiB;AAAA,MACjD,QAAA,EAAU,SAAS,QAAA;AAAS,KAC7B,CAAA;AAAA,EACH;AAAA;AAAA;AAAA;AAAA,EAKA,MAAM,gBAAA,GAAmB;AACvB,IAAA,OAAO,IAAA,CAAK,QAAA,CAAS,OAAA,CAAa,kBAAkB,CAAA;AAAA,EACtD;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,EASA,MAAM,gBAAgB,MAAA,EAInB;AACD,IAAA,OAAO,IAAA,CAAK,QAAA,CAAS,OAAA,CAAQ,iBAAA,EAAmB;AAAA,MAC9C,OAAA,EAAS,MAAA,CAAO,OAAA,EAAS,QAAA,EAAS;AAAA,MAClC,KAAA,EAAO,OAAO,KAAA,IAAS,GAAA;AAAA,MACvB,IAAA,EAAM,OAAO,IAAA,IAAQ;AAAA,KACtB,CAAA;AAAA,EACH;AAAA;AAAA;AAAA;AAAA,EAKA,MAAM,eAAe,OAAA,EAAiB;AACpC,IAAA,MAAM,QAAA,GAAW,MAAM,IAAA,CAAK,QAAA,CAAS,QAAa,gBAAA,EAAkB;AAAA,MAClE,OAAA,EAAS,QAAQ,QAAA;AAAS,KAC3B,CAAA;AACD,IAAA,OAAO,QAAA,CAAS,YAAA,CAAa,CAAC,CAAA,IAAK,IAAA;AAAA,EACrC;AAAA;AAAA;AAAA;AAAA,EAKA,MAAM,gBAAgB,MAAA,EAInB;AACD,IAAA,OAAO,IAAA,CAAK,QAAA,CAAS,OAAA,CAAa,iBAAA,EAAmB;AAAA,MACnD,OAAA,EAAS,MAAA,CAAO,OAAA,CAAQ,QAAA,EAAS;AAAA,MACjC,KAAA,EAAO,OAAO,KAAA,IAAS,GAAA;AAAA,MACvB,IAAA,EAAM,OAAO,IAAA,IAAQ;AAAA,KACtB,CAAA;AAAA,EACH;AAAA;AAAA;AAAA;AAAA,EAKA,MAAM,mBAAmB,QAAA,EAAkB;AACzC,IAAA,MAAM,QAAA,GAAW,MAAM,IAAA,CAAK,QAAA,CAAS,QAAa,qBAAA,EAAuB;AAAA,MACvE,QAAA,EAAU,SAAS,QAAA;AAAS,KAC7B,CAAA;AACD,IAAA,OAAO,QAAA,CAAS,gBAAA,CAAiB,CAAC,CAAA,IAAK,IAAA;AAAA,EACzC;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,EAiBA,MAAM,qBAAqB,MAAA,EAKxB;AACD,IAAA,MAAM,MAAA,GAAS,QAAQ,MAAA,IAAU,SAAA;AAEjC,IAAA,IAAI,WAAW,QAAA,EAAU;AACvB,MAAA,OAAO,IAAA,CAAK,QAAA,CAAS,OAAA,CAAa,iCAAA,EAAmC;AAAA,QACnE,OAAA,EAAS,MAAA,EAAQ,OAAA,EAAS,QAAA,EAAS;AAAA,QACnC,KAAA,EAAO,QAAQ,KAAA,IAAS,EAAA;AAAA,QACxB,IAAA,EAAM,QAAQ,IAAA,IAAQ;AAAA,OACvB,CAAA;AAAA,IACH;AAEA,IAAA,OAAO,IAAA,CAAK,QAAA,CAAS,OAAA,CAAa,uBAAA,EAAyB;AAAA,MACzD,OAAA,EAAS,MAAA,EAAQ,OAAA,EAAS,QAAA,EAAS;AAAA,MACnC,KAAA,EAAO,QAAQ,KAAA,IAAS,EAAA;AAAA,MACxB,IAAA,EAAM,QAAQ,IAAA,IAAQ;AAAA,KACvB,CAAA;AAAA,EACH;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,EAOA,gBAAA,CACE,QAAA,EACA,MAAA,GAA+B,SAAA,EAC/B,KAAA,EACY;AACZ,IAAA,MAAM,cAAc,QAAA,CAAS,iBAAA,IAAqB,EAAC,EAAG,GAAA,CAAI,CAAC,CAAA,MAAY;AAAA,MACrE,GAAG,CAAA;AAAA,MACH,IAAA,EAAM,YAAA;AAAA,MACN,SAAA,EACE,MAAA,KAAW,QAAA,GACP,MAAA,CAAO,CAAA,CAAE,WAAA,IAAe,GAAG,CAAA,GAC3B,MAAA,CAAO,CAAA,CAAE,SAAA,IAAa,GAAG;AAAA,KACjC,CAAE,CAAA;AAEF,IAAA,MAAM,UAAU,QAAA,CAAS,YAAA,IAAgB,EAAC,EAAG,GAAA,CAAI,CAAC,CAAA,KAAW;AAE3D,MAAA,MAAM,WAAA,GACJ,EAAE,OAAA,EAAS,MAAA;AAAA,QACT,CAAC,GAAA,EAAa,CAAA,KAAW,MAAM,MAAA,CAAO,CAAA,CAAE,eAAe,GAAG,CAAA;AAAA,QAC1D;AAAA,OACF,IAAK,EAAA;AAEP,MAAA,OAAO;AAAA,QACL,GAAG,CAAA;AAAA,QACH,IAAA,EAAM,OAAA;AAAA,QACN,WAAA,EAAa,YAAY,QAAA,EAAS;AAAA,QAClC,WACE,MAAA,KAAW,QAAA,GAAW,cAAc,MAAA,CAAO,CAAA,CAAE,aAAa,GAAG;AAAA,OACjE;AAAA,IACF,CAAC,CAAA;AAID,IAAA,MAAM,UAAU,QAAA,CAAS,iBAAA,IAAqB,EAAC,EAAG,GAAA,CAAI,CAAC,CAAA,MAAY;AAAA,MACjE,GAAG,CAAA;AAAA,MACH,IAAA,EAAM,QAAA;AAAA,MACN,SAAA,EACE,MAAA,KAAW,QAAA,GACP,MAAA,CAAO,EAAE,aAAA,EAAe,WAAA,IAAe,GAAG,CAAA,GAC1C,MAAA,CAAO,CAAA,CAAE,SAAA,IAAa,CAAA,CAAE,aAAa,GAAG;AAAA,KAChD,CAAE,CAAA;AAGF,IAAA,MAAM,MAAA,GAAS,CAAC,GAAG,UAAA,EAAY,GAAG,MAAA,EAAQ,GAAG,MAAM,CAAA,CAAE,IAAA,CAAK,CAAC,CAAA,EAAG,CAAA,KAAM;AAElE,MAAA,OAAO,CAAA,CAAE,SAAA,GAAY,CAAA,CAAE,SAAA,GAAY,EAAA,GAAK,CAAA;AAAA,IAC1C,CAAC,CAAA;AAGD,IAAA,OAAO,KAAA,GAAQ,MAAA,CAAO,KAAA,CAAM,CAAA,EAAG,KAAK,CAAA,GAAI,MAAA;AAAA,EAC1C;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,EAYA,MAAM,qBAAqB,MAAA,EAGH;AACtB,IAAA,MAAM,QAAA,GAAW,MAAM,IAAA,CAAK,QAAA,CAAS,QAAa,uBAAA,EAAyB;AAAA,MACzE,OAAA,EAAS,MAAA,CAAO,OAAA,CAAQ,QAAA,EAAS;AAAA,MACjC,WAAW,MAAA,CAAO;AAAA,KACnB,CAAA;AACD,IAAA,OAAO,QAAA,CAAS,iBAAA,GAAoB,CAAC,CAAA,IAAK,IAAA;AAAA,EAC5C;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,EAQA,iBAAiB,IAAA,EAAkD;AACjE,IAAA,IAAI,CAAC,MAAM,OAAO,IAAA;AAClB,IAAA,IAAI,iBAAA,GAAoB,KAAA;AACxB,IAAA,IAAI,SAAA,GAA2B,IAAA;AAC/B,IAAA,KAAA,MAAW,KAAK,IAAA,EAAM;AACpB,MAAA,IAAI,CAAA,KAAM,gBAAgB,iBAAA,GAAoB,IAAA;AAAA,WAAA,IACrC,CAAA,CAAE,WAAW,SAAS,CAAA,cAAe,CAAA,CAAE,KAAA,CAAM,UAAU,MAAM,CAAA;AAAA,IACxE;AACA,IAAA,OAAO,oBAAoB,SAAA,GAAY,IAAA;AAAA,EACzC;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,EAWA,2BAA2B,MAAA,EAA4B;AACrD,IAAA,IAAI,CAAC,MAAA,CAAO,QAAA,EAAU,OAAO,IAAA;AAE7B,IAAA,MAAM,MAAA,GAAS,uBAAuB,MAAM,CAAA;AAC5C,IAAA,IAAI,WAAW,EAAA,IAAM,CAAC,OAAO,eAAA,IAAmB,CAAC,OAAO,eAAA,EAAiB;AACvE,MAAA,OAAO,IAAA;AAAA,IACT;AACA,IAAA,OAAA,CAAQ,MAAA,GAAS,GAAA,EAAK,OAAA,CAAQ,CAAC,CAAA;AAAA,EACjC;AAAA;AAAA;AAAA;AAAA;AAAA,EAMA,4BAA4B,KAAA,EAAY;AACtC,IAAA,MAAM,QAAA,GAAA,CAAY,KAAA,CAAM,OAAA,IAAW,IAChC,MAAA,CAAO,CAAC,CAAA,KAAW,CAAC,EAAE,eAAA,EAAiB,aAAa,CAAA,CACpD,GAAA,CAAI,CAAC,CAAA,MAAY;AAAA,MAChB,UAAU,CAAA,CAAE,QAAA;AAAA,MACZ,IAAA,EAAM,CAAA,CAAE,eAAA,EAAiB,UAAA,IAAc,SAAA;AAAA,MACvC,UAAU,CAAA,CAAE,QAAA;AAAA,MACZ,WAAA,EAAa,IAAA,CAAK,0BAAA,CAA2B,CAAC,CAAA;AAAA,MAC9C,QAAQ,CAAA,CAAE,MAAA;AAAA,MACV,aAAa,CAAA,CAAE;AAAA,KACjB,CAAE,CAAA,CACD,IAAA,CAAK,CAAC,GAAQ,CAAA,KAAW;AAExB,MAAA,MAAM,KAAA,GAAQ,UAAA,CAAW,CAAA,CAAE,WAAA,IAAe,GAAG,CAAA;AAC7C,MAAA,MAAM,KAAA,GAAQ,UAAA,CAAW,CAAA,CAAE,WAAA,IAAe,GAAG,CAAA;AAC7C,MAAA,OAAO,KAAA,GAAQ,KAAA;AAAA,IACjB,CAAC,CAAA;AAEH,IAAA,OAAO;AAAA,MACL,IAAA,EAAM,OAAA;AAAA,MACN,SAAS,KAAA,CAAM,OAAA;AAAA,MACf,gBAAgB,KAAA,CAAM,cAAA;AAAA,MACtB,QAAQ,KAAA,CAAM,MAAA;AAAA,MACd,cAAc,KAAA,CAAM,YAAA;AAAA,MACpB,mBAAmB,KAAA,CAAM,iBAAA;AAAA,MACzB,kBAAkB,KAAA,CAAM,gBAAA;AAAA,MACxB,WAAW,KAAA,CAAM,SAAA;AAAA,MACjB,QAAA;AAAA,MACA,OAAO,KAAA,CAAM,KAAA;AAAA,MACb,SAAS,KAAA,CAAM;AAAA,KACjB;AAAA,EACF;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,EAcA,MAAM,kBAAkB,MAAA,EAIrB;AACD,IAAA,MAAM,MAAA,GAAS,QAAQ,MAAA,IAAU,SAAA;AACjC,IAAA,MAAM,KAAA,GACJ,MAAA,KAAW,QAAA,GACP,8BAAA,GACA,oBAAA;AAEN,IAAA,OAAO,IAAA,CAAK,QAAA,CAAS,OAAA,CAAa,KAAA,EAAO;AAAA,MACvC,KAAA,EAAO,QAAQ,KAAA,IAAS,EAAA;AAAA,MACxB,IAAA,EAAM,QAAQ,IAAA,IAAQ;AAAA,KACvB,CAAA;AAAA,EACH;AAAA;AAAA;AAAA;AAAA,EAKA,MAAM,YAAA,CAAa,KAAA,GAAQ,EAAA,EAAI;AAC7B,IAAA,OAAO,IAAA,CAAK,QAAA,CAAS,OAAA,CAAQ,UAAA,EAAY;AAAA,MACvC,KAAA;AAAA,MACA,IAAA,EAAM,CAAA;AAAA,MACN,OAAA,EAAS,aAAA;AAAA,MACT,cAAA,EAAgB;AAAA,KACjB,CAAA;AAAA,EACH;AAAA;AAAA;AAAA;AAAA,EAKA,MAAM,gBAAgB,MAAA,EAA4C;AAChE,IAAA,OAAO,IAAA,CAAK,QAAA,CAAS,OAAA,CAAa,iBAAA,EAAmB;AAAA,MACnD,KAAA,EAAO,QAAQ,KAAA,IAAS,EAAA;AAAA,MACxB,IAAA,EAAM,QAAQ,IAAA,IAAQ;AAAA,KACvB,CAAA;AAAA,EACH;AAAA;AAAA;AAAA;AAAA,EAKA,MAAM,iBAAiB,MAAA,EAA4C;AACjE,IAAA,OAAO,IAAA,CAAK,QAAA,CAAS,OAAA,CAAa,kBAAA,EAAoB;AAAA,MACpD,KAAA,EAAO,QAAQ,KAAA,IAAS,EAAA;AAAA,MACxB,IAAA,EAAM,QAAQ,IAAA,IAAQ;AAAA,KACvB,CAAA;AAAA,EACH;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,EASA,MAAM,iBAAiB,OAAA,EAAiB;AACtC,IAAA,OAAO,IAAA,CAAK,QAAA,CAAS,OAAA,CAAa,kBAAA,EAAoB;AAAA,MACpD,OAAA,EAAS,QAAQ,WAAA;AAAY,KAC9B,CAAA;AAAA,EACH;AAAA;AAAA;AAAA;AAAA,EAKA,MAAM,mBAAmB,MAAA,EAItB;AACD,IAAA,OAAO,IAAA,CAAK,QAAA,CAAS,OAAA,CAAa,oBAAA,EAAsB;AAAA,MACtD,MAAA,EAAQ,MAAA,CAAO,MAAA,CAAO,WAAA,EAAY;AAAA,MAClC,KAAA,EAAO,OAAO,KAAA,IAAS,GAAA;AAAA,MACvB,IAAA,EAAM,OAAO,IAAA,IAAQ;AAAA,KACtB,CAAA;AAAA,EACH;AAAA;AAAA;AAAA;AAAA,EAKA,MAAM,yBAAyB,MAAA,EAI5B;AACD,IAAA,OAAO,IAAA,CAAK,QAAA,CAAS,OAAA,CAAa,2BAAA,EAA6B;AAAA,MAC7D,MAAA,EAAQ,MAAA,CAAO,MAAA,CAAO,WAAA,EAAY;AAAA,MAClC,KAAA,EAAO,OAAO,KAAA,IAAS,GAAA;AAAA,MACvB,IAAA,EAAM,OAAO,IAAA,IAAQ;AAAA,KACtB,CAAA;AAAA,EACH;AAAA;AAAA;AAAA;AAAA,EAKA,MAAM,gBAAgB,MAAA,EAInB;AACD,IAAA,OAAO,IAAA,CAAK,QAAA,CAAS,OAAA,CAAa,gBAAA,EAAkB;AAAA,MAClD,MAAA,EAAQ,MAAA,CAAO,MAAA,CAAO,WAAA,EAAY;AAAA,MAClC,KAAA,EAAO,OAAO,KAAA,IAAS,EAAA;AAAA,MACvB,IAAA,EAAM,OAAO,IAAA,IAAQ;AAAA,KACtB,CAAA;AAAA,EACH;AAAA;AAAA;AAAA;AAAA,EAKA,MAAM,eAAe,MAAA,EAKlB;AACD,IAAA,OAAO,IAAA,CAAK,QAAA,CAAS,OAAA,CAAa,eAAA,EAAiB;AAAA,MACjD,OAAA,EAAS,QAAQ,OAAA,IAAW,aAAA;AAAA,MAC5B,cAAA,EAAgB,QAAQ,cAAA,IAAkB,MAAA;AAAA,MAC1C,KAAA,EAAO,QAAQ,KAAA,IAAS,EAAA;AAAA,MACxB,IAAA,EAAM,QAAQ,IAAA,IAAQ;AAAA,KACvB,CAAA;AAAA,EACH;AAAA;AAAA;AAAA;AAAA,EAKA,MAAM,oBAAoB,MAAA,EAGvB;AACD,IAAA,OAAO,IAAA,CAAK,QAAA,CAAS,OAAA,CAAa,sBAAA,EAAwB;AAAA,MACxD,UAAU,MAAA,CAAO,QAAA;AAAA,MACjB,KAAA,EAAO,OAAO,KAAA,IAAS;AAAA,KACxB,CAAA;AAAA,EACH;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,EAWA,MAAM,GAAA,CACJ,KAAA,EACA,SAAA,EACY;AACZ,IAAA,OAAO,IAAA,CAAK,QAAA,CAAS,OAAA,CAAW,KAAA,EAAO,SAAS,CAAA;AAAA,EAClD;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,EAWA,MAAM,kCAAkC,MAAA,EAIC;AACvC,IAAA,MAAM,IAAA,GAAO,MAAM,IAAA,CAAK,QAAA,CAAS,QAE9B,wCAAA,EAA0C;AAAA,MAC3C,MAAA,EAAQ,MAAA,CAAO,UAAA,CAAW,WAAA,EAAY;AAAA,MACtC,SAAA,EAAW,MAAA,CAAO,SAAA,CAAU,QAAA,EAAS;AAAA,MACrC,OAAA,EAAS,MAAA,CAAO,OAAA,CAAQ,WAAA;AAAY,KACrC,CAAA;AACD,IAAA,MAAM,GAAA,GAAM,IAAA,CAAK,YAAA,CAAa,CAAC,CAAA;AAC/B,IAAA,OAAO,GAAA,GAAM,EAAE,QAAA,EAAU,MAAA,CAAO,IAAI,MAAA,CAAO,QAAQ,GAAE,GAAI,IAAA;AAAA,EAC3D;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,EAQA,MAAM,4BAA4B,MAAA,EAMhC;AACA,IAAA,MAAM,IAAA,GAAO,MAAM,IAAA,CAAK,QAAA,CAAS,QAO9B,+BAAA,EAAiC;AAAA,MAClC,OAAA,EAAS,MAAA,CAAO,OAAA,CAAQ,WAAA,EAAY;AAAA,MACpC,GAAA,EAAK,MAAA,CAAO,GAAA,CAAI,QAAA,EAAS;AAAA,MACzB,KAAA,EAAO,OAAO,KAAA,IAAS;AAAA,KACxB,CAAA;AACD,IAAA,OAAO,IAAA,CAAK,YAAA,CAAa,GAAA,CAAI,CAAC,CAAA,MAAO;AAAA,MACnC,QAAA,EAAU,MAAA,CAAO,CAAA,CAAE,MAAA,CAAO,QAAQ,CAAA;AAAA,MAClC,QAAQ,CAAA,CAAE,MAAA;AAAA,MACV,SAAA,EAAW,MAAA,CAAO,CAAA,CAAE,SAAS;AAAA,KAC/B,CAAE,CAAA;AAAA,EACJ;AACF;AAEA,IAAM,wCAAA,GAA2CA,GAAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,CAAA;AAuBjD,IAAM,+BAAA,GAAkCA,GAAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,CAAA;;;ACpqBjC,IAAM,WAAA,GAAN,cAA0B,UAAA,CAAW;AAAA;AAAA;AAAA;AAAA,EAI1C,MAAM,OAAA,CAAQ,KAAA,EAAgB,OAAA,EAAkB,MAAA,EAAgB;AAC9D,IAAA,MAAM,SAAS,IAAA,CAAK,YAAA;AACpB,IAAA,MAAM,OAAA,GAAU,MAAM,IAAA,CAAK,gBAAA,EAAiB;AAE5C,IAAA,MAAM,EAAE,OAAA,EAAQ,GAAI,MAAM,IAAA,CAAK,aAAa,gBAAA,CAAiB;AAAA,MAC3D,OAAA,EAAS,KAAA;AAAA,MACT,GAAA,EAAK,aAAA;AAAA,MACL,YAAA,EAAc,SAAA;AAAA,MACd,IAAA,EAAM,CAAC,OAAA,EAAS,MAAM,CAAA;AAAA,MACtB;AAAA,KACD,CAAA;AAED,IAAA,OAAO,MAAA,CAAO,cAAc,OAAO,CAAA;AAAA,EACrC;AAAA;AAAA;AAAA;AAAA,EAKA,MAAM,YAAA,CAAa,KAAA,EAAgB,KAAA,EAAgB,OAAA,EAAkB;AACnE,IAAA,OAAO,IAAA,CAAK,aAAa,YAAA,CAAa;AAAA,MACpC,OAAA,EAAS,KAAA;AAAA,MACT,GAAA,EAAK,aAAA;AAAA,MACL,YAAA,EAAc,WAAA;AAAA,MACd,IAAA,EAAM,CAAC,KAAA,EAAO,OAAO;AAAA,KACtB,CAAA;AAAA,EACH;AAAA;AAAA;AAAA;AAAA,EAKA,MAAM,UAAA,CAAW,KAAA,EAAgB,KAAA,EAAgB;AAC/C,IAAA,OAAO,IAAA,CAAK,aAAa,YAAA,CAAa;AAAA,MACpC,OAAA,EAAS,KAAA;AAAA,MACT,GAAA,EAAK,aAAA;AAAA,MACL,YAAA,EAAc,WAAA;AAAA,MACd,IAAA,EAAM,CAAC,KAAK;AAAA,KACb,CAAA;AAAA,EACH;AAAA;AAAA;AAAA;AAAA,EAKA,MAAM,YAAY,KAAA,EAAgB;AAChC,IAAA,OAAO,IAAA,CAAK,aAAa,YAAA,CAAa;AAAA,MACpC,OAAA,EAAS,KAAA;AAAA,MACT,GAAA,EAAK,aAAA;AAAA,MACL,YAAA,EAAc;AAAA,KACf,CAAA;AAAA,EACH;AAAA;AAAA;AAAA;AAAA,EAKA,MAAM,UAAU,KAAA,EAAgB;AAC9B,IAAA,OAAO,IAAA,CAAK,aAAa,YAAA,CAAa;AAAA,MACpC,OAAA,EAAS,KAAA;AAAA,MACT,GAAA,EAAK,aAAA;AAAA,MACL,YAAA,EAAc;AAAA,KACf,CAAA;AAAA,EACH;AAAA;AAAA;AAAA;AAAA,EAKA,MAAM,QAAQ,KAAA,EAAgB;AAC5B,IAAA,OAAO,IAAA,CAAK,aAAa,YAAA,CAAa;AAAA,MACpC,OAAA,EAAS,KAAA;AAAA,MACT,GAAA,EAAK,aAAA;AAAA,MACL,YAAA,EAAc;AAAA,KACf,CAAA;AAAA,EACH;AACF;AC3DO,IAAM,SAAA,GAAN,cAAwB,UAAA,CAAW;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,EAUxC,MAAM,oBAAoB,MAAA,EAIvB;AACD,IAAA,MAAM,SAAS,IAAA,CAAK,YAAA;AACpB,IAAA,MAAM,OAAA,GAAU,MAAM,IAAA,CAAK,gBAAA,EAAiB;AAC5C,IAAA,MAAM,cAAA,GAAiB,MAAM,IAAA,CAAK,gBAAA,EAAiB;AACnD,IAAA,MAAM,WAAA,GAAc,OAAO,WAAA,IAAe,IAAA;AAI1C,IAAA,MAAM,YAAA,GAAoB,MAAM,IAAA,CAAK,YAAA,CAAa,YAAA,CAAa;AAAA,MAC7D,OAAA,EAAS,KAAK,MAAA,CAAO,cAAA;AAAA,MACrB,GAAA,EAAK,oBAAA;AAAA,MACL,YAAA,EAAc,uBAAA;AAAA,MACd,IAAA,EAAM,CAAC,MAAA,CAAO,QAAQ;AAAA,KACvB,CAAA;AAED,IAAA,MAAM,aAAa,YAAA,CAAa,UAAA;AAGhC,IAAA,MAAM,EAAE,eAAe,QAAA,EAAS,GAAI,MAAM,IAAA,CAAK,gBAAA,CAAiB,OAAO,QAAQ,CAAA;AAC/E,IAAA,MAAM,UAAA,GAAa,aAAA;AAGnB,IAAA,MAAM,gBAAA,GAAoB,MAAM,IAAA,CAAK,YAAA,CAAa,YAAA,CAAa;AAAA,MAC7D,OAAA,EAAS,QAAA;AAAA,MACT,GAAA,EAAKC,QAAAA;AAAA,MACL,YAAA,EAAc,WAAA;AAAA,MACd,IAAA,EAAM,CAAC,cAAA,EAAgB,IAAA,CAAK,OAAO,cAAc;AAAA,KAClD,CAAA;AAGD,IAAA,IAAI,gBAAA,GAAmB,cAAc,WAAA,EAAa;AAChD,MAAA,MAAM,WAAA,GAAc,MAAM,MAAA,CAAO,aAAA,CAAc;AAAA,QAC7C,OAAA,EAAS,QAAA;AAAA,QACT,GAAA,EAAKA,QAAAA;AAAA,QACL,YAAA,EAAc,SAAA;AAAA,QACd,IAAA,EAAM,CAAC,IAAA,CAAK,MAAA,CAAO,gBAAgB,UAAU,CAAA;AAAA,QAC7C,OAAA;AAAA,QACA,KAAA,EAAO,KAAK,MAAA,CAAO;AAAA,OACpB,CAAA;AAED,MAAA,MAAM,IAAA,CAAK,aAAa,yBAAA,CAA0B;AAAA,QAChD,IAAA,EAAM,WAAA;AAAA,QACN,aAAA,EAAe;AAAA,OAChB,CAAA;AAED,MAAA,MAAM,IAAI,OAAA,CAAQ,CAAC,YAAY,UAAA,CAAW,OAAA,EAAS,GAAI,CAAC,CAAA;AAExD,MAAA,MAAM,YAAA,GAAgB,MAAM,IAAA,CAAK,YAAA,CAAa,YAAA,CAAa;AAAA,QACzD,OAAA,EAAS,QAAA;AAAA,QACT,GAAA,EAAKA,QAAAA;AAAA,QACL,YAAA,EAAc,WAAA;AAAA,QACd,IAAA,EAAM,CAAC,cAAA,EAAgB,IAAA,CAAK,OAAO,cAAc;AAAA,OAClD,CAAA;AAED,MAAA,IAAI,eAAe,UAAA,EAAY;AAC7B,QAAA,MAAM,IAAI,KAAA;AAAA,UACR,6CAA6C,YAAA,CAAa,QAAA,EAAU,CAAA,YAAA,EAAe,UAAA,CAAW,UAAU,CAAA;AAAA,SAC1G;AAAA,MACF;AAAA,IACF,CAAA,MAAA,IAAW,mBAAmB,UAAA,EAAY;AACxC,MAAA,MAAM,IAAI,KAAA;AAAA,QACR,CAAA,6CAAA,EAAgD,UAAA,CAAW,QAAA,EAAU,CAAA,WAAA,EAAc,gBAAA,CAAiB,QAAA,EAAU,CAAA,8BAAA,EAC5G,IAAA,CAAK,MAAA,CAAO,cACd,CAAA,uBAAA;AAAA,OACF;AAAA,IACF;AAGA,IAAA,MAAM,OAAA,GAAW,MAAM,IAAA,CAAK,YAAA,CAAa,YAAA,CAAa;AAAA,MACpD,OAAA,EAAS,QAAA;AAAA,MACT,GAAA,EAAKA,QAAAA;AAAA,MACL,YAAA,EAAc,WAAA;AAAA,MACd,IAAA,EAAM,CAAC,cAAc;AAAA,KACtB,CAAA;AAED,IAAA,IAAI,UAAU,UAAA,EAAY;AACxB,MAAA,MAAM,IAAI,KAAA;AAAA,QACR,8CAA8C,UAAA,CAAW,QAAA,EAAU,CAAA,QAAA,EAAW,OAAA,CAAQ,UAAU,CAAA;AAAA,OAClG;AAAA,IACF;AAGA,IAAA,MAAM,EAAE,OAAA,EAAQ,GAAI,MAAM,IAAA,CAAK,aAAa,gBAAA,CAAiB;AAAA,MAC3D,OAAA,EAAS,KAAK,MAAA,CAAO,cAAA;AAAA,MACrB,GAAA,EAAK,uBAAA;AAAA,MACL,YAAA,EAAc,qBAAA;AAAA,MACd,IAAA,EAAM,CAAC,UAAA,EAAY,MAAA,CAAO,OAAO,CAAA;AAAA,MACjC;AAAA,KACD,CAAA;AAED,IAAA,OAAO,MAAA,CAAO,cAAc,OAAO,CAAA;AAAA,EACrC;AAAA;AAAA;AAAA;AAAA;AAAA,EAMA,MAAM,iBAAiB,QAAA,EAKpB;AAED,IAAA,MAAM,UAAA,GAAkB,MAAM,IAAA,CAAK,YAAA,CAAa,YAAA,CAAa;AAAA,MAC3D,OAAA,EAAS,KAAK,MAAA,CAAO,cAAA;AAAA,MACrB,GAAA,EAAK,oBAAA;AAAA,MACL,YAAA,EAAc,qBAAA;AAAA,MACd,IAAA,EAAM,CAAC,QAAQ;AAAA,KAChB,CAAA;AAED,IAAA,MAAM,YAAA,GAAe,MAAA,CAAO,UAAA,CAAW,YAAY,CAAA;AACnD,IAAA,MAAM,WAAW,UAAA,CAAW,QAAA;AAE5B,IAAA,MAAM,SAAA,GAAa,MAAM,IAAA,CAAK,YAAA,CAAa,YAAA,CAAa;AAAA,MACtD,OAAA,EAAS,KAAK,MAAA,CAAO,cAAA;AAAA,MACrB,GAAA,EAAK,qBAAA;AAAA,MACL,YAAA,EAAc;AAAA,KACf,CAAA;AAED,IAAA,MAAM,WAAA,GAAe,MAAM,IAAA,CAAK,YAAA,CAAa,YAAA,CAAa;AAAA,MACxD,OAAA,EAAS,SAAA;AAAA,MACT,GAAA,EAAK,iBAAA;AAAA,MACL,YAAA,EAAc,gBAAA;AAAA,MACd,IAAA,EAAM,CAAC,QAAQ;AAAA,KAChB,CAAA;AAED,IAAA,MAAM,aAAA,GAAgB,YAAA,GAAe,WAAA,GAAc,YAAA,GAAe,WAAA;AAElE,IAAA,OAAO,EAAE,YAAA,EAAc,WAAA,EAAa,aAAA,EAAe,QAAA,EAAS;AAAA,EAC9D;AAAA;AAAA;AAAA;AAAA,EAKA,MAAM,gBAAgB,WAAA,EAA4B;AAChD,IAAA,MAAM,SAAS,IAAA,CAAK,YAAA;AACpB,IAAA,MAAM,OAAA,GAAU,MAAM,IAAA,CAAK,gBAAA,EAAiB;AAE5C,IAAA,MAAM,EAAE,OAAA,EAAQ,GAAI,MAAM,IAAA,CAAK,aAAa,gBAAA,CAAiB;AAAA,MAC3D,OAAA,EAAS,KAAK,MAAA,CAAO,cAAA;AAAA,MACrB,GAAA,EAAK,uBAAA;AAAA,MACL,YAAA,EAAc,iBAAA;AAAA,MACd,IAAA,EAAM,CAAC,WAAW,CAAA;AAAA,MAClB;AAAA,KACD,CAAA;AAED,IAAA,OAAO,MAAA,CAAO,cAAc,OAAO,CAAA;AAAA,EACrC;AAAA;AAAA;AAAA;AAAA,EAKA,MAAM,mBAAA,GAAwC;AAC5C,IAAA,OAAQ,MAAM,IAAA,CAAK,YAAA,CAAa,YAAA,CAAa;AAAA,MAC3C,OAAA,EAAS,KAAK,MAAA,CAAO,cAAA;AAAA,MACrB,GAAA,EAAK,qBAAA;AAAA,MACL,YAAA,EAAc;AAAA,KACf,CAAA;AAAA,EACH;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,EAeA,MAAM,iBAAiB,MAAA,EAGpB;AACD,IAAA,MAAM,SAAS,IAAA,CAAK,YAAA;AACpB,IAAA,MAAM,OAAA,GAAU,MAAM,IAAA,CAAK,gBAAA,EAAiB;AAC5C,IAAA,MAAM,cAAA,GAAiB,MAAM,IAAA,CAAK,gBAAA,EAAiB;AACnD,IAAA,MAAM,WAAA,GAAc,OAAO,WAAA,IAAe,IAAA;AAE1C,IAAA,MAAM,aAAA,GAAgB,MAAM,IAAA,CAAK,mBAAA,EAAoB;AAIrD,IAAA,MAAM,SAAA,GAAiB,MAAM,IAAA,CAAK,YAAA,CAAa,YAAA,CAAa;AAAA,MAC1D,OAAA,EAAS,aAAA;AAAA,MACT,GAAA,EAAK,iBAAA;AAAA,MACL,YAAA,EAAc,cAAA;AAAA,MACd,IAAA,EAAM,CAAC,MAAA,CAAO,WAAW;AAAA,KAC1B,CAAA;AAED,IAAA,MAAM,WAAW,SAAA,CAAU,QAAA;AAC3B,IAAA,MAAM,UAAA,GAAa,MAAA,CAAO,SAAA,CAAU,IAAI,CAAA;AAExC,IAAA,IAAI,SAAA,CAAU,aAAa,4CAAA,EAA8C;AACvE,MAAA,MAAM,IAAI,MAAM,qCAAqC,CAAA;AAAA,IACvD;AAEA,IAAA,IAAI,UAAU,OAAA,EAAS;AACrB,MAAA,MAAM,IAAI,MAAM,8BAA8B,CAAA;AAAA,IAChD;AAEA,IAAA,MAAM,cAAc,IAAA,CAAK,KAAA,CAAM,IAAA,CAAK,GAAA,KAAQ,GAAI,CAAA;AAChD,IAAA,IAAI,WAAA,IAAe,MAAA,CAAO,SAAA,CAAU,cAAc,CAAA,EAAG;AACnD,MAAA,MAAM,IAAI,MAAM,wEAAmE,CAAA;AAAA,IACrF;AAGA,IAAA,MAAM,gBAAA,GAAoB,MAAM,IAAA,CAAK,YAAA,CAAa,YAAA,CAAa;AAAA,MAC7D,OAAA,EAAS,QAAA;AAAA,MACT,GAAA,EAAKA,QAAAA;AAAA,MACL,YAAA,EAAc,WAAA;AAAA,MACd,IAAA,EAAM,CAAC,cAAA,EAAgB,aAAa;AAAA,KACrC,CAAA;AAED,IAAA,IAAI,gBAAA,GAAmB,cAAc,WAAA,EAAa;AAChD,MAAA,MAAM,WAAA,GAAc,MAAM,MAAA,CAAO,aAAA,CAAc;AAAA,QAC7C,OAAA,EAAS,QAAA;AAAA,QACT,GAAA,EAAKA,QAAAA;AAAA,QACL,YAAA,EAAc,SAAA;AAAA,QACd,IAAA,EAAM,CAAC,aAAA,EAAe,UAAU,CAAA;AAAA,QAChC,OAAA;AAAA,QACA,KAAA,EAAO,KAAK,MAAA,CAAO;AAAA,OACpB,CAAA;AAED,MAAA,MAAM,IAAA,CAAK,aAAa,yBAAA,CAA0B;AAAA,QAChD,IAAA,EAAM,WAAA;AAAA,QACN,aAAA,EAAe;AAAA,OAChB,CAAA;AAAA,IACH,CAAA,MAAA,IAAW,mBAAmB,UAAA,EAAY;AACxC,MAAA,MAAM,IAAI,KAAA;AAAA,QACR,8DAA8D,UAAA,CAAW,QAAA,EAAU,CAAA,WAAA,EAAc,gBAAA,CAAiB,UAAU,CAAA,CAAA;AAAA,OAC9H;AAAA,IACF;AAEA,IAAA,MAAM,OAAA,GAAW,MAAM,IAAA,CAAK,YAAA,CAAa,YAAA,CAAa;AAAA,MACpD,OAAA,EAAS,QAAA;AAAA,MACT,GAAA,EAAKA,QAAAA;AAAA,MACL,YAAA,EAAc,WAAA;AAAA,MACd,IAAA,EAAM,CAAC,cAAc;AAAA,KACtB,CAAA;AAED,IAAA,IAAI,UAAU,UAAA,EAAY;AACxB,MAAA,MAAM,IAAI,KAAA;AAAA,QACR,iDAAiD,UAAA,CAAW,QAAA,EAAU,CAAA,QAAA,EAAW,OAAA,CAAQ,UAAU,CAAA;AAAA,OACrG;AAAA,IACF;AAEA,IAAA,MAAM,EAAE,OAAA,EAAQ,GAAI,MAAM,IAAA,CAAK,aAAa,gBAAA,CAAiB;AAAA,MAC3D,OAAA,EAAS,aAAA;AAAA,MACT,GAAA,EAAK,iBAAA;AAAA,MACL,YAAA,EAAc,kBAAA;AAAA,MACd,IAAA,EAAM,CAAC,MAAA,CAAO,WAAA,EAAa,cAAc,CAAA;AAAA,MACzC;AAAA,KACD,CAAA;AAED,IAAA,OAAO,MAAA,CAAO,cAAc,OAAO,CAAA;AAAA,EACrC;AAAA;AAAA;AAAA;AAAA,EAKA,MAAM,iBAAiB,MAAA,EAA+C;AACpE,IAAA,MAAM,SAAS,IAAA,CAAK,YAAA;AACpB,IAAA,MAAM,OAAA,GAAU,MAAM,IAAA,CAAK,gBAAA,EAAiB;AAE5C,IAAA,MAAM,EAAE,OAAA,EAAQ,GAAI,MAAM,IAAA,CAAK,aAAa,gBAAA,CAAiB;AAAA,MAC3D,OAAA,EAAS,KAAK,MAAA,CAAO,cAAA;AAAA,MACrB,GAAA,EAAK,uBAAA;AAAA,MACL,YAAA,EAAc,kBAAA;AAAA,MACd,IAAA,EAAM,CAAC,MAAA,CAAO,QAAA,EAAU,OAAO,OAAO,CAAA;AAAA,MACtC;AAAA,KACD,CAAA;AAED,IAAA,OAAO,MAAA,CAAO,cAAc,OAAO,CAAA;AAAA,EACrC;AAAA;AAAA;AAAA;AAAA,EAKA,MAAM,oBAAoB,QAAA,EAAkB;AAE1C,IAAA,MAAM,UAAA,GAAkB,MAAM,IAAA,CAAK,YAAA,CAAa,YAAA,CAAa;AAAA,MAC3D,OAAA,EAAS,KAAK,MAAA,CAAO,cAAA;AAAA,MACrB,GAAA,EAAK,oBAAA;AAAA,MACL,YAAA,EAAc,qBAAA;AAAA,MACd,IAAA,EAAM,CAAC,QAAQ;AAAA,KAChB,CAAA;AAED,IAAA,MAAM,cAAc,UAAA,CAAW,WAAA;AAE/B,IAAA,MAAM,iBAAA,GAAqB,MAAM,IAAA,CAAK,YAAA,CAAa,YAAA,CAAa;AAAA,MAC9D,OAAA,EAAS,KAAK,MAAA,CAAO,wBAAA;AAAA,MACrB,GAAA,EAAK,yBAAA;AAAA,MACL,YAAA,EAAc,mBAAA;AAAA,MACd,IAAA,EAAM,CAAC,WAAW;AAAA,KACnB,CAAA;AAED,IAAA,IAAI,sBAAsB,EAAA,EAAI;AAC5B,MAAA,OAAO;AAAA,QACL,QAAA,EAAU,KAAA;AAAA,QACV,cAAA,EAAgB,IAAA;AAAA,QAChB,SAAS;AAAC,OACZ;AAAA,IACF;AAEA,IAAA,MAAM,gBAAA,GAAmB,MAAA,CAAO,UAAA,CAAW,gBAAA,IAAoB,CAAC,CAAA;AAChE,IAAA,MAAM,UAAoB,EAAC;AAE3B,IAAA,KAAA,IAAS,CAAA,GAAI,CAAA,EAAG,CAAA,GAAI,gBAAA,EAAkB,CAAA,EAAA,EAAK;AACzC,MAAA,MAAM,MAAA,GAAU,MAAM,IAAA,CAAK,YAAA,CAAa,YAAA,CAAa;AAAA,QACnD,OAAA,EAAS,KAAK,MAAA,CAAO,wBAAA;AAAA,QACrB,GAAA,EAAK,yBAAA;AAAA,QACL,YAAA,EAAc,kBAAA;AAAA,QACd,IAAA,EAAM,CAAC,WAAA,EAAa,MAAA,CAAO,CAAC,CAAC;AAAA,OAC9B,CAAA;AACD,MAAA,OAAA,CAAQ,KAAK,MAAM,CAAA;AAAA,IACrB;AAEA,IAAA,IAAI,cAAA,GAAgC,IAAA;AACpC,IAAA,IAAI,qBAAqB,CAAA,EAAG;AAC1B,MAAA,IAAI,QAAQ,CAAC,CAAA,GAAI,MAAM,OAAA,CAAQ,CAAC,MAAM,EAAA,EAAI;AACxC,QAAA,cAAA,GAAiB,KAAA;AAAA,MACnB,CAAA,MAAA,IAAW,QAAQ,CAAC,CAAA,GAAI,MAAM,OAAA,CAAQ,CAAC,MAAM,EAAA,EAAI;AAC/C,QAAA,cAAA,GAAiB,IAAA;AAAA,MACnB,WAAW,OAAA,CAAQ,CAAC,CAAA,KAAM,OAAA,CAAQ,CAAC,CAAA,EAAG;AACpC,QAAA,cAAA,GAAiB,SAAA;AAAA,MACnB;AAAA,IACF;AAEA,IAAA,OAAO;AAAA,MACL,QAAA,EAAU,IAAA;AAAA,MACV,cAAA;AAAA,MACA,OAAA;AAAA,MACA;AAAA,KACF;AAAA,EACF;AAAA;AAAA;AAAA;AAAA,EAKA,MAAM,eAAe,QAAA,EAAkB;AACrC,IAAA,MAAM,SAAS,IAAA,CAAK,YAAA;AACpB,IAAA,MAAM,OAAA,GAAU,MAAM,IAAA,CAAK,gBAAA,EAAiB;AAG5C,IAAA,MAAM,UAAA,GAAkB,MAAM,IAAA,CAAK,YAAA,CAAa,YAAA,CAAa;AAAA,MAC3D,OAAA,EAAS,KAAK,MAAA,CAAO,cAAA;AAAA,MACrB,GAAA,EAAK,oBAAA;AAAA,MACL,YAAA,EAAc,qBAAA;AAAA,MACd,IAAA,EAAM,CAAC,QAAQ;AAAA,KAChB,CAAA;AAGD,IAAA,MAAM,WAAA,GAAmB,MAAM,IAAA,CAAK,YAAA,CAAa,YAAA,CAAa;AAAA,MAC5D,OAAA,EAAS,KAAK,MAAA,CAAO,cAAA;AAAA,MACrB,GAAA,EAAK,oBAAA;AAAA,MACL,YAAA,EAAc,sBAAA;AAAA,MACd,IAAA,EAAM,CAAC,QAAQ;AAAA,KAChB,CAAA;AAED,IAAA,MAAM,cAAc,UAAA,CAAW,WAAA;AAC/B,IAAA,MAAM,kBAAkB,WAAA,CAAY,eAAA;AAEpC,IAAA,MAAM,SAAA,GAAY,CAAC,CAAA,EAAG,CAAC,CAAA;AAEvB,IAAA,MAAM,EAAE,OAAA,EAAQ,GAAI,MAAM,IAAA,CAAK,aAAa,gBAAA,CAAiB;AAAA,MAC3D,OAAA,EAAS,KAAK,MAAA,CAAO,wBAAA;AAAA,MACrB,GAAA,EAAK,yBAAA;AAAA,MACL,YAAA,EAAc,iBAAA;AAAA,MACd,IAAA,EAAM;AAAA,QACJ,eAAA;AAAA,QACA,oEAAA;AAAA,QACA,WAAA;AAAA,QACA;AAAA,OACF;AAAA,MACA;AAAA,KACD,CAAA;AAED,IAAA,OAAO,MAAA,CAAO,cAAc,OAAO,CAAA;AAAA,EACrC;AAAA;AAAA;AAAA;AAAA,EAKA,MAAM,mBAAmB,QAAA,EAAoC;AAE3D,IAAA,MAAM,WAAA,GAAmB,MAAM,IAAA,CAAK,YAAA,CAAa,YAAA,CAAa;AAAA,MAC5D,OAAA,EAAS,KAAK,MAAA,CAAO,cAAA;AAAA,MACrB,GAAA,EAAK,oBAAA;AAAA,MACL,YAAA,EAAc,sBAAA;AAAA,MACd,IAAA,EAAM,CAAC,QAAQ;AAAA,KAChB,CAAA;AAED,IAAA,OAAO,WAAA,CAAY,eAAA;AAAA,EACrB;AAAA;AAAA;AAAA;AAAA,EAKA,MAAM,gBAAgB,QAAA,EAAkB;AAEtC,IAAA,MAAM,UAAA,GAAkB,MAAM,IAAA,CAAK,YAAA,CAAa,YAAA,CAAa;AAAA,MAC3D,OAAA,EAAS,KAAK,MAAA,CAAO,cAAA;AAAA,MACrB,GAAA,EAAK,oBAAA;AAAA,MACL,YAAA,EAAc,qBAAA;AAAA,MACd,IAAA,EAAM,CAAC,QAAQ;AAAA,KAChB,CAAA;AAED,IAAA,OAAO;AAAA,MACL,YAAY,UAAA,CAAW,UAAA;AAAA,MACvB,aAAa,UAAA,CAAW,WAAA;AAAA,MACxB,gBAAA,EAAkB,MAAA,CAAO,UAAA,CAAW,gBAAgB,CAAA;AAAA,MACpD,UAAU,UAAA,CAAW,QAAA;AAAA,MACrB,MAAA,EAAQ,MAAA,CAAO,UAAA,CAAW,MAAM,CAAA;AAAA,MAChC,YAAA,EAAc,MAAA,CAAO,UAAA,CAAW,YAAY,CAAA;AAAA,MAC5C,QAAA,EAAU,MAAA,CAAO,UAAA,CAAW,QAAQ,CAAA;AAAA,MACpC,aAAa,UAAA,CAAW,WAAA;AAAA,MACxB,mBAAmB,UAAA,CAAW,iBAAA;AAAA,MAC9B,eAAe,UAAA,CAAW;AAAA,KAC5B;AAAA,EACF;AAAA;AAAA;AAAA;AAAA,EAKA,MAAM,iBAAiB,WAAA,EAA4B;AAEjD,IAAA,MAAM,IAAA,GAAY,MAAM,IAAA,CAAK,YAAA,CAAa,YAAA,CAAa;AAAA,MACrD,OAAA,EAAS,KAAK,MAAA,CAAO,cAAA;AAAA,MACrB,GAAA,EAAK,uBAAA;AAAA,MACL,YAAA,EAAc,kBAAA;AAAA,MACd,IAAA,EAAM,CAAC,WAAW;AAAA,KACnB,CAAA;AAED,IAAA,OAAO;AAAA,MACL,aAAa,IAAA,CAAK,WAAA;AAAA,MAClB,YAAY,IAAA,CAAK,UAAA;AAAA,MACjB,SAAS,IAAA,CAAK,OAAA;AAAA,MACd,SAAS,IAAA,CAAK;AAAA,KAChB;AAAA,EACF;AAAA;AAAA;AAAA;AAAA,EAKA,MAAM,oBAAoB,WAAA,EAA4B;AAEpD,IAAA,MAAM,aAAA,GAAgB,MAAM,IAAA,CAAK,YAAA,CAAa,YAAA,CAAa;AAAA,MACzD,OAAA,EAAS,KAAK,MAAA,CAAO,cAAA;AAAA,MACrB,GAAA,EAAK,qBAAA;AAAA,MACL,YAAA,EAAc;AAAA,KACf,CAAA;AAID,IAAA,MAAM,SAAA,GAAiB,MAAM,IAAA,CAAK,YAAA,CAAa,YAAA,CAAa;AAAA,MAC1D,OAAA,EAAS,aAAA;AAAA,MACT,GAAA,EAAK;AAAA,QACH;AAAA,UACE,IAAA,EAAM,cAAA;AAAA,UACN,IAAA,EAAM,UAAA;AAAA,UACN,eAAA,EAAiB,MAAA;AAAA,UACjB,QAAQ,CAAC,EAAE,MAAM,aAAA,EAAe,IAAA,EAAM,WAAW,CAAA;AAAA,UACjD,OAAA,EAAS;AAAA,YACP;AAAA,cACE,IAAA,EAAM,WAAA;AAAA,cACN,IAAA,EAAM,OAAA;AAAA,cACN,UAAA,EAAY;AAAA,gBACV;AAAA,kBACE,IAAA,EAAM,2BAAA;AAAA,kBACN,IAAA,EAAM,OAAA;AAAA,kBACN,UAAA,EAAY;AAAA,oBACV,EAAE,IAAA,EAAM,+BAAA,EAAiC,IAAA,EAAM,MAAA,EAAO;AAAA,oBACtD,EAAE,IAAA,EAAM,eAAA,EAAiB,IAAA,EAAM,MAAA,EAAO;AAAA,oBACtC,EAAE,IAAA,EAAM,mBAAA,EAAqB,IAAA,EAAM,MAAA,EAAO;AAAA,oBAC1C,EAAE,IAAA,EAAM,iBAAA,EAAmB,IAAA,EAAM,SAAA,EAAU;AAAA,oBAC3C,EAAE,IAAA,EAAM,mBAAA,EAAqB,IAAA,EAAM,SAAA;AAAU;AAC/C,iBACF;AAAA,gBACA,EAAE,IAAA,EAAM,UAAA,EAAY,IAAA,EAAM,SAAA,EAAU;AAAA,gBACpC,EAAE,IAAA,EAAM,eAAA,EAAiB,IAAA,EAAM,QAAA,EAAS;AAAA,gBACxC,EAAE,IAAA,EAAM,SAAA,EAAW,IAAA,EAAM,MAAA,EAAO;AAAA,gBAChC,EAAE,IAAA,EAAM,UAAA,EAAY,IAAA,EAAM,SAAA,EAAU;AAAA,gBACpC,EAAE,IAAA,EAAM,gBAAA,EAAkB,IAAA,EAAM,QAAA,EAAS;AAAA,gBACzC,EAAE,IAAA,EAAM,sBAAA,EAAwB,IAAA,EAAM,MAAA,EAAO;AAAA,gBAC7C,EAAE,IAAA,EAAM,UAAA,EAAY,IAAA,EAAM,SAAA,EAAU;AAAA,gBACpC,EAAE,IAAA,EAAM,YAAA,EAAc,IAAA,EAAM,SAAA,EAAU;AAAA,gBACtC,EAAE,IAAA,EAAM,MAAA,EAAQ,IAAA,EAAM,SAAA,EAAU;AAAA,gBAChC,EAAE,IAAA,EAAM,mBAAA,EAAqB,IAAA,EAAM,SAAA,EAAU;AAAA,gBAC7C,EAAE,IAAA,EAAM,UAAA,EAAY,IAAA,EAAM,SAAA;AAAU;AACtC;AACF;AACF;AACF,OACF;AAAA,MACA,YAAA,EAAc,cAAA;AAAA,MACd,IAAA,EAAM,CAAC,WAAW;AAAA,KACnB,CAAA;AAED,IAAA,MAAM,cAAA,GAAiB,MAAA,CAAO,SAAA,CAAU,cAAc,CAAA;AACtD,IAAA,MAAM,cAAc,IAAA,CAAK,KAAA,CAAM,IAAA,CAAK,GAAA,KAAQ,GAAI,CAAA;AAEhD,IAAA,OAAO;AAAA,MACL,UAAU,SAAA,CAAU,QAAA;AAAA,MACpB,aAAA,EAAe,MAAA,CAAO,SAAA,CAAU,aAAa,CAAA;AAAA,MAC7C,SAAS,SAAA,CAAU,OAAA;AAAA,MACnB,cAAA;AAAA,MACA,WAAW,WAAA,IAAe,cAAA;AAAA,MAC1B,UAAU,SAAA,CAAU,QAAA;AAAA,MACpB,UAAA,EAAY,UAAU,QAAA,KAAa,4CAAA;AAAA,MACnC,UAAU,SAAA,CAAU,QAAA;AAAA,MACpB,IAAA,EAAM,MAAA,CAAO,SAAA,CAAU,IAAI;AAAA,KAC7B;AAAA,EACF;AAAA;AAAA;AAAA;AAAA,EAKA,MAAM,gBAAgB,QAAA,EAAkB;AAGtC,IAAA,MAAM,YAAA,GAAoB,MAAM,IAAA,CAAK,YAAA,CAAa,YAAA,CAAa;AAAA,MAC7D,OAAA,EAAS,KAAK,MAAA,CAAO,cAAA;AAAA,MACrB,GAAA,EAAK,oBAAA;AAAA,MACL,YAAA,EAAc,uBAAA;AAAA,MACd,IAAA,EAAM,CAAC,QAAQ;AAAA,KAChB,CAAA;AAED,IAAA,MAAM,aAAa,YAAA,CAAa,UAAA;AAChC,IAAA,MAAM,YAAA,GAAe,MAAA,CAAO,YAAA,CAAa,MAAM,CAAA;AAG/C,IAAA,MAAM,YAAA,GAAe,MAAM,IAAA,CAAK,eAAA,CAAgB,QAAQ,CAAA;AACxD,IAAA,MAAM,cAAc,YAAA,CAAa,WAAA;AAGjC,IAAA,MAAM,YAAA,GACJ,aAAa,iBAAA,KACb,oEAAA;AAEF,IAAA,IAAI,aAAA,GAAgB,IAAA;AACpB,IAAA,IAAI,SAAA,GAAY,KAAA;AAEhB,IAAA,IAAI,YAAA,EAAc;AAChB,MAAA,aAAA,GAAgB,MAAM,IAAA,CAAK,gBAAA;AAAA,QACzB,YAAA,CAAa;AAAA,OACf;AACA,MAAA,SAAA,GAAY,aAAA,CAAc,OAAA;AAAA,IAC5B;AAGA,IAAA,MAAM,iBAAA,GAAqB,MAAM,IAAA,CAAK,YAAA,CAAa,YAAA,CAAa;AAAA,MAC9D,OAAA,EAAS,KAAK,MAAA,CAAO,wBAAA;AAAA,MACrB,GAAA,EAAK,yBAAA;AAAA,MACL,YAAA,EAAc,mBAAA;AAAA,MACd,IAAA,EAAM,CAAC,WAAW;AAAA,KACnB,CAAA;AAED,IAAA,MAAM,kBAAkB,iBAAA,GAAoB,EAAA;AAE5C,IAAA,IAAI,cAAA,GAAgC,IAAA;AACpC,IAAA,IAAI,eAAA,EAAiB;AACnB,MAAA,MAAM,OAAA,GAAW,MAAM,IAAA,CAAK,YAAA,CAAa,YAAA,CAAa;AAAA,QACpD,OAAA,EAAS,KAAK,MAAA,CAAO,wBAAA;AAAA,QACrB,GAAA,EAAK,yBAAA;AAAA,QACL,YAAA,EAAc,kBAAA;AAAA,QACd,IAAA,EAAM,CAAC,WAAA,EAAa,EAAE;AAAA,OACvB,CAAA;AAED,MAAA,MAAM,OAAA,GAAW,MAAM,IAAA,CAAK,YAAA,CAAa,YAAA,CAAa;AAAA,QACpD,OAAA,EAAS,KAAK,MAAA,CAAO,wBAAA;AAAA,QACrB,GAAA,EAAK,yBAAA;AAAA,QACL,YAAA,EAAc,kBAAA;AAAA,QACd,IAAA,EAAM,CAAC,WAAA,EAAa,EAAE;AAAA,OACvB,CAAA;AAED,MAAA,IAAI,OAAA,GAAU,EAAA,IAAM,OAAA,KAAY,EAAA,EAAI;AAClC,QAAA,cAAA,GAAiB,KAAA;AAAA,MACnB,CAAA,MAAA,IAAW,OAAA,GAAU,EAAA,IAAM,OAAA,KAAY,EAAA,EAAI;AACzC,QAAA,cAAA,GAAiB,IAAA;AAAA,MACnB,CAAA,MAAA,IAAW,YAAY,OAAA,EAAS;AAC9B,QAAA,cAAA,GAAiB,SAAA;AAAA,MACnB;AAAA,IACF;AAEA,IAAA,OAAO;AAAA,MACL,QAAA;AAAA,MACA,UAAA;AAAA,MACA,cACE,YAAA,KAAiB,CAAA,GACb,OAAA,GACA,YAAA,KAAiB,IACjB,QAAA,GACA,UAAA;AAAA,MACN,SAAA,EAAW;AAAA,QACT,YAAA;AAAA,QACA,WAAA,EAAa,YAAA,GAAe,YAAA,CAAa,iBAAA,GAAoB,IAAA;AAAA,QAC7D,OAAA,EAAS,eAAe,OAAA,IAAW,IAAA;AAAA,QACnC,OAAA,EAAS;AAAA,OACX;AAAA,MACA,QAAA,EAAU;AAAA,QACR,cAAc,YAAA,CAAa,YAAA;AAAA,QAC3B,UAAU,YAAA,CAAa,QAAA;AAAA,QACvB,QAAQ,YAAA,CAAa,MAAA;AAAA,QACrB,UAAU,YAAA,CAAa;AAAA,OACzB;AAAA,MACA,UAAA,EAAY;AAAA,QACV,aAAA,EAAe,eAAA;AAAA,QACf;AAAA,OACF;AAAA,MACA,SAAA,EAAW,CAAC,YAAA,IAAgB,YAAA,KAAiB,CAAA;AAAA,MAC7C,SAAA,EAAW,gBAAgB,CAAC,SAAA;AAAA,MAC5B,mBAAA,EAAqB,YAAA,IAAgB,SAAA,IAAa,CAAC,eAAA;AAAA,MACnD,UAAA,EAAY;AAAA,KACd;AAAA,EACF;AAAA;AAAA;AAAA;AAAA,EAKA,MAAM,cAAc,QAAA,EAA0C;AAE5D,IAAA,MAAM,YAAA,GAAoB,MAAM,IAAA,CAAK,YAAA,CAAa,YAAA,CAAa;AAAA,MAC7D,OAAA,EAAS,KAAK,MAAA,CAAO,cAAA;AAAA,MACrB,GAAA,EAAK,oBAAA;AAAA,MACL,YAAA,EAAc,uBAAA;AAAA,MACd,IAAA,EAAM,CAAC,QAAQ;AAAA,KAChB,CAAA;AAED,IAAA,OAAO,YAAA,CAAa,UAAA;AAAA,EACtB;AACF;;;AC1pBO,IAAM,mBAAA,GAAN,cAAkC,UAAA,CAAW;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,EAOlD,MAAM,eAAA,GAAkB;AACtB,IAAA,MAAM,SAAS,IAAA,CAAK,YAAA;AACpB,IAAA,MAAM,OAAA,GAAU,MAAM,IAAA,CAAK,gBAAA,EAAiB;AAE5C,IAAA,MAAM,EAAE,OAAA,EAAQ,GAAI,MAAM,IAAA,CAAK,aAAa,gBAAA,CAAiB;AAAA,MAC3D,OAAA,EAAS,KAAK,MAAA,CAAO,cAAA;AAAA,MACrB,GAAA,EAAK,0BAAA;AAAA,MACL,YAAA,EAAc,mBAAA;AAAA,MACd,MAAM,EAAC;AAAA,MACP;AAAA,KACD,CAAA;AAED,IAAA,OAAO,MAAA,CAAO,cAAc,OAAO,CAAA;AAAA,EACrC;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,EAQA,MAAM,eAAe,MAAA,EAIlB;AACD,IAAA,MAAM,SAAS,IAAA,CAAK,YAAA;AACpB,IAAA,MAAM,OAAA,GAAU,MAAM,IAAA,CAAK,gBAAA,EAAiB;AAE5C,IAAA,MAAM,EAAE,OAAA,EAAQ,GAAI,MAAM,IAAA,CAAK,aAAa,gBAAA,CAAiB;AAAA,MAC3D,OAAA,EAAS,KAAK,MAAA,CAAO,cAAA;AAAA,MACrB,GAAA,EAAK,0BAAA;AAAA,MACL,YAAA,EAAc,kBAAA;AAAA,MACd,MAAM,CAAC,MAAA,CAAO,aAAa,MAAA,CAAO,SAAA,EAAW,OAAO,OAAO,CAAA;AAAA,MAC3D;AAAA,KACD,CAAA;AAED,IAAA,OAAO,MAAA,CAAO,cAAc,OAAO,CAAA;AAAA,EACrC;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,EAOA,MAAM,iBAAiB,MAAA,EAGpB;AACD,IAAA,MAAM,SAAS,IAAA,CAAK,YAAA;AACpB,IAAA,MAAM,OAAA,GAAU,MAAM,IAAA,CAAK,gBAAA,EAAiB;AAE5C,IAAA,MAAM,EAAE,OAAA,EAAQ,GAAI,MAAM,IAAA,CAAK,aAAa,gBAAA,CAAiB;AAAA,MAC3D,OAAA,EAAS,KAAK,MAAA,CAAO,cAAA;AAAA,MACrB,GAAA,EAAK,0BAAA;AAAA,MACL,YAAA,EAAc,oBAAA;AAAA,MACd,IAAA,EAAM,CAAC,MAAA,CAAO,KAAA,EAAO,OAAO,UAAU,CAAA;AAAA,MACtC;AAAA,KACD,CAAA;AAED,IAAA,OAAO,MAAA,CAAO,cAAc,OAAO,CAAA;AAAA,EACrC;AAAA;AAAA;AAAA;AAAA;AAAA,EAOA,MAAM,mBAAmB,MAAA,EAGtB;AACD,IAAA,MAAM,SAAS,IAAA,CAAK,YAAA;AACpB,IAAA,MAAM,OAAA,GAAU,MAAM,IAAA,CAAK,gBAAA,EAAiB;AAE5C,IAAA,MAAM,EAAE,OAAA,EAAQ,GAAI,MAAM,IAAA,CAAK,aAAa,gBAAA,CAAiB;AAAA,MAC3D,OAAA,EAAS,KAAK,MAAA,CAAO,cAAA;AAAA,MACrB,GAAA,EAAK,0BAAA;AAAA,MACL,YAAA,EAAc,+BAAA;AAAA,MACd,IAAA,EAAM,CAAC,MAAA,CAAO,QAAA,EAAU,OAAO,UAAU,CAAA;AAAA,MACzC;AAAA,KACD,CAAA;AAED,IAAA,OAAO,MAAA,CAAO,cAAc,OAAO,CAAA;AAAA,EACrC;AAAA;AAAA;AAAA;AAAA,EAKA,MAAM,sBAAsB,MAAA,EAA8B;AACxD,IAAA,MAAM,SAAS,IAAA,CAAK,YAAA;AACpB,IAAA,MAAM,OAAA,GAAU,MAAM,IAAA,CAAK,gBAAA,EAAiB;AAE5C,IAAA,MAAM,EAAE,OAAA,EAAQ,GAAI,MAAM,IAAA,CAAK,aAAa,gBAAA,CAAiB;AAAA,MAC3D,OAAA,EAAS,KAAK,MAAA,CAAO,cAAA;AAAA,MACrB,GAAA,EAAK,0BAAA;AAAA,MACL,YAAA,EAAc,kCAAA;AAAA,MACd,IAAA,EAAM,CAAC,MAAA,CAAO,QAAQ,CAAA;AAAA,MACtB;AAAA,KACD,CAAA;AAED,IAAA,OAAO,MAAA,CAAO,cAAc,OAAO,CAAA;AAAA,EACrC;AAAA;AAAA;AAAA;AAAA;AAAA,EAOA,MAAM,iBAAiB,MAAA,EAGF;AACnB,IAAA,OAAO,IAAA,CAAK,aAAa,YAAA,CAAa;AAAA,MACpC,OAAA,EAAS,KAAK,MAAA,CAAO,cAAA;AAAA,MACrB,GAAA,EAAK,0BAAA;AAAA,MACL,YAAA,EAAc,kBAAA;AAAA,MACd,IAAA,EAAM,CAAC,MAAA,CAAO,IAAA,EAAM,OAAO,QAAQ;AAAA,KACpC,CAAA;AAAA,EACH;AAAA;AAAA;AAAA;AAAA,EAKA,MAAM,mBAAmB,MAAA,EAEE;AACzB,IAAA,OAAO,IAAA,CAAK,aAAa,YAAA,CAAa;AAAA,MACpC,OAAA,EAAS,KAAK,MAAA,CAAO,cAAA;AAAA,MACrB,GAAA,EAAK,0BAAA;AAAA,MACL,YAAA,EAAc,+BAAA;AAAA,MACd,IAAA,EAAM,CAAC,MAAA,CAAO,QAAQ;AAAA,KACvB,CAAA;AAAA,EACH;AAAA;AAAA;AAAA;AAAA;AAAA,EAOA,MAAM,eAAe,MAAA,EAGlB;AACD,IAAA,MAAM,SAAS,IAAA,CAAK,YAAA;AACpB,IAAA,MAAM,OAAA,GAAU,MAAM,IAAA,CAAK,gBAAA,EAAiB;AAE5C,IAAA,MAAM,EAAE,OAAA,EAAQ,GAAI,MAAM,IAAA,CAAK,aAAa,gBAAA,CAAiB;AAAA,MAC3D,SAAS,MAAA,CAAO,UAAA;AAAA,MAChB,GAAA,EAAK,8BAAA;AAAA,MACL,YAAA,EAAc,gBAAA;AAAA,MACd,IAAA,EAAM,CAAC,MAAA,CAAO,KAAK,CAAA;AAAA,MACnB;AAAA,KACD,CAAA;AAED,IAAA,OAAO,MAAA,CAAO,cAAc,OAAO,CAAA;AAAA,EACrC;AAAA;AAAA;AAAA;AAAA,EAKA,MAAM,oBAAoB,MAAA,EAGvB;AACD,IAAA,MAAM,SAAS,IAAA,CAAK,YAAA;AACpB,IAAA,MAAM,OAAA,GAAU,MAAM,IAAA,CAAK,gBAAA,EAAiB;AAE5C,IAAA,MAAM,EAAE,OAAA,EAAQ,GAAI,MAAM,IAAA,CAAK,aAAa,gBAAA,CAAiB;AAAA,MAC3D,SAAS,MAAA,CAAO,UAAA;AAAA,MAChB,GAAA,EAAK,8BAAA;AAAA,MACL,YAAA,EAAc,qBAAA;AAAA,MACd,IAAA,EAAM,CAAC,MAAA,CAAO,KAAK,CAAA;AAAA,MACnB;AAAA,KACD,CAAA;AAED,IAAA,OAAO,MAAA,CAAO,cAAc,OAAO,CAAA;AAAA,EACrC;AAAA;AAAA;AAAA;AAAA,EAKA,MAAM,cAAc,MAAA,EAGC;AACnB,IAAA,OAAO,IAAA,CAAK,aAAa,YAAA,CAAa;AAAA,MACpC,SAAS,MAAA,CAAO,UAAA;AAAA,MAChB,GAAA,EAAK,8BAAA;AAAA,MACL,YAAA,EAAc,WAAA;AAAA,MACd,IAAA,EAAM,CAAC,MAAA,CAAO,IAAI;AAAA,KACnB,CAAA;AAAA,EACH;AACF;ACjMA,IAAM,gBAAA,GAAmB,6BAAA;AAEzB,IAAM,uBAAA,GAA0B;AAAA,EAC9B;AAAA,IACE,IAAA,EAAM,cAAA;AAAA,IACN,IAAA,EAAM,UAAA;AAAA,IACN,eAAA,EAAiB,MAAA;AAAA,IACjB,QAAQ,CAAC,EAAE,MAAM,YAAA,EAAc,IAAA,EAAM,WAAW,CAAA;AAAA,IAChD,SAAS,CAAC,EAAE,MAAM,WAAA,EAAa,IAAA,EAAM,WAAW;AAAA;AAEpD,CAAA;AAEO,IAAK,YAAA,qBAAAC,aAAAA,KAAL;AACL,EAAAA,aAAAA,CAAAA,aAAAA,CAAA,UAAO,CAAA,CAAA,GAAP,MAAA;AACA,EAAAA,aAAAA,CAAAA,aAAAA,CAAA,eAAY,CAAA,CAAA,GAAZ,WAAA;AAFU,EAAA,OAAAA,aAAAA;AAAA,CAAA,EAAA,YAAA,IAAA,EAAA;AAiEZ,IAAM,6BAAA,GAAgC,GAAA;AACtC,IAAM,0BAAA,GAA6B,CAAA;AAE5B,IAAM,iBAAA,GAAN,cAAgC,UAAA,CAAW;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,EAiChD,MAAM,WAAW,MAAA,EAad;AACD,IAAA,MAAM,SAAS,IAAA,CAAK,YAAA;AACpB,IAAA,MAAM,OAAA,GAAU,MAAM,IAAA,CAAK,gBAAA,EAAiB;AAE5C,IAAA,MAAM,QAAA,GAAW,MAAA,CAAO,QAAA,IAAY,CAAC,MAAM,MAAM,CAAA;AAEjD,IAAA,MAAM,EAAE,WAAA,EAAa,aAAA,EAAc,GACjC,MAAM,IAAA,CAAK,sBAAA,CAAuB,MAAA,EAAQ,MAAM,IAAA,CAAK,gBAAA,EAAkB,CAAA;AAEzE,IAAA,IAAI,CAAC,eAAA,CAAgB,MAAA,CAAO,QAAQ,CAAA,EAAG;AACrC,MAAA,MAAM,IAAI,MAAM,oDAAoD,CAAA;AAAA,IACtE;AAEA,IAAA,MAAM,EAAE,OAAA,EAAQ,GAAI,MAAM,IAAA,CAAK,aAAa,gBAAA,CAAiB;AAAA,MAC3D,OAAA,EAAS,KAAK,MAAA,CAAO,cAAA;AAAA,MACrB,GAAA,EAAK,2BAAA;AAAA,MACL,YAAA,EAAc,uBAAA;AAAA,MACd,IAAA,EAAM;AAAA,QACJ,MAAA,CAAO,OAAA;AAAA,QACP,MAAA,CAAO,UAAA;AAAA,QACP,MAAA,CAAO,WAAA,IAAe,MAAA,CAAO,CAAC,CAAA;AAAA,QAC9B,MAAA,CAAO,QAAA,IAAY,MAAA,CAAO,CAAC,CAAA;AAAA,QAC3B,MAAA,CAAO,SAAA;AAAA,QACP,QAAA;AAAA,QACA,MAAA,CAAO,QAAA;AAAA,QACP,MAAA,CAAO,eAAA;AAAA,QACP,aAAA;AAAA,QACA,MAAA,CAAO,QAAA,IAAY,MAAA,CAAO,CAAC,CAAA;AAAA,QAC3B,WAAA;AAAA,QACA,MAAA,CAAO,gBAAA,IAAoB,MAAA,CAAO,CAAC;AAAA,OACrC;AAAA,MACA;AAAA,KACD,CAAA;AAED,IAAA,OAAO,MAAA,CAAO,cAAc,OAAO,CAAA;AAAA,EACrC;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,EAYA,MAAM,YAAY,QAAA,EAAkB;AAClC,IAAA,MAAM,SAAS,IAAA,CAAK,YAAA;AACpB,IAAA,MAAM,OAAA,GAAU,MAAM,IAAA,CAAK,gBAAA,EAAiB;AAE5C,IAAA,MAAM,EAAA,GAAK,MAAM,IAAA,CAAK,GAAA,CAAI,QAAQ,CAAA;AAElC,IAAA,IAAI,GAAG,QAAA,EAAU;AACf,MAAA,MAAM,IAAI,MAAM,+BAA+B,CAAA;AAAA,IACjD;AAEA,IAAA,MAAM,GAAA,GAAM,OAAO,IAAA,CAAK,KAAA,CAAM,KAAK,GAAA,EAAI,GAAI,GAAI,CAAC,CAAA;AAChD,IAAA,IAAI,GAAA,GAAM,GAAG,SAAA,EAAW;AACtB,MAAA,MAAM,IAAI,KAAA;AAAA,QACR,CAAA,iCAAA,EAAoC,IAAI,QAAA,EAAU,gBAAgB,EAAA,CAAG,SAAA,CAAU,UAAU,CAAA;AAAA,OAC3F;AAAA,IACF;AAEA,IAAA,MAAM,UAAA,GAAa,EAAA,CAAG,WAAA,KAAgB,MAAA,CAAO,CAAC,CAAA;AAC9C,IAAA,MAAM,aAAA,GAAgB,MAAA,CAAO,EAAA,CAAG,gBAAgB,CAAA;AAEhD,IAAA,MAAM,QAAA,GAAW,MAAM,IAAA,CAAK,uBAAA;AAAA,MAC1B,EAAA,CAAG,MAAA;AAAA,MACH,MAAA,CAAO,GAAG,SAAS,CAAA;AAAA,MACnB;AAAA,KACF;AAEA,IAAA,IAAI,cAAA;AACJ,IAAA,IAAI,UAAA,EAAY;AACd,MAAA,MAAM,OAAA,GAAU,MAAM,IAAA,CAAK,uBAAA;AAAA,QACzB,EAAA,CAAG,MAAA;AAAA,QACH,MAAA,CAAO,GAAG,QAAQ,CAAA;AAAA,QAClB;AAAA,OACF;AACA,MAAA,cAAA,GAAiB,CAAC,GAAG,OAAA,EAAS,GAAG,QAAQ,CAAA;AAAA,IAC3C,CAAA,MAAO;AACL,MAAA,cAAA,GAAiB,QAAA;AAAA,IACnB;AAEA,IAAA,MAAM,WAAA,GAAc,MAAM,IAAA,CAAK,eAAA,EAAgB;AAC/C,IAAA,MAAM,OAAA,GAAW,MAAM,IAAA,CAAK,YAAA,CAAa,YAAA,CAAa;AAAA,MACpD,OAAA,EAAS,WAAA;AAAA,MACT,GAAA,EAAK,uBAAA;AAAA,MACL,YAAA,EAAc,cAAA;AAAA,MACd,IAAA,EAAM,CAAC,cAAc;AAAA,KACtB,CAAA;AAID,IAAA,MAAM,YAAY,OAAA,GAAU,MAAA,CAAO,CAAC,CAAA,GAAI,OAAA,GAAU,OAAO,GAAa,CAAA;AAEtE,IAAA,MAAM,EAAE,OAAA,EAAQ,GAAI,MAAM,IAAA,CAAK,aAAa,gBAAA,CAAiB;AAAA,MAC3D,OAAA,EAAS,KAAK,MAAA,CAAO,cAAA;AAAA,MACrB,GAAA,EAAK,2BAAA;AAAA,MACL,YAAA,EAAc,wBAAA;AAAA,MACd,IAAA,EAAM,CAAC,QAAA,EAAU,cAAc,CAAA;AAAA,MAC/B,OAAA;AAAA,MACA,KAAA,EAAO;AAAA,KACR,CAAA;AAED,IAAA,OAAO,MAAA,CAAO,cAAc,OAAO,CAAA;AAAA,EACrC;AAAA;AAAA;AAAA;AAAA,EAKA,MAAM,cAAc,QAAA,EAAoC;AACtD,IAAA,OAAQ,MAAM,IAAA,CAAK,YAAA,CAAa,YAAA,CAAa;AAAA,MAC3C,OAAA,EAAS,KAAK,MAAA,CAAO,cAAA;AAAA,MACrB,GAAA,EAAK,wBAAA;AAAA,MACL,YAAA,EAAc,eAAA;AAAA,MACd,IAAA,EAAM,CAAC,QAAQ;AAAA,KAChB,CAAA;AAAA,EACH;AAAA;AAAA;AAAA;AAAA,EAKA,MAAM,WAAW,QAAA,EAAoC;AACnD,IAAA,OAAQ,MAAM,IAAA,CAAK,YAAA,CAAa,YAAA,CAAa;AAAA,MAC3C,OAAA,EAAS,KAAK,MAAA,CAAO,cAAA;AAAA,MACrB,GAAA,EAAK,wBAAA;AAAA,MACL,YAAA,EAAc,uBAAA;AAAA,MACd,IAAA,EAAM,CAAC,QAAQ;AAAA,KAChB,CAAA;AAAA,EACH;AAAA;AAAA;AAAA;AAAA,EAKA,MAAM,IAAI,QAAA,EAA4C;AAEpD,IAAA,MAAM,MAAA,GAAc,MAAM,IAAA,CAAK,YAAA,CAAa,YAAA,CAAa;AAAA,MACvD,OAAA,EAAS,KAAK,MAAA,CAAO,cAAA;AAAA,MACrB,GAAA,EAAK,wBAAA;AAAA,MACL,YAAA,EAAc,gBAAA;AAAA,MACd,IAAA,EAAM,CAAC,QAAQ;AAAA,KAChB,CAAA;AAED,IAAA,OAAO;AAAA,MACL,MAAA,EAAQ,OAAO,CAAC,CAAA;AAAA,MAChB,YAAA,EAAc,MAAA,CAAO,MAAA,CAAO,CAAC,CAAC,CAAA;AAAA,MAC9B,QAAA,EAAU,MAAA,CAAO,MAAA,CAAO,CAAC,CAAC,CAAA;AAAA,MAC1B,SAAA,EAAW,MAAA,CAAO,MAAA,CAAO,CAAC,CAAC,CAAA;AAAA,MAC3B,SAAA,EAAW,MAAA,CAAO,MAAA,CAAO,CAAC,CAAC,CAAA;AAAA,MAC3B,UAAA,EAAY,MAAA,CAAO,MAAA,CAAO,CAAC,CAAC,CAAA;AAAA,MAC5B,gBAAA,EAAkB,MAAA,CAAO,MAAA,CAAO,CAAC,CAAC,CAAA;AAAA,MAClC,QAAA,EAAU,OAAO,CAAC,CAAA;AAAA,MAClB,WAAA,EAAa,MAAA,CAAO,MAAA,CAAO,CAAC,CAAC,CAAA;AAAA,MAC7B,aAAA,EAAe,MAAA,CAAO,MAAA,CAAO,CAAC,CAAC;AAAA,KACjC;AAAA,EACF;AAAA;AAAA;AAAA;AAAA,EAKA,MAAM,eAAA,GAAoC;AACxC,IAAA,OAAQ,MAAM,IAAA,CAAK,YAAA,CAAa,YAAA,CAAa;AAAA,MAC3C,OAAA,EAAS,KAAK,MAAA,CAAO,cAAA;AAAA,MACrB,GAAA,EAAK,2BAAA;AAAA,MACL,YAAA,EAAc;AAAA,KACf,CAAA;AAAA,EACH;AAAA;AAAA;AAAA;AAAA,EAKA,MAAM,gBAAgB,YAAA,EAAuB;AAC3C,IAAA,MAAM,SAAS,IAAA,CAAK,YAAA;AACpB,IAAA,MAAM,OAAA,GAAU,MAAM,IAAA,CAAK,gBAAA,EAAiB;AAE5C,IAAA,MAAM,EAAE,OAAA,EAAQ,GAAI,MAAM,IAAA,CAAK,aAAa,gBAAA,CAAiB;AAAA,MAC3D,OAAA,EAAS,KAAK,MAAA,CAAO,cAAA;AAAA,MACrB,GAAA,EAAK,2BAAA;AAAA,MACL,YAAA,EAAc,iBAAA;AAAA,MACd,IAAA,EAAM,CAAC,YAAY,CAAA;AAAA,MACnB;AAAA,KACD,CAAA;AAED,IAAA,OAAO,MAAA,CAAO,cAAc,OAAO,CAAA;AAAA,EACrC;AAAA;AAAA;AAAA;AAAA;AAAA,EAOA,MAAc,sBAAA,CACZ,MAAA,EAMA,OAAA,EACA;AAEA,IAAA,MAAM,KAAA,GAAa,MAAM,IAAA,CAAK,YAAA,CAAa,YAAA,CAAa;AAAA,MACtD,OAAA,EAAS,KAAK,MAAA,CAAO,cAAA;AAAA,MACrB,GAAA,EAAK,kBAAA;AAAA,MACL,YAAA,EAAc,UAAA;AAAA,MACd,IAAA,EAAM,CAAC,MAAA,CAAO,OAAO;AAAA,KACtB,CAAA;AAED,IAAA,MAAM,cAAc,KAAA,CAAM,iBAAA;AAC1B,IAAA,IAAI,WAAA,GAAc,MAAA,CAAO,CAAC,CAAA,EAAG;AAC3B,MAAA,MAAM,SAAA,GAAY,MAAM,IAAA,CAAK,YAAA,CAAa,YAAA,CAAa;AAAA,QACrD,SAAS,MAAA,CAAO,eAAA;AAAA,QAChB,GAAA,EAAKD,QAAAA;AAAA,QACL,YAAA,EAAc,WAAA;AAAA,QACd,IAAA,EAAM,CAAC,OAAA,EAAS,IAAA,CAAK,OAAO,cAAc;AAAA,OAC3C,CAAA;AAED,MAAA,IAAI,YAAY,WAAA,EAAa;AAC3B,QAAA,MAAM,IAAI,KAAA;AAAA,UACR,6DAA6D,SAAA,CAAU,QAAA,EAAU,CAAA,YAAA,EAAe,WAAA,CAAY,UAAU,CAAA,CAAA;AAAA,SACxH;AAAA,MACF;AAAA,IACF;AAEA,IAAA,MAAM,aAAA,GAAgB,IAAA,CAAK,mBAAA,CAAoB,MAAA,CAAO,QAAQ,CAAA;AAE9D,IAAA,MAAM,WAAA,GAAA,CAAe,MAAA,CAAO,IAAA,IAAQ,EAAC,EAAG,GAAA;AAAA,MAAI,CAAC,CAAA,KAC3CE,WAAAA,CAAY,GAAG,EAAE,IAAA,EAAM,IAAI;AAAA,KAC7B;AAEA,IAAA,OAAO,EAAE,aAAa,aAAA,EAAc;AAAA,EACtC;AAAA,EAEQ,oBAAoB,QAAA,EAAyC;AACnE,IAAA,IAAI,IAAA,GAAO,CAAA,QAAA,EAAW,QAAA,CAAS,KAAK,CAAA,CAAA;AACpC,IAAA,IAAA,IAAQ,CAAA,aAAA,EAAgB,SAAS,WAAW,CAAA,CAAA;AAC5C,IAAA,OAAOA,YAAY,IAAI,CAAA;AAAA,EACzB;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,EAUA,MAAM,sBAAsB,MAAA,EAA4C;AACtE,IAAA,MAAM,GAAA,GAAM,CAAA,EAAG,gBAAgB,CAAA,+BAAA,EAAkC,MAAM,CAAA,CAAA;AACvE,IAAA,MAAM,QAAA,GAAW,MAAM,KAAA,CAAM,GAAG,CAAA;AAEhC,IAAA,IAAI,CAAC,SAAS,EAAA,EAAI;AAChB,MAAA,MAAM,IAAI,KAAA;AAAA,QACR,CAAA,uBAAA,EAA0B,QAAA,CAAS,MAAM,CAAA,CAAA,EAAI,SAAS,UAAU,CAAA;AAAA,OAClE;AAAA,IACF;AAGA,IAAA,MAAM,IAAA,GAAY,MAAM,QAAA,CAAS,IAAA,EAAK;AACtC,IAAA,MAAM,UAAA,GAAmC,KAAK,MAAA,EAAQ,IAAA;AAEtD,IAAA,IAAI,CAAC,UAAA,IAAc,UAAA,CAAW,MAAA,KAAW,CAAA,EAAG;AAC1C,MAAA,MAAM,IAAI,MAAM,gDAAgD,CAAA;AAAA,IAClE;AAEA,IAAA,MAAM,MAAA,GAAS,IAAA,CAAK,MAAA,GAAS,CAAC,CAAA;AAC9B,IAAA,MAAM,cAAA,GAAiB,QAAQ,KAAA,EAAO,YAAA;AACtC,IAAA,IAAI,OAAO,mBAAmB,QAAA,EAAU;AACtC,MAAA,MAAM,IAAI,MAAM,wDAAwD,CAAA;AAAA,IAC1E;AAEA,IAAA,OAAO;AAAA,MACL,YAAY,UAAA,CAAW,GAAA,CAAI,CAAC,CAAA,KAAM,CAAA,EAAA,EAAK,CAAC,CAAA,CAAmB,CAAA;AAAA,MAC3D,WAAA,EAAa,OAAO,cAAc,CAAA;AAAA,MAClC,SAAA,EAAW,OAAO,IAAA,CAAK,KAAA,CAAM,KAAK,GAAA,EAAI,GAAI,GAAI,CAAC;AAAA,KACjD;AAAA,EACF;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,EAYA,MAAM,oBAAA,CACJ,MAAA,EACA,OAAA,GAII,EAAC,EACgB;AACrB,IAAA,MAAM,aAAA,GAAgB,QAAQ,aAAA,IAAiB,6BAAA;AAC/C,IAAA,MAAM,WAAA,GAAc,QAAQ,WAAA,IAAe,0BAAA;AAE3C,IAAA,MAAM,OAAA,GAAU,CAAC,CAAA,KAA2B;AAC1C,MAAA,MAAM,GAAA,GAAM,OAAO,IAAA,CAAK,KAAA,CAAM,KAAK,GAAA,EAAI,GAAI,GAAI,CAAC,CAAA;AAChD,MAAA,OAAO,GAAA,GAAM,CAAA,CAAE,WAAA,IAAe,MAAA,CAAO,aAAa,CAAA;AAAA,IACpD,CAAA;AAEA,IAAA,IAAI,OAAA,CAAQ,MAAA,IAAU,OAAA,CAAQ,OAAA,CAAQ,MAAM,CAAA,EAAG;AAC7C,MAAA,OAAO,OAAA,CAAQ,MAAA;AAAA,IACjB;AAEA,IAAA,IAAI,MAAA;AACJ,IAAA,KAAA,IAAS,OAAA,GAAU,CAAA,EAAG,OAAA,GAAU,WAAA,EAAa,OAAA,EAAA,EAAW;AACtD,MAAA,MAAA,GAAS,MAAM,IAAA,CAAK,qBAAA,CAAsB,MAAM,CAAA;AAChD,MAAA,IAAI,OAAA,CAAQ,MAAM,CAAA,EAAG,OAAO,MAAA;AAAA,IAC9B;AAEA,IAAA,IAAI,CAAC,MAAA,EAAQ;AACX,MAAA,MAAM,IAAI,MAAM,6CAA6C,CAAA;AAAA,IAC/D;AACA,IAAA,OAAO,MAAA;AAAA,EACT;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,EAsBA,MAAM,wBACJ,QAAA,EACoC;AACpC,IAAA,MAAM,EAAA,GAAK,MAAM,IAAA,CAAK,GAAA,CAAI,QAAQ,CAAA;AAElC,IAAA,IAAI,EAAA,CAAG,UAAU,OAAO,IAAA;AACxB,IAAA,IAAI,EAAA,CAAG,WAAA,KAAgB,MAAA,CAAO,CAAC,GAAG,OAAO,IAAA;AAEzC,IAAA,MAAM,GAAA,GAAM,OAAO,IAAA,CAAK,KAAA,CAAM,KAAK,GAAA,EAAI,GAAI,GAAI,CAAC,CAAA;AAChD,IAAA,IAAI,GAAA,GAAM,EAAA,CAAG,QAAA,EAAU,OAAO,IAAA;AAE9B,IAAA,MAAM,MAAA,GAAS,MAAM,IAAA,CAAK,yBAAA;AAAA,MACxB,EAAA,CAAG,MAAA;AAAA,MACH,MAAA,CAAO,GAAG,QAAQ,CAAA;AAAA,MAClB,MAAA,CAAO,GAAG,gBAAgB;AAAA,KAC5B;AACA,IAAA,IAAI,CAAC,QAAQ,OAAO,IAAA;AAEpB,IAAA,OAAO;AAAA,MACL,KAAA,EAAO,MAAA,CAAO,MAAA,CAAO,KAAA,CAAM,KAAK,CAAA;AAAA,MAChC,WAAA,EAAa,MAAA,CAAO,MAAA,CAAO,KAAA,CAAM,YAAY,CAAA;AAAA,MAC7C,IAAA,EAAM,MAAA,CAAO,MAAA,CAAO,KAAA,CAAM,IAAI,CAAA;AAAA,MAC9B,SAAA,EAAW,GAAA,IAAO,EAAA,CAAG,QAAA,GAAW,EAAA,CAAG,gBAAA;AAAA,MACnC,UAAU,EAAA,CAAG;AAAA,KACf;AAAA,EACF;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,EAiBA,MAAc,uBAAA,CACZ,MAAA,EACA,WAAA,EACA,aAAA,EAC0B;AAC1B,IAAA,MAAM,MAAA,GAAS,MAAM,IAAA,CAAK,sBAAA;AAAA,MACxB,MAAA;AAAA,MACA,WAAA;AAAA,MACA;AAAA,KACF;AACA,IAAA,IAAI,CAAC,MAAA,EAAQ;AACX,MAAA,MAAM,IAAI,KAAA;AAAA,QACR,oCAAoC,WAAW,CAAA,EAAA,EAAK,WAAA,GAAc,aAAa,cAAc,MAAM,CAAA;AAAA,OACrG;AAAA,IACF;AACA,IAAA,OAAO,MAAA,CAAO,UAAA;AAAA,EAChB;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,EAUA,MAAc,yBAAA,CACZ,MAAA,EACA,WAAA,EACA,aAAA,EACkF;AAClF,IAAA,MAAM,MAAA,GAAS,MAAM,IAAA,CAAK,sBAAA;AAAA,MACxB,MAAA;AAAA,MACA,WAAA;AAAA,MACA;AAAA,KACF;AACA,IAAA,OAAO,QAAQ,MAAA,IAAU,IAAA;AAAA,EAC3B;AAAA,EAEA,MAAc,sBAAA,CACZ,MAAA,EACA,WAAA,EACA,aAAA,EAIQ;AAIR,IAAA,MAAM,SAAS,IAAA,CAAK,GAAA,CAAI,GAAG,IAAA,CAAK,KAAA,CAAM,aAAa,CAAC,CAAA;AACpD,IAAA,MAAM,OAAA,GAAU,WAAW,CAAA,GACvB,CAAC,CAAC,CAAA,GACF,KAAA,CAAM,IAAA,iBAAK,IAAI,GAAA,CAAI;AAAA,MACjB,CAAA;AAAA,MACA,IAAA,CAAK,KAAA,CAAM,MAAA,GAAS,CAAC,CAAA;AAAA,MACrB,IAAA,CAAK,KAAA,CAAM,MAAA,GAAS,CAAC,CAAA;AAAA,MACrB,IAAA,CAAK,KAAA,CAAO,CAAA,GAAI,MAAA,GAAU,CAAC,CAAA;AAAA,MAC3B;AAAA,KACD,CAAC,CAAA,CAAE,IAAA,CAAK,CAAC,CAAA,EAAG,CAAA,KAAM,IAAI,CAAC,CAAA;AAE5B,IAAA,KAAA,MAAW,UAAU,OAAA,EAAS;AAC5B,MAAA,MAAM,IAAI,WAAA,GAAc,MAAA;AACxB,MAAA,MAAM,MAAM,CAAA,EAAG,gBAAgB,CAAA,kBAAA,EAAqB,CAAC,UAAU,MAAM,CAAA,CAAA;AAErE,MAAA,MAAM,QAAA,GAAW,MAAM,IAAA,CAAK,sBAAA,CAAuB,GAAG,CAAA;AACtD,MAAA,IAAI,aAAa,IAAA,EAAM;AAGvB,MAAA,MAAM,IAAA,GAAY,MAAM,QAAA,CAAS,IAAA,EAAK;AACtC,MAAA,MAAM,aAAA,GAAsC,KAAK,MAAA,EAAQ,IAAA;AACzD,MAAA,MAAM,MAAA,GAAS,IAAA,CAAK,MAAA,GAAS,CAAC,CAAA;AAE9B,MAAA,IAAI,CAAC,aAAA,IAAiB,aAAA,CAAc,MAAA,KAAW,CAAA,EAAG;AAElD,MAAA,OAAO;AAAA,QACL,YAAY,aAAA,CAAc,GAAA;AAAA,UACxB,CAAC,CAAA,KAAM,CAAA,EAAA,EAAK,CAAC,CAAA;AAAA,SACf;AAAA,QACA;AAAA,OACF;AAAA,IACF;AAEA,IAAA,OAAO,IAAA;AAAA,EACT;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,EAOA,MAAc,sBAAA,CACZ,GAAA,EACA,OAAA,GAA6D,EAAC,EACpC;AAC1B,IAAA,MAAM,WAAA,GAAc,QAAQ,WAAA,IAAe,CAAA;AAC3C,IAAA,MAAM,cAAA,GAAiB,QAAQ,cAAA,IAAkB,GAAA;AAEjD,IAAA,KAAA,IAAS,OAAA,GAAU,CAAA,EAAG,OAAA,GAAU,WAAA,EAAa,OAAA,EAAA,EAAW;AACtD,MAAA,MAAM,QAAA,GAAW,MAAM,KAAA,CAAM,GAAG,CAAA;AAChC,MAAA,IAAI,QAAA,CAAS,WAAW,GAAA,EAAK;AAC3B,QAAA,IAAI,OAAA,KAAY,cAAc,CAAA,EAAG;AAC/B,UAAA,MAAM,IAAI,KAAA;AAAA,YACR,+DAA+D,WAAW,CAAA,UAAA;AAAA,WAC5E;AAAA,QACF;AACA,QAAA,MAAM,KAAA,GAAQ,cAAA,GAAiB,IAAA,CAAK,GAAA,CAAI,GAAG,OAAO,CAAA;AAClD,QAAA,MAAM,IAAI,OAAA,CAAQ,CAAC,MAAM,UAAA,CAAW,CAAA,EAAG,KAAK,CAAC,CAAA;AAC7C,QAAA;AAAA,MACF;AACA,MAAA,IAAI,QAAA,CAAS,MAAA,KAAW,GAAA,EAAK,OAAO,IAAA;AACpC,MAAA,IAAI,CAAC,SAAS,EAAA,EAAI;AAChB,QAAA,MAAM,IAAI,KAAA;AAAA,UACR,CAAA,uBAAA,EAA0B,QAAA,CAAS,MAAM,CAAA,CAAA,EAAI,SAAS,UAAU,CAAA;AAAA,SAClE;AAAA,MACF;AACA,MAAA,OAAO,QAAA;AAAA,IACT;AACA,IAAA,OAAO,IAAA;AAAA,EACT;AACF;;;ACnnBO,IAAM,gBAAN,MAAoB;AAAA,EAWzB,YAAY,MAAA,EAA6B;AACvC,IAAA,IAAA,CAAK,MAAA,GAAS,MAAA;AACd,IAAA,IAAA,CAAK,KAAA,GAAQ,IAAI,WAAA,CAAY,MAAM,CAAA;AACnC,IAAA,IAAA,CAAK,MAAA,GAAS,IAAI,YAAA,CAAa,MAAM,CAAA;AACrC,IAAA,IAAA,CAAK,KAAA,GAAQ,IAAI,WAAA,CAAY,MAAM,CAAA;AACnC,IAAA,IAAA,CAAK,MAAA,GAAS,IAAI,YAAA,CAAa,MAAM,CAAA;AACrC,IAAA,IAAA,CAAK,KAAA,GAAQ,IAAI,WAAA,CAAY,MAAM,CAAA;AACnC,IAAA,IAAA,CAAK,GAAA,GAAM,IAAI,SAAA,CAAU,MAAM,CAAA;AAC/B,IAAA,IAAA,CAAK,aAAA,GAAgB,IAAI,mBAAA,CAAoB,MAAM,CAAA;AACnD,IAAA,IAAA,CAAK,WAAA,GAAc,IAAI,iBAAA,CAAkB,MAAM,CAAA;AAAA,EACjD;AACF;AAEO,SAAS,oBAAoB,MAAA,EAOlB;AAChB,EAAA,IAAI,QAAQ,MAAA,CAAO,KAAA;AACnB,EAAA,IAAI,YAAY,MAAA,CAAO,SAAA;AACvB,EAAA,IAAI,UAAU,MAAA,CAAO,OAAA;AAErB,EAAA,IAAI,eAAe,MAAA,CAAO,YAAA;AAG1B,EAAA,IAAI,YAAA,EAAc;AAChB,IAAA,KAAA,GAAQ,SAAS,YAAA,CAAa,KAAA;AAG9B,IAAA,SAAA,GAAY,SAAA,IAAa,MAAA,CAAO,YAAA,CAAa,SAAS,CAAA;AACtD,IAAA,OAAA,GAAU,WAAW,YAAA,CAAa,OAAA;AAAA,EACpC;AAGA,EAAA,KAAA,GAAQ,KAAA,IAAS,aAAA;AACjB,EAAA,SAAA,GAAY,aAAa,IAAA,EAAK;AAE9B,EAAA,MAAM,SAAA,GACJ,kBAAA,CAAmB,KAAA,CAAM,EAAqC,CAAA;AAEhE,EAAA,IAAI,CAAC,SAAA,EAAW;AACd,IAAA,MAAM,IAAI,KAAA,CAAM,CAAA,sBAAA,EAAyB,KAAA,CAAM,EAAE,CAAA,CAAE,CAAA;AAAA,EACrD;AAEA,EAAA,MAAM,eAAe,kBAAA,CAAmB;AAAA,IACtC,KAAA;AAAA,IACA;AAAA,GACD,CAAA;AAGD,EAAA,IAAI,CAAC,gBAAgB,OAAA,EAAS;AAC5B,IAAA,YAAA,GAAe,kBAAA,CAAmB;AAAA,MAChC,OAAA;AAAA,MACA,KAAA;AAAA,MACA;AAAA,KACD,CAAA;AAAA,EACH;AAEA,EAAA,MAAM,MAAA,GAA8B;AAAA,IAClC,KAAA;AAAA,IACA,SAAA;AAAA,IACA,gBAAgB,SAAA,CAAU,OAAA;AAAA,IAC1B,0BAA0B,SAAA,CAAU,iBAAA;AAAA,IACpC,gBAAA,EAAkB,MAAA,CAAO,gBAAA,IAAoB,SAAA,CAAU,QAAA;AAAA,IACvD,YAAA;AAAA,IACA;AAAA,GACF;AAEA,EAAA,OAAO,IAAI,cAAc,MAAM,CAAA;AACjC;;;ACtFO,IAAM,aAAA,GAAgB;AAAA;AAAA,EAE3B,gBAAA,EAAkB,GAAA;AAAA;AAAA,EAElB,gBAAA,EAAkB;AACpB;AAMO,IAAM,YAAA,GAAe;AAAA;AAAA,EAE1B,WAAA,EAAa,QAAA;AAAA;AAAA,EAEb,aAAA,EAAe,UAAA;AAAA;AAAA,EAEf,QAAA,EAAU;AACZ;;;AC5BA,IAAM,oBAAA,GAAuB,oCAAA;AAOtB,SAAS,cAAA,CACd,KACA,OAAA,EACQ;AACR,EAAA,IAAI,CAAC,KAAK,OAAO,EAAA;AACjB,EAAA,MAAM,KAAK,OAAA,IAAW,oBAAA;AACtB,EAAA,IAAI,GAAA,CAAI,UAAA,CAAW,SAAS,CAAA,EAAG;AAC7B,IAAA,MAAMC,QAAO,EAAA,CAAG,QAAA,CAAS,GAAG,CAAA,GAAI,EAAA,GAAK,GAAG,EAAE,CAAA,CAAA,CAAA;AAC1C,IAAA,MAAMC,WAAUD,KAAAA,CAAK,QAAA,CAAS,QAAQ,CAAA,GAAIA,KAAAA,GAAO,GAAGA,KAAI,CAAA,KAAA,CAAA;AACxD,IAAA,OAAO,GAAGC,QAAO,CAAA,EAAG,GAAA,CAAI,KAAA,CAAM,CAAC,CAAC,CAAA,CAAA;AAAA,EAClC;AACA,EAAA,OAAO,GAAA;AACT;AA4BO,SAAS,cACd,IAAA,EACU;AACV,EAAA,IAAI;AACF,IAAA,MAAM,MAAA,GAAS,IAAA,CAAK,KAAA,CAAM,IAAI,CAAA;AAC9B,IAAA,IAAI,OAAO,MAAA,KAAW,QAAA,IAAY,MAAA,KAAW,MAAM,OAAO,IAAA;AAC1D,IAAA,IAAI,OAAO,MAAA,CAAO,OAAA,KAAY,QAAA,EAAU,OAAO,IAAA;AAC/C,IAAA,OAAO,MAAA;AAAA,EACT,CAAA,CAAA,MAAQ;AACN,IAAA,OAAO,IAAA;AAAA,EACT;AACF;;;ACpCO,IAAM,OAAA,GAAU","file":"index.mjs","sourcesContent":["import type { Address } from 'viem';\nimport { baseSepolia, base } from 'viem/chains';\n\nexport const CONTRACT_ADDRESSES = {\n [baseSepolia.id]: {\n diamond: '0x31a4126aec35b36d46dd371eb0f0d5b71e1c2292' as Address,\n conditionalTokens: '0x7364747372Ac4a175B5326f5B2C9CB1C271d32e8' as Address,\n usdc: '0x036cbd53842c5426634e7929541ec2318f3dcf7e' as Address,\n subgraph: 'https://api.studio.thegraph.com/query/1716020/oddmaki-base-sepolia/version/latest',\n },\n [base.id]: {\n diamond: '0x025d086a62d93e24f3cb3f161612ca8e9530127d' as Address,\n conditionalTokens: '0x3e2ae408ca03f27849edff32d107c7b8ea5c87b4' as Address,\n usdc: '0x833589fcd6edb6e08f4c7c32d4f71b54bda02913' as Address,\n subgraph: 'https://api.studio.thegraph.com/query/1716020/oddmaki-base/version/latest',\n },\n} as const;\n\nexport const SUBGRAPH_IDS = {\n [base.id]: 'CxoYVjELrNCMLopAmVshnfVAie7yH6QZyCSKD3r41XSQ',\n [baseSepolia.id]: 'DCnd3ozSyvYxRg7kmZYiDWGBiJCe6QHwu8M93jMN1Q3b',\n} as const;\n\nexport function buildSubgraphGatewayUrl(\n chainId: number,\n apiKey: string,\n): string | undefined {\n const id = SUBGRAPH_IDS[chainId as keyof typeof SUBGRAPH_IDS];\n return id\n ? `https://gateway.thegraph.com/api/${apiKey}/subgraphs/id/${id}`\n : undefined;\n}\n\nexport const DEFAULT_CHAIN = base;\n","import { GraphQLClient, type RequestDocument } from 'graphql-request';\nimport type { TypedDocumentNode } from '@graphql-typed-document-node/core';\n\nexport class SubgraphClient {\n private client: GraphQLClient;\n\n constructor(endpoint: string) {\n this.client = new GraphQLClient(endpoint);\n }\n\n async request<T>(\n query: RequestDocument | TypedDocumentNode<T, Record<string, unknown>>,\n variables?: Record<string, unknown>,\n ): Promise<T> {\n return this.client.request<T>(query as RequestDocument, variables);\n }\n}\n","import type { Account, Address } from 'viem';\nimport type { OddMakiClientConfig } from '../types';\nimport { SubgraphClient } from '../subgraph/client';\n\nexport abstract class BaseModule {\n protected config: OddMakiClientConfig;\n protected subgraph: SubgraphClient;\n\n constructor(config: OddMakiClientConfig) {\n this.config = config;\n this.subgraph = new SubgraphClient(config.subgraphEndpoint);\n }\n\n protected get publicClient() {\n return this.config.publicClient;\n }\n\n protected get walletClient() {\n if (!this.config.walletClient) {\n throw new Error(\n 'WalletClient not initialized. Write operations require a wallet.'\n );\n }\n return this.config.walletClient;\n }\n\n // Returns the hoisted LocalAccount when the wallet was created with a private\n // key, so viem signs locally (eth_sendRawTransaction). Falls back to the\n // address string for injected/JSON-RPC providers (wagmi, RainbowKit, etc).\n protected async getSignerAccount(): Promise<Account | Address> {\n const wallet = this.walletClient;\n if (wallet.account) return wallet.account;\n const [address] = await wallet.getAddresses();\n return address;\n }\n\n protected async getSignerAddress(): Promise<Address> {\n const signer = await this.getSignerAccount();\n return typeof signer === 'string' ? signer : signer.address;\n }\n}\n","[\n {\n \"type\": \"function\",\n \"name\": \"canCreateMarket\",\n \"inputs\": [\n {\n \"name\": \"user\",\n \"type\": \"address\",\n \"internalType\": \"address\"\n },\n {\n \"name\": \"venueId\",\n \"type\": \"uint256\",\n \"internalType\": \"uint256\"\n }\n ],\n \"outputs\": [\n {\n \"name\": \"\",\n \"type\": \"bool\",\n \"internalType\": \"bool\"\n }\n ],\n \"stateMutability\": \"view\"\n },\n {\n \"type\": \"function\",\n \"name\": \"canTrade\",\n \"inputs\": [\n {\n \"name\": \"user\",\n \"type\": \"address\",\n \"internalType\": \"address\"\n },\n {\n \"name\": \"venueId\",\n \"type\": \"uint256\",\n \"internalType\": \"uint256\"\n }\n ],\n \"outputs\": [\n {\n \"name\": \"\",\n \"type\": \"bool\",\n \"internalType\": \"bool\"\n }\n ],\n \"stateMutability\": \"view\"\n },\n {\n \"type\": \"function\",\n \"name\": \"createVenue\",\n \"inputs\": [\n {\n \"name\": \"name\",\n \"type\": \"string\",\n \"internalType\": \"string\"\n },\n {\n \"name\": \"metadata\",\n \"type\": \"string\",\n \"internalType\": \"string\"\n },\n {\n \"name\": \"tradingAccessControl\",\n \"type\": \"address\",\n \"internalType\": \"address\"\n },\n {\n \"name\": \"creationAccessControl\",\n \"type\": \"address\",\n \"internalType\": \"address\"\n },\n {\n \"name\": \"feeRecipient\",\n \"type\": \"address\",\n \"internalType\": \"address\"\n },\n {\n \"name\": \"venueFeeBps\",\n \"type\": \"uint256\",\n \"internalType\": \"uint256\"\n },\n {\n \"name\": \"creatorFeeBps\",\n \"type\": \"uint256\",\n \"internalType\": \"uint256\"\n },\n {\n \"name\": \"defaultTickSize\",\n \"type\": \"uint256\",\n \"internalType\": \"uint256\"\n },\n {\n \"name\": \"marketCreationFee\",\n \"type\": \"uint256\",\n \"internalType\": \"uint256\"\n },\n {\n \"name\": \"umaRewardAmount\",\n \"type\": \"uint256\",\n \"internalType\": \"uint256\"\n },\n {\n \"name\": \"umaMinBond\",\n \"type\": \"uint256\",\n \"internalType\": \"uint256\"\n }\n ],\n \"outputs\": [\n {\n \"name\": \"venueId\",\n \"type\": \"uint256\",\n \"internalType\": \"uint256\"\n }\n ],\n \"stateMutability\": \"nonpayable\"\n },\n {\n \"type\": \"function\",\n \"name\": \"getNextVenueId\",\n \"inputs\": [],\n \"outputs\": [\n {\n \"name\": \"\",\n \"type\": \"uint256\",\n \"internalType\": \"uint256\"\n }\n ],\n \"stateMutability\": \"view\"\n },\n {\n \"type\": \"function\",\n \"name\": \"getVenue\",\n \"inputs\": [\n {\n \"name\": \"venueId\",\n \"type\": \"uint256\",\n \"internalType\": \"uint256\"\n }\n ],\n \"outputs\": [\n {\n \"name\": \"\",\n \"type\": \"tuple\",\n \"internalType\": \"struct VenueData\",\n \"components\": [\n {\n \"name\": \"venueId\",\n \"type\": \"uint256\",\n \"internalType\": \"uint256\"\n },\n {\n \"name\": \"operator\",\n \"type\": \"address\",\n \"internalType\": \"address\"\n },\n {\n \"name\": \"name\",\n \"type\": \"string\",\n \"internalType\": \"string\"\n },\n {\n \"name\": \"metadata\",\n \"type\": \"string\",\n \"internalType\": \"string\"\n },\n {\n \"name\": \"tradingAccessControl\",\n \"type\": \"address\",\n \"internalType\": \"address\"\n },\n {\n \"name\": \"creationAccessControl\",\n \"type\": \"address\",\n \"internalType\": \"address\"\n },\n {\n \"name\": \"feeRecipient\",\n \"type\": \"address\",\n \"internalType\": \"address\"\n },\n {\n \"name\": \"venueFeeBps\",\n \"type\": \"uint256\",\n \"internalType\": \"uint256\"\n },\n {\n \"name\": \"creatorFeeBps\",\n \"type\": \"uint256\",\n \"internalType\": \"uint256\"\n },\n {\n \"name\": \"defaultTickSize\",\n \"type\": \"uint256\",\n \"internalType\": \"uint256\"\n },\n {\n \"name\": \"marketCreationFee\",\n \"type\": \"uint256\",\n \"internalType\": \"uint256\"\n },\n {\n \"name\": \"umaRewardAmount\",\n \"type\": \"uint256\",\n \"internalType\": \"uint256\"\n },\n {\n \"name\": \"umaMinBond\",\n \"type\": \"uint256\",\n \"internalType\": \"uint256\"\n },\n {\n \"name\": \"active\",\n \"type\": \"bool\",\n \"internalType\": \"bool\"\n }\n ]\n }\n ],\n \"stateMutability\": \"view\"\n },\n {\n \"type\": \"function\",\n \"name\": \"getVenueFees\",\n \"inputs\": [\n {\n \"name\": \"venueId\",\n \"type\": \"uint256\",\n \"internalType\": \"uint256\"\n }\n ],\n \"outputs\": [\n {\n \"name\": \"venueFeeBps\",\n \"type\": \"uint256\",\n \"internalType\": \"uint256\"\n },\n {\n \"name\": \"creatorFeeBps\",\n \"type\": \"uint256\",\n \"internalType\": \"uint256\"\n }\n ],\n \"stateMutability\": \"view\"\n },\n {\n \"type\": \"function\",\n \"name\": \"pauseVenue\",\n \"inputs\": [\n {\n \"name\": \"venueId\",\n \"type\": \"uint256\",\n \"internalType\": \"uint256\"\n }\n ],\n \"outputs\": [],\n \"stateMutability\": \"nonpayable\"\n },\n {\n \"type\": \"function\",\n \"name\": \"unpauseVenue\",\n \"inputs\": [\n {\n \"name\": \"venueId\",\n \"type\": \"uint256\",\n \"internalType\": \"uint256\"\n }\n ],\n \"outputs\": [],\n \"stateMutability\": \"nonpayable\"\n },\n {\n \"type\": \"function\",\n \"name\": \"updateVenue\",\n \"inputs\": [\n {\n \"name\": \"venueId\",\n \"type\": \"uint256\",\n \"internalType\": \"uint256\"\n },\n {\n \"name\": \"name\",\n \"type\": \"string\",\n \"internalType\": \"string\"\n },\n {\n \"name\": \"metadata\",\n \"type\": \"string\",\n \"internalType\": \"string\"\n },\n {\n \"name\": \"tradingAccessControl\",\n \"type\": \"address\",\n \"internalType\": \"address\"\n },\n {\n \"name\": \"creationAccessControl\",\n \"type\": \"address\",\n \"internalType\": \"address\"\n },\n {\n \"name\": \"feeRecipient\",\n \"type\": \"address\",\n \"internalType\": \"address\"\n }\n ],\n \"outputs\": [],\n \"stateMutability\": \"nonpayable\"\n },\n {\n \"type\": \"function\",\n \"name\": \"updateVenueFees\",\n \"inputs\": [\n {\n \"name\": \"venueId\",\n \"type\": \"uint256\",\n \"internalType\": \"uint256\"\n },\n {\n \"name\": \"venueFeeBps\",\n \"type\": \"uint256\",\n \"internalType\": \"uint256\"\n },\n {\n \"name\": \"creatorFeeBps\",\n \"type\": \"uint256\",\n \"internalType\": \"uint256\"\n }\n ],\n \"outputs\": [],\n \"stateMutability\": \"nonpayable\"\n },\n {\n \"type\": \"function\",\n \"name\": \"updateVenueMarketCreationFee\",\n \"inputs\": [\n {\n \"name\": \"venueId\",\n \"type\": \"uint256\",\n \"internalType\": \"uint256\"\n },\n {\n \"name\": \"newFee\",\n \"type\": \"uint256\",\n \"internalType\": \"uint256\"\n }\n ],\n \"outputs\": [],\n \"stateMutability\": \"nonpayable\"\n },\n {\n \"type\": \"function\",\n \"name\": \"updateVenueOracleParams\",\n \"inputs\": [\n {\n \"name\": \"venueId\",\n \"type\": \"uint256\",\n \"internalType\": \"uint256\"\n },\n {\n \"name\": \"umaRewardAmount\",\n \"type\": \"uint256\",\n \"internalType\": \"uint256\"\n },\n {\n \"name\": \"umaMinBond\",\n \"type\": \"uint256\",\n \"internalType\": \"uint256\"\n }\n ],\n \"outputs\": [],\n \"stateMutability\": \"nonpayable\"\n },\n {\n \"type\": \"event\",\n \"name\": \"VenueAccessControlUpdated\",\n \"inputs\": [\n {\n \"name\": \"venueId\",\n \"type\": \"uint256\",\n \"indexed\": true,\n \"internalType\": \"uint256\"\n },\n {\n \"name\": \"tradingAccessControl\",\n \"type\": \"address\",\n \"indexed\": false,\n \"internalType\": \"address\"\n },\n {\n \"name\": \"creationAccessControl\",\n \"type\": \"address\",\n \"indexed\": false,\n \"internalType\": \"address\"\n }\n ],\n \"anonymous\": false\n },\n {\n \"type\": \"event\",\n \"name\": \"VenueCreated\",\n \"inputs\": [\n {\n \"name\": \"venueId\",\n \"type\": \"uint256\",\n \"indexed\": true,\n \"internalType\": \"uint256\"\n },\n {\n \"name\": \"operator\",\n \"type\": \"address\",\n \"indexed\": true,\n \"internalType\": \"address\"\n },\n {\n \"name\": \"name\",\n \"type\": \"string\",\n \"indexed\": false,\n \"internalType\": \"string\"\n },\n {\n \"name\": \"metadata\",\n \"type\": \"string\",\n \"indexed\": false,\n \"internalType\": \"string\"\n }\n ],\n \"anonymous\": false\n },\n {\n \"type\": \"event\",\n \"name\": \"VenueFeesUpdated\",\n \"inputs\": [\n {\n \"name\": \"venueId\",\n \"type\": \"uint256\",\n \"indexed\": true,\n \"internalType\": \"uint256\"\n },\n {\n \"name\": \"venueFeeBps\",\n \"type\": \"uint256\",\n \"indexed\": false,\n \"internalType\": \"uint256\"\n },\n {\n \"name\": \"creatorFeeBps\",\n \"type\": \"uint256\",\n \"indexed\": false,\n \"internalType\": \"uint256\"\n }\n ],\n \"anonymous\": false\n },\n {\n \"type\": \"event\",\n \"name\": \"VenueMarketCreationFeeUpdated\",\n \"inputs\": [\n {\n \"name\": \"venueId\",\n \"type\": \"uint256\",\n \"indexed\": true,\n \"internalType\": \"uint256\"\n },\n {\n \"name\": \"newFee\",\n \"type\": \"uint256\",\n \"indexed\": false,\n \"internalType\": \"uint256\"\n }\n ],\n \"anonymous\": false\n },\n {\n \"type\": \"event\",\n \"name\": \"VenueOracleParamsUpdated\",\n \"inputs\": [\n {\n \"name\": \"venueId\",\n \"type\": \"uint256\",\n \"indexed\": true,\n \"internalType\": \"uint256\"\n },\n {\n \"name\": \"umaRewardAmount\",\n \"type\": \"uint256\",\n \"indexed\": false,\n \"internalType\": \"uint256\"\n },\n {\n \"name\": \"umaMinBond\",\n \"type\": \"uint256\",\n \"indexed\": false,\n \"internalType\": \"uint256\"\n }\n ],\n \"anonymous\": false\n },\n {\n \"type\": \"event\",\n \"name\": \"VenuePaused\",\n \"inputs\": [\n {\n \"name\": \"venueId\",\n \"type\": \"uint256\",\n \"indexed\": true,\n \"internalType\": \"uint256\"\n },\n {\n \"name\": \"operator\",\n \"type\": \"address\",\n \"indexed\": true,\n \"internalType\": \"address\"\n }\n ],\n \"anonymous\": false\n },\n {\n \"type\": \"event\",\n \"name\": \"VenueUnpaused\",\n \"inputs\": [\n {\n \"name\": \"venueId\",\n \"type\": \"uint256\",\n \"indexed\": true,\n \"internalType\": \"uint256\"\n },\n {\n \"name\": \"operator\",\n \"type\": \"address\",\n \"indexed\": true,\n \"internalType\": \"address\"\n }\n ],\n \"anonymous\": false\n },\n {\n \"type\": \"event\",\n \"name\": \"VenueUpdated\",\n \"inputs\": [\n {\n \"name\": \"venueId\",\n \"type\": \"uint256\",\n \"indexed\": true,\n \"internalType\": \"uint256\"\n },\n {\n \"name\": \"operator\",\n \"type\": \"address\",\n \"indexed\": true,\n \"internalType\": \"address\"\n },\n {\n \"name\": \"name\",\n \"type\": \"string\",\n \"indexed\": false,\n \"internalType\": \"string\"\n },\n {\n \"name\": \"metadata\",\n \"type\": \"string\",\n \"indexed\": false,\n \"internalType\": \"string\"\n }\n ],\n \"anonymous\": false\n },\n {\n \"type\": \"error\",\n \"name\": \"InvalidCreatorFee\",\n \"inputs\": []\n },\n {\n \"type\": \"error\",\n \"name\": \"InvalidFeeRecipient\",\n \"inputs\": []\n },\n {\n \"type\": \"error\",\n \"name\": \"InvalidTickSize\",\n \"inputs\": []\n },\n {\n \"type\": \"error\",\n \"name\": \"InvalidUmaMinBond\",\n \"inputs\": []\n },\n {\n \"type\": \"error\",\n \"name\": \"InvalidVenueFee\",\n \"inputs\": []\n },\n {\n \"type\": \"error\",\n \"name\": \"InvalidVenueName\",\n \"inputs\": []\n },\n {\n \"type\": \"error\",\n \"name\": \"OnlyVenueOperator\",\n \"inputs\": []\n },\n {\n \"type\": \"error\",\n \"name\": \"ProtocolPaused\",\n \"inputs\": []\n },\n {\n \"type\": \"error\",\n \"name\": \"VenueInactive\",\n \"inputs\": []\n },\n {\n \"type\": \"error\",\n \"name\": \"VenueNotFound\",\n \"inputs\": []\n },\n {\n \"type\": \"error\",\n \"name\": \"VenueSuspended\",\n \"inputs\": []\n }\n]\n","[\n {\n \"type\": \"function\",\n \"name\": \"activatePlaceholder\",\n \"inputs\": [\n {\n \"name\": \"groupId\",\n \"type\": \"uint256\",\n \"internalType\": \"uint256\"\n },\n {\n \"name\": \"marketId\",\n \"type\": \"uint256\",\n \"internalType\": \"uint256\"\n },\n {\n \"name\": \"marketName\",\n \"type\": \"string\",\n \"internalType\": \"string\"\n },\n {\n \"name\": \"marketQuestion\",\n \"type\": \"string\",\n \"internalType\": \"string\"\n }\n ],\n \"outputs\": [],\n \"stateMutability\": \"nonpayable\"\n },\n {\n \"type\": \"function\",\n \"name\": \"addMarket\",\n \"inputs\": [\n {\n \"name\": \"groupId\",\n \"type\": \"uint256\",\n \"internalType\": \"uint256\"\n },\n {\n \"name\": \"marketName\",\n \"type\": \"string\",\n \"internalType\": \"string\"\n },\n {\n \"name\": \"marketQuestion\",\n \"type\": \"string\",\n \"internalType\": \"string\"\n }\n ],\n \"outputs\": [\n {\n \"name\": \"marketId\",\n \"type\": \"uint256\",\n \"internalType\": \"uint256\"\n }\n ],\n \"stateMutability\": \"nonpayable\"\n },\n {\n \"type\": \"function\",\n \"name\": \"addPlaceholderMarkets\",\n \"inputs\": [\n {\n \"name\": \"groupId\",\n \"type\": \"uint256\",\n \"internalType\": \"uint256\"\n },\n {\n \"name\": \"count\",\n \"type\": \"uint256\",\n \"internalType\": \"uint256\"\n }\n ],\n \"outputs\": [\n {\n \"name\": \"marketIds\",\n \"type\": \"uint256[]\",\n \"internalType\": \"uint256[]\"\n }\n ],\n \"stateMutability\": \"nonpayable\"\n },\n {\n \"type\": \"function\",\n \"name\": \"createMarket\",\n \"inputs\": [\n {\n \"name\": \"venueId\",\n \"type\": \"uint256\",\n \"internalType\": \"uint256\"\n },\n {\n \"name\": \"ancillaryData\",\n \"type\": \"bytes\",\n \"internalType\": \"bytes\"\n },\n {\n \"name\": \"outcomes\",\n \"type\": \"string[]\",\n \"internalType\": \"string[]\"\n },\n {\n \"name\": \"tickSize\",\n \"type\": \"uint256\",\n \"internalType\": \"uint256\"\n },\n {\n \"name\": \"collateralToken\",\n \"type\": \"address\",\n \"internalType\": \"address\"\n },\n {\n \"name\": \"additionalReward\",\n \"type\": \"uint256\",\n \"internalType\": \"uint256\"\n },\n {\n \"name\": \"liveness\",\n \"type\": \"uint64\",\n \"internalType\": \"uint64\"\n },\n {\n \"name\": \"tags\",\n \"type\": \"bytes32[]\",\n \"internalType\": \"bytes32[]\"\n }\n ],\n \"outputs\": [\n {\n \"name\": \"marketId\",\n \"type\": \"uint256\",\n \"internalType\": \"uint256\"\n }\n ],\n \"stateMutability\": \"nonpayable\"\n },\n {\n \"type\": \"function\",\n \"name\": \"getMarketOracleData\",\n \"inputs\": [\n {\n \"name\": \"marketId\",\n \"type\": \"uint256\",\n \"internalType\": \"uint256\"\n }\n ],\n \"outputs\": [\n {\n \"name\": \"\",\n \"type\": \"tuple\",\n \"internalType\": \"struct MarketOracleData\",\n \"components\": [\n {\n \"name\": \"questionId\",\n \"type\": \"bytes32\",\n \"internalType\": \"bytes32\"\n },\n {\n \"name\": \"conditionId\",\n \"type\": \"bytes32\",\n \"internalType\": \"bytes32\"\n },\n {\n \"name\": \"outcomeSlotCount\",\n \"type\": \"uint256\",\n \"internalType\": \"uint256\"\n },\n {\n \"name\": \"currency\",\n \"type\": \"address\",\n \"internalType\": \"contract IERC20\"\n },\n {\n \"name\": \"reward\",\n \"type\": \"uint256\",\n \"internalType\": \"uint256\"\n },\n {\n \"name\": \"requiredBond\",\n \"type\": \"uint256\",\n \"internalType\": \"uint256\"\n },\n {\n \"name\": \"liveness\",\n \"type\": \"uint64\",\n \"internalType\": \"uint64\"\n },\n {\n \"name\": \"initialized\",\n \"type\": \"bool\",\n \"internalType\": \"bool\"\n },\n {\n \"name\": \"activeAssertionId\",\n \"type\": \"bytes32\",\n \"internalType\": \"bytes32\"\n },\n {\n \"name\": \"ancillaryData\",\n \"type\": \"bytes\",\n \"internalType\": \"bytes\"\n },\n {\n \"name\": \"outcomes\",\n \"type\": \"string[]\",\n \"internalType\": \"string[]\"\n }\n ]\n }\n ],\n \"stateMutability\": \"view\"\n },\n {\n \"type\": \"function\",\n \"name\": \"getMarketRegistryData\",\n \"inputs\": [\n {\n \"name\": \"marketId\",\n \"type\": \"uint256\",\n \"internalType\": \"uint256\"\n }\n ],\n \"outputs\": [\n {\n \"name\": \"\",\n \"type\": \"tuple\",\n \"internalType\": \"struct MarketRegistryData\",\n \"components\": [\n {\n \"name\": \"marketId\",\n \"type\": \"uint256\",\n \"internalType\": \"uint256\"\n },\n {\n \"name\": \"venueId\",\n \"type\": \"uint256\",\n \"internalType\": \"uint256\"\n },\n {\n \"name\": \"creator\",\n \"type\": \"address\",\n \"internalType\": \"address\"\n },\n {\n \"name\": \"status\",\n \"type\": \"uint8\",\n \"internalType\": \"enum MarketStatus\"\n },\n {\n \"name\": \"groupId\",\n \"type\": \"uint256\",\n \"internalType\": \"uint256\"\n },\n {\n \"name\": \"questionId\",\n \"type\": \"bytes32\",\n \"internalType\": \"bytes32\"\n },\n {\n \"name\": \"oracle\",\n \"type\": \"address\",\n \"internalType\": \"address\"\n },\n {\n \"name\": \"tickSize\",\n \"type\": \"uint256\",\n \"internalType\": \"uint256\"\n },\n {\n \"name\": \"venueFeeBps\",\n \"type\": \"uint256\",\n \"internalType\": \"uint256\"\n },\n {\n \"name\": \"creatorFeeBps\",\n \"type\": \"uint256\",\n \"internalType\": \"uint256\"\n },\n {\n \"name\": \"protocolFeeBps\",\n \"type\": \"uint256\",\n \"internalType\": \"uint256\"\n },\n {\n \"name\": \"protocolFeeRecipient\",\n \"type\": \"address\",\n \"internalType\": \"address\"\n },\n {\n \"name\": \"venueFeeRecipient\",\n \"type\": \"address\",\n \"internalType\": \"address\"\n }\n ]\n }\n ],\n \"stateMutability\": \"view\"\n },\n {\n \"type\": \"function\",\n \"name\": \"getMarketTradingData\",\n \"inputs\": [\n {\n \"name\": \"marketId\",\n \"type\": \"uint256\",\n \"internalType\": \"uint256\"\n }\n ],\n \"outputs\": [\n {\n \"name\": \"\",\n \"type\": \"tuple\",\n \"internalType\": \"struct MarketTradingData\",\n \"components\": [\n {\n \"name\": \"marketId\",\n \"type\": \"uint256\",\n \"internalType\": \"uint256\"\n },\n {\n \"name\": \"tickSize\",\n \"type\": \"uint256\",\n \"internalType\": \"uint256\"\n },\n {\n \"name\": \"collateralToken\",\n \"type\": \"address\",\n \"internalType\": \"contract IERC20\"\n },\n {\n \"name\": \"positionIds\",\n \"type\": \"uint256[2]\",\n \"internalType\": \"uint256[2]\"\n },\n {\n \"name\": \"totalVolume\",\n \"type\": \"uint256[2]\",\n \"internalType\": \"uint256[2]\"\n },\n {\n \"name\": \"lastTradeTick\",\n \"type\": \"uint256[2]\",\n \"internalType\": \"uint256[2]\"\n },\n {\n \"name\": \"active\",\n \"type\": \"bool\",\n \"internalType\": \"bool\"\n }\n ]\n }\n ],\n \"stateMutability\": \"view\"\n },\n {\n \"type\": \"function\",\n \"name\": \"getNextMarketId\",\n \"inputs\": [],\n \"outputs\": [\n {\n \"name\": \"\",\n \"type\": \"uint256\",\n \"internalType\": \"uint256\"\n }\n ],\n \"stateMutability\": \"view\"\n },\n {\n \"type\": \"function\",\n \"name\": \"pauseMarket\",\n \"inputs\": [\n {\n \"name\": \"marketId\",\n \"type\": \"uint256\",\n \"internalType\": \"uint256\"\n }\n ],\n \"outputs\": [],\n \"stateMutability\": \"nonpayable\"\n },\n {\n \"type\": \"function\",\n \"name\": \"unpauseMarket\",\n \"inputs\": [\n {\n \"name\": \"marketId\",\n \"type\": \"uint256\",\n \"internalType\": \"uint256\"\n }\n ],\n \"outputs\": [],\n \"stateMutability\": \"nonpayable\"\n },\n {\n \"type\": \"event\",\n \"name\": \"MarketAddedToGroup\",\n \"inputs\": [\n {\n \"name\": \"groupId\",\n \"type\": \"uint256\",\n \"indexed\": true,\n \"internalType\": \"uint256\"\n },\n {\n \"name\": \"marketId\",\n \"type\": \"uint256\",\n \"indexed\": true,\n \"internalType\": \"uint256\"\n },\n {\n \"name\": \"marketName\",\n \"type\": \"string\",\n \"indexed\": false,\n \"internalType\": \"string\"\n },\n {\n \"name\": \"marketQuestion\",\n \"type\": \"string\",\n \"indexed\": false,\n \"internalType\": \"string\"\n }\n ],\n \"anonymous\": false\n },\n {\n \"type\": \"event\",\n \"name\": \"MarketCreated\",\n \"inputs\": [\n {\n \"name\": \"marketId\",\n \"type\": \"uint256\",\n \"indexed\": true,\n \"internalType\": \"uint256\"\n },\n {\n \"name\": \"venueId\",\n \"type\": \"uint256\",\n \"indexed\": true,\n \"internalType\": \"uint256\"\n },\n {\n \"name\": \"creator\",\n \"type\": \"address\",\n \"indexed\": true,\n \"internalType\": \"address\"\n },\n {\n \"name\": \"conditionId\",\n \"type\": \"bytes32\",\n \"indexed\": false,\n \"internalType\": \"bytes32\"\n },\n {\n \"name\": \"collateralToken\",\n \"type\": \"address\",\n \"indexed\": false,\n \"internalType\": \"address\"\n },\n {\n \"name\": \"tickSize\",\n \"type\": \"uint256\",\n \"indexed\": false,\n \"internalType\": \"uint256\"\n },\n {\n \"name\": \"question\",\n \"type\": \"string\",\n \"indexed\": false,\n \"internalType\": \"string\"\n },\n {\n \"name\": \"outcomes\",\n \"type\": \"string[]\",\n \"indexed\": false,\n \"internalType\": \"string[]\"\n },\n {\n \"name\": \"groupId\",\n \"type\": \"uint256\",\n \"indexed\": false,\n \"internalType\": \"uint256\"\n },\n {\n \"name\": \"tags\",\n \"type\": \"bytes32[]\",\n \"indexed\": false,\n \"internalType\": \"bytes32[]\"\n }\n ],\n \"anonymous\": false\n },\n {\n \"type\": \"event\",\n \"name\": \"MarketCreationFeeCollected\",\n \"inputs\": [\n {\n \"name\": \"venueId\",\n \"type\": \"uint256\",\n \"indexed\": true,\n \"internalType\": \"uint256\"\n },\n {\n \"name\": \"payer\",\n \"type\": \"address\",\n \"indexed\": true,\n \"internalType\": \"address\"\n },\n {\n \"name\": \"protocolShare\",\n \"type\": \"uint256\",\n \"indexed\": false,\n \"internalType\": \"uint256\"\n },\n {\n \"name\": \"venueShare\",\n \"type\": \"uint256\",\n \"indexed\": false,\n \"internalType\": \"uint256\"\n }\n ],\n \"anonymous\": false\n },\n {\n \"type\": \"event\",\n \"name\": \"MarketPausedEvent\",\n \"inputs\": [\n {\n \"name\": \"marketId\",\n \"type\": \"uint256\",\n \"indexed\": true,\n \"internalType\": \"uint256\"\n },\n {\n \"name\": \"venueId\",\n \"type\": \"uint256\",\n \"indexed\": true,\n \"internalType\": \"uint256\"\n },\n {\n \"name\": \"operator\",\n \"type\": \"address\",\n \"indexed\": true,\n \"internalType\": \"address\"\n }\n ],\n \"anonymous\": false\n },\n {\n \"type\": \"event\",\n \"name\": \"MarketUnpausedEvent\",\n \"inputs\": [\n {\n \"name\": \"marketId\",\n \"type\": \"uint256\",\n \"indexed\": true,\n \"internalType\": \"uint256\"\n },\n {\n \"name\": \"venueId\",\n \"type\": \"uint256\",\n \"indexed\": true,\n \"internalType\": \"uint256\"\n },\n {\n \"name\": \"operator\",\n \"type\": \"address\",\n \"indexed\": true,\n \"internalType\": \"address\"\n }\n ],\n \"anonymous\": false\n },\n {\n \"type\": \"event\",\n \"name\": \"PlaceholderActivated\",\n \"inputs\": [\n {\n \"name\": \"groupId\",\n \"type\": \"uint256\",\n \"indexed\": true,\n \"internalType\": \"uint256\"\n },\n {\n \"name\": \"marketId\",\n \"type\": \"uint256\",\n \"indexed\": true,\n \"internalType\": \"uint256\"\n },\n {\n \"name\": \"marketName\",\n \"type\": \"string\",\n \"indexed\": false,\n \"internalType\": \"string\"\n },\n {\n \"name\": \"marketQuestion\",\n \"type\": \"string\",\n \"indexed\": false,\n \"internalType\": \"string\"\n },\n {\n \"name\": \"timestamp\",\n \"type\": \"uint256\",\n \"indexed\": false,\n \"internalType\": \"uint256\"\n }\n ],\n \"anonymous\": false\n },\n {\n \"type\": \"event\",\n \"name\": \"PlaceholderMarketsAdded\",\n \"inputs\": [\n {\n \"name\": \"groupId\",\n \"type\": \"uint256\",\n \"indexed\": true,\n \"internalType\": \"uint256\"\n },\n {\n \"name\": \"marketIds\",\n \"type\": \"uint256[]\",\n \"indexed\": false,\n \"internalType\": \"uint256[]\"\n },\n {\n \"name\": \"count\",\n \"type\": \"uint256\",\n \"indexed\": false,\n \"internalType\": \"uint256\"\n }\n ],\n \"anonymous\": false\n },\n {\n \"type\": \"event\",\n \"name\": \"WrappedCollateralRegistered\",\n \"inputs\": [\n {\n \"name\": \"underlyingCollateral\",\n \"type\": \"address\",\n \"indexed\": true,\n \"internalType\": \"address\"\n },\n {\n \"name\": \"wrappedCollateral\",\n \"type\": \"address\",\n \"indexed\": true,\n \"internalType\": \"address\"\n }\n ],\n \"anonymous\": false\n },\n {\n \"type\": \"error\",\n \"name\": \"CollateralNotWhitelisted\",\n \"inputs\": []\n },\n {\n \"type\": \"error\",\n \"name\": \"CreationAccessDenied\",\n \"inputs\": []\n },\n {\n \"type\": \"error\",\n \"name\": \"GroupNotActive\",\n \"inputs\": []\n },\n {\n \"type\": \"error\",\n \"name\": \"GroupNotDraft\",\n \"inputs\": []\n },\n {\n \"type\": \"error\",\n \"name\": \"InvalidAddress\",\n \"inputs\": []\n },\n {\n \"type\": \"error\",\n \"name\": \"InvalidCollateral\",\n \"inputs\": []\n },\n {\n \"type\": \"error\",\n \"name\": \"InvalidMarketId\",\n \"inputs\": []\n },\n {\n \"type\": \"error\",\n \"name\": \"InvalidMarketId\",\n \"inputs\": []\n },\n {\n \"type\": \"error\",\n \"name\": \"InvalidOutcomesLength\",\n \"inputs\": []\n },\n {\n \"type\": \"error\",\n \"name\": \"InvalidTickSize\",\n \"inputs\": []\n },\n {\n \"type\": \"error\",\n \"name\": \"MarketGroupNotFound\",\n \"inputs\": []\n },\n {\n \"type\": \"error\",\n \"name\": \"MarketNotPlaceholder\",\n \"inputs\": []\n },\n {\n \"type\": \"error\",\n \"name\": \"NotGroupCreator\",\n \"inputs\": []\n },\n {\n \"type\": \"error\",\n \"name\": \"OnlyVenueOperator\",\n \"inputs\": []\n },\n {\n \"type\": \"error\",\n \"name\": \"OracleAlreadyExists\",\n \"inputs\": []\n },\n {\n \"type\": \"error\",\n \"name\": \"OracleCtfNotSet\",\n \"inputs\": []\n },\n {\n \"type\": \"error\",\n \"name\": \"OracleNotInitialized\",\n \"inputs\": []\n },\n {\n \"type\": \"error\",\n \"name\": \"ProtocolPaused\",\n \"inputs\": []\n },\n {\n \"type\": \"error\",\n \"name\": \"RegistryAlreadyExists\",\n \"inputs\": []\n },\n {\n \"type\": \"error\",\n \"name\": \"TooManyMarkets\",\n \"inputs\": []\n },\n {\n \"type\": \"error\",\n \"name\": \"TooManyTags\",\n \"inputs\": []\n },\n {\n \"type\": \"error\",\n \"name\": \"TradingAlreadyExists\",\n \"inputs\": []\n },\n {\n \"type\": \"error\",\n \"name\": \"TransferFromFailed\",\n \"inputs\": []\n },\n {\n \"type\": \"error\",\n \"name\": \"VenueInactive\",\n \"inputs\": []\n },\n {\n \"type\": \"error\",\n \"name\": \"VenueNotFound\",\n \"inputs\": []\n },\n {\n \"type\": \"error\",\n \"name\": \"VenueSuspended\",\n \"inputs\": []\n }\n]\n","[\n {\n \"type\": \"function\",\n \"name\": \"cancelOrder\",\n \"inputs\": [\n {\n \"name\": \"orderId\",\n \"type\": \"uint256\",\n \"internalType\": \"uint256\"\n }\n ],\n \"outputs\": [],\n \"stateMutability\": \"nonpayable\"\n },\n {\n \"type\": \"function\",\n \"name\": \"cancelOrdersOnResolvedMarket\",\n \"inputs\": [\n {\n \"name\": \"marketId\",\n \"type\": \"uint256\",\n \"internalType\": \"uint256\"\n },\n {\n \"name\": \"orderIds\",\n \"type\": \"uint256[]\",\n \"internalType\": \"uint256[]\"\n }\n ],\n \"outputs\": [\n {\n \"name\": \"cancelledCount\",\n \"type\": \"uint256\",\n \"internalType\": \"uint256\"\n }\n ],\n \"stateMutability\": \"nonpayable\"\n },\n {\n \"type\": \"function\",\n \"name\": \"expireOrders\",\n \"inputs\": [\n {\n \"name\": \"marketId\",\n \"type\": \"uint256\",\n \"internalType\": \"uint256\"\n },\n {\n \"name\": \"orderIds\",\n \"type\": \"uint256[]\",\n \"internalType\": \"uint256[]\"\n }\n ],\n \"outputs\": [\n {\n \"name\": \"expiredCount\",\n \"type\": \"uint256\",\n \"internalType\": \"uint256\"\n },\n {\n \"name\": \"rewardEarned\",\n \"type\": \"uint256\",\n \"internalType\": \"uint256\"\n }\n ],\n \"stateMutability\": \"nonpayable\"\n },\n {\n \"type\": \"function\",\n \"name\": \"getOrder\",\n \"inputs\": [\n {\n \"name\": \"orderId\",\n \"type\": \"uint256\",\n \"internalType\": \"uint256\"\n }\n ],\n \"outputs\": [\n {\n \"name\": \"\",\n \"type\": \"tuple\",\n \"internalType\": \"struct Order\",\n \"components\": [\n {\n \"name\": \"id\",\n \"type\": \"uint256\",\n \"internalType\": \"uint256\"\n },\n {\n \"name\": \"owner\",\n \"type\": \"address\",\n \"internalType\": \"address\"\n },\n {\n \"name\": \"qty\",\n \"type\": \"uint256\",\n \"internalType\": \"uint256\"\n },\n {\n \"name\": \"originalQty\",\n \"type\": \"uint256\",\n \"internalType\": \"uint256\"\n },\n {\n \"name\": \"tick\",\n \"type\": \"uint256\",\n \"internalType\": \"uint256\"\n },\n {\n \"name\": \"side\",\n \"type\": \"uint8\",\n \"internalType\": \"enum Side\"\n },\n {\n \"name\": \"outcomeId\",\n \"type\": \"uint256\",\n \"internalType\": \"uint256\"\n },\n {\n \"name\": \"marketId\",\n \"type\": \"uint256\",\n \"internalType\": \"uint256\"\n },\n {\n \"name\": \"expiry\",\n \"type\": \"uint256\",\n \"internalType\": \"uint256\"\n },\n {\n \"name\": \"salt\",\n \"type\": \"uint256\",\n \"internalType\": \"uint256\"\n },\n {\n \"name\": \"nextOrderId\",\n \"type\": \"uint256\",\n \"internalType\": \"uint256\"\n },\n {\n \"name\": \"prevOrderId\",\n \"type\": \"uint256\",\n \"internalType\": \"uint256\"\n }\n ]\n }\n ],\n \"stateMutability\": \"view\"\n },\n {\n \"type\": \"function\",\n \"name\": \"placeOrder\",\n \"inputs\": [\n {\n \"name\": \"marketId\",\n \"type\": \"uint256\",\n \"internalType\": \"uint256\"\n },\n {\n \"name\": \"outcomeId\",\n \"type\": \"uint256\",\n \"internalType\": \"uint256\"\n },\n {\n \"name\": \"side\",\n \"type\": \"uint8\",\n \"internalType\": \"enum Side\"\n },\n {\n \"name\": \"tick\",\n \"type\": \"uint256\",\n \"internalType\": \"uint256\"\n },\n {\n \"name\": \"qty\",\n \"type\": \"uint256\",\n \"internalType\": \"uint256\"\n },\n {\n \"name\": \"expiry\",\n \"type\": \"uint256\",\n \"internalType\": \"uint256\"\n }\n ],\n \"outputs\": [\n {\n \"name\": \"orderId\",\n \"type\": \"uint256\",\n \"internalType\": \"uint256\"\n }\n ],\n \"stateMutability\": \"nonpayable\"\n },\n {\n \"type\": \"event\",\n \"name\": \"OrderCancelled\",\n \"inputs\": [\n {\n \"name\": \"orderId\",\n \"type\": \"uint256\",\n \"indexed\": true,\n \"internalType\": \"uint256\"\n }\n ],\n \"anonymous\": false\n },\n {\n \"type\": \"event\",\n \"name\": \"OrderCreated\",\n \"inputs\": [\n {\n \"name\": \"orderId\",\n \"type\": \"uint256\",\n \"indexed\": true,\n \"internalType\": \"uint256\"\n },\n {\n \"name\": \"owner\",\n \"type\": \"address\",\n \"indexed\": true,\n \"internalType\": \"address\"\n },\n {\n \"name\": \"marketId\",\n \"type\": \"uint256\",\n \"indexed\": false,\n \"internalType\": \"uint256\"\n }\n ],\n \"anonymous\": false\n },\n {\n \"type\": \"event\",\n \"name\": \"OrderDeleted\",\n \"inputs\": [\n {\n \"name\": \"orderId\",\n \"type\": \"uint256\",\n \"indexed\": true,\n \"internalType\": \"uint256\"\n }\n ],\n \"anonymous\": false\n },\n {\n \"type\": \"event\",\n \"name\": \"OrderExpired\",\n \"inputs\": [\n {\n \"name\": \"orderId\",\n \"type\": \"uint256\",\n \"indexed\": true,\n \"internalType\": \"uint256\"\n },\n {\n \"name\": \"owner\",\n \"type\": \"address\",\n \"indexed\": true,\n \"internalType\": \"address\"\n },\n {\n \"name\": \"qty\",\n \"type\": \"uint256\",\n \"indexed\": false,\n \"internalType\": \"uint256\"\n }\n ],\n \"anonymous\": false\n },\n {\n \"type\": \"event\",\n \"name\": \"OrderPlaced\",\n \"inputs\": [\n {\n \"name\": \"orderId\",\n \"type\": \"uint256\",\n \"indexed\": true,\n \"internalType\": \"uint256\"\n },\n {\n \"name\": \"marketId\",\n \"type\": \"uint256\",\n \"indexed\": true,\n \"internalType\": \"uint256\"\n },\n {\n \"name\": \"outcomeId\",\n \"type\": \"uint256\",\n \"indexed\": false,\n \"internalType\": \"uint256\"\n },\n {\n \"name\": \"side\",\n \"type\": \"uint8\",\n \"indexed\": false,\n \"internalType\": \"enum Side\"\n },\n {\n \"name\": \"tick\",\n \"type\": \"uint256\",\n \"indexed\": false,\n \"internalType\": \"uint256\"\n },\n {\n \"name\": \"qty\",\n \"type\": \"uint256\",\n \"indexed\": false,\n \"internalType\": \"uint256\"\n },\n {\n \"name\": \"owner\",\n \"type\": \"address\",\n \"indexed\": true,\n \"internalType\": \"address\"\n }\n ],\n \"anonymous\": false\n },\n {\n \"type\": \"event\",\n \"name\": \"TopOfBookChanged\",\n \"inputs\": [\n {\n \"name\": \"marketId\",\n \"type\": \"uint256\",\n \"indexed\": true,\n \"internalType\": \"uint256\"\n },\n {\n \"name\": \"outcomeId\",\n \"type\": \"uint256\",\n \"indexed\": true,\n \"internalType\": \"uint256\"\n },\n {\n \"name\": \"side\",\n \"type\": \"uint8\",\n \"indexed\": false,\n \"internalType\": \"enum Side\"\n },\n {\n \"name\": \"bestTick\",\n \"type\": \"uint256\",\n \"indexed\": false,\n \"internalType\": \"uint256\"\n }\n ],\n \"anonymous\": false\n },\n {\n \"type\": \"error\",\n \"name\": \"BatchTooLarge\",\n \"inputs\": []\n },\n {\n \"type\": \"error\",\n \"name\": \"BatchTooLarge\",\n \"inputs\": []\n },\n {\n \"type\": \"error\",\n \"name\": \"InvalidOutcome\",\n \"inputs\": []\n },\n {\n \"type\": \"error\",\n \"name\": \"InvalidQuantity\",\n \"inputs\": []\n },\n {\n \"type\": \"error\",\n \"name\": \"InvalidTick\",\n \"inputs\": []\n },\n {\n \"type\": \"error\",\n \"name\": \"MakerErc165CallFailed\",\n \"inputs\": []\n },\n {\n \"type\": \"error\",\n \"name\": \"MakerNotErc1155Receiver\",\n \"inputs\": []\n },\n {\n \"type\": \"error\",\n \"name\": \"MarketNotActive\",\n \"inputs\": []\n },\n {\n \"type\": \"error\",\n \"name\": \"MarketNotResolved\",\n \"inputs\": []\n },\n {\n \"type\": \"error\",\n \"name\": \"MarketPaused\",\n \"inputs\": []\n },\n {\n \"type\": \"error\",\n \"name\": \"OrderExpired\",\n \"inputs\": []\n },\n {\n \"type\": \"error\",\n \"name\": \"OrderTooSmall\",\n \"inputs\": []\n },\n {\n \"type\": \"error\",\n \"name\": \"ProtocolPaused\",\n \"inputs\": []\n },\n {\n \"type\": \"error\",\n \"name\": \"TradingAccessDenied\",\n \"inputs\": []\n },\n {\n \"type\": \"error\",\n \"name\": \"TransferFailed\",\n \"inputs\": []\n },\n {\n \"type\": \"error\",\n \"name\": \"TransferFromFailed\",\n \"inputs\": []\n },\n {\n \"type\": \"error\",\n \"name\": \"VenueInactive\",\n \"inputs\": []\n },\n {\n \"type\": \"error\",\n \"name\": \"VenueNotFound\",\n \"inputs\": []\n },\n {\n \"type\": \"error\",\n \"name\": \"VenueSuspended\",\n \"inputs\": []\n }\n]\n","[\n {\n \"type\": \"function\",\n \"name\": \"matchOrders\",\n \"inputs\": [\n {\n \"name\": \"marketId\",\n \"type\": \"uint256\",\n \"internalType\": \"uint256\"\n },\n {\n \"name\": \"maxSteps\",\n \"type\": \"uint256\",\n \"internalType\": \"uint256\"\n }\n ],\n \"outputs\": [\n {\n \"name\": \"fillCount\",\n \"type\": \"uint256\",\n \"internalType\": \"uint256\"\n }\n ],\n \"stateMutability\": \"nonpayable\"\n },\n {\n \"type\": \"event\",\n \"name\": \"FeesDistributed\",\n \"inputs\": [\n {\n \"name\": \"marketId\",\n \"type\": \"uint256\",\n \"indexed\": true,\n \"internalType\": \"uint256\"\n },\n {\n \"name\": \"fillId\",\n \"type\": \"uint256\",\n \"indexed\": true,\n \"internalType\": \"uint256\"\n },\n {\n \"name\": \"protocolFee\",\n \"type\": \"uint256\",\n \"indexed\": false,\n \"internalType\": \"uint256\"\n },\n {\n \"name\": \"venueNetFee\",\n \"type\": \"uint256\",\n \"indexed\": false,\n \"internalType\": \"uint256\"\n },\n {\n \"name\": \"creatorFee\",\n \"type\": \"uint256\",\n \"indexed\": false,\n \"internalType\": \"uint256\"\n },\n {\n \"name\": \"operatorFee\",\n \"type\": \"uint256\",\n \"indexed\": false,\n \"internalType\": \"uint256\"\n },\n {\n \"name\": \"totalFee\",\n \"type\": \"uint256\",\n \"indexed\": false,\n \"internalType\": \"uint256\"\n }\n ],\n \"anonymous\": false\n },\n {\n \"type\": \"event\",\n \"name\": \"MergeFill\",\n \"inputs\": [\n {\n \"name\": \"marketId\",\n \"type\": \"uint256\",\n \"indexed\": true,\n \"internalType\": \"uint256\"\n },\n {\n \"name\": \"qty\",\n \"type\": \"uint256\",\n \"indexed\": false,\n \"internalType\": \"uint256\"\n },\n {\n \"name\": \"yesOrderId\",\n \"type\": \"uint256\",\n \"indexed\": false,\n \"internalType\": \"uint256\"\n },\n {\n \"name\": \"noOrderId\",\n \"type\": \"uint256\",\n \"indexed\": false,\n \"internalType\": \"uint256\"\n },\n {\n \"name\": \"yesTick\",\n \"type\": \"uint256\",\n \"indexed\": false,\n \"internalType\": \"uint256\"\n },\n {\n \"name\": \"noTick\",\n \"type\": \"uint256\",\n \"indexed\": false,\n \"internalType\": \"uint256\"\n }\n ],\n \"anonymous\": false\n },\n {\n \"type\": \"event\",\n \"name\": \"MintFill\",\n \"inputs\": [\n {\n \"name\": \"marketId\",\n \"type\": \"uint256\",\n \"indexed\": true,\n \"internalType\": \"uint256\"\n },\n {\n \"name\": \"qty\",\n \"type\": \"uint256\",\n \"indexed\": false,\n \"internalType\": \"uint256\"\n },\n {\n \"name\": \"yesOrderId\",\n \"type\": \"uint256\",\n \"indexed\": false,\n \"internalType\": \"uint256\"\n },\n {\n \"name\": \"noOrderId\",\n \"type\": \"uint256\",\n \"indexed\": false,\n \"internalType\": \"uint256\"\n },\n {\n \"name\": \"yesTick\",\n \"type\": \"uint256\",\n \"indexed\": false,\n \"internalType\": \"uint256\"\n },\n {\n \"name\": \"noTick\",\n \"type\": \"uint256\",\n \"indexed\": false,\n \"internalType\": \"uint256\"\n }\n ],\n \"anonymous\": false\n },\n {\n \"type\": \"event\",\n \"name\": \"OrderAutoCancelled\",\n \"inputs\": [\n {\n \"name\": \"orderId\",\n \"type\": \"uint256\",\n \"indexed\": true,\n \"internalType\": \"uint256\"\n },\n {\n \"name\": \"refundedCollateral\",\n \"type\": \"uint256\",\n \"indexed\": false,\n \"internalType\": \"uint256\"\n }\n ],\n \"anonymous\": false\n },\n {\n \"type\": \"event\",\n \"name\": \"OrderDeleted\",\n \"inputs\": [\n {\n \"name\": \"orderId\",\n \"type\": \"uint256\",\n \"indexed\": true,\n \"internalType\": \"uint256\"\n }\n ],\n \"anonymous\": false\n },\n {\n \"type\": \"event\",\n \"name\": \"OrderExpired\",\n \"inputs\": [\n {\n \"name\": \"orderId\",\n \"type\": \"uint256\",\n \"indexed\": true,\n \"internalType\": \"uint256\"\n },\n {\n \"name\": \"owner\",\n \"type\": \"address\",\n \"indexed\": true,\n \"internalType\": \"address\"\n },\n {\n \"name\": \"qty\",\n \"type\": \"uint256\",\n \"indexed\": false,\n \"internalType\": \"uint256\"\n }\n ],\n \"anonymous\": false\n },\n {\n \"type\": \"event\",\n \"name\": \"OrderFilled\",\n \"inputs\": [\n {\n \"name\": \"buyOrderId\",\n \"type\": \"uint256\",\n \"indexed\": true,\n \"internalType\": \"uint256\"\n },\n {\n \"name\": \"sellOrderId\",\n \"type\": \"uint256\",\n \"indexed\": true,\n \"internalType\": \"uint256\"\n },\n {\n \"name\": \"marketId\",\n \"type\": \"uint256\",\n \"indexed\": true,\n \"internalType\": \"uint256\"\n },\n {\n \"name\": \"outcomeId\",\n \"type\": \"uint256\",\n \"indexed\": false,\n \"internalType\": \"uint256\"\n },\n {\n \"name\": \"qty\",\n \"type\": \"uint256\",\n \"indexed\": false,\n \"internalType\": \"uint256\"\n },\n {\n \"name\": \"priceTick\",\n \"type\": \"uint256\",\n \"indexed\": false,\n \"internalType\": \"uint256\"\n }\n ],\n \"anonymous\": false\n },\n {\n \"type\": \"event\",\n \"name\": \"SurplusRouted\",\n \"inputs\": [\n {\n \"name\": \"marketId\",\n \"type\": \"uint256\",\n \"indexed\": true,\n \"internalType\": \"uint256\"\n },\n {\n \"name\": \"fillId\",\n \"type\": \"uint256\",\n \"indexed\": true,\n \"internalType\": \"uint256\"\n },\n {\n \"name\": \"amount\",\n \"type\": \"uint256\",\n \"indexed\": false,\n \"internalType\": \"uint256\"\n }\n ],\n \"anonymous\": false\n },\n {\n \"type\": \"event\",\n \"name\": \"SurplusRouted\",\n \"inputs\": [\n {\n \"name\": \"marketId\",\n \"type\": \"uint256\",\n \"indexed\": true,\n \"internalType\": \"uint256\"\n },\n {\n \"name\": \"fillId\",\n \"type\": \"uint256\",\n \"indexed\": true,\n \"internalType\": \"uint256\"\n },\n {\n \"name\": \"amount\",\n \"type\": \"uint256\",\n \"indexed\": false,\n \"internalType\": \"uint256\"\n }\n ],\n \"anonymous\": false\n },\n {\n \"type\": \"event\",\n \"name\": \"TopOfBookChanged\",\n \"inputs\": [\n {\n \"name\": \"marketId\",\n \"type\": \"uint256\",\n \"indexed\": true,\n \"internalType\": \"uint256\"\n },\n {\n \"name\": \"outcomeId\",\n \"type\": \"uint256\",\n \"indexed\": true,\n \"internalType\": \"uint256\"\n },\n {\n \"name\": \"side\",\n \"type\": \"uint8\",\n \"indexed\": false,\n \"internalType\": \"enum Side\"\n },\n {\n \"name\": \"bestTick\",\n \"type\": \"uint256\",\n \"indexed\": false,\n \"internalType\": \"uint256\"\n }\n ],\n \"anonymous\": false\n },\n {\n \"type\": \"event\",\n \"name\": \"TradeExecuted\",\n \"inputs\": [\n {\n \"name\": \"marketId\",\n \"type\": \"uint256\",\n \"indexed\": true,\n \"internalType\": \"uint256\"\n },\n {\n \"name\": \"outcomeId\",\n \"type\": \"uint256\",\n \"indexed\": true,\n \"internalType\": \"uint256\"\n },\n {\n \"name\": \"fillId\",\n \"type\": \"uint256\",\n \"indexed\": true,\n \"internalType\": \"uint256\"\n },\n {\n \"name\": \"priceTick\",\n \"type\": \"uint256\",\n \"indexed\": false,\n \"internalType\": \"uint256\"\n },\n {\n \"name\": \"quantity\",\n \"type\": \"uint256\",\n \"indexed\": false,\n \"internalType\": \"uint256\"\n },\n {\n \"name\": \"cumulativeVolume\",\n \"type\": \"uint256\",\n \"indexed\": false,\n \"internalType\": \"uint256\"\n },\n {\n \"name\": \"timestamp\",\n \"type\": \"uint256\",\n \"indexed\": false,\n \"internalType\": \"uint256\"\n }\n ],\n \"anonymous\": false\n },\n {\n \"type\": \"event\",\n \"name\": \"TradeExecuted\",\n \"inputs\": [\n {\n \"name\": \"marketId\",\n \"type\": \"uint256\",\n \"indexed\": true,\n \"internalType\": \"uint256\"\n },\n {\n \"name\": \"outcomeId\",\n \"type\": \"uint256\",\n \"indexed\": true,\n \"internalType\": \"uint256\"\n },\n {\n \"name\": \"fillId\",\n \"type\": \"uint256\",\n \"indexed\": true,\n \"internalType\": \"uint256\"\n },\n {\n \"name\": \"priceTick\",\n \"type\": \"uint256\",\n \"indexed\": false,\n \"internalType\": \"uint256\"\n },\n {\n \"name\": \"quantity\",\n \"type\": \"uint256\",\n \"indexed\": false,\n \"internalType\": \"uint256\"\n },\n {\n \"name\": \"cumulativeVolume\",\n \"type\": \"uint256\",\n \"indexed\": false,\n \"internalType\": \"uint256\"\n },\n {\n \"name\": \"timestamp\",\n \"type\": \"uint256\",\n \"indexed\": false,\n \"internalType\": \"uint256\"\n }\n ],\n \"anonymous\": false\n },\n {\n \"type\": \"error\",\n \"name\": \"ApproveFailed\",\n \"inputs\": []\n },\n {\n \"type\": \"error\",\n \"name\": \"MarketNotActive\",\n \"inputs\": []\n },\n {\n \"type\": \"error\",\n \"name\": \"MarketPaused\",\n \"inputs\": []\n },\n {\n \"type\": \"error\",\n \"name\": \"ProtocolPaused\",\n \"inputs\": []\n },\n {\n \"type\": \"error\",\n \"name\": \"TransferFailed\",\n \"inputs\": []\n },\n {\n \"type\": \"error\",\n \"name\": \"VenueInactive\",\n \"inputs\": []\n },\n {\n \"type\": \"error\",\n \"name\": \"VenueNotFound\",\n \"inputs\": []\n },\n {\n \"type\": \"error\",\n \"name\": \"VenueSuspended\",\n \"inputs\": []\n }\n]\n","[\n {\n \"type\": \"function\",\n \"name\": \"canMatchOrders\",\n \"inputs\": [\n {\n \"name\": \"marketId\",\n \"type\": \"uint256\",\n \"internalType\": \"uint256\"\n }\n ],\n \"outputs\": [\n {\n \"name\": \"\",\n \"type\": \"tuple\",\n \"internalType\": \"struct MatchPreview\",\n \"components\": [\n {\n \"name\": \"normalYesCross\",\n \"type\": \"bool\",\n \"internalType\": \"bool\"\n },\n {\n \"name\": \"normalNoCross\",\n \"type\": \"bool\",\n \"internalType\": \"bool\"\n },\n {\n \"name\": \"mintFeasible\",\n \"type\": \"bool\",\n \"internalType\": \"bool\"\n },\n {\n \"name\": \"mergeFeasible\",\n \"type\": \"bool\",\n \"internalType\": \"bool\"\n },\n {\n \"name\": \"anyMatchable\",\n \"type\": \"bool\",\n \"internalType\": \"bool\"\n },\n {\n \"name\": \"yesBestBid\",\n \"type\": \"uint256\",\n \"internalType\": \"uint256\"\n },\n {\n \"name\": \"yesBestAsk\",\n \"type\": \"uint256\",\n \"internalType\": \"uint256\"\n },\n {\n \"name\": \"noBestBid\",\n \"type\": \"uint256\",\n \"internalType\": \"uint256\"\n },\n {\n \"name\": \"noBestAsk\",\n \"type\": \"uint256\",\n \"internalType\": \"uint256\"\n },\n {\n \"name\": \"yesBidHeadExpired\",\n \"type\": \"bool\",\n \"internalType\": \"bool\"\n },\n {\n \"name\": \"yesAskHeadExpired\",\n \"type\": \"bool\",\n \"internalType\": \"bool\"\n },\n {\n \"name\": \"noBidHeadExpired\",\n \"type\": \"bool\",\n \"internalType\": \"bool\"\n },\n {\n \"name\": \"noAskHeadExpired\",\n \"type\": \"bool\",\n \"internalType\": \"bool\"\n }\n ]\n }\n ],\n \"stateMutability\": \"view\"\n },\n {\n \"type\": \"function\",\n \"name\": \"getFill\",\n \"inputs\": [\n {\n \"name\": \"fillId\",\n \"type\": \"uint256\",\n \"internalType\": \"uint256\"\n }\n ],\n \"outputs\": [\n {\n \"name\": \"\",\n \"type\": \"tuple\",\n \"internalType\": \"struct Fill\",\n \"components\": [\n {\n \"name\": \"id\",\n \"type\": \"uint256\",\n \"internalType\": \"uint256\"\n },\n {\n \"name\": \"marketId\",\n \"type\": \"uint256\",\n \"internalType\": \"uint256\"\n },\n {\n \"name\": \"path\",\n \"type\": \"uint8\",\n \"internalType\": \"enum SettlementPath\"\n },\n {\n \"name\": \"order1Id\",\n \"type\": \"uint256\",\n \"internalType\": \"uint256\"\n },\n {\n \"name\": \"order2Id\",\n \"type\": \"uint256\",\n \"internalType\": \"uint256\"\n },\n {\n \"name\": \"qty\",\n \"type\": \"uint256\",\n \"internalType\": \"uint256\"\n },\n {\n \"name\": \"priceTick\",\n \"type\": \"uint256\",\n \"internalType\": \"uint256\"\n },\n {\n \"name\": \"operator\",\n \"type\": \"address\",\n \"internalType\": \"address\"\n }\n ]\n }\n ],\n \"stateMutability\": \"view\"\n },\n {\n \"type\": \"function\",\n \"name\": \"getMarkPrice\",\n \"inputs\": [\n {\n \"name\": \"marketId\",\n \"type\": \"uint256\",\n \"internalType\": \"uint256\"\n },\n {\n \"name\": \"outcomeId\",\n \"type\": \"uint256\",\n \"internalType\": \"uint256\"\n }\n ],\n \"outputs\": [\n {\n \"name\": \"priceTick\",\n \"type\": \"uint256\",\n \"internalType\": \"uint256\"\n },\n {\n \"name\": \"isDefined\",\n \"type\": \"bool\",\n \"internalType\": \"bool\"\n }\n ],\n \"stateMutability\": \"view\"\n },\n {\n \"type\": \"function\",\n \"name\": \"getNextFillId\",\n \"inputs\": [],\n \"outputs\": [\n {\n \"name\": \"\",\n \"type\": \"uint256\",\n \"internalType\": \"uint256\"\n }\n ],\n \"stateMutability\": \"view\"\n },\n {\n \"type\": \"function\",\n \"name\": \"getTickLevel\",\n \"inputs\": [\n {\n \"name\": \"marketId\",\n \"type\": \"uint256\",\n \"internalType\": \"uint256\"\n },\n {\n \"name\": \"outcomeId\",\n \"type\": \"uint256\",\n \"internalType\": \"uint256\"\n },\n {\n \"name\": \"side\",\n \"type\": \"uint8\",\n \"internalType\": \"enum Side\"\n },\n {\n \"name\": \"tick\",\n \"type\": \"uint256\",\n \"internalType\": \"uint256\"\n }\n ],\n \"outputs\": [\n {\n \"name\": \"\",\n \"type\": \"tuple\",\n \"internalType\": \"struct TickLevel\",\n \"components\": [\n {\n \"name\": \"headOrderId\",\n \"type\": \"uint256\",\n \"internalType\": \"uint256\"\n },\n {\n \"name\": \"tailOrderId\",\n \"type\": \"uint256\",\n \"internalType\": \"uint256\"\n },\n {\n \"name\": \"depth\",\n \"type\": \"uint256\",\n \"internalType\": \"uint256\"\n },\n {\n \"name\": \"totalQty\",\n \"type\": \"uint256\",\n \"internalType\": \"uint256\"\n }\n ]\n }\n ],\n \"stateMutability\": \"view\"\n },\n {\n \"type\": \"function\",\n \"name\": \"getTopOfBook\",\n \"inputs\": [\n {\n \"name\": \"marketId\",\n \"type\": \"uint256\",\n \"internalType\": \"uint256\"\n },\n {\n \"name\": \"outcomeId\",\n \"type\": \"uint256\",\n \"internalType\": \"uint256\"\n },\n {\n \"name\": \"side\",\n \"type\": \"uint8\",\n \"internalType\": \"enum Side\"\n }\n ],\n \"outputs\": [\n {\n \"name\": \"\",\n \"type\": \"uint256\",\n \"internalType\": \"uint256\"\n }\n ],\n \"stateMutability\": \"view\"\n }\n]\n","[\n {\n \"type\": \"function\",\n \"name\": \"activateMarketGroup\",\n \"inputs\": [\n {\n \"name\": \"groupId\",\n \"type\": \"uint256\",\n \"internalType\": \"uint256\"\n }\n ],\n \"outputs\": [],\n \"stateMutability\": \"nonpayable\"\n },\n {\n \"type\": \"function\",\n \"name\": \"createMarketGroup\",\n \"inputs\": [\n {\n \"name\": \"venueId\",\n \"type\": \"uint256\",\n \"internalType\": \"uint256\"\n },\n {\n \"name\": \"question\",\n \"type\": \"string\",\n \"internalType\": \"string\"\n },\n {\n \"name\": \"description\",\n \"type\": \"string\",\n \"internalType\": \"string\"\n },\n {\n \"name\": \"collateralToken\",\n \"type\": \"address\",\n \"internalType\": \"address\"\n },\n {\n \"name\": \"tickSize\",\n \"type\": \"uint256\",\n \"internalType\": \"uint256\"\n },\n {\n \"name\": \"additionalReward\",\n \"type\": \"uint256\",\n \"internalType\": \"uint256\"\n },\n {\n \"name\": \"liveness\",\n \"type\": \"uint64\",\n \"internalType\": \"uint64\"\n },\n {\n \"name\": \"tags\",\n \"type\": \"bytes32[]\",\n \"internalType\": \"bytes32[]\"\n }\n ],\n \"outputs\": [\n {\n \"name\": \"groupId\",\n \"type\": \"uint256\",\n \"internalType\": \"uint256\"\n }\n ],\n \"stateMutability\": \"nonpayable\"\n },\n {\n \"type\": \"function\",\n \"name\": \"getGroupMarketIds\",\n \"inputs\": [\n {\n \"name\": \"groupId\",\n \"type\": \"uint256\",\n \"internalType\": \"uint256\"\n }\n ],\n \"outputs\": [\n {\n \"name\": \"\",\n \"type\": \"uint256[]\",\n \"internalType\": \"uint256[]\"\n }\n ],\n \"stateMutability\": \"view\"\n },\n {\n \"type\": \"function\",\n \"name\": \"getMarketGroup\",\n \"inputs\": [\n {\n \"name\": \"groupId\",\n \"type\": \"uint256\",\n \"internalType\": \"uint256\"\n }\n ],\n \"outputs\": [\n {\n \"name\": \"\",\n \"type\": \"tuple\",\n \"internalType\": \"struct MarketGroupData\",\n \"components\": [\n {\n \"name\": \"groupId\",\n \"type\": \"uint256\",\n \"internalType\": \"uint256\"\n },\n {\n \"name\": \"marketIds\",\n \"type\": \"uint256[]\",\n \"internalType\": \"uint256[]\"\n },\n {\n \"name\": \"totalMarkets\",\n \"type\": \"uint256\",\n \"internalType\": \"uint256\"\n },\n {\n \"name\": \"question\",\n \"type\": \"string\",\n \"internalType\": \"string\"\n },\n {\n \"name\": \"description\",\n \"type\": \"string\",\n \"internalType\": \"string\"\n },\n {\n \"name\": \"status\",\n \"type\": \"uint8\",\n \"internalType\": \"enum MarketStatus\"\n },\n {\n \"name\": \"createdAt\",\n \"type\": \"uint256\",\n \"internalType\": \"uint256\"\n },\n {\n \"name\": \"resolvedMarketId\",\n \"type\": \"uint256\",\n \"internalType\": \"uint256\"\n },\n {\n \"name\": \"creator\",\n \"type\": \"address\",\n \"internalType\": \"address\"\n },\n {\n \"name\": \"venueId\",\n \"type\": \"uint256\",\n \"internalType\": \"uint256\"\n },\n {\n \"name\": \"collateralToken\",\n \"type\": \"address\",\n \"internalType\": \"contract IERC20\"\n },\n {\n \"name\": \"tickSize\",\n \"type\": \"uint256\",\n \"internalType\": \"uint256\"\n },\n {\n \"name\": \"additionalReward\",\n \"type\": \"uint256\",\n \"internalType\": \"uint256\"\n },\n {\n \"name\": \"liveness\",\n \"type\": \"uint64\",\n \"internalType\": \"uint64\"\n },\n {\n \"name\": \"reward\",\n \"type\": \"uint256\",\n \"internalType\": \"uint256\"\n }\n ]\n }\n ],\n \"stateMutability\": \"view\"\n },\n {\n \"type\": \"function\",\n \"name\": \"getMarketGroupItem\",\n \"inputs\": [\n {\n \"name\": \"marketId\",\n \"type\": \"uint256\",\n \"internalType\": \"uint256\"\n }\n ],\n \"outputs\": [\n {\n \"name\": \"\",\n \"type\": \"tuple\",\n \"internalType\": \"struct MarketGroupItem\",\n \"components\": [\n {\n \"name\": \"isPlaceholder\",\n \"type\": \"bool\",\n \"internalType\": \"bool\"\n },\n {\n \"name\": \"marketName\",\n \"type\": \"string\",\n \"internalType\": \"string\"\n }\n ]\n }\n ],\n \"stateMutability\": \"view\"\n },\n {\n \"type\": \"function\",\n \"name\": \"getNextGroupId\",\n \"inputs\": [],\n \"outputs\": [\n {\n \"name\": \"\",\n \"type\": \"uint256\",\n \"internalType\": \"uint256\"\n }\n ],\n \"stateMutability\": \"view\"\n },\n {\n \"type\": \"event\",\n \"name\": \"MarketCreationFeeCollected\",\n \"inputs\": [\n {\n \"name\": \"venueId\",\n \"type\": \"uint256\",\n \"indexed\": true,\n \"internalType\": \"uint256\"\n },\n {\n \"name\": \"payer\",\n \"type\": \"address\",\n \"indexed\": true,\n \"internalType\": \"address\"\n },\n {\n \"name\": \"protocolShare\",\n \"type\": \"uint256\",\n \"indexed\": false,\n \"internalType\": \"uint256\"\n },\n {\n \"name\": \"venueShare\",\n \"type\": \"uint256\",\n \"indexed\": false,\n \"internalType\": \"uint256\"\n }\n ],\n \"anonymous\": false\n },\n {\n \"type\": \"event\",\n \"name\": \"MarketGroupActivated\",\n \"inputs\": [\n {\n \"name\": \"groupId\",\n \"type\": \"uint256\",\n \"indexed\": true,\n \"internalType\": \"uint256\"\n },\n {\n \"name\": \"marketCount\",\n \"type\": \"uint256\",\n \"indexed\": false,\n \"internalType\": \"uint256\"\n },\n {\n \"name\": \"timestamp\",\n \"type\": \"uint256\",\n \"indexed\": false,\n \"internalType\": \"uint256\"\n }\n ],\n \"anonymous\": false\n },\n {\n \"type\": \"event\",\n \"name\": \"MarketGroupCreated\",\n \"inputs\": [\n {\n \"name\": \"groupId\",\n \"type\": \"uint256\",\n \"indexed\": true,\n \"internalType\": \"uint256\"\n },\n {\n \"name\": \"venueId\",\n \"type\": \"uint256\",\n \"indexed\": true,\n \"internalType\": \"uint256\"\n },\n {\n \"name\": \"creator\",\n \"type\": \"address\",\n \"indexed\": true,\n \"internalType\": \"address\"\n },\n {\n \"name\": \"question\",\n \"type\": \"string\",\n \"indexed\": false,\n \"internalType\": \"string\"\n },\n {\n \"name\": \"timestamp\",\n \"type\": \"uint256\",\n \"indexed\": false,\n \"internalType\": \"uint256\"\n },\n {\n \"name\": \"tags\",\n \"type\": \"bytes32[]\",\n \"indexed\": false,\n \"internalType\": \"bytes32[]\"\n },\n {\n \"name\": \"reward\",\n \"type\": \"uint256\",\n \"indexed\": false,\n \"internalType\": \"uint256\"\n }\n ],\n \"anonymous\": false\n },\n {\n \"type\": \"error\",\n \"name\": \"CollateralNotWhitelisted\",\n \"inputs\": []\n },\n {\n \"type\": \"error\",\n \"name\": \"CreationAccessDenied\",\n \"inputs\": []\n },\n {\n \"type\": \"error\",\n \"name\": \"GroupNotDraft\",\n \"inputs\": []\n },\n {\n \"type\": \"error\",\n \"name\": \"InsufficientMarkets\",\n \"inputs\": []\n },\n {\n \"type\": \"error\",\n \"name\": \"InvalidQuestion\",\n \"inputs\": []\n },\n {\n \"type\": \"error\",\n \"name\": \"InvalidTickSize\",\n \"inputs\": []\n },\n {\n \"type\": \"error\",\n \"name\": \"MarketGroupNotFound\",\n \"inputs\": []\n },\n {\n \"type\": \"error\",\n \"name\": \"NotGroupCreator\",\n \"inputs\": []\n },\n {\n \"type\": \"error\",\n \"name\": \"ProtocolPaused\",\n \"inputs\": []\n },\n {\n \"type\": \"error\",\n \"name\": \"TooManyTags\",\n \"inputs\": []\n },\n {\n \"type\": \"error\",\n \"name\": \"TransferFromFailed\",\n \"inputs\": []\n },\n {\n \"type\": \"error\",\n \"name\": \"VenueInactive\",\n \"inputs\": []\n },\n {\n \"type\": \"error\",\n \"name\": \"VenueNotFound\",\n \"inputs\": []\n },\n {\n \"type\": \"error\",\n \"name\": \"VenueSuspended\",\n \"inputs\": []\n }\n]\n","[\n {\n \"type\": \"function\",\n \"name\": \"placeMarketOrder\",\n \"inputs\": [\n {\n \"name\": \"marketId\",\n \"type\": \"uint256\",\n \"internalType\": \"uint256\"\n },\n {\n \"name\": \"outcomeId\",\n \"type\": \"uint256\",\n \"internalType\": \"uint256\"\n },\n {\n \"name\": \"collateralAmount\",\n \"type\": \"uint256\",\n \"internalType\": \"uint256\"\n },\n {\n \"name\": \"maxPriceTick\",\n \"type\": \"uint256\",\n \"internalType\": \"uint256\"\n },\n {\n \"name\": \"orderType\",\n \"type\": \"uint8\",\n \"internalType\": \"enum MarketOrderType\"\n }\n ],\n \"outputs\": [\n {\n \"name\": \"result\",\n \"type\": \"tuple\",\n \"internalType\": \"struct MarketBuyResult\",\n \"components\": [\n {\n \"name\": \"tokensReceived\",\n \"type\": \"uint256\",\n \"internalType\": \"uint256\"\n },\n {\n \"name\": \"avgPrice\",\n \"type\": \"uint256\",\n \"internalType\": \"uint256\"\n },\n {\n \"name\": \"collateralSpent\",\n \"type\": \"uint256\",\n \"internalType\": \"uint256\"\n },\n {\n \"name\": \"unusedCollateral\",\n \"type\": \"uint256\",\n \"internalType\": \"uint256\"\n }\n ]\n }\n ],\n \"stateMutability\": \"nonpayable\"\n },\n {\n \"type\": \"function\",\n \"name\": \"placeMarketSell\",\n \"inputs\": [\n {\n \"name\": \"marketId\",\n \"type\": \"uint256\",\n \"internalType\": \"uint256\"\n },\n {\n \"name\": \"outcomeId\",\n \"type\": \"uint256\",\n \"internalType\": \"uint256\"\n },\n {\n \"name\": \"tokenAmount\",\n \"type\": \"uint256\",\n \"internalType\": \"uint256\"\n },\n {\n \"name\": \"minPriceTick\",\n \"type\": \"uint256\",\n \"internalType\": \"uint256\"\n },\n {\n \"name\": \"orderType\",\n \"type\": \"uint8\",\n \"internalType\": \"enum MarketOrderType\"\n }\n ],\n \"outputs\": [\n {\n \"name\": \"result\",\n \"type\": \"tuple\",\n \"internalType\": \"struct MarketSellResult\",\n \"components\": [\n {\n \"name\": \"tokensSold\",\n \"type\": \"uint256\",\n \"internalType\": \"uint256\"\n },\n {\n \"name\": \"avgPrice\",\n \"type\": \"uint256\",\n \"internalType\": \"uint256\"\n },\n {\n \"name\": \"collateralReceived\",\n \"type\": \"uint256\",\n \"internalType\": \"uint256\"\n },\n {\n \"name\": \"unsoldTokens\",\n \"type\": \"uint256\",\n \"internalType\": \"uint256\"\n }\n ]\n }\n ],\n \"stateMutability\": \"nonpayable\"\n },\n {\n \"type\": \"event\",\n \"name\": \"FeesDistributed\",\n \"inputs\": [\n {\n \"name\": \"marketId\",\n \"type\": \"uint256\",\n \"indexed\": true,\n \"internalType\": \"uint256\"\n },\n {\n \"name\": \"fillId\",\n \"type\": \"uint256\",\n \"indexed\": true,\n \"internalType\": \"uint256\"\n },\n {\n \"name\": \"protocolFee\",\n \"type\": \"uint256\",\n \"indexed\": false,\n \"internalType\": \"uint256\"\n },\n {\n \"name\": \"venueNetFee\",\n \"type\": \"uint256\",\n \"indexed\": false,\n \"internalType\": \"uint256\"\n },\n {\n \"name\": \"creatorFee\",\n \"type\": \"uint256\",\n \"indexed\": false,\n \"internalType\": \"uint256\"\n },\n {\n \"name\": \"operatorFee\",\n \"type\": \"uint256\",\n \"indexed\": false,\n \"internalType\": \"uint256\"\n },\n {\n \"name\": \"totalFee\",\n \"type\": \"uint256\",\n \"indexed\": false,\n \"internalType\": \"uint256\"\n }\n ],\n \"anonymous\": false\n },\n {\n \"type\": \"event\",\n \"name\": \"MarketOrderExecuted\",\n \"inputs\": [\n {\n \"name\": \"buyer\",\n \"type\": \"address\",\n \"indexed\": true,\n \"internalType\": \"address\"\n },\n {\n \"name\": \"marketId\",\n \"type\": \"uint256\",\n \"indexed\": true,\n \"internalType\": \"uint256\"\n },\n {\n \"name\": \"outcomeId\",\n \"type\": \"uint256\",\n \"indexed\": false,\n \"internalType\": \"uint256\"\n },\n {\n \"name\": \"collateralSpent\",\n \"type\": \"uint256\",\n \"indexed\": false,\n \"internalType\": \"uint256\"\n },\n {\n \"name\": \"tokensReceived\",\n \"type\": \"uint256\",\n \"indexed\": false,\n \"internalType\": \"uint256\"\n },\n {\n \"name\": \"avgPrice\",\n \"type\": \"uint256\",\n \"indexed\": false,\n \"internalType\": \"uint256\"\n },\n {\n \"name\": \"unusedCollateral\",\n \"type\": \"uint256\",\n \"indexed\": false,\n \"internalType\": \"uint256\"\n }\n ],\n \"anonymous\": false\n },\n {\n \"type\": \"event\",\n \"name\": \"MarketSellExecuted\",\n \"inputs\": [\n {\n \"name\": \"seller\",\n \"type\": \"address\",\n \"indexed\": true,\n \"internalType\": \"address\"\n },\n {\n \"name\": \"marketId\",\n \"type\": \"uint256\",\n \"indexed\": true,\n \"internalType\": \"uint256\"\n },\n {\n \"name\": \"outcomeId\",\n \"type\": \"uint256\",\n \"indexed\": false,\n \"internalType\": \"uint256\"\n },\n {\n \"name\": \"tokensSold\",\n \"type\": \"uint256\",\n \"indexed\": false,\n \"internalType\": \"uint256\"\n },\n {\n \"name\": \"collateralReceived\",\n \"type\": \"uint256\",\n \"indexed\": false,\n \"internalType\": \"uint256\"\n },\n {\n \"name\": \"avgPrice\",\n \"type\": \"uint256\",\n \"indexed\": false,\n \"internalType\": \"uint256\"\n },\n {\n \"name\": \"unsoldTokens\",\n \"type\": \"uint256\",\n \"indexed\": false,\n \"internalType\": \"uint256\"\n }\n ],\n \"anonymous\": false\n },\n {\n \"type\": \"event\",\n \"name\": \"OrderDeleted\",\n \"inputs\": [\n {\n \"name\": \"orderId\",\n \"type\": \"uint256\",\n \"indexed\": true,\n \"internalType\": \"uint256\"\n }\n ],\n \"anonymous\": false\n },\n {\n \"type\": \"event\",\n \"name\": \"OrderExpired\",\n \"inputs\": [\n {\n \"name\": \"orderId\",\n \"type\": \"uint256\",\n \"indexed\": true,\n \"internalType\": \"uint256\"\n },\n {\n \"name\": \"owner\",\n \"type\": \"address\",\n \"indexed\": true,\n \"internalType\": \"address\"\n },\n {\n \"name\": \"qty\",\n \"type\": \"uint256\",\n \"indexed\": false,\n \"internalType\": \"uint256\"\n }\n ],\n \"anonymous\": false\n },\n {\n \"type\": \"event\",\n \"name\": \"TopOfBookChanged\",\n \"inputs\": [\n {\n \"name\": \"marketId\",\n \"type\": \"uint256\",\n \"indexed\": true,\n \"internalType\": \"uint256\"\n },\n {\n \"name\": \"outcomeId\",\n \"type\": \"uint256\",\n \"indexed\": true,\n \"internalType\": \"uint256\"\n },\n {\n \"name\": \"side\",\n \"type\": \"uint8\",\n \"indexed\": false,\n \"internalType\": \"enum Side\"\n },\n {\n \"name\": \"bestTick\",\n \"type\": \"uint256\",\n \"indexed\": false,\n \"internalType\": \"uint256\"\n }\n ],\n \"anonymous\": false\n },\n {\n \"type\": \"error\",\n \"name\": \"InsufficientLiquidityForFOK\",\n \"inputs\": []\n },\n {\n \"type\": \"error\",\n \"name\": \"InvalidMaxPrice\",\n \"inputs\": []\n },\n {\n \"type\": \"error\",\n \"name\": \"InvalidMinPrice\",\n \"inputs\": []\n },\n {\n \"type\": \"error\",\n \"name\": \"InvalidOutcome\",\n \"inputs\": []\n },\n {\n \"type\": \"error\",\n \"name\": \"MakerErc165CallFailed\",\n \"inputs\": []\n },\n {\n \"type\": \"error\",\n \"name\": \"MakerNotErc1155Receiver\",\n \"inputs\": []\n },\n {\n \"type\": \"error\",\n \"name\": \"MarketNotActive\",\n \"inputs\": []\n },\n {\n \"type\": \"error\",\n \"name\": \"MarketPaused\",\n \"inputs\": []\n },\n {\n \"type\": \"error\",\n \"name\": \"NoLiquidityAvailable\",\n \"inputs\": []\n },\n {\n \"type\": \"error\",\n \"name\": \"ProtocolPaused\",\n \"inputs\": []\n },\n {\n \"type\": \"error\",\n \"name\": \"TradingAccessDenied\",\n \"inputs\": []\n },\n {\n \"type\": \"error\",\n \"name\": \"TransferFailed\",\n \"inputs\": []\n },\n {\n \"type\": \"error\",\n \"name\": \"TransferFromFailed\",\n \"inputs\": []\n },\n {\n \"type\": \"error\",\n \"name\": \"VenueInactive\",\n \"inputs\": []\n },\n {\n \"type\": \"error\",\n \"name\": \"VenueNotFound\",\n \"inputs\": []\n },\n {\n \"type\": \"error\",\n \"name\": \"VenueSuspended\",\n \"inputs\": []\n },\n {\n \"type\": \"error\",\n \"name\": \"ZeroCollateralAmount\",\n \"inputs\": []\n },\n {\n \"type\": \"error\",\n \"name\": \"ZeroTokenAmount\",\n \"inputs\": []\n }\n]\n","[\n {\n \"type\": \"function\",\n \"name\": \"assertMarketOutcome\",\n \"inputs\": [\n {\n \"name\": \"questionId\",\n \"type\": \"bytes32\",\n \"internalType\": \"bytes32\"\n },\n {\n \"name\": \"outcome\",\n \"type\": \"string\",\n \"internalType\": \"string\"\n }\n ],\n \"outputs\": [\n {\n \"name\": \"assertionId\",\n \"type\": \"bytes32\",\n \"internalType\": \"bytes32\"\n }\n ],\n \"stateMutability\": \"nonpayable\"\n },\n {\n \"type\": \"function\",\n \"name\": \"assertionDisputedCallback\",\n \"inputs\": [\n {\n \"name\": \"assertionId\",\n \"type\": \"bytes32\",\n \"internalType\": \"bytes32\"\n }\n ],\n \"outputs\": [],\n \"stateMutability\": \"nonpayable\"\n },\n {\n \"type\": \"function\",\n \"name\": \"assertionResolvedCallback\",\n \"inputs\": [\n {\n \"name\": \"assertionId\",\n \"type\": \"bytes32\",\n \"internalType\": \"bytes32\"\n },\n {\n \"name\": \"assertedTruthfully\",\n \"type\": \"bool\",\n \"internalType\": \"bool\"\n }\n ],\n \"outputs\": [],\n \"stateMutability\": \"nonpayable\"\n },\n {\n \"type\": \"function\",\n \"name\": \"getAssertionData\",\n \"inputs\": [\n {\n \"name\": \"assertionId\",\n \"type\": \"bytes32\",\n \"internalType\": \"bytes32\"\n }\n ],\n \"outputs\": [\n {\n \"name\": \"\",\n \"type\": \"tuple\",\n \"internalType\": \"struct AssertionData\",\n \"components\": [\n {\n \"name\": \"assertionId\",\n \"type\": \"bytes32\",\n \"internalType\": \"bytes32\"\n },\n {\n \"name\": \"questionId\",\n \"type\": \"bytes32\",\n \"internalType\": \"bytes32\"\n },\n {\n \"name\": \"outcome\",\n \"type\": \"string\",\n \"internalType\": \"string\"\n },\n {\n \"name\": \"settled\",\n \"type\": \"bool\",\n \"internalType\": \"bool\"\n },\n {\n \"name\": \"asserter\",\n \"type\": \"address\",\n \"internalType\": \"address\"\n }\n ]\n }\n ],\n \"stateMutability\": \"view\"\n },\n {\n \"type\": \"function\",\n \"name\": \"reportResolution\",\n \"inputs\": [\n {\n \"name\": \"marketId\",\n \"type\": \"uint256\",\n \"internalType\": \"uint256\"\n },\n {\n \"name\": \"outcome\",\n \"type\": \"string\",\n \"internalType\": \"string\"\n }\n ],\n \"outputs\": [],\n \"stateMutability\": \"nonpayable\"\n },\n {\n \"type\": \"function\",\n \"name\": \"settleAssertion\",\n \"inputs\": [\n {\n \"name\": \"assertionId\",\n \"type\": \"bytes32\",\n \"internalType\": \"bytes32\"\n }\n ],\n \"outputs\": [],\n \"stateMutability\": \"nonpayable\"\n },\n {\n \"type\": \"event\",\n \"name\": \"AssertionCreated\",\n \"inputs\": [\n {\n \"name\": \"assertionId\",\n \"type\": \"bytes32\",\n \"indexed\": true,\n \"internalType\": \"bytes32\"\n },\n {\n \"name\": \"questionId\",\n \"type\": \"bytes32\",\n \"indexed\": true,\n \"internalType\": \"bytes32\"\n },\n {\n \"name\": \"outcome\",\n \"type\": \"string\",\n \"indexed\": false,\n \"internalType\": \"string\"\n },\n {\n \"name\": \"asserter\",\n \"type\": \"address\",\n \"indexed\": false,\n \"internalType\": \"address\"\n }\n ],\n \"anonymous\": false\n },\n {\n \"type\": \"event\",\n \"name\": \"AssertionDisputed\",\n \"inputs\": [\n {\n \"name\": \"assertionId\",\n \"type\": \"bytes32\",\n \"indexed\": true,\n \"internalType\": \"bytes32\"\n }\n ],\n \"anonymous\": false\n },\n {\n \"type\": \"event\",\n \"name\": \"AssertionSettled\",\n \"inputs\": [\n {\n \"name\": \"assertionId\",\n \"type\": \"bytes32\",\n \"indexed\": true,\n \"internalType\": \"bytes32\"\n },\n {\n \"name\": \"result\",\n \"type\": \"bool\",\n \"indexed\": false,\n \"internalType\": \"bool\"\n }\n ],\n \"anonymous\": false\n },\n {\n \"type\": \"event\",\n \"name\": \"MarketGroupResolved\",\n \"inputs\": [\n {\n \"name\": \"groupId\",\n \"type\": \"uint256\",\n \"indexed\": true,\n \"internalType\": \"uint256\"\n },\n {\n \"name\": \"winningMarketId\",\n \"type\": \"uint256\",\n \"indexed\": true,\n \"internalType\": \"uint256\"\n }\n ],\n \"anonymous\": false\n },\n {\n \"type\": \"event\",\n \"name\": \"MarketGroupResolved\",\n \"inputs\": [\n {\n \"name\": \"groupId\",\n \"type\": \"uint256\",\n \"indexed\": true,\n \"internalType\": \"uint256\"\n },\n {\n \"name\": \"winningMarketId\",\n \"type\": \"uint256\",\n \"indexed\": true,\n \"internalType\": \"uint256\"\n }\n ],\n \"anonymous\": false\n },\n {\n \"type\": \"event\",\n \"name\": \"MarketResolved\",\n \"inputs\": [\n {\n \"name\": \"marketId\",\n \"type\": \"uint256\",\n \"indexed\": true,\n \"internalType\": \"uint256\"\n },\n {\n \"name\": \"questionId\",\n \"type\": \"bytes32\",\n \"indexed\": true,\n \"internalType\": \"bytes32\"\n },\n {\n \"name\": \"outcome\",\n \"type\": \"string\",\n \"indexed\": false,\n \"internalType\": \"string\"\n }\n ],\n \"anonymous\": false\n },\n {\n \"type\": \"event\",\n \"name\": \"MarketResolved\",\n \"inputs\": [\n {\n \"name\": \"marketId\",\n \"type\": \"uint256\",\n \"indexed\": true,\n \"internalType\": \"uint256\"\n },\n {\n \"name\": \"questionId\",\n \"type\": \"bytes32\",\n \"indexed\": true,\n \"internalType\": \"bytes32\"\n },\n {\n \"name\": \"outcome\",\n \"type\": \"string\",\n \"indexed\": false,\n \"internalType\": \"string\"\n }\n ],\n \"anonymous\": false\n },\n {\n \"type\": \"event\",\n \"name\": \"RewardPaid\",\n \"inputs\": [\n {\n \"name\": \"assertionId\",\n \"type\": \"bytes32\",\n \"indexed\": true,\n \"internalType\": \"bytes32\"\n },\n {\n \"name\": \"asserter\",\n \"type\": \"address\",\n \"indexed\": true,\n \"internalType\": \"address\"\n },\n {\n \"name\": \"reward\",\n \"type\": \"uint256\",\n \"indexed\": false,\n \"internalType\": \"uint256\"\n }\n ],\n \"anonymous\": false\n },\n {\n \"type\": \"error\",\n \"name\": \"ApproveFailed\",\n \"inputs\": []\n },\n {\n \"type\": \"error\",\n \"name\": \"AssertionActiveOrResolved\",\n \"inputs\": []\n },\n {\n \"type\": \"error\",\n \"name\": \"AssertionNotFound\",\n \"inputs\": []\n },\n {\n \"type\": \"error\",\n \"name\": \"AssertionNotSettled\",\n \"inputs\": []\n },\n {\n \"type\": \"error\",\n \"name\": \"MarketNotActive\",\n \"inputs\": []\n },\n {\n \"type\": \"error\",\n \"name\": \"MarketNotFound\",\n \"inputs\": []\n },\n {\n \"type\": \"error\",\n \"name\": \"OnlyUmaOracle\",\n \"inputs\": []\n },\n {\n \"type\": \"error\",\n \"name\": \"OracleNotInitialized\",\n \"inputs\": []\n },\n {\n \"type\": \"error\",\n \"name\": \"OracleNotInitialized\",\n \"inputs\": []\n },\n {\n \"type\": \"error\",\n \"name\": \"OutcomeMismatch\",\n \"inputs\": []\n },\n {\n \"type\": \"error\",\n \"name\": \"TransferFailed\",\n \"inputs\": []\n },\n {\n \"type\": \"error\",\n \"name\": \"TransferFromFailed\",\n \"inputs\": []\n },\n {\n \"type\": \"error\",\n \"name\": \"UmaIdentifierNotSet\",\n \"inputs\": []\n },\n {\n \"type\": \"error\",\n \"name\": \"UmaOracleNotSet\",\n \"inputs\": []\n }\n]\n","[\n {\n \"type\": \"function\",\n \"name\": \"getCtfAddress\",\n \"inputs\": [],\n \"outputs\": [\n {\n \"name\": \"\",\n \"type\": \"address\",\n \"internalType\": \"address\"\n }\n ],\n \"stateMutability\": \"view\"\n },\n {\n \"type\": \"function\",\n \"name\": \"getVault\",\n \"inputs\": [],\n \"outputs\": [\n {\n \"name\": \"\",\n \"type\": \"address\",\n \"internalType\": \"address\"\n }\n ],\n \"stateMutability\": \"view\"\n },\n {\n \"type\": \"function\",\n \"name\": \"mergePositions\",\n \"inputs\": [\n {\n \"name\": \"marketId\",\n \"type\": \"uint256\",\n \"internalType\": \"uint256\"\n },\n {\n \"name\": \"amount\",\n \"type\": \"uint256\",\n \"internalType\": \"uint256\"\n }\n ],\n \"outputs\": [],\n \"stateMutability\": \"nonpayable\"\n },\n {\n \"type\": \"function\",\n \"name\": \"setCtf\",\n \"inputs\": [\n {\n \"name\": \"ctf\",\n \"type\": \"address\",\n \"internalType\": \"address\"\n }\n ],\n \"outputs\": [],\n \"stateMutability\": \"nonpayable\"\n },\n {\n \"type\": \"function\",\n \"name\": \"splitPosition\",\n \"inputs\": [\n {\n \"name\": \"marketId\",\n \"type\": \"uint256\",\n \"internalType\": \"uint256\"\n },\n {\n \"name\": \"amount\",\n \"type\": \"uint256\",\n \"internalType\": \"uint256\"\n }\n ],\n \"outputs\": [],\n \"stateMutability\": \"nonpayable\"\n },\n {\n \"type\": \"event\",\n \"name\": \"CtfUpdated\",\n \"inputs\": [\n {\n \"name\": \"ctf\",\n \"type\": \"address\",\n \"indexed\": true,\n \"internalType\": \"address\"\n }\n ],\n \"anonymous\": false\n },\n {\n \"type\": \"event\",\n \"name\": \"PositionSplit\",\n \"inputs\": [\n {\n \"name\": \"trader\",\n \"type\": \"address\",\n \"indexed\": true,\n \"internalType\": \"address\"\n },\n {\n \"name\": \"marketId\",\n \"type\": \"uint256\",\n \"indexed\": true,\n \"internalType\": \"uint256\"\n },\n {\n \"name\": \"amount\",\n \"type\": \"uint256\",\n \"indexed\": false,\n \"internalType\": \"uint256\"\n }\n ],\n \"anonymous\": false\n },\n {\n \"type\": \"event\",\n \"name\": \"PositionsMerged\",\n \"inputs\": [\n {\n \"name\": \"trader\",\n \"type\": \"address\",\n \"indexed\": true,\n \"internalType\": \"address\"\n },\n {\n \"name\": \"marketId\",\n \"type\": \"uint256\",\n \"indexed\": true,\n \"internalType\": \"uint256\"\n },\n {\n \"name\": \"amount\",\n \"type\": \"uint256\",\n \"indexed\": false,\n \"internalType\": \"uint256\"\n }\n ],\n \"anonymous\": false\n },\n {\n \"type\": \"error\",\n \"name\": \"ApproveFailed\",\n \"inputs\": []\n },\n {\n \"type\": \"error\",\n \"name\": \"MarketNotActive\",\n \"inputs\": []\n },\n {\n \"type\": \"error\",\n \"name\": \"MarketNotFound\",\n \"inputs\": []\n },\n {\n \"type\": \"error\",\n \"name\": \"MarketPaused\",\n \"inputs\": []\n },\n {\n \"type\": \"error\",\n \"name\": \"NotContractOwner\",\n \"inputs\": [\n {\n \"name\": \"_user\",\n \"type\": \"address\",\n \"internalType\": \"address\"\n },\n {\n \"name\": \"_contractOwner\",\n \"type\": \"address\",\n \"internalType\": \"address\"\n }\n ]\n },\n {\n \"type\": \"error\",\n \"name\": \"ProtocolPaused\",\n \"inputs\": []\n },\n {\n \"type\": \"error\",\n \"name\": \"TransferFailed\",\n \"inputs\": []\n },\n {\n \"type\": \"error\",\n \"name\": \"TransferFromFailed\",\n \"inputs\": []\n },\n {\n \"type\": \"error\",\n \"name\": \"VenueInactive\",\n \"inputs\": []\n },\n {\n \"type\": \"error\",\n \"name\": \"VenueNotFound\",\n \"inputs\": []\n },\n {\n \"type\": \"error\",\n \"name\": \"VenueSuspended\",\n \"inputs\": []\n }\n]\n","[\n {\n \"type\": \"function\",\n \"name\": \"convertPositions\",\n \"inputs\": [\n {\n \"name\": \"conditionIds\",\n \"type\": \"bytes32[]\",\n \"internalType\": \"bytes32[]\"\n },\n {\n \"name\": \"collateralToken\",\n \"type\": \"address\",\n \"internalType\": \"address\"\n },\n {\n \"name\": \"indexSet\",\n \"type\": \"uint256\",\n \"internalType\": \"uint256\"\n },\n {\n \"name\": \"amount\",\n \"type\": \"uint256\",\n \"internalType\": \"uint256\"\n }\n ],\n \"outputs\": [],\n \"stateMutability\": \"nonpayable\"\n },\n {\n \"type\": \"function\",\n \"name\": \"getConversionPositionIds\",\n \"inputs\": [\n {\n \"name\": \"conditionIds\",\n \"type\": \"bytes32[]\",\n \"internalType\": \"bytes32[]\"\n },\n {\n \"name\": \"collateralToken\",\n \"type\": \"address\",\n \"internalType\": \"address\"\n },\n {\n \"name\": \"indexSet\",\n \"type\": \"uint256\",\n \"internalType\": \"uint256\"\n }\n ],\n \"outputs\": [\n {\n \"name\": \"noPositionIds\",\n \"type\": \"uint256[]\",\n \"internalType\": \"uint256[]\"\n },\n {\n \"name\": \"yesPositionIds\",\n \"type\": \"uint256[]\",\n \"internalType\": \"uint256[]\"\n }\n ],\n \"stateMutability\": \"view\"\n },\n {\n \"type\": \"error\",\n \"name\": \"ApproveFailed\",\n \"inputs\": []\n },\n {\n \"type\": \"error\",\n \"name\": \"DuplicateConditionId\",\n \"inputs\": [\n {\n \"name\": \"conditionId\",\n \"type\": \"bytes32\",\n \"internalType\": \"bytes32\"\n }\n ]\n },\n {\n \"type\": \"error\",\n \"name\": \"InvalidIndexSet\",\n \"inputs\": []\n },\n {\n \"type\": \"error\",\n \"name\": \"UnregisteredConditionId\",\n \"inputs\": [\n {\n \"name\": \"conditionId\",\n \"type\": \"bytes32\",\n \"internalType\": \"bytes32\"\n }\n ]\n }\n]\n","[\n {\n \"type\": \"function\",\n \"name\": \"getProtocolFeeBps\",\n \"inputs\": [],\n \"outputs\": [\n {\n \"name\": \"\",\n \"type\": \"uint256\",\n \"internalType\": \"uint256\"\n }\n ],\n \"stateMutability\": \"view\"\n },\n {\n \"type\": \"function\",\n \"name\": \"getProtocolPaused\",\n \"inputs\": [],\n \"outputs\": [\n {\n \"name\": \"\",\n \"type\": \"bool\",\n \"internalType\": \"bool\"\n }\n ],\n \"stateMutability\": \"view\"\n },\n {\n \"type\": \"function\",\n \"name\": \"getProtocolTreasury\",\n \"inputs\": [],\n \"outputs\": [\n {\n \"name\": \"\",\n \"type\": \"address\",\n \"internalType\": \"address\"\n }\n ],\n \"stateMutability\": \"view\"\n },\n {\n \"type\": \"function\",\n \"name\": \"getUmaIdentifier\",\n \"inputs\": [],\n \"outputs\": [\n {\n \"name\": \"\",\n \"type\": \"bytes32\",\n \"internalType\": \"bytes32\"\n }\n ],\n \"stateMutability\": \"view\"\n },\n {\n \"type\": \"function\",\n \"name\": \"getUmaOracle\",\n \"inputs\": [],\n \"outputs\": [\n {\n \"name\": \"\",\n \"type\": \"address\",\n \"internalType\": \"address\"\n }\n ],\n \"stateMutability\": \"view\"\n },\n {\n \"type\": \"function\",\n \"name\": \"getVenueSuspended\",\n \"inputs\": [\n {\n \"name\": \"venueId\",\n \"type\": \"uint256\",\n \"internalType\": \"uint256\"\n }\n ],\n \"outputs\": [\n {\n \"name\": \"\",\n \"type\": \"bool\",\n \"internalType\": \"bool\"\n }\n ],\n \"stateMutability\": \"view\"\n },\n {\n \"type\": \"function\",\n \"name\": \"isCollateralWhitelisted\",\n \"inputs\": [\n {\n \"name\": \"token\",\n \"type\": \"address\",\n \"internalType\": \"address\"\n }\n ],\n \"outputs\": [\n {\n \"name\": \"\",\n \"type\": \"bool\",\n \"internalType\": \"bool\"\n }\n ],\n \"stateMutability\": \"view\"\n },\n {\n \"type\": \"function\",\n \"name\": \"pauseProtocol\",\n \"inputs\": [],\n \"outputs\": [],\n \"stateMutability\": \"nonpayable\"\n },\n {\n \"type\": \"function\",\n \"name\": \"setCollateralWhitelisted\",\n \"inputs\": [\n {\n \"name\": \"token\",\n \"type\": \"address\",\n \"internalType\": \"address\"\n },\n {\n \"name\": \"whitelisted\",\n \"type\": \"bool\",\n \"internalType\": \"bool\"\n }\n ],\n \"outputs\": [],\n \"stateMutability\": \"nonpayable\"\n },\n {\n \"type\": \"function\",\n \"name\": \"setProtocolFeeBps\",\n \"inputs\": [\n {\n \"name\": \"bps\",\n \"type\": \"uint256\",\n \"internalType\": \"uint256\"\n }\n ],\n \"outputs\": [],\n \"stateMutability\": \"nonpayable\"\n },\n {\n \"type\": \"function\",\n \"name\": \"setProtocolTreasury\",\n \"inputs\": [\n {\n \"name\": \"treasury\",\n \"type\": \"address\",\n \"internalType\": \"address\"\n }\n ],\n \"outputs\": [],\n \"stateMutability\": \"nonpayable\"\n },\n {\n \"type\": \"function\",\n \"name\": \"setUmaIdentifier\",\n \"inputs\": [\n {\n \"name\": \"identifier\",\n \"type\": \"bytes32\",\n \"internalType\": \"bytes32\"\n }\n ],\n \"outputs\": [],\n \"stateMutability\": \"nonpayable\"\n },\n {\n \"type\": \"function\",\n \"name\": \"setUmaOracle\",\n \"inputs\": [\n {\n \"name\": \"oracle\",\n \"type\": \"address\",\n \"internalType\": \"address\"\n }\n ],\n \"outputs\": [],\n \"stateMutability\": \"nonpayable\"\n },\n {\n \"type\": \"function\",\n \"name\": \"suspendVenue\",\n \"inputs\": [\n {\n \"name\": \"venueId\",\n \"type\": \"uint256\",\n \"internalType\": \"uint256\"\n }\n ],\n \"outputs\": [],\n \"stateMutability\": \"nonpayable\"\n },\n {\n \"type\": \"function\",\n \"name\": \"unpauseProtocol\",\n \"inputs\": [],\n \"outputs\": [],\n \"stateMutability\": \"nonpayable\"\n },\n {\n \"type\": \"function\",\n \"name\": \"unsuspendVenue\",\n \"inputs\": [\n {\n \"name\": \"venueId\",\n \"type\": \"uint256\",\n \"internalType\": \"uint256\"\n }\n ],\n \"outputs\": [],\n \"stateMutability\": \"nonpayable\"\n },\n {\n \"type\": \"function\",\n \"name\": \"withdrawERC20\",\n \"inputs\": [\n {\n \"name\": \"token\",\n \"type\": \"address\",\n \"internalType\": \"address\"\n },\n {\n \"name\": \"recipient\",\n \"type\": \"address\",\n \"internalType\": \"address\"\n },\n {\n \"name\": \"amount\",\n \"type\": \"uint256\",\n \"internalType\": \"uint256\"\n }\n ],\n \"outputs\": [],\n \"stateMutability\": \"nonpayable\"\n },\n {\n \"type\": \"function\",\n \"name\": \"withdrawETH\",\n \"inputs\": [\n {\n \"name\": \"recipient\",\n \"type\": \"address\",\n \"internalType\": \"address\"\n }\n ],\n \"outputs\": [],\n \"stateMutability\": \"nonpayable\"\n },\n {\n \"type\": \"event\",\n \"name\": \"CollateralWhitelistUpdated\",\n \"inputs\": [\n {\n \"name\": \"token\",\n \"type\": \"address\",\n \"indexed\": true,\n \"internalType\": \"address\"\n },\n {\n \"name\": \"whitelisted\",\n \"type\": \"bool\",\n \"indexed\": false,\n \"internalType\": \"bool\"\n }\n ],\n \"anonymous\": false\n },\n {\n \"type\": \"event\",\n \"name\": \"ERC20Withdrawn\",\n \"inputs\": [\n {\n \"name\": \"token\",\n \"type\": \"address\",\n \"indexed\": true,\n \"internalType\": \"address\"\n },\n {\n \"name\": \"recipient\",\n \"type\": \"address\",\n \"indexed\": true,\n \"internalType\": \"address\"\n },\n {\n \"name\": \"amount\",\n \"type\": \"uint256\",\n \"indexed\": false,\n \"internalType\": \"uint256\"\n }\n ],\n \"anonymous\": false\n },\n {\n \"type\": \"event\",\n \"name\": \"EthWithdrawn\",\n \"inputs\": [\n {\n \"name\": \"recipient\",\n \"type\": \"address\",\n \"indexed\": true,\n \"internalType\": \"address\"\n },\n {\n \"name\": \"amount\",\n \"type\": \"uint256\",\n \"indexed\": false,\n \"internalType\": \"uint256\"\n }\n ],\n \"anonymous\": false\n },\n {\n \"type\": \"event\",\n \"name\": \"ProtocolFeeBpsUpdated\",\n \"inputs\": [\n {\n \"name\": \"bps\",\n \"type\": \"uint256\",\n \"indexed\": false,\n \"internalType\": \"uint256\"\n }\n ],\n \"anonymous\": false\n },\n {\n \"type\": \"event\",\n \"name\": \"ProtocolPausedEvent\",\n \"inputs\": [\n {\n \"name\": \"caller\",\n \"type\": \"address\",\n \"indexed\": true,\n \"internalType\": \"address\"\n }\n ],\n \"anonymous\": false\n },\n {\n \"type\": \"event\",\n \"name\": \"ProtocolTreasuryUpdated\",\n \"inputs\": [\n {\n \"name\": \"treasury\",\n \"type\": \"address\",\n \"indexed\": true,\n \"internalType\": \"address\"\n }\n ],\n \"anonymous\": false\n },\n {\n \"type\": \"event\",\n \"name\": \"ProtocolUnpausedEvent\",\n \"inputs\": [\n {\n \"name\": \"caller\",\n \"type\": \"address\",\n \"indexed\": true,\n \"internalType\": \"address\"\n }\n ],\n \"anonymous\": false\n },\n {\n \"type\": \"event\",\n \"name\": \"UmaIdentifierUpdated\",\n \"inputs\": [\n {\n \"name\": \"identifier\",\n \"type\": \"bytes32\",\n \"indexed\": false,\n \"internalType\": \"bytes32\"\n }\n ],\n \"anonymous\": false\n },\n {\n \"type\": \"event\",\n \"name\": \"UmaOracleUpdated\",\n \"inputs\": [\n {\n \"name\": \"oracle\",\n \"type\": \"address\",\n \"indexed\": true,\n \"internalType\": \"address\"\n }\n ],\n \"anonymous\": false\n },\n {\n \"type\": \"event\",\n \"name\": \"VenueSuspendedEvent\",\n \"inputs\": [\n {\n \"name\": \"venueId\",\n \"type\": \"uint256\",\n \"indexed\": true,\n \"internalType\": \"uint256\"\n },\n {\n \"name\": \"caller\",\n \"type\": \"address\",\n \"indexed\": true,\n \"internalType\": \"address\"\n }\n ],\n \"anonymous\": false\n },\n {\n \"type\": \"event\",\n \"name\": \"VenueUnsuspendedEvent\",\n \"inputs\": [\n {\n \"name\": \"venueId\",\n \"type\": \"uint256\",\n \"indexed\": true,\n \"internalType\": \"uint256\"\n },\n {\n \"name\": \"caller\",\n \"type\": \"address\",\n \"indexed\": true,\n \"internalType\": \"address\"\n }\n ],\n \"anonymous\": false\n },\n {\n \"type\": \"error\",\n \"name\": \"NotContractOwner\",\n \"inputs\": [\n {\n \"name\": \"_user\",\n \"type\": \"address\",\n \"internalType\": \"address\"\n },\n {\n \"name\": \"_contractOwner\",\n \"type\": \"address\",\n \"internalType\": \"address\"\n }\n ]\n },\n {\n \"type\": \"error\",\n \"name\": \"TransferFailed\",\n \"inputs\": []\n },\n {\n \"type\": \"error\",\n \"name\": \"VenueNotFound\",\n \"inputs\": []\n }\n]\n","[\n {\n \"type\": \"function\",\n \"name\": \"canTradeOnMarket\",\n \"inputs\": [\n {\n \"name\": \"user\",\n \"type\": \"address\",\n \"internalType\": \"address\"\n },\n {\n \"name\": \"marketId\",\n \"type\": \"uint256\",\n \"internalType\": \"uint256\"\n }\n ],\n \"outputs\": [\n {\n \"name\": \"\",\n \"type\": \"bool\",\n \"internalType\": \"bool\"\n }\n ],\n \"stateMutability\": \"view\"\n },\n {\n \"type\": \"function\",\n \"name\": \"deployNFTGatedAC\",\n \"inputs\": [\n {\n \"name\": \"nftContract\",\n \"type\": \"address\",\n \"internalType\": \"address\"\n },\n {\n \"name\": \"isERC1155\",\n \"type\": \"bool\",\n \"internalType\": \"bool\"\n },\n {\n \"name\": \"tokenId\",\n \"type\": \"uint256\",\n \"internalType\": \"uint256\"\n }\n ],\n \"outputs\": [\n {\n \"name\": \"acContract\",\n \"type\": \"address\",\n \"internalType\": \"address\"\n }\n ],\n \"stateMutability\": \"nonpayable\"\n },\n {\n \"type\": \"function\",\n \"name\": \"deployTokenGatedAC\",\n \"inputs\": [\n {\n \"name\": \"token\",\n \"type\": \"address\",\n \"internalType\": \"address\"\n },\n {\n \"name\": \"minBalance\",\n \"type\": \"uint256\",\n \"internalType\": \"uint256\"\n }\n ],\n \"outputs\": [\n {\n \"name\": \"acContract\",\n \"type\": \"address\",\n \"internalType\": \"address\"\n }\n ],\n \"stateMutability\": \"nonpayable\"\n },\n {\n \"type\": \"function\",\n \"name\": \"deployWhitelistAC\",\n \"inputs\": [],\n \"outputs\": [\n {\n \"name\": \"acContract\",\n \"type\": \"address\",\n \"internalType\": \"address\"\n }\n ],\n \"stateMutability\": \"nonpayable\"\n },\n {\n \"type\": \"function\",\n \"name\": \"getMarketTradingAccessControl\",\n \"inputs\": [\n {\n \"name\": \"marketId\",\n \"type\": \"uint256\",\n \"internalType\": \"uint256\"\n }\n ],\n \"outputs\": [\n {\n \"name\": \"\",\n \"type\": \"address\",\n \"internalType\": \"address\"\n }\n ],\n \"stateMutability\": \"view\"\n },\n {\n \"type\": \"function\",\n \"name\": \"removeMarketTradingAccessControl\",\n \"inputs\": [\n {\n \"name\": \"marketId\",\n \"type\": \"uint256\",\n \"internalType\": \"uint256\"\n }\n ],\n \"outputs\": [],\n \"stateMutability\": \"nonpayable\"\n },\n {\n \"type\": \"function\",\n \"name\": \"setMarketTradingAccessControl\",\n \"inputs\": [\n {\n \"name\": \"marketId\",\n \"type\": \"uint256\",\n \"internalType\": \"uint256\"\n },\n {\n \"name\": \"acContract\",\n \"type\": \"address\",\n \"internalType\": \"address\"\n }\n ],\n \"outputs\": [],\n \"stateMutability\": \"nonpayable\"\n },\n {\n \"type\": \"event\",\n \"name\": \"AccessControlDeployed\",\n \"inputs\": [\n {\n \"name\": \"deployer\",\n \"type\": \"address\",\n \"indexed\": true,\n \"internalType\": \"address\"\n },\n {\n \"name\": \"acContract\",\n \"type\": \"address\",\n \"indexed\": true,\n \"internalType\": \"address\"\n },\n {\n \"name\": \"acType\",\n \"type\": \"string\",\n \"indexed\": false,\n \"internalType\": \"string\"\n }\n ],\n \"anonymous\": false\n },\n {\n \"type\": \"event\",\n \"name\": \"MarketTradingAccessControlRemoved\",\n \"inputs\": [\n {\n \"name\": \"marketId\",\n \"type\": \"uint256\",\n \"indexed\": true,\n \"internalType\": \"uint256\"\n }\n ],\n \"anonymous\": false\n },\n {\n \"type\": \"event\",\n \"name\": \"MarketTradingAccessControlSet\",\n \"inputs\": [\n {\n \"name\": \"marketId\",\n \"type\": \"uint256\",\n \"indexed\": true,\n \"internalType\": \"uint256\"\n },\n {\n \"name\": \"acContract\",\n \"type\": \"address\",\n \"indexed\": true,\n \"internalType\": \"address\"\n }\n ],\n \"anonymous\": false\n },\n {\n \"type\": \"error\",\n \"name\": \"OnlyVenueOperator\",\n \"inputs\": []\n },\n {\n \"type\": \"error\",\n \"name\": \"ProtocolPaused\",\n \"inputs\": []\n },\n {\n \"type\": \"error\",\n \"name\": \"VenueInactive\",\n \"inputs\": []\n },\n {\n \"type\": \"error\",\n \"name\": \"VenueNotFound\",\n \"inputs\": []\n },\n {\n \"type\": \"error\",\n \"name\": \"VenueSuspended\",\n \"inputs\": []\n }\n]\n","[\n {\n \"type\": \"function\",\n \"name\": \"updateMarketGroupTags\",\n \"inputs\": [\n {\n \"name\": \"groupId\",\n \"type\": \"uint256\",\n \"internalType\": \"uint256\"\n },\n {\n \"name\": \"tags\",\n \"type\": \"bytes32[]\",\n \"internalType\": \"bytes32[]\"\n }\n ],\n \"outputs\": [],\n \"stateMutability\": \"nonpayable\"\n },\n {\n \"type\": \"function\",\n \"name\": \"updateMarketTags\",\n \"inputs\": [\n {\n \"name\": \"marketId\",\n \"type\": \"uint256\",\n \"internalType\": \"uint256\"\n },\n {\n \"name\": \"tags\",\n \"type\": \"bytes32[]\",\n \"internalType\": \"bytes32[]\"\n }\n ],\n \"outputs\": [],\n \"stateMutability\": \"nonpayable\"\n },\n {\n \"type\": \"event\",\n \"name\": \"MarketGroupTagsUpdated\",\n \"inputs\": [\n {\n \"name\": \"groupId\",\n \"type\": \"uint256\",\n \"indexed\": true,\n \"internalType\": \"uint256\"\n },\n {\n \"name\": \"tags\",\n \"type\": \"bytes32[]\",\n \"indexed\": false,\n \"internalType\": \"bytes32[]\"\n }\n ],\n \"anonymous\": false\n },\n {\n \"type\": \"event\",\n \"name\": \"MarketTagsUpdated\",\n \"inputs\": [\n {\n \"name\": \"marketId\",\n \"type\": \"uint256\",\n \"indexed\": true,\n \"internalType\": \"uint256\"\n },\n {\n \"name\": \"tags\",\n \"type\": \"bytes32[]\",\n \"indexed\": false,\n \"internalType\": \"bytes32[]\"\n }\n ],\n \"anonymous\": false\n },\n {\n \"type\": \"error\",\n \"name\": \"MarketGroupNotFound\",\n \"inputs\": []\n },\n {\n \"type\": \"error\",\n \"name\": \"NotGroupCreator\",\n \"inputs\": []\n },\n {\n \"type\": \"error\",\n \"name\": \"NotMarketCreator\",\n \"inputs\": []\n },\n {\n \"type\": \"error\",\n \"name\": \"TooManyTags\",\n \"inputs\": []\n }\n]\n","[\n {\n \"type\": \"function\",\n \"name\": \"updateMarketGroupMetadata\",\n \"inputs\": [\n {\n \"name\": \"groupId\",\n \"type\": \"uint256\",\n \"internalType\": \"uint256\"\n },\n {\n \"name\": \"metadataURI\",\n \"type\": \"string\",\n \"internalType\": \"string\"\n }\n ],\n \"outputs\": [],\n \"stateMutability\": \"nonpayable\"\n },\n {\n \"type\": \"function\",\n \"name\": \"updateMarketMetadata\",\n \"inputs\": [\n {\n \"name\": \"marketId\",\n \"type\": \"uint256\",\n \"internalType\": \"uint256\"\n },\n {\n \"name\": \"metadataURI\",\n \"type\": \"string\",\n \"internalType\": \"string\"\n }\n ],\n \"outputs\": [],\n \"stateMutability\": \"nonpayable\"\n },\n {\n \"type\": \"event\",\n \"name\": \"MarketGroupMetadataUpdated\",\n \"inputs\": [\n {\n \"name\": \"groupId\",\n \"type\": \"uint256\",\n \"indexed\": true,\n \"internalType\": \"uint256\"\n },\n {\n \"name\": \"metadataURI\",\n \"type\": \"string\",\n \"indexed\": false,\n \"internalType\": \"string\"\n }\n ],\n \"anonymous\": false\n },\n {\n \"type\": \"event\",\n \"name\": \"MarketMetadataUpdated\",\n \"inputs\": [\n {\n \"name\": \"marketId\",\n \"type\": \"uint256\",\n \"indexed\": true,\n \"internalType\": \"uint256\"\n },\n {\n \"name\": \"metadataURI\",\n \"type\": \"string\",\n \"indexed\": false,\n \"internalType\": \"string\"\n }\n ],\n \"anonymous\": false\n },\n {\n \"type\": \"error\",\n \"name\": \"MarketGroupNotFound\",\n \"inputs\": []\n },\n {\n \"type\": \"error\",\n \"name\": \"NotGroupCreator\",\n \"inputs\": []\n },\n {\n \"type\": \"error\",\n \"name\": \"NotMarketCreator\",\n \"inputs\": []\n }\n]\n","[\n {\n \"type\": \"function\",\n \"name\": \"canResolvePriceMarket\",\n \"inputs\": [\n {\n \"name\": \"marketId\",\n \"type\": \"uint256\",\n \"internalType\": \"uint256\"\n }\n ],\n \"outputs\": [\n {\n \"name\": \"\",\n \"type\": \"bool\",\n \"internalType\": \"bool\"\n }\n ],\n \"stateMutability\": \"view\"\n },\n {\n \"type\": \"function\",\n \"name\": \"getPriceMarket\",\n \"inputs\": [\n {\n \"name\": \"marketId\",\n \"type\": \"uint256\",\n \"internalType\": \"uint256\"\n }\n ],\n \"outputs\": [\n {\n \"name\": \"feedId\",\n \"type\": \"bytes32\",\n \"internalType\": \"bytes32\"\n },\n {\n \"name\": \"feedProvider\",\n \"type\": \"uint8\",\n \"internalType\": \"enum FeedProvider\"\n },\n {\n \"name\": \"openTime\",\n \"type\": \"uint256\",\n \"internalType\": \"uint256\"\n },\n {\n \"name\": \"closeTime\",\n \"type\": \"uint256\",\n \"internalType\": \"uint256\"\n },\n {\n \"name\": \"priceExpo\",\n \"type\": \"int32\",\n \"internalType\": \"int32\"\n },\n {\n \"name\": \"finalPrice\",\n \"type\": \"int64\",\n \"internalType\": \"int64\"\n },\n {\n \"name\": \"resolutionWindow\",\n \"type\": \"uint256\",\n \"internalType\": \"uint256\"\n },\n {\n \"name\": \"resolved\",\n \"type\": \"bool\",\n \"internalType\": \"bool\"\n },\n {\n \"name\": \"strikePrice\",\n \"type\": \"int64\",\n \"internalType\": \"int64\"\n },\n {\n \"name\": \"openPriceTime\",\n \"type\": \"uint256\",\n \"internalType\": \"uint256\"\n }\n ],\n \"stateMutability\": \"view\"\n },\n {\n \"type\": \"function\",\n \"name\": \"isPriceMarket\",\n \"inputs\": [\n {\n \"name\": \"marketId\",\n \"type\": \"uint256\",\n \"internalType\": \"uint256\"\n }\n ],\n \"outputs\": [\n {\n \"name\": \"\",\n \"type\": \"bool\",\n \"internalType\": \"bool\"\n }\n ],\n \"stateMutability\": \"view\"\n }\n]\n","[\n {\n \"type\": \"function\",\n \"name\": \"createPriceMarketPyth\",\n \"inputs\": [\n {\n \"name\": \"venueId\",\n \"type\": \"uint256\",\n \"internalType\": \"uint256\"\n },\n {\n \"name\": \"pythFeedId\",\n \"type\": \"bytes32\",\n \"internalType\": \"bytes32\"\n },\n {\n \"name\": \"strikePrice\",\n \"type\": \"int64\",\n \"internalType\": \"int64\"\n },\n {\n \"name\": \"openTime\",\n \"type\": \"uint256\",\n \"internalType\": \"uint256\"\n },\n {\n \"name\": \"closeTime\",\n \"type\": \"uint256\",\n \"internalType\": \"uint256\"\n },\n {\n \"name\": \"outcomes\",\n \"type\": \"string[]\",\n \"internalType\": \"string[]\"\n },\n {\n \"name\": \"tickSize\",\n \"type\": \"uint256\",\n \"internalType\": \"uint256\"\n },\n {\n \"name\": \"collateralToken\",\n \"type\": \"address\",\n \"internalType\": \"address\"\n },\n {\n \"name\": \"ancillaryData\",\n \"type\": \"bytes\",\n \"internalType\": \"bytes\"\n },\n {\n \"name\": \"liveness\",\n \"type\": \"uint64\",\n \"internalType\": \"uint64\"\n },\n {\n \"name\": \"tags\",\n \"type\": \"bytes32[]\",\n \"internalType\": \"bytes32[]\"\n },\n {\n \"name\": \"resolutionWindow\",\n \"type\": \"uint256\",\n \"internalType\": \"uint256\"\n }\n ],\n \"outputs\": [\n {\n \"name\": \"marketId\",\n \"type\": \"uint256\",\n \"internalType\": \"uint256\"\n }\n ],\n \"stateMutability\": \"nonpayable\"\n },\n {\n \"type\": \"function\",\n \"name\": \"getPythContract\",\n \"inputs\": [],\n \"outputs\": [\n {\n \"name\": \"\",\n \"type\": \"address\",\n \"internalType\": \"address\"\n }\n ],\n \"stateMutability\": \"view\"\n },\n {\n \"type\": \"function\",\n \"name\": \"markPriceMarketInvalid\",\n \"inputs\": [\n {\n \"name\": \"marketId\",\n \"type\": \"uint256\",\n \"internalType\": \"uint256\"\n }\n ],\n \"outputs\": [],\n \"stateMutability\": \"nonpayable\"\n },\n {\n \"type\": \"function\",\n \"name\": \"resolvePriceMarketPyth\",\n \"inputs\": [\n {\n \"name\": \"marketId\",\n \"type\": \"uint256\",\n \"internalType\": \"uint256\"\n },\n {\n \"name\": \"pythUpdateData\",\n \"type\": \"bytes[]\",\n \"internalType\": \"bytes[]\"\n }\n ],\n \"outputs\": [],\n \"stateMutability\": \"payable\"\n },\n {\n \"type\": \"function\",\n \"name\": \"setPythContract\",\n \"inputs\": [\n {\n \"name\": \"pythContract\",\n \"type\": \"address\",\n \"internalType\": \"address\"\n }\n ],\n \"outputs\": [],\n \"stateMutability\": \"nonpayable\"\n },\n {\n \"type\": \"event\",\n \"name\": \"MarketCreated\",\n \"inputs\": [\n {\n \"name\": \"marketId\",\n \"type\": \"uint256\",\n \"indexed\": true,\n \"internalType\": \"uint256\"\n },\n {\n \"name\": \"venueId\",\n \"type\": \"uint256\",\n \"indexed\": true,\n \"internalType\": \"uint256\"\n },\n {\n \"name\": \"creator\",\n \"type\": \"address\",\n \"indexed\": true,\n \"internalType\": \"address\"\n },\n {\n \"name\": \"conditionId\",\n \"type\": \"bytes32\",\n \"indexed\": false,\n \"internalType\": \"bytes32\"\n },\n {\n \"name\": \"collateralToken\",\n \"type\": \"address\",\n \"indexed\": false,\n \"internalType\": \"address\"\n },\n {\n \"name\": \"tickSize\",\n \"type\": \"uint256\",\n \"indexed\": false,\n \"internalType\": \"uint256\"\n },\n {\n \"name\": \"question\",\n \"type\": \"string\",\n \"indexed\": false,\n \"internalType\": \"string\"\n },\n {\n \"name\": \"outcomes\",\n \"type\": \"string[]\",\n \"indexed\": false,\n \"internalType\": \"string[]\"\n },\n {\n \"name\": \"groupId\",\n \"type\": \"uint256\",\n \"indexed\": false,\n \"internalType\": \"uint256\"\n },\n {\n \"name\": \"tags\",\n \"type\": \"bytes32[]\",\n \"indexed\": false,\n \"internalType\": \"bytes32[]\"\n }\n ],\n \"anonymous\": false\n },\n {\n \"type\": \"event\",\n \"name\": \"MarketCreationFeeCollected\",\n \"inputs\": [\n {\n \"name\": \"venueId\",\n \"type\": \"uint256\",\n \"indexed\": true,\n \"internalType\": \"uint256\"\n },\n {\n \"name\": \"payer\",\n \"type\": \"address\",\n \"indexed\": true,\n \"internalType\": \"address\"\n },\n {\n \"name\": \"protocolShare\",\n \"type\": \"uint256\",\n \"indexed\": false,\n \"internalType\": \"uint256\"\n },\n {\n \"name\": \"venueShare\",\n \"type\": \"uint256\",\n \"indexed\": false,\n \"internalType\": \"uint256\"\n }\n ],\n \"anonymous\": false\n },\n {\n \"type\": \"event\",\n \"name\": \"MarketResolved\",\n \"inputs\": [\n {\n \"name\": \"marketId\",\n \"type\": \"uint256\",\n \"indexed\": true,\n \"internalType\": \"uint256\"\n },\n {\n \"name\": \"questionId\",\n \"type\": \"bytes32\",\n \"indexed\": true,\n \"internalType\": \"bytes32\"\n },\n {\n \"name\": \"outcome\",\n \"type\": \"string\",\n \"indexed\": false,\n \"internalType\": \"string\"\n }\n ],\n \"anonymous\": false\n },\n {\n \"type\": \"event\",\n \"name\": \"PriceMarketCreatedPyth\",\n \"inputs\": [\n {\n \"name\": \"marketId\",\n \"type\": \"uint256\",\n \"indexed\": true,\n \"internalType\": \"uint256\"\n },\n {\n \"name\": \"venueId\",\n \"type\": \"uint256\",\n \"indexed\": true,\n \"internalType\": \"uint256\"\n },\n {\n \"name\": \"pythFeedId\",\n \"type\": \"bytes32\",\n \"indexed\": true,\n \"internalType\": \"bytes32\"\n },\n {\n \"name\": \"strikePrice\",\n \"type\": \"int64\",\n \"indexed\": false,\n \"internalType\": \"int64\"\n },\n {\n \"name\": \"priceExpo\",\n \"type\": \"int32\",\n \"indexed\": false,\n \"internalType\": \"int32\"\n },\n {\n \"name\": \"openTime\",\n \"type\": \"uint256\",\n \"indexed\": false,\n \"internalType\": \"uint256\"\n },\n {\n \"name\": \"closeTime\",\n \"type\": \"uint256\",\n \"indexed\": false,\n \"internalType\": \"uint256\"\n },\n {\n \"name\": \"resolutionWindow\",\n \"type\": \"uint256\",\n \"indexed\": false,\n \"internalType\": \"uint256\"\n }\n ],\n \"anonymous\": false\n },\n {\n \"type\": \"event\",\n \"name\": \"PriceMarketInvalidated\",\n \"inputs\": [\n {\n \"name\": \"marketId\",\n \"type\": \"uint256\",\n \"indexed\": true,\n \"internalType\": \"uint256\"\n },\n {\n \"name\": \"caller\",\n \"type\": \"address\",\n \"indexed\": true,\n \"internalType\": \"address\"\n }\n ],\n \"anonymous\": false\n },\n {\n \"type\": \"event\",\n \"name\": \"PriceMarketResolvedPyth\",\n \"inputs\": [\n {\n \"name\": \"marketId\",\n \"type\": \"uint256\",\n \"indexed\": true,\n \"internalType\": \"uint256\"\n },\n {\n \"name\": \"finalPrice\",\n \"type\": \"int64\",\n \"indexed\": false,\n \"internalType\": \"int64\"\n },\n {\n \"name\": \"strikePrice\",\n \"type\": \"int64\",\n \"indexed\": false,\n \"internalType\": \"int64\"\n },\n {\n \"name\": \"openPriceTime\",\n \"type\": \"uint256\",\n \"indexed\": false,\n \"internalType\": \"uint256\"\n },\n {\n \"name\": \"outcome\",\n \"type\": \"string\",\n \"indexed\": false,\n \"internalType\": \"string\"\n }\n ],\n \"anonymous\": false\n },\n {\n \"type\": \"event\",\n \"name\": \"PythContractUpdated\",\n \"inputs\": [\n {\n \"name\": \"pythContract\",\n \"type\": \"address\",\n \"indexed\": true,\n \"internalType\": \"address\"\n }\n ],\n \"anonymous\": false\n },\n {\n \"type\": \"event\",\n \"name\": \"WrappedCollateralRegistered\",\n \"inputs\": [\n {\n \"name\": \"underlyingCollateral\",\n \"type\": \"address\",\n \"indexed\": true,\n \"internalType\": \"address\"\n },\n {\n \"name\": \"wrappedCollateral\",\n \"type\": \"address\",\n \"indexed\": true,\n \"internalType\": \"address\"\n }\n ],\n \"anonymous\": false\n },\n {\n \"type\": \"error\",\n \"name\": \"AssertionInProgress\",\n \"inputs\": []\n },\n {\n \"type\": \"error\",\n \"name\": \"CloseTimeNotAfterOpenTime\",\n \"inputs\": []\n },\n {\n \"type\": \"error\",\n \"name\": \"CloseTimeNotReached\",\n \"inputs\": []\n },\n {\n \"type\": \"error\",\n \"name\": \"CollateralNotWhitelisted\",\n \"inputs\": []\n },\n {\n \"type\": \"error\",\n \"name\": \"CreationAccessDenied\",\n \"inputs\": []\n },\n {\n \"type\": \"error\",\n \"name\": \"ETHRefundFailed\",\n \"inputs\": []\n },\n {\n \"type\": \"error\",\n \"name\": \"FeedProviderMismatch\",\n \"inputs\": [\n {\n \"name\": \"expected\",\n \"type\": \"uint8\",\n \"internalType\": \"enum FeedProvider\"\n },\n {\n \"name\": \"actual\",\n \"type\": \"uint8\",\n \"internalType\": \"enum FeedProvider\"\n }\n ]\n },\n {\n \"type\": \"error\",\n \"name\": \"GracePeriodNotElapsed\",\n \"inputs\": []\n },\n {\n \"type\": \"error\",\n \"name\": \"InsufficientPythFee\",\n \"inputs\": []\n },\n {\n \"type\": \"error\",\n \"name\": \"InvalidAddress\",\n \"inputs\": []\n },\n {\n \"type\": \"error\",\n \"name\": \"InvalidCollateral\",\n \"inputs\": []\n },\n {\n \"type\": \"error\",\n \"name\": \"InvalidMarketId\",\n \"inputs\": []\n },\n {\n \"type\": \"error\",\n \"name\": \"InvalidMarketId\",\n \"inputs\": []\n },\n {\n \"type\": \"error\",\n \"name\": \"InvalidOpenTime\",\n \"inputs\": []\n },\n {\n \"type\": \"error\",\n \"name\": \"InvalidOutcomesLength\",\n \"inputs\": []\n },\n {\n \"type\": \"error\",\n \"name\": \"InvalidTickSize\",\n \"inputs\": []\n },\n {\n \"type\": \"error\",\n \"name\": \"MarketNotActive\",\n \"inputs\": []\n },\n {\n \"type\": \"error\",\n \"name\": \"NoClosePriceInWindow\",\n \"inputs\": []\n },\n {\n \"type\": \"error\",\n \"name\": \"NoOpenPriceInWindow\",\n \"inputs\": []\n },\n {\n \"type\": \"error\",\n \"name\": \"NotContractOwner\",\n \"inputs\": [\n {\n \"name\": \"_user\",\n \"type\": \"address\",\n \"internalType\": \"address\"\n },\n {\n \"name\": \"_contractOwner\",\n \"type\": \"address\",\n \"internalType\": \"address\"\n }\n ]\n },\n {\n \"type\": \"error\",\n \"name\": \"NotPriceMarket\",\n \"inputs\": []\n },\n {\n \"type\": \"error\",\n \"name\": \"OracleAlreadyExists\",\n \"inputs\": []\n },\n {\n \"type\": \"error\",\n \"name\": \"OracleCtfNotSet\",\n \"inputs\": []\n },\n {\n \"type\": \"error\",\n \"name\": \"PriceMarketAlreadyResolved\",\n \"inputs\": []\n },\n {\n \"type\": \"error\",\n \"name\": \"ProtocolPaused\",\n \"inputs\": []\n },\n {\n \"type\": \"error\",\n \"name\": \"PythContractNotConfigured\",\n \"inputs\": []\n },\n {\n \"type\": \"error\",\n \"name\": \"RegistryAlreadyExists\",\n \"inputs\": []\n },\n {\n \"type\": \"error\",\n \"name\": \"ResolutionWindowTooLarge\",\n \"inputs\": []\n },\n {\n \"type\": \"error\",\n \"name\": \"TooManyTags\",\n \"inputs\": []\n },\n {\n \"type\": \"error\",\n \"name\": \"TradingAlreadyExists\",\n \"inputs\": []\n },\n {\n \"type\": \"error\",\n \"name\": \"TransferFromFailed\",\n \"inputs\": []\n },\n {\n \"type\": \"error\",\n \"name\": \"VenueInactive\",\n \"inputs\": []\n },\n {\n \"type\": \"error\",\n \"name\": \"VenueNotFound\",\n \"inputs\": []\n },\n {\n \"type\": \"error\",\n \"name\": \"VenueSuspended\",\n \"inputs\": []\n },\n {\n \"type\": \"error\",\n \"name\": \"ZeroAddress\",\n \"inputs\": []\n },\n {\n \"type\": \"error\",\n \"name\": \"ZeroStrikePrice\",\n \"inputs\": []\n }\n]\n","[\n {\n \"type\": \"function\",\n \"name\": \"batchCancelOrders\",\n \"inputs\": [\n {\n \"name\": \"orderIds\",\n \"type\": \"uint256[]\",\n \"internalType\": \"uint256[]\"\n }\n ],\n \"outputs\": [\n {\n \"name\": \"cancelledCount\",\n \"type\": \"uint256\",\n \"internalType\": \"uint256\"\n }\n ],\n \"stateMutability\": \"nonpayable\"\n },\n {\n \"type\": \"function\",\n \"name\": \"batchPlaceOrders\",\n \"inputs\": [\n {\n \"name\": \"marketId\",\n \"type\": \"uint256\",\n \"internalType\": \"uint256\"\n },\n {\n \"name\": \"orders\",\n \"type\": \"tuple[]\",\n \"internalType\": \"struct BatchOrderParams[]\",\n \"components\": [\n {\n \"name\": \"outcomeId\",\n \"type\": \"uint256\",\n \"internalType\": \"uint256\"\n },\n {\n \"name\": \"side\",\n \"type\": \"uint8\",\n \"internalType\": \"enum Side\"\n },\n {\n \"name\": \"tick\",\n \"type\": \"uint256\",\n \"internalType\": \"uint256\"\n },\n {\n \"name\": \"qty\",\n \"type\": \"uint256\",\n \"internalType\": \"uint256\"\n },\n {\n \"name\": \"expiry\",\n \"type\": \"uint256\",\n \"internalType\": \"uint256\"\n }\n ]\n }\n ],\n \"outputs\": [\n {\n \"name\": \"orderIds\",\n \"type\": \"uint256[]\",\n \"internalType\": \"uint256[]\"\n }\n ],\n \"stateMutability\": \"nonpayable\"\n },\n {\n \"type\": \"function\",\n \"name\": \"cancelAndReplace\",\n \"inputs\": [\n {\n \"name\": \"marketId\",\n \"type\": \"uint256\",\n \"internalType\": \"uint256\"\n },\n {\n \"name\": \"cancelOrderIds\",\n \"type\": \"uint256[]\",\n \"internalType\": \"uint256[]\"\n },\n {\n \"name\": \"newOrders\",\n \"type\": \"tuple[]\",\n \"internalType\": \"struct BatchOrderParams[]\",\n \"components\": [\n {\n \"name\": \"outcomeId\",\n \"type\": \"uint256\",\n \"internalType\": \"uint256\"\n },\n {\n \"name\": \"side\",\n \"type\": \"uint8\",\n \"internalType\": \"enum Side\"\n },\n {\n \"name\": \"tick\",\n \"type\": \"uint256\",\n \"internalType\": \"uint256\"\n },\n {\n \"name\": \"qty\",\n \"type\": \"uint256\",\n \"internalType\": \"uint256\"\n },\n {\n \"name\": \"expiry\",\n \"type\": \"uint256\",\n \"internalType\": \"uint256\"\n }\n ]\n }\n ],\n \"outputs\": [\n {\n \"name\": \"cancelledCount\",\n \"type\": \"uint256\",\n \"internalType\": \"uint256\"\n },\n {\n \"name\": \"newOrderIds\",\n \"type\": \"uint256[]\",\n \"internalType\": \"uint256[]\"\n }\n ],\n \"stateMutability\": \"nonpayable\"\n },\n {\n \"type\": \"event\",\n \"name\": \"OrderCancelled\",\n \"inputs\": [\n {\n \"name\": \"orderId\",\n \"type\": \"uint256\",\n \"indexed\": true,\n \"internalType\": \"uint256\"\n }\n ],\n \"anonymous\": false\n },\n {\n \"type\": \"event\",\n \"name\": \"OrderCreated\",\n \"inputs\": [\n {\n \"name\": \"orderId\",\n \"type\": \"uint256\",\n \"indexed\": true,\n \"internalType\": \"uint256\"\n },\n {\n \"name\": \"owner\",\n \"type\": \"address\",\n \"indexed\": true,\n \"internalType\": \"address\"\n },\n {\n \"name\": \"marketId\",\n \"type\": \"uint256\",\n \"indexed\": false,\n \"internalType\": \"uint256\"\n }\n ],\n \"anonymous\": false\n },\n {\n \"type\": \"event\",\n \"name\": \"OrderDeleted\",\n \"inputs\": [\n {\n \"name\": \"orderId\",\n \"type\": \"uint256\",\n \"indexed\": true,\n \"internalType\": \"uint256\"\n }\n ],\n \"anonymous\": false\n },\n {\n \"type\": \"event\",\n \"name\": \"OrderPlaced\",\n \"inputs\": [\n {\n \"name\": \"orderId\",\n \"type\": \"uint256\",\n \"indexed\": true,\n \"internalType\": \"uint256\"\n },\n {\n \"name\": \"marketId\",\n \"type\": \"uint256\",\n \"indexed\": true,\n \"internalType\": \"uint256\"\n },\n {\n \"name\": \"outcomeId\",\n \"type\": \"uint256\",\n \"indexed\": false,\n \"internalType\": \"uint256\"\n },\n {\n \"name\": \"side\",\n \"type\": \"uint8\",\n \"indexed\": false,\n \"internalType\": \"enum Side\"\n },\n {\n \"name\": \"tick\",\n \"type\": \"uint256\",\n \"indexed\": false,\n \"internalType\": \"uint256\"\n },\n {\n \"name\": \"qty\",\n \"type\": \"uint256\",\n \"indexed\": false,\n \"internalType\": \"uint256\"\n },\n {\n \"name\": \"owner\",\n \"type\": \"address\",\n \"indexed\": true,\n \"internalType\": \"address\"\n }\n ],\n \"anonymous\": false\n },\n {\n \"type\": \"event\",\n \"name\": \"TopOfBookChanged\",\n \"inputs\": [\n {\n \"name\": \"marketId\",\n \"type\": \"uint256\",\n \"indexed\": true,\n \"internalType\": \"uint256\"\n },\n {\n \"name\": \"outcomeId\",\n \"type\": \"uint256\",\n \"indexed\": true,\n \"internalType\": \"uint256\"\n },\n {\n \"name\": \"side\",\n \"type\": \"uint8\",\n \"indexed\": false,\n \"internalType\": \"enum Side\"\n },\n {\n \"name\": \"bestTick\",\n \"type\": \"uint256\",\n \"indexed\": false,\n \"internalType\": \"uint256\"\n }\n ],\n \"anonymous\": false\n },\n {\n \"type\": \"error\",\n \"name\": \"BatchTooLarge\",\n \"inputs\": []\n },\n {\n \"type\": \"error\",\n \"name\": \"EmptyBatch\",\n \"inputs\": []\n },\n {\n \"type\": \"error\",\n \"name\": \"InvalidOutcome\",\n \"inputs\": []\n },\n {\n \"type\": \"error\",\n \"name\": \"InvalidQuantity\",\n \"inputs\": []\n },\n {\n \"type\": \"error\",\n \"name\": \"InvalidTick\",\n \"inputs\": []\n },\n {\n \"type\": \"error\",\n \"name\": \"MakerErc165CallFailed\",\n \"inputs\": []\n },\n {\n \"type\": \"error\",\n \"name\": \"MakerNotErc1155Receiver\",\n \"inputs\": []\n },\n {\n \"type\": \"error\",\n \"name\": \"MarketNotActive\",\n \"inputs\": []\n },\n {\n \"type\": \"error\",\n \"name\": \"MarketPaused\",\n \"inputs\": []\n },\n {\n \"type\": \"error\",\n \"name\": \"OrderExpired\",\n \"inputs\": []\n },\n {\n \"type\": \"error\",\n \"name\": \"OrderTooSmall\",\n \"inputs\": []\n },\n {\n \"type\": \"error\",\n \"name\": \"ProtocolPaused\",\n \"inputs\": []\n },\n {\n \"type\": \"error\",\n \"name\": \"TradingAccessDenied\",\n \"inputs\": []\n },\n {\n \"type\": \"error\",\n \"name\": \"TransferFailed\",\n \"inputs\": []\n },\n {\n \"type\": \"error\",\n \"name\": \"TransferFromFailed\",\n \"inputs\": []\n },\n {\n \"type\": \"error\",\n \"name\": \"VenueInactive\",\n \"inputs\": []\n },\n {\n \"type\": \"error\",\n \"name\": \"VenueNotFound\",\n \"inputs\": []\n },\n {\n \"type\": \"error\",\n \"name\": \"VenueSuspended\",\n \"inputs\": []\n }\n]\n","[\n {\n \"type\": \"constructor\",\n \"inputs\": [\n {\n \"name\": \"_owner\",\n \"type\": \"address\",\n \"internalType\": \"address\"\n }\n ],\n \"stateMutability\": \"nonpayable\"\n },\n {\n \"type\": \"function\",\n \"name\": \"addToWhitelist\",\n \"inputs\": [\n {\n \"name\": \"users\",\n \"type\": \"address[]\",\n \"internalType\": \"address[]\"\n }\n ],\n \"outputs\": [],\n \"stateMutability\": \"nonpayable\"\n },\n {\n \"type\": \"function\",\n \"name\": \"isAllowed\",\n \"inputs\": [\n {\n \"name\": \"user\",\n \"type\": \"address\",\n \"internalType\": \"address\"\n }\n ],\n \"outputs\": [\n {\n \"name\": \"\",\n \"type\": \"bool\",\n \"internalType\": \"bool\"\n }\n ],\n \"stateMutability\": \"view\"\n },\n {\n \"type\": \"function\",\n \"name\": \"owner\",\n \"inputs\": [],\n \"outputs\": [\n {\n \"name\": \"\",\n \"type\": \"address\",\n \"internalType\": \"address\"\n }\n ],\n \"stateMutability\": \"view\"\n },\n {\n \"type\": \"function\",\n \"name\": \"removeFromWhitelist\",\n \"inputs\": [\n {\n \"name\": \"users\",\n \"type\": \"address[]\",\n \"internalType\": \"address[]\"\n }\n ],\n \"outputs\": [],\n \"stateMutability\": \"nonpayable\"\n },\n {\n \"type\": \"function\",\n \"name\": \"transferOwnership\",\n \"inputs\": [\n {\n \"name\": \"newOwner\",\n \"type\": \"address\",\n \"internalType\": \"address\"\n }\n ],\n \"outputs\": [],\n \"stateMutability\": \"nonpayable\"\n },\n {\n \"type\": \"function\",\n \"name\": \"whitelist\",\n \"inputs\": [\n {\n \"name\": \"\",\n \"type\": \"address\",\n \"internalType\": \"address\"\n }\n ],\n \"outputs\": [\n {\n \"name\": \"\",\n \"type\": \"bool\",\n \"internalType\": \"bool\"\n }\n ],\n \"stateMutability\": \"view\"\n },\n {\n \"type\": \"event\",\n \"name\": \"AddedToWhitelist\",\n \"inputs\": [\n {\n \"name\": \"users\",\n \"type\": \"address[]\",\n \"indexed\": false,\n \"internalType\": \"address[]\"\n }\n ],\n \"anonymous\": false\n },\n {\n \"type\": \"event\",\n \"name\": \"OwnershipTransferred\",\n \"inputs\": [\n {\n \"name\": \"previousOwner\",\n \"type\": \"address\",\n \"indexed\": true,\n \"internalType\": \"address\"\n },\n {\n \"name\": \"newOwner\",\n \"type\": \"address\",\n \"indexed\": true,\n \"internalType\": \"address\"\n }\n ],\n \"anonymous\": false\n },\n {\n \"type\": \"event\",\n \"name\": \"RemovedFromWhitelist\",\n \"inputs\": [\n {\n \"name\": \"users\",\n \"type\": \"address[]\",\n \"indexed\": false,\n \"internalType\": \"address[]\"\n }\n ],\n \"anonymous\": false\n },\n {\n \"type\": \"error\",\n \"name\": \"OnlyOwner\",\n \"inputs\": []\n },\n {\n \"type\": \"error\",\n \"name\": \"ZeroAddress\",\n \"inputs\": []\n }\n]\n","[\n {\n \"type\": \"function\",\n \"name\": \"balanceOf\",\n \"inputs\": [\n {\n \"name\": \"account\",\n \"type\": \"address\",\n \"internalType\": \"address\"\n },\n {\n \"name\": \"id\",\n \"type\": \"uint256\",\n \"internalType\": \"uint256\"\n }\n ],\n \"outputs\": [\n {\n \"name\": \"\",\n \"type\": \"uint256\",\n \"internalType\": \"uint256\"\n }\n ],\n \"stateMutability\": \"view\"\n },\n {\n \"type\": \"function\",\n \"name\": \"getCollectionId\",\n \"inputs\": [\n {\n \"name\": \"parentCollectionId\",\n \"type\": \"bytes32\",\n \"internalType\": \"bytes32\"\n },\n {\n \"name\": \"conditionId\",\n \"type\": \"bytes32\",\n \"internalType\": \"bytes32\"\n },\n {\n \"name\": \"indexSet\",\n \"type\": \"uint256\",\n \"internalType\": \"uint256\"\n }\n ],\n \"outputs\": [\n {\n \"name\": \"collectionId\",\n \"type\": \"bytes32\",\n \"internalType\": \"bytes32\"\n }\n ],\n \"stateMutability\": \"view\"\n },\n {\n \"type\": \"function\",\n \"name\": \"getConditionId\",\n \"inputs\": [\n {\n \"name\": \"oracle\",\n \"type\": \"address\",\n \"internalType\": \"address\"\n },\n {\n \"name\": \"questionId\",\n \"type\": \"bytes32\",\n \"internalType\": \"bytes32\"\n },\n {\n \"name\": \"outcomeSlotCount\",\n \"type\": \"uint256\",\n \"internalType\": \"uint256\"\n }\n ],\n \"outputs\": [\n {\n \"name\": \"conditionId\",\n \"type\": \"bytes32\",\n \"internalType\": \"bytes32\"\n }\n ],\n \"stateMutability\": \"pure\"\n },\n {\n \"type\": \"function\",\n \"name\": \"getOutcomeSlotCount\",\n \"inputs\": [\n {\n \"name\": \"conditionId\",\n \"type\": \"bytes32\",\n \"internalType\": \"bytes32\"\n }\n ],\n \"outputs\": [\n {\n \"name\": \"outcomeSlotCount\",\n \"type\": \"uint256\",\n \"internalType\": \"uint256\"\n }\n ],\n \"stateMutability\": \"view\"\n },\n {\n \"type\": \"function\",\n \"name\": \"getPositionId\",\n \"inputs\": [\n {\n \"name\": \"collateralToken\",\n \"type\": \"address\",\n \"internalType\": \"contract IERC20\"\n },\n {\n \"name\": \"collectionId\",\n \"type\": \"bytes32\",\n \"internalType\": \"bytes32\"\n }\n ],\n \"outputs\": [\n {\n \"name\": \"positionId\",\n \"type\": \"uint256\",\n \"internalType\": \"uint256\"\n }\n ],\n \"stateMutability\": \"pure\"\n },\n {\n \"type\": \"function\",\n \"name\": \"mergePositions\",\n \"inputs\": [\n {\n \"name\": \"collateralToken\",\n \"type\": \"address\",\n \"internalType\": \"contract IERC20\"\n },\n {\n \"name\": \"parentCollectionId\",\n \"type\": \"bytes32\",\n \"internalType\": \"bytes32\"\n },\n {\n \"name\": \"conditionId\",\n \"type\": \"bytes32\",\n \"internalType\": \"bytes32\"\n },\n {\n \"name\": \"partition\",\n \"type\": \"uint256[]\",\n \"internalType\": \"uint256[]\"\n },\n {\n \"name\": \"amount\",\n \"type\": \"uint256\",\n \"internalType\": \"uint256\"\n }\n ],\n \"outputs\": [],\n \"stateMutability\": \"nonpayable\"\n },\n {\n \"type\": \"function\",\n \"name\": \"payoutDenominator\",\n \"inputs\": [\n {\n \"name\": \"conditionId\",\n \"type\": \"bytes32\",\n \"internalType\": \"bytes32\"\n }\n ],\n \"outputs\": [\n {\n \"name\": \"\",\n \"type\": \"uint256\",\n \"internalType\": \"uint256\"\n }\n ],\n \"stateMutability\": \"view\"\n },\n {\n \"type\": \"function\",\n \"name\": \"payoutNumerators\",\n \"inputs\": [\n {\n \"name\": \"conditionId\",\n \"type\": \"bytes32\",\n \"internalType\": \"bytes32\"\n },\n {\n \"name\": \"index\",\n \"type\": \"uint256\",\n \"internalType\": \"uint256\"\n }\n ],\n \"outputs\": [\n {\n \"name\": \"\",\n \"type\": \"uint256\",\n \"internalType\": \"uint256\"\n }\n ],\n \"stateMutability\": \"view\"\n },\n {\n \"type\": \"function\",\n \"name\": \"prepareCondition\",\n \"inputs\": [\n {\n \"name\": \"oracle\",\n \"type\": \"address\",\n \"internalType\": \"address\"\n },\n {\n \"name\": \"questionId\",\n \"type\": \"bytes32\",\n \"internalType\": \"bytes32\"\n },\n {\n \"name\": \"outcomeSlotCount\",\n \"type\": \"uint256\",\n \"internalType\": \"uint256\"\n }\n ],\n \"outputs\": [],\n \"stateMutability\": \"nonpayable\"\n },\n {\n \"type\": \"function\",\n \"name\": \"redeemPositions\",\n \"inputs\": [\n {\n \"name\": \"collateralToken\",\n \"type\": \"address\",\n \"internalType\": \"contract IERC20\"\n },\n {\n \"name\": \"parentCollectionId\",\n \"type\": \"bytes32\",\n \"internalType\": \"bytes32\"\n },\n {\n \"name\": \"conditionId\",\n \"type\": \"bytes32\",\n \"internalType\": \"bytes32\"\n },\n {\n \"name\": \"indexSets\",\n \"type\": \"uint256[]\",\n \"internalType\": \"uint256[]\"\n }\n ],\n \"outputs\": [],\n \"stateMutability\": \"nonpayable\"\n },\n {\n \"type\": \"function\",\n \"name\": \"reportPayouts\",\n \"inputs\": [\n {\n \"name\": \"questionId\",\n \"type\": \"bytes32\",\n \"internalType\": \"bytes32\"\n },\n {\n \"name\": \"payouts\",\n \"type\": \"uint256[]\",\n \"internalType\": \"uint256[]\"\n }\n ],\n \"outputs\": [],\n \"stateMutability\": \"nonpayable\"\n },\n {\n \"type\": \"function\",\n \"name\": \"splitPosition\",\n \"inputs\": [\n {\n \"name\": \"collateralToken\",\n \"type\": \"address\",\n \"internalType\": \"contract IERC20\"\n },\n {\n \"name\": \"parentCollectionId\",\n \"type\": \"bytes32\",\n \"internalType\": \"bytes32\"\n },\n {\n \"name\": \"conditionId\",\n \"type\": \"bytes32\",\n \"internalType\": \"bytes32\"\n },\n {\n \"name\": \"partition\",\n \"type\": \"uint256[]\",\n \"internalType\": \"uint256[]\"\n },\n {\n \"name\": \"amount\",\n \"type\": \"uint256\",\n \"internalType\": \"uint256\"\n }\n ],\n \"outputs\": [],\n \"stateMutability\": \"nonpayable\"\n }\n]\n","[\n {\n \"type\": \"constructor\",\n \"inputs\": [\n {\n \"name\": \"_name\",\n \"type\": \"string\",\n \"internalType\": \"string\"\n },\n {\n \"name\": \"_symbol\",\n \"type\": \"string\",\n \"internalType\": \"string\"\n },\n {\n \"name\": \"_decimals\",\n \"type\": \"uint8\",\n \"internalType\": \"uint8\"\n }\n ],\n \"stateMutability\": \"nonpayable\"\n },\n {\n \"type\": \"function\",\n \"name\": \"allowance\",\n \"inputs\": [\n {\n \"name\": \"\",\n \"type\": \"address\",\n \"internalType\": \"address\"\n },\n {\n \"name\": \"\",\n \"type\": \"address\",\n \"internalType\": \"address\"\n }\n ],\n \"outputs\": [\n {\n \"name\": \"\",\n \"type\": \"uint256\",\n \"internalType\": \"uint256\"\n }\n ],\n \"stateMutability\": \"view\"\n },\n {\n \"type\": \"function\",\n \"name\": \"approve\",\n \"inputs\": [\n {\n \"name\": \"spender\",\n \"type\": \"address\",\n \"internalType\": \"address\"\n },\n {\n \"name\": \"amount\",\n \"type\": \"uint256\",\n \"internalType\": \"uint256\"\n }\n ],\n \"outputs\": [\n {\n \"name\": \"\",\n \"type\": \"bool\",\n \"internalType\": \"bool\"\n }\n ],\n \"stateMutability\": \"nonpayable\"\n },\n {\n \"type\": \"function\",\n \"name\": \"balanceOf\",\n \"inputs\": [\n {\n \"name\": \"\",\n \"type\": \"address\",\n \"internalType\": \"address\"\n }\n ],\n \"outputs\": [\n {\n \"name\": \"\",\n \"type\": \"uint256\",\n \"internalType\": \"uint256\"\n }\n ],\n \"stateMutability\": \"view\"\n },\n {\n \"type\": \"function\",\n \"name\": \"decimals\",\n \"inputs\": [],\n \"outputs\": [\n {\n \"name\": \"\",\n \"type\": \"uint8\",\n \"internalType\": \"uint8\"\n }\n ],\n \"stateMutability\": \"view\"\n },\n {\n \"type\": \"function\",\n \"name\": \"mint\",\n \"inputs\": [\n {\n \"name\": \"to\",\n \"type\": \"address\",\n \"internalType\": \"address\"\n },\n {\n \"name\": \"amount\",\n \"type\": \"uint256\",\n \"internalType\": \"uint256\"\n }\n ],\n \"outputs\": [],\n \"stateMutability\": \"nonpayable\"\n },\n {\n \"type\": \"function\",\n \"name\": \"name\",\n \"inputs\": [],\n \"outputs\": [\n {\n \"name\": \"\",\n \"type\": \"string\",\n \"internalType\": \"string\"\n }\n ],\n \"stateMutability\": \"view\"\n },\n {\n \"type\": \"function\",\n \"name\": \"symbol\",\n \"inputs\": [],\n \"outputs\": [\n {\n \"name\": \"\",\n \"type\": \"string\",\n \"internalType\": \"string\"\n }\n ],\n \"stateMutability\": \"view\"\n },\n {\n \"type\": \"function\",\n \"name\": \"totalSupply\",\n \"inputs\": [],\n \"outputs\": [\n {\n \"name\": \"\",\n \"type\": \"uint256\",\n \"internalType\": \"uint256\"\n }\n ],\n \"stateMutability\": \"view\"\n },\n {\n \"type\": \"function\",\n \"name\": \"transfer\",\n \"inputs\": [\n {\n \"name\": \"to\",\n \"type\": \"address\",\n \"internalType\": \"address\"\n },\n {\n \"name\": \"amount\",\n \"type\": \"uint256\",\n \"internalType\": \"uint256\"\n }\n ],\n \"outputs\": [\n {\n \"name\": \"\",\n \"type\": \"bool\",\n \"internalType\": \"bool\"\n }\n ],\n \"stateMutability\": \"nonpayable\"\n },\n {\n \"type\": \"function\",\n \"name\": \"transferFrom\",\n \"inputs\": [\n {\n \"name\": \"from\",\n \"type\": \"address\",\n \"internalType\": \"address\"\n },\n {\n \"name\": \"to\",\n \"type\": \"address\",\n \"internalType\": \"address\"\n },\n {\n \"name\": \"amount\",\n \"type\": \"uint256\",\n \"internalType\": \"uint256\"\n }\n ],\n \"outputs\": [\n {\n \"name\": \"\",\n \"type\": \"bool\",\n \"internalType\": \"bool\"\n }\n ],\n \"stateMutability\": \"nonpayable\"\n },\n {\n \"type\": \"event\",\n \"name\": \"Approval\",\n \"inputs\": [\n {\n \"name\": \"owner\",\n \"type\": \"address\",\n \"indexed\": true,\n \"internalType\": \"address\"\n },\n {\n \"name\": \"spender\",\n \"type\": \"address\",\n \"indexed\": true,\n \"internalType\": \"address\"\n },\n {\n \"name\": \"value\",\n \"type\": \"uint256\",\n \"indexed\": false,\n \"internalType\": \"uint256\"\n }\n ],\n \"anonymous\": false\n },\n {\n \"type\": \"event\",\n \"name\": \"Transfer\",\n \"inputs\": [\n {\n \"name\": \"from\",\n \"type\": \"address\",\n \"indexed\": true,\n \"internalType\": \"address\"\n },\n {\n \"name\": \"to\",\n \"type\": \"address\",\n \"indexed\": true,\n \"internalType\": \"address\"\n },\n {\n \"name\": \"value\",\n \"type\": \"uint256\",\n \"indexed\": false,\n \"internalType\": \"uint256\"\n }\n ],\n \"anonymous\": false\n }\n]\n","[\n {\n \"type\": \"function\",\n \"name\": \"assertTruth\",\n \"inputs\": [\n {\n \"name\": \"claim\",\n \"type\": \"bytes\",\n \"internalType\": \"bytes\"\n },\n {\n \"name\": \"asserter\",\n \"type\": \"address\",\n \"internalType\": \"address\"\n },\n {\n \"name\": \"callbackRecipient\",\n \"type\": \"address\",\n \"internalType\": \"address\"\n },\n {\n \"name\": \"escalationManager\",\n \"type\": \"address\",\n \"internalType\": \"address\"\n },\n {\n \"name\": \"liveness\",\n \"type\": \"uint64\",\n \"internalType\": \"uint64\"\n },\n {\n \"name\": \"currency\",\n \"type\": \"address\",\n \"internalType\": \"contract IERC20\"\n },\n {\n \"name\": \"bond\",\n \"type\": \"uint256\",\n \"internalType\": \"uint256\"\n },\n {\n \"name\": \"identifier\",\n \"type\": \"bytes32\",\n \"internalType\": \"bytes32\"\n },\n {\n \"name\": \"domainId\",\n \"type\": \"bytes32\",\n \"internalType\": \"bytes32\"\n }\n ],\n \"outputs\": [\n {\n \"name\": \"\",\n \"type\": \"bytes32\",\n \"internalType\": \"bytes32\"\n }\n ],\n \"stateMutability\": \"nonpayable\"\n },\n {\n \"type\": \"function\",\n \"name\": \"defaultIdentifier\",\n \"inputs\": [],\n \"outputs\": [\n {\n \"name\": \"\",\n \"type\": \"bytes32\",\n \"internalType\": \"bytes32\"\n }\n ],\n \"stateMutability\": \"view\"\n },\n {\n \"type\": \"function\",\n \"name\": \"disputeAssertion\",\n \"inputs\": [\n {\n \"name\": \"assertionId\",\n \"type\": \"bytes32\",\n \"internalType\": \"bytes32\"\n },\n {\n \"name\": \"disputer\",\n \"type\": \"address\",\n \"internalType\": \"address\"\n }\n ],\n \"outputs\": [],\n \"stateMutability\": \"nonpayable\"\n },\n {\n \"type\": \"function\",\n \"name\": \"getAssertion\",\n \"inputs\": [\n {\n \"name\": \"assertionId\",\n \"type\": \"bytes32\",\n \"internalType\": \"bytes32\"\n }\n ],\n \"outputs\": [\n {\n \"name\": \"\",\n \"type\": \"tuple\",\n \"internalType\": \"struct OptimisticOracleV3Interface.Assertion\",\n \"components\": [\n {\n \"name\": \"escalationManagerSettings\",\n \"type\": \"tuple\",\n \"internalType\": \"struct OptimisticOracleV3Interface.EscalationManagerSettings\",\n \"components\": [\n {\n \"name\": \"arbitrateViaEscalationManager\",\n \"type\": \"bool\",\n \"internalType\": \"bool\"\n },\n {\n \"name\": \"discardOracle\",\n \"type\": \"bool\",\n \"internalType\": \"bool\"\n },\n {\n \"name\": \"validateDisputers\",\n \"type\": \"bool\",\n \"internalType\": \"bool\"\n },\n {\n \"name\": \"assertingCaller\",\n \"type\": \"address\",\n \"internalType\": \"address\"\n },\n {\n \"name\": \"escalationManager\",\n \"type\": \"address\",\n \"internalType\": \"address\"\n }\n ]\n },\n {\n \"name\": \"asserter\",\n \"type\": \"address\",\n \"internalType\": \"address\"\n },\n {\n \"name\": \"assertionTime\",\n \"type\": \"uint64\",\n \"internalType\": \"uint64\"\n },\n {\n \"name\": \"settled\",\n \"type\": \"bool\",\n \"internalType\": \"bool\"\n },\n {\n \"name\": \"currency\",\n \"type\": \"address\",\n \"internalType\": \"contract IERC20\"\n },\n {\n \"name\": \"expirationTime\",\n \"type\": \"uint64\",\n \"internalType\": \"uint64\"\n },\n {\n \"name\": \"settlementResolution\",\n \"type\": \"bool\",\n \"internalType\": \"bool\"\n },\n {\n \"name\": \"domainId\",\n \"type\": \"bytes32\",\n \"internalType\": \"bytes32\"\n },\n {\n \"name\": \"identifier\",\n \"type\": \"bytes32\",\n \"internalType\": \"bytes32\"\n },\n {\n \"name\": \"bond\",\n \"type\": \"uint256\",\n \"internalType\": \"uint256\"\n },\n {\n \"name\": \"callbackRecipient\",\n \"type\": \"address\",\n \"internalType\": \"address\"\n },\n {\n \"name\": \"disputer\",\n \"type\": \"address\",\n \"internalType\": \"address\"\n }\n ]\n }\n ],\n \"stateMutability\": \"view\"\n },\n {\n \"type\": \"function\",\n \"name\": \"getAssertionResult\",\n \"inputs\": [\n {\n \"name\": \"assertionId\",\n \"type\": \"bytes32\",\n \"internalType\": \"bytes32\"\n }\n ],\n \"outputs\": [\n {\n \"name\": \"\",\n \"type\": \"bool\",\n \"internalType\": \"bool\"\n }\n ],\n \"stateMutability\": \"view\"\n },\n {\n \"type\": \"function\",\n \"name\": \"getMinimumBond\",\n \"inputs\": [\n {\n \"name\": \"currency\",\n \"type\": \"address\",\n \"internalType\": \"address\"\n }\n ],\n \"outputs\": [\n {\n \"name\": \"\",\n \"type\": \"uint256\",\n \"internalType\": \"uint256\"\n }\n ],\n \"stateMutability\": \"view\"\n },\n {\n \"type\": \"function\",\n \"name\": \"isSettled\",\n \"inputs\": [\n {\n \"name\": \"assertionId\",\n \"type\": \"bytes32\",\n \"internalType\": \"bytes32\"\n }\n ],\n \"outputs\": [\n {\n \"name\": \"settled\",\n \"type\": \"bool\",\n \"internalType\": \"bool\"\n }\n ],\n \"stateMutability\": \"view\"\n },\n {\n \"type\": \"function\",\n \"name\": \"settleAssertion\",\n \"inputs\": [\n {\n \"name\": \"assertionId\",\n \"type\": \"bytes32\",\n \"internalType\": \"bytes32\"\n }\n ],\n \"outputs\": [],\n \"stateMutability\": \"nonpayable\"\n }\n]\n","import { BaseModule } from './base';\nimport { VenueFacetABI, ProtocolFacetABI } from '../contracts';\n\nexport class VenueModule extends BaseModule {\n /**\n * Create a new venue.\n *\n * IMPORTANT: Fee and bond amounts must match your intended collateral token decimals.\n * Most venues use USDC (6 decimals), so amounts should use `parseUnits(\"amount\", 6)`.\n *\n * Example for a USDC-based venue:\n * - marketCreationFee: 0n // free creation, or parseUnits(\"10\", 6) for 10 USDC\n * - umaRewardAmount: parseUnits(\"5\", 6) // 5 USDC\n * - umaMinBond: parseUnits(\"1\", 6) // 1 USDC\n * - defaultTickSize: parseEther(\"0.01\") // 0.01 per tick (always 18 decimals)\n *\n * @param params.marketCreationFee - Upfront fee in collateral units charged on `createMarket`.\n * Can be zero. When non-zero, split 50/50 between protocol and venue.\n * When zero, gate market creation via `creationAccessControl` to deter spam.\n * Mutable post-creation via `updateMarketCreationFee`.\n * @param params.umaRewardAmount - Default reward for UMA asserters (in collateral token units).\n * @param params.umaMinBond - Minimum bond for UMA assertions (in collateral token units).\n * @param params.defaultTickSize - Price increment per tick (always 1e18 scale, e.g. 0.01e18).\n */\n async createVenue(params: {\n name: string;\n metadata: string;\n tradingAccessControl: `0x${string}`;\n creationAccessControl: `0x${string}`;\n feeRecipient: `0x${string}`;\n venueFeeBps: number;\n creatorFeeBps: number;\n defaultTickSize: bigint;\n marketCreationFee: bigint;\n umaRewardAmount: bigint;\n umaMinBond: bigint;\n }) {\n const wallet = this.walletClient;\n const account = await this.getSignerAccount();\n\n const { request } = await this.publicClient.simulateContract({\n address: this.config.diamondAddress,\n abi: VenueFacetABI,\n functionName: 'createVenue',\n args: [\n params.name,\n params.metadata,\n params.tradingAccessControl,\n params.creationAccessControl,\n params.feeRecipient,\n params.venueFeeBps,\n params.creatorFeeBps,\n params.defaultTickSize,\n params.marketCreationFee,\n params.umaRewardAmount,\n params.umaMinBond,\n ],\n account,\n });\n\n return wallet.writeContract(request);\n }\n\n /**\n * Update venue fees\n */\n async updateFees(params: {\n venueId: bigint;\n venueFeeBps: number;\n creatorFeeBps: number;\n }) {\n const wallet = this.walletClient;\n const account = await this.getSignerAccount();\n\n const { request } = await this.publicClient.simulateContract({\n address: this.config.diamondAddress,\n abi: VenueFacetABI,\n functionName: 'updateVenueFees',\n args: [params.venueId, params.venueFeeBps, params.creatorFeeBps],\n account,\n });\n\n return wallet.writeContract(request);\n }\n\n /**\n * Pause venue\n */\n async setPaused(venueId: bigint, paused: boolean) {\n const wallet = this.walletClient;\n const account = await this.getSignerAccount();\n\n const functionName = paused ? 'pauseVenue' : 'unpauseVenue';\n\n const { request } = await this.publicClient.simulateContract({\n address: this.config.diamondAddress,\n abi: VenueFacetABI,\n functionName,\n args: [venueId],\n account,\n });\n\n return wallet.writeContract(request);\n }\n\n /**\n * Get venue data from on-chain storage\n */\n async getVenue(venueId: bigint) {\n return this.publicClient.readContract({\n address: this.config.diamondAddress,\n abi: VenueFacetABI,\n functionName: 'getVenue',\n args: [venueId],\n });\n }\n\n /**\n * Update venue settings (name, metadata, access control, fee recipient)\n */\n async updateVenue(params: {\n venueId: bigint;\n name: string;\n metadata: string;\n tradingAccessControl: `0x${string}`;\n creationAccessControl: `0x${string}`;\n feeRecipient: `0x${string}`;\n }) {\n const wallet = this.walletClient;\n const account = await this.getSignerAccount();\n\n const { request } = await this.publicClient.simulateContract({\n address: this.config.diamondAddress,\n abi: VenueFacetABI,\n functionName: 'updateVenue',\n args: [\n params.venueId,\n params.name,\n params.metadata,\n params.tradingAccessControl,\n params.creationAccessControl,\n params.feeRecipient,\n ],\n account,\n });\n\n return wallet.writeContract(request);\n }\n\n /**\n * Update the upfront market creation fee for a venue. Operator-only.\n *\n * Affects only markets created after this call — existing markets keep their snapshot.\n * Pass `0n` for free creation; if you do, gate `createMarket` via `creationAccessControl`\n * to deter spam.\n *\n * @param params.newFee - New fee in collateral token units (e.g. `parseUnits(\"10\", 6)` for 10 USDC).\n */\n async updateMarketCreationFee(params: { venueId: bigint; newFee: bigint }) {\n const wallet = this.walletClient;\n const account = await this.getSignerAccount();\n\n const { request } = await this.publicClient.simulateContract({\n address: this.config.diamondAddress,\n abi: VenueFacetABI,\n functionName: 'updateVenueMarketCreationFee',\n args: [params.venueId, params.newFee],\n account,\n });\n\n return wallet.writeContract(request);\n }\n\n /**\n * Update venue oracle parameters (UMA reward and min bond)\n */\n async updateOracleParams(params: {\n venueId: bigint;\n umaRewardAmount: bigint;\n umaMinBond: bigint;\n }) {\n const wallet = this.walletClient;\n const account = await this.getSignerAccount();\n\n const { request } = await this.publicClient.simulateContract({\n address: this.config.diamondAddress,\n abi: VenueFacetABI,\n functionName: 'updateVenueOracleParams',\n args: [params.venueId, params.umaRewardAmount, params.umaMinBond],\n account,\n });\n\n return wallet.writeContract(request);\n }\n\n /**\n * Check if a user can trade on a venue (venue-level AC only, no market override).\n */\n async canTrade(user: `0x${string}`, venueId: bigint): Promise<boolean> {\n return this.publicClient.readContract({\n address: this.config.diamondAddress,\n abi: VenueFacetABI,\n functionName: 'canTrade',\n args: [user, venueId],\n }) as Promise<boolean>;\n }\n\n /**\n * Check if a user can create markets on a venue.\n */\n async canCreateMarket(user: `0x${string}`, venueId: bigint): Promise<boolean> {\n return this.publicClient.readContract({\n address: this.config.diamondAddress,\n abi: VenueFacetABI,\n functionName: 'canCreateMarket',\n args: [user, venueId],\n }) as Promise<boolean>;\n }\n\n // ---- Protocol Fee (owner-only) ----\n\n /**\n * Get the current protocol fee in basis points. Snapshotted per market at creation.\n */\n async getProtocolFeeBps(): Promise<bigint> {\n return this.publicClient.readContract({\n address: this.config.diamondAddress,\n abi: ProtocolFacetABI,\n functionName: 'getProtocolFeeBps',\n }) as Promise<bigint>;\n }\n\n /**\n * Set the protocol fee in basis points. Owner-only. Max 200 bps (2%).\n * Only affects markets created after this call (existing markets retain their snapshot).\n */\n async setProtocolFeeBps(bps: bigint) {\n const wallet = this.walletClient;\n const account = await this.getSignerAccount();\n\n const { request } = await this.publicClient.simulateContract({\n address: this.config.diamondAddress,\n abi: ProtocolFacetABI,\n functionName: 'setProtocolFeeBps',\n args: [bps],\n account,\n });\n\n return wallet.writeContract(request);\n }\n}\n","import { parseEther, formatEther } from 'viem';\n\n/**\n * Utility functions for common conversions in OddMaki Protocol\n * These helpers make it easier for frontends to work with the protocol\n * without needing to understand ticks, BigInts, and wei conversions\n */\n\n/** Standard tick size: 1% price increment, 100 price levels (Polymarket/Kalshi standard) */\nexport const TICK_SIZE_STANDARD = 10000000000000000n; // 1e16\n\n/** Fine tick size: 0.1% price increment, 1000 price levels (institutional-grade) */\nexport const TICK_SIZE_FINE = 1000000000000000n; // 1e15\n\n/** All protocol-approved tick sizes */\nexport const VALID_TICK_SIZES = [TICK_SIZE_STANDARD, TICK_SIZE_FINE] as const;\n\n/**\n * Check whether a tick size is in the protocol-approved whitelist.\n * @param tickSize - Tick size in wei (1e15 or 1e16)\n * @returns true if the tick size is valid\n */\nexport function isValidTickSize(tickSize: bigint): boolean {\n return tickSize === TICK_SIZE_STANDARD || tickSize === TICK_SIZE_FINE;\n}\n\n/**\n * Convert a tick value to a human-readable price\n * @param tick - Tick value (e.g., 80 for 0.80)\n * @param tickSize - Optional tick size in 1e18 (defaults to 0.01e18)\n * @returns Price as decimal string (e.g., \"0.80\")\n */\nexport function tickToPrice(tick: bigint, tickSize: bigint = 10000000000000000n): string {\n const price = tick * tickSize;\n return (Number(price) / 1e18).toFixed(2);\n}\n\n/**\n * Convert a human-readable price to a tick value\n * @param price - Price as decimal (e.g., 0.80 or \"0.80\")\n * @returns Tick value as bigint (e.g., 80n)\n */\nexport function priceToTick(price: number | string): bigint {\n const priceNum = typeof price === 'string' ? parseFloat(price) : price;\n return BigInt(Math.round(priceNum * 100));\n}\n\n/**\n * Convert a decimal amount string to the smallest unit based on decimals\n * @param amount - Amount as decimal string (e.g., \"10.5\")\n * @param decimals - Token decimals (default: 18 for ETH-like tokens, use 6 for USDC)\n * @returns BigInt in smallest unit\n *\n * @example\n * parseAmount(\"10.5\") // 10500000000000000000n (18 decimals)\n * parseAmount(\"10.5\", 6) // 10500000n (6 decimals for USDC)\n */\nexport function parseAmount(amount: string, decimals: number = 18): bigint {\n if (decimals === 18) {\n return parseEther(amount);\n }\n\n // Parse amount with custom decimals\n const parts = amount.split('.');\n const wholePart = parts[0] || '0';\n const decimalPart = (parts[1] || '').padEnd(decimals, '0').slice(0, decimals);\n\n return BigInt(wholePart + decimalPart);\n}\n\n/**\n * Convert smallest unit amount to decimal string based on decimals\n * @param amount - Amount in smallest unit (bigint)\n * @param decimals - Token decimals (default: 18 for ETH-like tokens, use 6 for USDC)\n * @returns Decimal string (e.g., \"10.5\")\n *\n * @example\n * formatAmount(10500000000000000000n) // \"10.5\" (18 decimals)\n * formatAmount(10500000n, 6) // \"10.5\" (6 decimals for USDC)\n */\nexport function formatAmount(amount: bigint, decimals: number = 18): string {\n if (decimals === 18) {\n return formatEther(amount);\n }\n\n // Format amount with custom decimals\n const amountStr = amount.toString().padStart(decimals + 1, '0');\n const wholePart = amountStr.slice(0, -decimals) || '0';\n const decimalPart = amountStr.slice(-decimals);\n\n // Remove trailing zeros from decimal part\n const trimmedDecimal = decimalPart.replace(/0+$/, '');\n\n return trimmedDecimal ? `${wholePart}.${trimmedDecimal}` : wholePart;\n}\n\n/**\n * Create an expiry timestamp from duration\n * @param duration - Duration string like \"1h\", \"24h\", \"7d\" or number of seconds\n * @returns Unix timestamp as bigint\n */\nexport function createExpiry(duration: string | number): bigint {\n let seconds: number;\n\n if (typeof duration === 'number') {\n seconds = duration;\n } else {\n // Parse duration strings like \"1h\", \"24h\", \"7d\"\n const match = duration.match(/^(\\d+)([smhd])$/);\n if (!match) {\n throw new Error('Invalid duration format. Use formats like \"1h\", \"24h\", \"7d\"');\n }\n\n const value = parseInt(match[1]);\n const unit = match[2];\n\n const multipliers: Record<string, number> = {\n s: 1,\n m: 60,\n h: 3600,\n d: 86400,\n };\n\n seconds = value * multipliers[unit];\n }\n\n return BigInt(Math.floor(Date.now() / 1000) + seconds);\n}\n\n/**\n * Format a timestamp for display\n * @param timestamp - Unix timestamp (bigint or number)\n * @returns Human-readable date string\n */\nexport function formatTimestamp(timestamp: bigint | number): string {\n const ts = typeof timestamp === 'bigint' ? Number(timestamp) : timestamp;\n return new Date(ts * 1000).toLocaleString();\n}\n\n/**\n * Market question structure\n */\nexport interface MarketQuestion {\n title: string;\n description: string;\n}\n\n/**\n * Parse UMA ancillary data into structured question format\n * @param ancillaryData - Raw ancillary data string from contract/subgraph\n * @returns Parsed question with title and description\n *\n * @example\n * ```typescript\n * const question = parseAncillaryData(\"q:title:Will ETH hit $5k?,description:Market resolves YES if...\");\n * console.log(question.title); // \"Will ETH hit $5k?\"\n * console.log(question.description); // \"Market resolves YES if...\"\n * ```\n */\nexport function parseAncillaryData(ancillaryData: string): MarketQuestion {\n try {\n // Format: \"q:title:TITLE,description:DESC,market_id:N,venue_id:N,initializer:0x...,res_data:...,ooRequester:0x...,chain_id:N\"\n // Title and description can contain commas, so we can't split on all commas.\n // Instead, use the known contract-appended keys as boundaries.\n const CONTRACT_KEY_RE = /,(?:market_id|venue_id|initializer|res_data|ooRequester|chain_id):/;\n\n let title = '';\n let description = '';\n\n // Find where title starts (supports both \"q:title:\" and \"title:\" prefixes)\n const titlePrefix = ancillaryData.match(/^(?:q:)?title:/);\n if (titlePrefix) {\n const afterTitle = ancillaryData.slice(titlePrefix[0].length);\n\n // Title ends at \",description:\" or first contract-appended key\n const descIdx = afterTitle.indexOf(',description:');\n\n if (descIdx >= 0) {\n title = afterTitle.slice(0, descIdx).trim();\n const descRest = afterTitle.slice(descIdx + ',description:'.length);\n const keyMatch = descRest.match(CONTRACT_KEY_RE);\n description = keyMatch\n ? descRest.slice(0, keyMatch.index).trim()\n : descRest.trim();\n } else {\n const keyMatch = afterTitle.match(CONTRACT_KEY_RE);\n title = keyMatch\n ? afterTitle.slice(0, keyMatch.index).trim()\n : afterTitle.trim();\n }\n }\n\n return {\n title: title || ancillaryData, // Fallback to raw data if parsing fails\n description: description || '',\n };\n } catch (e) {\n // If parsing fails, return the raw data as title\n return { title: ancillaryData, description: '' };\n }\n}\n\n/**\n * Format a market question into UMA ancillary data string\n * @param question - Question with title and description\n * @returns Formatted ancillary data string (without market/venue metadata)\n *\n * @example\n * ```typescript\n * const ancillaryData = formatAncillaryData({\n * title: \"Will ETH hit $5k?\",\n * description: \"Market resolves YES if ETH/USD >= $5000 on Coinbase Pro by Dec 31, 2025.\"\n * });\n * // Returns: \"q:title:Will ETH hit $5k?,description:Market resolves YES if...\"\n * ```\n *\n * @note The Controller/UmaAdapter will append additional fields (market_id, venue_id, etc.)\n */\nexport function formatAncillaryData(question: MarketQuestion): string {\n let data = `q:title:${question.title}`;\n if (question.description) {\n data += `,description:${question.description}`;\n }\n return data;\n}\n\n/**\n * Convert a tick value and tick size to a percentage (0-100).\n * Accepts string or number inputs for convenience with subgraph data.\n *\n * @param tick - Tick value (e.g., 55 or \"55\")\n * @param tickSize - Tick size in wei (e.g., 1e16 or \"10000000000000000\")\n * @returns Price as percentage (e.g., 55 for 55%)\n */\nexport function tickToPercentage(tick: string | number, tickSize: string | number): number {\n const tickNum = typeof tick === 'string' ? parseFloat(tick) : tick;\n const tickSizeNum = typeof tickSize === 'string' ? parseFloat(tickSize) : tickSize;\n if (tickNum === 0 || tickSizeNum === 0) return 0;\n const price = (tickNum * tickSizeNum) / 1e18;\n return parseFloat((price * 100).toFixed(2));\n}\n\n/**\n * Subgraph Market entity shape expected by getOutcomePrice.\n */\nexport interface SubgraphMarketPriceData {\n tickSize: string;\n status: string;\n resolvedOutcome?: number | string | null;\n lastPriceTick_0?: string | null;\n lastPriceTick_1?: string | null;\n}\n\n/**\n * Get the current price percentage (0-100) for an outcome in a binary market.\n *\n * Handles three cases:\n * 1. Resolved markets → winning outcome = 100, losing = 0\n * 2. Active markets with YES price → NO = 100 - YES (complement)\n * 3. Active markets with only NO price → YES = 100 - NO\n *\n * @param market - Subgraph Market entity with price/status fields\n * @param outcomeIndex - 0 for YES, 1 for NO\n * @returns Price as percentage (0-100)\n */\nexport function getOutcomePrice(market: SubgraphMarketPriceData, outcomeIndex: number): number {\n const tickSize = market.tickSize || '0';\n\n // Resolved: winning = 100, losing = 0\n if (market.status === 'Resolved' && market.resolvedOutcome != null) {\n return parseInt(String(market.resolvedOutcome)) === outcomeIndex ? 100 : 0;\n }\n\n // Use YES price as canonical, derive NO via complement\n const yesTick = market.lastPriceTick_0;\n if (!yesTick) {\n const noTick = market.lastPriceTick_1;\n if (!noTick) return 0;\n const noPercent = tickToPercentage(noTick, tickSize);\n return outcomeIndex === 1 ? noPercent : (100 - noPercent);\n }\n\n const yesPercent = tickToPercentage(yesTick, tickSize);\n return outcomeIndex === 0 ? yesPercent : (100 - yesPercent);\n}\n\n// ============================================\n// Mark Price Calculation (Polymarket-style)\n// ============================================\n\n/**\n * Top-of-book entry from subgraph TopOfBook entity.\n */\nexport interface TopOfBookEntry {\n outcome: string; // \"0\" or \"1\"\n side: string; // \"BUY\" or \"SELL\"\n topTick: string; // tick value, \"0\" if empty\n}\n\n/**\n * Input for calculateChancePercent — accepts subgraph market data.\n */\nexport interface ChancePercentInput {\n tickSize: string;\n status?: string;\n resolvedOutcome?: number | string | null;\n lastPriceTick_0?: string | null;\n lastPriceTick_1?: string | null;\n lastTradeTimestamp_0?: string | null;\n lastTradeTimestamp_1?: string | null;\n topOfBook?: TopOfBookEntry[];\n}\n\n/** Spread threshold in dollars — matches Polymarket's $0.10 threshold. */\nconst MARK_PRICE_SPREAD_THRESHOLD = 0.10;\n\n/**\n * Calculate the \"chance %\" for a binary market using a Polymarket-style waterfall:\n *\n * 1. **Implied mark price** (midpoint of implied Yes bid/ask) — if spread ≤ $0.10\n * 2. **Last trade** (most recent trade from either side) — if book empty or spread > $0.10\n * 3. **50%** — no data\n *\n * Implied prices account for cross-outcome liquidity via mint/merge paths:\n * - No BUY at tick N → implied Yes ASK at (maxTicks - N) via Mint path\n * - No SELL at tick N → implied Yes BID at (maxTicks - N) via Merge path\n *\n * @param market - Subgraph market data with top-of-book and last trade info\n * @returns Chance percentage (0-100)\n */\nexport function calculateChancePercent(market: ChancePercentInput): number {\n const tickSizeNum = parseFloat(market.tickSize || '0');\n if (tickSizeNum === 0) return 50;\n\n // Resolved markets: winning = 100%, losing = 0%\n if (market.status === 'Resolved' && market.resolvedOutcome != null) {\n return parseInt(String(market.resolvedOutcome)) === 0 ? 100 : 0;\n }\n\n const maxTicks = 1e18 / tickSizeNum;\n\n // Step 1: Try mark price from top-of-book (implied midpoint)\n if (market.topOfBook && market.topOfBook.length > 0) {\n const tob = parseTopOfBook(market.topOfBook);\n const result = computeImpliedMidpoint(tob, maxTicks, tickSizeNum);\n if (result !== null) return result;\n }\n\n // Step 2: Fall back to most recent trade (either side)\n return lastTradeFallback(market, tickSizeNum);\n}\n\n/**\n * Parsed top-of-book values (all in raw tick units).\n */\ninterface ParsedTopOfBook {\n yesBid: number;\n yesAsk: number;\n noBid: number;\n noAsk: number;\n}\n\n/**\n * Parse the TopOfBook array into the 4 values we need.\n */\nfunction parseTopOfBook(entries: TopOfBookEntry[]): ParsedTopOfBook {\n const result: ParsedTopOfBook = { yesBid: 0, yesAsk: 0, noBid: 0, noAsk: 0 };\n\n for (const entry of entries) {\n const tick = parseFloat(entry.topTick || '0');\n const outcome = entry.outcome?.toString();\n const side = entry.side;\n\n if (outcome === '0' && side === 'BUY') result.yesBid = tick;\n else if (outcome === '0' && side === 'SELL') result.yesAsk = tick;\n else if (outcome === '1' && side === 'BUY') result.noBid = tick;\n else if (outcome === '1' && side === 'SELL') result.noAsk = tick;\n }\n\n return result;\n}\n\n/**\n * Compute the implied Yes midpoint from top-of-book data.\n * Returns the chance percentage, or null if we can't compute a valid midpoint.\n */\nfunction computeImpliedMidpoint(\n tob: ParsedTopOfBook,\n maxTicks: number,\n tickSize: number,\n): number | null {\n // Compute implied Yes bid: max(direct Yes bid, complement of No ask via merge)\n const bidCandidates: number[] = [];\n if (tob.yesBid > 0) bidCandidates.push(tob.yesBid);\n if (tob.noAsk > 0) bidCandidates.push(maxTicks - tob.noAsk);\n\n // Compute implied Yes ask: min(direct Yes ask, complement of No bid via mint)\n const askCandidates: number[] = [];\n if (tob.yesAsk > 0) askCandidates.push(tob.yesAsk);\n if (tob.noBid > 0) askCandidates.push(maxTicks - tob.noBid);\n\n // Need both a bid and an ask to compute midpoint\n if (bidCandidates.length === 0 || askCandidates.length === 0) return null;\n\n const impliedBid = Math.max(...bidCandidates);\n const impliedAsk = Math.min(...askCandidates);\n\n // Check spread threshold (in dollar terms)\n const spreadDollars = ((impliedAsk - impliedBid) * tickSize) / 1e18;\n if (spreadDollars > MARK_PRICE_SPREAD_THRESHOLD) return null;\n\n // Midpoint → percentage\n const midTick = (impliedBid + impliedAsk) / 2;\n const percent = (midTick * tickSize / 1e18) * 100;\n return parseFloat(Math.max(0, Math.min(100, percent)).toFixed(2));\n}\n\n/**\n * Fall back to the most recent trade from either side.\n * If per-outcome timestamps are available, use the more recent one.\n * Otherwise, use whichever lastPriceTick is available (with complement derivation for No).\n */\nfunction lastTradeFallback(market: ChancePercentInput, tickSize: number): number {\n const tick0 = parseFloat(market.lastPriceTick_0 || '0');\n const tick1 = parseFloat(market.lastPriceTick_1 || '0');\n const ts0 = parseFloat(market.lastTradeTimestamp_0 || '0');\n const ts1 = parseFloat(market.lastTradeTimestamp_1 || '0');\n\n // Both outcomes have trades: use the more recent one\n if (tick0 > 0 && tick1 > 0) {\n if (ts0 > 0 || ts1 > 0) {\n // Per-outcome timestamps available — use most recent\n if (ts0 >= ts1) {\n return parseFloat(((tick0 * tickSize / 1e18) * 100).toFixed(2));\n }\n // No side is more recent — derive Yes via complement\n return parseFloat(((1 - (tick1 * tickSize / 1e18)) * 100).toFixed(2));\n }\n // No per-outcome timestamps (pre-migration data) — prefer Yes price\n return parseFloat(((tick0 * tickSize / 1e18) * 100).toFixed(2));\n }\n\n // Only Yes traded\n if (tick0 > 0) {\n return parseFloat(((tick0 * tickSize / 1e18) * 100).toFixed(2));\n }\n\n // Only No traded — derive Yes via complement\n if (tick1 > 0) {\n return parseFloat(((1 - (tick1 * tickSize / 1e18)) * 100).toFixed(2));\n }\n\n // No data at all\n return 50;\n}\n","import type { PublicClient, Address } from 'viem';\nimport { parseAmount } from './conversions';\n\n/**\n * Decimal handling utilities for ERC20 tokens\n *\n * IMPORTANT: The OddMaki Protocol uses 1e18 for all internal price calculations,\n * but collateral tokens (like USDC) may use different decimals (e.g., 6).\n *\n * This module provides utilities to correctly handle token decimals when\n * converting between user-facing amounts and contract values.\n */\n\n/**\n * Get the number of decimals for an ERC20 token\n * @param publicClient - Viem public client\n * @param token - Token address\n * @returns Number of decimals (e.g., 6 for USDC, 18 for most ERC20s)\n *\n * @example\n * const decimals = await getTokenDecimals(publicClient, usdcAddress);\n * console.log(decimals); // 6\n */\nexport async function getTokenDecimals(\n publicClient: PublicClient,\n token: Address\n): Promise<number> {\n const decimals = await publicClient.readContract({\n address: token,\n abi: [\n {\n name: 'decimals',\n type: 'function',\n stateMutability: 'view',\n inputs: [],\n outputs: [{ type: 'uint8' }],\n },\n ],\n functionName: 'decimals',\n });\n\n return Number(decimals);\n}\n\n/**\n * Parse a token amount string with validation\n * @param amount - Amount as decimal string (e.g., \"10.5\")\n * @param decimals - Token decimals (e.g., 6 for USDC, 18 for most tokens)\n * @returns BigInt in smallest unit\n * @throws Error if decimals are invalid\n *\n * @example\n * parseTokenAmount(\"10.5\", 6) // 10500000n (USDC)\n * parseTokenAmount(\"10.5\", 18) // 10500000000000000000n (ETH-like)\n */\nexport function parseTokenAmount(\n amount: string,\n decimals: number\n): bigint {\n if (decimals < 0 || decimals > 18) {\n throw new Error(`Invalid decimals: ${decimals}. Must be between 0 and 18.`);\n }\n\n if (!amount || amount.trim() === '') {\n throw new Error('Amount cannot be empty');\n }\n\n return parseAmount(amount, decimals);\n}\n\n/**\n * Cache for token decimals to avoid redundant RPC calls\n * Key format: `${chainId}-${tokenAddress.toLowerCase()}`\n */\nconst decimalsCache = new Map<string, number>();\n\n/**\n * Get token decimals with caching to reduce RPC calls\n * @param publicClient - Viem public client\n * @param token - Token address\n * @returns Number of decimals\n *\n * @example\n * // First call hits RPC\n * const decimals1 = await getCachedTokenDecimals(publicClient, usdcAddress);\n *\n * // Second call uses cache\n * const decimals2 = await getCachedTokenDecimals(publicClient, usdcAddress);\n */\nexport async function getCachedTokenDecimals(\n publicClient: PublicClient,\n token: Address\n): Promise<number> {\n const chainId = await publicClient.getChainId();\n const cacheKey = `${chainId}-${token.toLowerCase()}`;\n\n const cached = decimalsCache.get(cacheKey);\n if (cached !== undefined) {\n return cached;\n }\n\n const decimals = await getTokenDecimals(publicClient, token);\n decimalsCache.set(cacheKey, decimals);\n\n return decimals;\n}\n\n/**\n * Clear the decimals cache (useful for testing or switching networks)\n */\nexport function clearDecimalsCache(): void {\n decimalsCache.clear();\n}\n","import { BaseModule } from './base';\nimport {\n VenueFacetABI,\n MarketsFacetABI,\n MarketGroupFacetABI,\n OrderBookFacetABI,\n NegRiskFacetABI,\n ConditionalTokensABI,\n TagsFacetABI,\n MetadataFacetABI,\n} from '../contracts';\nimport { erc20Abi, stringToHex } from 'viem';\nimport type { Address } from 'viem';\nimport { formatAmount, isValidTickSize, type MarketQuestion } from '../utils/conversions';\nimport { getTokenDecimals } from '../utils/decimals';\n\n// Inline fragment for ERC-1155 isApprovedForAll. Not in the bundled CTF ABI\n// because it was generated from a subset of methods; this avoids having to\n// regenerate the full ABI for a single standard read.\nconst CTF_IS_APPROVED_FOR_ALL_ABI = [\n {\n name: 'isApprovedForAll',\n type: 'function',\n stateMutability: 'view',\n inputs: [\n { name: 'account', type: 'address' },\n { name: 'operator', type: 'address' },\n ],\n outputs: [{ name: '', type: 'bool' }],\n },\n] as const;\n\nexport class MarketModule extends BaseModule {\n /**\n * Format market question into UMA-compliant ancillary data\n * @param question Structured market question with title and description\n * @returns Hex-encoded ancillary data bytes\n * @private\n */\n private formatAncillaryData(question: MarketQuestion): `0x${string}` {\n // Build comma-delimited key:value format (start with \"q:\" prefix)\n let data = `q:title:${question.title}`;\n data += `,description:${question.description}`;\n\n // Convert to hex bytes\n return stringToHex(data);\n }\n\n /**\n * Create a new market\n *\n * IMPORTANT: All bigint amounts must use the collateral token's decimals!\n * - For USDC (6 decimals): Use parseAmount(\"10\", 6) or parseUnits(\"10\", 6)\n * - For 18-decimal tokens: Use parseAmount(\"10\") or parseEther(\"10\")\n *\n * @param params.tickSize - Price increment (typically parseEther(\"0.01\") = 0.01 per tick)\n * @param params.additionalReward - Extra UMA reward in collateral token units (with token decimals!)\n * @param params.liveness - Challenge period in seconds (0 = use 2-hour default)\n */\n async createMarket(params: {\n venueId: bigint;\n question: MarketQuestion;\n outcomes: string[];\n tickSize: bigint;\n collateralToken: Address;\n additionalReward: bigint;\n liveness?: bigint;\n tags?: string[];\n }) {\n const wallet = this.walletClient;\n const account = await this.getSignerAccount();\n const accountAddress = await this.getSignerAddress();\n\n // Pre-flight checks: Market creation fee is determined by venue configuration\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n const venue: any = await this.publicClient.readContract({\n address: this.config.diamondAddress,\n abi: VenueFacetABI,\n functionName: 'getVenue',\n args: [params.venueId],\n });\n\n const feeRequired = BigInt(venue.marketCreationFee);\n const reward = BigInt(venue.umaRewardAmount) + (params.additionalReward ?? 0n);\n const totalRequired = feeRequired + reward;\n\n if (totalRequired > 0n) {\n const allowance = await this.publicClient.readContract({\n address: params.collateralToken,\n abi: erc20Abi,\n functionName: 'allowance',\n args: [accountAddress, this.config.diamondAddress],\n });\n\n if (allowance < totalRequired) {\n throw new Error(\n `Insufficient allowance. Approved: ${allowance.toString()}, Required: ${totalRequired.toString()} (fee: ${feeRequired.toString()}, reward: ${reward.toString()}). Please approve the Diamond (${\n this.config.diamondAddress\n }).`,\n );\n }\n\n const balance = await this.publicClient.readContract({\n address: params.collateralToken,\n abi: erc20Abi,\n functionName: 'balanceOf',\n args: [accountAddress],\n });\n\n if (balance < totalRequired) {\n throw new Error(\n `Insufficient collateral balance. Have: ${balance.toString()}, Required: ${totalRequired.toString()} (fee: ${feeRequired.toString()}, reward: ${reward.toString()}).`,\n );\n }\n }\n\n if (!isValidTickSize(params.tickSize)) {\n throw new Error('Invalid tickSize: must be 1e15 (0.1%) or 1e16 (1%)');\n }\n\n // Format ancillary data\n const ancillaryData = this.formatAncillaryData(params.question);\n\n // Encode tags as bytes32[]\n const encodedTags = (params.tags ?? []).map((t) =>\n stringToHex(t, { size: 32 }),\n );\n\n // Create market (Diamond dropped alpha param)\n const { request } = await this.publicClient.simulateContract({\n address: this.config.diamondAddress,\n abi: MarketsFacetABI,\n functionName: 'createMarket',\n args: [\n params.venueId,\n ancillaryData,\n params.outcomes,\n params.tickSize,\n params.collateralToken,\n params.additionalReward,\n params.liveness ?? 0n,\n encodedTags,\n ],\n account,\n });\n\n return wallet.writeContract(request);\n }\n\n /**\n * Get market registry data (lifecycle, venue, creator, status)\n */\n async getMarketRegistryData(marketId: bigint) {\n return this.publicClient.readContract({\n address: this.config.diamondAddress,\n abi: MarketsFacetABI,\n functionName: 'getMarketRegistryData',\n args: [marketId],\n });\n }\n\n /**\n * Get market trading data (positionIds, volume, lastTradeTick, tickSize, collateral)\n */\n async getMarketTradingData(marketId: bigint) {\n return this.publicClient.readContract({\n address: this.config.diamondAddress,\n abi: MarketsFacetABI,\n functionName: 'getMarketTradingData',\n args: [marketId],\n });\n }\n\n /**\n * Get market oracle data (questionId, conditionId, UMA economics)\n */\n async getMarketOracleData(marketId: bigint) {\n return this.publicClient.readContract({\n address: this.config.diamondAddress,\n abi: MarketsFacetABI,\n functionName: 'getMarketOracleData',\n args: [marketId],\n });\n }\n\n /**\n * Calculate Position ID for a market outcome (for CTF balance queries)\n */\n async getPositionId(marketId: bigint, outcomeIndex: bigint): Promise<bigint> {\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n const tradingData: any = await this.getMarketTradingData(marketId);\n\n const ids = tradingData.positionIds;\n if (!ids || ids.length <= Number(outcomeIndex)) {\n throw new Error('Position ID not found in trading data');\n }\n\n return BigInt(ids[Number(outcomeIndex)]);\n }\n\n /**\n * Get best prices (Top of Book) for all outcomes\n * Returns the raw tick values.\n */\n async getBestPrices(marketId: bigint) {\n const getTick = async (outcome: number, side: number) => {\n return (await this.publicClient.readContract({\n address: this.config.diamondAddress,\n abi: OrderBookFacetABI,\n functionName: 'getTopOfBook',\n args: [marketId, BigInt(outcome), side],\n })) as bigint;\n };\n\n // Fetch relevant ticks: YES Ask, YES Bid, NO Ask, NO Bid\n const [yesAsk, yesBid, noAsk, noBid] = await Promise.all([\n getTick(0, 1), // YES Ask\n getTick(0, 0), // YES Bid\n getTick(1, 1), // NO Ask\n getTick(1, 0), // NO Bid\n ]);\n\n return {\n yesAsk,\n yesBid,\n noAsk,\n noBid,\n };\n }\n\n /**\n * Get user's outcome token balances for a market\n * @param params.formatted - If true, returns decimal strings instead of BigInt (recommended for frontends)\n *\n * @dev Outcome tokens use the same decimals as the collateral token.\n * CTF inherits decimals from the underlying collateral.\n */\n async getUserBalances(\n marketId: bigint,\n user: Address,\n params?: { formatted?: boolean },\n ) {\n const formatted = params?.formatted ?? false;\n\n // Get market trading data to determine collateral token\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n const tradingData: any = await this.getMarketTradingData(marketId);\n const collateralToken = tradingData.collateralToken as Address;\n\n // Get collateral decimals\n const decimals = await getTokenDecimals(this.publicClient, collateralToken);\n\n const yesPositionId = await this.getPositionId(marketId, 0n);\n const noPositionId = await this.getPositionId(marketId, 1n);\n\n const [yesBalance, noBalance] = await Promise.all([\n this.publicClient.readContract({\n address: this.config.conditionalTokensAddress,\n abi: ConditionalTokensABI,\n functionName: 'balanceOf',\n args: [user, yesPositionId],\n }),\n this.publicClient.readContract({\n address: this.config.conditionalTokensAddress,\n abi: ConditionalTokensABI,\n functionName: 'balanceOf',\n args: [user, noPositionId],\n }),\n ]);\n\n if (formatted) {\n return {\n YES: formatAmount(yesBalance as bigint, decimals),\n NO: formatAmount(noBalance as bigint, decimals),\n };\n }\n\n return {\n YES: yesBalance as bigint,\n NO: noBalance as bigint,\n };\n }\n\n /**\n * Get market prices directly from on-chain data (RPC)\n * This bypasses the subgraph for guaranteed fresh pricing\n *\n * Uses mark price from the orderbook (mid-point of best bid/ask)\n * Falls back to last trade tick if no orderbook liquidity\n *\n * Returns prices in decimal format (e.g., \"0.80\" for 80%)\n */\n async getMarketPricesRPC(marketId: bigint) {\n try {\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n const tradingData: any = await this.getMarketTradingData(marketId);\n const tickSize = BigInt(tradingData.tickSize);\n\n // Try mark price first (orderbook mid-point)\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n const [markPrice0, markPrice1]: any[] = await Promise.all([\n this.publicClient.readContract({\n address: this.config.diamondAddress,\n abi: OrderBookFacetABI,\n functionName: 'getMarkPrice',\n args: [marketId, 0n],\n }),\n this.publicClient.readContract({\n address: this.config.diamondAddress,\n abi: OrderBookFacetABI,\n functionName: 'getMarkPrice',\n args: [marketId, 1n],\n }),\n ]);\n\n // getMarkPrice returns (priceTick, isDefined)\n const tick0 = BigInt(markPrice0[0]);\n const isDefined0 = markPrice0[1] as boolean;\n const tick1 = BigInt(markPrice1[0]);\n const isDefined1 = markPrice1[1] as boolean;\n\n if (isDefined0 || isDefined1) {\n const price0Raw = tick0 * tickSize;\n const price1Raw = tick1 * tickSize;\n const yesPrice = isDefined0 ? (Number(price0Raw) / 1e18).toFixed(2) : '0.50';\n const noPrice = isDefined1 ? (Number(price1Raw) / 1e18).toFixed(2) : '0.50';\n\n return {\n YES: yesPrice,\n NO: noPrice,\n source: 'rpc' as const,\n volume: {\n YES: tradingData.totalVolume[0].toString(),\n NO: tradingData.totalVolume[1].toString(),\n },\n timestamp: Date.now(),\n };\n }\n\n // Fallback: use last trade ticks\n const lastTick0 = BigInt(tradingData.lastTradeTick[0]);\n const lastTick1 = BigInt(tradingData.lastTradeTick[1]);\n\n if (lastTick0 > 0n || lastTick1 > 0n) {\n const yesPrice = lastTick0 > 0n\n ? (Number(lastTick0 * tickSize) / 1e18).toFixed(2)\n : '0.50';\n const noPrice = lastTick1 > 0n\n ? (Number(lastTick1 * tickSize) / 1e18).toFixed(2)\n : '0.50';\n\n return {\n YES: yesPrice,\n NO: noPrice,\n source: 'rpc' as const,\n volume: {\n YES: tradingData.totalVolume[0].toString(),\n NO: tradingData.totalVolume[1].toString(),\n },\n timestamp: Date.now(),\n };\n }\n\n // Default\n return {\n YES: '0.50',\n NO: '0.50',\n source: 'default' as const,\n volume: { YES: '0', NO: '0' },\n timestamp: null,\n };\n } catch (error) {\n console.error('[SDK] RPC price fetch error:', error);\n return {\n YES: '0.50',\n NO: '0.50',\n source: 'default' as const,\n volume: { YES: '0', NO: '0' },\n timestamp: null,\n };\n }\n }\n\n // ============================================\n // Market Groups\n // ============================================\n\n /**\n * Create a new market group (parent metadata only, no markets yet)\n *\n * @param params.question - Market question (e.g., \"Where will Giannis be traded?\")\n * @param params.description - Resolution criteria (shared by all markets)\n * @param params.collateralToken - Collateral token for all markets in group\n * @param params.tickSize - Price increment (same for all markets)\n * @param params.additionalReward - Additional UMA reward in collateral token units\n * @param params.liveness - Challenge period in seconds (0 = use 2-hour default)\n * @returns Transaction hash\n */\n async createMarketGroup(params: {\n venueId: bigint;\n question: string;\n description: string;\n collateralToken: Address;\n tickSize: bigint;\n additionalReward: bigint;\n liveness?: bigint;\n tags?: string[];\n }) {\n const wallet = this.walletClient;\n const account = await this.getSignerAccount();\n const accountAddress = await this.getSignerAddress();\n\n // Pre-flight checks: Market creation fee (same as regular market)\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n const venue: any = await this.publicClient.readContract({\n address: this.config.diamondAddress,\n abi: VenueFacetABI,\n functionName: 'getVenue',\n args: [params.venueId],\n });\n\n const feeRequired = BigInt(venue.marketCreationFee);\n const reward = BigInt(venue.umaRewardAmount) + (params.additionalReward ?? 0n);\n const totalRequired = feeRequired + reward;\n\n if (totalRequired > 0n) {\n const allowance = await this.publicClient.readContract({\n address: params.collateralToken,\n abi: erc20Abi,\n functionName: 'allowance',\n args: [accountAddress, this.config.diamondAddress],\n });\n\n if (allowance < totalRequired) {\n throw new Error(\n `Insufficient allowance. Approved: ${allowance.toString()}, Required: ${totalRequired.toString()} (fee: ${feeRequired.toString()}, reward: ${reward.toString()}). Please approve the Diamond (${\n this.config.diamondAddress\n }).`,\n );\n }\n\n const balance = await this.publicClient.readContract({\n address: params.collateralToken,\n abi: erc20Abi,\n functionName: 'balanceOf',\n args: [accountAddress],\n });\n\n if (balance < totalRequired) {\n throw new Error(\n `Insufficient collateral balance. Have: ${balance.toString()}, Required: ${totalRequired.toString()} (fee: ${feeRequired.toString()}, reward: ${reward.toString()}).`,\n );\n }\n }\n\n if (!isValidTickSize(params.tickSize)) {\n throw new Error('Invalid tickSize: must be 1e15 (0.1%) or 1e16 (1%)');\n }\n\n // Encode tags as bytes32[]\n const groupTags = (params.tags ?? []).map((t) =>\n stringToHex(t, { size: 32 }),\n );\n\n // Create market group (Diamond dropped alpha param)\n const { request } = await this.publicClient.simulateContract({\n address: this.config.diamondAddress,\n abi: MarketGroupFacetABI,\n functionName: 'createMarketGroup',\n args: [\n params.venueId,\n params.question,\n params.description,\n params.collateralToken,\n params.tickSize,\n params.additionalReward,\n params.liveness ?? 0n,\n groupTags,\n ],\n account,\n });\n\n return wallet.writeContract(request);\n }\n\n /**\n * Add a market to a Draft market group\n */\n async addMarketToGroup(params: {\n marketGroupId: bigint;\n marketName: string;\n marketQuestion: string;\n }) {\n const wallet = this.walletClient;\n const account = await this.getSignerAccount();\n\n const { request } = await this.publicClient.simulateContract({\n address: this.config.diamondAddress,\n abi: MarketsFacetABI,\n functionName: 'addMarket',\n args: [params.marketGroupId, params.marketName, params.marketQuestion],\n account,\n });\n\n return wallet.writeContract(request);\n }\n\n /**\n * Add placeholder markets to a Draft market group\n */\n async addPlaceholderMarkets(params: {\n marketGroupId: bigint;\n count: bigint;\n }) {\n const wallet = this.walletClient;\n const account = await this.getSignerAccount();\n\n if (params.count < 1n || params.count > 50n) {\n throw new Error('Count must be between 1 and 50');\n }\n\n const { request } = await this.publicClient.simulateContract({\n address: this.config.diamondAddress,\n abi: MarketsFacetABI,\n functionName: 'addPlaceholderMarkets',\n args: [params.marketGroupId, params.count],\n account,\n });\n\n return wallet.writeContract(request);\n }\n\n /**\n * Activate a placeholder market with real question\n */\n async activatePlaceholder(params: {\n marketGroupId: bigint;\n marketId: bigint;\n marketName: string;\n marketQuestion: string;\n }) {\n const wallet = this.walletClient;\n const account = await this.getSignerAccount();\n\n const { request } = await this.publicClient.simulateContract({\n address: this.config.diamondAddress,\n abi: MarketsFacetABI,\n functionName: 'activatePlaceholder',\n args: [\n params.marketGroupId,\n params.marketId,\n params.marketName,\n params.marketQuestion,\n ],\n account,\n });\n\n return wallet.writeContract(request);\n }\n\n /**\n * Activate a market group (locks totalMarkets, enables trading)\n */\n async activateMarketGroup(params: { marketGroupId: bigint }) {\n const wallet = this.walletClient;\n const account = await this.getSignerAccount();\n\n const { request } = await this.publicClient.simulateContract({\n address: this.config.diamondAddress,\n abi: MarketGroupFacetABI,\n functionName: 'activateMarketGroup',\n args: [params.marketGroupId],\n account,\n });\n\n return wallet.writeContract(request);\n }\n\n /**\n * Convert NO positions to complementary YES positions + collateral\n *\n * Formula: N NO positions → (M-N) YES positions + (N-1) collateral\n */\n async convertPositions(params: {\n marketGroupId: bigint;\n indexSet: bigint;\n amount: bigint;\n }) {\n const wallet = this.walletClient;\n const account = await this.getSignerAccount();\n const accountAddress = await this.getSignerAddress();\n\n // Check CTF approval for Diamond\n const isApproved = await this.publicClient.readContract({\n address: this.config.conditionalTokensAddress,\n abi: CTF_IS_APPROVED_FOR_ALL_ABI,\n functionName: 'isApprovedForAll',\n args: [accountAddress, this.config.diamondAddress],\n });\n\n if (!isApproved) {\n throw new Error(\n `CTF tokens not approved for Diamond. Please call: ctf.setApprovalForAll(\"${this.config.diamondAddress}\", true)`,\n );\n }\n\n // Get group data to extract conditionIds and collateralToken\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n const groupData: any = await this.publicClient.readContract({\n address: this.config.diamondAddress,\n abi: MarketGroupFacetABI,\n functionName: 'getMarketGroup',\n args: [params.marketGroupId],\n });\n\n // Get conditionIds for all markets in the group\n const marketIds: bigint[] = groupData.marketIds;\n const conditionIds: `0x${string}`[] = [];\n for (const mid of marketIds) {\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n const oracleData: any = await this.getMarketOracleData(mid);\n conditionIds.push(oracleData.conditionId);\n }\n\n const { request } = await this.publicClient.simulateContract({\n address: this.config.diamondAddress,\n abi: NegRiskFacetABI,\n functionName: 'convertPositions',\n args: [conditionIds, groupData.collateralToken, params.indexSet, params.amount],\n account,\n });\n\n return wallet.writeContract(request);\n }\n\n /**\n * Get market group data\n */\n async getMarketGroup(marketGroupId: bigint) {\n return this.publicClient.readContract({\n address: this.config.diamondAddress,\n abi: MarketGroupFacetABI,\n functionName: 'getMarketGroup',\n args: [marketGroupId],\n });\n }\n\n /**\n * Get all market IDs in a group\n */\n async getGroupMarketIds(marketGroupId: bigint) {\n return this.publicClient.readContract({\n address: this.config.diamondAddress,\n abi: MarketGroupFacetABI,\n functionName: 'getGroupMarketIds',\n args: [marketGroupId],\n });\n }\n\n /**\n * Get market group item data (group-specific metadata)\n */\n async getMarketGroupItem(marketId: bigint) {\n return this.publicClient.readContract({\n address: this.config.diamondAddress,\n abi: MarketGroupFacetABI,\n functionName: 'getMarketGroupItem',\n args: [marketId],\n });\n }\n\n /**\n * Get market prices using subgraph data with orderbook fallback\n *\n * Price hierarchy:\n * 1. Last trade price (from Normal fills or Market orders)\n * 2. Orderbook-derived price (best execution cost)\n * 3. Default 50/50 (no information)\n */\n async getMarketPrices(marketId: bigint) {\n // Fetch market data from subgraph\n const query = `\n query GetMarketPrices($marketId: BigInt!) {\n markets(where: { marketId: $marketId }) {\n tickSize\n lastPriceTick_0\n lastPriceTick_1\n lastTradeTimestamp\n }\n }\n `;\n\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n const result: any = await this.subgraph.request(query, {\n marketId: marketId.toString(),\n });\n const market = result.markets?.[0];\n\n if (!market) {\n return {\n YES: '0.50',\n NO: '0.50',\n source: 'default' as const,\n timestamp: null,\n };\n }\n\n // Priority 1: Use last trade prices\n const hasLastPrices = market?.lastPriceTick_0 || market?.lastPriceTick_1;\n const tickSize = BigInt(market.tickSize || '10000000000000000');\n\n if (hasLastPrices) {\n let yesPrice = 0.5;\n let noPrice = 0.5;\n\n if (market.lastPriceTick_0 && market.lastPriceTick_0 !== '0') {\n const yesPriceBigInt = BigInt(market.lastPriceTick_0) * tickSize;\n yesPrice = Number(yesPriceBigInt) / 1e18;\n noPrice = 1 - yesPrice;\n } else if (market.lastPriceTick_1 && market.lastPriceTick_1 !== '0') {\n const noPriceBigInt = BigInt(market.lastPriceTick_1) * tickSize;\n noPrice = Number(noPriceBigInt) / 1e18;\n yesPrice = 1 - noPrice;\n }\n\n return {\n YES: yesPrice.toFixed(2),\n NO: noPrice.toFixed(2),\n source: 'trade' as const,\n timestamp: market.lastTradeTimestamp,\n };\n }\n\n // Priority 2: Derive from orderbook (best execution cost for buyers)\n const { yesAsk, yesBid, noAsk, noBid } = await this.getBestPrices(marketId);\n\n const hasOrderbook = yesAsk > 0n || yesBid > 0n || noAsk > 0n || noBid > 0n;\n\n if (hasOrderbook) {\n const calcBuyPrice = (\n bestAsk: bigint,\n complementBestBid: bigint,\n ): number => {\n if (bestAsk > 0n) {\n return Number(bestAsk * tickSize) / 1e18;\n }\n if (complementBestBid > 0n) {\n const bidPrice = Number(complementBestBid * tickSize) / 1e18;\n return 1 - bidPrice;\n }\n return 0.5;\n };\n\n const yesPrice = calcBuyPrice(yesAsk, noBid);\n const noPrice = calcBuyPrice(noAsk, yesBid);\n\n return {\n YES: yesPrice.toFixed(2),\n NO: noPrice.toFixed(2),\n source: 'orderbook' as const,\n timestamp: null,\n };\n }\n\n // Priority 3: Default (no information available)\n return {\n YES: '0.50',\n NO: '0.50',\n source: 'default' as const,\n timestamp: null,\n };\n }\n\n // ============================================\n // Market Moderation\n // ============================================\n\n /**\n * Pause a market. Blocks trading but allows order cancellations.\n * Only the venue operator can call this.\n */\n async pauseMarket(marketId: bigint) {\n const wallet = this.walletClient;\n const account = await this.getSignerAccount();\n\n const { request } = await this.publicClient.simulateContract({\n address: this.config.diamondAddress,\n abi: MarketsFacetABI,\n functionName: 'pauseMarket',\n args: [marketId],\n account,\n });\n\n return wallet.writeContract(request);\n }\n\n /**\n * Unpause a market. Resumes trading.\n * Only the venue operator can call this.\n */\n async unpauseMarket(marketId: bigint) {\n const wallet = this.walletClient;\n const account = await this.getSignerAccount();\n\n const { request } = await this.publicClient.simulateContract({\n address: this.config.diamondAddress,\n abi: MarketsFacetABI,\n functionName: 'unpauseMarket',\n args: [marketId],\n account,\n });\n\n return wallet.writeContract(request);\n }\n\n // ============================================\n // Tags\n // ============================================\n\n /**\n * Update tags for a standalone market (event-only, no storage)\n * Only the market creator can call this.\n */\n async updateMarketTags(params: {\n marketId: bigint;\n tags: string[];\n }) {\n const wallet = this.walletClient;\n const account = await this.getSignerAccount();\n\n const encodedTags = params.tags.map((t) =>\n stringToHex(t, { size: 32 }),\n );\n\n const { request } = await this.publicClient.simulateContract({\n address: this.config.diamondAddress,\n abi: TagsFacetABI,\n functionName: 'updateMarketTags',\n args: [params.marketId, encodedTags],\n account,\n });\n\n return wallet.writeContract(request);\n }\n\n /**\n * Update tags for a market group (event-only, no storage)\n * Only the group creator can call this.\n */\n async updateMarketGroupTags(params: {\n marketGroupId: bigint;\n tags: string[];\n }) {\n const wallet = this.walletClient;\n const account = await this.getSignerAccount();\n\n const encodedTags = params.tags.map((t) =>\n stringToHex(t, { size: 32 }),\n );\n\n const { request } = await this.publicClient.simulateContract({\n address: this.config.diamondAddress,\n abi: TagsFacetABI,\n functionName: 'updateMarketGroupTags',\n args: [params.marketGroupId, encodedTags],\n account,\n });\n\n return wallet.writeContract(request);\n }\n\n // ============================================\n // Metadata\n // ============================================\n\n /**\n * Update metadata URI for a standalone market (event-only, no storage)\n * Only the market creator can call this.\n */\n async updateMarketMetadata(params: {\n marketId: bigint;\n metadataURI: string;\n }) {\n const wallet = this.walletClient;\n const account = await this.getSignerAccount();\n\n const { request } = await this.publicClient.simulateContract({\n address: this.config.diamondAddress,\n abi: MetadataFacetABI,\n functionName: 'updateMarketMetadata',\n args: [params.marketId, params.metadataURI],\n account,\n });\n\n return wallet.writeContract(request);\n }\n\n /**\n * Update metadata URI for a market group (event-only, no storage)\n * Only the group creator can call this.\n */\n async updateMarketGroupMetadata(params: {\n marketGroupId: bigint;\n metadataURI: string;\n }) {\n const wallet = this.walletClient;\n const account = await this.getSignerAccount();\n\n const { request } = await this.publicClient.simulateContract({\n address: this.config.diamondAddress,\n abi: MetadataFacetABI,\n functionName: 'updateMarketGroupMetadata',\n args: [params.marketGroupId, params.metadataURI],\n account,\n });\n\n return wallet.writeContract(request);\n }\n}\n","import { BaseModule } from './base';\nimport {\n LimitOrdersFacetABI,\n MatchingFacetABI,\n OrderBookFacetABI,\n MarketOrdersFacetABI,\n MarketsFacetABI,\n VaultFacetABI,\n BatchOrdersFacetABI,\n} from '../contracts';\nimport {\n tickToPrice,\n formatAmount,\n priceToTick,\n parseAmount,\n createExpiry,\n} from '../utils/conversions';\nimport { getCachedTokenDecimals, parseTokenAmount } from '../utils/decimals';\nimport type { Address } from 'viem';\n\nexport class TradeModule extends BaseModule {\n /**\n * Place a limit order\n * Use placeOrderSimple() for string-based inputs (recommended for frontends)\n */\n async placeOrder(params: {\n marketId: bigint;\n outcomeId: bigint;\n side: number; // 0 = BUY, 1 = SELL\n tick: bigint;\n qty: bigint;\n expiry: bigint;\n }) {\n const wallet = this.walletClient;\n const account = await this.getSignerAccount();\n\n const { request } = await this.publicClient.simulateContract({\n address: this.config.diamondAddress,\n abi: LimitOrdersFacetABI,\n functionName: 'placeOrder',\n args: [\n params.marketId,\n params.outcomeId,\n params.side,\n params.tick,\n params.qty,\n params.expiry,\n ],\n account,\n });\n\n return wallet.writeContract(request);\n }\n\n /**\n * Place a limit order with simple string inputs (recommended for frontends)\n * @param params.price - Price as decimal string (e.g., \"0.75\")\n * @param params.quantity - Quantity as decimal string (e.g., \"100.5\")\n * @param params.expiry - Expiry as duration string (e.g., \"1h\", \"24h\") or bigint timestamp\n *\n * NOTE: Outcome token amounts use the same decimals as the collateral token\n * (e.g., 6 for USDC) because splitPosition creates tokens 1:1 with collateral.\n */\n async placeOrderSimple(params: {\n marketId: bigint;\n outcomeId: bigint;\n side: number;\n price: string;\n quantity: string;\n expiry: string | bigint;\n }) {\n // Read market trading data to get collateral token decimals\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n const tradingData: any = await this.publicClient.readContract({\n address: this.config.diamondAddress,\n abi: MarketsFacetABI,\n functionName: 'getMarketTradingData',\n args: [params.marketId],\n });\n\n const collateralToken = tradingData.collateralToken as Address;\n const decimals = await getCachedTokenDecimals(this.publicClient, collateralToken);\n\n const tick = priceToTick(params.price);\n const qty = parseTokenAmount(params.quantity, decimals);\n\n const expiry =\n typeof params.expiry === 'string'\n ? (params.expiry === 'gtc' ? BigInt(0) : createExpiry(params.expiry))\n : params.expiry;\n\n return this.placeOrder({\n marketId: params.marketId,\n outcomeId: params.outcomeId,\n side: params.side,\n tick,\n qty,\n expiry,\n });\n }\n\n /**\n * Cancel an order\n */\n async cancelOrder(orderId: bigint) {\n const wallet = this.walletClient;\n const account = await this.getSignerAccount();\n\n const { request } = await this.publicClient.simulateContract({\n address: this.config.diamondAddress,\n abi: LimitOrdersFacetABI,\n functionName: 'cancelOrder',\n args: [orderId],\n account,\n });\n\n return wallet.writeContract(request);\n }\n\n /**\n * Cancel all remaining orders on a resolved market in a single transaction.\n * Regular cancelOrder / batchCancelOrders revert once the market is no longer\n * active, so this is the only way to clear stale orders post-resolution.\n * @param marketId - The resolved market\n * @param orderIds - Order IDs to cancel (must belong to caller)\n */\n async cancelOrdersOnResolvedMarket(marketId: bigint, orderIds: bigint[]) {\n const wallet = this.walletClient;\n const account = await this.getSignerAccount();\n\n const { request } = await this.publicClient.simulateContract({\n address: this.config.diamondAddress,\n abi: LimitOrdersFacetABI,\n functionName: 'cancelOrdersOnResolvedMarket',\n args: [marketId, orderIds],\n account,\n });\n\n return wallet.writeContract(request);\n }\n\n /**\n * Execute a market order (FOK or FAK)\n *\n * @param params.marketId - The market to buy on\n * @param params.outcomeId - Which outcome to buy (0=YES, 1=NO)\n * @param params.collateralAmount - Amount of collateral to spend\n * @param params.maxPriceTick - Maximum price tick willing to pay (slippage protection)\n * @param params.orderType - 0=FOK (Fill-Or-Kill), 1=FAK (Fill-And-Kill)\n */\n async placeMarketOrder(params: {\n marketId: bigint;\n outcomeId: bigint;\n collateralAmount: bigint;\n maxPriceTick: bigint;\n orderType: number; // 0 = FOK, 1 = FAK\n }) {\n const wallet = this.walletClient;\n const account = await this.getSignerAccount();\n\n const { request } = await this.publicClient.simulateContract({\n address: this.config.diamondAddress,\n abi: MarketOrdersFacetABI,\n functionName: 'placeMarketOrder',\n args: [\n params.marketId,\n params.outcomeId,\n params.collateralAmount,\n params.maxPriceTick,\n params.orderType,\n ],\n account,\n });\n\n return wallet.writeContract(request);\n }\n\n /**\n * Execute a market order with simple string input (recommended for frontends)\n * @param params.amount - Collateral amount as decimal string (e.g., \"10.5\")\n * @param params.maxPrice - Maximum price as decimal string (e.g., \"0.85\")\n * @param params.orderType - 'FOK' or 'FAK' (default: 'FAK')\n */\n async placeMarketOrderSimple(params: {\n marketId: bigint;\n outcomeId: bigint;\n amount: string;\n maxPrice: string;\n orderType?: 'FOK' | 'FAK';\n }) {\n // Get market trading data to determine collateral token\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n const tradingData: any = await this.publicClient.readContract({\n address: this.config.diamondAddress,\n abi: MarketsFacetABI,\n functionName: 'getMarketTradingData',\n args: [params.marketId],\n });\n\n const collateralToken = tradingData.collateralToken as Address;\n const decimals = await getCachedTokenDecimals(this.publicClient, collateralToken);\n const collateralAmount = parseTokenAmount(params.amount, decimals);\n const maxPriceTick = priceToTick(params.maxPrice);\n const orderType = params.orderType === 'FOK' ? 0 : 1;\n\n return this.placeMarketOrder({\n marketId: params.marketId,\n outcomeId: params.outcomeId,\n collateralAmount,\n maxPriceTick,\n orderType,\n });\n }\n\n /**\n * Preview a market order (simulate transaction)\n */\n async previewMarketOrder(params: {\n marketId: bigint;\n outcomeId: bigint;\n collateralAmount: bigint;\n maxPriceTick: bigint;\n orderType: number;\n }) {\n const wallet = this.walletClient;\n const account = await this.getSignerAccount();\n\n const { result } = await this.publicClient.simulateContract({\n address: this.config.diamondAddress,\n abi: MarketOrdersFacetABI,\n functionName: 'placeMarketOrder',\n args: [\n params.marketId,\n params.outcomeId,\n params.collateralAmount,\n params.maxPriceTick,\n params.orderType,\n ],\n account,\n });\n\n return result;\n }\n\n /**\n * Preview placing an order (simulate transaction to check for reverts)\n */\n async previewPlaceOrder(params: {\n marketId: bigint;\n outcomeId: bigint;\n side: number;\n tick: bigint;\n qty: bigint;\n expiry: bigint;\n }) {\n const wallet = this.walletClient;\n const account = await this.getSignerAccount();\n\n const { result } = await this.publicClient.simulateContract({\n address: this.config.diamondAddress,\n abi: LimitOrdersFacetABI,\n functionName: 'placeOrder',\n args: [\n params.marketId,\n params.outcomeId,\n params.side,\n params.tick,\n params.qty,\n params.expiry,\n ],\n account,\n });\n\n return result;\n }\n\n /**\n * Execute a market sell order (FOK or FAK)\n *\n * @param params.marketId - The market to sell on\n * @param params.outcomeId - Which outcome to sell (0=YES, 1=NO)\n * @param params.tokenAmount - Amount of outcome tokens to sell\n * @param params.minPriceTick - Minimum price tick willing to accept (slippage protection)\n * @param params.orderType - 0=FOK (Fill-Or-Kill), 1=FAK (Fill-And-Kill)\n */\n async placeMarketSell(params: {\n marketId: bigint;\n outcomeId: bigint;\n tokenAmount: bigint;\n minPriceTick: bigint;\n orderType: number; // 0 = FOK, 1 = FAK\n }) {\n const wallet = this.walletClient;\n const account = await this.getSignerAccount();\n\n const { request } = await this.publicClient.simulateContract({\n address: this.config.diamondAddress,\n abi: MarketOrdersFacetABI,\n functionName: 'placeMarketSell',\n args: [\n params.marketId,\n params.outcomeId,\n params.tokenAmount,\n params.minPriceTick,\n params.orderType,\n ],\n account,\n });\n\n return wallet.writeContract(request);\n }\n\n /**\n * Execute a market sell order with simple string inputs (recommended for frontends)\n * @param params.amount - Token amount as decimal string (e.g., \"100.5\")\n * @param params.minPrice - Minimum price as decimal string (e.g., \"0.70\")\n * @param params.orderType - 'FOK' or 'FAK' (default: 'FAK')\n */\n async placeMarketSellSimple(params: {\n marketId: bigint;\n outcomeId: bigint;\n amount: string;\n minPrice: string;\n orderType?: 'FOK' | 'FAK';\n }) {\n // Get market trading data to determine collateral token decimals\n // (outcome tokens use same decimals as collateral)\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n const tradingData: any = await this.publicClient.readContract({\n address: this.config.diamondAddress,\n abi: MarketsFacetABI,\n functionName: 'getMarketTradingData',\n args: [params.marketId],\n });\n\n const collateralToken = tradingData.collateralToken as Address;\n const decimals = await getCachedTokenDecimals(this.publicClient, collateralToken);\n const tokenAmount = parseTokenAmount(params.amount, decimals);\n const minPriceTick = priceToTick(params.minPrice);\n const orderType = params.orderType === 'FOK' ? 0 : 1;\n\n return this.placeMarketSell({\n marketId: params.marketId,\n outcomeId: params.outcomeId,\n tokenAmount,\n minPriceTick,\n orderType,\n });\n }\n\n /**\n * Preview a market sell order (simulate transaction)\n */\n async previewMarketSell(params: {\n marketId: bigint;\n outcomeId: bigint;\n tokenAmount: bigint;\n minPriceTick: bigint;\n orderType: number;\n }) {\n const wallet = this.walletClient;\n const account = await this.getSignerAccount();\n\n const { result } = await this.publicClient.simulateContract({\n address: this.config.diamondAddress,\n abi: MarketOrdersFacetABI,\n functionName: 'placeMarketSell',\n args: [\n params.marketId,\n params.outcomeId,\n params.tokenAmount,\n params.minPriceTick,\n params.orderType,\n ],\n account,\n });\n\n return result;\n }\n\n /**\n * Watch for MarketOrderExecuted events\n */\n watchMarketOrder(\n marketId: bigint,\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n onLogs: (logs: any[]) => void\n ) {\n return this.publicClient.watchContractEvent({\n address: this.config.diamondAddress,\n abi: MarketOrdersFacetABI,\n eventName: 'MarketOrderExecuted',\n args: { marketId },\n onLogs,\n });\n }\n\n /**\n * Watch for MarketSellExecuted events\n */\n watchMarketSell(\n marketId: bigint,\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n onLogs: (logs: any[]) => void\n ) {\n return this.publicClient.watchContractEvent({\n address: this.config.diamondAddress,\n abi: MarketOrdersFacetABI,\n eventName: 'MarketSellExecuted',\n args: { marketId },\n onLogs,\n });\n }\n\n /**\n * Check whether any orders are matchable in the given market.\n * Returns a preview of which fill paths have crossing conditions,\n * plus top-of-book snapshot and head-order expiry flags.\n * Free off-chain (view function) — call before submitting matchOrders txs.\n */\n async canMatchOrders(marketId: bigint) {\n return this.publicClient.readContract({\n address: this.config.diamondAddress,\n abi: OrderBookFacetABI,\n functionName: 'canMatchOrders',\n args: [marketId],\n });\n }\n\n /**\n * Manually trigger order matching for a market\n */\n async matchOrders(params: { marketId: bigint; maxSteps?: bigint }) {\n const wallet = this.walletClient;\n const account = await this.getSignerAccount();\n\n const maxSteps = params.maxSteps || 10n;\n\n const { request } = await this.publicClient.simulateContract({\n address: this.config.diamondAddress,\n abi: MatchingFacetABI,\n functionName: 'matchOrders',\n args: [params.marketId, maxSteps],\n account,\n });\n\n return wallet.writeContract(request);\n }\n\n /**\n * Get order details by ID\n */\n async getOrder(orderId: bigint) {\n return this.publicClient.readContract({\n address: this.config.diamondAddress,\n abi: LimitOrdersFacetABI,\n functionName: 'getOrder',\n args: [orderId],\n });\n }\n\n /**\n * Get tick level details (orders at a specific price)\n */\n async getTickLevel(params: {\n marketId: bigint;\n outcomeId: bigint;\n side: number; // 0 = BUY, 1 = SELL\n tick: bigint;\n }) {\n return this.publicClient.readContract({\n address: this.config.diamondAddress,\n abi: OrderBookFacetABI,\n functionName: 'getTickLevel',\n args: [params.marketId, params.outcomeId, params.side, params.tick],\n });\n }\n\n /**\n * Get top-of-book summary for a market\n * Returns the best bid/ask tick and depth at that level for each outcome\n * @param params.formatted - If true, returns human-readable prices and quantities\n */\n async getOrderBook(params: {\n marketId: bigint;\n formatted?: boolean;\n }) {\n const formatted = params.formatted ?? false;\n\n const getSide = async (outcomeId: number, side: number) => {\n const topTick = (await this.publicClient.readContract({\n address: this.config.diamondAddress,\n abi: OrderBookFacetABI,\n functionName: 'getTopOfBook',\n args: [params.marketId, BigInt(outcomeId), side],\n })) as bigint;\n\n if (topTick === 0n) {\n return formatted\n ? { price: '0', quantity: '0', orders: 0, tick: 0n }\n : { tick: 0n, totalQty: 0n, depth: 0n };\n }\n\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n const level: any = await this.publicClient.readContract({\n address: this.config.diamondAddress,\n abi: OrderBookFacetABI,\n functionName: 'getTickLevel',\n args: [params.marketId, BigInt(outcomeId), side, topTick],\n });\n\n if (formatted) {\n return {\n price: tickToPrice(topTick),\n quantity: formatAmount(level.totalQty),\n orders: Number(level.depth),\n tick: topTick,\n };\n }\n\n return {\n tick: topTick,\n headOrderId: level.headOrderId,\n totalQty: level.totalQty,\n depth: level.depth,\n };\n };\n\n const [yesBestBid, yesBestAsk, noBestBid, noBestAsk] = await Promise.all([\n getSide(0, 0), // YES Best Bid\n getSide(0, 1), // YES Best Ask\n getSide(1, 0), // NO Best Bid\n getSide(1, 1), // NO Best Ask\n ]);\n\n return {\n YES: {\n bestBid: yesBestBid,\n bestAsk: yesBestAsk,\n },\n NO: {\n bestBid: noBestBid,\n bestAsk: noBestAsk,\n },\n };\n }\n\n /**\n * Split collateral into YES + NO outcome tokens\n * Requires USDC approval for the Diamond proxy.\n * @param marketId - The market to split for\n * @param amount - Collateral amount in smallest unit (e.g. USDC with 6 decimals)\n */\n async splitPosition(marketId: bigint, amount: bigint) {\n const wallet = this.walletClient;\n const account = await this.getSignerAccount();\n\n const { request } = await this.publicClient.simulateContract({\n address: this.config.diamondAddress,\n abi: VaultFacetABI,\n functionName: 'splitPosition',\n args: [marketId, amount],\n account,\n });\n\n return wallet.writeContract(request);\n }\n\n /**\n * Merge YES + NO outcome tokens back into collateral\n * Requires CTF setApprovalForAll for the Diamond proxy.\n * @param marketId - The market to merge for\n * @param amount - Amount of each outcome token to merge (in smallest unit)\n */\n async mergePositions(marketId: bigint, amount: bigint) {\n const wallet = this.walletClient;\n const account = await this.getSignerAccount();\n\n const { request } = await this.publicClient.simulateContract({\n address: this.config.diamondAddress,\n abi: VaultFacetABI,\n functionName: 'mergePositions',\n args: [marketId, amount],\n account,\n });\n\n return wallet.writeContract(request);\n }\n\n // ---------------------------------------------------------------------------\n // Batch order management\n // ---------------------------------------------------------------------------\n\n /**\n * Place multiple limit orders on the same market in a single transaction.\n * Gas-optimized: aggregates token transfers (max 3 instead of N).\n * @param params.marketId - The market for all orders\n * @param params.orders - Array of order params (max 20)\n */\n async batchPlaceOrders(params: {\n marketId: bigint;\n orders: Array<{\n outcomeId: bigint;\n side: number; // 0=BUY, 1=SELL\n tick: bigint;\n qty: bigint;\n expiry: bigint;\n }>;\n }) {\n const wallet = this.walletClient;\n const account = await this.getSignerAccount();\n\n const { request } = await this.publicClient.simulateContract({\n address: this.config.diamondAddress,\n abi: BatchOrdersFacetABI,\n functionName: 'batchPlaceOrders',\n args: [params.marketId, params.orders],\n account,\n });\n\n return wallet.writeContract(request);\n }\n\n /**\n * Place multiple limit orders with simple string inputs (recommended for frontends).\n * @param params.price - Price as decimal string (e.g., \"0.75\")\n * @param params.quantity - Quantity as decimal string (e.g., \"100.5\")\n * @param params.expiry - Duration string (e.g., \"1h\", \"gtc\") or bigint timestamp\n */\n async batchPlaceOrdersSimple(params: {\n marketId: bigint;\n orders: Array<{\n outcomeId: bigint;\n side: number;\n price: string;\n quantity: string;\n expiry: string | bigint;\n }>;\n }) {\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n const tradingData: any = await this.publicClient.readContract({\n address: this.config.diamondAddress,\n abi: MarketsFacetABI,\n functionName: 'getMarketTradingData',\n args: [params.marketId],\n });\n\n const collateralToken = tradingData.collateralToken as Address;\n const decimals = await getCachedTokenDecimals(this.publicClient, collateralToken);\n\n const orders = params.orders.map((o) => ({\n outcomeId: o.outcomeId,\n side: o.side,\n tick: priceToTick(o.price),\n qty: parseTokenAmount(o.quantity, decimals),\n expiry:\n typeof o.expiry === 'string'\n ? o.expiry === 'gtc'\n ? BigInt(0)\n : createExpiry(o.expiry)\n : o.expiry,\n }));\n\n return this.batchPlaceOrders({ marketId: params.marketId, orders });\n }\n\n /**\n * Cancel multiple orders atomically in a single transaction.\n * Orders can span different markets.\n * @param orderIds - Array of order IDs to cancel (max 100). Must be owned by caller.\n */\n async batchCancelOrders(orderIds: bigint[]) {\n const wallet = this.walletClient;\n const account = await this.getSignerAccount();\n\n const { request } = await this.publicClient.simulateContract({\n address: this.config.diamondAddress,\n abi: BatchOrdersFacetABI,\n functionName: 'batchCancelOrders',\n args: [orderIds],\n account,\n });\n\n return wallet.writeContract(request);\n }\n\n /**\n * Atomically cancel stale orders and place new ones on the same market.\n * Cancel phase runs first; if any step fails the entire tx reverts.\n * @param params.marketId - Market for new orders\n * @param params.cancelOrderIds - Orders to cancel (max 100)\n * @param params.newOrders - New orders to place (max 20)\n */\n async cancelAndReplace(params: {\n marketId: bigint;\n cancelOrderIds: bigint[];\n newOrders: Array<{\n outcomeId: bigint;\n side: number;\n tick: bigint;\n qty: bigint;\n expiry: bigint;\n }>;\n }) {\n const wallet = this.walletClient;\n const account = await this.getSignerAccount();\n\n const { request } = await this.publicClient.simulateContract({\n address: this.config.diamondAddress,\n abi: BatchOrdersFacetABI,\n functionName: 'cancelAndReplace',\n args: [params.marketId, params.cancelOrderIds, params.newOrders],\n account,\n });\n\n return wallet.writeContract(request);\n }\n\n /**\n * Cancel-and-replace with simple string inputs (recommended for frontends).\n */\n async cancelAndReplaceSimple(params: {\n marketId: bigint;\n cancelOrderIds: bigint[];\n newOrders: Array<{\n outcomeId: bigint;\n side: number;\n price: string;\n quantity: string;\n expiry: string | bigint;\n }>;\n }) {\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n const tradingData: any = await this.publicClient.readContract({\n address: this.config.diamondAddress,\n abi: MarketsFacetABI,\n functionName: 'getMarketTradingData',\n args: [params.marketId],\n });\n\n const collateralToken = tradingData.collateralToken as Address;\n const decimals = await getCachedTokenDecimals(this.publicClient, collateralToken);\n\n const newOrders = params.newOrders.map((o) => ({\n outcomeId: o.outcomeId,\n side: o.side,\n tick: priceToTick(o.price),\n qty: parseTokenAmount(o.quantity, decimals),\n expiry:\n typeof o.expiry === 'string'\n ? o.expiry === 'gtc'\n ? BigInt(0)\n : createExpiry(o.expiry)\n : o.expiry,\n }));\n\n return this.cancelAndReplace({\n marketId: params.marketId,\n cancelOrderIds: params.cancelOrderIds,\n newOrders,\n });\n }\n}\n","import { gql } from 'graphql-request';\n\nexport const GET_VENUES = gql`\n query GetVenues(\n $first: Int = 100\n $skip: Int = 0\n $orderBy: Venue_orderBy = createdAt\n $orderDirection: OrderDirection = desc\n ) {\n venues(\n first: $first\n skip: $skip\n orderBy: $orderBy\n orderDirection: $orderDirection\n ) {\n id\n venueId\n name\n operator\n metadata\n # Fee configuration\n venueFeeBps\n creatorFeeBps\n # Oracle configuration\n umaRewardAmount\n umaMinBond\n # Access control\n tradingAccessControl\n creationAccessControl\n # State\n paused\n # Statistics\n totalMarkets\n totalMarketGroups\n activeMarkets\n totalVolume\n totalFees\n # Timestamps\n createdAt\n }\n }\n`;\n\nexport const GET_MARKETS = gql`\n query GetMarkets(\n $venueId: BigInt\n $search: String = \"\"\n $statuses: [MarketStatus!] = [Draft, Active, Resolved, Invalid]\n $first: Int = 100\n $skip: Int = 0\n ) {\n markets(\n where: {\n venue_: { venueId: $venueId }\n question_contains_nocase: $search\n status_in: $statuses\n }\n first: $first\n skip: $skip\n orderBy: createdAt\n orderDirection: desc\n ) {\n id\n marketId\n question\n outcomes\n status\n collateralToken\n conditionId\n tickSize\n lastPriceTick_0\n lastPriceTick_1\n lastTradeTimestamp\n lastTradeTimestamp_0\n lastTradeTimestamp_1\n topOfBook {\n outcome\n side\n topTick\n }\n tags\n metadataURI\n }\n }\n`;\n\nexport const GET_MARKETS_WITH_PRICING = gql`\n query GetMarketsWithPricing(\n $venueId: BigInt\n $search: String = \"\"\n $statuses: [MarketStatus!] = [Draft, Active, Resolved, Invalid]\n $first: Int = 100\n $skip: Int = 0\n ) {\n markets(\n where: {\n venue_: { venueId: $venueId }\n question_contains_nocase: $search\n status_in: $statuses\n }\n first: $first\n skip: $skip\n orderBy: createdAt\n orderDirection: desc\n ) {\n id\n marketId\n question\n outcomes\n status\n collateralToken\n conditionId\n tickSize\n # Last trade prices\n lastPriceTick_0\n lastPriceTick_1\n lastTradeTimestamp\n lastTradeTimestamp_0\n lastTradeTimestamp_1\n # Top of book for mark price calculation\n topOfBook {\n outcome\n side\n topTick\n }\n # Statistics\n totalVolume\n totalOrders\n uniqueTraders\n tags\n metadataURI\n }\n }\n`;\n\nexport const GET_MARKET = gql`\n query GetMarket($marketId: BigInt!) {\n markets(where: { marketId: $marketId }) {\n id\n marketId\n question\n outcomes\n status\n resolvedOutcome\n collateralToken\n conditionId\n tickSize\n lastPriceTick_0\n lastPriceTick_1\n lastTradeTimestamp\n lastTradeTimestamp_0\n lastTradeTimestamp_1\n topOfBook {\n outcome\n side\n topTick\n }\n totalVolume\n totalOrders\n totalFees\n uniqueTraders\n tags\n metadataURI\n createdAt\n creator {\n id\n address\n }\n }\n }\n`;\n\nexport const GET_TRADES = gql`\n query GetTrades($marketId: BigInt, $first: Int = 100, $skip: Int = 0) {\n trades(\n where: { market_: { marketId: $marketId } }\n first: $first\n skip: $skip\n orderBy: timestamp\n orderDirection: desc\n ) {\n id\n market {\n marketId\n }\n outcome\n tick\n amount\n cost\n tradeType\n buyTrader {\n id\n }\n sellTrader {\n id\n }\n avgPrice\n timestamp\n blockNumber\n transactionHash\n }\n }\n`;\n\nexport const GET_CHART_TRADES = gql`\n query GetChartTrades(\n $marketId: BigInt!\n $timestampGte: BigInt\n $first: Int = 1000\n $skip: Int = 0\n ) {\n trades(\n where: { market_: { marketId: $marketId }, timestamp_gte: $timestampGte }\n first: $first\n skip: $skip\n orderBy: timestamp\n orderDirection: asc\n ) {\n tick\n timestamp\n outcome\n }\n }\n`;\n\nexport const GET_CHART_TRADES_ALL = gql`\n query GetChartTradesAll(\n $marketId: BigInt!\n $first: Int = 1000\n $skip: Int = 0\n ) {\n trades(\n where: { market_: { marketId: $marketId } }\n first: $first\n skip: $skip\n orderBy: timestamp\n orderDirection: asc\n ) {\n tick\n timestamp\n outcome\n }\n }\n`;\n\nexport const GET_ORDERS = gql`\n query GetOrders($marketId: BigInt, $first: Int = 100, $skip: Int = 0) {\n orders(\n where: { market_: { marketId: $marketId }, deleted: false }\n first: $first\n skip: $skip\n orderBy: createdAt\n orderDirection: desc\n ) {\n id\n orderId\n market {\n marketId\n }\n trader {\n address\n }\n outcome\n side\n tick\n amount\n filled\n status\n createdAt\n createdAtBlock\n cancelledAt\n expiredAt\n }\n }\n`;\n\nexport const GET_USER = gql`\n query GetUser($address: Bytes!) {\n user(id: $address) {\n id\n address\n totalOrdersPlaced\n totalVolume\n totalMarkets\n totalTradeCount\n totalMarketsTraded\n totalRealizedPnL\n firstSeenAt\n lastSeenAt\n }\n }\n`;\n\nexport const GET_TOP_OF_BOOK = gql`\n query GetTopOfBook($marketId: BigInt!) {\n topOfBooks(where: { market_: { marketId: $marketId } }) {\n id\n market {\n marketId\n }\n outcome\n side\n topTick\n updatedAt\n updatedAtBlock\n }\n }\n`;\n\nexport const GET_PROTOCOL_STATS = gql`\n query GetProtocolStats {\n protocol(id: \"1\") {\n id\n totalVenues\n totalMarkets\n totalMarketGroups\n totalVolume\n totalFees\n totalUsers\n updatedAt\n }\n }\n`;\n\nexport const GET_QUESTION = gql`\n query GetQuestion($questionId: ID!) {\n question(id: $questionId) {\n id\n questionId\n conditionId\n ancillaryData\n liveness\n requiredBond\n currency\n reward\n resolved\n outcome\n activeAssertion {\n assertionId\n proposedOutcome\n settled\n result\n createdAt\n }\n assertions {\n assertionId\n proposedOutcome\n settled\n result\n createdAt\n settledAt\n }\n createdAt\n resolvedAt\n }\n }\n`;\n\nexport const GET_QUESTIONS = gql`\n query GetQuestions($first: Int = 100, $skip: Int = 0) {\n questions(\n first: $first\n skip: $skip\n orderBy: createdAt\n orderDirection: desc\n ) {\n id\n questionId\n conditionId\n liveness\n requiredBond\n currency\n reward\n resolved\n outcome\n market {\n marketId\n question\n status\n }\n activeAssertion {\n assertionId\n proposedOutcome\n }\n createdAt\n resolvedAt\n }\n }\n`;\n\n// ============================================\n// Market Groups\n// ============================================\n\nexport const GET_MARKET_GROUPS = gql`\n query GetMarketGroups($venueId: BigInt, $first: Int = 100, $skip: Int = 0) {\n marketGroups(\n where: { venue_: { venueId: $venueId } }\n first: $first\n skip: $skip\n orderBy: createdAt\n orderDirection: desc\n ) {\n id\n groupId\n marketQuestion\n status\n totalMarkets\n activeMarketCount\n resolvedMarketId\n reward\n tags\n metadataURI\n venue {\n id\n venueId\n name\n }\n creator {\n id\n address\n }\n createdAt\n activatedAt\n resolvedAt\n }\n }\n`;\n\nexport const GET_MARKET_GROUP = gql`\n query GetMarketGroup($groupId: BigInt!) {\n marketGroups(where: { groupId: $groupId }) {\n id\n groupId\n marketQuestion\n status\n totalMarkets\n activeMarketCount\n resolvedMarketId\n tags\n metadataURI\n venue {\n id\n venueId\n name\n }\n creator {\n id\n address\n }\n createdAt\n createdAtBlock\n activatedAt\n resolvedAt\n }\n }\n`;\n\nexport const GET_GROUP_MARKETS = gql`\n query GetGroupMarkets($groupId: BigInt!, $first: Int = 100, $skip: Int = 0) {\n markets(\n where: { groupId: $groupId }\n first: $first\n skip: $skip\n orderBy: marketId\n orderDirection: asc\n ) {\n id\n marketId\n question\n outcomes\n status\n resolvedOutcome\n collateralToken\n conditionId\n tickSize\n groupId\n marketGroupItem {\n marketName\n isPlaceholder\n createdAt\n activatedAt\n }\n lastPriceTick_0\n lastPriceTick_1\n lastTradeTimestamp\n lastTradeTimestamp_0\n lastTradeTimestamp_1\n topOfBook {\n outcome\n side\n topTick\n }\n totalVolume\n totalOrders\n createdAt\n }\n }\n`;\n\nexport const GET_MARKET_GROUP_ITEM = gql`\n query GetMarketGroupItem($marketId: BigInt!) {\n marketGroupItems(where: { market_: { marketId: $marketId } }) {\n id\n marketName\n isPlaceholder\n market {\n id\n marketId\n question\n status\n }\n marketGroup {\n id\n groupId\n marketQuestion\n }\n createdAt\n activatedAt\n }\n }\n`;\n\n// ============================================\n// Unified Market Feed (Polymarket-style)\n// ============================================\n\n/**\n * Get unified feed of standalone markets + market groups\n * This query fetches both types in a single request for efficient homepage display\n * Frontend should merge and sort the results\n */\nexport const GET_UNIFIED_MARKET_FEED = gql`\n query GetUnifiedMarketFeed(\n $venueId: BigInt\n $first: Int = 50\n $skip: Int = 0\n ) {\n # Standalone binary markets (not in groups, not part of a price series)\n standaloneMarkets: markets(\n where: {\n groupId: \"0\"\n venue_: { venueId: $venueId }\n status_not: \"Draft\"\n priceSeries: null\n }\n first: $first\n skip: $skip\n orderBy: createdAt\n orderDirection: desc\n ) {\n id\n marketId\n question\n outcomes\n status\n collateralToken\n conditionId\n tickSize\n groupId\n # Pricing data\n lastPriceTick_0\n lastPriceTick_1\n lastTradeTimestamp\n lastTradeTimestamp_0\n lastTradeTimestamp_1\n topOfBook {\n outcome\n side\n topTick\n }\n # Statistics\n totalVolume\n totalOrders\n uniqueTraders\n tags\n metadataURI\n createdAt\n venue {\n id\n venueId\n name\n }\n creator {\n id\n address\n }\n }\n\n # Market groups with their child markets\n marketGroups(\n where: { venue_: { venueId: $venueId }, status_not: \"Draft\" }\n first: $first\n skip: $skip\n orderBy: createdAt\n orderDirection: desc\n ) {\n id\n groupId\n marketQuestion\n status\n totalMarkets\n activeMarketCount\n resolvedMarketId\n tags\n metadataURI\n createdAt\n activatedAt\n resolvedAt\n venue {\n id\n venueId\n name\n }\n creator {\n id\n address\n }\n # Include child markets with their prices (no status filter — use isPlaceholder to filter)\n markets(\n orderBy: marketId\n orderDirection: asc\n ) {\n id\n marketId\n question\n status\n groupId\n tickSize\n # Pricing data for probability calculation\n lastPriceTick_0\n lastPriceTick_1\n totalVolume\n # Market group item metadata\n marketGroupItem {\n marketName\n isPlaceholder\n }\n }\n }\n\n # Price market series — one row per (venue, seriesKey)\n priceMarketSeries(\n where: { venue_: { venueId: $venueId }, status_not: \"Resolved\" }\n first: $first\n skip: $skip\n orderBy: updatedAt\n orderDirection: desc\n ) {\n id\n seriesKey\n asset\n kind\n interval\n intervalSeconds\n status\n tags\n createdAt\n updatedAt\n currentMarket {\n id\n marketId\n question\n outcomes\n status\n collateralToken\n conditionId\n tickSize\n lastPriceTick_0\n lastPriceTick_1\n lastTradeTimestamp\n lastTradeTimestamp_0\n lastTradeTimestamp_1\n topOfBook {\n outcome\n side\n topTick\n }\n totalVolume\n metadataURI\n createdAt\n priceMarket {\n provider\n feedId\n strikePrice\n priceExpo\n openTime\n closeTime\n }\n }\n venue {\n id\n venueId\n name\n }\n }\n }\n`;\n\n/**\n * Get unified feed sorted by volume (most popular)\n */\nexport const GET_UNIFIED_MARKET_FEED_BY_VOLUME = gql`\n query GetUnifiedMarketFeedByVolume(\n $venueId: BigInt\n $first: Int = 50\n $skip: Int = 0\n ) {\n # Standalone binary markets sorted by volume (excluding price series members)\n standaloneMarkets: markets(\n where: {\n groupId: \"0\"\n venue_: { venueId: $venueId }\n status_not: \"Draft\"\n priceSeries: null\n }\n first: $first\n skip: $skip\n orderBy: totalVolume\n orderDirection: desc\n ) {\n id\n marketId\n question\n outcomes\n status\n collateralToken\n groupId\n tickSize\n lastPriceTick_0\n lastPriceTick_1\n lastTradeTimestamp\n lastTradeTimestamp_0\n lastTradeTimestamp_1\n topOfBook {\n outcome\n side\n topTick\n }\n totalVolume\n totalOrders\n uniqueTraders\n tags\n metadataURI\n createdAt\n venue {\n id\n venueId\n name\n }\n }\n\n # Market groups\n marketGroups(\n where: { venue_: { venueId: $venueId }, status_not: \"Draft\" }\n first: $first\n skip: $skip\n orderBy: createdAt\n orderDirection: desc\n ) {\n id\n groupId\n marketQuestion\n status\n totalMarkets\n activeMarketCount\n resolvedMarketId\n tags\n metadataURI\n createdAt\n activatedAt\n resolvedAt\n venue {\n id\n venueId\n name\n }\n creator {\n id\n address\n }\n markets {\n id\n marketId\n question\n status\n groupId\n tickSize\n lastPriceTick_0\n lastPriceTick_1\n totalVolume\n marketGroupItem {\n marketName\n isPlaceholder\n }\n }\n }\n\n # Price market series — venue-scoped, only those with an active current market\n priceMarketSeries(\n where: { venue_: { venueId: $venueId }, status_not: \"Resolved\" }\n first: $first\n skip: $skip\n orderBy: updatedAt\n orderDirection: desc\n ) {\n id\n seriesKey\n asset\n kind\n interval\n intervalSeconds\n status\n tags\n createdAt\n updatedAt\n currentMarket {\n id\n marketId\n question\n outcomes\n status\n collateralToken\n tickSize\n lastPriceTick_0\n lastPriceTick_1\n lastTradeTimestamp\n lastTradeTimestamp_0\n lastTradeTimestamp_1\n topOfBook {\n outcome\n side\n topTick\n }\n totalVolume\n metadataURI\n createdAt\n priceMarket {\n provider\n feedId\n strikePrice\n priceExpo\n openTime\n closeTime\n }\n }\n venue {\n id\n venueId\n name\n }\n }\n }\n`;\n\n// ============================================\n// Cross-Venue Queries (Protocol App)\n// ============================================\n\n/**\n * Get all markets across all venues (no venue filter)\n * Used by the protocol app's global market explorer\n */\nexport const GET_ALL_MARKETS_FEED = gql`\n query GetAllMarketsFeed($first: Int = 50, $skip: Int = 0) {\n # Standalone binary markets (not in groups, not part of a price series)\n standaloneMarkets: markets(\n where: { groupId: \"0\", status_not: \"Draft\", priceSeries: null }\n first: $first\n skip: $skip\n orderBy: createdAt\n orderDirection: desc\n ) {\n id\n marketId\n question\n outcomes\n status\n collateralToken\n conditionId\n tickSize\n groupId\n lastPriceTick_0\n lastPriceTick_1\n lastTradeTimestamp\n lastTradeTimestamp_0\n lastTradeTimestamp_1\n topOfBook {\n outcome\n side\n topTick\n }\n totalVolume\n totalOrders\n uniqueTraders\n metadataURI\n createdAt\n venue {\n id\n venueId\n name\n }\n creator {\n id\n address\n }\n }\n\n # Market groups with their child markets\n marketGroups(\n where: { status_not: \"Draft\" }\n first: $first\n skip: $skip\n orderBy: createdAt\n orderDirection: desc\n ) {\n id\n groupId\n marketQuestion\n status\n totalMarkets\n activeMarketCount\n resolvedMarketId\n metadataURI\n createdAt\n activatedAt\n resolvedAt\n venue {\n id\n venueId\n name\n }\n creator {\n id\n address\n }\n markets(\n where: { status_not: \"Draft\" }\n orderBy: marketId\n orderDirection: asc\n ) {\n id\n marketId\n question\n status\n groupId\n tickSize\n lastPriceTick_0\n lastPriceTick_1\n totalVolume\n marketGroupItem {\n marketName\n isPlaceholder\n }\n }\n }\n\n # Price market series across all venues\n priceMarketSeries(\n where: { status_not: \"Resolved\" }\n first: $first\n skip: $skip\n orderBy: updatedAt\n orderDirection: desc\n ) {\n id\n seriesKey\n asset\n kind\n interval\n intervalSeconds\n status\n tags\n createdAt\n updatedAt\n currentMarket {\n id\n marketId\n question\n outcomes\n status\n collateralToken\n tickSize\n lastPriceTick_0\n lastPriceTick_1\n lastTradeTimestamp\n topOfBook {\n outcome\n side\n topTick\n }\n totalVolume\n createdAt\n priceMarket {\n provider\n feedId\n strikePrice\n priceExpo\n openTime\n closeTime\n }\n }\n venue {\n id\n venueId\n name\n }\n }\n }\n`;\n\n/**\n * Get all markets across all venues sorted by volume\n */\nexport const GET_ALL_MARKETS_FEED_BY_VOLUME = gql`\n query GetAllMarketsFeedByVolume($first: Int = 50, $skip: Int = 0) {\n standaloneMarkets: markets(\n where: { groupId: \"0\", status_not: \"Draft\", priceSeries: null }\n first: $first\n skip: $skip\n orderBy: totalVolume\n orderDirection: desc\n ) {\n id\n marketId\n question\n outcomes\n status\n collateralToken\n conditionId\n tickSize\n groupId\n lastPriceTick_0\n lastPriceTick_1\n lastTradeTimestamp\n lastTradeTimestamp_0\n lastTradeTimestamp_1\n topOfBook {\n outcome\n side\n topTick\n }\n totalVolume\n totalOrders\n uniqueTraders\n metadataURI\n createdAt\n venue {\n id\n venueId\n name\n }\n creator {\n id\n address\n }\n }\n\n marketGroups(\n where: { status_not: \"Draft\" }\n first: $first\n skip: $skip\n orderBy: createdAt\n orderDirection: desc\n ) {\n id\n groupId\n marketQuestion\n status\n totalMarkets\n activeMarketCount\n resolvedMarketId\n metadataURI\n createdAt\n activatedAt\n resolvedAt\n venue {\n id\n venueId\n name\n }\n creator {\n id\n address\n }\n markets {\n id\n marketId\n question\n status\n groupId\n tickSize\n lastPriceTick_0\n lastPriceTick_1\n totalVolume\n marketGroupItem {\n marketName\n isPlaceholder\n }\n }\n }\n\n # Price market series across all venues, sorted by volume of current market\n priceMarketSeries(\n where: { status_not: \"Resolved\" }\n first: $first\n skip: $skip\n orderBy: updatedAt\n orderDirection: desc\n ) {\n id\n seriesKey\n asset\n kind\n interval\n intervalSeconds\n status\n tags\n createdAt\n updatedAt\n currentMarket {\n id\n marketId\n question\n outcomes\n status\n collateralToken\n tickSize\n lastPriceTick_0\n lastPriceTick_1\n lastTradeTimestamp\n topOfBook {\n outcome\n side\n topTick\n }\n totalVolume\n createdAt\n priceMarket {\n provider\n feedId\n strikePrice\n priceExpo\n openTime\n closeTime\n }\n }\n venue {\n id\n venueId\n name\n }\n }\n }\n`;\n\n/**\n * Get a single PriceMarketSeries with all its member markets, ordered by closeTime.\n * Used by the market detail page to render the time-button navigation strip.\n */\nexport const GET_PRICE_MARKET_SERIES = gql`\n query GetPriceMarketSeries($venueId: BigInt!, $seriesKey: String!) {\n priceMarketSeries(\n where: { venue_: { venueId: $venueId }, seriesKey: $seriesKey }\n first: 1\n ) {\n id\n seriesKey\n asset\n kind\n interval\n intervalSeconds\n status\n tags\n createdAt\n updatedAt\n currentMarket {\n id\n marketId\n }\n venue {\n id\n venueId\n name\n }\n markets(first: 1000, orderBy: marketId, orderDirection: asc) {\n id\n marketId\n question\n status\n resolvedOutcome\n outcomes\n priceMarket {\n openTime\n closeTime\n resolved\n outcome\n finalPrice\n strikePrice\n }\n }\n }\n }\n`;\n\n/**\n * Get recent trades across all venues (for activity feed / ticker)\n */\nexport const GET_RECENT_TRADES = gql`\n query GetRecentTrades($first: Int = 20, $skip: Int = 0) {\n trades(\n first: $first\n skip: $skip\n orderBy: timestamp\n orderDirection: desc\n ) {\n id\n market {\n marketId\n question\n outcomes\n venue {\n venueId\n name\n }\n }\n outcome\n tick\n amount\n cost\n tradeType\n buyTrader {\n id\n }\n sellTrader {\n id\n }\n timestamp\n blockNumber\n transactionHash\n }\n }\n`;\n\n/**\n * Get recently created markets across all venues\n */\nexport const GET_RECENT_MARKETS = gql`\n query GetRecentMarkets($first: Int = 20, $skip: Int = 0) {\n markets(\n first: $first\n skip: $skip\n orderBy: createdAt\n orderDirection: desc\n where: { status_not: \"Draft\" }\n ) {\n id\n marketId\n question\n outcomes\n status\n totalVolume\n uniqueTraders\n createdAt\n venue {\n venueId\n name\n }\n creator {\n address\n }\n }\n }\n`;\n\n// ============================================\n// Trader Analytics Queries\n// ============================================\n\nexport const GET_TRADER_PROFILE = gql`\n query GetTraderProfile($address: ID!) {\n user(id: $address) {\n id\n address\n totalOrdersPlaced\n totalVolume\n totalTradeCount\n totalMarketsTraded\n totalRealizedPnL\n totalMarkets\n totalMarketGroups\n firstSeenAt\n lastSeenAt\n }\n }\n`;\n\nexport const GET_TRADER_POSITIONS = gql`\n query GetTraderPositions(\n $trader: String!\n $first: Int = 100\n $skip: Int = 0\n ) {\n traderPositions(\n where: { trader: $trader, quantity_gt: \"0\" }\n first: $first\n skip: $skip\n orderBy: lastTradeAt\n orderDirection: desc\n ) {\n id\n outcome\n quantity\n totalCostBasis\n avgEntryPrice\n realizedPnL\n totalCollateralIn\n totalCollateralOut\n buyCount\n sellCount\n firstTradeAt\n lastTradeAt\n market {\n id\n marketId\n question\n outcomes\n status\n resolvedOutcome\n tickSize\n lastPriceTick_0\n lastPriceTick_1\n collateralDecimals\n venue {\n id\n venueId\n name\n }\n }\n }\n }\n`;\n\nexport const GET_TRADER_CLOSED_POSITIONS = gql`\n query GetTraderClosedPositions(\n $trader: String!\n $first: Int = 100\n $skip: Int = 0\n ) {\n traderPositions(\n where: { trader: $trader, quantity: \"0\" }\n first: $first\n skip: $skip\n orderBy: lastTradeAt\n orderDirection: desc\n ) {\n id\n outcome\n quantity\n totalCostBasis\n avgEntryPrice\n realizedPnL\n totalCollateralIn\n totalCollateralOut\n buyCount\n sellCount\n firstTradeAt\n lastTradeAt\n market {\n id\n marketId\n question\n outcomes\n status\n resolvedOutcome\n tickSize\n lastPriceTick_0\n lastPriceTick_1\n collateralDecimals\n venue {\n id\n venueId\n name\n }\n }\n }\n }\n`;\n\nexport const GET_TRADER_FILLS = gql`\n query GetTraderFills(\n $trader: String!\n $first: Int = 50\n $skip: Int = 0\n ) {\n fills(\n where: { trader: $trader }\n first: $first\n skip: $skip\n orderBy: timestamp\n orderDirection: desc\n ) {\n id\n outcome\n side\n tick\n amount\n cost\n fees\n tradeType\n avgPrice\n timestamp\n blockNumber\n transactionHash\n market {\n id\n marketId\n question\n outcomes\n tickSize\n status\n collateralDecimals\n venue {\n id\n venueId\n name\n }\n }\n }\n }\n`;\n\nexport const GET_LEADERBOARD = gql`\n query GetLeaderboard(\n $orderBy: User_orderBy = totalVolume\n $orderDirection: OrderDirection = desc\n $first: Int = 50\n $skip: Int = 0\n ) {\n users(\n where: { totalTradeCount_gt: \"0\" }\n first: $first\n skip: $skip\n orderBy: $orderBy\n orderDirection: $orderDirection\n ) {\n id\n address\n totalVolume\n totalTradeCount\n totalMarketsTraded\n totalRealizedPnL\n firstSeenAt\n lastSeenAt\n }\n }\n`;\n\nexport const GET_MARKET_TOP_HOLDERS = gql`\n query GetMarketTopHolders(\n $marketId: String!\n $first: Int = 20\n ) {\n traderPositions(\n where: { market: $marketId, quantity_gt: \"0\" }\n first: $first\n orderBy: quantity\n orderDirection: desc\n ) {\n id\n trader {\n id\n address\n }\n outcome\n quantity\n totalCostBasis\n avgEntryPrice\n realizedPnL\n }\n }\n`;\n","import type { TypedDocumentNode } from '@graphql-typed-document-node/core';\nimport { gql } from 'graphql-request';\nimport { BaseModule } from './base';\nimport { calculateChancePercent } from '../utils/conversions';\n\n/**\n * Market lifecycle statuses indexed by the subgraph. Mirrors the on-chain\n * market state machine.\n */\nexport type MarketStatus = 'Draft' | 'Active' | 'Resolved' | 'Invalid';\n\nconst ALL_MARKET_STATUSES: MarketStatus[] = ['Draft', 'Active', 'Resolved', 'Invalid'];\nimport {\n GET_VENUES,\n GET_MARKETS,\n GET_MARKETS_WITH_PRICING,\n GET_MARKET,\n GET_TRADES,\n GET_ORDERS,\n GET_USER,\n GET_TOP_OF_BOOK,\n GET_PROTOCOL_STATS,\n GET_MARKET_GROUPS,\n GET_MARKET_GROUP,\n GET_GROUP_MARKETS,\n GET_MARKET_GROUP_ITEM,\n GET_UNIFIED_MARKET_FEED,\n GET_UNIFIED_MARKET_FEED_BY_VOLUME,\n GET_PRICE_MARKET_SERIES,\n GET_ALL_MARKETS_FEED,\n GET_ALL_MARKETS_FEED_BY_VOLUME,\n GET_RECENT_TRADES,\n GET_RECENT_MARKETS,\n GET_CHART_TRADES,\n GET_CHART_TRADES_ALL,\n GET_TRADER_PROFILE,\n GET_TRADER_POSITIONS,\n GET_TRADER_CLOSED_POSITIONS,\n GET_TRADER_FILLS,\n GET_LEADERBOARD,\n GET_MARKET_TOP_HOLDERS,\n} from '../subgraph/queries';\n\nexport class PublicModule extends BaseModule {\n /**\n * Get all venues\n */\n async getVenues(params?: {\n first?: number;\n skip?: number;\n orderBy?: string;\n orderDirection?: 'asc' | 'desc';\n }) {\n return this.subgraph.request(GET_VENUES, {\n first: params?.first || 100,\n skip: params?.skip || 0,\n orderBy: params?.orderBy || 'createdAt',\n orderDirection: params?.orderDirection || 'desc',\n });\n }\n\n /**\n * Get markets for a venue\n */\n async getMarkets(params: {\n venueId?: bigint;\n search?: string;\n statuses?: MarketStatus[];\n first?: number;\n skip?: number;\n }) {\n return this.subgraph.request(GET_MARKETS, {\n venueId: params.venueId?.toString(),\n search: params.search ?? '',\n statuses: params.statuses ?? ALL_MARKET_STATUSES,\n first: params.first || 100,\n skip: params.skip || 0,\n });\n }\n\n /**\n * Get markets with pricing data (last trade prices + statistics)\n *\n * @param params.search Optional case-insensitive substring match against the\n * market `question` field. Empty string matches all markets.\n * @param params.statuses Optional list of market statuses to include. Omit\n * to include all statuses (Draft, Active, Resolved, Invalid).\n */\n async getMarketsWithPricing(params: {\n venueId?: bigint;\n search?: string;\n statuses?: MarketStatus[];\n first?: number;\n skip?: number;\n }) {\n return this.subgraph.request(GET_MARKETS_WITH_PRICING, {\n venueId: params.venueId?.toString(),\n search: params.search ?? '',\n statuses: params.statuses ?? ALL_MARKET_STATUSES,\n first: params.first || 100,\n skip: params.skip || 0,\n });\n }\n\n /**\n * Get market by ID\n */\n async getMarket(marketId: bigint) {\n const response = await this.subgraph.request<any>(GET_MARKET, {\n marketId: marketId.toString(),\n });\n return response.markets[0] || null;\n }\n\n /**\n * Get trade history for a market\n */\n async getTradeHistory(params: {\n marketId: bigint;\n first?: number;\n skip?: number;\n }) {\n return this.subgraph.request<any>(GET_TRADES, {\n marketId: params.marketId.toString(),\n first: params.first || 100,\n skip: params.skip || 0,\n });\n }\n\n /**\n * Get trade data optimized for price charting.\n * Supports time-window filtering and higher limits.\n */\n async getChartTrades(params: {\n marketId: bigint;\n timestampGte?: bigint;\n first?: number;\n skip?: number;\n }) {\n const variables: Record<string, any> = {\n marketId: params.marketId.toString(),\n first: params.first || 1000,\n skip: params.skip || 0,\n };\n\n // Use a separate query without timestamp_gte filter for ALL timeframe\n // The subgraph treats timestamp_gte: null as a filter that matches nothing\n if (params.timestampGte !== undefined) {\n variables.timestampGte = params.timestampGte.toString();\n return this.subgraph.request<any>(GET_CHART_TRADES, variables);\n }\n\n return this.subgraph.request<any>(GET_CHART_TRADES_ALL, variables);\n }\n\n /**\n * Get orders for a market\n */\n async getOrders(params: { marketId: bigint; first?: number; skip?: number }) {\n return this.subgraph.request<any>(GET_ORDERS, {\n marketId: params.marketId.toString(),\n first: params.first || 100,\n skip: params.skip || 0,\n });\n }\n\n /**\n * Get user data by address\n */\n async getUser(address: string) {\n return this.subgraph.request<any>(GET_USER, {\n address: address.toLowerCase(),\n });\n }\n\n /**\n * Get top of book for a market\n */\n async getTopOfBook(marketId: bigint) {\n return this.subgraph.request<any>(GET_TOP_OF_BOOK, {\n marketId: marketId.toString(),\n });\n }\n\n /**\n * Get protocol-wide statistics\n */\n async getProtocolStats() {\n return this.subgraph.request<any>(GET_PROTOCOL_STATS);\n }\n\n // ============================================\n // Market Groups\n // ============================================\n\n /**\n * Get market groups for a venue\n */\n async getMarketGroups(params: {\n venueId?: bigint;\n first?: number;\n skip?: number;\n }) {\n return this.subgraph.request(GET_MARKET_GROUPS, {\n venueId: params.venueId?.toString(),\n first: params.first || 100,\n skip: params.skip || 0,\n });\n }\n\n /**\n * Get market group by ID\n */\n async getMarketGroup(groupId: bigint) {\n const response = await this.subgraph.request<any>(GET_MARKET_GROUP, {\n groupId: groupId.toString(),\n });\n return response.marketGroups[0] || null;\n }\n\n /**\n * Get all markets in a group\n */\n async getGroupMarkets(params: {\n groupId: bigint;\n first?: number;\n skip?: number;\n }) {\n return this.subgraph.request<any>(GET_GROUP_MARKETS, {\n groupId: params.groupId.toString(),\n first: params.first || 100,\n skip: params.skip || 0,\n });\n }\n\n /**\n * Get market group item data (group-specific metadata)\n */\n async getMarketGroupItem(marketId: bigint) {\n const response = await this.subgraph.request<any>(GET_MARKET_GROUP_ITEM, {\n marketId: marketId.toString(),\n });\n return response.marketGroupItems[0] || null;\n }\n\n // ============================================\n // Unified Market Feed (Polymarket-style)\n // ============================================\n\n /**\n * Get unified feed of standalone markets + market groups\n * Returns both types in a single query, similar to Polymarket's homepage\n *\n * @param params.venueId - Optional venue filter\n * @param params.first - Number of items per type (default 50)\n * @param params.skip - Pagination offset\n * @param params.sortBy - Sort order: 'created' (newest first) or 'volume' (most popular)\n *\n * @returns Object with standaloneMarkets and marketGroups arrays\n */\n async getUnifiedMarketFeed(params?: {\n venueId?: bigint;\n first?: number;\n skip?: number;\n sortBy?: 'created' | 'volume';\n }) {\n const sortBy = params?.sortBy || 'created';\n\n if (sortBy === 'volume') {\n return this.subgraph.request<any>(GET_UNIFIED_MARKET_FEED_BY_VOLUME, {\n venueId: params?.venueId?.toString(),\n first: params?.first || 50,\n skip: params?.skip || 0,\n });\n }\n\n return this.subgraph.request<any>(GET_UNIFIED_MARKET_FEED, {\n venueId: params?.venueId?.toString(),\n first: params?.first || 50,\n skip: params?.skip || 0,\n });\n }\n\n /**\n * Merge and sort unified feed results\n * Combines standaloneMarkets, marketGroups, and priceMarketSeries into a single sorted array.\n * Each row in the merged feed carries a `type` discriminator: 'standalone' | 'group' | 'series'.\n */\n mergeAndSortFeed(\n feedData: any,\n sortBy: 'created' | 'volume' = 'created',\n limit?: number,\n ): Array<any> {\n const standalone = (feedData.standaloneMarkets || []).map((m: any) => ({\n ...m,\n type: 'standalone' as const,\n sortValue:\n sortBy === 'volume'\n ? BigInt(m.totalVolume || '0')\n : BigInt(m.createdAt || '0'),\n }));\n\n const groups = (feedData.marketGroups || []).map((g: any) => {\n // Calculate total volume for group (sum of all child markets)\n const totalVolume =\n g.markets?.reduce(\n (sum: bigint, m: any) => sum + BigInt(m.totalVolume || '0'),\n 0n,\n ) || 0n;\n\n return {\n ...g,\n type: 'group' as const,\n totalVolume: totalVolume.toString(),\n sortValue:\n sortBy === 'volume' ? totalVolume : BigInt(g.createdAt || '0'),\n };\n });\n\n // Price market series rows. Sort key is the current market's volume when sorting\n // by volume, otherwise the series' updatedAt (which is bumped on each new window).\n const series = (feedData.priceMarketSeries || []).map((s: any) => ({\n ...s,\n type: 'series' as const,\n sortValue:\n sortBy === 'volume'\n ? BigInt(s.currentMarket?.totalVolume || '0')\n : BigInt(s.updatedAt || s.createdAt || '0'),\n }));\n\n // Merge and sort\n const merged = [...standalone, ...groups, ...series].sort((a, b) => {\n // Sort descending (highest/newest first)\n return a.sortValue > b.sortValue ? -1 : 1;\n });\n\n // Apply limit if specified\n return limit ? merged.slice(0, limit) : merged;\n }\n\n /**\n * Get a PriceMarketSeries with all its member markets.\n *\n * Used by the market detail page to render the time-button navigation strip\n * showing past, current, and upcoming windows for the same asset+interval.\n *\n * @param params.venueId - Venue the series belongs to\n * @param params.seriesKey - Series key, e.g. \"btc-updown-5m\"\n * @returns The series with `markets` array, or null if not found\n */\n async getPriceMarketSeries(params: {\n venueId: bigint;\n seriesKey: string;\n }): Promise<any | null> {\n const response = await this.subgraph.request<any>(GET_PRICE_MARKET_SERIES, {\n venueId: params.venueId.toString(),\n seriesKey: params.seriesKey,\n });\n return response.priceMarketSeries?.[0] || null;\n }\n\n /**\n * Helper: extract the seriesKey from a market's tags.\n *\n * A market belongs to a price series iff its tags contain both \"price-market\"\n * and a \"series:<key>\" tag. Returns the key (without prefix) or null.\n */\n extractSeriesKey(tags: string[] | undefined | null): string | null {\n if (!tags) return null;\n let hasPriceMarketTag = false;\n let seriesKey: string | null = null;\n for (const t of tags) {\n if (t === 'price-market') hasPriceMarketTag = true;\n else if (t.startsWith('series:')) seriesKey = t.slice('series:'.length);\n }\n return hasPriceMarketTag ? seriesKey : null;\n }\n\n /**\n * Calculate probability for a market using mark price waterfall.\n * Returns probability as a decimal string (e.g., \"0.65\" for 65%)\n *\n * Uses Polymarket-style pricing: implied midpoint → last trade → default 50%.\n *\n * @param market - Market object from subgraph (with topOfBook and timestamp fields)\n * @returns Probability string or null if no data available\n */\n calculateMarketProbability(market: any): string | null {\n if (!market.tickSize) return null;\n\n const chance = calculateChancePercent(market);\n if (chance === 50 && !market.lastPriceTick_0 && !market.lastPriceTick_1) {\n return null; // Truly no data — keep null for \"no probability\" display\n }\n return (chance / 100).toFixed(2);\n }\n\n /**\n * Format market group for display (Polymarket-style)\n * Enriches child markets with calculated probabilities and formats\n */\n formatMarketGroupForDisplay(group: any) {\n const outcomes = (group.markets || [])\n .filter((m: any) => !m.marketGroupItem?.isPlaceholder)\n .map((m: any) => ({\n marketId: m.marketId,\n name: m.marketGroupItem?.marketName || 'Unknown',\n question: m.question,\n probability: this.calculateMarketProbability(m),\n status: m.status,\n totalVolume: m.totalVolume,\n }))\n .sort((a: any, b: any) => {\n // Sort by probability (highest first)\n const probA = parseFloat(a.probability || '0');\n const probB = parseFloat(b.probability || '0');\n return probB - probA;\n });\n\n return {\n type: 'group' as const,\n groupId: group.groupId,\n marketQuestion: group.marketQuestion,\n status: group.status,\n totalMarkets: group.totalMarkets,\n activeMarketCount: group.activeMarketCount,\n resolvedMarketId: group.resolvedMarketId,\n createdAt: group.createdAt,\n outcomes,\n venue: group.venue,\n creator: group.creator,\n };\n }\n\n // ============================================\n // Cross-Venue Queries (Protocol App)\n // ============================================\n\n /**\n * Get all markets across all venues (no venue filter)\n * Returns standaloneMarkets + marketGroups for global market explorer\n *\n * @param params.first - Number of items per type (default 50)\n * @param params.skip - Pagination offset\n * @param params.sortBy - 'created' (newest) or 'volume' (most popular)\n */\n async getAllMarketsFeed(params?: {\n first?: number;\n skip?: number;\n sortBy?: 'created' | 'volume';\n }) {\n const sortBy = params?.sortBy || 'created';\n const query =\n sortBy === 'volume'\n ? GET_ALL_MARKETS_FEED_BY_VOLUME\n : GET_ALL_MARKETS_FEED;\n\n return this.subgraph.request<any>(query, {\n first: params?.first || 50,\n skip: params?.skip || 0,\n });\n }\n\n /**\n * Get top venues by volume\n */\n async getTopVenues(first = 10) {\n return this.subgraph.request(GET_VENUES, {\n first,\n skip: 0,\n orderBy: 'totalVolume',\n orderDirection: 'desc',\n });\n }\n\n /**\n * Get recent trades across all venues (for activity feed / ticker)\n */\n async getRecentTrades(params?: { first?: number; skip?: number }) {\n return this.subgraph.request<any>(GET_RECENT_TRADES, {\n first: params?.first || 20,\n skip: params?.skip || 0,\n });\n }\n\n /**\n * Get recently created markets across all venues\n */\n async getRecentMarkets(params?: { first?: number; skip?: number }) {\n return this.subgraph.request<any>(GET_RECENT_MARKETS, {\n first: params?.first || 20,\n skip: params?.skip || 0,\n });\n }\n\n // ============================================\n // Trader Analytics\n // ============================================\n\n /**\n * Get trader profile with aggregate stats\n */\n async getTraderProfile(address: string) {\n return this.subgraph.request<any>(GET_TRADER_PROFILE, {\n address: address.toLowerCase(),\n });\n }\n\n /**\n * Get trader's open positions (quantity > 0) with P&L data\n */\n async getTraderPositions(params: {\n trader: string;\n first?: number;\n skip?: number;\n }) {\n return this.subgraph.request<any>(GET_TRADER_POSITIONS, {\n trader: params.trader.toLowerCase(),\n first: params.first || 100,\n skip: params.skip || 0,\n });\n }\n\n /**\n * Get trader's closed positions (quantity = 0) with realized P&L\n */\n async getTraderClosedPositions(params: {\n trader: string;\n first?: number;\n skip?: number;\n }) {\n return this.subgraph.request<any>(GET_TRADER_CLOSED_POSITIONS, {\n trader: params.trader.toLowerCase(),\n first: params.first || 100,\n skip: params.skip || 0,\n });\n }\n\n /**\n * Get trader's fill history (activity feed)\n */\n async getTraderTrades(params: {\n trader: string;\n first?: number;\n skip?: number;\n }) {\n return this.subgraph.request<any>(GET_TRADER_FILLS, {\n trader: params.trader.toLowerCase(),\n first: params.first || 50,\n skip: params.skip || 0,\n });\n }\n\n /**\n * Get leaderboard (top traders sorted by volume or P&L)\n */\n async getLeaderboard(params?: {\n orderBy?: 'totalVolume' | 'totalRealizedPnL' | 'totalTradeCount';\n orderDirection?: 'asc' | 'desc';\n first?: number;\n skip?: number;\n }) {\n return this.subgraph.request<any>(GET_LEADERBOARD, {\n orderBy: params?.orderBy || 'totalVolume',\n orderDirection: params?.orderDirection || 'desc',\n first: params?.first || 50,\n skip: params?.skip || 0,\n });\n }\n\n /**\n * Get top holders for a market (by position size)\n */\n async getMarketTopHolders(params: {\n marketId: string;\n first?: number;\n }) {\n return this.subgraph.request<any>(GET_MARKET_TOP_HOLDERS, {\n marketId: params.marketId,\n first: params.first || 20,\n });\n }\n\n // ============================================\n // Raw subgraph access\n // ============================================\n\n /**\n * Run an arbitrary GraphQL query against the same subgraph endpoint the SDK\n * uses. Lets external services (e.g. cron workers) share the SDK's\n * subgraph connection without instantiating their own GraphQLClient.\n */\n async raw<T = unknown>(\n query: string | TypedDocumentNode<T>,\n variables?: Record<string, unknown>,\n ): Promise<T> {\n return this.subgraph.request<T>(query, variables);\n }\n\n // ============================================\n // Price Markets\n // ============================================\n\n /**\n * Find an unresolved PriceMarket matching (feedId, closeTime) created by\n * `creator`. Returns null when no match exists. Used as a create-idempotency\n * check by price-market bots before submitting a new market.\n */\n async findPriceMarketByFeedAndCloseTime(params: {\n pythFeedId: `0x${string}`;\n closeTime: bigint;\n creator: `0x${string}`;\n }): Promise<{ marketId: bigint } | null> {\n const data = await this.subgraph.request<{\n priceMarkets: Array<{ id: string; market: { marketId: string } }>;\n }>(FIND_PRICE_MARKET_BY_FEED_AND_CLOSE_TIME, {\n feedId: params.pythFeedId.toLowerCase(),\n closeTime: params.closeTime.toString(),\n creator: params.creator.toLowerCase(),\n });\n const hit = data.priceMarkets[0];\n return hit ? { marketId: BigInt(hit.market.marketId) } : null;\n }\n\n /**\n * List unresolved PriceMarkets created by `creator` whose closeTime is in\n * the past and whose parent Market is still Active, ordered by closeTime\n * ascending. Used by resolution cron workers to find markets that need\n * settling.\n */\n async findExpiredOpenPriceMarkets(params: {\n creator: `0x${string}`;\n now: bigint;\n first?: number;\n }): Promise<\n Array<{ marketId: bigint; feedId: `0x${string}`; closeTime: bigint }>\n > {\n const data = await this.subgraph.request<{\n priceMarkets: Array<{\n id: string;\n feedId: string;\n closeTime: string;\n market: { marketId: string };\n }>;\n }>(FIND_EXPIRED_OPEN_PRICE_MARKETS, {\n creator: params.creator.toLowerCase(),\n now: params.now.toString(),\n first: params.first ?? 100,\n });\n return data.priceMarkets.map((p) => ({\n marketId: BigInt(p.market.marketId),\n feedId: p.feedId as `0x${string}`,\n closeTime: BigInt(p.closeTime),\n }));\n }\n}\n\nconst FIND_PRICE_MARKET_BY_FEED_AND_CLOSE_TIME = gql`\n query FindPriceMarketByFeedAndCloseTime(\n $feedId: Bytes!\n $closeTime: BigInt!\n $creator: Bytes!\n ) {\n priceMarkets(\n where: {\n feedId: $feedId\n closeTime: $closeTime\n resolved: false\n market_: { creator: $creator }\n }\n first: 1\n ) {\n id\n market {\n marketId\n }\n }\n }\n`;\n\nconst FIND_EXPIRED_OPEN_PRICE_MARKETS = gql`\n query FindExpiredOpenPriceMarkets(\n $creator: Bytes!\n $now: BigInt!\n $first: Int!\n ) {\n priceMarkets(\n where: {\n resolved: false\n closeTime_lt: $now\n market_: { creator: $creator, status: Active }\n }\n first: $first\n orderBy: closeTime\n orderDirection: asc\n ) {\n id\n feedId\n closeTime\n market {\n marketId\n }\n }\n }\n`;\n","import { BaseModule } from './base';\nimport { ERC20ABI } from '../contracts';\nimport type { Address } from 'viem';\n\nexport class TokenModule extends BaseModule {\n /**\n * Approve a spender to spend tokens\n */\n async approve(token: Address, spender: Address, amount: bigint) {\n const wallet = this.walletClient;\n const account = await this.getSignerAccount();\n\n const { request } = await this.publicClient.simulateContract({\n address: token,\n abi: ERC20ABI,\n functionName: 'approve',\n args: [spender, amount],\n account,\n });\n\n return wallet.writeContract(request);\n }\n\n /**\n * Get allowance\n */\n async getAllowance(token: Address, owner: Address, spender: Address) {\n return this.publicClient.readContract({\n address: token,\n abi: ERC20ABI,\n functionName: 'allowance',\n args: [owner, spender],\n });\n }\n\n /**\n * Get balance\n */\n async getBalance(token: Address, owner: Address) {\n return this.publicClient.readContract({\n address: token,\n abi: ERC20ABI,\n functionName: 'balanceOf',\n args: [owner],\n });\n }\n\n /**\n * Get token decimals\n */\n async getDecimals(token: Address) {\n return this.publicClient.readContract({\n address: token,\n abi: ERC20ABI,\n functionName: 'decimals',\n });\n }\n\n /**\n * Get token symbol\n */\n async getSymbol(token: Address) {\n return this.publicClient.readContract({\n address: token,\n abi: ERC20ABI,\n functionName: 'symbol',\n });\n }\n\n /**\n * Get token name\n */\n async getName(token: Address) {\n return this.publicClient.readContract({\n address: token,\n abi: ERC20ABI,\n functionName: 'name',\n });\n }\n}\n","import { BaseModule } from './base';\nimport {\n ResolutionFacetABI,\n MarketsFacetABI,\n ProtocolFacetABI,\n ConditionalTokensABI,\n UmaOracleABI,\n} from '../contracts';\nimport { erc20Abi } from 'viem';\nimport type { Address } from 'viem';\n\n/**\n * UMA Module - Handles oracle assertion and resolution operations\n *\n * Workflow:\n * 1. Market is created → gets a questionId\n * 2. After resolutionTime, anyone can assert an outcome → gets assertionId\n * 3. After liveness period, anyone can settle the assertion\n * 4. After settlement (if truthful), anyone can report resolution to CTF\n */\nexport class UmaModule extends BaseModule {\n /**\n * Assert an outcome for a market question\n *\n * @param params.marketId - The market ID to assert on\n * @param params.outcome - The outcome string (e.g., \"YES\", \"NO\")\n * @param params.autoApprove - Automatically approve bond token if needed (default: true)\n *\n * @returns Transaction hash\n */\n async assertMarketOutcome(params: {\n marketId: bigint;\n outcome: string;\n autoApprove?: boolean;\n }) {\n const wallet = this.walletClient;\n const account = await this.getSignerAccount();\n const accountAddress = await this.getSignerAddress();\n const autoApprove = params.autoApprove ?? true;\n\n // Step 1: Get market registry data to find questionId\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n const registryData: any = await this.publicClient.readContract({\n address: this.config.diamondAddress,\n abi: MarketsFacetABI,\n functionName: 'getMarketRegistryData',\n args: [params.marketId],\n });\n\n const questionId = registryData.questionId as `0x${string}`;\n\n // Step 2: Get effective bond (max of requiredBond and UMA's minimumBond)\n const { effectiveBond, currency } = await this.getEffectiveBond(params.marketId);\n const bondAmount = effectiveBond;\n\n // Step 3: Check current allowance (approve Diamond, which delegates to ResolutionFacet)\n const currentAllowance = (await this.publicClient.readContract({\n address: currency,\n abi: erc20Abi,\n functionName: 'allowance',\n args: [accountAddress, this.config.diamondAddress],\n })) as bigint;\n\n // Step 4: Approve if needed\n if (currentAllowance < bondAmount && autoApprove) {\n const approveHash = await wallet.writeContract({\n address: currency,\n abi: erc20Abi,\n functionName: 'approve',\n args: [this.config.diamondAddress, bondAmount],\n account,\n chain: this.config.chain,\n });\n\n await this.publicClient.waitForTransactionReceipt({\n hash: approveHash,\n confirmations: 2,\n });\n\n await new Promise((resolve) => setTimeout(resolve, 2000));\n\n const newAllowance = (await this.publicClient.readContract({\n address: currency,\n abi: erc20Abi,\n functionName: 'allowance',\n args: [accountAddress, this.config.diamondAddress],\n })) as bigint;\n\n if (newAllowance < bondAmount) {\n throw new Error(\n `Approval failed to update. New allowance: ${newAllowance.toString()}, Required: ${bondAmount.toString()}`\n );\n }\n } else if (currentAllowance < bondAmount) {\n throw new Error(\n `Insufficient bond token allowance. Required: ${bondAmount.toString()}, Current: ${currentAllowance.toString()}. Please approve the Diamond (${\n this.config.diamondAddress\n }) to spend bond tokens.`\n );\n }\n\n // Step 5: Check balance\n const balance = (await this.publicClient.readContract({\n address: currency,\n abi: erc20Abi,\n functionName: 'balanceOf',\n args: [accountAddress],\n })) as bigint;\n\n if (balance < bondAmount) {\n throw new Error(\n `Insufficient bond token balance. Required: ${bondAmount.toString()}, Have: ${balance.toString()}`\n );\n }\n\n // Step 6: Assert the outcome via Diamond\n const { request } = await this.publicClient.simulateContract({\n address: this.config.diamondAddress,\n abi: ResolutionFacetABI,\n functionName: 'assertMarketOutcome',\n args: [questionId, params.outcome],\n account,\n });\n\n return wallet.writeContract(request);\n }\n\n /**\n * Get the effective bond for a market, accounting for UMA's minimum bond.\n * The contract uses max(requiredBond, oo.getMinimumBond(currency)).\n */\n async getEffectiveBond(marketId: bigint): Promise<{\n requiredBond: bigint;\n minimumBond: bigint;\n effectiveBond: bigint;\n currency: Address;\n }> {\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n const oracleData: any = await this.publicClient.readContract({\n address: this.config.diamondAddress,\n abi: MarketsFacetABI,\n functionName: 'getMarketOracleData',\n args: [marketId],\n });\n\n const requiredBond = BigInt(oracleData.requiredBond);\n const currency = oracleData.currency as Address;\n\n const umaOracle = (await this.publicClient.readContract({\n address: this.config.diamondAddress,\n abi: ProtocolFacetABI,\n functionName: 'getUmaOracle',\n })) as Address;\n\n const minimumBond = (await this.publicClient.readContract({\n address: umaOracle,\n abi: UmaOracleABI,\n functionName: 'getMinimumBond',\n args: [currency],\n })) as bigint;\n\n const effectiveBond = requiredBond > minimumBond ? requiredBond : minimumBond;\n\n return { requiredBond, minimumBond, effectiveBond, currency };\n }\n\n /**\n * Settle an assertion after the liveness period\n */\n async settleAssertion(assertionId: `0x${string}`) {\n const wallet = this.walletClient;\n const account = await this.getSignerAccount();\n\n const { request } = await this.publicClient.simulateContract({\n address: this.config.diamondAddress,\n abi: ResolutionFacetABI,\n functionName: 'settleAssertion',\n args: [assertionId],\n account,\n });\n\n return wallet.writeContract(request);\n }\n\n /**\n * Get the UMA Optimistic Oracle V3 address for the active Diamond.\n */\n async getUmaOracleAddress(): Promise<Address> {\n return (await this.publicClient.readContract({\n address: this.config.diamondAddress,\n abi: ProtocolFacetABI,\n functionName: 'getUmaOracle',\n })) as Address;\n }\n\n /**\n * Dispute an active assertion directly on the UMA Optimistic Oracle V3.\n *\n * The dispute escalates the assertion to UMA's DVM, which arbitrates the\n * outcome via tokenholder vote. The disputer must post a bond equal to the\n * asserter's bond — the winner is reimbursed and receives a share of the\n * loser's bond.\n *\n * @param params.assertionId - The active assertionId to dispute\n * @param params.autoApprove - Approve the bond currency to the oracle if needed (default: true)\n *\n * @returns Transaction hash\n */\n async disputeAssertion(params: {\n assertionId: `0x${string}`;\n autoApprove?: boolean;\n }) {\n const wallet = this.walletClient;\n const account = await this.getSignerAccount();\n const accountAddress = await this.getSignerAddress();\n const autoApprove = params.autoApprove ?? true;\n\n const oracleAddress = await this.getUmaOracleAddress();\n\n // Read assertion to get currency + bond amount required to dispute.\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n const assertion: any = await this.publicClient.readContract({\n address: oracleAddress,\n abi: UmaOracleABI,\n functionName: 'getAssertion',\n args: [params.assertionId],\n });\n\n const currency = assertion.currency as Address;\n const bondAmount = BigInt(assertion.bond);\n\n if (assertion.disputer !== '0x0000000000000000000000000000000000000000') {\n throw new Error('Assertion has already been disputed');\n }\n\n if (assertion.settled) {\n throw new Error('Assertion is already settled');\n }\n\n const currentTime = Math.floor(Date.now() / 1000);\n if (currentTime >= Number(assertion.expirationTime)) {\n throw new Error('Liveness period has expired — assertion can no longer be disputed');\n }\n\n // Approve oracle to pull bond from disputer if needed.\n const currentAllowance = (await this.publicClient.readContract({\n address: currency,\n abi: erc20Abi,\n functionName: 'allowance',\n args: [accountAddress, oracleAddress],\n })) as bigint;\n\n if (currentAllowance < bondAmount && autoApprove) {\n const approveHash = await wallet.writeContract({\n address: currency,\n abi: erc20Abi,\n functionName: 'approve',\n args: [oracleAddress, bondAmount],\n account,\n chain: this.config.chain,\n });\n\n await this.publicClient.waitForTransactionReceipt({\n hash: approveHash,\n confirmations: 2,\n });\n } else if (currentAllowance < bondAmount) {\n throw new Error(\n `Insufficient bond currency allowance for oracle. Required: ${bondAmount.toString()}, Current: ${currentAllowance.toString()}.`\n );\n }\n\n const balance = (await this.publicClient.readContract({\n address: currency,\n abi: erc20Abi,\n functionName: 'balanceOf',\n args: [accountAddress],\n })) as bigint;\n\n if (balance < bondAmount) {\n throw new Error(\n `Insufficient bond currency balance. Required: ${bondAmount.toString()}, Have: ${balance.toString()}`\n );\n }\n\n const { request } = await this.publicClient.simulateContract({\n address: oracleAddress,\n abi: UmaOracleABI,\n functionName: 'disputeAssertion',\n args: [params.assertionId, accountAddress],\n account,\n });\n\n return wallet.writeContract(request);\n }\n\n /**\n * Report resolution after UMA settlement\n */\n async reportResolution(params: { marketId: bigint; outcome: string }) {\n const wallet = this.walletClient;\n const account = await this.getSignerAccount();\n\n const { request } = await this.publicClient.simulateContract({\n address: this.config.diamondAddress,\n abi: ResolutionFacetABI,\n functionName: 'reportResolution',\n args: [params.marketId, params.outcome],\n account,\n });\n\n return wallet.writeContract(request);\n }\n\n /**\n * Check if a market has been resolved in CTF\n */\n async getResolutionStatus(marketId: bigint) {\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n const oracleData: any = await this.publicClient.readContract({\n address: this.config.diamondAddress,\n abi: MarketsFacetABI,\n functionName: 'getMarketOracleData',\n args: [marketId],\n });\n\n const conditionId = oracleData.conditionId as `0x${string}`;\n\n const payoutDenominator = (await this.publicClient.readContract({\n address: this.config.conditionalTokensAddress,\n abi: ConditionalTokensABI,\n functionName: 'payoutDenominator',\n args: [conditionId],\n })) as bigint;\n\n if (payoutDenominator === 0n) {\n return {\n resolved: false,\n winningOutcome: null,\n payouts: [],\n };\n }\n\n const outcomeSlotCount = Number(oracleData.outcomeSlotCount || 2);\n const payouts: bigint[] = [];\n\n for (let i = 0; i < outcomeSlotCount; i++) {\n const payout = (await this.publicClient.readContract({\n address: this.config.conditionalTokensAddress,\n abi: ConditionalTokensABI,\n functionName: 'payoutNumerators',\n args: [conditionId, BigInt(i)],\n })) as bigint;\n payouts.push(payout);\n }\n\n let winningOutcome: string | null = null;\n if (outcomeSlotCount === 2) {\n if (payouts[0] > 0n && payouts[1] === 0n) {\n winningOutcome = 'YES';\n } else if (payouts[1] > 0n && payouts[0] === 0n) {\n winningOutcome = 'NO';\n } else if (payouts[0] === payouts[1]) {\n winningOutcome = 'INVALID';\n }\n }\n\n return {\n resolved: true,\n winningOutcome,\n payouts,\n payoutDenominator,\n };\n }\n\n /**\n * Redeem winning outcome tokens for collateral\n */\n async redeemWinnings(marketId: bigint) {\n const wallet = this.walletClient;\n const account = await this.getSignerAccount();\n\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n const oracleData: any = await this.publicClient.readContract({\n address: this.config.diamondAddress,\n abi: MarketsFacetABI,\n functionName: 'getMarketOracleData',\n args: [marketId],\n });\n\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n const tradingData: any = await this.publicClient.readContract({\n address: this.config.diamondAddress,\n abi: MarketsFacetABI,\n functionName: 'getMarketTradingData',\n args: [marketId],\n });\n\n const conditionId = oracleData.conditionId as `0x${string}`;\n const collateralToken = tradingData.collateralToken as Address;\n\n const indexSets = [1, 2];\n\n const { request } = await this.publicClient.simulateContract({\n address: this.config.conditionalTokensAddress,\n abi: ConditionalTokensABI,\n functionName: 'redeemPositions',\n args: [\n collateralToken,\n '0x0000000000000000000000000000000000000000000000000000000000000000' as `0x${string}`,\n conditionId,\n indexSets,\n ],\n account,\n });\n\n return wallet.writeContract(request);\n }\n\n /**\n * Get the collateral token address for a market\n */\n async getCollateralToken(marketId: bigint): Promise<Address> {\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n const tradingData: any = await this.publicClient.readContract({\n address: this.config.diamondAddress,\n abi: MarketsFacetABI,\n functionName: 'getMarketTradingData',\n args: [marketId],\n });\n\n return tradingData.collateralToken as Address;\n }\n\n /**\n * Get question/oracle data for a market\n */\n async getQuestionData(marketId: bigint) {\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n const oracleData: any = await this.publicClient.readContract({\n address: this.config.diamondAddress,\n abi: MarketsFacetABI,\n functionName: 'getMarketOracleData',\n args: [marketId],\n });\n\n return {\n questionId: oracleData.questionId as `0x${string}`,\n conditionId: oracleData.conditionId as `0x${string}`,\n outcomeSlotCount: BigInt(oracleData.outcomeSlotCount),\n currency: oracleData.currency as Address,\n reward: BigInt(oracleData.reward),\n requiredBond: BigInt(oracleData.requiredBond),\n liveness: BigInt(oracleData.liveness),\n initialized: oracleData.initialized as boolean,\n activeAssertionId: oracleData.activeAssertionId as `0x${string}`,\n ancillaryData: oracleData.ancillaryData as `0x${string}`,\n };\n }\n\n /**\n * Get assertion data\n */\n async getAssertionData(assertionId: `0x${string}`) {\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n const data: any = await this.publicClient.readContract({\n address: this.config.diamondAddress,\n abi: ResolutionFacetABI,\n functionName: 'getAssertionData',\n args: [assertionId],\n });\n\n return {\n assertionId: data.assertionId as `0x${string}`,\n questionId: data.questionId as `0x${string}`,\n outcome: data.outcome as string,\n settled: data.settled as boolean,\n };\n }\n\n /**\n * Get assertion details from UMA Oracle including expiration time\n */\n async getAssertionDetails(assertionId: `0x${string}`) {\n // Get the UMA Oracle address from Diamond\n const oracleAddress = await this.publicClient.readContract({\n address: this.config.diamondAddress,\n abi: ProtocolFacetABI,\n functionName: 'getUmaOracle',\n });\n\n // Query the oracle directly for assertion details\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n const assertion: any = await this.publicClient.readContract({\n address: oracleAddress as `0x${string}`,\n abi: [\n {\n name: 'getAssertion',\n type: 'function',\n stateMutability: 'view',\n inputs: [{ name: 'assertionId', type: 'bytes32' }],\n outputs: [\n {\n name: 'assertion',\n type: 'tuple',\n components: [\n {\n name: 'escalationManagerSettings',\n type: 'tuple',\n components: [\n { name: 'arbitrateViaEscalationManager', type: 'bool' },\n { name: 'discardOracle', type: 'bool' },\n { name: 'validateDisputers', type: 'bool' },\n { name: 'assertingCaller', type: 'address' },\n { name: 'escalationManager', type: 'address' },\n ],\n },\n { name: 'asserter', type: 'address' },\n { name: 'assertionTime', type: 'uint64' },\n { name: 'settled', type: 'bool' },\n { name: 'currency', type: 'address' },\n { name: 'expirationTime', type: 'uint64' },\n { name: 'settlementResolution', type: 'bool' },\n { name: 'domainId', type: 'bytes32' },\n { name: 'identifier', type: 'bytes32' },\n { name: 'bond', type: 'uint256' },\n { name: 'callbackRecipient', type: 'address' },\n { name: 'disputer', type: 'address' },\n ],\n },\n ],\n },\n ],\n functionName: 'getAssertion',\n args: [assertionId],\n });\n\n const expirationTime = Number(assertion.expirationTime);\n const currentTime = Math.floor(Date.now() / 1000);\n\n return {\n asserter: assertion.asserter as `0x${string}`,\n assertionTime: Number(assertion.assertionTime),\n settled: assertion.settled as boolean,\n expirationTime,\n canSettle: currentTime >= expirationTime,\n disputer: assertion.disputer as `0x${string}`,\n isDisputed: assertion.disputer !== '0x0000000000000000000000000000000000000000',\n currency: assertion.currency as Address,\n bond: BigInt(assertion.bond),\n };\n }\n\n /**\n * Get comprehensive market status for UMA resolution\n */\n async getMarketStatus(marketId: bigint) {\n // Get market registry data\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n const registryData: any = await this.publicClient.readContract({\n address: this.config.diamondAddress,\n abi: MarketsFacetABI,\n functionName: 'getMarketRegistryData',\n args: [marketId],\n });\n\n const questionId = registryData.questionId as `0x${string}`;\n const marketStatus = Number(registryData.status); // 0=Draft, 1=Active, 2=Resolved\n\n // Get question/oracle data\n const questionData = await this.getQuestionData(marketId);\n const conditionId = questionData.conditionId;\n\n // Check if there's an active assertion\n const hasAssertion =\n questionData.activeAssertionId !==\n '0x0000000000000000000000000000000000000000000000000000000000000000';\n\n let assertionData = null;\n let isSettled = false;\n\n if (hasAssertion) {\n assertionData = await this.getAssertionData(\n questionData.activeAssertionId\n );\n isSettled = assertionData.settled;\n }\n\n // Check if resolution has been reported to CTF\n const payoutDenominator = (await this.publicClient.readContract({\n address: this.config.conditionalTokensAddress,\n abi: ConditionalTokensABI,\n functionName: 'payoutDenominator',\n args: [conditionId],\n })) as bigint;\n\n const isReportedToCTF = payoutDenominator > 0n;\n\n let winningOutcome: string | null = null;\n if (isReportedToCTF) {\n const payout0 = (await this.publicClient.readContract({\n address: this.config.conditionalTokensAddress,\n abi: ConditionalTokensABI,\n functionName: 'payoutNumerators',\n args: [conditionId, 0n],\n })) as bigint;\n\n const payout1 = (await this.publicClient.readContract({\n address: this.config.conditionalTokensAddress,\n abi: ConditionalTokensABI,\n functionName: 'payoutNumerators',\n args: [conditionId, 1n],\n })) as bigint;\n\n if (payout0 > 0n && payout1 === 0n) {\n winningOutcome = 'YES';\n } else if (payout1 > 0n && payout0 === 0n) {\n winningOutcome = 'NO';\n } else if (payout0 === payout1) {\n winningOutcome = 'INVALID';\n }\n }\n\n return {\n marketId,\n questionId,\n marketStatus:\n marketStatus === 0\n ? 'Draft'\n : marketStatus === 1\n ? 'Active'\n : 'Resolved',\n assertion: {\n hasAssertion,\n assertionId: hasAssertion ? questionData.activeAssertionId : null,\n outcome: assertionData?.outcome || null,\n settled: isSettled,\n },\n question: {\n requiredBond: questionData.requiredBond,\n currency: questionData.currency,\n reward: questionData.reward,\n liveness: questionData.liveness,\n },\n resolution: {\n reportedToCTF: isReportedToCTF,\n winningOutcome,\n },\n canAssert: !hasAssertion && marketStatus === 1,\n canSettle: hasAssertion && !isSettled,\n canReportResolution: hasAssertion && isSettled && !isReportedToCTF,\n isResolved: isReportedToCTF,\n };\n }\n\n /**\n * Get the questionId for a market\n */\n async getQuestionId(marketId: bigint): Promise<`0x${string}`> {\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n const registryData: any = await this.publicClient.readContract({\n address: this.config.diamondAddress,\n abi: MarketsFacetABI,\n functionName: 'getMarketRegistryData',\n args: [marketId],\n });\n\n return registryData.questionId as `0x${string}`;\n }\n}\n","import { BaseModule } from './base';\nimport { AccessControlFacetABI, WhitelistAccessControlABI } from '../contracts';\n\nexport class AccessControlModule extends BaseModule {\n // ---- Factory (deploy standalone AC contracts via Diamond) ----\n\n /**\n * Deploy a WhitelistAccessControl contract. Caller becomes the owner.\n * @returns Transaction hash. Use receipt logs to extract the deployed contract address.\n */\n async deployWhitelist() {\n const wallet = this.walletClient;\n const account = await this.getSignerAccount();\n\n const { request } = await this.publicClient.simulateContract({\n address: this.config.diamondAddress,\n abi: AccessControlFacetABI,\n functionName: 'deployWhitelistAC',\n args: [],\n account,\n });\n\n return wallet.writeContract(request);\n }\n\n /**\n * Deploy an NFTGatedAccessControl contract.\n * @param params.nftContract - The NFT contract address (ERC-721 or ERC-1155).\n * @param params.isERC1155 - True if the NFT contract is ERC-1155, false for ERC-721.\n * @param params.tokenId - The token ID to check (only used for ERC-1155, pass 0n for ERC-721).\n */\n async deployNFTGated(params: {\n nftContract: `0x${string}`;\n isERC1155: boolean;\n tokenId: bigint;\n }) {\n const wallet = this.walletClient;\n const account = await this.getSignerAccount();\n\n const { request } = await this.publicClient.simulateContract({\n address: this.config.diamondAddress,\n abi: AccessControlFacetABI,\n functionName: 'deployNFTGatedAC',\n args: [params.nftContract, params.isERC1155, params.tokenId],\n account,\n });\n\n return wallet.writeContract(request);\n }\n\n /**\n * Deploy a TokenGatedAccessControl contract.\n * @param params.token - The ERC-20 token contract address.\n * @param params.minBalance - The minimum token balance required for access.\n */\n async deployTokenGated(params: {\n token: `0x${string}`;\n minBalance: bigint;\n }) {\n const wallet = this.walletClient;\n const account = await this.getSignerAccount();\n\n const { request } = await this.publicClient.simulateContract({\n address: this.config.diamondAddress,\n abi: AccessControlFacetABI,\n functionName: 'deployTokenGatedAC',\n args: [params.token, params.minBalance],\n account,\n });\n\n return wallet.writeContract(request);\n }\n\n // ---- Configuration (market-level AC overrides) ----\n\n /**\n * Set a trading access control contract for a specific market. Venue operator only.\n */\n async setMarketTradingAC(params: {\n marketId: bigint;\n acContract: `0x${string}`;\n }) {\n const wallet = this.walletClient;\n const account = await this.getSignerAccount();\n\n const { request } = await this.publicClient.simulateContract({\n address: this.config.diamondAddress,\n abi: AccessControlFacetABI,\n functionName: 'setMarketTradingAccessControl',\n args: [params.marketId, params.acContract],\n account,\n });\n\n return wallet.writeContract(request);\n }\n\n /**\n * Remove the trading access control override for a specific market. Venue operator only.\n */\n async removeMarketTradingAC(params: { marketId: bigint }) {\n const wallet = this.walletClient;\n const account = await this.getSignerAccount();\n\n const { request } = await this.publicClient.simulateContract({\n address: this.config.diamondAddress,\n abi: AccessControlFacetABI,\n functionName: 'removeMarketTradingAccessControl',\n args: [params.marketId],\n account,\n });\n\n return wallet.writeContract(request);\n }\n\n // ---- Queries (read via Diamond) ----\n\n /**\n * Check if a user can trade on a specific market (checks market-level then venue-level fallback).\n */\n async canTradeOnMarket(params: {\n user: `0x${string}`;\n marketId: bigint;\n }): Promise<boolean> {\n return this.publicClient.readContract({\n address: this.config.diamondAddress,\n abi: AccessControlFacetABI,\n functionName: 'canTradeOnMarket',\n args: [params.user, params.marketId],\n }) as Promise<boolean>;\n }\n\n /**\n * Get the market-level trading AC contract address (address(0) if not set).\n */\n async getMarketTradingAC(params: {\n marketId: bigint;\n }): Promise<`0x${string}`> {\n return this.publicClient.readContract({\n address: this.config.diamondAddress,\n abi: AccessControlFacetABI,\n functionName: 'getMarketTradingAccessControl',\n args: [params.marketId],\n }) as Promise<`0x${string}`>;\n }\n\n // ---- Whitelist management (direct contract calls, not through Diamond) ----\n\n /**\n * Add users to a WhitelistAccessControl contract. Only the contract owner can call this.\n */\n async addToWhitelist(params: {\n acContract: `0x${string}`;\n users: `0x${string}`[];\n }) {\n const wallet = this.walletClient;\n const account = await this.getSignerAccount();\n\n const { request } = await this.publicClient.simulateContract({\n address: params.acContract,\n abi: WhitelistAccessControlABI,\n functionName: 'addToWhitelist',\n args: [params.users],\n account,\n });\n\n return wallet.writeContract(request);\n }\n\n /**\n * Remove users from a WhitelistAccessControl contract. Only the contract owner can call this.\n */\n async removeFromWhitelist(params: {\n acContract: `0x${string}`;\n users: `0x${string}`[];\n }) {\n const wallet = this.walletClient;\n const account = await this.getSignerAccount();\n\n const { request } = await this.publicClient.simulateContract({\n address: params.acContract,\n abi: WhitelistAccessControlABI,\n functionName: 'removeFromWhitelist',\n args: [params.users],\n account,\n });\n\n return wallet.writeContract(request);\n }\n\n /**\n * Check if a user is whitelisted on a specific WhitelistAccessControl contract.\n */\n async isWhitelisted(params: {\n acContract: `0x${string}`;\n user: `0x${string}`;\n }): Promise<boolean> {\n return this.publicClient.readContract({\n address: params.acContract,\n abi: WhitelistAccessControlABI,\n functionName: 'isAllowed',\n args: [params.user],\n }) as Promise<boolean>;\n }\n}\n","import { BaseModule } from './base';\nimport {\n PriceMarketFacetABI,\n PythResolutionFacetABI,\n VenueFacetABI,\n} from '../contracts';\nimport { erc20Abi, stringToHex } from 'viem';\nimport type { Address } from 'viem';\nimport { isValidTickSize, type MarketQuestion } from '../utils/conversions';\n\nconst PYTH_HERMES_BASE = 'https://hermes.pyth.network';\n\nconst PYTH_GET_UPDATE_FEE_ABI = [\n {\n name: 'getUpdateFee',\n type: 'function',\n stateMutability: 'view',\n inputs: [{ name: 'updateData', type: 'bytes[]' }],\n outputs: [{ name: 'feeAmount', type: 'uint256' }],\n },\n] as const;\n\nexport enum FeedProvider {\n PYTH = 0,\n CHAINLINK = 1,\n}\n\nexport interface PriceMarketData {\n feedId: `0x${string}`;\n feedProvider: FeedProvider;\n openTime: bigint;\n closeTime: bigint;\n priceExpo: number;\n finalPrice: bigint;\n resolutionWindow: bigint;\n resolved: boolean;\n /**\n * Reference price for resolution.\n * - Explicit-strike markets: set at creation, never changes.\n * - Deferred Up/Down markets: 0 at creation, populated at resolution with the\n * open price captured from the earliest Hermes VAA in\n * `[openTime, openTime + resolutionWindow]`.\n */\n strikePrice: bigint;\n /**\n * Pyth VAA publishTime of the open-price capture (seconds since epoch).\n * - Explicit-strike markets: always 0 (no open price is captured).\n * - Deferred Up/Down markets: 0 until resolution, then set to the open VAA's\n * publishTime.\n */\n openPriceTime: bigint;\n}\n\n/**\n * Latest Pyth price update plus the signed VAA's publishTime.\n * `fetchedAt` is the SDK-local unix timestamp (seconds) at fetch time.\n */\nexport interface PythUpdate {\n updateData: `0x${string}`[];\n publishTime: bigint;\n fetchedAt: bigint;\n}\n\n/**\n * Projected open price for a deferred Up/Down market that hasn't resolved yet.\n * Derived from the same Hermes VAA the on-chain resolver will pick.\n */\nexport interface ProjectedOpenPrice {\n /** Price extracted from the open-window Hermes VAA (Pyth feed-native units). */\n price: bigint;\n /** publishTime of the VAA (seconds since epoch). */\n publishTime: bigint;\n /** Pyth's price exponent for the feed (e.g. -8). Convenience for UI formatting. */\n expo: number;\n /**\n * `true` once `block.timestamp >= openTime + resolutionWindow` — past that point\n * every client querying Hermes the same way agrees on the same VAA and the\n * on-chain strike at resolution will equal this exact `price`. Before that,\n * the value is a best-effort projection that could shift slightly as Hermes\n * publishes new VAAs inside the window.\n */\n canonical: boolean;\n /** The market's openTime this projection corresponds to. */\n openTime: bigint;\n}\n\n/** Default cap for freshness helper retries. */\nconst DEFAULT_FRESH_MAX_AGE_SECONDS = 120;\nconst DEFAULT_FRESH_MAX_ATTEMPTS = 3;\n\nexport class PriceMarketModule extends BaseModule {\n /**\n * Create a Pyth-powered price market. Three shapes via one entry point:\n *\n * - **Immediate Up/Down** (`strikePrice = 0`, `openTime = 0` or omitted):\n * `openTime` is set to `block.timestamp` at creation; open price is\n * captured at resolution from the earliest Hermes VAA in\n * `[openTime, openTime + resolutionWindow]`.\n *\n * - **Scheduled Up/Down** (`strikePrice = 0`, `openTime > now`):\n * Market exists from creation and is tradable. At `openTime` the open\n * price window begins; capture happens at resolution as above.\n *\n * - **Explicit strike** (`strikePrice > 0`): Above/Below market resolved\n * against the caller-supplied target. `openTime` is ignored and stored\n * as `block.timestamp`; no open-price capture occurs at resolution.\n *\n * Creation never touches Pyth — no VAA submission, no Pyth fee. The\n * resolver pays Pyth fees later when calling {@link resolvePyth}.\n *\n * @param params.venueId - The venue to create the market in\n * @param params.pythFeedId - Pyth price feed ID (e.g., ETH/USD)\n * @param params.strikePrice - Target price (0 = capture open at resolution)\n * @param params.openTime - When the market opens (0 = immediate / now)\n * @param params.closeTime - Absolute close timestamp (must be > effective openTime)\n * @param params.outcomes - Market outcome labels (e.g., [\"Up\", \"Down\"] or [\"Above\", \"Below\"])\n * @param params.tickSize - Price increment for the orderbook (1e15 or 1e16)\n * @param params.collateralToken - ERC20 collateral token address\n * @param params.question - Market question for ancillary data\n * @param params.liveness - UMA challenge period in seconds (0 = default)\n * @param params.tags - Optional tags for the market\n * @param params.resolutionWindow - Pyth timestamp tolerance in seconds (0 = default 60s, max 300s)\n */\n async createPyth(params: {\n venueId: bigint;\n pythFeedId: `0x${string}`;\n strikePrice?: bigint;\n openTime?: bigint;\n closeTime: bigint;\n outcomes?: string[];\n tickSize: bigint;\n collateralToken: Address;\n question: MarketQuestion;\n liveness?: bigint;\n tags?: string[];\n resolutionWindow?: bigint;\n }) {\n const wallet = this.walletClient;\n const account = await this.getSignerAccount();\n\n const outcomes = params.outcomes ?? ['Up', 'Down'];\n\n const { encodedTags, ancillaryData } =\n await this._prepareCreationCommon(params, await this.getSignerAddress());\n\n if (!isValidTickSize(params.tickSize)) {\n throw new Error('Invalid tickSize: must be 1e15 (0.1%) or 1e16 (1%)');\n }\n\n const { request } = await this.publicClient.simulateContract({\n address: this.config.diamondAddress,\n abi: PythResolutionFacetABI,\n functionName: 'createPriceMarketPyth',\n args: [\n params.venueId,\n params.pythFeedId,\n params.strikePrice ?? BigInt(0),\n params.openTime ?? BigInt(0),\n params.closeTime,\n outcomes,\n params.tickSize,\n params.collateralToken,\n ancillaryData,\n params.liveness ?? BigInt(0),\n encodedTags,\n params.resolutionWindow ?? BigInt(0),\n ],\n account,\n });\n\n return wallet.writeContract(request);\n }\n\n /**\n * Resolve a price market using Pyth.\n *\n * Anyone can call this after `closeTime`. For deferred Up/Down markets\n * (`strikePrice == 0`), the SDK fetches **two** Hermes VAAs — one for the\n * open window, one for the close window — and submits them together so the\n * on-chain facet can capture the open price and compare against the close\n * in a single transaction. For explicit-strike markets only the close VAA\n * is fetched.\n */\n async resolvePyth(marketId: bigint) {\n const wallet = this.walletClient;\n const account = await this.getSignerAccount();\n\n const pm = await this.get(marketId);\n\n if (pm.resolved) {\n throw new Error('Price market already resolved');\n }\n\n const now = BigInt(Math.floor(Date.now() / 1000));\n if (now < pm.closeTime) {\n throw new Error(\n `Close time not reached. Current: ${now.toString()}, CloseTime: ${pm.closeTime.toString()}`,\n );\n }\n\n const isDeferred = pm.strikePrice === BigInt(0);\n const windowSeconds = Number(pm.resolutionWindow);\n\n const closeVAA = await this.fetchPythHistoricalData(\n pm.feedId,\n Number(pm.closeTime),\n windowSeconds,\n );\n\n let pythUpdateData: `0x${string}`[];\n if (isDeferred) {\n const openVAA = await this.fetchPythHistoricalData(\n pm.feedId,\n Number(pm.openTime),\n windowSeconds,\n );\n pythUpdateData = [...openVAA, ...closeVAA];\n } else {\n pythUpdateData = closeVAA;\n }\n\n const pythAddress = await this.getPythContract();\n const pythFee = (await this.publicClient.readContract({\n address: pythAddress,\n abi: PYTH_GET_UPDATE_FEE_ABI,\n functionName: 'getUpdateFee',\n args: [pythUpdateData],\n })) as bigint;\n\n // Use at least 1 gwei to cover edge cases where getUpdateFee returns 0 via\n // eth_call but the actual tx requires non-zero value. Contract refunds excess.\n const valueSent = pythFee > BigInt(0) ? pythFee : BigInt(1_000_000_000);\n\n const { request } = await this.publicClient.simulateContract({\n address: this.config.diamondAddress,\n abi: PythResolutionFacetABI,\n functionName: 'resolvePriceMarketPyth',\n args: [marketId, pythUpdateData],\n account,\n value: valueSent,\n });\n\n return wallet.writeContract(request);\n }\n\n /**\n * Check if a market is a Pyth price market\n */\n async isPriceMarket(marketId: bigint): Promise<boolean> {\n return (await this.publicClient.readContract({\n address: this.config.diamondAddress,\n abi: PriceMarketFacetABI,\n functionName: 'isPriceMarket',\n args: [marketId],\n })) as boolean;\n }\n\n /**\n * Check if a price market can be resolved (closeTime reached and not yet resolved).\n */\n async canResolve(marketId: bigint): Promise<boolean> {\n return (await this.publicClient.readContract({\n address: this.config.diamondAddress,\n abi: PriceMarketFacetABI,\n functionName: 'canResolvePriceMarket',\n args: [marketId],\n })) as boolean;\n }\n\n /**\n * Get price market data\n */\n async get(marketId: bigint): Promise<PriceMarketData> {\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n const result: any = await this.publicClient.readContract({\n address: this.config.diamondAddress,\n abi: PriceMarketFacetABI,\n functionName: 'getPriceMarket',\n args: [marketId],\n });\n\n return {\n feedId: result[0] as `0x${string}`,\n feedProvider: Number(result[1]) as FeedProvider,\n openTime: BigInt(result[2]),\n closeTime: BigInt(result[3]),\n priceExpo: Number(result[4]),\n finalPrice: BigInt(result[5]),\n resolutionWindow: BigInt(result[6]),\n resolved: result[7] as boolean,\n strikePrice: BigInt(result[8]),\n openPriceTime: BigInt(result[9]),\n };\n }\n\n /**\n * Get the Pyth contract address configured on the Diamond\n */\n async getPythContract(): Promise<Address> {\n return (await this.publicClient.readContract({\n address: this.config.diamondAddress,\n abi: PythResolutionFacetABI,\n functionName: 'getPythContract',\n })) as Address;\n }\n\n /**\n * Set the Pyth oracle contract address. Diamond owner only.\n */\n async setPythContract(pythContract: Address) {\n const wallet = this.walletClient;\n const account = await this.getSignerAccount();\n\n const { request } = await this.publicClient.simulateContract({\n address: this.config.diamondAddress,\n abi: PythResolutionFacetABI,\n functionName: 'setPythContract',\n args: [pythContract],\n account,\n });\n\n return wallet.writeContract(request);\n }\n\n // ---- Private helpers ----\n\n /**\n * Shared pre-flight checks: creation fee allowance, ancillary data, tags\n */\n private async _prepareCreationCommon(\n params: {\n venueId: bigint;\n collateralToken: Address;\n question: MarketQuestion;\n tags?: string[];\n },\n account: Address,\n ) {\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n const venue: any = await this.publicClient.readContract({\n address: this.config.diamondAddress,\n abi: VenueFacetABI,\n functionName: 'getVenue',\n args: [params.venueId],\n });\n\n const feeRequired = venue.marketCreationFee;\n if (feeRequired > BigInt(0)) {\n const allowance = await this.publicClient.readContract({\n address: params.collateralToken,\n abi: erc20Abi,\n functionName: 'allowance',\n args: [account, this.config.diamondAddress],\n });\n\n if (allowance < feeRequired) {\n throw new Error(\n `Insufficient allowance for Market Creation Fee. Approved: ${allowance.toString()}, Required: ${feeRequired.toString()}.`,\n );\n }\n }\n\n const ancillaryData = this.formatAncillaryData(params.question);\n\n const encodedTags = (params.tags ?? []).map((t) =>\n stringToHex(t, { size: 32 }),\n );\n\n return { encodedTags, ancillaryData };\n }\n\n private formatAncillaryData(question: MarketQuestion): `0x${string}` {\n let data = `q:title:${question.title}`;\n data += `,description:${question.description}`;\n return stringToHex(data);\n }\n\n /**\n * Fetch the latest Pyth price update from Hermes — the bytes plus the\n * VAA's publishTime.\n *\n * Useful for UI projected-strike display: callers can render the current\n * Pyth price (and its publishTime) before a deferred market's open window\n * closes, then switch to the on-chain strike once resolution happens.\n */\n async fetchPythLatestUpdate(feedId: `0x${string}`): Promise<PythUpdate> {\n const url = `${PYTH_HERMES_BASE}/v2/updates/price/latest?ids[]=${feedId}`;\n const response = await fetch(url);\n\n if (!response.ok) {\n throw new Error(\n `Pyth Hermes API error: ${response.status} ${response.statusText}`,\n );\n }\n\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n const data: any = await response.json();\n const updateData: string[] | undefined = data.binary?.data;\n\n if (!updateData || updateData.length === 0) {\n throw new Error('No price update data returned from Pyth Hermes');\n }\n\n const parsed = data.parsed?.[0];\n const publishTimeRaw = parsed?.price?.publish_time;\n if (typeof publishTimeRaw !== 'number') {\n throw new Error('Pyth Hermes response missing parsed.price.publish_time');\n }\n\n return {\n updateData: updateData.map((d) => `0x${d}` as `0x${string}`),\n publishTime: BigInt(publishTimeRaw),\n fetchedAt: BigInt(Math.floor(Date.now() / 1000)),\n };\n }\n\n /**\n * Return a Pyth update that is fresh enough for client-side projected-strike\n * display.\n *\n * If `cached` is provided and still within `maxAgeSeconds`, returns it\n * unchanged. Otherwise re-queries Hermes; if the new VAA is also stale\n * (quiet feed), retries up to `maxAttempts`.\n *\n * Defaults: `maxAgeSeconds = 120`, `maxAttempts = 3`.\n */\n async fetchFreshPythUpdate(\n feedId: `0x${string}`,\n options: {\n maxAgeSeconds?: number;\n maxAttempts?: number;\n cached?: PythUpdate;\n } = {},\n ): Promise<PythUpdate> {\n const maxAgeSeconds = options.maxAgeSeconds ?? DEFAULT_FRESH_MAX_AGE_SECONDS;\n const maxAttempts = options.maxAttempts ?? DEFAULT_FRESH_MAX_ATTEMPTS;\n\n const isFresh = (u: PythUpdate): boolean => {\n const now = BigInt(Math.floor(Date.now() / 1000));\n return now - u.publishTime <= BigInt(maxAgeSeconds);\n };\n\n if (options.cached && isFresh(options.cached)) {\n return options.cached;\n }\n\n let latest: PythUpdate | undefined;\n for (let attempt = 0; attempt < maxAttempts; attempt++) {\n latest = await this.fetchPythLatestUpdate(feedId);\n if (isFresh(latest)) return latest;\n }\n\n if (!latest) {\n throw new Error('Failed to fetch any Pyth update from Hermes');\n }\n return latest;\n }\n\n /**\n * Resolve the projected open price for a deferred Up/Down market — what the\n * UI should display as the \"strike\" between `openTime` and resolution.\n *\n * For deferred markets, the on-chain `strikePrice` is 0 until the resolver\n * fires {@link resolvePyth}. This helper replicates the same rule the\n * contract will use (\"earliest in-window Hermes VAA in\n * `[openTime, openTime + resolutionWindow]`\") by querying Hermes at\n * `openTime`, so the value rendered in the UI matches what the on-chain\n * strike will be once resolution lands.\n *\n * Returns `null` when the projection isn't applicable:\n * - The market is already resolved — caller should read `pm.strikePrice` directly.\n * - The market is explicit-strike (`pm.strikePrice > 0`) — same, read from chain.\n * - The market hasn't reached `openTime` yet — no VAA exists; UI should show\n * \"strike set at HH:MM\" or similar pending state.\n *\n * `result.canonical === true` means the open window has fully elapsed and the\n * value will not change. Before that, render the price with a \"pending\" hint.\n */\n async fetchProjectedOpenPrice(\n marketId: bigint,\n ): Promise<ProjectedOpenPrice | null> {\n const pm = await this.get(marketId);\n\n if (pm.resolved) return null;\n if (pm.strikePrice !== BigInt(0)) return null;\n\n const now = BigInt(Math.floor(Date.now() / 1000));\n if (now < pm.openTime) return null;\n\n const parsed = await this.fetchPythHistoricalParsed(\n pm.feedId,\n Number(pm.openTime),\n Number(pm.resolutionWindow),\n );\n if (!parsed) return null;\n\n return {\n price: BigInt(parsed.price.price),\n publishTime: BigInt(parsed.price.publish_time),\n expo: Number(parsed.price.expo),\n canonical: now >= pm.openTime + pm.resolutionWindow,\n openTime: pm.openTime,\n };\n }\n\n /**\n * Fetch historical Pyth price update data covering the window\n * `[publishTime, publishTime + windowSeconds]`.\n *\n * Hermes serves a VAA AT the exact requested second when one exists, and\n * 404s when no publish landed in that second. For low-volume feeds or\n * markets resolving deep in the past this means a single request at\n * `publishTime` is fragile. This helper walks a few sample points across\n * the window until it finds a VAA, transparently retrying with exponential\n * backoff on 429.\n *\n * The on-chain `pickEarliestInWindow` accepts any VAA whose `publishTime`\n * falls in the same window, so returning an offset VAA is correct as long\n * as it's still in range.\n */\n private async fetchPythHistoricalData(\n feedId: `0x${string}`,\n publishTime: number,\n windowSeconds: number,\n ): Promise<`0x${string}`[]> {\n const result = await this.fetchPythHistoricalRaw(\n feedId,\n publishTime,\n windowSeconds,\n );\n if (!result) {\n throw new Error(\n `No Pyth VAA available in window [${publishTime}, ${publishTime + windowSeconds}] for feed ${feedId}`,\n );\n }\n return result.updateData;\n }\n\n /**\n * Hermes parsed+binary fetch shared by {@link fetchPythHistoricalData} and\n * {@link fetchProjectedOpenPrice}. Returns the first in-window VAA whose\n * Hermes response includes a `parsed[0].price` entry, walking a few sample\n * timestamps across the window before giving up. Returns `null` on\n * complete miss so the caller can decide how to surface the failure\n * (resolution throws; UI projection returns null gracefully).\n */\n private async fetchPythHistoricalParsed(\n feedId: `0x${string}`,\n publishTime: number,\n windowSeconds: number,\n ): Promise<{ price: { price: string; expo: number; publish_time: number } } | null> {\n const result = await this.fetchPythHistoricalRaw(\n feedId,\n publishTime,\n windowSeconds,\n );\n return result?.parsed ?? null;\n }\n\n private async fetchPythHistoricalRaw(\n feedId: `0x${string}`,\n publishTime: number,\n windowSeconds: number,\n ): Promise<{\n updateData: `0x${string}`[];\n parsed: { price: { price: string; expo: number; publish_time: number } };\n } | null> {\n // Sample at the start, a few points across the window, and the end.\n // 5 points balance coverage with Hermes rate-limit pressure: any feed\n // publishing every ~5s is virtually guaranteed to land in one of these.\n const window = Math.max(0, Math.floor(windowSeconds));\n const offsets = window === 0\n ? [0]\n : Array.from(new Set([\n 0,\n Math.floor(window / 4),\n Math.floor(window / 2),\n Math.floor((3 * window) / 4),\n window,\n ])).sort((a, b) => a - b);\n\n for (const offset of offsets) {\n const t = publishTime + offset;\n const url = `${PYTH_HERMES_BASE}/v2/updates/price/${t}?ids[]=${feedId}`;\n\n const response = await this.hermesFetchWithBackoff(url);\n if (response === null) continue; // 404 / soft-miss at this timestamp\n\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n const data: any = await response.json();\n const updateDataRaw: string[] | undefined = data.binary?.data;\n const parsed = data.parsed?.[0];\n\n if (!updateDataRaw || updateDataRaw.length === 0) continue;\n\n return {\n updateData: updateDataRaw.map(\n (d) => `0x${d}` as `0x${string}`,\n ),\n parsed,\n };\n }\n\n return null;\n }\n\n /**\n * Fetch a Hermes URL with exponential backoff on 429. Returns the response\n * for 2xx, `null` for 404 (treated as \"no VAA at this timestamp, try\n * another\"), and throws for other errors.\n */\n private async hermesFetchWithBackoff(\n url: string,\n options: { maxAttempts?: number; initialDelayMs?: number } = {},\n ): Promise<Response | null> {\n const maxAttempts = options.maxAttempts ?? 4;\n const initialDelayMs = options.initialDelayMs ?? 500;\n\n for (let attempt = 0; attempt < maxAttempts; attempt++) {\n const response = await fetch(url);\n if (response.status === 429) {\n if (attempt === maxAttempts - 1) {\n throw new Error(\n `Pyth Hermes API error: 429 Too Many Requests (gave up after ${maxAttempts} attempts)`,\n );\n }\n const delay = initialDelayMs * Math.pow(2, attempt);\n await new Promise((r) => setTimeout(r, delay));\n continue;\n }\n if (response.status === 404) return null;\n if (!response.ok) {\n throw new Error(\n `Pyth Hermes API error: ${response.status} ${response.statusText}`,\n );\n }\n return response;\n }\n return null;\n }\n}\n","import { createPublicClient, createWalletClient, http, custom } from 'viem';\nimport type { PublicClient, WalletClient, Account } from 'viem';\nimport type { OddMakiClientConfig } from './types';\nimport { CONTRACT_ADDRESSES, DEFAULT_CHAIN } from './config';\nimport { VenueModule } from './modules/venue';\nimport { MarketModule } from './modules/market';\nimport { TradeModule } from './modules/trade';\nimport { PublicModule } from './modules/public';\nimport { TokenModule } from './modules/token';\nimport { UmaModule } from './modules/uma';\nimport { AccessControlModule } from './modules/accessControl';\nimport { PriceMarketModule } from './modules/priceMarket';\n\nexport class OddMakiClient {\n public readonly config: OddMakiClientConfig;\n public readonly venue: VenueModule;\n public readonly market: MarketModule;\n public readonly trade: TradeModule;\n public readonly public: PublicModule;\n public readonly token: TokenModule;\n public readonly uma: UmaModule;\n public readonly accessControl: AccessControlModule;\n public readonly priceMarket: PriceMarketModule;\n\n constructor(config: OddMakiClientConfig) {\n this.config = config;\n this.venue = new VenueModule(config);\n this.market = new MarketModule(config);\n this.trade = new TradeModule(config);\n this.public = new PublicModule(config);\n this.token = new TokenModule(config);\n this.uma = new UmaModule(config);\n this.accessControl = new AccessControlModule(config);\n this.priceMarket = new PriceMarketModule(config);\n }\n}\n\nexport function createOddMakiClient(params: {\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n walletClient?: any; // Optional: Pass directly from wagmi/viem (typed as any to avoid version mismatches)\n account?: Account;\n transport?: any; // Viem transport\n chain?: any; // Viem chain\n subgraphEndpoint?: string;\n}): OddMakiClient {\n let chain = params.chain;\n let transport = params.transport;\n let account = params.account;\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n let walletClient = params.walletClient as WalletClient;\n\n // Overload: Use walletClient if provided\n if (walletClient) {\n chain = chain || walletClient.chain;\n // walletClient.transport is an object, but createPublicClient expects a function.\n // We wrap it in custom() to reuse the wallet's provider.\n transport = transport || custom(walletClient.transport);\n account = account || walletClient.account;\n }\n\n // Default defaults\n chain = chain || DEFAULT_CHAIN;\n transport = transport || http();\n\n const addresses =\n CONTRACT_ADDRESSES[chain.id as keyof typeof CONTRACT_ADDRESSES];\n\n if (!addresses) {\n throw new Error(`Unsupported chain ID: ${chain.id}`);\n }\n\n const publicClient = createPublicClient({\n chain,\n transport,\n }) as PublicClient;\n\n // If we didn't get a walletClient but have an account, create one\n if (!walletClient && account) {\n walletClient = createWalletClient({\n account,\n chain,\n transport,\n });\n }\n\n const config: OddMakiClientConfig = {\n chain,\n transport,\n diamondAddress: addresses.diamond,\n conditionalTokensAddress: addresses.conditionalTokens,\n subgraphEndpoint: params.subgraphEndpoint ?? addresses.subgraph,\n publicClient,\n walletClient,\n };\n\n return new OddMakiClient(config);\n}\n","/**\n * Protocol Constants\n * These values match the on-chain constants defined in the smart contracts.\n */\n\n/**\n * Fee Constants\n * Protocol fee is configurable on-chain (0-200 bps) and snapshotted per market at creation.\n * These are the default values set at deployment.\n */\nexport const PROTOCOL_FEES = {\n /** Protocol fee: 50 bps (0.50%) — configurable via ProtocolFacet.setProtocolFeeBps() */\n PROTOCOL_FEE_BPS: 50n,\n /** Operator fee: 10 bps (0.10%) for match operators */\n OPERATOR_FEE_BPS: 10n,\n} as const;\n\n/**\n * Recommended UMA Oracle defaults for USDC venues (6 decimals).\n * Based on Polymarket's production configuration.\n */\nexport const UMA_DEFAULTS = {\n /** Recommended reward: 5 USDC. Incentivizes third-party resolution. */\n REWARD_USDC: 5_000_000n,\n /** Recommended minimum bond: 750 USDC. Matches Polymarket's production bond. */\n MIN_BOND_USDC: 750_000_000n,\n /** Default liveness period: 2 hours (7200 seconds). */\n LIVENESS: 7200n,\n} as const;\n","const DEFAULT_IPFS_GATEWAY = 'https://gateway.pinata.cloud/ipfs/';\n\n/**\n * Resolve an IPFS URI to an HTTP gateway URL.\n * If the URI is already an HTTP(S) URL, returns it as-is.\n * Returns empty string for empty/undefined input.\n */\nexport function resolveIPFSUri(\n uri: string | undefined | null,\n gateway?: string,\n): string {\n if (!uri) return '';\n const gw = gateway || DEFAULT_IPFS_GATEWAY;\n if (uri.startsWith('ipfs://')) {\n const base = gw.endsWith('/') ? gw : `${gw}/`;\n const gateway = base.includes('/ipfs/') ? base : `${base}ipfs/`;\n return `${gateway}${uri.slice(7)}`;\n }\n return uri;\n}\n\n/** Venue metadata schema (v1) — all fields optional except version */\nexport interface VenueMetadata {\n version: number;\n venue_url?: string;\n image_url?: string;\n banner_url?: string;\n description?: string;\n social?: {\n twitter?: string;\n discord?: string;\n telegram?: string;\n };\n}\n\n/** Market metadata schema (v1) — all fields optional except version */\nexport interface MarketMetadata {\n version: number;\n image_url?: string;\n source_url?: string;\n category?: string;\n}\n\n/**\n * Safely parse a JSON string into a typed metadata object.\n * Returns null if the JSON is invalid or missing a version field.\n */\nexport function parseMetadata<T extends { version: number }>(\n json: string,\n): T | null {\n try {\n const parsed = JSON.parse(json);\n if (typeof parsed !== 'object' || parsed === null) return null;\n if (typeof parsed.version !== 'number') return null;\n return parsed as T;\n } catch {\n return null;\n }\n}\n","export * from './client';\nexport * from './config';\nexport * from './constants';\nexport * from './types';\nexport * from './modules/venue';\nexport * from './modules/market';\nexport * from './modules/trade';\nexport * from './modules/public';\nexport * from './modules/token';\nexport * from './modules/uma';\nexport * from './modules/accessControl';\nexport * from './modules/priceMarket';\nexport * from './contracts';\nexport * from './subgraph/client';\nexport * from './subgraph/queries';\nexport { GraphQLClient, gql, ClientError } from 'graphql-request';\nexport type { RequestDocument, Variables } from 'graphql-request';\nexport type { TypedDocumentNode } from '@graphql-typed-document-node/core';\nexport * from './utils/conversions';\nexport * from './utils/decimals';\nexport * from './utils/metadata';\n\nexport const version = '0.1.0';\n"]}
1
+ {"version":3,"sources":["../src/config.ts","../src/subgraph/client.ts","../src/modules/base.ts","../src/contracts/abis/VenueFacet.json","../src/contracts/abis/MarketsFacet.json","../src/contracts/abis/LimitOrdersFacet.json","../src/contracts/abis/MatchingFacet.json","../src/contracts/abis/OrderBookFacet.json","../src/contracts/abis/MarketGroupFacet.json","../src/contracts/abis/MarketOrdersFacet.json","../src/contracts/abis/ResolutionFacet.json","../src/contracts/abis/VaultFacet.json","../src/contracts/abis/NegRiskFacet.json","../src/contracts/abis/ProtocolFacet.json","../src/contracts/abis/AccessControlFacet.json","../src/contracts/abis/TagsFacet.json","../src/contracts/abis/MetadataFacet.json","../src/contracts/abis/PriceMarketFacet.json","../src/contracts/abis/PythResolutionFacet.json","../src/contracts/abis/BatchOrdersFacet.json","../src/contracts/abis/WhitelistAccessControl.json","../src/contracts/abis/ConditionalTokens.json","../src/contracts/abis/ERC20.json","../src/contracts/abis/UmaOracle.json","../src/modules/venue.ts","../src/utils/conversions.ts","../src/utils/decimals.ts","../src/modules/market.ts","../src/modules/trade.ts","../src/subgraph/queries.ts","../src/modules/public.ts","../src/modules/token.ts","../src/modules/uma.ts","../src/modules/accessControl.ts","../src/modules/priceMarket.ts","../src/client.ts","../src/constants.ts","../src/utils/metadata.ts","../src/index.ts"],"names":["gql","erc20Abi","FeedProvider","stringToHex","base","gateway"],"mappings":";;;;;;AAGO,IAAM,kBAAA,GAAqB;AAAA,EAChC,CAAC,WAAA,CAAY,EAAE,GAAG;AAAA,IAChB,OAAA,EAAS,4CAAA;AAAA,IACT,iBAAA,EAAmB,4CAAA;AAAA,IACnB,IAAA,EAAM,4CAAA;AAAA,IACN,QAAA,EAAU;AAAA,GACZ;AAAA,EACA,CAAC,IAAA,CAAK,EAAE,GAAG;AAAA,IACT,OAAA,EAAS,4CAAA;AAAA,IACT,iBAAA,EAAmB,4CAAA;AAAA,IACnB,IAAA,EAAM,4CAAA;AAAA,IACN,QAAA,EAAU;AAAA;AAEd;AAEO,IAAM,YAAA,GAAe;AAAA,EAC1B,CAAC,IAAA,CAAK,EAAE,GAAG,8CAAA;AAAA,EACX,CAAC,WAAA,CAAY,EAAE,GAAG;AACpB;AAEO,SAAS,uBAAA,CACd,SACA,MAAA,EACoB;AACpB,EAAA,MAAM,EAAA,GAAK,aAAa,OAAoC,CAAA;AAC5D,EAAA,OAAO,EAAA,GACH,CAAA,iCAAA,EAAoC,MAAM,CAAA,cAAA,EAAiB,EAAE,CAAA,CAAA,GAC7D,MAAA;AACN;AAEO,IAAM,aAAA,GAAgB;AC9BtB,IAAM,iBAAN,MAAqB;AAAA,EAG1B,YAAY,QAAA,EAAkB;AAC5B,IAAA,IAAA,CAAK,MAAA,GAAS,IAAI,aAAA,CAAc,QAAQ,CAAA;AAAA,EAC1C;AAAA,EAEA,MAAM,OAAA,CACJ,KAAA,EACA,SAAA,EACY;AACZ,IAAA,OAAO,IAAA,CAAK,MAAA,CAAO,OAAA,CAAW,KAAA,EAA0B,SAAS,CAAA;AAAA,EACnE;AACF;;;ACZO,IAAe,aAAf,MAA0B;AAAA,EAI/B,YAAY,MAAA,EAA6B;AACvC,IAAA,IAAA,CAAK,MAAA,GAAS,MAAA;AACd,IAAA,IAAA,CAAK,QAAA,GAAW,IAAI,cAAA,CAAe,MAAA,CAAO,gBAAgB,CAAA;AAAA,EAC5D;AAAA,EAEA,IAAc,YAAA,GAAe;AAC3B,IAAA,OAAO,KAAK,MAAA,CAAO,YAAA;AAAA,EACrB;AAAA,EAEA,IAAc,YAAA,GAAe;AAC3B,IAAA,IAAI,CAAC,IAAA,CAAK,MAAA,CAAO,YAAA,EAAc;AAC7B,MAAA,MAAM,IAAI,KAAA;AAAA,QACR;AAAA,OACF;AAAA,IACF;AACA,IAAA,OAAO,KAAK,MAAA,CAAO,YAAA;AAAA,EACrB;AAAA;AAAA;AAAA;AAAA,EAKA,MAAgB,gBAAA,GAA+C;AAC7D,IAAA,MAAM,SAAS,IAAA,CAAK,YAAA;AACpB,IAAA,IAAI,MAAA,CAAO,OAAA,EAAS,OAAO,MAAA,CAAO,OAAA;AAClC,IAAA,MAAM,CAAC,OAAO,CAAA,GAAI,MAAM,OAAO,YAAA,EAAa;AAC5C,IAAA,OAAO,OAAA;AAAA,EACT;AAAA,EAEA,MAAgB,gBAAA,GAAqC;AACnD,IAAA,MAAM,MAAA,GAAS,MAAM,IAAA,CAAK,gBAAA,EAAiB;AAC3C,IAAA,OAAO,OAAO,MAAA,KAAW,QAAA,GAAW,MAAA,GAAS,MAAA,CAAO,OAAA;AAAA,EACtD;AACF,CAAA;;;ACxCA,IAAA,kBAAA,GAAA;AAAA,EACE;AAAA,IACE,IAAA,EAAQ,UAAA;AAAA,IACR,IAAA,EAAQ,iBAAA;AAAA,IACR,MAAA,EAAU;AAAA,MACR;AAAA,QACE,IAAA,EAAQ,MAAA;AAAA,QACR,IAAA,EAAQ,SAAA;AAAA,QACR,YAAA,EAAgB;AAAA,OAClB;AAAA,MACA;AAAA,QACE,IAAA,EAAQ,SAAA;AAAA,QACR,IAAA,EAAQ,SAAA;AAAA,QACR,YAAA,EAAgB;AAAA;AAClB,KACF;AAAA,IACA,OAAA,EAAW;AAAA,MACT;AAAA,QACE,IAAA,EAAQ,EAAA;AAAA,QACR,IAAA,EAAQ,MAAA;AAAA,QACR,YAAA,EAAgB;AAAA;AAClB,KACF;AAAA,IACA,eAAA,EAAmB;AAAA,GACrB;AAAA,EACA;AAAA,IACE,IAAA,EAAQ,UAAA;AAAA,IACR,IAAA,EAAQ,UAAA;AAAA,IACR,MAAA,EAAU;AAAA,MACR;AAAA,QACE,IAAA,EAAQ,MAAA;AAAA,QACR,IAAA,EAAQ,SAAA;AAAA,QACR,YAAA,EAAgB;AAAA,OAClB;AAAA,MACA;AAAA,QACE,IAAA,EAAQ,SAAA;AAAA,QACR,IAAA,EAAQ,SAAA;AAAA,QACR,YAAA,EAAgB;AAAA;AAClB,KACF;AAAA,IACA,OAAA,EAAW;AAAA,MACT;AAAA,QACE,IAAA,EAAQ,EAAA;AAAA,QACR,IAAA,EAAQ,MAAA;AAAA,QACR,YAAA,EAAgB;AAAA;AAClB,KACF;AAAA,IACA,eAAA,EAAmB;AAAA,GACrB;AAAA,EACA;AAAA,IACE,IAAA,EAAQ,UAAA;AAAA,IACR,IAAA,EAAQ,aAAA;AAAA,IACR,MAAA,EAAU;AAAA,MACR;AAAA,QACE,IAAA,EAAQ,MAAA;AAAA,QACR,IAAA,EAAQ,QAAA;AAAA,QACR,YAAA,EAAgB;AAAA,OAClB;AAAA,MACA;AAAA,QACE,IAAA,EAAQ,UAAA;AAAA,QACR,IAAA,EAAQ,QAAA;AAAA,QACR,YAAA,EAAgB;AAAA,OAClB;AAAA,MACA;AAAA,QACE,IAAA,EAAQ,sBAAA;AAAA,QACR,IAAA,EAAQ,SAAA;AAAA,QACR,YAAA,EAAgB;AAAA,OAClB;AAAA,MACA;AAAA,QACE,IAAA,EAAQ,uBAAA;AAAA,QACR,IAAA,EAAQ,SAAA;AAAA,QACR,YAAA,EAAgB;AAAA,OAClB;AAAA,MACA;AAAA,QACE,IAAA,EAAQ,cAAA;AAAA,QACR,IAAA,EAAQ,SAAA;AAAA,QACR,YAAA,EAAgB;AAAA,OAClB;AAAA,MACA;AAAA,QACE,IAAA,EAAQ,aAAA;AAAA,QACR,IAAA,EAAQ,SAAA;AAAA,QACR,YAAA,EAAgB;AAAA,OAClB;AAAA,MACA;AAAA,QACE,IAAA,EAAQ,eAAA;AAAA,QACR,IAAA,EAAQ,SAAA;AAAA,QACR,YAAA,EAAgB;AAAA,OAClB;AAAA,MACA;AAAA,QACE,IAAA,EAAQ,iBAAA;AAAA,QACR,IAAA,EAAQ,SAAA;AAAA,QACR,YAAA,EAAgB;AAAA,OAClB;AAAA,MACA;AAAA,QACE,IAAA,EAAQ,mBAAA;AAAA,QACR,IAAA,EAAQ,SAAA;AAAA,QACR,YAAA,EAAgB;AAAA,OAClB;AAAA,MACA;AAAA,QACE,IAAA,EAAQ,iBAAA;AAAA,QACR,IAAA,EAAQ,SAAA;AAAA,QACR,YAAA,EAAgB;AAAA,OAClB;AAAA,MACA;AAAA,QACE,IAAA,EAAQ,YAAA;AAAA,QACR,IAAA,EAAQ,SAAA;AAAA,QACR,YAAA,EAAgB;AAAA;AAClB,KACF;AAAA,IACA,OAAA,EAAW;AAAA,MACT;AAAA,QACE,IAAA,EAAQ,SAAA;AAAA,QACR,IAAA,EAAQ,SAAA;AAAA,QACR,YAAA,EAAgB;AAAA;AAClB,KACF;AAAA,IACA,eAAA,EAAmB;AAAA,GACrB;AAAA,EACA;AAAA,IACE,IAAA,EAAQ,UAAA;AAAA,IACR,IAAA,EAAQ,gBAAA;AAAA,IACR,QAAU,EAAC;AAAA,IACX,OAAA,EAAW;AAAA,MACT;AAAA,QACE,IAAA,EAAQ,EAAA;AAAA,QACR,IAAA,EAAQ,SAAA;AAAA,QACR,YAAA,EAAgB;AAAA;AAClB,KACF;AAAA,IACA,eAAA,EAAmB;AAAA,GACrB;AAAA,EACA;AAAA,IACE,IAAA,EAAQ,UAAA;AAAA,IACR,IAAA,EAAQ,UAAA;AAAA,IACR,MAAA,EAAU;AAAA,MACR;AAAA,QACE,IAAA,EAAQ,SAAA;AAAA,QACR,IAAA,EAAQ,SAAA;AAAA,QACR,YAAA,EAAgB;AAAA;AAClB,KACF;AAAA,IACA,OAAA,EAAW;AAAA,MACT;AAAA,QACE,IAAA,EAAQ,EAAA;AAAA,QACR,IAAA,EAAQ,OAAA;AAAA,QACR,YAAA,EAAgB,kBAAA;AAAA,QAChB,UAAA,EAAc;AAAA,UACZ;AAAA,YACE,IAAA,EAAQ,SAAA;AAAA,YACR,IAAA,EAAQ,SAAA;AAAA,YACR,YAAA,EAAgB;AAAA,WAClB;AAAA,UACA;AAAA,YACE,IAAA,EAAQ,UAAA;AAAA,YACR,IAAA,EAAQ,SAAA;AAAA,YACR,YAAA,EAAgB;AAAA,WAClB;AAAA,UACA;AAAA,YACE,IAAA,EAAQ,MAAA;AAAA,YACR,IAAA,EAAQ,QAAA;AAAA,YACR,YAAA,EAAgB;AAAA,WAClB;AAAA,UACA;AAAA,YACE,IAAA,EAAQ,UAAA;AAAA,YACR,IAAA,EAAQ,QAAA;AAAA,YACR,YAAA,EAAgB;AAAA,WAClB;AAAA,UACA;AAAA,YACE,IAAA,EAAQ,sBAAA;AAAA,YACR,IAAA,EAAQ,SAAA;AAAA,YACR,YAAA,EAAgB;AAAA,WAClB;AAAA,UACA;AAAA,YACE,IAAA,EAAQ,uBAAA;AAAA,YACR,IAAA,EAAQ,SAAA;AAAA,YACR,YAAA,EAAgB;AAAA,WAClB;AAAA,UACA;AAAA,YACE,IAAA,EAAQ,cAAA;AAAA,YACR,IAAA,EAAQ,SAAA;AAAA,YACR,YAAA,EAAgB;AAAA,WAClB;AAAA,UACA;AAAA,YACE,IAAA,EAAQ,aAAA;AAAA,YACR,IAAA,EAAQ,SAAA;AAAA,YACR,YAAA,EAAgB;AAAA,WAClB;AAAA,UACA;AAAA,YACE,IAAA,EAAQ,eAAA;AAAA,YACR,IAAA,EAAQ,SAAA;AAAA,YACR,YAAA,EAAgB;AAAA,WAClB;AAAA,UACA;AAAA,YACE,IAAA,EAAQ,iBAAA;AAAA,YACR,IAAA,EAAQ,SAAA;AAAA,YACR,YAAA,EAAgB;AAAA,WAClB;AAAA,UACA;AAAA,YACE,IAAA,EAAQ,mBAAA;AAAA,YACR,IAAA,EAAQ,SAAA;AAAA,YACR,YAAA,EAAgB;AAAA,WAClB;AAAA,UACA;AAAA,YACE,IAAA,EAAQ,iBAAA;AAAA,YACR,IAAA,EAAQ,SAAA;AAAA,YACR,YAAA,EAAgB;AAAA,WAClB;AAAA,UACA;AAAA,YACE,IAAA,EAAQ,YAAA;AAAA,YACR,IAAA,EAAQ,SAAA;AAAA,YACR,YAAA,EAAgB;AAAA,WAClB;AAAA,UACA;AAAA,YACE,IAAA,EAAQ,QAAA;AAAA,YACR,IAAA,EAAQ,MAAA;AAAA,YACR,YAAA,EAAgB;AAAA;AAClB;AACF;AACF,KACF;AAAA,IACA,eAAA,EAAmB;AAAA,GACrB;AAAA,EACA;AAAA,IACE,IAAA,EAAQ,UAAA;AAAA,IACR,IAAA,EAAQ,cAAA;AAAA,IACR,MAAA,EAAU;AAAA,MACR;AAAA,QACE,IAAA,EAAQ,SAAA;AAAA,QACR,IAAA,EAAQ,SAAA;AAAA,QACR,YAAA,EAAgB;AAAA;AAClB,KACF;AAAA,IACA,OAAA,EAAW;AAAA,MACT;AAAA,QACE,IAAA,EAAQ,aAAA;AAAA,QACR,IAAA,EAAQ,SAAA;AAAA,QACR,YAAA,EAAgB;AAAA,OAClB;AAAA,MACA;AAAA,QACE,IAAA,EAAQ,eAAA;AAAA,QACR,IAAA,EAAQ,SAAA;AAAA,QACR,YAAA,EAAgB;AAAA;AAClB,KACF;AAAA,IACA,eAAA,EAAmB;AAAA,GACrB;AAAA,EACA;AAAA,IACE,IAAA,EAAQ,UAAA;AAAA,IACR,IAAA,EAAQ,YAAA;AAAA,IACR,MAAA,EAAU;AAAA,MACR;AAAA,QACE,IAAA,EAAQ,SAAA;AAAA,QACR,IAAA,EAAQ,SAAA;AAAA,QACR,YAAA,EAAgB;AAAA;AAClB,KACF;AAAA,IACA,SAAW,EAAC;AAAA,IACZ,eAAA,EAAmB;AAAA,GACrB;AAAA,EACA;AAAA,IACE,IAAA,EAAQ,UAAA;AAAA,IACR,IAAA,EAAQ,cAAA;AAAA,IACR,MAAA,EAAU;AAAA,MACR;AAAA,QACE,IAAA,EAAQ,SAAA;AAAA,QACR,IAAA,EAAQ,SAAA;AAAA,QACR,YAAA,EAAgB;AAAA;AAClB,KACF;AAAA,IACA,SAAW,EAAC;AAAA,IACZ,eAAA,EAAmB;AAAA,GACrB;AAAA,EACA;AAAA,IACE,IAAA,EAAQ,UAAA;AAAA,IACR,IAAA,EAAQ,aAAA;AAAA,IACR,MAAA,EAAU;AAAA,MACR;AAAA,QACE,IAAA,EAAQ,SAAA;AAAA,QACR,IAAA,EAAQ,SAAA;AAAA,QACR,YAAA,EAAgB;AAAA,OAClB;AAAA,MACA;AAAA,QACE,IAAA,EAAQ,MAAA;AAAA,QACR,IAAA,EAAQ,QAAA;AAAA,QACR,YAAA,EAAgB;AAAA,OAClB;AAAA,MACA;AAAA,QACE,IAAA,EAAQ,UAAA;AAAA,QACR,IAAA,EAAQ,QAAA;AAAA,QACR,YAAA,EAAgB;AAAA,OAClB;AAAA,MACA;AAAA,QACE,IAAA,EAAQ,sBAAA;AAAA,QACR,IAAA,EAAQ,SAAA;AAAA,QACR,YAAA,EAAgB;AAAA,OAClB;AAAA,MACA;AAAA,QACE,IAAA,EAAQ,uBAAA;AAAA,QACR,IAAA,EAAQ,SAAA;AAAA,QACR,YAAA,EAAgB;AAAA,OAClB;AAAA,MACA;AAAA,QACE,IAAA,EAAQ,cAAA;AAAA,QACR,IAAA,EAAQ,SAAA;AAAA,QACR,YAAA,EAAgB;AAAA;AAClB,KACF;AAAA,IACA,SAAW,EAAC;AAAA,IACZ,eAAA,EAAmB;AAAA,GACrB;AAAA,EACA;AAAA,IACE,IAAA,EAAQ,UAAA;AAAA,IACR,IAAA,EAAQ,iBAAA;AAAA,IACR,MAAA,EAAU;AAAA,MACR;AAAA,QACE,IAAA,EAAQ,SAAA;AAAA,QACR,IAAA,EAAQ,SAAA;AAAA,QACR,YAAA,EAAgB;AAAA,OAClB;AAAA,MACA;AAAA,QACE,IAAA,EAAQ,aAAA;AAAA,QACR,IAAA,EAAQ,SAAA;AAAA,QACR,YAAA,EAAgB;AAAA,OAClB;AAAA,MACA;AAAA,QACE,IAAA,EAAQ,eAAA;AAAA,QACR,IAAA,EAAQ,SAAA;AAAA,QACR,YAAA,EAAgB;AAAA;AAClB,KACF;AAAA,IACA,SAAW,EAAC;AAAA,IACZ,eAAA,EAAmB;AAAA,GACrB;AAAA,EACA;AAAA,IACE,IAAA,EAAQ,UAAA;AAAA,IACR,IAAA,EAAQ,8BAAA;AAAA,IACR,MAAA,EAAU;AAAA,MACR;AAAA,QACE,IAAA,EAAQ,SAAA;AAAA,QACR,IAAA,EAAQ,SAAA;AAAA,QACR,YAAA,EAAgB;AAAA,OAClB;AAAA,MACA;AAAA,QACE,IAAA,EAAQ,QAAA;AAAA,QACR,IAAA,EAAQ,SAAA;AAAA,QACR,YAAA,EAAgB;AAAA;AAClB,KACF;AAAA,IACA,SAAW,EAAC;AAAA,IACZ,eAAA,EAAmB;AAAA,GACrB;AAAA,EACA;AAAA,IACE,IAAA,EAAQ,UAAA;AAAA,IACR,IAAA,EAAQ,yBAAA;AAAA,IACR,MAAA,EAAU;AAAA,MACR;AAAA,QACE,IAAA,EAAQ,SAAA;AAAA,QACR,IAAA,EAAQ,SAAA;AAAA,QACR,YAAA,EAAgB;AAAA,OAClB;AAAA,MACA;AAAA,QACE,IAAA,EAAQ,iBAAA;AAAA,QACR,IAAA,EAAQ,SAAA;AAAA,QACR,YAAA,EAAgB;AAAA,OAClB;AAAA,MACA;AAAA,QACE,IAAA,EAAQ,YAAA;AAAA,QACR,IAAA,EAAQ,SAAA;AAAA,QACR,YAAA,EAAgB;AAAA;AAClB,KACF;AAAA,IACA,SAAW,EAAC;AAAA,IACZ,eAAA,EAAmB;AAAA,GACrB;AAAA,EACA;AAAA,IACE,IAAA,EAAQ,OAAA;AAAA,IACR,IAAA,EAAQ,2BAAA;AAAA,IACR,MAAA,EAAU;AAAA,MACR;AAAA,QACE,IAAA,EAAQ,SAAA;AAAA,QACR,IAAA,EAAQ,SAAA;AAAA,QACR,OAAA,EAAW,IAAA;AAAA,QACX,YAAA,EAAgB;AAAA,OAClB;AAAA,MACA;AAAA,QACE,IAAA,EAAQ,sBAAA;AAAA,QACR,IAAA,EAAQ,SAAA;AAAA,QACR,OAAA,EAAW,KAAA;AAAA,QACX,YAAA,EAAgB;AAAA,OAClB;AAAA,MACA;AAAA,QACE,IAAA,EAAQ,uBAAA;AAAA,QACR,IAAA,EAAQ,SAAA;AAAA,QACR,OAAA,EAAW,KAAA;AAAA,QACX,YAAA,EAAgB;AAAA;AAClB,KACF;AAAA,IACA,SAAA,EAAa;AAAA,GACf;AAAA,EACA;AAAA,IACE,IAAA,EAAQ,OAAA;AAAA,IACR,IAAA,EAAQ,cAAA;AAAA,IACR,MAAA,EAAU;AAAA,MACR;AAAA,QACE,IAAA,EAAQ,SAAA;AAAA,QACR,IAAA,EAAQ,SAAA;AAAA,QACR,OAAA,EAAW,IAAA;AAAA,QACX,YAAA,EAAgB;AAAA,OAClB;AAAA,MACA;AAAA,QACE,IAAA,EAAQ,UAAA;AAAA,QACR,IAAA,EAAQ,SAAA;AAAA,QACR,OAAA,EAAW,IAAA;AAAA,QACX,YAAA,EAAgB;AAAA,OAClB;AAAA,MACA;AAAA,QACE,IAAA,EAAQ,MAAA;AAAA,QACR,IAAA,EAAQ,QAAA;AAAA,QACR,OAAA,EAAW,KAAA;AAAA,QACX,YAAA,EAAgB;AAAA,OAClB;AAAA,MACA;AAAA,QACE,IAAA,EAAQ,UAAA;AAAA,QACR,IAAA,EAAQ,QAAA;AAAA,QACR,OAAA,EAAW,KAAA;AAAA,QACX,YAAA,EAAgB;AAAA;AAClB,KACF;AAAA,IACA,SAAA,EAAa;AAAA,GACf;AAAA,EACA;AAAA,IACE,IAAA,EAAQ,OAAA;AAAA,IACR,IAAA,EAAQ,kBAAA;AAAA,IACR,MAAA,EAAU;AAAA,MACR;AAAA,QACE,IAAA,EAAQ,SAAA;AAAA,QACR,IAAA,EAAQ,SAAA;AAAA,QACR,OAAA,EAAW,IAAA;AAAA,QACX,YAAA,EAAgB;AAAA,OAClB;AAAA,MACA;AAAA,QACE,IAAA,EAAQ,aAAA;AAAA,QACR,IAAA,EAAQ,SAAA;AAAA,QACR,OAAA,EAAW,KAAA;AAAA,QACX,YAAA,EAAgB;AAAA,OAClB;AAAA,MACA;AAAA,QACE,IAAA,EAAQ,eAAA;AAAA,QACR,IAAA,EAAQ,SAAA;AAAA,QACR,OAAA,EAAW,KAAA;AAAA,QACX,YAAA,EAAgB;AAAA;AAClB,KACF;AAAA,IACA,SAAA,EAAa;AAAA,GACf;AAAA,EACA;AAAA,IACE,IAAA,EAAQ,OAAA;AAAA,IACR,IAAA,EAAQ,+BAAA;AAAA,IACR,MAAA,EAAU;AAAA,MACR;AAAA,QACE,IAAA,EAAQ,SAAA;AAAA,QACR,IAAA,EAAQ,SAAA;AAAA,QACR,OAAA,EAAW,IAAA;AAAA,QACX,YAAA,EAAgB;AAAA,OAClB;AAAA,MACA;AAAA,QACE,IAAA,EAAQ,QAAA;AAAA,QACR,IAAA,EAAQ,SAAA;AAAA,QACR,OAAA,EAAW,KAAA;AAAA,QACX,YAAA,EAAgB;AAAA;AAClB,KACF;AAAA,IACA,SAAA,EAAa;AAAA,GACf;AAAA,EACA;AAAA,IACE,IAAA,EAAQ,OAAA;AAAA,IACR,IAAA,EAAQ,0BAAA;AAAA,IACR,MAAA,EAAU;AAAA,MACR;AAAA,QACE,IAAA,EAAQ,SAAA;AAAA,QACR,IAAA,EAAQ,SAAA;AAAA,QACR,OAAA,EAAW,IAAA;AAAA,QACX,YAAA,EAAgB;AAAA,OAClB;AAAA,MACA;AAAA,QACE,IAAA,EAAQ,iBAAA;AAAA,QACR,IAAA,EAAQ,SAAA;AAAA,QACR,OAAA,EAAW,KAAA;AAAA,QACX,YAAA,EAAgB;AAAA,OAClB;AAAA,MACA;AAAA,QACE,IAAA,EAAQ,YAAA;AAAA,QACR,IAAA,EAAQ,SAAA;AAAA,QACR,OAAA,EAAW,KAAA;AAAA,QACX,YAAA,EAAgB;AAAA;AAClB,KACF;AAAA,IACA,SAAA,EAAa;AAAA,GACf;AAAA,EACA;AAAA,IACE,IAAA,EAAQ,OAAA;AAAA,IACR,IAAA,EAAQ,aAAA;AAAA,IACR,MAAA,EAAU;AAAA,MACR;AAAA,QACE,IAAA,EAAQ,SAAA;AAAA,QACR,IAAA,EAAQ,SAAA;AAAA,QACR,OAAA,EAAW,IAAA;AAAA,QACX,YAAA,EAAgB;AAAA,OAClB;AAAA,MACA;AAAA,QACE,IAAA,EAAQ,UAAA;AAAA,QACR,IAAA,EAAQ,SAAA;AAAA,QACR,OAAA,EAAW,IAAA;AAAA,QACX,YAAA,EAAgB;AAAA;AAClB,KACF;AAAA,IACA,SAAA,EAAa;AAAA,GACf;AAAA,EACA;AAAA,IACE,IAAA,EAAQ,OAAA;AAAA,IACR,IAAA,EAAQ,eAAA;AAAA,IACR,MAAA,EAAU;AAAA,MACR;AAAA,QACE,IAAA,EAAQ,SAAA;AAAA,QACR,IAAA,EAAQ,SAAA;AAAA,QACR,OAAA,EAAW,IAAA;AAAA,QACX,YAAA,EAAgB;AAAA,OAClB;AAAA,MACA;AAAA,QACE,IAAA,EAAQ,UAAA;AAAA,QACR,IAAA,EAAQ,SAAA;AAAA,QACR,OAAA,EAAW,IAAA;AAAA,QACX,YAAA,EAAgB;AAAA;AAClB,KACF;AAAA,IACA,SAAA,EAAa;AAAA,GACf;AAAA,EACA;AAAA,IACE,IAAA,EAAQ,OAAA;AAAA,IACR,IAAA,EAAQ,cAAA;AAAA,IACR,MAAA,EAAU;AAAA,MACR;AAAA,QACE,IAAA,EAAQ,SAAA;AAAA,QACR,IAAA,EAAQ,SAAA;AAAA,QACR,OAAA,EAAW,IAAA;AAAA,QACX,YAAA,EAAgB;AAAA,OAClB;AAAA,MACA;AAAA,QACE,IAAA,EAAQ,UAAA;AAAA,QACR,IAAA,EAAQ,SAAA;AAAA,QACR,OAAA,EAAW,IAAA;AAAA,QACX,YAAA,EAAgB;AAAA,OAClB;AAAA,MACA;AAAA,QACE,IAAA,EAAQ,MAAA;AAAA,QACR,IAAA,EAAQ,QAAA;AAAA,QACR,OAAA,EAAW,KAAA;AAAA,QACX,YAAA,EAAgB;AAAA,OAClB;AAAA,MACA;AAAA,QACE,IAAA,EAAQ,UAAA;AAAA,QACR,IAAA,EAAQ,QAAA;AAAA,QACR,OAAA,EAAW,KAAA;AAAA,QACX,YAAA,EAAgB;AAAA;AAClB,KACF;AAAA,IACA,SAAA,EAAa;AAAA,GACf;AAAA,EACA;AAAA,IACE,IAAA,EAAQ,OAAA;AAAA,IACR,IAAA,EAAQ,mBAAA;AAAA,IACR,QAAU;AAAC,GACb;AAAA,EACA;AAAA,IACE,IAAA,EAAQ,OAAA;AAAA,IACR,IAAA,EAAQ,qBAAA;AAAA,IACR,QAAU;AAAC,GACb;AAAA,EACA;AAAA,IACE,IAAA,EAAQ,OAAA;AAAA,IACR,IAAA,EAAQ,iBAAA;AAAA,IACR,QAAU;AAAC,GACb;AAAA,EACA;AAAA,IACE,IAAA,EAAQ,OAAA;AAAA,IACR,IAAA,EAAQ,mBAAA;AAAA,IACR,QAAU;AAAC,GACb;AAAA,EACA;AAAA,IACE,IAAA,EAAQ,OAAA;AAAA,IACR,IAAA,EAAQ,iBAAA;AAAA,IACR,QAAU;AAAC,GACb;AAAA,EACA;AAAA,IACE,IAAA,EAAQ,OAAA;AAAA,IACR,IAAA,EAAQ,kBAAA;AAAA,IACR,QAAU;AAAC,GACb;AAAA,EACA;AAAA,IACE,IAAA,EAAQ,OAAA;AAAA,IACR,IAAA,EAAQ,mBAAA;AAAA,IACR,QAAU;AAAC,GACb;AAAA,EACA;AAAA,IACE,IAAA,EAAQ,OAAA;AAAA,IACR,IAAA,EAAQ,gBAAA;AAAA,IACR,QAAU;AAAC,GACb;AAAA,EACA;AAAA,IACE,IAAA,EAAQ,OAAA;AAAA,IACR,IAAA,EAAQ,eAAA;AAAA,IACR,QAAU;AAAC,GACb;AAAA,EACA;AAAA,IACE,IAAA,EAAQ,OAAA;AAAA,IACR,IAAA,EAAQ,eAAA;AAAA,IACR,QAAU;AAAC,GACb;AAAA,EACA;AAAA,IACE,IAAA,EAAQ,OAAA;AAAA,IACR,IAAA,EAAQ,gBAAA;AAAA,IACR,QAAU;AAAC;AAEf;;;AC/mBA,IAAA,oBAAA,GAAA;AAAA,EACE;AAAA,IACE,IAAA,EAAQ,UAAA;AAAA,IACR,IAAA,EAAQ,qBAAA;AAAA,IACR,MAAA,EAAU;AAAA,MACR;AAAA,QACE,IAAA,EAAQ,SAAA;AAAA,QACR,IAAA,EAAQ,SAAA;AAAA,QACR,YAAA,EAAgB;AAAA,OAClB;AAAA,MACA;AAAA,QACE,IAAA,EAAQ,UAAA;AAAA,QACR,IAAA,EAAQ,SAAA;AAAA,QACR,YAAA,EAAgB;AAAA,OAClB;AAAA,MACA;AAAA,QACE,IAAA,EAAQ,YAAA;AAAA,QACR,IAAA,EAAQ,QAAA;AAAA,QACR,YAAA,EAAgB;AAAA,OAClB;AAAA,MACA;AAAA,QACE,IAAA,EAAQ,gBAAA;AAAA,QACR,IAAA,EAAQ,QAAA;AAAA,QACR,YAAA,EAAgB;AAAA;AAClB,KACF;AAAA,IACA,SAAW,EAAC;AAAA,IACZ,eAAA,EAAmB;AAAA,GACrB;AAAA,EACA;AAAA,IACE,IAAA,EAAQ,UAAA;AAAA,IACR,IAAA,EAAQ,WAAA;AAAA,IACR,MAAA,EAAU;AAAA,MACR;AAAA,QACE,IAAA,EAAQ,SAAA;AAAA,QACR,IAAA,EAAQ,SAAA;AAAA,QACR,YAAA,EAAgB;AAAA,OAClB;AAAA,MACA;AAAA,QACE,IAAA,EAAQ,YAAA;AAAA,QACR,IAAA,EAAQ,QAAA;AAAA,QACR,YAAA,EAAgB;AAAA,OAClB;AAAA,MACA;AAAA,QACE,IAAA,EAAQ,gBAAA;AAAA,QACR,IAAA,EAAQ,QAAA;AAAA,QACR,YAAA,EAAgB;AAAA;AAClB,KACF;AAAA,IACA,OAAA,EAAW;AAAA,MACT;AAAA,QACE,IAAA,EAAQ,UAAA;AAAA,QACR,IAAA,EAAQ,SAAA;AAAA,QACR,YAAA,EAAgB;AAAA;AAClB,KACF;AAAA,IACA,eAAA,EAAmB;AAAA,GACrB;AAAA,EACA;AAAA,IACE,IAAA,EAAQ,UAAA;AAAA,IACR,IAAA,EAAQ,uBAAA;AAAA,IACR,MAAA,EAAU;AAAA,MACR;AAAA,QACE,IAAA,EAAQ,SAAA;AAAA,QACR,IAAA,EAAQ,SAAA;AAAA,QACR,YAAA,EAAgB;AAAA,OAClB;AAAA,MACA;AAAA,QACE,IAAA,EAAQ,OAAA;AAAA,QACR,IAAA,EAAQ,SAAA;AAAA,QACR,YAAA,EAAgB;AAAA;AAClB,KACF;AAAA,IACA,OAAA,EAAW;AAAA,MACT;AAAA,QACE,IAAA,EAAQ,WAAA;AAAA,QACR,IAAA,EAAQ,WAAA;AAAA,QACR,YAAA,EAAgB;AAAA;AAClB,KACF;AAAA,IACA,eAAA,EAAmB;AAAA,GACrB;AAAA,EACA;AAAA,IACE,IAAA,EAAQ,UAAA;AAAA,IACR,IAAA,EAAQ,cAAA;AAAA,IACR,MAAA,EAAU;AAAA,MACR;AAAA,QACE,IAAA,EAAQ,SAAA;AAAA,QACR,IAAA,EAAQ,SAAA;AAAA,QACR,YAAA,EAAgB;AAAA,OAClB;AAAA,MACA;AAAA,QACE,IAAA,EAAQ,eAAA;AAAA,QACR,IAAA,EAAQ,OAAA;AAAA,QACR,YAAA,EAAgB;AAAA,OAClB;AAAA,MACA;AAAA,QACE,IAAA,EAAQ,UAAA;AAAA,QACR,IAAA,EAAQ,UAAA;AAAA,QACR,YAAA,EAAgB;AAAA,OAClB;AAAA,MACA;AAAA,QACE,IAAA,EAAQ,UAAA;AAAA,QACR,IAAA,EAAQ,SAAA;AAAA,QACR,YAAA,EAAgB;AAAA,OAClB;AAAA,MACA;AAAA,QACE,IAAA,EAAQ,iBAAA;AAAA,QACR,IAAA,EAAQ,SAAA;AAAA,QACR,YAAA,EAAgB;AAAA,OAClB;AAAA,MACA;AAAA,QACE,IAAA,EAAQ,kBAAA;AAAA,QACR,IAAA,EAAQ,SAAA;AAAA,QACR,YAAA,EAAgB;AAAA,OAClB;AAAA,MACA;AAAA,QACE,IAAA,EAAQ,UAAA;AAAA,QACR,IAAA,EAAQ,QAAA;AAAA,QACR,YAAA,EAAgB;AAAA,OAClB;AAAA,MACA;AAAA,QACE,IAAA,EAAQ,MAAA;AAAA,QACR,IAAA,EAAQ,WAAA;AAAA,QACR,YAAA,EAAgB;AAAA;AAClB,KACF;AAAA,IACA,OAAA,EAAW;AAAA,MACT;AAAA,QACE,IAAA,EAAQ,UAAA;AAAA,QACR,IAAA,EAAQ,SAAA;AAAA,QACR,YAAA,EAAgB;AAAA;AAClB,KACF;AAAA,IACA,eAAA,EAAmB;AAAA,GACrB;AAAA,EACA;AAAA,IACE,IAAA,EAAQ,UAAA;AAAA,IACR,IAAA,EAAQ,qBAAA;AAAA,IACR,MAAA,EAAU;AAAA,MACR;AAAA,QACE,IAAA,EAAQ,UAAA;AAAA,QACR,IAAA,EAAQ,SAAA;AAAA,QACR,YAAA,EAAgB;AAAA;AAClB,KACF;AAAA,IACA,OAAA,EAAW;AAAA,MACT;AAAA,QACE,IAAA,EAAQ,EAAA;AAAA,QACR,IAAA,EAAQ,OAAA;AAAA,QACR,YAAA,EAAgB,yBAAA;AAAA,QAChB,UAAA,EAAc;AAAA,UACZ;AAAA,YACE,IAAA,EAAQ,YAAA;AAAA,YACR,IAAA,EAAQ,SAAA;AAAA,YACR,YAAA,EAAgB;AAAA,WAClB;AAAA,UACA;AAAA,YACE,IAAA,EAAQ,aAAA;AAAA,YACR,IAAA,EAAQ,SAAA;AAAA,YACR,YAAA,EAAgB;AAAA,WAClB;AAAA,UACA;AAAA,YACE,IAAA,EAAQ,kBAAA;AAAA,YACR,IAAA,EAAQ,SAAA;AAAA,YACR,YAAA,EAAgB;AAAA,WAClB;AAAA,UACA;AAAA,YACE,IAAA,EAAQ,UAAA;AAAA,YACR,IAAA,EAAQ,SAAA;AAAA,YACR,YAAA,EAAgB;AAAA,WAClB;AAAA,UACA;AAAA,YACE,IAAA,EAAQ,QAAA;AAAA,YACR,IAAA,EAAQ,SAAA;AAAA,YACR,YAAA,EAAgB;AAAA,WAClB;AAAA,UACA;AAAA,YACE,IAAA,EAAQ,cAAA;AAAA,YACR,IAAA,EAAQ,SAAA;AAAA,YACR,YAAA,EAAgB;AAAA,WAClB;AAAA,UACA;AAAA,YACE,IAAA,EAAQ,UAAA;AAAA,YACR,IAAA,EAAQ,QAAA;AAAA,YACR,YAAA,EAAgB;AAAA,WAClB;AAAA,UACA;AAAA,YACE,IAAA,EAAQ,aAAA;AAAA,YACR,IAAA,EAAQ,MAAA;AAAA,YACR,YAAA,EAAgB;AAAA,WAClB;AAAA,UACA;AAAA,YACE,IAAA,EAAQ,mBAAA;AAAA,YACR,IAAA,EAAQ,SAAA;AAAA,YACR,YAAA,EAAgB;AAAA,WAClB;AAAA,UACA;AAAA,YACE,IAAA,EAAQ,eAAA;AAAA,YACR,IAAA,EAAQ,OAAA;AAAA,YACR,YAAA,EAAgB;AAAA,WAClB;AAAA,UACA;AAAA,YACE,IAAA,EAAQ,UAAA;AAAA,YACR,IAAA,EAAQ,UAAA;AAAA,YACR,YAAA,EAAgB;AAAA;AAClB;AACF;AACF,KACF;AAAA,IACA,eAAA,EAAmB;AAAA,GACrB;AAAA,EACA;AAAA,IACE,IAAA,EAAQ,UAAA;AAAA,IACR,IAAA,EAAQ,uBAAA;AAAA,IACR,MAAA,EAAU;AAAA,MACR;AAAA,QACE,IAAA,EAAQ,UAAA;AAAA,QACR,IAAA,EAAQ,SAAA;AAAA,QACR,YAAA,EAAgB;AAAA;AAClB,KACF;AAAA,IACA,OAAA,EAAW;AAAA,MACT;AAAA,QACE,IAAA,EAAQ,EAAA;AAAA,QACR,IAAA,EAAQ,OAAA;AAAA,QACR,YAAA,EAAgB,2BAAA;AAAA,QAChB,UAAA,EAAc;AAAA,UACZ;AAAA,YACE,IAAA,EAAQ,UAAA;AAAA,YACR,IAAA,EAAQ,SAAA;AAAA,YACR,YAAA,EAAgB;AAAA,WAClB;AAAA,UACA;AAAA,YACE,IAAA,EAAQ,SAAA;AAAA,YACR,IAAA,EAAQ,SAAA;AAAA,YACR,YAAA,EAAgB;AAAA,WAClB;AAAA,UACA;AAAA,YACE,IAAA,EAAQ,SAAA;AAAA,YACR,IAAA,EAAQ,SAAA;AAAA,YACR,YAAA,EAAgB;AAAA,WAClB;AAAA,UACA;AAAA,YACE,IAAA,EAAQ,QAAA;AAAA,YACR,IAAA,EAAQ,OAAA;AAAA,YACR,YAAA,EAAgB;AAAA,WAClB;AAAA,UACA;AAAA,YACE,IAAA,EAAQ,SAAA;AAAA,YACR,IAAA,EAAQ,SAAA;AAAA,YACR,YAAA,EAAgB;AAAA,WAClB;AAAA,UACA;AAAA,YACE,IAAA,EAAQ,YAAA;AAAA,YACR,IAAA,EAAQ,SAAA;AAAA,YACR,YAAA,EAAgB;AAAA,WAClB;AAAA,UACA;AAAA,YACE,IAAA,EAAQ,QAAA;AAAA,YACR,IAAA,EAAQ,SAAA;AAAA,YACR,YAAA,EAAgB;AAAA,WAClB;AAAA,UACA;AAAA,YACE,IAAA,EAAQ,UAAA;AAAA,YACR,IAAA,EAAQ,SAAA;AAAA,YACR,YAAA,EAAgB;AAAA,WAClB;AAAA,UACA;AAAA,YACE,IAAA,EAAQ,aAAA;AAAA,YACR,IAAA,EAAQ,SAAA;AAAA,YACR,YAAA,EAAgB;AAAA,WAClB;AAAA,UACA;AAAA,YACE,IAAA,EAAQ,eAAA;AAAA,YACR,IAAA,EAAQ,SAAA;AAAA,YACR,YAAA,EAAgB;AAAA,WAClB;AAAA,UACA;AAAA,YACE,IAAA,EAAQ,gBAAA;AAAA,YACR,IAAA,EAAQ,SAAA;AAAA,YACR,YAAA,EAAgB;AAAA,WAClB;AAAA,UACA;AAAA,YACE,IAAA,EAAQ,sBAAA;AAAA,YACR,IAAA,EAAQ,SAAA;AAAA,YACR,YAAA,EAAgB;AAAA,WAClB;AAAA,UACA;AAAA,YACE,IAAA,EAAQ,mBAAA;AAAA,YACR,IAAA,EAAQ,SAAA;AAAA,YACR,YAAA,EAAgB;AAAA;AAClB;AACF;AACF,KACF;AAAA,IACA,eAAA,EAAmB;AAAA,GACrB;AAAA,EACA;AAAA,IACE,IAAA,EAAQ,UAAA;AAAA,IACR,IAAA,EAAQ,sBAAA;AAAA,IACR,MAAA,EAAU;AAAA,MACR;AAAA,QACE,IAAA,EAAQ,UAAA;AAAA,QACR,IAAA,EAAQ,SAAA;AAAA,QACR,YAAA,EAAgB;AAAA;AAClB,KACF;AAAA,IACA,OAAA,EAAW;AAAA,MACT;AAAA,QACE,IAAA,EAAQ,EAAA;AAAA,QACR,IAAA,EAAQ,OAAA;AAAA,QACR,YAAA,EAAgB,0BAAA;AAAA,QAChB,UAAA,EAAc;AAAA,UACZ;AAAA,YACE,IAAA,EAAQ,UAAA;AAAA,YACR,IAAA,EAAQ,SAAA;AAAA,YACR,YAAA,EAAgB;AAAA,WAClB;AAAA,UACA;AAAA,YACE,IAAA,EAAQ,UAAA;AAAA,YACR,IAAA,EAAQ,SAAA;AAAA,YACR,YAAA,EAAgB;AAAA,WAClB;AAAA,UACA;AAAA,YACE,IAAA,EAAQ,iBAAA;AAAA,YACR,IAAA,EAAQ,SAAA;AAAA,YACR,YAAA,EAAgB;AAAA,WAClB;AAAA,UACA;AAAA,YACE,IAAA,EAAQ,aAAA;AAAA,YACR,IAAA,EAAQ,YAAA;AAAA,YACR,YAAA,EAAgB;AAAA,WAClB;AAAA,UACA;AAAA,YACE,IAAA,EAAQ,aAAA;AAAA,YACR,IAAA,EAAQ,YAAA;AAAA,YACR,YAAA,EAAgB;AAAA,WAClB;AAAA,UACA;AAAA,YACE,IAAA,EAAQ,eAAA;AAAA,YACR,IAAA,EAAQ,YAAA;AAAA,YACR,YAAA,EAAgB;AAAA,WAClB;AAAA,UACA;AAAA,YACE,IAAA,EAAQ,QAAA;AAAA,YACR,IAAA,EAAQ,MAAA;AAAA,YACR,YAAA,EAAgB;AAAA;AAClB;AACF;AACF,KACF;AAAA,IACA,eAAA,EAAmB;AAAA,GACrB;AAAA,EACA;AAAA,IACE,IAAA,EAAQ,UAAA;AAAA,IACR,IAAA,EAAQ,iBAAA;AAAA,IACR,QAAU,EAAC;AAAA,IACX,OAAA,EAAW;AAAA,MACT;AAAA,QACE,IAAA,EAAQ,EAAA;AAAA,QACR,IAAA,EAAQ,SAAA;AAAA,QACR,YAAA,EAAgB;AAAA;AAClB,KACF;AAAA,IACA,eAAA,EAAmB;AAAA,GACrB;AAAA,EACA;AAAA,IACE,IAAA,EAAQ,UAAA;AAAA,IACR,IAAA,EAAQ,aAAA;AAAA,IACR,MAAA,EAAU;AAAA,MACR;AAAA,QACE,IAAA,EAAQ,UAAA;AAAA,QACR,IAAA,EAAQ,SAAA;AAAA,QACR,YAAA,EAAgB;AAAA;AAClB,KACF;AAAA,IACA,SAAW,EAAC;AAAA,IACZ,eAAA,EAAmB;AAAA,GACrB;AAAA,EACA;AAAA,IACE,IAAA,EAAQ,UAAA;AAAA,IACR,IAAA,EAAQ,eAAA;AAAA,IACR,MAAA,EAAU;AAAA,MACR;AAAA,QACE,IAAA,EAAQ,UAAA;AAAA,QACR,IAAA,EAAQ,SAAA;AAAA,QACR,YAAA,EAAgB;AAAA;AAClB,KACF;AAAA,IACA,SAAW,EAAC;AAAA,IACZ,eAAA,EAAmB;AAAA,GACrB;AAAA,EACA;AAAA,IACE,IAAA,EAAQ,OAAA;AAAA,IACR,IAAA,EAAQ,oBAAA;AAAA,IACR,MAAA,EAAU;AAAA,MACR;AAAA,QACE,IAAA,EAAQ,SAAA;AAAA,QACR,IAAA,EAAQ,SAAA;AAAA,QACR,OAAA,EAAW,IAAA;AAAA,QACX,YAAA,EAAgB;AAAA,OAClB;AAAA,MACA;AAAA,QACE,IAAA,EAAQ,UAAA;AAAA,QACR,IAAA,EAAQ,SAAA;AAAA,QACR,OAAA,EAAW,IAAA;AAAA,QACX,YAAA,EAAgB;AAAA,OAClB;AAAA,MACA;AAAA,QACE,IAAA,EAAQ,YAAA;AAAA,QACR,IAAA,EAAQ,QAAA;AAAA,QACR,OAAA,EAAW,KAAA;AAAA,QACX,YAAA,EAAgB;AAAA,OAClB;AAAA,MACA;AAAA,QACE,IAAA,EAAQ,gBAAA;AAAA,QACR,IAAA,EAAQ,QAAA;AAAA,QACR,OAAA,EAAW,KAAA;AAAA,QACX,YAAA,EAAgB;AAAA;AAClB,KACF;AAAA,IACA,SAAA,EAAa;AAAA,GACf;AAAA,EACA;AAAA,IACE,IAAA,EAAQ,OAAA;AAAA,IACR,IAAA,EAAQ,eAAA;AAAA,IACR,MAAA,EAAU;AAAA,MACR;AAAA,QACE,IAAA,EAAQ,UAAA;AAAA,QACR,IAAA,EAAQ,SAAA;AAAA,QACR,OAAA,EAAW,IAAA;AAAA,QACX,YAAA,EAAgB;AAAA,OAClB;AAAA,MACA;AAAA,QACE,IAAA,EAAQ,SAAA;AAAA,QACR,IAAA,EAAQ,SAAA;AAAA,QACR,OAAA,EAAW,IAAA;AAAA,QACX,YAAA,EAAgB;AAAA,OAClB;AAAA,MACA;AAAA,QACE,IAAA,EAAQ,SAAA;AAAA,QACR,IAAA,EAAQ,SAAA;AAAA,QACR,OAAA,EAAW,IAAA;AAAA,QACX,YAAA,EAAgB;AAAA,OAClB;AAAA,MACA;AAAA,QACE,IAAA,EAAQ,aAAA;AAAA,QACR,IAAA,EAAQ,SAAA;AAAA,QACR,OAAA,EAAW,KAAA;AAAA,QACX,YAAA,EAAgB;AAAA,OAClB;AAAA,MACA;AAAA,QACE,IAAA,EAAQ,iBAAA;AAAA,QACR,IAAA,EAAQ,SAAA;AAAA,QACR,OAAA,EAAW,KAAA;AAAA,QACX,YAAA,EAAgB;AAAA,OAClB;AAAA,MACA;AAAA,QACE,IAAA,EAAQ,UAAA;AAAA,QACR,IAAA,EAAQ,SAAA;AAAA,QACR,OAAA,EAAW,KAAA;AAAA,QACX,YAAA,EAAgB;AAAA,OAClB;AAAA,MACA;AAAA,QACE,IAAA,EAAQ,UAAA;AAAA,QACR,IAAA,EAAQ,QAAA;AAAA,QACR,OAAA,EAAW,KAAA;AAAA,QACX,YAAA,EAAgB;AAAA,OAClB;AAAA,MACA;AAAA,QACE,IAAA,EAAQ,UAAA;AAAA,QACR,IAAA,EAAQ,UAAA;AAAA,QACR,OAAA,EAAW,KAAA;AAAA,QACX,YAAA,EAAgB;AAAA,OAClB;AAAA,MACA;AAAA,QACE,IAAA,EAAQ,SAAA;AAAA,QACR,IAAA,EAAQ,SAAA;AAAA,QACR,OAAA,EAAW,KAAA;AAAA,QACX,YAAA,EAAgB;AAAA,OAClB;AAAA,MACA;AAAA,QACE,IAAA,EAAQ,MAAA;AAAA,QACR,IAAA,EAAQ,WAAA;AAAA,QACR,OAAA,EAAW,KAAA;AAAA,QACX,YAAA,EAAgB;AAAA;AAClB,KACF;AAAA,IACA,SAAA,EAAa;AAAA,GACf;AAAA,EACA;AAAA,IACE,IAAA,EAAQ,OAAA;AAAA,IACR,IAAA,EAAQ,4BAAA;AAAA,IACR,MAAA,EAAU;AAAA,MACR;AAAA,QACE,IAAA,EAAQ,SAAA;AAAA,QACR,IAAA,EAAQ,SAAA;AAAA,QACR,OAAA,EAAW,IAAA;AAAA,QACX,YAAA,EAAgB;AAAA,OAClB;AAAA,MACA;AAAA,QACE,IAAA,EAAQ,OAAA;AAAA,QACR,IAAA,EAAQ,SAAA;AAAA,QACR,OAAA,EAAW,IAAA;AAAA,QACX,YAAA,EAAgB;AAAA,OAClB;AAAA,MACA;AAAA,QACE,IAAA,EAAQ,eAAA;AAAA,QACR,IAAA,EAAQ,SAAA;AAAA,QACR,OAAA,EAAW,KAAA;AAAA,QACX,YAAA,EAAgB;AAAA,OAClB;AAAA,MACA;AAAA,QACE,IAAA,EAAQ,YAAA;AAAA,QACR,IAAA,EAAQ,SAAA;AAAA,QACR,OAAA,EAAW,KAAA;AAAA,QACX,YAAA,EAAgB;AAAA;AAClB,KACF;AAAA,IACA,SAAA,EAAa;AAAA,GACf;AAAA,EACA;AAAA,IACE,IAAA,EAAQ,OAAA;AAAA,IACR,IAAA,EAAQ,mBAAA;AAAA,IACR,MAAA,EAAU;AAAA,MACR;AAAA,QACE,IAAA,EAAQ,UAAA;AAAA,QACR,IAAA,EAAQ,SAAA;AAAA,QACR,OAAA,EAAW,IAAA;AAAA,QACX,YAAA,EAAgB;AAAA,OAClB;AAAA,MACA;AAAA,QACE,IAAA,EAAQ,SAAA;AAAA,QACR,IAAA,EAAQ,SAAA;AAAA,QACR,OAAA,EAAW,IAAA;AAAA,QACX,YAAA,EAAgB;AAAA,OAClB;AAAA,MACA;AAAA,QACE,IAAA,EAAQ,UAAA;AAAA,QACR,IAAA,EAAQ,SAAA;AAAA,QACR,OAAA,EAAW,IAAA;AAAA,QACX,YAAA,EAAgB;AAAA;AAClB,KACF;AAAA,IACA,SAAA,EAAa;AAAA,GACf;AAAA,EACA;AAAA,IACE,IAAA,EAAQ,OAAA;AAAA,IACR,IAAA,EAAQ,qBAAA;AAAA,IACR,MAAA,EAAU;AAAA,MACR;AAAA,QACE,IAAA,EAAQ,UAAA;AAAA,QACR,IAAA,EAAQ,SAAA;AAAA,QACR,OAAA,EAAW,IAAA;AAAA,QACX,YAAA,EAAgB;AAAA,OAClB;AAAA,MACA;AAAA,QACE,IAAA,EAAQ,SAAA;AAAA,QACR,IAAA,EAAQ,SAAA;AAAA,QACR,OAAA,EAAW,IAAA;AAAA,QACX,YAAA,EAAgB;AAAA,OAClB;AAAA,MACA;AAAA,QACE,IAAA,EAAQ,UAAA;AAAA,QACR,IAAA,EAAQ,SAAA;AAAA,QACR,OAAA,EAAW,IAAA;AAAA,QACX,YAAA,EAAgB;AAAA;AAClB,KACF;AAAA,IACA,SAAA,EAAa;AAAA,GACf;AAAA,EACA;AAAA,IACE,IAAA,EAAQ,OAAA;AAAA,IACR,IAAA,EAAQ,sBAAA;AAAA,IACR,MAAA,EAAU;AAAA,MACR;AAAA,QACE,IAAA,EAAQ,SAAA;AAAA,QACR,IAAA,EAAQ,SAAA;AAAA,QACR,OAAA,EAAW,IAAA;AAAA,QACX,YAAA,EAAgB;AAAA,OAClB;AAAA,MACA;AAAA,QACE,IAAA,EAAQ,UAAA;AAAA,QACR,IAAA,EAAQ,SAAA;AAAA,QACR,OAAA,EAAW,IAAA;AAAA,QACX,YAAA,EAAgB;AAAA,OAClB;AAAA,MACA;AAAA,QACE,IAAA,EAAQ,YAAA;AAAA,QACR,IAAA,EAAQ,QAAA;AAAA,QACR,OAAA,EAAW,KAAA;AAAA,QACX,YAAA,EAAgB;AAAA,OAClB;AAAA,MACA;AAAA,QACE,IAAA,EAAQ,gBAAA;AAAA,QACR,IAAA,EAAQ,QAAA;AAAA,QACR,OAAA,EAAW,KAAA;AAAA,QACX,YAAA,EAAgB;AAAA,OAClB;AAAA,MACA;AAAA,QACE,IAAA,EAAQ,WAAA;AAAA,QACR,IAAA,EAAQ,SAAA;AAAA,QACR,OAAA,EAAW,KAAA;AAAA,QACX,YAAA,EAAgB;AAAA;AAClB,KACF;AAAA,IACA,SAAA,EAAa;AAAA,GACf;AAAA,EACA;AAAA,IACE,IAAA,EAAQ,OAAA;AAAA,IACR,IAAA,EAAQ,yBAAA;AAAA,IACR,MAAA,EAAU;AAAA,MACR;AAAA,QACE,IAAA,EAAQ,SAAA;AAAA,QACR,IAAA,EAAQ,SAAA;AAAA,QACR,OAAA,EAAW,IAAA;AAAA,QACX,YAAA,EAAgB;AAAA,OAClB;AAAA,MACA;AAAA,QACE,IAAA,EAAQ,WAAA;AAAA,QACR,IAAA,EAAQ,WAAA;AAAA,QACR,OAAA,EAAW,KAAA;AAAA,QACX,YAAA,EAAgB;AAAA,OAClB;AAAA,MACA;AAAA,QACE,IAAA,EAAQ,OAAA;AAAA,QACR,IAAA,EAAQ,SAAA;AAAA,QACR,OAAA,EAAW,KAAA;AAAA,QACX,YAAA,EAAgB;AAAA;AAClB,KACF;AAAA,IACA,SAAA,EAAa;AAAA,GACf;AAAA,EACA;AAAA,IACE,IAAA,EAAQ,OAAA;AAAA,IACR,IAAA,EAAQ,6BAAA;AAAA,IACR,MAAA,EAAU;AAAA,MACR;AAAA,QACE,IAAA,EAAQ,sBAAA;AAAA,QACR,IAAA,EAAQ,SAAA;AAAA,QACR,OAAA,EAAW,IAAA;AAAA,QACX,YAAA,EAAgB;AAAA,OAClB;AAAA,MACA;AAAA,QACE,IAAA,EAAQ,mBAAA;AAAA,QACR,IAAA,EAAQ,SAAA;AAAA,QACR,OAAA,EAAW,IAAA;AAAA,QACX,YAAA,EAAgB;AAAA;AAClB,KACF;AAAA,IACA,SAAA,EAAa;AAAA,GACf;AAAA,EACA;AAAA,IACE,IAAA,EAAQ,OAAA;AAAA,IACR,IAAA,EAAQ,0BAAA;AAAA,IACR,QAAU;AAAC,GACb;AAAA,EACA;AAAA,IACE,IAAA,EAAQ,OAAA;AAAA,IACR,IAAA,EAAQ,sBAAA;AAAA,IACR,QAAU;AAAC,GACb;AAAA,EACA;AAAA,IACE,IAAA,EAAQ,OAAA;AAAA,IACR,IAAA,EAAQ,gBAAA;AAAA,IACR,QAAU;AAAC,GACb;AAAA,EACA;AAAA,IACE,IAAA,EAAQ,OAAA;AAAA,IACR,IAAA,EAAQ,eAAA;AAAA,IACR,QAAU;AAAC,GACb;AAAA,EACA;AAAA,IACE,IAAA,EAAQ,OAAA;AAAA,IACR,IAAA,EAAQ,gBAAA;AAAA,IACR,QAAU;AAAC,GACb;AAAA,EACA;AAAA,IACE,IAAA,EAAQ,OAAA;AAAA,IACR,IAAA,EAAQ,mBAAA;AAAA,IACR,QAAU;AAAC,GACb;AAAA,EACA;AAAA,IACE,IAAA,EAAQ,OAAA;AAAA,IACR,IAAA,EAAQ,iBAAA;AAAA,IACR,QAAU;AAAC,GACb;AAAA,EACA;AAAA,IACE,IAAA,EAAQ,OAAA;AAAA,IACR,IAAA,EAAQ,iBAAA;AAAA,IACR,QAAU;AAAC,GACb;AAAA,EACA;AAAA,IACE,IAAA,EAAQ,OAAA;AAAA,IACR,IAAA,EAAQ,uBAAA;AAAA,IACR,QAAU;AAAC,GACb;AAAA,EACA;AAAA,IACE,IAAA,EAAQ,OAAA;AAAA,IACR,IAAA,EAAQ,iBAAA;AAAA,IACR,QAAU;AAAC,GACb;AAAA,EACA;AAAA,IACE,IAAA,EAAQ,OAAA;AAAA,IACR,IAAA,EAAQ,qBAAA;AAAA,IACR,QAAU;AAAC,GACb;AAAA,EACA;AAAA,IACE,IAAA,EAAQ,OAAA;AAAA,IACR,IAAA,EAAQ,sBAAA;AAAA,IACR,QAAU;AAAC,GACb;AAAA,EACA;AAAA,IACE,IAAA,EAAQ,OAAA;AAAA,IACR,IAAA,EAAQ,iBAAA;AAAA,IACR,QAAU;AAAC,GACb;AAAA,EACA;AAAA,IACE,IAAA,EAAQ,OAAA;AAAA,IACR,IAAA,EAAQ,mBAAA;AAAA,IACR,QAAU;AAAC,GACb;AAAA,EACA;AAAA,IACE,IAAA,EAAQ,OAAA;AAAA,IACR,IAAA,EAAQ,qBAAA;AAAA,IACR,QAAU;AAAC,GACb;AAAA,EACA;AAAA,IACE,IAAA,EAAQ,OAAA;AAAA,IACR,IAAA,EAAQ,iBAAA;AAAA,IACR,QAAU;AAAC,GACb;AAAA,EACA;AAAA,IACE,IAAA,EAAQ,OAAA;AAAA,IACR,IAAA,EAAQ,sBAAA;AAAA,IACR,QAAU;AAAC,GACb;AAAA,EACA;AAAA,IACE,IAAA,EAAQ,OAAA;AAAA,IACR,IAAA,EAAQ,gBAAA;AAAA,IACR,QAAU;AAAC,GACb;AAAA,EACA;AAAA,IACE,IAAA,EAAQ,OAAA;AAAA,IACR,IAAA,EAAQ,uBAAA;AAAA,IACR,QAAU;AAAC,GACb;AAAA,EACA;AAAA,IACE,IAAA,EAAQ,OAAA;AAAA,IACR,IAAA,EAAQ,gBAAA;AAAA,IACR,QAAU;AAAC,GACb;AAAA,EACA;AAAA,IACE,IAAA,EAAQ,OAAA;AAAA,IACR,IAAA,EAAQ,aAAA;AAAA,IACR,QAAU;AAAC,GACb;AAAA,EACA;AAAA,IACE,IAAA,EAAQ,OAAA;AAAA,IACR,IAAA,EAAQ,sBAAA;AAAA,IACR,QAAU;AAAC,GACb;AAAA,EACA;AAAA,IACE,IAAA,EAAQ,OAAA;AAAA,IACR,IAAA,EAAQ,oBAAA;AAAA,IACR,QAAU;AAAC,GACb;AAAA,EACA;AAAA,IACE,IAAA,EAAQ,OAAA;AAAA,IACR,IAAA,EAAQ,eAAA;AAAA,IACR,QAAU;AAAC,GACb;AAAA,EACA;AAAA,IACE,IAAA,EAAQ,OAAA;AAAA,IACR,IAAA,EAAQ,eAAA;AAAA,IACR,QAAU;AAAC,GACb;AAAA,EACA;AAAA,IACE,IAAA,EAAQ,OAAA;AAAA,IACR,IAAA,EAAQ,gBAAA;AAAA,IACR,QAAU;AAAC;AAEf;;;AC/wBA,IAAA,wBAAA,GAAA;AAAA,EACE;AAAA,IACE,IAAA,EAAQ,UAAA;AAAA,IACR,IAAA,EAAQ,aAAA;AAAA,IACR,MAAA,EAAU;AAAA,MACR;AAAA,QACE,IAAA,EAAQ,SAAA;AAAA,QACR,IAAA,EAAQ,SAAA;AAAA,QACR,YAAA,EAAgB;AAAA;AAClB,KACF;AAAA,IACA,SAAW,EAAC;AAAA,IACZ,eAAA,EAAmB;AAAA,GACrB;AAAA,EACA;AAAA,IACE,IAAA,EAAQ,UAAA;AAAA,IACR,IAAA,EAAQ,8BAAA;AAAA,IACR,MAAA,EAAU;AAAA,MACR;AAAA,QACE,IAAA,EAAQ,UAAA;AAAA,QACR,IAAA,EAAQ,SAAA;AAAA,QACR,YAAA,EAAgB;AAAA,OAClB;AAAA,MACA;AAAA,QACE,IAAA,EAAQ,UAAA;AAAA,QACR,IAAA,EAAQ,WAAA;AAAA,QACR,YAAA,EAAgB;AAAA;AAClB,KACF;AAAA,IACA,OAAA,EAAW;AAAA,MACT;AAAA,QACE,IAAA,EAAQ,gBAAA;AAAA,QACR,IAAA,EAAQ,SAAA;AAAA,QACR,YAAA,EAAgB;AAAA;AAClB,KACF;AAAA,IACA,eAAA,EAAmB;AAAA,GACrB;AAAA,EACA;AAAA,IACE,IAAA,EAAQ,UAAA;AAAA,IACR,IAAA,EAAQ,cAAA;AAAA,IACR,MAAA,EAAU;AAAA,MACR;AAAA,QACE,IAAA,EAAQ,UAAA;AAAA,QACR,IAAA,EAAQ,SAAA;AAAA,QACR,YAAA,EAAgB;AAAA,OAClB;AAAA,MACA;AAAA,QACE,IAAA,EAAQ,UAAA;AAAA,QACR,IAAA,EAAQ,WAAA;AAAA,QACR,YAAA,EAAgB;AAAA;AAClB,KACF;AAAA,IACA,OAAA,EAAW;AAAA,MACT;AAAA,QACE,IAAA,EAAQ,cAAA;AAAA,QACR,IAAA,EAAQ,SAAA;AAAA,QACR,YAAA,EAAgB;AAAA,OAClB;AAAA,MACA;AAAA,QACE,IAAA,EAAQ,cAAA;AAAA,QACR,IAAA,EAAQ,SAAA;AAAA,QACR,YAAA,EAAgB;AAAA;AAClB,KACF;AAAA,IACA,eAAA,EAAmB;AAAA,GACrB;AAAA,EACA;AAAA,IACE,IAAA,EAAQ,UAAA;AAAA,IACR,IAAA,EAAQ,UAAA;AAAA,IACR,MAAA,EAAU;AAAA,MACR;AAAA,QACE,IAAA,EAAQ,SAAA;AAAA,QACR,IAAA,EAAQ,SAAA;AAAA,QACR,YAAA,EAAgB;AAAA;AAClB,KACF;AAAA,IACA,OAAA,EAAW;AAAA,MACT;AAAA,QACE,IAAA,EAAQ,EAAA;AAAA,QACR,IAAA,EAAQ,OAAA;AAAA,QACR,YAAA,EAAgB,cAAA;AAAA,QAChB,UAAA,EAAc;AAAA,UACZ;AAAA,YACE,IAAA,EAAQ,IAAA;AAAA,YACR,IAAA,EAAQ,SAAA;AAAA,YACR,YAAA,EAAgB;AAAA,WAClB;AAAA,UACA;AAAA,YACE,IAAA,EAAQ,OAAA;AAAA,YACR,IAAA,EAAQ,SAAA;AAAA,YACR,YAAA,EAAgB;AAAA,WAClB;AAAA,UACA;AAAA,YACE,IAAA,EAAQ,KAAA;AAAA,YACR,IAAA,EAAQ,SAAA;AAAA,YACR,YAAA,EAAgB;AAAA,WAClB;AAAA,UACA;AAAA,YACE,IAAA,EAAQ,aAAA;AAAA,YACR,IAAA,EAAQ,SAAA;AAAA,YACR,YAAA,EAAgB;AAAA,WAClB;AAAA,UACA;AAAA,YACE,IAAA,EAAQ,MAAA;AAAA,YACR,IAAA,EAAQ,SAAA;AAAA,YACR,YAAA,EAAgB;AAAA,WAClB;AAAA,UACA;AAAA,YACE,IAAA,EAAQ,MAAA;AAAA,YACR,IAAA,EAAQ,OAAA;AAAA,YACR,YAAA,EAAgB;AAAA,WAClB;AAAA,UACA;AAAA,YACE,IAAA,EAAQ,WAAA;AAAA,YACR,IAAA,EAAQ,SAAA;AAAA,YACR,YAAA,EAAgB;AAAA,WAClB;AAAA,UACA;AAAA,YACE,IAAA,EAAQ,UAAA;AAAA,YACR,IAAA,EAAQ,SAAA;AAAA,YACR,YAAA,EAAgB;AAAA,WAClB;AAAA,UACA;AAAA,YACE,IAAA,EAAQ,QAAA;AAAA,YACR,IAAA,EAAQ,SAAA;AAAA,YACR,YAAA,EAAgB;AAAA,WAClB;AAAA,UACA;AAAA,YACE,IAAA,EAAQ,MAAA;AAAA,YACR,IAAA,EAAQ,SAAA;AAAA,YACR,YAAA,EAAgB;AAAA,WAClB;AAAA,UACA;AAAA,YACE,IAAA,EAAQ,aAAA;AAAA,YACR,IAAA,EAAQ,SAAA;AAAA,YACR,YAAA,EAAgB;AAAA,WAClB;AAAA,UACA;AAAA,YACE,IAAA,EAAQ,aAAA;AAAA,YACR,IAAA,EAAQ,SAAA;AAAA,YACR,YAAA,EAAgB;AAAA;AAClB;AACF;AACF,KACF;AAAA,IACA,eAAA,EAAmB;AAAA,GACrB;AAAA,EACA;AAAA,IACE,IAAA,EAAQ,UAAA;AAAA,IACR,IAAA,EAAQ,YAAA;AAAA,IACR,MAAA,EAAU;AAAA,MACR;AAAA,QACE,IAAA,EAAQ,UAAA;AAAA,QACR,IAAA,EAAQ,SAAA;AAAA,QACR,YAAA,EAAgB;AAAA,OAClB;AAAA,MACA;AAAA,QACE,IAAA,EAAQ,WAAA;AAAA,QACR,IAAA,EAAQ,SAAA;AAAA,QACR,YAAA,EAAgB;AAAA,OAClB;AAAA,MACA;AAAA,QACE,IAAA,EAAQ,MAAA;AAAA,QACR,IAAA,EAAQ,OAAA;AAAA,QACR,YAAA,EAAgB;AAAA,OAClB;AAAA,MACA;AAAA,QACE,IAAA,EAAQ,MAAA;AAAA,QACR,IAAA,EAAQ,SAAA;AAAA,QACR,YAAA,EAAgB;AAAA,OAClB;AAAA,MACA;AAAA,QACE,IAAA,EAAQ,KAAA;AAAA,QACR,IAAA,EAAQ,SAAA;AAAA,QACR,YAAA,EAAgB;AAAA,OAClB;AAAA,MACA;AAAA,QACE,IAAA,EAAQ,QAAA;AAAA,QACR,IAAA,EAAQ,SAAA;AAAA,QACR,YAAA,EAAgB;AAAA;AAClB,KACF;AAAA,IACA,OAAA,EAAW;AAAA,MACT;AAAA,QACE,IAAA,EAAQ,SAAA;AAAA,QACR,IAAA,EAAQ,SAAA;AAAA,QACR,YAAA,EAAgB;AAAA;AAClB,KACF;AAAA,IACA,eAAA,EAAmB;AAAA,GACrB;AAAA,EACA;AAAA,IACE,IAAA,EAAQ,OAAA;AAAA,IACR,IAAA,EAAQ,gBAAA;AAAA,IACR,MAAA,EAAU;AAAA,MACR;AAAA,QACE,IAAA,EAAQ,SAAA;AAAA,QACR,IAAA,EAAQ,SAAA;AAAA,QACR,OAAA,EAAW,IAAA;AAAA,QACX,YAAA,EAAgB;AAAA;AAClB,KACF;AAAA,IACA,SAAA,EAAa;AAAA,GACf;AAAA,EACA;AAAA,IACE,IAAA,EAAQ,OAAA;AAAA,IACR,IAAA,EAAQ,cAAA;AAAA,IACR,MAAA,EAAU;AAAA,MACR;AAAA,QACE,IAAA,EAAQ,SAAA;AAAA,QACR,IAAA,EAAQ,SAAA;AAAA,QACR,OAAA,EAAW,IAAA;AAAA,QACX,YAAA,EAAgB;AAAA,OAClB;AAAA,MACA;AAAA,QACE,IAAA,EAAQ,OAAA;AAAA,QACR,IAAA,EAAQ,SAAA;AAAA,QACR,OAAA,EAAW,IAAA;AAAA,QACX,YAAA,EAAgB;AAAA,OAClB;AAAA,MACA;AAAA,QACE,IAAA,EAAQ,UAAA;AAAA,QACR,IAAA,EAAQ,SAAA;AAAA,QACR,OAAA,EAAW,KAAA;AAAA,QACX,YAAA,EAAgB;AAAA;AAClB,KACF;AAAA,IACA,SAAA,EAAa;AAAA,GACf;AAAA,EACA;AAAA,IACE,IAAA,EAAQ,OAAA;AAAA,IACR,IAAA,EAAQ,cAAA;AAAA,IACR,MAAA,EAAU;AAAA,MACR;AAAA,QACE,IAAA,EAAQ,SAAA;AAAA,QACR,IAAA,EAAQ,SAAA;AAAA,QACR,OAAA,EAAW,IAAA;AAAA,QACX,YAAA,EAAgB;AAAA;AAClB,KACF;AAAA,IACA,SAAA,EAAa;AAAA,GACf;AAAA,EACA;AAAA,IACE,IAAA,EAAQ,OAAA;AAAA,IACR,IAAA,EAAQ,cAAA;AAAA,IACR,MAAA,EAAU;AAAA,MACR;AAAA,QACE,IAAA,EAAQ,SAAA;AAAA,QACR,IAAA,EAAQ,SAAA;AAAA,QACR,OAAA,EAAW,IAAA;AAAA,QACX,YAAA,EAAgB;AAAA,OAClB;AAAA,MACA;AAAA,QACE,IAAA,EAAQ,OAAA;AAAA,QACR,IAAA,EAAQ,SAAA;AAAA,QACR,OAAA,EAAW,IAAA;AAAA,QACX,YAAA,EAAgB;AAAA,OAClB;AAAA,MACA;AAAA,QACE,IAAA,EAAQ,KAAA;AAAA,QACR,IAAA,EAAQ,SAAA;AAAA,QACR,OAAA,EAAW,KAAA;AAAA,QACX,YAAA,EAAgB;AAAA;AAClB,KACF;AAAA,IACA,SAAA,EAAa;AAAA,GACf;AAAA,EACA;AAAA,IACE,IAAA,EAAQ,OAAA;AAAA,IACR,IAAA,EAAQ,aAAA;AAAA,IACR,MAAA,EAAU;AAAA,MACR;AAAA,QACE,IAAA,EAAQ,SAAA;AAAA,QACR,IAAA,EAAQ,SAAA;AAAA,QACR,OAAA,EAAW,IAAA;AAAA,QACX,YAAA,EAAgB;AAAA,OAClB;AAAA,MACA;AAAA,QACE,IAAA,EAAQ,UAAA;AAAA,QACR,IAAA,EAAQ,SAAA;AAAA,QACR,OAAA,EAAW,IAAA;AAAA,QACX,YAAA,EAAgB;AAAA,OAClB;AAAA,MACA;AAAA,QACE,IAAA,EAAQ,WAAA;AAAA,QACR,IAAA,EAAQ,SAAA;AAAA,QACR,OAAA,EAAW,KAAA;AAAA,QACX,YAAA,EAAgB;AAAA,OAClB;AAAA,MACA;AAAA,QACE,IAAA,EAAQ,MAAA;AAAA,QACR,IAAA,EAAQ,OAAA;AAAA,QACR,OAAA,EAAW,KAAA;AAAA,QACX,YAAA,EAAgB;AAAA,OAClB;AAAA,MACA;AAAA,QACE,IAAA,EAAQ,MAAA;AAAA,QACR,IAAA,EAAQ,SAAA;AAAA,QACR,OAAA,EAAW,KAAA;AAAA,QACX,YAAA,EAAgB;AAAA,OAClB;AAAA,MACA;AAAA,QACE,IAAA,EAAQ,KAAA;AAAA,QACR,IAAA,EAAQ,SAAA;AAAA,QACR,OAAA,EAAW,KAAA;AAAA,QACX,YAAA,EAAgB;AAAA,OAClB;AAAA,MACA;AAAA,QACE,IAAA,EAAQ,OAAA;AAAA,QACR,IAAA,EAAQ,SAAA;AAAA,QACR,OAAA,EAAW,IAAA;AAAA,QACX,YAAA,EAAgB;AAAA;AAClB,KACF;AAAA,IACA,SAAA,EAAa;AAAA,GACf;AAAA,EACA;AAAA,IACE,IAAA,EAAQ,OAAA;AAAA,IACR,IAAA,EAAQ,kBAAA;AAAA,IACR,MAAA,EAAU;AAAA,MACR;AAAA,QACE,IAAA,EAAQ,UAAA;AAAA,QACR,IAAA,EAAQ,SAAA;AAAA,QACR,OAAA,EAAW,IAAA;AAAA,QACX,YAAA,EAAgB;AAAA,OAClB;AAAA,MACA;AAAA,QACE,IAAA,EAAQ,WAAA;AAAA,QACR,IAAA,EAAQ,SAAA;AAAA,QACR,OAAA,EAAW,IAAA;AAAA,QACX,YAAA,EAAgB;AAAA,OAClB;AAAA,MACA;AAAA,QACE,IAAA,EAAQ,MAAA;AAAA,QACR,IAAA,EAAQ,OAAA;AAAA,QACR,OAAA,EAAW,KAAA;AAAA,QACX,YAAA,EAAgB;AAAA,OAClB;AAAA,MACA;AAAA,QACE,IAAA,EAAQ,UAAA;AAAA,QACR,IAAA,EAAQ,SAAA;AAAA,QACR,OAAA,EAAW,KAAA;AAAA,QACX,YAAA,EAAgB;AAAA;AAClB,KACF;AAAA,IACA,SAAA,EAAa;AAAA,GACf;AAAA,EACA;AAAA,IACE,IAAA,EAAQ,OAAA;AAAA,IACR,IAAA,EAAQ,eAAA;AAAA,IACR,QAAU;AAAC,GACb;AAAA,EACA;AAAA,IACE,IAAA,EAAQ,OAAA;AAAA,IACR,IAAA,EAAQ,eAAA;AAAA,IACR,QAAU;AAAC,GACb;AAAA,EACA;AAAA,IACE,IAAA,EAAQ,OAAA;AAAA,IACR,IAAA,EAAQ,gBAAA;AAAA,IACR,QAAU;AAAC,GACb;AAAA,EACA;AAAA,IACE,IAAA,EAAQ,OAAA;AAAA,IACR,IAAA,EAAQ,iBAAA;AAAA,IACR,QAAU;AAAC,GACb;AAAA,EACA;AAAA,IACE,IAAA,EAAQ,OAAA;AAAA,IACR,IAAA,EAAQ,aAAA;AAAA,IACR,QAAU;AAAC,GACb;AAAA,EACA;AAAA,IACE,IAAA,EAAQ,OAAA;AAAA,IACR,IAAA,EAAQ,uBAAA;AAAA,IACR,QAAU;AAAC,GACb;AAAA,EACA;AAAA,IACE,IAAA,EAAQ,OAAA;AAAA,IACR,IAAA,EAAQ,yBAAA;AAAA,IACR,QAAU;AAAC,GACb;AAAA,EACA;AAAA,IACE,IAAA,EAAQ,OAAA;AAAA,IACR,IAAA,EAAQ,iBAAA;AAAA,IACR,QAAU;AAAC,GACb;AAAA,EACA;AAAA,IACE,IAAA,EAAQ,OAAA;AAAA,IACR,IAAA,EAAQ,mBAAA;AAAA,IACR,QAAU;AAAC,GACb;AAAA,EACA;AAAA,IACE,IAAA,EAAQ,OAAA;AAAA,IACR,IAAA,EAAQ,cAAA;AAAA,IACR,QAAU;AAAC,GACb;AAAA,EACA;AAAA,IACE,IAAA,EAAQ,OAAA;AAAA,IACR,IAAA,EAAQ,cAAA;AAAA,IACR,QAAU;AAAC,GACb;AAAA,EACA;AAAA,IACE,IAAA,EAAQ,OAAA;AAAA,IACR,IAAA,EAAQ,eAAA;AAAA,IACR,QAAU;AAAC,GACb;AAAA,EACA;AAAA,IACE,IAAA,EAAQ,OAAA;AAAA,IACR,IAAA,EAAQ,gBAAA;AAAA,IACR,QAAU;AAAC,GACb;AAAA,EACA;AAAA,IACE,IAAA,EAAQ,OAAA;AAAA,IACR,IAAA,EAAQ,qBAAA;AAAA,IACR,QAAU;AAAC,GACb;AAAA,EACA;AAAA,IACE,IAAA,EAAQ,OAAA;AAAA,IACR,IAAA,EAAQ,gBAAA;AAAA,IACR,QAAU;AAAC,GACb;AAAA,EACA;AAAA,IACE,IAAA,EAAQ,OAAA;AAAA,IACR,IAAA,EAAQ,oBAAA;AAAA,IACR,QAAU;AAAC,GACb;AAAA,EACA;AAAA,IACE,IAAA,EAAQ,OAAA;AAAA,IACR,IAAA,EAAQ,eAAA;AAAA,IACR,QAAU;AAAC,GACb;AAAA,EACA;AAAA,IACE,IAAA,EAAQ,OAAA;AAAA,IACR,IAAA,EAAQ,eAAA;AAAA,IACR,QAAU;AAAC,GACb;AAAA,EACA;AAAA,IACE,IAAA,EAAQ,OAAA;AAAA,IACR,IAAA,EAAQ,gBAAA;AAAA,IACR,QAAU;AAAC;AAEf;;;AC3bA,IAAA,qBAAA,GAAA;AAAA,EACE;AAAA,IACE,IAAA,EAAQ,UAAA;AAAA,IACR,IAAA,EAAQ,aAAA;AAAA,IACR,MAAA,EAAU;AAAA,MACR;AAAA,QACE,IAAA,EAAQ,UAAA;AAAA,QACR,IAAA,EAAQ,SAAA;AAAA,QACR,YAAA,EAAgB;AAAA,OAClB;AAAA,MACA;AAAA,QACE,IAAA,EAAQ,UAAA;AAAA,QACR,IAAA,EAAQ,SAAA;AAAA,QACR,YAAA,EAAgB;AAAA;AAClB,KACF;AAAA,IACA,OAAA,EAAW;AAAA,MACT;AAAA,QACE,IAAA,EAAQ,WAAA;AAAA,QACR,IAAA,EAAQ,SAAA;AAAA,QACR,YAAA,EAAgB;AAAA;AAClB,KACF;AAAA,IACA,eAAA,EAAmB;AAAA,GACrB;AAAA,EACA;AAAA,IACE,IAAA,EAAQ,OAAA;AAAA,IACR,IAAA,EAAQ,iBAAA;AAAA,IACR,MAAA,EAAU;AAAA,MACR;AAAA,QACE,IAAA,EAAQ,UAAA;AAAA,QACR,IAAA,EAAQ,SAAA;AAAA,QACR,OAAA,EAAW,IAAA;AAAA,QACX,YAAA,EAAgB;AAAA,OAClB;AAAA,MACA;AAAA,QACE,IAAA,EAAQ,QAAA;AAAA,QACR,IAAA,EAAQ,SAAA;AAAA,QACR,OAAA,EAAW,IAAA;AAAA,QACX,YAAA,EAAgB;AAAA,OAClB;AAAA,MACA;AAAA,QACE,IAAA,EAAQ,aAAA;AAAA,QACR,IAAA,EAAQ,SAAA;AAAA,QACR,OAAA,EAAW,KAAA;AAAA,QACX,YAAA,EAAgB;AAAA,OAClB;AAAA,MACA;AAAA,QACE,IAAA,EAAQ,aAAA;AAAA,QACR,IAAA,EAAQ,SAAA;AAAA,QACR,OAAA,EAAW,KAAA;AAAA,QACX,YAAA,EAAgB;AAAA,OAClB;AAAA,MACA;AAAA,QACE,IAAA,EAAQ,YAAA;AAAA,QACR,IAAA,EAAQ,SAAA;AAAA,QACR,OAAA,EAAW,KAAA;AAAA,QACX,YAAA,EAAgB;AAAA,OAClB;AAAA,MACA;AAAA,QACE,IAAA,EAAQ,aAAA;AAAA,QACR,IAAA,EAAQ,SAAA;AAAA,QACR,OAAA,EAAW,KAAA;AAAA,QACX,YAAA,EAAgB;AAAA,OAClB;AAAA,MACA;AAAA,QACE,IAAA,EAAQ,UAAA;AAAA,QACR,IAAA,EAAQ,SAAA;AAAA,QACR,OAAA,EAAW,KAAA;AAAA,QACX,YAAA,EAAgB;AAAA;AAClB,KACF;AAAA,IACA,SAAA,EAAa;AAAA,GACf;AAAA,EACA;AAAA,IACE,IAAA,EAAQ,OAAA;AAAA,IACR,IAAA,EAAQ,WAAA;AAAA,IACR,MAAA,EAAU;AAAA,MACR;AAAA,QACE,IAAA,EAAQ,UAAA;AAAA,QACR,IAAA,EAAQ,SAAA;AAAA,QACR,OAAA,EAAW,IAAA;AAAA,QACX,YAAA,EAAgB;AAAA,OAClB;AAAA,MACA;AAAA,QACE,IAAA,EAAQ,KAAA;AAAA,QACR,IAAA,EAAQ,SAAA;AAAA,QACR,OAAA,EAAW,KAAA;AAAA,QACX,YAAA,EAAgB;AAAA,OAClB;AAAA,MACA;AAAA,QACE,IAAA,EAAQ,YAAA;AAAA,QACR,IAAA,EAAQ,SAAA;AAAA,QACR,OAAA,EAAW,KAAA;AAAA,QACX,YAAA,EAAgB;AAAA,OAClB;AAAA,MACA;AAAA,QACE,IAAA,EAAQ,WAAA;AAAA,QACR,IAAA,EAAQ,SAAA;AAAA,QACR,OAAA,EAAW,KAAA;AAAA,QACX,YAAA,EAAgB;AAAA,OAClB;AAAA,MACA;AAAA,QACE,IAAA,EAAQ,SAAA;AAAA,QACR,IAAA,EAAQ,SAAA;AAAA,QACR,OAAA,EAAW,KAAA;AAAA,QACX,YAAA,EAAgB;AAAA,OAClB;AAAA,MACA;AAAA,QACE,IAAA,EAAQ,QAAA;AAAA,QACR,IAAA,EAAQ,SAAA;AAAA,QACR,OAAA,EAAW,KAAA;AAAA,QACX,YAAA,EAAgB;AAAA;AAClB,KACF;AAAA,IACA,SAAA,EAAa;AAAA,GACf;AAAA,EACA;AAAA,IACE,IAAA,EAAQ,OAAA;AAAA,IACR,IAAA,EAAQ,UAAA;AAAA,IACR,MAAA,EAAU;AAAA,MACR;AAAA,QACE,IAAA,EAAQ,UAAA;AAAA,QACR,IAAA,EAAQ,SAAA;AAAA,QACR,OAAA,EAAW,IAAA;AAAA,QACX,YAAA,EAAgB;AAAA,OAClB;AAAA,MACA;AAAA,QACE,IAAA,EAAQ,KAAA;AAAA,QACR,IAAA,EAAQ,SAAA;AAAA,QACR,OAAA,EAAW,KAAA;AAAA,QACX,YAAA,EAAgB;AAAA,OAClB;AAAA,MACA;AAAA,QACE,IAAA,EAAQ,YAAA;AAAA,QACR,IAAA,EAAQ,SAAA;AAAA,QACR,OAAA,EAAW,KAAA;AAAA,QACX,YAAA,EAAgB;AAAA,OAClB;AAAA,MACA;AAAA,QACE,IAAA,EAAQ,WAAA;AAAA,QACR,IAAA,EAAQ,SAAA;AAAA,QACR,OAAA,EAAW,KAAA;AAAA,QACX,YAAA,EAAgB;AAAA,OAClB;AAAA,MACA;AAAA,QACE,IAAA,EAAQ,SAAA;AAAA,QACR,IAAA,EAAQ,SAAA;AAAA,QACR,OAAA,EAAW,KAAA;AAAA,QACX,YAAA,EAAgB;AAAA,OAClB;AAAA,MACA;AAAA,QACE,IAAA,EAAQ,QAAA;AAAA,QACR,IAAA,EAAQ,SAAA;AAAA,QACR,OAAA,EAAW,KAAA;AAAA,QACX,YAAA,EAAgB;AAAA;AAClB,KACF;AAAA,IACA,SAAA,EAAa;AAAA,GACf;AAAA,EACA;AAAA,IACE,IAAA,EAAQ,OAAA;AAAA,IACR,IAAA,EAAQ,oBAAA;AAAA,IACR,MAAA,EAAU;AAAA,MACR;AAAA,QACE,IAAA,EAAQ,SAAA;AAAA,QACR,IAAA,EAAQ,SAAA;AAAA,QACR,OAAA,EAAW,IAAA;AAAA,QACX,YAAA,EAAgB;AAAA,OAClB;AAAA,MACA;AAAA,QACE,IAAA,EAAQ,oBAAA;AAAA,QACR,IAAA,EAAQ,SAAA;AAAA,QACR,OAAA,EAAW,KAAA;AAAA,QACX,YAAA,EAAgB;AAAA;AAClB,KACF;AAAA,IACA,SAAA,EAAa;AAAA,GACf;AAAA,EACA;AAAA,IACE,IAAA,EAAQ,OAAA;AAAA,IACR,IAAA,EAAQ,cAAA;AAAA,IACR,MAAA,EAAU;AAAA,MACR;AAAA,QACE,IAAA,EAAQ,SAAA;AAAA,QACR,IAAA,EAAQ,SAAA;AAAA,QACR,OAAA,EAAW,IAAA;AAAA,QACX,YAAA,EAAgB;AAAA;AAClB,KACF;AAAA,IACA,SAAA,EAAa;AAAA,GACf;AAAA,EACA;AAAA,IACE,IAAA,EAAQ,OAAA;AAAA,IACR,IAAA,EAAQ,cAAA;AAAA,IACR,MAAA,EAAU;AAAA,MACR;AAAA,QACE,IAAA,EAAQ,SAAA;AAAA,QACR,IAAA,EAAQ,SAAA;AAAA,QACR,OAAA,EAAW,IAAA;AAAA,QACX,YAAA,EAAgB;AAAA,OAClB;AAAA,MACA;AAAA,QACE,IAAA,EAAQ,OAAA;AAAA,QACR,IAAA,EAAQ,SAAA;AAAA,QACR,OAAA,EAAW,IAAA;AAAA,QACX,YAAA,EAAgB;AAAA,OAClB;AAAA,MACA;AAAA,QACE,IAAA,EAAQ,KAAA;AAAA,QACR,IAAA,EAAQ,SAAA;AAAA,QACR,OAAA,EAAW,KAAA;AAAA,QACX,YAAA,EAAgB;AAAA;AAClB,KACF;AAAA,IACA,SAAA,EAAa;AAAA,GACf;AAAA,EACA;AAAA,IACE,IAAA,EAAQ,OAAA;AAAA,IACR,IAAA,EAAQ,aAAA;AAAA,IACR,MAAA,EAAU;AAAA,MACR;AAAA,QACE,IAAA,EAAQ,YAAA;AAAA,QACR,IAAA,EAAQ,SAAA;AAAA,QACR,OAAA,EAAW,IAAA;AAAA,QACX,YAAA,EAAgB;AAAA,OAClB;AAAA,MACA;AAAA,QACE,IAAA,EAAQ,aAAA;AAAA,QACR,IAAA,EAAQ,SAAA;AAAA,QACR,OAAA,EAAW,IAAA;AAAA,QACX,YAAA,EAAgB;AAAA,OAClB;AAAA,MACA;AAAA,QACE,IAAA,EAAQ,UAAA;AAAA,QACR,IAAA,EAAQ,SAAA;AAAA,QACR,OAAA,EAAW,IAAA;AAAA,QACX,YAAA,EAAgB;AAAA,OAClB;AAAA,MACA;AAAA,QACE,IAAA,EAAQ,WAAA;AAAA,QACR,IAAA,EAAQ,SAAA;AAAA,QACR,OAAA,EAAW,KAAA;AAAA,QACX,YAAA,EAAgB;AAAA,OAClB;AAAA,MACA;AAAA,QACE,IAAA,EAAQ,KAAA;AAAA,QACR,IAAA,EAAQ,SAAA;AAAA,QACR,OAAA,EAAW,KAAA;AAAA,QACX,YAAA,EAAgB;AAAA,OAClB;AAAA,MACA;AAAA,QACE,IAAA,EAAQ,WAAA;AAAA,QACR,IAAA,EAAQ,SAAA;AAAA,QACR,OAAA,EAAW,KAAA;AAAA,QACX,YAAA,EAAgB;AAAA;AAClB,KACF;AAAA,IACA,SAAA,EAAa;AAAA,GACf;AAAA,EACA;AAAA,IACE,IAAA,EAAQ,OAAA;AAAA,IACR,IAAA,EAAQ,eAAA;AAAA,IACR,MAAA,EAAU;AAAA,MACR;AAAA,QACE,IAAA,EAAQ,UAAA;AAAA,QACR,IAAA,EAAQ,SAAA;AAAA,QACR,OAAA,EAAW,IAAA;AAAA,QACX,YAAA,EAAgB;AAAA,OAClB;AAAA,MACA;AAAA,QACE,IAAA,EAAQ,QAAA;AAAA,QACR,IAAA,EAAQ,SAAA;AAAA,QACR,OAAA,EAAW,IAAA;AAAA,QACX,YAAA,EAAgB;AAAA,OAClB;AAAA,MACA;AAAA,QACE,IAAA,EAAQ,QAAA;AAAA,QACR,IAAA,EAAQ,SAAA;AAAA,QACR,OAAA,EAAW,KAAA;AAAA,QACX,YAAA,EAAgB;AAAA;AAClB,KACF;AAAA,IACA,SAAA,EAAa;AAAA,GACf;AAAA,EACA;AAAA,IACE,IAAA,EAAQ,OAAA;AAAA,IACR,IAAA,EAAQ,eAAA;AAAA,IACR,MAAA,EAAU;AAAA,MACR;AAAA,QACE,IAAA,EAAQ,UAAA;AAAA,QACR,IAAA,EAAQ,SAAA;AAAA,QACR,OAAA,EAAW,IAAA;AAAA,QACX,YAAA,EAAgB;AAAA,OAClB;AAAA,MACA;AAAA,QACE,IAAA,EAAQ,QAAA;AAAA,QACR,IAAA,EAAQ,SAAA;AAAA,QACR,OAAA,EAAW,IAAA;AAAA,QACX,YAAA,EAAgB;AAAA,OAClB;AAAA,MACA;AAAA,QACE,IAAA,EAAQ,QAAA;AAAA,QACR,IAAA,EAAQ,SAAA;AAAA,QACR,OAAA,EAAW,KAAA;AAAA,QACX,YAAA,EAAgB;AAAA;AAClB,KACF;AAAA,IACA,SAAA,EAAa;AAAA,GACf;AAAA,EACA;AAAA,IACE,IAAA,EAAQ,OAAA;AAAA,IACR,IAAA,EAAQ,kBAAA;AAAA,IACR,MAAA,EAAU;AAAA,MACR;AAAA,QACE,IAAA,EAAQ,UAAA;AAAA,QACR,IAAA,EAAQ,SAAA;AAAA,QACR,OAAA,EAAW,IAAA;AAAA,QACX,YAAA,EAAgB;AAAA,OAClB;AAAA,MACA;AAAA,QACE,IAAA,EAAQ,WAAA;AAAA,QACR,IAAA,EAAQ,SAAA;AAAA,QACR,OAAA,EAAW,IAAA;AAAA,QACX,YAAA,EAAgB;AAAA,OAClB;AAAA,MACA;AAAA,QACE,IAAA,EAAQ,MAAA;AAAA,QACR,IAAA,EAAQ,OAAA;AAAA,QACR,OAAA,EAAW,KAAA;AAAA,QACX,YAAA,EAAgB;AAAA,OAClB;AAAA,MACA;AAAA,QACE,IAAA,EAAQ,UAAA;AAAA,QACR,IAAA,EAAQ,SAAA;AAAA,QACR,OAAA,EAAW,KAAA;AAAA,QACX,YAAA,EAAgB;AAAA;AAClB,KACF;AAAA,IACA,SAAA,EAAa;AAAA,GACf;AAAA,EACA;AAAA,IACE,IAAA,EAAQ,OAAA;AAAA,IACR,IAAA,EAAQ,eAAA;AAAA,IACR,MAAA,EAAU;AAAA,MACR;AAAA,QACE,IAAA,EAAQ,UAAA;AAAA,QACR,IAAA,EAAQ,SAAA;AAAA,QACR,OAAA,EAAW,IAAA;AAAA,QACX,YAAA,EAAgB;AAAA,OAClB;AAAA,MACA;AAAA,QACE,IAAA,EAAQ,WAAA;AAAA,QACR,IAAA,EAAQ,SAAA;AAAA,QACR,OAAA,EAAW,IAAA;AAAA,QACX,YAAA,EAAgB;AAAA,OAClB;AAAA,MACA;AAAA,QACE,IAAA,EAAQ,QAAA;AAAA,QACR,IAAA,EAAQ,SAAA;AAAA,QACR,OAAA,EAAW,IAAA;AAAA,QACX,YAAA,EAAgB;AAAA,OAClB;AAAA,MACA;AAAA,QACE,IAAA,EAAQ,WAAA;AAAA,QACR,IAAA,EAAQ,SAAA;AAAA,QACR,OAAA,EAAW,KAAA;AAAA,QACX,YAAA,EAAgB;AAAA,OAClB;AAAA,MACA;AAAA,QACE,IAAA,EAAQ,UAAA;AAAA,QACR,IAAA,EAAQ,SAAA;AAAA,QACR,OAAA,EAAW,KAAA;AAAA,QACX,YAAA,EAAgB;AAAA,OAClB;AAAA,MACA;AAAA,QACE,IAAA,EAAQ,kBAAA;AAAA,QACR,IAAA,EAAQ,SAAA;AAAA,QACR,OAAA,EAAW,KAAA;AAAA,QACX,YAAA,EAAgB;AAAA,OAClB;AAAA,MACA;AAAA,QACE,IAAA,EAAQ,WAAA;AAAA,QACR,IAAA,EAAQ,SAAA;AAAA,QACR,OAAA,EAAW,KAAA;AAAA,QACX,YAAA,EAAgB;AAAA;AAClB,KACF;AAAA,IACA,SAAA,EAAa;AAAA,GACf;AAAA,EACA;AAAA,IACE,IAAA,EAAQ,OAAA;AAAA,IACR,IAAA,EAAQ,eAAA;AAAA,IACR,MAAA,EAAU;AAAA,MACR;AAAA,QACE,IAAA,EAAQ,UAAA;AAAA,QACR,IAAA,EAAQ,SAAA;AAAA,QACR,OAAA,EAAW,IAAA;AAAA,QACX,YAAA,EAAgB;AAAA,OAClB;AAAA,MACA;AAAA,QACE,IAAA,EAAQ,WAAA;AAAA,QACR,IAAA,EAAQ,SAAA;AAAA,QACR,OAAA,EAAW,IAAA;AAAA,QACX,YAAA,EAAgB;AAAA,OAClB;AAAA,MACA;AAAA,QACE,IAAA,EAAQ,QAAA;AAAA,QACR,IAAA,EAAQ,SAAA;AAAA,QACR,OAAA,EAAW,IAAA;AAAA,QACX,YAAA,EAAgB;AAAA,OAClB;AAAA,MACA;AAAA,QACE,IAAA,EAAQ,WAAA;AAAA,QACR,IAAA,EAAQ,SAAA;AAAA,QACR,OAAA,EAAW,KAAA;AAAA,QACX,YAAA,EAAgB;AAAA,OAClB;AAAA,MACA;AAAA,QACE,IAAA,EAAQ,UAAA;AAAA,QACR,IAAA,EAAQ,SAAA;AAAA,QACR,OAAA,EAAW,KAAA;AAAA,QACX,YAAA,EAAgB;AAAA,OAClB;AAAA,MACA;AAAA,QACE,IAAA,EAAQ,kBAAA;AAAA,QACR,IAAA,EAAQ,SAAA;AAAA,QACR,OAAA,EAAW,KAAA;AAAA,QACX,YAAA,EAAgB;AAAA,OAClB;AAAA,MACA;AAAA,QACE,IAAA,EAAQ,WAAA;AAAA,QACR,IAAA,EAAQ,SAAA;AAAA,QACR,OAAA,EAAW,KAAA;AAAA,QACX,YAAA,EAAgB;AAAA;AAClB,KACF;AAAA,IACA,SAAA,EAAa;AAAA,GACf;AAAA,EACA;AAAA,IACE,IAAA,EAAQ,OAAA;AAAA,IACR,IAAA,EAAQ,eAAA;AAAA,IACR,QAAU;AAAC,GACb;AAAA,EACA;AAAA,IACE,IAAA,EAAQ,OAAA;AAAA,IACR,IAAA,EAAQ,iBAAA;AAAA,IACR,QAAU;AAAC,GACb;AAAA,EACA;AAAA,IACE,IAAA,EAAQ,OAAA;AAAA,IACR,IAAA,EAAQ,cAAA;AAAA,IACR,QAAU;AAAC,GACb;AAAA,EACA;AAAA,IACE,IAAA,EAAQ,OAAA;AAAA,IACR,IAAA,EAAQ,gBAAA;AAAA,IACR,QAAU;AAAC,GACb;AAAA,EACA;AAAA,IACE,IAAA,EAAQ,OAAA;AAAA,IACR,IAAA,EAAQ,gBAAA;AAAA,IACR,QAAU;AAAC,GACb;AAAA,EACA;AAAA,IACE,IAAA,EAAQ,OAAA;AAAA,IACR,IAAA,EAAQ,eAAA;AAAA,IACR,QAAU;AAAC,GACb;AAAA,EACA;AAAA,IACE,IAAA,EAAQ,OAAA;AAAA,IACR,IAAA,EAAQ,eAAA;AAAA,IACR,QAAU;AAAC,GACb;AAAA,EACA;AAAA,IACE,IAAA,EAAQ,OAAA;AAAA,IACR,IAAA,EAAQ,gBAAA;AAAA,IACR,QAAU;AAAC;AAEf;;;AC/dA,IAAA,sBAAA,GAAA;AAAA,EACE;AAAA,IACE,IAAA,EAAQ,UAAA;AAAA,IACR,IAAA,EAAQ,gBAAA;AAAA,IACR,MAAA,EAAU;AAAA,MACR;AAAA,QACE,IAAA,EAAQ,UAAA;AAAA,QACR,IAAA,EAAQ,SAAA;AAAA,QACR,YAAA,EAAgB;AAAA;AAClB,KACF;AAAA,IACA,OAAA,EAAW;AAAA,MACT;AAAA,QACE,IAAA,EAAQ,EAAA;AAAA,QACR,IAAA,EAAQ,OAAA;AAAA,QACR,YAAA,EAAgB,qBAAA;AAAA,QAChB,UAAA,EAAc;AAAA,UACZ;AAAA,YACE,IAAA,EAAQ,gBAAA;AAAA,YACR,IAAA,EAAQ,MAAA;AAAA,YACR,YAAA,EAAgB;AAAA,WAClB;AAAA,UACA;AAAA,YACE,IAAA,EAAQ,eAAA;AAAA,YACR,IAAA,EAAQ,MAAA;AAAA,YACR,YAAA,EAAgB;AAAA,WAClB;AAAA,UACA;AAAA,YACE,IAAA,EAAQ,cAAA;AAAA,YACR,IAAA,EAAQ,MAAA;AAAA,YACR,YAAA,EAAgB;AAAA,WAClB;AAAA,UACA;AAAA,YACE,IAAA,EAAQ,eAAA;AAAA,YACR,IAAA,EAAQ,MAAA;AAAA,YACR,YAAA,EAAgB;AAAA,WAClB;AAAA,UACA;AAAA,YACE,IAAA,EAAQ,cAAA;AAAA,YACR,IAAA,EAAQ,MAAA;AAAA,YACR,YAAA,EAAgB;AAAA,WAClB;AAAA,UACA;AAAA,YACE,IAAA,EAAQ,YAAA;AAAA,YACR,IAAA,EAAQ,SAAA;AAAA,YACR,YAAA,EAAgB;AAAA,WAClB;AAAA,UACA;AAAA,YACE,IAAA,EAAQ,YAAA;AAAA,YACR,IAAA,EAAQ,SAAA;AAAA,YACR,YAAA,EAAgB;AAAA,WAClB;AAAA,UACA;AAAA,YACE,IAAA,EAAQ,WAAA;AAAA,YACR,IAAA,EAAQ,SAAA;AAAA,YACR,YAAA,EAAgB;AAAA,WAClB;AAAA,UACA;AAAA,YACE,IAAA,EAAQ,WAAA;AAAA,YACR,IAAA,EAAQ,SAAA;AAAA,YACR,YAAA,EAAgB;AAAA,WAClB;AAAA,UACA;AAAA,YACE,IAAA,EAAQ,mBAAA;AAAA,YACR,IAAA,EAAQ,MAAA;AAAA,YACR,YAAA,EAAgB;AAAA,WAClB;AAAA,UACA;AAAA,YACE,IAAA,EAAQ,mBAAA;AAAA,YACR,IAAA,EAAQ,MAAA;AAAA,YACR,YAAA,EAAgB;AAAA,WAClB;AAAA,UACA;AAAA,YACE,IAAA,EAAQ,kBAAA;AAAA,YACR,IAAA,EAAQ,MAAA;AAAA,YACR,YAAA,EAAgB;AAAA,WAClB;AAAA,UACA;AAAA,YACE,IAAA,EAAQ,kBAAA;AAAA,YACR,IAAA,EAAQ,MAAA;AAAA,YACR,YAAA,EAAgB;AAAA;AAClB;AACF;AACF,KACF;AAAA,IACA,eAAA,EAAmB;AAAA,GACrB;AAAA,EACA;AAAA,IACE,IAAA,EAAQ,UAAA;AAAA,IACR,IAAA,EAAQ,SAAA;AAAA,IACR,MAAA,EAAU;AAAA,MACR;AAAA,QACE,IAAA,EAAQ,QAAA;AAAA,QACR,IAAA,EAAQ,SAAA;AAAA,QACR,YAAA,EAAgB;AAAA;AAClB,KACF;AAAA,IACA,OAAA,EAAW;AAAA,MACT;AAAA,QACE,IAAA,EAAQ,EAAA;AAAA,QACR,IAAA,EAAQ,OAAA;AAAA,QACR,YAAA,EAAgB,aAAA;AAAA,QAChB,UAAA,EAAc;AAAA,UACZ;AAAA,YACE,IAAA,EAAQ,IAAA;AAAA,YACR,IAAA,EAAQ,SAAA;AAAA,YACR,YAAA,EAAgB;AAAA,WAClB;AAAA,UACA;AAAA,YACE,IAAA,EAAQ,UAAA;AAAA,YACR,IAAA,EAAQ,SAAA;AAAA,YACR,YAAA,EAAgB;AAAA,WAClB;AAAA,UACA;AAAA,YACE,IAAA,EAAQ,MAAA;AAAA,YACR,IAAA,EAAQ,OAAA;AAAA,YACR,YAAA,EAAgB;AAAA,WAClB;AAAA,UACA;AAAA,YACE,IAAA,EAAQ,UAAA;AAAA,YACR,IAAA,EAAQ,SAAA;AAAA,YACR,YAAA,EAAgB;AAAA,WAClB;AAAA,UACA;AAAA,YACE,IAAA,EAAQ,UAAA;AAAA,YACR,IAAA,EAAQ,SAAA;AAAA,YACR,YAAA,EAAgB;AAAA,WAClB;AAAA,UACA;AAAA,YACE,IAAA,EAAQ,KAAA;AAAA,YACR,IAAA,EAAQ,SAAA;AAAA,YACR,YAAA,EAAgB;AAAA,WAClB;AAAA,UACA;AAAA,YACE,IAAA,EAAQ,WAAA;AAAA,YACR,IAAA,EAAQ,SAAA;AAAA,YACR,YAAA,EAAgB;AAAA,WAClB;AAAA,UACA;AAAA,YACE,IAAA,EAAQ,UAAA;AAAA,YACR,IAAA,EAAQ,SAAA;AAAA,YACR,YAAA,EAAgB;AAAA;AAClB;AACF;AACF,KACF;AAAA,IACA,eAAA,EAAmB;AAAA,GACrB;AAAA,EACA;AAAA,IACE,IAAA,EAAQ,UAAA;AAAA,IACR,IAAA,EAAQ,cAAA;AAAA,IACR,MAAA,EAAU;AAAA,MACR;AAAA,QACE,IAAA,EAAQ,UAAA;AAAA,QACR,IAAA,EAAQ,SAAA;AAAA,QACR,YAAA,EAAgB;AAAA,OAClB;AAAA,MACA;AAAA,QACE,IAAA,EAAQ,WAAA;AAAA,QACR,IAAA,EAAQ,SAAA;AAAA,QACR,YAAA,EAAgB;AAAA;AAClB,KACF;AAAA,IACA,OAAA,EAAW;AAAA,MACT;AAAA,QACE,IAAA,EAAQ,WAAA;AAAA,QACR,IAAA,EAAQ,SAAA;AAAA,QACR,YAAA,EAAgB;AAAA,OAClB;AAAA,MACA;AAAA,QACE,IAAA,EAAQ,WAAA;AAAA,QACR,IAAA,EAAQ,MAAA;AAAA,QACR,YAAA,EAAgB;AAAA;AAClB,KACF;AAAA,IACA,eAAA,EAAmB;AAAA,GACrB;AAAA,EACA;AAAA,IACE,IAAA,EAAQ,UAAA;AAAA,IACR,IAAA,EAAQ,eAAA;AAAA,IACR,QAAU,EAAC;AAAA,IACX,OAAA,EAAW;AAAA,MACT;AAAA,QACE,IAAA,EAAQ,EAAA;AAAA,QACR,IAAA,EAAQ,SAAA;AAAA,QACR,YAAA,EAAgB;AAAA;AAClB,KACF;AAAA,IACA,eAAA,EAAmB;AAAA,GACrB;AAAA,EACA;AAAA,IACE,IAAA,EAAQ,UAAA;AAAA,IACR,IAAA,EAAQ,cAAA;AAAA,IACR,MAAA,EAAU;AAAA,MACR;AAAA,QACE,IAAA,EAAQ,UAAA;AAAA,QACR,IAAA,EAAQ,SAAA;AAAA,QACR,YAAA,EAAgB;AAAA,OAClB;AAAA,MACA;AAAA,QACE,IAAA,EAAQ,WAAA;AAAA,QACR,IAAA,EAAQ,SAAA;AAAA,QACR,YAAA,EAAgB;AAAA,OAClB;AAAA,MACA;AAAA,QACE,IAAA,EAAQ,MAAA;AAAA,QACR,IAAA,EAAQ,OAAA;AAAA,QACR,YAAA,EAAgB;AAAA,OAClB;AAAA,MACA;AAAA,QACE,IAAA,EAAQ,MAAA;AAAA,QACR,IAAA,EAAQ,SAAA;AAAA,QACR,YAAA,EAAgB;AAAA;AAClB,KACF;AAAA,IACA,OAAA,EAAW;AAAA,MACT;AAAA,QACE,IAAA,EAAQ,EAAA;AAAA,QACR,IAAA,EAAQ,OAAA;AAAA,QACR,YAAA,EAAgB,kBAAA;AAAA,QAChB,UAAA,EAAc;AAAA,UACZ;AAAA,YACE,IAAA,EAAQ,aAAA;AAAA,YACR,IAAA,EAAQ,SAAA;AAAA,YACR,YAAA,EAAgB;AAAA,WAClB;AAAA,UACA;AAAA,YACE,IAAA,EAAQ,aAAA;AAAA,YACR,IAAA,EAAQ,SAAA;AAAA,YACR,YAAA,EAAgB;AAAA,WAClB;AAAA,UACA;AAAA,YACE,IAAA,EAAQ,OAAA;AAAA,YACR,IAAA,EAAQ,SAAA;AAAA,YACR,YAAA,EAAgB;AAAA,WAClB;AAAA,UACA;AAAA,YACE,IAAA,EAAQ,UAAA;AAAA,YACR,IAAA,EAAQ,SAAA;AAAA,YACR,YAAA,EAAgB;AAAA;AAClB;AACF;AACF,KACF;AAAA,IACA,eAAA,EAAmB;AAAA,GACrB;AAAA,EACA;AAAA,IACE,IAAA,EAAQ,UAAA;AAAA,IACR,IAAA,EAAQ,cAAA;AAAA,IACR,MAAA,EAAU;AAAA,MACR;AAAA,QACE,IAAA,EAAQ,UAAA;AAAA,QACR,IAAA,EAAQ,SAAA;AAAA,QACR,YAAA,EAAgB;AAAA,OAClB;AAAA,MACA;AAAA,QACE,IAAA,EAAQ,WAAA;AAAA,QACR,IAAA,EAAQ,SAAA;AAAA,QACR,YAAA,EAAgB;AAAA,OAClB;AAAA,MACA;AAAA,QACE,IAAA,EAAQ,MAAA;AAAA,QACR,IAAA,EAAQ,OAAA;AAAA,QACR,YAAA,EAAgB;AAAA;AAClB,KACF;AAAA,IACA,OAAA,EAAW;AAAA,MACT;AAAA,QACE,IAAA,EAAQ,EAAA;AAAA,QACR,IAAA,EAAQ,SAAA;AAAA,QACR,YAAA,EAAgB;AAAA;AAClB,KACF;AAAA,IACA,eAAA,EAAmB;AAAA;AAEvB;;;ACnRA,IAAA,wBAAA,GAAA;AAAA,EACE;AAAA,IACE,IAAA,EAAQ,UAAA;AAAA,IACR,IAAA,EAAQ,qBAAA;AAAA,IACR,MAAA,EAAU;AAAA,MACR;AAAA,QACE,IAAA,EAAQ,SAAA;AAAA,QACR,IAAA,EAAQ,SAAA;AAAA,QACR,YAAA,EAAgB;AAAA;AAClB,KACF;AAAA,IACA,SAAW,EAAC;AAAA,IACZ,eAAA,EAAmB;AAAA,GACrB;AAAA,EACA;AAAA,IACE,IAAA,EAAQ,UAAA;AAAA,IACR,IAAA,EAAQ,mBAAA;AAAA,IACR,MAAA,EAAU;AAAA,MACR;AAAA,QACE,IAAA,EAAQ,SAAA;AAAA,QACR,IAAA,EAAQ,SAAA;AAAA,QACR,YAAA,EAAgB;AAAA,OAClB;AAAA,MACA;AAAA,QACE,IAAA,EAAQ,UAAA;AAAA,QACR,IAAA,EAAQ,QAAA;AAAA,QACR,YAAA,EAAgB;AAAA,OAClB;AAAA,MACA;AAAA,QACE,IAAA,EAAQ,aAAA;AAAA,QACR,IAAA,EAAQ,QAAA;AAAA,QACR,YAAA,EAAgB;AAAA,OAClB;AAAA,MACA;AAAA,QACE,IAAA,EAAQ,iBAAA;AAAA,QACR,IAAA,EAAQ,SAAA;AAAA,QACR,YAAA,EAAgB;AAAA,OAClB;AAAA,MACA;AAAA,QACE,IAAA,EAAQ,UAAA;AAAA,QACR,IAAA,EAAQ,SAAA;AAAA,QACR,YAAA,EAAgB;AAAA,OAClB;AAAA,MACA;AAAA,QACE,IAAA,EAAQ,kBAAA;AAAA,QACR,IAAA,EAAQ,SAAA;AAAA,QACR,YAAA,EAAgB;AAAA,OAClB;AAAA,MACA;AAAA,QACE,IAAA,EAAQ,UAAA;AAAA,QACR,IAAA,EAAQ,QAAA;AAAA,QACR,YAAA,EAAgB;AAAA,OAClB;AAAA,MACA;AAAA,QACE,IAAA,EAAQ,MAAA;AAAA,QACR,IAAA,EAAQ,WAAA;AAAA,QACR,YAAA,EAAgB;AAAA;AAClB,KACF;AAAA,IACA,OAAA,EAAW;AAAA,MACT;AAAA,QACE,IAAA,EAAQ,SAAA;AAAA,QACR,IAAA,EAAQ,SAAA;AAAA,QACR,YAAA,EAAgB;AAAA;AAClB,KACF;AAAA,IACA,eAAA,EAAmB;AAAA,GACrB;AAAA,EACA;AAAA,IACE,IAAA,EAAQ,UAAA;AAAA,IACR,IAAA,EAAQ,mBAAA;AAAA,IACR,MAAA,EAAU;AAAA,MACR;AAAA,QACE,IAAA,EAAQ,SAAA;AAAA,QACR,IAAA,EAAQ,SAAA;AAAA,QACR,YAAA,EAAgB;AAAA;AAClB,KACF;AAAA,IACA,OAAA,EAAW;AAAA,MACT;AAAA,QACE,IAAA,EAAQ,EAAA;AAAA,QACR,IAAA,EAAQ,WAAA;AAAA,QACR,YAAA,EAAgB;AAAA;AAClB,KACF;AAAA,IACA,eAAA,EAAmB;AAAA,GACrB;AAAA,EACA;AAAA,IACE,IAAA,EAAQ,UAAA;AAAA,IACR,IAAA,EAAQ,gBAAA;AAAA,IACR,MAAA,EAAU;AAAA,MACR;AAAA,QACE,IAAA,EAAQ,SAAA;AAAA,QACR,IAAA,EAAQ,SAAA;AAAA,QACR,YAAA,EAAgB;AAAA;AAClB,KACF;AAAA,IACA,OAAA,EAAW;AAAA,MACT;AAAA,QACE,IAAA,EAAQ,EAAA;AAAA,QACR,IAAA,EAAQ,OAAA;AAAA,QACR,YAAA,EAAgB,wBAAA;AAAA,QAChB,UAAA,EAAc;AAAA,UACZ;AAAA,YACE,IAAA,EAAQ,SAAA;AAAA,YACR,IAAA,EAAQ,SAAA;AAAA,YACR,YAAA,EAAgB;AAAA,WAClB;AAAA,UACA;AAAA,YACE,IAAA,EAAQ,WAAA;AAAA,YACR,IAAA,EAAQ,WAAA;AAAA,YACR,YAAA,EAAgB;AAAA,WAClB;AAAA,UACA;AAAA,YACE,IAAA,EAAQ,cAAA;AAAA,YACR,IAAA,EAAQ,SAAA;AAAA,YACR,YAAA,EAAgB;AAAA,WAClB;AAAA,UACA;AAAA,YACE,IAAA,EAAQ,UAAA;AAAA,YACR,IAAA,EAAQ,QAAA;AAAA,YACR,YAAA,EAAgB;AAAA,WAClB;AAAA,UACA;AAAA,YACE,IAAA,EAAQ,aAAA;AAAA,YACR,IAAA,EAAQ,QAAA;AAAA,YACR,YAAA,EAAgB;AAAA,WAClB;AAAA,UACA;AAAA,YACE,IAAA,EAAQ,QAAA;AAAA,YACR,IAAA,EAAQ,OAAA;AAAA,YACR,YAAA,EAAgB;AAAA,WAClB;AAAA,UACA;AAAA,YACE,IAAA,EAAQ,WAAA;AAAA,YACR,IAAA,EAAQ,SAAA;AAAA,YACR,YAAA,EAAgB;AAAA,WAClB;AAAA,UACA;AAAA,YACE,IAAA,EAAQ,kBAAA;AAAA,YACR,IAAA,EAAQ,SAAA;AAAA,YACR,YAAA,EAAgB;AAAA,WAClB;AAAA,UACA;AAAA,YACE,IAAA,EAAQ,SAAA;AAAA,YACR,IAAA,EAAQ,SAAA;AAAA,YACR,YAAA,EAAgB;AAAA,WAClB;AAAA,UACA;AAAA,YACE,IAAA,EAAQ,SAAA;AAAA,YACR,IAAA,EAAQ,SAAA;AAAA,YACR,YAAA,EAAgB;AAAA,WAClB;AAAA,UACA;AAAA,YACE,IAAA,EAAQ,iBAAA;AAAA,YACR,IAAA,EAAQ,SAAA;AAAA,YACR,YAAA,EAAgB;AAAA,WAClB;AAAA,UACA;AAAA,YACE,IAAA,EAAQ,UAAA;AAAA,YACR,IAAA,EAAQ,SAAA;AAAA,YACR,YAAA,EAAgB;AAAA,WAClB;AAAA,UACA;AAAA,YACE,IAAA,EAAQ,kBAAA;AAAA,YACR,IAAA,EAAQ,SAAA;AAAA,YACR,YAAA,EAAgB;AAAA,WAClB;AAAA,UACA;AAAA,YACE,IAAA,EAAQ,UAAA;AAAA,YACR,IAAA,EAAQ,QAAA;AAAA,YACR,YAAA,EAAgB;AAAA,WAClB;AAAA,UACA;AAAA,YACE,IAAA,EAAQ,QAAA;AAAA,YACR,IAAA,EAAQ,SAAA;AAAA,YACR,YAAA,EAAgB;AAAA;AAClB;AACF;AACF,KACF;AAAA,IACA,eAAA,EAAmB;AAAA,GACrB;AAAA,EACA;AAAA,IACE,IAAA,EAAQ,UAAA;AAAA,IACR,IAAA,EAAQ,oBAAA;AAAA,IACR,MAAA,EAAU;AAAA,MACR;AAAA,QACE,IAAA,EAAQ,UAAA;AAAA,QACR,IAAA,EAAQ,SAAA;AAAA,QACR,YAAA,EAAgB;AAAA;AAClB,KACF;AAAA,IACA,OAAA,EAAW;AAAA,MACT;AAAA,QACE,IAAA,EAAQ,EAAA;AAAA,QACR,IAAA,EAAQ,OAAA;AAAA,QACR,YAAA,EAAgB,wBAAA;AAAA,QAChB,UAAA,EAAc;AAAA,UACZ;AAAA,YACE,IAAA,EAAQ,eAAA;AAAA,YACR,IAAA,EAAQ,MAAA;AAAA,YACR,YAAA,EAAgB;AAAA,WAClB;AAAA,UACA;AAAA,YACE,IAAA,EAAQ,YAAA;AAAA,YACR,IAAA,EAAQ,QAAA;AAAA,YACR,YAAA,EAAgB;AAAA;AAClB;AACF;AACF,KACF;AAAA,IACA,eAAA,EAAmB;AAAA,GACrB;AAAA,EACA;AAAA,IACE,IAAA,EAAQ,UAAA;AAAA,IACR,IAAA,EAAQ,gBAAA;AAAA,IACR,QAAU,EAAC;AAAA,IACX,OAAA,EAAW;AAAA,MACT;AAAA,QACE,IAAA,EAAQ,EAAA;AAAA,QACR,IAAA,EAAQ,SAAA;AAAA,QACR,YAAA,EAAgB;AAAA;AAClB,KACF;AAAA,IACA,eAAA,EAAmB;AAAA,GACrB;AAAA,EACA;AAAA,IACE,IAAA,EAAQ,OAAA;AAAA,IACR,IAAA,EAAQ,4BAAA;AAAA,IACR,MAAA,EAAU;AAAA,MACR;AAAA,QACE,IAAA,EAAQ,SAAA;AAAA,QACR,IAAA,EAAQ,SAAA;AAAA,QACR,OAAA,EAAW,IAAA;AAAA,QACX,YAAA,EAAgB;AAAA,OAClB;AAAA,MACA;AAAA,QACE,IAAA,EAAQ,OAAA;AAAA,QACR,IAAA,EAAQ,SAAA;AAAA,QACR,OAAA,EAAW,IAAA;AAAA,QACX,YAAA,EAAgB;AAAA,OAClB;AAAA,MACA;AAAA,QACE,IAAA,EAAQ,eAAA;AAAA,QACR,IAAA,EAAQ,SAAA;AAAA,QACR,OAAA,EAAW,KAAA;AAAA,QACX,YAAA,EAAgB;AAAA,OAClB;AAAA,MACA;AAAA,QACE,IAAA,EAAQ,YAAA;AAAA,QACR,IAAA,EAAQ,SAAA;AAAA,QACR,OAAA,EAAW,KAAA;AAAA,QACX,YAAA,EAAgB;AAAA;AAClB,KACF;AAAA,IACA,SAAA,EAAa;AAAA,GACf;AAAA,EACA;AAAA,IACE,IAAA,EAAQ,OAAA;AAAA,IACR,IAAA,EAAQ,sBAAA;AAAA,IACR,MAAA,EAAU;AAAA,MACR;AAAA,QACE,IAAA,EAAQ,SAAA;AAAA,QACR,IAAA,EAAQ,SAAA;AAAA,QACR,OAAA,EAAW,IAAA;AAAA,QACX,YAAA,EAAgB;AAAA,OAClB;AAAA,MACA;AAAA,QACE,IAAA,EAAQ,aAAA;AAAA,QACR,IAAA,EAAQ,SAAA;AAAA,QACR,OAAA,EAAW,KAAA;AAAA,QACX,YAAA,EAAgB;AAAA,OAClB;AAAA,MACA;AAAA,QACE,IAAA,EAAQ,WAAA;AAAA,QACR,IAAA,EAAQ,SAAA;AAAA,QACR,OAAA,EAAW,KAAA;AAAA,QACX,YAAA,EAAgB;AAAA;AAClB,KACF;AAAA,IACA,SAAA,EAAa;AAAA,GACf;AAAA,EACA;AAAA,IACE,IAAA,EAAQ,OAAA;AAAA,IACR,IAAA,EAAQ,oBAAA;AAAA,IACR,MAAA,EAAU;AAAA,MACR;AAAA,QACE,IAAA,EAAQ,SAAA;AAAA,QACR,IAAA,EAAQ,SAAA;AAAA,QACR,OAAA,EAAW,IAAA;AAAA,QACX,YAAA,EAAgB;AAAA,OAClB;AAAA,MACA;AAAA,QACE,IAAA,EAAQ,SAAA;AAAA,QACR,IAAA,EAAQ,SAAA;AAAA,QACR,OAAA,EAAW,IAAA;AAAA,QACX,YAAA,EAAgB;AAAA,OAClB;AAAA,MACA;AAAA,QACE,IAAA,EAAQ,SAAA;AAAA,QACR,IAAA,EAAQ,SAAA;AAAA,QACR,OAAA,EAAW,IAAA;AAAA,QACX,YAAA,EAAgB;AAAA,OAClB;AAAA,MACA;AAAA,QACE,IAAA,EAAQ,UAAA;AAAA,QACR,IAAA,EAAQ,QAAA;AAAA,QACR,OAAA,EAAW,KAAA;AAAA,QACX,YAAA,EAAgB;AAAA,OAClB;AAAA,MACA;AAAA,QACE,IAAA,EAAQ,WAAA;AAAA,QACR,IAAA,EAAQ,SAAA;AAAA,QACR,OAAA,EAAW,KAAA;AAAA,QACX,YAAA,EAAgB;AAAA,OAClB;AAAA,MACA;AAAA,QACE,IAAA,EAAQ,MAAA;AAAA,QACR,IAAA,EAAQ,WAAA;AAAA,QACR,OAAA,EAAW,KAAA;AAAA,QACX,YAAA,EAAgB;AAAA,OAClB;AAAA,MACA;AAAA,QACE,IAAA,EAAQ,QAAA;AAAA,QACR,IAAA,EAAQ,SAAA;AAAA,QACR,OAAA,EAAW,KAAA;AAAA,QACX,YAAA,EAAgB;AAAA;AAClB,KACF;AAAA,IACA,SAAA,EAAa;AAAA,GACf;AAAA,EACA;AAAA,IACE,IAAA,EAAQ,OAAA;AAAA,IACR,IAAA,EAAQ,0BAAA;AAAA,IACR,QAAU;AAAC,GACb;AAAA,EACA;AAAA,IACE,IAAA,EAAQ,OAAA;AAAA,IACR,IAAA,EAAQ,sBAAA;AAAA,IACR,QAAU;AAAC,GACb;AAAA,EACA;AAAA,IACE,IAAA,EAAQ,OAAA;AAAA,IACR,IAAA,EAAQ,eAAA;AAAA,IACR,QAAU;AAAC,GACb;AAAA,EACA;AAAA,IACE,IAAA,EAAQ,OAAA;AAAA,IACR,IAAA,EAAQ,qBAAA;AAAA,IACR,QAAU;AAAC,GACb;AAAA,EACA;AAAA,IACE,IAAA,EAAQ,OAAA;AAAA,IACR,IAAA,EAAQ,iBAAA;AAAA,IACR,QAAU;AAAC,GACb;AAAA,EACA;AAAA,IACE,IAAA,EAAQ,OAAA;AAAA,IACR,IAAA,EAAQ,iBAAA;AAAA,IACR,QAAU;AAAC,GACb;AAAA,EACA;AAAA,IACE,IAAA,EAAQ,OAAA;AAAA,IACR,IAAA,EAAQ,qBAAA;AAAA,IACR,QAAU;AAAC,GACb;AAAA,EACA;AAAA,IACE,IAAA,EAAQ,OAAA;AAAA,IACR,IAAA,EAAQ,iBAAA;AAAA,IACR,QAAU;AAAC,GACb;AAAA,EACA;AAAA,IACE,IAAA,EAAQ,OAAA;AAAA,IACR,IAAA,EAAQ,gBAAA;AAAA,IACR,QAAU;AAAC,GACb;AAAA,EACA;AAAA,IACE,IAAA,EAAQ,OAAA;AAAA,IACR,IAAA,EAAQ,aAAA;AAAA,IACR,QAAU;AAAC,GACb;AAAA,EACA;AAAA,IACE,IAAA,EAAQ,OAAA;AAAA,IACR,IAAA,EAAQ,oBAAA;AAAA,IACR,QAAU;AAAC,GACb;AAAA,EACA;AAAA,IACE,IAAA,EAAQ,OAAA;AAAA,IACR,IAAA,EAAQ,eAAA;AAAA,IACR,QAAU;AAAC,GACb;AAAA,EACA;AAAA,IACE,IAAA,EAAQ,OAAA;AAAA,IACR,IAAA,EAAQ,eAAA;AAAA,IACR,QAAU;AAAC,GACb;AAAA,EACA;AAAA,IACE,IAAA,EAAQ,OAAA;AAAA,IACR,IAAA,EAAQ,gBAAA;AAAA,IACR,QAAU;AAAC;AAEf;;;AClZA,IAAA,yBAAA,GAAA;AAAA,EACE;AAAA,IACE,IAAA,EAAQ,UAAA;AAAA,IACR,IAAA,EAAQ,kBAAA;AAAA,IACR,MAAA,EAAU;AAAA,MACR;AAAA,QACE,IAAA,EAAQ,UAAA;AAAA,QACR,IAAA,EAAQ,SAAA;AAAA,QACR,YAAA,EAAgB;AAAA,OAClB;AAAA,MACA;AAAA,QACE,IAAA,EAAQ,WAAA;AAAA,QACR,IAAA,EAAQ,SAAA;AAAA,QACR,YAAA,EAAgB;AAAA,OAClB;AAAA,MACA;AAAA,QACE,IAAA,EAAQ,kBAAA;AAAA,QACR,IAAA,EAAQ,SAAA;AAAA,QACR,YAAA,EAAgB;AAAA,OAClB;AAAA,MACA;AAAA,QACE,IAAA,EAAQ,cAAA;AAAA,QACR,IAAA,EAAQ,SAAA;AAAA,QACR,YAAA,EAAgB;AAAA,OAClB;AAAA,MACA;AAAA,QACE,IAAA,EAAQ,WAAA;AAAA,QACR,IAAA,EAAQ,OAAA;AAAA,QACR,YAAA,EAAgB;AAAA;AAClB,KACF;AAAA,IACA,OAAA,EAAW;AAAA,MACT;AAAA,QACE,IAAA,EAAQ,QAAA;AAAA,QACR,IAAA,EAAQ,OAAA;AAAA,QACR,YAAA,EAAgB,wBAAA;AAAA,QAChB,UAAA,EAAc;AAAA,UACZ;AAAA,YACE,IAAA,EAAQ,gBAAA;AAAA,YACR,IAAA,EAAQ,SAAA;AAAA,YACR,YAAA,EAAgB;AAAA,WAClB;AAAA,UACA;AAAA,YACE,IAAA,EAAQ,UAAA;AAAA,YACR,IAAA,EAAQ,SAAA;AAAA,YACR,YAAA,EAAgB;AAAA,WAClB;AAAA,UACA;AAAA,YACE,IAAA,EAAQ,iBAAA;AAAA,YACR,IAAA,EAAQ,SAAA;AAAA,YACR,YAAA,EAAgB;AAAA,WAClB;AAAA,UACA;AAAA,YACE,IAAA,EAAQ,kBAAA;AAAA,YACR,IAAA,EAAQ,SAAA;AAAA,YACR,YAAA,EAAgB;AAAA;AAClB;AACF;AACF,KACF;AAAA,IACA,eAAA,EAAmB;AAAA,GACrB;AAAA,EACA;AAAA,IACE,IAAA,EAAQ,UAAA;AAAA,IACR,IAAA,EAAQ,iBAAA;AAAA,IACR,MAAA,EAAU;AAAA,MACR;AAAA,QACE,IAAA,EAAQ,UAAA;AAAA,QACR,IAAA,EAAQ,SAAA;AAAA,QACR,YAAA,EAAgB;AAAA,OAClB;AAAA,MACA;AAAA,QACE,IAAA,EAAQ,WAAA;AAAA,QACR,IAAA,EAAQ,SAAA;AAAA,QACR,YAAA,EAAgB;AAAA,OAClB;AAAA,MACA;AAAA,QACE,IAAA,EAAQ,aAAA;AAAA,QACR,IAAA,EAAQ,SAAA;AAAA,QACR,YAAA,EAAgB;AAAA,OAClB;AAAA,MACA;AAAA,QACE,IAAA,EAAQ,cAAA;AAAA,QACR,IAAA,EAAQ,SAAA;AAAA,QACR,YAAA,EAAgB;AAAA,OAClB;AAAA,MACA;AAAA,QACE,IAAA,EAAQ,WAAA;AAAA,QACR,IAAA,EAAQ,OAAA;AAAA,QACR,YAAA,EAAgB;AAAA;AAClB,KACF;AAAA,IACA,OAAA,EAAW;AAAA,MACT;AAAA,QACE,IAAA,EAAQ,QAAA;AAAA,QACR,IAAA,EAAQ,OAAA;AAAA,QACR,YAAA,EAAgB,yBAAA;AAAA,QAChB,UAAA,EAAc;AAAA,UACZ;AAAA,YACE,IAAA,EAAQ,YAAA;AAAA,YACR,IAAA,EAAQ,SAAA;AAAA,YACR,YAAA,EAAgB;AAAA,WAClB;AAAA,UACA;AAAA,YACE,IAAA,EAAQ,UAAA;AAAA,YACR,IAAA,EAAQ,SAAA;AAAA,YACR,YAAA,EAAgB;AAAA,WAClB;AAAA,UACA;AAAA,YACE,IAAA,EAAQ,oBAAA;AAAA,YACR,IAAA,EAAQ,SAAA;AAAA,YACR,YAAA,EAAgB;AAAA,WAClB;AAAA,UACA;AAAA,YACE,IAAA,EAAQ,cAAA;AAAA,YACR,IAAA,EAAQ,SAAA;AAAA,YACR,YAAA,EAAgB;AAAA;AAClB;AACF;AACF,KACF;AAAA,IACA,eAAA,EAAmB;AAAA,GACrB;AAAA,EACA;AAAA,IACE,IAAA,EAAQ,OAAA;AAAA,IACR,IAAA,EAAQ,iBAAA;AAAA,IACR,MAAA,EAAU;AAAA,MACR;AAAA,QACE,IAAA,EAAQ,UAAA;AAAA,QACR,IAAA,EAAQ,SAAA;AAAA,QACR,OAAA,EAAW,IAAA;AAAA,QACX,YAAA,EAAgB;AAAA,OAClB;AAAA,MACA;AAAA,QACE,IAAA,EAAQ,QAAA;AAAA,QACR,IAAA,EAAQ,SAAA;AAAA,QACR,OAAA,EAAW,IAAA;AAAA,QACX,YAAA,EAAgB;AAAA,OAClB;AAAA,MACA;AAAA,QACE,IAAA,EAAQ,aAAA;AAAA,QACR,IAAA,EAAQ,SAAA;AAAA,QACR,OAAA,EAAW,KAAA;AAAA,QACX,YAAA,EAAgB;AAAA,OAClB;AAAA,MACA;AAAA,QACE,IAAA,EAAQ,aAAA;AAAA,QACR,IAAA,EAAQ,SAAA;AAAA,QACR,OAAA,EAAW,KAAA;AAAA,QACX,YAAA,EAAgB;AAAA,OAClB;AAAA,MACA;AAAA,QACE,IAAA,EAAQ,YAAA;AAAA,QACR,IAAA,EAAQ,SAAA;AAAA,QACR,OAAA,EAAW,KAAA;AAAA,QACX,YAAA,EAAgB;AAAA,OAClB;AAAA,MACA;AAAA,QACE,IAAA,EAAQ,aAAA;AAAA,QACR,IAAA,EAAQ,SAAA;AAAA,QACR,OAAA,EAAW,KAAA;AAAA,QACX,YAAA,EAAgB;AAAA,OAClB;AAAA,MACA;AAAA,QACE,IAAA,EAAQ,UAAA;AAAA,QACR,IAAA,EAAQ,SAAA;AAAA,QACR,OAAA,EAAW,KAAA;AAAA,QACX,YAAA,EAAgB;AAAA;AAClB,KACF;AAAA,IACA,SAAA,EAAa;AAAA,GACf;AAAA,EACA;AAAA,IACE,IAAA,EAAQ,OAAA;AAAA,IACR,IAAA,EAAQ,qBAAA;AAAA,IACR,MAAA,EAAU;AAAA,MACR;AAAA,QACE,IAAA,EAAQ,OAAA;AAAA,QACR,IAAA,EAAQ,SAAA;AAAA,QACR,OAAA,EAAW,IAAA;AAAA,QACX,YAAA,EAAgB;AAAA,OAClB;AAAA,MACA;AAAA,QACE,IAAA,EAAQ,UAAA;AAAA,QACR,IAAA,EAAQ,SAAA;AAAA,QACR,OAAA,EAAW,IAAA;AAAA,QACX,YAAA,EAAgB;AAAA,OAClB;AAAA,MACA;AAAA,QACE,IAAA,EAAQ,WAAA;AAAA,QACR,IAAA,EAAQ,SAAA;AAAA,QACR,OAAA,EAAW,KAAA;AAAA,QACX,YAAA,EAAgB;AAAA,OAClB;AAAA,MACA;AAAA,QACE,IAAA,EAAQ,iBAAA;AAAA,QACR,IAAA,EAAQ,SAAA;AAAA,QACR,OAAA,EAAW,KAAA;AAAA,QACX,YAAA,EAAgB;AAAA,OAClB;AAAA,MACA;AAAA,QACE,IAAA,EAAQ,gBAAA;AAAA,QACR,IAAA,EAAQ,SAAA;AAAA,QACR,OAAA,EAAW,KAAA;AAAA,QACX,YAAA,EAAgB;AAAA,OAClB;AAAA,MACA;AAAA,QACE,IAAA,EAAQ,UAAA;AAAA,QACR,IAAA,EAAQ,SAAA;AAAA,QACR,OAAA,EAAW,KAAA;AAAA,QACX,YAAA,EAAgB;AAAA,OAClB;AAAA,MACA;AAAA,QACE,IAAA,EAAQ,kBAAA;AAAA,QACR,IAAA,EAAQ,SAAA;AAAA,QACR,OAAA,EAAW,KAAA;AAAA,QACX,YAAA,EAAgB;AAAA;AAClB,KACF;AAAA,IACA,SAAA,EAAa;AAAA,GACf;AAAA,EACA;AAAA,IACE,IAAA,EAAQ,OAAA;AAAA,IACR,IAAA,EAAQ,oBAAA;AAAA,IACR,MAAA,EAAU;AAAA,MACR;AAAA,QACE,IAAA,EAAQ,QAAA;AAAA,QACR,IAAA,EAAQ,SAAA;AAAA,QACR,OAAA,EAAW,IAAA;AAAA,QACX,YAAA,EAAgB;AAAA,OAClB;AAAA,MACA;AAAA,QACE,IAAA,EAAQ,UAAA;AAAA,QACR,IAAA,EAAQ,SAAA;AAAA,QACR,OAAA,EAAW,IAAA;AAAA,QACX,YAAA,EAAgB;AAAA,OAClB;AAAA,MACA;AAAA,QACE,IAAA,EAAQ,WAAA;AAAA,QACR,IAAA,EAAQ,SAAA;AAAA,QACR,OAAA,EAAW,KAAA;AAAA,QACX,YAAA,EAAgB;AAAA,OAClB;AAAA,MACA;AAAA,QACE,IAAA,EAAQ,YAAA;AAAA,QACR,IAAA,EAAQ,SAAA;AAAA,QACR,OAAA,EAAW,KAAA;AAAA,QACX,YAAA,EAAgB;AAAA,OAClB;AAAA,MACA;AAAA,QACE,IAAA,EAAQ,oBAAA;AAAA,QACR,IAAA,EAAQ,SAAA;AAAA,QACR,OAAA,EAAW,KAAA;AAAA,QACX,YAAA,EAAgB;AAAA,OAClB;AAAA,MACA;AAAA,QACE,IAAA,EAAQ,UAAA;AAAA,QACR,IAAA,EAAQ,SAAA;AAAA,QACR,OAAA,EAAW,KAAA;AAAA,QACX,YAAA,EAAgB;AAAA,OAClB;AAAA,MACA;AAAA,QACE,IAAA,EAAQ,cAAA;AAAA,QACR,IAAA,EAAQ,SAAA;AAAA,QACR,OAAA,EAAW,KAAA;AAAA,QACX,YAAA,EAAgB;AAAA;AAClB,KACF;AAAA,IACA,SAAA,EAAa;AAAA,GACf;AAAA,EACA;AAAA,IACE,IAAA,EAAQ,OAAA;AAAA,IACR,IAAA,EAAQ,cAAA;AAAA,IACR,MAAA,EAAU;AAAA,MACR;AAAA,QACE,IAAA,EAAQ,SAAA;AAAA,QACR,IAAA,EAAQ,SAAA;AAAA,QACR,OAAA,EAAW,IAAA;AAAA,QACX,YAAA,EAAgB;AAAA;AAClB,KACF;AAAA,IACA,SAAA,EAAa;AAAA,GACf;AAAA,EACA;AAAA,IACE,IAAA,EAAQ,OAAA;AAAA,IACR,IAAA,EAAQ,cAAA;AAAA,IACR,MAAA,EAAU;AAAA,MACR;AAAA,QACE,IAAA,EAAQ,SAAA;AAAA,QACR,IAAA,EAAQ,SAAA;AAAA,QACR,OAAA,EAAW,IAAA;AAAA,QACX,YAAA,EAAgB;AAAA,OAClB;AAAA,MACA;AAAA,QACE,IAAA,EAAQ,OAAA;AAAA,QACR,IAAA,EAAQ,SAAA;AAAA,QACR,OAAA,EAAW,IAAA;AAAA,QACX,YAAA,EAAgB;AAAA,OAClB;AAAA,MACA;AAAA,QACE,IAAA,EAAQ,KAAA;AAAA,QACR,IAAA,EAAQ,SAAA;AAAA,QACR,OAAA,EAAW,KAAA;AAAA,QACX,YAAA,EAAgB;AAAA;AAClB,KACF;AAAA,IACA,SAAA,EAAa;AAAA,GACf;AAAA,EACA;AAAA,IACE,IAAA,EAAQ,OAAA;AAAA,IACR,IAAA,EAAQ,kBAAA;AAAA,IACR,MAAA,EAAU;AAAA,MACR;AAAA,QACE,IAAA,EAAQ,UAAA;AAAA,QACR,IAAA,EAAQ,SAAA;AAAA,QACR,OAAA,EAAW,IAAA;AAAA,QACX,YAAA,EAAgB;AAAA,OAClB;AAAA,MACA;AAAA,QACE,IAAA,EAAQ,WAAA;AAAA,QACR,IAAA,EAAQ,SAAA;AAAA,QACR,OAAA,EAAW,IAAA;AAAA,QACX,YAAA,EAAgB;AAAA,OAClB;AAAA,MACA;AAAA,QACE,IAAA,EAAQ,MAAA;AAAA,QACR,IAAA,EAAQ,OAAA;AAAA,QACR,OAAA,EAAW,KAAA;AAAA,QACX,YAAA,EAAgB;AAAA,OAClB;AAAA,MACA;AAAA,QACE,IAAA,EAAQ,UAAA;AAAA,QACR,IAAA,EAAQ,SAAA;AAAA,QACR,OAAA,EAAW,KAAA;AAAA,QACX,YAAA,EAAgB;AAAA;AAClB,KACF;AAAA,IACA,SAAA,EAAa;AAAA,GACf;AAAA,EACA;AAAA,IACE,IAAA,EAAQ,OAAA;AAAA,IACR,IAAA,EAAQ,6BAAA;AAAA,IACR,QAAU;AAAC,GACb;AAAA,EACA;AAAA,IACE,IAAA,EAAQ,OAAA;AAAA,IACR,IAAA,EAAQ,iBAAA;AAAA,IACR,QAAU;AAAC,GACb;AAAA,EACA;AAAA,IACE,IAAA,EAAQ,OAAA;AAAA,IACR,IAAA,EAAQ,iBAAA;AAAA,IACR,QAAU;AAAC,GACb;AAAA,EACA;AAAA,IACE,IAAA,EAAQ,OAAA;AAAA,IACR,IAAA,EAAQ,gBAAA;AAAA,IACR,QAAU;AAAC,GACb;AAAA,EACA;AAAA,IACE,IAAA,EAAQ,OAAA;AAAA,IACR,IAAA,EAAQ,uBAAA;AAAA,IACR,QAAU;AAAC,GACb;AAAA,EACA;AAAA,IACE,IAAA,EAAQ,OAAA;AAAA,IACR,IAAA,EAAQ,yBAAA;AAAA,IACR,QAAU;AAAC,GACb;AAAA,EACA;AAAA,IACE,IAAA,EAAQ,OAAA;AAAA,IACR,IAAA,EAAQ,iBAAA;AAAA,IACR,QAAU;AAAC,GACb;AAAA,EACA;AAAA,IACE,IAAA,EAAQ,OAAA;AAAA,IACR,IAAA,EAAQ,cAAA;AAAA,IACR,QAAU;AAAC,GACb;AAAA,EACA;AAAA,IACE,IAAA,EAAQ,OAAA;AAAA,IACR,IAAA,EAAQ,sBAAA;AAAA,IACR,QAAU;AAAC,GACb;AAAA,EACA;AAAA,IACE,IAAA,EAAQ,OAAA;AAAA,IACR,IAAA,EAAQ,gBAAA;AAAA,IACR,QAAU;AAAC,GACb;AAAA,EACA;AAAA,IACE,IAAA,EAAQ,OAAA;AAAA,IACR,IAAA,EAAQ,qBAAA;AAAA,IACR,QAAU;AAAC,GACb;AAAA,EACA;AAAA,IACE,IAAA,EAAQ,OAAA;AAAA,IACR,IAAA,EAAQ,gBAAA;AAAA,IACR,QAAU;AAAC,GACb;AAAA,EACA;AAAA,IACE,IAAA,EAAQ,OAAA;AAAA,IACR,IAAA,EAAQ,oBAAA;AAAA,IACR,QAAU;AAAC,GACb;AAAA,EACA;AAAA,IACE,IAAA,EAAQ,OAAA;AAAA,IACR,IAAA,EAAQ,eAAA;AAAA,IACR,QAAU;AAAC,GACb;AAAA,EACA;AAAA,IACE,IAAA,EAAQ,OAAA;AAAA,IACR,IAAA,EAAQ,eAAA;AAAA,IACR,QAAU;AAAC,GACb;AAAA,EACA;AAAA,IACE,IAAA,EAAQ,OAAA;AAAA,IACR,IAAA,EAAQ,gBAAA;AAAA,IACR,QAAU;AAAC,GACb;AAAA,EACA;AAAA,IACE,IAAA,EAAQ,OAAA;AAAA,IACR,IAAA,EAAQ,sBAAA;AAAA,IACR,QAAU;AAAC,GACb;AAAA,EACA;AAAA,IACE,IAAA,EAAQ,OAAA;AAAA,IACR,IAAA,EAAQ,iBAAA;AAAA,IACR,QAAU;AAAC;AAEf;;;AC7aA,IAAA,uBAAA,GAAA;AAAA,EACE;AAAA,IACE,IAAA,EAAQ,UAAA;AAAA,IACR,IAAA,EAAQ,qBAAA;AAAA,IACR,MAAA,EAAU;AAAA,MACR;AAAA,QACE,IAAA,EAAQ,YAAA;AAAA,QACR,IAAA,EAAQ,SAAA;AAAA,QACR,YAAA,EAAgB;AAAA,OAClB;AAAA,MACA;AAAA,QACE,IAAA,EAAQ,SAAA;AAAA,QACR,IAAA,EAAQ,QAAA;AAAA,QACR,YAAA,EAAgB;AAAA;AAClB,KACF;AAAA,IACA,OAAA,EAAW;AAAA,MACT;AAAA,QACE,IAAA,EAAQ,aAAA;AAAA,QACR,IAAA,EAAQ,SAAA;AAAA,QACR,YAAA,EAAgB;AAAA;AAClB,KACF;AAAA,IACA,eAAA,EAAmB;AAAA,GACrB;AAAA,EACA;AAAA,IACE,IAAA,EAAQ,UAAA;AAAA,IACR,IAAA,EAAQ,2BAAA;AAAA,IACR,MAAA,EAAU;AAAA,MACR;AAAA,QACE,IAAA,EAAQ,aAAA;AAAA,QACR,IAAA,EAAQ,SAAA;AAAA,QACR,YAAA,EAAgB;AAAA;AAClB,KACF;AAAA,IACA,SAAW,EAAC;AAAA,IACZ,eAAA,EAAmB;AAAA,GACrB;AAAA,EACA;AAAA,IACE,IAAA,EAAQ,UAAA;AAAA,IACR,IAAA,EAAQ,2BAAA;AAAA,IACR,MAAA,EAAU;AAAA,MACR;AAAA,QACE,IAAA,EAAQ,aAAA;AAAA,QACR,IAAA,EAAQ,SAAA;AAAA,QACR,YAAA,EAAgB;AAAA,OAClB;AAAA,MACA;AAAA,QACE,IAAA,EAAQ,oBAAA;AAAA,QACR,IAAA,EAAQ,MAAA;AAAA,QACR,YAAA,EAAgB;AAAA;AAClB,KACF;AAAA,IACA,SAAW,EAAC;AAAA,IACZ,eAAA,EAAmB;AAAA,GACrB;AAAA,EACA;AAAA,IACE,IAAA,EAAQ,UAAA;AAAA,IACR,IAAA,EAAQ,kBAAA;AAAA,IACR,MAAA,EAAU;AAAA,MACR;AAAA,QACE,IAAA,EAAQ,aAAA;AAAA,QACR,IAAA,EAAQ,SAAA;AAAA,QACR,YAAA,EAAgB;AAAA;AAClB,KACF;AAAA,IACA,OAAA,EAAW;AAAA,MACT;AAAA,QACE,IAAA,EAAQ,EAAA;AAAA,QACR,IAAA,EAAQ,OAAA;AAAA,QACR,YAAA,EAAgB,sBAAA;AAAA,QAChB,UAAA,EAAc;AAAA,UACZ;AAAA,YACE,IAAA,EAAQ,aAAA;AAAA,YACR,IAAA,EAAQ,SAAA;AAAA,YACR,YAAA,EAAgB;AAAA,WAClB;AAAA,UACA;AAAA,YACE,IAAA,EAAQ,YAAA;AAAA,YACR,IAAA,EAAQ,SAAA;AAAA,YACR,YAAA,EAAgB;AAAA,WAClB;AAAA,UACA;AAAA,YACE,IAAA,EAAQ,SAAA;AAAA,YACR,IAAA,EAAQ,QAAA;AAAA,YACR,YAAA,EAAgB;AAAA,WAClB;AAAA,UACA;AAAA,YACE,IAAA,EAAQ,SAAA;AAAA,YACR,IAAA,EAAQ,MAAA;AAAA,YACR,YAAA,EAAgB;AAAA,WAClB;AAAA,UACA;AAAA,YACE,IAAA,EAAQ,UAAA;AAAA,YACR,IAAA,EAAQ,SAAA;AAAA,YACR,YAAA,EAAgB;AAAA;AAClB;AACF;AACF,KACF;AAAA,IACA,eAAA,EAAmB;AAAA,GACrB;AAAA,EACA;AAAA,IACE,IAAA,EAAQ,UAAA;AAAA,IACR,IAAA,EAAQ,kBAAA;AAAA,IACR,MAAA,EAAU;AAAA,MACR;AAAA,QACE,IAAA,EAAQ,UAAA;AAAA,QACR,IAAA,EAAQ,SAAA;AAAA,QACR,YAAA,EAAgB;AAAA,OAClB;AAAA,MACA;AAAA,QACE,IAAA,EAAQ,SAAA;AAAA,QACR,IAAA,EAAQ,QAAA;AAAA,QACR,YAAA,EAAgB;AAAA;AAClB,KACF;AAAA,IACA,SAAW,EAAC;AAAA,IACZ,eAAA,EAAmB;AAAA,GACrB;AAAA,EACA;AAAA,IACE,IAAA,EAAQ,UAAA;AAAA,IACR,IAAA,EAAQ,iBAAA;AAAA,IACR,MAAA,EAAU;AAAA,MACR;AAAA,QACE,IAAA,EAAQ,aAAA;AAAA,QACR,IAAA,EAAQ,SAAA;AAAA,QACR,YAAA,EAAgB;AAAA;AAClB,KACF;AAAA,IACA,SAAW,EAAC;AAAA,IACZ,eAAA,EAAmB;AAAA,GACrB;AAAA,EACA;AAAA,IACE,IAAA,EAAQ,OAAA;AAAA,IACR,IAAA,EAAQ,kBAAA;AAAA,IACR,MAAA,EAAU;AAAA,MACR;AAAA,QACE,IAAA,EAAQ,aAAA;AAAA,QACR,IAAA,EAAQ,SAAA;AAAA,QACR,OAAA,EAAW,IAAA;AAAA,QACX,YAAA,EAAgB;AAAA,OAClB;AAAA,MACA;AAAA,QACE,IAAA,EAAQ,YAAA;AAAA,QACR,IAAA,EAAQ,SAAA;AAAA,QACR,OAAA,EAAW,IAAA;AAAA,QACX,YAAA,EAAgB;AAAA,OAClB;AAAA,MACA;AAAA,QACE,IAAA,EAAQ,SAAA;AAAA,QACR,IAAA,EAAQ,QAAA;AAAA,QACR,OAAA,EAAW,KAAA;AAAA,QACX,YAAA,EAAgB;AAAA,OAClB;AAAA,MACA;AAAA,QACE,IAAA,EAAQ,UAAA;AAAA,QACR,IAAA,EAAQ,SAAA;AAAA,QACR,OAAA,EAAW,KAAA;AAAA,QACX,YAAA,EAAgB;AAAA;AAClB,KACF;AAAA,IACA,SAAA,EAAa;AAAA,GACf;AAAA,EACA;AAAA,IACE,IAAA,EAAQ,OAAA;AAAA,IACR,IAAA,EAAQ,mBAAA;AAAA,IACR,MAAA,EAAU;AAAA,MACR;AAAA,QACE,IAAA,EAAQ,aAAA;AAAA,QACR,IAAA,EAAQ,SAAA;AAAA,QACR,OAAA,EAAW,IAAA;AAAA,QACX,YAAA,EAAgB;AAAA;AAClB,KACF;AAAA,IACA,SAAA,EAAa;AAAA,GACf;AAAA,EACA;AAAA,IACE,IAAA,EAAQ,OAAA;AAAA,IACR,IAAA,EAAQ,kBAAA;AAAA,IACR,MAAA,EAAU;AAAA,MACR;AAAA,QACE,IAAA,EAAQ,aAAA;AAAA,QACR,IAAA,EAAQ,SAAA;AAAA,QACR,OAAA,EAAW,IAAA;AAAA,QACX,YAAA,EAAgB;AAAA,OAClB;AAAA,MACA;AAAA,QACE,IAAA,EAAQ,QAAA;AAAA,QACR,IAAA,EAAQ,MAAA;AAAA,QACR,OAAA,EAAW,KAAA;AAAA,QACX,YAAA,EAAgB;AAAA;AAClB,KACF;AAAA,IACA,SAAA,EAAa;AAAA,GACf;AAAA,EACA;AAAA,IACE,IAAA,EAAQ,OAAA;AAAA,IACR,IAAA,EAAQ,qBAAA;AAAA,IACR,MAAA,EAAU;AAAA,MACR;AAAA,QACE,IAAA,EAAQ,SAAA;AAAA,QACR,IAAA,EAAQ,SAAA;AAAA,QACR,OAAA,EAAW,IAAA;AAAA,QACX,YAAA,EAAgB;AAAA,OAClB;AAAA,MACA;AAAA,QACE,IAAA,EAAQ,iBAAA;AAAA,QACR,IAAA,EAAQ,SAAA;AAAA,QACR,OAAA,EAAW,IAAA;AAAA,QACX,YAAA,EAAgB;AAAA;AAClB,KACF;AAAA,IACA,SAAA,EAAa;AAAA,GACf;AAAA,EACA;AAAA,IACE,IAAA,EAAQ,OAAA;AAAA,IACR,IAAA,EAAQ,qBAAA;AAAA,IACR,MAAA,EAAU;AAAA,MACR;AAAA,QACE,IAAA,EAAQ,SAAA;AAAA,QACR,IAAA,EAAQ,SAAA;AAAA,QACR,OAAA,EAAW,IAAA;AAAA,QACX,YAAA,EAAgB;AAAA,OAClB;AAAA,MACA;AAAA,QACE,IAAA,EAAQ,iBAAA;AAAA,QACR,IAAA,EAAQ,SAAA;AAAA,QACR,OAAA,EAAW,IAAA;AAAA,QACX,YAAA,EAAgB;AAAA;AAClB,KACF;AAAA,IACA,SAAA,EAAa;AAAA,GACf;AAAA,EACA;AAAA,IACE,IAAA,EAAQ,OAAA;AAAA,IACR,IAAA,EAAQ,gBAAA;AAAA,IACR,MAAA,EAAU;AAAA,MACR;AAAA,QACE,IAAA,EAAQ,UAAA;AAAA,QACR,IAAA,EAAQ,SAAA;AAAA,QACR,OAAA,EAAW,IAAA;AAAA,QACX,YAAA,EAAgB;AAAA,OAClB;AAAA,MACA;AAAA,QACE,IAAA,EAAQ,YAAA;AAAA,QACR,IAAA,EAAQ,SAAA;AAAA,QACR,OAAA,EAAW,IAAA;AAAA,QACX,YAAA,EAAgB;AAAA,OAClB;AAAA,MACA;AAAA,QACE,IAAA,EAAQ,SAAA;AAAA,QACR,IAAA,EAAQ,QAAA;AAAA,QACR,OAAA,EAAW,KAAA;AAAA,QACX,YAAA,EAAgB;AAAA;AAClB,KACF;AAAA,IACA,SAAA,EAAa;AAAA,GACf;AAAA,EACA;AAAA,IACE,IAAA,EAAQ,OAAA;AAAA,IACR,IAAA,EAAQ,gBAAA;AAAA,IACR,MAAA,EAAU;AAAA,MACR;AAAA,QACE,IAAA,EAAQ,UAAA;AAAA,QACR,IAAA,EAAQ,SAAA;AAAA,QACR,OAAA,EAAW,IAAA;AAAA,QACX,YAAA,EAAgB;AAAA,OAClB;AAAA,MACA;AAAA,QACE,IAAA,EAAQ,YAAA;AAAA,QACR,IAAA,EAAQ,SAAA;AAAA,QACR,OAAA,EAAW,IAAA;AAAA,QACX,YAAA,EAAgB;AAAA,OAClB;AAAA,MACA;AAAA,QACE,IAAA,EAAQ,SAAA;AAAA,QACR,IAAA,EAAQ,QAAA;AAAA,QACR,OAAA,EAAW,KAAA;AAAA,QACX,YAAA,EAAgB;AAAA;AAClB,KACF;AAAA,IACA,SAAA,EAAa;AAAA,GACf;AAAA,EACA;AAAA,IACE,IAAA,EAAQ,OAAA;AAAA,IACR,IAAA,EAAQ,YAAA;AAAA,IACR,MAAA,EAAU;AAAA,MACR;AAAA,QACE,IAAA,EAAQ,aAAA;AAAA,QACR,IAAA,EAAQ,SAAA;AAAA,QACR,OAAA,EAAW,IAAA;AAAA,QACX,YAAA,EAAgB;AAAA,OAClB;AAAA,MACA;AAAA,QACE,IAAA,EAAQ,UAAA;AAAA,QACR,IAAA,EAAQ,SAAA;AAAA,QACR,OAAA,EAAW,IAAA;AAAA,QACX,YAAA,EAAgB;AAAA,OAClB;AAAA,MACA;AAAA,QACE,IAAA,EAAQ,QAAA;AAAA,QACR,IAAA,EAAQ,SAAA;AAAA,QACR,OAAA,EAAW,KAAA;AAAA,QACX,YAAA,EAAgB;AAAA;AAClB,KACF;AAAA,IACA,SAAA,EAAa;AAAA,GACf;AAAA,EACA;AAAA,IACE,IAAA,EAAQ,OAAA;AAAA,IACR,IAAA,EAAQ,eAAA;AAAA,IACR,QAAU;AAAC,GACb;AAAA,EACA;AAAA,IACE,IAAA,EAAQ,OAAA;AAAA,IACR,IAAA,EAAQ,2BAAA;AAAA,IACR,QAAU;AAAC,GACb;AAAA,EACA;AAAA,IACE,IAAA,EAAQ,OAAA;AAAA,IACR,IAAA,EAAQ,mBAAA;AAAA,IACR,QAAU;AAAC,GACb;AAAA,EACA;AAAA,IACE,IAAA,EAAQ,OAAA;AAAA,IACR,IAAA,EAAQ,qBAAA;AAAA,IACR,QAAU;AAAC,GACb;AAAA,EACA;AAAA,IACE,IAAA,EAAQ,OAAA;AAAA,IACR,IAAA,EAAQ,iBAAA;AAAA,IACR,QAAU;AAAC,GACb;AAAA,EACA;AAAA,IACE,IAAA,EAAQ,OAAA;AAAA,IACR,IAAA,EAAQ,gBAAA;AAAA,IACR,QAAU;AAAC,GACb;AAAA,EACA;AAAA,IACE,IAAA,EAAQ,OAAA;AAAA,IACR,IAAA,EAAQ,eAAA;AAAA,IACR,QAAU;AAAC,GACb;AAAA,EACA;AAAA,IACE,IAAA,EAAQ,OAAA;AAAA,IACR,IAAA,EAAQ,sBAAA;AAAA,IACR,QAAU;AAAC,GACb;AAAA,EACA;AAAA,IACE,IAAA,EAAQ,OAAA;AAAA,IACR,IAAA,EAAQ,sBAAA;AAAA,IACR,QAAU;AAAC,GACb;AAAA,EACA;AAAA,IACE,IAAA,EAAQ,OAAA;AAAA,IACR,IAAA,EAAQ,iBAAA;AAAA,IACR,QAAU;AAAC,GACb;AAAA,EACA;AAAA,IACE,IAAA,EAAQ,OAAA;AAAA,IACR,IAAA,EAAQ,gBAAA;AAAA,IACR,QAAU;AAAC,GACb;AAAA,EACA;AAAA,IACE,IAAA,EAAQ,OAAA;AAAA,IACR,IAAA,EAAQ,oBAAA;AAAA,IACR,QAAU;AAAC,GACb;AAAA,EACA;AAAA,IACE,IAAA,EAAQ,OAAA;AAAA,IACR,IAAA,EAAQ,qBAAA;AAAA,IACR,QAAU;AAAC,GACb;AAAA,EACA;AAAA,IACE,IAAA,EAAQ,OAAA;AAAA,IACR,IAAA,EAAQ,iBAAA;AAAA,IACR,QAAU;AAAC;AAEf;;;AC3XA,IAAA,kBAAA,GAAA;AAAA,EACE;AAAA,IACE,IAAA,EAAQ,UAAA;AAAA,IACR,IAAA,EAAQ,eAAA;AAAA,IACR,QAAU,EAAC;AAAA,IACX,OAAA,EAAW;AAAA,MACT;AAAA,QACE,IAAA,EAAQ,EAAA;AAAA,QACR,IAAA,EAAQ,SAAA;AAAA,QACR,YAAA,EAAgB;AAAA;AAClB,KACF;AAAA,IACA,eAAA,EAAmB;AAAA,GACrB;AAAA,EACA;AAAA,IACE,IAAA,EAAQ,UAAA;AAAA,IACR,IAAA,EAAQ,UAAA;AAAA,IACR,QAAU,EAAC;AAAA,IACX,OAAA,EAAW;AAAA,MACT;AAAA,QACE,IAAA,EAAQ,EAAA;AAAA,QACR,IAAA,EAAQ,SAAA;AAAA,QACR,YAAA,EAAgB;AAAA;AAClB,KACF;AAAA,IACA,eAAA,EAAmB;AAAA,GACrB;AAAA,EACA;AAAA,IACE,IAAA,EAAQ,UAAA;AAAA,IACR,IAAA,EAAQ,gBAAA;AAAA,IACR,MAAA,EAAU;AAAA,MACR;AAAA,QACE,IAAA,EAAQ,UAAA;AAAA,QACR,IAAA,EAAQ,SAAA;AAAA,QACR,YAAA,EAAgB;AAAA,OAClB;AAAA,MACA;AAAA,QACE,IAAA,EAAQ,QAAA;AAAA,QACR,IAAA,EAAQ,SAAA;AAAA,QACR,YAAA,EAAgB;AAAA;AAClB,KACF;AAAA,IACA,SAAW,EAAC;AAAA,IACZ,eAAA,EAAmB;AAAA,GACrB;AAAA,EACA;AAAA,IACE,IAAA,EAAQ,UAAA;AAAA,IACR,IAAA,EAAQ,QAAA;AAAA,IACR,MAAA,EAAU;AAAA,MACR;AAAA,QACE,IAAA,EAAQ,KAAA;AAAA,QACR,IAAA,EAAQ,SAAA;AAAA,QACR,YAAA,EAAgB;AAAA;AAClB,KACF;AAAA,IACA,SAAW,EAAC;AAAA,IACZ,eAAA,EAAmB;AAAA,GACrB;AAAA,EACA;AAAA,IACE,IAAA,EAAQ,UAAA;AAAA,IACR,IAAA,EAAQ,eAAA;AAAA,IACR,MAAA,EAAU;AAAA,MACR;AAAA,QACE,IAAA,EAAQ,UAAA;AAAA,QACR,IAAA,EAAQ,SAAA;AAAA,QACR,YAAA,EAAgB;AAAA,OAClB;AAAA,MACA;AAAA,QACE,IAAA,EAAQ,QAAA;AAAA,QACR,IAAA,EAAQ,SAAA;AAAA,QACR,YAAA,EAAgB;AAAA;AAClB,KACF;AAAA,IACA,SAAW,EAAC;AAAA,IACZ,eAAA,EAAmB;AAAA,GACrB;AAAA,EACA;AAAA,IACE,IAAA,EAAQ,OAAA;AAAA,IACR,IAAA,EAAQ,YAAA;AAAA,IACR,MAAA,EAAU;AAAA,MACR;AAAA,QACE,IAAA,EAAQ,KAAA;AAAA,QACR,IAAA,EAAQ,SAAA;AAAA,QACR,OAAA,EAAW,IAAA;AAAA,QACX,YAAA,EAAgB;AAAA;AAClB,KACF;AAAA,IACA,SAAA,EAAa;AAAA,GACf;AAAA,EACA;AAAA,IACE,IAAA,EAAQ,OAAA;AAAA,IACR,IAAA,EAAQ,eAAA;AAAA,IACR,MAAA,EAAU;AAAA,MACR;AAAA,QACE,IAAA,EAAQ,QAAA;AAAA,QACR,IAAA,EAAQ,SAAA;AAAA,QACR,OAAA,EAAW,IAAA;AAAA,QACX,YAAA,EAAgB;AAAA,OAClB;AAAA,MACA;AAAA,QACE,IAAA,EAAQ,UAAA;AAAA,QACR,IAAA,EAAQ,SAAA;AAAA,QACR,OAAA,EAAW,IAAA;AAAA,QACX,YAAA,EAAgB;AAAA,OAClB;AAAA,MACA;AAAA,QACE,IAAA,EAAQ,QAAA;AAAA,QACR,IAAA,EAAQ,SAAA;AAAA,QACR,OAAA,EAAW,KAAA;AAAA,QACX,YAAA,EAAgB;AAAA;AAClB,KACF;AAAA,IACA,SAAA,EAAa;AAAA,GACf;AAAA,EACA;AAAA,IACE,IAAA,EAAQ,OAAA;AAAA,IACR,IAAA,EAAQ,iBAAA;AAAA,IACR,MAAA,EAAU;AAAA,MACR;AAAA,QACE,IAAA,EAAQ,QAAA;AAAA,QACR,IAAA,EAAQ,SAAA;AAAA,QACR,OAAA,EAAW,IAAA;AAAA,QACX,YAAA,EAAgB;AAAA,OAClB;AAAA,MACA;AAAA,QACE,IAAA,EAAQ,UAAA;AAAA,QACR,IAAA,EAAQ,SAAA;AAAA,QACR,OAAA,EAAW,IAAA;AAAA,QACX,YAAA,EAAgB;AAAA,OAClB;AAAA,MACA;AAAA,QACE,IAAA,EAAQ,QAAA;AAAA,QACR,IAAA,EAAQ,SAAA;AAAA,QACR,OAAA,EAAW,KAAA;AAAA,QACX,YAAA,EAAgB;AAAA;AAClB,KACF;AAAA,IACA,SAAA,EAAa;AAAA,GACf;AAAA,EACA;AAAA,IACE,IAAA,EAAQ,OAAA;AAAA,IACR,IAAA,EAAQ,eAAA;AAAA,IACR,QAAU;AAAC,GACb;AAAA,EACA;AAAA,IACE,IAAA,EAAQ,OAAA;AAAA,IACR,IAAA,EAAQ,iBAAA;AAAA,IACR,QAAU;AAAC,GACb;AAAA,EACA;AAAA,IACE,IAAA,EAAQ,OAAA;AAAA,IACR,IAAA,EAAQ,gBAAA;AAAA,IACR,QAAU;AAAC,GACb;AAAA,EACA;AAAA,IACE,IAAA,EAAQ,OAAA;AAAA,IACR,IAAA,EAAQ,cAAA;AAAA,IACR,QAAU;AAAC,GACb;AAAA,EACA;AAAA,IACE,IAAA,EAAQ,OAAA;AAAA,IACR,IAAA,EAAQ,kBAAA;AAAA,IACR,MAAA,EAAU;AAAA,MACR;AAAA,QACE,IAAA,EAAQ,OAAA;AAAA,QACR,IAAA,EAAQ,SAAA;AAAA,QACR,YAAA,EAAgB;AAAA,OAClB;AAAA,MACA;AAAA,QACE,IAAA,EAAQ,gBAAA;AAAA,QACR,IAAA,EAAQ,SAAA;AAAA,QACR,YAAA,EAAgB;AAAA;AAClB;AACF,GACF;AAAA,EACA;AAAA,IACE,IAAA,EAAQ,OAAA;AAAA,IACR,IAAA,EAAQ,gBAAA;AAAA,IACR,QAAU;AAAC,GACb;AAAA,EACA;AAAA,IACE,IAAA,EAAQ,OAAA;AAAA,IACR,IAAA,EAAQ,gBAAA;AAAA,IACR,QAAU;AAAC,GACb;AAAA,EACA;AAAA,IACE,IAAA,EAAQ,OAAA;AAAA,IACR,IAAA,EAAQ,oBAAA;AAAA,IACR,QAAU;AAAC,GACb;AAAA,EACA;AAAA,IACE,IAAA,EAAQ,OAAA;AAAA,IACR,IAAA,EAAQ,eAAA;AAAA,IACR,QAAU;AAAC,GACb;AAAA,EACA;AAAA,IACE,IAAA,EAAQ,OAAA;AAAA,IACR,IAAA,EAAQ,eAAA;AAAA,IACR,QAAU;AAAC,GACb;AAAA,EACA;AAAA,IACE,IAAA,EAAQ,OAAA;AAAA,IACR,IAAA,EAAQ,gBAAA;AAAA,IACR,QAAU;AAAC;AAEf;;;AC7MA,IAAA,oBAAA,GAAA;AAAA,EACE;AAAA,IACE,IAAA,EAAQ,UAAA;AAAA,IACR,IAAA,EAAQ,kBAAA;AAAA,IACR,MAAA,EAAU;AAAA,MACR;AAAA,QACE,IAAA,EAAQ,cAAA;AAAA,QACR,IAAA,EAAQ,WAAA;AAAA,QACR,YAAA,EAAgB;AAAA,OAClB;AAAA,MACA;AAAA,QACE,IAAA,EAAQ,iBAAA;AAAA,QACR,IAAA,EAAQ,SAAA;AAAA,QACR,YAAA,EAAgB;AAAA,OAClB;AAAA,MACA;AAAA,QACE,IAAA,EAAQ,UAAA;AAAA,QACR,IAAA,EAAQ,SAAA;AAAA,QACR,YAAA,EAAgB;AAAA,OAClB;AAAA,MACA;AAAA,QACE,IAAA,EAAQ,QAAA;AAAA,QACR,IAAA,EAAQ,SAAA;AAAA,QACR,YAAA,EAAgB;AAAA;AAClB,KACF;AAAA,IACA,SAAW,EAAC;AAAA,IACZ,eAAA,EAAmB;AAAA,GACrB;AAAA,EACA;AAAA,IACE,IAAA,EAAQ,UAAA;AAAA,IACR,IAAA,EAAQ,0BAAA;AAAA,IACR,MAAA,EAAU;AAAA,MACR;AAAA,QACE,IAAA,EAAQ,cAAA;AAAA,QACR,IAAA,EAAQ,WAAA;AAAA,QACR,YAAA,EAAgB;AAAA,OAClB;AAAA,MACA;AAAA,QACE,IAAA,EAAQ,iBAAA;AAAA,QACR,IAAA,EAAQ,SAAA;AAAA,QACR,YAAA,EAAgB;AAAA,OAClB;AAAA,MACA;AAAA,QACE,IAAA,EAAQ,UAAA;AAAA,QACR,IAAA,EAAQ,SAAA;AAAA,QACR,YAAA,EAAgB;AAAA;AAClB,KACF;AAAA,IACA,OAAA,EAAW;AAAA,MACT;AAAA,QACE,IAAA,EAAQ,eAAA;AAAA,QACR,IAAA,EAAQ,WAAA;AAAA,QACR,YAAA,EAAgB;AAAA,OAClB;AAAA,MACA;AAAA,QACE,IAAA,EAAQ,gBAAA;AAAA,QACR,IAAA,EAAQ,WAAA;AAAA,QACR,YAAA,EAAgB;AAAA;AAClB,KACF;AAAA,IACA,eAAA,EAAmB;AAAA,GACrB;AAAA,EACA;AAAA,IACE,IAAA,EAAQ,OAAA;AAAA,IACR,IAAA,EAAQ,eAAA;AAAA,IACR,QAAU;AAAC,GACb;AAAA,EACA;AAAA,IACE,IAAA,EAAQ,OAAA;AAAA,IACR,IAAA,EAAQ,sBAAA;AAAA,IACR,MAAA,EAAU;AAAA,MACR;AAAA,QACE,IAAA,EAAQ,aAAA;AAAA,QACR,IAAA,EAAQ,SAAA;AAAA,QACR,YAAA,EAAgB;AAAA;AAClB;AACF,GACF;AAAA,EACA;AAAA,IACE,IAAA,EAAQ,OAAA;AAAA,IACR,IAAA,EAAQ,iBAAA;AAAA,IACR,QAAU;AAAC,GACb;AAAA,EACA;AAAA,IACE,IAAA,EAAQ,OAAA;AAAA,IACR,IAAA,EAAQ,yBAAA;AAAA,IACR,MAAA,EAAU;AAAA,MACR;AAAA,QACE,IAAA,EAAQ,aAAA;AAAA,QACR,IAAA,EAAQ,SAAA;AAAA,QACR,YAAA,EAAgB;AAAA;AAClB;AACF;AAEJ;;;AC/FA,IAAA,qBAAA,GAAA;AAAA,EACE;AAAA,IACE,IAAA,EAAQ,UAAA;AAAA,IACR,IAAA,EAAQ,mBAAA;AAAA,IACR,QAAU,EAAC;AAAA,IACX,OAAA,EAAW;AAAA,MACT;AAAA,QACE,IAAA,EAAQ,EAAA;AAAA,QACR,IAAA,EAAQ,SAAA;AAAA,QACR,YAAA,EAAgB;AAAA;AAClB,KACF;AAAA,IACA,eAAA,EAAmB;AAAA,GACrB;AAAA,EACA;AAAA,IACE,IAAA,EAAQ,UAAA;AAAA,IACR,IAAA,EAAQ,mBAAA;AAAA,IACR,QAAU,EAAC;AAAA,IACX,OAAA,EAAW;AAAA,MACT;AAAA,QACE,IAAA,EAAQ,EAAA;AAAA,QACR,IAAA,EAAQ,MAAA;AAAA,QACR,YAAA,EAAgB;AAAA;AAClB,KACF;AAAA,IACA,eAAA,EAAmB;AAAA,GACrB;AAAA,EACA;AAAA,IACE,IAAA,EAAQ,UAAA;AAAA,IACR,IAAA,EAAQ,qBAAA;AAAA,IACR,QAAU,EAAC;AAAA,IACX,OAAA,EAAW;AAAA,MACT;AAAA,QACE,IAAA,EAAQ,EAAA;AAAA,QACR,IAAA,EAAQ,SAAA;AAAA,QACR,YAAA,EAAgB;AAAA;AAClB,KACF;AAAA,IACA,eAAA,EAAmB;AAAA,GACrB;AAAA,EACA;AAAA,IACE,IAAA,EAAQ,UAAA;AAAA,IACR,IAAA,EAAQ,kBAAA;AAAA,IACR,QAAU,EAAC;AAAA,IACX,OAAA,EAAW;AAAA,MACT;AAAA,QACE,IAAA,EAAQ,EAAA;AAAA,QACR,IAAA,EAAQ,SAAA;AAAA,QACR,YAAA,EAAgB;AAAA;AAClB,KACF;AAAA,IACA,eAAA,EAAmB;AAAA,GACrB;AAAA,EACA;AAAA,IACE,IAAA,EAAQ,UAAA;AAAA,IACR,IAAA,EAAQ,cAAA;AAAA,IACR,QAAU,EAAC;AAAA,IACX,OAAA,EAAW;AAAA,MACT;AAAA,QACE,IAAA,EAAQ,EAAA;AAAA,QACR,IAAA,EAAQ,SAAA;AAAA,QACR,YAAA,EAAgB;AAAA;AAClB,KACF;AAAA,IACA,eAAA,EAAmB;AAAA,GACrB;AAAA,EACA;AAAA,IACE,IAAA,EAAQ,UAAA;AAAA,IACR,IAAA,EAAQ,mBAAA;AAAA,IACR,MAAA,EAAU;AAAA,MACR;AAAA,QACE,IAAA,EAAQ,SAAA;AAAA,QACR,IAAA,EAAQ,SAAA;AAAA,QACR,YAAA,EAAgB;AAAA;AAClB,KACF;AAAA,IACA,OAAA,EAAW;AAAA,MACT;AAAA,QACE,IAAA,EAAQ,EAAA;AAAA,QACR,IAAA,EAAQ,MAAA;AAAA,QACR,YAAA,EAAgB;AAAA;AAClB,KACF;AAAA,IACA,eAAA,EAAmB;AAAA,GACrB;AAAA,EACA;AAAA,IACE,IAAA,EAAQ,UAAA;AAAA,IACR,IAAA,EAAQ,yBAAA;AAAA,IACR,MAAA,EAAU;AAAA,MACR;AAAA,QACE,IAAA,EAAQ,OAAA;AAAA,QACR,IAAA,EAAQ,SAAA;AAAA,QACR,YAAA,EAAgB;AAAA;AAClB,KACF;AAAA,IACA,OAAA,EAAW;AAAA,MACT;AAAA,QACE,IAAA,EAAQ,EAAA;AAAA,QACR,IAAA,EAAQ,MAAA;AAAA,QACR,YAAA,EAAgB;AAAA;AAClB,KACF;AAAA,IACA,eAAA,EAAmB;AAAA,GACrB;AAAA,EACA;AAAA,IACE,IAAA,EAAQ,UAAA;AAAA,IACR,IAAA,EAAQ,eAAA;AAAA,IACR,QAAU,EAAC;AAAA,IACX,SAAW,EAAC;AAAA,IACZ,eAAA,EAAmB;AAAA,GACrB;AAAA,EACA;AAAA,IACE,IAAA,EAAQ,UAAA;AAAA,IACR,IAAA,EAAQ,0BAAA;AAAA,IACR,MAAA,EAAU;AAAA,MACR;AAAA,QACE,IAAA,EAAQ,OAAA;AAAA,QACR,IAAA,EAAQ,SAAA;AAAA,QACR,YAAA,EAAgB;AAAA,OAClB;AAAA,MACA;AAAA,QACE,IAAA,EAAQ,aAAA;AAAA,QACR,IAAA,EAAQ,MAAA;AAAA,QACR,YAAA,EAAgB;AAAA;AAClB,KACF;AAAA,IACA,SAAW,EAAC;AAAA,IACZ,eAAA,EAAmB;AAAA,GACrB;AAAA,EACA;AAAA,IACE,IAAA,EAAQ,UAAA;AAAA,IACR,IAAA,EAAQ,mBAAA;AAAA,IACR,MAAA,EAAU;AAAA,MACR;AAAA,QACE,IAAA,EAAQ,KAAA;AAAA,QACR,IAAA,EAAQ,SAAA;AAAA,QACR,YAAA,EAAgB;AAAA;AAClB,KACF;AAAA,IACA,SAAW,EAAC;AAAA,IACZ,eAAA,EAAmB;AAAA,GACrB;AAAA,EACA;AAAA,IACE,IAAA,EAAQ,UAAA;AAAA,IACR,IAAA,EAAQ,qBAAA;AAAA,IACR,MAAA,EAAU;AAAA,MACR;AAAA,QACE,IAAA,EAAQ,UAAA;AAAA,QACR,IAAA,EAAQ,SAAA;AAAA,QACR,YAAA,EAAgB;AAAA;AAClB,KACF;AAAA,IACA,SAAW,EAAC;AAAA,IACZ,eAAA,EAAmB;AAAA,GACrB;AAAA,EACA;AAAA,IACE,IAAA,EAAQ,UAAA;AAAA,IACR,IAAA,EAAQ,kBAAA;AAAA,IACR,MAAA,EAAU;AAAA,MACR;AAAA,QACE,IAAA,EAAQ,YAAA;AAAA,QACR,IAAA,EAAQ,SAAA;AAAA,QACR,YAAA,EAAgB;AAAA;AAClB,KACF;AAAA,IACA,SAAW,EAAC;AAAA,IACZ,eAAA,EAAmB;AAAA,GACrB;AAAA,EACA;AAAA,IACE,IAAA,EAAQ,UAAA;AAAA,IACR,IAAA,EAAQ,cAAA;AAAA,IACR,MAAA,EAAU;AAAA,MACR;AAAA,QACE,IAAA,EAAQ,QAAA;AAAA,QACR,IAAA,EAAQ,SAAA;AAAA,QACR,YAAA,EAAgB;AAAA;AAClB,KACF;AAAA,IACA,SAAW,EAAC;AAAA,IACZ,eAAA,EAAmB;AAAA,GACrB;AAAA,EACA;AAAA,IACE,IAAA,EAAQ,UAAA;AAAA,IACR,IAAA,EAAQ,cAAA;AAAA,IACR,MAAA,EAAU;AAAA,MACR;AAAA,QACE,IAAA,EAAQ,SAAA;AAAA,QACR,IAAA,EAAQ,SAAA;AAAA,QACR,YAAA,EAAgB;AAAA;AAClB,KACF;AAAA,IACA,SAAW,EAAC;AAAA,IACZ,eAAA,EAAmB;AAAA,GACrB;AAAA,EACA;AAAA,IACE,IAAA,EAAQ,UAAA;AAAA,IACR,IAAA,EAAQ,iBAAA;AAAA,IACR,QAAU,EAAC;AAAA,IACX,SAAW,EAAC;AAAA,IACZ,eAAA,EAAmB;AAAA,GACrB;AAAA,EACA;AAAA,IACE,IAAA,EAAQ,UAAA;AAAA,IACR,IAAA,EAAQ,gBAAA;AAAA,IACR,MAAA,EAAU;AAAA,MACR;AAAA,QACE,IAAA,EAAQ,SAAA;AAAA,QACR,IAAA,EAAQ,SAAA;AAAA,QACR,YAAA,EAAgB;AAAA;AAClB,KACF;AAAA,IACA,SAAW,EAAC;AAAA,IACZ,eAAA,EAAmB;AAAA,GACrB;AAAA,EACA;AAAA,IACE,IAAA,EAAQ,UAAA;AAAA,IACR,IAAA,EAAQ,eAAA;AAAA,IACR,MAAA,EAAU;AAAA,MACR;AAAA,QACE,IAAA,EAAQ,OAAA;AAAA,QACR,IAAA,EAAQ,SAAA;AAAA,QACR,YAAA,EAAgB;AAAA,OAClB;AAAA,MACA;AAAA,QACE,IAAA,EAAQ,WAAA;AAAA,QACR,IAAA,EAAQ,SAAA;AAAA,QACR,YAAA,EAAgB;AAAA,OAClB;AAAA,MACA;AAAA,QACE,IAAA,EAAQ,QAAA;AAAA,QACR,IAAA,EAAQ,SAAA;AAAA,QACR,YAAA,EAAgB;AAAA;AAClB,KACF;AAAA,IACA,SAAW,EAAC;AAAA,IACZ,eAAA,EAAmB;AAAA,GACrB;AAAA,EACA;AAAA,IACE,IAAA,EAAQ,UAAA;AAAA,IACR,IAAA,EAAQ,aAAA;AAAA,IACR,MAAA,EAAU;AAAA,MACR;AAAA,QACE,IAAA,EAAQ,WAAA;AAAA,QACR,IAAA,EAAQ,SAAA;AAAA,QACR,YAAA,EAAgB;AAAA;AAClB,KACF;AAAA,IACA,SAAW,EAAC;AAAA,IACZ,eAAA,EAAmB;AAAA,GACrB;AAAA,EACA;AAAA,IACE,IAAA,EAAQ,OAAA;AAAA,IACR,IAAA,EAAQ,4BAAA;AAAA,IACR,MAAA,EAAU;AAAA,MACR;AAAA,QACE,IAAA,EAAQ,OAAA;AAAA,QACR,IAAA,EAAQ,SAAA;AAAA,QACR,OAAA,EAAW,IAAA;AAAA,QACX,YAAA,EAAgB;AAAA,OAClB;AAAA,MACA;AAAA,QACE,IAAA,EAAQ,aAAA;AAAA,QACR,IAAA,EAAQ,MAAA;AAAA,QACR,OAAA,EAAW,KAAA;AAAA,QACX,YAAA,EAAgB;AAAA;AAClB,KACF;AAAA,IACA,SAAA,EAAa;AAAA,GACf;AAAA,EACA;AAAA,IACE,IAAA,EAAQ,OAAA;AAAA,IACR,IAAA,EAAQ,gBAAA;AAAA,IACR,MAAA,EAAU;AAAA,MACR;AAAA,QACE,IAAA,EAAQ,OAAA;AAAA,QACR,IAAA,EAAQ,SAAA;AAAA,QACR,OAAA,EAAW,IAAA;AAAA,QACX,YAAA,EAAgB;AAAA,OAClB;AAAA,MACA;AAAA,QACE,IAAA,EAAQ,WAAA;AAAA,QACR,IAAA,EAAQ,SAAA;AAAA,QACR,OAAA,EAAW,IAAA;AAAA,QACX,YAAA,EAAgB;AAAA,OAClB;AAAA,MACA;AAAA,QACE,IAAA,EAAQ,QAAA;AAAA,QACR,IAAA,EAAQ,SAAA;AAAA,QACR,OAAA,EAAW,KAAA;AAAA,QACX,YAAA,EAAgB;AAAA;AAClB,KACF;AAAA,IACA,SAAA,EAAa;AAAA,GACf;AAAA,EACA;AAAA,IACE,IAAA,EAAQ,OAAA;AAAA,IACR,IAAA,EAAQ,cAAA;AAAA,IACR,MAAA,EAAU;AAAA,MACR;AAAA,QACE,IAAA,EAAQ,WAAA;AAAA,QACR,IAAA,EAAQ,SAAA;AAAA,QACR,OAAA,EAAW,IAAA;AAAA,QACX,YAAA,EAAgB;AAAA,OAClB;AAAA,MACA;AAAA,QACE,IAAA,EAAQ,QAAA;AAAA,QACR,IAAA,EAAQ,SAAA;AAAA,QACR,OAAA,EAAW,KAAA;AAAA,QACX,YAAA,EAAgB;AAAA;AAClB,KACF;AAAA,IACA,SAAA,EAAa;AAAA,GACf;AAAA,EACA;AAAA,IACE,IAAA,EAAQ,OAAA;AAAA,IACR,IAAA,EAAQ,uBAAA;AAAA,IACR,MAAA,EAAU;AAAA,MACR;AAAA,QACE,IAAA,EAAQ,KAAA;AAAA,QACR,IAAA,EAAQ,SAAA;AAAA,QACR,OAAA,EAAW,KAAA;AAAA,QACX,YAAA,EAAgB;AAAA;AAClB,KACF;AAAA,IACA,SAAA,EAAa;AAAA,GACf;AAAA,EACA;AAAA,IACE,IAAA,EAAQ,OAAA;AAAA,IACR,IAAA,EAAQ,qBAAA;AAAA,IACR,MAAA,EAAU;AAAA,MACR;AAAA,QACE,IAAA,EAAQ,QAAA;AAAA,QACR,IAAA,EAAQ,SAAA;AAAA,QACR,OAAA,EAAW,IAAA;AAAA,QACX,YAAA,EAAgB;AAAA;AAClB,KACF;AAAA,IACA,SAAA,EAAa;AAAA,GACf;AAAA,EACA;AAAA,IACE,IAAA,EAAQ,OAAA;AAAA,IACR,IAAA,EAAQ,yBAAA;AAAA,IACR,MAAA,EAAU;AAAA,MACR;AAAA,QACE,IAAA,EAAQ,UAAA;AAAA,QACR,IAAA,EAAQ,SAAA;AAAA,QACR,OAAA,EAAW,IAAA;AAAA,QACX,YAAA,EAAgB;AAAA;AAClB,KACF;AAAA,IACA,SAAA,EAAa;AAAA,GACf;AAAA,EACA;AAAA,IACE,IAAA,EAAQ,OAAA;AAAA,IACR,IAAA,EAAQ,uBAAA;AAAA,IACR,MAAA,EAAU;AAAA,MACR;AAAA,QACE,IAAA,EAAQ,QAAA;AAAA,QACR,IAAA,EAAQ,SAAA;AAAA,QACR,OAAA,EAAW,IAAA;AAAA,QACX,YAAA,EAAgB;AAAA;AAClB,KACF;AAAA,IACA,SAAA,EAAa;AAAA,GACf;AAAA,EACA;AAAA,IACE,IAAA,EAAQ,OAAA;AAAA,IACR,IAAA,EAAQ,sBAAA;AAAA,IACR,MAAA,EAAU;AAAA,MACR;AAAA,QACE,IAAA,EAAQ,YAAA;AAAA,QACR,IAAA,EAAQ,SAAA;AAAA,QACR,OAAA,EAAW,KAAA;AAAA,QACX,YAAA,EAAgB;AAAA;AAClB,KACF;AAAA,IACA,SAAA,EAAa;AAAA,GACf;AAAA,EACA;AAAA,IACE,IAAA,EAAQ,OAAA;AAAA,IACR,IAAA,EAAQ,kBAAA;AAAA,IACR,MAAA,EAAU;AAAA,MACR;AAAA,QACE,IAAA,EAAQ,QAAA;AAAA,QACR,IAAA,EAAQ,SAAA;AAAA,QACR,OAAA,EAAW,IAAA;AAAA,QACX,YAAA,EAAgB;AAAA;AAClB,KACF;AAAA,IACA,SAAA,EAAa;AAAA,GACf;AAAA,EACA;AAAA,IACE,IAAA,EAAQ,OAAA;AAAA,IACR,IAAA,EAAQ,qBAAA;AAAA,IACR,MAAA,EAAU;AAAA,MACR;AAAA,QACE,IAAA,EAAQ,SAAA;AAAA,QACR,IAAA,EAAQ,SAAA;AAAA,QACR,OAAA,EAAW,IAAA;AAAA,QACX,YAAA,EAAgB;AAAA,OAClB;AAAA,MACA;AAAA,QACE,IAAA,EAAQ,QAAA;AAAA,QACR,IAAA,EAAQ,SAAA;AAAA,QACR,OAAA,EAAW,IAAA;AAAA,QACX,YAAA,EAAgB;AAAA;AAClB,KACF;AAAA,IACA,SAAA,EAAa;AAAA,GACf;AAAA,EACA;AAAA,IACE,IAAA,EAAQ,OAAA;AAAA,IACR,IAAA,EAAQ,uBAAA;AAAA,IACR,MAAA,EAAU;AAAA,MACR;AAAA,QACE,IAAA,EAAQ,SAAA;AAAA,QACR,IAAA,EAAQ,SAAA;AAAA,QACR,OAAA,EAAW,IAAA;AAAA,QACX,YAAA,EAAgB;AAAA,OAClB;AAAA,MACA;AAAA,QACE,IAAA,EAAQ,QAAA;AAAA,QACR,IAAA,EAAQ,SAAA;AAAA,QACR,OAAA,EAAW,IAAA;AAAA,QACX,YAAA,EAAgB;AAAA;AAClB,KACF;AAAA,IACA,SAAA,EAAa;AAAA,GACf;AAAA,EACA;AAAA,IACE,IAAA,EAAQ,OAAA;AAAA,IACR,IAAA,EAAQ,kBAAA;AAAA,IACR,MAAA,EAAU;AAAA,MACR;AAAA,QACE,IAAA,EAAQ,OAAA;AAAA,QACR,IAAA,EAAQ,SAAA;AAAA,QACR,YAAA,EAAgB;AAAA,OAClB;AAAA,MACA;AAAA,QACE,IAAA,EAAQ,gBAAA;AAAA,QACR,IAAA,EAAQ,SAAA;AAAA,QACR,YAAA,EAAgB;AAAA;AAClB;AACF,GACF;AAAA,EACA;AAAA,IACE,IAAA,EAAQ,OAAA;AAAA,IACR,IAAA,EAAQ,gBAAA;AAAA,IACR,QAAU;AAAC,GACb;AAAA,EACA;AAAA,IACE,IAAA,EAAQ,OAAA;AAAA,IACR,IAAA,EAAQ,eAAA;AAAA,IACR,QAAU;AAAC;AAEf;;;ACvcA,IAAA,0BAAA,GAAA;AAAA,EACE;AAAA,IACE,IAAA,EAAQ,UAAA;AAAA,IACR,IAAA,EAAQ,kBAAA;AAAA,IACR,MAAA,EAAU;AAAA,MACR;AAAA,QACE,IAAA,EAAQ,MAAA;AAAA,QACR,IAAA,EAAQ,SAAA;AAAA,QACR,YAAA,EAAgB;AAAA,OAClB;AAAA,MACA;AAAA,QACE,IAAA,EAAQ,UAAA;AAAA,QACR,IAAA,EAAQ,SAAA;AAAA,QACR,YAAA,EAAgB;AAAA;AAClB,KACF;AAAA,IACA,OAAA,EAAW;AAAA,MACT;AAAA,QACE,IAAA,EAAQ,EAAA;AAAA,QACR,IAAA,EAAQ,MAAA;AAAA,QACR,YAAA,EAAgB;AAAA;AAClB,KACF;AAAA,IACA,eAAA,EAAmB;AAAA,GACrB;AAAA,EACA;AAAA,IACE,IAAA,EAAQ,UAAA;AAAA,IACR,IAAA,EAAQ,kBAAA;AAAA,IACR,MAAA,EAAU;AAAA,MACR;AAAA,QACE,IAAA,EAAQ,aAAA;AAAA,QACR,IAAA,EAAQ,SAAA;AAAA,QACR,YAAA,EAAgB;AAAA,OAClB;AAAA,MACA;AAAA,QACE,IAAA,EAAQ,WAAA;AAAA,QACR,IAAA,EAAQ,MAAA;AAAA,QACR,YAAA,EAAgB;AAAA,OAClB;AAAA,MACA;AAAA,QACE,IAAA,EAAQ,SAAA;AAAA,QACR,IAAA,EAAQ,SAAA;AAAA,QACR,YAAA,EAAgB;AAAA;AAClB,KACF;AAAA,IACA,OAAA,EAAW;AAAA,MACT;AAAA,QACE,IAAA,EAAQ,YAAA;AAAA,QACR,IAAA,EAAQ,SAAA;AAAA,QACR,YAAA,EAAgB;AAAA;AAClB,KACF;AAAA,IACA,eAAA,EAAmB;AAAA,GACrB;AAAA,EACA;AAAA,IACE,IAAA,EAAQ,UAAA;AAAA,IACR,IAAA,EAAQ,oBAAA;AAAA,IACR,MAAA,EAAU;AAAA,MACR;AAAA,QACE,IAAA,EAAQ,OAAA;AAAA,QACR,IAAA,EAAQ,SAAA;AAAA,QACR,YAAA,EAAgB;AAAA,OAClB;AAAA,MACA;AAAA,QACE,IAAA,EAAQ,YAAA;AAAA,QACR,IAAA,EAAQ,SAAA;AAAA,QACR,YAAA,EAAgB;AAAA;AAClB,KACF;AAAA,IACA,OAAA,EAAW;AAAA,MACT;AAAA,QACE,IAAA,EAAQ,YAAA;AAAA,QACR,IAAA,EAAQ,SAAA;AAAA,QACR,YAAA,EAAgB;AAAA;AAClB,KACF;AAAA,IACA,eAAA,EAAmB;AAAA,GACrB;AAAA,EACA;AAAA,IACE,IAAA,EAAQ,UAAA;AAAA,IACR,IAAA,EAAQ,mBAAA;AAAA,IACR,QAAU,EAAC;AAAA,IACX,OAAA,EAAW;AAAA,MACT;AAAA,QACE,IAAA,EAAQ,YAAA;AAAA,QACR,IAAA,EAAQ,SAAA;AAAA,QACR,YAAA,EAAgB;AAAA;AAClB,KACF;AAAA,IACA,eAAA,EAAmB;AAAA,GACrB;AAAA,EACA;AAAA,IACE,IAAA,EAAQ,UAAA;AAAA,IACR,IAAA,EAAQ,+BAAA;AAAA,IACR,MAAA,EAAU;AAAA,MACR;AAAA,QACE,IAAA,EAAQ,UAAA;AAAA,QACR,IAAA,EAAQ,SAAA;AAAA,QACR,YAAA,EAAgB;AAAA;AAClB,KACF;AAAA,IACA,OAAA,EAAW;AAAA,MACT;AAAA,QACE,IAAA,EAAQ,EAAA;AAAA,QACR,IAAA,EAAQ,SAAA;AAAA,QACR,YAAA,EAAgB;AAAA;AAClB,KACF;AAAA,IACA,eAAA,EAAmB;AAAA,GACrB;AAAA,EACA;AAAA,IACE,IAAA,EAAQ,UAAA;AAAA,IACR,IAAA,EAAQ,kCAAA;AAAA,IACR,MAAA,EAAU;AAAA,MACR;AAAA,QACE,IAAA,EAAQ,UAAA;AAAA,QACR,IAAA,EAAQ,SAAA;AAAA,QACR,YAAA,EAAgB;AAAA;AAClB,KACF;AAAA,IACA,SAAW,EAAC;AAAA,IACZ,eAAA,EAAmB;AAAA,GACrB;AAAA,EACA;AAAA,IACE,IAAA,EAAQ,UAAA;AAAA,IACR,IAAA,EAAQ,+BAAA;AAAA,IACR,MAAA,EAAU;AAAA,MACR;AAAA,QACE,IAAA,EAAQ,UAAA;AAAA,QACR,IAAA,EAAQ,SAAA;AAAA,QACR,YAAA,EAAgB;AAAA,OAClB;AAAA,MACA;AAAA,QACE,IAAA,EAAQ,YAAA;AAAA,QACR,IAAA,EAAQ,SAAA;AAAA,QACR,YAAA,EAAgB;AAAA;AAClB,KACF;AAAA,IACA,SAAW,EAAC;AAAA,IACZ,eAAA,EAAmB;AAAA,GACrB;AAAA,EACA;AAAA,IACE,IAAA,EAAQ,OAAA;AAAA,IACR,IAAA,EAAQ,uBAAA;AAAA,IACR,MAAA,EAAU;AAAA,MACR;AAAA,QACE,IAAA,EAAQ,UAAA;AAAA,QACR,IAAA,EAAQ,SAAA;AAAA,QACR,OAAA,EAAW,IAAA;AAAA,QACX,YAAA,EAAgB;AAAA,OAClB;AAAA,MACA;AAAA,QACE,IAAA,EAAQ,YAAA;AAAA,QACR,IAAA,EAAQ,SAAA;AAAA,QACR,OAAA,EAAW,IAAA;AAAA,QACX,YAAA,EAAgB;AAAA,OAClB;AAAA,MACA;AAAA,QACE,IAAA,EAAQ,QAAA;AAAA,QACR,IAAA,EAAQ,QAAA;AAAA,QACR,OAAA,EAAW,KAAA;AAAA,QACX,YAAA,EAAgB;AAAA;AAClB,KACF;AAAA,IACA,SAAA,EAAa;AAAA,GACf;AAAA,EACA;AAAA,IACE,IAAA,EAAQ,OAAA;AAAA,IACR,IAAA,EAAQ,mCAAA;AAAA,IACR,MAAA,EAAU;AAAA,MACR;AAAA,QACE,IAAA,EAAQ,UAAA;AAAA,QACR,IAAA,EAAQ,SAAA;AAAA,QACR,OAAA,EAAW,IAAA;AAAA,QACX,YAAA,EAAgB;AAAA;AAClB,KACF;AAAA,IACA,SAAA,EAAa;AAAA,GACf;AAAA,EACA;AAAA,IACE,IAAA,EAAQ,OAAA;AAAA,IACR,IAAA,EAAQ,+BAAA;AAAA,IACR,MAAA,EAAU;AAAA,MACR;AAAA,QACE,IAAA,EAAQ,UAAA;AAAA,QACR,IAAA,EAAQ,SAAA;AAAA,QACR,OAAA,EAAW,IAAA;AAAA,QACX,YAAA,EAAgB;AAAA,OAClB;AAAA,MACA;AAAA,QACE,IAAA,EAAQ,YAAA;AAAA,QACR,IAAA,EAAQ,SAAA;AAAA,QACR,OAAA,EAAW,IAAA;AAAA,QACX,YAAA,EAAgB;AAAA;AAClB,KACF;AAAA,IACA,SAAA,EAAa;AAAA,GACf;AAAA,EACA;AAAA,IACE,IAAA,EAAQ,OAAA;AAAA,IACR,IAAA,EAAQ,mBAAA;AAAA,IACR,QAAU;AAAC,GACb;AAAA,EACA;AAAA,IACE,IAAA,EAAQ,OAAA;AAAA,IACR,IAAA,EAAQ,gBAAA;AAAA,IACR,QAAU;AAAC,GACb;AAAA,EACA;AAAA,IACE,IAAA,EAAQ,OAAA;AAAA,IACR,IAAA,EAAQ,eAAA;AAAA,IACR,QAAU;AAAC,GACb;AAAA,EACA;AAAA,IACE,IAAA,EAAQ,OAAA;AAAA,IACR,IAAA,EAAQ,eAAA;AAAA,IACR,QAAU;AAAC,GACb;AAAA,EACA;AAAA,IACE,IAAA,EAAQ,OAAA;AAAA,IACR,IAAA,EAAQ,gBAAA;AAAA,IACR,QAAU;AAAC;AAEf;;;AC/NA,IAAA,iBAAA,GAAA;AAAA,EACE;AAAA,IACE,IAAA,EAAQ,UAAA;AAAA,IACR,IAAA,EAAQ,uBAAA;AAAA,IACR,MAAA,EAAU;AAAA,MACR;AAAA,QACE,IAAA,EAAQ,SAAA;AAAA,QACR,IAAA,EAAQ,SAAA;AAAA,QACR,YAAA,EAAgB;AAAA,OAClB;AAAA,MACA;AAAA,QACE,IAAA,EAAQ,MAAA;AAAA,QACR,IAAA,EAAQ,WAAA;AAAA,QACR,YAAA,EAAgB;AAAA;AAClB,KACF;AAAA,IACA,SAAW,EAAC;AAAA,IACZ,eAAA,EAAmB;AAAA,GACrB;AAAA,EACA;AAAA,IACE,IAAA,EAAQ,UAAA;AAAA,IACR,IAAA,EAAQ,kBAAA;AAAA,IACR,MAAA,EAAU;AAAA,MACR;AAAA,QACE,IAAA,EAAQ,UAAA;AAAA,QACR,IAAA,EAAQ,SAAA;AAAA,QACR,YAAA,EAAgB;AAAA,OAClB;AAAA,MACA;AAAA,QACE,IAAA,EAAQ,MAAA;AAAA,QACR,IAAA,EAAQ,WAAA;AAAA,QACR,YAAA,EAAgB;AAAA;AAClB,KACF;AAAA,IACA,SAAW,EAAC;AAAA,IACZ,eAAA,EAAmB;AAAA,GACrB;AAAA,EACA;AAAA,IACE,IAAA,EAAQ,OAAA;AAAA,IACR,IAAA,EAAQ,wBAAA;AAAA,IACR,MAAA,EAAU;AAAA,MACR;AAAA,QACE,IAAA,EAAQ,SAAA;AAAA,QACR,IAAA,EAAQ,SAAA;AAAA,QACR,OAAA,EAAW,IAAA;AAAA,QACX,YAAA,EAAgB;AAAA,OAClB;AAAA,MACA;AAAA,QACE,IAAA,EAAQ,MAAA;AAAA,QACR,IAAA,EAAQ,WAAA;AAAA,QACR,OAAA,EAAW,KAAA;AAAA,QACX,YAAA,EAAgB;AAAA;AAClB,KACF;AAAA,IACA,SAAA,EAAa;AAAA,GACf;AAAA,EACA;AAAA,IACE,IAAA,EAAQ,OAAA;AAAA,IACR,IAAA,EAAQ,mBAAA;AAAA,IACR,MAAA,EAAU;AAAA,MACR;AAAA,QACE,IAAA,EAAQ,UAAA;AAAA,QACR,IAAA,EAAQ,SAAA;AAAA,QACR,OAAA,EAAW,IAAA;AAAA,QACX,YAAA,EAAgB;AAAA,OAClB;AAAA,MACA;AAAA,QACE,IAAA,EAAQ,MAAA;AAAA,QACR,IAAA,EAAQ,WAAA;AAAA,QACR,OAAA,EAAW,KAAA;AAAA,QACX,YAAA,EAAgB;AAAA;AAClB,KACF;AAAA,IACA,SAAA,EAAa;AAAA,GACf;AAAA,EACA;AAAA,IACE,IAAA,EAAQ,OAAA;AAAA,IACR,IAAA,EAAQ,qBAAA;AAAA,IACR,QAAU;AAAC,GACb;AAAA,EACA;AAAA,IACE,IAAA,EAAQ,OAAA;AAAA,IACR,IAAA,EAAQ,iBAAA;AAAA,IACR,QAAU;AAAC,GACb;AAAA,EACA;AAAA,IACE,IAAA,EAAQ,OAAA;AAAA,IACR,IAAA,EAAQ,kBAAA;AAAA,IACR,QAAU;AAAC,GACb;AAAA,EACA;AAAA,IACE,IAAA,EAAQ,OAAA;AAAA,IACR,IAAA,EAAQ,aAAA;AAAA,IACR,QAAU;AAAC;AAEf;;;AC/FA,IAAA,qBAAA,GAAA;AAAA,EACE;AAAA,IACE,IAAA,EAAQ,UAAA;AAAA,IACR,IAAA,EAAQ,2BAAA;AAAA,IACR,MAAA,EAAU;AAAA,MACR;AAAA,QACE,IAAA,EAAQ,SAAA;AAAA,QACR,IAAA,EAAQ,SAAA;AAAA,QACR,YAAA,EAAgB;AAAA,OAClB;AAAA,MACA;AAAA,QACE,IAAA,EAAQ,aAAA;AAAA,QACR,IAAA,EAAQ,QAAA;AAAA,QACR,YAAA,EAAgB;AAAA;AAClB,KACF;AAAA,IACA,SAAW,EAAC;AAAA,IACZ,eAAA,EAAmB;AAAA,GACrB;AAAA,EACA;AAAA,IACE,IAAA,EAAQ,UAAA;AAAA,IACR,IAAA,EAAQ,sBAAA;AAAA,IACR,MAAA,EAAU;AAAA,MACR;AAAA,QACE,IAAA,EAAQ,UAAA;AAAA,QACR,IAAA,EAAQ,SAAA;AAAA,QACR,YAAA,EAAgB;AAAA,OAClB;AAAA,MACA;AAAA,QACE,IAAA,EAAQ,aAAA;AAAA,QACR,IAAA,EAAQ,QAAA;AAAA,QACR,YAAA,EAAgB;AAAA;AAClB,KACF;AAAA,IACA,SAAW,EAAC;AAAA,IACZ,eAAA,EAAmB;AAAA,GACrB;AAAA,EACA;AAAA,IACE,IAAA,EAAQ,OAAA;AAAA,IACR,IAAA,EAAQ,4BAAA;AAAA,IACR,MAAA,EAAU;AAAA,MACR;AAAA,QACE,IAAA,EAAQ,SAAA;AAAA,QACR,IAAA,EAAQ,SAAA;AAAA,QACR,OAAA,EAAW,IAAA;AAAA,QACX,YAAA,EAAgB;AAAA,OAClB;AAAA,MACA;AAAA,QACE,IAAA,EAAQ,aAAA;AAAA,QACR,IAAA,EAAQ,QAAA;AAAA,QACR,OAAA,EAAW,KAAA;AAAA,QACX,YAAA,EAAgB;AAAA;AAClB,KACF;AAAA,IACA,SAAA,EAAa;AAAA,GACf;AAAA,EACA;AAAA,IACE,IAAA,EAAQ,OAAA;AAAA,IACR,IAAA,EAAQ,uBAAA;AAAA,IACR,MAAA,EAAU;AAAA,MACR;AAAA,QACE,IAAA,EAAQ,UAAA;AAAA,QACR,IAAA,EAAQ,SAAA;AAAA,QACR,OAAA,EAAW,IAAA;AAAA,QACX,YAAA,EAAgB;AAAA,OAClB;AAAA,MACA;AAAA,QACE,IAAA,EAAQ,aAAA;AAAA,QACR,IAAA,EAAQ,QAAA;AAAA,QACR,OAAA,EAAW,KAAA;AAAA,QACX,YAAA,EAAgB;AAAA;AAClB,KACF;AAAA,IACA,SAAA,EAAa;AAAA,GACf;AAAA,EACA;AAAA,IACE,IAAA,EAAQ,OAAA;AAAA,IACR,IAAA,EAAQ,qBAAA;AAAA,IACR,QAAU;AAAC,GACb;AAAA,EACA;AAAA,IACE,IAAA,EAAQ,OAAA;AAAA,IACR,IAAA,EAAQ,iBAAA;AAAA,IACR,QAAU;AAAC,GACb;AAAA,EACA;AAAA,IACE,IAAA,EAAQ,OAAA;AAAA,IACR,IAAA,EAAQ,kBAAA;AAAA,IACR,QAAU;AAAC;AAEf;;;AC1FA,IAAA,wBAAA,GAAA;AAAA,EACE;AAAA,IACE,IAAA,EAAQ,UAAA;AAAA,IACR,IAAA,EAAQ,uBAAA;AAAA,IACR,MAAA,EAAU;AAAA,MACR;AAAA,QACE,IAAA,EAAQ,UAAA;AAAA,QACR,IAAA,EAAQ,SAAA;AAAA,QACR,YAAA,EAAgB;AAAA;AAClB,KACF;AAAA,IACA,OAAA,EAAW;AAAA,MACT;AAAA,QACE,IAAA,EAAQ,EAAA;AAAA,QACR,IAAA,EAAQ,MAAA;AAAA,QACR,YAAA,EAAgB;AAAA;AAClB,KACF;AAAA,IACA,eAAA,EAAmB;AAAA,GACrB;AAAA,EACA;AAAA,IACE,IAAA,EAAQ,UAAA;AAAA,IACR,IAAA,EAAQ,gBAAA;AAAA,IACR,MAAA,EAAU;AAAA,MACR;AAAA,QACE,IAAA,EAAQ,UAAA;AAAA,QACR,IAAA,EAAQ,SAAA;AAAA,QACR,YAAA,EAAgB;AAAA;AAClB,KACF;AAAA,IACA,OAAA,EAAW;AAAA,MACT;AAAA,QACE,IAAA,EAAQ,QAAA;AAAA,QACR,IAAA,EAAQ,SAAA;AAAA,QACR,YAAA,EAAgB;AAAA,OAClB;AAAA,MACA;AAAA,QACE,IAAA,EAAQ,cAAA;AAAA,QACR,IAAA,EAAQ,OAAA;AAAA,QACR,YAAA,EAAgB;AAAA,OAClB;AAAA,MACA;AAAA,QACE,IAAA,EAAQ,UAAA;AAAA,QACR,IAAA,EAAQ,SAAA;AAAA,QACR,YAAA,EAAgB;AAAA,OAClB;AAAA,MACA;AAAA,QACE,IAAA,EAAQ,WAAA;AAAA,QACR,IAAA,EAAQ,SAAA;AAAA,QACR,YAAA,EAAgB;AAAA,OAClB;AAAA,MACA;AAAA,QACE,IAAA,EAAQ,WAAA;AAAA,QACR,IAAA,EAAQ,OAAA;AAAA,QACR,YAAA,EAAgB;AAAA,OAClB;AAAA,MACA;AAAA,QACE,IAAA,EAAQ,YAAA;AAAA,QACR,IAAA,EAAQ,OAAA;AAAA,QACR,YAAA,EAAgB;AAAA,OAClB;AAAA,MACA;AAAA,QACE,IAAA,EAAQ,kBAAA;AAAA,QACR,IAAA,EAAQ,SAAA;AAAA,QACR,YAAA,EAAgB;AAAA,OAClB;AAAA,MACA;AAAA,QACE,IAAA,EAAQ,UAAA;AAAA,QACR,IAAA,EAAQ,MAAA;AAAA,QACR,YAAA,EAAgB;AAAA,OAClB;AAAA,MACA;AAAA,QACE,IAAA,EAAQ,aAAA;AAAA,QACR,IAAA,EAAQ,OAAA;AAAA,QACR,YAAA,EAAgB;AAAA,OAClB;AAAA,MACA;AAAA,QACE,IAAA,EAAQ,eAAA;AAAA,QACR,IAAA,EAAQ,SAAA;AAAA,QACR,YAAA,EAAgB;AAAA;AAClB,KACF;AAAA,IACA,eAAA,EAAmB;AAAA,GACrB;AAAA,EACA;AAAA,IACE,IAAA,EAAQ,UAAA;AAAA,IACR,IAAA,EAAQ,eAAA;AAAA,IACR,MAAA,EAAU;AAAA,MACR;AAAA,QACE,IAAA,EAAQ,UAAA;AAAA,QACR,IAAA,EAAQ,SAAA;AAAA,QACR,YAAA,EAAgB;AAAA;AAClB,KACF;AAAA,IACA,OAAA,EAAW;AAAA,MACT;AAAA,QACE,IAAA,EAAQ,EAAA;AAAA,QACR,IAAA,EAAQ,MAAA;AAAA,QACR,YAAA,EAAgB;AAAA;AAClB,KACF;AAAA,IACA,eAAA,EAAmB;AAAA;AAEvB;;;ACvGA,IAAA,2BAAA,GAAA;AAAA,EACE;AAAA,IACE,IAAA,EAAQ,UAAA;AAAA,IACR,IAAA,EAAQ,uBAAA;AAAA,IACR,MAAA,EAAU;AAAA,MACR;AAAA,QACE,IAAA,EAAQ,SAAA;AAAA,QACR,IAAA,EAAQ,SAAA;AAAA,QACR,YAAA,EAAgB;AAAA,OAClB;AAAA,MACA;AAAA,QACE,IAAA,EAAQ,YAAA;AAAA,QACR,IAAA,EAAQ,SAAA;AAAA,QACR,YAAA,EAAgB;AAAA,OAClB;AAAA,MACA;AAAA,QACE,IAAA,EAAQ,aAAA;AAAA,QACR,IAAA,EAAQ,OAAA;AAAA,QACR,YAAA,EAAgB;AAAA,OAClB;AAAA,MACA;AAAA,QACE,IAAA,EAAQ,UAAA;AAAA,QACR,IAAA,EAAQ,SAAA;AAAA,QACR,YAAA,EAAgB;AAAA,OAClB;AAAA,MACA;AAAA,QACE,IAAA,EAAQ,WAAA;AAAA,QACR,IAAA,EAAQ,SAAA;AAAA,QACR,YAAA,EAAgB;AAAA,OAClB;AAAA,MACA;AAAA,QACE,IAAA,EAAQ,UAAA;AAAA,QACR,IAAA,EAAQ,UAAA;AAAA,QACR,YAAA,EAAgB;AAAA,OAClB;AAAA,MACA;AAAA,QACE,IAAA,EAAQ,UAAA;AAAA,QACR,IAAA,EAAQ,SAAA;AAAA,QACR,YAAA,EAAgB;AAAA,OAClB;AAAA,MACA;AAAA,QACE,IAAA,EAAQ,iBAAA;AAAA,QACR,IAAA,EAAQ,SAAA;AAAA,QACR,YAAA,EAAgB;AAAA,OAClB;AAAA,MACA;AAAA,QACE,IAAA,EAAQ,eAAA;AAAA,QACR,IAAA,EAAQ,OAAA;AAAA,QACR,YAAA,EAAgB;AAAA,OAClB;AAAA,MACA;AAAA,QACE,IAAA,EAAQ,UAAA;AAAA,QACR,IAAA,EAAQ,QAAA;AAAA,QACR,YAAA,EAAgB;AAAA,OAClB;AAAA,MACA;AAAA,QACE,IAAA,EAAQ,MAAA;AAAA,QACR,IAAA,EAAQ,WAAA;AAAA,QACR,YAAA,EAAgB;AAAA,OAClB;AAAA,MACA;AAAA,QACE,IAAA,EAAQ,kBAAA;AAAA,QACR,IAAA,EAAQ,SAAA;AAAA,QACR,YAAA,EAAgB;AAAA;AAClB,KACF;AAAA,IACA,OAAA,EAAW;AAAA,MACT;AAAA,QACE,IAAA,EAAQ,UAAA;AAAA,QACR,IAAA,EAAQ,SAAA;AAAA,QACR,YAAA,EAAgB;AAAA;AAClB,KACF;AAAA,IACA,eAAA,EAAmB;AAAA,GACrB;AAAA,EACA;AAAA,IACE,IAAA,EAAQ,UAAA;AAAA,IACR,IAAA,EAAQ,iBAAA;AAAA,IACR,QAAU,EAAC;AAAA,IACX,OAAA,EAAW;AAAA,MACT;AAAA,QACE,IAAA,EAAQ,EAAA;AAAA,QACR,IAAA,EAAQ,SAAA;AAAA,QACR,YAAA,EAAgB;AAAA;AAClB,KACF;AAAA,IACA,eAAA,EAAmB;AAAA,GACrB;AAAA,EACA;AAAA,IACE,IAAA,EAAQ,UAAA;AAAA,IACR,IAAA,EAAQ,wBAAA;AAAA,IACR,MAAA,EAAU;AAAA,MACR;AAAA,QACE,IAAA,EAAQ,UAAA;AAAA,QACR,IAAA,EAAQ,SAAA;AAAA,QACR,YAAA,EAAgB;AAAA;AAClB,KACF;AAAA,IACA,SAAW,EAAC;AAAA,IACZ,eAAA,EAAmB;AAAA,GACrB;AAAA,EACA;AAAA,IACE,IAAA,EAAQ,UAAA;AAAA,IACR,IAAA,EAAQ,wBAAA;AAAA,IACR,MAAA,EAAU;AAAA,MACR;AAAA,QACE,IAAA,EAAQ,UAAA;AAAA,QACR,IAAA,EAAQ,SAAA;AAAA,QACR,YAAA,EAAgB;AAAA,OAClB;AAAA,MACA;AAAA,QACE,IAAA,EAAQ,gBAAA;AAAA,QACR,IAAA,EAAQ,SAAA;AAAA,QACR,YAAA,EAAgB;AAAA;AAClB,KACF;AAAA,IACA,SAAW,EAAC;AAAA,IACZ,eAAA,EAAmB;AAAA,GACrB;AAAA,EACA;AAAA,IACE,IAAA,EAAQ,UAAA;AAAA,IACR,IAAA,EAAQ,iBAAA;AAAA,IACR,MAAA,EAAU;AAAA,MACR;AAAA,QACE,IAAA,EAAQ,cAAA;AAAA,QACR,IAAA,EAAQ,SAAA;AAAA,QACR,YAAA,EAAgB;AAAA;AAClB,KACF;AAAA,IACA,SAAW,EAAC;AAAA,IACZ,eAAA,EAAmB;AAAA,GACrB;AAAA,EACA;AAAA,IACE,IAAA,EAAQ,OAAA;AAAA,IACR,IAAA,EAAQ,eAAA;AAAA,IACR,MAAA,EAAU;AAAA,MACR;AAAA,QACE,IAAA,EAAQ,UAAA;AAAA,QACR,IAAA,EAAQ,SAAA;AAAA,QACR,OAAA,EAAW,IAAA;AAAA,QACX,YAAA,EAAgB;AAAA,OAClB;AAAA,MACA;AAAA,QACE,IAAA,EAAQ,SAAA;AAAA,QACR,IAAA,EAAQ,SAAA;AAAA,QACR,OAAA,EAAW,IAAA;AAAA,QACX,YAAA,EAAgB;AAAA,OAClB;AAAA,MACA;AAAA,QACE,IAAA,EAAQ,SAAA;AAAA,QACR,IAAA,EAAQ,SAAA;AAAA,QACR,OAAA,EAAW,IAAA;AAAA,QACX,YAAA,EAAgB;AAAA,OAClB;AAAA,MACA;AAAA,QACE,IAAA,EAAQ,aAAA;AAAA,QACR,IAAA,EAAQ,SAAA;AAAA,QACR,OAAA,EAAW,KAAA;AAAA,QACX,YAAA,EAAgB;AAAA,OAClB;AAAA,MACA;AAAA,QACE,IAAA,EAAQ,iBAAA;AAAA,QACR,IAAA,EAAQ,SAAA;AAAA,QACR,OAAA,EAAW,KAAA;AAAA,QACX,YAAA,EAAgB;AAAA,OAClB;AAAA,MACA;AAAA,QACE,IAAA,EAAQ,UAAA;AAAA,QACR,IAAA,EAAQ,SAAA;AAAA,QACR,OAAA,EAAW,KAAA;AAAA,QACX,YAAA,EAAgB;AAAA,OAClB;AAAA,MACA;AAAA,QACE,IAAA,EAAQ,UAAA;AAAA,QACR,IAAA,EAAQ,QAAA;AAAA,QACR,OAAA,EAAW,KAAA;AAAA,QACX,YAAA,EAAgB;AAAA,OAClB;AAAA,MACA;AAAA,QACE,IAAA,EAAQ,UAAA;AAAA,QACR,IAAA,EAAQ,UAAA;AAAA,QACR,OAAA,EAAW,KAAA;AAAA,QACX,YAAA,EAAgB;AAAA,OAClB;AAAA,MACA;AAAA,QACE,IAAA,EAAQ,SAAA;AAAA,QACR,IAAA,EAAQ,SAAA;AAAA,QACR,OAAA,EAAW,KAAA;AAAA,QACX,YAAA,EAAgB;AAAA,OAClB;AAAA,MACA;AAAA,QACE,IAAA,EAAQ,MAAA;AAAA,QACR,IAAA,EAAQ,WAAA;AAAA,QACR,OAAA,EAAW,KAAA;AAAA,QACX,YAAA,EAAgB;AAAA;AAClB,KACF;AAAA,IACA,SAAA,EAAa;AAAA,GACf;AAAA,EACA;AAAA,IACE,IAAA,EAAQ,OAAA;AAAA,IACR,IAAA,EAAQ,4BAAA;AAAA,IACR,MAAA,EAAU;AAAA,MACR;AAAA,QACE,IAAA,EAAQ,SAAA;AAAA,QACR,IAAA,EAAQ,SAAA;AAAA,QACR,OAAA,EAAW,IAAA;AAAA,QACX,YAAA,EAAgB;AAAA,OAClB;AAAA,MACA;AAAA,QACE,IAAA,EAAQ,OAAA;AAAA,QACR,IAAA,EAAQ,SAAA;AAAA,QACR,OAAA,EAAW,IAAA;AAAA,QACX,YAAA,EAAgB;AAAA,OAClB;AAAA,MACA;AAAA,QACE,IAAA,EAAQ,eAAA;AAAA,QACR,IAAA,EAAQ,SAAA;AAAA,QACR,OAAA,EAAW,KAAA;AAAA,QACX,YAAA,EAAgB;AAAA,OAClB;AAAA,MACA;AAAA,QACE,IAAA,EAAQ,YAAA;AAAA,QACR,IAAA,EAAQ,SAAA;AAAA,QACR,OAAA,EAAW,KAAA;AAAA,QACX,YAAA,EAAgB;AAAA;AAClB,KACF;AAAA,IACA,SAAA,EAAa;AAAA,GACf;AAAA,EACA;AAAA,IACE,IAAA,EAAQ,OAAA;AAAA,IACR,IAAA,EAAQ,gBAAA;AAAA,IACR,MAAA,EAAU;AAAA,MACR;AAAA,QACE,IAAA,EAAQ,UAAA;AAAA,QACR,IAAA,EAAQ,SAAA;AAAA,QACR,OAAA,EAAW,IAAA;AAAA,QACX,YAAA,EAAgB;AAAA,OAClB;AAAA,MACA;AAAA,QACE,IAAA,EAAQ,YAAA;AAAA,QACR,IAAA,EAAQ,SAAA;AAAA,QACR,OAAA,EAAW,IAAA;AAAA,QACX,YAAA,EAAgB;AAAA,OAClB;AAAA,MACA;AAAA,QACE,IAAA,EAAQ,SAAA;AAAA,QACR,IAAA,EAAQ,QAAA;AAAA,QACR,OAAA,EAAW,KAAA;AAAA,QACX,YAAA,EAAgB;AAAA;AAClB,KACF;AAAA,IACA,SAAA,EAAa;AAAA,GACf;AAAA,EACA;AAAA,IACE,IAAA,EAAQ,OAAA;AAAA,IACR,IAAA,EAAQ,wBAAA;AAAA,IACR,MAAA,EAAU;AAAA,MACR;AAAA,QACE,IAAA,EAAQ,UAAA;AAAA,QACR,IAAA,EAAQ,SAAA;AAAA,QACR,OAAA,EAAW,IAAA;AAAA,QACX,YAAA,EAAgB;AAAA,OAClB;AAAA,MACA;AAAA,QACE,IAAA,EAAQ,SAAA;AAAA,QACR,IAAA,EAAQ,SAAA;AAAA,QACR,OAAA,EAAW,IAAA;AAAA,QACX,YAAA,EAAgB;AAAA,OAClB;AAAA,MACA;AAAA,QACE,IAAA,EAAQ,YAAA;AAAA,QACR,IAAA,EAAQ,SAAA;AAAA,QACR,OAAA,EAAW,IAAA;AAAA,QACX,YAAA,EAAgB;AAAA,OAClB;AAAA,MACA;AAAA,QACE,IAAA,EAAQ,aAAA;AAAA,QACR,IAAA,EAAQ,OAAA;AAAA,QACR,OAAA,EAAW,KAAA;AAAA,QACX,YAAA,EAAgB;AAAA,OAClB;AAAA,MACA;AAAA,QACE,IAAA,EAAQ,WAAA;AAAA,QACR,IAAA,EAAQ,OAAA;AAAA,QACR,OAAA,EAAW,KAAA;AAAA,QACX,YAAA,EAAgB;AAAA,OAClB;AAAA,MACA;AAAA,QACE,IAAA,EAAQ,UAAA;AAAA,QACR,IAAA,EAAQ,SAAA;AAAA,QACR,OAAA,EAAW,KAAA;AAAA,QACX,YAAA,EAAgB;AAAA,OAClB;AAAA,MACA;AAAA,QACE,IAAA,EAAQ,WAAA;AAAA,QACR,IAAA,EAAQ,SAAA;AAAA,QACR,OAAA,EAAW,KAAA;AAAA,QACX,YAAA,EAAgB;AAAA,OAClB;AAAA,MACA;AAAA,QACE,IAAA,EAAQ,kBAAA;AAAA,QACR,IAAA,EAAQ,SAAA;AAAA,QACR,OAAA,EAAW,KAAA;AAAA,QACX,YAAA,EAAgB;AAAA;AAClB,KACF;AAAA,IACA,SAAA,EAAa;AAAA,GACf;AAAA,EACA;AAAA,IACE,IAAA,EAAQ,OAAA;AAAA,IACR,IAAA,EAAQ,wBAAA;AAAA,IACR,MAAA,EAAU;AAAA,MACR;AAAA,QACE,IAAA,EAAQ,UAAA;AAAA,QACR,IAAA,EAAQ,SAAA;AAAA,QACR,OAAA,EAAW,IAAA;AAAA,QACX,YAAA,EAAgB;AAAA,OAClB;AAAA,MACA;AAAA,QACE,IAAA,EAAQ,QAAA;AAAA,QACR,IAAA,EAAQ,SAAA;AAAA,QACR,OAAA,EAAW,IAAA;AAAA,QACX,YAAA,EAAgB;AAAA;AAClB,KACF;AAAA,IACA,SAAA,EAAa;AAAA,GACf;AAAA,EACA;AAAA,IACE,IAAA,EAAQ,OAAA;AAAA,IACR,IAAA,EAAQ,yBAAA;AAAA,IACR,MAAA,EAAU;AAAA,MACR;AAAA,QACE,IAAA,EAAQ,UAAA;AAAA,QACR,IAAA,EAAQ,SAAA;AAAA,QACR,OAAA,EAAW,IAAA;AAAA,QACX,YAAA,EAAgB;AAAA,OAClB;AAAA,MACA;AAAA,QACE,IAAA,EAAQ,YAAA;AAAA,QACR,IAAA,EAAQ,OAAA;AAAA,QACR,OAAA,EAAW,KAAA;AAAA,QACX,YAAA,EAAgB;AAAA,OAClB;AAAA,MACA;AAAA,QACE,IAAA,EAAQ,aAAA;AAAA,QACR,IAAA,EAAQ,OAAA;AAAA,QACR,OAAA,EAAW,KAAA;AAAA,QACX,YAAA,EAAgB;AAAA,OAClB;AAAA,MACA;AAAA,QACE,IAAA,EAAQ,eAAA;AAAA,QACR,IAAA,EAAQ,SAAA;AAAA,QACR,OAAA,EAAW,KAAA;AAAA,QACX,YAAA,EAAgB;AAAA,OAClB;AAAA,MACA;AAAA,QACE,IAAA,EAAQ,SAAA;AAAA,QACR,IAAA,EAAQ,QAAA;AAAA,QACR,OAAA,EAAW,KAAA;AAAA,QACX,YAAA,EAAgB;AAAA;AAClB,KACF;AAAA,IACA,SAAA,EAAa;AAAA,GACf;AAAA,EACA;AAAA,IACE,IAAA,EAAQ,OAAA;AAAA,IACR,IAAA,EAAQ,qBAAA;AAAA,IACR,MAAA,EAAU;AAAA,MACR;AAAA,QACE,IAAA,EAAQ,cAAA;AAAA,QACR,IAAA,EAAQ,SAAA;AAAA,QACR,OAAA,EAAW,IAAA;AAAA,QACX,YAAA,EAAgB;AAAA;AAClB,KACF;AAAA,IACA,SAAA,EAAa;AAAA,GACf;AAAA,EACA;AAAA,IACE,IAAA,EAAQ,OAAA;AAAA,IACR,IAAA,EAAQ,6BAAA;AAAA,IACR,MAAA,EAAU;AAAA,MACR;AAAA,QACE,IAAA,EAAQ,sBAAA;AAAA,QACR,IAAA,EAAQ,SAAA;AAAA,QACR,OAAA,EAAW,IAAA;AAAA,QACX,YAAA,EAAgB;AAAA,OAClB;AAAA,MACA;AAAA,QACE,IAAA,EAAQ,mBAAA;AAAA,QACR,IAAA,EAAQ,SAAA;AAAA,QACR,OAAA,EAAW,IAAA;AAAA,QACX,YAAA,EAAgB;AAAA;AAClB,KACF;AAAA,IACA,SAAA,EAAa;AAAA,GACf;AAAA,EACA;AAAA,IACE,IAAA,EAAQ,OAAA;AAAA,IACR,IAAA,EAAQ,qBAAA;AAAA,IACR,QAAU;AAAC,GACb;AAAA,EACA;AAAA,IACE,IAAA,EAAQ,OAAA;AAAA,IACR,IAAA,EAAQ,2BAAA;AAAA,IACR,QAAU;AAAC,GACb;AAAA,EACA;AAAA,IACE,IAAA,EAAQ,OAAA;AAAA,IACR,IAAA,EAAQ,qBAAA;AAAA,IACR,QAAU;AAAC,GACb;AAAA,EACA;AAAA,IACE,IAAA,EAAQ,OAAA;AAAA,IACR,IAAA,EAAQ,0BAAA;AAAA,IACR,QAAU;AAAC,GACb;AAAA,EACA;AAAA,IACE,IAAA,EAAQ,OAAA;AAAA,IACR,IAAA,EAAQ,sBAAA;AAAA,IACR,QAAU;AAAC,GACb;AAAA,EACA;AAAA,IACE,IAAA,EAAQ,OAAA;AAAA,IACR,IAAA,EAAQ,iBAAA;AAAA,IACR,QAAU;AAAC,GACb;AAAA,EACA;AAAA,IACE,IAAA,EAAQ,OAAA;AAAA,IACR,IAAA,EAAQ,sBAAA;AAAA,IACR,MAAA,EAAU;AAAA,MACR;AAAA,QACE,IAAA,EAAQ,UAAA;AAAA,QACR,IAAA,EAAQ,OAAA;AAAA,QACR,YAAA,EAAgB;AAAA,OAClB;AAAA,MACA;AAAA,QACE,IAAA,EAAQ,QAAA;AAAA,QACR,IAAA,EAAQ,OAAA;AAAA,QACR,YAAA,EAAgB;AAAA;AAClB;AACF,GACF;AAAA,EACA;AAAA,IACE,IAAA,EAAQ,OAAA;AAAA,IACR,IAAA,EAAQ,uBAAA;AAAA,IACR,QAAU;AAAC,GACb;AAAA,EACA;AAAA,IACE,IAAA,EAAQ,OAAA;AAAA,IACR,IAAA,EAAQ,qBAAA;AAAA,IACR,QAAU;AAAC,GACb;AAAA,EACA;AAAA,IACE,IAAA,EAAQ,OAAA;AAAA,IACR,IAAA,EAAQ,gBAAA;AAAA,IACR,QAAU;AAAC,GACb;AAAA,EACA;AAAA,IACE,IAAA,EAAQ,OAAA;AAAA,IACR,IAAA,EAAQ,mBAAA;AAAA,IACR,QAAU;AAAC,GACb;AAAA,EACA;AAAA,IACE,IAAA,EAAQ,OAAA;AAAA,IACR,IAAA,EAAQ,iBAAA;AAAA,IACR,QAAU;AAAC,GACb;AAAA,EACA;AAAA,IACE,IAAA,EAAQ,OAAA;AAAA,IACR,IAAA,EAAQ,iBAAA;AAAA,IACR,QAAU;AAAC,GACb;AAAA,EACA;AAAA,IACE,IAAA,EAAQ,OAAA;AAAA,IACR,IAAA,EAAQ,iBAAA;AAAA,IACR,QAAU;AAAC,GACb;AAAA,EACA;AAAA,IACE,IAAA,EAAQ,OAAA;AAAA,IACR,IAAA,EAAQ,uBAAA;AAAA,IACR,QAAU;AAAC,GACb;AAAA,EACA;AAAA,IACE,IAAA,EAAQ,OAAA;AAAA,IACR,IAAA,EAAQ,iBAAA;AAAA,IACR,QAAU;AAAC,GACb;AAAA,EACA;AAAA,IACE,IAAA,EAAQ,OAAA;AAAA,IACR,IAAA,EAAQ,iBAAA;AAAA,IACR,QAAU;AAAC,GACb;AAAA,EACA;AAAA,IACE,IAAA,EAAQ,OAAA;AAAA,IACR,IAAA,EAAQ,sBAAA;AAAA,IACR,QAAU;AAAC,GACb;AAAA,EACA;AAAA,IACE,IAAA,EAAQ,OAAA;AAAA,IACR,IAAA,EAAQ,qBAAA;AAAA,IACR,QAAU;AAAC,GACb;AAAA,EACA;AAAA,IACE,IAAA,EAAQ,OAAA;AAAA,IACR,IAAA,EAAQ,kBAAA;AAAA,IACR,MAAA,EAAU;AAAA,MACR;AAAA,QACE,IAAA,EAAQ,OAAA;AAAA,QACR,IAAA,EAAQ,SAAA;AAAA,QACR,YAAA,EAAgB;AAAA,OAClB;AAAA,MACA;AAAA,QACE,IAAA,EAAQ,gBAAA;AAAA,QACR,IAAA,EAAQ,SAAA;AAAA,QACR,YAAA,EAAgB;AAAA;AAClB;AACF,GACF;AAAA,EACA;AAAA,IACE,IAAA,EAAQ,OAAA;AAAA,IACR,IAAA,EAAQ,gBAAA;AAAA,IACR,QAAU;AAAC,GACb;AAAA,EACA;AAAA,IACE,IAAA,EAAQ,OAAA;AAAA,IACR,IAAA,EAAQ,qBAAA;AAAA,IACR,QAAU;AAAC,GACb;AAAA,EACA;AAAA,IACE,IAAA,EAAQ,OAAA;AAAA,IACR,IAAA,EAAQ,iBAAA;AAAA,IACR,QAAU;AAAC,GACb;AAAA,EACA;AAAA,IACE,IAAA,EAAQ,OAAA;AAAA,IACR,IAAA,EAAQ,4BAAA;AAAA,IACR,QAAU;AAAC,GACb;AAAA,EACA;AAAA,IACE,IAAA,EAAQ,OAAA;AAAA,IACR,IAAA,EAAQ,gBAAA;AAAA,IACR,QAAU;AAAC,GACb;AAAA,EACA;AAAA,IACE,IAAA,EAAQ,OAAA;AAAA,IACR,IAAA,EAAQ,2BAAA;AAAA,IACR,QAAU;AAAC,GACb;AAAA,EACA;AAAA,IACE,IAAA,EAAQ,OAAA;AAAA,IACR,IAAA,EAAQ,uBAAA;AAAA,IACR,QAAU;AAAC,GACb;AAAA,EACA;AAAA,IACE,IAAA,EAAQ,OAAA;AAAA,IACR,IAAA,EAAQ,0BAAA;AAAA,IACR,QAAU;AAAC,GACb;AAAA,EACA;AAAA,IACE,IAAA,EAAQ,OAAA;AAAA,IACR,IAAA,EAAQ,aAAA;AAAA,IACR,QAAU;AAAC,GACb;AAAA,EACA;AAAA,IACE,IAAA,EAAQ,OAAA;AAAA,IACR,IAAA,EAAQ,sBAAA;AAAA,IACR,QAAU;AAAC,GACb;AAAA,EACA;AAAA,IACE,IAAA,EAAQ,OAAA;AAAA,IACR,IAAA,EAAQ,oBAAA;AAAA,IACR,QAAU;AAAC,GACb;AAAA,EACA;AAAA,IACE,IAAA,EAAQ,OAAA;AAAA,IACR,IAAA,EAAQ,eAAA;AAAA,IACR,QAAU;AAAC,GACb;AAAA,EACA;AAAA,IACE,IAAA,EAAQ,OAAA;AAAA,IACR,IAAA,EAAQ,eAAA;AAAA,IACR,QAAU;AAAC,GACb;AAAA,EACA;AAAA,IACE,IAAA,EAAQ,OAAA;AAAA,IACR,IAAA,EAAQ,gBAAA;AAAA,IACR,QAAU;AAAC,GACb;AAAA,EACA;AAAA,IACE,IAAA,EAAQ,OAAA;AAAA,IACR,IAAA,EAAQ,aAAA;AAAA,IACR,QAAU;AAAC,GACb;AAAA,EACA;AAAA,IACE,IAAA,EAAQ,OAAA;AAAA,IACR,IAAA,EAAQ,iBAAA;AAAA,IACR,QAAU;AAAC;AAEf;;;ACxlBA,IAAA,wBAAA,GAAA;AAAA,EACE;AAAA,IACE,IAAA,EAAQ,UAAA;AAAA,IACR,IAAA,EAAQ,mBAAA;AAAA,IACR,MAAA,EAAU;AAAA,MACR;AAAA,QACE,IAAA,EAAQ,UAAA;AAAA,QACR,IAAA,EAAQ,WAAA;AAAA,QACR,YAAA,EAAgB;AAAA;AAClB,KACF;AAAA,IACA,OAAA,EAAW;AAAA,MACT;AAAA,QACE,IAAA,EAAQ,gBAAA;AAAA,QACR,IAAA,EAAQ,SAAA;AAAA,QACR,YAAA,EAAgB;AAAA;AAClB,KACF;AAAA,IACA,eAAA,EAAmB;AAAA,GACrB;AAAA,EACA;AAAA,IACE,IAAA,EAAQ,UAAA;AAAA,IACR,IAAA,EAAQ,kBAAA;AAAA,IACR,MAAA,EAAU;AAAA,MACR;AAAA,QACE,IAAA,EAAQ,UAAA;AAAA,QACR,IAAA,EAAQ,SAAA;AAAA,QACR,YAAA,EAAgB;AAAA,OAClB;AAAA,MACA;AAAA,QACE,IAAA,EAAQ,QAAA;AAAA,QACR,IAAA,EAAQ,SAAA;AAAA,QACR,YAAA,EAAgB,2BAAA;AAAA,QAChB,UAAA,EAAc;AAAA,UACZ;AAAA,YACE,IAAA,EAAQ,WAAA;AAAA,YACR,IAAA,EAAQ,SAAA;AAAA,YACR,YAAA,EAAgB;AAAA,WAClB;AAAA,UACA;AAAA,YACE,IAAA,EAAQ,MAAA;AAAA,YACR,IAAA,EAAQ,OAAA;AAAA,YACR,YAAA,EAAgB;AAAA,WAClB;AAAA,UACA;AAAA,YACE,IAAA,EAAQ,MAAA;AAAA,YACR,IAAA,EAAQ,SAAA;AAAA,YACR,YAAA,EAAgB;AAAA,WAClB;AAAA,UACA;AAAA,YACE,IAAA,EAAQ,KAAA;AAAA,YACR,IAAA,EAAQ,SAAA;AAAA,YACR,YAAA,EAAgB;AAAA,WAClB;AAAA,UACA;AAAA,YACE,IAAA,EAAQ,QAAA;AAAA,YACR,IAAA,EAAQ,SAAA;AAAA,YACR,YAAA,EAAgB;AAAA;AAClB;AACF;AACF,KACF;AAAA,IACA,OAAA,EAAW;AAAA,MACT;AAAA,QACE,IAAA,EAAQ,UAAA;AAAA,QACR,IAAA,EAAQ,WAAA;AAAA,QACR,YAAA,EAAgB;AAAA;AAClB,KACF;AAAA,IACA,eAAA,EAAmB;AAAA,GACrB;AAAA,EACA;AAAA,IACE,IAAA,EAAQ,UAAA;AAAA,IACR,IAAA,EAAQ,kBAAA;AAAA,IACR,MAAA,EAAU;AAAA,MACR;AAAA,QACE,IAAA,EAAQ,UAAA;AAAA,QACR,IAAA,EAAQ,SAAA;AAAA,QACR,YAAA,EAAgB;AAAA,OAClB;AAAA,MACA;AAAA,QACE,IAAA,EAAQ,gBAAA;AAAA,QACR,IAAA,EAAQ,WAAA;AAAA,QACR,YAAA,EAAgB;AAAA,OAClB;AAAA,MACA;AAAA,QACE,IAAA,EAAQ,WAAA;AAAA,QACR,IAAA,EAAQ,SAAA;AAAA,QACR,YAAA,EAAgB,2BAAA;AAAA,QAChB,UAAA,EAAc;AAAA,UACZ;AAAA,YACE,IAAA,EAAQ,WAAA;AAAA,YACR,IAAA,EAAQ,SAAA;AAAA,YACR,YAAA,EAAgB;AAAA,WAClB;AAAA,UACA;AAAA,YACE,IAAA,EAAQ,MAAA;AAAA,YACR,IAAA,EAAQ,OAAA;AAAA,YACR,YAAA,EAAgB;AAAA,WAClB;AAAA,UACA;AAAA,YACE,IAAA,EAAQ,MAAA;AAAA,YACR,IAAA,EAAQ,SAAA;AAAA,YACR,YAAA,EAAgB;AAAA,WAClB;AAAA,UACA;AAAA,YACE,IAAA,EAAQ,KAAA;AAAA,YACR,IAAA,EAAQ,SAAA;AAAA,YACR,YAAA,EAAgB;AAAA,WAClB;AAAA,UACA;AAAA,YACE,IAAA,EAAQ,QAAA;AAAA,YACR,IAAA,EAAQ,SAAA;AAAA,YACR,YAAA,EAAgB;AAAA;AAClB;AACF;AACF,KACF;AAAA,IACA,OAAA,EAAW;AAAA,MACT;AAAA,QACE,IAAA,EAAQ,gBAAA;AAAA,QACR,IAAA,EAAQ,SAAA;AAAA,QACR,YAAA,EAAgB;AAAA,OAClB;AAAA,MACA;AAAA,QACE,IAAA,EAAQ,aAAA;AAAA,QACR,IAAA,EAAQ,WAAA;AAAA,QACR,YAAA,EAAgB;AAAA;AAClB,KACF;AAAA,IACA,eAAA,EAAmB;AAAA,GACrB;AAAA,EACA;AAAA,IACE,IAAA,EAAQ,OAAA;AAAA,IACR,IAAA,EAAQ,gBAAA;AAAA,IACR,MAAA,EAAU;AAAA,MACR;AAAA,QACE,IAAA,EAAQ,SAAA;AAAA,QACR,IAAA,EAAQ,SAAA;AAAA,QACR,OAAA,EAAW,IAAA;AAAA,QACX,YAAA,EAAgB;AAAA;AAClB,KACF;AAAA,IACA,SAAA,EAAa;AAAA,GACf;AAAA,EACA;AAAA,IACE,IAAA,EAAQ,OAAA;AAAA,IACR,IAAA,EAAQ,cAAA;AAAA,IACR,MAAA,EAAU;AAAA,MACR;AAAA,QACE,IAAA,EAAQ,SAAA;AAAA,QACR,IAAA,EAAQ,SAAA;AAAA,QACR,OAAA,EAAW,IAAA;AAAA,QACX,YAAA,EAAgB;AAAA,OAClB;AAAA,MACA;AAAA,QACE,IAAA,EAAQ,OAAA;AAAA,QACR,IAAA,EAAQ,SAAA;AAAA,QACR,OAAA,EAAW,IAAA;AAAA,QACX,YAAA,EAAgB;AAAA,OAClB;AAAA,MACA;AAAA,QACE,IAAA,EAAQ,UAAA;AAAA,QACR,IAAA,EAAQ,SAAA;AAAA,QACR,OAAA,EAAW,KAAA;AAAA,QACX,YAAA,EAAgB;AAAA;AAClB,KACF;AAAA,IACA,SAAA,EAAa;AAAA,GACf;AAAA,EACA;AAAA,IACE,IAAA,EAAQ,OAAA;AAAA,IACR,IAAA,EAAQ,cAAA;AAAA,IACR,MAAA,EAAU;AAAA,MACR;AAAA,QACE,IAAA,EAAQ,SAAA;AAAA,QACR,IAAA,EAAQ,SAAA;AAAA,QACR,OAAA,EAAW,IAAA;AAAA,QACX,YAAA,EAAgB;AAAA;AAClB,KACF;AAAA,IACA,SAAA,EAAa;AAAA,GACf;AAAA,EACA;AAAA,IACE,IAAA,EAAQ,OAAA;AAAA,IACR,IAAA,EAAQ,aAAA;AAAA,IACR,MAAA,EAAU;AAAA,MACR;AAAA,QACE,IAAA,EAAQ,SAAA;AAAA,QACR,IAAA,EAAQ,SAAA;AAAA,QACR,OAAA,EAAW,IAAA;AAAA,QACX,YAAA,EAAgB;AAAA,OAClB;AAAA,MACA;AAAA,QACE,IAAA,EAAQ,UAAA;AAAA,QACR,IAAA,EAAQ,SAAA;AAAA,QACR,OAAA,EAAW,IAAA;AAAA,QACX,YAAA,EAAgB;AAAA,OAClB;AAAA,MACA;AAAA,QACE,IAAA,EAAQ,WAAA;AAAA,QACR,IAAA,EAAQ,SAAA;AAAA,QACR,OAAA,EAAW,KAAA;AAAA,QACX,YAAA,EAAgB;AAAA,OAClB;AAAA,MACA;AAAA,QACE,IAAA,EAAQ,MAAA;AAAA,QACR,IAAA,EAAQ,OAAA;AAAA,QACR,OAAA,EAAW,KAAA;AAAA,QACX,YAAA,EAAgB;AAAA,OAClB;AAAA,MACA;AAAA,QACE,IAAA,EAAQ,MAAA;AAAA,QACR,IAAA,EAAQ,SAAA;AAAA,QACR,OAAA,EAAW,KAAA;AAAA,QACX,YAAA,EAAgB;AAAA,OAClB;AAAA,MACA;AAAA,QACE,IAAA,EAAQ,KAAA;AAAA,QACR,IAAA,EAAQ,SAAA;AAAA,QACR,OAAA,EAAW,KAAA;AAAA,QACX,YAAA,EAAgB;AAAA,OAClB;AAAA,MACA;AAAA,QACE,IAAA,EAAQ,OAAA;AAAA,QACR,IAAA,EAAQ,SAAA;AAAA,QACR,OAAA,EAAW,IAAA;AAAA,QACX,YAAA,EAAgB;AAAA;AAClB,KACF;AAAA,IACA,SAAA,EAAa;AAAA,GACf;AAAA,EACA;AAAA,IACE,IAAA,EAAQ,OAAA;AAAA,IACR,IAAA,EAAQ,kBAAA;AAAA,IACR,MAAA,EAAU;AAAA,MACR;AAAA,QACE,IAAA,EAAQ,UAAA;AAAA,QACR,IAAA,EAAQ,SAAA;AAAA,QACR,OAAA,EAAW,IAAA;AAAA,QACX,YAAA,EAAgB;AAAA,OAClB;AAAA,MACA;AAAA,QACE,IAAA,EAAQ,WAAA;AAAA,QACR,IAAA,EAAQ,SAAA;AAAA,QACR,OAAA,EAAW,IAAA;AAAA,QACX,YAAA,EAAgB;AAAA,OAClB;AAAA,MACA;AAAA,QACE,IAAA,EAAQ,MAAA;AAAA,QACR,IAAA,EAAQ,OAAA;AAAA,QACR,OAAA,EAAW,KAAA;AAAA,QACX,YAAA,EAAgB;AAAA,OAClB;AAAA,MACA;AAAA,QACE,IAAA,EAAQ,UAAA;AAAA,QACR,IAAA,EAAQ,SAAA;AAAA,QACR,OAAA,EAAW,KAAA;AAAA,QACX,YAAA,EAAgB;AAAA;AAClB,KACF;AAAA,IACA,SAAA,EAAa;AAAA,GACf;AAAA,EACA;AAAA,IACE,IAAA,EAAQ,OAAA;AAAA,IACR,IAAA,EAAQ,eAAA;AAAA,IACR,QAAU;AAAC,GACb;AAAA,EACA;AAAA,IACE,IAAA,EAAQ,OAAA;AAAA,IACR,IAAA,EAAQ,YAAA;AAAA,IACR,QAAU;AAAC,GACb;AAAA,EACA;AAAA,IACE,IAAA,EAAQ,OAAA;AAAA,IACR,IAAA,EAAQ,gBAAA;AAAA,IACR,QAAU;AAAC,GACb;AAAA,EACA;AAAA,IACE,IAAA,EAAQ,OAAA;AAAA,IACR,IAAA,EAAQ,iBAAA;AAAA,IACR,QAAU;AAAC,GACb;AAAA,EACA;AAAA,IACE,IAAA,EAAQ,OAAA;AAAA,IACR,IAAA,EAAQ,aAAA;AAAA,IACR,QAAU;AAAC,GACb;AAAA,EACA;AAAA,IACE,IAAA,EAAQ,OAAA;AAAA,IACR,IAAA,EAAQ,uBAAA;AAAA,IACR,QAAU;AAAC,GACb;AAAA,EACA;AAAA,IACE,IAAA,EAAQ,OAAA;AAAA,IACR,IAAA,EAAQ,yBAAA;AAAA,IACR,QAAU;AAAC,GACb;AAAA,EACA;AAAA,IACE,IAAA,EAAQ,OAAA;AAAA,IACR,IAAA,EAAQ,iBAAA;AAAA,IACR,QAAU;AAAC,GACb;AAAA,EACA;AAAA,IACE,IAAA,EAAQ,OAAA;AAAA,IACR,IAAA,EAAQ,cAAA;AAAA,IACR,QAAU;AAAC,GACb;AAAA,EACA;AAAA,IACE,IAAA,EAAQ,OAAA;AAAA,IACR,IAAA,EAAQ,cAAA;AAAA,IACR,QAAU;AAAC,GACb;AAAA,EACA;AAAA,IACE,IAAA,EAAQ,OAAA;AAAA,IACR,IAAA,EAAQ,eAAA;AAAA,IACR,QAAU;AAAC,GACb;AAAA,EACA;AAAA,IACE,IAAA,EAAQ,OAAA;AAAA,IACR,IAAA,EAAQ,gBAAA;AAAA,IACR,QAAU;AAAC,GACb;AAAA,EACA;AAAA,IACE,IAAA,EAAQ,OAAA;AAAA,IACR,IAAA,EAAQ,qBAAA;AAAA,IACR,QAAU;AAAC,GACb;AAAA,EACA;AAAA,IACE,IAAA,EAAQ,OAAA;AAAA,IACR,IAAA,EAAQ,gBAAA;AAAA,IACR,QAAU;AAAC,GACb;AAAA,EACA;AAAA,IACE,IAAA,EAAQ,OAAA;AAAA,IACR,IAAA,EAAQ,oBAAA;AAAA,IACR,QAAU;AAAC,GACb;AAAA,EACA;AAAA,IACE,IAAA,EAAQ,OAAA;AAAA,IACR,IAAA,EAAQ,eAAA;AAAA,IACR,QAAU;AAAC,GACb;AAAA,EACA;AAAA,IACE,IAAA,EAAQ,OAAA;AAAA,IACR,IAAA,EAAQ,eAAA;AAAA,IACR,QAAU;AAAC,GACb;AAAA,EACA;AAAA,IACE,IAAA,EAAQ,OAAA;AAAA,IACR,IAAA,EAAQ,gBAAA;AAAA,IACR,QAAU;AAAC;AAEf;;;ACjWA,IAAA,8BAAA,GAAA;AAAA,EACE;AAAA,IACE,IAAA,EAAQ,aAAA;AAAA,IACR,MAAA,EAAU;AAAA,MACR;AAAA,QACE,IAAA,EAAQ,QAAA;AAAA,QACR,IAAA,EAAQ,SAAA;AAAA,QACR,YAAA,EAAgB;AAAA;AAClB,KACF;AAAA,IACA,eAAA,EAAmB;AAAA,GACrB;AAAA,EACA;AAAA,IACE,IAAA,EAAQ,UAAA;AAAA,IACR,IAAA,EAAQ,gBAAA;AAAA,IACR,MAAA,EAAU;AAAA,MACR;AAAA,QACE,IAAA,EAAQ,OAAA;AAAA,QACR,IAAA,EAAQ,WAAA;AAAA,QACR,YAAA,EAAgB;AAAA;AAClB,KACF;AAAA,IACA,SAAW,EAAC;AAAA,IACZ,eAAA,EAAmB;AAAA,GACrB;AAAA,EACA;AAAA,IACE,IAAA,EAAQ,UAAA;AAAA,IACR,IAAA,EAAQ,WAAA;AAAA,IACR,MAAA,EAAU;AAAA,MACR;AAAA,QACE,IAAA,EAAQ,MAAA;AAAA,QACR,IAAA,EAAQ,SAAA;AAAA,QACR,YAAA,EAAgB;AAAA;AAClB,KACF;AAAA,IACA,OAAA,EAAW;AAAA,MACT;AAAA,QACE,IAAA,EAAQ,EAAA;AAAA,QACR,IAAA,EAAQ,MAAA;AAAA,QACR,YAAA,EAAgB;AAAA;AAClB,KACF;AAAA,IACA,eAAA,EAAmB;AAAA,GACrB;AAAA,EACA;AAAA,IACE,IAAA,EAAQ,UAAA;AAAA,IACR,IAAA,EAAQ,OAAA;AAAA,IACR,QAAU,EAAC;AAAA,IACX,OAAA,EAAW;AAAA,MACT;AAAA,QACE,IAAA,EAAQ,EAAA;AAAA,QACR,IAAA,EAAQ,SAAA;AAAA,QACR,YAAA,EAAgB;AAAA;AAClB,KACF;AAAA,IACA,eAAA,EAAmB;AAAA,GACrB;AAAA,EACA;AAAA,IACE,IAAA,EAAQ,UAAA;AAAA,IACR,IAAA,EAAQ,qBAAA;AAAA,IACR,MAAA,EAAU;AAAA,MACR;AAAA,QACE,IAAA,EAAQ,OAAA;AAAA,QACR,IAAA,EAAQ,WAAA;AAAA,QACR,YAAA,EAAgB;AAAA;AAClB,KACF;AAAA,IACA,SAAW,EAAC;AAAA,IACZ,eAAA,EAAmB;AAAA,GACrB;AAAA,EACA;AAAA,IACE,IAAA,EAAQ,UAAA;AAAA,IACR,IAAA,EAAQ,mBAAA;AAAA,IACR,MAAA,EAAU;AAAA,MACR;AAAA,QACE,IAAA,EAAQ,UAAA;AAAA,QACR,IAAA,EAAQ,SAAA;AAAA,QACR,YAAA,EAAgB;AAAA;AAClB,KACF;AAAA,IACA,SAAW,EAAC;AAAA,IACZ,eAAA,EAAmB;AAAA,GACrB;AAAA,EACA;AAAA,IACE,IAAA,EAAQ,UAAA;AAAA,IACR,IAAA,EAAQ,WAAA;AAAA,IACR,MAAA,EAAU;AAAA,MACR;AAAA,QACE,IAAA,EAAQ,EAAA;AAAA,QACR,IAAA,EAAQ,SAAA;AAAA,QACR,YAAA,EAAgB;AAAA;AAClB,KACF;AAAA,IACA,OAAA,EAAW;AAAA,MACT;AAAA,QACE,IAAA,EAAQ,EAAA;AAAA,QACR,IAAA,EAAQ,MAAA;AAAA,QACR,YAAA,EAAgB;AAAA;AAClB,KACF;AAAA,IACA,eAAA,EAAmB;AAAA,GACrB;AAAA,EACA;AAAA,IACE,IAAA,EAAQ,OAAA;AAAA,IACR,IAAA,EAAQ,kBAAA;AAAA,IACR,MAAA,EAAU;AAAA,MACR;AAAA,QACE,IAAA,EAAQ,OAAA;AAAA,QACR,IAAA,EAAQ,WAAA;AAAA,QACR,OAAA,EAAW,KAAA;AAAA,QACX,YAAA,EAAgB;AAAA;AAClB,KACF;AAAA,IACA,SAAA,EAAa;AAAA,GACf;AAAA,EACA;AAAA,IACE,IAAA,EAAQ,OAAA;AAAA,IACR,IAAA,EAAQ,sBAAA;AAAA,IACR,MAAA,EAAU;AAAA,MACR;AAAA,QACE,IAAA,EAAQ,eAAA;AAAA,QACR,IAAA,EAAQ,SAAA;AAAA,QACR,OAAA,EAAW,IAAA;AAAA,QACX,YAAA,EAAgB;AAAA,OAClB;AAAA,MACA;AAAA,QACE,IAAA,EAAQ,UAAA;AAAA,QACR,IAAA,EAAQ,SAAA;AAAA,QACR,OAAA,EAAW,IAAA;AAAA,QACX,YAAA,EAAgB;AAAA;AAClB,KACF;AAAA,IACA,SAAA,EAAa;AAAA,GACf;AAAA,EACA;AAAA,IACE,IAAA,EAAQ,OAAA;AAAA,IACR,IAAA,EAAQ,sBAAA;AAAA,IACR,MAAA,EAAU;AAAA,MACR;AAAA,QACE,IAAA,EAAQ,OAAA;AAAA,QACR,IAAA,EAAQ,WAAA;AAAA,QACR,OAAA,EAAW,KAAA;AAAA,QACX,YAAA,EAAgB;AAAA;AAClB,KACF;AAAA,IACA,SAAA,EAAa;AAAA,GACf;AAAA,EACA;AAAA,IACE,IAAA,EAAQ,OAAA;AAAA,IACR,IAAA,EAAQ,WAAA;AAAA,IACR,QAAU;AAAC,GACb;AAAA,EACA;AAAA,IACE,IAAA,EAAQ,OAAA;AAAA,IACR,IAAA,EAAQ,aAAA;AAAA,IACR,QAAU;AAAC;AAEf;;;AC7JA,IAAA,yBAAA,GAAA;AAAA,EACE;AAAA,IACE,IAAA,EAAQ,UAAA;AAAA,IACR,IAAA,EAAQ,WAAA;AAAA,IACR,MAAA,EAAU;AAAA,MACR;AAAA,QACE,IAAA,EAAQ,SAAA;AAAA,QACR,IAAA,EAAQ,SAAA;AAAA,QACR,YAAA,EAAgB;AAAA,OAClB;AAAA,MACA;AAAA,QACE,IAAA,EAAQ,IAAA;AAAA,QACR,IAAA,EAAQ,SAAA;AAAA,QACR,YAAA,EAAgB;AAAA;AAClB,KACF;AAAA,IACA,OAAA,EAAW;AAAA,MACT;AAAA,QACE,IAAA,EAAQ,EAAA;AAAA,QACR,IAAA,EAAQ,SAAA;AAAA,QACR,YAAA,EAAgB;AAAA;AAClB,KACF;AAAA,IACA,eAAA,EAAmB;AAAA,GACrB;AAAA,EACA;AAAA,IACE,IAAA,EAAQ,UAAA;AAAA,IACR,IAAA,EAAQ,iBAAA;AAAA,IACR,MAAA,EAAU;AAAA,MACR;AAAA,QACE,IAAA,EAAQ,oBAAA;AAAA,QACR,IAAA,EAAQ,SAAA;AAAA,QACR,YAAA,EAAgB;AAAA,OAClB;AAAA,MACA;AAAA,QACE,IAAA,EAAQ,aAAA;AAAA,QACR,IAAA,EAAQ,SAAA;AAAA,QACR,YAAA,EAAgB;AAAA,OAClB;AAAA,MACA;AAAA,QACE,IAAA,EAAQ,UAAA;AAAA,QACR,IAAA,EAAQ,SAAA;AAAA,QACR,YAAA,EAAgB;AAAA;AAClB,KACF;AAAA,IACA,OAAA,EAAW;AAAA,MACT;AAAA,QACE,IAAA,EAAQ,cAAA;AAAA,QACR,IAAA,EAAQ,SAAA;AAAA,QACR,YAAA,EAAgB;AAAA;AAClB,KACF;AAAA,IACA,eAAA,EAAmB;AAAA,GACrB;AAAA,EACA;AAAA,IACE,IAAA,EAAQ,UAAA;AAAA,IACR,IAAA,EAAQ,gBAAA;AAAA,IACR,MAAA,EAAU;AAAA,MACR;AAAA,QACE,IAAA,EAAQ,QAAA;AAAA,QACR,IAAA,EAAQ,SAAA;AAAA,QACR,YAAA,EAAgB;AAAA,OAClB;AAAA,MACA;AAAA,QACE,IAAA,EAAQ,YAAA;AAAA,QACR,IAAA,EAAQ,SAAA;AAAA,QACR,YAAA,EAAgB;AAAA,OAClB;AAAA,MACA;AAAA,QACE,IAAA,EAAQ,kBAAA;AAAA,QACR,IAAA,EAAQ,SAAA;AAAA,QACR,YAAA,EAAgB;AAAA;AAClB,KACF;AAAA,IACA,OAAA,EAAW;AAAA,MACT;AAAA,QACE,IAAA,EAAQ,aAAA;AAAA,QACR,IAAA,EAAQ,SAAA;AAAA,QACR,YAAA,EAAgB;AAAA;AAClB,KACF;AAAA,IACA,eAAA,EAAmB;AAAA,GACrB;AAAA,EACA;AAAA,IACE,IAAA,EAAQ,UAAA;AAAA,IACR,IAAA,EAAQ,qBAAA;AAAA,IACR,MAAA,EAAU;AAAA,MACR;AAAA,QACE,IAAA,EAAQ,aAAA;AAAA,QACR,IAAA,EAAQ,SAAA;AAAA,QACR,YAAA,EAAgB;AAAA;AAClB,KACF;AAAA,IACA,OAAA,EAAW;AAAA,MACT;AAAA,QACE,IAAA,EAAQ,kBAAA;AAAA,QACR,IAAA,EAAQ,SAAA;AAAA,QACR,YAAA,EAAgB;AAAA;AAClB,KACF;AAAA,IACA,eAAA,EAAmB;AAAA,GACrB;AAAA,EACA;AAAA,IACE,IAAA,EAAQ,UAAA;AAAA,IACR,IAAA,EAAQ,eAAA;AAAA,IACR,MAAA,EAAU;AAAA,MACR;AAAA,QACE,IAAA,EAAQ,iBAAA;AAAA,QACR,IAAA,EAAQ,SAAA;AAAA,QACR,YAAA,EAAgB;AAAA,OAClB;AAAA,MACA;AAAA,QACE,IAAA,EAAQ,cAAA;AAAA,QACR,IAAA,EAAQ,SAAA;AAAA,QACR,YAAA,EAAgB;AAAA;AAClB,KACF;AAAA,IACA,OAAA,EAAW;AAAA,MACT;AAAA,QACE,IAAA,EAAQ,YAAA;AAAA,QACR,IAAA,EAAQ,SAAA;AAAA,QACR,YAAA,EAAgB;AAAA;AAClB,KACF;AAAA,IACA,eAAA,EAAmB;AAAA,GACrB;AAAA,EACA;AAAA,IACE,IAAA,EAAQ,UAAA;AAAA,IACR,IAAA,EAAQ,gBAAA;AAAA,IACR,MAAA,EAAU;AAAA,MACR;AAAA,QACE,IAAA,EAAQ,iBAAA;AAAA,QACR,IAAA,EAAQ,SAAA;AAAA,QACR,YAAA,EAAgB;AAAA,OAClB;AAAA,MACA;AAAA,QACE,IAAA,EAAQ,oBAAA;AAAA,QACR,IAAA,EAAQ,SAAA;AAAA,QACR,YAAA,EAAgB;AAAA,OAClB;AAAA,MACA;AAAA,QACE,IAAA,EAAQ,aAAA;AAAA,QACR,IAAA,EAAQ,SAAA;AAAA,QACR,YAAA,EAAgB;AAAA,OAClB;AAAA,MACA;AAAA,QACE,IAAA,EAAQ,WAAA;AAAA,QACR,IAAA,EAAQ,WAAA;AAAA,QACR,YAAA,EAAgB;AAAA,OAClB;AAAA,MACA;AAAA,QACE,IAAA,EAAQ,QAAA;AAAA,QACR,IAAA,EAAQ,SAAA;AAAA,QACR,YAAA,EAAgB;AAAA;AAClB,KACF;AAAA,IACA,SAAW,EAAC;AAAA,IACZ,eAAA,EAAmB;AAAA,GACrB;AAAA,EACA;AAAA,IACE,IAAA,EAAQ,UAAA;AAAA,IACR,IAAA,EAAQ,mBAAA;AAAA,IACR,MAAA,EAAU;AAAA,MACR;AAAA,QACE,IAAA,EAAQ,aAAA;AAAA,QACR,IAAA,EAAQ,SAAA;AAAA,QACR,YAAA,EAAgB;AAAA;AAClB,KACF;AAAA,IACA,OAAA,EAAW;AAAA,MACT;AAAA,QACE,IAAA,EAAQ,EAAA;AAAA,QACR,IAAA,EAAQ,SAAA;AAAA,QACR,YAAA,EAAgB;AAAA;AAClB,KACF;AAAA,IACA,eAAA,EAAmB;AAAA,GACrB;AAAA,EACA;AAAA,IACE,IAAA,EAAQ,UAAA;AAAA,IACR,IAAA,EAAQ,kBAAA;AAAA,IACR,MAAA,EAAU;AAAA,MACR;AAAA,QACE,IAAA,EAAQ,aAAA;AAAA,QACR,IAAA,EAAQ,SAAA;AAAA,QACR,YAAA,EAAgB;AAAA,OAClB;AAAA,MACA;AAAA,QACE,IAAA,EAAQ,OAAA;AAAA,QACR,IAAA,EAAQ,SAAA;AAAA,QACR,YAAA,EAAgB;AAAA;AAClB,KACF;AAAA,IACA,OAAA,EAAW;AAAA,MACT;AAAA,QACE,IAAA,EAAQ,EAAA;AAAA,QACR,IAAA,EAAQ,SAAA;AAAA,QACR,YAAA,EAAgB;AAAA;AAClB,KACF;AAAA,IACA,eAAA,EAAmB;AAAA,GACrB;AAAA,EACA;AAAA,IACE,IAAA,EAAQ,UAAA;AAAA,IACR,IAAA,EAAQ,kBAAA;AAAA,IACR,MAAA,EAAU;AAAA,MACR;AAAA,QACE,IAAA,EAAQ,QAAA;AAAA,QACR,IAAA,EAAQ,SAAA;AAAA,QACR,YAAA,EAAgB;AAAA,OAClB;AAAA,MACA;AAAA,QACE,IAAA,EAAQ,YAAA;AAAA,QACR,IAAA,EAAQ,SAAA;AAAA,QACR,YAAA,EAAgB;AAAA,OAClB;AAAA,MACA;AAAA,QACE,IAAA,EAAQ,kBAAA;AAAA,QACR,IAAA,EAAQ,SAAA;AAAA,QACR,YAAA,EAAgB;AAAA;AAClB,KACF;AAAA,IACA,SAAW,EAAC;AAAA,IACZ,eAAA,EAAmB;AAAA,GACrB;AAAA,EACA;AAAA,IACE,IAAA,EAAQ,UAAA;AAAA,IACR,IAAA,EAAQ,iBAAA;AAAA,IACR,MAAA,EAAU;AAAA,MACR;AAAA,QACE,IAAA,EAAQ,iBAAA;AAAA,QACR,IAAA,EAAQ,SAAA;AAAA,QACR,YAAA,EAAgB;AAAA,OAClB;AAAA,MACA;AAAA,QACE,IAAA,EAAQ,oBAAA;AAAA,QACR,IAAA,EAAQ,SAAA;AAAA,QACR,YAAA,EAAgB;AAAA,OAClB;AAAA,MACA;AAAA,QACE,IAAA,EAAQ,aAAA;AAAA,QACR,IAAA,EAAQ,SAAA;AAAA,QACR,YAAA,EAAgB;AAAA,OAClB;AAAA,MACA;AAAA,QACE,IAAA,EAAQ,WAAA;AAAA,QACR,IAAA,EAAQ,WAAA;AAAA,QACR,YAAA,EAAgB;AAAA;AAClB,KACF;AAAA,IACA,SAAW,EAAC;AAAA,IACZ,eAAA,EAAmB;AAAA,GACrB;AAAA,EACA;AAAA,IACE,IAAA,EAAQ,UAAA;AAAA,IACR,IAAA,EAAQ,eAAA;AAAA,IACR,MAAA,EAAU;AAAA,MACR;AAAA,QACE,IAAA,EAAQ,YAAA;AAAA,QACR,IAAA,EAAQ,SAAA;AAAA,QACR,YAAA,EAAgB;AAAA,OAClB;AAAA,MACA;AAAA,QACE,IAAA,EAAQ,SAAA;AAAA,QACR,IAAA,EAAQ,WAAA;AAAA,QACR,YAAA,EAAgB;AAAA;AAClB,KACF;AAAA,IACA,SAAW,EAAC;AAAA,IACZ,eAAA,EAAmB;AAAA,GACrB;AAAA,EACA;AAAA,IACE,IAAA,EAAQ,UAAA;AAAA,IACR,IAAA,EAAQ,eAAA;AAAA,IACR,MAAA,EAAU;AAAA,MACR;AAAA,QACE,IAAA,EAAQ,iBAAA;AAAA,QACR,IAAA,EAAQ,SAAA;AAAA,QACR,YAAA,EAAgB;AAAA,OAClB;AAAA,MACA;AAAA,QACE,IAAA,EAAQ,oBAAA;AAAA,QACR,IAAA,EAAQ,SAAA;AAAA,QACR,YAAA,EAAgB;AAAA,OAClB;AAAA,MACA;AAAA,QACE,IAAA,EAAQ,aAAA;AAAA,QACR,IAAA,EAAQ,SAAA;AAAA,QACR,YAAA,EAAgB;AAAA,OAClB;AAAA,MACA;AAAA,QACE,IAAA,EAAQ,WAAA;AAAA,QACR,IAAA,EAAQ,WAAA;AAAA,QACR,YAAA,EAAgB;AAAA,OAClB;AAAA,MACA;AAAA,QACE,IAAA,EAAQ,QAAA;AAAA,QACR,IAAA,EAAQ,SAAA;AAAA,QACR,YAAA,EAAgB;AAAA;AAClB,KACF;AAAA,IACA,SAAW,EAAC;AAAA,IACZ,eAAA,EAAmB;AAAA;AAEvB;;;AChTA,IAAA,aAAA,GAAA;AAAA,EACE;AAAA,IACE,IAAA,EAAQ,aAAA;AAAA,IACR,MAAA,EAAU;AAAA,MACR;AAAA,QACE,IAAA,EAAQ,OAAA;AAAA,QACR,IAAA,EAAQ,QAAA;AAAA,QACR,YAAA,EAAgB;AAAA,OAClB;AAAA,MACA;AAAA,QACE,IAAA,EAAQ,SAAA;AAAA,QACR,IAAA,EAAQ,QAAA;AAAA,QACR,YAAA,EAAgB;AAAA,OAClB;AAAA,MACA;AAAA,QACE,IAAA,EAAQ,WAAA;AAAA,QACR,IAAA,EAAQ,OAAA;AAAA,QACR,YAAA,EAAgB;AAAA;AAClB,KACF;AAAA,IACA,eAAA,EAAmB;AAAA,GACrB;AAAA,EACA;AAAA,IACE,IAAA,EAAQ,UAAA;AAAA,IACR,IAAA,EAAQ,WAAA;AAAA,IACR,MAAA,EAAU;AAAA,MACR;AAAA,QACE,IAAA,EAAQ,EAAA;AAAA,QACR,IAAA,EAAQ,SAAA;AAAA,QACR,YAAA,EAAgB;AAAA,OAClB;AAAA,MACA;AAAA,QACE,IAAA,EAAQ,EAAA;AAAA,QACR,IAAA,EAAQ,SAAA;AAAA,QACR,YAAA,EAAgB;AAAA;AAClB,KACF;AAAA,IACA,OAAA,EAAW;AAAA,MACT;AAAA,QACE,IAAA,EAAQ,EAAA;AAAA,QACR,IAAA,EAAQ,SAAA;AAAA,QACR,YAAA,EAAgB;AAAA;AAClB,KACF;AAAA,IACA,eAAA,EAAmB;AAAA,GACrB;AAAA,EACA;AAAA,IACE,IAAA,EAAQ,UAAA;AAAA,IACR,IAAA,EAAQ,SAAA;AAAA,IACR,MAAA,EAAU;AAAA,MACR;AAAA,QACE,IAAA,EAAQ,SAAA;AAAA,QACR,IAAA,EAAQ,SAAA;AAAA,QACR,YAAA,EAAgB;AAAA,OAClB;AAAA,MACA;AAAA,QACE,IAAA,EAAQ,QAAA;AAAA,QACR,IAAA,EAAQ,SAAA;AAAA,QACR,YAAA,EAAgB;AAAA;AAClB,KACF;AAAA,IACA,OAAA,EAAW;AAAA,MACT;AAAA,QACE,IAAA,EAAQ,EAAA;AAAA,QACR,IAAA,EAAQ,MAAA;AAAA,QACR,YAAA,EAAgB;AAAA;AAClB,KACF;AAAA,IACA,eAAA,EAAmB;AAAA,GACrB;AAAA,EACA;AAAA,IACE,IAAA,EAAQ,UAAA;AAAA,IACR,IAAA,EAAQ,WAAA;AAAA,IACR,MAAA,EAAU;AAAA,MACR;AAAA,QACE,IAAA,EAAQ,EAAA;AAAA,QACR,IAAA,EAAQ,SAAA;AAAA,QACR,YAAA,EAAgB;AAAA;AAClB,KACF;AAAA,IACA,OAAA,EAAW;AAAA,MACT;AAAA,QACE,IAAA,EAAQ,EAAA;AAAA,QACR,IAAA,EAAQ,SAAA;AAAA,QACR,YAAA,EAAgB;AAAA;AAClB,KACF;AAAA,IACA,eAAA,EAAmB;AAAA,GACrB;AAAA,EACA;AAAA,IACE,IAAA,EAAQ,UAAA;AAAA,IACR,IAAA,EAAQ,UAAA;AAAA,IACR,QAAU,EAAC;AAAA,IACX,OAAA,EAAW;AAAA,MACT;AAAA,QACE,IAAA,EAAQ,EAAA;AAAA,QACR,IAAA,EAAQ,OAAA;AAAA,QACR,YAAA,EAAgB;AAAA;AAClB,KACF;AAAA,IACA,eAAA,EAAmB;AAAA,GACrB;AAAA,EACA;AAAA,IACE,IAAA,EAAQ,UAAA;AAAA,IACR,IAAA,EAAQ,MAAA;AAAA,IACR,MAAA,EAAU;AAAA,MACR;AAAA,QACE,IAAA,EAAQ,IAAA;AAAA,QACR,IAAA,EAAQ,SAAA;AAAA,QACR,YAAA,EAAgB;AAAA,OAClB;AAAA,MACA;AAAA,QACE,IAAA,EAAQ,QAAA;AAAA,QACR,IAAA,EAAQ,SAAA;AAAA,QACR,YAAA,EAAgB;AAAA;AAClB,KACF;AAAA,IACA,SAAW,EAAC;AAAA,IACZ,eAAA,EAAmB;AAAA,GACrB;AAAA,EACA;AAAA,IACE,IAAA,EAAQ,UAAA;AAAA,IACR,IAAA,EAAQ,MAAA;AAAA,IACR,QAAU,EAAC;AAAA,IACX,OAAA,EAAW;AAAA,MACT;AAAA,QACE,IAAA,EAAQ,EAAA;AAAA,QACR,IAAA,EAAQ,QAAA;AAAA,QACR,YAAA,EAAgB;AAAA;AAClB,KACF;AAAA,IACA,eAAA,EAAmB;AAAA,GACrB;AAAA,EACA;AAAA,IACE,IAAA,EAAQ,UAAA;AAAA,IACR,IAAA,EAAQ,QAAA;AAAA,IACR,QAAU,EAAC;AAAA,IACX,OAAA,EAAW;AAAA,MACT;AAAA,QACE,IAAA,EAAQ,EAAA;AAAA,QACR,IAAA,EAAQ,QAAA;AAAA,QACR,YAAA,EAAgB;AAAA;AAClB,KACF;AAAA,IACA,eAAA,EAAmB;AAAA,GACrB;AAAA,EACA;AAAA,IACE,IAAA,EAAQ,UAAA;AAAA,IACR,IAAA,EAAQ,aAAA;AAAA,IACR,QAAU,EAAC;AAAA,IACX,OAAA,EAAW;AAAA,MACT;AAAA,QACE,IAAA,EAAQ,EAAA;AAAA,QACR,IAAA,EAAQ,SAAA;AAAA,QACR,YAAA,EAAgB;AAAA;AAClB,KACF;AAAA,IACA,eAAA,EAAmB;AAAA,GACrB;AAAA,EACA;AAAA,IACE,IAAA,EAAQ,UAAA;AAAA,IACR,IAAA,EAAQ,UAAA;AAAA,IACR,MAAA,EAAU;AAAA,MACR;AAAA,QACE,IAAA,EAAQ,IAAA;AAAA,QACR,IAAA,EAAQ,SAAA;AAAA,QACR,YAAA,EAAgB;AAAA,OAClB;AAAA,MACA;AAAA,QACE,IAAA,EAAQ,QAAA;AAAA,QACR,IAAA,EAAQ,SAAA;AAAA,QACR,YAAA,EAAgB;AAAA;AAClB,KACF;AAAA,IACA,OAAA,EAAW;AAAA,MACT;AAAA,QACE,IAAA,EAAQ,EAAA;AAAA,QACR,IAAA,EAAQ,MAAA;AAAA,QACR,YAAA,EAAgB;AAAA;AAClB,KACF;AAAA,IACA,eAAA,EAAmB;AAAA,GACrB;AAAA,EACA;AAAA,IACE,IAAA,EAAQ,UAAA;AAAA,IACR,IAAA,EAAQ,cAAA;AAAA,IACR,MAAA,EAAU;AAAA,MACR;AAAA,QACE,IAAA,EAAQ,MAAA;AAAA,QACR,IAAA,EAAQ,SAAA;AAAA,QACR,YAAA,EAAgB;AAAA,OAClB;AAAA,MACA;AAAA,QACE,IAAA,EAAQ,IAAA;AAAA,QACR,IAAA,EAAQ,SAAA;AAAA,QACR,YAAA,EAAgB;AAAA,OAClB;AAAA,MACA;AAAA,QACE,IAAA,EAAQ,QAAA;AAAA,QACR,IAAA,EAAQ,SAAA;AAAA,QACR,YAAA,EAAgB;AAAA;AAClB,KACF;AAAA,IACA,OAAA,EAAW;AAAA,MACT;AAAA,QACE,IAAA,EAAQ,EAAA;AAAA,QACR,IAAA,EAAQ,MAAA;AAAA,QACR,YAAA,EAAgB;AAAA;AAClB,KACF;AAAA,IACA,eAAA,EAAmB;AAAA,GACrB;AAAA,EACA;AAAA,IACE,IAAA,EAAQ,OAAA;AAAA,IACR,IAAA,EAAQ,UAAA;AAAA,IACR,MAAA,EAAU;AAAA,MACR;AAAA,QACE,IAAA,EAAQ,OAAA;AAAA,QACR,IAAA,EAAQ,SAAA;AAAA,QACR,OAAA,EAAW,IAAA;AAAA,QACX,YAAA,EAAgB;AAAA,OAClB;AAAA,MACA;AAAA,QACE,IAAA,EAAQ,SAAA;AAAA,QACR,IAAA,EAAQ,SAAA;AAAA,QACR,OAAA,EAAW,IAAA;AAAA,QACX,YAAA,EAAgB;AAAA,OAClB;AAAA,MACA;AAAA,QACE,IAAA,EAAQ,OAAA;AAAA,QACR,IAAA,EAAQ,SAAA;AAAA,QACR,OAAA,EAAW,KAAA;AAAA,QACX,YAAA,EAAgB;AAAA;AAClB,KACF;AAAA,IACA,SAAA,EAAa;AAAA,GACf;AAAA,EACA;AAAA,IACE,IAAA,EAAQ,OAAA;AAAA,IACR,IAAA,EAAQ,UAAA;AAAA,IACR,MAAA,EAAU;AAAA,MACR;AAAA,QACE,IAAA,EAAQ,MAAA;AAAA,QACR,IAAA,EAAQ,SAAA;AAAA,QACR,OAAA,EAAW,IAAA;AAAA,QACX,YAAA,EAAgB;AAAA,OAClB;AAAA,MACA;AAAA,QACE,IAAA,EAAQ,IAAA;AAAA,QACR,IAAA,EAAQ,SAAA;AAAA,QACR,OAAA,EAAW,IAAA;AAAA,QACX,YAAA,EAAgB;AAAA,OAClB;AAAA,MACA;AAAA,QACE,IAAA,EAAQ,OAAA;AAAA,QACR,IAAA,EAAQ,SAAA;AAAA,QACR,OAAA,EAAW,KAAA;AAAA,QACX,YAAA,EAAgB;AAAA;AAClB,KACF;AAAA,IACA,SAAA,EAAa;AAAA;AAEjB;;;ACtQA,IAAA,iBAAA,GAAA;AAAA,EACE;AAAA,IACE,IAAA,EAAQ,UAAA;AAAA,IACR,IAAA,EAAQ,aAAA;AAAA,IACR,MAAA,EAAU;AAAA,MACR;AAAA,QACE,IAAA,EAAQ,OAAA;AAAA,QACR,IAAA,EAAQ,OAAA;AAAA,QACR,YAAA,EAAgB;AAAA,OAClB;AAAA,MACA;AAAA,QACE,IAAA,EAAQ,UAAA;AAAA,QACR,IAAA,EAAQ,SAAA;AAAA,QACR,YAAA,EAAgB;AAAA,OAClB;AAAA,MACA;AAAA,QACE,IAAA,EAAQ,mBAAA;AAAA,QACR,IAAA,EAAQ,SAAA;AAAA,QACR,YAAA,EAAgB;AAAA,OAClB;AAAA,MACA;AAAA,QACE,IAAA,EAAQ,mBAAA;AAAA,QACR,IAAA,EAAQ,SAAA;AAAA,QACR,YAAA,EAAgB;AAAA,OAClB;AAAA,MACA;AAAA,QACE,IAAA,EAAQ,UAAA;AAAA,QACR,IAAA,EAAQ,QAAA;AAAA,QACR,YAAA,EAAgB;AAAA,OAClB;AAAA,MACA;AAAA,QACE,IAAA,EAAQ,UAAA;AAAA,QACR,IAAA,EAAQ,SAAA;AAAA,QACR,YAAA,EAAgB;AAAA,OAClB;AAAA,MACA;AAAA,QACE,IAAA,EAAQ,MAAA;AAAA,QACR,IAAA,EAAQ,SAAA;AAAA,QACR,YAAA,EAAgB;AAAA,OAClB;AAAA,MACA;AAAA,QACE,IAAA,EAAQ,YAAA;AAAA,QACR,IAAA,EAAQ,SAAA;AAAA,QACR,YAAA,EAAgB;AAAA,OAClB;AAAA,MACA;AAAA,QACE,IAAA,EAAQ,UAAA;AAAA,QACR,IAAA,EAAQ,SAAA;AAAA,QACR,YAAA,EAAgB;AAAA;AAClB,KACF;AAAA,IACA,OAAA,EAAW;AAAA,MACT;AAAA,QACE,IAAA,EAAQ,EAAA;AAAA,QACR,IAAA,EAAQ,SAAA;AAAA,QACR,YAAA,EAAgB;AAAA;AAClB,KACF;AAAA,IACA,eAAA,EAAmB;AAAA,GACrB;AAAA,EACA;AAAA,IACE,IAAA,EAAQ,UAAA;AAAA,IACR,IAAA,EAAQ,mBAAA;AAAA,IACR,QAAU,EAAC;AAAA,IACX,OAAA,EAAW;AAAA,MACT;AAAA,QACE,IAAA,EAAQ,EAAA;AAAA,QACR,IAAA,EAAQ,SAAA;AAAA,QACR,YAAA,EAAgB;AAAA;AAClB,KACF;AAAA,IACA,eAAA,EAAmB;AAAA,GACrB;AAAA,EACA;AAAA,IACE,IAAA,EAAQ,UAAA;AAAA,IACR,IAAA,EAAQ,kBAAA;AAAA,IACR,MAAA,EAAU;AAAA,MACR;AAAA,QACE,IAAA,EAAQ,aAAA;AAAA,QACR,IAAA,EAAQ,SAAA;AAAA,QACR,YAAA,EAAgB;AAAA,OAClB;AAAA,MACA;AAAA,QACE,IAAA,EAAQ,UAAA;AAAA,QACR,IAAA,EAAQ,SAAA;AAAA,QACR,YAAA,EAAgB;AAAA;AAClB,KACF;AAAA,IACA,SAAW,EAAC;AAAA,IACZ,eAAA,EAAmB;AAAA,GACrB;AAAA,EACA;AAAA,IACE,IAAA,EAAQ,UAAA;AAAA,IACR,IAAA,EAAQ,cAAA;AAAA,IACR,MAAA,EAAU;AAAA,MACR;AAAA,QACE,IAAA,EAAQ,aAAA;AAAA,QACR,IAAA,EAAQ,SAAA;AAAA,QACR,YAAA,EAAgB;AAAA;AAClB,KACF;AAAA,IACA,OAAA,EAAW;AAAA,MACT;AAAA,QACE,IAAA,EAAQ,EAAA;AAAA,QACR,IAAA,EAAQ,OAAA;AAAA,QACR,YAAA,EAAgB,8CAAA;AAAA,QAChB,UAAA,EAAc;AAAA,UACZ;AAAA,YACE,IAAA,EAAQ,2BAAA;AAAA,YACR,IAAA,EAAQ,OAAA;AAAA,YACR,YAAA,EAAgB,8DAAA;AAAA,YAChB,UAAA,EAAc;AAAA,cACZ;AAAA,gBACE,IAAA,EAAQ,+BAAA;AAAA,gBACR,IAAA,EAAQ,MAAA;AAAA,gBACR,YAAA,EAAgB;AAAA,eAClB;AAAA,cACA;AAAA,gBACE,IAAA,EAAQ,eAAA;AAAA,gBACR,IAAA,EAAQ,MAAA;AAAA,gBACR,YAAA,EAAgB;AAAA,eAClB;AAAA,cACA;AAAA,gBACE,IAAA,EAAQ,mBAAA;AAAA,gBACR,IAAA,EAAQ,MAAA;AAAA,gBACR,YAAA,EAAgB;AAAA,eAClB;AAAA,cACA;AAAA,gBACE,IAAA,EAAQ,iBAAA;AAAA,gBACR,IAAA,EAAQ,SAAA;AAAA,gBACR,YAAA,EAAgB;AAAA,eAClB;AAAA,cACA;AAAA,gBACE,IAAA,EAAQ,mBAAA;AAAA,gBACR,IAAA,EAAQ,SAAA;AAAA,gBACR,YAAA,EAAgB;AAAA;AAClB;AACF,WACF;AAAA,UACA;AAAA,YACE,IAAA,EAAQ,UAAA;AAAA,YACR,IAAA,EAAQ,SAAA;AAAA,YACR,YAAA,EAAgB;AAAA,WAClB;AAAA,UACA;AAAA,YACE,IAAA,EAAQ,eAAA;AAAA,YACR,IAAA,EAAQ,QAAA;AAAA,YACR,YAAA,EAAgB;AAAA,WAClB;AAAA,UACA;AAAA,YACE,IAAA,EAAQ,SAAA;AAAA,YACR,IAAA,EAAQ,MAAA;AAAA,YACR,YAAA,EAAgB;AAAA,WAClB;AAAA,UACA;AAAA,YACE,IAAA,EAAQ,UAAA;AAAA,YACR,IAAA,EAAQ,SAAA;AAAA,YACR,YAAA,EAAgB;AAAA,WAClB;AAAA,UACA;AAAA,YACE,IAAA,EAAQ,gBAAA;AAAA,YACR,IAAA,EAAQ,QAAA;AAAA,YACR,YAAA,EAAgB;AAAA,WAClB;AAAA,UACA;AAAA,YACE,IAAA,EAAQ,sBAAA;AAAA,YACR,IAAA,EAAQ,MAAA;AAAA,YACR,YAAA,EAAgB;AAAA,WAClB;AAAA,UACA;AAAA,YACE,IAAA,EAAQ,UAAA;AAAA,YACR,IAAA,EAAQ,SAAA;AAAA,YACR,YAAA,EAAgB;AAAA,WAClB;AAAA,UACA;AAAA,YACE,IAAA,EAAQ,YAAA;AAAA,YACR,IAAA,EAAQ,SAAA;AAAA,YACR,YAAA,EAAgB;AAAA,WAClB;AAAA,UACA;AAAA,YACE,IAAA,EAAQ,MAAA;AAAA,YACR,IAAA,EAAQ,SAAA;AAAA,YACR,YAAA,EAAgB;AAAA,WAClB;AAAA,UACA;AAAA,YACE,IAAA,EAAQ,mBAAA;AAAA,YACR,IAAA,EAAQ,SAAA;AAAA,YACR,YAAA,EAAgB;AAAA,WAClB;AAAA,UACA;AAAA,YACE,IAAA,EAAQ,UAAA;AAAA,YACR,IAAA,EAAQ,SAAA;AAAA,YACR,YAAA,EAAgB;AAAA;AAClB;AACF;AACF,KACF;AAAA,IACA,eAAA,EAAmB;AAAA,GACrB;AAAA,EACA;AAAA,IACE,IAAA,EAAQ,UAAA;AAAA,IACR,IAAA,EAAQ,oBAAA;AAAA,IACR,MAAA,EAAU;AAAA,MACR;AAAA,QACE,IAAA,EAAQ,aAAA;AAAA,QACR,IAAA,EAAQ,SAAA;AAAA,QACR,YAAA,EAAgB;AAAA;AAClB,KACF;AAAA,IACA,OAAA,EAAW;AAAA,MACT;AAAA,QACE,IAAA,EAAQ,EAAA;AAAA,QACR,IAAA,EAAQ,MAAA;AAAA,QACR,YAAA,EAAgB;AAAA;AAClB,KACF;AAAA,IACA,eAAA,EAAmB;AAAA,GACrB;AAAA,EACA;AAAA,IACE,IAAA,EAAQ,UAAA;AAAA,IACR,IAAA,EAAQ,gBAAA;AAAA,IACR,MAAA,EAAU;AAAA,MACR;AAAA,QACE,IAAA,EAAQ,UAAA;AAAA,QACR,IAAA,EAAQ,SAAA;AAAA,QACR,YAAA,EAAgB;AAAA;AAClB,KACF;AAAA,IACA,OAAA,EAAW;AAAA,MACT;AAAA,QACE,IAAA,EAAQ,EAAA;AAAA,QACR,IAAA,EAAQ,SAAA;AAAA,QACR,YAAA,EAAgB;AAAA;AAClB,KACF;AAAA,IACA,eAAA,EAAmB;AAAA,GACrB;AAAA,EACA;AAAA,IACE,IAAA,EAAQ,UAAA;AAAA,IACR,IAAA,EAAQ,WAAA;AAAA,IACR,MAAA,EAAU;AAAA,MACR;AAAA,QACE,IAAA,EAAQ,aAAA;AAAA,QACR,IAAA,EAAQ,SAAA;AAAA,QACR,YAAA,EAAgB;AAAA;AAClB,KACF;AAAA,IACA,OAAA,EAAW;AAAA,MACT;AAAA,QACE,IAAA,EAAQ,SAAA;AAAA,QACR,IAAA,EAAQ,MAAA;AAAA,QACR,YAAA,EAAgB;AAAA;AAClB,KACF;AAAA,IACA,eAAA,EAAmB;AAAA,GACrB;AAAA,EACA;AAAA,IACE,IAAA,EAAQ,UAAA;AAAA,IACR,IAAA,EAAQ,iBAAA;AAAA,IACR,MAAA,EAAU;AAAA,MACR;AAAA,QACE,IAAA,EAAQ,aAAA;AAAA,QACR,IAAA,EAAQ,SAAA;AAAA,QACR,YAAA,EAAgB;AAAA;AAClB,KACF;AAAA,IACA,SAAW,EAAC;AAAA,IACZ,eAAA,EAAmB;AAAA;AAEvB;;;AC1QO,IAAM,WAAA,GAAN,cAA0B,UAAA,CAAW;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,EAqB1C,MAAM,YAAY,MAAA,EAYf;AACD,IAAA,MAAM,SAAS,IAAA,CAAK,YAAA;AACpB,IAAA,MAAM,OAAA,GAAU,MAAM,IAAA,CAAK,gBAAA,EAAiB;AAE5C,IAAA,MAAM,EAAE,OAAA,EAAQ,GAAI,MAAM,IAAA,CAAK,aAAa,gBAAA,CAAiB;AAAA,MAC3D,OAAA,EAAS,KAAK,MAAA,CAAO,cAAA;AAAA,MACrB,GAAA,EAAK,kBAAA;AAAA,MACL,YAAA,EAAc,aAAA;AAAA,MACd,IAAA,EAAM;AAAA,QACJ,MAAA,CAAO,IAAA;AAAA,QACP,MAAA,CAAO,QAAA;AAAA,QACP,MAAA,CAAO,oBAAA;AAAA,QACP,MAAA,CAAO,qBAAA;AAAA,QACP,MAAA,CAAO,YAAA;AAAA,QACP,MAAA,CAAO,WAAA;AAAA,QACP,MAAA,CAAO,aAAA;AAAA,QACP,MAAA,CAAO,eAAA;AAAA,QACP,MAAA,CAAO,iBAAA;AAAA,QACP,MAAA,CAAO,eAAA;AAAA,QACP,MAAA,CAAO;AAAA,OACT;AAAA,MACA;AAAA,KACD,CAAA;AAED,IAAA,OAAO,MAAA,CAAO,cAAc,OAAO,CAAA;AAAA,EACrC;AAAA;AAAA;AAAA;AAAA,EAKA,MAAM,WAAW,MAAA,EAId;AACD,IAAA,MAAM,SAAS,IAAA,CAAK,YAAA;AACpB,IAAA,MAAM,OAAA,GAAU,MAAM,IAAA,CAAK,gBAAA,EAAiB;AAE5C,IAAA,MAAM,EAAE,OAAA,EAAQ,GAAI,MAAM,IAAA,CAAK,aAAa,gBAAA,CAAiB;AAAA,MAC3D,OAAA,EAAS,KAAK,MAAA,CAAO,cAAA;AAAA,MACrB,GAAA,EAAK,kBAAA;AAAA,MACL,YAAA,EAAc,iBAAA;AAAA,MACd,MAAM,CAAC,MAAA,CAAO,SAAS,MAAA,CAAO,WAAA,EAAa,OAAO,aAAa,CAAA;AAAA,MAC/D;AAAA,KACD,CAAA;AAED,IAAA,OAAO,MAAA,CAAO,cAAc,OAAO,CAAA;AAAA,EACrC;AAAA;AAAA;AAAA;AAAA,EAKA,MAAM,SAAA,CAAU,OAAA,EAAiB,MAAA,EAAiB;AAChD,IAAA,MAAM,SAAS,IAAA,CAAK,YAAA;AACpB,IAAA,MAAM,OAAA,GAAU,MAAM,IAAA,CAAK,gBAAA,EAAiB;AAE5C,IAAA,MAAM,YAAA,GAAe,SAAS,YAAA,GAAe,cAAA;AAE7C,IAAA,MAAM,EAAE,OAAA,EAAQ,GAAI,MAAM,IAAA,CAAK,aAAa,gBAAA,CAAiB;AAAA,MAC3D,OAAA,EAAS,KAAK,MAAA,CAAO,cAAA;AAAA,MACrB,GAAA,EAAK,kBAAA;AAAA,MACL,YAAA;AAAA,MACA,IAAA,EAAM,CAAC,OAAO,CAAA;AAAA,MACd;AAAA,KACD,CAAA;AAED,IAAA,OAAO,MAAA,CAAO,cAAc,OAAO,CAAA;AAAA,EACrC;AAAA;AAAA;AAAA;AAAA,EAKA,MAAM,SAAS,OAAA,EAAiB;AAC9B,IAAA,OAAO,IAAA,CAAK,aAAa,YAAA,CAAa;AAAA,MACpC,OAAA,EAAS,KAAK,MAAA,CAAO,cAAA;AAAA,MACrB,GAAA,EAAK,kBAAA;AAAA,MACL,YAAA,EAAc,UAAA;AAAA,MACd,IAAA,EAAM,CAAC,OAAO;AAAA,KACf,CAAA;AAAA,EACH;AAAA;AAAA;AAAA;AAAA,EAKA,MAAM,YAAY,MAAA,EAOf;AACD,IAAA,MAAM,SAAS,IAAA,CAAK,YAAA;AACpB,IAAA,MAAM,OAAA,GAAU,MAAM,IAAA,CAAK,gBAAA,EAAiB;AAE5C,IAAA,MAAM,EAAE,OAAA,EAAQ,GAAI,MAAM,IAAA,CAAK,aAAa,gBAAA,CAAiB;AAAA,MAC3D,OAAA,EAAS,KAAK,MAAA,CAAO,cAAA;AAAA,MACrB,GAAA,EAAK,kBAAA;AAAA,MACL,YAAA,EAAc,aAAA;AAAA,MACd,IAAA,EAAM;AAAA,QACJ,MAAA,CAAO,OAAA;AAAA,QACP,MAAA,CAAO,IAAA;AAAA,QACP,MAAA,CAAO,QAAA;AAAA,QACP,MAAA,CAAO,oBAAA;AAAA,QACP,MAAA,CAAO,qBAAA;AAAA,QACP,MAAA,CAAO;AAAA,OACT;AAAA,MACA;AAAA,KACD,CAAA;AAED,IAAA,OAAO,MAAA,CAAO,cAAc,OAAO,CAAA;AAAA,EACrC;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,EAWA,MAAM,wBAAwB,MAAA,EAA6C;AACzE,IAAA,MAAM,SAAS,IAAA,CAAK,YAAA;AACpB,IAAA,MAAM,OAAA,GAAU,MAAM,IAAA,CAAK,gBAAA,EAAiB;AAE5C,IAAA,MAAM,EAAE,OAAA,EAAQ,GAAI,MAAM,IAAA,CAAK,aAAa,gBAAA,CAAiB;AAAA,MAC3D,OAAA,EAAS,KAAK,MAAA,CAAO,cAAA;AAAA,MACrB,GAAA,EAAK,kBAAA;AAAA,MACL,YAAA,EAAc,8BAAA;AAAA,MACd,IAAA,EAAM,CAAC,MAAA,CAAO,OAAA,EAAS,OAAO,MAAM,CAAA;AAAA,MACpC;AAAA,KACD,CAAA;AAED,IAAA,OAAO,MAAA,CAAO,cAAc,OAAO,CAAA;AAAA,EACrC;AAAA;AAAA;AAAA;AAAA,EAKA,MAAM,mBAAmB,MAAA,EAItB;AACD,IAAA,MAAM,SAAS,IAAA,CAAK,YAAA;AACpB,IAAA,MAAM,OAAA,GAAU,MAAM,IAAA,CAAK,gBAAA,EAAiB;AAE5C,IAAA,MAAM,EAAE,OAAA,EAAQ,GAAI,MAAM,IAAA,CAAK,aAAa,gBAAA,CAAiB;AAAA,MAC3D,OAAA,EAAS,KAAK,MAAA,CAAO,cAAA;AAAA,MACrB,GAAA,EAAK,kBAAA;AAAA,MACL,YAAA,EAAc,yBAAA;AAAA,MACd,MAAM,CAAC,MAAA,CAAO,SAAS,MAAA,CAAO,eAAA,EAAiB,OAAO,UAAU,CAAA;AAAA,MAChE;AAAA,KACD,CAAA;AAED,IAAA,OAAO,MAAA,CAAO,cAAc,OAAO,CAAA;AAAA,EACrC;AAAA;AAAA;AAAA;AAAA,EAKA,MAAM,QAAA,CAAS,IAAA,EAAqB,OAAA,EAAmC;AACrE,IAAA,OAAO,IAAA,CAAK,aAAa,YAAA,CAAa;AAAA,MACpC,OAAA,EAAS,KAAK,MAAA,CAAO,cAAA;AAAA,MACrB,GAAA,EAAK,kBAAA;AAAA,MACL,YAAA,EAAc,UAAA;AAAA,MACd,IAAA,EAAM,CAAC,IAAA,EAAM,OAAO;AAAA,KACrB,CAAA;AAAA,EACH;AAAA;AAAA;AAAA;AAAA,EAKA,MAAM,eAAA,CAAgB,IAAA,EAAqB,OAAA,EAAmC;AAC5E,IAAA,OAAO,IAAA,CAAK,aAAa,YAAA,CAAa;AAAA,MACpC,OAAA,EAAS,KAAK,MAAA,CAAO,cAAA;AAAA,MACrB,GAAA,EAAK,kBAAA;AAAA,MACL,YAAA,EAAc,iBAAA;AAAA,MACd,IAAA,EAAM,CAAC,IAAA,EAAM,OAAO;AAAA,KACrB,CAAA;AAAA,EACH;AAAA;AAAA;AAAA;AAAA;AAAA,EAOA,MAAM,iBAAA,GAAqC;AACzC,IAAA,OAAO,IAAA,CAAK,aAAa,YAAA,CAAa;AAAA,MACpC,OAAA,EAAS,KAAK,MAAA,CAAO,cAAA;AAAA,MACrB,GAAA,EAAK,qBAAA;AAAA,MACL,YAAA,EAAc;AAAA,KACf,CAAA;AAAA,EACH;AAAA;AAAA;AAAA;AAAA;AAAA,EAMA,MAAM,kBAAkB,GAAA,EAAa;AACnC,IAAA,MAAM,SAAS,IAAA,CAAK,YAAA;AACpB,IAAA,MAAM,OAAA,GAAU,MAAM,IAAA,CAAK,gBAAA,EAAiB;AAE5C,IAAA,MAAM,EAAE,OAAA,EAAQ,GAAI,MAAM,IAAA,CAAK,aAAa,gBAAA,CAAiB;AAAA,MAC3D,OAAA,EAAS,KAAK,MAAA,CAAO,cAAA;AAAA,MACrB,GAAA,EAAK,qBAAA;AAAA,MACL,YAAA,EAAc,mBAAA;AAAA,MACd,IAAA,EAAM,CAAC,GAAG,CAAA;AAAA,MACV;AAAA,KACD,CAAA;AAED,IAAA,OAAO,MAAA,CAAO,cAAc,OAAO,CAAA;AAAA,EACrC;AACF;ACjPO,IAAM,kBAAA,GAAqB;AAG3B,IAAM,cAAA,GAAiB;AAGvB,IAAM,gBAAA,GAAmB,CAAC,kBAAA,EAAoB,cAAc;AAO5D,SAAS,gBAAgB,QAAA,EAA2B;AACzD,EAAA,OAAO,QAAA,KAAa,sBAAsB,QAAA,KAAa,cAAA;AACzD;AAQO,SAAS,WAAA,CAAY,IAAA,EAAc,QAAA,GAAmB,kBAAA,EAA4B;AACvF,EAAA,MAAM,QAAQ,IAAA,GAAO,QAAA;AACrB,EAAA,OAAA,CAAQ,MAAA,CAAO,KAAK,CAAA,GAAI,IAAA,EAAM,QAAQ,CAAC,CAAA;AACzC;AAOO,SAAS,YAAY,KAAA,EAAgC;AAC1D,EAAA,MAAM,WAAW,OAAO,KAAA,KAAU,QAAA,GAAW,UAAA,CAAW,KAAK,CAAA,GAAI,KAAA;AACjE,EAAA,OAAO,MAAA,CAAO,IAAA,CAAK,KAAA,CAAM,QAAA,GAAW,GAAG,CAAC,CAAA;AAC1C;AAYO,SAAS,WAAA,CAAY,MAAA,EAAgB,QAAA,GAAmB,EAAA,EAAY;AACzE,EAAA,IAAI,aAAa,EAAA,EAAI;AACnB,IAAA,OAAO,WAAW,MAAM,CAAA;AAAA,EAC1B;AAGA,EAAA,MAAM,KAAA,GAAQ,MAAA,CAAO,KAAA,CAAM,GAAG,CAAA;AAC9B,EAAA,MAAM,SAAA,GAAY,KAAA,CAAM,CAAC,CAAA,IAAK,GAAA;AAC9B,EAAA,MAAM,WAAA,GAAA,CAAe,KAAA,CAAM,CAAC,CAAA,IAAK,EAAA,EAAI,MAAA,CAAO,QAAA,EAAU,GAAG,CAAA,CAAE,KAAA,CAAM,CAAA,EAAG,QAAQ,CAAA;AAE5E,EAAA,OAAO,MAAA,CAAO,YAAY,WAAW,CAAA;AACvC;AAYO,SAAS,YAAA,CAAa,MAAA,EAAgB,QAAA,GAAmB,EAAA,EAAY;AAC1E,EAAA,IAAI,aAAa,EAAA,EAAI;AACnB,IAAA,OAAO,YAAY,MAAM,CAAA;AAAA,EAC3B;AAGA,EAAA,MAAM,YAAY,MAAA,CAAO,QAAA,GAAW,QAAA,CAAS,QAAA,GAAW,GAAG,GAAG,CAAA;AAC9D,EAAA,MAAM,YAAY,SAAA,CAAU,KAAA,CAAM,CAAA,EAAG,CAAC,QAAQ,CAAA,IAAK,GAAA;AACnD,EAAA,MAAM,WAAA,GAAc,SAAA,CAAU,KAAA,CAAM,CAAC,QAAQ,CAAA;AAG7C,EAAA,MAAM,cAAA,GAAiB,WAAA,CAAY,OAAA,CAAQ,KAAA,EAAO,EAAE,CAAA;AAEpD,EAAA,OAAO,cAAA,GAAiB,CAAA,EAAG,SAAS,CAAA,CAAA,EAAI,cAAc,CAAA,CAAA,GAAK,SAAA;AAC7D;AAOO,SAAS,aAAa,QAAA,EAAmC;AAC9D,EAAA,IAAI,OAAA;AAEJ,EAAA,IAAI,OAAO,aAAa,QAAA,EAAU;AAChC,IAAA,OAAA,GAAU,QAAA;AAAA,EACZ,CAAA,MAAO;AAEL,IAAA,MAAM,KAAA,GAAQ,QAAA,CAAS,KAAA,CAAM,iBAAiB,CAAA;AAC9C,IAAA,IAAI,CAAC,KAAA,EAAO;AACV,MAAA,MAAM,IAAI,MAAM,6DAA6D,CAAA;AAAA,IAC/E;AAEA,IAAA,MAAM,KAAA,GAAQ,QAAA,CAAS,KAAA,CAAM,CAAC,CAAC,CAAA;AAC/B,IAAA,MAAM,IAAA,GAAO,MAAM,CAAC,CAAA;AAEpB,IAAA,MAAM,WAAA,GAAsC;AAAA,MAC1C,CAAA,EAAG,CAAA;AAAA,MACH,CAAA,EAAG,EAAA;AAAA,MACH,CAAA,EAAG,IAAA;AAAA,MACH,CAAA,EAAG;AAAA,KACL;AAEA,IAAA,OAAA,GAAU,KAAA,GAAQ,YAAY,IAAI,CAAA;AAAA,EACpC;AAEA,EAAA,OAAO,MAAA,CAAO,KAAK,KAAA,CAAM,IAAA,CAAK,KAAI,GAAI,GAAI,IAAI,OAAO,CAAA;AACvD;AAOO,SAAS,gBAAgB,SAAA,EAAoC;AAClE,EAAA,MAAM,KAAK,OAAO,SAAA,KAAc,QAAA,GAAW,MAAA,CAAO,SAAS,CAAA,GAAI,SAAA;AAC/D,EAAA,OAAO,IAAI,IAAA,CAAK,EAAA,GAAK,GAAI,EAAE,cAAA,EAAe;AAC5C;AAsBO,SAAS,mBAAmB,aAAA,EAAuC;AACxE,EAAA,IAAI;AAIF,IAAA,MAAM,eAAA,GAAkB,oEAAA;AAExB,IAAA,IAAI,KAAA,GAAQ,EAAA;AACZ,IAAA,IAAI,WAAA,GAAc,EAAA;AAGlB,IAAA,MAAM,WAAA,GAAc,aAAA,CAAc,KAAA,CAAM,gBAAgB,CAAA;AACxD,IAAA,IAAI,WAAA,EAAa;AACf,MAAA,MAAM,aAAa,aAAA,CAAc,KAAA,CAAM,WAAA,CAAY,CAAC,EAAE,MAAM,CAAA;AAG5D,MAAA,MAAM,OAAA,GAAU,UAAA,CAAW,OAAA,CAAQ,eAAe,CAAA;AAElD,MAAA,IAAI,WAAW,CAAA,EAAG;AAChB,QAAA,KAAA,GAAQ,UAAA,CAAW,KAAA,CAAM,CAAA,EAAG,OAAO,EAAE,IAAA,EAAK;AAC1C,QAAA,MAAM,QAAA,GAAW,UAAA,CAAW,KAAA,CAAM,OAAA,GAAU,gBAAgB,MAAM,CAAA;AAClE,QAAA,MAAM,QAAA,GAAW,QAAA,CAAS,KAAA,CAAM,eAAe,CAAA;AAC/C,QAAA,WAAA,GAAc,QAAA,GACV,QAAA,CAAS,KAAA,CAAM,CAAA,EAAG,QAAA,CAAS,KAAK,CAAA,CAAE,IAAA,EAAK,GACvC,QAAA,CAAS,IAAA,EAAK;AAAA,MACpB,CAAA,MAAO;AACL,QAAA,MAAM,QAAA,GAAW,UAAA,CAAW,KAAA,CAAM,eAAe,CAAA;AACjD,QAAA,KAAA,GAAQ,QAAA,GACJ,UAAA,CAAW,KAAA,CAAM,CAAA,EAAG,QAAA,CAAS,KAAK,CAAA,CAAE,IAAA,EAAK,GACzC,UAAA,CAAW,IAAA,EAAK;AAAA,MACtB;AAAA,IACF;AAEA,IAAA,OAAO;AAAA,MACL,OAAO,KAAA,IAAS,aAAA;AAAA;AAAA,MAChB,aAAa,WAAA,IAAe;AAAA,KAC9B;AAAA,EACF,SAAS,CAAA,EAAG;AAEV,IAAA,OAAO,EAAE,KAAA,EAAO,aAAA,EAAe,WAAA,EAAa,EAAA,EAAG;AAAA,EACjD;AACF;AAkBO,SAAS,oBAAoB,QAAA,EAAkC;AACpE,EAAA,IAAI,IAAA,GAAO,CAAA,QAAA,EAAW,QAAA,CAAS,KAAK,CAAA,CAAA;AACpC,EAAA,IAAI,SAAS,WAAA,EAAa;AACxB,IAAA,IAAA,IAAQ,CAAA,aAAA,EAAgB,SAAS,WAAW,CAAA,CAAA;AAAA,EAC9C;AACA,EAAA,OAAO,IAAA;AACT;AAUO,SAAS,gBAAA,CAAiB,MAAuB,QAAA,EAAmC;AACzF,EAAA,MAAM,UAAU,OAAO,IAAA,KAAS,QAAA,GAAW,UAAA,CAAW,IAAI,CAAA,GAAI,IAAA;AAC9D,EAAA,MAAM,cAAc,OAAO,QAAA,KAAa,QAAA,GAAW,UAAA,CAAW,QAAQ,CAAA,GAAI,QAAA;AAC1E,EAAA,IAAI,OAAA,KAAY,CAAA,IAAK,WAAA,KAAgB,CAAA,EAAG,OAAO,CAAA;AAC/C,EAAA,MAAM,KAAA,GAAS,UAAU,WAAA,GAAe,IAAA;AACxC,EAAA,OAAO,UAAA,CAAA,CAAY,KAAA,GAAQ,GAAA,EAAK,OAAA,CAAQ,CAAC,CAAC,CAAA;AAC5C;AAyBO,SAAS,eAAA,CAAgB,QAAiC,YAAA,EAA8B;AAC7F,EAAA,MAAM,QAAA,GAAW,OAAO,QAAA,IAAY,GAAA;AAGpC,EAAA,IAAI,MAAA,CAAO,MAAA,KAAW,UAAA,IAAc,MAAA,CAAO,mBAAmB,IAAA,EAAM;AAClE,IAAA,OAAO,SAAS,MAAA,CAAO,MAAA,CAAO,eAAe,CAAC,CAAA,KAAM,eAAe,GAAA,GAAM,CAAA;AAAA,EAC3E;AAGA,EAAA,MAAM,UAAU,MAAA,CAAO,eAAA;AACvB,EAAA,IAAI,CAAC,OAAA,EAAS;AACZ,IAAA,MAAM,SAAS,MAAA,CAAO,eAAA;AACtB,IAAA,IAAI,CAAC,QAAQ,OAAO,CAAA;AACpB,IAAA,MAAM,SAAA,GAAY,gBAAA,CAAiB,MAAA,EAAQ,QAAQ,CAAA;AACnD,IAAA,OAAO,YAAA,KAAiB,CAAA,GAAI,SAAA,GAAa,GAAA,GAAM,SAAA;AAAA,EACjD;AAEA,EAAA,MAAM,UAAA,GAAa,gBAAA,CAAiB,OAAA,EAAS,QAAQ,CAAA;AACrD,EAAA,OAAO,YAAA,KAAiB,CAAA,GAAI,UAAA,GAAc,GAAA,GAAM,UAAA;AAClD;AA8BA,IAAM,2BAAA,GAA8B,GAAA;AAgB7B,SAAS,uBAAuB,MAAA,EAAoC;AACzE,EAAA,MAAM,WAAA,GAAc,UAAA,CAAW,MAAA,CAAO,QAAA,IAAY,GAAG,CAAA;AACrD,EAAA,IAAI,WAAA,KAAgB,GAAG,OAAO,EAAA;AAG9B,EAAA,IAAI,MAAA,CAAO,MAAA,KAAW,UAAA,IAAc,MAAA,CAAO,mBAAmB,IAAA,EAAM;AAClE,IAAA,OAAO,SAAS,MAAA,CAAO,MAAA,CAAO,eAAe,CAAC,CAAA,KAAM,IAAI,GAAA,GAAM,CAAA;AAAA,EAChE;AAEA,EAAA,MAAM,WAAW,IAAA,GAAO,WAAA;AAGxB,EAAA,IAAI,MAAA,CAAO,SAAA,IAAa,MAAA,CAAO,SAAA,CAAU,SAAS,CAAA,EAAG;AACnD,IAAA,MAAM,GAAA,GAAM,cAAA,CAAe,MAAA,CAAO,SAAS,CAAA;AAC3C,IAAA,MAAM,MAAA,GAAS,sBAAA,CAAuB,GAAA,EAAK,QAAA,EAAU,WAAW,CAAA;AAChE,IAAA,IAAI,MAAA,KAAW,MAAM,OAAO,MAAA;AAAA,EAC9B;AAGA,EAAA,OAAO,iBAAA,CAAkB,QAAQ,WAAW,CAAA;AAC9C;AAeA,SAAS,eAAe,OAAA,EAA4C;AAClE,EAAA,MAAM,MAAA,GAA0B,EAAE,MAAA,EAAQ,CAAA,EAAG,QAAQ,CAAA,EAAG,KAAA,EAAO,CAAA,EAAG,KAAA,EAAO,CAAA,EAAE;AAE3E,EAAA,KAAA,MAAW,SAAS,OAAA,EAAS;AAC3B,IAAA,MAAM,IAAA,GAAO,UAAA,CAAW,KAAA,CAAM,OAAA,IAAW,GAAG,CAAA;AAC5C,IAAA,MAAM,OAAA,GAAU,KAAA,CAAM,OAAA,EAAS,QAAA,EAAS;AACxC,IAAA,MAAM,OAAO,KAAA,CAAM,IAAA;AAEnB,IAAA,IAAI,OAAA,KAAY,GAAA,IAAO,IAAA,KAAS,KAAA,SAAc,MAAA,GAAS,IAAA;AAAA,SAAA,IAC9C,OAAA,KAAY,GAAA,IAAO,IAAA,KAAS,MAAA,SAAe,MAAA,GAAS,IAAA;AAAA,SAAA,IACpD,OAAA,KAAY,GAAA,IAAO,IAAA,KAAS,KAAA,SAAc,KAAA,GAAQ,IAAA;AAAA,SAAA,IAClD,OAAA,KAAY,GAAA,IAAO,IAAA,KAAS,MAAA,SAAe,KAAA,GAAQ,IAAA;AAAA,EAC9D;AAEA,EAAA,OAAO,MAAA;AACT;AAMA,SAAS,sBAAA,CACP,GAAA,EACA,QAAA,EACA,QAAA,EACe;AAEf,EAAA,MAAM,gBAA0B,EAAC;AACjC,EAAA,IAAI,IAAI,MAAA,GAAS,CAAA,EAAG,aAAA,CAAc,IAAA,CAAK,IAAI,MAAM,CAAA;AACjD,EAAA,IAAI,IAAI,KAAA,GAAQ,CAAA,gBAAiB,IAAA,CAAK,QAAA,GAAW,IAAI,KAAK,CAAA;AAG1D,EAAA,MAAM,gBAA0B,EAAC;AACjC,EAAA,IAAI,IAAI,MAAA,GAAS,CAAA,EAAG,aAAA,CAAc,IAAA,CAAK,IAAI,MAAM,CAAA;AACjD,EAAA,IAAI,IAAI,KAAA,GAAQ,CAAA,gBAAiB,IAAA,CAAK,QAAA,GAAW,IAAI,KAAK,CAAA;AAG1D,EAAA,IAAI,cAAc,MAAA,KAAW,CAAA,IAAK,aAAA,CAAc,MAAA,KAAW,GAAG,OAAO,IAAA;AAErE,EAAA,MAAM,UAAA,GAAa,IAAA,CAAK,GAAA,CAAI,GAAG,aAAa,CAAA;AAC5C,EAAA,MAAM,UAAA,GAAa,IAAA,CAAK,GAAA,CAAI,GAAG,aAAa,CAAA;AAG5C,EAAA,MAAM,aAAA,GAAA,CAAkB,UAAA,GAAa,UAAA,IAAc,QAAA,GAAY,IAAA;AAC/D,EAAA,IAAI,aAAA,GAAgB,6BAA6B,OAAO,IAAA;AAGxD,EAAA,MAAM,OAAA,GAAA,CAAW,aAAa,UAAA,IAAc,CAAA;AAC5C,EAAA,MAAM,OAAA,GAAW,OAAA,GAAU,QAAA,GAAW,IAAA,GAAQ,GAAA;AAC9C,EAAA,OAAO,UAAA,CAAW,IAAA,CAAK,GAAA,CAAI,CAAA,EAAG,IAAA,CAAK,GAAA,CAAI,GAAA,EAAK,OAAO,CAAC,CAAA,CAAE,OAAA,CAAQ,CAAC,CAAC,CAAA;AAClE;AAOA,SAAS,iBAAA,CAAkB,QAA4B,QAAA,EAA0B;AAC/E,EAAA,MAAM,KAAA,GAAQ,UAAA,CAAW,MAAA,CAAO,eAAA,IAAmB,GAAG,CAAA;AACtD,EAAA,MAAM,KAAA,GAAQ,UAAA,CAAW,MAAA,CAAO,eAAA,IAAmB,GAAG,CAAA;AACtD,EAAA,MAAM,GAAA,GAAM,UAAA,CAAW,MAAA,CAAO,oBAAA,IAAwB,GAAG,CAAA;AACzD,EAAA,MAAM,GAAA,GAAM,UAAA,CAAW,MAAA,CAAO,oBAAA,IAAwB,GAAG,CAAA;AAGzD,EAAA,IAAI,KAAA,GAAQ,CAAA,IAAK,KAAA,GAAQ,CAAA,EAAG;AAC1B,IAAA,IAAI,GAAA,GAAM,CAAA,IAAK,GAAA,GAAM,CAAA,EAAG;AAEtB,MAAA,IAAI,OAAO,GAAA,EAAK;AACd,QAAA,OAAO,YAAa,KAAA,GAAQ,QAAA,GAAW,OAAQ,GAAA,EAAK,OAAA,CAAQ,CAAC,CAAC,CAAA;AAAA,MAChE;AAEA,MAAA,OAAO,UAAA,CAAA,CAAA,CAAa,IAAK,KAAA,GAAQ,QAAA,GAAW,QAAS,GAAA,EAAK,OAAA,CAAQ,CAAC,CAAC,CAAA;AAAA,IACtE;AAEA,IAAA,OAAO,YAAa,KAAA,GAAQ,QAAA,GAAW,OAAQ,GAAA,EAAK,OAAA,CAAQ,CAAC,CAAC,CAAA;AAAA,EAChE;AAGA,EAAA,IAAI,QAAQ,CAAA,EAAG;AACb,IAAA,OAAO,YAAa,KAAA,GAAQ,QAAA,GAAW,OAAQ,GAAA,EAAK,OAAA,CAAQ,CAAC,CAAC,CAAA;AAAA,EAChE;AAGA,EAAA,IAAI,QAAQ,CAAA,EAAG;AACb,IAAA,OAAO,UAAA,CAAA,CAAA,CAAa,IAAK,KAAA,GAAQ,QAAA,GAAW,QAAS,GAAA,EAAK,OAAA,CAAQ,CAAC,CAAC,CAAA;AAAA,EACtE;AAGA,EAAA,OAAO,EAAA;AACT;;;AC/aA,eAAsB,gBAAA,CACpB,cACA,KAAA,EACiB;AACjB,EAAA,MAAM,QAAA,GAAW,MAAM,YAAA,CAAa,YAAA,CAAa;AAAA,IAC/C,OAAA,EAAS,KAAA;AAAA,IACT,GAAA,EAAK;AAAA,MACH;AAAA,QACE,IAAA,EAAM,UAAA;AAAA,QACN,IAAA,EAAM,UAAA;AAAA,QACN,eAAA,EAAiB,MAAA;AAAA,QACjB,QAAQ,EAAC;AAAA,QACT,OAAA,EAAS,CAAC,EAAE,IAAA,EAAM,SAAS;AAAA;AAC7B,KACF;AAAA,IACA,YAAA,EAAc;AAAA,GACf,CAAA;AAED,EAAA,OAAO,OAAO,QAAQ,CAAA;AACxB;AAaO,SAAS,gBAAA,CACd,QACA,QAAA,EACQ;AACR,EAAA,IAAI,QAAA,GAAW,CAAA,IAAK,QAAA,GAAW,EAAA,EAAI;AACjC,IAAA,MAAM,IAAI,KAAA,CAAM,CAAA,kBAAA,EAAqB,QAAQ,CAAA,2BAAA,CAA6B,CAAA;AAAA,EAC5E;AAEA,EAAA,IAAI,CAAC,MAAA,IAAU,MAAA,CAAO,IAAA,OAAW,EAAA,EAAI;AACnC,IAAA,MAAM,IAAI,MAAM,wBAAwB,CAAA;AAAA,EAC1C;AAEA,EAAA,OAAO,WAAA,CAAY,QAAQ,QAAQ,CAAA;AACrC;AAMA,IAAM,aAAA,uBAAoB,GAAA,EAAoB;AAe9C,eAAsB,sBAAA,CACpB,cACA,KAAA,EACiB;AACjB,EAAA,MAAM,OAAA,GAAU,MAAM,YAAA,CAAa,UAAA,EAAW;AAC9C,EAAA,MAAM,WAAW,CAAA,EAAG,OAAO,CAAA,CAAA,EAAI,KAAA,CAAM,aAAa,CAAA,CAAA;AAElD,EAAA,MAAM,MAAA,GAAS,aAAA,CAAc,GAAA,CAAI,QAAQ,CAAA;AACzC,EAAA,IAAI,WAAW,MAAA,EAAW;AACxB,IAAA,OAAO,MAAA;AAAA,EACT;AAEA,EAAA,MAAM,QAAA,GAAW,MAAM,gBAAA,CAAiB,YAAA,EAAc,KAAK,CAAA;AAC3D,EAAA,aAAA,CAAc,GAAA,CAAI,UAAU,QAAQ,CAAA;AAEpC,EAAA,OAAO,QAAA;AACT;AAKO,SAAS,kBAAA,GAA2B;AACzC,EAAA,aAAA,CAAc,KAAA,EAAM;AACtB;;;AC7FA,IAAM,2BAAA,GAA8B;AAAA,EAClC;AAAA,IACE,IAAA,EAAM,kBAAA;AAAA,IACN,IAAA,EAAM,UAAA;AAAA,IACN,eAAA,EAAiB,MAAA;AAAA,IACjB,MAAA,EAAQ;AAAA,MACN,EAAE,IAAA,EAAM,SAAA,EAAW,IAAA,EAAM,SAAA,EAAU;AAAA,MACnC,EAAE,IAAA,EAAM,UAAA,EAAY,IAAA,EAAM,SAAA;AAAU,KACtC;AAAA,IACA,SAAS,CAAC,EAAE,MAAM,EAAA,EAAI,IAAA,EAAM,QAAQ;AAAA;AAExC,CAAA;AAEO,IAAM,YAAA,GAAN,cAA2B,UAAA,CAAW;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,EAOnC,oBAAoB,QAAA,EAAyC;AAEnE,IAAA,IAAI,IAAA,GAAO,CAAA,QAAA,EAAW,QAAA,CAAS,KAAK,CAAA,CAAA;AACpC,IAAA,IAAA,IAAQ,CAAA,aAAA,EAAgB,SAAS,WAAW,CAAA,CAAA;AAG5C,IAAA,OAAO,YAAY,IAAI,CAAA;AAAA,EACzB;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,EAaA,MAAM,aAAa,MAAA,EAShB;AACD,IAAA,MAAM,SAAS,IAAA,CAAK,YAAA;AACpB,IAAA,MAAM,OAAA,GAAU,MAAM,IAAA,CAAK,gBAAA,EAAiB;AAC5C,IAAA,MAAM,cAAA,GAAiB,MAAM,IAAA,CAAK,gBAAA,EAAiB;AAInD,IAAA,MAAM,KAAA,GAAa,MAAM,IAAA,CAAK,YAAA,CAAa,YAAA,CAAa;AAAA,MACtD,OAAA,EAAS,KAAK,MAAA,CAAO,cAAA;AAAA,MACrB,GAAA,EAAK,kBAAA;AAAA,MACL,YAAA,EAAc,UAAA;AAAA,MACd,IAAA,EAAM,CAAC,MAAA,CAAO,OAAO;AAAA,KACtB,CAAA;AAED,IAAA,MAAM,WAAA,GAAc,MAAA,CAAO,KAAA,CAAM,iBAAiB,CAAA;AAClD,IAAA,MAAM,SAAS,MAAA,CAAO,KAAA,CAAM,eAAe,CAAA,IAAK,OAAO,gBAAA,IAAoB,EAAA,CAAA;AAC3E,IAAA,MAAM,gBAAgB,WAAA,GAAc,MAAA;AAEpC,IAAA,IAAI,gBAAgB,EAAA,EAAI;AACtB,MAAA,MAAM,SAAA,GAAY,MAAM,IAAA,CAAK,YAAA,CAAa,YAAA,CAAa;AAAA,QACrD,SAAS,MAAA,CAAO,eAAA;AAAA,QAChB,GAAA,EAAK,QAAA;AAAA,QACL,YAAA,EAAc,WAAA;AAAA,QACd,IAAA,EAAM,CAAC,cAAA,EAAgB,IAAA,CAAK,OAAO,cAAc;AAAA,OAClD,CAAA;AAED,MAAA,IAAI,YAAY,aAAA,EAAe;AAC7B,QAAA,MAAM,IAAI,KAAA;AAAA,UACR,qCAAqC,SAAA,CAAU,QAAA,EAAU,CAAA,YAAA,EAAe,aAAA,CAAc,UAAU,CAAA,OAAA,EAAU,YAAY,QAAA,EAAU,aAAa,MAAA,CAAO,QAAA,EAAU,CAAA,+BAAA,EAC5J,IAAA,CAAK,OAAO,cACd,CAAA,EAAA;AAAA,SACF;AAAA,MACF;AAEA,MAAA,MAAM,OAAA,GAAU,MAAM,IAAA,CAAK,YAAA,CAAa,YAAA,CAAa;AAAA,QACnD,SAAS,MAAA,CAAO,eAAA;AAAA,QAChB,GAAA,EAAK,QAAA;AAAA,QACL,YAAA,EAAc,WAAA;AAAA,QACd,IAAA,EAAM,CAAC,cAAc;AAAA,OACtB,CAAA;AAED,MAAA,IAAI,UAAU,aAAA,EAAe;AAC3B,QAAA,MAAM,IAAI,KAAA;AAAA,UACR,CAAA,uCAAA,EAA0C,OAAA,CAAQ,QAAA,EAAU,eAAe,aAAA,CAAc,QAAA,EAAU,CAAA,OAAA,EAAU,YAAY,QAAA,EAAU,CAAA,UAAA,EAAa,MAAA,CAAO,UAAU,CAAA,EAAA;AAAA,SACnK;AAAA,MACF;AAAA,IACF;AAEA,IAAA,IAAI,CAAC,eAAA,CAAgB,MAAA,CAAO,QAAQ,CAAA,EAAG;AACrC,MAAA,MAAM,IAAI,MAAM,oDAAoD,CAAA;AAAA,IACtE;AAGA,IAAA,MAAM,aAAA,GAAgB,IAAA,CAAK,mBAAA,CAAoB,MAAA,CAAO,QAAQ,CAAA;AAG9D,IAAA,MAAM,WAAA,GAAA,CAAe,MAAA,CAAO,IAAA,IAAQ,EAAC,EAAG,GAAA;AAAA,MAAI,CAAC,CAAA,KAC3C,WAAA,CAAY,GAAG,EAAE,IAAA,EAAM,IAAI;AAAA,KAC7B;AAGA,IAAA,MAAM,EAAE,OAAA,EAAQ,GAAI,MAAM,IAAA,CAAK,aAAa,gBAAA,CAAiB;AAAA,MAC3D,OAAA,EAAS,KAAK,MAAA,CAAO,cAAA;AAAA,MACrB,GAAA,EAAK,oBAAA;AAAA,MACL,YAAA,EAAc,cAAA;AAAA,MACd,IAAA,EAAM;AAAA,QACJ,MAAA,CAAO,OAAA;AAAA,QACP,aAAA;AAAA,QACA,MAAA,CAAO,QAAA;AAAA,QACP,MAAA,CAAO,QAAA;AAAA,QACP,MAAA,CAAO,eAAA;AAAA,QACP,MAAA,CAAO,gBAAA;AAAA,QACP,OAAO,QAAA,IAAY,EAAA;AAAA,QACnB;AAAA,OACF;AAAA,MACA;AAAA,KACD,CAAA;AAED,IAAA,OAAO,MAAA,CAAO,cAAc,OAAO,CAAA;AAAA,EACrC;AAAA;AAAA;AAAA;AAAA,EAKA,MAAM,sBAAsB,QAAA,EAAkB;AAC5C,IAAA,OAAO,IAAA,CAAK,aAAa,YAAA,CAAa;AAAA,MACpC,OAAA,EAAS,KAAK,MAAA,CAAO,cAAA;AAAA,MACrB,GAAA,EAAK,oBAAA;AAAA,MACL,YAAA,EAAc,uBAAA;AAAA,MACd,IAAA,EAAM,CAAC,QAAQ;AAAA,KAChB,CAAA;AAAA,EACH;AAAA;AAAA;AAAA;AAAA,EAKA,MAAM,qBAAqB,QAAA,EAAkB;AAC3C,IAAA,OAAO,IAAA,CAAK,aAAa,YAAA,CAAa;AAAA,MACpC,OAAA,EAAS,KAAK,MAAA,CAAO,cAAA;AAAA,MACrB,GAAA,EAAK,oBAAA;AAAA,MACL,YAAA,EAAc,sBAAA;AAAA,MACd,IAAA,EAAM,CAAC,QAAQ;AAAA,KAChB,CAAA;AAAA,EACH;AAAA;AAAA;AAAA;AAAA,EAKA,MAAM,oBAAoB,QAAA,EAAkB;AAC1C,IAAA,OAAO,IAAA,CAAK,aAAa,YAAA,CAAa;AAAA,MACpC,OAAA,EAAS,KAAK,MAAA,CAAO,cAAA;AAAA,MACrB,GAAA,EAAK,oBAAA;AAAA,MACL,YAAA,EAAc,qBAAA;AAAA,MACd,IAAA,EAAM,CAAC,QAAQ;AAAA,KAChB,CAAA;AAAA,EACH;AAAA;AAAA;AAAA;AAAA,EAKA,MAAM,aAAA,CAAc,QAAA,EAAkB,YAAA,EAAuC;AAE3E,IAAA,MAAM,WAAA,GAAmB,MAAM,IAAA,CAAK,oBAAA,CAAqB,QAAQ,CAAA;AAEjE,IAAA,MAAM,MAAM,WAAA,CAAY,WAAA;AACxB,IAAA,IAAI,CAAC,GAAA,IAAO,GAAA,CAAI,MAAA,IAAU,MAAA,CAAO,YAAY,CAAA,EAAG;AAC9C,MAAA,MAAM,IAAI,MAAM,uCAAuC,CAAA;AAAA,IACzD;AAEA,IAAA,OAAO,MAAA,CAAO,GAAA,CAAI,MAAA,CAAO,YAAY,CAAC,CAAC,CAAA;AAAA,EACzC;AAAA;AAAA;AAAA;AAAA;AAAA,EAMA,MAAM,cAAc,QAAA,EAAkB;AACpC,IAAA,MAAM,OAAA,GAAU,OAAO,OAAA,EAAiB,IAAA,KAAiB;AACvD,MAAA,OAAQ,MAAM,IAAA,CAAK,YAAA,CAAa,YAAA,CAAa;AAAA,QAC3C,OAAA,EAAS,KAAK,MAAA,CAAO,cAAA;AAAA,QACrB,GAAA,EAAK,sBAAA;AAAA,QACL,YAAA,EAAc,cAAA;AAAA,QACd,MAAM,CAAC,QAAA,EAAU,MAAA,CAAO,OAAO,GAAG,IAAI;AAAA,OACvC,CAAA;AAAA,IACH,CAAA;AAGA,IAAA,MAAM,CAAC,QAAQ,MAAA,EAAQ,KAAA,EAAO,KAAK,CAAA,GAAI,MAAM,QAAQ,GAAA,CAAI;AAAA,MACvD,OAAA,CAAQ,GAAG,CAAC,CAAA;AAAA;AAAA,MACZ,OAAA,CAAQ,GAAG,CAAC,CAAA;AAAA;AAAA,MACZ,OAAA,CAAQ,GAAG,CAAC,CAAA;AAAA;AAAA,MACZ,OAAA,CAAQ,GAAG,CAAC;AAAA;AAAA,KACb,CAAA;AAED,IAAA,OAAO;AAAA,MACL,MAAA;AAAA,MACA,MAAA;AAAA,MACA,KAAA;AAAA,MACA;AAAA,KACF;AAAA,EACF;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,EASA,MAAM,eAAA,CACJ,QAAA,EACA,IAAA,EACA,MAAA,EACA;AACA,IAAA,MAAM,SAAA,GAAY,QAAQ,SAAA,IAAa,KAAA;AAIvC,IAAA,MAAM,WAAA,GAAmB,MAAM,IAAA,CAAK,oBAAA,CAAqB,QAAQ,CAAA;AACjE,IAAA,MAAM,kBAAkB,WAAA,CAAY,eAAA;AAGpC,IAAA,MAAM,QAAA,GAAW,MAAM,gBAAA,CAAiB,IAAA,CAAK,cAAc,eAAe,CAAA;AAE1E,IAAA,MAAM,aAAA,GAAgB,MAAM,IAAA,CAAK,aAAA,CAAc,UAAU,EAAE,CAAA;AAC3D,IAAA,MAAM,YAAA,GAAe,MAAM,IAAA,CAAK,aAAA,CAAc,UAAU,EAAE,CAAA;AAE1D,IAAA,MAAM,CAAC,UAAA,EAAY,SAAS,CAAA,GAAI,MAAM,QAAQ,GAAA,CAAI;AAAA,MAChD,IAAA,CAAK,aAAa,YAAA,CAAa;AAAA,QAC7B,OAAA,EAAS,KAAK,MAAA,CAAO,wBAAA;AAAA,QACrB,GAAA,EAAK,yBAAA;AAAA,QACL,YAAA,EAAc,WAAA;AAAA,QACd,IAAA,EAAM,CAAC,IAAA,EAAM,aAAa;AAAA,OAC3B,CAAA;AAAA,MACD,IAAA,CAAK,aAAa,YAAA,CAAa;AAAA,QAC7B,OAAA,EAAS,KAAK,MAAA,CAAO,wBAAA;AAAA,QACrB,GAAA,EAAK,yBAAA;AAAA,QACL,YAAA,EAAc,WAAA;AAAA,QACd,IAAA,EAAM,CAAC,IAAA,EAAM,YAAY;AAAA,OAC1B;AAAA,KACF,CAAA;AAED,IAAA,IAAI,SAAA,EAAW;AACb,MAAA,OAAO;AAAA,QACL,GAAA,EAAK,YAAA,CAAa,UAAA,EAAsB,QAAQ,CAAA;AAAA,QAChD,EAAA,EAAI,YAAA,CAAa,SAAA,EAAqB,QAAQ;AAAA,OAChD;AAAA,IACF;AAEA,IAAA,OAAO;AAAA,MACL,GAAA,EAAK,UAAA;AAAA,MACL,EAAA,EAAI;AAAA,KACN;AAAA,EACF;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,EAWA,MAAM,mBAAmB,QAAA,EAAkB;AACzC,IAAA,IAAI;AAEF,MAAA,MAAM,WAAA,GAAmB,MAAM,IAAA,CAAK,oBAAA,CAAqB,QAAQ,CAAA;AACjE,MAAA,MAAM,QAAA,GAAW,MAAA,CAAO,WAAA,CAAY,QAAQ,CAAA;AAI5C,MAAA,MAAM,CAAC,UAAA,EAAY,UAAU,CAAA,GAAW,MAAM,QAAQ,GAAA,CAAI;AAAA,QACxD,IAAA,CAAK,aAAa,YAAA,CAAa;AAAA,UAC7B,OAAA,EAAS,KAAK,MAAA,CAAO,cAAA;AAAA,UACrB,GAAA,EAAK,sBAAA;AAAA,UACL,YAAA,EAAc,cAAA;AAAA,UACd,IAAA,EAAM,CAAC,QAAA,EAAU,EAAE;AAAA,SACpB,CAAA;AAAA,QACD,IAAA,CAAK,aAAa,YAAA,CAAa;AAAA,UAC7B,OAAA,EAAS,KAAK,MAAA,CAAO,cAAA;AAAA,UACrB,GAAA,EAAK,sBAAA;AAAA,UACL,YAAA,EAAc,cAAA;AAAA,UACd,IAAA,EAAM,CAAC,QAAA,EAAU,EAAE;AAAA,SACpB;AAAA,OACF,CAAA;AAGD,MAAA,MAAM,KAAA,GAAQ,MAAA,CAAO,UAAA,CAAW,CAAC,CAAC,CAAA;AAClC,MAAA,MAAM,UAAA,GAAa,WAAW,CAAC,CAAA;AAC/B,MAAA,MAAM,KAAA,GAAQ,MAAA,CAAO,UAAA,CAAW,CAAC,CAAC,CAAA;AAClC,MAAA,MAAM,UAAA,GAAa,WAAW,CAAC,CAAA;AAE/B,MAAA,IAAI,cAAc,UAAA,EAAY;AAC5B,QAAA,MAAM,YAAY,KAAA,GAAQ,QAAA;AAC1B,QAAA,MAAM,YAAY,KAAA,GAAQ,QAAA;AAC1B,QAAA,MAAM,QAAA,GAAW,cAAc,MAAA,CAAO,SAAS,IAAI,IAAA,EAAM,OAAA,CAAQ,CAAC,CAAA,GAAI,MAAA;AACtE,QAAA,MAAM,OAAA,GAAU,cAAc,MAAA,CAAO,SAAS,IAAI,IAAA,EAAM,OAAA,CAAQ,CAAC,CAAA,GAAI,MAAA;AAErE,QAAA,OAAO;AAAA,UACL,GAAA,EAAK,QAAA;AAAA,UACL,EAAA,EAAI,OAAA;AAAA,UACJ,MAAA,EAAQ,KAAA;AAAA,UACR,MAAA,EAAQ;AAAA,YACN,GAAA,EAAK,WAAA,CAAY,WAAA,CAAY,CAAC,EAAE,QAAA,EAAS;AAAA,YACzC,EAAA,EAAI,WAAA,CAAY,WAAA,CAAY,CAAC,EAAE,QAAA;AAAS,WAC1C;AAAA,UACA,SAAA,EAAW,KAAK,GAAA;AAAI,SACtB;AAAA,MACF;AAGA,MAAA,MAAM,SAAA,GAAY,MAAA,CAAO,WAAA,CAAY,aAAA,CAAc,CAAC,CAAC,CAAA;AACrD,MAAA,MAAM,SAAA,GAAY,MAAA,CAAO,WAAA,CAAY,aAAA,CAAc,CAAC,CAAC,CAAA;AAErD,MAAA,IAAI,SAAA,GAAY,EAAA,IAAM,SAAA,GAAY,EAAA,EAAI;AACpC,QAAA,MAAM,QAAA,GAAW,SAAA,GAAY,EAAA,GAAA,CACxB,MAAA,CAAO,SAAA,GAAY,QAAQ,CAAA,GAAI,IAAA,EAAM,OAAA,CAAQ,CAAC,CAAA,GAC/C,MAAA;AACJ,QAAA,MAAM,OAAA,GAAU,SAAA,GAAY,EAAA,GAAA,CACvB,MAAA,CAAO,SAAA,GAAY,QAAQ,CAAA,GAAI,IAAA,EAAM,OAAA,CAAQ,CAAC,CAAA,GAC/C,MAAA;AAEJ,QAAA,OAAO;AAAA,UACL,GAAA,EAAK,QAAA;AAAA,UACL,EAAA,EAAI,OAAA;AAAA,UACJ,MAAA,EAAQ,KAAA;AAAA,UACR,MAAA,EAAQ;AAAA,YACN,GAAA,EAAK,WAAA,CAAY,WAAA,CAAY,CAAC,EAAE,QAAA,EAAS;AAAA,YACzC,EAAA,EAAI,WAAA,CAAY,WAAA,CAAY,CAAC,EAAE,QAAA;AAAS,WAC1C;AAAA,UACA,SAAA,EAAW,KAAK,GAAA;AAAI,SACtB;AAAA,MACF;AAGA,MAAA,OAAO;AAAA,QACL,GAAA,EAAK,MAAA;AAAA,QACL,EAAA,EAAI,MAAA;AAAA,QACJ,MAAA,EAAQ,SAAA;AAAA,QACR,MAAA,EAAQ,EAAE,GAAA,EAAK,GAAA,EAAK,IAAI,GAAA,EAAI;AAAA,QAC5B,SAAA,EAAW;AAAA,OACb;AAAA,IACF,SAAS,KAAA,EAAO;AACd,MAAA,OAAA,CAAQ,KAAA,CAAM,gCAAgC,KAAK,CAAA;AACnD,MAAA,OAAO;AAAA,QACL,GAAA,EAAK,MAAA;AAAA,QACL,EAAA,EAAI,MAAA;AAAA,QACJ,MAAA,EAAQ,SAAA;AAAA,QACR,MAAA,EAAQ,EAAE,GAAA,EAAK,GAAA,EAAK,IAAI,GAAA,EAAI;AAAA,QAC5B,SAAA,EAAW;AAAA,OACb;AAAA,IACF;AAAA,EACF;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,EAiBA,MAAM,kBAAkB,MAAA,EASrB;AACD,IAAA,MAAM,SAAS,IAAA,CAAK,YAAA;AACpB,IAAA,MAAM,OAAA,GAAU,MAAM,IAAA,CAAK,gBAAA,EAAiB;AAC5C,IAAA,MAAM,cAAA,GAAiB,MAAM,IAAA,CAAK,gBAAA,EAAiB;AAInD,IAAA,MAAM,KAAA,GAAa,MAAM,IAAA,CAAK,YAAA,CAAa,YAAA,CAAa;AAAA,MACtD,OAAA,EAAS,KAAK,MAAA,CAAO,cAAA;AAAA,MACrB,GAAA,EAAK,kBAAA;AAAA,MACL,YAAA,EAAc,UAAA;AAAA,MACd,IAAA,EAAM,CAAC,MAAA,CAAO,OAAO;AAAA,KACtB,CAAA;AAED,IAAA,MAAM,WAAA,GAAc,MAAA,CAAO,KAAA,CAAM,iBAAiB,CAAA;AAClD,IAAA,MAAM,SAAS,MAAA,CAAO,KAAA,CAAM,eAAe,CAAA,IAAK,OAAO,gBAAA,IAAoB,EAAA,CAAA;AAC3E,IAAA,MAAM,gBAAgB,WAAA,GAAc,MAAA;AAEpC,IAAA,IAAI,gBAAgB,EAAA,EAAI;AACtB,MAAA,MAAM,SAAA,GAAY,MAAM,IAAA,CAAK,YAAA,CAAa,YAAA,CAAa;AAAA,QACrD,SAAS,MAAA,CAAO,eAAA;AAAA,QAChB,GAAA,EAAK,QAAA;AAAA,QACL,YAAA,EAAc,WAAA;AAAA,QACd,IAAA,EAAM,CAAC,cAAA,EAAgB,IAAA,CAAK,OAAO,cAAc;AAAA,OAClD,CAAA;AAED,MAAA,IAAI,YAAY,aAAA,EAAe;AAC7B,QAAA,MAAM,IAAI,KAAA;AAAA,UACR,qCAAqC,SAAA,CAAU,QAAA,EAAU,CAAA,YAAA,EAAe,aAAA,CAAc,UAAU,CAAA,OAAA,EAAU,YAAY,QAAA,EAAU,aAAa,MAAA,CAAO,QAAA,EAAU,CAAA,+BAAA,EAC5J,IAAA,CAAK,OAAO,cACd,CAAA,EAAA;AAAA,SACF;AAAA,MACF;AAEA,MAAA,MAAM,OAAA,GAAU,MAAM,IAAA,CAAK,YAAA,CAAa,YAAA,CAAa;AAAA,QACnD,SAAS,MAAA,CAAO,eAAA;AAAA,QAChB,GAAA,EAAK,QAAA;AAAA,QACL,YAAA,EAAc,WAAA;AAAA,QACd,IAAA,EAAM,CAAC,cAAc;AAAA,OACtB,CAAA;AAED,MAAA,IAAI,UAAU,aAAA,EAAe;AAC3B,QAAA,MAAM,IAAI,KAAA;AAAA,UACR,CAAA,uCAAA,EAA0C,OAAA,CAAQ,QAAA,EAAU,eAAe,aAAA,CAAc,QAAA,EAAU,CAAA,OAAA,EAAU,YAAY,QAAA,EAAU,CAAA,UAAA,EAAa,MAAA,CAAO,UAAU,CAAA,EAAA;AAAA,SACnK;AAAA,MACF;AAAA,IACF;AAEA,IAAA,IAAI,CAAC,eAAA,CAAgB,MAAA,CAAO,QAAQ,CAAA,EAAG;AACrC,MAAA,MAAM,IAAI,MAAM,oDAAoD,CAAA;AAAA,IACtE;AAGA,IAAA,MAAM,SAAA,GAAA,CAAa,MAAA,CAAO,IAAA,IAAQ,EAAC,EAAG,GAAA;AAAA,MAAI,CAAC,CAAA,KACzC,WAAA,CAAY,GAAG,EAAE,IAAA,EAAM,IAAI;AAAA,KAC7B;AAGA,IAAA,MAAM,EAAE,OAAA,EAAQ,GAAI,MAAM,IAAA,CAAK,aAAa,gBAAA,CAAiB;AAAA,MAC3D,OAAA,EAAS,KAAK,MAAA,CAAO,cAAA;AAAA,MACrB,GAAA,EAAK,wBAAA;AAAA,MACL,YAAA,EAAc,mBAAA;AAAA,MACd,IAAA,EAAM;AAAA,QACJ,MAAA,CAAO,OAAA;AAAA,QACP,MAAA,CAAO,QAAA;AAAA,QACP,MAAA,CAAO,WAAA;AAAA,QACP,MAAA,CAAO,eAAA;AAAA,QACP,MAAA,CAAO,QAAA;AAAA,QACP,MAAA,CAAO,gBAAA;AAAA,QACP,OAAO,QAAA,IAAY,EAAA;AAAA,QACnB;AAAA,OACF;AAAA,MACA;AAAA,KACD,CAAA;AAED,IAAA,OAAO,MAAA,CAAO,cAAc,OAAO,CAAA;AAAA,EACrC;AAAA;AAAA;AAAA;AAAA,EAKA,MAAM,iBAAiB,MAAA,EAIpB;AACD,IAAA,MAAM,SAAS,IAAA,CAAK,YAAA;AACpB,IAAA,MAAM,OAAA,GAAU,MAAM,IAAA,CAAK,gBAAA,EAAiB;AAE5C,IAAA,MAAM,EAAE,OAAA,EAAQ,GAAI,MAAM,IAAA,CAAK,aAAa,gBAAA,CAAiB;AAAA,MAC3D,OAAA,EAAS,KAAK,MAAA,CAAO,cAAA;AAAA,MACrB,GAAA,EAAK,oBAAA;AAAA,MACL,YAAA,EAAc,WAAA;AAAA,MACd,MAAM,CAAC,MAAA,CAAO,eAAe,MAAA,CAAO,UAAA,EAAY,OAAO,cAAc,CAAA;AAAA,MACrE;AAAA,KACD,CAAA;AAED,IAAA,OAAO,MAAA,CAAO,cAAc,OAAO,CAAA;AAAA,EACrC;AAAA;AAAA;AAAA;AAAA,EAKA,MAAM,sBAAsB,MAAA,EAGzB;AACD,IAAA,MAAM,SAAS,IAAA,CAAK,YAAA;AACpB,IAAA,MAAM,OAAA,GAAU,MAAM,IAAA,CAAK,gBAAA,EAAiB;AAE5C,IAAA,IAAI,MAAA,CAAO,KAAA,GAAQ,EAAA,IAAM,MAAA,CAAO,QAAQ,GAAA,EAAK;AAC3C,MAAA,MAAM,IAAI,MAAM,gCAAgC,CAAA;AAAA,IAClD;AAEA,IAAA,MAAM,EAAE,OAAA,EAAQ,GAAI,MAAM,IAAA,CAAK,aAAa,gBAAA,CAAiB;AAAA,MAC3D,OAAA,EAAS,KAAK,MAAA,CAAO,cAAA;AAAA,MACrB,GAAA,EAAK,oBAAA;AAAA,MACL,YAAA,EAAc,uBAAA;AAAA,MACd,IAAA,EAAM,CAAC,MAAA,CAAO,aAAA,EAAe,OAAO,KAAK,CAAA;AAAA,MACzC;AAAA,KACD,CAAA;AAED,IAAA,OAAO,MAAA,CAAO,cAAc,OAAO,CAAA;AAAA,EACrC;AAAA;AAAA;AAAA;AAAA,EAKA,MAAM,oBAAoB,MAAA,EAKvB;AACD,IAAA,MAAM,SAAS,IAAA,CAAK,YAAA;AACpB,IAAA,MAAM,OAAA,GAAU,MAAM,IAAA,CAAK,gBAAA,EAAiB;AAE5C,IAAA,MAAM,EAAE,OAAA,EAAQ,GAAI,MAAM,IAAA,CAAK,aAAa,gBAAA,CAAiB;AAAA,MAC3D,OAAA,EAAS,KAAK,MAAA,CAAO,cAAA;AAAA,MACrB,GAAA,EAAK,oBAAA;AAAA,MACL,YAAA,EAAc,qBAAA;AAAA,MACd,IAAA,EAAM;AAAA,QACJ,MAAA,CAAO,aAAA;AAAA,QACP,MAAA,CAAO,QAAA;AAAA,QACP,MAAA,CAAO,UAAA;AAAA,QACP,MAAA,CAAO;AAAA,OACT;AAAA,MACA;AAAA,KACD,CAAA;AAED,IAAA,OAAO,MAAA,CAAO,cAAc,OAAO,CAAA;AAAA,EACrC;AAAA;AAAA;AAAA;AAAA,EAKA,MAAM,oBAAoB,MAAA,EAAmC;AAC3D,IAAA,MAAM,SAAS,IAAA,CAAK,YAAA;AACpB,IAAA,MAAM,OAAA,GAAU,MAAM,IAAA,CAAK,gBAAA,EAAiB;AAE5C,IAAA,MAAM,EAAE,OAAA,EAAQ,GAAI,MAAM,IAAA,CAAK,aAAa,gBAAA,CAAiB;AAAA,MAC3D,OAAA,EAAS,KAAK,MAAA,CAAO,cAAA;AAAA,MACrB,GAAA,EAAK,wBAAA;AAAA,MACL,YAAA,EAAc,qBAAA;AAAA,MACd,IAAA,EAAM,CAAC,MAAA,CAAO,aAAa,CAAA;AAAA,MAC3B;AAAA,KACD,CAAA;AAED,IAAA,OAAO,MAAA,CAAO,cAAc,OAAO,CAAA;AAAA,EACrC;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,EAOA,MAAM,iBAAiB,MAAA,EAIpB;AACD,IAAA,MAAM,SAAS,IAAA,CAAK,YAAA;AACpB,IAAA,MAAM,OAAA,GAAU,MAAM,IAAA,CAAK,gBAAA,EAAiB;AAC5C,IAAA,MAAM,cAAA,GAAiB,MAAM,IAAA,CAAK,gBAAA,EAAiB;AAGnD,IAAA,MAAM,UAAA,GAAa,MAAM,IAAA,CAAK,YAAA,CAAa,YAAA,CAAa;AAAA,MACtD,OAAA,EAAS,KAAK,MAAA,CAAO,wBAAA;AAAA,MACrB,GAAA,EAAK,2BAAA;AAAA,MACL,YAAA,EAAc,kBAAA;AAAA,MACd,IAAA,EAAM,CAAC,cAAA,EAAgB,IAAA,CAAK,OAAO,cAAc;AAAA,KAClD,CAAA;AAED,IAAA,IAAI,CAAC,UAAA,EAAY;AACf,MAAA,MAAM,IAAI,KAAA;AAAA,QACR,CAAA,yEAAA,EAA4E,IAAA,CAAK,MAAA,CAAO,cAAc,CAAA,QAAA;AAAA,OACxG;AAAA,IACF;AAIA,IAAA,MAAM,SAAA,GAAiB,MAAM,IAAA,CAAK,YAAA,CAAa,YAAA,CAAa;AAAA,MAC1D,OAAA,EAAS,KAAK,MAAA,CAAO,cAAA;AAAA,MACrB,GAAA,EAAK,wBAAA;AAAA,MACL,YAAA,EAAc,gBAAA;AAAA,MACd,IAAA,EAAM,CAAC,MAAA,CAAO,aAAa;AAAA,KAC5B,CAAA;AAGD,IAAA,MAAM,YAAsB,SAAA,CAAU,SAAA;AACtC,IAAA,MAAM,eAAgC,EAAC;AACvC,IAAA,KAAA,MAAW,OAAO,SAAA,EAAW;AAE3B,MAAA,MAAM,UAAA,GAAkB,MAAM,IAAA,CAAK,mBAAA,CAAoB,GAAG,CAAA;AAC1D,MAAA,YAAA,CAAa,IAAA,CAAK,WAAW,WAAW,CAAA;AAAA,IAC1C;AAEA,IAAA,MAAM,EAAE,OAAA,EAAQ,GAAI,MAAM,IAAA,CAAK,aAAa,gBAAA,CAAiB;AAAA,MAC3D,OAAA,EAAS,KAAK,MAAA,CAAO,cAAA;AAAA,MACrB,GAAA,EAAK,oBAAA;AAAA,MACL,YAAA,EAAc,kBAAA;AAAA,MACd,IAAA,EAAM,CAAC,YAAA,EAAc,SAAA,CAAU,iBAAiB,MAAA,CAAO,QAAA,EAAU,OAAO,MAAM,CAAA;AAAA,MAC9E;AAAA,KACD,CAAA;AAED,IAAA,OAAO,MAAA,CAAO,cAAc,OAAO,CAAA;AAAA,EACrC;AAAA;AAAA;AAAA;AAAA,EAKA,MAAM,eAAe,aAAA,EAAuB;AAC1C,IAAA,OAAO,IAAA,CAAK,aAAa,YAAA,CAAa;AAAA,MACpC,OAAA,EAAS,KAAK,MAAA,CAAO,cAAA;AAAA,MACrB,GAAA,EAAK,wBAAA;AAAA,MACL,YAAA,EAAc,gBAAA;AAAA,MACd,IAAA,EAAM,CAAC,aAAa;AAAA,KACrB,CAAA;AAAA,EACH;AAAA;AAAA;AAAA;AAAA,EAKA,MAAM,kBAAkB,aAAA,EAAuB;AAC7C,IAAA,OAAO,IAAA,CAAK,aAAa,YAAA,CAAa;AAAA,MACpC,OAAA,EAAS,KAAK,MAAA,CAAO,cAAA;AAAA,MACrB,GAAA,EAAK,wBAAA;AAAA,MACL,YAAA,EAAc,mBAAA;AAAA,MACd,IAAA,EAAM,CAAC,aAAa;AAAA,KACrB,CAAA;AAAA,EACH;AAAA;AAAA;AAAA;AAAA,EAKA,MAAM,mBAAmB,QAAA,EAAkB;AACzC,IAAA,OAAO,IAAA,CAAK,aAAa,YAAA,CAAa;AAAA,MACpC,OAAA,EAAS,KAAK,MAAA,CAAO,cAAA;AAAA,MACrB,GAAA,EAAK,wBAAA;AAAA,MACL,YAAA,EAAc,oBAAA;AAAA,MACd,IAAA,EAAM,CAAC,QAAQ;AAAA,KAChB,CAAA;AAAA,EACH;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,EAUA,MAAM,gBAAgB,QAAA,EAAkB;AAEtC,IAAA,MAAM,KAAA,GAAQ;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,IAAA,CAAA;AAYd,IAAA,MAAM,MAAA,GAAc,MAAM,IAAA,CAAK,QAAA,CAAS,QAAQ,KAAA,EAAO;AAAA,MACrD,QAAA,EAAU,SAAS,QAAA;AAAS,KAC7B,CAAA;AACD,IAAA,MAAM,MAAA,GAAS,MAAA,CAAO,OAAA,GAAU,CAAC,CAAA;AAEjC,IAAA,IAAI,CAAC,MAAA,EAAQ;AACX,MAAA,OAAO;AAAA,QACL,GAAA,EAAK,MAAA;AAAA,QACL,EAAA,EAAI,MAAA;AAAA,QACJ,MAAA,EAAQ,SAAA;AAAA,QACR,SAAA,EAAW;AAAA,OACb;AAAA,IACF;AAGA,IAAA,MAAM,aAAA,GAAgB,MAAA,EAAQ,eAAA,IAAmB,MAAA,EAAQ,eAAA;AACzD,IAAA,MAAM,QAAA,GAAW,MAAA,CAAO,MAAA,CAAO,QAAA,IAAY,mBAAmB,CAAA;AAE9D,IAAA,IAAI,aAAA,EAAe;AACjB,MAAA,IAAI,QAAA,GAAW,GAAA;AACf,MAAA,IAAI,OAAA,GAAU,GAAA;AAEd,MAAA,IAAI,MAAA,CAAO,eAAA,IAAmB,MAAA,CAAO,eAAA,KAAoB,GAAA,EAAK;AAC5D,QAAA,MAAM,cAAA,GAAiB,MAAA,CAAO,MAAA,CAAO,eAAe,CAAA,GAAI,QAAA;AACxD,QAAA,QAAA,GAAW,MAAA,CAAO,cAAc,CAAA,GAAI,IAAA;AACpC,QAAA,OAAA,GAAU,CAAA,GAAI,QAAA;AAAA,MAChB,CAAA,MAAA,IAAW,MAAA,CAAO,eAAA,IAAmB,MAAA,CAAO,oBAAoB,GAAA,EAAK;AACnE,QAAA,MAAM,aAAA,GAAgB,MAAA,CAAO,MAAA,CAAO,eAAe,CAAA,GAAI,QAAA;AACvD,QAAA,OAAA,GAAU,MAAA,CAAO,aAAa,CAAA,GAAI,IAAA;AAClC,QAAA,QAAA,GAAW,CAAA,GAAI,OAAA;AAAA,MACjB;AAEA,MAAA,OAAO;AAAA,QACL,GAAA,EAAK,QAAA,CAAS,OAAA,CAAQ,CAAC,CAAA;AAAA,QACvB,EAAA,EAAI,OAAA,CAAQ,OAAA,CAAQ,CAAC,CAAA;AAAA,QACrB,MAAA,EAAQ,OAAA;AAAA,QACR,WAAW,MAAA,CAAO;AAAA,OACpB;AAAA,IACF;AAGA,IAAA,MAAM,EAAE,QAAQ,MAAA,EAAQ,KAAA,EAAO,OAAM,GAAI,MAAM,IAAA,CAAK,aAAA,CAAc,QAAQ,CAAA;AAE1E,IAAA,MAAM,eAAe,MAAA,GAAS,EAAA,IAAM,SAAS,EAAA,IAAM,KAAA,GAAQ,MAAM,KAAA,GAAQ,EAAA;AAEzE,IAAA,IAAI,YAAA,EAAc;AAChB,MAAA,MAAM,YAAA,GAAe,CACnB,OAAA,EACA,iBAAA,KACW;AACX,QAAA,IAAI,UAAU,EAAA,EAAI;AAChB,UAAA,OAAO,MAAA,CAAO,OAAA,GAAU,QAAQ,CAAA,GAAI,IAAA;AAAA,QACtC;AACA,QAAA,IAAI,oBAAoB,EAAA,EAAI;AAC1B,UAAA,MAAM,QAAA,GAAW,MAAA,CAAO,iBAAA,GAAoB,QAAQ,CAAA,GAAI,IAAA;AACxD,UAAA,OAAO,CAAA,GAAI,QAAA;AAAA,QACb;AACA,QAAA,OAAO,GAAA;AAAA,MACT,CAAA;AAEA,MAAA,MAAM,QAAA,GAAW,YAAA,CAAa,MAAA,EAAQ,KAAK,CAAA;AAC3C,MAAA,MAAM,OAAA,GAAU,YAAA,CAAa,KAAA,EAAO,MAAM,CAAA;AAE1C,MAAA,OAAO;AAAA,QACL,GAAA,EAAK,QAAA,CAAS,OAAA,CAAQ,CAAC,CAAA;AAAA,QACvB,EAAA,EAAI,OAAA,CAAQ,OAAA,CAAQ,CAAC,CAAA;AAAA,QACrB,MAAA,EAAQ,WAAA;AAAA,QACR,SAAA,EAAW;AAAA,OACb;AAAA,IACF;AAGA,IAAA,OAAO;AAAA,MACL,GAAA,EAAK,MAAA;AAAA,MACL,EAAA,EAAI,MAAA;AAAA,MACJ,MAAA,EAAQ,SAAA;AAAA,MACR,SAAA,EAAW;AAAA,KACb;AAAA,EACF;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,EAUA,MAAM,YAAY,QAAA,EAAkB;AAClC,IAAA,MAAM,SAAS,IAAA,CAAK,YAAA;AACpB,IAAA,MAAM,OAAA,GAAU,MAAM,IAAA,CAAK,gBAAA,EAAiB;AAE5C,IAAA,MAAM,EAAE,OAAA,EAAQ,GAAI,MAAM,IAAA,CAAK,aAAa,gBAAA,CAAiB;AAAA,MAC3D,OAAA,EAAS,KAAK,MAAA,CAAO,cAAA;AAAA,MACrB,GAAA,EAAK,oBAAA;AAAA,MACL,YAAA,EAAc,aAAA;AAAA,MACd,IAAA,EAAM,CAAC,QAAQ,CAAA;AAAA,MACf;AAAA,KACD,CAAA;AAED,IAAA,OAAO,MAAA,CAAO,cAAc,OAAO,CAAA;AAAA,EACrC;AAAA;AAAA;AAAA;AAAA;AAAA,EAMA,MAAM,cAAc,QAAA,EAAkB;AACpC,IAAA,MAAM,SAAS,IAAA,CAAK,YAAA;AACpB,IAAA,MAAM,OAAA,GAAU,MAAM,IAAA,CAAK,gBAAA,EAAiB;AAE5C,IAAA,MAAM,EAAE,OAAA,EAAQ,GAAI,MAAM,IAAA,CAAK,aAAa,gBAAA,CAAiB;AAAA,MAC3D,OAAA,EAAS,KAAK,MAAA,CAAO,cAAA;AAAA,MACrB,GAAA,EAAK,oBAAA;AAAA,MACL,YAAA,EAAc,eAAA;AAAA,MACd,IAAA,EAAM,CAAC,QAAQ,CAAA;AAAA,MACf;AAAA,KACD,CAAA;AAED,IAAA,OAAO,MAAA,CAAO,cAAc,OAAO,CAAA;AAAA,EACrC;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,EAUA,MAAM,iBAAiB,MAAA,EAGpB;AACD,IAAA,MAAM,SAAS,IAAA,CAAK,YAAA;AACpB,IAAA,MAAM,OAAA,GAAU,MAAM,IAAA,CAAK,gBAAA,EAAiB;AAE5C,IAAA,MAAM,WAAA,GAAc,OAAO,IAAA,CAAK,GAAA;AAAA,MAAI,CAAC,CAAA,KACnC,WAAA,CAAY,GAAG,EAAE,IAAA,EAAM,IAAI;AAAA,KAC7B;AAEA,IAAA,MAAM,EAAE,OAAA,EAAQ,GAAI,MAAM,IAAA,CAAK,aAAa,gBAAA,CAAiB;AAAA,MAC3D,OAAA,EAAS,KAAK,MAAA,CAAO,cAAA;AAAA,MACrB,GAAA,EAAK,iBAAA;AAAA,MACL,YAAA,EAAc,kBAAA;AAAA,MACd,IAAA,EAAM,CAAC,MAAA,CAAO,QAAA,EAAU,WAAW,CAAA;AAAA,MACnC;AAAA,KACD,CAAA;AAED,IAAA,OAAO,MAAA,CAAO,cAAc,OAAO,CAAA;AAAA,EACrC;AAAA;AAAA;AAAA;AAAA;AAAA,EAMA,MAAM,sBAAsB,MAAA,EAGzB;AACD,IAAA,MAAM,SAAS,IAAA,CAAK,YAAA;AACpB,IAAA,MAAM,OAAA,GAAU,MAAM,IAAA,CAAK,gBAAA,EAAiB;AAE5C,IAAA,MAAM,WAAA,GAAc,OAAO,IAAA,CAAK,GAAA;AAAA,MAAI,CAAC,CAAA,KACnC,WAAA,CAAY,GAAG,EAAE,IAAA,EAAM,IAAI;AAAA,KAC7B;AAEA,IAAA,MAAM,EAAE,OAAA,EAAQ,GAAI,MAAM,IAAA,CAAK,aAAa,gBAAA,CAAiB;AAAA,MAC3D,OAAA,EAAS,KAAK,MAAA,CAAO,cAAA;AAAA,MACrB,GAAA,EAAK,iBAAA;AAAA,MACL,YAAA,EAAc,uBAAA;AAAA,MACd,IAAA,EAAM,CAAC,MAAA,CAAO,aAAA,EAAe,WAAW,CAAA;AAAA,MACxC;AAAA,KACD,CAAA;AAED,IAAA,OAAO,MAAA,CAAO,cAAc,OAAO,CAAA;AAAA,EACrC;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,EAUA,MAAM,qBAAqB,MAAA,EAGxB;AACD,IAAA,MAAM,SAAS,IAAA,CAAK,YAAA;AACpB,IAAA,MAAM,OAAA,GAAU,MAAM,IAAA,CAAK,gBAAA,EAAiB;AAE5C,IAAA,MAAM,EAAE,OAAA,EAAQ,GAAI,MAAM,IAAA,CAAK,aAAa,gBAAA,CAAiB;AAAA,MAC3D,OAAA,EAAS,KAAK,MAAA,CAAO,cAAA;AAAA,MACrB,GAAA,EAAK,qBAAA;AAAA,MACL,YAAA,EAAc,sBAAA;AAAA,MACd,IAAA,EAAM,CAAC,MAAA,CAAO,QAAA,EAAU,OAAO,WAAW,CAAA;AAAA,MAC1C;AAAA,KACD,CAAA;AAED,IAAA,OAAO,MAAA,CAAO,cAAc,OAAO,CAAA;AAAA,EACrC;AAAA;AAAA;AAAA;AAAA;AAAA,EAMA,MAAM,0BAA0B,MAAA,EAG7B;AACD,IAAA,MAAM,SAAS,IAAA,CAAK,YAAA;AACpB,IAAA,MAAM,OAAA,GAAU,MAAM,IAAA,CAAK,gBAAA,EAAiB;AAE5C,IAAA,MAAM,EAAE,OAAA,EAAQ,GAAI,MAAM,IAAA,CAAK,aAAa,gBAAA,CAAiB;AAAA,MAC3D,OAAA,EAAS,KAAK,MAAA,CAAO,cAAA;AAAA,MACrB,GAAA,EAAK,qBAAA;AAAA,MACL,YAAA,EAAc,2BAAA;AAAA,MACd,IAAA,EAAM,CAAC,MAAA,CAAO,aAAA,EAAe,OAAO,WAAW,CAAA;AAAA,MAC/C;AAAA,KACD,CAAA;AAED,IAAA,OAAO,MAAA,CAAO,cAAc,OAAO,CAAA;AAAA,EACrC;AACF;;;ACl4BO,IAAM,WAAA,GAAN,cAA0B,UAAA,CAAW;AAAA;AAAA;AAAA;AAAA;AAAA,EAK1C,MAAM,WAAW,MAAA,EAOd;AACD,IAAA,MAAM,SAAS,IAAA,CAAK,YAAA;AACpB,IAAA,MAAM,OAAA,GAAU,MAAM,IAAA,CAAK,gBAAA,EAAiB;AAE5C,IAAA,MAAM,EAAE,OAAA,EAAQ,GAAI,MAAM,IAAA,CAAK,aAAa,gBAAA,CAAiB;AAAA,MAC3D,OAAA,EAAS,KAAK,MAAA,CAAO,cAAA;AAAA,MACrB,GAAA,EAAK,wBAAA;AAAA,MACL,YAAA,EAAc,YAAA;AAAA,MACd,IAAA,EAAM;AAAA,QACJ,MAAA,CAAO,QAAA;AAAA,QACP,MAAA,CAAO,SAAA;AAAA,QACP,MAAA,CAAO,IAAA;AAAA,QACP,MAAA,CAAO,IAAA;AAAA,QACP,MAAA,CAAO,GAAA;AAAA,QACP,MAAA,CAAO;AAAA,OACT;AAAA,MACA;AAAA,KACD,CAAA;AAED,IAAA,OAAO,MAAA,CAAO,cAAc,OAAO,CAAA;AAAA,EACrC;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,EAWA,MAAM,iBAAiB,MAAA,EAOpB;AAGD,IAAA,MAAM,WAAA,GAAmB,MAAM,IAAA,CAAK,YAAA,CAAa,YAAA,CAAa;AAAA,MAC5D,OAAA,EAAS,KAAK,MAAA,CAAO,cAAA;AAAA,MACrB,GAAA,EAAK,oBAAA;AAAA,MACL,YAAA,EAAc,sBAAA;AAAA,MACd,IAAA,EAAM,CAAC,MAAA,CAAO,QAAQ;AAAA,KACvB,CAAA;AAED,IAAA,MAAM,kBAAkB,WAAA,CAAY,eAAA;AACpC,IAAA,MAAM,QAAA,GAAW,MAAM,sBAAA,CAAuB,IAAA,CAAK,cAAc,eAAe,CAAA;AAEhF,IAAA,MAAM,IAAA,GAAO,WAAA,CAAY,MAAA,CAAO,KAAK,CAAA;AACrC,IAAA,MAAM,GAAA,GAAM,gBAAA,CAAiB,MAAA,CAAO,QAAA,EAAU,QAAQ,CAAA;AAEtD,IAAA,MAAM,MAAA,GACJ,OAAO,MAAA,CAAO,MAAA,KAAW,WACpB,MAAA,CAAO,MAAA,KAAW,KAAA,GAAQ,MAAA,CAAO,CAAC,CAAA,GAAI,YAAA,CAAa,MAAA,CAAO,MAAM,IACjE,MAAA,CAAO,MAAA;AAEb,IAAA,OAAO,KAAK,UAAA,CAAW;AAAA,MACrB,UAAU,MAAA,CAAO,QAAA;AAAA,MACjB,WAAW,MAAA,CAAO,SAAA;AAAA,MAClB,MAAM,MAAA,CAAO,IAAA;AAAA,MACb,IAAA;AAAA,MACA,GAAA;AAAA,MACA;AAAA,KACD,CAAA;AAAA,EACH;AAAA;AAAA;AAAA;AAAA,EAKA,MAAM,YAAY,OAAA,EAAiB;AACjC,IAAA,MAAM,SAAS,IAAA,CAAK,YAAA;AACpB,IAAA,MAAM,OAAA,GAAU,MAAM,IAAA,CAAK,gBAAA,EAAiB;AAE5C,IAAA,MAAM,EAAE,OAAA,EAAQ,GAAI,MAAM,IAAA,CAAK,aAAa,gBAAA,CAAiB;AAAA,MAC3D,OAAA,EAAS,KAAK,MAAA,CAAO,cAAA;AAAA,MACrB,GAAA,EAAK,wBAAA;AAAA,MACL,YAAA,EAAc,aAAA;AAAA,MACd,IAAA,EAAM,CAAC,OAAO,CAAA;AAAA,MACd;AAAA,KACD,CAAA;AAED,IAAA,OAAO,MAAA,CAAO,cAAc,OAAO,CAAA;AAAA,EACrC;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,EASA,MAAM,4BAAA,CAA6B,QAAA,EAAkB,QAAA,EAAoB;AACvE,IAAA,MAAM,SAAS,IAAA,CAAK,YAAA;AACpB,IAAA,MAAM,OAAA,GAAU,MAAM,IAAA,CAAK,gBAAA,EAAiB;AAE5C,IAAA,MAAM,EAAE,OAAA,EAAQ,GAAI,MAAM,IAAA,CAAK,aAAa,gBAAA,CAAiB;AAAA,MAC3D,OAAA,EAAS,KAAK,MAAA,CAAO,cAAA;AAAA,MACrB,GAAA,EAAK,wBAAA;AAAA,MACL,YAAA,EAAc,8BAAA;AAAA,MACd,IAAA,EAAM,CAAC,QAAA,EAAU,QAAQ,CAAA;AAAA,MACzB;AAAA,KACD,CAAA;AAED,IAAA,OAAO,MAAA,CAAO,cAAc,OAAO,CAAA;AAAA,EACrC;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,EAWA,MAAM,iBAAiB,MAAA,EAMpB;AACD,IAAA,MAAM,SAAS,IAAA,CAAK,YAAA;AACpB,IAAA,MAAM,OAAA,GAAU,MAAM,IAAA,CAAK,gBAAA,EAAiB;AAE5C,IAAA,MAAM,EAAE,OAAA,EAAQ,GAAI,MAAM,IAAA,CAAK,aAAa,gBAAA,CAAiB;AAAA,MAC3D,OAAA,EAAS,KAAK,MAAA,CAAO,cAAA;AAAA,MACrB,GAAA,EAAK,yBAAA;AAAA,MACL,YAAA,EAAc,kBAAA;AAAA,MACd,IAAA,EAAM;AAAA,QACJ,MAAA,CAAO,QAAA;AAAA,QACP,MAAA,CAAO,SAAA;AAAA,QACP,MAAA,CAAO,gBAAA;AAAA,QACP,MAAA,CAAO,YAAA;AAAA,QACP,MAAA,CAAO;AAAA,OACT;AAAA,MACA;AAAA,KACD,CAAA;AAED,IAAA,OAAO,MAAA,CAAO,cAAc,OAAO,CAAA;AAAA,EACrC;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,EAQA,MAAM,uBAAuB,MAAA,EAM1B;AAGD,IAAA,MAAM,WAAA,GAAmB,MAAM,IAAA,CAAK,YAAA,CAAa,YAAA,CAAa;AAAA,MAC5D,OAAA,EAAS,KAAK,MAAA,CAAO,cAAA;AAAA,MACrB,GAAA,EAAK,oBAAA;AAAA,MACL,YAAA,EAAc,sBAAA;AAAA,MACd,IAAA,EAAM,CAAC,MAAA,CAAO,QAAQ;AAAA,KACvB,CAAA;AAED,IAAA,MAAM,kBAAkB,WAAA,CAAY,eAAA;AACpC,IAAA,MAAM,QAAA,GAAW,MAAM,sBAAA,CAAuB,IAAA,CAAK,cAAc,eAAe,CAAA;AAChF,IAAA,MAAM,gBAAA,GAAmB,gBAAA,CAAiB,MAAA,CAAO,MAAA,EAAQ,QAAQ,CAAA;AACjE,IAAA,MAAM,YAAA,GAAe,WAAA,CAAY,MAAA,CAAO,QAAQ,CAAA;AAChD,IAAA,MAAM,SAAA,GAAY,MAAA,CAAO,SAAA,KAAc,KAAA,GAAQ,CAAA,GAAI,CAAA;AAEnD,IAAA,OAAO,KAAK,gBAAA,CAAiB;AAAA,MAC3B,UAAU,MAAA,CAAO,QAAA;AAAA,MACjB,WAAW,MAAA,CAAO,SAAA;AAAA,MAClB,gBAAA;AAAA,MACA,YAAA;AAAA,MACA;AAAA,KACD,CAAA;AAAA,EACH;AAAA;AAAA;AAAA;AAAA,EAKA,MAAM,mBAAmB,MAAA,EAMtB;AACD,IAAe,IAAA,CAAK;AACpB,IAAA,MAAM,OAAA,GAAU,MAAM,IAAA,CAAK,gBAAA,EAAiB;AAE5C,IAAA,MAAM,EAAE,MAAA,EAAO,GAAI,MAAM,IAAA,CAAK,aAAa,gBAAA,CAAiB;AAAA,MAC1D,OAAA,EAAS,KAAK,MAAA,CAAO,cAAA;AAAA,MACrB,GAAA,EAAK,yBAAA;AAAA,MACL,YAAA,EAAc,kBAAA;AAAA,MACd,IAAA,EAAM;AAAA,QACJ,MAAA,CAAO,QAAA;AAAA,QACP,MAAA,CAAO,SAAA;AAAA,QACP,MAAA,CAAO,gBAAA;AAAA,QACP,MAAA,CAAO,YAAA;AAAA,QACP,MAAA,CAAO;AAAA,OACT;AAAA,MACA;AAAA,KACD,CAAA;AAED,IAAA,OAAO,MAAA;AAAA,EACT;AAAA;AAAA;AAAA;AAAA,EAKA,MAAM,kBAAkB,MAAA,EAOrB;AACD,IAAe,IAAA,CAAK;AACpB,IAAA,MAAM,OAAA,GAAU,MAAM,IAAA,CAAK,gBAAA,EAAiB;AAE5C,IAAA,MAAM,EAAE,MAAA,EAAO,GAAI,MAAM,IAAA,CAAK,aAAa,gBAAA,CAAiB;AAAA,MAC1D,OAAA,EAAS,KAAK,MAAA,CAAO,cAAA;AAAA,MACrB,GAAA,EAAK,wBAAA;AAAA,MACL,YAAA,EAAc,YAAA;AAAA,MACd,IAAA,EAAM;AAAA,QACJ,MAAA,CAAO,QAAA;AAAA,QACP,MAAA,CAAO,SAAA;AAAA,QACP,MAAA,CAAO,IAAA;AAAA,QACP,MAAA,CAAO,IAAA;AAAA,QACP,MAAA,CAAO,GAAA;AAAA,QACP,MAAA,CAAO;AAAA,OACT;AAAA,MACA;AAAA,KACD,CAAA;AAED,IAAA,OAAO,MAAA;AAAA,EACT;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,EAWA,MAAM,gBAAgB,MAAA,EAMnB;AACD,IAAA,MAAM,SAAS,IAAA,CAAK,YAAA;AACpB,IAAA,MAAM,OAAA,GAAU,MAAM,IAAA,CAAK,gBAAA,EAAiB;AAE5C,IAAA,MAAM,EAAE,OAAA,EAAQ,GAAI,MAAM,IAAA,CAAK,aAAa,gBAAA,CAAiB;AAAA,MAC3D,OAAA,EAAS,KAAK,MAAA,CAAO,cAAA;AAAA,MACrB,GAAA,EAAK,yBAAA;AAAA,MACL,YAAA,EAAc,iBAAA;AAAA,MACd,IAAA,EAAM;AAAA,QACJ,MAAA,CAAO,QAAA;AAAA,QACP,MAAA,CAAO,SAAA;AAAA,QACP,MAAA,CAAO,WAAA;AAAA,QACP,MAAA,CAAO,YAAA;AAAA,QACP,MAAA,CAAO;AAAA,OACT;AAAA,MACA;AAAA,KACD,CAAA;AAED,IAAA,OAAO,MAAA,CAAO,cAAc,OAAO,CAAA;AAAA,EACrC;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,EAQA,MAAM,sBAAsB,MAAA,EAMzB;AAID,IAAA,MAAM,WAAA,GAAmB,MAAM,IAAA,CAAK,YAAA,CAAa,YAAA,CAAa;AAAA,MAC5D,OAAA,EAAS,KAAK,MAAA,CAAO,cAAA;AAAA,MACrB,GAAA,EAAK,oBAAA;AAAA,MACL,YAAA,EAAc,sBAAA;AAAA,MACd,IAAA,EAAM,CAAC,MAAA,CAAO,QAAQ;AAAA,KACvB,CAAA;AAED,IAAA,MAAM,kBAAkB,WAAA,CAAY,eAAA;AACpC,IAAA,MAAM,QAAA,GAAW,MAAM,sBAAA,CAAuB,IAAA,CAAK,cAAc,eAAe,CAAA;AAChF,IAAA,MAAM,WAAA,GAAc,gBAAA,CAAiB,MAAA,CAAO,MAAA,EAAQ,QAAQ,CAAA;AAC5D,IAAA,MAAM,YAAA,GAAe,WAAA,CAAY,MAAA,CAAO,QAAQ,CAAA;AAChD,IAAA,MAAM,SAAA,GAAY,MAAA,CAAO,SAAA,KAAc,KAAA,GAAQ,CAAA,GAAI,CAAA;AAEnD,IAAA,OAAO,KAAK,eAAA,CAAgB;AAAA,MAC1B,UAAU,MAAA,CAAO,QAAA;AAAA,MACjB,WAAW,MAAA,CAAO,SAAA;AAAA,MAClB,WAAA;AAAA,MACA,YAAA;AAAA,MACA;AAAA,KACD,CAAA;AAAA,EACH;AAAA;AAAA;AAAA;AAAA,EAKA,MAAM,kBAAkB,MAAA,EAMrB;AACD,IAAe,IAAA,CAAK;AACpB,IAAA,MAAM,OAAA,GAAU,MAAM,IAAA,CAAK,gBAAA,EAAiB;AAE5C,IAAA,MAAM,EAAE,MAAA,EAAO,GAAI,MAAM,IAAA,CAAK,aAAa,gBAAA,CAAiB;AAAA,MAC1D,OAAA,EAAS,KAAK,MAAA,CAAO,cAAA;AAAA,MACrB,GAAA,EAAK,yBAAA;AAAA,MACL,YAAA,EAAc,iBAAA;AAAA,MACd,IAAA,EAAM;AAAA,QACJ,MAAA,CAAO,QAAA;AAAA,QACP,MAAA,CAAO,SAAA;AAAA,QACP,MAAA,CAAO,WAAA;AAAA,QACP,MAAA,CAAO,YAAA;AAAA,QACP,MAAA,CAAO;AAAA,OACT;AAAA,MACA;AAAA,KACD,CAAA;AAED,IAAA,OAAO,MAAA;AAAA,EACT;AAAA;AAAA;AAAA;AAAA,EAKA,gBAAA,CACE,UAEA,MAAA,EACA;AACA,IAAA,OAAO,IAAA,CAAK,aAAa,kBAAA,CAAmB;AAAA,MAC1C,OAAA,EAAS,KAAK,MAAA,CAAO,cAAA;AAAA,MACrB,GAAA,EAAK,yBAAA;AAAA,MACL,SAAA,EAAW,qBAAA;AAAA,MACX,IAAA,EAAM,EAAE,QAAA,EAAS;AAAA,MACjB;AAAA,KACD,CAAA;AAAA,EACH;AAAA;AAAA;AAAA;AAAA,EAKA,eAAA,CACE,UAEA,MAAA,EACA;AACA,IAAA,OAAO,IAAA,CAAK,aAAa,kBAAA,CAAmB;AAAA,MAC1C,OAAA,EAAS,KAAK,MAAA,CAAO,cAAA;AAAA,MACrB,GAAA,EAAK,yBAAA;AAAA,MACL,SAAA,EAAW,oBAAA;AAAA,MACX,IAAA,EAAM,EAAE,QAAA,EAAS;AAAA,MACjB;AAAA,KACD,CAAA;AAAA,EACH;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,EAQA,MAAM,eAAe,QAAA,EAAkB;AACrC,IAAA,OAAO,IAAA,CAAK,aAAa,YAAA,CAAa;AAAA,MACpC,OAAA,EAAS,KAAK,MAAA,CAAO,cAAA;AAAA,MACrB,GAAA,EAAK,sBAAA;AAAA,MACL,YAAA,EAAc,gBAAA;AAAA,MACd,IAAA,EAAM,CAAC,QAAQ;AAAA,KAChB,CAAA;AAAA,EACH;AAAA;AAAA;AAAA;AAAA,EAKA,MAAM,YAAY,MAAA,EAAiD;AACjE,IAAA,MAAM,SAAS,IAAA,CAAK,YAAA;AACpB,IAAA,MAAM,OAAA,GAAU,MAAM,IAAA,CAAK,gBAAA,EAAiB;AAE5C,IAAA,MAAM,QAAA,GAAW,OAAO,QAAA,IAAY,GAAA;AAEpC,IAAA,MAAM,EAAE,OAAA,EAAQ,GAAI,MAAM,IAAA,CAAK,aAAa,gBAAA,CAAiB;AAAA,MAC3D,OAAA,EAAS,KAAK,MAAA,CAAO,cAAA;AAAA,MACrB,GAAA,EAAK,qBAAA;AAAA,MACL,YAAA,EAAc,aAAA;AAAA,MACd,IAAA,EAAM,CAAC,MAAA,CAAO,QAAA,EAAU,QAAQ,CAAA;AAAA,MAChC;AAAA,KACD,CAAA;AAED,IAAA,OAAO,MAAA,CAAO,cAAc,OAAO,CAAA;AAAA,EACrC;AAAA;AAAA;AAAA;AAAA,EAKA,MAAM,SAAS,OAAA,EAAiB;AAC9B,IAAA,OAAO,IAAA,CAAK,aAAa,YAAA,CAAa;AAAA,MACpC,OAAA,EAAS,KAAK,MAAA,CAAO,cAAA;AAAA,MACrB,GAAA,EAAK,wBAAA;AAAA,MACL,YAAA,EAAc,UAAA;AAAA,MACd,IAAA,EAAM,CAAC,OAAO;AAAA,KACf,CAAA;AAAA,EACH;AAAA;AAAA;AAAA;AAAA,EAKA,MAAM,aAAa,MAAA,EAKhB;AACD,IAAA,OAAO,IAAA,CAAK,aAAa,YAAA,CAAa;AAAA,MACpC,OAAA,EAAS,KAAK,MAAA,CAAO,cAAA;AAAA,MACrB,GAAA,EAAK,sBAAA;AAAA,MACL,YAAA,EAAc,cAAA;AAAA,MACd,IAAA,EAAM,CAAC,MAAA,CAAO,QAAA,EAAU,OAAO,SAAA,EAAW,MAAA,CAAO,IAAA,EAAM,MAAA,CAAO,IAAI;AAAA,KACnE,CAAA;AAAA,EACH;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,EAOA,MAAM,aAAa,MAAA,EAGhB;AACD,IAAA,MAAM,SAAA,GAAY,OAAO,SAAA,IAAa,KAAA;AAEtC,IAAA,MAAM,OAAA,GAAU,OAAO,SAAA,EAAmB,IAAA,KAAiB;AACzD,MAAA,MAAM,OAAA,GAAW,MAAM,IAAA,CAAK,YAAA,CAAa,YAAA,CAAa;AAAA,QACpD,OAAA,EAAS,KAAK,MAAA,CAAO,cAAA;AAAA,QACrB,GAAA,EAAK,sBAAA;AAAA,QACL,YAAA,EAAc,cAAA;AAAA,QACd,MAAM,CAAC,MAAA,CAAO,UAAU,MAAA,CAAO,SAAS,GAAG,IAAI;AAAA,OAChD,CAAA;AAED,MAAA,IAAI,YAAY,EAAA,EAAI;AAClB,QAAA,OAAO,YACH,EAAE,KAAA,EAAO,GAAA,EAAK,QAAA,EAAU,KAAK,MAAA,EAAQ,CAAA,EAAG,IAAA,EAAM,EAAA,KAC9C,EAAE,IAAA,EAAM,IAAI,QAAA,EAAU,EAAA,EAAI,OAAO,EAAA,EAAG;AAAA,MAC1C;AAGA,MAAA,MAAM,KAAA,GAAa,MAAM,IAAA,CAAK,YAAA,CAAa,YAAA,CAAa;AAAA,QACtD,OAAA,EAAS,KAAK,MAAA,CAAO,cAAA;AAAA,QACrB,GAAA,EAAK,sBAAA;AAAA,QACL,YAAA,EAAc,cAAA;AAAA,QACd,IAAA,EAAM,CAAC,MAAA,CAAO,QAAA,EAAU,OAAO,SAAS,CAAA,EAAG,MAAM,OAAO;AAAA,OACzD,CAAA;AAED,MAAA,IAAI,SAAA,EAAW;AACb,QAAA,OAAO;AAAA,UACL,KAAA,EAAO,YAAY,OAAO,CAAA;AAAA,UAC1B,QAAA,EAAU,YAAA,CAAa,KAAA,CAAM,QAAQ,CAAA;AAAA,UACrC,MAAA,EAAQ,MAAA,CAAO,KAAA,CAAM,KAAK,CAAA;AAAA,UAC1B,IAAA,EAAM;AAAA,SACR;AAAA,MACF;AAEA,MAAA,OAAO;AAAA,QACL,IAAA,EAAM,OAAA;AAAA,QACN,aAAa,KAAA,CAAM,WAAA;AAAA,QACnB,UAAU,KAAA,CAAM,QAAA;AAAA,QAChB,OAAO,KAAA,CAAM;AAAA,OACf;AAAA,IACF,CAAA;AAEA,IAAA,MAAM,CAAC,YAAY,UAAA,EAAY,SAAA,EAAW,SAAS,CAAA,GAAI,MAAM,QAAQ,GAAA,CAAI;AAAA,MACvE,OAAA,CAAQ,GAAG,CAAC,CAAA;AAAA;AAAA,MACZ,OAAA,CAAQ,GAAG,CAAC,CAAA;AAAA;AAAA,MACZ,OAAA,CAAQ,GAAG,CAAC,CAAA;AAAA;AAAA,MACZ,OAAA,CAAQ,GAAG,CAAC;AAAA;AAAA,KACb,CAAA;AAED,IAAA,OAAO;AAAA,MACL,GAAA,EAAK;AAAA,QACH,OAAA,EAAS,UAAA;AAAA,QACT,OAAA,EAAS;AAAA,OACX;AAAA,MACA,EAAA,EAAI;AAAA,QACF,OAAA,EAAS,SAAA;AAAA,QACT,OAAA,EAAS;AAAA;AACX,KACF;AAAA,EACF;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,EAQA,MAAM,aAAA,CAAc,QAAA,EAAkB,MAAA,EAAgB;AACpD,IAAA,MAAM,SAAS,IAAA,CAAK,YAAA;AACpB,IAAA,MAAM,OAAA,GAAU,MAAM,IAAA,CAAK,gBAAA,EAAiB;AAE5C,IAAA,MAAM,EAAE,OAAA,EAAQ,GAAI,MAAM,IAAA,CAAK,aAAa,gBAAA,CAAiB;AAAA,MAC3D,OAAA,EAAS,KAAK,MAAA,CAAO,cAAA;AAAA,MACrB,GAAA,EAAK,kBAAA;AAAA,MACL,YAAA,EAAc,eAAA;AAAA,MACd,IAAA,EAAM,CAAC,QAAA,EAAU,MAAM,CAAA;AAAA,MACvB;AAAA,KACD,CAAA;AAED,IAAA,OAAO,MAAA,CAAO,cAAc,OAAO,CAAA;AAAA,EACrC;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,EAQA,MAAM,cAAA,CAAe,QAAA,EAAkB,MAAA,EAAgB;AACrD,IAAA,MAAM,SAAS,IAAA,CAAK,YAAA;AACpB,IAAA,MAAM,OAAA,GAAU,MAAM,IAAA,CAAK,gBAAA,EAAiB;AAE5C,IAAA,MAAM,EAAE,OAAA,EAAQ,GAAI,MAAM,IAAA,CAAK,aAAa,gBAAA,CAAiB;AAAA,MAC3D,OAAA,EAAS,KAAK,MAAA,CAAO,cAAA;AAAA,MACrB,GAAA,EAAK,kBAAA;AAAA,MACL,YAAA,EAAc,gBAAA;AAAA,MACd,IAAA,EAAM,CAAC,QAAA,EAAU,MAAM,CAAA;AAAA,MACvB;AAAA,KACD,CAAA;AAED,IAAA,OAAO,MAAA,CAAO,cAAc,OAAO,CAAA;AAAA,EACrC;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,EAYA,MAAM,iBAAiB,MAAA,EASpB;AACD,IAAA,MAAM,SAAS,IAAA,CAAK,YAAA;AACpB,IAAA,MAAM,OAAA,GAAU,MAAM,IAAA,CAAK,gBAAA,EAAiB;AAE5C,IAAA,MAAM,EAAE,OAAA,EAAQ,GAAI,MAAM,IAAA,CAAK,aAAa,gBAAA,CAAiB;AAAA,MAC3D,OAAA,EAAS,KAAK,MAAA,CAAO,cAAA;AAAA,MACrB,GAAA,EAAK,wBAAA;AAAA,MACL,YAAA,EAAc,kBAAA;AAAA,MACd,IAAA,EAAM,CAAC,MAAA,CAAO,QAAA,EAAU,OAAO,MAAM,CAAA;AAAA,MACrC;AAAA,KACD,CAAA;AAED,IAAA,OAAO,MAAA,CAAO,cAAc,OAAO,CAAA;AAAA,EACrC;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,EAQA,MAAM,uBAAuB,MAAA,EAS1B;AAED,IAAA,MAAM,WAAA,GAAmB,MAAM,IAAA,CAAK,YAAA,CAAa,YAAA,CAAa;AAAA,MAC5D,OAAA,EAAS,KAAK,MAAA,CAAO,cAAA;AAAA,MACrB,GAAA,EAAK,oBAAA;AAAA,MACL,YAAA,EAAc,sBAAA;AAAA,MACd,IAAA,EAAM,CAAC,MAAA,CAAO,QAAQ;AAAA,KACvB,CAAA;AAED,IAAA,MAAM,kBAAkB,WAAA,CAAY,eAAA;AACpC,IAAA,MAAM,QAAA,GAAW,MAAM,sBAAA,CAAuB,IAAA,CAAK,cAAc,eAAe,CAAA;AAEhF,IAAA,MAAM,MAAA,GAAS,MAAA,CAAO,MAAA,CAAO,GAAA,CAAI,CAAC,CAAA,MAAO;AAAA,MACvC,WAAW,CAAA,CAAE,SAAA;AAAA,MACb,MAAM,CAAA,CAAE,IAAA;AAAA,MACR,IAAA,EAAM,WAAA,CAAY,CAAA,CAAE,KAAK,CAAA;AAAA,MACzB,GAAA,EAAK,gBAAA,CAAiB,CAAA,CAAE,QAAA,EAAU,QAAQ,CAAA;AAAA,MAC1C,MAAA,EACE,OAAO,CAAA,CAAE,MAAA,KAAW,WAChB,CAAA,CAAE,MAAA,KAAW,KAAA,GACX,MAAA,CAAO,CAAC,CAAA,GACR,YAAA,CAAa,CAAA,CAAE,MAAM,IACvB,CAAA,CAAE;AAAA,KACV,CAAE,CAAA;AAEF,IAAA,OAAO,KAAK,gBAAA,CAAiB,EAAE,UAAU,MAAA,CAAO,QAAA,EAAU,QAAQ,CAAA;AAAA,EACpE;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,EAOA,MAAM,kBAAkB,QAAA,EAAoB;AAC1C,IAAA,MAAM,SAAS,IAAA,CAAK,YAAA;AACpB,IAAA,MAAM,OAAA,GAAU,MAAM,IAAA,CAAK,gBAAA,EAAiB;AAE5C,IAAA,MAAM,EAAE,OAAA,EAAQ,GAAI,MAAM,IAAA,CAAK,aAAa,gBAAA,CAAiB;AAAA,MAC3D,OAAA,EAAS,KAAK,MAAA,CAAO,cAAA;AAAA,MACrB,GAAA,EAAK,wBAAA;AAAA,MACL,YAAA,EAAc,mBAAA;AAAA,MACd,IAAA,EAAM,CAAC,QAAQ,CAAA;AAAA,MACf;AAAA,KACD,CAAA;AAED,IAAA,OAAO,MAAA,CAAO,cAAc,OAAO,CAAA;AAAA,EACrC;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,EASA,MAAM,iBAAiB,MAAA,EAUpB;AACD,IAAA,MAAM,SAAS,IAAA,CAAK,YAAA;AACpB,IAAA,MAAM,OAAA,GAAU,MAAM,IAAA,CAAK,gBAAA,EAAiB;AAE5C,IAAA,MAAM,EAAE,OAAA,EAAQ,GAAI,MAAM,IAAA,CAAK,aAAa,gBAAA,CAAiB;AAAA,MAC3D,OAAA,EAAS,KAAK,MAAA,CAAO,cAAA;AAAA,MACrB,GAAA,EAAK,wBAAA;AAAA,MACL,YAAA,EAAc,kBAAA;AAAA,MACd,MAAM,CAAC,MAAA,CAAO,UAAU,MAAA,CAAO,cAAA,EAAgB,OAAO,SAAS,CAAA;AAAA,MAC/D;AAAA,KACD,CAAA;AAED,IAAA,OAAO,MAAA,CAAO,cAAc,OAAO,CAAA;AAAA,EACrC;AAAA;AAAA;AAAA;AAAA,EAKA,MAAM,uBAAuB,MAAA,EAU1B;AAED,IAAA,MAAM,WAAA,GAAmB,MAAM,IAAA,CAAK,YAAA,CAAa,YAAA,CAAa;AAAA,MAC5D,OAAA,EAAS,KAAK,MAAA,CAAO,cAAA;AAAA,MACrB,GAAA,EAAK,oBAAA;AAAA,MACL,YAAA,EAAc,sBAAA;AAAA,MACd,IAAA,EAAM,CAAC,MAAA,CAAO,QAAQ;AAAA,KACvB,CAAA;AAED,IAAA,MAAM,kBAAkB,WAAA,CAAY,eAAA;AACpC,IAAA,MAAM,QAAA,GAAW,MAAM,sBAAA,CAAuB,IAAA,CAAK,cAAc,eAAe,CAAA;AAEhF,IAAA,MAAM,SAAA,GAAY,MAAA,CAAO,SAAA,CAAU,GAAA,CAAI,CAAC,CAAA,MAAO;AAAA,MAC7C,WAAW,CAAA,CAAE,SAAA;AAAA,MACb,MAAM,CAAA,CAAE,IAAA;AAAA,MACR,IAAA,EAAM,WAAA,CAAY,CAAA,CAAE,KAAK,CAAA;AAAA,MACzB,GAAA,EAAK,gBAAA,CAAiB,CAAA,CAAE,QAAA,EAAU,QAAQ,CAAA;AAAA,MAC1C,MAAA,EACE,OAAO,CAAA,CAAE,MAAA,KAAW,WAChB,CAAA,CAAE,MAAA,KAAW,KAAA,GACX,MAAA,CAAO,CAAC,CAAA,GACR,YAAA,CAAa,CAAA,CAAE,MAAM,IACvB,CAAA,CAAE;AAAA,KACV,CAAE,CAAA;AAEF,IAAA,OAAO,KAAK,gBAAA,CAAiB;AAAA,MAC3B,UAAU,MAAA,CAAO,QAAA;AAAA,MACjB,gBAAgB,MAAA,CAAO,cAAA;AAAA,MACvB;AAAA,KACD,CAAA;AAAA,EACH;AACF;ACxvBO,IAAM,UAAA,GAAa,GAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAyCnB,IAAM,WAAA,GAAc,GAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AA2CpB,IAAM,wBAAA,GAA2B,GAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAiDjC,IAAM,UAAA,GAAa,GAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAqCnB,IAAM,UAAA,GAAa,GAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAgCnB,IAAM,gBAAA,GAAmB,GAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAqBzB,IAAM,oBAAA,GAAuB,GAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAoB7B,IAAM,UAAA,GAAa,GAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AA+BnB,IAAM,QAAA,GAAW,GAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAiBjB,IAAM,eAAA,GAAkB,GAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAgBxB,IAAM,kBAAA,GAAqB,GAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAe3B,IAAM,YAAA,GAAe,GAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAkCrB,IAAM,aAAA,GAAgB,GAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAoCtB,IAAM,iBAAA,GAAoB,GAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAmC1B,IAAM,gBAAA,GAAmB,GAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AA6BzB,IAAM,iBAAA,GAAoB,GAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AA0C1B,IAAM,qBAAA,GAAwB,GAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAgC9B,IAAM,uBAAA,GAA0B,GAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AA0KhC,IAAM,iCAAA,GAAoC,GAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAiK1C,IAAM,oBAAA,GAAuB,GAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAuJ7B,IAAM,8BAAA,GAAiC,GAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;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","file":"index.mjs","sourcesContent":["import type { Address } from 'viem';\nimport { baseSepolia, base } from 'viem/chains';\n\nexport const CONTRACT_ADDRESSES = {\n [baseSepolia.id]: {\n diamond: '0x31a4126aec35b36d46dd371eb0f0d5b71e1c2292' as Address,\n conditionalTokens: '0x7364747372Ac4a175B5326f5B2C9CB1C271d32e8' as Address,\n usdc: '0x036cbd53842c5426634e7929541ec2318f3dcf7e' as Address,\n subgraph: 'https://api.studio.thegraph.com/query/1716020/oddmaki-base-sepolia/version/latest',\n },\n [base.id]: {\n diamond: '0x025d086a62d93e24f3cb3f161612ca8e9530127d' as Address,\n conditionalTokens: '0x3e2ae408ca03f27849edff32d107c7b8ea5c87b4' as Address,\n usdc: '0x833589fcd6edb6e08f4c7c32d4f71b54bda02913' as Address,\n subgraph: 'https://api.studio.thegraph.com/query/1716020/oddmaki-base/version/latest',\n },\n} as const;\n\nexport const SUBGRAPH_IDS = {\n [base.id]: 'CxoYVjELrNCMLopAmVshnfVAie7yH6QZyCSKD3r41XSQ',\n [baseSepolia.id]: 'DCnd3ozSyvYxRg7kmZYiDWGBiJCe6QHwu8M93jMN1Q3b',\n} as const;\n\nexport function buildSubgraphGatewayUrl(\n chainId: number,\n apiKey: string,\n): string | undefined {\n const id = SUBGRAPH_IDS[chainId as keyof typeof SUBGRAPH_IDS];\n return id\n ? `https://gateway.thegraph.com/api/${apiKey}/subgraphs/id/${id}`\n : undefined;\n}\n\nexport const DEFAULT_CHAIN = base;\n","import { GraphQLClient, type RequestDocument } from 'graphql-request';\nimport type { TypedDocumentNode } from '@graphql-typed-document-node/core';\n\nexport class SubgraphClient {\n private client: GraphQLClient;\n\n constructor(endpoint: string) {\n this.client = new GraphQLClient(endpoint);\n }\n\n async request<T>(\n query: RequestDocument | TypedDocumentNode<T, Record<string, unknown>>,\n variables?: Record<string, unknown>,\n ): Promise<T> {\n return this.client.request<T>(query as RequestDocument, variables);\n }\n}\n","import type { Account, Address } from 'viem';\nimport type { OddMakiClientConfig } from '../types';\nimport { SubgraphClient } from '../subgraph/client';\n\nexport abstract class BaseModule {\n protected config: OddMakiClientConfig;\n protected subgraph: SubgraphClient;\n\n constructor(config: OddMakiClientConfig) {\n this.config = config;\n this.subgraph = new SubgraphClient(config.subgraphEndpoint);\n }\n\n protected get publicClient() {\n return this.config.publicClient;\n }\n\n protected get walletClient() {\n if (!this.config.walletClient) {\n throw new Error(\n 'WalletClient not initialized. Write operations require a wallet.'\n );\n }\n return this.config.walletClient;\n }\n\n // Returns the hoisted LocalAccount when the wallet was created with a private\n // key, so viem signs locally (eth_sendRawTransaction). Falls back to the\n // address string for injected/JSON-RPC providers (wagmi, RainbowKit, etc).\n protected async getSignerAccount(): Promise<Account | Address> {\n const wallet = this.walletClient;\n if (wallet.account) return wallet.account;\n const [address] = await wallet.getAddresses();\n return address;\n }\n\n protected async getSignerAddress(): Promise<Address> {\n const signer = await this.getSignerAccount();\n return typeof signer === 'string' ? signer : signer.address;\n }\n}\n","[\n {\n \"type\": \"function\",\n \"name\": \"canCreateMarket\",\n \"inputs\": [\n {\n \"name\": \"user\",\n \"type\": \"address\",\n \"internalType\": \"address\"\n },\n {\n \"name\": \"venueId\",\n \"type\": \"uint256\",\n \"internalType\": \"uint256\"\n }\n ],\n \"outputs\": [\n {\n \"name\": \"\",\n \"type\": \"bool\",\n \"internalType\": \"bool\"\n }\n ],\n \"stateMutability\": \"view\"\n },\n {\n \"type\": \"function\",\n \"name\": \"canTrade\",\n \"inputs\": [\n {\n \"name\": \"user\",\n \"type\": \"address\",\n \"internalType\": \"address\"\n },\n {\n \"name\": \"venueId\",\n \"type\": \"uint256\",\n \"internalType\": \"uint256\"\n }\n ],\n \"outputs\": [\n {\n \"name\": \"\",\n \"type\": \"bool\",\n \"internalType\": \"bool\"\n }\n ],\n \"stateMutability\": \"view\"\n },\n {\n \"type\": \"function\",\n \"name\": \"createVenue\",\n \"inputs\": [\n {\n \"name\": \"name\",\n \"type\": \"string\",\n \"internalType\": \"string\"\n },\n {\n \"name\": \"metadata\",\n \"type\": \"string\",\n \"internalType\": \"string\"\n },\n {\n \"name\": \"tradingAccessControl\",\n \"type\": \"address\",\n \"internalType\": \"address\"\n },\n {\n \"name\": \"creationAccessControl\",\n \"type\": \"address\",\n \"internalType\": \"address\"\n },\n {\n \"name\": \"feeRecipient\",\n \"type\": \"address\",\n \"internalType\": \"address\"\n },\n {\n \"name\": \"venueFeeBps\",\n \"type\": \"uint256\",\n \"internalType\": \"uint256\"\n },\n {\n \"name\": \"creatorFeeBps\",\n \"type\": \"uint256\",\n \"internalType\": \"uint256\"\n },\n {\n \"name\": \"defaultTickSize\",\n \"type\": \"uint256\",\n \"internalType\": \"uint256\"\n },\n {\n \"name\": \"marketCreationFee\",\n \"type\": \"uint256\",\n \"internalType\": \"uint256\"\n },\n {\n \"name\": \"umaRewardAmount\",\n \"type\": \"uint256\",\n \"internalType\": \"uint256\"\n },\n {\n \"name\": \"umaMinBond\",\n \"type\": \"uint256\",\n \"internalType\": \"uint256\"\n }\n ],\n \"outputs\": [\n {\n \"name\": \"venueId\",\n \"type\": \"uint256\",\n \"internalType\": \"uint256\"\n }\n ],\n \"stateMutability\": \"nonpayable\"\n },\n {\n \"type\": \"function\",\n \"name\": \"getNextVenueId\",\n \"inputs\": [],\n \"outputs\": [\n {\n \"name\": \"\",\n \"type\": \"uint256\",\n \"internalType\": \"uint256\"\n }\n ],\n \"stateMutability\": \"view\"\n },\n {\n \"type\": \"function\",\n \"name\": \"getVenue\",\n \"inputs\": [\n {\n \"name\": \"venueId\",\n \"type\": \"uint256\",\n \"internalType\": \"uint256\"\n }\n ],\n \"outputs\": [\n {\n \"name\": \"\",\n \"type\": \"tuple\",\n \"internalType\": \"struct VenueData\",\n \"components\": [\n {\n \"name\": \"venueId\",\n \"type\": \"uint256\",\n \"internalType\": \"uint256\"\n },\n {\n \"name\": \"operator\",\n \"type\": \"address\",\n \"internalType\": \"address\"\n },\n {\n \"name\": \"name\",\n \"type\": \"string\",\n \"internalType\": \"string\"\n },\n {\n \"name\": \"metadata\",\n \"type\": \"string\",\n \"internalType\": \"string\"\n },\n {\n \"name\": \"tradingAccessControl\",\n \"type\": \"address\",\n \"internalType\": \"address\"\n },\n {\n \"name\": \"creationAccessControl\",\n \"type\": \"address\",\n \"internalType\": \"address\"\n },\n {\n \"name\": \"feeRecipient\",\n \"type\": \"address\",\n \"internalType\": \"address\"\n },\n {\n \"name\": \"venueFeeBps\",\n \"type\": \"uint256\",\n \"internalType\": \"uint256\"\n },\n {\n \"name\": \"creatorFeeBps\",\n \"type\": \"uint256\",\n \"internalType\": \"uint256\"\n },\n {\n \"name\": \"defaultTickSize\",\n \"type\": \"uint256\",\n \"internalType\": \"uint256\"\n },\n {\n \"name\": \"marketCreationFee\",\n \"type\": \"uint256\",\n \"internalType\": \"uint256\"\n },\n {\n \"name\": \"umaRewardAmount\",\n \"type\": \"uint256\",\n \"internalType\": \"uint256\"\n },\n {\n \"name\": \"umaMinBond\",\n \"type\": \"uint256\",\n \"internalType\": \"uint256\"\n },\n {\n \"name\": \"active\",\n \"type\": \"bool\",\n \"internalType\": \"bool\"\n }\n ]\n }\n ],\n \"stateMutability\": \"view\"\n },\n {\n \"type\": \"function\",\n \"name\": \"getVenueFees\",\n \"inputs\": [\n {\n \"name\": \"venueId\",\n \"type\": \"uint256\",\n \"internalType\": \"uint256\"\n }\n ],\n \"outputs\": [\n {\n \"name\": \"venueFeeBps\",\n \"type\": \"uint256\",\n \"internalType\": \"uint256\"\n },\n {\n \"name\": \"creatorFeeBps\",\n \"type\": \"uint256\",\n \"internalType\": \"uint256\"\n }\n ],\n \"stateMutability\": \"view\"\n },\n {\n \"type\": \"function\",\n \"name\": \"pauseVenue\",\n \"inputs\": [\n {\n \"name\": \"venueId\",\n \"type\": \"uint256\",\n \"internalType\": \"uint256\"\n }\n ],\n \"outputs\": [],\n \"stateMutability\": \"nonpayable\"\n },\n {\n \"type\": \"function\",\n \"name\": \"unpauseVenue\",\n \"inputs\": [\n {\n \"name\": \"venueId\",\n \"type\": \"uint256\",\n \"internalType\": \"uint256\"\n }\n ],\n \"outputs\": [],\n \"stateMutability\": \"nonpayable\"\n },\n {\n \"type\": \"function\",\n \"name\": \"updateVenue\",\n \"inputs\": [\n {\n \"name\": \"venueId\",\n \"type\": \"uint256\",\n \"internalType\": \"uint256\"\n },\n {\n \"name\": \"name\",\n \"type\": \"string\",\n \"internalType\": \"string\"\n },\n {\n \"name\": \"metadata\",\n \"type\": \"string\",\n \"internalType\": \"string\"\n },\n {\n \"name\": \"tradingAccessControl\",\n \"type\": \"address\",\n \"internalType\": \"address\"\n },\n {\n \"name\": \"creationAccessControl\",\n \"type\": \"address\",\n \"internalType\": \"address\"\n },\n {\n \"name\": \"feeRecipient\",\n \"type\": \"address\",\n \"internalType\": \"address\"\n }\n ],\n \"outputs\": [],\n \"stateMutability\": \"nonpayable\"\n },\n {\n \"type\": \"function\",\n \"name\": \"updateVenueFees\",\n \"inputs\": [\n {\n \"name\": \"venueId\",\n \"type\": \"uint256\",\n \"internalType\": \"uint256\"\n },\n {\n \"name\": \"venueFeeBps\",\n \"type\": \"uint256\",\n \"internalType\": \"uint256\"\n },\n {\n \"name\": \"creatorFeeBps\",\n \"type\": \"uint256\",\n \"internalType\": \"uint256\"\n }\n ],\n \"outputs\": [],\n \"stateMutability\": \"nonpayable\"\n },\n {\n \"type\": \"function\",\n \"name\": \"updateVenueMarketCreationFee\",\n \"inputs\": [\n {\n \"name\": \"venueId\",\n \"type\": \"uint256\",\n \"internalType\": \"uint256\"\n },\n {\n \"name\": \"newFee\",\n \"type\": \"uint256\",\n \"internalType\": \"uint256\"\n }\n ],\n \"outputs\": [],\n \"stateMutability\": \"nonpayable\"\n },\n {\n \"type\": \"function\",\n \"name\": \"updateVenueOracleParams\",\n \"inputs\": [\n {\n \"name\": \"venueId\",\n \"type\": \"uint256\",\n \"internalType\": \"uint256\"\n },\n {\n \"name\": \"umaRewardAmount\",\n \"type\": \"uint256\",\n \"internalType\": \"uint256\"\n },\n {\n \"name\": \"umaMinBond\",\n \"type\": \"uint256\",\n \"internalType\": \"uint256\"\n }\n ],\n \"outputs\": [],\n \"stateMutability\": \"nonpayable\"\n },\n {\n \"type\": \"event\",\n \"name\": \"VenueAccessControlUpdated\",\n \"inputs\": [\n {\n \"name\": \"venueId\",\n \"type\": \"uint256\",\n \"indexed\": true,\n \"internalType\": \"uint256\"\n },\n {\n \"name\": \"tradingAccessControl\",\n \"type\": \"address\",\n \"indexed\": false,\n \"internalType\": \"address\"\n },\n {\n \"name\": \"creationAccessControl\",\n \"type\": \"address\",\n \"indexed\": false,\n \"internalType\": \"address\"\n }\n ],\n \"anonymous\": false\n },\n {\n \"type\": \"event\",\n \"name\": \"VenueCreated\",\n \"inputs\": [\n {\n \"name\": \"venueId\",\n \"type\": \"uint256\",\n \"indexed\": true,\n \"internalType\": \"uint256\"\n },\n {\n \"name\": \"operator\",\n \"type\": \"address\",\n \"indexed\": true,\n \"internalType\": \"address\"\n },\n {\n \"name\": \"name\",\n \"type\": \"string\",\n \"indexed\": false,\n \"internalType\": \"string\"\n },\n {\n \"name\": \"metadata\",\n \"type\": \"string\",\n \"indexed\": false,\n \"internalType\": \"string\"\n }\n ],\n \"anonymous\": false\n },\n {\n \"type\": \"event\",\n \"name\": \"VenueFeesUpdated\",\n \"inputs\": [\n {\n \"name\": \"venueId\",\n \"type\": \"uint256\",\n \"indexed\": true,\n \"internalType\": \"uint256\"\n },\n {\n \"name\": \"venueFeeBps\",\n \"type\": \"uint256\",\n \"indexed\": false,\n \"internalType\": \"uint256\"\n },\n {\n \"name\": \"creatorFeeBps\",\n \"type\": \"uint256\",\n \"indexed\": false,\n \"internalType\": \"uint256\"\n }\n ],\n \"anonymous\": false\n },\n {\n \"type\": \"event\",\n \"name\": \"VenueMarketCreationFeeUpdated\",\n \"inputs\": [\n {\n \"name\": \"venueId\",\n \"type\": \"uint256\",\n \"indexed\": true,\n \"internalType\": \"uint256\"\n },\n {\n \"name\": \"newFee\",\n \"type\": \"uint256\",\n \"indexed\": false,\n \"internalType\": \"uint256\"\n }\n ],\n \"anonymous\": false\n },\n {\n \"type\": \"event\",\n \"name\": \"VenueOracleParamsUpdated\",\n \"inputs\": [\n {\n \"name\": \"venueId\",\n \"type\": \"uint256\",\n \"indexed\": true,\n \"internalType\": \"uint256\"\n },\n {\n \"name\": \"umaRewardAmount\",\n \"type\": \"uint256\",\n \"indexed\": false,\n \"internalType\": \"uint256\"\n },\n {\n \"name\": \"umaMinBond\",\n \"type\": \"uint256\",\n \"indexed\": false,\n \"internalType\": \"uint256\"\n }\n ],\n \"anonymous\": false\n },\n {\n \"type\": \"event\",\n \"name\": \"VenuePaused\",\n \"inputs\": [\n {\n \"name\": \"venueId\",\n \"type\": \"uint256\",\n \"indexed\": true,\n \"internalType\": \"uint256\"\n },\n {\n \"name\": \"operator\",\n \"type\": \"address\",\n \"indexed\": true,\n \"internalType\": \"address\"\n }\n ],\n \"anonymous\": false\n },\n {\n \"type\": \"event\",\n \"name\": \"VenueUnpaused\",\n \"inputs\": [\n {\n \"name\": \"venueId\",\n \"type\": \"uint256\",\n \"indexed\": true,\n \"internalType\": \"uint256\"\n },\n {\n \"name\": \"operator\",\n \"type\": \"address\",\n \"indexed\": true,\n \"internalType\": \"address\"\n }\n ],\n \"anonymous\": false\n },\n {\n \"type\": \"event\",\n \"name\": \"VenueUpdated\",\n \"inputs\": [\n {\n \"name\": \"venueId\",\n \"type\": \"uint256\",\n \"indexed\": true,\n \"internalType\": \"uint256\"\n },\n {\n \"name\": \"operator\",\n \"type\": \"address\",\n \"indexed\": true,\n \"internalType\": \"address\"\n },\n {\n \"name\": \"name\",\n \"type\": \"string\",\n \"indexed\": false,\n \"internalType\": \"string\"\n },\n {\n \"name\": \"metadata\",\n \"type\": \"string\",\n \"indexed\": false,\n \"internalType\": \"string\"\n }\n ],\n \"anonymous\": false\n },\n {\n \"type\": \"error\",\n \"name\": \"InvalidCreatorFee\",\n \"inputs\": []\n },\n {\n \"type\": \"error\",\n \"name\": \"InvalidFeeRecipient\",\n \"inputs\": []\n },\n {\n \"type\": \"error\",\n \"name\": \"InvalidTickSize\",\n \"inputs\": []\n },\n {\n \"type\": \"error\",\n \"name\": \"InvalidUmaMinBond\",\n \"inputs\": []\n },\n {\n \"type\": \"error\",\n \"name\": \"InvalidVenueFee\",\n \"inputs\": []\n },\n {\n \"type\": \"error\",\n \"name\": \"InvalidVenueName\",\n \"inputs\": []\n },\n {\n \"type\": \"error\",\n \"name\": \"OnlyVenueOperator\",\n \"inputs\": []\n },\n {\n \"type\": \"error\",\n \"name\": \"ProtocolPaused\",\n \"inputs\": []\n },\n {\n \"type\": \"error\",\n \"name\": \"VenueInactive\",\n \"inputs\": []\n },\n {\n \"type\": \"error\",\n \"name\": \"VenueNotFound\",\n \"inputs\": []\n },\n {\n \"type\": \"error\",\n \"name\": \"VenueSuspended\",\n \"inputs\": []\n }\n]\n","[\n {\n \"type\": \"function\",\n \"name\": \"activatePlaceholder\",\n \"inputs\": [\n {\n \"name\": \"groupId\",\n \"type\": \"uint256\",\n \"internalType\": \"uint256\"\n },\n {\n \"name\": \"marketId\",\n \"type\": \"uint256\",\n \"internalType\": \"uint256\"\n },\n {\n \"name\": \"marketName\",\n \"type\": \"string\",\n \"internalType\": \"string\"\n },\n {\n \"name\": \"marketQuestion\",\n \"type\": \"string\",\n \"internalType\": \"string\"\n }\n ],\n \"outputs\": [],\n \"stateMutability\": \"nonpayable\"\n },\n {\n \"type\": \"function\",\n \"name\": \"addMarket\",\n \"inputs\": [\n {\n \"name\": \"groupId\",\n \"type\": \"uint256\",\n \"internalType\": \"uint256\"\n },\n {\n \"name\": \"marketName\",\n \"type\": \"string\",\n \"internalType\": \"string\"\n },\n {\n \"name\": \"marketQuestion\",\n \"type\": \"string\",\n \"internalType\": \"string\"\n }\n ],\n \"outputs\": [\n {\n \"name\": \"marketId\",\n \"type\": \"uint256\",\n \"internalType\": \"uint256\"\n }\n ],\n \"stateMutability\": \"nonpayable\"\n },\n {\n \"type\": \"function\",\n \"name\": \"addPlaceholderMarkets\",\n \"inputs\": [\n {\n \"name\": \"groupId\",\n \"type\": \"uint256\",\n \"internalType\": \"uint256\"\n },\n {\n \"name\": \"count\",\n \"type\": \"uint256\",\n \"internalType\": \"uint256\"\n }\n ],\n \"outputs\": [\n {\n \"name\": \"marketIds\",\n \"type\": \"uint256[]\",\n \"internalType\": \"uint256[]\"\n }\n ],\n \"stateMutability\": \"nonpayable\"\n },\n {\n \"type\": \"function\",\n \"name\": \"createMarket\",\n \"inputs\": [\n {\n \"name\": \"venueId\",\n \"type\": \"uint256\",\n \"internalType\": \"uint256\"\n },\n {\n \"name\": \"ancillaryData\",\n \"type\": \"bytes\",\n \"internalType\": \"bytes\"\n },\n {\n \"name\": \"outcomes\",\n \"type\": \"string[]\",\n \"internalType\": \"string[]\"\n },\n {\n \"name\": \"tickSize\",\n \"type\": \"uint256\",\n \"internalType\": \"uint256\"\n },\n {\n \"name\": \"collateralToken\",\n \"type\": \"address\",\n \"internalType\": \"address\"\n },\n {\n \"name\": \"additionalReward\",\n \"type\": \"uint256\",\n \"internalType\": \"uint256\"\n },\n {\n \"name\": \"liveness\",\n \"type\": \"uint64\",\n \"internalType\": \"uint64\"\n },\n {\n \"name\": \"tags\",\n \"type\": \"bytes32[]\",\n \"internalType\": \"bytes32[]\"\n }\n ],\n \"outputs\": [\n {\n \"name\": \"marketId\",\n \"type\": \"uint256\",\n \"internalType\": \"uint256\"\n }\n ],\n \"stateMutability\": \"nonpayable\"\n },\n {\n \"type\": \"function\",\n \"name\": \"getMarketOracleData\",\n \"inputs\": [\n {\n \"name\": \"marketId\",\n \"type\": \"uint256\",\n \"internalType\": \"uint256\"\n }\n ],\n \"outputs\": [\n {\n \"name\": \"\",\n \"type\": \"tuple\",\n \"internalType\": \"struct MarketOracleData\",\n \"components\": [\n {\n \"name\": \"questionId\",\n \"type\": \"bytes32\",\n \"internalType\": \"bytes32\"\n },\n {\n \"name\": \"conditionId\",\n \"type\": \"bytes32\",\n \"internalType\": \"bytes32\"\n },\n {\n \"name\": \"outcomeSlotCount\",\n \"type\": \"uint256\",\n \"internalType\": \"uint256\"\n },\n {\n \"name\": \"currency\",\n \"type\": \"address\",\n \"internalType\": \"contract IERC20\"\n },\n {\n \"name\": \"reward\",\n \"type\": \"uint256\",\n \"internalType\": \"uint256\"\n },\n {\n \"name\": \"requiredBond\",\n \"type\": \"uint256\",\n \"internalType\": \"uint256\"\n },\n {\n \"name\": \"liveness\",\n \"type\": \"uint64\",\n \"internalType\": \"uint64\"\n },\n {\n \"name\": \"initialized\",\n \"type\": \"bool\",\n \"internalType\": \"bool\"\n },\n {\n \"name\": \"activeAssertionId\",\n \"type\": \"bytes32\",\n \"internalType\": \"bytes32\"\n },\n {\n \"name\": \"ancillaryData\",\n \"type\": \"bytes\",\n \"internalType\": \"bytes\"\n },\n {\n \"name\": \"outcomes\",\n \"type\": \"string[]\",\n \"internalType\": \"string[]\"\n }\n ]\n }\n ],\n \"stateMutability\": \"view\"\n },\n {\n \"type\": \"function\",\n \"name\": \"getMarketRegistryData\",\n \"inputs\": [\n {\n \"name\": \"marketId\",\n \"type\": \"uint256\",\n \"internalType\": \"uint256\"\n }\n ],\n \"outputs\": [\n {\n \"name\": \"\",\n \"type\": \"tuple\",\n \"internalType\": \"struct MarketRegistryData\",\n \"components\": [\n {\n \"name\": \"marketId\",\n \"type\": \"uint256\",\n \"internalType\": \"uint256\"\n },\n {\n \"name\": \"venueId\",\n \"type\": \"uint256\",\n \"internalType\": \"uint256\"\n },\n {\n \"name\": \"creator\",\n \"type\": \"address\",\n \"internalType\": \"address\"\n },\n {\n \"name\": \"status\",\n \"type\": \"uint8\",\n \"internalType\": \"enum MarketStatus\"\n },\n {\n \"name\": \"groupId\",\n \"type\": \"uint256\",\n \"internalType\": \"uint256\"\n },\n {\n \"name\": \"questionId\",\n \"type\": \"bytes32\",\n \"internalType\": \"bytes32\"\n },\n {\n \"name\": \"oracle\",\n \"type\": \"address\",\n \"internalType\": \"address\"\n },\n {\n \"name\": \"tickSize\",\n \"type\": \"uint256\",\n \"internalType\": \"uint256\"\n },\n {\n \"name\": \"venueFeeBps\",\n \"type\": \"uint256\",\n \"internalType\": \"uint256\"\n },\n {\n \"name\": \"creatorFeeBps\",\n \"type\": \"uint256\",\n \"internalType\": \"uint256\"\n },\n {\n \"name\": \"protocolFeeBps\",\n \"type\": \"uint256\",\n \"internalType\": \"uint256\"\n },\n {\n \"name\": \"protocolFeeRecipient\",\n \"type\": \"address\",\n \"internalType\": \"address\"\n },\n {\n \"name\": \"venueFeeRecipient\",\n \"type\": \"address\",\n \"internalType\": \"address\"\n }\n ]\n }\n ],\n \"stateMutability\": \"view\"\n },\n {\n \"type\": \"function\",\n \"name\": \"getMarketTradingData\",\n \"inputs\": [\n {\n \"name\": \"marketId\",\n \"type\": \"uint256\",\n \"internalType\": \"uint256\"\n }\n ],\n \"outputs\": [\n {\n \"name\": \"\",\n \"type\": \"tuple\",\n \"internalType\": \"struct MarketTradingData\",\n \"components\": [\n {\n \"name\": \"marketId\",\n \"type\": \"uint256\",\n \"internalType\": \"uint256\"\n },\n {\n \"name\": \"tickSize\",\n \"type\": \"uint256\",\n \"internalType\": \"uint256\"\n },\n {\n \"name\": \"collateralToken\",\n \"type\": \"address\",\n \"internalType\": \"contract IERC20\"\n },\n {\n \"name\": \"positionIds\",\n \"type\": \"uint256[2]\",\n \"internalType\": \"uint256[2]\"\n },\n {\n \"name\": \"totalVolume\",\n \"type\": \"uint256[2]\",\n \"internalType\": \"uint256[2]\"\n },\n {\n \"name\": \"lastTradeTick\",\n \"type\": \"uint256[2]\",\n \"internalType\": \"uint256[2]\"\n },\n {\n \"name\": \"active\",\n \"type\": \"bool\",\n \"internalType\": \"bool\"\n }\n ]\n }\n ],\n \"stateMutability\": \"view\"\n },\n {\n \"type\": \"function\",\n \"name\": \"getNextMarketId\",\n \"inputs\": [],\n \"outputs\": [\n {\n \"name\": \"\",\n \"type\": \"uint256\",\n \"internalType\": \"uint256\"\n }\n ],\n \"stateMutability\": \"view\"\n },\n {\n \"type\": \"function\",\n \"name\": \"pauseMarket\",\n \"inputs\": [\n {\n \"name\": \"marketId\",\n \"type\": \"uint256\",\n \"internalType\": \"uint256\"\n }\n ],\n \"outputs\": [],\n \"stateMutability\": \"nonpayable\"\n },\n {\n \"type\": \"function\",\n \"name\": \"unpauseMarket\",\n \"inputs\": [\n {\n \"name\": \"marketId\",\n \"type\": \"uint256\",\n \"internalType\": \"uint256\"\n }\n ],\n \"outputs\": [],\n \"stateMutability\": \"nonpayable\"\n },\n {\n \"type\": \"event\",\n \"name\": \"MarketAddedToGroup\",\n \"inputs\": [\n {\n \"name\": \"groupId\",\n \"type\": \"uint256\",\n \"indexed\": true,\n \"internalType\": \"uint256\"\n },\n {\n \"name\": \"marketId\",\n \"type\": \"uint256\",\n \"indexed\": true,\n \"internalType\": \"uint256\"\n },\n {\n \"name\": \"marketName\",\n \"type\": \"string\",\n \"indexed\": false,\n \"internalType\": \"string\"\n },\n {\n \"name\": \"marketQuestion\",\n \"type\": \"string\",\n \"indexed\": false,\n \"internalType\": \"string\"\n }\n ],\n \"anonymous\": false\n },\n {\n \"type\": \"event\",\n \"name\": \"MarketCreated\",\n \"inputs\": [\n {\n \"name\": \"marketId\",\n \"type\": \"uint256\",\n \"indexed\": true,\n \"internalType\": \"uint256\"\n },\n {\n \"name\": \"venueId\",\n \"type\": \"uint256\",\n \"indexed\": true,\n \"internalType\": \"uint256\"\n },\n {\n \"name\": \"creator\",\n \"type\": \"address\",\n \"indexed\": true,\n \"internalType\": \"address\"\n },\n {\n \"name\": \"conditionId\",\n \"type\": \"bytes32\",\n \"indexed\": false,\n \"internalType\": \"bytes32\"\n },\n {\n \"name\": \"collateralToken\",\n \"type\": \"address\",\n \"indexed\": false,\n \"internalType\": \"address\"\n },\n {\n \"name\": \"tickSize\",\n \"type\": \"uint256\",\n \"indexed\": false,\n \"internalType\": \"uint256\"\n },\n {\n \"name\": \"question\",\n \"type\": \"string\",\n \"indexed\": false,\n \"internalType\": \"string\"\n },\n {\n \"name\": \"outcomes\",\n \"type\": \"string[]\",\n \"indexed\": false,\n \"internalType\": \"string[]\"\n },\n {\n \"name\": \"groupId\",\n \"type\": \"uint256\",\n \"indexed\": false,\n \"internalType\": \"uint256\"\n },\n {\n \"name\": \"tags\",\n \"type\": \"bytes32[]\",\n \"indexed\": false,\n \"internalType\": \"bytes32[]\"\n }\n ],\n \"anonymous\": false\n },\n {\n \"type\": \"event\",\n \"name\": \"MarketCreationFeeCollected\",\n \"inputs\": [\n {\n \"name\": \"venueId\",\n \"type\": \"uint256\",\n \"indexed\": true,\n \"internalType\": \"uint256\"\n },\n {\n \"name\": \"payer\",\n \"type\": \"address\",\n \"indexed\": true,\n \"internalType\": \"address\"\n },\n {\n \"name\": \"protocolShare\",\n \"type\": \"uint256\",\n \"indexed\": false,\n \"internalType\": \"uint256\"\n },\n {\n \"name\": \"venueShare\",\n \"type\": \"uint256\",\n \"indexed\": false,\n \"internalType\": \"uint256\"\n }\n ],\n \"anonymous\": false\n },\n {\n \"type\": \"event\",\n \"name\": \"MarketPausedEvent\",\n \"inputs\": [\n {\n \"name\": \"marketId\",\n \"type\": \"uint256\",\n \"indexed\": true,\n \"internalType\": \"uint256\"\n },\n {\n \"name\": \"venueId\",\n \"type\": \"uint256\",\n \"indexed\": true,\n \"internalType\": \"uint256\"\n },\n {\n \"name\": \"operator\",\n \"type\": \"address\",\n \"indexed\": true,\n \"internalType\": \"address\"\n }\n ],\n \"anonymous\": false\n },\n {\n \"type\": \"event\",\n \"name\": \"MarketUnpausedEvent\",\n \"inputs\": [\n {\n \"name\": \"marketId\",\n \"type\": \"uint256\",\n \"indexed\": true,\n \"internalType\": \"uint256\"\n },\n {\n \"name\": \"venueId\",\n \"type\": \"uint256\",\n \"indexed\": true,\n \"internalType\": \"uint256\"\n },\n {\n \"name\": \"operator\",\n \"type\": \"address\",\n \"indexed\": true,\n \"internalType\": \"address\"\n }\n ],\n \"anonymous\": false\n },\n {\n \"type\": \"event\",\n \"name\": \"PlaceholderActivated\",\n \"inputs\": [\n {\n \"name\": \"groupId\",\n \"type\": \"uint256\",\n \"indexed\": true,\n \"internalType\": \"uint256\"\n },\n {\n \"name\": \"marketId\",\n \"type\": \"uint256\",\n \"indexed\": true,\n \"internalType\": \"uint256\"\n },\n {\n \"name\": \"marketName\",\n \"type\": \"string\",\n \"indexed\": false,\n \"internalType\": \"string\"\n },\n {\n \"name\": \"marketQuestion\",\n \"type\": \"string\",\n \"indexed\": false,\n \"internalType\": \"string\"\n },\n {\n \"name\": \"timestamp\",\n \"type\": \"uint256\",\n \"indexed\": false,\n \"internalType\": \"uint256\"\n }\n ],\n \"anonymous\": false\n },\n {\n \"type\": \"event\",\n \"name\": \"PlaceholderMarketsAdded\",\n \"inputs\": [\n {\n \"name\": \"groupId\",\n \"type\": \"uint256\",\n \"indexed\": true,\n \"internalType\": \"uint256\"\n },\n {\n \"name\": \"marketIds\",\n \"type\": \"uint256[]\",\n \"indexed\": false,\n \"internalType\": \"uint256[]\"\n },\n {\n \"name\": \"count\",\n \"type\": \"uint256\",\n \"indexed\": false,\n \"internalType\": \"uint256\"\n }\n ],\n \"anonymous\": false\n },\n {\n \"type\": \"event\",\n \"name\": \"WrappedCollateralRegistered\",\n \"inputs\": [\n {\n \"name\": \"underlyingCollateral\",\n \"type\": \"address\",\n \"indexed\": true,\n \"internalType\": \"address\"\n },\n {\n \"name\": \"wrappedCollateral\",\n \"type\": \"address\",\n \"indexed\": true,\n \"internalType\": \"address\"\n }\n ],\n \"anonymous\": false\n },\n {\n \"type\": \"error\",\n \"name\": \"CollateralNotWhitelisted\",\n \"inputs\": []\n },\n {\n \"type\": \"error\",\n \"name\": \"CreationAccessDenied\",\n \"inputs\": []\n },\n {\n \"type\": \"error\",\n \"name\": \"GroupNotActive\",\n \"inputs\": []\n },\n {\n \"type\": \"error\",\n \"name\": \"GroupNotDraft\",\n \"inputs\": []\n },\n {\n \"type\": \"error\",\n \"name\": \"InvalidAddress\",\n \"inputs\": []\n },\n {\n \"type\": \"error\",\n \"name\": \"InvalidCollateral\",\n \"inputs\": []\n },\n {\n \"type\": \"error\",\n \"name\": \"InvalidMarketId\",\n \"inputs\": []\n },\n {\n \"type\": \"error\",\n \"name\": \"InvalidMarketId\",\n \"inputs\": []\n },\n {\n \"type\": \"error\",\n \"name\": \"InvalidOutcomesLength\",\n \"inputs\": []\n },\n {\n \"type\": \"error\",\n \"name\": \"InvalidTickSize\",\n \"inputs\": []\n },\n {\n \"type\": \"error\",\n \"name\": \"MarketGroupNotFound\",\n \"inputs\": []\n },\n {\n \"type\": \"error\",\n \"name\": \"MarketNotPlaceholder\",\n \"inputs\": []\n },\n {\n \"type\": \"error\",\n \"name\": \"NotGroupCreator\",\n \"inputs\": []\n },\n {\n \"type\": \"error\",\n \"name\": \"OnlyVenueOperator\",\n \"inputs\": []\n },\n {\n \"type\": \"error\",\n \"name\": \"OracleAlreadyExists\",\n \"inputs\": []\n },\n {\n \"type\": \"error\",\n \"name\": \"OracleCtfNotSet\",\n \"inputs\": []\n },\n {\n \"type\": \"error\",\n \"name\": \"OracleNotInitialized\",\n \"inputs\": []\n },\n {\n \"type\": \"error\",\n \"name\": \"ProtocolPaused\",\n \"inputs\": []\n },\n {\n \"type\": \"error\",\n \"name\": \"RegistryAlreadyExists\",\n \"inputs\": []\n },\n {\n \"type\": \"error\",\n \"name\": \"TooManyMarkets\",\n \"inputs\": []\n },\n {\n \"type\": \"error\",\n \"name\": \"TooManyTags\",\n \"inputs\": []\n },\n {\n \"type\": \"error\",\n \"name\": \"TradingAlreadyExists\",\n \"inputs\": []\n },\n {\n \"type\": \"error\",\n \"name\": \"TransferFromFailed\",\n \"inputs\": []\n },\n {\n \"type\": \"error\",\n \"name\": \"VenueInactive\",\n \"inputs\": []\n },\n {\n \"type\": \"error\",\n \"name\": \"VenueNotFound\",\n \"inputs\": []\n },\n {\n \"type\": \"error\",\n \"name\": \"VenueSuspended\",\n \"inputs\": []\n }\n]\n","[\n {\n \"type\": \"function\",\n \"name\": \"cancelOrder\",\n \"inputs\": [\n {\n \"name\": \"orderId\",\n \"type\": \"uint256\",\n \"internalType\": \"uint256\"\n }\n ],\n \"outputs\": [],\n \"stateMutability\": \"nonpayable\"\n },\n {\n \"type\": \"function\",\n \"name\": \"cancelOrdersOnResolvedMarket\",\n \"inputs\": [\n {\n \"name\": \"marketId\",\n \"type\": \"uint256\",\n \"internalType\": \"uint256\"\n },\n {\n \"name\": \"orderIds\",\n \"type\": \"uint256[]\",\n \"internalType\": \"uint256[]\"\n }\n ],\n \"outputs\": [\n {\n \"name\": \"cancelledCount\",\n \"type\": \"uint256\",\n \"internalType\": \"uint256\"\n }\n ],\n \"stateMutability\": \"nonpayable\"\n },\n {\n \"type\": \"function\",\n \"name\": \"expireOrders\",\n \"inputs\": [\n {\n \"name\": \"marketId\",\n \"type\": \"uint256\",\n \"internalType\": \"uint256\"\n },\n {\n \"name\": \"orderIds\",\n \"type\": \"uint256[]\",\n \"internalType\": \"uint256[]\"\n }\n ],\n \"outputs\": [\n {\n \"name\": \"expiredCount\",\n \"type\": \"uint256\",\n \"internalType\": \"uint256\"\n },\n {\n \"name\": \"rewardEarned\",\n \"type\": \"uint256\",\n \"internalType\": \"uint256\"\n }\n ],\n \"stateMutability\": \"nonpayable\"\n },\n {\n \"type\": \"function\",\n \"name\": \"getOrder\",\n \"inputs\": [\n {\n \"name\": \"orderId\",\n \"type\": \"uint256\",\n \"internalType\": \"uint256\"\n }\n ],\n \"outputs\": [\n {\n \"name\": \"\",\n \"type\": \"tuple\",\n \"internalType\": \"struct Order\",\n \"components\": [\n {\n \"name\": \"id\",\n \"type\": \"uint256\",\n \"internalType\": \"uint256\"\n },\n {\n \"name\": \"owner\",\n \"type\": \"address\",\n \"internalType\": \"address\"\n },\n {\n \"name\": \"qty\",\n \"type\": \"uint256\",\n \"internalType\": \"uint256\"\n },\n {\n \"name\": \"originalQty\",\n \"type\": \"uint256\",\n \"internalType\": \"uint256\"\n },\n {\n \"name\": \"tick\",\n \"type\": \"uint256\",\n \"internalType\": \"uint256\"\n },\n {\n \"name\": \"side\",\n \"type\": \"uint8\",\n \"internalType\": \"enum Side\"\n },\n {\n \"name\": \"outcomeId\",\n \"type\": \"uint256\",\n \"internalType\": \"uint256\"\n },\n {\n \"name\": \"marketId\",\n \"type\": \"uint256\",\n \"internalType\": \"uint256\"\n },\n {\n \"name\": \"expiry\",\n \"type\": \"uint256\",\n \"internalType\": \"uint256\"\n },\n {\n \"name\": \"salt\",\n \"type\": \"uint256\",\n \"internalType\": \"uint256\"\n },\n {\n \"name\": \"nextOrderId\",\n \"type\": \"uint256\",\n \"internalType\": \"uint256\"\n },\n {\n \"name\": \"prevOrderId\",\n \"type\": \"uint256\",\n \"internalType\": \"uint256\"\n }\n ]\n }\n ],\n \"stateMutability\": \"view\"\n },\n {\n \"type\": \"function\",\n \"name\": \"placeOrder\",\n \"inputs\": [\n {\n \"name\": \"marketId\",\n \"type\": \"uint256\",\n \"internalType\": \"uint256\"\n },\n {\n \"name\": \"outcomeId\",\n \"type\": \"uint256\",\n \"internalType\": \"uint256\"\n },\n {\n \"name\": \"side\",\n \"type\": \"uint8\",\n \"internalType\": \"enum Side\"\n },\n {\n \"name\": \"tick\",\n \"type\": \"uint256\",\n \"internalType\": \"uint256\"\n },\n {\n \"name\": \"qty\",\n \"type\": \"uint256\",\n \"internalType\": \"uint256\"\n },\n {\n \"name\": \"expiry\",\n \"type\": \"uint256\",\n \"internalType\": \"uint256\"\n }\n ],\n \"outputs\": [\n {\n \"name\": \"orderId\",\n \"type\": \"uint256\",\n \"internalType\": \"uint256\"\n }\n ],\n \"stateMutability\": \"nonpayable\"\n },\n {\n \"type\": \"event\",\n \"name\": \"OrderCancelled\",\n \"inputs\": [\n {\n \"name\": \"orderId\",\n \"type\": \"uint256\",\n \"indexed\": true,\n \"internalType\": \"uint256\"\n }\n ],\n \"anonymous\": false\n },\n {\n \"type\": \"event\",\n \"name\": \"OrderCreated\",\n \"inputs\": [\n {\n \"name\": \"orderId\",\n \"type\": \"uint256\",\n \"indexed\": true,\n \"internalType\": \"uint256\"\n },\n {\n \"name\": \"owner\",\n \"type\": \"address\",\n \"indexed\": true,\n \"internalType\": \"address\"\n },\n {\n \"name\": \"marketId\",\n \"type\": \"uint256\",\n \"indexed\": false,\n \"internalType\": \"uint256\"\n }\n ],\n \"anonymous\": false\n },\n {\n \"type\": \"event\",\n \"name\": \"OrderDeleted\",\n \"inputs\": [\n {\n \"name\": \"orderId\",\n \"type\": \"uint256\",\n \"indexed\": true,\n \"internalType\": \"uint256\"\n }\n ],\n \"anonymous\": false\n },\n {\n \"type\": \"event\",\n \"name\": \"OrderExpired\",\n \"inputs\": [\n {\n \"name\": \"orderId\",\n \"type\": \"uint256\",\n \"indexed\": true,\n \"internalType\": \"uint256\"\n },\n {\n \"name\": \"owner\",\n \"type\": \"address\",\n \"indexed\": true,\n \"internalType\": \"address\"\n },\n {\n \"name\": \"qty\",\n \"type\": \"uint256\",\n \"indexed\": false,\n \"internalType\": \"uint256\"\n }\n ],\n \"anonymous\": false\n },\n {\n \"type\": \"event\",\n \"name\": \"OrderPlaced\",\n \"inputs\": [\n {\n \"name\": \"orderId\",\n \"type\": \"uint256\",\n \"indexed\": true,\n \"internalType\": \"uint256\"\n },\n {\n \"name\": \"marketId\",\n \"type\": \"uint256\",\n \"indexed\": true,\n \"internalType\": \"uint256\"\n },\n {\n \"name\": \"outcomeId\",\n \"type\": \"uint256\",\n \"indexed\": false,\n \"internalType\": \"uint256\"\n },\n {\n \"name\": \"side\",\n \"type\": \"uint8\",\n \"indexed\": false,\n \"internalType\": \"enum Side\"\n },\n {\n \"name\": \"tick\",\n \"type\": \"uint256\",\n \"indexed\": false,\n \"internalType\": \"uint256\"\n },\n {\n \"name\": \"qty\",\n \"type\": \"uint256\",\n \"indexed\": false,\n \"internalType\": \"uint256\"\n },\n {\n \"name\": \"owner\",\n \"type\": \"address\",\n \"indexed\": true,\n \"internalType\": \"address\"\n }\n ],\n \"anonymous\": false\n },\n {\n \"type\": \"event\",\n \"name\": \"TopOfBookChanged\",\n \"inputs\": [\n {\n \"name\": \"marketId\",\n \"type\": \"uint256\",\n \"indexed\": true,\n \"internalType\": \"uint256\"\n },\n {\n \"name\": \"outcomeId\",\n \"type\": \"uint256\",\n \"indexed\": true,\n \"internalType\": \"uint256\"\n },\n {\n \"name\": \"side\",\n \"type\": \"uint8\",\n \"indexed\": false,\n \"internalType\": \"enum Side\"\n },\n {\n \"name\": \"bestTick\",\n \"type\": \"uint256\",\n \"indexed\": false,\n \"internalType\": \"uint256\"\n }\n ],\n \"anonymous\": false\n },\n {\n \"type\": \"error\",\n \"name\": \"BatchTooLarge\",\n \"inputs\": []\n },\n {\n \"type\": \"error\",\n \"name\": \"BatchTooLarge\",\n \"inputs\": []\n },\n {\n \"type\": \"error\",\n \"name\": \"InvalidOutcome\",\n \"inputs\": []\n },\n {\n \"type\": \"error\",\n \"name\": \"InvalidQuantity\",\n \"inputs\": []\n },\n {\n \"type\": \"error\",\n \"name\": \"InvalidTick\",\n \"inputs\": []\n },\n {\n \"type\": \"error\",\n \"name\": \"MakerErc165CallFailed\",\n \"inputs\": []\n },\n {\n \"type\": \"error\",\n \"name\": \"MakerNotErc1155Receiver\",\n \"inputs\": []\n },\n {\n \"type\": \"error\",\n \"name\": \"MarketNotActive\",\n \"inputs\": []\n },\n {\n \"type\": \"error\",\n \"name\": \"MarketNotResolved\",\n \"inputs\": []\n },\n {\n \"type\": \"error\",\n \"name\": \"MarketPaused\",\n \"inputs\": []\n },\n {\n \"type\": \"error\",\n \"name\": \"OrderExpired\",\n \"inputs\": []\n },\n {\n \"type\": \"error\",\n \"name\": \"OrderTooSmall\",\n \"inputs\": []\n },\n {\n \"type\": \"error\",\n \"name\": \"ProtocolPaused\",\n \"inputs\": []\n },\n {\n \"type\": \"error\",\n \"name\": \"TradingAccessDenied\",\n \"inputs\": []\n },\n {\n \"type\": \"error\",\n \"name\": \"TransferFailed\",\n \"inputs\": []\n },\n {\n \"type\": \"error\",\n \"name\": \"TransferFromFailed\",\n \"inputs\": []\n },\n {\n \"type\": \"error\",\n \"name\": \"VenueInactive\",\n \"inputs\": []\n },\n {\n \"type\": \"error\",\n \"name\": \"VenueNotFound\",\n \"inputs\": []\n },\n {\n \"type\": \"error\",\n \"name\": \"VenueSuspended\",\n \"inputs\": []\n }\n]\n","[\n {\n \"type\": \"function\",\n \"name\": \"matchOrders\",\n \"inputs\": [\n {\n \"name\": \"marketId\",\n \"type\": \"uint256\",\n \"internalType\": \"uint256\"\n },\n {\n \"name\": \"maxSteps\",\n \"type\": \"uint256\",\n \"internalType\": \"uint256\"\n }\n ],\n \"outputs\": [\n {\n \"name\": \"fillCount\",\n \"type\": \"uint256\",\n \"internalType\": \"uint256\"\n }\n ],\n \"stateMutability\": \"nonpayable\"\n },\n {\n \"type\": \"event\",\n \"name\": \"FeesDistributed\",\n \"inputs\": [\n {\n \"name\": \"marketId\",\n \"type\": \"uint256\",\n \"indexed\": true,\n \"internalType\": \"uint256\"\n },\n {\n \"name\": \"fillId\",\n \"type\": \"uint256\",\n \"indexed\": true,\n \"internalType\": \"uint256\"\n },\n {\n \"name\": \"protocolFee\",\n \"type\": \"uint256\",\n \"indexed\": false,\n \"internalType\": \"uint256\"\n },\n {\n \"name\": \"venueNetFee\",\n \"type\": \"uint256\",\n \"indexed\": false,\n \"internalType\": \"uint256\"\n },\n {\n \"name\": \"creatorFee\",\n \"type\": \"uint256\",\n \"indexed\": false,\n \"internalType\": \"uint256\"\n },\n {\n \"name\": \"operatorFee\",\n \"type\": \"uint256\",\n \"indexed\": false,\n \"internalType\": \"uint256\"\n },\n {\n \"name\": \"totalFee\",\n \"type\": \"uint256\",\n \"indexed\": false,\n \"internalType\": \"uint256\"\n }\n ],\n \"anonymous\": false\n },\n {\n \"type\": \"event\",\n \"name\": \"MergeFill\",\n \"inputs\": [\n {\n \"name\": \"marketId\",\n \"type\": \"uint256\",\n \"indexed\": true,\n \"internalType\": \"uint256\"\n },\n {\n \"name\": \"qty\",\n \"type\": \"uint256\",\n \"indexed\": false,\n \"internalType\": \"uint256\"\n },\n {\n \"name\": \"yesOrderId\",\n \"type\": \"uint256\",\n \"indexed\": false,\n \"internalType\": \"uint256\"\n },\n {\n \"name\": \"noOrderId\",\n \"type\": \"uint256\",\n \"indexed\": false,\n \"internalType\": \"uint256\"\n },\n {\n \"name\": \"yesTick\",\n \"type\": \"uint256\",\n \"indexed\": false,\n \"internalType\": \"uint256\"\n },\n {\n \"name\": \"noTick\",\n \"type\": \"uint256\",\n \"indexed\": false,\n \"internalType\": \"uint256\"\n }\n ],\n \"anonymous\": false\n },\n {\n \"type\": \"event\",\n \"name\": \"MintFill\",\n \"inputs\": [\n {\n \"name\": \"marketId\",\n \"type\": \"uint256\",\n \"indexed\": true,\n \"internalType\": \"uint256\"\n },\n {\n \"name\": \"qty\",\n \"type\": \"uint256\",\n \"indexed\": false,\n \"internalType\": \"uint256\"\n },\n {\n \"name\": \"yesOrderId\",\n \"type\": \"uint256\",\n \"indexed\": false,\n \"internalType\": \"uint256\"\n },\n {\n \"name\": \"noOrderId\",\n \"type\": \"uint256\",\n \"indexed\": false,\n \"internalType\": \"uint256\"\n },\n {\n \"name\": \"yesTick\",\n \"type\": \"uint256\",\n \"indexed\": false,\n \"internalType\": \"uint256\"\n },\n {\n \"name\": \"noTick\",\n \"type\": \"uint256\",\n \"indexed\": false,\n \"internalType\": \"uint256\"\n }\n ],\n \"anonymous\": false\n },\n {\n \"type\": \"event\",\n \"name\": \"OrderAutoCancelled\",\n \"inputs\": [\n {\n \"name\": \"orderId\",\n \"type\": \"uint256\",\n \"indexed\": true,\n \"internalType\": \"uint256\"\n },\n {\n \"name\": \"refundedCollateral\",\n \"type\": \"uint256\",\n \"indexed\": false,\n \"internalType\": \"uint256\"\n }\n ],\n \"anonymous\": false\n },\n {\n \"type\": \"event\",\n \"name\": \"OrderDeleted\",\n \"inputs\": [\n {\n \"name\": \"orderId\",\n \"type\": \"uint256\",\n \"indexed\": true,\n \"internalType\": \"uint256\"\n }\n ],\n \"anonymous\": false\n },\n {\n \"type\": \"event\",\n \"name\": \"OrderExpired\",\n \"inputs\": [\n {\n \"name\": \"orderId\",\n \"type\": \"uint256\",\n \"indexed\": true,\n \"internalType\": \"uint256\"\n },\n {\n \"name\": \"owner\",\n \"type\": \"address\",\n \"indexed\": true,\n \"internalType\": \"address\"\n },\n {\n \"name\": \"qty\",\n \"type\": \"uint256\",\n \"indexed\": false,\n \"internalType\": \"uint256\"\n }\n ],\n \"anonymous\": false\n },\n {\n \"type\": \"event\",\n \"name\": \"OrderFilled\",\n \"inputs\": [\n {\n \"name\": \"buyOrderId\",\n \"type\": \"uint256\",\n \"indexed\": true,\n \"internalType\": \"uint256\"\n },\n {\n \"name\": \"sellOrderId\",\n \"type\": \"uint256\",\n \"indexed\": true,\n \"internalType\": \"uint256\"\n },\n {\n \"name\": \"marketId\",\n \"type\": \"uint256\",\n \"indexed\": true,\n \"internalType\": \"uint256\"\n },\n {\n \"name\": \"outcomeId\",\n \"type\": \"uint256\",\n \"indexed\": false,\n \"internalType\": \"uint256\"\n },\n {\n \"name\": \"qty\",\n \"type\": \"uint256\",\n \"indexed\": false,\n \"internalType\": \"uint256\"\n },\n {\n \"name\": \"priceTick\",\n \"type\": \"uint256\",\n \"indexed\": false,\n \"internalType\": \"uint256\"\n }\n ],\n \"anonymous\": false\n },\n {\n \"type\": \"event\",\n \"name\": \"SurplusRouted\",\n \"inputs\": [\n {\n \"name\": \"marketId\",\n \"type\": \"uint256\",\n \"indexed\": true,\n \"internalType\": \"uint256\"\n },\n {\n \"name\": \"fillId\",\n \"type\": \"uint256\",\n \"indexed\": true,\n \"internalType\": \"uint256\"\n },\n {\n \"name\": \"amount\",\n \"type\": \"uint256\",\n \"indexed\": false,\n \"internalType\": \"uint256\"\n }\n ],\n \"anonymous\": false\n },\n {\n \"type\": \"event\",\n \"name\": \"SurplusRouted\",\n \"inputs\": [\n {\n \"name\": \"marketId\",\n \"type\": \"uint256\",\n \"indexed\": true,\n \"internalType\": \"uint256\"\n },\n {\n \"name\": \"fillId\",\n \"type\": \"uint256\",\n \"indexed\": true,\n \"internalType\": \"uint256\"\n },\n {\n \"name\": \"amount\",\n \"type\": \"uint256\",\n \"indexed\": false,\n \"internalType\": \"uint256\"\n }\n ],\n \"anonymous\": false\n },\n {\n \"type\": \"event\",\n \"name\": \"TopOfBookChanged\",\n \"inputs\": [\n {\n \"name\": \"marketId\",\n \"type\": \"uint256\",\n \"indexed\": true,\n \"internalType\": \"uint256\"\n },\n {\n \"name\": \"outcomeId\",\n \"type\": \"uint256\",\n \"indexed\": true,\n \"internalType\": \"uint256\"\n },\n {\n \"name\": \"side\",\n \"type\": \"uint8\",\n \"indexed\": false,\n \"internalType\": \"enum Side\"\n },\n {\n \"name\": \"bestTick\",\n \"type\": \"uint256\",\n \"indexed\": false,\n \"internalType\": \"uint256\"\n }\n ],\n \"anonymous\": false\n },\n {\n \"type\": \"event\",\n \"name\": \"TradeExecuted\",\n \"inputs\": [\n {\n \"name\": \"marketId\",\n \"type\": \"uint256\",\n \"indexed\": true,\n \"internalType\": \"uint256\"\n },\n {\n \"name\": \"outcomeId\",\n \"type\": \"uint256\",\n \"indexed\": true,\n \"internalType\": \"uint256\"\n },\n {\n \"name\": \"fillId\",\n \"type\": \"uint256\",\n \"indexed\": true,\n \"internalType\": \"uint256\"\n },\n {\n \"name\": \"priceTick\",\n \"type\": \"uint256\",\n \"indexed\": false,\n \"internalType\": \"uint256\"\n },\n {\n \"name\": \"quantity\",\n \"type\": \"uint256\",\n \"indexed\": false,\n \"internalType\": \"uint256\"\n },\n {\n \"name\": \"cumulativeVolume\",\n \"type\": \"uint256\",\n \"indexed\": false,\n \"internalType\": \"uint256\"\n },\n {\n \"name\": \"timestamp\",\n \"type\": \"uint256\",\n \"indexed\": false,\n \"internalType\": \"uint256\"\n }\n ],\n \"anonymous\": false\n },\n {\n \"type\": \"event\",\n \"name\": \"TradeExecuted\",\n \"inputs\": [\n {\n \"name\": \"marketId\",\n \"type\": \"uint256\",\n \"indexed\": true,\n \"internalType\": \"uint256\"\n },\n {\n \"name\": \"outcomeId\",\n \"type\": \"uint256\",\n \"indexed\": true,\n \"internalType\": \"uint256\"\n },\n {\n \"name\": \"fillId\",\n \"type\": \"uint256\",\n \"indexed\": true,\n \"internalType\": \"uint256\"\n },\n {\n \"name\": \"priceTick\",\n \"type\": \"uint256\",\n \"indexed\": false,\n \"internalType\": \"uint256\"\n },\n {\n \"name\": \"quantity\",\n \"type\": \"uint256\",\n \"indexed\": false,\n \"internalType\": \"uint256\"\n },\n {\n \"name\": \"cumulativeVolume\",\n \"type\": \"uint256\",\n \"indexed\": false,\n \"internalType\": \"uint256\"\n },\n {\n \"name\": \"timestamp\",\n \"type\": \"uint256\",\n \"indexed\": false,\n \"internalType\": \"uint256\"\n }\n ],\n \"anonymous\": false\n },\n {\n \"type\": \"error\",\n \"name\": \"ApproveFailed\",\n \"inputs\": []\n },\n {\n \"type\": \"error\",\n \"name\": \"MarketNotActive\",\n \"inputs\": []\n },\n {\n \"type\": \"error\",\n \"name\": \"MarketPaused\",\n \"inputs\": []\n },\n {\n \"type\": \"error\",\n \"name\": \"ProtocolPaused\",\n \"inputs\": []\n },\n {\n \"type\": \"error\",\n \"name\": \"TransferFailed\",\n \"inputs\": []\n },\n {\n \"type\": \"error\",\n \"name\": \"VenueInactive\",\n \"inputs\": []\n },\n {\n \"type\": \"error\",\n \"name\": \"VenueNotFound\",\n \"inputs\": []\n },\n {\n \"type\": \"error\",\n \"name\": \"VenueSuspended\",\n \"inputs\": []\n }\n]\n","[\n {\n \"type\": \"function\",\n \"name\": \"canMatchOrders\",\n \"inputs\": [\n {\n \"name\": \"marketId\",\n \"type\": \"uint256\",\n \"internalType\": \"uint256\"\n }\n ],\n \"outputs\": [\n {\n \"name\": \"\",\n \"type\": \"tuple\",\n \"internalType\": \"struct MatchPreview\",\n \"components\": [\n {\n \"name\": \"normalYesCross\",\n \"type\": \"bool\",\n \"internalType\": \"bool\"\n },\n {\n \"name\": \"normalNoCross\",\n \"type\": \"bool\",\n \"internalType\": \"bool\"\n },\n {\n \"name\": \"mintFeasible\",\n \"type\": \"bool\",\n \"internalType\": \"bool\"\n },\n {\n \"name\": \"mergeFeasible\",\n \"type\": \"bool\",\n \"internalType\": \"bool\"\n },\n {\n \"name\": \"anyMatchable\",\n \"type\": \"bool\",\n \"internalType\": \"bool\"\n },\n {\n \"name\": \"yesBestBid\",\n \"type\": \"uint256\",\n \"internalType\": \"uint256\"\n },\n {\n \"name\": \"yesBestAsk\",\n \"type\": \"uint256\",\n \"internalType\": \"uint256\"\n },\n {\n \"name\": \"noBestBid\",\n \"type\": \"uint256\",\n \"internalType\": \"uint256\"\n },\n {\n \"name\": \"noBestAsk\",\n \"type\": \"uint256\",\n \"internalType\": \"uint256\"\n },\n {\n \"name\": \"yesBidHeadExpired\",\n \"type\": \"bool\",\n \"internalType\": \"bool\"\n },\n {\n \"name\": \"yesAskHeadExpired\",\n \"type\": \"bool\",\n \"internalType\": \"bool\"\n },\n {\n \"name\": \"noBidHeadExpired\",\n \"type\": \"bool\",\n \"internalType\": \"bool\"\n },\n {\n \"name\": \"noAskHeadExpired\",\n \"type\": \"bool\",\n \"internalType\": \"bool\"\n }\n ]\n }\n ],\n \"stateMutability\": \"view\"\n },\n {\n \"type\": \"function\",\n \"name\": \"getFill\",\n \"inputs\": [\n {\n \"name\": \"fillId\",\n \"type\": \"uint256\",\n \"internalType\": \"uint256\"\n }\n ],\n \"outputs\": [\n {\n \"name\": \"\",\n \"type\": \"tuple\",\n \"internalType\": \"struct Fill\",\n \"components\": [\n {\n \"name\": \"id\",\n \"type\": \"uint256\",\n \"internalType\": \"uint256\"\n },\n {\n \"name\": \"marketId\",\n \"type\": \"uint256\",\n \"internalType\": \"uint256\"\n },\n {\n \"name\": \"path\",\n \"type\": \"uint8\",\n \"internalType\": \"enum SettlementPath\"\n },\n {\n \"name\": \"order1Id\",\n \"type\": \"uint256\",\n \"internalType\": \"uint256\"\n },\n {\n \"name\": \"order2Id\",\n \"type\": \"uint256\",\n \"internalType\": \"uint256\"\n },\n {\n \"name\": \"qty\",\n \"type\": \"uint256\",\n \"internalType\": \"uint256\"\n },\n {\n \"name\": \"priceTick\",\n \"type\": \"uint256\",\n \"internalType\": \"uint256\"\n },\n {\n \"name\": \"operator\",\n \"type\": \"address\",\n \"internalType\": \"address\"\n }\n ]\n }\n ],\n \"stateMutability\": \"view\"\n },\n {\n \"type\": \"function\",\n \"name\": \"getMarkPrice\",\n \"inputs\": [\n {\n \"name\": \"marketId\",\n \"type\": \"uint256\",\n \"internalType\": \"uint256\"\n },\n {\n \"name\": \"outcomeId\",\n \"type\": \"uint256\",\n \"internalType\": \"uint256\"\n }\n ],\n \"outputs\": [\n {\n \"name\": \"priceTick\",\n \"type\": \"uint256\",\n \"internalType\": \"uint256\"\n },\n {\n \"name\": \"isDefined\",\n \"type\": \"bool\",\n \"internalType\": \"bool\"\n }\n ],\n \"stateMutability\": \"view\"\n },\n {\n \"type\": \"function\",\n \"name\": \"getNextFillId\",\n \"inputs\": [],\n \"outputs\": [\n {\n \"name\": \"\",\n \"type\": \"uint256\",\n \"internalType\": \"uint256\"\n }\n ],\n \"stateMutability\": \"view\"\n },\n {\n \"type\": \"function\",\n \"name\": \"getTickLevel\",\n \"inputs\": [\n {\n \"name\": \"marketId\",\n \"type\": \"uint256\",\n \"internalType\": \"uint256\"\n },\n {\n \"name\": \"outcomeId\",\n \"type\": \"uint256\",\n \"internalType\": \"uint256\"\n },\n {\n \"name\": \"side\",\n \"type\": \"uint8\",\n \"internalType\": \"enum Side\"\n },\n {\n \"name\": \"tick\",\n \"type\": \"uint256\",\n \"internalType\": \"uint256\"\n }\n ],\n \"outputs\": [\n {\n \"name\": \"\",\n \"type\": \"tuple\",\n \"internalType\": \"struct TickLevel\",\n \"components\": [\n {\n \"name\": \"headOrderId\",\n \"type\": \"uint256\",\n \"internalType\": \"uint256\"\n },\n {\n \"name\": \"tailOrderId\",\n \"type\": \"uint256\",\n \"internalType\": \"uint256\"\n },\n {\n \"name\": \"depth\",\n \"type\": \"uint256\",\n \"internalType\": \"uint256\"\n },\n {\n \"name\": \"totalQty\",\n \"type\": \"uint256\",\n \"internalType\": \"uint256\"\n }\n ]\n }\n ],\n \"stateMutability\": \"view\"\n },\n {\n \"type\": \"function\",\n \"name\": \"getTopOfBook\",\n \"inputs\": [\n {\n \"name\": \"marketId\",\n \"type\": \"uint256\",\n \"internalType\": \"uint256\"\n },\n {\n \"name\": \"outcomeId\",\n \"type\": \"uint256\",\n \"internalType\": \"uint256\"\n },\n {\n \"name\": \"side\",\n \"type\": \"uint8\",\n \"internalType\": \"enum Side\"\n }\n ],\n \"outputs\": [\n {\n \"name\": \"\",\n \"type\": \"uint256\",\n \"internalType\": \"uint256\"\n }\n ],\n \"stateMutability\": \"view\"\n }\n]\n","[\n {\n \"type\": \"function\",\n \"name\": \"activateMarketGroup\",\n \"inputs\": [\n {\n \"name\": \"groupId\",\n \"type\": \"uint256\",\n \"internalType\": \"uint256\"\n }\n ],\n \"outputs\": [],\n \"stateMutability\": \"nonpayable\"\n },\n {\n \"type\": \"function\",\n \"name\": \"createMarketGroup\",\n \"inputs\": [\n {\n \"name\": \"venueId\",\n \"type\": \"uint256\",\n \"internalType\": \"uint256\"\n },\n {\n \"name\": \"question\",\n \"type\": \"string\",\n \"internalType\": \"string\"\n },\n {\n \"name\": \"description\",\n \"type\": \"string\",\n \"internalType\": \"string\"\n },\n {\n \"name\": \"collateralToken\",\n \"type\": \"address\",\n \"internalType\": \"address\"\n },\n {\n \"name\": \"tickSize\",\n \"type\": \"uint256\",\n \"internalType\": \"uint256\"\n },\n {\n \"name\": \"additionalReward\",\n \"type\": \"uint256\",\n \"internalType\": \"uint256\"\n },\n {\n \"name\": \"liveness\",\n \"type\": \"uint64\",\n \"internalType\": \"uint64\"\n },\n {\n \"name\": \"tags\",\n \"type\": \"bytes32[]\",\n \"internalType\": \"bytes32[]\"\n }\n ],\n \"outputs\": [\n {\n \"name\": \"groupId\",\n \"type\": \"uint256\",\n \"internalType\": \"uint256\"\n }\n ],\n \"stateMutability\": \"nonpayable\"\n },\n {\n \"type\": \"function\",\n \"name\": \"getGroupMarketIds\",\n \"inputs\": [\n {\n \"name\": \"groupId\",\n \"type\": \"uint256\",\n \"internalType\": \"uint256\"\n }\n ],\n \"outputs\": [\n {\n \"name\": \"\",\n \"type\": \"uint256[]\",\n \"internalType\": \"uint256[]\"\n }\n ],\n \"stateMutability\": \"view\"\n },\n {\n \"type\": \"function\",\n \"name\": \"getMarketGroup\",\n \"inputs\": [\n {\n \"name\": \"groupId\",\n \"type\": \"uint256\",\n \"internalType\": \"uint256\"\n }\n ],\n \"outputs\": [\n {\n \"name\": \"\",\n \"type\": \"tuple\",\n \"internalType\": \"struct MarketGroupData\",\n \"components\": [\n {\n \"name\": \"groupId\",\n \"type\": \"uint256\",\n \"internalType\": \"uint256\"\n },\n {\n \"name\": \"marketIds\",\n \"type\": \"uint256[]\",\n \"internalType\": \"uint256[]\"\n },\n {\n \"name\": \"totalMarkets\",\n \"type\": \"uint256\",\n \"internalType\": \"uint256\"\n },\n {\n \"name\": \"question\",\n \"type\": \"string\",\n \"internalType\": \"string\"\n },\n {\n \"name\": \"description\",\n \"type\": \"string\",\n \"internalType\": \"string\"\n },\n {\n \"name\": \"status\",\n \"type\": \"uint8\",\n \"internalType\": \"enum MarketStatus\"\n },\n {\n \"name\": \"createdAt\",\n \"type\": \"uint256\",\n \"internalType\": \"uint256\"\n },\n {\n \"name\": \"resolvedMarketId\",\n \"type\": \"uint256\",\n \"internalType\": \"uint256\"\n },\n {\n \"name\": \"creator\",\n \"type\": \"address\",\n \"internalType\": \"address\"\n },\n {\n \"name\": \"venueId\",\n \"type\": \"uint256\",\n \"internalType\": \"uint256\"\n },\n {\n \"name\": \"collateralToken\",\n \"type\": \"address\",\n \"internalType\": \"contract IERC20\"\n },\n {\n \"name\": \"tickSize\",\n \"type\": \"uint256\",\n \"internalType\": \"uint256\"\n },\n {\n \"name\": \"additionalReward\",\n \"type\": \"uint256\",\n \"internalType\": \"uint256\"\n },\n {\n \"name\": \"liveness\",\n \"type\": \"uint64\",\n \"internalType\": \"uint64\"\n },\n {\n \"name\": \"reward\",\n \"type\": \"uint256\",\n \"internalType\": \"uint256\"\n }\n ]\n }\n ],\n \"stateMutability\": \"view\"\n },\n {\n \"type\": \"function\",\n \"name\": \"getMarketGroupItem\",\n \"inputs\": [\n {\n \"name\": \"marketId\",\n \"type\": \"uint256\",\n \"internalType\": \"uint256\"\n }\n ],\n \"outputs\": [\n {\n \"name\": \"\",\n \"type\": \"tuple\",\n \"internalType\": \"struct MarketGroupItem\",\n \"components\": [\n {\n \"name\": \"isPlaceholder\",\n \"type\": \"bool\",\n \"internalType\": \"bool\"\n },\n {\n \"name\": \"marketName\",\n \"type\": \"string\",\n \"internalType\": \"string\"\n }\n ]\n }\n ],\n \"stateMutability\": \"view\"\n },\n {\n \"type\": \"function\",\n \"name\": \"getNextGroupId\",\n \"inputs\": [],\n \"outputs\": [\n {\n \"name\": \"\",\n \"type\": \"uint256\",\n \"internalType\": \"uint256\"\n }\n ],\n \"stateMutability\": \"view\"\n },\n {\n \"type\": \"event\",\n \"name\": \"MarketCreationFeeCollected\",\n \"inputs\": [\n {\n \"name\": \"venueId\",\n \"type\": \"uint256\",\n \"indexed\": true,\n \"internalType\": \"uint256\"\n },\n {\n \"name\": \"payer\",\n \"type\": \"address\",\n \"indexed\": true,\n \"internalType\": \"address\"\n },\n {\n \"name\": \"protocolShare\",\n \"type\": \"uint256\",\n \"indexed\": false,\n \"internalType\": \"uint256\"\n },\n {\n \"name\": \"venueShare\",\n \"type\": \"uint256\",\n \"indexed\": false,\n \"internalType\": \"uint256\"\n }\n ],\n \"anonymous\": false\n },\n {\n \"type\": \"event\",\n \"name\": \"MarketGroupActivated\",\n \"inputs\": [\n {\n \"name\": \"groupId\",\n \"type\": \"uint256\",\n \"indexed\": true,\n \"internalType\": \"uint256\"\n },\n {\n \"name\": \"marketCount\",\n \"type\": \"uint256\",\n \"indexed\": false,\n \"internalType\": \"uint256\"\n },\n {\n \"name\": \"timestamp\",\n \"type\": \"uint256\",\n \"indexed\": false,\n \"internalType\": \"uint256\"\n }\n ],\n \"anonymous\": false\n },\n {\n \"type\": \"event\",\n \"name\": \"MarketGroupCreated\",\n \"inputs\": [\n {\n \"name\": \"groupId\",\n \"type\": \"uint256\",\n \"indexed\": true,\n \"internalType\": \"uint256\"\n },\n {\n \"name\": \"venueId\",\n \"type\": \"uint256\",\n \"indexed\": true,\n \"internalType\": \"uint256\"\n },\n {\n \"name\": \"creator\",\n \"type\": \"address\",\n \"indexed\": true,\n \"internalType\": \"address\"\n },\n {\n \"name\": \"question\",\n \"type\": \"string\",\n \"indexed\": false,\n \"internalType\": \"string\"\n },\n {\n \"name\": \"timestamp\",\n \"type\": \"uint256\",\n \"indexed\": false,\n \"internalType\": \"uint256\"\n },\n {\n \"name\": \"tags\",\n \"type\": \"bytes32[]\",\n \"indexed\": false,\n \"internalType\": \"bytes32[]\"\n },\n {\n \"name\": \"reward\",\n \"type\": \"uint256\",\n \"indexed\": false,\n \"internalType\": \"uint256\"\n }\n ],\n \"anonymous\": false\n },\n {\n \"type\": \"error\",\n \"name\": \"CollateralNotWhitelisted\",\n \"inputs\": []\n },\n {\n \"type\": \"error\",\n \"name\": \"CreationAccessDenied\",\n \"inputs\": []\n },\n {\n \"type\": \"error\",\n \"name\": \"GroupNotDraft\",\n \"inputs\": []\n },\n {\n \"type\": \"error\",\n \"name\": \"InsufficientMarkets\",\n \"inputs\": []\n },\n {\n \"type\": \"error\",\n \"name\": \"InvalidQuestion\",\n \"inputs\": []\n },\n {\n \"type\": \"error\",\n \"name\": \"InvalidTickSize\",\n \"inputs\": []\n },\n {\n \"type\": \"error\",\n \"name\": \"MarketGroupNotFound\",\n \"inputs\": []\n },\n {\n \"type\": \"error\",\n \"name\": \"NotGroupCreator\",\n \"inputs\": []\n },\n {\n \"type\": \"error\",\n \"name\": \"ProtocolPaused\",\n \"inputs\": []\n },\n {\n \"type\": \"error\",\n \"name\": \"TooManyTags\",\n \"inputs\": []\n },\n {\n \"type\": \"error\",\n \"name\": \"TransferFromFailed\",\n \"inputs\": []\n },\n {\n \"type\": \"error\",\n \"name\": \"VenueInactive\",\n \"inputs\": []\n },\n {\n \"type\": \"error\",\n \"name\": \"VenueNotFound\",\n \"inputs\": []\n },\n {\n \"type\": \"error\",\n \"name\": \"VenueSuspended\",\n \"inputs\": []\n }\n]\n","[\n {\n \"type\": \"function\",\n \"name\": \"placeMarketOrder\",\n \"inputs\": [\n {\n \"name\": \"marketId\",\n \"type\": \"uint256\",\n \"internalType\": \"uint256\"\n },\n {\n \"name\": \"outcomeId\",\n \"type\": \"uint256\",\n \"internalType\": \"uint256\"\n },\n {\n \"name\": \"collateralAmount\",\n \"type\": \"uint256\",\n \"internalType\": \"uint256\"\n },\n {\n \"name\": \"maxPriceTick\",\n \"type\": \"uint256\",\n \"internalType\": \"uint256\"\n },\n {\n \"name\": \"orderType\",\n \"type\": \"uint8\",\n \"internalType\": \"enum MarketOrderType\"\n }\n ],\n \"outputs\": [\n {\n \"name\": \"result\",\n \"type\": \"tuple\",\n \"internalType\": \"struct MarketBuyResult\",\n \"components\": [\n {\n \"name\": \"tokensReceived\",\n \"type\": \"uint256\",\n \"internalType\": \"uint256\"\n },\n {\n \"name\": \"avgPrice\",\n \"type\": \"uint256\",\n \"internalType\": \"uint256\"\n },\n {\n \"name\": \"collateralSpent\",\n \"type\": \"uint256\",\n \"internalType\": \"uint256\"\n },\n {\n \"name\": \"unusedCollateral\",\n \"type\": \"uint256\",\n \"internalType\": \"uint256\"\n }\n ]\n }\n ],\n \"stateMutability\": \"nonpayable\"\n },\n {\n \"type\": \"function\",\n \"name\": \"placeMarketSell\",\n \"inputs\": [\n {\n \"name\": \"marketId\",\n \"type\": \"uint256\",\n \"internalType\": \"uint256\"\n },\n {\n \"name\": \"outcomeId\",\n \"type\": \"uint256\",\n \"internalType\": \"uint256\"\n },\n {\n \"name\": \"tokenAmount\",\n \"type\": \"uint256\",\n \"internalType\": \"uint256\"\n },\n {\n \"name\": \"minPriceTick\",\n \"type\": \"uint256\",\n \"internalType\": \"uint256\"\n },\n {\n \"name\": \"orderType\",\n \"type\": \"uint8\",\n \"internalType\": \"enum MarketOrderType\"\n }\n ],\n \"outputs\": [\n {\n \"name\": \"result\",\n \"type\": \"tuple\",\n \"internalType\": \"struct MarketSellResult\",\n \"components\": [\n {\n \"name\": \"tokensSold\",\n \"type\": \"uint256\",\n \"internalType\": \"uint256\"\n },\n {\n \"name\": \"avgPrice\",\n \"type\": \"uint256\",\n \"internalType\": \"uint256\"\n },\n {\n \"name\": \"collateralReceived\",\n \"type\": \"uint256\",\n \"internalType\": \"uint256\"\n },\n {\n \"name\": \"unsoldTokens\",\n \"type\": \"uint256\",\n \"internalType\": \"uint256\"\n }\n ]\n }\n ],\n \"stateMutability\": \"nonpayable\"\n },\n {\n \"type\": \"event\",\n \"name\": \"FeesDistributed\",\n \"inputs\": [\n {\n \"name\": \"marketId\",\n \"type\": \"uint256\",\n \"indexed\": true,\n \"internalType\": \"uint256\"\n },\n {\n \"name\": \"fillId\",\n \"type\": \"uint256\",\n \"indexed\": true,\n \"internalType\": \"uint256\"\n },\n {\n \"name\": \"protocolFee\",\n \"type\": \"uint256\",\n \"indexed\": false,\n \"internalType\": \"uint256\"\n },\n {\n \"name\": \"venueNetFee\",\n \"type\": \"uint256\",\n \"indexed\": false,\n \"internalType\": \"uint256\"\n },\n {\n \"name\": \"creatorFee\",\n \"type\": \"uint256\",\n \"indexed\": false,\n \"internalType\": \"uint256\"\n },\n {\n \"name\": \"operatorFee\",\n \"type\": \"uint256\",\n \"indexed\": false,\n \"internalType\": \"uint256\"\n },\n {\n \"name\": \"totalFee\",\n \"type\": \"uint256\",\n \"indexed\": false,\n \"internalType\": \"uint256\"\n }\n ],\n \"anonymous\": false\n },\n {\n \"type\": \"event\",\n \"name\": \"MarketOrderExecuted\",\n \"inputs\": [\n {\n \"name\": \"buyer\",\n \"type\": \"address\",\n \"indexed\": true,\n \"internalType\": \"address\"\n },\n {\n \"name\": \"marketId\",\n \"type\": \"uint256\",\n \"indexed\": true,\n \"internalType\": \"uint256\"\n },\n {\n \"name\": \"outcomeId\",\n \"type\": \"uint256\",\n \"indexed\": false,\n \"internalType\": \"uint256\"\n },\n {\n \"name\": \"collateralSpent\",\n \"type\": \"uint256\",\n \"indexed\": false,\n \"internalType\": \"uint256\"\n },\n {\n \"name\": \"tokensReceived\",\n \"type\": \"uint256\",\n \"indexed\": false,\n \"internalType\": \"uint256\"\n },\n {\n \"name\": \"avgPrice\",\n \"type\": \"uint256\",\n \"indexed\": false,\n \"internalType\": \"uint256\"\n },\n {\n \"name\": \"unusedCollateral\",\n \"type\": \"uint256\",\n \"indexed\": false,\n \"internalType\": \"uint256\"\n }\n ],\n \"anonymous\": false\n },\n {\n \"type\": \"event\",\n \"name\": \"MarketSellExecuted\",\n \"inputs\": [\n {\n \"name\": \"seller\",\n \"type\": \"address\",\n \"indexed\": true,\n \"internalType\": \"address\"\n },\n {\n \"name\": \"marketId\",\n \"type\": \"uint256\",\n \"indexed\": true,\n \"internalType\": \"uint256\"\n },\n {\n \"name\": \"outcomeId\",\n \"type\": \"uint256\",\n \"indexed\": false,\n \"internalType\": \"uint256\"\n },\n {\n \"name\": \"tokensSold\",\n \"type\": \"uint256\",\n \"indexed\": false,\n \"internalType\": \"uint256\"\n },\n {\n \"name\": \"collateralReceived\",\n \"type\": \"uint256\",\n \"indexed\": false,\n \"internalType\": \"uint256\"\n },\n {\n \"name\": \"avgPrice\",\n \"type\": \"uint256\",\n \"indexed\": false,\n \"internalType\": \"uint256\"\n },\n {\n \"name\": \"unsoldTokens\",\n \"type\": \"uint256\",\n \"indexed\": false,\n \"internalType\": \"uint256\"\n }\n ],\n \"anonymous\": false\n },\n {\n \"type\": \"event\",\n \"name\": \"OrderDeleted\",\n \"inputs\": [\n {\n \"name\": \"orderId\",\n \"type\": \"uint256\",\n \"indexed\": true,\n \"internalType\": \"uint256\"\n }\n ],\n \"anonymous\": false\n },\n {\n \"type\": \"event\",\n \"name\": \"OrderExpired\",\n \"inputs\": [\n {\n \"name\": \"orderId\",\n \"type\": \"uint256\",\n \"indexed\": true,\n \"internalType\": \"uint256\"\n },\n {\n \"name\": \"owner\",\n \"type\": \"address\",\n \"indexed\": true,\n \"internalType\": \"address\"\n },\n {\n \"name\": \"qty\",\n \"type\": \"uint256\",\n \"indexed\": false,\n \"internalType\": \"uint256\"\n }\n ],\n \"anonymous\": false\n },\n {\n \"type\": \"event\",\n \"name\": \"TopOfBookChanged\",\n \"inputs\": [\n {\n \"name\": \"marketId\",\n \"type\": \"uint256\",\n \"indexed\": true,\n \"internalType\": \"uint256\"\n },\n {\n \"name\": \"outcomeId\",\n \"type\": \"uint256\",\n \"indexed\": true,\n \"internalType\": \"uint256\"\n },\n {\n \"name\": \"side\",\n \"type\": \"uint8\",\n \"indexed\": false,\n \"internalType\": \"enum Side\"\n },\n {\n \"name\": \"bestTick\",\n \"type\": \"uint256\",\n \"indexed\": false,\n \"internalType\": \"uint256\"\n }\n ],\n \"anonymous\": false\n },\n {\n \"type\": \"error\",\n \"name\": \"InsufficientLiquidityForFOK\",\n \"inputs\": []\n },\n {\n \"type\": \"error\",\n \"name\": \"InvalidMaxPrice\",\n \"inputs\": []\n },\n {\n \"type\": \"error\",\n \"name\": \"InvalidMinPrice\",\n \"inputs\": []\n },\n {\n \"type\": \"error\",\n \"name\": \"InvalidOutcome\",\n \"inputs\": []\n },\n {\n \"type\": \"error\",\n \"name\": \"MakerErc165CallFailed\",\n \"inputs\": []\n },\n {\n \"type\": \"error\",\n \"name\": \"MakerNotErc1155Receiver\",\n \"inputs\": []\n },\n {\n \"type\": \"error\",\n \"name\": \"MarketNotActive\",\n \"inputs\": []\n },\n {\n \"type\": \"error\",\n \"name\": \"MarketPaused\",\n \"inputs\": []\n },\n {\n \"type\": \"error\",\n \"name\": \"NoLiquidityAvailable\",\n \"inputs\": []\n },\n {\n \"type\": \"error\",\n \"name\": \"ProtocolPaused\",\n \"inputs\": []\n },\n {\n \"type\": \"error\",\n \"name\": \"TradingAccessDenied\",\n \"inputs\": []\n },\n {\n \"type\": \"error\",\n \"name\": \"TransferFailed\",\n \"inputs\": []\n },\n {\n \"type\": \"error\",\n \"name\": \"TransferFromFailed\",\n \"inputs\": []\n },\n {\n \"type\": \"error\",\n \"name\": \"VenueInactive\",\n \"inputs\": []\n },\n {\n \"type\": \"error\",\n \"name\": \"VenueNotFound\",\n \"inputs\": []\n },\n {\n \"type\": \"error\",\n \"name\": \"VenueSuspended\",\n \"inputs\": []\n },\n {\n \"type\": \"error\",\n \"name\": \"ZeroCollateralAmount\",\n \"inputs\": []\n },\n {\n \"type\": \"error\",\n \"name\": \"ZeroTokenAmount\",\n \"inputs\": []\n }\n]\n","[\n {\n \"type\": \"function\",\n \"name\": \"assertMarketOutcome\",\n \"inputs\": [\n {\n \"name\": \"questionId\",\n \"type\": \"bytes32\",\n \"internalType\": \"bytes32\"\n },\n {\n \"name\": \"outcome\",\n \"type\": \"string\",\n \"internalType\": \"string\"\n }\n ],\n \"outputs\": [\n {\n \"name\": \"assertionId\",\n \"type\": \"bytes32\",\n \"internalType\": \"bytes32\"\n }\n ],\n \"stateMutability\": \"nonpayable\"\n },\n {\n \"type\": \"function\",\n \"name\": \"assertionDisputedCallback\",\n \"inputs\": [\n {\n \"name\": \"assertionId\",\n \"type\": \"bytes32\",\n \"internalType\": \"bytes32\"\n }\n ],\n \"outputs\": [],\n \"stateMutability\": \"nonpayable\"\n },\n {\n \"type\": \"function\",\n \"name\": \"assertionResolvedCallback\",\n \"inputs\": [\n {\n \"name\": \"assertionId\",\n \"type\": \"bytes32\",\n \"internalType\": \"bytes32\"\n },\n {\n \"name\": \"assertedTruthfully\",\n \"type\": \"bool\",\n \"internalType\": \"bool\"\n }\n ],\n \"outputs\": [],\n \"stateMutability\": \"nonpayable\"\n },\n {\n \"type\": \"function\",\n \"name\": \"getAssertionData\",\n \"inputs\": [\n {\n \"name\": \"assertionId\",\n \"type\": \"bytes32\",\n \"internalType\": \"bytes32\"\n }\n ],\n \"outputs\": [\n {\n \"name\": \"\",\n \"type\": \"tuple\",\n \"internalType\": \"struct AssertionData\",\n \"components\": [\n {\n \"name\": \"assertionId\",\n \"type\": \"bytes32\",\n \"internalType\": \"bytes32\"\n },\n {\n \"name\": \"questionId\",\n \"type\": \"bytes32\",\n \"internalType\": \"bytes32\"\n },\n {\n \"name\": \"outcome\",\n \"type\": \"string\",\n \"internalType\": \"string\"\n },\n {\n \"name\": \"settled\",\n \"type\": \"bool\",\n \"internalType\": \"bool\"\n },\n {\n \"name\": \"asserter\",\n \"type\": \"address\",\n \"internalType\": \"address\"\n }\n ]\n }\n ],\n \"stateMutability\": \"view\"\n },\n {\n \"type\": \"function\",\n \"name\": \"reportResolution\",\n \"inputs\": [\n {\n \"name\": \"marketId\",\n \"type\": \"uint256\",\n \"internalType\": \"uint256\"\n },\n {\n \"name\": \"outcome\",\n \"type\": \"string\",\n \"internalType\": \"string\"\n }\n ],\n \"outputs\": [],\n \"stateMutability\": \"nonpayable\"\n },\n {\n \"type\": \"function\",\n \"name\": \"settleAssertion\",\n \"inputs\": [\n {\n \"name\": \"assertionId\",\n \"type\": \"bytes32\",\n \"internalType\": \"bytes32\"\n }\n ],\n \"outputs\": [],\n \"stateMutability\": \"nonpayable\"\n },\n {\n \"type\": \"event\",\n \"name\": \"AssertionCreated\",\n \"inputs\": [\n {\n \"name\": \"assertionId\",\n \"type\": \"bytes32\",\n \"indexed\": true,\n \"internalType\": \"bytes32\"\n },\n {\n \"name\": \"questionId\",\n \"type\": \"bytes32\",\n \"indexed\": true,\n \"internalType\": \"bytes32\"\n },\n {\n \"name\": \"outcome\",\n \"type\": \"string\",\n \"indexed\": false,\n \"internalType\": \"string\"\n },\n {\n \"name\": \"asserter\",\n \"type\": \"address\",\n \"indexed\": false,\n \"internalType\": \"address\"\n }\n ],\n \"anonymous\": false\n },\n {\n \"type\": \"event\",\n \"name\": \"AssertionDisputed\",\n \"inputs\": [\n {\n \"name\": \"assertionId\",\n \"type\": \"bytes32\",\n \"indexed\": true,\n \"internalType\": \"bytes32\"\n }\n ],\n \"anonymous\": false\n },\n {\n \"type\": \"event\",\n \"name\": \"AssertionSettled\",\n \"inputs\": [\n {\n \"name\": \"assertionId\",\n \"type\": \"bytes32\",\n \"indexed\": true,\n \"internalType\": \"bytes32\"\n },\n {\n \"name\": \"result\",\n \"type\": \"bool\",\n \"indexed\": false,\n \"internalType\": \"bool\"\n }\n ],\n \"anonymous\": false\n },\n {\n \"type\": \"event\",\n \"name\": \"MarketGroupResolved\",\n \"inputs\": [\n {\n \"name\": \"groupId\",\n \"type\": \"uint256\",\n \"indexed\": true,\n \"internalType\": \"uint256\"\n },\n {\n \"name\": \"winningMarketId\",\n \"type\": \"uint256\",\n \"indexed\": true,\n \"internalType\": \"uint256\"\n }\n ],\n \"anonymous\": false\n },\n {\n \"type\": \"event\",\n \"name\": \"MarketGroupResolved\",\n \"inputs\": [\n {\n \"name\": \"groupId\",\n \"type\": \"uint256\",\n \"indexed\": true,\n \"internalType\": \"uint256\"\n },\n {\n \"name\": \"winningMarketId\",\n \"type\": \"uint256\",\n \"indexed\": true,\n \"internalType\": \"uint256\"\n }\n ],\n \"anonymous\": false\n },\n {\n \"type\": \"event\",\n \"name\": \"MarketResolved\",\n \"inputs\": [\n {\n \"name\": \"marketId\",\n \"type\": \"uint256\",\n \"indexed\": true,\n \"internalType\": \"uint256\"\n },\n {\n \"name\": \"questionId\",\n \"type\": \"bytes32\",\n \"indexed\": true,\n \"internalType\": \"bytes32\"\n },\n {\n \"name\": \"outcome\",\n \"type\": \"string\",\n \"indexed\": false,\n \"internalType\": \"string\"\n }\n ],\n \"anonymous\": false\n },\n {\n \"type\": \"event\",\n \"name\": \"MarketResolved\",\n \"inputs\": [\n {\n \"name\": \"marketId\",\n \"type\": \"uint256\",\n \"indexed\": true,\n \"internalType\": \"uint256\"\n },\n {\n \"name\": \"questionId\",\n \"type\": \"bytes32\",\n \"indexed\": true,\n \"internalType\": \"bytes32\"\n },\n {\n \"name\": \"outcome\",\n \"type\": \"string\",\n \"indexed\": false,\n \"internalType\": \"string\"\n }\n ],\n \"anonymous\": false\n },\n {\n \"type\": \"event\",\n \"name\": \"RewardPaid\",\n \"inputs\": [\n {\n \"name\": \"assertionId\",\n \"type\": \"bytes32\",\n \"indexed\": true,\n \"internalType\": \"bytes32\"\n },\n {\n \"name\": \"asserter\",\n \"type\": \"address\",\n \"indexed\": true,\n \"internalType\": \"address\"\n },\n {\n \"name\": \"reward\",\n \"type\": \"uint256\",\n \"indexed\": false,\n \"internalType\": \"uint256\"\n }\n ],\n \"anonymous\": false\n },\n {\n \"type\": \"error\",\n \"name\": \"ApproveFailed\",\n \"inputs\": []\n },\n {\n \"type\": \"error\",\n \"name\": \"AssertionActiveOrResolved\",\n \"inputs\": []\n },\n {\n \"type\": \"error\",\n \"name\": \"AssertionNotFound\",\n \"inputs\": []\n },\n {\n \"type\": \"error\",\n \"name\": \"AssertionNotSettled\",\n \"inputs\": []\n },\n {\n \"type\": \"error\",\n \"name\": \"MarketNotActive\",\n \"inputs\": []\n },\n {\n \"type\": \"error\",\n \"name\": \"MarketNotFound\",\n \"inputs\": []\n },\n {\n \"type\": \"error\",\n \"name\": \"OnlyUmaOracle\",\n \"inputs\": []\n },\n {\n \"type\": \"error\",\n \"name\": \"OracleNotInitialized\",\n \"inputs\": []\n },\n {\n \"type\": \"error\",\n \"name\": \"OracleNotInitialized\",\n \"inputs\": []\n },\n {\n \"type\": \"error\",\n \"name\": \"OutcomeMismatch\",\n \"inputs\": []\n },\n {\n \"type\": \"error\",\n \"name\": \"TransferFailed\",\n \"inputs\": []\n },\n {\n \"type\": \"error\",\n \"name\": \"TransferFromFailed\",\n \"inputs\": []\n },\n {\n \"type\": \"error\",\n \"name\": \"UmaIdentifierNotSet\",\n \"inputs\": []\n },\n {\n \"type\": \"error\",\n \"name\": \"UmaOracleNotSet\",\n \"inputs\": []\n }\n]\n","[\n {\n \"type\": \"function\",\n \"name\": \"getCtfAddress\",\n \"inputs\": [],\n \"outputs\": [\n {\n \"name\": \"\",\n \"type\": \"address\",\n \"internalType\": \"address\"\n }\n ],\n \"stateMutability\": \"view\"\n },\n {\n \"type\": \"function\",\n \"name\": \"getVault\",\n \"inputs\": [],\n \"outputs\": [\n {\n \"name\": \"\",\n \"type\": \"address\",\n \"internalType\": \"address\"\n }\n ],\n \"stateMutability\": \"view\"\n },\n {\n \"type\": \"function\",\n \"name\": \"mergePositions\",\n \"inputs\": [\n {\n \"name\": \"marketId\",\n \"type\": \"uint256\",\n \"internalType\": \"uint256\"\n },\n {\n \"name\": \"amount\",\n \"type\": \"uint256\",\n \"internalType\": \"uint256\"\n }\n ],\n \"outputs\": [],\n \"stateMutability\": \"nonpayable\"\n },\n {\n \"type\": \"function\",\n \"name\": \"setCtf\",\n \"inputs\": [\n {\n \"name\": \"ctf\",\n \"type\": \"address\",\n \"internalType\": \"address\"\n }\n ],\n \"outputs\": [],\n \"stateMutability\": \"nonpayable\"\n },\n {\n \"type\": \"function\",\n \"name\": \"splitPosition\",\n \"inputs\": [\n {\n \"name\": \"marketId\",\n \"type\": \"uint256\",\n \"internalType\": \"uint256\"\n },\n {\n \"name\": \"amount\",\n \"type\": \"uint256\",\n \"internalType\": \"uint256\"\n }\n ],\n \"outputs\": [],\n \"stateMutability\": \"nonpayable\"\n },\n {\n \"type\": \"event\",\n \"name\": \"CtfUpdated\",\n \"inputs\": [\n {\n \"name\": \"ctf\",\n \"type\": \"address\",\n \"indexed\": true,\n \"internalType\": \"address\"\n }\n ],\n \"anonymous\": false\n },\n {\n \"type\": \"event\",\n \"name\": \"PositionSplit\",\n \"inputs\": [\n {\n \"name\": \"trader\",\n \"type\": \"address\",\n \"indexed\": true,\n \"internalType\": \"address\"\n },\n {\n \"name\": \"marketId\",\n \"type\": \"uint256\",\n \"indexed\": true,\n \"internalType\": \"uint256\"\n },\n {\n \"name\": \"amount\",\n \"type\": \"uint256\",\n \"indexed\": false,\n \"internalType\": \"uint256\"\n }\n ],\n \"anonymous\": false\n },\n {\n \"type\": \"event\",\n \"name\": \"PositionsMerged\",\n \"inputs\": [\n {\n \"name\": \"trader\",\n \"type\": \"address\",\n \"indexed\": true,\n \"internalType\": \"address\"\n },\n {\n \"name\": \"marketId\",\n \"type\": \"uint256\",\n \"indexed\": true,\n \"internalType\": \"uint256\"\n },\n {\n \"name\": \"amount\",\n \"type\": \"uint256\",\n \"indexed\": false,\n \"internalType\": \"uint256\"\n }\n ],\n \"anonymous\": false\n },\n {\n \"type\": \"error\",\n \"name\": \"ApproveFailed\",\n \"inputs\": []\n },\n {\n \"type\": \"error\",\n \"name\": \"MarketNotActive\",\n \"inputs\": []\n },\n {\n \"type\": \"error\",\n \"name\": \"MarketNotFound\",\n \"inputs\": []\n },\n {\n \"type\": \"error\",\n \"name\": \"MarketPaused\",\n \"inputs\": []\n },\n {\n \"type\": \"error\",\n \"name\": \"NotContractOwner\",\n \"inputs\": [\n {\n \"name\": \"_user\",\n \"type\": \"address\",\n \"internalType\": \"address\"\n },\n {\n \"name\": \"_contractOwner\",\n \"type\": \"address\",\n \"internalType\": \"address\"\n }\n ]\n },\n {\n \"type\": \"error\",\n \"name\": \"ProtocolPaused\",\n \"inputs\": []\n },\n {\n \"type\": \"error\",\n \"name\": \"TransferFailed\",\n \"inputs\": []\n },\n {\n \"type\": \"error\",\n \"name\": \"TransferFromFailed\",\n \"inputs\": []\n },\n {\n \"type\": \"error\",\n \"name\": \"VenueInactive\",\n \"inputs\": []\n },\n {\n \"type\": \"error\",\n \"name\": \"VenueNotFound\",\n \"inputs\": []\n },\n {\n \"type\": \"error\",\n \"name\": \"VenueSuspended\",\n \"inputs\": []\n }\n]\n","[\n {\n \"type\": \"function\",\n \"name\": \"convertPositions\",\n \"inputs\": [\n {\n \"name\": \"conditionIds\",\n \"type\": \"bytes32[]\",\n \"internalType\": \"bytes32[]\"\n },\n {\n \"name\": \"collateralToken\",\n \"type\": \"address\",\n \"internalType\": \"address\"\n },\n {\n \"name\": \"indexSet\",\n \"type\": \"uint256\",\n \"internalType\": \"uint256\"\n },\n {\n \"name\": \"amount\",\n \"type\": \"uint256\",\n \"internalType\": \"uint256\"\n }\n ],\n \"outputs\": [],\n \"stateMutability\": \"nonpayable\"\n },\n {\n \"type\": \"function\",\n \"name\": \"getConversionPositionIds\",\n \"inputs\": [\n {\n \"name\": \"conditionIds\",\n \"type\": \"bytes32[]\",\n \"internalType\": \"bytes32[]\"\n },\n {\n \"name\": \"collateralToken\",\n \"type\": \"address\",\n \"internalType\": \"address\"\n },\n {\n \"name\": \"indexSet\",\n \"type\": \"uint256\",\n \"internalType\": \"uint256\"\n }\n ],\n \"outputs\": [\n {\n \"name\": \"noPositionIds\",\n \"type\": \"uint256[]\",\n \"internalType\": \"uint256[]\"\n },\n {\n \"name\": \"yesPositionIds\",\n \"type\": \"uint256[]\",\n \"internalType\": \"uint256[]\"\n }\n ],\n \"stateMutability\": \"view\"\n },\n {\n \"type\": \"error\",\n \"name\": \"ApproveFailed\",\n \"inputs\": []\n },\n {\n \"type\": \"error\",\n \"name\": \"DuplicateConditionId\",\n \"inputs\": [\n {\n \"name\": \"conditionId\",\n \"type\": \"bytes32\",\n \"internalType\": \"bytes32\"\n }\n ]\n },\n {\n \"type\": \"error\",\n \"name\": \"InvalidIndexSet\",\n \"inputs\": []\n },\n {\n \"type\": \"error\",\n \"name\": \"UnregisteredConditionId\",\n \"inputs\": [\n {\n \"name\": \"conditionId\",\n \"type\": \"bytes32\",\n \"internalType\": \"bytes32\"\n }\n ]\n }\n]\n","[\n {\n \"type\": \"function\",\n \"name\": \"getProtocolFeeBps\",\n \"inputs\": [],\n \"outputs\": [\n {\n \"name\": \"\",\n \"type\": \"uint256\",\n \"internalType\": \"uint256\"\n }\n ],\n \"stateMutability\": \"view\"\n },\n {\n \"type\": \"function\",\n \"name\": \"getProtocolPaused\",\n \"inputs\": [],\n \"outputs\": [\n {\n \"name\": \"\",\n \"type\": \"bool\",\n \"internalType\": \"bool\"\n }\n ],\n \"stateMutability\": \"view\"\n },\n {\n \"type\": \"function\",\n \"name\": \"getProtocolTreasury\",\n \"inputs\": [],\n \"outputs\": [\n {\n \"name\": \"\",\n \"type\": \"address\",\n \"internalType\": \"address\"\n }\n ],\n \"stateMutability\": \"view\"\n },\n {\n \"type\": \"function\",\n \"name\": \"getUmaIdentifier\",\n \"inputs\": [],\n \"outputs\": [\n {\n \"name\": \"\",\n \"type\": \"bytes32\",\n \"internalType\": \"bytes32\"\n }\n ],\n \"stateMutability\": \"view\"\n },\n {\n \"type\": \"function\",\n \"name\": \"getUmaOracle\",\n \"inputs\": [],\n \"outputs\": [\n {\n \"name\": \"\",\n \"type\": \"address\",\n \"internalType\": \"address\"\n }\n ],\n \"stateMutability\": \"view\"\n },\n {\n \"type\": \"function\",\n \"name\": \"getVenueSuspended\",\n \"inputs\": [\n {\n \"name\": \"venueId\",\n \"type\": \"uint256\",\n \"internalType\": \"uint256\"\n }\n ],\n \"outputs\": [\n {\n \"name\": \"\",\n \"type\": \"bool\",\n \"internalType\": \"bool\"\n }\n ],\n \"stateMutability\": \"view\"\n },\n {\n \"type\": \"function\",\n \"name\": \"isCollateralWhitelisted\",\n \"inputs\": [\n {\n \"name\": \"token\",\n \"type\": \"address\",\n \"internalType\": \"address\"\n }\n ],\n \"outputs\": [\n {\n \"name\": \"\",\n \"type\": \"bool\",\n \"internalType\": \"bool\"\n }\n ],\n \"stateMutability\": \"view\"\n },\n {\n \"type\": \"function\",\n \"name\": \"pauseProtocol\",\n \"inputs\": [],\n \"outputs\": [],\n \"stateMutability\": \"nonpayable\"\n },\n {\n \"type\": \"function\",\n \"name\": \"setCollateralWhitelisted\",\n \"inputs\": [\n {\n \"name\": \"token\",\n \"type\": \"address\",\n \"internalType\": \"address\"\n },\n {\n \"name\": \"whitelisted\",\n \"type\": \"bool\",\n \"internalType\": \"bool\"\n }\n ],\n \"outputs\": [],\n \"stateMutability\": \"nonpayable\"\n },\n {\n \"type\": \"function\",\n \"name\": \"setProtocolFeeBps\",\n \"inputs\": [\n {\n \"name\": \"bps\",\n \"type\": \"uint256\",\n \"internalType\": \"uint256\"\n }\n ],\n \"outputs\": [],\n \"stateMutability\": \"nonpayable\"\n },\n {\n \"type\": \"function\",\n \"name\": \"setProtocolTreasury\",\n \"inputs\": [\n {\n \"name\": \"treasury\",\n \"type\": \"address\",\n \"internalType\": \"address\"\n }\n ],\n \"outputs\": [],\n \"stateMutability\": \"nonpayable\"\n },\n {\n \"type\": \"function\",\n \"name\": \"setUmaIdentifier\",\n \"inputs\": [\n {\n \"name\": \"identifier\",\n \"type\": \"bytes32\",\n \"internalType\": \"bytes32\"\n }\n ],\n \"outputs\": [],\n \"stateMutability\": \"nonpayable\"\n },\n {\n \"type\": \"function\",\n \"name\": \"setUmaOracle\",\n \"inputs\": [\n {\n \"name\": \"oracle\",\n \"type\": \"address\",\n \"internalType\": \"address\"\n }\n ],\n \"outputs\": [],\n \"stateMutability\": \"nonpayable\"\n },\n {\n \"type\": \"function\",\n \"name\": \"suspendVenue\",\n \"inputs\": [\n {\n \"name\": \"venueId\",\n \"type\": \"uint256\",\n \"internalType\": \"uint256\"\n }\n ],\n \"outputs\": [],\n \"stateMutability\": \"nonpayable\"\n },\n {\n \"type\": \"function\",\n \"name\": \"unpauseProtocol\",\n \"inputs\": [],\n \"outputs\": [],\n \"stateMutability\": \"nonpayable\"\n },\n {\n \"type\": \"function\",\n \"name\": \"unsuspendVenue\",\n \"inputs\": [\n {\n \"name\": \"venueId\",\n \"type\": \"uint256\",\n \"internalType\": \"uint256\"\n }\n ],\n \"outputs\": [],\n \"stateMutability\": \"nonpayable\"\n },\n {\n \"type\": \"function\",\n \"name\": \"withdrawERC20\",\n \"inputs\": [\n {\n \"name\": \"token\",\n \"type\": \"address\",\n \"internalType\": \"address\"\n },\n {\n \"name\": \"recipient\",\n \"type\": \"address\",\n \"internalType\": \"address\"\n },\n {\n \"name\": \"amount\",\n \"type\": \"uint256\",\n \"internalType\": \"uint256\"\n }\n ],\n \"outputs\": [],\n \"stateMutability\": \"nonpayable\"\n },\n {\n \"type\": \"function\",\n \"name\": \"withdrawETH\",\n \"inputs\": [\n {\n \"name\": \"recipient\",\n \"type\": \"address\",\n \"internalType\": \"address\"\n }\n ],\n \"outputs\": [],\n \"stateMutability\": \"nonpayable\"\n },\n {\n \"type\": \"event\",\n \"name\": \"CollateralWhitelistUpdated\",\n \"inputs\": [\n {\n \"name\": \"token\",\n \"type\": \"address\",\n \"indexed\": true,\n \"internalType\": \"address\"\n },\n {\n \"name\": \"whitelisted\",\n \"type\": \"bool\",\n \"indexed\": false,\n \"internalType\": \"bool\"\n }\n ],\n \"anonymous\": false\n },\n {\n \"type\": \"event\",\n \"name\": \"ERC20Withdrawn\",\n \"inputs\": [\n {\n \"name\": \"token\",\n \"type\": \"address\",\n \"indexed\": true,\n \"internalType\": \"address\"\n },\n {\n \"name\": \"recipient\",\n \"type\": \"address\",\n \"indexed\": true,\n \"internalType\": \"address\"\n },\n {\n \"name\": \"amount\",\n \"type\": \"uint256\",\n \"indexed\": false,\n \"internalType\": \"uint256\"\n }\n ],\n \"anonymous\": false\n },\n {\n \"type\": \"event\",\n \"name\": \"EthWithdrawn\",\n \"inputs\": [\n {\n \"name\": \"recipient\",\n \"type\": \"address\",\n \"indexed\": true,\n \"internalType\": \"address\"\n },\n {\n \"name\": \"amount\",\n \"type\": \"uint256\",\n \"indexed\": false,\n \"internalType\": \"uint256\"\n }\n ],\n \"anonymous\": false\n },\n {\n \"type\": \"event\",\n \"name\": \"ProtocolFeeBpsUpdated\",\n \"inputs\": [\n {\n \"name\": \"bps\",\n \"type\": \"uint256\",\n \"indexed\": false,\n \"internalType\": \"uint256\"\n }\n ],\n \"anonymous\": false\n },\n {\n \"type\": \"event\",\n \"name\": \"ProtocolPausedEvent\",\n \"inputs\": [\n {\n \"name\": \"caller\",\n \"type\": \"address\",\n \"indexed\": true,\n \"internalType\": \"address\"\n }\n ],\n \"anonymous\": false\n },\n {\n \"type\": \"event\",\n \"name\": \"ProtocolTreasuryUpdated\",\n \"inputs\": [\n {\n \"name\": \"treasury\",\n \"type\": \"address\",\n \"indexed\": true,\n \"internalType\": \"address\"\n }\n ],\n \"anonymous\": false\n },\n {\n \"type\": \"event\",\n \"name\": \"ProtocolUnpausedEvent\",\n \"inputs\": [\n {\n \"name\": \"caller\",\n \"type\": \"address\",\n \"indexed\": true,\n \"internalType\": \"address\"\n }\n ],\n \"anonymous\": false\n },\n {\n \"type\": \"event\",\n \"name\": \"UmaIdentifierUpdated\",\n \"inputs\": [\n {\n \"name\": \"identifier\",\n \"type\": \"bytes32\",\n \"indexed\": false,\n \"internalType\": \"bytes32\"\n }\n ],\n \"anonymous\": false\n },\n {\n \"type\": \"event\",\n \"name\": \"UmaOracleUpdated\",\n \"inputs\": [\n {\n \"name\": \"oracle\",\n \"type\": \"address\",\n \"indexed\": true,\n \"internalType\": \"address\"\n }\n ],\n \"anonymous\": false\n },\n {\n \"type\": \"event\",\n \"name\": \"VenueSuspendedEvent\",\n \"inputs\": [\n {\n \"name\": \"venueId\",\n \"type\": \"uint256\",\n \"indexed\": true,\n \"internalType\": \"uint256\"\n },\n {\n \"name\": \"caller\",\n \"type\": \"address\",\n \"indexed\": true,\n \"internalType\": \"address\"\n }\n ],\n \"anonymous\": false\n },\n {\n \"type\": \"event\",\n \"name\": \"VenueUnsuspendedEvent\",\n \"inputs\": [\n {\n \"name\": \"venueId\",\n \"type\": \"uint256\",\n \"indexed\": true,\n \"internalType\": \"uint256\"\n },\n {\n \"name\": \"caller\",\n \"type\": \"address\",\n \"indexed\": true,\n \"internalType\": \"address\"\n }\n ],\n \"anonymous\": false\n },\n {\n \"type\": \"error\",\n \"name\": \"NotContractOwner\",\n \"inputs\": [\n {\n \"name\": \"_user\",\n \"type\": \"address\",\n \"internalType\": \"address\"\n },\n {\n \"name\": \"_contractOwner\",\n \"type\": \"address\",\n \"internalType\": \"address\"\n }\n ]\n },\n {\n \"type\": \"error\",\n \"name\": \"TransferFailed\",\n \"inputs\": []\n },\n {\n \"type\": \"error\",\n \"name\": \"VenueNotFound\",\n \"inputs\": []\n }\n]\n","[\n {\n \"type\": \"function\",\n \"name\": \"canTradeOnMarket\",\n \"inputs\": [\n {\n \"name\": \"user\",\n \"type\": \"address\",\n \"internalType\": \"address\"\n },\n {\n \"name\": \"marketId\",\n \"type\": \"uint256\",\n \"internalType\": \"uint256\"\n }\n ],\n \"outputs\": [\n {\n \"name\": \"\",\n \"type\": \"bool\",\n \"internalType\": \"bool\"\n }\n ],\n \"stateMutability\": \"view\"\n },\n {\n \"type\": \"function\",\n \"name\": \"deployNFTGatedAC\",\n \"inputs\": [\n {\n \"name\": \"nftContract\",\n \"type\": \"address\",\n \"internalType\": \"address\"\n },\n {\n \"name\": \"isERC1155\",\n \"type\": \"bool\",\n \"internalType\": \"bool\"\n },\n {\n \"name\": \"tokenId\",\n \"type\": \"uint256\",\n \"internalType\": \"uint256\"\n }\n ],\n \"outputs\": [\n {\n \"name\": \"acContract\",\n \"type\": \"address\",\n \"internalType\": \"address\"\n }\n ],\n \"stateMutability\": \"nonpayable\"\n },\n {\n \"type\": \"function\",\n \"name\": \"deployTokenGatedAC\",\n \"inputs\": [\n {\n \"name\": \"token\",\n \"type\": \"address\",\n \"internalType\": \"address\"\n },\n {\n \"name\": \"minBalance\",\n \"type\": \"uint256\",\n \"internalType\": \"uint256\"\n }\n ],\n \"outputs\": [\n {\n \"name\": \"acContract\",\n \"type\": \"address\",\n \"internalType\": \"address\"\n }\n ],\n \"stateMutability\": \"nonpayable\"\n },\n {\n \"type\": \"function\",\n \"name\": \"deployWhitelistAC\",\n \"inputs\": [],\n \"outputs\": [\n {\n \"name\": \"acContract\",\n \"type\": \"address\",\n \"internalType\": \"address\"\n }\n ],\n \"stateMutability\": \"nonpayable\"\n },\n {\n \"type\": \"function\",\n \"name\": \"getMarketTradingAccessControl\",\n \"inputs\": [\n {\n \"name\": \"marketId\",\n \"type\": \"uint256\",\n \"internalType\": \"uint256\"\n }\n ],\n \"outputs\": [\n {\n \"name\": \"\",\n \"type\": \"address\",\n \"internalType\": \"address\"\n }\n ],\n \"stateMutability\": \"view\"\n },\n {\n \"type\": \"function\",\n \"name\": \"removeMarketTradingAccessControl\",\n \"inputs\": [\n {\n \"name\": \"marketId\",\n \"type\": \"uint256\",\n \"internalType\": \"uint256\"\n }\n ],\n \"outputs\": [],\n \"stateMutability\": \"nonpayable\"\n },\n {\n \"type\": \"function\",\n \"name\": \"setMarketTradingAccessControl\",\n \"inputs\": [\n {\n \"name\": \"marketId\",\n \"type\": \"uint256\",\n \"internalType\": \"uint256\"\n },\n {\n \"name\": \"acContract\",\n \"type\": \"address\",\n \"internalType\": \"address\"\n }\n ],\n \"outputs\": [],\n \"stateMutability\": \"nonpayable\"\n },\n {\n \"type\": \"event\",\n \"name\": \"AccessControlDeployed\",\n \"inputs\": [\n {\n \"name\": \"deployer\",\n \"type\": \"address\",\n \"indexed\": true,\n \"internalType\": \"address\"\n },\n {\n \"name\": \"acContract\",\n \"type\": \"address\",\n \"indexed\": true,\n \"internalType\": \"address\"\n },\n {\n \"name\": \"acType\",\n \"type\": \"string\",\n \"indexed\": false,\n \"internalType\": \"string\"\n }\n ],\n \"anonymous\": false\n },\n {\n \"type\": \"event\",\n \"name\": \"MarketTradingAccessControlRemoved\",\n \"inputs\": [\n {\n \"name\": \"marketId\",\n \"type\": \"uint256\",\n \"indexed\": true,\n \"internalType\": \"uint256\"\n }\n ],\n \"anonymous\": false\n },\n {\n \"type\": \"event\",\n \"name\": \"MarketTradingAccessControlSet\",\n \"inputs\": [\n {\n \"name\": \"marketId\",\n \"type\": \"uint256\",\n \"indexed\": true,\n \"internalType\": \"uint256\"\n },\n {\n \"name\": \"acContract\",\n \"type\": \"address\",\n \"indexed\": true,\n \"internalType\": \"address\"\n }\n ],\n \"anonymous\": false\n },\n {\n \"type\": \"error\",\n \"name\": \"OnlyVenueOperator\",\n \"inputs\": []\n },\n {\n \"type\": \"error\",\n \"name\": \"ProtocolPaused\",\n \"inputs\": []\n },\n {\n \"type\": \"error\",\n \"name\": \"VenueInactive\",\n \"inputs\": []\n },\n {\n \"type\": \"error\",\n \"name\": \"VenueNotFound\",\n \"inputs\": []\n },\n {\n \"type\": \"error\",\n \"name\": \"VenueSuspended\",\n \"inputs\": []\n }\n]\n","[\n {\n \"type\": \"function\",\n \"name\": \"updateMarketGroupTags\",\n \"inputs\": [\n {\n \"name\": \"groupId\",\n \"type\": \"uint256\",\n \"internalType\": \"uint256\"\n },\n {\n \"name\": \"tags\",\n \"type\": \"bytes32[]\",\n \"internalType\": \"bytes32[]\"\n }\n ],\n \"outputs\": [],\n \"stateMutability\": \"nonpayable\"\n },\n {\n \"type\": \"function\",\n \"name\": \"updateMarketTags\",\n \"inputs\": [\n {\n \"name\": \"marketId\",\n \"type\": \"uint256\",\n \"internalType\": \"uint256\"\n },\n {\n \"name\": \"tags\",\n \"type\": \"bytes32[]\",\n \"internalType\": \"bytes32[]\"\n }\n ],\n \"outputs\": [],\n \"stateMutability\": \"nonpayable\"\n },\n {\n \"type\": \"event\",\n \"name\": \"MarketGroupTagsUpdated\",\n \"inputs\": [\n {\n \"name\": \"groupId\",\n \"type\": \"uint256\",\n \"indexed\": true,\n \"internalType\": \"uint256\"\n },\n {\n \"name\": \"tags\",\n \"type\": \"bytes32[]\",\n \"indexed\": false,\n \"internalType\": \"bytes32[]\"\n }\n ],\n \"anonymous\": false\n },\n {\n \"type\": \"event\",\n \"name\": \"MarketTagsUpdated\",\n \"inputs\": [\n {\n \"name\": \"marketId\",\n \"type\": \"uint256\",\n \"indexed\": true,\n \"internalType\": \"uint256\"\n },\n {\n \"name\": \"tags\",\n \"type\": \"bytes32[]\",\n \"indexed\": false,\n \"internalType\": \"bytes32[]\"\n }\n ],\n \"anonymous\": false\n },\n {\n \"type\": \"error\",\n \"name\": \"MarketGroupNotFound\",\n \"inputs\": []\n },\n {\n \"type\": \"error\",\n \"name\": \"NotGroupCreator\",\n \"inputs\": []\n },\n {\n \"type\": \"error\",\n \"name\": \"NotMarketCreator\",\n \"inputs\": []\n },\n {\n \"type\": \"error\",\n \"name\": \"TooManyTags\",\n \"inputs\": []\n }\n]\n","[\n {\n \"type\": \"function\",\n \"name\": \"updateMarketGroupMetadata\",\n \"inputs\": [\n {\n \"name\": \"groupId\",\n \"type\": \"uint256\",\n \"internalType\": \"uint256\"\n },\n {\n \"name\": \"metadataURI\",\n \"type\": \"string\",\n \"internalType\": \"string\"\n }\n ],\n \"outputs\": [],\n \"stateMutability\": \"nonpayable\"\n },\n {\n \"type\": \"function\",\n \"name\": \"updateMarketMetadata\",\n \"inputs\": [\n {\n \"name\": \"marketId\",\n \"type\": \"uint256\",\n \"internalType\": \"uint256\"\n },\n {\n \"name\": \"metadataURI\",\n \"type\": \"string\",\n \"internalType\": \"string\"\n }\n ],\n \"outputs\": [],\n \"stateMutability\": \"nonpayable\"\n },\n {\n \"type\": \"event\",\n \"name\": \"MarketGroupMetadataUpdated\",\n \"inputs\": [\n {\n \"name\": \"groupId\",\n \"type\": \"uint256\",\n \"indexed\": true,\n \"internalType\": \"uint256\"\n },\n {\n \"name\": \"metadataURI\",\n \"type\": \"string\",\n \"indexed\": false,\n \"internalType\": \"string\"\n }\n ],\n \"anonymous\": false\n },\n {\n \"type\": \"event\",\n \"name\": \"MarketMetadataUpdated\",\n \"inputs\": [\n {\n \"name\": \"marketId\",\n \"type\": \"uint256\",\n \"indexed\": true,\n \"internalType\": \"uint256\"\n },\n {\n \"name\": \"metadataURI\",\n \"type\": \"string\",\n \"indexed\": false,\n \"internalType\": \"string\"\n }\n ],\n \"anonymous\": false\n },\n {\n \"type\": \"error\",\n \"name\": \"MarketGroupNotFound\",\n \"inputs\": []\n },\n {\n \"type\": \"error\",\n \"name\": \"NotGroupCreator\",\n \"inputs\": []\n },\n {\n \"type\": \"error\",\n \"name\": \"NotMarketCreator\",\n \"inputs\": []\n }\n]\n","[\n {\n \"type\": \"function\",\n \"name\": \"canResolvePriceMarket\",\n \"inputs\": [\n {\n \"name\": \"marketId\",\n \"type\": \"uint256\",\n \"internalType\": \"uint256\"\n }\n ],\n \"outputs\": [\n {\n \"name\": \"\",\n \"type\": \"bool\",\n \"internalType\": \"bool\"\n }\n ],\n \"stateMutability\": \"view\"\n },\n {\n \"type\": \"function\",\n \"name\": \"getPriceMarket\",\n \"inputs\": [\n {\n \"name\": \"marketId\",\n \"type\": \"uint256\",\n \"internalType\": \"uint256\"\n }\n ],\n \"outputs\": [\n {\n \"name\": \"feedId\",\n \"type\": \"bytes32\",\n \"internalType\": \"bytes32\"\n },\n {\n \"name\": \"feedProvider\",\n \"type\": \"uint8\",\n \"internalType\": \"enum FeedProvider\"\n },\n {\n \"name\": \"openTime\",\n \"type\": \"uint256\",\n \"internalType\": \"uint256\"\n },\n {\n \"name\": \"closeTime\",\n \"type\": \"uint256\",\n \"internalType\": \"uint256\"\n },\n {\n \"name\": \"priceExpo\",\n \"type\": \"int32\",\n \"internalType\": \"int32\"\n },\n {\n \"name\": \"finalPrice\",\n \"type\": \"int64\",\n \"internalType\": \"int64\"\n },\n {\n \"name\": \"resolutionWindow\",\n \"type\": \"uint256\",\n \"internalType\": \"uint256\"\n },\n {\n \"name\": \"resolved\",\n \"type\": \"bool\",\n \"internalType\": \"bool\"\n },\n {\n \"name\": \"strikePrice\",\n \"type\": \"int64\",\n \"internalType\": \"int64\"\n },\n {\n \"name\": \"openPriceTime\",\n \"type\": \"uint256\",\n \"internalType\": \"uint256\"\n }\n ],\n \"stateMutability\": \"view\"\n },\n {\n \"type\": \"function\",\n \"name\": \"isPriceMarket\",\n \"inputs\": [\n {\n \"name\": \"marketId\",\n \"type\": \"uint256\",\n \"internalType\": \"uint256\"\n }\n ],\n \"outputs\": [\n {\n \"name\": \"\",\n \"type\": \"bool\",\n \"internalType\": \"bool\"\n }\n ],\n \"stateMutability\": \"view\"\n }\n]\n","[\n {\n \"type\": \"function\",\n \"name\": \"createPriceMarketPyth\",\n \"inputs\": [\n {\n \"name\": \"venueId\",\n \"type\": \"uint256\",\n \"internalType\": \"uint256\"\n },\n {\n \"name\": \"pythFeedId\",\n \"type\": \"bytes32\",\n \"internalType\": \"bytes32\"\n },\n {\n \"name\": \"strikePrice\",\n \"type\": \"int64\",\n \"internalType\": \"int64\"\n },\n {\n \"name\": \"openTime\",\n \"type\": \"uint256\",\n \"internalType\": \"uint256\"\n },\n {\n \"name\": \"closeTime\",\n \"type\": \"uint256\",\n \"internalType\": \"uint256\"\n },\n {\n \"name\": \"outcomes\",\n \"type\": \"string[]\",\n \"internalType\": \"string[]\"\n },\n {\n \"name\": \"tickSize\",\n \"type\": \"uint256\",\n \"internalType\": \"uint256\"\n },\n {\n \"name\": \"collateralToken\",\n \"type\": \"address\",\n \"internalType\": \"address\"\n },\n {\n \"name\": \"ancillaryData\",\n \"type\": \"bytes\",\n \"internalType\": \"bytes\"\n },\n {\n \"name\": \"liveness\",\n \"type\": \"uint64\",\n \"internalType\": \"uint64\"\n },\n {\n \"name\": \"tags\",\n \"type\": \"bytes32[]\",\n \"internalType\": \"bytes32[]\"\n },\n {\n \"name\": \"resolutionWindow\",\n \"type\": \"uint256\",\n \"internalType\": \"uint256\"\n }\n ],\n \"outputs\": [\n {\n \"name\": \"marketId\",\n \"type\": \"uint256\",\n \"internalType\": \"uint256\"\n }\n ],\n \"stateMutability\": \"nonpayable\"\n },\n {\n \"type\": \"function\",\n \"name\": \"getPythContract\",\n \"inputs\": [],\n \"outputs\": [\n {\n \"name\": \"\",\n \"type\": \"address\",\n \"internalType\": \"address\"\n }\n ],\n \"stateMutability\": \"view\"\n },\n {\n \"type\": \"function\",\n \"name\": \"markPriceMarketInvalid\",\n \"inputs\": [\n {\n \"name\": \"marketId\",\n \"type\": \"uint256\",\n \"internalType\": \"uint256\"\n }\n ],\n \"outputs\": [],\n \"stateMutability\": \"nonpayable\"\n },\n {\n \"type\": \"function\",\n \"name\": \"resolvePriceMarketPyth\",\n \"inputs\": [\n {\n \"name\": \"marketId\",\n \"type\": \"uint256\",\n \"internalType\": \"uint256\"\n },\n {\n \"name\": \"pythUpdateData\",\n \"type\": \"bytes[]\",\n \"internalType\": \"bytes[]\"\n }\n ],\n \"outputs\": [],\n \"stateMutability\": \"payable\"\n },\n {\n \"type\": \"function\",\n \"name\": \"setPythContract\",\n \"inputs\": [\n {\n \"name\": \"pythContract\",\n \"type\": \"address\",\n \"internalType\": \"address\"\n }\n ],\n \"outputs\": [],\n \"stateMutability\": \"nonpayable\"\n },\n {\n \"type\": \"event\",\n \"name\": \"MarketCreated\",\n \"inputs\": [\n {\n \"name\": \"marketId\",\n \"type\": \"uint256\",\n \"indexed\": true,\n \"internalType\": \"uint256\"\n },\n {\n \"name\": \"venueId\",\n \"type\": \"uint256\",\n \"indexed\": true,\n \"internalType\": \"uint256\"\n },\n {\n \"name\": \"creator\",\n \"type\": \"address\",\n \"indexed\": true,\n \"internalType\": \"address\"\n },\n {\n \"name\": \"conditionId\",\n \"type\": \"bytes32\",\n \"indexed\": false,\n \"internalType\": \"bytes32\"\n },\n {\n \"name\": \"collateralToken\",\n \"type\": \"address\",\n \"indexed\": false,\n \"internalType\": \"address\"\n },\n {\n \"name\": \"tickSize\",\n \"type\": \"uint256\",\n \"indexed\": false,\n \"internalType\": \"uint256\"\n },\n {\n \"name\": \"question\",\n \"type\": \"string\",\n \"indexed\": false,\n \"internalType\": \"string\"\n },\n {\n \"name\": \"outcomes\",\n \"type\": \"string[]\",\n \"indexed\": false,\n \"internalType\": \"string[]\"\n },\n {\n \"name\": \"groupId\",\n \"type\": \"uint256\",\n \"indexed\": false,\n \"internalType\": \"uint256\"\n },\n {\n \"name\": \"tags\",\n \"type\": \"bytes32[]\",\n \"indexed\": false,\n \"internalType\": \"bytes32[]\"\n }\n ],\n \"anonymous\": false\n },\n {\n \"type\": \"event\",\n \"name\": \"MarketCreationFeeCollected\",\n \"inputs\": [\n {\n \"name\": \"venueId\",\n \"type\": \"uint256\",\n \"indexed\": true,\n \"internalType\": \"uint256\"\n },\n {\n \"name\": \"payer\",\n \"type\": \"address\",\n \"indexed\": true,\n \"internalType\": \"address\"\n },\n {\n \"name\": \"protocolShare\",\n \"type\": \"uint256\",\n \"indexed\": false,\n \"internalType\": \"uint256\"\n },\n {\n \"name\": \"venueShare\",\n \"type\": \"uint256\",\n \"indexed\": false,\n \"internalType\": \"uint256\"\n }\n ],\n \"anonymous\": false\n },\n {\n \"type\": \"event\",\n \"name\": \"MarketResolved\",\n \"inputs\": [\n {\n \"name\": \"marketId\",\n \"type\": \"uint256\",\n \"indexed\": true,\n \"internalType\": \"uint256\"\n },\n {\n \"name\": \"questionId\",\n \"type\": \"bytes32\",\n \"indexed\": true,\n \"internalType\": \"bytes32\"\n },\n {\n \"name\": \"outcome\",\n \"type\": \"string\",\n \"indexed\": false,\n \"internalType\": \"string\"\n }\n ],\n \"anonymous\": false\n },\n {\n \"type\": \"event\",\n \"name\": \"PriceMarketCreatedPyth\",\n \"inputs\": [\n {\n \"name\": \"marketId\",\n \"type\": \"uint256\",\n \"indexed\": true,\n \"internalType\": \"uint256\"\n },\n {\n \"name\": \"venueId\",\n \"type\": \"uint256\",\n \"indexed\": true,\n \"internalType\": \"uint256\"\n },\n {\n \"name\": \"pythFeedId\",\n \"type\": \"bytes32\",\n \"indexed\": true,\n \"internalType\": \"bytes32\"\n },\n {\n \"name\": \"strikePrice\",\n \"type\": \"int64\",\n \"indexed\": false,\n \"internalType\": \"int64\"\n },\n {\n \"name\": \"priceExpo\",\n \"type\": \"int32\",\n \"indexed\": false,\n \"internalType\": \"int32\"\n },\n {\n \"name\": \"openTime\",\n \"type\": \"uint256\",\n \"indexed\": false,\n \"internalType\": \"uint256\"\n },\n {\n \"name\": \"closeTime\",\n \"type\": \"uint256\",\n \"indexed\": false,\n \"internalType\": \"uint256\"\n },\n {\n \"name\": \"resolutionWindow\",\n \"type\": \"uint256\",\n \"indexed\": false,\n \"internalType\": \"uint256\"\n }\n ],\n \"anonymous\": false\n },\n {\n \"type\": \"event\",\n \"name\": \"PriceMarketInvalidated\",\n \"inputs\": [\n {\n \"name\": \"marketId\",\n \"type\": \"uint256\",\n \"indexed\": true,\n \"internalType\": \"uint256\"\n },\n {\n \"name\": \"caller\",\n \"type\": \"address\",\n \"indexed\": true,\n \"internalType\": \"address\"\n }\n ],\n \"anonymous\": false\n },\n {\n \"type\": \"event\",\n \"name\": \"PriceMarketResolvedPyth\",\n \"inputs\": [\n {\n \"name\": \"marketId\",\n \"type\": \"uint256\",\n \"indexed\": true,\n \"internalType\": \"uint256\"\n },\n {\n \"name\": \"finalPrice\",\n \"type\": \"int64\",\n \"indexed\": false,\n \"internalType\": \"int64\"\n },\n {\n \"name\": \"strikePrice\",\n \"type\": \"int64\",\n \"indexed\": false,\n \"internalType\": \"int64\"\n },\n {\n \"name\": \"openPriceTime\",\n \"type\": \"uint256\",\n \"indexed\": false,\n \"internalType\": \"uint256\"\n },\n {\n \"name\": \"outcome\",\n \"type\": \"string\",\n \"indexed\": false,\n \"internalType\": \"string\"\n }\n ],\n \"anonymous\": false\n },\n {\n \"type\": \"event\",\n \"name\": \"PythContractUpdated\",\n \"inputs\": [\n {\n \"name\": \"pythContract\",\n \"type\": \"address\",\n \"indexed\": true,\n \"internalType\": \"address\"\n }\n ],\n \"anonymous\": false\n },\n {\n \"type\": \"event\",\n \"name\": \"WrappedCollateralRegistered\",\n \"inputs\": [\n {\n \"name\": \"underlyingCollateral\",\n \"type\": \"address\",\n \"indexed\": true,\n \"internalType\": \"address\"\n },\n {\n \"name\": \"wrappedCollateral\",\n \"type\": \"address\",\n \"indexed\": true,\n \"internalType\": \"address\"\n }\n ],\n \"anonymous\": false\n },\n {\n \"type\": \"error\",\n \"name\": \"AssertionInProgress\",\n \"inputs\": []\n },\n {\n \"type\": \"error\",\n \"name\": \"CloseTimeNotAfterOpenTime\",\n \"inputs\": []\n },\n {\n \"type\": \"error\",\n \"name\": \"CloseTimeNotReached\",\n \"inputs\": []\n },\n {\n \"type\": \"error\",\n \"name\": \"CollateralNotWhitelisted\",\n \"inputs\": []\n },\n {\n \"type\": \"error\",\n \"name\": \"CreationAccessDenied\",\n \"inputs\": []\n },\n {\n \"type\": \"error\",\n \"name\": \"ETHRefundFailed\",\n \"inputs\": []\n },\n {\n \"type\": \"error\",\n \"name\": \"FeedProviderMismatch\",\n \"inputs\": [\n {\n \"name\": \"expected\",\n \"type\": \"uint8\",\n \"internalType\": \"enum FeedProvider\"\n },\n {\n \"name\": \"actual\",\n \"type\": \"uint8\",\n \"internalType\": \"enum FeedProvider\"\n }\n ]\n },\n {\n \"type\": \"error\",\n \"name\": \"GracePeriodNotElapsed\",\n \"inputs\": []\n },\n {\n \"type\": \"error\",\n \"name\": \"InsufficientPythFee\",\n \"inputs\": []\n },\n {\n \"type\": \"error\",\n \"name\": \"InvalidAddress\",\n \"inputs\": []\n },\n {\n \"type\": \"error\",\n \"name\": \"InvalidCollateral\",\n \"inputs\": []\n },\n {\n \"type\": \"error\",\n \"name\": \"InvalidMarketId\",\n \"inputs\": []\n },\n {\n \"type\": \"error\",\n \"name\": \"InvalidMarketId\",\n \"inputs\": []\n },\n {\n \"type\": \"error\",\n \"name\": \"InvalidOpenTime\",\n \"inputs\": []\n },\n {\n \"type\": \"error\",\n \"name\": \"InvalidOutcomesLength\",\n \"inputs\": []\n },\n {\n \"type\": \"error\",\n \"name\": \"InvalidTickSize\",\n \"inputs\": []\n },\n {\n \"type\": \"error\",\n \"name\": \"MarketNotActive\",\n \"inputs\": []\n },\n {\n \"type\": \"error\",\n \"name\": \"NoClosePriceInWindow\",\n \"inputs\": []\n },\n {\n \"type\": \"error\",\n \"name\": \"NoOpenPriceInWindow\",\n \"inputs\": []\n },\n {\n \"type\": \"error\",\n \"name\": \"NotContractOwner\",\n \"inputs\": [\n {\n \"name\": \"_user\",\n \"type\": \"address\",\n \"internalType\": \"address\"\n },\n {\n \"name\": \"_contractOwner\",\n \"type\": \"address\",\n \"internalType\": \"address\"\n }\n ]\n },\n {\n \"type\": \"error\",\n \"name\": \"NotPriceMarket\",\n \"inputs\": []\n },\n {\n \"type\": \"error\",\n \"name\": \"OracleAlreadyExists\",\n \"inputs\": []\n },\n {\n \"type\": \"error\",\n \"name\": \"OracleCtfNotSet\",\n \"inputs\": []\n },\n {\n \"type\": \"error\",\n \"name\": \"PriceMarketAlreadyResolved\",\n \"inputs\": []\n },\n {\n \"type\": \"error\",\n \"name\": \"ProtocolPaused\",\n \"inputs\": []\n },\n {\n \"type\": \"error\",\n \"name\": \"PythContractNotConfigured\",\n \"inputs\": []\n },\n {\n \"type\": \"error\",\n \"name\": \"RegistryAlreadyExists\",\n \"inputs\": []\n },\n {\n \"type\": \"error\",\n \"name\": \"ResolutionWindowTooLarge\",\n \"inputs\": []\n },\n {\n \"type\": \"error\",\n \"name\": \"TooManyTags\",\n \"inputs\": []\n },\n {\n \"type\": \"error\",\n \"name\": \"TradingAlreadyExists\",\n \"inputs\": []\n },\n {\n \"type\": \"error\",\n \"name\": \"TransferFromFailed\",\n \"inputs\": []\n },\n {\n \"type\": \"error\",\n \"name\": \"VenueInactive\",\n \"inputs\": []\n },\n {\n \"type\": \"error\",\n \"name\": \"VenueNotFound\",\n \"inputs\": []\n },\n {\n \"type\": \"error\",\n \"name\": \"VenueSuspended\",\n \"inputs\": []\n },\n {\n \"type\": \"error\",\n \"name\": \"ZeroAddress\",\n \"inputs\": []\n },\n {\n \"type\": \"error\",\n \"name\": \"ZeroStrikePrice\",\n \"inputs\": []\n }\n]\n","[\n {\n \"type\": \"function\",\n \"name\": \"batchCancelOrders\",\n \"inputs\": [\n {\n \"name\": \"orderIds\",\n \"type\": \"uint256[]\",\n \"internalType\": \"uint256[]\"\n }\n ],\n \"outputs\": [\n {\n \"name\": \"cancelledCount\",\n \"type\": \"uint256\",\n \"internalType\": \"uint256\"\n }\n ],\n \"stateMutability\": \"nonpayable\"\n },\n {\n \"type\": \"function\",\n \"name\": \"batchPlaceOrders\",\n \"inputs\": [\n {\n \"name\": \"marketId\",\n \"type\": \"uint256\",\n \"internalType\": \"uint256\"\n },\n {\n \"name\": \"orders\",\n \"type\": \"tuple[]\",\n \"internalType\": \"struct BatchOrderParams[]\",\n \"components\": [\n {\n \"name\": \"outcomeId\",\n \"type\": \"uint256\",\n \"internalType\": \"uint256\"\n },\n {\n \"name\": \"side\",\n \"type\": \"uint8\",\n \"internalType\": \"enum Side\"\n },\n {\n \"name\": \"tick\",\n \"type\": \"uint256\",\n \"internalType\": \"uint256\"\n },\n {\n \"name\": \"qty\",\n \"type\": \"uint256\",\n \"internalType\": \"uint256\"\n },\n {\n \"name\": \"expiry\",\n \"type\": \"uint256\",\n \"internalType\": \"uint256\"\n }\n ]\n }\n ],\n \"outputs\": [\n {\n \"name\": \"orderIds\",\n \"type\": \"uint256[]\",\n \"internalType\": \"uint256[]\"\n }\n ],\n \"stateMutability\": \"nonpayable\"\n },\n {\n \"type\": \"function\",\n \"name\": \"cancelAndReplace\",\n \"inputs\": [\n {\n \"name\": \"marketId\",\n \"type\": \"uint256\",\n \"internalType\": \"uint256\"\n },\n {\n \"name\": \"cancelOrderIds\",\n \"type\": \"uint256[]\",\n \"internalType\": \"uint256[]\"\n },\n {\n \"name\": \"newOrders\",\n \"type\": \"tuple[]\",\n \"internalType\": \"struct BatchOrderParams[]\",\n \"components\": [\n {\n \"name\": \"outcomeId\",\n \"type\": \"uint256\",\n \"internalType\": \"uint256\"\n },\n {\n \"name\": \"side\",\n \"type\": \"uint8\",\n \"internalType\": \"enum Side\"\n },\n {\n \"name\": \"tick\",\n \"type\": \"uint256\",\n \"internalType\": \"uint256\"\n },\n {\n \"name\": \"qty\",\n \"type\": \"uint256\",\n \"internalType\": \"uint256\"\n },\n {\n \"name\": \"expiry\",\n \"type\": \"uint256\",\n \"internalType\": \"uint256\"\n }\n ]\n }\n ],\n \"outputs\": [\n {\n \"name\": \"cancelledCount\",\n \"type\": \"uint256\",\n \"internalType\": \"uint256\"\n },\n {\n \"name\": \"newOrderIds\",\n \"type\": \"uint256[]\",\n \"internalType\": \"uint256[]\"\n }\n ],\n \"stateMutability\": \"nonpayable\"\n },\n {\n \"type\": \"event\",\n \"name\": \"OrderCancelled\",\n \"inputs\": [\n {\n \"name\": \"orderId\",\n \"type\": \"uint256\",\n \"indexed\": true,\n \"internalType\": \"uint256\"\n }\n ],\n \"anonymous\": false\n },\n {\n \"type\": \"event\",\n \"name\": \"OrderCreated\",\n \"inputs\": [\n {\n \"name\": \"orderId\",\n \"type\": \"uint256\",\n \"indexed\": true,\n \"internalType\": \"uint256\"\n },\n {\n \"name\": \"owner\",\n \"type\": \"address\",\n \"indexed\": true,\n \"internalType\": \"address\"\n },\n {\n \"name\": \"marketId\",\n \"type\": \"uint256\",\n \"indexed\": false,\n \"internalType\": \"uint256\"\n }\n ],\n \"anonymous\": false\n },\n {\n \"type\": \"event\",\n \"name\": \"OrderDeleted\",\n \"inputs\": [\n {\n \"name\": \"orderId\",\n \"type\": \"uint256\",\n \"indexed\": true,\n \"internalType\": \"uint256\"\n }\n ],\n \"anonymous\": false\n },\n {\n \"type\": \"event\",\n \"name\": \"OrderPlaced\",\n \"inputs\": [\n {\n \"name\": \"orderId\",\n \"type\": \"uint256\",\n \"indexed\": true,\n \"internalType\": \"uint256\"\n },\n {\n \"name\": \"marketId\",\n \"type\": \"uint256\",\n \"indexed\": true,\n \"internalType\": \"uint256\"\n },\n {\n \"name\": \"outcomeId\",\n \"type\": \"uint256\",\n \"indexed\": false,\n \"internalType\": \"uint256\"\n },\n {\n \"name\": \"side\",\n \"type\": \"uint8\",\n \"indexed\": false,\n \"internalType\": \"enum Side\"\n },\n {\n \"name\": \"tick\",\n \"type\": \"uint256\",\n \"indexed\": false,\n \"internalType\": \"uint256\"\n },\n {\n \"name\": \"qty\",\n \"type\": \"uint256\",\n \"indexed\": false,\n \"internalType\": \"uint256\"\n },\n {\n \"name\": \"owner\",\n \"type\": \"address\",\n \"indexed\": true,\n \"internalType\": \"address\"\n }\n ],\n \"anonymous\": false\n },\n {\n \"type\": \"event\",\n \"name\": \"TopOfBookChanged\",\n \"inputs\": [\n {\n \"name\": \"marketId\",\n \"type\": \"uint256\",\n \"indexed\": true,\n \"internalType\": \"uint256\"\n },\n {\n \"name\": \"outcomeId\",\n \"type\": \"uint256\",\n \"indexed\": true,\n \"internalType\": \"uint256\"\n },\n {\n \"name\": \"side\",\n \"type\": \"uint8\",\n \"indexed\": false,\n \"internalType\": \"enum Side\"\n },\n {\n \"name\": \"bestTick\",\n \"type\": \"uint256\",\n \"indexed\": false,\n \"internalType\": \"uint256\"\n }\n ],\n \"anonymous\": false\n },\n {\n \"type\": \"error\",\n \"name\": \"BatchTooLarge\",\n \"inputs\": []\n },\n {\n \"type\": \"error\",\n \"name\": \"EmptyBatch\",\n \"inputs\": []\n },\n {\n \"type\": \"error\",\n \"name\": \"InvalidOutcome\",\n \"inputs\": []\n },\n {\n \"type\": \"error\",\n \"name\": \"InvalidQuantity\",\n \"inputs\": []\n },\n {\n \"type\": \"error\",\n \"name\": \"InvalidTick\",\n \"inputs\": []\n },\n {\n \"type\": \"error\",\n \"name\": \"MakerErc165CallFailed\",\n \"inputs\": []\n },\n {\n \"type\": \"error\",\n \"name\": \"MakerNotErc1155Receiver\",\n \"inputs\": []\n },\n {\n \"type\": \"error\",\n \"name\": \"MarketNotActive\",\n \"inputs\": []\n },\n {\n \"type\": \"error\",\n \"name\": \"MarketPaused\",\n \"inputs\": []\n },\n {\n \"type\": \"error\",\n \"name\": \"OrderExpired\",\n \"inputs\": []\n },\n {\n \"type\": \"error\",\n \"name\": \"OrderTooSmall\",\n \"inputs\": []\n },\n {\n \"type\": \"error\",\n \"name\": \"ProtocolPaused\",\n \"inputs\": []\n },\n {\n \"type\": \"error\",\n \"name\": \"TradingAccessDenied\",\n \"inputs\": []\n },\n {\n \"type\": \"error\",\n \"name\": \"TransferFailed\",\n \"inputs\": []\n },\n {\n \"type\": \"error\",\n \"name\": \"TransferFromFailed\",\n \"inputs\": []\n },\n {\n \"type\": \"error\",\n \"name\": \"VenueInactive\",\n \"inputs\": []\n },\n {\n \"type\": \"error\",\n \"name\": \"VenueNotFound\",\n \"inputs\": []\n },\n {\n \"type\": \"error\",\n \"name\": \"VenueSuspended\",\n \"inputs\": []\n }\n]\n","[\n {\n \"type\": \"constructor\",\n \"inputs\": [\n {\n \"name\": \"_owner\",\n \"type\": \"address\",\n \"internalType\": \"address\"\n }\n ],\n \"stateMutability\": \"nonpayable\"\n },\n {\n \"type\": \"function\",\n \"name\": \"addToWhitelist\",\n \"inputs\": [\n {\n \"name\": \"users\",\n \"type\": \"address[]\",\n \"internalType\": \"address[]\"\n }\n ],\n \"outputs\": [],\n \"stateMutability\": \"nonpayable\"\n },\n {\n \"type\": \"function\",\n \"name\": \"isAllowed\",\n \"inputs\": [\n {\n \"name\": \"user\",\n \"type\": \"address\",\n \"internalType\": \"address\"\n }\n ],\n \"outputs\": [\n {\n \"name\": \"\",\n \"type\": \"bool\",\n \"internalType\": \"bool\"\n }\n ],\n \"stateMutability\": \"view\"\n },\n {\n \"type\": \"function\",\n \"name\": \"owner\",\n \"inputs\": [],\n \"outputs\": [\n {\n \"name\": \"\",\n \"type\": \"address\",\n \"internalType\": \"address\"\n }\n ],\n \"stateMutability\": \"view\"\n },\n {\n \"type\": \"function\",\n \"name\": \"removeFromWhitelist\",\n \"inputs\": [\n {\n \"name\": \"users\",\n \"type\": \"address[]\",\n \"internalType\": \"address[]\"\n }\n ],\n \"outputs\": [],\n \"stateMutability\": \"nonpayable\"\n },\n {\n \"type\": \"function\",\n \"name\": \"transferOwnership\",\n \"inputs\": [\n {\n \"name\": \"newOwner\",\n \"type\": \"address\",\n \"internalType\": \"address\"\n }\n ],\n \"outputs\": [],\n \"stateMutability\": \"nonpayable\"\n },\n {\n \"type\": \"function\",\n \"name\": \"whitelist\",\n \"inputs\": [\n {\n \"name\": \"\",\n \"type\": \"address\",\n \"internalType\": \"address\"\n }\n ],\n \"outputs\": [\n {\n \"name\": \"\",\n \"type\": \"bool\",\n \"internalType\": \"bool\"\n }\n ],\n \"stateMutability\": \"view\"\n },\n {\n \"type\": \"event\",\n \"name\": \"AddedToWhitelist\",\n \"inputs\": [\n {\n \"name\": \"users\",\n \"type\": \"address[]\",\n \"indexed\": false,\n \"internalType\": \"address[]\"\n }\n ],\n \"anonymous\": false\n },\n {\n \"type\": \"event\",\n \"name\": \"OwnershipTransferred\",\n \"inputs\": [\n {\n \"name\": \"previousOwner\",\n \"type\": \"address\",\n \"indexed\": true,\n \"internalType\": \"address\"\n },\n {\n \"name\": \"newOwner\",\n \"type\": \"address\",\n \"indexed\": true,\n \"internalType\": \"address\"\n }\n ],\n \"anonymous\": false\n },\n {\n \"type\": \"event\",\n \"name\": \"RemovedFromWhitelist\",\n \"inputs\": [\n {\n \"name\": \"users\",\n \"type\": \"address[]\",\n \"indexed\": false,\n \"internalType\": \"address[]\"\n }\n ],\n \"anonymous\": false\n },\n {\n \"type\": \"error\",\n \"name\": \"OnlyOwner\",\n \"inputs\": []\n },\n {\n \"type\": \"error\",\n \"name\": \"ZeroAddress\",\n \"inputs\": []\n }\n]\n","[\n {\n \"type\": \"function\",\n \"name\": \"balanceOf\",\n \"inputs\": [\n {\n \"name\": \"account\",\n \"type\": \"address\",\n \"internalType\": \"address\"\n },\n {\n \"name\": \"id\",\n \"type\": \"uint256\",\n \"internalType\": \"uint256\"\n }\n ],\n \"outputs\": [\n {\n \"name\": \"\",\n \"type\": \"uint256\",\n \"internalType\": \"uint256\"\n }\n ],\n \"stateMutability\": \"view\"\n },\n {\n \"type\": \"function\",\n \"name\": \"getCollectionId\",\n \"inputs\": [\n {\n \"name\": \"parentCollectionId\",\n \"type\": \"bytes32\",\n \"internalType\": \"bytes32\"\n },\n {\n \"name\": \"conditionId\",\n \"type\": \"bytes32\",\n \"internalType\": \"bytes32\"\n },\n {\n \"name\": \"indexSet\",\n \"type\": \"uint256\",\n \"internalType\": \"uint256\"\n }\n ],\n \"outputs\": [\n {\n \"name\": \"collectionId\",\n \"type\": \"bytes32\",\n \"internalType\": \"bytes32\"\n }\n ],\n \"stateMutability\": \"view\"\n },\n {\n \"type\": \"function\",\n \"name\": \"getConditionId\",\n \"inputs\": [\n {\n \"name\": \"oracle\",\n \"type\": \"address\",\n \"internalType\": \"address\"\n },\n {\n \"name\": \"questionId\",\n \"type\": \"bytes32\",\n \"internalType\": \"bytes32\"\n },\n {\n \"name\": \"outcomeSlotCount\",\n \"type\": \"uint256\",\n \"internalType\": \"uint256\"\n }\n ],\n \"outputs\": [\n {\n \"name\": \"conditionId\",\n \"type\": \"bytes32\",\n \"internalType\": \"bytes32\"\n }\n ],\n \"stateMutability\": \"pure\"\n },\n {\n \"type\": \"function\",\n \"name\": \"getOutcomeSlotCount\",\n \"inputs\": [\n {\n \"name\": \"conditionId\",\n \"type\": \"bytes32\",\n \"internalType\": \"bytes32\"\n }\n ],\n \"outputs\": [\n {\n \"name\": \"outcomeSlotCount\",\n \"type\": \"uint256\",\n \"internalType\": \"uint256\"\n }\n ],\n \"stateMutability\": \"view\"\n },\n {\n \"type\": \"function\",\n \"name\": \"getPositionId\",\n \"inputs\": [\n {\n \"name\": \"collateralToken\",\n \"type\": \"address\",\n \"internalType\": \"contract IERC20\"\n },\n {\n \"name\": \"collectionId\",\n \"type\": \"bytes32\",\n \"internalType\": \"bytes32\"\n }\n ],\n \"outputs\": [\n {\n \"name\": \"positionId\",\n \"type\": \"uint256\",\n \"internalType\": \"uint256\"\n }\n ],\n \"stateMutability\": \"pure\"\n },\n {\n \"type\": \"function\",\n \"name\": \"mergePositions\",\n \"inputs\": [\n {\n \"name\": \"collateralToken\",\n \"type\": \"address\",\n \"internalType\": \"contract IERC20\"\n },\n {\n \"name\": \"parentCollectionId\",\n \"type\": \"bytes32\",\n \"internalType\": \"bytes32\"\n },\n {\n \"name\": \"conditionId\",\n \"type\": \"bytes32\",\n \"internalType\": \"bytes32\"\n },\n {\n \"name\": \"partition\",\n \"type\": \"uint256[]\",\n \"internalType\": \"uint256[]\"\n },\n {\n \"name\": \"amount\",\n \"type\": \"uint256\",\n \"internalType\": \"uint256\"\n }\n ],\n \"outputs\": [],\n \"stateMutability\": \"nonpayable\"\n },\n {\n \"type\": \"function\",\n \"name\": \"payoutDenominator\",\n \"inputs\": [\n {\n \"name\": \"conditionId\",\n \"type\": \"bytes32\",\n \"internalType\": \"bytes32\"\n }\n ],\n \"outputs\": [\n {\n \"name\": \"\",\n \"type\": \"uint256\",\n \"internalType\": \"uint256\"\n }\n ],\n \"stateMutability\": \"view\"\n },\n {\n \"type\": \"function\",\n \"name\": \"payoutNumerators\",\n \"inputs\": [\n {\n \"name\": \"conditionId\",\n \"type\": \"bytes32\",\n \"internalType\": \"bytes32\"\n },\n {\n \"name\": \"index\",\n \"type\": \"uint256\",\n \"internalType\": \"uint256\"\n }\n ],\n \"outputs\": [\n {\n \"name\": \"\",\n \"type\": \"uint256\",\n \"internalType\": \"uint256\"\n }\n ],\n \"stateMutability\": \"view\"\n },\n {\n \"type\": \"function\",\n \"name\": \"prepareCondition\",\n \"inputs\": [\n {\n \"name\": \"oracle\",\n \"type\": \"address\",\n \"internalType\": \"address\"\n },\n {\n \"name\": \"questionId\",\n \"type\": \"bytes32\",\n \"internalType\": \"bytes32\"\n },\n {\n \"name\": \"outcomeSlotCount\",\n \"type\": \"uint256\",\n \"internalType\": \"uint256\"\n }\n ],\n \"outputs\": [],\n \"stateMutability\": \"nonpayable\"\n },\n {\n \"type\": \"function\",\n \"name\": \"redeemPositions\",\n \"inputs\": [\n {\n \"name\": \"collateralToken\",\n \"type\": \"address\",\n \"internalType\": \"contract IERC20\"\n },\n {\n \"name\": \"parentCollectionId\",\n \"type\": \"bytes32\",\n \"internalType\": \"bytes32\"\n },\n {\n \"name\": \"conditionId\",\n \"type\": \"bytes32\",\n \"internalType\": \"bytes32\"\n },\n {\n \"name\": \"indexSets\",\n \"type\": \"uint256[]\",\n \"internalType\": \"uint256[]\"\n }\n ],\n \"outputs\": [],\n \"stateMutability\": \"nonpayable\"\n },\n {\n \"type\": \"function\",\n \"name\": \"reportPayouts\",\n \"inputs\": [\n {\n \"name\": \"questionId\",\n \"type\": \"bytes32\",\n \"internalType\": \"bytes32\"\n },\n {\n \"name\": \"payouts\",\n \"type\": \"uint256[]\",\n \"internalType\": \"uint256[]\"\n }\n ],\n \"outputs\": [],\n \"stateMutability\": \"nonpayable\"\n },\n {\n \"type\": \"function\",\n \"name\": \"splitPosition\",\n \"inputs\": [\n {\n \"name\": \"collateralToken\",\n \"type\": \"address\",\n \"internalType\": \"contract IERC20\"\n },\n {\n \"name\": \"parentCollectionId\",\n \"type\": \"bytes32\",\n \"internalType\": \"bytes32\"\n },\n {\n \"name\": \"conditionId\",\n \"type\": \"bytes32\",\n \"internalType\": \"bytes32\"\n },\n {\n \"name\": \"partition\",\n \"type\": \"uint256[]\",\n \"internalType\": \"uint256[]\"\n },\n {\n \"name\": \"amount\",\n \"type\": \"uint256\",\n \"internalType\": \"uint256\"\n }\n ],\n \"outputs\": [],\n \"stateMutability\": \"nonpayable\"\n }\n]\n","[\n {\n \"type\": \"constructor\",\n \"inputs\": [\n {\n \"name\": \"_name\",\n \"type\": \"string\",\n \"internalType\": \"string\"\n },\n {\n \"name\": \"_symbol\",\n \"type\": \"string\",\n \"internalType\": \"string\"\n },\n {\n \"name\": \"_decimals\",\n \"type\": \"uint8\",\n \"internalType\": \"uint8\"\n }\n ],\n \"stateMutability\": \"nonpayable\"\n },\n {\n \"type\": \"function\",\n \"name\": \"allowance\",\n \"inputs\": [\n {\n \"name\": \"\",\n \"type\": \"address\",\n \"internalType\": \"address\"\n },\n {\n \"name\": \"\",\n \"type\": \"address\",\n \"internalType\": \"address\"\n }\n ],\n \"outputs\": [\n {\n \"name\": \"\",\n \"type\": \"uint256\",\n \"internalType\": \"uint256\"\n }\n ],\n \"stateMutability\": \"view\"\n },\n {\n \"type\": \"function\",\n \"name\": \"approve\",\n \"inputs\": [\n {\n \"name\": \"spender\",\n \"type\": \"address\",\n \"internalType\": \"address\"\n },\n {\n \"name\": \"amount\",\n \"type\": \"uint256\",\n \"internalType\": \"uint256\"\n }\n ],\n \"outputs\": [\n {\n \"name\": \"\",\n \"type\": \"bool\",\n \"internalType\": \"bool\"\n }\n ],\n \"stateMutability\": \"nonpayable\"\n },\n {\n \"type\": \"function\",\n \"name\": \"balanceOf\",\n \"inputs\": [\n {\n \"name\": \"\",\n \"type\": \"address\",\n \"internalType\": \"address\"\n }\n ],\n \"outputs\": [\n {\n \"name\": \"\",\n \"type\": \"uint256\",\n \"internalType\": \"uint256\"\n }\n ],\n \"stateMutability\": \"view\"\n },\n {\n \"type\": \"function\",\n \"name\": \"decimals\",\n \"inputs\": [],\n \"outputs\": [\n {\n \"name\": \"\",\n \"type\": \"uint8\",\n \"internalType\": \"uint8\"\n }\n ],\n \"stateMutability\": \"view\"\n },\n {\n \"type\": \"function\",\n \"name\": \"mint\",\n \"inputs\": [\n {\n \"name\": \"to\",\n \"type\": \"address\",\n \"internalType\": \"address\"\n },\n {\n \"name\": \"amount\",\n \"type\": \"uint256\",\n \"internalType\": \"uint256\"\n }\n ],\n \"outputs\": [],\n \"stateMutability\": \"nonpayable\"\n },\n {\n \"type\": \"function\",\n \"name\": \"name\",\n \"inputs\": [],\n \"outputs\": [\n {\n \"name\": \"\",\n \"type\": \"string\",\n \"internalType\": \"string\"\n }\n ],\n \"stateMutability\": \"view\"\n },\n {\n \"type\": \"function\",\n \"name\": \"symbol\",\n \"inputs\": [],\n \"outputs\": [\n {\n \"name\": \"\",\n \"type\": \"string\",\n \"internalType\": \"string\"\n }\n ],\n \"stateMutability\": \"view\"\n },\n {\n \"type\": \"function\",\n \"name\": \"totalSupply\",\n \"inputs\": [],\n \"outputs\": [\n {\n \"name\": \"\",\n \"type\": \"uint256\",\n \"internalType\": \"uint256\"\n }\n ],\n \"stateMutability\": \"view\"\n },\n {\n \"type\": \"function\",\n \"name\": \"transfer\",\n \"inputs\": [\n {\n \"name\": \"to\",\n \"type\": \"address\",\n \"internalType\": \"address\"\n },\n {\n \"name\": \"amount\",\n \"type\": \"uint256\",\n \"internalType\": \"uint256\"\n }\n ],\n \"outputs\": [\n {\n \"name\": \"\",\n \"type\": \"bool\",\n \"internalType\": \"bool\"\n }\n ],\n \"stateMutability\": \"nonpayable\"\n },\n {\n \"type\": \"function\",\n \"name\": \"transferFrom\",\n \"inputs\": [\n {\n \"name\": \"from\",\n \"type\": \"address\",\n \"internalType\": \"address\"\n },\n {\n \"name\": \"to\",\n \"type\": \"address\",\n \"internalType\": \"address\"\n },\n {\n \"name\": \"amount\",\n \"type\": \"uint256\",\n \"internalType\": \"uint256\"\n }\n ],\n \"outputs\": [\n {\n \"name\": \"\",\n \"type\": \"bool\",\n \"internalType\": \"bool\"\n }\n ],\n \"stateMutability\": \"nonpayable\"\n },\n {\n \"type\": \"event\",\n \"name\": \"Approval\",\n \"inputs\": [\n {\n \"name\": \"owner\",\n \"type\": \"address\",\n \"indexed\": true,\n \"internalType\": \"address\"\n },\n {\n \"name\": \"spender\",\n \"type\": \"address\",\n \"indexed\": true,\n \"internalType\": \"address\"\n },\n {\n \"name\": \"value\",\n \"type\": \"uint256\",\n \"indexed\": false,\n \"internalType\": \"uint256\"\n }\n ],\n \"anonymous\": false\n },\n {\n \"type\": \"event\",\n \"name\": \"Transfer\",\n \"inputs\": [\n {\n \"name\": \"from\",\n \"type\": \"address\",\n \"indexed\": true,\n \"internalType\": \"address\"\n },\n {\n \"name\": \"to\",\n \"type\": \"address\",\n \"indexed\": true,\n \"internalType\": \"address\"\n },\n {\n \"name\": \"value\",\n \"type\": \"uint256\",\n \"indexed\": false,\n \"internalType\": \"uint256\"\n }\n ],\n \"anonymous\": false\n }\n]\n","[\n {\n \"type\": \"function\",\n \"name\": \"assertTruth\",\n \"inputs\": [\n {\n \"name\": \"claim\",\n \"type\": \"bytes\",\n \"internalType\": \"bytes\"\n },\n {\n \"name\": \"asserter\",\n \"type\": \"address\",\n \"internalType\": \"address\"\n },\n {\n \"name\": \"callbackRecipient\",\n \"type\": \"address\",\n \"internalType\": \"address\"\n },\n {\n \"name\": \"escalationManager\",\n \"type\": \"address\",\n \"internalType\": \"address\"\n },\n {\n \"name\": \"liveness\",\n \"type\": \"uint64\",\n \"internalType\": \"uint64\"\n },\n {\n \"name\": \"currency\",\n \"type\": \"address\",\n \"internalType\": \"contract IERC20\"\n },\n {\n \"name\": \"bond\",\n \"type\": \"uint256\",\n \"internalType\": \"uint256\"\n },\n {\n \"name\": \"identifier\",\n \"type\": \"bytes32\",\n \"internalType\": \"bytes32\"\n },\n {\n \"name\": \"domainId\",\n \"type\": \"bytes32\",\n \"internalType\": \"bytes32\"\n }\n ],\n \"outputs\": [\n {\n \"name\": \"\",\n \"type\": \"bytes32\",\n \"internalType\": \"bytes32\"\n }\n ],\n \"stateMutability\": \"nonpayable\"\n },\n {\n \"type\": \"function\",\n \"name\": \"defaultIdentifier\",\n \"inputs\": [],\n \"outputs\": [\n {\n \"name\": \"\",\n \"type\": \"bytes32\",\n \"internalType\": \"bytes32\"\n }\n ],\n \"stateMutability\": \"view\"\n },\n {\n \"type\": \"function\",\n \"name\": \"disputeAssertion\",\n \"inputs\": [\n {\n \"name\": \"assertionId\",\n \"type\": \"bytes32\",\n \"internalType\": \"bytes32\"\n },\n {\n \"name\": \"disputer\",\n \"type\": \"address\",\n \"internalType\": \"address\"\n }\n ],\n \"outputs\": [],\n \"stateMutability\": \"nonpayable\"\n },\n {\n \"type\": \"function\",\n \"name\": \"getAssertion\",\n \"inputs\": [\n {\n \"name\": \"assertionId\",\n \"type\": \"bytes32\",\n \"internalType\": \"bytes32\"\n }\n ],\n \"outputs\": [\n {\n \"name\": \"\",\n \"type\": \"tuple\",\n \"internalType\": \"struct OptimisticOracleV3Interface.Assertion\",\n \"components\": [\n {\n \"name\": \"escalationManagerSettings\",\n \"type\": \"tuple\",\n \"internalType\": \"struct OptimisticOracleV3Interface.EscalationManagerSettings\",\n \"components\": [\n {\n \"name\": \"arbitrateViaEscalationManager\",\n \"type\": \"bool\",\n \"internalType\": \"bool\"\n },\n {\n \"name\": \"discardOracle\",\n \"type\": \"bool\",\n \"internalType\": \"bool\"\n },\n {\n \"name\": \"validateDisputers\",\n \"type\": \"bool\",\n \"internalType\": \"bool\"\n },\n {\n \"name\": \"assertingCaller\",\n \"type\": \"address\",\n \"internalType\": \"address\"\n },\n {\n \"name\": \"escalationManager\",\n \"type\": \"address\",\n \"internalType\": \"address\"\n }\n ]\n },\n {\n \"name\": \"asserter\",\n \"type\": \"address\",\n \"internalType\": \"address\"\n },\n {\n \"name\": \"assertionTime\",\n \"type\": \"uint64\",\n \"internalType\": \"uint64\"\n },\n {\n \"name\": \"settled\",\n \"type\": \"bool\",\n \"internalType\": \"bool\"\n },\n {\n \"name\": \"currency\",\n \"type\": \"address\",\n \"internalType\": \"contract IERC20\"\n },\n {\n \"name\": \"expirationTime\",\n \"type\": \"uint64\",\n \"internalType\": \"uint64\"\n },\n {\n \"name\": \"settlementResolution\",\n \"type\": \"bool\",\n \"internalType\": \"bool\"\n },\n {\n \"name\": \"domainId\",\n \"type\": \"bytes32\",\n \"internalType\": \"bytes32\"\n },\n {\n \"name\": \"identifier\",\n \"type\": \"bytes32\",\n \"internalType\": \"bytes32\"\n },\n {\n \"name\": \"bond\",\n \"type\": \"uint256\",\n \"internalType\": \"uint256\"\n },\n {\n \"name\": \"callbackRecipient\",\n \"type\": \"address\",\n \"internalType\": \"address\"\n },\n {\n \"name\": \"disputer\",\n \"type\": \"address\",\n \"internalType\": \"address\"\n }\n ]\n }\n ],\n \"stateMutability\": \"view\"\n },\n {\n \"type\": \"function\",\n \"name\": \"getAssertionResult\",\n \"inputs\": [\n {\n \"name\": \"assertionId\",\n \"type\": \"bytes32\",\n \"internalType\": \"bytes32\"\n }\n ],\n \"outputs\": [\n {\n \"name\": \"\",\n \"type\": \"bool\",\n \"internalType\": \"bool\"\n }\n ],\n \"stateMutability\": \"view\"\n },\n {\n \"type\": \"function\",\n \"name\": \"getMinimumBond\",\n \"inputs\": [\n {\n \"name\": \"currency\",\n \"type\": \"address\",\n \"internalType\": \"address\"\n }\n ],\n \"outputs\": [\n {\n \"name\": \"\",\n \"type\": \"uint256\",\n \"internalType\": \"uint256\"\n }\n ],\n \"stateMutability\": \"view\"\n },\n {\n \"type\": \"function\",\n \"name\": \"isSettled\",\n \"inputs\": [\n {\n \"name\": \"assertionId\",\n \"type\": \"bytes32\",\n \"internalType\": \"bytes32\"\n }\n ],\n \"outputs\": [\n {\n \"name\": \"settled\",\n \"type\": \"bool\",\n \"internalType\": \"bool\"\n }\n ],\n \"stateMutability\": \"view\"\n },\n {\n \"type\": \"function\",\n \"name\": \"settleAssertion\",\n \"inputs\": [\n {\n \"name\": \"assertionId\",\n \"type\": \"bytes32\",\n \"internalType\": \"bytes32\"\n }\n ],\n \"outputs\": [],\n \"stateMutability\": \"nonpayable\"\n }\n]\n","import { BaseModule } from './base';\nimport { VenueFacetABI, ProtocolFacetABI } from '../contracts';\n\nexport class VenueModule extends BaseModule {\n /**\n * Create a new venue.\n *\n * IMPORTANT: Fee and bond amounts must match your intended collateral token decimals.\n * Most venues use USDC (6 decimals), so amounts should use `parseUnits(\"amount\", 6)`.\n *\n * Example for a USDC-based venue:\n * - marketCreationFee: 0n // free creation, or parseUnits(\"10\", 6) for 10 USDC\n * - umaRewardAmount: parseUnits(\"5\", 6) // 5 USDC\n * - umaMinBond: parseUnits(\"1\", 6) // 1 USDC\n * - defaultTickSize: parseEther(\"0.01\") // 0.01 per tick (always 18 decimals)\n *\n * @param params.marketCreationFee - Upfront fee in collateral units charged on `createMarket`.\n * Can be zero. When non-zero, split 50/50 between protocol and venue.\n * When zero, gate market creation via `creationAccessControl` to deter spam.\n * Mutable post-creation via `updateMarketCreationFee`.\n * @param params.umaRewardAmount - Default reward for UMA asserters (in collateral token units).\n * @param params.umaMinBond - Minimum bond for UMA assertions (in collateral token units).\n * @param params.defaultTickSize - Price increment per tick (always 1e18 scale, e.g. 0.01e18).\n */\n async createVenue(params: {\n name: string;\n metadata: string;\n tradingAccessControl: `0x${string}`;\n creationAccessControl: `0x${string}`;\n feeRecipient: `0x${string}`;\n venueFeeBps: number;\n creatorFeeBps: number;\n defaultTickSize: bigint;\n marketCreationFee: bigint;\n umaRewardAmount: bigint;\n umaMinBond: bigint;\n }) {\n const wallet = this.walletClient;\n const account = await this.getSignerAccount();\n\n const { request } = await this.publicClient.simulateContract({\n address: this.config.diamondAddress,\n abi: VenueFacetABI,\n functionName: 'createVenue',\n args: [\n params.name,\n params.metadata,\n params.tradingAccessControl,\n params.creationAccessControl,\n params.feeRecipient,\n params.venueFeeBps,\n params.creatorFeeBps,\n params.defaultTickSize,\n params.marketCreationFee,\n params.umaRewardAmount,\n params.umaMinBond,\n ],\n account,\n });\n\n return wallet.writeContract(request);\n }\n\n /**\n * Update venue fees\n */\n async updateFees(params: {\n venueId: bigint;\n venueFeeBps: number;\n creatorFeeBps: number;\n }) {\n const wallet = this.walletClient;\n const account = await this.getSignerAccount();\n\n const { request } = await this.publicClient.simulateContract({\n address: this.config.diamondAddress,\n abi: VenueFacetABI,\n functionName: 'updateVenueFees',\n args: [params.venueId, params.venueFeeBps, params.creatorFeeBps],\n account,\n });\n\n return wallet.writeContract(request);\n }\n\n /**\n * Pause venue\n */\n async setPaused(venueId: bigint, paused: boolean) {\n const wallet = this.walletClient;\n const account = await this.getSignerAccount();\n\n const functionName = paused ? 'pauseVenue' : 'unpauseVenue';\n\n const { request } = await this.publicClient.simulateContract({\n address: this.config.diamondAddress,\n abi: VenueFacetABI,\n functionName,\n args: [venueId],\n account,\n });\n\n return wallet.writeContract(request);\n }\n\n /**\n * Get venue data from on-chain storage\n */\n async getVenue(venueId: bigint) {\n return this.publicClient.readContract({\n address: this.config.diamondAddress,\n abi: VenueFacetABI,\n functionName: 'getVenue',\n args: [venueId],\n });\n }\n\n /**\n * Update venue settings (name, metadata, access control, fee recipient)\n */\n async updateVenue(params: {\n venueId: bigint;\n name: string;\n metadata: string;\n tradingAccessControl: `0x${string}`;\n creationAccessControl: `0x${string}`;\n feeRecipient: `0x${string}`;\n }) {\n const wallet = this.walletClient;\n const account = await this.getSignerAccount();\n\n const { request } = await this.publicClient.simulateContract({\n address: this.config.diamondAddress,\n abi: VenueFacetABI,\n functionName: 'updateVenue',\n args: [\n params.venueId,\n params.name,\n params.metadata,\n params.tradingAccessControl,\n params.creationAccessControl,\n params.feeRecipient,\n ],\n account,\n });\n\n return wallet.writeContract(request);\n }\n\n /**\n * Update the upfront market creation fee for a venue. Operator-only.\n *\n * Affects only markets created after this call — existing markets keep their snapshot.\n * Pass `0n` for free creation; if you do, gate `createMarket` via `creationAccessControl`\n * to deter spam.\n *\n * @param params.newFee - New fee in collateral token units (e.g. `parseUnits(\"10\", 6)` for 10 USDC).\n */\n async updateMarketCreationFee(params: { venueId: bigint; newFee: bigint }) {\n const wallet = this.walletClient;\n const account = await this.getSignerAccount();\n\n const { request } = await this.publicClient.simulateContract({\n address: this.config.diamondAddress,\n abi: VenueFacetABI,\n functionName: 'updateVenueMarketCreationFee',\n args: [params.venueId, params.newFee],\n account,\n });\n\n return wallet.writeContract(request);\n }\n\n /**\n * Update venue oracle parameters (UMA reward and min bond)\n */\n async updateOracleParams(params: {\n venueId: bigint;\n umaRewardAmount: bigint;\n umaMinBond: bigint;\n }) {\n const wallet = this.walletClient;\n const account = await this.getSignerAccount();\n\n const { request } = await this.publicClient.simulateContract({\n address: this.config.diamondAddress,\n abi: VenueFacetABI,\n functionName: 'updateVenueOracleParams',\n args: [params.venueId, params.umaRewardAmount, params.umaMinBond],\n account,\n });\n\n return wallet.writeContract(request);\n }\n\n /**\n * Check if a user can trade on a venue (venue-level AC only, no market override).\n */\n async canTrade(user: `0x${string}`, venueId: bigint): Promise<boolean> {\n return this.publicClient.readContract({\n address: this.config.diamondAddress,\n abi: VenueFacetABI,\n functionName: 'canTrade',\n args: [user, venueId],\n }) as Promise<boolean>;\n }\n\n /**\n * Check if a user can create markets on a venue.\n */\n async canCreateMarket(user: `0x${string}`, venueId: bigint): Promise<boolean> {\n return this.publicClient.readContract({\n address: this.config.diamondAddress,\n abi: VenueFacetABI,\n functionName: 'canCreateMarket',\n args: [user, venueId],\n }) as Promise<boolean>;\n }\n\n // ---- Protocol Fee (owner-only) ----\n\n /**\n * Get the current protocol fee in basis points. Snapshotted per market at creation.\n */\n async getProtocolFeeBps(): Promise<bigint> {\n return this.publicClient.readContract({\n address: this.config.diamondAddress,\n abi: ProtocolFacetABI,\n functionName: 'getProtocolFeeBps',\n }) as Promise<bigint>;\n }\n\n /**\n * Set the protocol fee in basis points. Owner-only. Max 200 bps (2%).\n * Only affects markets created after this call (existing markets retain their snapshot).\n */\n async setProtocolFeeBps(bps: bigint) {\n const wallet = this.walletClient;\n const account = await this.getSignerAccount();\n\n const { request } = await this.publicClient.simulateContract({\n address: this.config.diamondAddress,\n abi: ProtocolFacetABI,\n functionName: 'setProtocolFeeBps',\n args: [bps],\n account,\n });\n\n return wallet.writeContract(request);\n }\n}\n","import { parseEther, formatEther } from 'viem';\n\n/**\n * Utility functions for common conversions in OddMaki Protocol\n * These helpers make it easier for frontends to work with the protocol\n * without needing to understand ticks, BigInts, and wei conversions\n */\n\n/** Standard tick size: 1% price increment, 100 price levels (Polymarket/Kalshi standard) */\nexport const TICK_SIZE_STANDARD = 10000000000000000n; // 1e16\n\n/** Fine tick size: 0.1% price increment, 1000 price levels (institutional-grade) */\nexport const TICK_SIZE_FINE = 1000000000000000n; // 1e15\n\n/** All protocol-approved tick sizes */\nexport const VALID_TICK_SIZES = [TICK_SIZE_STANDARD, TICK_SIZE_FINE] as const;\n\n/**\n * Check whether a tick size is in the protocol-approved whitelist.\n * @param tickSize - Tick size in wei (1e15 or 1e16)\n * @returns true if the tick size is valid\n */\nexport function isValidTickSize(tickSize: bigint): boolean {\n return tickSize === TICK_SIZE_STANDARD || tickSize === TICK_SIZE_FINE;\n}\n\n/**\n * Convert a tick value to a human-readable price\n * @param tick - Tick value (e.g., 80 for 0.80)\n * @param tickSize - Optional tick size in 1e18 (defaults to 0.01e18)\n * @returns Price as decimal string (e.g., \"0.80\")\n */\nexport function tickToPrice(tick: bigint, tickSize: bigint = 10000000000000000n): string {\n const price = tick * tickSize;\n return (Number(price) / 1e18).toFixed(2);\n}\n\n/**\n * Convert a human-readable price to a tick value\n * @param price - Price as decimal (e.g., 0.80 or \"0.80\")\n * @returns Tick value as bigint (e.g., 80n)\n */\nexport function priceToTick(price: number | string): bigint {\n const priceNum = typeof price === 'string' ? parseFloat(price) : price;\n return BigInt(Math.round(priceNum * 100));\n}\n\n/**\n * Convert a decimal amount string to the smallest unit based on decimals\n * @param amount - Amount as decimal string (e.g., \"10.5\")\n * @param decimals - Token decimals (default: 18 for ETH-like tokens, use 6 for USDC)\n * @returns BigInt in smallest unit\n *\n * @example\n * parseAmount(\"10.5\") // 10500000000000000000n (18 decimals)\n * parseAmount(\"10.5\", 6) // 10500000n (6 decimals for USDC)\n */\nexport function parseAmount(amount: string, decimals: number = 18): bigint {\n if (decimals === 18) {\n return parseEther(amount);\n }\n\n // Parse amount with custom decimals\n const parts = amount.split('.');\n const wholePart = parts[0] || '0';\n const decimalPart = (parts[1] || '').padEnd(decimals, '0').slice(0, decimals);\n\n return BigInt(wholePart + decimalPart);\n}\n\n/**\n * Convert smallest unit amount to decimal string based on decimals\n * @param amount - Amount in smallest unit (bigint)\n * @param decimals - Token decimals (default: 18 for ETH-like tokens, use 6 for USDC)\n * @returns Decimal string (e.g., \"10.5\")\n *\n * @example\n * formatAmount(10500000000000000000n) // \"10.5\" (18 decimals)\n * formatAmount(10500000n, 6) // \"10.5\" (6 decimals for USDC)\n */\nexport function formatAmount(amount: bigint, decimals: number = 18): string {\n if (decimals === 18) {\n return formatEther(amount);\n }\n\n // Format amount with custom decimals\n const amountStr = amount.toString().padStart(decimals + 1, '0');\n const wholePart = amountStr.slice(0, -decimals) || '0';\n const decimalPart = amountStr.slice(-decimals);\n\n // Remove trailing zeros from decimal part\n const trimmedDecimal = decimalPart.replace(/0+$/, '');\n\n return trimmedDecimal ? `${wholePart}.${trimmedDecimal}` : wholePart;\n}\n\n/**\n * Create an expiry timestamp from duration\n * @param duration - Duration string like \"1h\", \"24h\", \"7d\" or number of seconds\n * @returns Unix timestamp as bigint\n */\nexport function createExpiry(duration: string | number): bigint {\n let seconds: number;\n\n if (typeof duration === 'number') {\n seconds = duration;\n } else {\n // Parse duration strings like \"1h\", \"24h\", \"7d\"\n const match = duration.match(/^(\\d+)([smhd])$/);\n if (!match) {\n throw new Error('Invalid duration format. Use formats like \"1h\", \"24h\", \"7d\"');\n }\n\n const value = parseInt(match[1]);\n const unit = match[2];\n\n const multipliers: Record<string, number> = {\n s: 1,\n m: 60,\n h: 3600,\n d: 86400,\n };\n\n seconds = value * multipliers[unit];\n }\n\n return BigInt(Math.floor(Date.now() / 1000) + seconds);\n}\n\n/**\n * Format a timestamp for display\n * @param timestamp - Unix timestamp (bigint or number)\n * @returns Human-readable date string\n */\nexport function formatTimestamp(timestamp: bigint | number): string {\n const ts = typeof timestamp === 'bigint' ? Number(timestamp) : timestamp;\n return new Date(ts * 1000).toLocaleString();\n}\n\n/**\n * Market question structure\n */\nexport interface MarketQuestion {\n title: string;\n description: string;\n}\n\n/**\n * Parse UMA ancillary data into structured question format\n * @param ancillaryData - Raw ancillary data string from contract/subgraph\n * @returns Parsed question with title and description\n *\n * @example\n * ```typescript\n * const question = parseAncillaryData(\"q:title:Will ETH hit $5k?,description:Market resolves YES if...\");\n * console.log(question.title); // \"Will ETH hit $5k?\"\n * console.log(question.description); // \"Market resolves YES if...\"\n * ```\n */\nexport function parseAncillaryData(ancillaryData: string): MarketQuestion {\n try {\n // Format: \"q:title:TITLE,description:DESC,market_id:N,venue_id:N,initializer:0x...,res_data:...,ooRequester:0x...,chain_id:N\"\n // Title and description can contain commas, so we can't split on all commas.\n // Instead, use the known contract-appended keys as boundaries.\n const CONTRACT_KEY_RE = /,(?:market_id|venue_id|initializer|res_data|ooRequester|chain_id):/;\n\n let title = '';\n let description = '';\n\n // Find where title starts (supports both \"q:title:\" and \"title:\" prefixes)\n const titlePrefix = ancillaryData.match(/^(?:q:)?title:/);\n if (titlePrefix) {\n const afterTitle = ancillaryData.slice(titlePrefix[0].length);\n\n // Title ends at \",description:\" or first contract-appended key\n const descIdx = afterTitle.indexOf(',description:');\n\n if (descIdx >= 0) {\n title = afterTitle.slice(0, descIdx).trim();\n const descRest = afterTitle.slice(descIdx + ',description:'.length);\n const keyMatch = descRest.match(CONTRACT_KEY_RE);\n description = keyMatch\n ? descRest.slice(0, keyMatch.index).trim()\n : descRest.trim();\n } else {\n const keyMatch = afterTitle.match(CONTRACT_KEY_RE);\n title = keyMatch\n ? afterTitle.slice(0, keyMatch.index).trim()\n : afterTitle.trim();\n }\n }\n\n return {\n title: title || ancillaryData, // Fallback to raw data if parsing fails\n description: description || '',\n };\n } catch (e) {\n // If parsing fails, return the raw data as title\n return { title: ancillaryData, description: '' };\n }\n}\n\n/**\n * Format a market question into UMA ancillary data string\n * @param question - Question with title and description\n * @returns Formatted ancillary data string (without market/venue metadata)\n *\n * @example\n * ```typescript\n * const ancillaryData = formatAncillaryData({\n * title: \"Will ETH hit $5k?\",\n * description: \"Market resolves YES if ETH/USD >= $5000 on Coinbase Pro by Dec 31, 2025.\"\n * });\n * // Returns: \"q:title:Will ETH hit $5k?,description:Market resolves YES if...\"\n * ```\n *\n * @note The Controller/UmaAdapter will append additional fields (market_id, venue_id, etc.)\n */\nexport function formatAncillaryData(question: MarketQuestion): string {\n let data = `q:title:${question.title}`;\n if (question.description) {\n data += `,description:${question.description}`;\n }\n return data;\n}\n\n/**\n * Convert a tick value and tick size to a percentage (0-100).\n * Accepts string or number inputs for convenience with subgraph data.\n *\n * @param tick - Tick value (e.g., 55 or \"55\")\n * @param tickSize - Tick size in wei (e.g., 1e16 or \"10000000000000000\")\n * @returns Price as percentage (e.g., 55 for 55%)\n */\nexport function tickToPercentage(tick: string | number, tickSize: string | number): number {\n const tickNum = typeof tick === 'string' ? parseFloat(tick) : tick;\n const tickSizeNum = typeof tickSize === 'string' ? parseFloat(tickSize) : tickSize;\n if (tickNum === 0 || tickSizeNum === 0) return 0;\n const price = (tickNum * tickSizeNum) / 1e18;\n return parseFloat((price * 100).toFixed(2));\n}\n\n/**\n * Subgraph Market entity shape expected by getOutcomePrice.\n */\nexport interface SubgraphMarketPriceData {\n tickSize: string;\n status: string;\n resolvedOutcome?: number | string | null;\n lastPriceTick_0?: string | null;\n lastPriceTick_1?: string | null;\n}\n\n/**\n * Get the current price percentage (0-100) for an outcome in a binary market.\n *\n * Handles three cases:\n * 1. Resolved markets → winning outcome = 100, losing = 0\n * 2. Active markets with YES price → NO = 100 - YES (complement)\n * 3. Active markets with only NO price → YES = 100 - NO\n *\n * @param market - Subgraph Market entity with price/status fields\n * @param outcomeIndex - 0 for YES, 1 for NO\n * @returns Price as percentage (0-100)\n */\nexport function getOutcomePrice(market: SubgraphMarketPriceData, outcomeIndex: number): number {\n const tickSize = market.tickSize || '0';\n\n // Resolved: winning = 100, losing = 0\n if (market.status === 'Resolved' && market.resolvedOutcome != null) {\n return parseInt(String(market.resolvedOutcome)) === outcomeIndex ? 100 : 0;\n }\n\n // Use YES price as canonical, derive NO via complement\n const yesTick = market.lastPriceTick_0;\n if (!yesTick) {\n const noTick = market.lastPriceTick_1;\n if (!noTick) return 0;\n const noPercent = tickToPercentage(noTick, tickSize);\n return outcomeIndex === 1 ? noPercent : (100 - noPercent);\n }\n\n const yesPercent = tickToPercentage(yesTick, tickSize);\n return outcomeIndex === 0 ? yesPercent : (100 - yesPercent);\n}\n\n// ============================================\n// Mark Price Calculation (Polymarket-style)\n// ============================================\n\n/**\n * Top-of-book entry from subgraph TopOfBook entity.\n */\nexport interface TopOfBookEntry {\n outcome: string; // \"0\" or \"1\"\n side: string; // \"BUY\" or \"SELL\"\n topTick: string; // tick value, \"0\" if empty\n}\n\n/**\n * Input for calculateChancePercent — accepts subgraph market data.\n */\nexport interface ChancePercentInput {\n tickSize: string;\n status?: string;\n resolvedOutcome?: number | string | null;\n lastPriceTick_0?: string | null;\n lastPriceTick_1?: string | null;\n lastTradeTimestamp_0?: string | null;\n lastTradeTimestamp_1?: string | null;\n topOfBook?: TopOfBookEntry[];\n}\n\n/** Spread threshold in dollars — matches Polymarket's $0.10 threshold. */\nconst MARK_PRICE_SPREAD_THRESHOLD = 0.10;\n\n/**\n * Calculate the \"chance %\" for a binary market using a Polymarket-style waterfall:\n *\n * 1. **Implied mark price** (midpoint of implied Yes bid/ask) — if spread ≤ $0.10\n * 2. **Last trade** (most recent trade from either side) — if book empty or spread > $0.10\n * 3. **50%** — no data\n *\n * Implied prices account for cross-outcome liquidity via mint/merge paths:\n * - No BUY at tick N → implied Yes ASK at (maxTicks - N) via Mint path\n * - No SELL at tick N → implied Yes BID at (maxTicks - N) via Merge path\n *\n * @param market - Subgraph market data with top-of-book and last trade info\n * @returns Chance percentage (0-100)\n */\nexport function calculateChancePercent(market: ChancePercentInput): number {\n const tickSizeNum = parseFloat(market.tickSize || '0');\n if (tickSizeNum === 0) return 50;\n\n // Resolved markets: winning = 100%, losing = 0%\n if (market.status === 'Resolved' && market.resolvedOutcome != null) {\n return parseInt(String(market.resolvedOutcome)) === 0 ? 100 : 0;\n }\n\n const maxTicks = 1e18 / tickSizeNum;\n\n // Step 1: Try mark price from top-of-book (implied midpoint)\n if (market.topOfBook && market.topOfBook.length > 0) {\n const tob = parseTopOfBook(market.topOfBook);\n const result = computeImpliedMidpoint(tob, maxTicks, tickSizeNum);\n if (result !== null) return result;\n }\n\n // Step 2: Fall back to most recent trade (either side)\n return lastTradeFallback(market, tickSizeNum);\n}\n\n/**\n * Parsed top-of-book values (all in raw tick units).\n */\ninterface ParsedTopOfBook {\n yesBid: number;\n yesAsk: number;\n noBid: number;\n noAsk: number;\n}\n\n/**\n * Parse the TopOfBook array into the 4 values we need.\n */\nfunction parseTopOfBook(entries: TopOfBookEntry[]): ParsedTopOfBook {\n const result: ParsedTopOfBook = { yesBid: 0, yesAsk: 0, noBid: 0, noAsk: 0 };\n\n for (const entry of entries) {\n const tick = parseFloat(entry.topTick || '0');\n const outcome = entry.outcome?.toString();\n const side = entry.side;\n\n if (outcome === '0' && side === 'BUY') result.yesBid = tick;\n else if (outcome === '0' && side === 'SELL') result.yesAsk = tick;\n else if (outcome === '1' && side === 'BUY') result.noBid = tick;\n else if (outcome === '1' && side === 'SELL') result.noAsk = tick;\n }\n\n return result;\n}\n\n/**\n * Compute the implied Yes midpoint from top-of-book data.\n * Returns the chance percentage, or null if we can't compute a valid midpoint.\n */\nfunction computeImpliedMidpoint(\n tob: ParsedTopOfBook,\n maxTicks: number,\n tickSize: number,\n): number | null {\n // Compute implied Yes bid: max(direct Yes bid, complement of No ask via merge)\n const bidCandidates: number[] = [];\n if (tob.yesBid > 0) bidCandidates.push(tob.yesBid);\n if (tob.noAsk > 0) bidCandidates.push(maxTicks - tob.noAsk);\n\n // Compute implied Yes ask: min(direct Yes ask, complement of No bid via mint)\n const askCandidates: number[] = [];\n if (tob.yesAsk > 0) askCandidates.push(tob.yesAsk);\n if (tob.noBid > 0) askCandidates.push(maxTicks - tob.noBid);\n\n // Need both a bid and an ask to compute midpoint\n if (bidCandidates.length === 0 || askCandidates.length === 0) return null;\n\n const impliedBid = Math.max(...bidCandidates);\n const impliedAsk = Math.min(...askCandidates);\n\n // Check spread threshold (in dollar terms)\n const spreadDollars = ((impliedAsk - impliedBid) * tickSize) / 1e18;\n if (spreadDollars > MARK_PRICE_SPREAD_THRESHOLD) return null;\n\n // Midpoint → percentage\n const midTick = (impliedBid + impliedAsk) / 2;\n const percent = (midTick * tickSize / 1e18) * 100;\n return parseFloat(Math.max(0, Math.min(100, percent)).toFixed(2));\n}\n\n/**\n * Fall back to the most recent trade from either side.\n * If per-outcome timestamps are available, use the more recent one.\n * Otherwise, use whichever lastPriceTick is available (with complement derivation for No).\n */\nfunction lastTradeFallback(market: ChancePercentInput, tickSize: number): number {\n const tick0 = parseFloat(market.lastPriceTick_0 || '0');\n const tick1 = parseFloat(market.lastPriceTick_1 || '0');\n const ts0 = parseFloat(market.lastTradeTimestamp_0 || '0');\n const ts1 = parseFloat(market.lastTradeTimestamp_1 || '0');\n\n // Both outcomes have trades: use the more recent one\n if (tick0 > 0 && tick1 > 0) {\n if (ts0 > 0 || ts1 > 0) {\n // Per-outcome timestamps available — use most recent\n if (ts0 >= ts1) {\n return parseFloat(((tick0 * tickSize / 1e18) * 100).toFixed(2));\n }\n // No side is more recent — derive Yes via complement\n return parseFloat(((1 - (tick1 * tickSize / 1e18)) * 100).toFixed(2));\n }\n // No per-outcome timestamps (pre-migration data) — prefer Yes price\n return parseFloat(((tick0 * tickSize / 1e18) * 100).toFixed(2));\n }\n\n // Only Yes traded\n if (tick0 > 0) {\n return parseFloat(((tick0 * tickSize / 1e18) * 100).toFixed(2));\n }\n\n // Only No traded — derive Yes via complement\n if (tick1 > 0) {\n return parseFloat(((1 - (tick1 * tickSize / 1e18)) * 100).toFixed(2));\n }\n\n // No data at all\n return 50;\n}\n","import type { PublicClient, Address } from 'viem';\nimport { parseAmount } from './conversions';\n\n/**\n * Decimal handling utilities for ERC20 tokens\n *\n * IMPORTANT: The OddMaki Protocol uses 1e18 for all internal price calculations,\n * but collateral tokens (like USDC) may use different decimals (e.g., 6).\n *\n * This module provides utilities to correctly handle token decimals when\n * converting between user-facing amounts and contract values.\n */\n\n/**\n * Get the number of decimals for an ERC20 token\n * @param publicClient - Viem public client\n * @param token - Token address\n * @returns Number of decimals (e.g., 6 for USDC, 18 for most ERC20s)\n *\n * @example\n * const decimals = await getTokenDecimals(publicClient, usdcAddress);\n * console.log(decimals); // 6\n */\nexport async function getTokenDecimals(\n publicClient: PublicClient,\n token: Address\n): Promise<number> {\n const decimals = await publicClient.readContract({\n address: token,\n abi: [\n {\n name: 'decimals',\n type: 'function',\n stateMutability: 'view',\n inputs: [],\n outputs: [{ type: 'uint8' }],\n },\n ],\n functionName: 'decimals',\n });\n\n return Number(decimals);\n}\n\n/**\n * Parse a token amount string with validation\n * @param amount - Amount as decimal string (e.g., \"10.5\")\n * @param decimals - Token decimals (e.g., 6 for USDC, 18 for most tokens)\n * @returns BigInt in smallest unit\n * @throws Error if decimals are invalid\n *\n * @example\n * parseTokenAmount(\"10.5\", 6) // 10500000n (USDC)\n * parseTokenAmount(\"10.5\", 18) // 10500000000000000000n (ETH-like)\n */\nexport function parseTokenAmount(\n amount: string,\n decimals: number\n): bigint {\n if (decimals < 0 || decimals > 18) {\n throw new Error(`Invalid decimals: ${decimals}. Must be between 0 and 18.`);\n }\n\n if (!amount || amount.trim() === '') {\n throw new Error('Amount cannot be empty');\n }\n\n return parseAmount(amount, decimals);\n}\n\n/**\n * Cache for token decimals to avoid redundant RPC calls\n * Key format: `${chainId}-${tokenAddress.toLowerCase()}`\n */\nconst decimalsCache = new Map<string, number>();\n\n/**\n * Get token decimals with caching to reduce RPC calls\n * @param publicClient - Viem public client\n * @param token - Token address\n * @returns Number of decimals\n *\n * @example\n * // First call hits RPC\n * const decimals1 = await getCachedTokenDecimals(publicClient, usdcAddress);\n *\n * // Second call uses cache\n * const decimals2 = await getCachedTokenDecimals(publicClient, usdcAddress);\n */\nexport async function getCachedTokenDecimals(\n publicClient: PublicClient,\n token: Address\n): Promise<number> {\n const chainId = await publicClient.getChainId();\n const cacheKey = `${chainId}-${token.toLowerCase()}`;\n\n const cached = decimalsCache.get(cacheKey);\n if (cached !== undefined) {\n return cached;\n }\n\n const decimals = await getTokenDecimals(publicClient, token);\n decimalsCache.set(cacheKey, decimals);\n\n return decimals;\n}\n\n/**\n * Clear the decimals cache (useful for testing or switching networks)\n */\nexport function clearDecimalsCache(): void {\n decimalsCache.clear();\n}\n","import { BaseModule } from './base';\nimport {\n VenueFacetABI,\n MarketsFacetABI,\n MarketGroupFacetABI,\n OrderBookFacetABI,\n NegRiskFacetABI,\n ConditionalTokensABI,\n TagsFacetABI,\n MetadataFacetABI,\n} from '../contracts';\nimport { erc20Abi, stringToHex } from 'viem';\nimport type { Address } from 'viem';\nimport { formatAmount, isValidTickSize, type MarketQuestion } from '../utils/conversions';\nimport { getTokenDecimals } from '../utils/decimals';\n\n// Inline fragment for ERC-1155 isApprovedForAll. Not in the bundled CTF ABI\n// because it was generated from a subset of methods; this avoids having to\n// regenerate the full ABI for a single standard read.\nconst CTF_IS_APPROVED_FOR_ALL_ABI = [\n {\n name: 'isApprovedForAll',\n type: 'function',\n stateMutability: 'view',\n inputs: [\n { name: 'account', type: 'address' },\n { name: 'operator', type: 'address' },\n ],\n outputs: [{ name: '', type: 'bool' }],\n },\n] as const;\n\nexport class MarketModule extends BaseModule {\n /**\n * Format market question into UMA-compliant ancillary data\n * @param question Structured market question with title and description\n * @returns Hex-encoded ancillary data bytes\n * @private\n */\n private formatAncillaryData(question: MarketQuestion): `0x${string}` {\n // Build comma-delimited key:value format (start with \"q:\" prefix)\n let data = `q:title:${question.title}`;\n data += `,description:${question.description}`;\n\n // Convert to hex bytes\n return stringToHex(data);\n }\n\n /**\n * Create a new market\n *\n * IMPORTANT: All bigint amounts must use the collateral token's decimals!\n * - For USDC (6 decimals): Use parseAmount(\"10\", 6) or parseUnits(\"10\", 6)\n * - For 18-decimal tokens: Use parseAmount(\"10\") or parseEther(\"10\")\n *\n * @param params.tickSize - Price increment (typically parseEther(\"0.01\") = 0.01 per tick)\n * @param params.additionalReward - Extra UMA reward in collateral token units (with token decimals!)\n * @param params.liveness - Challenge period in seconds (0 = use 2-hour default)\n */\n async createMarket(params: {\n venueId: bigint;\n question: MarketQuestion;\n outcomes: string[];\n tickSize: bigint;\n collateralToken: Address;\n additionalReward: bigint;\n liveness?: bigint;\n tags?: string[];\n }) {\n const wallet = this.walletClient;\n const account = await this.getSignerAccount();\n const accountAddress = await this.getSignerAddress();\n\n // Pre-flight checks: Market creation fee is determined by venue configuration\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n const venue: any = await this.publicClient.readContract({\n address: this.config.diamondAddress,\n abi: VenueFacetABI,\n functionName: 'getVenue',\n args: [params.venueId],\n });\n\n const feeRequired = BigInt(venue.marketCreationFee);\n const reward = BigInt(venue.umaRewardAmount) + (params.additionalReward ?? 0n);\n const totalRequired = feeRequired + reward;\n\n if (totalRequired > 0n) {\n const allowance = await this.publicClient.readContract({\n address: params.collateralToken,\n abi: erc20Abi,\n functionName: 'allowance',\n args: [accountAddress, this.config.diamondAddress],\n });\n\n if (allowance < totalRequired) {\n throw new Error(\n `Insufficient allowance. Approved: ${allowance.toString()}, Required: ${totalRequired.toString()} (fee: ${feeRequired.toString()}, reward: ${reward.toString()}). Please approve the Diamond (${\n this.config.diamondAddress\n }).`,\n );\n }\n\n const balance = await this.publicClient.readContract({\n address: params.collateralToken,\n abi: erc20Abi,\n functionName: 'balanceOf',\n args: [accountAddress],\n });\n\n if (balance < totalRequired) {\n throw new Error(\n `Insufficient collateral balance. Have: ${balance.toString()}, Required: ${totalRequired.toString()} (fee: ${feeRequired.toString()}, reward: ${reward.toString()}).`,\n );\n }\n }\n\n if (!isValidTickSize(params.tickSize)) {\n throw new Error('Invalid tickSize: must be 1e15 (0.1%) or 1e16 (1%)');\n }\n\n // Format ancillary data\n const ancillaryData = this.formatAncillaryData(params.question);\n\n // Encode tags as bytes32[]\n const encodedTags = (params.tags ?? []).map((t) =>\n stringToHex(t, { size: 32 }),\n );\n\n // Create market (Diamond dropped alpha param)\n const { request } = await this.publicClient.simulateContract({\n address: this.config.diamondAddress,\n abi: MarketsFacetABI,\n functionName: 'createMarket',\n args: [\n params.venueId,\n ancillaryData,\n params.outcomes,\n params.tickSize,\n params.collateralToken,\n params.additionalReward,\n params.liveness ?? 0n,\n encodedTags,\n ],\n account,\n });\n\n return wallet.writeContract(request);\n }\n\n /**\n * Get market registry data (lifecycle, venue, creator, status)\n */\n async getMarketRegistryData(marketId: bigint) {\n return this.publicClient.readContract({\n address: this.config.diamondAddress,\n abi: MarketsFacetABI,\n functionName: 'getMarketRegistryData',\n args: [marketId],\n });\n }\n\n /**\n * Get market trading data (positionIds, volume, lastTradeTick, tickSize, collateral)\n */\n async getMarketTradingData(marketId: bigint) {\n return this.publicClient.readContract({\n address: this.config.diamondAddress,\n abi: MarketsFacetABI,\n functionName: 'getMarketTradingData',\n args: [marketId],\n });\n }\n\n /**\n * Get market oracle data (questionId, conditionId, UMA economics)\n */\n async getMarketOracleData(marketId: bigint) {\n return this.publicClient.readContract({\n address: this.config.diamondAddress,\n abi: MarketsFacetABI,\n functionName: 'getMarketOracleData',\n args: [marketId],\n });\n }\n\n /**\n * Calculate Position ID for a market outcome (for CTF balance queries)\n */\n async getPositionId(marketId: bigint, outcomeIndex: bigint): Promise<bigint> {\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n const tradingData: any = await this.getMarketTradingData(marketId);\n\n const ids = tradingData.positionIds;\n if (!ids || ids.length <= Number(outcomeIndex)) {\n throw new Error('Position ID not found in trading data');\n }\n\n return BigInt(ids[Number(outcomeIndex)]);\n }\n\n /**\n * Get best prices (Top of Book) for all outcomes\n * Returns the raw tick values.\n */\n async getBestPrices(marketId: bigint) {\n const getTick = async (outcome: number, side: number) => {\n return (await this.publicClient.readContract({\n address: this.config.diamondAddress,\n abi: OrderBookFacetABI,\n functionName: 'getTopOfBook',\n args: [marketId, BigInt(outcome), side],\n })) as bigint;\n };\n\n // Fetch relevant ticks: YES Ask, YES Bid, NO Ask, NO Bid\n const [yesAsk, yesBid, noAsk, noBid] = await Promise.all([\n getTick(0, 1), // YES Ask\n getTick(0, 0), // YES Bid\n getTick(1, 1), // NO Ask\n getTick(1, 0), // NO Bid\n ]);\n\n return {\n yesAsk,\n yesBid,\n noAsk,\n noBid,\n };\n }\n\n /**\n * Get user's outcome token balances for a market\n * @param params.formatted - If true, returns decimal strings instead of BigInt (recommended for frontends)\n *\n * @dev Outcome tokens use the same decimals as the collateral token.\n * CTF inherits decimals from the underlying collateral.\n */\n async getUserBalances(\n marketId: bigint,\n user: Address,\n params?: { formatted?: boolean },\n ) {\n const formatted = params?.formatted ?? false;\n\n // Get market trading data to determine collateral token\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n const tradingData: any = await this.getMarketTradingData(marketId);\n const collateralToken = tradingData.collateralToken as Address;\n\n // Get collateral decimals\n const decimals = await getTokenDecimals(this.publicClient, collateralToken);\n\n const yesPositionId = await this.getPositionId(marketId, 0n);\n const noPositionId = await this.getPositionId(marketId, 1n);\n\n const [yesBalance, noBalance] = await Promise.all([\n this.publicClient.readContract({\n address: this.config.conditionalTokensAddress,\n abi: ConditionalTokensABI,\n functionName: 'balanceOf',\n args: [user, yesPositionId],\n }),\n this.publicClient.readContract({\n address: this.config.conditionalTokensAddress,\n abi: ConditionalTokensABI,\n functionName: 'balanceOf',\n args: [user, noPositionId],\n }),\n ]);\n\n if (formatted) {\n return {\n YES: formatAmount(yesBalance as bigint, decimals),\n NO: formatAmount(noBalance as bigint, decimals),\n };\n }\n\n return {\n YES: yesBalance as bigint,\n NO: noBalance as bigint,\n };\n }\n\n /**\n * Get market prices directly from on-chain data (RPC)\n * This bypasses the subgraph for guaranteed fresh pricing\n *\n * Uses mark price from the orderbook (mid-point of best bid/ask)\n * Falls back to last trade tick if no orderbook liquidity\n *\n * Returns prices in decimal format (e.g., \"0.80\" for 80%)\n */\n async getMarketPricesRPC(marketId: bigint) {\n try {\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n const tradingData: any = await this.getMarketTradingData(marketId);\n const tickSize = BigInt(tradingData.tickSize);\n\n // Try mark price first (orderbook mid-point)\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n const [markPrice0, markPrice1]: any[] = await Promise.all([\n this.publicClient.readContract({\n address: this.config.diamondAddress,\n abi: OrderBookFacetABI,\n functionName: 'getMarkPrice',\n args: [marketId, 0n],\n }),\n this.publicClient.readContract({\n address: this.config.diamondAddress,\n abi: OrderBookFacetABI,\n functionName: 'getMarkPrice',\n args: [marketId, 1n],\n }),\n ]);\n\n // getMarkPrice returns (priceTick, isDefined)\n const tick0 = BigInt(markPrice0[0]);\n const isDefined0 = markPrice0[1] as boolean;\n const tick1 = BigInt(markPrice1[0]);\n const isDefined1 = markPrice1[1] as boolean;\n\n if (isDefined0 || isDefined1) {\n const price0Raw = tick0 * tickSize;\n const price1Raw = tick1 * tickSize;\n const yesPrice = isDefined0 ? (Number(price0Raw) / 1e18).toFixed(2) : '0.50';\n const noPrice = isDefined1 ? (Number(price1Raw) / 1e18).toFixed(2) : '0.50';\n\n return {\n YES: yesPrice,\n NO: noPrice,\n source: 'rpc' as const,\n volume: {\n YES: tradingData.totalVolume[0].toString(),\n NO: tradingData.totalVolume[1].toString(),\n },\n timestamp: Date.now(),\n };\n }\n\n // Fallback: use last trade ticks\n const lastTick0 = BigInt(tradingData.lastTradeTick[0]);\n const lastTick1 = BigInt(tradingData.lastTradeTick[1]);\n\n if (lastTick0 > 0n || lastTick1 > 0n) {\n const yesPrice = lastTick0 > 0n\n ? (Number(lastTick0 * tickSize) / 1e18).toFixed(2)\n : '0.50';\n const noPrice = lastTick1 > 0n\n ? (Number(lastTick1 * tickSize) / 1e18).toFixed(2)\n : '0.50';\n\n return {\n YES: yesPrice,\n NO: noPrice,\n source: 'rpc' as const,\n volume: {\n YES: tradingData.totalVolume[0].toString(),\n NO: tradingData.totalVolume[1].toString(),\n },\n timestamp: Date.now(),\n };\n }\n\n // Default\n return {\n YES: '0.50',\n NO: '0.50',\n source: 'default' as const,\n volume: { YES: '0', NO: '0' },\n timestamp: null,\n };\n } catch (error) {\n console.error('[SDK] RPC price fetch error:', error);\n return {\n YES: '0.50',\n NO: '0.50',\n source: 'default' as const,\n volume: { YES: '0', NO: '0' },\n timestamp: null,\n };\n }\n }\n\n // ============================================\n // Market Groups\n // ============================================\n\n /**\n * Create a new market group (parent metadata only, no markets yet)\n *\n * @param params.question - Market question (e.g., \"Where will Giannis be traded?\")\n * @param params.description - Resolution criteria (shared by all markets)\n * @param params.collateralToken - Collateral token for all markets in group\n * @param params.tickSize - Price increment (same for all markets)\n * @param params.additionalReward - Additional UMA reward in collateral token units\n * @param params.liveness - Challenge period in seconds (0 = use 2-hour default)\n * @returns Transaction hash\n */\n async createMarketGroup(params: {\n venueId: bigint;\n question: string;\n description: string;\n collateralToken: Address;\n tickSize: bigint;\n additionalReward: bigint;\n liveness?: bigint;\n tags?: string[];\n }) {\n const wallet = this.walletClient;\n const account = await this.getSignerAccount();\n const accountAddress = await this.getSignerAddress();\n\n // Pre-flight checks: Market creation fee (same as regular market)\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n const venue: any = await this.publicClient.readContract({\n address: this.config.diamondAddress,\n abi: VenueFacetABI,\n functionName: 'getVenue',\n args: [params.venueId],\n });\n\n const feeRequired = BigInt(venue.marketCreationFee);\n const reward = BigInt(venue.umaRewardAmount) + (params.additionalReward ?? 0n);\n const totalRequired = feeRequired + reward;\n\n if (totalRequired > 0n) {\n const allowance = await this.publicClient.readContract({\n address: params.collateralToken,\n abi: erc20Abi,\n functionName: 'allowance',\n args: [accountAddress, this.config.diamondAddress],\n });\n\n if (allowance < totalRequired) {\n throw new Error(\n `Insufficient allowance. Approved: ${allowance.toString()}, Required: ${totalRequired.toString()} (fee: ${feeRequired.toString()}, reward: ${reward.toString()}). Please approve the Diamond (${\n this.config.diamondAddress\n }).`,\n );\n }\n\n const balance = await this.publicClient.readContract({\n address: params.collateralToken,\n abi: erc20Abi,\n functionName: 'balanceOf',\n args: [accountAddress],\n });\n\n if (balance < totalRequired) {\n throw new Error(\n `Insufficient collateral balance. Have: ${balance.toString()}, Required: ${totalRequired.toString()} (fee: ${feeRequired.toString()}, reward: ${reward.toString()}).`,\n );\n }\n }\n\n if (!isValidTickSize(params.tickSize)) {\n throw new Error('Invalid tickSize: must be 1e15 (0.1%) or 1e16 (1%)');\n }\n\n // Encode tags as bytes32[]\n const groupTags = (params.tags ?? []).map((t) =>\n stringToHex(t, { size: 32 }),\n );\n\n // Create market group (Diamond dropped alpha param)\n const { request } = await this.publicClient.simulateContract({\n address: this.config.diamondAddress,\n abi: MarketGroupFacetABI,\n functionName: 'createMarketGroup',\n args: [\n params.venueId,\n params.question,\n params.description,\n params.collateralToken,\n params.tickSize,\n params.additionalReward,\n params.liveness ?? 0n,\n groupTags,\n ],\n account,\n });\n\n return wallet.writeContract(request);\n }\n\n /**\n * Add a market to a Draft market group\n */\n async addMarketToGroup(params: {\n marketGroupId: bigint;\n marketName: string;\n marketQuestion: string;\n }) {\n const wallet = this.walletClient;\n const account = await this.getSignerAccount();\n\n const { request } = await this.publicClient.simulateContract({\n address: this.config.diamondAddress,\n abi: MarketsFacetABI,\n functionName: 'addMarket',\n args: [params.marketGroupId, params.marketName, params.marketQuestion],\n account,\n });\n\n return wallet.writeContract(request);\n }\n\n /**\n * Add placeholder markets to a Draft market group\n */\n async addPlaceholderMarkets(params: {\n marketGroupId: bigint;\n count: bigint;\n }) {\n const wallet = this.walletClient;\n const account = await this.getSignerAccount();\n\n if (params.count < 1n || params.count > 50n) {\n throw new Error('Count must be between 1 and 50');\n }\n\n const { request } = await this.publicClient.simulateContract({\n address: this.config.diamondAddress,\n abi: MarketsFacetABI,\n functionName: 'addPlaceholderMarkets',\n args: [params.marketGroupId, params.count],\n account,\n });\n\n return wallet.writeContract(request);\n }\n\n /**\n * Activate a placeholder market with real question\n */\n async activatePlaceholder(params: {\n marketGroupId: bigint;\n marketId: bigint;\n marketName: string;\n marketQuestion: string;\n }) {\n const wallet = this.walletClient;\n const account = await this.getSignerAccount();\n\n const { request } = await this.publicClient.simulateContract({\n address: this.config.diamondAddress,\n abi: MarketsFacetABI,\n functionName: 'activatePlaceholder',\n args: [\n params.marketGroupId,\n params.marketId,\n params.marketName,\n params.marketQuestion,\n ],\n account,\n });\n\n return wallet.writeContract(request);\n }\n\n /**\n * Activate a market group (locks totalMarkets, enables trading)\n */\n async activateMarketGroup(params: { marketGroupId: bigint }) {\n const wallet = this.walletClient;\n const account = await this.getSignerAccount();\n\n const { request } = await this.publicClient.simulateContract({\n address: this.config.diamondAddress,\n abi: MarketGroupFacetABI,\n functionName: 'activateMarketGroup',\n args: [params.marketGroupId],\n account,\n });\n\n return wallet.writeContract(request);\n }\n\n /**\n * Convert NO positions to complementary YES positions + collateral\n *\n * Formula: N NO positions → (M-N) YES positions + (N-1) collateral\n */\n async convertPositions(params: {\n marketGroupId: bigint;\n indexSet: bigint;\n amount: bigint;\n }) {\n const wallet = this.walletClient;\n const account = await this.getSignerAccount();\n const accountAddress = await this.getSignerAddress();\n\n // Check CTF approval for Diamond\n const isApproved = await this.publicClient.readContract({\n address: this.config.conditionalTokensAddress,\n abi: CTF_IS_APPROVED_FOR_ALL_ABI,\n functionName: 'isApprovedForAll',\n args: [accountAddress, this.config.diamondAddress],\n });\n\n if (!isApproved) {\n throw new Error(\n `CTF tokens not approved for Diamond. Please call: ctf.setApprovalForAll(\"${this.config.diamondAddress}\", true)`,\n );\n }\n\n // Get group data to extract conditionIds and collateralToken\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n const groupData: any = await this.publicClient.readContract({\n address: this.config.diamondAddress,\n abi: MarketGroupFacetABI,\n functionName: 'getMarketGroup',\n args: [params.marketGroupId],\n });\n\n // Get conditionIds for all markets in the group\n const marketIds: bigint[] = groupData.marketIds;\n const conditionIds: `0x${string}`[] = [];\n for (const mid of marketIds) {\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n const oracleData: any = await this.getMarketOracleData(mid);\n conditionIds.push(oracleData.conditionId);\n }\n\n const { request } = await this.publicClient.simulateContract({\n address: this.config.diamondAddress,\n abi: NegRiskFacetABI,\n functionName: 'convertPositions',\n args: [conditionIds, groupData.collateralToken, params.indexSet, params.amount],\n account,\n });\n\n return wallet.writeContract(request);\n }\n\n /**\n * Get market group data\n */\n async getMarketGroup(marketGroupId: bigint) {\n return this.publicClient.readContract({\n address: this.config.diamondAddress,\n abi: MarketGroupFacetABI,\n functionName: 'getMarketGroup',\n args: [marketGroupId],\n });\n }\n\n /**\n * Get all market IDs in a group\n */\n async getGroupMarketIds(marketGroupId: bigint) {\n return this.publicClient.readContract({\n address: this.config.diamondAddress,\n abi: MarketGroupFacetABI,\n functionName: 'getGroupMarketIds',\n args: [marketGroupId],\n });\n }\n\n /**\n * Get market group item data (group-specific metadata)\n */\n async getMarketGroupItem(marketId: bigint) {\n return this.publicClient.readContract({\n address: this.config.diamondAddress,\n abi: MarketGroupFacetABI,\n functionName: 'getMarketGroupItem',\n args: [marketId],\n });\n }\n\n /**\n * Get market prices using subgraph data with orderbook fallback\n *\n * Price hierarchy:\n * 1. Last trade price (from Normal fills or Market orders)\n * 2. Orderbook-derived price (best execution cost)\n * 3. Default 50/50 (no information)\n */\n async getMarketPrices(marketId: bigint) {\n // Fetch market data from subgraph\n const query = `\n query GetMarketPrices($marketId: BigInt!) {\n markets(where: { marketId: $marketId }) {\n tickSize\n lastPriceTick_0\n lastPriceTick_1\n lastTradeTimestamp\n }\n }\n `;\n\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n const result: any = await this.subgraph.request(query, {\n marketId: marketId.toString(),\n });\n const market = result.markets?.[0];\n\n if (!market) {\n return {\n YES: '0.50',\n NO: '0.50',\n source: 'default' as const,\n timestamp: null,\n };\n }\n\n // Priority 1: Use last trade prices\n const hasLastPrices = market?.lastPriceTick_0 || market?.lastPriceTick_1;\n const tickSize = BigInt(market.tickSize || '10000000000000000');\n\n if (hasLastPrices) {\n let yesPrice = 0.5;\n let noPrice = 0.5;\n\n if (market.lastPriceTick_0 && market.lastPriceTick_0 !== '0') {\n const yesPriceBigInt = BigInt(market.lastPriceTick_0) * tickSize;\n yesPrice = Number(yesPriceBigInt) / 1e18;\n noPrice = 1 - yesPrice;\n } else if (market.lastPriceTick_1 && market.lastPriceTick_1 !== '0') {\n const noPriceBigInt = BigInt(market.lastPriceTick_1) * tickSize;\n noPrice = Number(noPriceBigInt) / 1e18;\n yesPrice = 1 - noPrice;\n }\n\n return {\n YES: yesPrice.toFixed(2),\n NO: noPrice.toFixed(2),\n source: 'trade' as const,\n timestamp: market.lastTradeTimestamp,\n };\n }\n\n // Priority 2: Derive from orderbook (best execution cost for buyers)\n const { yesAsk, yesBid, noAsk, noBid } = await this.getBestPrices(marketId);\n\n const hasOrderbook = yesAsk > 0n || yesBid > 0n || noAsk > 0n || noBid > 0n;\n\n if (hasOrderbook) {\n const calcBuyPrice = (\n bestAsk: bigint,\n complementBestBid: bigint,\n ): number => {\n if (bestAsk > 0n) {\n return Number(bestAsk * tickSize) / 1e18;\n }\n if (complementBestBid > 0n) {\n const bidPrice = Number(complementBestBid * tickSize) / 1e18;\n return 1 - bidPrice;\n }\n return 0.5;\n };\n\n const yesPrice = calcBuyPrice(yesAsk, noBid);\n const noPrice = calcBuyPrice(noAsk, yesBid);\n\n return {\n YES: yesPrice.toFixed(2),\n NO: noPrice.toFixed(2),\n source: 'orderbook' as const,\n timestamp: null,\n };\n }\n\n // Priority 3: Default (no information available)\n return {\n YES: '0.50',\n NO: '0.50',\n source: 'default' as const,\n timestamp: null,\n };\n }\n\n // ============================================\n // Market Moderation\n // ============================================\n\n /**\n * Pause a market. Blocks trading but allows order cancellations.\n * Only the venue operator can call this.\n */\n async pauseMarket(marketId: bigint) {\n const wallet = this.walletClient;\n const account = await this.getSignerAccount();\n\n const { request } = await this.publicClient.simulateContract({\n address: this.config.diamondAddress,\n abi: MarketsFacetABI,\n functionName: 'pauseMarket',\n args: [marketId],\n account,\n });\n\n return wallet.writeContract(request);\n }\n\n /**\n * Unpause a market. Resumes trading.\n * Only the venue operator can call this.\n */\n async unpauseMarket(marketId: bigint) {\n const wallet = this.walletClient;\n const account = await this.getSignerAccount();\n\n const { request } = await this.publicClient.simulateContract({\n address: this.config.diamondAddress,\n abi: MarketsFacetABI,\n functionName: 'unpauseMarket',\n args: [marketId],\n account,\n });\n\n return wallet.writeContract(request);\n }\n\n // ============================================\n // Tags\n // ============================================\n\n /**\n * Update tags for a standalone market (event-only, no storage)\n * Only the market creator can call this.\n */\n async updateMarketTags(params: {\n marketId: bigint;\n tags: string[];\n }) {\n const wallet = this.walletClient;\n const account = await this.getSignerAccount();\n\n const encodedTags = params.tags.map((t) =>\n stringToHex(t, { size: 32 }),\n );\n\n const { request } = await this.publicClient.simulateContract({\n address: this.config.diamondAddress,\n abi: TagsFacetABI,\n functionName: 'updateMarketTags',\n args: [params.marketId, encodedTags],\n account,\n });\n\n return wallet.writeContract(request);\n }\n\n /**\n * Update tags for a market group (event-only, no storage)\n * Only the group creator can call this.\n */\n async updateMarketGroupTags(params: {\n marketGroupId: bigint;\n tags: string[];\n }) {\n const wallet = this.walletClient;\n const account = await this.getSignerAccount();\n\n const encodedTags = params.tags.map((t) =>\n stringToHex(t, { size: 32 }),\n );\n\n const { request } = await this.publicClient.simulateContract({\n address: this.config.diamondAddress,\n abi: TagsFacetABI,\n functionName: 'updateMarketGroupTags',\n args: [params.marketGroupId, encodedTags],\n account,\n });\n\n return wallet.writeContract(request);\n }\n\n // ============================================\n // Metadata\n // ============================================\n\n /**\n * Update metadata URI for a standalone market (event-only, no storage)\n * Only the market creator can call this.\n */\n async updateMarketMetadata(params: {\n marketId: bigint;\n metadataURI: string;\n }) {\n const wallet = this.walletClient;\n const account = await this.getSignerAccount();\n\n const { request } = await this.publicClient.simulateContract({\n address: this.config.diamondAddress,\n abi: MetadataFacetABI,\n functionName: 'updateMarketMetadata',\n args: [params.marketId, params.metadataURI],\n account,\n });\n\n return wallet.writeContract(request);\n }\n\n /**\n * Update metadata URI for a market group (event-only, no storage)\n * Only the group creator can call this.\n */\n async updateMarketGroupMetadata(params: {\n marketGroupId: bigint;\n metadataURI: string;\n }) {\n const wallet = this.walletClient;\n const account = await this.getSignerAccount();\n\n const { request } = await this.publicClient.simulateContract({\n address: this.config.diamondAddress,\n abi: MetadataFacetABI,\n functionName: 'updateMarketGroupMetadata',\n args: [params.marketGroupId, params.metadataURI],\n account,\n });\n\n return wallet.writeContract(request);\n }\n}\n","import { BaseModule } from './base';\nimport {\n LimitOrdersFacetABI,\n MatchingFacetABI,\n OrderBookFacetABI,\n MarketOrdersFacetABI,\n MarketsFacetABI,\n VaultFacetABI,\n BatchOrdersFacetABI,\n} from '../contracts';\nimport {\n tickToPrice,\n formatAmount,\n priceToTick,\n parseAmount,\n createExpiry,\n} from '../utils/conversions';\nimport { getCachedTokenDecimals, parseTokenAmount } from '../utils/decimals';\nimport type { Address } from 'viem';\n\nexport class TradeModule extends BaseModule {\n /**\n * Place a limit order\n * Use placeOrderSimple() for string-based inputs (recommended for frontends)\n */\n async placeOrder(params: {\n marketId: bigint;\n outcomeId: bigint;\n side: number; // 0 = BUY, 1 = SELL\n tick: bigint;\n qty: bigint;\n expiry: bigint;\n }) {\n const wallet = this.walletClient;\n const account = await this.getSignerAccount();\n\n const { request } = await this.publicClient.simulateContract({\n address: this.config.diamondAddress,\n abi: LimitOrdersFacetABI,\n functionName: 'placeOrder',\n args: [\n params.marketId,\n params.outcomeId,\n params.side,\n params.tick,\n params.qty,\n params.expiry,\n ],\n account,\n });\n\n return wallet.writeContract(request);\n }\n\n /**\n * Place a limit order with simple string inputs (recommended for frontends)\n * @param params.price - Price as decimal string (e.g., \"0.75\")\n * @param params.quantity - Quantity as decimal string (e.g., \"100.5\")\n * @param params.expiry - Expiry as duration string (e.g., \"1h\", \"24h\") or bigint timestamp\n *\n * NOTE: Outcome token amounts use the same decimals as the collateral token\n * (e.g., 6 for USDC) because splitPosition creates tokens 1:1 with collateral.\n */\n async placeOrderSimple(params: {\n marketId: bigint;\n outcomeId: bigint;\n side: number;\n price: string;\n quantity: string;\n expiry: string | bigint;\n }) {\n // Read market trading data to get collateral token decimals\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n const tradingData: any = await this.publicClient.readContract({\n address: this.config.diamondAddress,\n abi: MarketsFacetABI,\n functionName: 'getMarketTradingData',\n args: [params.marketId],\n });\n\n const collateralToken = tradingData.collateralToken as Address;\n const decimals = await getCachedTokenDecimals(this.publicClient, collateralToken);\n\n const tick = priceToTick(params.price);\n const qty = parseTokenAmount(params.quantity, decimals);\n\n const expiry =\n typeof params.expiry === 'string'\n ? (params.expiry === 'gtc' ? BigInt(0) : createExpiry(params.expiry))\n : params.expiry;\n\n return this.placeOrder({\n marketId: params.marketId,\n outcomeId: params.outcomeId,\n side: params.side,\n tick,\n qty,\n expiry,\n });\n }\n\n /**\n * Cancel an order\n */\n async cancelOrder(orderId: bigint) {\n const wallet = this.walletClient;\n const account = await this.getSignerAccount();\n\n const { request } = await this.publicClient.simulateContract({\n address: this.config.diamondAddress,\n abi: LimitOrdersFacetABI,\n functionName: 'cancelOrder',\n args: [orderId],\n account,\n });\n\n return wallet.writeContract(request);\n }\n\n /**\n * Cancel all remaining orders on a resolved market in a single transaction.\n * Regular cancelOrder / batchCancelOrders revert once the market is no longer\n * active, so this is the only way to clear stale orders post-resolution.\n * @param marketId - The resolved market\n * @param orderIds - Order IDs to cancel (must belong to caller)\n */\n async cancelOrdersOnResolvedMarket(marketId: bigint, orderIds: bigint[]) {\n const wallet = this.walletClient;\n const account = await this.getSignerAccount();\n\n const { request } = await this.publicClient.simulateContract({\n address: this.config.diamondAddress,\n abi: LimitOrdersFacetABI,\n functionName: 'cancelOrdersOnResolvedMarket',\n args: [marketId, orderIds],\n account,\n });\n\n return wallet.writeContract(request);\n }\n\n /**\n * Execute a market order (FOK or FAK)\n *\n * @param params.marketId - The market to buy on\n * @param params.outcomeId - Which outcome to buy (0=YES, 1=NO)\n * @param params.collateralAmount - Amount of collateral to spend\n * @param params.maxPriceTick - Maximum price tick willing to pay (slippage protection)\n * @param params.orderType - 0=FOK (Fill-Or-Kill), 1=FAK (Fill-And-Kill)\n */\n async placeMarketOrder(params: {\n marketId: bigint;\n outcomeId: bigint;\n collateralAmount: bigint;\n maxPriceTick: bigint;\n orderType: number; // 0 = FOK, 1 = FAK\n }) {\n const wallet = this.walletClient;\n const account = await this.getSignerAccount();\n\n const { request } = await this.publicClient.simulateContract({\n address: this.config.diamondAddress,\n abi: MarketOrdersFacetABI,\n functionName: 'placeMarketOrder',\n args: [\n params.marketId,\n params.outcomeId,\n params.collateralAmount,\n params.maxPriceTick,\n params.orderType,\n ],\n account,\n });\n\n return wallet.writeContract(request);\n }\n\n /**\n * Execute a market order with simple string input (recommended for frontends)\n * @param params.amount - Collateral amount as decimal string (e.g., \"10.5\")\n * @param params.maxPrice - Maximum price as decimal string (e.g., \"0.85\")\n * @param params.orderType - 'FOK' or 'FAK' (default: 'FAK')\n */\n async placeMarketOrderSimple(params: {\n marketId: bigint;\n outcomeId: bigint;\n amount: string;\n maxPrice: string;\n orderType?: 'FOK' | 'FAK';\n }) {\n // Get market trading data to determine collateral token\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n const tradingData: any = await this.publicClient.readContract({\n address: this.config.diamondAddress,\n abi: MarketsFacetABI,\n functionName: 'getMarketTradingData',\n args: [params.marketId],\n });\n\n const collateralToken = tradingData.collateralToken as Address;\n const decimals = await getCachedTokenDecimals(this.publicClient, collateralToken);\n const collateralAmount = parseTokenAmount(params.amount, decimals);\n const maxPriceTick = priceToTick(params.maxPrice);\n const orderType = params.orderType === 'FOK' ? 0 : 1;\n\n return this.placeMarketOrder({\n marketId: params.marketId,\n outcomeId: params.outcomeId,\n collateralAmount,\n maxPriceTick,\n orderType,\n });\n }\n\n /**\n * Preview a market order (simulate transaction)\n */\n async previewMarketOrder(params: {\n marketId: bigint;\n outcomeId: bigint;\n collateralAmount: bigint;\n maxPriceTick: bigint;\n orderType: number;\n }) {\n const wallet = this.walletClient;\n const account = await this.getSignerAccount();\n\n const { result } = await this.publicClient.simulateContract({\n address: this.config.diamondAddress,\n abi: MarketOrdersFacetABI,\n functionName: 'placeMarketOrder',\n args: [\n params.marketId,\n params.outcomeId,\n params.collateralAmount,\n params.maxPriceTick,\n params.orderType,\n ],\n account,\n });\n\n return result;\n }\n\n /**\n * Preview placing an order (simulate transaction to check for reverts)\n */\n async previewPlaceOrder(params: {\n marketId: bigint;\n outcomeId: bigint;\n side: number;\n tick: bigint;\n qty: bigint;\n expiry: bigint;\n }) {\n const wallet = this.walletClient;\n const account = await this.getSignerAccount();\n\n const { result } = await this.publicClient.simulateContract({\n address: this.config.diamondAddress,\n abi: LimitOrdersFacetABI,\n functionName: 'placeOrder',\n args: [\n params.marketId,\n params.outcomeId,\n params.side,\n params.tick,\n params.qty,\n params.expiry,\n ],\n account,\n });\n\n return result;\n }\n\n /**\n * Execute a market sell order (FOK or FAK)\n *\n * @param params.marketId - The market to sell on\n * @param params.outcomeId - Which outcome to sell (0=YES, 1=NO)\n * @param params.tokenAmount - Amount of outcome tokens to sell\n * @param params.minPriceTick - Minimum price tick willing to accept (slippage protection)\n * @param params.orderType - 0=FOK (Fill-Or-Kill), 1=FAK (Fill-And-Kill)\n */\n async placeMarketSell(params: {\n marketId: bigint;\n outcomeId: bigint;\n tokenAmount: bigint;\n minPriceTick: bigint;\n orderType: number; // 0 = FOK, 1 = FAK\n }) {\n const wallet = this.walletClient;\n const account = await this.getSignerAccount();\n\n const { request } = await this.publicClient.simulateContract({\n address: this.config.diamondAddress,\n abi: MarketOrdersFacetABI,\n functionName: 'placeMarketSell',\n args: [\n params.marketId,\n params.outcomeId,\n params.tokenAmount,\n params.minPriceTick,\n params.orderType,\n ],\n account,\n });\n\n return wallet.writeContract(request);\n }\n\n /**\n * Execute a market sell order with simple string inputs (recommended for frontends)\n * @param params.amount - Token amount as decimal string (e.g., \"100.5\")\n * @param params.minPrice - Minimum price as decimal string (e.g., \"0.70\")\n * @param params.orderType - 'FOK' or 'FAK' (default: 'FAK')\n */\n async placeMarketSellSimple(params: {\n marketId: bigint;\n outcomeId: bigint;\n amount: string;\n minPrice: string;\n orderType?: 'FOK' | 'FAK';\n }) {\n // Get market trading data to determine collateral token decimals\n // (outcome tokens use same decimals as collateral)\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n const tradingData: any = await this.publicClient.readContract({\n address: this.config.diamondAddress,\n abi: MarketsFacetABI,\n functionName: 'getMarketTradingData',\n args: [params.marketId],\n });\n\n const collateralToken = tradingData.collateralToken as Address;\n const decimals = await getCachedTokenDecimals(this.publicClient, collateralToken);\n const tokenAmount = parseTokenAmount(params.amount, decimals);\n const minPriceTick = priceToTick(params.minPrice);\n const orderType = params.orderType === 'FOK' ? 0 : 1;\n\n return this.placeMarketSell({\n marketId: params.marketId,\n outcomeId: params.outcomeId,\n tokenAmount,\n minPriceTick,\n orderType,\n });\n }\n\n /**\n * Preview a market sell order (simulate transaction)\n */\n async previewMarketSell(params: {\n marketId: bigint;\n outcomeId: bigint;\n tokenAmount: bigint;\n minPriceTick: bigint;\n orderType: number;\n }) {\n const wallet = this.walletClient;\n const account = await this.getSignerAccount();\n\n const { result } = await this.publicClient.simulateContract({\n address: this.config.diamondAddress,\n abi: MarketOrdersFacetABI,\n functionName: 'placeMarketSell',\n args: [\n params.marketId,\n params.outcomeId,\n params.tokenAmount,\n params.minPriceTick,\n params.orderType,\n ],\n account,\n });\n\n return result;\n }\n\n /**\n * Watch for MarketOrderExecuted events\n */\n watchMarketOrder(\n marketId: bigint,\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n onLogs: (logs: any[]) => void\n ) {\n return this.publicClient.watchContractEvent({\n address: this.config.diamondAddress,\n abi: MarketOrdersFacetABI,\n eventName: 'MarketOrderExecuted',\n args: { marketId },\n onLogs,\n });\n }\n\n /**\n * Watch for MarketSellExecuted events\n */\n watchMarketSell(\n marketId: bigint,\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n onLogs: (logs: any[]) => void\n ) {\n return this.publicClient.watchContractEvent({\n address: this.config.diamondAddress,\n abi: MarketOrdersFacetABI,\n eventName: 'MarketSellExecuted',\n args: { marketId },\n onLogs,\n });\n }\n\n /**\n * Check whether any orders are matchable in the given market.\n * Returns a preview of which fill paths have crossing conditions,\n * plus top-of-book snapshot and head-order expiry flags.\n * Free off-chain (view function) — call before submitting matchOrders txs.\n */\n async canMatchOrders(marketId: bigint) {\n return this.publicClient.readContract({\n address: this.config.diamondAddress,\n abi: OrderBookFacetABI,\n functionName: 'canMatchOrders',\n args: [marketId],\n });\n }\n\n /**\n * Manually trigger order matching for a market\n */\n async matchOrders(params: { marketId: bigint; maxSteps?: bigint }) {\n const wallet = this.walletClient;\n const account = await this.getSignerAccount();\n\n const maxSteps = params.maxSteps || 10n;\n\n const { request } = await this.publicClient.simulateContract({\n address: this.config.diamondAddress,\n abi: MatchingFacetABI,\n functionName: 'matchOrders',\n args: [params.marketId, maxSteps],\n account,\n });\n\n return wallet.writeContract(request);\n }\n\n /**\n * Get order details by ID\n */\n async getOrder(orderId: bigint) {\n return this.publicClient.readContract({\n address: this.config.diamondAddress,\n abi: LimitOrdersFacetABI,\n functionName: 'getOrder',\n args: [orderId],\n });\n }\n\n /**\n * Get tick level details (orders at a specific price)\n */\n async getTickLevel(params: {\n marketId: bigint;\n outcomeId: bigint;\n side: number; // 0 = BUY, 1 = SELL\n tick: bigint;\n }) {\n return this.publicClient.readContract({\n address: this.config.diamondAddress,\n abi: OrderBookFacetABI,\n functionName: 'getTickLevel',\n args: [params.marketId, params.outcomeId, params.side, params.tick],\n });\n }\n\n /**\n * Get top-of-book summary for a market\n * Returns the best bid/ask tick and depth at that level for each outcome\n * @param params.formatted - If true, returns human-readable prices and quantities\n */\n async getOrderBook(params: {\n marketId: bigint;\n formatted?: boolean;\n }) {\n const formatted = params.formatted ?? false;\n\n const getSide = async (outcomeId: number, side: number) => {\n const topTick = (await this.publicClient.readContract({\n address: this.config.diamondAddress,\n abi: OrderBookFacetABI,\n functionName: 'getTopOfBook',\n args: [params.marketId, BigInt(outcomeId), side],\n })) as bigint;\n\n if (topTick === 0n) {\n return formatted\n ? { price: '0', quantity: '0', orders: 0, tick: 0n }\n : { tick: 0n, totalQty: 0n, depth: 0n };\n }\n\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n const level: any = await this.publicClient.readContract({\n address: this.config.diamondAddress,\n abi: OrderBookFacetABI,\n functionName: 'getTickLevel',\n args: [params.marketId, BigInt(outcomeId), side, topTick],\n });\n\n if (formatted) {\n return {\n price: tickToPrice(topTick),\n quantity: formatAmount(level.totalQty),\n orders: Number(level.depth),\n tick: topTick,\n };\n }\n\n return {\n tick: topTick,\n headOrderId: level.headOrderId,\n totalQty: level.totalQty,\n depth: level.depth,\n };\n };\n\n const [yesBestBid, yesBestAsk, noBestBid, noBestAsk] = await Promise.all([\n getSide(0, 0), // YES Best Bid\n getSide(0, 1), // YES Best Ask\n getSide(1, 0), // NO Best Bid\n getSide(1, 1), // NO Best Ask\n ]);\n\n return {\n YES: {\n bestBid: yesBestBid,\n bestAsk: yesBestAsk,\n },\n NO: {\n bestBid: noBestBid,\n bestAsk: noBestAsk,\n },\n };\n }\n\n /**\n * Split collateral into YES + NO outcome tokens\n * Requires USDC approval for the Diamond proxy.\n * @param marketId - The market to split for\n * @param amount - Collateral amount in smallest unit (e.g. USDC with 6 decimals)\n */\n async splitPosition(marketId: bigint, amount: bigint) {\n const wallet = this.walletClient;\n const account = await this.getSignerAccount();\n\n const { request } = await this.publicClient.simulateContract({\n address: this.config.diamondAddress,\n abi: VaultFacetABI,\n functionName: 'splitPosition',\n args: [marketId, amount],\n account,\n });\n\n return wallet.writeContract(request);\n }\n\n /**\n * Merge YES + NO outcome tokens back into collateral\n * Requires CTF setApprovalForAll for the Diamond proxy.\n * @param marketId - The market to merge for\n * @param amount - Amount of each outcome token to merge (in smallest unit)\n */\n async mergePositions(marketId: bigint, amount: bigint) {\n const wallet = this.walletClient;\n const account = await this.getSignerAccount();\n\n const { request } = await this.publicClient.simulateContract({\n address: this.config.diamondAddress,\n abi: VaultFacetABI,\n functionName: 'mergePositions',\n args: [marketId, amount],\n account,\n });\n\n return wallet.writeContract(request);\n }\n\n // ---------------------------------------------------------------------------\n // Batch order management\n // ---------------------------------------------------------------------------\n\n /**\n * Place multiple limit orders on the same market in a single transaction.\n * Gas-optimized: aggregates token transfers (max 3 instead of N).\n * @param params.marketId - The market for all orders\n * @param params.orders - Array of order params (max 20)\n */\n async batchPlaceOrders(params: {\n marketId: bigint;\n orders: Array<{\n outcomeId: bigint;\n side: number; // 0=BUY, 1=SELL\n tick: bigint;\n qty: bigint;\n expiry: bigint;\n }>;\n }) {\n const wallet = this.walletClient;\n const account = await this.getSignerAccount();\n\n const { request } = await this.publicClient.simulateContract({\n address: this.config.diamondAddress,\n abi: BatchOrdersFacetABI,\n functionName: 'batchPlaceOrders',\n args: [params.marketId, params.orders],\n account,\n });\n\n return wallet.writeContract(request);\n }\n\n /**\n * Place multiple limit orders with simple string inputs (recommended for frontends).\n * @param params.price - Price as decimal string (e.g., \"0.75\")\n * @param params.quantity - Quantity as decimal string (e.g., \"100.5\")\n * @param params.expiry - Duration string (e.g., \"1h\", \"gtc\") or bigint timestamp\n */\n async batchPlaceOrdersSimple(params: {\n marketId: bigint;\n orders: Array<{\n outcomeId: bigint;\n side: number;\n price: string;\n quantity: string;\n expiry: string | bigint;\n }>;\n }) {\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n const tradingData: any = await this.publicClient.readContract({\n address: this.config.diamondAddress,\n abi: MarketsFacetABI,\n functionName: 'getMarketTradingData',\n args: [params.marketId],\n });\n\n const collateralToken = tradingData.collateralToken as Address;\n const decimals = await getCachedTokenDecimals(this.publicClient, collateralToken);\n\n const orders = params.orders.map((o) => ({\n outcomeId: o.outcomeId,\n side: o.side,\n tick: priceToTick(o.price),\n qty: parseTokenAmount(o.quantity, decimals),\n expiry:\n typeof o.expiry === 'string'\n ? o.expiry === 'gtc'\n ? BigInt(0)\n : createExpiry(o.expiry)\n : o.expiry,\n }));\n\n return this.batchPlaceOrders({ marketId: params.marketId, orders });\n }\n\n /**\n * Cancel multiple orders atomically in a single transaction.\n * Orders can span different markets.\n * @param orderIds - Array of order IDs to cancel (max 100). Must be owned by caller.\n */\n async batchCancelOrders(orderIds: bigint[]) {\n const wallet = this.walletClient;\n const account = await this.getSignerAccount();\n\n const { request } = await this.publicClient.simulateContract({\n address: this.config.diamondAddress,\n abi: BatchOrdersFacetABI,\n functionName: 'batchCancelOrders',\n args: [orderIds],\n account,\n });\n\n return wallet.writeContract(request);\n }\n\n /**\n * Atomically cancel stale orders and place new ones on the same market.\n * Cancel phase runs first; if any step fails the entire tx reverts.\n * @param params.marketId - Market for new orders\n * @param params.cancelOrderIds - Orders to cancel (max 100)\n * @param params.newOrders - New orders to place (max 20)\n */\n async cancelAndReplace(params: {\n marketId: bigint;\n cancelOrderIds: bigint[];\n newOrders: Array<{\n outcomeId: bigint;\n side: number;\n tick: bigint;\n qty: bigint;\n expiry: bigint;\n }>;\n }) {\n const wallet = this.walletClient;\n const account = await this.getSignerAccount();\n\n const { request } = await this.publicClient.simulateContract({\n address: this.config.diamondAddress,\n abi: BatchOrdersFacetABI,\n functionName: 'cancelAndReplace',\n args: [params.marketId, params.cancelOrderIds, params.newOrders],\n account,\n });\n\n return wallet.writeContract(request);\n }\n\n /**\n * Cancel-and-replace with simple string inputs (recommended for frontends).\n */\n async cancelAndReplaceSimple(params: {\n marketId: bigint;\n cancelOrderIds: bigint[];\n newOrders: Array<{\n outcomeId: bigint;\n side: number;\n price: string;\n quantity: string;\n expiry: string | bigint;\n }>;\n }) {\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n const tradingData: any = await this.publicClient.readContract({\n address: this.config.diamondAddress,\n abi: MarketsFacetABI,\n functionName: 'getMarketTradingData',\n args: [params.marketId],\n });\n\n const collateralToken = tradingData.collateralToken as Address;\n const decimals = await getCachedTokenDecimals(this.publicClient, collateralToken);\n\n const newOrders = params.newOrders.map((o) => ({\n outcomeId: o.outcomeId,\n side: o.side,\n tick: priceToTick(o.price),\n qty: parseTokenAmount(o.quantity, decimals),\n expiry:\n typeof o.expiry === 'string'\n ? o.expiry === 'gtc'\n ? BigInt(0)\n : createExpiry(o.expiry)\n : o.expiry,\n }));\n\n return this.cancelAndReplace({\n marketId: params.marketId,\n cancelOrderIds: params.cancelOrderIds,\n newOrders,\n });\n }\n}\n","import { gql } from 'graphql-request';\n\nexport const GET_VENUES = gql`\n query GetVenues(\n $first: Int = 100\n $skip: Int = 0\n $orderBy: Venue_orderBy = createdAt\n $orderDirection: OrderDirection = desc\n ) {\n venues(\n first: $first\n skip: $skip\n orderBy: $orderBy\n orderDirection: $orderDirection\n ) {\n id\n venueId\n name\n operator\n metadata\n # Fee configuration\n venueFeeBps\n creatorFeeBps\n # Oracle configuration\n umaRewardAmount\n umaMinBond\n # Access control\n tradingAccessControl\n creationAccessControl\n # State\n paused\n # Statistics\n totalMarkets\n totalMarketGroups\n activeMarkets\n totalVolume\n totalFees\n # Timestamps\n createdAt\n }\n }\n`;\n\nexport const GET_MARKETS = gql`\n query GetMarkets(\n $venueId: BigInt\n $search: String = \"\"\n $statuses: [MarketStatus!] = [Draft, Active, Resolved, Invalid]\n $first: Int = 100\n $skip: Int = 0\n ) {\n markets(\n where: {\n venue_: { venueId: $venueId }\n question_contains_nocase: $search\n status_in: $statuses\n }\n first: $first\n skip: $skip\n orderBy: createdAt\n orderDirection: desc\n ) {\n id\n marketId\n question\n outcomes\n status\n collateralToken\n conditionId\n tickSize\n lastPriceTick_0\n lastPriceTick_1\n lastTradeTimestamp\n lastTradeTimestamp_0\n lastTradeTimestamp_1\n topOfBook {\n outcome\n side\n topTick\n }\n tags\n metadataURI\n }\n }\n`;\n\nexport const GET_MARKETS_WITH_PRICING = gql`\n query GetMarketsWithPricing(\n $venueId: BigInt\n $search: String = \"\"\n $statuses: [MarketStatus!] = [Draft, Active, Resolved, Invalid]\n $first: Int = 100\n $skip: Int = 0\n ) {\n markets(\n where: {\n venue_: { venueId: $venueId }\n question_contains_nocase: $search\n status_in: $statuses\n }\n first: $first\n skip: $skip\n orderBy: createdAt\n orderDirection: desc\n ) {\n id\n marketId\n question\n outcomes\n status\n collateralToken\n conditionId\n tickSize\n # Last trade prices\n lastPriceTick_0\n lastPriceTick_1\n lastTradeTimestamp\n lastTradeTimestamp_0\n lastTradeTimestamp_1\n # Top of book for mark price calculation\n topOfBook {\n outcome\n side\n topTick\n }\n # Statistics\n totalVolume\n totalOrders\n uniqueTraders\n tags\n metadataURI\n }\n }\n`;\n\nexport const GET_MARKET = gql`\n query GetMarket($marketId: BigInt!) {\n markets(where: { marketId: $marketId }) {\n id\n marketId\n question\n outcomes\n status\n resolvedOutcome\n collateralToken\n conditionId\n tickSize\n lastPriceTick_0\n lastPriceTick_1\n lastTradeTimestamp\n lastTradeTimestamp_0\n lastTradeTimestamp_1\n topOfBook {\n outcome\n side\n topTick\n }\n totalVolume\n totalOrders\n totalFees\n uniqueTraders\n tags\n metadataURI\n createdAt\n creator {\n id\n address\n }\n }\n }\n`;\n\nexport const GET_TRADES = gql`\n query GetTrades($marketId: BigInt, $first: Int = 100, $skip: Int = 0) {\n trades(\n where: { market_: { marketId: $marketId } }\n first: $first\n skip: $skip\n orderBy: timestamp\n orderDirection: desc\n ) {\n id\n market {\n marketId\n }\n outcome\n tick\n amount\n cost\n tradeType\n buyTrader {\n id\n }\n sellTrader {\n id\n }\n avgPrice\n timestamp\n blockNumber\n transactionHash\n }\n }\n`;\n\nexport const GET_CHART_TRADES = gql`\n query GetChartTrades(\n $marketId: BigInt!\n $timestampGte: BigInt\n $first: Int = 1000\n $skip: Int = 0\n ) {\n trades(\n where: { market_: { marketId: $marketId }, timestamp_gte: $timestampGte }\n first: $first\n skip: $skip\n orderBy: timestamp\n orderDirection: asc\n ) {\n tick\n timestamp\n outcome\n }\n }\n`;\n\nexport const GET_CHART_TRADES_ALL = gql`\n query GetChartTradesAll(\n $marketId: BigInt!\n $first: Int = 1000\n $skip: Int = 0\n ) {\n trades(\n where: { market_: { marketId: $marketId } }\n first: $first\n skip: $skip\n orderBy: timestamp\n orderDirection: asc\n ) {\n tick\n timestamp\n outcome\n }\n }\n`;\n\nexport const GET_ORDERS = gql`\n query GetOrders($marketId: BigInt, $first: Int = 100, $skip: Int = 0) {\n orders(\n where: { market_: { marketId: $marketId }, deleted: false }\n first: $first\n skip: $skip\n orderBy: createdAt\n orderDirection: desc\n ) {\n id\n orderId\n market {\n marketId\n }\n trader {\n address\n }\n outcome\n side\n tick\n amount\n filled\n status\n createdAt\n createdAtBlock\n cancelledAt\n expiredAt\n }\n }\n`;\n\nexport const GET_USER = gql`\n query GetUser($address: Bytes!) {\n user(id: $address) {\n id\n address\n totalOrdersPlaced\n totalVolume\n totalMarkets\n totalTradeCount\n totalMarketsTraded\n totalRealizedPnL\n firstSeenAt\n lastSeenAt\n }\n }\n`;\n\nexport const GET_TOP_OF_BOOK = gql`\n query GetTopOfBook($marketId: BigInt!) {\n topOfBooks(where: { market_: { marketId: $marketId } }) {\n id\n market {\n marketId\n }\n outcome\n side\n topTick\n updatedAt\n updatedAtBlock\n }\n }\n`;\n\nexport const GET_PROTOCOL_STATS = gql`\n query GetProtocolStats {\n protocol(id: \"1\") {\n id\n totalVenues\n totalMarkets\n totalMarketGroups\n totalVolume\n totalFees\n totalUsers\n updatedAt\n }\n }\n`;\n\nexport const GET_QUESTION = gql`\n query GetQuestion($questionId: ID!) {\n question(id: $questionId) {\n id\n questionId\n conditionId\n ancillaryData\n liveness\n requiredBond\n currency\n reward\n resolved\n outcome\n activeAssertion {\n assertionId\n proposedOutcome\n settled\n result\n createdAt\n }\n assertions {\n assertionId\n proposedOutcome\n settled\n result\n createdAt\n settledAt\n }\n createdAt\n resolvedAt\n }\n }\n`;\n\nexport const GET_QUESTIONS = gql`\n query GetQuestions($first: Int = 100, $skip: Int = 0) {\n questions(\n first: $first\n skip: $skip\n orderBy: createdAt\n orderDirection: desc\n ) {\n id\n questionId\n conditionId\n liveness\n requiredBond\n currency\n reward\n resolved\n outcome\n market {\n marketId\n question\n status\n }\n activeAssertion {\n assertionId\n proposedOutcome\n }\n createdAt\n resolvedAt\n }\n }\n`;\n\n// ============================================\n// Market Groups\n// ============================================\n\nexport const GET_MARKET_GROUPS = gql`\n query GetMarketGroups($venueId: BigInt, $first: Int = 100, $skip: Int = 0) {\n marketGroups(\n where: { venue_: { venueId: $venueId } }\n first: $first\n skip: $skip\n orderBy: createdAt\n orderDirection: desc\n ) {\n id\n groupId\n marketQuestion\n status\n totalMarkets\n activeMarketCount\n resolvedMarketId\n reward\n tags\n metadataURI\n venue {\n id\n venueId\n name\n }\n creator {\n id\n address\n }\n createdAt\n activatedAt\n resolvedAt\n }\n }\n`;\n\nexport const GET_MARKET_GROUP = gql`\n query GetMarketGroup($groupId: BigInt!) {\n marketGroups(where: { groupId: $groupId }) {\n id\n groupId\n marketQuestion\n status\n totalMarkets\n activeMarketCount\n resolvedMarketId\n tags\n metadataURI\n venue {\n id\n venueId\n name\n }\n creator {\n id\n address\n }\n createdAt\n createdAtBlock\n activatedAt\n resolvedAt\n }\n }\n`;\n\nexport const GET_GROUP_MARKETS = gql`\n query GetGroupMarkets($groupId: BigInt!, $first: Int = 100, $skip: Int = 0) {\n markets(\n where: { groupId: $groupId }\n first: $first\n skip: $skip\n orderBy: marketId\n orderDirection: asc\n ) {\n id\n marketId\n question\n outcomes\n status\n resolvedOutcome\n collateralToken\n conditionId\n tickSize\n groupId\n marketGroupItem {\n marketName\n isPlaceholder\n createdAt\n activatedAt\n }\n lastPriceTick_0\n lastPriceTick_1\n lastTradeTimestamp\n lastTradeTimestamp_0\n lastTradeTimestamp_1\n topOfBook {\n outcome\n side\n topTick\n }\n totalVolume\n totalOrders\n createdAt\n }\n }\n`;\n\nexport const GET_MARKET_GROUP_ITEM = gql`\n query GetMarketGroupItem($marketId: BigInt!) {\n marketGroupItems(where: { market_: { marketId: $marketId } }) {\n id\n marketName\n isPlaceholder\n market {\n id\n marketId\n question\n status\n }\n marketGroup {\n id\n groupId\n marketQuestion\n }\n createdAt\n activatedAt\n }\n }\n`;\n\n// ============================================\n// Unified Market Feed (Polymarket-style)\n// ============================================\n\n/**\n * Get unified feed of standalone markets + market groups\n * This query fetches both types in a single request for efficient homepage display\n * Frontend should merge and sort the results\n */\nexport const GET_UNIFIED_MARKET_FEED = gql`\n query GetUnifiedMarketFeed(\n $venueId: BigInt\n $first: Int = 50\n $skip: Int = 0\n ) {\n # Standalone binary markets (not in groups, not part of a price series)\n standaloneMarkets: markets(\n where: {\n groupId: \"0\"\n venue_: { venueId: $venueId }\n status_not: \"Draft\"\n priceSeries: null\n }\n first: $first\n skip: $skip\n orderBy: createdAt\n orderDirection: desc\n ) {\n id\n marketId\n question\n outcomes\n status\n collateralToken\n conditionId\n tickSize\n groupId\n # Pricing data\n lastPriceTick_0\n lastPriceTick_1\n lastTradeTimestamp\n lastTradeTimestamp_0\n lastTradeTimestamp_1\n topOfBook {\n outcome\n side\n topTick\n }\n # Statistics\n totalVolume\n totalOrders\n uniqueTraders\n tags\n metadataURI\n createdAt\n venue {\n id\n venueId\n name\n }\n creator {\n id\n address\n }\n }\n\n # Market groups with their child markets\n marketGroups(\n where: { venue_: { venueId: $venueId }, status_not: \"Draft\" }\n first: $first\n skip: $skip\n orderBy: createdAt\n orderDirection: desc\n ) {\n id\n groupId\n marketQuestion\n status\n totalMarkets\n activeMarketCount\n resolvedMarketId\n tags\n metadataURI\n createdAt\n activatedAt\n resolvedAt\n venue {\n id\n venueId\n name\n }\n creator {\n id\n address\n }\n # Include child markets with their prices (no status filter — use isPlaceholder to filter)\n markets(\n orderBy: marketId\n orderDirection: asc\n ) {\n id\n marketId\n question\n status\n groupId\n tickSize\n # Pricing data for probability calculation\n lastPriceTick_0\n lastPriceTick_1\n totalVolume\n # Market group item metadata\n marketGroupItem {\n marketName\n isPlaceholder\n }\n }\n }\n\n # Price market series — one row per (venue, seriesKey)\n priceMarketSeries(\n where: { venue_: { venueId: $venueId }, status_not: \"Resolved\" }\n first: $first\n skip: $skip\n orderBy: updatedAt\n orderDirection: desc\n ) {\n id\n seriesKey\n asset\n kind\n interval\n intervalSeconds\n status\n tags\n createdAt\n updatedAt\n currentMarket {\n id\n marketId\n question\n outcomes\n status\n collateralToken\n conditionId\n tickSize\n lastPriceTick_0\n lastPriceTick_1\n lastTradeTimestamp\n lastTradeTimestamp_0\n lastTradeTimestamp_1\n topOfBook {\n outcome\n side\n topTick\n }\n totalVolume\n metadataURI\n createdAt\n priceMarket {\n provider\n feedId\n strikePrice\n priceExpo\n openTime\n closeTime\n }\n }\n venue {\n id\n venueId\n name\n }\n }\n }\n`;\n\n/**\n * Get unified feed sorted by volume (most popular)\n */\nexport const GET_UNIFIED_MARKET_FEED_BY_VOLUME = gql`\n query GetUnifiedMarketFeedByVolume(\n $venueId: BigInt\n $first: Int = 50\n $skip: Int = 0\n ) {\n # Standalone binary markets sorted by volume (excluding price series members)\n standaloneMarkets: markets(\n where: {\n groupId: \"0\"\n venue_: { venueId: $venueId }\n status_not: \"Draft\"\n priceSeries: null\n }\n first: $first\n skip: $skip\n orderBy: totalVolume\n orderDirection: desc\n ) {\n id\n marketId\n question\n outcomes\n status\n collateralToken\n groupId\n tickSize\n lastPriceTick_0\n lastPriceTick_1\n lastTradeTimestamp\n lastTradeTimestamp_0\n lastTradeTimestamp_1\n topOfBook {\n outcome\n side\n topTick\n }\n totalVolume\n totalOrders\n uniqueTraders\n tags\n metadataURI\n createdAt\n venue {\n id\n venueId\n name\n }\n }\n\n # Market groups\n marketGroups(\n where: { venue_: { venueId: $venueId }, status_not: \"Draft\" }\n first: $first\n skip: $skip\n orderBy: createdAt\n orderDirection: desc\n ) {\n id\n groupId\n marketQuestion\n status\n totalMarkets\n activeMarketCount\n resolvedMarketId\n tags\n metadataURI\n createdAt\n activatedAt\n resolvedAt\n venue {\n id\n venueId\n name\n }\n creator {\n id\n address\n }\n markets {\n id\n marketId\n question\n status\n groupId\n tickSize\n lastPriceTick_0\n lastPriceTick_1\n totalVolume\n marketGroupItem {\n marketName\n isPlaceholder\n }\n }\n }\n\n # Price market series — venue-scoped, only those with an active current market\n priceMarketSeries(\n where: { venue_: { venueId: $venueId }, status_not: \"Resolved\" }\n first: $first\n skip: $skip\n orderBy: updatedAt\n orderDirection: desc\n ) {\n id\n seriesKey\n asset\n kind\n interval\n intervalSeconds\n status\n tags\n createdAt\n updatedAt\n currentMarket {\n id\n marketId\n question\n outcomes\n status\n collateralToken\n tickSize\n lastPriceTick_0\n lastPriceTick_1\n lastTradeTimestamp\n lastTradeTimestamp_0\n lastTradeTimestamp_1\n topOfBook {\n outcome\n side\n topTick\n }\n totalVolume\n metadataURI\n createdAt\n priceMarket {\n provider\n feedId\n strikePrice\n priceExpo\n openTime\n closeTime\n }\n }\n venue {\n id\n venueId\n name\n }\n }\n }\n`;\n\n// ============================================\n// Cross-Venue Queries (Protocol App)\n// ============================================\n\n/**\n * Get all markets across all venues (no venue filter)\n * Used by the protocol app's global market explorer\n */\nexport const GET_ALL_MARKETS_FEED = gql`\n query GetAllMarketsFeed($first: Int = 50, $skip: Int = 0) {\n # Standalone binary markets (not in groups, not part of a price series)\n standaloneMarkets: markets(\n where: { groupId: \"0\", status_not: \"Draft\", priceSeries: null }\n first: $first\n skip: $skip\n orderBy: createdAt\n orderDirection: desc\n ) {\n id\n marketId\n question\n outcomes\n status\n collateralToken\n conditionId\n tickSize\n groupId\n lastPriceTick_0\n lastPriceTick_1\n lastTradeTimestamp\n lastTradeTimestamp_0\n lastTradeTimestamp_1\n topOfBook {\n outcome\n side\n topTick\n }\n totalVolume\n totalOrders\n uniqueTraders\n metadataURI\n createdAt\n venue {\n id\n venueId\n name\n }\n creator {\n id\n address\n }\n }\n\n # Market groups with their child markets\n marketGroups(\n where: { status_not: \"Draft\" }\n first: $first\n skip: $skip\n orderBy: createdAt\n orderDirection: desc\n ) {\n id\n groupId\n marketQuestion\n status\n totalMarkets\n activeMarketCount\n resolvedMarketId\n metadataURI\n createdAt\n activatedAt\n resolvedAt\n venue {\n id\n venueId\n name\n }\n creator {\n id\n address\n }\n markets(\n where: { status_not: \"Draft\" }\n orderBy: marketId\n orderDirection: asc\n ) {\n id\n marketId\n question\n status\n groupId\n tickSize\n lastPriceTick_0\n lastPriceTick_1\n totalVolume\n marketGroupItem {\n marketName\n isPlaceholder\n }\n }\n }\n\n # Price market series across all venues\n priceMarketSeries(\n where: { status_not: \"Resolved\" }\n first: $first\n skip: $skip\n orderBy: updatedAt\n orderDirection: desc\n ) {\n id\n seriesKey\n asset\n kind\n interval\n intervalSeconds\n status\n tags\n createdAt\n updatedAt\n currentMarket {\n id\n marketId\n question\n outcomes\n status\n collateralToken\n tickSize\n lastPriceTick_0\n lastPriceTick_1\n lastTradeTimestamp\n topOfBook {\n outcome\n side\n topTick\n }\n totalVolume\n createdAt\n priceMarket {\n provider\n feedId\n strikePrice\n priceExpo\n openTime\n closeTime\n }\n }\n venue {\n id\n venueId\n name\n }\n }\n }\n`;\n\n/**\n * Get all markets across all venues sorted by volume\n */\nexport const GET_ALL_MARKETS_FEED_BY_VOLUME = gql`\n query GetAllMarketsFeedByVolume($first: Int = 50, $skip: Int = 0) {\n standaloneMarkets: markets(\n where: { groupId: \"0\", status_not: \"Draft\", priceSeries: null }\n first: $first\n skip: $skip\n orderBy: totalVolume\n orderDirection: desc\n ) {\n id\n marketId\n question\n outcomes\n status\n collateralToken\n conditionId\n tickSize\n groupId\n lastPriceTick_0\n lastPriceTick_1\n lastTradeTimestamp\n lastTradeTimestamp_0\n lastTradeTimestamp_1\n topOfBook {\n outcome\n side\n topTick\n }\n totalVolume\n totalOrders\n uniqueTraders\n metadataURI\n createdAt\n venue {\n id\n venueId\n name\n }\n creator {\n id\n address\n }\n }\n\n marketGroups(\n where: { status_not: \"Draft\" }\n first: $first\n skip: $skip\n orderBy: createdAt\n orderDirection: desc\n ) {\n id\n groupId\n marketQuestion\n status\n totalMarkets\n activeMarketCount\n resolvedMarketId\n metadataURI\n createdAt\n activatedAt\n resolvedAt\n venue {\n id\n venueId\n name\n }\n creator {\n id\n address\n }\n markets {\n id\n marketId\n question\n status\n groupId\n tickSize\n lastPriceTick_0\n lastPriceTick_1\n totalVolume\n marketGroupItem {\n marketName\n isPlaceholder\n }\n }\n }\n\n # Price market series across all venues, sorted by volume of current market\n priceMarketSeries(\n where: { status_not: \"Resolved\" }\n first: $first\n skip: $skip\n orderBy: updatedAt\n orderDirection: desc\n ) {\n id\n seriesKey\n asset\n kind\n interval\n intervalSeconds\n status\n tags\n createdAt\n updatedAt\n currentMarket {\n id\n marketId\n question\n outcomes\n status\n collateralToken\n tickSize\n lastPriceTick_0\n lastPriceTick_1\n lastTradeTimestamp\n topOfBook {\n outcome\n side\n topTick\n }\n totalVolume\n createdAt\n priceMarket {\n provider\n feedId\n strikePrice\n priceExpo\n openTime\n closeTime\n }\n }\n venue {\n id\n venueId\n name\n }\n }\n }\n`;\n\n/**\n * Get a single PriceMarketSeries with all its member markets, ordered by closeTime.\n * Used by the market detail page to render the time-button navigation strip.\n */\nexport const GET_PRICE_MARKET_SERIES = gql`\n query GetPriceMarketSeries($venueId: BigInt!, $seriesKey: String!) {\n priceMarketSeries(\n where: { venue_: { venueId: $venueId }, seriesKey: $seriesKey }\n first: 1\n ) {\n id\n seriesKey\n asset\n kind\n interval\n intervalSeconds\n status\n tags\n createdAt\n updatedAt\n currentMarket {\n id\n marketId\n }\n venue {\n id\n venueId\n name\n }\n markets(first: 1000, orderBy: marketId, orderDirection: asc) {\n id\n marketId\n question\n status\n resolvedOutcome\n outcomes\n priceMarket {\n openTime\n closeTime\n resolved\n outcome\n finalPrice\n strikePrice\n }\n }\n }\n }\n`;\n\n/**\n * Get recent trades across all venues (for activity feed / ticker)\n */\nexport const GET_RECENT_TRADES = gql`\n query GetRecentTrades($first: Int = 20, $skip: Int = 0) {\n trades(\n first: $first\n skip: $skip\n orderBy: timestamp\n orderDirection: desc\n ) {\n id\n market {\n marketId\n question\n outcomes\n venue {\n venueId\n name\n }\n }\n outcome\n tick\n amount\n cost\n tradeType\n buyTrader {\n id\n }\n sellTrader {\n id\n }\n timestamp\n blockNumber\n transactionHash\n }\n }\n`;\n\n/**\n * Get recently created markets across all venues\n */\nexport const GET_RECENT_MARKETS = gql`\n query GetRecentMarkets($first: Int = 20, $skip: Int = 0) {\n markets(\n first: $first\n skip: $skip\n orderBy: createdAt\n orderDirection: desc\n where: { status_not: \"Draft\" }\n ) {\n id\n marketId\n question\n outcomes\n status\n totalVolume\n uniqueTraders\n createdAt\n venue {\n venueId\n name\n }\n creator {\n address\n }\n }\n }\n`;\n\n// ============================================\n// Trader Analytics Queries\n// ============================================\n\nexport const GET_TRADER_PROFILE = gql`\n query GetTraderProfile($address: ID!) {\n user(id: $address) {\n id\n address\n totalOrdersPlaced\n totalVolume\n totalTradeCount\n totalMarketsTraded\n totalRealizedPnL\n totalMarkets\n totalMarketGroups\n firstSeenAt\n lastSeenAt\n }\n }\n`;\n\nexport const GET_TRADER_POSITIONS = gql`\n query GetTraderPositions(\n $trader: String!\n $first: Int = 100\n $skip: Int = 0\n ) {\n traderPositions(\n where: { trader: $trader, quantity_gt: \"0\" }\n first: $first\n skip: $skip\n orderBy: lastTradeAt\n orderDirection: desc\n ) {\n id\n outcome\n quantity\n totalCostBasis\n avgEntryPrice\n realizedPnL\n totalCollateralIn\n totalCollateralOut\n buyCount\n sellCount\n firstTradeAt\n lastTradeAt\n market {\n id\n marketId\n question\n outcomes\n status\n resolvedOutcome\n tickSize\n lastPriceTick_0\n lastPriceTick_1\n collateralDecimals\n venue {\n id\n venueId\n name\n }\n }\n }\n }\n`;\n\nexport const GET_TRADER_CLOSED_POSITIONS = gql`\n query GetTraderClosedPositions(\n $trader: String!\n $first: Int = 100\n $skip: Int = 0\n ) {\n traderPositions(\n where: { trader: $trader, quantity: \"0\" }\n first: $first\n skip: $skip\n orderBy: lastTradeAt\n orderDirection: desc\n ) {\n id\n outcome\n quantity\n totalCostBasis\n avgEntryPrice\n realizedPnL\n totalCollateralIn\n totalCollateralOut\n buyCount\n sellCount\n firstTradeAt\n lastTradeAt\n market {\n id\n marketId\n question\n outcomes\n status\n resolvedOutcome\n tickSize\n lastPriceTick_0\n lastPriceTick_1\n collateralDecimals\n venue {\n id\n venueId\n name\n }\n }\n }\n }\n`;\n\nexport const GET_TRADER_FILLS = gql`\n query GetTraderFills(\n $trader: String!\n $first: Int = 50\n $skip: Int = 0\n ) {\n fills(\n where: { trader: $trader }\n first: $first\n skip: $skip\n orderBy: timestamp\n orderDirection: desc\n ) {\n id\n outcome\n side\n tick\n amount\n cost\n fees\n tradeType\n avgPrice\n timestamp\n blockNumber\n transactionHash\n market {\n id\n marketId\n question\n outcomes\n tickSize\n status\n collateralDecimals\n venue {\n id\n venueId\n name\n }\n }\n }\n }\n`;\n\nexport const GET_LEADERBOARD = gql`\n query GetLeaderboard(\n $orderBy: User_orderBy = totalVolume\n $orderDirection: OrderDirection = desc\n $first: Int = 50\n $skip: Int = 0\n ) {\n users(\n where: { totalTradeCount_gt: \"0\" }\n first: $first\n skip: $skip\n orderBy: $orderBy\n orderDirection: $orderDirection\n ) {\n id\n address\n totalVolume\n totalTradeCount\n totalMarketsTraded\n totalRealizedPnL\n firstSeenAt\n lastSeenAt\n }\n }\n`;\n\nexport const GET_MARKET_TOP_HOLDERS = gql`\n query GetMarketTopHolders(\n $marketId: String!\n $first: Int = 20\n ) {\n traderPositions(\n where: { market: $marketId, quantity_gt: \"0\" }\n first: $first\n orderBy: quantity\n orderDirection: desc\n ) {\n id\n trader {\n id\n address\n }\n outcome\n quantity\n totalCostBasis\n avgEntryPrice\n realizedPnL\n }\n }\n`;\n","import type { TypedDocumentNode } from '@graphql-typed-document-node/core';\nimport { gql } from 'graphql-request';\nimport { BaseModule } from './base';\nimport { calculateChancePercent } from '../utils/conversions';\n\n/**\n * Market lifecycle statuses indexed by the subgraph. Mirrors the on-chain\n * market state machine.\n */\nexport type MarketStatus = 'Draft' | 'Active' | 'Resolved' | 'Invalid';\n\nconst ALL_MARKET_STATUSES: MarketStatus[] = ['Draft', 'Active', 'Resolved', 'Invalid'];\nimport {\n GET_VENUES,\n GET_MARKETS,\n GET_MARKETS_WITH_PRICING,\n GET_MARKET,\n GET_TRADES,\n GET_ORDERS,\n GET_USER,\n GET_TOP_OF_BOOK,\n GET_PROTOCOL_STATS,\n GET_MARKET_GROUPS,\n GET_MARKET_GROUP,\n GET_GROUP_MARKETS,\n GET_MARKET_GROUP_ITEM,\n GET_UNIFIED_MARKET_FEED,\n GET_UNIFIED_MARKET_FEED_BY_VOLUME,\n GET_PRICE_MARKET_SERIES,\n GET_ALL_MARKETS_FEED,\n GET_ALL_MARKETS_FEED_BY_VOLUME,\n GET_RECENT_TRADES,\n GET_RECENT_MARKETS,\n GET_CHART_TRADES,\n GET_CHART_TRADES_ALL,\n GET_TRADER_PROFILE,\n GET_TRADER_POSITIONS,\n GET_TRADER_CLOSED_POSITIONS,\n GET_TRADER_FILLS,\n GET_LEADERBOARD,\n GET_MARKET_TOP_HOLDERS,\n} from '../subgraph/queries';\n\nexport class PublicModule extends BaseModule {\n /**\n * Get all venues\n */\n async getVenues(params?: {\n first?: number;\n skip?: number;\n orderBy?: string;\n orderDirection?: 'asc' | 'desc';\n }) {\n return this.subgraph.request(GET_VENUES, {\n first: params?.first || 100,\n skip: params?.skip || 0,\n orderBy: params?.orderBy || 'createdAt',\n orderDirection: params?.orderDirection || 'desc',\n });\n }\n\n /**\n * Get markets for a venue\n */\n async getMarkets(params: {\n venueId?: bigint;\n search?: string;\n statuses?: MarketStatus[];\n first?: number;\n skip?: number;\n }) {\n return this.subgraph.request(GET_MARKETS, {\n venueId: params.venueId?.toString(),\n search: params.search ?? '',\n statuses: params.statuses ?? ALL_MARKET_STATUSES,\n first: params.first || 100,\n skip: params.skip || 0,\n });\n }\n\n /**\n * Get markets with pricing data (last trade prices + statistics)\n *\n * @param params.search Optional case-insensitive substring match against the\n * market `question` field. Empty string matches all markets.\n * @param params.statuses Optional list of market statuses to include. Omit\n * to include all statuses (Draft, Active, Resolved, Invalid).\n */\n async getMarketsWithPricing(params: {\n venueId?: bigint;\n search?: string;\n statuses?: MarketStatus[];\n first?: number;\n skip?: number;\n }) {\n return this.subgraph.request(GET_MARKETS_WITH_PRICING, {\n venueId: params.venueId?.toString(),\n search: params.search ?? '',\n statuses: params.statuses ?? ALL_MARKET_STATUSES,\n first: params.first || 100,\n skip: params.skip || 0,\n });\n }\n\n /**\n * Get market by ID\n */\n async getMarket(marketId: bigint) {\n const response = await this.subgraph.request<any>(GET_MARKET, {\n marketId: marketId.toString(),\n });\n return response.markets[0] || null;\n }\n\n /**\n * Get trade history for a market\n */\n async getTradeHistory(params: {\n marketId: bigint;\n first?: number;\n skip?: number;\n }) {\n return this.subgraph.request<any>(GET_TRADES, {\n marketId: params.marketId.toString(),\n first: params.first || 100,\n skip: params.skip || 0,\n });\n }\n\n /**\n * Get trade data optimized for price charting.\n * Supports time-window filtering and higher limits.\n */\n async getChartTrades(params: {\n marketId: bigint;\n timestampGte?: bigint;\n first?: number;\n skip?: number;\n }) {\n const variables: Record<string, any> = {\n marketId: params.marketId.toString(),\n first: params.first || 1000,\n skip: params.skip || 0,\n };\n\n // Use a separate query without timestamp_gte filter for ALL timeframe\n // The subgraph treats timestamp_gte: null as a filter that matches nothing\n if (params.timestampGte !== undefined) {\n variables.timestampGte = params.timestampGte.toString();\n return this.subgraph.request<any>(GET_CHART_TRADES, variables);\n }\n\n return this.subgraph.request<any>(GET_CHART_TRADES_ALL, variables);\n }\n\n /**\n * Get orders for a market\n */\n async getOrders(params: { marketId: bigint; first?: number; skip?: number }) {\n return this.subgraph.request<any>(GET_ORDERS, {\n marketId: params.marketId.toString(),\n first: params.first || 100,\n skip: params.skip || 0,\n });\n }\n\n /**\n * Get user data by address\n */\n async getUser(address: string) {\n return this.subgraph.request<any>(GET_USER, {\n address: address.toLowerCase(),\n });\n }\n\n /**\n * Get top of book for a market\n */\n async getTopOfBook(marketId: bigint) {\n return this.subgraph.request<any>(GET_TOP_OF_BOOK, {\n marketId: marketId.toString(),\n });\n }\n\n /**\n * Get protocol-wide statistics\n */\n async getProtocolStats() {\n return this.subgraph.request<any>(GET_PROTOCOL_STATS);\n }\n\n // ============================================\n // Market Groups\n // ============================================\n\n /**\n * Get market groups for a venue\n */\n async getMarketGroups(params: {\n venueId?: bigint;\n first?: number;\n skip?: number;\n }) {\n return this.subgraph.request(GET_MARKET_GROUPS, {\n venueId: params.venueId?.toString(),\n first: params.first || 100,\n skip: params.skip || 0,\n });\n }\n\n /**\n * Get market group by ID\n */\n async getMarketGroup(groupId: bigint) {\n const response = await this.subgraph.request<any>(GET_MARKET_GROUP, {\n groupId: groupId.toString(),\n });\n return response.marketGroups[0] || null;\n }\n\n /**\n * Get all markets in a group\n */\n async getGroupMarkets(params: {\n groupId: bigint;\n first?: number;\n skip?: number;\n }) {\n return this.subgraph.request<any>(GET_GROUP_MARKETS, {\n groupId: params.groupId.toString(),\n first: params.first || 100,\n skip: params.skip || 0,\n });\n }\n\n /**\n * Get market group item data (group-specific metadata)\n */\n async getMarketGroupItem(marketId: bigint) {\n const response = await this.subgraph.request<any>(GET_MARKET_GROUP_ITEM, {\n marketId: marketId.toString(),\n });\n return response.marketGroupItems[0] || null;\n }\n\n // ============================================\n // Unified Market Feed (Polymarket-style)\n // ============================================\n\n /**\n * Get unified feed of standalone markets + market groups\n * Returns both types in a single query, similar to Polymarket's homepage\n *\n * @param params.venueId - Optional venue filter\n * @param params.first - Number of items per type (default 50)\n * @param params.skip - Pagination offset\n * @param params.sortBy - Sort order: 'created' (newest first) or 'volume' (most popular)\n *\n * @returns Object with standaloneMarkets and marketGroups arrays\n */\n async getUnifiedMarketFeed(params?: {\n venueId?: bigint;\n first?: number;\n skip?: number;\n sortBy?: 'created' | 'volume';\n }) {\n const sortBy = params?.sortBy || 'created';\n\n if (sortBy === 'volume') {\n return this.subgraph.request<any>(GET_UNIFIED_MARKET_FEED_BY_VOLUME, {\n venueId: params?.venueId?.toString(),\n first: params?.first || 50,\n skip: params?.skip || 0,\n });\n }\n\n return this.subgraph.request<any>(GET_UNIFIED_MARKET_FEED, {\n venueId: params?.venueId?.toString(),\n first: params?.first || 50,\n skip: params?.skip || 0,\n });\n }\n\n /**\n * Merge and sort unified feed results\n * Combines standaloneMarkets, marketGroups, and priceMarketSeries into a single sorted array.\n * Each row in the merged feed carries a `type` discriminator: 'standalone' | 'group' | 'series'.\n */\n mergeAndSortFeed(\n feedData: any,\n sortBy: 'created' | 'volume' = 'created',\n limit?: number,\n ): Array<any> {\n const standalone = (feedData.standaloneMarkets || []).map((m: any) => ({\n ...m,\n type: 'standalone' as const,\n sortValue:\n sortBy === 'volume'\n ? BigInt(m.totalVolume || '0')\n : BigInt(m.createdAt || '0'),\n }));\n\n const groups = (feedData.marketGroups || []).map((g: any) => {\n // Calculate total volume for group (sum of all child markets)\n const totalVolume =\n g.markets?.reduce(\n (sum: bigint, m: any) => sum + BigInt(m.totalVolume || '0'),\n 0n,\n ) || 0n;\n\n return {\n ...g,\n type: 'group' as const,\n totalVolume: totalVolume.toString(),\n sortValue:\n sortBy === 'volume' ? totalVolume : BigInt(g.createdAt || '0'),\n };\n });\n\n // Price market series rows. Sort key is the current market's volume when sorting\n // by volume, otherwise the series' updatedAt (which is bumped on each new window).\n const series = (feedData.priceMarketSeries || []).map((s: any) => ({\n ...s,\n type: 'series' as const,\n sortValue:\n sortBy === 'volume'\n ? BigInt(s.currentMarket?.totalVolume || '0')\n : BigInt(s.updatedAt || s.createdAt || '0'),\n }));\n\n // Merge and sort\n const merged = [...standalone, ...groups, ...series].sort((a, b) => {\n // Sort descending (highest/newest first)\n return a.sortValue > b.sortValue ? -1 : 1;\n });\n\n // Apply limit if specified\n return limit ? merged.slice(0, limit) : merged;\n }\n\n /**\n * Get a PriceMarketSeries with all its member markets.\n *\n * Used by the market detail page to render the time-button navigation strip\n * showing past, current, and upcoming windows for the same asset+interval.\n *\n * @param params.venueId - Venue the series belongs to\n * @param params.seriesKey - Series key, e.g. \"btc-updown-5m\"\n * @returns The series with `markets` array, or null if not found\n */\n async getPriceMarketSeries(params: {\n venueId: bigint;\n seriesKey: string;\n }): Promise<any | null> {\n const response = await this.subgraph.request<any>(GET_PRICE_MARKET_SERIES, {\n venueId: params.venueId.toString(),\n seriesKey: params.seriesKey,\n });\n return response.priceMarketSeries?.[0] || null;\n }\n\n /**\n * Helper: extract the seriesKey from a market's tags.\n *\n * A market belongs to a price series iff its tags contain both \"price-market\"\n * and a \"series:<key>\" tag. Returns the key (without prefix) or null.\n */\n extractSeriesKey(tags: string[] | undefined | null): string | null {\n if (!tags) return null;\n let hasPriceMarketTag = false;\n let seriesKey: string | null = null;\n for (const t of tags) {\n if (t === 'price-market') hasPriceMarketTag = true;\n else if (t.startsWith('series:')) seriesKey = t.slice('series:'.length);\n }\n return hasPriceMarketTag ? seriesKey : null;\n }\n\n /**\n * Calculate probability for a market using mark price waterfall.\n * Returns probability as a decimal string (e.g., \"0.65\" for 65%)\n *\n * Uses Polymarket-style pricing: implied midpoint → last trade → default 50%.\n *\n * @param market - Market object from subgraph (with topOfBook and timestamp fields)\n * @returns Probability string or null if no data available\n */\n calculateMarketProbability(market: any): string | null {\n if (!market.tickSize) return null;\n\n const chance = calculateChancePercent(market);\n if (chance === 50 && !market.lastPriceTick_0 && !market.lastPriceTick_1) {\n return null; // Truly no data — keep null for \"no probability\" display\n }\n return (chance / 100).toFixed(2);\n }\n\n /**\n * Format market group for display (Polymarket-style)\n * Enriches child markets with calculated probabilities and formats\n */\n formatMarketGroupForDisplay(group: any) {\n const outcomes = (group.markets || [])\n .filter((m: any) => !m.marketGroupItem?.isPlaceholder)\n .map((m: any) => ({\n marketId: m.marketId,\n name: m.marketGroupItem?.marketName || 'Unknown',\n question: m.question,\n probability: this.calculateMarketProbability(m),\n status: m.status,\n totalVolume: m.totalVolume,\n }))\n .sort((a: any, b: any) => {\n // Sort by probability (highest first)\n const probA = parseFloat(a.probability || '0');\n const probB = parseFloat(b.probability || '0');\n return probB - probA;\n });\n\n return {\n type: 'group' as const,\n groupId: group.groupId,\n marketQuestion: group.marketQuestion,\n status: group.status,\n totalMarkets: group.totalMarkets,\n activeMarketCount: group.activeMarketCount,\n resolvedMarketId: group.resolvedMarketId,\n createdAt: group.createdAt,\n outcomes,\n venue: group.venue,\n creator: group.creator,\n };\n }\n\n // ============================================\n // Cross-Venue Queries (Protocol App)\n // ============================================\n\n /**\n * Get all markets across all venues (no venue filter)\n * Returns standaloneMarkets + marketGroups for global market explorer\n *\n * @param params.first - Number of items per type (default 50)\n * @param params.skip - Pagination offset\n * @param params.sortBy - 'created' (newest) or 'volume' (most popular)\n */\n async getAllMarketsFeed(params?: {\n first?: number;\n skip?: number;\n sortBy?: 'created' | 'volume';\n }) {\n const sortBy = params?.sortBy || 'created';\n const query =\n sortBy === 'volume'\n ? GET_ALL_MARKETS_FEED_BY_VOLUME\n : GET_ALL_MARKETS_FEED;\n\n return this.subgraph.request<any>(query, {\n first: params?.first || 50,\n skip: params?.skip || 0,\n });\n }\n\n /**\n * Get top venues by volume\n */\n async getTopVenues(first = 10) {\n return this.subgraph.request(GET_VENUES, {\n first,\n skip: 0,\n orderBy: 'totalVolume',\n orderDirection: 'desc',\n });\n }\n\n /**\n * Get recent trades across all venues (for activity feed / ticker)\n */\n async getRecentTrades(params?: { first?: number; skip?: number }) {\n return this.subgraph.request<any>(GET_RECENT_TRADES, {\n first: params?.first || 20,\n skip: params?.skip || 0,\n });\n }\n\n /**\n * Get recently created markets across all venues\n */\n async getRecentMarkets(params?: { first?: number; skip?: number }) {\n return this.subgraph.request<any>(GET_RECENT_MARKETS, {\n first: params?.first || 20,\n skip: params?.skip || 0,\n });\n }\n\n // ============================================\n // Trader Analytics\n // ============================================\n\n /**\n * Get trader profile with aggregate stats\n */\n async getTraderProfile(address: string) {\n return this.subgraph.request<any>(GET_TRADER_PROFILE, {\n address: address.toLowerCase(),\n });\n }\n\n /**\n * Get trader's open positions (quantity > 0) with P&L data\n */\n async getTraderPositions(params: {\n trader: string;\n first?: number;\n skip?: number;\n }) {\n return this.subgraph.request<any>(GET_TRADER_POSITIONS, {\n trader: params.trader.toLowerCase(),\n first: params.first || 100,\n skip: params.skip || 0,\n });\n }\n\n /**\n * Get trader's closed positions (quantity = 0) with realized P&L\n */\n async getTraderClosedPositions(params: {\n trader: string;\n first?: number;\n skip?: number;\n }) {\n return this.subgraph.request<any>(GET_TRADER_CLOSED_POSITIONS, {\n trader: params.trader.toLowerCase(),\n first: params.first || 100,\n skip: params.skip || 0,\n });\n }\n\n /**\n * Get trader's fill history (activity feed)\n */\n async getTraderTrades(params: {\n trader: string;\n first?: number;\n skip?: number;\n }) {\n return this.subgraph.request<any>(GET_TRADER_FILLS, {\n trader: params.trader.toLowerCase(),\n first: params.first || 50,\n skip: params.skip || 0,\n });\n }\n\n /**\n * Get leaderboard (top traders sorted by volume or P&L)\n */\n async getLeaderboard(params?: {\n orderBy?: 'totalVolume' | 'totalRealizedPnL' | 'totalTradeCount';\n orderDirection?: 'asc' | 'desc';\n first?: number;\n skip?: number;\n }) {\n return this.subgraph.request<any>(GET_LEADERBOARD, {\n orderBy: params?.orderBy || 'totalVolume',\n orderDirection: params?.orderDirection || 'desc',\n first: params?.first || 50,\n skip: params?.skip || 0,\n });\n }\n\n /**\n * Get top holders for a market (by position size)\n */\n async getMarketTopHolders(params: {\n marketId: string;\n first?: number;\n }) {\n return this.subgraph.request<any>(GET_MARKET_TOP_HOLDERS, {\n marketId: params.marketId,\n first: params.first || 20,\n });\n }\n\n // ============================================\n // Raw subgraph access\n // ============================================\n\n /**\n * Run an arbitrary GraphQL query against the same subgraph endpoint the SDK\n * uses. Lets external services (e.g. cron workers) share the SDK's\n * subgraph connection without instantiating their own GraphQLClient.\n */\n async raw<T = unknown>(\n query: string | TypedDocumentNode<T>,\n variables?: Record<string, unknown>,\n ): Promise<T> {\n return this.subgraph.request<T>(query, variables);\n }\n\n // ============================================\n // Price Markets\n // ============================================\n\n /**\n * Find an unresolved PriceMarket matching (feedId, closeTime) created by\n * `creator`. Returns null when no match exists. Used as a create-idempotency\n * check by price-market bots before submitting a new market.\n */\n async findPriceMarketByFeedAndCloseTime(params: {\n pythFeedId: `0x${string}`;\n closeTime: bigint;\n creator: `0x${string}`;\n }): Promise<{ marketId: bigint } | null> {\n const data = await this.subgraph.request<{\n priceMarkets: Array<{ id: string; market: { marketId: string } }>;\n }>(FIND_PRICE_MARKET_BY_FEED_AND_CLOSE_TIME, {\n feedId: params.pythFeedId.toLowerCase(),\n closeTime: params.closeTime.toString(),\n creator: params.creator.toLowerCase(),\n });\n const hit = data.priceMarkets[0];\n return hit ? { marketId: BigInt(hit.market.marketId) } : null;\n }\n\n /**\n * List unresolved PriceMarkets created by `creator` whose closeTime is in\n * the past and whose parent Market is still Active, ordered by closeTime\n * ascending. Used by resolution cron workers to find markets that need\n * settling.\n */\n async findExpiredOpenPriceMarkets(params: {\n creator: `0x${string}`;\n now: bigint;\n first?: number;\n }): Promise<\n Array<{ marketId: bigint; feedId: `0x${string}`; closeTime: bigint }>\n > {\n const data = await this.subgraph.request<{\n priceMarkets: Array<{\n id: string;\n feedId: string;\n closeTime: string;\n market: { marketId: string };\n }>;\n }>(FIND_EXPIRED_OPEN_PRICE_MARKETS, {\n creator: params.creator.toLowerCase(),\n now: params.now.toString(),\n first: params.first ?? 100,\n });\n return data.priceMarkets.map((p) => ({\n marketId: BigInt(p.market.marketId),\n feedId: p.feedId as `0x${string}`,\n closeTime: BigInt(p.closeTime),\n }));\n }\n}\n\nconst FIND_PRICE_MARKET_BY_FEED_AND_CLOSE_TIME = gql`\n query FindPriceMarketByFeedAndCloseTime(\n $feedId: Bytes!\n $closeTime: BigInt!\n $creator: Bytes!\n ) {\n priceMarkets(\n where: {\n feedId: $feedId\n closeTime: $closeTime\n resolved: false\n market_: { creator: $creator }\n }\n first: 1\n ) {\n id\n market {\n marketId\n }\n }\n }\n`;\n\nconst FIND_EXPIRED_OPEN_PRICE_MARKETS = gql`\n query FindExpiredOpenPriceMarkets(\n $creator: Bytes!\n $now: BigInt!\n $first: Int!\n ) {\n priceMarkets(\n where: {\n resolved: false\n closeTime_lt: $now\n market_: { creator: $creator, status: Active }\n }\n first: $first\n orderBy: closeTime\n orderDirection: asc\n ) {\n id\n feedId\n closeTime\n market {\n marketId\n }\n }\n }\n`;\n","import { BaseModule } from './base';\nimport { ERC20ABI } from '../contracts';\nimport type { Address } from 'viem';\n\nexport class TokenModule extends BaseModule {\n /**\n * Approve a spender to spend tokens\n */\n async approve(token: Address, spender: Address, amount: bigint) {\n const wallet = this.walletClient;\n const account = await this.getSignerAccount();\n\n const { request } = await this.publicClient.simulateContract({\n address: token,\n abi: ERC20ABI,\n functionName: 'approve',\n args: [spender, amount],\n account,\n });\n\n return wallet.writeContract(request);\n }\n\n /**\n * Get allowance\n */\n async getAllowance(token: Address, owner: Address, spender: Address) {\n return this.publicClient.readContract({\n address: token,\n abi: ERC20ABI,\n functionName: 'allowance',\n args: [owner, spender],\n });\n }\n\n /**\n * Get balance\n */\n async getBalance(token: Address, owner: Address) {\n return this.publicClient.readContract({\n address: token,\n abi: ERC20ABI,\n functionName: 'balanceOf',\n args: [owner],\n });\n }\n\n /**\n * Get token decimals\n */\n async getDecimals(token: Address) {\n return this.publicClient.readContract({\n address: token,\n abi: ERC20ABI,\n functionName: 'decimals',\n });\n }\n\n /**\n * Get token symbol\n */\n async getSymbol(token: Address) {\n return this.publicClient.readContract({\n address: token,\n abi: ERC20ABI,\n functionName: 'symbol',\n });\n }\n\n /**\n * Get token name\n */\n async getName(token: Address) {\n return this.publicClient.readContract({\n address: token,\n abi: ERC20ABI,\n functionName: 'name',\n });\n }\n}\n","import { BaseModule } from './base';\nimport {\n ResolutionFacetABI,\n MarketsFacetABI,\n ProtocolFacetABI,\n ConditionalTokensABI,\n UmaOracleABI,\n} from '../contracts';\nimport { erc20Abi } from 'viem';\nimport type { Address } from 'viem';\n\n/**\n * UMA Module - Handles oracle assertion and resolution operations\n *\n * Workflow:\n * 1. Market is created → gets a questionId\n * 2. After resolutionTime, anyone can assert an outcome → gets assertionId\n * 3. After liveness period, anyone can settle the assertion\n * 4. After settlement (if truthful), anyone can report resolution to CTF\n */\nexport class UmaModule extends BaseModule {\n /**\n * Assert an outcome for a market question\n *\n * @param params.marketId - The market ID to assert on\n * @param params.outcome - The outcome string (e.g., \"YES\", \"NO\")\n * @param params.autoApprove - Automatically approve bond token if needed (default: true)\n *\n * @returns Transaction hash\n */\n async assertMarketOutcome(params: {\n marketId: bigint;\n outcome: string;\n autoApprove?: boolean;\n }) {\n const wallet = this.walletClient;\n const account = await this.getSignerAccount();\n const accountAddress = await this.getSignerAddress();\n const autoApprove = params.autoApprove ?? true;\n\n // Step 1: Get market registry data to find questionId\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n const registryData: any = await this.publicClient.readContract({\n address: this.config.diamondAddress,\n abi: MarketsFacetABI,\n functionName: 'getMarketRegistryData',\n args: [params.marketId],\n });\n\n const questionId = registryData.questionId as `0x${string}`;\n\n // Step 2: Get effective bond (max of requiredBond and UMA's minimumBond)\n const { effectiveBond, currency } = await this.getEffectiveBond(params.marketId);\n const bondAmount = effectiveBond;\n\n // Step 3: Check current allowance (approve Diamond, which delegates to ResolutionFacet)\n const currentAllowance = (await this.publicClient.readContract({\n address: currency,\n abi: erc20Abi,\n functionName: 'allowance',\n args: [accountAddress, this.config.diamondAddress],\n })) as bigint;\n\n // Step 4: Approve if needed\n if (currentAllowance < bondAmount && autoApprove) {\n const approveHash = await wallet.writeContract({\n address: currency,\n abi: erc20Abi,\n functionName: 'approve',\n args: [this.config.diamondAddress, bondAmount],\n account,\n chain: this.config.chain,\n });\n\n await this.publicClient.waitForTransactionReceipt({\n hash: approveHash,\n confirmations: 2,\n });\n\n await new Promise((resolve) => setTimeout(resolve, 2000));\n\n const newAllowance = (await this.publicClient.readContract({\n address: currency,\n abi: erc20Abi,\n functionName: 'allowance',\n args: [accountAddress, this.config.diamondAddress],\n })) as bigint;\n\n if (newAllowance < bondAmount) {\n throw new Error(\n `Approval failed to update. New allowance: ${newAllowance.toString()}, Required: ${bondAmount.toString()}`\n );\n }\n } else if (currentAllowance < bondAmount) {\n throw new Error(\n `Insufficient bond token allowance. Required: ${bondAmount.toString()}, Current: ${currentAllowance.toString()}. Please approve the Diamond (${\n this.config.diamondAddress\n }) to spend bond tokens.`\n );\n }\n\n // Step 5: Check balance\n const balance = (await this.publicClient.readContract({\n address: currency,\n abi: erc20Abi,\n functionName: 'balanceOf',\n args: [accountAddress],\n })) as bigint;\n\n if (balance < bondAmount) {\n throw new Error(\n `Insufficient bond token balance. Required: ${bondAmount.toString()}, Have: ${balance.toString()}`\n );\n }\n\n // Step 6: Assert the outcome via Diamond\n const { request } = await this.publicClient.simulateContract({\n address: this.config.diamondAddress,\n abi: ResolutionFacetABI,\n functionName: 'assertMarketOutcome',\n args: [questionId, params.outcome],\n account,\n });\n\n return wallet.writeContract(request);\n }\n\n /**\n * Get the effective bond for a market, accounting for UMA's minimum bond.\n * The contract uses max(requiredBond, oo.getMinimumBond(currency)).\n */\n async getEffectiveBond(marketId: bigint): Promise<{\n requiredBond: bigint;\n minimumBond: bigint;\n effectiveBond: bigint;\n currency: Address;\n }> {\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n const oracleData: any = await this.publicClient.readContract({\n address: this.config.diamondAddress,\n abi: MarketsFacetABI,\n functionName: 'getMarketOracleData',\n args: [marketId],\n });\n\n const requiredBond = BigInt(oracleData.requiredBond);\n const currency = oracleData.currency as Address;\n\n const umaOracle = (await this.publicClient.readContract({\n address: this.config.diamondAddress,\n abi: ProtocolFacetABI,\n functionName: 'getUmaOracle',\n })) as Address;\n\n const minimumBond = (await this.publicClient.readContract({\n address: umaOracle,\n abi: UmaOracleABI,\n functionName: 'getMinimumBond',\n args: [currency],\n })) as bigint;\n\n const effectiveBond = requiredBond > minimumBond ? requiredBond : minimumBond;\n\n return { requiredBond, minimumBond, effectiveBond, currency };\n }\n\n /**\n * Settle an assertion after the liveness period\n */\n async settleAssertion(assertionId: `0x${string}`) {\n const wallet = this.walletClient;\n const account = await this.getSignerAccount();\n\n const { request } = await this.publicClient.simulateContract({\n address: this.config.diamondAddress,\n abi: ResolutionFacetABI,\n functionName: 'settleAssertion',\n args: [assertionId],\n account,\n });\n\n return wallet.writeContract(request);\n }\n\n /**\n * Get the UMA Optimistic Oracle V3 address for the active Diamond.\n */\n async getUmaOracleAddress(): Promise<Address> {\n return (await this.publicClient.readContract({\n address: this.config.diamondAddress,\n abi: ProtocolFacetABI,\n functionName: 'getUmaOracle',\n })) as Address;\n }\n\n /**\n * Dispute an active assertion directly on the UMA Optimistic Oracle V3.\n *\n * The dispute escalates the assertion to UMA's DVM, which arbitrates the\n * outcome via tokenholder vote. The disputer must post a bond equal to the\n * asserter's bond — the winner is reimbursed and receives a share of the\n * loser's bond.\n *\n * @param params.assertionId - The active assertionId to dispute\n * @param params.autoApprove - Approve the bond currency to the oracle if needed (default: true)\n *\n * @returns Transaction hash\n */\n async disputeAssertion(params: {\n assertionId: `0x${string}`;\n autoApprove?: boolean;\n }) {\n const wallet = this.walletClient;\n const account = await this.getSignerAccount();\n const accountAddress = await this.getSignerAddress();\n const autoApprove = params.autoApprove ?? true;\n\n const oracleAddress = await this.getUmaOracleAddress();\n\n // Read assertion to get currency + bond amount required to dispute.\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n const assertion: any = await this.publicClient.readContract({\n address: oracleAddress,\n abi: UmaOracleABI,\n functionName: 'getAssertion',\n args: [params.assertionId],\n });\n\n const currency = assertion.currency as Address;\n const bondAmount = BigInt(assertion.bond);\n\n if (assertion.disputer !== '0x0000000000000000000000000000000000000000') {\n throw new Error('Assertion has already been disputed');\n }\n\n if (assertion.settled) {\n throw new Error('Assertion is already settled');\n }\n\n const currentTime = Math.floor(Date.now() / 1000);\n if (currentTime >= Number(assertion.expirationTime)) {\n throw new Error('Liveness period has expired — assertion can no longer be disputed');\n }\n\n // Approve oracle to pull bond from disputer if needed.\n const currentAllowance = (await this.publicClient.readContract({\n address: currency,\n abi: erc20Abi,\n functionName: 'allowance',\n args: [accountAddress, oracleAddress],\n })) as bigint;\n\n if (currentAllowance < bondAmount && autoApprove) {\n const approveHash = await wallet.writeContract({\n address: currency,\n abi: erc20Abi,\n functionName: 'approve',\n args: [oracleAddress, bondAmount],\n account,\n chain: this.config.chain,\n });\n\n await this.publicClient.waitForTransactionReceipt({\n hash: approveHash,\n confirmations: 2,\n });\n } else if (currentAllowance < bondAmount) {\n throw new Error(\n `Insufficient bond currency allowance for oracle. Required: ${bondAmount.toString()}, Current: ${currentAllowance.toString()}.`\n );\n }\n\n const balance = (await this.publicClient.readContract({\n address: currency,\n abi: erc20Abi,\n functionName: 'balanceOf',\n args: [accountAddress],\n })) as bigint;\n\n if (balance < bondAmount) {\n throw new Error(\n `Insufficient bond currency balance. Required: ${bondAmount.toString()}, Have: ${balance.toString()}`\n );\n }\n\n const { request } = await this.publicClient.simulateContract({\n address: oracleAddress,\n abi: UmaOracleABI,\n functionName: 'disputeAssertion',\n args: [params.assertionId, accountAddress],\n account,\n });\n\n return wallet.writeContract(request);\n }\n\n /**\n * Report resolution after UMA settlement\n */\n async reportResolution(params: { marketId: bigint; outcome: string }) {\n const wallet = this.walletClient;\n const account = await this.getSignerAccount();\n\n const { request } = await this.publicClient.simulateContract({\n address: this.config.diamondAddress,\n abi: ResolutionFacetABI,\n functionName: 'reportResolution',\n args: [params.marketId, params.outcome],\n account,\n });\n\n return wallet.writeContract(request);\n }\n\n /**\n * Check if a market has been resolved in CTF\n */\n async getResolutionStatus(marketId: bigint) {\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n const oracleData: any = await this.publicClient.readContract({\n address: this.config.diamondAddress,\n abi: MarketsFacetABI,\n functionName: 'getMarketOracleData',\n args: [marketId],\n });\n\n const conditionId = oracleData.conditionId as `0x${string}`;\n\n const payoutDenominator = (await this.publicClient.readContract({\n address: this.config.conditionalTokensAddress,\n abi: ConditionalTokensABI,\n functionName: 'payoutDenominator',\n args: [conditionId],\n })) as bigint;\n\n if (payoutDenominator === 0n) {\n return {\n resolved: false,\n winningOutcome: null,\n payouts: [],\n };\n }\n\n const outcomeSlotCount = Number(oracleData.outcomeSlotCount || 2);\n const payouts: bigint[] = [];\n\n for (let i = 0; i < outcomeSlotCount; i++) {\n const payout = (await this.publicClient.readContract({\n address: this.config.conditionalTokensAddress,\n abi: ConditionalTokensABI,\n functionName: 'payoutNumerators',\n args: [conditionId, BigInt(i)],\n })) as bigint;\n payouts.push(payout);\n }\n\n let winningOutcome: string | null = null;\n if (outcomeSlotCount === 2) {\n if (payouts[0] > 0n && payouts[1] === 0n) {\n winningOutcome = 'YES';\n } else if (payouts[1] > 0n && payouts[0] === 0n) {\n winningOutcome = 'NO';\n } else if (payouts[0] === payouts[1]) {\n winningOutcome = 'INVALID';\n }\n }\n\n return {\n resolved: true,\n winningOutcome,\n payouts,\n payoutDenominator,\n };\n }\n\n /**\n * Redeem winning outcome tokens for collateral\n */\n async redeemWinnings(marketId: bigint) {\n const wallet = this.walletClient;\n const account = await this.getSignerAccount();\n\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n const oracleData: any = await this.publicClient.readContract({\n address: this.config.diamondAddress,\n abi: MarketsFacetABI,\n functionName: 'getMarketOracleData',\n args: [marketId],\n });\n\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n const tradingData: any = await this.publicClient.readContract({\n address: this.config.diamondAddress,\n abi: MarketsFacetABI,\n functionName: 'getMarketTradingData',\n args: [marketId],\n });\n\n const conditionId = oracleData.conditionId as `0x${string}`;\n const collateralToken = tradingData.collateralToken as Address;\n\n const indexSets = [1, 2];\n\n const { request } = await this.publicClient.simulateContract({\n address: this.config.conditionalTokensAddress,\n abi: ConditionalTokensABI,\n functionName: 'redeemPositions',\n args: [\n collateralToken,\n '0x0000000000000000000000000000000000000000000000000000000000000000' as `0x${string}`,\n conditionId,\n indexSets,\n ],\n account,\n });\n\n return wallet.writeContract(request);\n }\n\n /**\n * Get the collateral token address for a market\n */\n async getCollateralToken(marketId: bigint): Promise<Address> {\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n const tradingData: any = await this.publicClient.readContract({\n address: this.config.diamondAddress,\n abi: MarketsFacetABI,\n functionName: 'getMarketTradingData',\n args: [marketId],\n });\n\n return tradingData.collateralToken as Address;\n }\n\n /**\n * Get question/oracle data for a market\n */\n async getQuestionData(marketId: bigint) {\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n const oracleData: any = await this.publicClient.readContract({\n address: this.config.diamondAddress,\n abi: MarketsFacetABI,\n functionName: 'getMarketOracleData',\n args: [marketId],\n });\n\n return {\n questionId: oracleData.questionId as `0x${string}`,\n conditionId: oracleData.conditionId as `0x${string}`,\n outcomeSlotCount: BigInt(oracleData.outcomeSlotCount),\n currency: oracleData.currency as Address,\n reward: BigInt(oracleData.reward),\n requiredBond: BigInt(oracleData.requiredBond),\n liveness: BigInt(oracleData.liveness),\n initialized: oracleData.initialized as boolean,\n activeAssertionId: oracleData.activeAssertionId as `0x${string}`,\n ancillaryData: oracleData.ancillaryData as `0x${string}`,\n };\n }\n\n /**\n * Get assertion data\n */\n async getAssertionData(assertionId: `0x${string}`) {\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n const data: any = await this.publicClient.readContract({\n address: this.config.diamondAddress,\n abi: ResolutionFacetABI,\n functionName: 'getAssertionData',\n args: [assertionId],\n });\n\n return {\n assertionId: data.assertionId as `0x${string}`,\n questionId: data.questionId as `0x${string}`,\n outcome: data.outcome as string,\n settled: data.settled as boolean,\n };\n }\n\n /**\n * Get assertion details from UMA Oracle including expiration time\n */\n async getAssertionDetails(assertionId: `0x${string}`) {\n // Get the UMA Oracle address from Diamond\n const oracleAddress = await this.publicClient.readContract({\n address: this.config.diamondAddress,\n abi: ProtocolFacetABI,\n functionName: 'getUmaOracle',\n });\n\n // Query the oracle directly for assertion details\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n const assertion: any = await this.publicClient.readContract({\n address: oracleAddress as `0x${string}`,\n abi: [\n {\n name: 'getAssertion',\n type: 'function',\n stateMutability: 'view',\n inputs: [{ name: 'assertionId', type: 'bytes32' }],\n outputs: [\n {\n name: 'assertion',\n type: 'tuple',\n components: [\n {\n name: 'escalationManagerSettings',\n type: 'tuple',\n components: [\n { name: 'arbitrateViaEscalationManager', type: 'bool' },\n { name: 'discardOracle', type: 'bool' },\n { name: 'validateDisputers', type: 'bool' },\n { name: 'assertingCaller', type: 'address' },\n { name: 'escalationManager', type: 'address' },\n ],\n },\n { name: 'asserter', type: 'address' },\n { name: 'assertionTime', type: 'uint64' },\n { name: 'settled', type: 'bool' },\n { name: 'currency', type: 'address' },\n { name: 'expirationTime', type: 'uint64' },\n { name: 'settlementResolution', type: 'bool' },\n { name: 'domainId', type: 'bytes32' },\n { name: 'identifier', type: 'bytes32' },\n { name: 'bond', type: 'uint256' },\n { name: 'callbackRecipient', type: 'address' },\n { name: 'disputer', type: 'address' },\n ],\n },\n ],\n },\n ],\n functionName: 'getAssertion',\n args: [assertionId],\n });\n\n const expirationTime = Number(assertion.expirationTime);\n const currentTime = Math.floor(Date.now() / 1000);\n\n return {\n asserter: assertion.asserter as `0x${string}`,\n assertionTime: Number(assertion.assertionTime),\n settled: assertion.settled as boolean,\n expirationTime,\n canSettle: currentTime >= expirationTime,\n disputer: assertion.disputer as `0x${string}`,\n isDisputed: assertion.disputer !== '0x0000000000000000000000000000000000000000',\n currency: assertion.currency as Address,\n bond: BigInt(assertion.bond),\n };\n }\n\n /**\n * Get comprehensive market status for UMA resolution\n */\n async getMarketStatus(marketId: bigint) {\n // Get market registry data\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n const registryData: any = await this.publicClient.readContract({\n address: this.config.diamondAddress,\n abi: MarketsFacetABI,\n functionName: 'getMarketRegistryData',\n args: [marketId],\n });\n\n const questionId = registryData.questionId as `0x${string}`;\n const marketStatus = Number(registryData.status); // 0=Draft, 1=Active, 2=Resolved\n\n // Get question/oracle data\n const questionData = await this.getQuestionData(marketId);\n const conditionId = questionData.conditionId;\n\n // Check if there's an active assertion\n const hasAssertion =\n questionData.activeAssertionId !==\n '0x0000000000000000000000000000000000000000000000000000000000000000';\n\n let assertionData = null;\n let isSettled = false;\n\n if (hasAssertion) {\n assertionData = await this.getAssertionData(\n questionData.activeAssertionId\n );\n isSettled = assertionData.settled;\n }\n\n // Check if resolution has been reported to CTF\n const payoutDenominator = (await this.publicClient.readContract({\n address: this.config.conditionalTokensAddress,\n abi: ConditionalTokensABI,\n functionName: 'payoutDenominator',\n args: [conditionId],\n })) as bigint;\n\n const isReportedToCTF = payoutDenominator > 0n;\n\n let winningOutcome: string | null = null;\n if (isReportedToCTF) {\n const payout0 = (await this.publicClient.readContract({\n address: this.config.conditionalTokensAddress,\n abi: ConditionalTokensABI,\n functionName: 'payoutNumerators',\n args: [conditionId, 0n],\n })) as bigint;\n\n const payout1 = (await this.publicClient.readContract({\n address: this.config.conditionalTokensAddress,\n abi: ConditionalTokensABI,\n functionName: 'payoutNumerators',\n args: [conditionId, 1n],\n })) as bigint;\n\n if (payout0 > 0n && payout1 === 0n) {\n winningOutcome = 'YES';\n } else if (payout1 > 0n && payout0 === 0n) {\n winningOutcome = 'NO';\n } else if (payout0 === payout1) {\n winningOutcome = 'INVALID';\n }\n }\n\n return {\n marketId,\n questionId,\n marketStatus:\n marketStatus === 0\n ? 'Draft'\n : marketStatus === 1\n ? 'Active'\n : 'Resolved',\n assertion: {\n hasAssertion,\n assertionId: hasAssertion ? questionData.activeAssertionId : null,\n outcome: assertionData?.outcome || null,\n settled: isSettled,\n },\n question: {\n requiredBond: questionData.requiredBond,\n currency: questionData.currency,\n reward: questionData.reward,\n liveness: questionData.liveness,\n },\n resolution: {\n reportedToCTF: isReportedToCTF,\n winningOutcome,\n },\n canAssert: !hasAssertion && marketStatus === 1,\n canSettle: hasAssertion && !isSettled,\n canReportResolution: hasAssertion && isSettled && !isReportedToCTF,\n isResolved: isReportedToCTF,\n };\n }\n\n /**\n * Get the questionId for a market\n */\n async getQuestionId(marketId: bigint): Promise<`0x${string}`> {\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n const registryData: any = await this.publicClient.readContract({\n address: this.config.diamondAddress,\n abi: MarketsFacetABI,\n functionName: 'getMarketRegistryData',\n args: [marketId],\n });\n\n return registryData.questionId as `0x${string}`;\n }\n}\n","import { BaseModule } from './base';\nimport { AccessControlFacetABI, WhitelistAccessControlABI } from '../contracts';\n\nexport class AccessControlModule extends BaseModule {\n // ---- Factory (deploy standalone AC contracts via Diamond) ----\n\n /**\n * Deploy a WhitelistAccessControl contract. Caller becomes the owner.\n * @returns Transaction hash. Use receipt logs to extract the deployed contract address.\n */\n async deployWhitelist() {\n const wallet = this.walletClient;\n const account = await this.getSignerAccount();\n\n const { request } = await this.publicClient.simulateContract({\n address: this.config.diamondAddress,\n abi: AccessControlFacetABI,\n functionName: 'deployWhitelistAC',\n args: [],\n account,\n });\n\n return wallet.writeContract(request);\n }\n\n /**\n * Deploy an NFTGatedAccessControl contract.\n * @param params.nftContract - The NFT contract address (ERC-721 or ERC-1155).\n * @param params.isERC1155 - True if the NFT contract is ERC-1155, false for ERC-721.\n * @param params.tokenId - The token ID to check (only used for ERC-1155, pass 0n for ERC-721).\n */\n async deployNFTGated(params: {\n nftContract: `0x${string}`;\n isERC1155: boolean;\n tokenId: bigint;\n }) {\n const wallet = this.walletClient;\n const account = await this.getSignerAccount();\n\n const { request } = await this.publicClient.simulateContract({\n address: this.config.diamondAddress,\n abi: AccessControlFacetABI,\n functionName: 'deployNFTGatedAC',\n args: [params.nftContract, params.isERC1155, params.tokenId],\n account,\n });\n\n return wallet.writeContract(request);\n }\n\n /**\n * Deploy a TokenGatedAccessControl contract.\n * @param params.token - The ERC-20 token contract address.\n * @param params.minBalance - The minimum token balance required for access.\n */\n async deployTokenGated(params: {\n token: `0x${string}`;\n minBalance: bigint;\n }) {\n const wallet = this.walletClient;\n const account = await this.getSignerAccount();\n\n const { request } = await this.publicClient.simulateContract({\n address: this.config.diamondAddress,\n abi: AccessControlFacetABI,\n functionName: 'deployTokenGatedAC',\n args: [params.token, params.minBalance],\n account,\n });\n\n return wallet.writeContract(request);\n }\n\n // ---- Configuration (market-level AC overrides) ----\n\n /**\n * Set a trading access control contract for a specific market. Venue operator only.\n */\n async setMarketTradingAC(params: {\n marketId: bigint;\n acContract: `0x${string}`;\n }) {\n const wallet = this.walletClient;\n const account = await this.getSignerAccount();\n\n const { request } = await this.publicClient.simulateContract({\n address: this.config.diamondAddress,\n abi: AccessControlFacetABI,\n functionName: 'setMarketTradingAccessControl',\n args: [params.marketId, params.acContract],\n account,\n });\n\n return wallet.writeContract(request);\n }\n\n /**\n * Remove the trading access control override for a specific market. Venue operator only.\n */\n async removeMarketTradingAC(params: { marketId: bigint }) {\n const wallet = this.walletClient;\n const account = await this.getSignerAccount();\n\n const { request } = await this.publicClient.simulateContract({\n address: this.config.diamondAddress,\n abi: AccessControlFacetABI,\n functionName: 'removeMarketTradingAccessControl',\n args: [params.marketId],\n account,\n });\n\n return wallet.writeContract(request);\n }\n\n // ---- Queries (read via Diamond) ----\n\n /**\n * Check if a user can trade on a specific market (checks market-level then venue-level fallback).\n */\n async canTradeOnMarket(params: {\n user: `0x${string}`;\n marketId: bigint;\n }): Promise<boolean> {\n return this.publicClient.readContract({\n address: this.config.diamondAddress,\n abi: AccessControlFacetABI,\n functionName: 'canTradeOnMarket',\n args: [params.user, params.marketId],\n }) as Promise<boolean>;\n }\n\n /**\n * Get the market-level trading AC contract address (address(0) if not set).\n */\n async getMarketTradingAC(params: {\n marketId: bigint;\n }): Promise<`0x${string}`> {\n return this.publicClient.readContract({\n address: this.config.diamondAddress,\n abi: AccessControlFacetABI,\n functionName: 'getMarketTradingAccessControl',\n args: [params.marketId],\n }) as Promise<`0x${string}`>;\n }\n\n // ---- Whitelist management (direct contract calls, not through Diamond) ----\n\n /**\n * Add users to a WhitelistAccessControl contract. Only the contract owner can call this.\n */\n async addToWhitelist(params: {\n acContract: `0x${string}`;\n users: `0x${string}`[];\n }) {\n const wallet = this.walletClient;\n const account = await this.getSignerAccount();\n\n const { request } = await this.publicClient.simulateContract({\n address: params.acContract,\n abi: WhitelistAccessControlABI,\n functionName: 'addToWhitelist',\n args: [params.users],\n account,\n });\n\n return wallet.writeContract(request);\n }\n\n /**\n * Remove users from a WhitelistAccessControl contract. Only the contract owner can call this.\n */\n async removeFromWhitelist(params: {\n acContract: `0x${string}`;\n users: `0x${string}`[];\n }) {\n const wallet = this.walletClient;\n const account = await this.getSignerAccount();\n\n const { request } = await this.publicClient.simulateContract({\n address: params.acContract,\n abi: WhitelistAccessControlABI,\n functionName: 'removeFromWhitelist',\n args: [params.users],\n account,\n });\n\n return wallet.writeContract(request);\n }\n\n /**\n * Check if a user is whitelisted on a specific WhitelistAccessControl contract.\n */\n async isWhitelisted(params: {\n acContract: `0x${string}`;\n user: `0x${string}`;\n }): Promise<boolean> {\n return this.publicClient.readContract({\n address: params.acContract,\n abi: WhitelistAccessControlABI,\n functionName: 'isAllowed',\n args: [params.user],\n }) as Promise<boolean>;\n }\n}\n","import { BaseModule } from './base';\nimport {\n PriceMarketFacetABI,\n PythResolutionFacetABI,\n VenueFacetABI,\n} from '../contracts';\nimport { erc20Abi, stringToHex } from 'viem';\nimport type { Address } from 'viem';\nimport { isValidTickSize, type MarketQuestion } from '../utils/conversions';\n\nconst PYTH_HERMES_BASE = 'https://hermes.pyth.network';\n\nconst PYTH_GET_UPDATE_FEE_ABI = [\n {\n name: 'getUpdateFee',\n type: 'function',\n stateMutability: 'view',\n inputs: [{ name: 'updateData', type: 'bytes[]' }],\n outputs: [{ name: 'feeAmount', type: 'uint256' }],\n },\n] as const;\n\nexport enum FeedProvider {\n PYTH = 0,\n CHAINLINK = 1,\n}\n\nexport interface PriceMarketData {\n feedId: `0x${string}`;\n feedProvider: FeedProvider;\n openTime: bigint;\n closeTime: bigint;\n priceExpo: number;\n finalPrice: bigint;\n resolutionWindow: bigint;\n resolved: boolean;\n /**\n * Reference price for resolution.\n * - Explicit-strike markets: set at creation, never changes.\n * - Deferred Up/Down markets: 0 at creation, populated at resolution with the\n * open price captured from the earliest Hermes VAA in\n * `[openTime, openTime + resolutionWindow]`.\n */\n strikePrice: bigint;\n /**\n * Pyth VAA publishTime of the open-price capture (seconds since epoch).\n * - Explicit-strike markets: always 0 (no open price is captured).\n * - Deferred Up/Down markets: 0 until resolution, then set to the open VAA's\n * publishTime.\n */\n openPriceTime: bigint;\n}\n\n/**\n * Latest Pyth price update plus the signed VAA's publishTime.\n * `fetchedAt` is the SDK-local unix timestamp (seconds) at fetch time.\n */\nexport interface PythUpdate {\n updateData: `0x${string}`[];\n publishTime: bigint;\n fetchedAt: bigint;\n}\n\n/**\n * Projected open price for a deferred Up/Down market that hasn't resolved yet.\n * Derived from the same Hermes VAA the on-chain resolver will pick.\n */\nexport interface ProjectedOpenPrice {\n /** Price extracted from the open-window Hermes VAA (Pyth feed-native units). */\n price: bigint;\n /** publishTime of the VAA (seconds since epoch). */\n publishTime: bigint;\n /** Pyth's price exponent for the feed (e.g. -8). Convenience for UI formatting. */\n expo: number;\n /**\n * `true` once `block.timestamp >= openTime + resolutionWindow` — past that point\n * every client querying Hermes the same way agrees on the same VAA and the\n * on-chain strike at resolution will equal this exact `price`. Before that,\n * the value is a best-effort projection that could shift slightly as Hermes\n * publishes new VAAs inside the window.\n */\n canonical: boolean;\n /** The market's openTime this projection corresponds to. */\n openTime: bigint;\n}\n\n/** Default cap for freshness helper retries. */\nconst DEFAULT_FRESH_MAX_AGE_SECONDS = 120;\nconst DEFAULT_FRESH_MAX_ATTEMPTS = 3;\n\nexport class PriceMarketModule extends BaseModule {\n /**\n * Create a Pyth-powered price market. Three shapes via one entry point:\n *\n * - **Immediate Up/Down** (`strikePrice = 0`, `openTime = 0` or omitted):\n * `openTime` is set to `block.timestamp` at creation; open price is\n * captured at resolution from the earliest Hermes VAA in\n * `[openTime, openTime + resolutionWindow]`.\n *\n * - **Scheduled Up/Down** (`strikePrice = 0`, `openTime > now`):\n * Market exists from creation and is tradable. At `openTime` the open\n * price window begins; capture happens at resolution as above.\n *\n * - **Explicit strike** (`strikePrice > 0`): Above/Below market resolved\n * against the caller-supplied target. `openTime` is ignored and stored\n * as `block.timestamp`; no open-price capture occurs at resolution.\n *\n * Creation never touches Pyth — no VAA submission, no Pyth fee. The\n * resolver pays Pyth fees later when calling {@link resolvePyth}.\n *\n * @param params.venueId - The venue to create the market in\n * @param params.pythFeedId - Pyth price feed ID (e.g., ETH/USD)\n * @param params.strikePrice - Target price (0 = capture open at resolution)\n * @param params.openTime - When the market opens (0 = immediate / now)\n * @param params.closeTime - Absolute close timestamp (must be > effective openTime)\n * @param params.outcomes - Market outcome labels (e.g., [\"Up\", \"Down\"] or [\"Above\", \"Below\"])\n * @param params.tickSize - Price increment for the orderbook (1e15 or 1e16)\n * @param params.collateralToken - ERC20 collateral token address\n * @param params.question - Market question for ancillary data\n * @param params.liveness - UMA challenge period in seconds (0 = default)\n * @param params.tags - Optional tags for the market\n * @param params.resolutionWindow - Pyth timestamp tolerance in seconds (0 = default 60s, max 300s)\n */\n async createPyth(params: {\n venueId: bigint;\n pythFeedId: `0x${string}`;\n strikePrice?: bigint;\n openTime?: bigint;\n closeTime: bigint;\n outcomes?: string[];\n tickSize: bigint;\n collateralToken: Address;\n question: MarketQuestion;\n liveness?: bigint;\n tags?: string[];\n resolutionWindow?: bigint;\n }) {\n const wallet = this.walletClient;\n const account = await this.getSignerAccount();\n\n const outcomes = params.outcomes ?? ['Up', 'Down'];\n\n const { encodedTags, ancillaryData } =\n await this._prepareCreationCommon(params, await this.getSignerAddress());\n\n if (!isValidTickSize(params.tickSize)) {\n throw new Error('Invalid tickSize: must be 1e15 (0.1%) or 1e16 (1%)');\n }\n\n const { request } = await this.publicClient.simulateContract({\n address: this.config.diamondAddress,\n abi: PythResolutionFacetABI,\n functionName: 'createPriceMarketPyth',\n args: [\n params.venueId,\n params.pythFeedId,\n params.strikePrice ?? BigInt(0),\n params.openTime ?? BigInt(0),\n params.closeTime,\n outcomes,\n params.tickSize,\n params.collateralToken,\n ancillaryData,\n params.liveness ?? BigInt(0),\n encodedTags,\n params.resolutionWindow ?? BigInt(0),\n ],\n account,\n });\n\n return wallet.writeContract(request);\n }\n\n /**\n * Resolve a price market using Pyth.\n *\n * Anyone can call this after `closeTime`. For deferred Up/Down markets\n * (`strikePrice == 0`), the SDK fetches **two** Hermes VAAs — one for the\n * open window, one for the close window — and submits them together so the\n * on-chain facet can capture the open price and compare against the close\n * in a single transaction. For explicit-strike markets only the close VAA\n * is fetched.\n */\n async resolvePyth(marketId: bigint) {\n const wallet = this.walletClient;\n const account = await this.getSignerAccount();\n\n const pm = await this.get(marketId);\n\n if (pm.resolved) {\n throw new Error('Price market already resolved');\n }\n\n const now = BigInt(Math.floor(Date.now() / 1000));\n if (now < pm.closeTime) {\n throw new Error(\n `Close time not reached. Current: ${now.toString()}, CloseTime: ${pm.closeTime.toString()}`,\n );\n }\n\n const isDeferred = pm.strikePrice === BigInt(0);\n const windowSeconds = Number(pm.resolutionWindow);\n\n const closeVAA = await this.fetchPythHistoricalData(\n pm.feedId,\n Number(pm.closeTime),\n windowSeconds,\n );\n\n let pythUpdateData: `0x${string}`[];\n if (isDeferred) {\n const openVAA = await this.fetchPythHistoricalData(\n pm.feedId,\n Number(pm.openTime),\n windowSeconds,\n );\n pythUpdateData = [...openVAA, ...closeVAA];\n } else {\n pythUpdateData = closeVAA;\n }\n\n const pythAddress = await this.getPythContract();\n const pythFee = (await this.publicClient.readContract({\n address: pythAddress,\n abi: PYTH_GET_UPDATE_FEE_ABI,\n functionName: 'getUpdateFee',\n args: [pythUpdateData],\n })) as bigint;\n\n // Use at least 1 gwei to cover edge cases where getUpdateFee returns 0 via\n // eth_call but the actual tx requires non-zero value. Contract refunds excess.\n const valueSent = pythFee > BigInt(0) ? pythFee : BigInt(1_000_000_000);\n\n const { request } = await this.publicClient.simulateContract({\n address: this.config.diamondAddress,\n abi: PythResolutionFacetABI,\n functionName: 'resolvePriceMarketPyth',\n args: [marketId, pythUpdateData],\n account,\n value: valueSent,\n });\n\n return wallet.writeContract(request);\n }\n\n /**\n * Check if a market is a Pyth price market\n */\n async isPriceMarket(marketId: bigint): Promise<boolean> {\n return (await this.publicClient.readContract({\n address: this.config.diamondAddress,\n abi: PriceMarketFacetABI,\n functionName: 'isPriceMarket',\n args: [marketId],\n })) as boolean;\n }\n\n /**\n * Check if a price market can be resolved (closeTime reached and not yet resolved).\n */\n async canResolve(marketId: bigint): Promise<boolean> {\n return (await this.publicClient.readContract({\n address: this.config.diamondAddress,\n abi: PriceMarketFacetABI,\n functionName: 'canResolvePriceMarket',\n args: [marketId],\n })) as boolean;\n }\n\n /**\n * Get price market data\n */\n async get(marketId: bigint): Promise<PriceMarketData> {\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n const result: any = await this.publicClient.readContract({\n address: this.config.diamondAddress,\n abi: PriceMarketFacetABI,\n functionName: 'getPriceMarket',\n args: [marketId],\n });\n\n return {\n feedId: result[0] as `0x${string}`,\n feedProvider: Number(result[1]) as FeedProvider,\n openTime: BigInt(result[2]),\n closeTime: BigInt(result[3]),\n priceExpo: Number(result[4]),\n finalPrice: BigInt(result[5]),\n resolutionWindow: BigInt(result[6]),\n resolved: result[7] as boolean,\n strikePrice: BigInt(result[8]),\n openPriceTime: BigInt(result[9]),\n };\n }\n\n /**\n * Get the Pyth contract address configured on the Diamond\n */\n async getPythContract(): Promise<Address> {\n return (await this.publicClient.readContract({\n address: this.config.diamondAddress,\n abi: PythResolutionFacetABI,\n functionName: 'getPythContract',\n })) as Address;\n }\n\n /**\n * Mark a stuck price market as Invalid and refund holders 50/50 via the CTF.\n * Permissionless: anyone can call this once `closeTime + 7 days` has elapsed.\n *\n * Use this for markets that never resolve via Pyth — e.g. the feed was\n * deprecated by the publisher, or Hermes had no in-window VAA at closeTime.\n * Reports payouts `[1, 1]` to the CTF, so every YES and every NO token\n * redeems for half the underlying collateral.\n *\n * Reverts on chain with `GracePeriodNotElapsed` if called too early.\n */\n async markInvalid(marketId: bigint) {\n const wallet = this.walletClient;\n const account = await this.getSignerAccount();\n\n const { request } = await this.publicClient.simulateContract({\n address: this.config.diamondAddress,\n abi: PythResolutionFacetABI,\n functionName: 'markPriceMarketInvalid',\n args: [marketId],\n account,\n });\n\n return wallet.writeContract(request);\n }\n\n /**\n * Set the Pyth oracle contract address. Diamond owner only.\n */\n async setPythContract(pythContract: Address) {\n const wallet = this.walletClient;\n const account = await this.getSignerAccount();\n\n const { request } = await this.publicClient.simulateContract({\n address: this.config.diamondAddress,\n abi: PythResolutionFacetABI,\n functionName: 'setPythContract',\n args: [pythContract],\n account,\n });\n\n return wallet.writeContract(request);\n }\n\n // ---- Private helpers ----\n\n /**\n * Shared pre-flight checks: creation fee allowance, ancillary data, tags\n */\n private async _prepareCreationCommon(\n params: {\n venueId: bigint;\n collateralToken: Address;\n question: MarketQuestion;\n tags?: string[];\n },\n account: Address,\n ) {\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n const venue: any = await this.publicClient.readContract({\n address: this.config.diamondAddress,\n abi: VenueFacetABI,\n functionName: 'getVenue',\n args: [params.venueId],\n });\n\n const feeRequired = venue.marketCreationFee;\n if (feeRequired > BigInt(0)) {\n const allowance = await this.publicClient.readContract({\n address: params.collateralToken,\n abi: erc20Abi,\n functionName: 'allowance',\n args: [account, this.config.diamondAddress],\n });\n\n if (allowance < feeRequired) {\n throw new Error(\n `Insufficient allowance for Market Creation Fee. Approved: ${allowance.toString()}, Required: ${feeRequired.toString()}.`,\n );\n }\n }\n\n const ancillaryData = this.formatAncillaryData(params.question);\n\n const encodedTags = (params.tags ?? []).map((t) =>\n stringToHex(t, { size: 32 }),\n );\n\n return { encodedTags, ancillaryData };\n }\n\n private formatAncillaryData(question: MarketQuestion): `0x${string}` {\n let data = `q:title:${question.title}`;\n data += `,description:${question.description}`;\n return stringToHex(data);\n }\n\n /**\n * Fetch the latest Pyth price update from Hermes — the bytes plus the\n * VAA's publishTime.\n *\n * Useful for UI projected-strike display: callers can render the current\n * Pyth price (and its publishTime) before a deferred market's open window\n * closes, then switch to the on-chain strike once resolution happens.\n */\n async fetchPythLatestUpdate(feedId: `0x${string}`): Promise<PythUpdate> {\n const url = `${PYTH_HERMES_BASE}/v2/updates/price/latest?ids[]=${feedId}`;\n const response = await fetch(url);\n\n if (!response.ok) {\n throw new Error(\n `Pyth Hermes API error: ${response.status} ${response.statusText}`,\n );\n }\n\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n const data: any = await response.json();\n const updateData: string[] | undefined = data.binary?.data;\n\n if (!updateData || updateData.length === 0) {\n throw new Error('No price update data returned from Pyth Hermes');\n }\n\n const parsed = data.parsed?.[0];\n const publishTimeRaw = parsed?.price?.publish_time;\n if (typeof publishTimeRaw !== 'number') {\n throw new Error('Pyth Hermes response missing parsed.price.publish_time');\n }\n\n return {\n updateData: updateData.map((d) => `0x${d}` as `0x${string}`),\n publishTime: BigInt(publishTimeRaw),\n fetchedAt: BigInt(Math.floor(Date.now() / 1000)),\n };\n }\n\n /**\n * Return a Pyth update that is fresh enough for client-side projected-strike\n * display.\n *\n * If `cached` is provided and still within `maxAgeSeconds`, returns it\n * unchanged. Otherwise re-queries Hermes; if the new VAA is also stale\n * (quiet feed), retries up to `maxAttempts`.\n *\n * Defaults: `maxAgeSeconds = 120`, `maxAttempts = 3`.\n */\n async fetchFreshPythUpdate(\n feedId: `0x${string}`,\n options: {\n maxAgeSeconds?: number;\n maxAttempts?: number;\n cached?: PythUpdate;\n } = {},\n ): Promise<PythUpdate> {\n const maxAgeSeconds = options.maxAgeSeconds ?? DEFAULT_FRESH_MAX_AGE_SECONDS;\n const maxAttempts = options.maxAttempts ?? DEFAULT_FRESH_MAX_ATTEMPTS;\n\n const isFresh = (u: PythUpdate): boolean => {\n const now = BigInt(Math.floor(Date.now() / 1000));\n return now - u.publishTime <= BigInt(maxAgeSeconds);\n };\n\n if (options.cached && isFresh(options.cached)) {\n return options.cached;\n }\n\n let latest: PythUpdate | undefined;\n for (let attempt = 0; attempt < maxAttempts; attempt++) {\n latest = await this.fetchPythLatestUpdate(feedId);\n if (isFresh(latest)) return latest;\n }\n\n if (!latest) {\n throw new Error('Failed to fetch any Pyth update from Hermes');\n }\n return latest;\n }\n\n /**\n * Resolve the projected open price for a deferred Up/Down market — what the\n * UI should display as the \"strike\" between `openTime` and resolution.\n *\n * For deferred markets, the on-chain `strikePrice` is 0 until the resolver\n * fires {@link resolvePyth}. This helper replicates the same rule the\n * contract will use (\"earliest in-window Hermes VAA in\n * `[openTime, openTime + resolutionWindow]`\") by querying Hermes at\n * `openTime`, so the value rendered in the UI matches what the on-chain\n * strike will be once resolution lands.\n *\n * Returns `null` when the projection isn't applicable:\n * - The market is already resolved — caller should read `pm.strikePrice` directly.\n * - The market is explicit-strike (`pm.strikePrice > 0`) — same, read from chain.\n * - The market hasn't reached `openTime` yet — no VAA exists; UI should show\n * \"strike set at HH:MM\" or similar pending state.\n *\n * `result.canonical === true` means the open window has fully elapsed and the\n * value will not change. Before that, render the price with a \"pending\" hint.\n */\n async fetchProjectedOpenPrice(\n marketId: bigint,\n ): Promise<ProjectedOpenPrice | null> {\n const pm = await this.get(marketId);\n\n if (pm.resolved) return null;\n if (pm.strikePrice !== BigInt(0)) return null;\n\n const now = BigInt(Math.floor(Date.now() / 1000));\n if (now < pm.openTime) return null;\n\n const parsed = await this.fetchPythHistoricalParsed(\n pm.feedId,\n Number(pm.openTime),\n Number(pm.resolutionWindow),\n );\n if (!parsed) return null;\n\n return {\n price: BigInt(parsed.price.price),\n publishTime: BigInt(parsed.price.publish_time),\n expo: Number(parsed.price.expo),\n canonical: now >= pm.openTime + pm.resolutionWindow,\n openTime: pm.openTime,\n };\n }\n\n /**\n * Fetch historical Pyth price update data covering the window\n * `[publishTime, publishTime + windowSeconds]`.\n *\n * Hermes serves a VAA AT the exact requested second when one exists, and\n * 404s when no publish landed in that second. For low-volume feeds or\n * markets resolving deep in the past this means a single request at\n * `publishTime` is fragile. This helper walks a few sample points across\n * the window until it finds a VAA, transparently retrying with exponential\n * backoff on 429.\n *\n * The on-chain `pickEarliestInWindow` accepts any VAA whose `publishTime`\n * falls in the same window, so returning an offset VAA is correct as long\n * as it's still in range.\n */\n private async fetchPythHistoricalData(\n feedId: `0x${string}`,\n publishTime: number,\n windowSeconds: number,\n ): Promise<`0x${string}`[]> {\n const result = await this.fetchPythHistoricalRaw(\n feedId,\n publishTime,\n windowSeconds,\n );\n if (!result) {\n throw new Error(\n `No Pyth VAA available in window [${publishTime}, ${publishTime + windowSeconds}] for feed ${feedId}`,\n );\n }\n return result.updateData;\n }\n\n /**\n * Hermes parsed+binary fetch shared by {@link fetchPythHistoricalData} and\n * {@link fetchProjectedOpenPrice}. Returns the first in-window VAA whose\n * Hermes response includes a `parsed[0].price` entry, walking a few sample\n * timestamps across the window before giving up. Returns `null` on\n * complete miss so the caller can decide how to surface the failure\n * (resolution throws; UI projection returns null gracefully).\n */\n private async fetchPythHistoricalParsed(\n feedId: `0x${string}`,\n publishTime: number,\n windowSeconds: number,\n ): Promise<{ price: { price: string; expo: number; publish_time: number } } | null> {\n const result = await this.fetchPythHistoricalRaw(\n feedId,\n publishTime,\n windowSeconds,\n );\n return result?.parsed ?? null;\n }\n\n private async fetchPythHistoricalRaw(\n feedId: `0x${string}`,\n publishTime: number,\n windowSeconds: number,\n ): Promise<{\n updateData: `0x${string}`[];\n parsed: { price: { price: string; expo: number; publish_time: number } };\n } | null> {\n // Sample at the start, a few points across the window, and the end.\n // 5 points balance coverage with Hermes rate-limit pressure: any feed\n // publishing every ~5s is virtually guaranteed to land in one of these.\n const window = Math.max(0, Math.floor(windowSeconds));\n const offsets = window === 0\n ? [0]\n : Array.from(new Set([\n 0,\n Math.floor(window / 4),\n Math.floor(window / 2),\n Math.floor((3 * window) / 4),\n window,\n ])).sort((a, b) => a - b);\n\n for (const offset of offsets) {\n const t = publishTime + offset;\n const url = `${PYTH_HERMES_BASE}/v2/updates/price/${t}?ids[]=${feedId}`;\n\n const response = await this.hermesFetchWithBackoff(url);\n if (response === null) continue; // 404 / soft-miss at this timestamp\n\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n const data: any = await response.json();\n const updateDataRaw: string[] | undefined = data.binary?.data;\n const parsed = data.parsed?.[0];\n\n if (!updateDataRaw || updateDataRaw.length === 0) continue;\n\n return {\n updateData: updateDataRaw.map(\n (d) => `0x${d}` as `0x${string}`,\n ),\n parsed,\n };\n }\n\n return null;\n }\n\n /**\n * Fetch a Hermes URL with a short backoff on 429. Returns the response for\n * 2xx, `null` for 404 (treated as \"no VAA at this timestamp, try another\"),\n * and throws on persistent 429 or other non-OK statuses.\n *\n * Budget kept intentionally small (2 attempts) so callers that are already\n * iterating (e.g. multiple sample timestamps in `fetchPythHistoricalRaw`)\n * don't compound the rate-limit pressure. If Hermes is genuinely rate-\n * limiting us, retrying within the same request cycle won't help — better\n * to fail fast and let the caller back off until the next tick.\n */\n private async hermesFetchWithBackoff(\n url: string,\n options: { maxAttempts?: number; initialDelayMs?: number } = {},\n ): Promise<Response | null> {\n const maxAttempts = options.maxAttempts ?? 2;\n const initialDelayMs = options.initialDelayMs ?? 750;\n\n for (let attempt = 0; attempt < maxAttempts; attempt++) {\n const response = await fetch(url);\n if (response.status === 429) {\n if (attempt === maxAttempts - 1) {\n throw new Error(\n `Pyth Hermes API error: 429 Too Many Requests (gave up after ${maxAttempts} attempts)`,\n );\n }\n const delay = initialDelayMs * Math.pow(2, attempt);\n await new Promise((r) => setTimeout(r, delay));\n continue;\n }\n if (response.status === 404) return null;\n if (!response.ok) {\n throw new Error(\n `Pyth Hermes API error: ${response.status} ${response.statusText}`,\n );\n }\n return response;\n }\n return null;\n }\n}\n","import { createPublicClient, createWalletClient, http, custom } from 'viem';\nimport type { PublicClient, WalletClient, Account } from 'viem';\nimport type { OddMakiClientConfig } from './types';\nimport { CONTRACT_ADDRESSES, DEFAULT_CHAIN } from './config';\nimport { VenueModule } from './modules/venue';\nimport { MarketModule } from './modules/market';\nimport { TradeModule } from './modules/trade';\nimport { PublicModule } from './modules/public';\nimport { TokenModule } from './modules/token';\nimport { UmaModule } from './modules/uma';\nimport { AccessControlModule } from './modules/accessControl';\nimport { PriceMarketModule } from './modules/priceMarket';\n\nexport class OddMakiClient {\n public readonly config: OddMakiClientConfig;\n public readonly venue: VenueModule;\n public readonly market: MarketModule;\n public readonly trade: TradeModule;\n public readonly public: PublicModule;\n public readonly token: TokenModule;\n public readonly uma: UmaModule;\n public readonly accessControl: AccessControlModule;\n public readonly priceMarket: PriceMarketModule;\n\n constructor(config: OddMakiClientConfig) {\n this.config = config;\n this.venue = new VenueModule(config);\n this.market = new MarketModule(config);\n this.trade = new TradeModule(config);\n this.public = new PublicModule(config);\n this.token = new TokenModule(config);\n this.uma = new UmaModule(config);\n this.accessControl = new AccessControlModule(config);\n this.priceMarket = new PriceMarketModule(config);\n }\n}\n\nexport function createOddMakiClient(params: {\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n walletClient?: any; // Optional: Pass directly from wagmi/viem (typed as any to avoid version mismatches)\n account?: Account;\n transport?: any; // Viem transport\n chain?: any; // Viem chain\n subgraphEndpoint?: string;\n}): OddMakiClient {\n let chain = params.chain;\n let transport = params.transport;\n let account = params.account;\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n let walletClient = params.walletClient as WalletClient;\n\n // Overload: Use walletClient if provided\n if (walletClient) {\n chain = chain || walletClient.chain;\n // walletClient.transport is an object, but createPublicClient expects a function.\n // We wrap it in custom() to reuse the wallet's provider.\n transport = transport || custom(walletClient.transport);\n account = account || walletClient.account;\n }\n\n // Default defaults\n chain = chain || DEFAULT_CHAIN;\n transport = transport || http();\n\n const addresses =\n CONTRACT_ADDRESSES[chain.id as keyof typeof CONTRACT_ADDRESSES];\n\n if (!addresses) {\n throw new Error(`Unsupported chain ID: ${chain.id}`);\n }\n\n const publicClient = createPublicClient({\n chain,\n transport,\n }) as PublicClient;\n\n // If we didn't get a walletClient but have an account, create one\n if (!walletClient && account) {\n walletClient = createWalletClient({\n account,\n chain,\n transport,\n });\n }\n\n const config: OddMakiClientConfig = {\n chain,\n transport,\n diamondAddress: addresses.diamond,\n conditionalTokensAddress: addresses.conditionalTokens,\n subgraphEndpoint: params.subgraphEndpoint ?? addresses.subgraph,\n publicClient,\n walletClient,\n };\n\n return new OddMakiClient(config);\n}\n","/**\n * Protocol Constants\n * These values match the on-chain constants defined in the smart contracts.\n */\n\n/**\n * Fee Constants\n * Protocol fee is configurable on-chain (0-200 bps) and snapshotted per market at creation.\n * These are the default values set at deployment.\n */\nexport const PROTOCOL_FEES = {\n /** Protocol fee: 50 bps (0.50%) — configurable via ProtocolFacet.setProtocolFeeBps() */\n PROTOCOL_FEE_BPS: 50n,\n /** Operator fee: 10 bps (0.10%) for match operators */\n OPERATOR_FEE_BPS: 10n,\n} as const;\n\n/**\n * Recommended UMA Oracle defaults for USDC venues (6 decimals).\n * Based on Polymarket's production configuration.\n */\nexport const UMA_DEFAULTS = {\n /** Recommended reward: 5 USDC. Incentivizes third-party resolution. */\n REWARD_USDC: 5_000_000n,\n /** Recommended minimum bond: 750 USDC. Matches Polymarket's production bond. */\n MIN_BOND_USDC: 750_000_000n,\n /** Default liveness period: 2 hours (7200 seconds). */\n LIVENESS: 7200n,\n} as const;\n","const DEFAULT_IPFS_GATEWAY = 'https://gateway.pinata.cloud/ipfs/';\n\n/**\n * Resolve an IPFS URI to an HTTP gateway URL.\n * If the URI is already an HTTP(S) URL, returns it as-is.\n * Returns empty string for empty/undefined input.\n */\nexport function resolveIPFSUri(\n uri: string | undefined | null,\n gateway?: string,\n): string {\n if (!uri) return '';\n const gw = gateway || DEFAULT_IPFS_GATEWAY;\n if (uri.startsWith('ipfs://')) {\n const base = gw.endsWith('/') ? gw : `${gw}/`;\n const gateway = base.includes('/ipfs/') ? base : `${base}ipfs/`;\n return `${gateway}${uri.slice(7)}`;\n }\n return uri;\n}\n\n/** Venue metadata schema (v1) — all fields optional except version */\nexport interface VenueMetadata {\n version: number;\n venue_url?: string;\n image_url?: string;\n banner_url?: string;\n description?: string;\n social?: {\n twitter?: string;\n discord?: string;\n telegram?: string;\n };\n}\n\n/** Market metadata schema (v1) — all fields optional except version */\nexport interface MarketMetadata {\n version: number;\n image_url?: string;\n source_url?: string;\n category?: string;\n}\n\n/**\n * Safely parse a JSON string into a typed metadata object.\n * Returns null if the JSON is invalid or missing a version field.\n */\nexport function parseMetadata<T extends { version: number }>(\n json: string,\n): T | null {\n try {\n const parsed = JSON.parse(json);\n if (typeof parsed !== 'object' || parsed === null) return null;\n if (typeof parsed.version !== 'number') return null;\n return parsed as T;\n } catch {\n return null;\n }\n}\n","export * from './client';\nexport * from './config';\nexport * from './constants';\nexport * from './types';\nexport * from './modules/venue';\nexport * from './modules/market';\nexport * from './modules/trade';\nexport * from './modules/public';\nexport * from './modules/token';\nexport * from './modules/uma';\nexport * from './modules/accessControl';\nexport * from './modules/priceMarket';\nexport * from './contracts';\nexport * from './subgraph/client';\nexport * from './subgraph/queries';\nexport { GraphQLClient, gql, ClientError } from 'graphql-request';\nexport type { RequestDocument, Variables } from 'graphql-request';\nexport type { TypedDocumentNode } from '@graphql-typed-document-node/core';\nexport * from './utils/conversions';\nexport * from './utils/decimals';\nexport * from './utils/metadata';\n\nexport const version = '0.1.0';\n"]}