@account-kit/smart-contracts 4.6.1 → 4.8.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 (151) hide show
  1. package/dist/esm/src/ma-v2/abis/accountFactoryAbi.d.ts +492 -0
  2. package/dist/esm/src/ma-v2/abis/accountFactoryAbi.js +639 -0
  3. package/dist/esm/src/ma-v2/abis/accountFactoryAbi.js.map +1 -0
  4. package/dist/esm/src/ma-v2/abis/modularAccountAbi.d.ts +954 -0
  5. package/dist/esm/src/ma-v2/abis/modularAccountAbi.js +1242 -0
  6. package/dist/esm/src/ma-v2/abis/modularAccountAbi.js.map +1 -0
  7. package/dist/esm/src/ma-v2/abis/semiModularAccountBytecodeAbi.d.ts +991 -0
  8. package/dist/esm/src/ma-v2/abis/semiModularAccountBytecodeAbi.js +1289 -0
  9. package/dist/esm/src/ma-v2/abis/semiModularAccountBytecodeAbi.js.map +1 -0
  10. package/dist/esm/src/ma-v2/abis/semiModularAccountStorageAbi.d.ts +1001 -0
  11. package/dist/esm/src/ma-v2/abis/semiModularAccountStorageAbi.js +1302 -0
  12. package/dist/esm/src/ma-v2/abis/semiModularAccountStorageAbi.js.map +1 -0
  13. package/dist/esm/src/ma-v2/account/nativeSMASigner.d.ts +238 -0
  14. package/dist/esm/src/ma-v2/account/nativeSMASigner.js +88 -0
  15. package/dist/esm/src/ma-v2/account/nativeSMASigner.js.map +1 -0
  16. package/dist/esm/src/ma-v2/account/semiModularAccountV2.d.ts +41 -0
  17. package/dist/esm/src/ma-v2/account/semiModularAccountV2.js +148 -0
  18. package/dist/esm/src/ma-v2/account/semiModularAccountV2.js.map +1 -0
  19. package/dist/esm/src/ma-v2/actions/common/types.d.ts +31 -0
  20. package/dist/esm/src/ma-v2/actions/common/types.js +6 -0
  21. package/dist/esm/src/ma-v2/actions/common/types.js.map +1 -0
  22. package/dist/esm/src/ma-v2/actions/common/utils.d.ts +76 -0
  23. package/dist/esm/src/ma-v2/actions/common/utils.js +100 -0
  24. package/dist/esm/src/ma-v2/actions/common/utils.js.map +1 -0
  25. package/dist/esm/src/ma-v2/actions/install-validation/installValidation.d.ts +71 -0
  26. package/dist/esm/src/ma-v2/actions/install-validation/installValidation.js +109 -0
  27. package/dist/esm/src/ma-v2/actions/install-validation/installValidation.js.map +1 -0
  28. package/dist/esm/src/ma-v2/client/client.d.ts +6 -0
  29. package/dist/esm/src/ma-v2/client/client.js +40 -0
  30. package/dist/esm/src/ma-v2/client/client.js.map +1 -0
  31. package/dist/esm/src/ma-v2/index.d.ts +26 -0
  32. package/dist/esm/src/ma-v2/index.js +24 -0
  33. package/dist/esm/src/ma-v2/index.js.map +1 -0
  34. package/dist/esm/src/ma-v2/modules/allowlist-module/abis/allowlistModuleAbi.d.ts +556 -0
  35. package/dist/esm/src/ma-v2/modules/allowlist-module/abis/allowlistModuleAbi.js +716 -0
  36. package/dist/esm/src/ma-v2/modules/allowlist-module/abis/allowlistModuleAbi.js.map +1 -0
  37. package/dist/esm/src/ma-v2/modules/allowlist-module/module.d.ts +579 -0
  38. package/dist/esm/src/ma-v2/modules/allowlist-module/module.js +56 -0
  39. package/dist/esm/src/ma-v2/modules/allowlist-module/module.js.map +1 -0
  40. package/dist/esm/src/ma-v2/modules/native-token-limit-module/abis/nativeTokenLimitModuleAbi.d.ts +312 -0
  41. package/dist/esm/src/ma-v2/modules/native-token-limit-module/abis/nativeTokenLimitModuleAbi.js +404 -0
  42. package/dist/esm/src/ma-v2/modules/native-token-limit-module/abis/nativeTokenLimitModuleAbi.js.map +1 -0
  43. package/dist/esm/src/ma-v2/modules/native-token-limit-module/module.d.ts +322 -0
  44. package/dist/esm/src/ma-v2/modules/native-token-limit-module/module.js +14 -0
  45. package/dist/esm/src/ma-v2/modules/native-token-limit-module/module.js.map +1 -0
  46. package/dist/esm/src/ma-v2/modules/paymaster-guard-module/abis/paymasterGuardModuleAbi.d.ts +186 -0
  47. package/dist/esm/src/ma-v2/modules/paymaster-guard-module/abis/paymasterGuardModuleAbi.js +242 -0
  48. package/dist/esm/src/ma-v2/modules/paymaster-guard-module/abis/paymasterGuardModuleAbi.js.map +1 -0
  49. package/dist/esm/src/ma-v2/modules/paymaster-guard-module/module.d.ts +196 -0
  50. package/dist/esm/src/ma-v2/modules/paymaster-guard-module/module.js +25 -0
  51. package/dist/esm/src/ma-v2/modules/paymaster-guard-module/module.js.map +1 -0
  52. package/dist/esm/src/ma-v2/modules/single-signer-validation/abis/singleSignerValidationModuleAbi.d.ts +45 -0
  53. package/dist/esm/src/ma-v2/modules/single-signer-validation/abis/singleSignerValidationModuleAbi.js +331 -0
  54. package/dist/esm/src/ma-v2/modules/single-signer-validation/abis/singleSignerValidationModuleAbi.js.map +1 -0
  55. package/dist/esm/src/ma-v2/modules/single-signer-validation/module.d.ts +10 -0
  56. package/dist/esm/src/ma-v2/modules/single-signer-validation/module.js +16 -0
  57. package/dist/esm/src/ma-v2/modules/single-signer-validation/module.js.map +1 -0
  58. package/dist/esm/src/ma-v2/modules/single-signer-validation/signer.d.ts +239 -0
  59. package/dist/esm/src/ma-v2/modules/single-signer-validation/signer.js +93 -0
  60. package/dist/esm/src/ma-v2/modules/single-signer-validation/signer.js.map +1 -0
  61. package/dist/esm/src/ma-v2/modules/time-range-module/abis/timeRangeModuleAbi.d.ts +229 -0
  62. package/dist/esm/src/ma-v2/modules/time-range-module/abis/timeRangeModuleAbi.js +296 -0
  63. package/dist/esm/src/ma-v2/modules/time-range-module/abis/timeRangeModuleAbi.js.map +1 -0
  64. package/dist/esm/src/ma-v2/modules/time-range-module/module.d.ts +245 -0
  65. package/dist/esm/src/ma-v2/modules/time-range-module/module.js +42 -0
  66. package/dist/esm/src/ma-v2/modules/time-range-module/module.js.map +1 -0
  67. package/dist/esm/src/ma-v2/modules/utils.d.ts +91 -0
  68. package/dist/esm/src/ma-v2/modules/utils.js +188 -0
  69. package/dist/esm/src/ma-v2/modules/utils.js.map +1 -0
  70. package/dist/esm/src/ma-v2/modules/webauthn-validation/abis/webauthnValidationAbi.d.ts +287 -0
  71. package/dist/esm/src/ma-v2/modules/webauthn-validation/abis/webauthnValidationAbi.js +374 -0
  72. package/dist/esm/src/ma-v2/modules/webauthn-validation/abis/webauthnValidationAbi.js.map +1 -0
  73. package/dist/esm/src/ma-v2/utils.d.ts +16 -0
  74. package/dist/esm/src/ma-v2/utils.js +105 -0
  75. package/dist/esm/src/ma-v2/utils.js.map +1 -0
  76. package/dist/types/src/ma-v2/abis/accountFactoryAbi.d.ts +493 -0
  77. package/dist/types/src/ma-v2/abis/accountFactoryAbi.d.ts.map +1 -0
  78. package/dist/types/src/ma-v2/abis/modularAccountAbi.d.ts +955 -0
  79. package/dist/types/src/ma-v2/abis/modularAccountAbi.d.ts.map +1 -0
  80. package/dist/types/src/ma-v2/abis/semiModularAccountBytecodeAbi.d.ts +992 -0
  81. package/dist/types/src/ma-v2/abis/semiModularAccountBytecodeAbi.d.ts.map +1 -0
  82. package/dist/types/src/ma-v2/abis/semiModularAccountStorageAbi.d.ts +1002 -0
  83. package/dist/types/src/ma-v2/abis/semiModularAccountStorageAbi.d.ts.map +1 -0
  84. package/dist/types/src/ma-v2/account/nativeSMASigner.d.ts +239 -0
  85. package/dist/types/src/ma-v2/account/nativeSMASigner.d.ts.map +1 -0
  86. package/dist/types/src/ma-v2/account/semiModularAccountV2.d.ts +42 -0
  87. package/dist/types/src/ma-v2/account/semiModularAccountV2.d.ts.map +1 -0
  88. package/dist/types/src/ma-v2/actions/common/types.d.ts +32 -0
  89. package/dist/types/src/ma-v2/actions/common/types.d.ts.map +1 -0
  90. package/dist/types/src/ma-v2/actions/common/utils.d.ts +77 -0
  91. package/dist/types/src/ma-v2/actions/common/utils.d.ts.map +1 -0
  92. package/dist/types/src/ma-v2/actions/install-validation/installValidation.d.ts +72 -0
  93. package/dist/types/src/ma-v2/actions/install-validation/installValidation.d.ts.map +1 -0
  94. package/dist/types/src/ma-v2/client/client.d.ts +7 -0
  95. package/dist/types/src/ma-v2/client/client.d.ts.map +1 -0
  96. package/dist/types/src/ma-v2/index.d.ts +27 -0
  97. package/dist/types/src/ma-v2/index.d.ts.map +1 -0
  98. package/dist/types/src/ma-v2/modules/allowlist-module/abis/allowlistModuleAbi.d.ts +557 -0
  99. package/dist/types/src/ma-v2/modules/allowlist-module/abis/allowlistModuleAbi.d.ts.map +1 -0
  100. package/dist/types/src/ma-v2/modules/allowlist-module/module.d.ts +580 -0
  101. package/dist/types/src/ma-v2/modules/allowlist-module/module.d.ts.map +1 -0
  102. package/dist/types/src/ma-v2/modules/native-token-limit-module/abis/nativeTokenLimitModuleAbi.d.ts +313 -0
  103. package/dist/types/src/ma-v2/modules/native-token-limit-module/abis/nativeTokenLimitModuleAbi.d.ts.map +1 -0
  104. package/dist/types/src/ma-v2/modules/native-token-limit-module/module.d.ts +323 -0
  105. package/dist/types/src/ma-v2/modules/native-token-limit-module/module.d.ts.map +1 -0
  106. package/dist/types/src/ma-v2/modules/paymaster-guard-module/abis/paymasterGuardModuleAbi.d.ts +187 -0
  107. package/dist/types/src/ma-v2/modules/paymaster-guard-module/abis/paymasterGuardModuleAbi.d.ts.map +1 -0
  108. package/dist/types/src/ma-v2/modules/paymaster-guard-module/module.d.ts +197 -0
  109. package/dist/types/src/ma-v2/modules/paymaster-guard-module/module.d.ts.map +1 -0
  110. package/dist/types/src/ma-v2/modules/single-signer-validation/abis/singleSignerValidationModuleAbi.d.ts +46 -0
  111. package/dist/types/src/ma-v2/modules/single-signer-validation/abis/singleSignerValidationModuleAbi.d.ts.map +1 -0
  112. package/dist/types/src/ma-v2/modules/single-signer-validation/module.d.ts +11 -0
  113. package/dist/types/src/ma-v2/modules/single-signer-validation/module.d.ts.map +1 -0
  114. package/dist/types/src/ma-v2/modules/single-signer-validation/signer.d.ts +240 -0
  115. package/dist/types/src/ma-v2/modules/single-signer-validation/signer.d.ts.map +1 -0
  116. package/dist/types/src/ma-v2/modules/time-range-module/abis/timeRangeModuleAbi.d.ts +230 -0
  117. package/dist/types/src/ma-v2/modules/time-range-module/abis/timeRangeModuleAbi.d.ts.map +1 -0
  118. package/dist/types/src/ma-v2/modules/time-range-module/module.d.ts +246 -0
  119. package/dist/types/src/ma-v2/modules/time-range-module/module.d.ts.map +1 -0
  120. package/dist/types/src/ma-v2/modules/utils.d.ts +92 -0
  121. package/dist/types/src/ma-v2/modules/utils.d.ts.map +1 -0
  122. package/dist/types/src/ma-v2/modules/webauthn-validation/abis/webauthnValidationAbi.d.ts +288 -0
  123. package/dist/types/src/ma-v2/modules/webauthn-validation/abis/webauthnValidationAbi.d.ts.map +1 -0
  124. package/dist/types/src/ma-v2/utils.d.ts +17 -0
  125. package/dist/types/src/ma-v2/utils.d.ts.map +1 -0
  126. package/package.json +10 -5
  127. package/src/ma-v2/abis/accountFactoryAbi.ts +638 -0
  128. package/src/ma-v2/abis/modularAccountAbi.ts +1241 -0
  129. package/src/ma-v2/abis/semiModularAccountBytecodeAbi.ts +1288 -0
  130. package/src/ma-v2/abis/semiModularAccountStorageAbi.ts +1301 -0
  131. package/src/ma-v2/account/nativeSMASigner.ts +121 -0
  132. package/src/ma-v2/account/semiModularAccountV2.ts +289 -0
  133. package/src/ma-v2/actions/common/types.ts +37 -0
  134. package/src/ma-v2/actions/common/utils.ts +103 -0
  135. package/src/ma-v2/actions/install-validation/installValidation.ts +213 -0
  136. package/src/ma-v2/client/client.ts +74 -0
  137. package/src/ma-v2/index.ts +47 -0
  138. package/src/ma-v2/modules/allowlist-module/abis/allowlistModuleAbi.ts +715 -0
  139. package/src/ma-v2/modules/allowlist-module/module.ts +87 -0
  140. package/src/ma-v2/modules/native-token-limit-module/abis/nativeTokenLimitModuleAbi.ts +403 -0
  141. package/src/ma-v2/modules/native-token-limit-module/module.ts +21 -0
  142. package/src/ma-v2/modules/paymaster-guard-module/abis/paymasterGuardModuleAbi.ts +241 -0
  143. package/src/ma-v2/modules/paymaster-guard-module/module.ts +35 -0
  144. package/src/ma-v2/modules/single-signer-validation/abis/singleSignerValidationModuleAbi.ts +330 -0
  145. package/src/ma-v2/modules/single-signer-validation/module.ts +24 -0
  146. package/src/ma-v2/modules/single-signer-validation/signer.ts +127 -0
  147. package/src/ma-v2/modules/time-range-module/abis/timeRangeModuleAbi.ts +295 -0
  148. package/src/ma-v2/modules/time-range-module/module.ts +63 -0
  149. package/src/ma-v2/modules/utils.ts +213 -0
  150. package/src/ma-v2/modules/webauthn-validation/abis/webauthnValidationAbi.ts +373 -0
  151. package/src/ma-v2/utils.ts +138 -0
