@coti-io/coti-contracts 0.1.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 (180) hide show
  1. package/.github/workflows/npm-publish.yml +52 -0
  2. package/CODE_OF_CONDUCT.md +44 -0
  3. package/CONTRIBUTING.md +101 -0
  4. package/LICENSE +201 -0
  5. package/README.md +48 -0
  6. package/contracts/access/DataPrivacyFramework/DataPrivacyFramework.sol +480 -0
  7. package/contracts/access/DataPrivacyFramework/README.md +68 -0
  8. package/contracts/access/DataPrivacyFramework/extensions/DataPrivacyFrameworkMpc.sol +1139 -0
  9. package/contracts/mocks/README.md +5 -0
  10. package/contracts/mocks/access/DataPrivacyFramework/DataPrivacyFrameworkMock.sol +9 -0
  11. package/contracts/mocks/token/PrivateERC20/PrivateERC20Mock.sol +17 -0
  12. package/contracts/mocks/token/PrivateERC721/PrivateERC721URIStorageMock.sol +34 -0
  13. package/contracts/mocks/utils/mpc/ArithmeticTestsContract.sol +431 -0
  14. package/contracts/mocks/utils/mpc/BitwiseTestsContract.sol +361 -0
  15. package/contracts/mocks/utils/mpc/Comparison1Tests.Contract.sol +307 -0
  16. package/contracts/mocks/utils/mpc/Comparison2TestsContract.sol +307 -0
  17. package/contracts/mocks/utils/mpc/MinMaxTestsContract.sol +297 -0
  18. package/contracts/mocks/utils/mpc/Miscellaneous1TestsContract.sol +185 -0
  19. package/contracts/mocks/utils/mpc/Miscellaneous2TestsContract.sol +448 -0
  20. package/contracts/mocks/utils/mpc/OffboardToUserKeyTestsContract.sol +81 -0
  21. package/contracts/mocks/utils/mpc/README.md +486 -0
  22. package/contracts/mocks/utils/mpc/ShiftTestsContract.sol +311 -0
  23. package/contracts/mocks/utils/mpc/StringTestsContract.sol +59 -0
  24. package/contracts/mocks/utils/mpc/TransferScalarTestsContract.sol +271 -0
  25. package/contracts/mocks/utils/mpc/TransferTestsContract.sol +715 -0
  26. package/contracts/mocks/wallet/PrivateERC20Wallet/PrivateERC20WalletMock.sol +25 -0
  27. package/contracts/onboard/AccountOnboard.sol +21 -0
  28. package/contracts/onboard/README.md +65 -0
  29. package/contracts/package.json +11 -0
  30. package/contracts/token/PrivateERC20/IPrivateERC20.sol +142 -0
  31. package/contracts/token/PrivateERC20/PrivateERC20.sol +478 -0
  32. package/contracts/token/PrivateERC20/README.md +104 -0
  33. package/contracts/token/PrivateERC721/PrivateERC721.sol +458 -0
  34. package/contracts/token/PrivateERC721/README.md +282 -0
  35. package/contracts/token/PrivateERC721/extensions/PrivateERC721URIStorage.sol +87 -0
  36. package/contracts/utils/mpc/MpcCore.sol +3215 -0
  37. package/contracts/utils/mpc/MpcInterface.sol +41 -0
  38. package/contracts/utils/mpc/README.md +82 -0
  39. package/hardhat.config.ts +18 -0
  40. package/package.json +14 -0
  41. package/test/access/DataPrivacyFramework/DataPrivacyFramework.test.ts +780 -0
  42. package/test/onboard/AccountOnboard.test.ts +45 -0
  43. package/test/token/PrivateERC20/PrivateERC20.test.ts +546 -0
  44. package/test/token/PrivateERC721/PrivateERC721.test.ts +223 -0
  45. package/test/utils/accounts.ts +55 -0
  46. package/test/utils/mpc/Precompile.test.ts +113 -0
  47. package/test/utils/mpc/String.test.ts +227 -0
  48. package/tsconfig.json +11 -0
  49. package/typechain-types/@openzeppelin/contracts/index.ts +9 -0
  50. package/typechain-types/@openzeppelin/contracts/interfaces/IERC4906.ts +462 -0
  51. package/typechain-types/@openzeppelin/contracts/interfaces/draft-IERC6093.sol/IERC1155Errors.ts +69 -0
  52. package/typechain-types/@openzeppelin/contracts/interfaces/draft-IERC6093.sol/IERC20Errors.ts +69 -0
  53. package/typechain-types/@openzeppelin/contracts/interfaces/draft-IERC6093.sol/IERC721Errors.ts +69 -0
  54. package/typechain-types/@openzeppelin/contracts/interfaces/draft-IERC6093.sol/index.ts +6 -0
  55. package/typechain-types/@openzeppelin/contracts/interfaces/index.ts +6 -0
  56. package/typechain-types/@openzeppelin/contracts/token/ERC721/IERC721.ts +393 -0
  57. package/typechain-types/@openzeppelin/contracts/token/ERC721/IERC721Receiver.ts +110 -0
  58. package/typechain-types/@openzeppelin/contracts/token/ERC721/index.ts +5 -0
  59. package/typechain-types/@openzeppelin/contracts/token/index.ts +5 -0
  60. package/typechain-types/@openzeppelin/contracts/utils/index.ts +5 -0
  61. package/typechain-types/@openzeppelin/contracts/utils/introspection/ERC165.ts +94 -0
  62. package/typechain-types/@openzeppelin/contracts/utils/introspection/IERC165.ts +94 -0
  63. package/typechain-types/@openzeppelin/contracts/utils/introspection/index.ts +5 -0
  64. package/typechain-types/@openzeppelin/index.ts +5 -0
  65. package/typechain-types/common.ts +131 -0
  66. package/typechain-types/contracts/access/DataPrivacyFramework/DataPrivacyFramework.ts +598 -0
  67. package/typechain-types/contracts/access/DataPrivacyFramework/extensions/DataPrivacyFrameworkMpc.ts +598 -0
  68. package/typechain-types/contracts/access/DataPrivacyFramework/extensions/index.ts +4 -0
  69. package/typechain-types/contracts/access/DataPrivacyFramework/index.ts +6 -0
  70. package/typechain-types/contracts/access/index.ts +5 -0
  71. package/typechain-types/contracts/index.ts +13 -0
  72. package/typechain-types/contracts/mocks/access/DataPrivacyFramework/DataPrivacyFrameworkMock.ts +598 -0
  73. package/typechain-types/contracts/mocks/access/DataPrivacyFramework/index.ts +4 -0
  74. package/typechain-types/contracts/mocks/access/index.ts +5 -0
  75. package/typechain-types/contracts/mocks/index.ts +11 -0
  76. package/typechain-types/contracts/mocks/token/PrivateERC20/PrivateERC20Mock.ts +543 -0
  77. package/typechain-types/contracts/mocks/token/PrivateERC20/index.ts +4 -0
  78. package/typechain-types/contracts/mocks/token/PrivateERC721/PrivateERC721URIStorageMock.ts +576 -0
  79. package/typechain-types/contracts/mocks/token/PrivateERC721/index.ts +4 -0
  80. package/typechain-types/contracts/mocks/token/index.ts +7 -0
  81. package/typechain-types/contracts/mocks/utils/index.ts +5 -0
  82. package/typechain-types/contracts/mocks/utils/mpc/ArithmeticTestsContract.ts +354 -0
  83. package/typechain-types/contracts/mocks/utils/mpc/BitwiseTestsContract.ts +340 -0
  84. package/typechain-types/contracts/mocks/utils/mpc/Comparison1Tests.Contract.sol/Comparison1TestsContract.ts +340 -0
  85. package/typechain-types/contracts/mocks/utils/mpc/Comparison1Tests.Contract.sol/index.ts +4 -0
  86. package/typechain-types/contracts/mocks/utils/mpc/Comparison2TestsContract.ts +340 -0
  87. package/typechain-types/contracts/mocks/utils/mpc/MinMaxTestsContract.ts +321 -0
  88. package/typechain-types/contracts/mocks/utils/mpc/Miscellaneous1TestsContract.ts +199 -0
  89. package/typechain-types/contracts/mocks/utils/mpc/Miscellaneous2TestsContract.ts +384 -0
  90. package/typechain-types/contracts/mocks/utils/mpc/OffboardToUserKeyTestsContract.sol/OffboardToUserKeyTestContract.ts +218 -0
  91. package/typechain-types/contracts/mocks/utils/mpc/OffboardToUserKeyTestsContract.sol/index.ts +4 -0
  92. package/typechain-types/contracts/mocks/utils/mpc/ShiftTestsContract.ts +339 -0
  93. package/typechain-types/contracts/mocks/utils/mpc/StringTestsContract.ts +211 -0
  94. package/typechain-types/contracts/mocks/utils/mpc/TransferScalarTestsContract.ts +266 -0
  95. package/typechain-types/contracts/mocks/utils/mpc/TransferTestsContract.ts +288 -0
  96. package/typechain-types/contracts/mocks/utils/mpc/index.ts +17 -0
  97. package/typechain-types/contracts/mocks/wallet/PrivateERC20Wallet/PrivateERC20WalletMock.ts +173 -0
  98. package/typechain-types/contracts/mocks/wallet/PrivateERC20Wallet/index.ts +4 -0
  99. package/typechain-types/contracts/mocks/wallet/index.ts +5 -0
  100. package/typechain-types/contracts/onboard/AccountOnboard.ts +135 -0
  101. package/typechain-types/contracts/onboard/index.ts +4 -0
  102. package/typechain-types/contracts/token/PrivateERC20/IPrivateERC20.ts +437 -0
  103. package/typechain-types/contracts/token/PrivateERC20/PrivateERC20.ts +505 -0
  104. package/typechain-types/contracts/token/PrivateERC20/index.ts +5 -0
  105. package/typechain-types/contracts/token/PrivateERC721/PrivateERC721.ts +409 -0
  106. package/typechain-types/contracts/token/PrivateERC721/extensions/PrivateERC721URIStorage.ts +501 -0
  107. package/typechain-types/contracts/token/PrivateERC721/extensions/index.ts +4 -0
  108. package/typechain-types/contracts/token/PrivateERC721/index.ts +6 -0
  109. package/typechain-types/contracts/token/index.ts +7 -0
  110. package/typechain-types/contracts/utils/index.ts +5 -0
  111. package/typechain-types/contracts/utils/mpc/MpcInterface.sol/ExtendedOperations.ts +698 -0
  112. package/typechain-types/contracts/utils/mpc/MpcInterface.sol/index.ts +4 -0
  113. package/typechain-types/contracts/utils/mpc/index.ts +5 -0
  114. package/typechain-types/factories/@openzeppelin/contracts/index.ts +6 -0
  115. package/typechain-types/factories/@openzeppelin/contracts/interfaces/IERC4906__factory.ts +339 -0
  116. package/typechain-types/factories/@openzeppelin/contracts/interfaces/draft-IERC6093.sol/IERC1155Errors__factory.ts +127 -0
  117. package/typechain-types/factories/@openzeppelin/contracts/interfaces/draft-IERC6093.sol/IERC20Errors__factory.ts +111 -0
  118. package/typechain-types/factories/@openzeppelin/contracts/interfaces/draft-IERC6093.sol/IERC721Errors__factory.ts +128 -0
  119. package/typechain-types/factories/@openzeppelin/contracts/interfaces/draft-IERC6093.sol/index.ts +6 -0
  120. package/typechain-types/factories/@openzeppelin/contracts/interfaces/index.ts +5 -0
  121. package/typechain-types/factories/@openzeppelin/contracts/token/ERC721/IERC721Receiver__factory.ts +59 -0
  122. package/typechain-types/factories/@openzeppelin/contracts/token/ERC721/IERC721__factory.ts +307 -0
  123. package/typechain-types/factories/@openzeppelin/contracts/token/ERC721/index.ts +5 -0
  124. package/typechain-types/factories/@openzeppelin/contracts/token/index.ts +4 -0
  125. package/typechain-types/factories/@openzeppelin/contracts/utils/index.ts +4 -0
  126. package/typechain-types/factories/@openzeppelin/contracts/utils/introspection/ERC165__factory.ts +41 -0
  127. package/typechain-types/factories/@openzeppelin/contracts/utils/introspection/IERC165__factory.ts +41 -0
  128. package/typechain-types/factories/@openzeppelin/contracts/utils/introspection/index.ts +5 -0
  129. package/typechain-types/factories/@openzeppelin/index.ts +4 -0
  130. package/typechain-types/factories/contracts/access/DataPrivacyFramework/DataPrivacyFramework__factory.ts +621 -0
  131. package/typechain-types/factories/contracts/access/DataPrivacyFramework/extensions/DataPrivacyFrameworkMpc__factory.ts +621 -0
  132. package/typechain-types/factories/contracts/access/DataPrivacyFramework/extensions/index.ts +4 -0
  133. package/typechain-types/factories/contracts/access/DataPrivacyFramework/index.ts +5 -0
  134. package/typechain-types/factories/contracts/access/index.ts +4 -0
  135. package/typechain-types/factories/contracts/index.ts +8 -0
  136. package/typechain-types/factories/contracts/mocks/access/DataPrivacyFramework/DataPrivacyFrameworkMock__factory.ts +670 -0
  137. package/typechain-types/factories/contracts/mocks/access/DataPrivacyFramework/index.ts +4 -0
  138. package/typechain-types/factories/contracts/mocks/access/index.ts +4 -0
  139. package/typechain-types/factories/contracts/mocks/index.ts +7 -0
  140. package/typechain-types/factories/contracts/mocks/token/PrivateERC20/PrivateERC20Mock__factory.ts +615 -0
  141. package/typechain-types/factories/contracts/mocks/token/PrivateERC20/index.ts +4 -0
  142. package/typechain-types/factories/contracts/mocks/token/PrivateERC721/PrivateERC721URIStorageMock__factory.ts +630 -0
  143. package/typechain-types/factories/contracts/mocks/token/PrivateERC721/index.ts +4 -0
  144. package/typechain-types/factories/contracts/mocks/token/index.ts +5 -0
  145. package/typechain-types/factories/contracts/mocks/utils/index.ts +4 -0
  146. package/typechain-types/factories/contracts/mocks/utils/mpc/ArithmeticTestsContract__factory.ts +374 -0
  147. package/typechain-types/factories/contracts/mocks/utils/mpc/BitwiseTestsContract__factory.ts +361 -0
  148. package/typechain-types/factories/contracts/mocks/utils/mpc/Comparison1Tests.Contract.sol/Comparison1TestsContract__factory.ts +361 -0
  149. package/typechain-types/factories/contracts/mocks/utils/mpc/Comparison1Tests.Contract.sol/index.ts +4 -0
  150. package/typechain-types/factories/contracts/mocks/utils/mpc/Comparison2TestsContract__factory.ts +361 -0
  151. package/typechain-types/factories/contracts/mocks/utils/mpc/MinMaxTestsContract__factory.ts +337 -0
  152. package/typechain-types/factories/contracts/mocks/utils/mpc/Miscellaneous1TestsContract__factory.ts +236 -0
  153. package/typechain-types/factories/contracts/mocks/utils/mpc/Miscellaneous2TestsContract__factory.ts +432 -0
  154. package/typechain-types/factories/contracts/mocks/utils/mpc/OffboardToUserKeyTestsContract.sol/OffboardToUserKeyTestContract__factory.ts +245 -0
  155. package/typechain-types/factories/contracts/mocks/utils/mpc/OffboardToUserKeyTestsContract.sol/index.ts +4 -0
  156. package/typechain-types/factories/contracts/mocks/utils/mpc/ShiftTestsContract__factory.ts +374 -0
  157. package/typechain-types/factories/contracts/mocks/utils/mpc/StringTestsContract__factory.ts +264 -0
  158. package/typechain-types/factories/contracts/mocks/utils/mpc/TransferScalarTestsContract__factory.ts +360 -0
  159. package/typechain-types/factories/contracts/mocks/utils/mpc/TransferTestsContract__factory.ts +441 -0
  160. package/typechain-types/factories/contracts/mocks/utils/mpc/index.ts +15 -0
  161. package/typechain-types/factories/contracts/mocks/wallet/PrivateERC20Wallet/PrivateERC20WalletMock__factory.ts +194 -0
  162. package/typechain-types/factories/contracts/mocks/wallet/PrivateERC20Wallet/index.ts +4 -0
  163. package/typechain-types/factories/contracts/mocks/wallet/index.ts +4 -0
  164. package/typechain-types/factories/contracts/onboard/AccountOnboard__factory.ts +104 -0
  165. package/typechain-types/factories/contracts/onboard/index.ts +4 -0
  166. package/typechain-types/factories/contracts/token/PrivateERC20/IPrivateERC20__factory.ts +406 -0
  167. package/typechain-types/factories/contracts/token/PrivateERC20/PrivateERC20__factory.ts +532 -0
  168. package/typechain-types/factories/contracts/token/PrivateERC20/index.ts +5 -0
  169. package/typechain-types/factories/contracts/token/PrivateERC721/PrivateERC721__factory.ts +439 -0
  170. package/typechain-types/factories/contracts/token/PrivateERC721/extensions/PrivateERC721URIStorage__factory.ts +512 -0
  171. package/typechain-types/factories/contracts/token/PrivateERC721/extensions/index.ts +4 -0
  172. package/typechain-types/factories/contracts/token/PrivateERC721/index.ts +5 -0
  173. package/typechain-types/factories/contracts/token/index.ts +5 -0
  174. package/typechain-types/factories/contracts/utils/index.ts +4 -0
  175. package/typechain-types/factories/contracts/utils/mpc/MpcInterface.sol/ExtendedOperations__factory.ts +919 -0
  176. package/typechain-types/factories/contracts/utils/mpc/MpcInterface.sol/index.ts +4 -0
  177. package/typechain-types/factories/contracts/utils/mpc/index.ts +4 -0
  178. package/typechain-types/factories/index.ts +5 -0
  179. package/typechain-types/hardhat.d.ts +621 -0
  180. package/typechain-types/index.ts +72 -0
