@abstraxn/signer-react 1.0.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (178) hide show
  1. package/README.md +114 -0
  2. package/dist/src/AbstraxnProvider.d.ts +9 -0
  3. package/dist/src/AbstraxnProvider.js +21 -0
  4. package/dist/src/AbstraxnProvider.js.map +1 -0
  5. package/dist/src/ConnectButton.css +217 -0
  6. package/dist/src/ConnectButton.d.ts +71 -0
  7. package/dist/src/ConnectButton.js +102 -0
  8. package/dist/src/ConnectButton.js.map +1 -0
  9. package/dist/src/ExternalWalletButtons.css +319 -0
  10. package/dist/src/ExternalWalletButtons.d.ts +56 -0
  11. package/dist/src/ExternalWalletButtons.js +272 -0
  12. package/dist/src/ExternalWalletButtons.js.map +1 -0
  13. package/dist/src/OnboardingUI.d.ts +63 -0
  14. package/dist/src/OnboardingUI.js +66 -0
  15. package/dist/src/OnboardingUI.js.map +1 -0
  16. package/dist/src/WalletModal.css +2319 -0
  17. package/dist/src/WalletModal.d.ts +7 -0
  18. package/dist/src/WalletModal.js +322 -0
  19. package/dist/src/WalletModal.js.map +1 -0
  20. package/dist/src/chains.d.ts +56 -0
  21. package/dist/src/chains.js +291 -0
  22. package/dist/src/chains.js.map +1 -0
  23. package/dist/src/components/AbstraxnProvider/AbstraxnProvider.d.ts +12 -0
  24. package/dist/src/components/AbstraxnProvider/AbstraxnProvider.js +146 -0
  25. package/dist/src/components/AbstraxnProvider/AbstraxnProvider.js.map +1 -0
  26. package/dist/src/components/AbstraxnProvider/AbstraxnProviderInner.d.ts +25 -0
  27. package/dist/src/components/AbstraxnProvider/AbstraxnProviderInner.js +3086 -0
  28. package/dist/src/components/AbstraxnProvider/AbstraxnProviderInner.js.map +1 -0
  29. package/dist/src/components/AbstraxnProvider/AbstraxnProviderWithWagmi.d.ts +8 -0
  30. package/dist/src/components/AbstraxnProvider/AbstraxnProviderWithWagmi.js +46 -0
  31. package/dist/src/components/AbstraxnProvider/AbstraxnProviderWithWagmi.js.map +1 -0
  32. package/dist/src/components/AbstraxnProvider/AbstraxnProviderWithoutWagmi.d.ts +8 -0
  33. package/dist/src/components/AbstraxnProvider/AbstraxnProviderWithoutWagmi.js +12 -0
  34. package/dist/src/components/AbstraxnProvider/AbstraxnProviderWithoutWagmi.js.map +1 -0
  35. package/dist/src/components/AbstraxnProvider/context.d.ts +2 -0
  36. package/dist/src/components/AbstraxnProvider/context.js +6 -0
  37. package/dist/src/components/AbstraxnProvider/context.js.map +1 -0
  38. package/dist/src/components/AbstraxnProvider/index.d.ts +6 -0
  39. package/dist/src/components/AbstraxnProvider/index.js +7 -0
  40. package/dist/src/components/AbstraxnProvider/index.js.map +1 -0
  41. package/dist/src/components/AbstraxnProvider/useAbstraxnProviderBase.d.ts +30 -0
  42. package/dist/src/components/AbstraxnProvider/useAbstraxnProviderBase.js +49 -0
  43. package/dist/src/components/AbstraxnProvider/useAbstraxnProviderBase.js.map +1 -0
  44. package/dist/src/components/AbstraxnProvider/useAbstraxnWallet.d.ts +2 -0
  45. package/dist/src/components/AbstraxnProvider/useAbstraxnWallet.js +13 -0
  46. package/dist/src/components/AbstraxnProvider/useAbstraxnWallet.js.map +1 -0
  47. package/dist/src/components/AbstraxnProvider/useOAuthCallbacks.d.ts +22 -0
  48. package/dist/src/components/AbstraxnProvider/useOAuthCallbacks.js +242 -0
  49. package/dist/src/components/AbstraxnProvider/useOAuthCallbacks.js.map +1 -0
  50. package/dist/src/components/AbstraxnProvider/useWalletInitialization.d.ts +25 -0
  51. package/dist/src/components/AbstraxnProvider/useWalletInitialization.js +539 -0
  52. package/dist/src/components/AbstraxnProvider/useWalletInitialization.js.map +1 -0
  53. package/dist/src/components/AbstraxnProvider/utils.d.ts +41 -0
  54. package/dist/src/components/AbstraxnProvider/utils.js +139 -0
  55. package/dist/src/components/AbstraxnProvider/utils.js.map +1 -0
  56. package/dist/src/components/OnboardingUI/OnboardingUI.css +1062 -0
  57. package/dist/src/components/OnboardingUI/OnboardingUIReact.d.ts +15 -0
  58. package/dist/src/components/OnboardingUI/OnboardingUIReact.js +318 -0
  59. package/dist/src/components/OnboardingUI/OnboardingUIReact.js.map +1 -0
  60. package/dist/src/components/OnboardingUI/OnboardingUIWeb.d.ts +265 -0
  61. package/dist/src/components/OnboardingUI/OnboardingUIWeb.js +3782 -0
  62. package/dist/src/components/OnboardingUI/OnboardingUIWeb.js.map +1 -0
  63. package/dist/src/components/OnboardingUI/components/EmailForm.d.ts +16 -0
  64. package/dist/src/components/OnboardingUI/components/EmailForm.js +27 -0
  65. package/dist/src/components/OnboardingUI/components/EmailForm.js.map +1 -0
  66. package/dist/src/components/OnboardingUI/components/Modal.d.ts +14 -0
  67. package/dist/src/components/OnboardingUI/components/Modal.js +61 -0
  68. package/dist/src/components/OnboardingUI/components/Modal.js.map +1 -0
  69. package/dist/src/components/OnboardingUI/components/OtpForm.d.ts +20 -0
  70. package/dist/src/components/OnboardingUI/components/OtpForm.js +72 -0
  71. package/dist/src/components/OnboardingUI/components/OtpForm.js.map +1 -0
  72. package/dist/src/components/OnboardingUI/components/PasskeyButton.d.ts +14 -0
  73. package/dist/src/components/OnboardingUI/components/PasskeyButton.js +22 -0
  74. package/dist/src/components/OnboardingUI/components/PasskeyButton.js.map +1 -0
  75. package/dist/src/components/OnboardingUI/components/SocialButtons.d.ts +15 -0
  76. package/dist/src/components/OnboardingUI/components/SocialButtons.js +20 -0
  77. package/dist/src/components/OnboardingUI/components/SocialButtons.js.map +1 -0
  78. package/dist/src/components/OnboardingUI/components/index.d.ts +13 -0
  79. package/dist/src/components/OnboardingUI/components/index.js +9 -0
  80. package/dist/src/components/OnboardingUI/components/index.js.map +1 -0
  81. package/dist/src/components/OnboardingUI/hooks/index.d.ts +7 -0
  82. package/dist/src/components/OnboardingUI/hooks/index.js +6 -0
  83. package/dist/src/components/OnboardingUI/hooks/index.js.map +1 -0
  84. package/dist/src/components/OnboardingUI/hooks/useAuthMethods.d.ts +11 -0
  85. package/dist/src/components/OnboardingUI/hooks/useAuthMethods.js +243 -0
  86. package/dist/src/components/OnboardingUI/hooks/useAuthMethods.js.map +1 -0
  87. package/dist/src/components/OnboardingUI/hooks/useOnboarding.d.ts +21 -0
  88. package/dist/src/components/OnboardingUI/hooks/useOnboarding.js +153 -0
  89. package/dist/src/components/OnboardingUI/hooks/useOnboarding.js.map +1 -0
  90. package/dist/src/components/OnboardingUI/index.d.ts +12 -0
  91. package/dist/src/components/OnboardingUI/index.js +15 -0
  92. package/dist/src/components/OnboardingUI/index.js.map +1 -0
  93. package/dist/src/components/QRCode.d.ts +13 -0
  94. package/dist/src/components/QRCode.js +6 -0
  95. package/dist/src/components/QRCode.js.map +1 -0
  96. package/dist/src/components/WalletModal/components/ChainSelector.css +327 -0
  97. package/dist/src/components/WalletModal/components/ChainSelector.d.ts +11 -0
  98. package/dist/src/components/WalletModal/components/ChainSelector.js +75 -0
  99. package/dist/src/components/WalletModal/components/ChainSelector.js.map +1 -0
  100. package/dist/src/components/WalletModal/components/ExportKeyModal.css +134 -0
  101. package/dist/src/components/WalletModal/components/ExportKeyModal.d.ts +14 -0
  102. package/dist/src/components/WalletModal/components/ExportKeyModal.js +26 -0
  103. package/dist/src/components/WalletModal/components/ExportKeyModal.js.map +1 -0
  104. package/dist/src/components/WalletModal/components/ExportWarningModal.css +107 -0
  105. package/dist/src/components/WalletModal/components/ExportWarningModal.d.ts +17 -0
  106. package/dist/src/components/WalletModal/components/ExportWarningModal.js +20 -0
  107. package/dist/src/components/WalletModal/components/ExportWarningModal.js.map +1 -0
  108. package/dist/src/components/WalletModal/components/ManageWalletModal.css +246 -0
  109. package/dist/src/components/WalletModal/components/ManageWalletModal.d.ts +12 -0
  110. package/dist/src/components/WalletModal/components/ManageWalletModal.js +36 -0
  111. package/dist/src/components/WalletModal/components/ManageWalletModal.js.map +1 -0
  112. package/dist/src/components/WalletModal/components/PreviewTransactionModal.css +127 -0
  113. package/dist/src/components/WalletModal/components/PreviewTransactionModal.d.ts +17 -0
  114. package/dist/src/components/WalletModal/components/PreviewTransactionModal.js +10 -0
  115. package/dist/src/components/WalletModal/components/PreviewTransactionModal.js.map +1 -0
  116. package/dist/src/components/WalletModal/components/ReceiveModal.css +136 -0
  117. package/dist/src/components/WalletModal/components/ReceiveModal.d.ts +8 -0
  118. package/dist/src/components/WalletModal/components/ReceiveModal.js +22 -0
  119. package/dist/src/components/WalletModal/components/ReceiveModal.js.map +1 -0
  120. package/dist/src/components/WalletModal/components/SendModal.css +277 -0
  121. package/dist/src/components/WalletModal/components/SendModal.d.ts +16 -0
  122. package/dist/src/components/WalletModal/components/SendModal.js +219 -0
  123. package/dist/src/components/WalletModal/components/SendModal.js.map +1 -0
  124. package/dist/src/components/WalletModal/components/SuccessModal.css +85 -0
  125. package/dist/src/components/WalletModal/components/SuccessModal.d.ts +13 -0
  126. package/dist/src/components/WalletModal/components/SuccessModal.js +8 -0
  127. package/dist/src/components/WalletModal/components/SuccessModal.js.map +1 -0
  128. package/dist/src/components/WalletModal/components/TokenSelectorModal.css +240 -0
  129. package/dist/src/components/WalletModal/components/TokenSelectorModal.d.ts +21 -0
  130. package/dist/src/components/WalletModal/components/TokenSelectorModal.js +44 -0
  131. package/dist/src/components/WalletModal/components/TokenSelectorModal.js.map +1 -0
  132. package/dist/src/components/WalletModal/components/UserAvatar.d.ts +9 -0
  133. package/dist/src/components/WalletModal/components/UserAvatar.js +31 -0
  134. package/dist/src/components/WalletModal/components/UserAvatar.js.map +1 -0
  135. package/dist/src/components/WalletModal/components/index.d.ts +23 -0
  136. package/dist/src/components/WalletModal/components/index.js +14 -0
  137. package/dist/src/components/WalletModal/components/index.js.map +1 -0
  138. package/dist/src/components/WalletModal/hooks/index.d.ts +6 -0
  139. package/dist/src/components/WalletModal/hooks/index.js +7 -0
  140. package/dist/src/components/WalletModal/hooks/index.js.map +1 -0
  141. package/dist/src/components/WalletModal/hooks/useAddressValidation.d.ts +4 -0
  142. package/dist/src/components/WalletModal/hooks/useAddressValidation.js +17 -0
  143. package/dist/src/components/WalletModal/hooks/useAddressValidation.js.map +1 -0
  144. package/dist/src/components/WalletModal/hooks/useAmountValidation.d.ts +4 -0
  145. package/dist/src/components/WalletModal/hooks/useAmountValidation.js +29 -0
  146. package/dist/src/components/WalletModal/hooks/useAmountValidation.js.map +1 -0
  147. package/dist/src/components/WalletModal/hooks/useSendTransaction.d.ts +20 -0
  148. package/dist/src/components/WalletModal/hooks/useSendTransaction.js +55 -0
  149. package/dist/src/components/WalletModal/hooks/useSendTransaction.js.map +1 -0
  150. package/dist/src/components/WalletModal/index.d.ts +5 -0
  151. package/dist/src/components/WalletModal/index.js +7 -0
  152. package/dist/src/components/WalletModal/index.js.map +1 -0
  153. package/dist/src/components/WalletModal/utils/addressUtils.d.ts +19 -0
  154. package/dist/src/components/WalletModal/utils/addressUtils.js +62 -0
  155. package/dist/src/components/WalletModal/utils/addressUtils.js.map +1 -0
  156. package/dist/src/components/WalletModal/utils/formatUtils.d.ts +20 -0
  157. package/dist/src/components/WalletModal/utils/formatUtils.js +47 -0
  158. package/dist/src/components/WalletModal/utils/formatUtils.js.map +1 -0
  159. package/dist/src/components/WalletModal/utils/index.d.ts +5 -0
  160. package/dist/src/components/WalletModal/utils/index.js +6 -0
  161. package/dist/src/components/WalletModal/utils/index.js.map +1 -0
  162. package/dist/src/connectors.d.ts +27 -0
  163. package/dist/src/connectors.js +70 -0
  164. package/dist/src/connectors.js.map +1 -0
  165. package/dist/src/hooks.d.ts +13136 -0
  166. package/dist/src/hooks.js +1358 -0
  167. package/dist/src/hooks.js.map +1 -0
  168. package/dist/src/index.d.ts +17 -0
  169. package/dist/src/index.js +14 -0
  170. package/dist/src/index.js.map +1 -0
  171. package/dist/src/types.d.ts +224 -0
  172. package/dist/src/types.js +2 -0
  173. package/dist/src/types.js.map +1 -0
  174. package/dist/src/wagmiConfig.d.ts +16 -0
  175. package/dist/src/wagmiConfig.js +103 -0
  176. package/dist/src/wagmiConfig.js.map +1 -0
  177. package/dist/tsconfig.tsbuildinfo +1 -0
  178. package/package.json +70 -0