@@ -0,0 +1,16 @@
1
+ import { type Hex, type Chain, type Address } from "viem";
2
+ export declare const DEFAULT_OWNER_ENTITY_ID = 0;
3
+ export type PackUOSignatureParams = {
4
+ validationSignature: Hex;
5
+ };
6
+ export type Pack1271SignatureParams = {
7
+ validationSignature: Hex;
8
+ entityId: number;
9
+ };
10
+ export declare const packUOSignature: ({ validationSignature, }: PackUOSignatureParams) => Hex;
11
+ export declare const pack1271Signature: ({ validationSignature, entityId, }: Pack1271SignatureParams) => Hex;
12
+ export declare const getDefaultMAV2FactoryAddress: (chain: Chain) => Address;
13
+ export declare const getDefaultSMAV2BytecodeAddress: (chain: Chain) => Address;
14
+ export declare const getDefaultSMAV2StorageAddress: (chain: Chain) => Address;
15
+ export declare const getDefaultSMAV27702Address: (chain: Chain) => Address;
16
+ export declare const getDefaultMAV2Address: (chain: Chain) => Address;
@@ -0,0 +1,105 @@
1
+ import { concat, toHex } from "viem";
2
+ import { arbitrum, arbitrumSepolia, base, baseSepolia, mainnet, optimism, optimismSepolia, polygon, polygonAmoy, sepolia, } from "@account-kit/infra";
3
+ export const DEFAULT_OWNER_ENTITY_ID = 0;
4
+ // Signature packing utility for user operations
5
+ export const packUOSignature = ({
6
+ // orderedHookData, TODO: integrate in next iteration of MAv2 sdk
7
+ validationSignature, }) => {
8
+ return concat(["0xFF", "0x00", validationSignature]);
9
+ };
10
+ // Signature packing utility for 1271 signatures
11
+ export const pack1271Signature = ({ validationSignature, entityId, }) => {
12
+ return concat([
13
+ "0x00",
14
+ toHex(entityId, { size: 4 }),
15
+ "0xFF",
16
+ "0x00", // EOA type signature
17
+ validationSignature,
18
+ ]);
19
+ };
20
+ export const getDefaultMAV2FactoryAddress = (chain) => {
21
+ switch (chain.id) {
22
+ // TODO: case mekong.id:
23
+ case sepolia.id:
24
+ case baseSepolia.id:
25
+ case polygon.id:
26
+ case mainnet.id:
27
+ case polygonAmoy.id:
28
+ case optimism.id:
29
+ case optimismSepolia.id:
30
+ case arbitrum.id:
31
+ case arbitrumSepolia.id:
32
+ case base.id:
33
+ default:
34
+ return "0x00000000000017c61b5bEe81050EC8eFc9c6fecd";
35
+ }
36
+ };
37
+ export const getDefaultSMAV2BytecodeAddress = (chain) => {
38
+ switch (chain.id) {
39
+ // TODO: case mekong.id:
40
+ case sepolia.id:
41
+ case baseSepolia.id:
42
+ case polygon.id:
43
+ case mainnet.id:
44
+ case polygonAmoy.id:
45
+ case optimism.id:
46
+ case optimismSepolia.id:
47
+ case arbitrum.id:
48
+ case arbitrumSepolia.id:
49
+ case base.id:
50
+ default:
51
+ return "0x000000000000c5A9089039570Dd36455b5C07383";
52
+ }
53
+ };
54
+ export const getDefaultSMAV2StorageAddress = (chain) => {
55
+ switch (chain.id) {
56
+ // TODO: case mekong.id:
57
+ case sepolia.id:
58
+ case baseSepolia.id:
59
+ case polygon.id:
60
+ case mainnet.id:
61
+ case polygonAmoy.id:
62
+ case optimism.id:
63
+ case optimismSepolia.id:
64
+ case arbitrum.id:
65
+ case arbitrumSepolia.id:
66
+ case base.id:
67
+ default:
68
+ return "0x0000000000006E2f9d80CaEc0Da6500f005EB25A";
69
+ }
70
+ };
71
+ export const getDefaultSMAV27702Address = (chain) => {
72
+ switch (chain.id) {
73
+ // TODO: case mekong.id:
74
+ case sepolia.id:
75
+ case baseSepolia.id:
76
+ case polygon.id:
77
+ case mainnet.id:
78
+ case polygonAmoy.id:
79
+ case optimism.id:
80
+ case optimismSepolia.id:
81
+ case arbitrum.id:
82
+ case arbitrumSepolia.id:
83
+ case base.id:
84
+ default:
85
+ return "0x69007702764179f14F51cdce752f4f775d74E139";
86
+ }
87
+ };
88
+ export const getDefaultMAV2Address = (chain) => {
89
+ switch (chain.id) {
90
+ // TODO: case mekong.id:
91
+ case sepolia.id:
92
+ case baseSepolia.id:
93
+ case polygon.id:
94
+ case mainnet.id:
95
+ case polygonAmoy.id:
96
+ case optimism.id:
97
+ case optimismSepolia.id:
98
+ case arbitrum.id:
99
+ case arbitrumSepolia.id:
100
+ case base.id:
101
+ default:
102
+ return "0x00000000000002377B26b1EdA7b0BC371C60DD4f";
103
+ }
104
+ };
105
+ //# sourceMappingURL=utils.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"utils.js","sourceRoot":"","sources":["../../../../src/ma-v2/utils.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,MAAM,EAAE,KAAK,EAAsC,MAAM,MAAM,CAAC;AACzE,OAAO,EACL,QAAQ,EACR,eAAe,EACf,IAAI,EACJ,WAAW,EACX,OAAO,EACP,QAAQ,EACR,eAAe,EACf,OAAO,EACP,WAAW,EACX,OAAO,GACR,MAAM,oBAAoB,CAAC;AAE5B,MAAM,CAAC,MAAM,uBAAuB,GAAG,CAAC,CAAC;AAazC,gDAAgD;AAChD,MAAM,CAAC,MAAM,eAAe,GAAG,CAAC;AAC9B,iEAAiE;AACjE,mBAAmB,GACG,EAAO,EAAE;IAC/B,OAAO,MAAM,CAAC,CAAC,MAAM,EAAE,MAAM,EAAE,mBAAmB,CAAC,CAAC,CAAC;AACvD,CAAC,CAAC;AAEF,gDAAgD;AAChD,MAAM,CAAC,MAAM,iBAAiB,GAAG,CAAC,EAChC,mBAAmB,EACnB,QAAQ,GACgB,EAAO,EAAE;IACjC,OAAO,MAAM,CAAC;QACZ,MAAM;QACN,KAAK,CAAC,QAAQ,EAAE,EAAE,IAAI,EAAE,CAAC,EAAE,CAAC;QAC5B,MAAM;QACN,MAAM,EAAE,qBAAqB;QAC7B,mBAAmB;KACpB,CAAC,CAAC;AACL,CAAC,CAAC;AAEF,MAAM,CAAC,MAAM,4BAA4B,GAAG,CAAC,KAAY,EAAW,EAAE;IACpE,QAAQ,KAAK,CAAC,EAAE,EAAE,CAAC;QACjB,wBAAwB;QACxB,KAAK,OAAO,CAAC,EAAE,CAAC;QAChB,KAAK,WAAW,CAAC,EAAE,CAAC;QACpB,KAAK,OAAO,CAAC,EAAE,CAAC;QAChB,KAAK,OAAO,CAAC,EAAE,CAAC;QAChB,KAAK,WAAW,CAAC,EAAE,CAAC;QACpB,KAAK,QAAQ,CAAC,EAAE,CAAC;QACjB,KAAK,eAAe,CAAC,EAAE,CAAC;QACxB,KAAK,QAAQ,CAAC,EAAE,CAAC;QACjB,KAAK,eAAe,CAAC,EAAE,CAAC;QACxB,KAAK,IAAI,CAAC,EAAE,CAAC;QACb;YACE,OAAO,4CAA4C,CAAC;IACxD,CAAC;AACH,CAAC,CAAC;AAEF,MAAM,CAAC,MAAM,8BAA8B,GAAG,CAAC,KAAY,EAAW,EAAE;IACtE,QAAQ,KAAK,CAAC,EAAE,EAAE,CAAC;QACjB,wBAAwB;QACxB,KAAK,OAAO,CAAC,EAAE,CAAC;QAChB,KAAK,WAAW,CAAC,EAAE,CAAC;QACpB,KAAK,OAAO,CAAC,EAAE,CAAC;QAChB,KAAK,OAAO,CAAC,EAAE,CAAC;QAChB,KAAK,WAAW,CAAC,EAAE,CAAC;QACpB,KAAK,QAAQ,CAAC,EAAE,CAAC;QACjB,KAAK,eAAe,CAAC,EAAE,CAAC;QACxB,KAAK,QAAQ,CAAC,EAAE,CAAC;QACjB,KAAK,eAAe,CAAC,EAAE,CAAC;QACxB,KAAK,IAAI,CAAC,EAAE,CAAC;QACb;YACE,OAAO,4CAA4C,CAAC;IACxD,CAAC;AACH,CAAC,CAAC;AAEF,MAAM,CAAC,MAAM,6BAA6B,GAAG,CAAC,KAAY,EAAW,EAAE;IACrE,QAAQ,KAAK,CAAC,EAAE,EAAE,CAAC;QACjB,wBAAwB;QACxB,KAAK,OAAO,CAAC,EAAE,CAAC;QAChB,KAAK,WAAW,CAAC,EAAE,CAAC;QACpB,KAAK,OAAO,CAAC,EAAE,CAAC;QAChB,KAAK,OAAO,CAAC,EAAE,CAAC;QAChB,KAAK,WAAW,CAAC,EAAE,CAAC;QACpB,KAAK,QAAQ,CAAC,EAAE,CAAC;QACjB,KAAK,eAAe,CAAC,EAAE,CAAC;QACxB,KAAK,QAAQ,CAAC,EAAE,CAAC;QACjB,KAAK,eAAe,CAAC,EAAE,CAAC;QACxB,KAAK,IAAI,CAAC,EAAE,CAAC;QACb;YACE,OAAO,4CAA4C,CAAC;IACxD,CAAC;AACH,CAAC,CAAC;AAEF,MAAM,CAAC,MAAM,0BAA0B,GAAG,CAAC,KAAY,EAAW,EAAE;IAClE,QAAQ,KAAK,CAAC,EAAE,EAAE,CAAC;QACjB,wBAAwB;QACxB,KAAK,OAAO,CAAC,EAAE,CAAC;QAChB,KAAK,WAAW,CAAC,EAAE,CAAC;QACpB,KAAK,OAAO,CAAC,EAAE,CAAC;QAChB,KAAK,OAAO,CAAC,EAAE,CAAC;QAChB,KAAK,WAAW,CAAC,EAAE,CAAC;QACpB,KAAK,QAAQ,CAAC,EAAE,CAAC;QACjB,KAAK,eAAe,CAAC,EAAE,CAAC;QACxB,KAAK,QAAQ,CAAC,EAAE,CAAC;QACjB,KAAK,eAAe,CAAC,EAAE,CAAC;QACxB,KAAK,IAAI,CAAC,EAAE,CAAC;QACb;YACE,OAAO,4CAA4C,CAAC;IACxD,CAAC;AACH,CAAC,CAAC;AAEF,MAAM,CAAC,MAAM,qBAAqB,GAAG,CAAC,KAAY,EAAW,EAAE;IAC7D,QAAQ,KAAK,CAAC,EAAE,EAAE,CAAC;QACjB,wBAAwB;QACxB,KAAK,OAAO,CAAC,EAAE,CAAC;QAChB,KAAK,WAAW,CAAC,EAAE,CAAC;QACpB,KAAK,OAAO,CAAC,EAAE,CAAC;QAChB,KAAK,OAAO,CAAC,EAAE,CAAC;QAChB,KAAK,WAAW,CAAC,EAAE,CAAC;QACpB,KAAK,QAAQ,CAAC,EAAE,CAAC;QACjB,KAAK,eAAe,CAAC,EAAE,CAAC;QACxB,KAAK,QAAQ,CAAC,EAAE,CAAC;QACjB,KAAK,eAAe,CAAC,EAAE,CAAC;QACxB,KAAK,IAAI,CAAC,EAAE,CAAC;QACb;YACE,OAAO,4CAA4C,CAAC;IACxD,CAAC;AACH,CAAC,CAAC","sourcesContent":["import { concat, toHex, type Hex, type Chain, type Address } from \"viem\";\nimport {\n arbitrum,\n arbitrumSepolia,\n base,\n baseSepolia,\n mainnet,\n optimism,\n optimismSepolia,\n polygon,\n polygonAmoy,\n sepolia,\n} from \"@account-kit/infra\";\n\nexport const DEFAULT_OWNER_ENTITY_ID = 0;\n\nexport type PackUOSignatureParams = {\n // orderedHookData: HookData[];\n validationSignature: Hex;\n};\n\n// TODO: direct call validation 1271\nexport type Pack1271SignatureParams = {\n validationSignature: Hex;\n entityId: number;\n};\n\n// Signature packing utility for user operations\nexport const packUOSignature = ({\n // orderedHookData, TODO: integrate in next iteration of MAv2 sdk\n validationSignature,\n}: PackUOSignatureParams): Hex => {\n return concat([\"0xFF\", \"0x00\", validationSignature]);\n};\n\n// Signature packing utility for 1271 signatures\nexport const pack1271Signature = ({\n validationSignature,\n entityId,\n}: Pack1271SignatureParams): Hex => {\n return concat([\n \"0x00\",\n toHex(entityId, { size: 4 }),\n \"0xFF\",\n \"0x00\", // EOA type signature\n validationSignature,\n ]);\n};\n\nexport const getDefaultMAV2FactoryAddress = (chain: Chain): Address => {\n switch (chain.id) {\n // TODO: case mekong.id:\n case sepolia.id:\n case baseSepolia.id:\n case polygon.id:\n case mainnet.id:\n case polygonAmoy.id:\n case optimism.id:\n case optimismSepolia.id:\n case arbitrum.id:\n case arbitrumSepolia.id:\n case base.id:\n default:\n return \"0x00000000000017c61b5bEe81050EC8eFc9c6fecd\";\n }\n};\n\nexport const getDefaultSMAV2BytecodeAddress = (chain: Chain): Address => {\n switch (chain.id) {\n // TODO: case mekong.id:\n case sepolia.id:\n case baseSepolia.id:\n case polygon.id:\n case mainnet.id:\n case polygonAmoy.id:\n case optimism.id:\n case optimismSepolia.id:\n case arbitrum.id:\n case arbitrumSepolia.id:\n case base.id:\n default:\n return \"0x000000000000c5A9089039570Dd36455b5C07383\";\n }\n};\n\nexport const getDefaultSMAV2StorageAddress = (chain: Chain): Address => {\n switch (chain.id) {\n // TODO: case mekong.id:\n case sepolia.id:\n case baseSepolia.id:\n case polygon.id:\n case mainnet.id:\n case polygonAmoy.id:\n case optimism.id:\n case optimismSepolia.id:\n case arbitrum.id:\n case arbitrumSepolia.id:\n case base.id:\n default:\n return \"0x0000000000006E2f9d80CaEc0Da6500f005EB25A\";\n }\n};\n\nexport const getDefaultSMAV27702Address = (chain: Chain): Address => {\n switch (chain.id) {\n // TODO: case mekong.id:\n case sepolia.id:\n case baseSepolia.id:\n case polygon.id:\n case mainnet.id:\n case polygonAmoy.id:\n case optimism.id:\n case optimismSepolia.id:\n case arbitrum.id:\n case arbitrumSepolia.id:\n case base.id:\n default:\n return \"0x69007702764179f14F51cdce752f4f775d74E139\";\n }\n};\n\nexport const getDefaultMAV2Address = (chain: Chain): Address => {\n switch (chain.id) {\n // TODO: case mekong.id:\n case sepolia.id:\n case baseSepolia.id:\n case polygon.id:\n case mainnet.id:\n case polygonAmoy.id:\n case optimism.id:\n case optimismSepolia.id:\n case arbitrum.id:\n case arbitrumSepolia.id:\n case base.id:\n default:\n return \"0x00000000000002377B26b1EdA7b0BC371C60DD4f\";\n }\n};\n"]}
@@ -0,0 +1,493 @@
1
+ export declare const accountFactoryAbi: readonly [{
2
+ readonly type: "constructor";
3
+ readonly inputs: readonly [{
4
+ readonly name: "_entryPoint";
5
+ readonly type: "address";
6
+ readonly internalType: "contract IEntryPoint";
7
+ }, {
8
+ readonly name: "_accountImpl";
9
+ readonly type: "address";
10
+ readonly internalType: "contract ModularAccount";
11
+ }, {
12
+ readonly name: "_semiModularImpl";
13
+ readonly type: "address";
14
+ readonly internalType: "contract SemiModularAccountBytecode";
15
+ }, {
16
+ readonly name: "_singleSignerValidationModule";
17
+ readonly type: "address";
18
+ readonly internalType: "address";
19
+ }, {
20
+ readonly name: "_webAuthnValidationModule";
21
+ readonly type: "address";
22
+ readonly internalType: "address";
23
+ }, {
24
+ readonly name: "owner";
25
+ readonly type: "address";
26
+ readonly internalType: "address";
27
+ }];
28
+ readonly stateMutability: "nonpayable";
29
+ }, {
30
+ readonly type: "function";
31
+ readonly name: "ACCOUNT_IMPL";
32
+ readonly inputs: readonly [];
33
+ readonly outputs: readonly [{
34
+ readonly name: "";
35
+ readonly type: "address";
36
+ readonly internalType: "contract ModularAccount";
37
+ }];
38
+ readonly stateMutability: "view";
39
+ }, {
40
+ readonly type: "function";
41
+ readonly name: "ENTRY_POINT";
42
+ readonly inputs: readonly [];
43
+ readonly outputs: readonly [{
44
+ readonly name: "";
45
+ readonly type: "address";
46
+ readonly internalType: "contract IEntryPoint";
47
+ }];
48
+ readonly stateMutability: "view";
49
+ }, {
50
+ readonly type: "function";
51
+ readonly name: "SEMI_MODULAR_ACCOUNT_IMPL";
52
+ readonly inputs: readonly [];
53
+ readonly outputs: readonly [{
54
+ readonly name: "";
55
+ readonly type: "address";
56
+ readonly internalType: "contract SemiModularAccountBytecode";
57
+ }];
58
+ readonly stateMutability: "view";
59
+ }, {
60
+ readonly type: "function";
61
+ readonly name: "SINGLE_SIGNER_VALIDATION_MODULE";
62
+ readonly inputs: readonly [];
63
+ readonly outputs: readonly [{
64
+ readonly name: "";
65
+ readonly type: "address";
66
+ readonly internalType: "address";
67
+ }];
68
+ readonly stateMutability: "view";
69
+ }, {
70
+ readonly type: "function";
71
+ readonly name: "WEBAUTHN_VALIDATION_MODULE";
72
+ readonly inputs: readonly [];
73
+ readonly outputs: readonly [{
74
+ readonly name: "";
75
+ readonly type: "address";
76
+ readonly internalType: "address";
77
+ }];
78
+ readonly stateMutability: "view";
79
+ }, {
80
+ readonly type: "function";
81
+ readonly name: "acceptOwnership";
82
+ readonly inputs: readonly [];
83
+ readonly outputs: readonly [];
84
+ readonly stateMutability: "nonpayable";
85
+ }, {
86
+ readonly type: "function";
87
+ readonly name: "addStake";
88
+ readonly inputs: readonly [{
89
+ readonly name: "unstakeDelay";
90
+ readonly type: "uint32";
91
+ readonly internalType: "uint32";
92
+ }];
93
+ readonly outputs: readonly [];
94
+ readonly stateMutability: "payable";
95
+ }, {
96
+ readonly type: "function";
97
+ readonly name: "createAccount";
98
+ readonly inputs: readonly [{
99
+ readonly name: "owner";
100
+ readonly type: "address";
101
+ readonly internalType: "address";
102
+ }, {
103
+ readonly name: "salt";
104
+ readonly type: "uint256";
105
+ readonly internalType: "uint256";
106
+ }, {
107
+ readonly name: "entityId";
108
+ readonly type: "uint32";
109
+ readonly internalType: "uint32";
110
+ }];
111
+ readonly outputs: readonly [{
112
+ readonly name: "";
113
+ readonly type: "address";
114
+ readonly internalType: "contract ModularAccount";
115
+ }];
116
+ readonly stateMutability: "nonpayable";
117
+ }, {
118
+ readonly type: "function";
119
+ readonly name: "createSemiModularAccount";
120
+ readonly inputs: readonly [{
121
+ readonly name: "owner";
122
+ readonly type: "address";
123
+ readonly internalType: "address";
124
+ }, {
125
+ readonly name: "salt";
126
+ readonly type: "uint256";
127
+ readonly internalType: "uint256";
128
+ }];
129
+ readonly outputs: readonly [{
130
+ readonly name: "";
131
+ readonly type: "address";
132
+ readonly internalType: "contract SemiModularAccountBytecode";
133
+ }];
134
+ readonly stateMutability: "nonpayable";
135
+ }, {
136
+ readonly type: "function";
137
+ readonly name: "createWebAuthnAccount";
138
+ readonly inputs: readonly [{
139
+ readonly name: "ownerX";
140
+ readonly type: "uint256";
141
+ readonly internalType: "uint256";
142
+ }, {
143
+ readonly name: "ownerY";
144
+ readonly type: "uint256";
145
+ readonly internalType: "uint256";
146
+ }, {
147
+ readonly name: "salt";
148
+ readonly type: "uint256";
149
+ readonly internalType: "uint256";
150
+ }, {
151
+ readonly name: "entityId";
152
+ readonly type: "uint32";
153
+ readonly internalType: "uint32";
154
+ }];
155
+ readonly outputs: readonly [{
156
+ readonly name: "";
157
+ readonly type: "address";
158
+ readonly internalType: "contract ModularAccount";
159
+ }];
160
+ readonly stateMutability: "nonpayable";
161
+ }, {
162
+ readonly type: "function";
163
+ readonly name: "getAddress";
164
+ readonly inputs: readonly [{
165
+ readonly name: "owner";
166
+ readonly type: "address";
167
+ readonly internalType: "address";
168
+ }, {
169
+ readonly name: "salt";
170
+ readonly type: "uint256";
171
+ readonly internalType: "uint256";
172
+ }, {
173
+ readonly name: "entityId";
174
+ readonly type: "uint32";
175
+ readonly internalType: "uint32";
176
+ }];
177
+ readonly outputs: readonly [{
178
+ readonly name: "";
179
+ readonly type: "address";
180
+ readonly internalType: "address";
181
+ }];
182
+ readonly stateMutability: "view";
183
+ }, {
184
+ readonly type: "function";
185
+ readonly name: "getAddressSemiModular";
186
+ readonly inputs: readonly [{
187
+ readonly name: "owner";
188
+ readonly type: "address";
189
+ readonly internalType: "address";
190
+ }, {
191
+ readonly name: "salt";
192
+ readonly type: "uint256";
193
+ readonly internalType: "uint256";
194
+ }];
195
+ readonly outputs: readonly [{
196
+ readonly name: "";
197
+ readonly type: "address";
198
+ readonly internalType: "address";
199
+ }];
200
+ readonly stateMutability: "view";
201
+ }, {
202
+ readonly type: "function";
203
+ readonly name: "getAddressWebAuthn";
204
+ readonly inputs: readonly [{
205
+ readonly name: "ownerX";
206
+ readonly type: "uint256";
207
+ readonly internalType: "uint256";
208
+ }, {
209
+ readonly name: "ownerY";
210
+ readonly type: "uint256";
211
+ readonly internalType: "uint256";
212
+ }, {
213
+ readonly name: "salt";
214
+ readonly type: "uint256";
215
+ readonly internalType: "uint256";
216
+ }, {
217
+ readonly name: "entityId";
218
+ readonly type: "uint32";
219
+ readonly internalType: "uint32";
220
+ }];
221
+ readonly outputs: readonly [{
222
+ readonly name: "";
223
+ readonly type: "address";
224
+ readonly internalType: "address";
225
+ }];
226
+ readonly stateMutability: "view";
227
+ }, {
228
+ readonly type: "function";
229
+ readonly name: "getSalt";
230
+ readonly inputs: readonly [{
231
+ readonly name: "owner";
232
+ readonly type: "address";
233
+ readonly internalType: "address";
234
+ }, {
235
+ readonly name: "salt";
236
+ readonly type: "uint256";
237
+ readonly internalType: "uint256";
238
+ }, {
239
+ readonly name: "entityId";
240
+ readonly type: "uint32";
241
+ readonly internalType: "uint32";
242
+ }];
243
+ readonly outputs: readonly [{
244
+ readonly name: "";
245
+ readonly type: "bytes32";
246
+ readonly internalType: "bytes32";
247
+ }];
248
+ readonly stateMutability: "pure";
249
+ }, {
250
+ readonly type: "function";
251
+ readonly name: "getSaltWebAuthn";
252
+ readonly inputs: readonly [{
253
+ readonly name: "ownerX";
254
+ readonly type: "uint256";
255
+ readonly internalType: "uint256";
256
+ }, {
257
+ readonly name: "ownerY";
258
+ readonly type: "uint256";
259
+ readonly internalType: "uint256";
260
+ }, {
261
+ readonly name: "salt";
262
+ readonly type: "uint256";
263
+ readonly internalType: "uint256";
264
+ }, {
265
+ readonly name: "entityId";
266
+ readonly type: "uint32";
267
+ readonly internalType: "uint32";
268
+ }];
269
+ readonly outputs: readonly [{
270
+ readonly name: "";
271
+ readonly type: "bytes32";
272
+ readonly internalType: "bytes32";
273
+ }];
274
+ readonly stateMutability: "pure";
275
+ }, {
276
+ readonly type: "function";
277
+ readonly name: "owner";
278
+ readonly inputs: readonly [];
279
+ readonly outputs: readonly [{
280
+ readonly name: "";
281
+ readonly type: "address";
282
+ readonly internalType: "address";
283
+ }];
284
+ readonly stateMutability: "view";
285
+ }, {
286
+ readonly type: "function";
287
+ readonly name: "pendingOwner";
288
+ readonly inputs: readonly [];
289
+ readonly outputs: readonly [{
290
+ readonly name: "";
291
+ readonly type: "address";
292
+ readonly internalType: "address";
293
+ }];
294
+ readonly stateMutability: "view";
295
+ }, {
296
+ readonly type: "function";
297
+ readonly name: "renounceOwnership";
298
+ readonly inputs: readonly [];
299
+ readonly outputs: readonly [];
300
+ readonly stateMutability: "view";
301
+ }, {
302
+ readonly type: "function";
303
+ readonly name: "transferOwnership";
304
+ readonly inputs: readonly [{
305
+ readonly name: "newOwner";
306
+ readonly type: "address";
307
+ readonly internalType: "address";
308
+ }];
309
+ readonly outputs: readonly [];
310
+ readonly stateMutability: "nonpayable";
311
+ }, {
312
+ readonly type: "function";
313
+ readonly name: "unlockStake";
314
+ readonly inputs: readonly [];
315
+ readonly outputs: readonly [];
316
+ readonly stateMutability: "nonpayable";
317
+ }, {
318
+ readonly type: "function";
319
+ readonly name: "withdraw";
320
+ readonly inputs: readonly [{
321
+ readonly name: "to";
322
+ readonly type: "address";
323
+ readonly internalType: "address payable";
324
+ }, {
325
+ readonly name: "token";
326
+ readonly type: "address";
327
+ readonly internalType: "address";
328
+ }, {
329
+ readonly name: "amount";
330
+ readonly type: "uint256";
331
+ readonly internalType: "uint256";
332
+ }];
333
+ readonly outputs: readonly [];
334
+ readonly stateMutability: "nonpayable";
335
+ }, {
336
+ readonly type: "function";
337
+ readonly name: "withdrawStake";
338
+ readonly inputs: readonly [{
339
+ readonly name: "withdrawAddress";
340
+ readonly type: "address";
341
+ readonly internalType: "address payable";
342
+ }];
343
+ readonly outputs: readonly [];
344
+ readonly stateMutability: "nonpayable";
345
+ }, {
346
+ readonly type: "event";
347
+ readonly name: "ModularAccountDeployed";
348
+ readonly inputs: readonly [{
349
+ readonly name: "account";
350
+ readonly type: "address";
351
+ readonly indexed: true;
352
+ readonly internalType: "address";
353
+ }, {
354
+ readonly name: "owner";
355
+ readonly type: "address";
356
+ readonly indexed: true;
357
+ readonly internalType: "address";
358
+ }, {
359
+ readonly name: "salt";
360
+ readonly type: "uint256";
361
+ readonly indexed: false;
362
+ readonly internalType: "uint256";
363
+ }];
364
+ readonly anonymous: false;
365
+ }, {
366
+ readonly type: "event";
367
+ readonly name: "OwnershipTransferStarted";
368
+ readonly inputs: readonly [{
369
+ readonly name: "previousOwner";
370
+ readonly type: "address";
371
+ readonly indexed: true;
372
+ readonly internalType: "address";
373
+ }, {
374
+ readonly name: "newOwner";
375
+ readonly type: "address";
376
+ readonly indexed: true;
377
+ readonly internalType: "address";
378
+ }];
379
+ readonly anonymous: false;
380
+ }, {
381
+ readonly type: "event";
382
+ readonly name: "OwnershipTransferred";
383
+ readonly inputs: readonly [{
384
+ readonly name: "previousOwner";
385
+ readonly type: "address";
386
+ readonly indexed: true;
387
+ readonly internalType: "address";
388
+ }, {
389
+ readonly name: "newOwner";
390
+ readonly type: "address";
391
+ readonly indexed: true;
392
+ readonly internalType: "address";
393
+ }];
394
+ readonly anonymous: false;
395
+ }, {
396
+ readonly type: "event";
397
+ readonly name: "SemiModularAccountDeployed";
398
+ readonly inputs: readonly [{
399
+ readonly name: "account";
400
+ readonly type: "address";
401
+ readonly indexed: true;
402
+ readonly internalType: "address";
403
+ }, {
404
+ readonly name: "owner";
405
+ readonly type: "address";
406
+ readonly indexed: true;
407
+ readonly internalType: "address";
408
+ }, {
409
+ readonly name: "salt";
410
+ readonly type: "uint256";
411
+ readonly indexed: false;
412
+ readonly internalType: "uint256";
413
+ }];
414
+ readonly anonymous: false;
415
+ }, {
416
+ readonly type: "event";
417
+ readonly name: "WebAuthnModularAccountDeployed";
418
+ readonly inputs: readonly [{
419
+ readonly name: "account";
420
+ readonly type: "address";
421
+ readonly indexed: true;
422
+ readonly internalType: "address";
423
+ }, {
424
+ readonly name: "ownerX";
425
+ readonly type: "uint256";
426
+ readonly indexed: true;
427
+ readonly internalType: "uint256";
428
+ }, {
429
+ readonly name: "ownerY";
430
+ readonly type: "uint256";
431
+ readonly indexed: true;
432
+ readonly internalType: "uint256";
433
+ }, {
434
+ readonly name: "salt";
435
+ readonly type: "uint256";
436
+ readonly indexed: false;
437
+ readonly internalType: "uint256";
438
+ }];
439
+ readonly anonymous: false;
440
+ }, {
441
+ readonly type: "error";
442
+ readonly name: "AddressEmptyCode";
443
+ readonly inputs: readonly [{
444
+ readonly name: "target";
445
+ readonly type: "address";
446
+ readonly internalType: "address";
447
+ }];
448
+ }, {
449
+ readonly type: "error";
450
+ readonly name: "AddressInsufficientBalance";
451
+ readonly inputs: readonly [{
452
+ readonly name: "account";
453
+ readonly type: "address";
454
+ readonly internalType: "address";
455
+ }];
456
+ }, {
457
+ readonly type: "error";
458
+ readonly name: "FailedInnerCall";
459
+ readonly inputs: readonly [];
460
+ }, {
461
+ readonly type: "error";
462
+ readonly name: "InvalidAction";
463
+ readonly inputs: readonly [];
464
+ }, {
465
+ readonly type: "error";
466
+ readonly name: "OwnableInvalidOwner";
467
+ readonly inputs: readonly [{
468
+ readonly name: "owner";
469
+ readonly type: "address";
470
+ readonly internalType: "address";
471
+ }];
472
+ }, {
473
+ readonly type: "error";
474
+ readonly name: "OwnableUnauthorizedAccount";
475
+ readonly inputs: readonly [{
476
+ readonly name: "account";
477
+ readonly type: "address";
478
+ readonly internalType: "address";
479
+ }];
480
+ }, {
481
+ readonly type: "error";
482
+ readonly name: "SafeERC20FailedOperation";
483
+ readonly inputs: readonly [{
484
+ readonly name: "token";
485
+ readonly type: "address";
486
+ readonly internalType: "address";
487
+ }];
488
+ }, {
489
+ readonly type: "error";
490
+ readonly name: "TransferFailed";
491
+ readonly inputs: readonly [];
492
+ }];
493
+ //# sourceMappingURL=accountFactoryAbi.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"accountFactoryAbi.d.ts","sourceRoot":"","sources":["../../../../../src/ma-v2/abis/accountFactoryAbi.ts"],"names":[],"mappings":"AAAA,eAAO,MAAM,iBAAiB;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;EA6nBpB,CAAC"}