@@ -0,0 +1,374 @@
1
+ /* Autogenerated file. Do not edit manually. */
2
+ /* tslint:disable */
3
+ /* eslint-disable */
4
+ import {
5
+ Contract,
6
+ ContractFactory,
7
+ ContractTransactionResponse,
8
+ Interface,
9
+ } from "ethers";
10
+ import type { Signer, ContractDeployTransaction, ContractRunner } from "ethers";
11
+ import type { NonPayableOverrides } from "../../../../../common";
12
+ import type {
13
+ ArithmeticTestsContract,
14
+ ArithmeticTestsContractInterface,
15
+ } from "../../../../../contracts/mocks/utils/mpc/ArithmeticTestsContract";
16
+
17
+ const _abi = [
18
+ {
19
+ inputs: [
20
+ {
21
+ internalType: "uint8",
22
+ name: "a",
23
+ type: "uint8",
24
+ },
25
+ {
26
+ internalType: "uint8",
27
+ name: "b",
28
+ type: "uint8",
29
+ },
30
+ ],
31
+ name: "addTest",
32
+ outputs: [
33
+ {
34
+ internalType: "uint8",
35
+ name: "",
36
+ type: "uint8",
37
+ },
38
+ ],
39
+ stateMutability: "nonpayable",
40
+ type: "function",
41
+ },
42
+ {
43
+ inputs: [
44
+ {
45
+ components: [
46
+ {
47
+ internalType: "gtUint16",
48
+ name: "res16_16",
49
+ type: "uint256",
50
+ },
51
+ {
52
+ internalType: "gtUint16",
53
+ name: "res8_16",
54
+ type: "uint256",
55
+ },
56
+ {
57
+ internalType: "gtUint16",
58
+ name: "res16_8",
59
+ type: "uint256",
60
+ },
61
+ ],
62
+ internalType: "struct ArithmeticTestsContract.Check16",
63
+ name: "check16",
64
+ type: "tuple",
65
+ },
66
+ ],
67
+ name: "decryptAndCompareResults16",
68
+ outputs: [
69
+ {
70
+ internalType: "uint16",
71
+ name: "",
72
+ type: "uint16",
73
+ },
74
+ ],
75
+ stateMutability: "nonpayable",
76
+ type: "function",
77
+ },
78
+ {
79
+ inputs: [
80
+ {
81
+ components: [
82
+ {
83
+ internalType: "gtUint32",
84
+ name: "res32_32",
85
+ type: "uint256",
86
+ },
87
+ {
88
+ internalType: "gtUint32",
89
+ name: "res8_32",
90
+ type: "uint256",
91
+ },
92
+ {
93
+ internalType: "gtUint32",
94
+ name: "res32_8",
95
+ type: "uint256",
96
+ },
97
+ {
98
+ internalType: "gtUint32",
99
+ name: "res16_32",
100
+ type: "uint256",
101
+ },
102
+ {
103
+ internalType: "gtUint32",
104
+ name: "res32_16",
105
+ type: "uint256",
106
+ },
107
+ ],
108
+ internalType: "struct ArithmeticTestsContract.Check32",
109
+ name: "check32",
110
+ type: "tuple",
111
+ },
112
+ ],
113
+ name: "decryptAndCompareResults32",
114
+ outputs: [
115
+ {
116
+ internalType: "uint32",
117
+ name: "",
118
+ type: "uint32",
119
+ },
120
+ ],
121
+ stateMutability: "nonpayable",
122
+ type: "function",
123
+ },
124
+ {
125
+ inputs: [
126
+ {
127
+ components: [
128
+ {
129
+ internalType: "gtUint64",
130
+ name: "res64_64",
131
+ type: "uint256",
132
+ },
133
+ {
134
+ internalType: "gtUint64",
135
+ name: "res8_64",
136
+ type: "uint256",
137
+ },
138
+ {
139
+ internalType: "gtUint64",
140
+ name: "res64_8",
141
+ type: "uint256",
142
+ },
143
+ {
144
+ internalType: "gtUint64",
145
+ name: "res16_64",
146
+ type: "uint256",
147
+ },
148
+ {
149
+ internalType: "gtUint64",
150
+ name: "res64_16",
151
+ type: "uint256",
152
+ },
153
+ {
154
+ internalType: "gtUint64",
155
+ name: "res32_64",
156
+ type: "uint256",
157
+ },
158
+ {
159
+ internalType: "gtUint64",
160
+ name: "res64_32",
161
+ type: "uint256",
162
+ },
163
+ ],
164
+ internalType: "struct ArithmeticTestsContract.Check64",
165
+ name: "check64",
166
+ type: "tuple",
167
+ },
168
+ ],
169
+ name: "decryptAndCompareResults64",
170
+ outputs: [
171
+ {
172
+ internalType: "uint64",
173
+ name: "",
174
+ type: "uint64",
175
+ },
176
+ ],
177
+ stateMutability: "nonpayable",
178
+ type: "function",
179
+ },
180
+ {
181
+ inputs: [],
182
+ name: "getResult",
183
+ outputs: [
184
+ {
185
+ internalType: "uint8",
186
+ name: "",
187
+ type: "uint8",
188
+ },
189
+ ],
190
+ stateMutability: "view",
191
+ type: "function",
192
+ },
193
+ {
194
+ inputs: [],
195
+ name: "getResult16",
196
+ outputs: [
197
+ {
198
+ internalType: "uint16",
199
+ name: "",
200
+ type: "uint16",
201
+ },
202
+ ],
203
+ stateMutability: "view",
204
+ type: "function",
205
+ },
206
+ {
207
+ inputs: [
208
+ {
209
+ internalType: "uint8",
210
+ name: "a",
211
+ type: "uint8",
212
+ },
213
+ {
214
+ internalType: "uint8",
215
+ name: "b",
216
+ type: "uint8",
217
+ },
218
+ ],
219
+ name: "mulTest",
220
+ outputs: [
221
+ {
222
+ internalType: "uint16",
223
+ name: "",
224
+ type: "uint16",
225
+ },
226
+ ],
227
+ stateMutability: "nonpayable",
228
+ type: "function",
229
+ },
230
+ {
231
+ inputs: [
232
+ {
233
+ components: [
234
+ {
235
+ internalType: "gtUint8",
236
+ name: "a8_s",
237
+ type: "uint256",
238
+ },
239
+ {
240
+ internalType: "gtUint8",
241
+ name: "b8_s",
242
+ type: "uint256",
243
+ },
244
+ {
245
+ internalType: "gtUint16",
246
+ name: "a16_s",
247
+ type: "uint256",
248
+ },
249
+ {
250
+ internalType: "gtUint16",
251
+ name: "b16_s",
252
+ type: "uint256",
253
+ },
254
+ {
255
+ internalType: "gtUint32",
256
+ name: "a32_s",
257
+ type: "uint256",
258
+ },
259
+ {
260
+ internalType: "gtUint32",
261
+ name: "b32_s",
262
+ type: "uint256",
263
+ },
264
+ {
265
+ internalType: "gtUint64",
266
+ name: "a64_s",
267
+ type: "uint256",
268
+ },
269
+ {
270
+ internalType: "gtUint64",
271
+ name: "b64_s",
272
+ type: "uint256",
273
+ },
274
+ ],
275
+ internalType: "struct ArithmeticTestsContract.AllGTCastingValues",
276
+ name: "castingValues",
277
+ type: "tuple",
278
+ },
279
+ {
280
+ internalType: "uint8",
281
+ name: "a",
282
+ type: "uint8",
283
+ },
284
+ {
285
+ internalType: "uint8",
286
+ name: "b",
287
+ type: "uint8",
288
+ },
289
+ ],
290
+ name: "setPublicValues",
291
+ outputs: [],
292
+ stateMutability: "nonpayable",
293
+ type: "function",
294
+ },
295
+ {
296
+ inputs: [
297
+ {
298
+ internalType: "uint8",
299
+ name: "a",
300
+ type: "uint8",
301
+ },
302
+ {
303
+ internalType: "uint8",
304
+ name: "b",
305
+ type: "uint8",
306
+ },
307
+ ],
308
+ name: "subTest",
309
+ outputs: [
310
+ {
311
+ internalType: "uint8",
312
+ name: "",
313
+ type: "uint8",
314
+ },
315
+ ],
316
+ stateMutability: "nonpayable",
317
+ type: "function",
318
+ },
319
+ ] as const;
320
+
321
+ const _bytecode =
322
+ "0x608060405234801561001057600080fd5b50615d7580620000216000396000f3fe608060405234801561001057600080fd5b50600436106100935760003560e01c80637bfd4300116100665780637bfd43001461015857806380f937bc14610176578063acb38169146101a6578063de292789146101d6578063ebb571fd146101f457610093565b8063202cdc8f146100985780632e544aa0146100c85780634f5941bc146100f85780635e60e5c014610128575b600080fd5b6100b260048036038101906100ad9190614ab5565b610210565b6040516100bf9190614b12565b60405180910390f35b6100e260048036038101906100dd9190614c58565b61096b565b6040516100ef9190614b12565b60405180910390f35b610112600480360381019061010d9190614ab5565b6109fb565b60405161011f9190614c94565b60405180910390f35b610142600480360381019061013d9190614ab5565b610fda565b60405161014f9190614c94565b60405180910390f35b6101606115b9565b60405161016d9190614b12565b60405180910390f35b610190600480360381019061018b9190614d8f565b6115d0565b60405161019d9190614ddf565b60405180910390f35b6101c060048036038101906101bb9190614eb2565b611724565b6040516101cd9190614efe565b60405180910390f35b6101de611802565b6040516101eb9190614c94565b60405180910390f35b61020e6004803603810190610209919061500f565b611818565b005b600061021a61494b565b610222614990565b61022a6149b1565b6102326149e0565b61023d848888611818565b610257610252856000015186602001516118bf565b611956565b600060016101000a81548161ffff021916908361ffff160217905550610285846040015185606001516119f4565b8360000181815250506102a084600001518560600151611a8b565b8360200181815250506102bb84604001518560200151611b23565b8360400181815250506102d18360000151611bbb565b63ffffffff16600060019054906101000a900461ffff1661ffff1614801561031e57506103018360200151611bbb565b63ffffffff16600060019054906101000a900461ffff1661ffff16145b801561034f57506103328360400151611bbb565b63ffffffff16600060019054906101000a900461ffff1661ffff16145b61038e576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610385906150c2565b60405180910390fd5b6103a084608001518560a00151611c59565b8260000181815250506103bb84600001518560a00151611cf0565b8260200181815250506103d684608001518560200151611d88565b8260400181815250506103f184604001518560a00151611e20565b82606001818152505061040c84608001518560600151611eb8565b8260800181815250506104228260000151611f50565b67ffffffffffffffff16600060019054906101000a900461ffff1661ffff1614801561047757506104568260200151611f50565b67ffffffffffffffff16600060019054906101000a900461ffff1661ffff16145b80156104ac575061048b8260400151611f50565b67ffffffffffffffff16600060019054906101000a900461ffff1661ffff16145b80156104e157506104c08260800151611f50565b67ffffffffffffffff16600060019054906101000a900461ffff1661ffff16145b801561051657506104f58260600151611f50565b67ffffffffffffffff16600060019054906101000a900461ffff1661ffff16145b610555576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161054c9061512e565b60405180910390fd5b6105678460c001518560e00151611fed565b81600001818152505061058284600001518560e00151612084565b81602001818152505061059d8460c00151856020015161211c565b8160400181815250506105b884604001518560e001516121b4565b8160600181815250506105d38460c00151856060015161224c565b8160800181815250506105ee84608001518560e001516122e4565b8160a00181815250506106098460c001518560a0015161237c565b8160c0018181525050600061061d826115d0565b90508067ffffffffffffffff16600060019054906101000a900461ffff1661ffff161461067f576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016106769061519a565b60405180910390fd5b610695610690898760200151612414565b611956565b61ffff16600060019054906101000a900461ffff1661ffff161480156106e757506106cc6106c78660000151896124ae565b611956565b61ffff16600060019054906101000a900461ffff1661ffff16145b610726576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161071d9061522c565b60405180910390fd5b61073f61073a8960ff168760600151612548565b611f50565b67ffffffffffffffff16600060019054906101000a900461ffff1661ffff1614801561079c575061077f61077a86604001518960ff166125e3565b611bbb565b63ffffffff16600060019054906101000a900461ffff1661ffff16145b6107db576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016107d2906152be565b60405180910390fd5b6107f46107ef8960ff168760a0015161267e565b611f50565b67ffffffffffffffff16600060019054906101000a900461ffff1661ffff16148015610855575061083461082f86608001518960ff1661271b565b611f50565b67ffffffffffffffff16600060019054906101000a900461ffff1661ffff16145b610894576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161088b90615350565b60405180910390fd5b6108ad6108a88960ff168760e001516127b8565b611f50565b67ffffffffffffffff16600060019054906101000a900461ffff1661ffff1614801561090e57506108ed6108e88660c001518960ff16612859565b611f50565b67ffffffffffffffff16600060019054906101000a900461ffff1661ffff16145b61094d576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610944906153e2565b60405180910390fd5b600060019054906101000a900461ffff169550505050505092915050565b60008061097b8360000151611956565b905061098a8360200151611956565b61ffff168161ffff161480156109b357506109a88360400151611956565b61ffff168161ffff16145b6109f2576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016109e99061549a565b60405180910390fd5b80915050919050565b6000610a0561494b565b610a0d614a1d565b610a15614a3e565b610a1d6149e0565b610a28848888611818565b610a42610a3d856000015186602001516128fa565b612991565b6000806101000a81548160ff021916908360ff160217905550610a6d84604001518560600151612a2f565b836000018181525050610a8884600001518560600151612ac6565b836020018181525050610aa384604001518560200151612b5e565b8360400181815250506000610ab78461096b565b905060008054906101000a900460ff1660ff168161ffff1614610b0f576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610b0690615506565b60405180910390fd5b610b2185608001518660a00151612bf6565b836000018181525050610b3c85600001518660a00151612c8d565b836020018181525050610b5785608001518660200151612d25565b836040018181525050610b7285604001518660a00151612dbd565b836060018181525050610b8d85608001518660600151612e55565b8360800181815250506000610ba184611724565b90508063ffffffff1660008054906101000a900460ff1660ff1614610bfb576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610bf290615572565b60405180910390fd5b610c0d8660c001518760e00151612eed565b836000018181525050610c2886600001518760e00151612f84565b836020018181525050610c438660c00151876020015161301c565b836040018181525050610c5e86604001518760e001516130b4565b836060018181525050610c798660c00151876060015161314c565b836080018181525050610c9486608001518760e001516131e4565b8360a0018181525050610caf8660c001518760a0015161327c565b8360c00181815250506000610cc3846115d0565b90508067ffffffffffffffff1660008054906101000a900460ff1660ff1614610d21576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610d18906155de565b60405180910390fd5b610d37610d328b8960200151613314565b612991565b60ff1660008054906101000a900460ff1660ff16148015610d7f5750610d69610d6488600001518b6133ae565b612991565b60ff1660008054906101000a900460ff1660ff16145b610dbe576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610db590615670565b60405180910390fd5b610dd7610dd28b60ff168960600151613448565b611956565b61ffff1660008054906101000a900460ff1660ff16148015610e245750610e0d610e0888604001518b60ff166134e3565b611956565b61ffff1660008054906101000a900460ff1660ff16145b610e63576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610e5a90615702565b60405180910390fd5b610e7c610e778b60ff168960a0015161357e565b611bbb565b63ffffffff1660008054906101000a900460ff1660ff16148015610ecd5750610eb4610eaf88608001518b60ff1661361b565b611bbb565b63ffffffff1660008054906101000a900460ff1660ff16145b610f0c576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610f0390615794565b60405180910390fd5b610f25610f208b60ff168960e001516136b8565b611f50565b67ffffffffffffffff1660008054906101000a900460ff1660ff16148015610f7e5750610f61610f5c8860c001518b60ff16613759565b611f50565b67ffffffffffffffff1660008054906101000a900460ff1660ff16145b610fbd576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610fb490615826565b60405180910390fd5b60008054906101000a900460ff1697505050505050505092915050565b6000610fe461494b565b610fec614a1d565b610ff4614a3e565b610ffc6149e0565b611007848888611818565b61102161101c856000015186602001516137fa565b612991565b6000806101000a81548160ff021916908360ff16021790555061104c84604001518560600151613891565b83600001818152505061106784600001518560600151613928565b836020018181525050611082846040015185602001516139c0565b83604001818152505060006110968461096b565b905060008054906101000a900460ff1660ff168161ffff16146110ee576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016110e590615892565b60405180910390fd5b61110085608001518660a00151613a58565b83600001818152505061111b85600001518660a00151613aef565b83602001818152505061113685608001518660200151613b87565b83604001818152505061115185604001518660a00151613c1f565b83606001818152505061116c85608001518660600151613cb7565b836080018181525050600061118084611724565b90508063ffffffff1660008054906101000a900460ff1660ff16146111da576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016111d1906158fe565b60405180910390fd5b6111ec8660c001518760e00151613d4f565b83600001818152505061120786600001518760e00151613de6565b8360200181815250506112228660c001518760200151613e7e565b83604001818152505061123d86604001518760e00151613f16565b8360600181815250506112588660c001518760600151613fae565b83608001818152505061127386608001518760e00151614046565b8360a001818152505061128e8660c001518760a001516140de565b8360c001818152505060006112a2846115d0565b90508067ffffffffffffffff1660008054906101000a900460ff1660ff1614611300576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016112f79061596a565b60405180910390fd5b6113166113118b8960200151614176565b612991565b60ff1660008054906101000a900460ff1660ff1614801561135e575061134861134388600001518b614210565b612991565b60ff1660008054906101000a900460ff1660ff16145b61139d576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611394906159fc565b60405180910390fd5b6113b66113b18b60ff1689606001516142aa565b611956565b61ffff1660008054906101000a900460ff1660ff1614801561140357506113ec6113e788604001518b60ff16614345565b611956565b61ffff1660008054906101000a900460ff1660ff16145b611442576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161143990615a8e565b60405180910390fd5b61145b6114568b60ff168960a001516143e0565b611bbb565b63ffffffff1660008054906101000a900460ff1660ff161480156114ac575061149361148e88608001518b60ff1661447d565b611bbb565b63ffffffff1660008054906101000a900460ff1660ff16145b6114eb576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016114e290615b20565b60405180910390fd5b6115046114ff8b60ff168960e0015161451a565b611f50565b67ffffffffffffffff1660008054906101000a900460ff1660ff1614801561155d575061154061153b8860c001518b60ff166145bb565b611f50565b67ffffffffffffffff1660008054906101000a900460ff1660ff16145b61159c576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161159390615bb2565b60405180910390fd5b60008054906101000a900460ff1697505050505050505092915050565b60008060019054906101000a900461ffff16905090565b6000806115e08360000151611f50565b90506115ef8360200151611f50565b67ffffffffffffffff168167ffffffffffffffff1614801561163057506116198360400151611f50565b67ffffffffffffffff168167ffffffffffffffff16145b801561165b57506116448360800151611f50565b67ffffffffffffffff168167ffffffffffffffff16145b8015611686575061166f8360600151611f50565b67ffffffffffffffff168167ffffffffffffffff16145b80156116b1575061169a8360c00151611f50565b67ffffffffffffffff168167ffffffffffffffff16145b80156116dc57506116c58360a00151611f50565b67ffffffffffffffff168167ffffffffffffffff16145b61171b576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016117129061549a565b60405180910390fd5b80915050919050565b6000806117348360000151611bbb565b90506117438360200151611bbb565b63ffffffff168163ffffffff1614801561177457506117658360400151611bbb565b63ffffffff168163ffffffff16145b801561179757506117888360800151611bbb565b63ffffffff168163ffffffff16145b80156117ba57506117ab8360600151611bbb565b63ffffffff168163ffffffff16145b6117f9576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016117f09061549a565b60405180910390fd5b80915050919050565b60008060009054906101000a900460ff16905090565b6118218261465c565b8360000181815250506118338161465c565b8360200181815250506118488260ff166146fd565b83604001818152505061185d8160ff166146fd565b8360600181815250506118728260ff1661479f565b8360800181815250506118878160ff1661479f565b8360a001818152505061189c8260ff16614843565b8360c00181815250506118b18160ff16614843565b8360e0018181525050505050565b6000606473ffffffffffffffffffffffffffffffffffffffff1663f1d21bb46118eb60018060006148ea565b85856040518463ffffffff1660e01b815260040161190b93929190615c1c565b6020604051808303816000875af115801561192a573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061194e9190615c7f565b905092915050565b6000606473ffffffffffffffffffffffffffffffffffffffff16630cfed5616002600481111561198957611988615cac565b5b60f81b846040518363ffffffff1660e01b81526004016119aa929190615d16565b6020604051808303816000875af11580156119c9573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906119ed9190615c7f565b9050919050565b6000606473ffffffffffffffffffffffffffffffffffffffff1663f1d21bb4611a2060028060006148ea565b85856040518463ffffffff1660e01b8152600401611a4093929190615c1c565b6020604051808303816000875af1158015611a5f573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611a839190615c7f565b905092915050565b6000606473ffffffffffffffffffffffffffffffffffffffff1663f1d21bb4611ab86001600260006148ea565b85856040518463ffffffff1660e01b8152600401611ad893929190615c1c565b6020604051808303816000875af1158015611af7573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611b1b9190615c7f565b905092915050565b6000606473ffffffffffffffffffffffffffffffffffffffff1663f1d21bb4611b506002600160006148ea565b85856040518463ffffffff1660e01b8152600401611b7093929190615c1c565b6020604051808303816000875af1158015611b8f573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611bb39190615c7f565b905092915050565b6000606473ffffffffffffffffffffffffffffffffffffffff16630cfed56160036004811115611bee57611bed615cac565b5b60f81b846040518363ffffffff1660e01b8152600401611c0f929190615d16565b6020604051808303816000875af1158015611c2e573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611c529190615c7f565b9050919050565b6000606473ffffffffffffffffffffffffffffffffffffffff1663f1d21bb4611c8560038060006148ea565b85856040518463ffffffff1660e01b8152600401611ca593929190615c1c565b6020604051808303816000875af1158015611cc4573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611ce89190615c7f565b905092915050565b6000606473ffffffffffffffffffffffffffffffffffffffff1663f1d21bb4611d1d6001600360006148ea565b85856040518463ffffffff1660e01b8152600401611d3d93929190615c1c565b6020604051808303816000875af1158015611d5c573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611d809190615c7f565b905092915050565b6000606473ffffffffffffffffffffffffffffffffffffffff1663f1d21bb4611db56003600160006148ea565b85856040518463ffffffff1660e01b8152600401611dd593929190615c1c565b6020604051808303816000875af1158015611df4573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611e189190615c7f565b905092915050565b6000606473ffffffffffffffffffffffffffffffffffffffff1663f1d21bb4611e4d6002600360006148ea565b85856040518463ffffffff1660e01b8152600401611e6d93929190615c1c565b6020604051808303816000875af1158015611e8c573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611eb09190615c7f565b905092915050565b6000606473ffffffffffffffffffffffffffffffffffffffff1663f1d21bb4611ee56003600260006148ea565b85856040518463ffffffff1660e01b8152600401611f0593929190615c1c565b6020604051808303816000875af1158015611f24573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611f489190615c7f565b905092915050565b6000606473ffffffffffffffffffffffffffffffffffffffff16630cfed561600480811115611f8257611f81615cac565b5b60f81b846040518363ffffffff1660e01b8152600401611fa3929190615d16565b6020604051808303816000875af1158015611fc2573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611fe69190615c7f565b9050919050565b6000606473ffffffffffffffffffffffffffffffffffffffff1663f1d21bb461201960048060006148ea565b85856040518463ffffffff1660e01b815260040161203993929190615c1c565b6020604051808303816000875af1158015612058573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061207c9190615c7f565b905092915050565b6000606473ffffffffffffffffffffffffffffffffffffffff1663f1d21bb46120b16001600460006148ea565b85856040518463ffffffff1660e01b81526004016120d193929190615c1c565b6020604051808303816000875af11580156120f0573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906121149190615c7f565b905092915050565b6000606473ffffffffffffffffffffffffffffffffffffffff1663f1d21bb46121496004600160006148ea565b85856040518463ffffffff1660e01b815260040161216993929190615c1c565b6020604051808303816000875af1158015612188573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906121ac9190615c7f565b905092915050565b6000606473ffffffffffffffffffffffffffffffffffffffff1663f1d21bb46121e16002600460006148ea565b85856040518463ffffffff1660e01b815260040161220193929190615c1c565b6020604051808303816000875af1158015612220573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906122449190615c7f565b905092915050565b6000606473ffffffffffffffffffffffffffffffffffffffff1663f1d21bb46122796004600260006148ea565b85856040518463ffffffff1660e01b815260040161229993929190615c1c565b6020604051808303816000875af11580156122b8573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906122dc9190615c7f565b905092915050565b6000606473ffffffffffffffffffffffffffffffffffffffff1663f1d21bb46123116003600460006148ea565b85856040518463ffffffff1660e01b815260040161233193929190615c1c565b6020604051808303816000875af1158015612350573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906123749190615c7f565b905092915050565b6000606473ffffffffffffffffffffffffffffffffffffffff1663f1d21bb46123a96004600360006148ea565b85856040518463ffffffff1660e01b81526004016123c993929190615c1c565b6020604051808303816000875af11580156123e8573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061240c9190615c7f565b905092915050565b6000606473ffffffffffffffffffffffffffffffffffffffff1663f1d21bb461244060018060016148ea565b8560ff16856040518463ffffffff1660e01b815260040161246393929190615c1c565b6020604051808303816000875af1158015612482573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906124a69190615c7f565b905092915050565b6000606473ffffffffffffffffffffffffffffffffffffffff1663f1d21bb46124da60018060026148ea565b858560ff166040518463ffffffff1660e01b81526004016124fd93929190615c1c565b6020604051808303816000875af115801561251c573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906125409190615c7f565b905092915050565b6000606473ffffffffffffffffffffffffffffffffffffffff1663f1d21bb461257460028060016148ea565b8561ffff16856040518463ffffffff1660e01b815260040161259893929190615c1c565b6020604051808303816000875af11580156125b7573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906125db9190615c7f565b905092915050565b6000606473ffffffffffffffffffffffffffffffffffffffff1663f1d21bb461260f60018060026148ea565b858561ffff166040518463ffffffff1660e01b815260040161263393929190615c1c565b6020604051808303816000875af1158015612652573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906126769190615c7f565b905092915050565b6000606473ffffffffffffffffffffffffffffffffffffffff1663f1d21bb46126aa60038060016148ea565b8563ffffffff16856040518463ffffffff1660e01b81526004016126d093929190615c1c565b6020604051808303816000875af11580156126ef573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906127139190615c7f565b905092915050565b6000606473ffffffffffffffffffffffffffffffffffffffff1663f1d21bb461274760038060026148ea565b858563ffffffff166040518463ffffffff1660e01b815260040161276d93929190615c1c565b6020604051808303816000875af115801561278c573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906127b09190615c7f565b905092915050565b6000606473ffffffffffffffffffffffffffffffffffffffff1663f1d21bb46127e460048060016148ea565b8567ffffffffffffffff16856040518463ffffffff1660e01b815260040161280e93929190615c1c565b6020604051808303816000875af115801561282d573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906128519190615c7f565b905092915050565b6000606473ffffffffffffffffffffffffffffffffffffffff1663f1d21bb461288560048060026148ea565b858567ffffffffffffffff166040518463ffffffff1660e01b81526004016128af93929190615c1c565b6020604051808303816000875af11580156128ce573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906128f29190615c7f565b905092915050565b6000606473ffffffffffffffffffffffffffffffffffffffff1663371d1bf261292660018060006148ea565b85856040518463ffffffff1660e01b815260040161294693929190615c1c565b6020604051808303816000875af1158015612965573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906129899190615c7f565b905092915050565b6000606473ffffffffffffffffffffffffffffffffffffffff16630cfed561600160048111156129c4576129c3615cac565b5b60f81b846040518363ffffffff1660e01b81526004016129e5929190615d16565b6020604051808303816000875af1158015612a04573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612a289190615c7f565b9050919050565b6000606473ffffffffffffffffffffffffffffffffffffffff1663371d1bf2612a5b60028060006148ea565b85856040518463ffffffff1660e01b8152600401612a7b93929190615c1c565b6020604051808303816000875af1158015612a9a573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612abe9190615c7f565b905092915050565b6000606473ffffffffffffffffffffffffffffffffffffffff1663371d1bf2612af36001600260006148ea565b85856040518463ffffffff1660e01b8152600401612b1393929190615c1c565b6020604051808303816000875af1158015612b32573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612b569190615c7f565b905092915050565b6000606473ffffffffffffffffffffffffffffffffffffffff1663371d1bf2612b8b6002600160006148ea565b85856040518463ffffffff1660e01b8152600401612bab93929190615c1c565b6020604051808303816000875af1158015612bca573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612bee9190615c7f565b905092915050565b6000606473ffffffffffffffffffffffffffffffffffffffff1663371d1bf2612c2260038060006148ea565b85856040518463ffffffff1660e01b8152600401612c4293929190615c1c565b6020604051808303816000875af1158015612c61573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612c859190615c7f565b905092915050565b6000606473ffffffffffffffffffffffffffffffffffffffff1663371d1bf2612cba6001600360006148ea565b85856040518463ffffffff1660e01b8152600401612cda93929190615c1c565b6020604051808303816000875af1158015612cf9573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612d1d9190615c7f565b905092915050565b6000606473ffffffffffffffffffffffffffffffffffffffff1663371d1bf2612d526003600160006148ea565b85856040518463ffffffff1660e01b8152600401612d7293929190615c1c565b6020604051808303816000875af1158015612d91573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612db59190615c7f565b905092915050565b6000606473ffffffffffffffffffffffffffffffffffffffff1663371d1bf2612dea6002600360006148ea565b85856040518463ffffffff1660e01b8152600401612e0a93929190615c1c565b6020604051808303816000875af1158015612e29573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612e4d9190615c7f565b905092915050565b6000606473ffffffffffffffffffffffffffffffffffffffff1663371d1bf2612e826003600260006148ea565b85856040518463ffffffff1660e01b8152600401612ea293929190615c1c565b6020604051808303816000875af1158015612ec1573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612ee59190615c7f565b905092915050565b6000606473ffffffffffffffffffffffffffffffffffffffff1663371d1bf2612f1960048060006148ea565b85856040518463ffffffff1660e01b8152600401612f3993929190615c1c565b6020604051808303816000875af1158015612f58573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612f7c9190615c7f565b905092915050565b6000606473ffffffffffffffffffffffffffffffffffffffff1663371d1bf2612fb16001600460006148ea565b85856040518463ffffffff1660e01b8152600401612fd193929190615c1c565b6020604051808303816000875af1158015612ff0573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906130149190615c7f565b905092915050565b6000606473ffffffffffffffffffffffffffffffffffffffff1663371d1bf26130496004600160006148ea565b85856040518463ffffffff1660e01b815260040161306993929190615c1c565b6020604051808303816000875af1158015613088573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906130ac9190615c7f565b905092915050565b6000606473ffffffffffffffffffffffffffffffffffffffff1663371d1bf26130e16002600460006148ea565b85856040518463ffffffff1660e01b815260040161310193929190615c1c565b6020604051808303816000875af1158015613120573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906131449190615c7f565b905092915050565b6000606473ffffffffffffffffffffffffffffffffffffffff1663371d1bf26131796004600260006148ea565b85856040518463ffffffff1660e01b815260040161319993929190615c1c565b6020604051808303816000875af11580156131b8573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906131dc9190615c7f565b905092915050565b6000606473ffffffffffffffffffffffffffffffffffffffff1663371d1bf26132116003600460006148ea565b85856040518463ffffffff1660e01b815260040161323193929190615c1c565b6020604051808303816000875af1158015613250573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906132749190615c7f565b905092915050565b6000606473ffffffffffffffffffffffffffffffffffffffff1663371d1bf26132a96004600360006148ea565b85856040518463ffffffff1660e01b81526004016132c993929190615c1c565b6020604051808303816000875af11580156132e8573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061330c9190615c7f565b905092915050565b6000606473ffffffffffffffffffffffffffffffffffffffff1663371d1bf261334060018060016148ea565b8560ff16856040518463ffffffff1660e01b815260040161336393929190615c1c565b6020604051808303816000875af1158015613382573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906133a69190615c7f565b905092915050565b6000606473ffffffffffffffffffffffffffffffffffffffff1663371d1bf26133da60018060026148ea565b858560ff166040518463ffffffff1660e01b81526004016133fd93929190615c1c565b6020604051808303816000875af115801561341c573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906134409190615c7f565b905092915050565b6000606473ffffffffffffffffffffffffffffffffffffffff1663371d1bf261347460028060016148ea565b8561ffff16856040518463ffffffff1660e01b815260040161349893929190615c1c565b6020604051808303816000875af11580156134b7573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906134db9190615c7f565b905092915050565b6000606473ffffffffffffffffffffffffffffffffffffffff1663371d1bf261350f60018060026148ea565b858561ffff166040518463ffffffff1660e01b815260040161353393929190615c1c565b6020604051808303816000875af1158015613552573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906135769190615c7f565b905092915050565b6000606473ffffffffffffffffffffffffffffffffffffffff1663371d1bf26135aa60038060016148ea565b8563ffffffff16856040518463ffffffff1660e01b81526004016135d093929190615c1c565b6020604051808303816000875af11580156135ef573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906136139190615c7f565b905092915050565b6000606473ffffffffffffffffffffffffffffffffffffffff1663371d1bf261364760038060026148ea565b858563ffffffff166040518463ffffffff1660e01b815260040161366d93929190615c1c565b6020604051808303816000875af115801561368c573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906136b09190615c7f565b905092915050565b6000606473ffffffffffffffffffffffffffffffffffffffff1663371d1bf26136e460048060016148ea565b8567ffffffffffffffff16856040518463ffffffff1660e01b815260040161370e93929190615c1c565b6020604051808303816000875af115801561372d573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906137519190615c7f565b905092915050565b6000606473ffffffffffffffffffffffffffffffffffffffff1663371d1bf261378560048060026148ea565b858567ffffffffffffffff166040518463ffffffff1660e01b81526004016137af93929190615c1c565b6020604051808303816000875af11580156137ce573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906137f29190615c7f565b905092915050565b6000606473ffffffffffffffffffffffffffffffffffffffff16638c5d015061382660018060006148ea565b85856040518463ffffffff1660e01b815260040161384693929190615c1c565b6020604051808303816000875af1158015613865573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906138899190615c7f565b905092915050565b6000606473ffffffffffffffffffffffffffffffffffffffff16638c5d01506138bd60028060006148ea565b85856040518463ffffffff1660e01b81526004016138dd93929190615c1c565b6020604051808303816000875af11580156138fc573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906139209190615c7f565b905092915050565b6000606473ffffffffffffffffffffffffffffffffffffffff16638c5d01506139556001600260006148ea565b85856040518463ffffffff1660e01b815260040161397593929190615c1c565b6020604051808303816000875af1158015613994573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906139b89190615c7f565b905092915050565b6000606473ffffffffffffffffffffffffffffffffffffffff16638c5d01506139ed6002600160006148ea565b85856040518463ffffffff1660e01b8152600401613a0d93929190615c1c565b6020604051808303816000875af1158015613a2c573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190613a509190615c7f565b905092915050565b6000606473ffffffffffffffffffffffffffffffffffffffff16638c5d0150613a8460038060006148ea565b85856040518463ffffffff1660e01b8152600401613aa493929190615c1c565b6020604051808303816000875af1158015613ac3573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190613ae79190615c7f565b905092915050565b6000606473ffffffffffffffffffffffffffffffffffffffff16638c5d0150613b1c6001600360006148ea565b85856040518463ffffffff1660e01b8152600401613b3c93929190615c1c565b6020604051808303816000875af1158015613b5b573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190613b7f9190615c7f565b905092915050565b6000606473ffffffffffffffffffffffffffffffffffffffff16638c5d0150613bb46003600160006148ea565b85856040518463ffffffff1660e01b8152600401613bd493929190615c1c565b6020604051808303816000875af1158015613bf3573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190613c179190615c7f565b905092915050565b6000606473ffffffffffffffffffffffffffffffffffffffff16638c5d0150613c4c6002600360006148ea565b85856040518463ffffffff1660e01b8152600401613c6c93929190615c1c565b6020604051808303816000875af1158015613c8b573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190613caf9190615c7f565b905092915050565b6000606473ffffffffffffffffffffffffffffffffffffffff16638c5d0150613ce46003600260006148ea565b85856040518463ffffffff1660e01b8152600401613d0493929190615c1c565b6020604051808303816000875af1158015613d23573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190613d479190615c7f565b905092915050565b6000606473ffffffffffffffffffffffffffffffffffffffff16638c5d0150613d7b60048060006148ea565b85856040518463ffffffff1660e01b8152600401613d9b93929190615c1c565b6020604051808303816000875af1158015613dba573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190613dde9190615c7f565b905092915050565b6000606473ffffffffffffffffffffffffffffffffffffffff16638c5d0150613e136001600460006148ea565b85856040518463ffffffff1660e01b8152600401613e3393929190615c1c565b6020604051808303816000875af1158015613e52573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190613e769190615c7f565b905092915050565b6000606473ffffffffffffffffffffffffffffffffffffffff16638c5d0150613eab6004600160006148ea565b85856040518463ffffffff1660e01b8152600401613ecb93929190615c1c565b6020604051808303816000875af1158015613eea573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190613f0e9190615c7f565b905092915050565b6000606473ffffffffffffffffffffffffffffffffffffffff16638c5d0150613f436002600460006148ea565b85856040518463ffffffff1660e01b8152600401613f6393929190615c1c565b6020604051808303816000875af1158015613f82573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190613fa69190615c7f565b905092915050565b6000606473ffffffffffffffffffffffffffffffffffffffff16638c5d0150613fdb6004600260006148ea565b85856040518463ffffffff1660e01b8152600401613ffb93929190615c1c565b6020604051808303816000875af115801561401a573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061403e9190615c7f565b905092915050565b6000606473ffffffffffffffffffffffffffffffffffffffff16638c5d01506140736003600460006148ea565b85856040518463ffffffff1660e01b815260040161409393929190615c1c565b6020604051808303816000875af11580156140b2573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906140d69190615c7f565b905092915050565b6000606473ffffffffffffffffffffffffffffffffffffffff16638c5d015061410b6004600360006148ea565b85856040518463ffffffff1660e01b815260040161412b93929190615c1c565b6020604051808303816000875af115801561414a573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061416e9190615c7f565b905092915050565b6000606473ffffffffffffffffffffffffffffffffffffffff16638c5d01506141a260018060016148ea565b8560ff16856040518463ffffffff1660e01b81526004016141c593929190615c1c565b6020604051808303816000875af11580156141e4573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906142089190615c7f565b905092915050565b6000606473ffffffffffffffffffffffffffffffffffffffff16638c5d015061423c60018060026148ea565b858560ff166040518463ffffffff1660e01b815260040161425f93929190615c1c565b6020604051808303816000875af115801561427e573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906142a29190615c7f565b905092915050565b6000606473ffffffffffffffffffffffffffffffffffffffff16638c5d01506142d660028060016148ea565b8561ffff16856040518463ffffffff1660e01b81526004016142fa93929190615c1c565b6020604051808303816000875af1158015614319573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061433d9190615c7f565b905092915050565b6000606473ffffffffffffffffffffffffffffffffffffffff16638c5d015061437160028060026148ea565b858561ffff166040518463ffffffff1660e01b815260040161439593929190615c1c565b6020604051808303816000875af11580156143b4573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906143d89190615c7f565b905092915050565b6000606473ffffffffffffffffffffffffffffffffffffffff16638c5d015061440c60038060016148ea565b8563ffffffff16856040518463ffffffff1660e01b815260040161443293929190615c1c565b6020604051808303816000875af1158015614451573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906144759190615c7f565b905092915050565b6000606473ffffffffffffffffffffffffffffffffffffffff16638c5d01506144a960038060026148ea565b858563ffffffff166040518463ffffffff1660e01b81526004016144cf93929190615c1c565b6020604051808303816000875af11580156144ee573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906145129190615c7f565b905092915050565b6000606473ffffffffffffffffffffffffffffffffffffffff16638c5d015061454660048060016148ea565b8567ffffffffffffffff16856040518463ffffffff1660e01b815260040161457093929190615c1c565b6020604051808303816000875af115801561458f573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906145b39190615c7f565b905092915050565b6000606473ffffffffffffffffffffffffffffffffffffffff16638c5d01506145e760048060026148ea565b858567ffffffffffffffff166040518463ffffffff1660e01b815260040161461193929190615c1c565b6020604051808303816000875af1158015614630573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906146549190615c7f565b905092915050565b6000606473ffffffffffffffffffffffffffffffffffffffff1663d9b60b606001600481111561468f5761468e615cac565b5b60f81b8460ff166040518363ffffffff1660e01b81526004016146b3929190615d16565b6020604051808303816000875af11580156146d2573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906146f69190615c7f565b9050919050565b6000606473ffffffffffffffffffffffffffffffffffffffff1663d9b60b60600260048111156147305761472f615cac565b5b60f81b8461ffff166040518363ffffffff1660e01b8152600401614755929190615d16565b6020604051808303816000875af1158015614774573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906147989190615c7f565b9050919050565b6000606473ffffffffffffffffffffffffffffffffffffffff1663d9b60b60600360048111156147d2576147d1615cac565b5b60f81b8463ffffffff166040518363ffffffff1660e01b81526004016147f9929190615d16565b6020604051808303816000875af1158015614818573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061483c9190615c7f565b9050919050565b6000606473ffffffffffffffffffffffffffffffffffffffff1663d9b60b6060048081111561487557614874615cac565b5b60f81b8467ffffffffffffffff166040518363ffffffff1660e01b81526004016148a0929190615d16565b6020604051808303816000875af11580156148bf573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906148e39190615c7f565b9050919050565b60008160028111156148ff576148fe615cac565b5b60ff16600884600481111561491757614916615cac565b5b61ffff16901b61ffff16601086600481111561493657614935615cac565b5b62ffffff16901b171760e81b90509392505050565b60405180610100016040528060008152602001600081526020016000815260200160008152602001600081526020016000815260200160008152602001600081525090565b60405180606001604052806000815260200160008152602001600081525090565b6040518060a0016040528060008152602001600081526020016000815260200160008152602001600081525090565b6040518060e00160405280600081526020016000815260200160008152602001600081526020016000815260200160008152602001600081525090565b60405180606001604052806000815260200160008152602001600081525090565b6040518060a0016040528060008152602001600081526020016000815260200160008152602001600081525090565b6000604051905090565b600080fd5b600060ff82169050919050565b614a9281614a7c565b8114614a9d57600080fd5b50565b600081359050614aaf81614a89565b92915050565b60008060408385031215614acc57614acb614a77565b5b6000614ada85828601614aa0565b9250506020614aeb85828601614aa0565b9150509250929050565b600061ffff82169050919050565b614b0c81614af5565b82525050565b6000602082019050614b276000830184614b03565b92915050565b600080fd5b6000601f19601f8301169050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b614b7b82614b32565b810181811067ffffffffffffffff82111715614b9a57614b99614b43565b5b80604052505050565b6000614bad614a6d565b9050614bb98282614b72565b919050565b6000819050919050565b614bd181614bbe565b8114614bdc57600080fd5b50565b600081359050614bee81614bc8565b92915050565b600060608284031215614c0a57614c09614b2d565b5b614c146060614ba3565b90506000614c2484828501614bdf565b6000830152506020614c3884828501614bdf565b6020830152506040614c4c84828501614bdf565b60408301525092915050565b600060608284031215614c6e57614c6d614a77565b5b6000614c7c84828501614bf4565b91505092915050565b614c8e81614a7c565b82525050565b6000602082019050614ca96000830184614c85565b92915050565b614cb881614bbe565b8114614cc357600080fd5b50565b600081359050614cd581614caf565b92915050565b600060e08284031215614cf157614cf0614b2d565b5b614cfb60e0614ba3565b90506000614d0b84828501614cc6565b6000830152506020614d1f84828501614cc6565b6020830152506040614d3384828501614cc6565b6040830152506060614d4784828501614cc6565b6060830152506080614d5b84828501614cc6565b60808301525060a0614d6f84828501614cc6565b60a08301525060c0614d8384828501614cc6565b60c08301525092915050565b600060e08284031215614da557614da4614a77565b5b6000614db384828501614cdb565b91505092915050565b600067ffffffffffffffff82169050919050565b614dd981614dbc565b82525050565b6000602082019050614df46000830184614dd0565b92915050565b614e0381614bbe565b8114614e0e57600080fd5b50565b600081359050614e2081614dfa565b92915050565b600060a08284031215614e3c57614e3b614b2d565b5b614e4660a0614ba3565b90506000614e5684828501614e11565b6000830152506020614e6a84828501614e11565b6020830152506040614e7e84828501614e11565b6040830152506060614e9284828501614e11565b6060830152506080614ea684828501614e11565b60808301525092915050565b600060a08284031215614ec857614ec7614a77565b5b6000614ed684828501614e26565b91505092915050565b600063ffffffff82169050919050565b614ef881614edf565b82525050565b6000602082019050614f136000830184614eef565b92915050565b614f2281614bbe565b8114614f2d57600080fd5b50565b600081359050614f3f81614f19565b92915050565b60006101008284031215614f5c57614f5b614b2d565b5b614f67610100614ba3565b90506000614f7784828501614f30565b6000830152506020614f8b84828501614f30565b6020830152506040614f9f84828501614bdf565b6040830152506060614fb384828501614bdf565b6060830152506080614fc784828501614e11565b60808301525060a0614fdb84828501614e11565b60a08301525060c0614fef84828501614cc6565b60c08301525060e061500384828501614cc6565b60e08301525092915050565b6000806000610140848603121561502957615028614a77565b5b600061503786828701614f45565b93505061010061504986828701614aa0565b92505061012061505b86828701614aa0565b9150509250925092565b600082825260208201905092915050565b7f6d756c546573743a2063617374203136206661696c6564000000000000000000600082015250565b60006150ac601783615065565b91506150b782615076565b602082019050919050565b600060208201905081810360008301526150db8161509f565b9050919050565b7f6d756c546573743a2063617374203332206661696c6564000000000000000000600082015250565b6000615118601783615065565b9150615123826150e2565b602082019050919050565b600060208201905081810360008301526151478161510b565b9050919050565b7f6d756c546573743a2063617374203634206661696c6564000000000000000000600082015250565b6000615184601783615065565b915061518f8261514e565b602082019050919050565b600060208201905081810360008301526151b381615177565b9050919050565b7f6d756c546573743a2074657374203820626974732077697468207363616c617260008201527f206661696c656400000000000000000000000000000000000000000000000000602082015250565b6000615216602783615065565b9150615221826151ba565b604082019050919050565b6000602082019050818103600083015261524581615209565b9050919050565b7f6d756c546573743a207465737420313620626974732077697468207363616c6160008201527f72206661696c6564000000000000000000000000000000000000000000000000602082015250565b60006152a8602883615065565b91506152b38261524c565b604082019050919050565b600060208201905081810360008301526152d78161529b565b9050919050565b7f6d756c546573743a207465737420333220626974732077697468207363616c6160008201527f72206661696c6564000000000000000000000000000000000000000000000000602082015250565b600061533a602883615065565b9150615345826152de565b604082019050919050565b600060208201905081810360008301526153698161532d565b9050919050565b7f6d756c546573743a207465737420363420626974732077697468207363616c6160008201527f72206661696c6564000000000000000000000000000000000000000000000000602082015250565b60006153cc602883615065565b91506153d782615370565b604082019050919050565b600060208201905081810360008301526153fb816153bf565b9050919050565b7f64656372797074416e64436f6d70617265416c6c526573756c74733a2046616960008201527f6c656420746f206465637279707420616e6420636f6d7061726520616c6c207260208201527f6573756c74730000000000000000000000000000000000000000000000000000604082015250565b6000615484604683615065565b915061548f82615402565b606082019050919050565b600060208201905081810360008301526154b381615477565b9050919050565b7f737562546573743a2063617374203136206661696c6564000000000000000000600082015250565b60006154f0601783615065565b91506154fb826154ba565b602082019050919050565b6000602082019050818103600083015261551f816154e3565b9050919050565b7f737562546573743a2063617374203332206661696c6564000000000000000000600082015250565b600061555c601783615065565b915061556782615526565b602082019050919050565b6000602082019050818103600083015261558b8161554f565b9050919050565b7f737562546573743a2063617374203634206661696c6564000000000000000000600082015250565b60006155c8601783615065565b91506155d382615592565b602082019050919050565b600060208201905081810360008301526155f7816155bb565b9050919050565b7f737562546573743a2074657374203820626974732077697468207363616c617260008201527f206661696c656400000000000000000000000000000000000000000000000000602082015250565b600061565a602783615065565b9150615665826155fe565b604082019050919050565b600060208201905081810360008301526156898161564d565b9050919050565b7f737562546573743a207465737420313620626974732077697468207363616c6160008201527f72206661696c6564000000000000000000000000000000000000000000000000602082015250565b60006156ec602883615065565b91506156f782615690565b604082019050919050565b6000602082019050818103600083015261571b816156df565b9050919050565b7f737562546573743a207465737420333220626974732077697468207363616c6160008201527f72206661696c6564000000000000000000000000000000000000000000000000602082015250565b600061577e602883615065565b915061578982615722565b604082019050919050565b600060208201905081810360008301526157ad81615771565b9050919050565b7f737562546573743a207465737420363420626974732077697468207363616c6160008201527f72206661696c6564000000000000000000000000000000000000000000000000602082015250565b6000615810602883615065565b915061581b826157b4565b604082019050919050565b6000602082019050818103600083015261583f81615803565b9050919050565b7f616464546573743a2063617374203136206661696c6564000000000000000000600082015250565b600061587c601783615065565b915061588782615846565b602082019050919050565b600060208201905081810360008301526158ab8161586f565b9050919050565b7f616464546573743a2063617374203332206661696c6564000000000000000000600082015250565b60006158e8601783615065565b91506158f3826158b2565b602082019050919050565b60006020820190508181036000830152615917816158db565b9050919050565b7f616464546573743a2063617374203634206661696c6564000000000000000000600082015250565b6000615954601783615065565b915061595f8261591e565b602082019050919050565b6000602082019050818103600083015261598381615947565b9050919050565b7f616464546573743a2074657374203820626974732077697468207363616c617260008201527f206661696c656400000000000000000000000000000000000000000000000000602082015250565b60006159e6602783615065565b91506159f18261598a565b604082019050919050565b60006020820190508181036000830152615a15816159d9565b9050919050565b7f616464546573743a207465737420313620626974732077697468207363616c6160008201527f72206661696c6564000000000000000000000000000000000000000000000000602082015250565b6000615a78602883615065565b9150615a8382615a1c565b604082019050919050565b60006020820190508181036000830152615aa781615a6b565b9050919050565b7f616464546573743a207465737420333220626974732077697468207363616c6160008201527f72206661696c6564000000000000000000000000000000000000000000000000602082015250565b6000615b0a602883615065565b9150615b1582615aae565b604082019050919050565b60006020820190508181036000830152615b3981615afd565b9050919050565b7f616464546573743a207465737420363420626974732077697468207363616c6160008201527f72206661696c6564000000000000000000000000000000000000000000000000602082015250565b6000615b9c602883615065565b9150615ba782615b40565b604082019050919050565b60006020820190508181036000830152615bcb81615b8f565b9050919050565b60007fffffff000000000000000000000000000000000000000000000000000000000082169050919050565b615c0781615bd2565b82525050565b615c1681614bbe565b82525050565b6000606082019050615c316000830186615bfe565b615c3e6020830185615c0d565b615c4b6040830184615c0d565b949350505050565b615c5c81614bbe565b8114615c6757600080fd5b50565b600081519050615c7981615c53565b92915050565b600060208284031215615c9557615c94614a77565b5b6000615ca384828501615c6a565b91505092915050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602160045260246000fd5b60007fff0000000000000000000000000000000000000000000000000000000000000082169050919050565b615d1081615cdb565b82525050565b6000604082019050615d2b6000830185615d07565b615d386020830184615c0d565b939250505056fea26469706673582212203b298bd31f413b95437387420b618b938befb55d7b96889d1a8add32386fa8f064736f6c63430008140033";
323
+
324
+ type ArithmeticTestsContractConstructorParams =
325
+ | [signer?: Signer]
326
+ | ConstructorParameters<typeof ContractFactory>;
327
+
328
+ const isSuperArgs = (
329
+ xs: ArithmeticTestsContractConstructorParams
330
+ ): xs is ConstructorParameters<typeof ContractFactory> => xs.length > 1;
331
+
332
+ export class ArithmeticTestsContract__factory extends ContractFactory {
333
+ constructor(...args: ArithmeticTestsContractConstructorParams) {
334
+ if (isSuperArgs(args)) {
335
+ super(...args);
336
+ } else {
337
+ super(_abi, _bytecode, args[0]);
338
+ }
339
+ }
340
+
341
+ override getDeployTransaction(
342
+ overrides?: NonPayableOverrides & { from?: string }
343
+ ): Promise<ContractDeployTransaction> {
344
+ return super.getDeployTransaction(overrides || {});
345
+ }
346
+ override deploy(overrides?: NonPayableOverrides & { from?: string }) {
347
+ return super.deploy(overrides || {}) as Promise<
348
+ ArithmeticTestsContract & {
349
+ deploymentTransaction(): ContractTransactionResponse;
350
+ }
351
+ >;
352
+ }
353
+ override connect(
354
+ runner: ContractRunner | null
355
+ ): ArithmeticTestsContract__factory {
356
+ return super.connect(runner) as ArithmeticTestsContract__factory;
357
+ }
358
+
359
+ static readonly bytecode = _bytecode;
360
+ static readonly abi = _abi;
361
+ static createInterface(): ArithmeticTestsContractInterface {
362
+ return new Interface(_abi) as ArithmeticTestsContractInterface;
363
+ }
364
+ static connect(
365
+ address: string,
366
+ runner?: ContractRunner | null
367
+ ): ArithmeticTestsContract {
368
+ return new Contract(
369
+ address,
370
+ _abi,
371
+ runner
372
+ ) as unknown as ArithmeticTestsContract;
373
+ }
374
+ }