@@ -0,0 +1,139 @@
1
+ /**
2
+ * Utility functions for AbstraxnProvider
3
+ */
4
+ import React, { useState } from "react";
5
+ import { QueryClient, QueryClientProvider } from "@tanstack/react-query";
6
+ /**
7
+ * Check if React Query is available and can be used safely
8
+ * This is a simple check - we can't fully verify React is properly set up
9
+ * without trying to use it, but we can check if the dependencies exist
10
+ */
11
+ export function canUseReactQuery() {
12
+ try {
13
+ // Check if React is available
14
+ if (typeof React === "undefined" || React === null) {
15
+ return { canUse: false, reason: "React is not available" };
16
+ }
17
+ // Check if React has the version property (indicates it's a valid React object)
18
+ if (!React.version) {
19
+ return { canUse: false, reason: "React version is not available" };
20
+ }
21
+ // Check if QueryClientProvider is available
22
+ if (typeof QueryClientProvider === "undefined" ||
23
+ QueryClientProvider === null) {
24
+ return {
25
+ canUse: false,
26
+ reason: "@tanstack/react-query is not installed. Please install it: npm install @tanstack/react-query@^5.90.16",
27
+ };
28
+ }
29
+ return { canUse: true };
30
+ }
31
+ catch (error) {
32
+ return { canUse: false, reason: `Error checking React Query: ${error}` };
33
+ }
34
+ }
35
+ /**
36
+ * Wrapper component that conditionally uses QueryClientProvider
37
+ * Falls back to rendering children directly if React Query is not available
38
+ */
39
+ export function QueryClientWrapper({ children, queryClient, }) {
40
+ // Check if we can safely use QueryClientProvider
41
+ const queryCheck = canUseReactQuery();
42
+ if (!queryCheck.canUse) {
43
+ console.error("❌ React Query is not available. External wallets are disabled.\n" +
44
+ `Reason: ${queryCheck.reason || "Unknown"}\n` +
45
+ "Please install @tanstack/react-query@^5.90.16 and ensure there is only one React instance.");
46
+ // Return children without QueryClientProvider - external wallets won't work but app won't crash
47
+ return React.createElement(React.Fragment, null, children);
48
+ }
49
+ try {
50
+ return React.createElement(QueryClientProvider, { client: queryClient }, children);
51
+ }
52
+ catch (error) {
53
+ console.error("Failed to render QueryClientProvider:", error);
54
+ // Fallback: render children without QueryClientProvider
55
+ return React.createElement(React.Fragment, null, children);
56
+ }
57
+ }
58
+ /**
59
+ * Hook to create QueryClient
60
+ * Creates a QueryClient instance that's only created once per component instance
61
+ * Since @tanstack/react-query is now only in peerDependencies, the app's instance will be used
62
+ * This prevents multiple instances of the package from being bundled
63
+ */
64
+ export function useQueryClientSafe() {
65
+ // Create QueryClient using useState to ensure it's only created once
66
+ // Since @tanstack/react-query is in peerDependencies, this will use the app's instance
67
+ const [queryClient] = useState(() => {
68
+ return new QueryClient({
69
+ defaultOptions: {
70
+ queries: {
71
+ refetchOnWindowFocus: false,
72
+ retry: false,
73
+ },
74
+ },
75
+ });
76
+ });
77
+ return queryClient;
78
+ }
79
+ /**
80
+ * Check if URL has auth parameters
81
+ */
82
+ export function hasAuthParams(params) {
83
+ return (params.get("success") === "true" ||
84
+ !!params.get("error") ||
85
+ !!params.get("code") ||
86
+ !!params.get("accessToken"));
87
+ }
88
+ /**
89
+ * Extract auth provider from JWT token
90
+ */
91
+ export function getAuthProviderFromToken(token) {
92
+ try {
93
+ const base64Url = token.split(".")[1];
94
+ const base64 = base64Url.replace(/-/g, "+").replace(/_/g, "/");
95
+ const jsonPayload = decodeURIComponent(window
96
+ .atob(base64)
97
+ .split("")
98
+ .map(function (c) {
99
+ return "%" + ("00" + c.charCodeAt(0).toString(16)).slice(-2);
100
+ })
101
+ .join(""));
102
+ const payload = JSON.parse(jsonPayload);
103
+ return (payload.authProvider || payload.provider || "").toLowerCase();
104
+ }
105
+ catch (e) {
106
+ return null;
107
+ }
108
+ }
109
+ /**
110
+ * Check if URL params match a specific OAuth provider
111
+ */
112
+ export function matchesProvider(provider, params) {
113
+ const providerParam = (params.get("provider") ||
114
+ params.get("authProvider") ||
115
+ "").toLowerCase();
116
+ const path = window.location.pathname.toLowerCase();
117
+ if (providerParam) {
118
+ if (provider === "twitter") {
119
+ return providerParam === "twitter" || providerParam === "x";
120
+ }
121
+ return providerParam === provider;
122
+ }
123
+ // Check accessToken for provider
124
+ const accessToken = params.get("accessToken");
125
+ if (accessToken) {
126
+ const tokenProvider = getAuthProviderFromToken(accessToken);
127
+ if (tokenProvider) {
128
+ if (provider === "twitter") {
129
+ return tokenProvider === "twitter" || tokenProvider === "x";
130
+ }
131
+ return tokenProvider === provider;
132
+ }
133
+ }
134
+ if (provider === "twitter") {
135
+ return path.includes("/twitter") || path.includes("/x");
136
+ }
137
+ return path.includes(`/${provider}`);
138
+ }
139
+ //# sourceMappingURL=utils.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"utils.js","sourceRoot":"","sources":["../../../../src/components/AbstraxnProvider/utils.ts"],"names":[],"mappings":"AAAA;;GAEG;AACH,OAAO,KAAK,EAAE,EAAE,QAAQ,EAAkB,MAAM,OAAO,CAAC;AACxD,OAAO,EAAE,WAAW,EAAE,mBAAmB,EAAE,MAAM,uBAAuB,CAAC;AAEzE;;;;GAIG;AACH,MAAM,UAAU,gBAAgB;IAC9B,IAAI,CAAC;QACH,8BAA8B;QAC9B,IAAI,OAAO,KAAK,KAAK,WAAW,IAAI,KAAK,KAAK,IAAI,EAAE,CAAC;YACnD,OAAO,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,EAAE,wBAAwB,EAAE,CAAC;QAC7D,CAAC;QAED,gFAAgF;QAChF,IAAI,CAAC,KAAK,CAAC,OAAO,EAAE,CAAC;YACnB,OAAO,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,EAAE,gCAAgC,EAAE,CAAC;QACrE,CAAC;QAED,4CAA4C;QAC5C,IACE,OAAO,mBAAmB,KAAK,WAAW;YAC1C,mBAAmB,KAAK,IAAI,EAC5B,CAAC;YACD,OAAO;gBACL,MAAM,EAAE,KAAK;gBACb,MAAM,EACJ,uGAAuG;aAC1G,CAAC;QACJ,CAAC;QAED,OAAO,EAAE,MAAM,EAAE,IAAI,EAAE,CAAC;IAC1B,CAAC;IAAC,OAAO,KAAK,EAAE,CAAC;QACf,OAAO,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,EAAE,+BAA+B,KAAK,EAAE,EAAE,CAAC;IAC3E,CAAC;AACH,CAAC;AAED;;;GAGG;AACH,MAAM,UAAU,kBAAkB,CAAC,EACjC,QAAQ,EACR,WAAW,GAIZ;IACC,iDAAiD;IACjD,MAAM,UAAU,GAAG,gBAAgB,EAAE,CAAC;IACtC,IAAI,CAAC,UAAU,CAAC,MAAM,EAAE,CAAC;QACvB,OAAO,CAAC,KAAK,CACX,kEAAkE;YAClE,WAAW,UAAU,CAAC,MAAM,IAAI,SAAS,IAAI;YAC7C,4FAA4F,CAC7F,CAAC;QACF,gGAAgG;QAChG,OAAO,KAAK,CAAC,aAAa,CAAC,KAAK,CAAC,QAAQ,EAAE,IAAI,EAAE,QAAQ,CAAC,CAAC;IAC7D,CAAC;IAED,IAAI,CAAC;QACH,OAAO,KAAK,CAAC,aAAa,CACxB,mBAAmB,EACnB,EAAE,MAAM,EAAE,WAAW,EAAE,EACvB,QAAQ,CACT,CAAC;IACJ,CAAC;IAAC,OAAO,KAAK,EAAE,CAAC;QACf,OAAO,CAAC,KAAK,CAAC,uCAAuC,EAAE,KAAK,CAAC,CAAC;QAC9D,wDAAwD;QACxD,OAAO,KAAK,CAAC,aAAa,CAAC,KAAK,CAAC,QAAQ,EAAE,IAAI,EAAE,QAAQ,CAAC,CAAC;IAC7D,CAAC;AACH,CAAC;AAED;;;;;GAKG;AACH,MAAM,UAAU,kBAAkB;IAChC,qEAAqE;IACrE,uFAAuF;IACvF,MAAM,CAAC,WAAW,CAAC,GAAG,QAAQ,CAAC,GAAG,EAAE;QAClC,OAAO,IAAI,WAAW,CAAC;YACrB,cAAc,EAAE;gBACd,OAAO,EAAE;oBACP,oBAAoB,EAAE,KAAK;oBAC3B,KAAK,EAAE,KAAK;iBACb;aACF;SACF,CAAC,CAAC;IACL,CAAC,CAAC,CAAC;IAEH,OAAO,WAAW,CAAC;AACrB,CAAC;AAED;;GAEG;AACH,MAAM,UAAU,aAAa,CAAC,MAAuB;IACnD,OAAO,CACL,MAAM,CAAC,GAAG,CAAC,SAAS,CAAC,KAAK,MAAM;QAChC,CAAC,CAAC,MAAM,CAAC,GAAG,CAAC,OAAO,CAAC;QACrB,CAAC,CAAC,MAAM,CAAC,GAAG,CAAC,MAAM,CAAC;QACpB,CAAC,CAAC,MAAM,CAAC,GAAG,CAAC,aAAa,CAAC,CAC5B,CAAC;AACJ,CAAC;AAED;;GAEG;AACH,MAAM,UAAU,wBAAwB,CAAC,KAAa;IACpD,IAAI,CAAC;QACH,MAAM,SAAS,GAAG,KAAK,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC;QACtC,MAAM,MAAM,GAAG,SAAS,CAAC,OAAO,CAAC,IAAI,EAAE,GAAG,CAAC,CAAC,OAAO,CAAC,IAAI,EAAE,GAAG,CAAC,CAAC;QAC/D,MAAM,WAAW,GAAG,kBAAkB,CACpC,MAAM;aACH,IAAI,CAAC,MAAM,CAAC;aACZ,KAAK,CAAC,EAAE,CAAC;aACT,GAAG,CAAC,UAAU,CAAC;YACd,OAAO,GAAG,GAAG,CAAC,IAAI,GAAG,CAAC,CAAC,UAAU,CAAC,CAAC,CAAC,CAAC,QAAQ,CAAC,EAAE,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC;QAC/D,CAAC,CAAC;aACD,IAAI,CAAC,EAAE,CAAC,CACZ,CAAC;QACF,MAAM,OAAO,GAAG,IAAI,CAAC,KAAK,CAAC,WAAW,CAAC,CAAC;QACxC,OAAO,CAAC,OAAO,CAAC,YAAY,IAAI,OAAO,CAAC,QAAQ,IAAI,EAAE,CAAC,CAAC,WAAW,EAAE,CAAC;IACxE,CAAC;IAAC,OAAO,CAAC,EAAE,CAAC;QACX,OAAO,IAAI,CAAC;IACd,CAAC;AACH,CAAC;AAED;;GAEG;AACH,MAAM,UAAU,eAAe,CAC7B,QAA0C,EAC1C,MAAuB;IAEvB,MAAM,aAAa,GAAG,CACpB,MAAM,CAAC,GAAG,CAAC,UAAU,CAAC;QACtB,MAAM,CAAC,GAAG,CAAC,cAAc,CAAC;QAC1B,EAAE,CACH,CAAC,WAAW,EAAE,CAAC;IAChB,MAAM,IAAI,GAAG,MAAM,CAAC,QAAQ,CAAC,QAAQ,CAAC,WAAW,EAAE,CAAC;IAEpD,IAAI,aAAa,EAAE,CAAC;QAClB,IAAI,QAAQ,KAAK,SAAS,EAAE,CAAC;YAC3B,OAAO,aAAa,KAAK,SAAS,IAAI,aAAa,KAAK,GAAG,CAAC;QAC9D,CAAC;QACD,OAAO,aAAa,KAAK,QAAQ,CAAC;IACpC,CAAC;IAED,iCAAiC;IACjC,MAAM,WAAW,GAAG,MAAM,CAAC,GAAG,CAAC,aAAa,CAAC,CAAC;IAC9C,IAAI,WAAW,EAAE,CAAC;QAChB,MAAM,aAAa,GAAG,wBAAwB,CAAC,WAAW,CAAC,CAAC;QAC5D,IAAI,aAAa,EAAE,CAAC;YAClB,IAAI,QAAQ,KAAK,SAAS,EAAE,CAAC;gBAC3B,OAAO,aAAa,KAAK,SAAS,IAAI,aAAa,KAAK,GAAG,CAAC;YAC9D,CAAC;YACD,OAAO,aAAa,KAAK,QAAQ,CAAC;QACpC,CAAC;IACH,CAAC;IAED,IAAI,QAAQ,KAAK,SAAS,EAAE,CAAC;QAC3B,OAAO,IAAI,CAAC,QAAQ,CAAC,UAAU,CAAC,IAAI,IAAI,CAAC,QAAQ,CAAC,IAAI,CAAC,CAAC;IAC1D,CAAC;IACD,OAAO,IAAI,CAAC,QAAQ,CAAC,IAAI,QAAQ,EAAE,CAAC,CAAC;AACvC,CAAC"}