@zkpassport/sdk 0.11.0 → 0.12.1
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/cjs/index.cjs +2 -4785
- package/dist/cjs/index.d.cts +207 -9
- package/dist/esm/index.d.ts +207 -9
- package/dist/esm/index.js +2 -629
- package/package.json +17 -8
- package/dist/cjs/constants.cjs +0 -48
- package/dist/cjs/constants.d.cts +0 -9
- package/dist/cjs/logger.cjs +0 -47
- package/dist/cjs/logger.d.cts +0 -14
- package/dist/cjs/public-input-checker.cjs +0 -2151
- package/dist/cjs/public-input-checker.d.cts +0 -70
- package/dist/cjs/solidity-verifier.cjs +0 -2033
- package/dist/cjs/solidity-verifier.d.cts +0 -32
- package/dist/cjs/types.cjs +0 -18
- package/dist/cjs/types.d.cts +0 -208
- package/dist/esm/chunk-6F4PWJZI.js +0 -0
- package/dist/esm/chunk-AFLQN3AC.js +0 -22
- package/dist/esm/chunk-B57NBZWJ.js +0 -18
- package/dist/esm/chunk-KUTKOI3P.js +0 -2018
- package/dist/esm/chunk-N322IQZC.js +0 -2177
- package/dist/esm/constants.d.ts +0 -9
- package/dist/esm/constants.js +0 -18
- package/dist/esm/logger.d.ts +0 -14
- package/dist/esm/logger.js +0 -8
- package/dist/esm/public-input-checker.d.ts +0 -70
- package/dist/esm/public-input-checker.js +0 -7
- package/dist/esm/solidity-verifier.d.ts +0 -32
- package/dist/esm/solidity-verifier.js +0 -7
- package/dist/esm/types.d.ts +0 -208
- package/dist/esm/types.js +0 -1
|
@@ -1,2018 +0,0 @@
|
|
|
1
|
-
import {
|
|
2
|
-
DEFAULT_VALIDITY
|
|
3
|
-
} from "./chunk-B57NBZWJ.js";
|
|
4
|
-
|
|
5
|
-
// src/solidity-verifier.ts
|
|
6
|
-
import {
|
|
7
|
-
formatBoundData,
|
|
8
|
-
getCommittedInputCount,
|
|
9
|
-
getNumberOfPublicInputs,
|
|
10
|
-
getParamCommitmentsFromOuterProof,
|
|
11
|
-
getProofData,
|
|
12
|
-
numberToBytesBE,
|
|
13
|
-
ProofType,
|
|
14
|
-
ProofTypeLength,
|
|
15
|
-
rightPadArrayWithZeros
|
|
16
|
-
} from "@zkpassport/utils";
|
|
17
|
-
import { sha256 } from "@noble/hashes/sha2";
|
|
18
|
-
import { bytesToHex, hexToBytes } from "@noble/hashes/utils";
|
|
19
|
-
|
|
20
|
-
// src/assets/abi/ZKPassportVerifier.json
|
|
21
|
-
var ZKPassportVerifier_default = {
|
|
22
|
-
abi: [
|
|
23
|
-
{
|
|
24
|
-
type: "constructor",
|
|
25
|
-
inputs: [{ name: "_rootRegistry", type: "address", internalType: "address" }],
|
|
26
|
-
stateMutability: "nonpayable"
|
|
27
|
-
},
|
|
28
|
-
{
|
|
29
|
-
type: "function",
|
|
30
|
-
name: "CERTIFICATE_REGISTRY_ID",
|
|
31
|
-
inputs: [],
|
|
32
|
-
outputs: [{ name: "", type: "bytes32", internalType: "bytes32" }],
|
|
33
|
-
stateMutability: "view"
|
|
34
|
-
},
|
|
35
|
-
{
|
|
36
|
-
type: "function",
|
|
37
|
-
name: "CIRCUIT_REGISTRY_ID",
|
|
38
|
-
inputs: [],
|
|
39
|
-
outputs: [{ name: "", type: "bytes32", internalType: "bytes32" }],
|
|
40
|
-
stateMutability: "view"
|
|
41
|
-
},
|
|
42
|
-
{
|
|
43
|
-
type: "function",
|
|
44
|
-
name: "SANCTIONS_REGISTRY_ID",
|
|
45
|
-
inputs: [],
|
|
46
|
-
outputs: [{ name: "", type: "bytes32", internalType: "bytes32" }],
|
|
47
|
-
stateMutability: "view"
|
|
48
|
-
},
|
|
49
|
-
{
|
|
50
|
-
type: "function",
|
|
51
|
-
name: "addVerifiers",
|
|
52
|
-
inputs: [
|
|
53
|
-
{ name: "vkeyHashes", type: "bytes32[]", internalType: "bytes32[]" },
|
|
54
|
-
{ name: "verifiers", type: "address[]", internalType: "address[]" }
|
|
55
|
-
],
|
|
56
|
-
outputs: [],
|
|
57
|
-
stateMutability: "nonpayable"
|
|
58
|
-
},
|
|
59
|
-
{
|
|
60
|
-
type: "function",
|
|
61
|
-
name: "admin",
|
|
62
|
-
inputs: [],
|
|
63
|
-
outputs: [{ name: "", type: "address", internalType: "address" }],
|
|
64
|
-
stateMutability: "view"
|
|
65
|
-
},
|
|
66
|
-
{
|
|
67
|
-
type: "function",
|
|
68
|
-
name: "enforceSanctionsRoot",
|
|
69
|
-
inputs: [
|
|
70
|
-
{ name: "isStrict", type: "bool", internalType: "bool" },
|
|
71
|
-
{
|
|
72
|
-
name: "commitments",
|
|
73
|
-
type: "tuple",
|
|
74
|
-
internalType: "struct Commitments",
|
|
75
|
-
components: [{ name: "committedInputs", type: "bytes", internalType: "bytes" }]
|
|
76
|
-
}
|
|
77
|
-
],
|
|
78
|
-
outputs: [],
|
|
79
|
-
stateMutability: "view"
|
|
80
|
-
},
|
|
81
|
-
{
|
|
82
|
-
type: "function",
|
|
83
|
-
name: "getBoundData",
|
|
84
|
-
inputs: [
|
|
85
|
-
{
|
|
86
|
-
name: "commitments",
|
|
87
|
-
type: "tuple",
|
|
88
|
-
internalType: "struct Commitments",
|
|
89
|
-
components: [{ name: "committedInputs", type: "bytes", internalType: "bytes" }]
|
|
90
|
-
}
|
|
91
|
-
],
|
|
92
|
-
outputs: [
|
|
93
|
-
{
|
|
94
|
-
name: "boundData",
|
|
95
|
-
type: "tuple",
|
|
96
|
-
internalType: "struct BoundData",
|
|
97
|
-
components: [
|
|
98
|
-
{ name: "senderAddress", type: "address", internalType: "address" },
|
|
99
|
-
{ name: "chainId", type: "uint256", internalType: "uint256" },
|
|
100
|
-
{ name: "customData", type: "string", internalType: "string" }
|
|
101
|
-
]
|
|
102
|
-
}
|
|
103
|
-
],
|
|
104
|
-
stateMutability: "pure"
|
|
105
|
-
},
|
|
106
|
-
{
|
|
107
|
-
type: "function",
|
|
108
|
-
name: "getDisclosedData",
|
|
109
|
-
inputs: [
|
|
110
|
-
{
|
|
111
|
-
name: "commitments",
|
|
112
|
-
type: "tuple",
|
|
113
|
-
internalType: "struct Commitments",
|
|
114
|
-
components: [{ name: "committedInputs", type: "bytes", internalType: "bytes" }]
|
|
115
|
-
},
|
|
116
|
-
{ name: "isIDCard", type: "bool", internalType: "bool" }
|
|
117
|
-
],
|
|
118
|
-
outputs: [
|
|
119
|
-
{
|
|
120
|
-
name: "disclosedData",
|
|
121
|
-
type: "tuple",
|
|
122
|
-
internalType: "struct DisclosedData",
|
|
123
|
-
components: [
|
|
124
|
-
{ name: "name", type: "string", internalType: "string" },
|
|
125
|
-
{ name: "issuingCountry", type: "string", internalType: "string" },
|
|
126
|
-
{ name: "nationality", type: "string", internalType: "string" },
|
|
127
|
-
{ name: "gender", type: "string", internalType: "string" },
|
|
128
|
-
{ name: "birthDate", type: "string", internalType: "string" },
|
|
129
|
-
{ name: "expiryDate", type: "string", internalType: "string" },
|
|
130
|
-
{ name: "documentNumber", type: "string", internalType: "string" },
|
|
131
|
-
{ name: "documentType", type: "string", internalType: "string" }
|
|
132
|
-
]
|
|
133
|
-
}
|
|
134
|
-
],
|
|
135
|
-
stateMutability: "pure"
|
|
136
|
-
},
|
|
137
|
-
{
|
|
138
|
-
type: "function",
|
|
139
|
-
name: "isAgeAbove",
|
|
140
|
-
inputs: [
|
|
141
|
-
{ name: "minAge", type: "uint8", internalType: "uint8" },
|
|
142
|
-
{
|
|
143
|
-
name: "commitments",
|
|
144
|
-
type: "tuple",
|
|
145
|
-
internalType: "struct Commitments",
|
|
146
|
-
components: [{ name: "committedInputs", type: "bytes", internalType: "bytes" }]
|
|
147
|
-
}
|
|
148
|
-
],
|
|
149
|
-
outputs: [{ name: "", type: "bool", internalType: "bool" }],
|
|
150
|
-
stateMutability: "view"
|
|
151
|
-
},
|
|
152
|
-
{
|
|
153
|
-
type: "function",
|
|
154
|
-
name: "isAgeAboveOrEqual",
|
|
155
|
-
inputs: [
|
|
156
|
-
{ name: "minAge", type: "uint8", internalType: "uint8" },
|
|
157
|
-
{
|
|
158
|
-
name: "commitments",
|
|
159
|
-
type: "tuple",
|
|
160
|
-
internalType: "struct Commitments",
|
|
161
|
-
components: [{ name: "committedInputs", type: "bytes", internalType: "bytes" }]
|
|
162
|
-
}
|
|
163
|
-
],
|
|
164
|
-
outputs: [{ name: "", type: "bool", internalType: "bool" }],
|
|
165
|
-
stateMutability: "view"
|
|
166
|
-
},
|
|
167
|
-
{
|
|
168
|
-
type: "function",
|
|
169
|
-
name: "isAgeBelow",
|
|
170
|
-
inputs: [
|
|
171
|
-
{ name: "maxAge", type: "uint8", internalType: "uint8" },
|
|
172
|
-
{
|
|
173
|
-
name: "commitments",
|
|
174
|
-
type: "tuple",
|
|
175
|
-
internalType: "struct Commitments",
|
|
176
|
-
components: [{ name: "committedInputs", type: "bytes", internalType: "bytes" }]
|
|
177
|
-
}
|
|
178
|
-
],
|
|
179
|
-
outputs: [{ name: "", type: "bool", internalType: "bool" }],
|
|
180
|
-
stateMutability: "view"
|
|
181
|
-
},
|
|
182
|
-
{
|
|
183
|
-
type: "function",
|
|
184
|
-
name: "isAgeBelowOrEqual",
|
|
185
|
-
inputs: [
|
|
186
|
-
{ name: "maxAge", type: "uint8", internalType: "uint8" },
|
|
187
|
-
{
|
|
188
|
-
name: "commitments",
|
|
189
|
-
type: "tuple",
|
|
190
|
-
internalType: "struct Commitments",
|
|
191
|
-
components: [{ name: "committedInputs", type: "bytes", internalType: "bytes" }]
|
|
192
|
-
}
|
|
193
|
-
],
|
|
194
|
-
outputs: [{ name: "", type: "bool", internalType: "bool" }],
|
|
195
|
-
stateMutability: "view"
|
|
196
|
-
},
|
|
197
|
-
{
|
|
198
|
-
type: "function",
|
|
199
|
-
name: "isAgeBetween",
|
|
200
|
-
inputs: [
|
|
201
|
-
{ name: "minAge", type: "uint8", internalType: "uint8" },
|
|
202
|
-
{ name: "maxAge", type: "uint8", internalType: "uint8" },
|
|
203
|
-
{
|
|
204
|
-
name: "commitments",
|
|
205
|
-
type: "tuple",
|
|
206
|
-
internalType: "struct Commitments",
|
|
207
|
-
components: [{ name: "committedInputs", type: "bytes", internalType: "bytes" }]
|
|
208
|
-
}
|
|
209
|
-
],
|
|
210
|
-
outputs: [{ name: "", type: "bool", internalType: "bool" }],
|
|
211
|
-
stateMutability: "view"
|
|
212
|
-
},
|
|
213
|
-
{
|
|
214
|
-
type: "function",
|
|
215
|
-
name: "isAgeEqual",
|
|
216
|
-
inputs: [
|
|
217
|
-
{ name: "age", type: "uint8", internalType: "uint8" },
|
|
218
|
-
{
|
|
219
|
-
name: "commitments",
|
|
220
|
-
type: "tuple",
|
|
221
|
-
internalType: "struct Commitments",
|
|
222
|
-
components: [{ name: "committedInputs", type: "bytes", internalType: "bytes" }]
|
|
223
|
-
}
|
|
224
|
-
],
|
|
225
|
-
outputs: [{ name: "", type: "bool", internalType: "bool" }],
|
|
226
|
-
stateMutability: "view"
|
|
227
|
-
},
|
|
228
|
-
{
|
|
229
|
-
type: "function",
|
|
230
|
-
name: "isBirthdateAfter",
|
|
231
|
-
inputs: [
|
|
232
|
-
{ name: "minDate", type: "uint256", internalType: "uint256" },
|
|
233
|
-
{
|
|
234
|
-
name: "commitments",
|
|
235
|
-
type: "tuple",
|
|
236
|
-
internalType: "struct Commitments",
|
|
237
|
-
components: [{ name: "committedInputs", type: "bytes", internalType: "bytes" }]
|
|
238
|
-
}
|
|
239
|
-
],
|
|
240
|
-
outputs: [{ name: "", type: "bool", internalType: "bool" }],
|
|
241
|
-
stateMutability: "view"
|
|
242
|
-
},
|
|
243
|
-
{
|
|
244
|
-
type: "function",
|
|
245
|
-
name: "isBirthdateAfterOrEqual",
|
|
246
|
-
inputs: [
|
|
247
|
-
{ name: "minDate", type: "uint256", internalType: "uint256" },
|
|
248
|
-
{
|
|
249
|
-
name: "commitments",
|
|
250
|
-
type: "tuple",
|
|
251
|
-
internalType: "struct Commitments",
|
|
252
|
-
components: [{ name: "committedInputs", type: "bytes", internalType: "bytes" }]
|
|
253
|
-
}
|
|
254
|
-
],
|
|
255
|
-
outputs: [{ name: "", type: "bool", internalType: "bool" }],
|
|
256
|
-
stateMutability: "view"
|
|
257
|
-
},
|
|
258
|
-
{
|
|
259
|
-
type: "function",
|
|
260
|
-
name: "isBirthdateBefore",
|
|
261
|
-
inputs: [
|
|
262
|
-
{ name: "maxDate", type: "uint256", internalType: "uint256" },
|
|
263
|
-
{
|
|
264
|
-
name: "commitments",
|
|
265
|
-
type: "tuple",
|
|
266
|
-
internalType: "struct Commitments",
|
|
267
|
-
components: [{ name: "committedInputs", type: "bytes", internalType: "bytes" }]
|
|
268
|
-
}
|
|
269
|
-
],
|
|
270
|
-
outputs: [{ name: "", type: "bool", internalType: "bool" }],
|
|
271
|
-
stateMutability: "view"
|
|
272
|
-
},
|
|
273
|
-
{
|
|
274
|
-
type: "function",
|
|
275
|
-
name: "isBirthdateBeforeOrEqual",
|
|
276
|
-
inputs: [
|
|
277
|
-
{ name: "maxDate", type: "uint256", internalType: "uint256" },
|
|
278
|
-
{
|
|
279
|
-
name: "commitments",
|
|
280
|
-
type: "tuple",
|
|
281
|
-
internalType: "struct Commitments",
|
|
282
|
-
components: [{ name: "committedInputs", type: "bytes", internalType: "bytes" }]
|
|
283
|
-
}
|
|
284
|
-
],
|
|
285
|
-
outputs: [{ name: "", type: "bool", internalType: "bool" }],
|
|
286
|
-
stateMutability: "view"
|
|
287
|
-
},
|
|
288
|
-
{
|
|
289
|
-
type: "function",
|
|
290
|
-
name: "isBirthdateBetween",
|
|
291
|
-
inputs: [
|
|
292
|
-
{ name: "minDate", type: "uint256", internalType: "uint256" },
|
|
293
|
-
{ name: "maxDate", type: "uint256", internalType: "uint256" },
|
|
294
|
-
{
|
|
295
|
-
name: "commitments",
|
|
296
|
-
type: "tuple",
|
|
297
|
-
internalType: "struct Commitments",
|
|
298
|
-
components: [{ name: "committedInputs", type: "bytes", internalType: "bytes" }]
|
|
299
|
-
}
|
|
300
|
-
],
|
|
301
|
-
outputs: [{ name: "", type: "bool", internalType: "bool" }],
|
|
302
|
-
stateMutability: "view"
|
|
303
|
-
},
|
|
304
|
-
{
|
|
305
|
-
type: "function",
|
|
306
|
-
name: "isBirthdateEqual",
|
|
307
|
-
inputs: [
|
|
308
|
-
{ name: "date", type: "uint256", internalType: "uint256" },
|
|
309
|
-
{
|
|
310
|
-
name: "commitments",
|
|
311
|
-
type: "tuple",
|
|
312
|
-
internalType: "struct Commitments",
|
|
313
|
-
components: [{ name: "committedInputs", type: "bytes", internalType: "bytes" }]
|
|
314
|
-
}
|
|
315
|
-
],
|
|
316
|
-
outputs: [{ name: "", type: "bool", internalType: "bool" }],
|
|
317
|
-
stateMutability: "view"
|
|
318
|
-
},
|
|
319
|
-
{
|
|
320
|
-
type: "function",
|
|
321
|
-
name: "isExpiryDateAfter",
|
|
322
|
-
inputs: [
|
|
323
|
-
{ name: "minDate", type: "uint256", internalType: "uint256" },
|
|
324
|
-
{
|
|
325
|
-
name: "commitments",
|
|
326
|
-
type: "tuple",
|
|
327
|
-
internalType: "struct Commitments",
|
|
328
|
-
components: [{ name: "committedInputs", type: "bytes", internalType: "bytes" }]
|
|
329
|
-
}
|
|
330
|
-
],
|
|
331
|
-
outputs: [{ name: "", type: "bool", internalType: "bool" }],
|
|
332
|
-
stateMutability: "view"
|
|
333
|
-
},
|
|
334
|
-
{
|
|
335
|
-
type: "function",
|
|
336
|
-
name: "isExpiryDateAfterOrEqual",
|
|
337
|
-
inputs: [
|
|
338
|
-
{ name: "minDate", type: "uint256", internalType: "uint256" },
|
|
339
|
-
{
|
|
340
|
-
name: "commitments",
|
|
341
|
-
type: "tuple",
|
|
342
|
-
internalType: "struct Commitments",
|
|
343
|
-
components: [{ name: "committedInputs", type: "bytes", internalType: "bytes" }]
|
|
344
|
-
}
|
|
345
|
-
],
|
|
346
|
-
outputs: [{ name: "", type: "bool", internalType: "bool" }],
|
|
347
|
-
stateMutability: "view"
|
|
348
|
-
},
|
|
349
|
-
{
|
|
350
|
-
type: "function",
|
|
351
|
-
name: "isExpiryDateBefore",
|
|
352
|
-
inputs: [
|
|
353
|
-
{ name: "maxDate", type: "uint256", internalType: "uint256" },
|
|
354
|
-
{
|
|
355
|
-
name: "commitments",
|
|
356
|
-
type: "tuple",
|
|
357
|
-
internalType: "struct Commitments",
|
|
358
|
-
components: [{ name: "committedInputs", type: "bytes", internalType: "bytes" }]
|
|
359
|
-
}
|
|
360
|
-
],
|
|
361
|
-
outputs: [{ name: "", type: "bool", internalType: "bool" }],
|
|
362
|
-
stateMutability: "view"
|
|
363
|
-
},
|
|
364
|
-
{
|
|
365
|
-
type: "function",
|
|
366
|
-
name: "isExpiryDateBeforeOrEqual",
|
|
367
|
-
inputs: [
|
|
368
|
-
{ name: "maxDate", type: "uint256", internalType: "uint256" },
|
|
369
|
-
{
|
|
370
|
-
name: "commitments",
|
|
371
|
-
type: "tuple",
|
|
372
|
-
internalType: "struct Commitments",
|
|
373
|
-
components: [{ name: "committedInputs", type: "bytes", internalType: "bytes" }]
|
|
374
|
-
}
|
|
375
|
-
],
|
|
376
|
-
outputs: [{ name: "", type: "bool", internalType: "bool" }],
|
|
377
|
-
stateMutability: "view"
|
|
378
|
-
},
|
|
379
|
-
{
|
|
380
|
-
type: "function",
|
|
381
|
-
name: "isExpiryDateBetween",
|
|
382
|
-
inputs: [
|
|
383
|
-
{ name: "minDate", type: "uint256", internalType: "uint256" },
|
|
384
|
-
{ name: "maxDate", type: "uint256", internalType: "uint256" },
|
|
385
|
-
{
|
|
386
|
-
name: "commitments",
|
|
387
|
-
type: "tuple",
|
|
388
|
-
internalType: "struct Commitments",
|
|
389
|
-
components: [{ name: "committedInputs", type: "bytes", internalType: "bytes" }]
|
|
390
|
-
}
|
|
391
|
-
],
|
|
392
|
-
outputs: [{ name: "", type: "bool", internalType: "bool" }],
|
|
393
|
-
stateMutability: "view"
|
|
394
|
-
},
|
|
395
|
-
{
|
|
396
|
-
type: "function",
|
|
397
|
-
name: "isExpiryDateEqual",
|
|
398
|
-
inputs: [
|
|
399
|
-
{ name: "date", type: "uint256", internalType: "uint256" },
|
|
400
|
-
{
|
|
401
|
-
name: "commitments",
|
|
402
|
-
type: "tuple",
|
|
403
|
-
internalType: "struct Commitments",
|
|
404
|
-
components: [{ name: "committedInputs", type: "bytes", internalType: "bytes" }]
|
|
405
|
-
}
|
|
406
|
-
],
|
|
407
|
-
outputs: [{ name: "", type: "bool", internalType: "bool" }],
|
|
408
|
-
stateMutability: "view"
|
|
409
|
-
},
|
|
410
|
-
{
|
|
411
|
-
type: "function",
|
|
412
|
-
name: "isFaceMatchVerified",
|
|
413
|
-
inputs: [
|
|
414
|
-
{ name: "faceMatchMode", type: "uint8", internalType: "enum FaceMatchMode" },
|
|
415
|
-
{ name: "os", type: "uint8", internalType: "enum OS" },
|
|
416
|
-
{
|
|
417
|
-
name: "commitments",
|
|
418
|
-
type: "tuple",
|
|
419
|
-
internalType: "struct Commitments",
|
|
420
|
-
components: [{ name: "committedInputs", type: "bytes", internalType: "bytes" }]
|
|
421
|
-
}
|
|
422
|
-
],
|
|
423
|
-
outputs: [{ name: "", type: "bool", internalType: "bool" }],
|
|
424
|
-
stateMutability: "pure"
|
|
425
|
-
},
|
|
426
|
-
{
|
|
427
|
-
type: "function",
|
|
428
|
-
name: "isIssuingCountryIn",
|
|
429
|
-
inputs: [
|
|
430
|
-
{ name: "countryList", type: "string[]", internalType: "string[]" },
|
|
431
|
-
{
|
|
432
|
-
name: "commitments",
|
|
433
|
-
type: "tuple",
|
|
434
|
-
internalType: "struct Commitments",
|
|
435
|
-
components: [{ name: "committedInputs", type: "bytes", internalType: "bytes" }]
|
|
436
|
-
}
|
|
437
|
-
],
|
|
438
|
-
outputs: [{ name: "", type: "bool", internalType: "bool" }],
|
|
439
|
-
stateMutability: "pure"
|
|
440
|
-
},
|
|
441
|
-
{
|
|
442
|
-
type: "function",
|
|
443
|
-
name: "isIssuingCountryOut",
|
|
444
|
-
inputs: [
|
|
445
|
-
{ name: "countryList", type: "string[]", internalType: "string[]" },
|
|
446
|
-
{
|
|
447
|
-
name: "commitments",
|
|
448
|
-
type: "tuple",
|
|
449
|
-
internalType: "struct Commitments",
|
|
450
|
-
components: [{ name: "committedInputs", type: "bytes", internalType: "bytes" }]
|
|
451
|
-
}
|
|
452
|
-
],
|
|
453
|
-
outputs: [{ name: "", type: "bool", internalType: "bool" }],
|
|
454
|
-
stateMutability: "pure"
|
|
455
|
-
},
|
|
456
|
-
{
|
|
457
|
-
type: "function",
|
|
458
|
-
name: "isNationalityIn",
|
|
459
|
-
inputs: [
|
|
460
|
-
{ name: "countryList", type: "string[]", internalType: "string[]" },
|
|
461
|
-
{
|
|
462
|
-
name: "commitments",
|
|
463
|
-
type: "tuple",
|
|
464
|
-
internalType: "struct Commitments",
|
|
465
|
-
components: [{ name: "committedInputs", type: "bytes", internalType: "bytes" }]
|
|
466
|
-
}
|
|
467
|
-
],
|
|
468
|
-
outputs: [{ name: "", type: "bool", internalType: "bool" }],
|
|
469
|
-
stateMutability: "pure"
|
|
470
|
-
},
|
|
471
|
-
{
|
|
472
|
-
type: "function",
|
|
473
|
-
name: "isNationalityOut",
|
|
474
|
-
inputs: [
|
|
475
|
-
{ name: "countryList", type: "string[]", internalType: "string[]" },
|
|
476
|
-
{
|
|
477
|
-
name: "commitments",
|
|
478
|
-
type: "tuple",
|
|
479
|
-
internalType: "struct Commitments",
|
|
480
|
-
components: [{ name: "committedInputs", type: "bytes", internalType: "bytes" }]
|
|
481
|
-
}
|
|
482
|
-
],
|
|
483
|
-
outputs: [{ name: "", type: "bool", internalType: "bool" }],
|
|
484
|
-
stateMutability: "pure"
|
|
485
|
-
},
|
|
486
|
-
{
|
|
487
|
-
type: "function",
|
|
488
|
-
name: "paused",
|
|
489
|
-
inputs: [],
|
|
490
|
-
outputs: [{ name: "", type: "bool", internalType: "bool" }],
|
|
491
|
-
stateMutability: "view"
|
|
492
|
-
},
|
|
493
|
-
{
|
|
494
|
-
type: "function",
|
|
495
|
-
name: "removeVerifiers",
|
|
496
|
-
inputs: [{ name: "vkeyHashes", type: "bytes32[]", internalType: "bytes32[]" }],
|
|
497
|
-
outputs: [],
|
|
498
|
-
stateMutability: "nonpayable"
|
|
499
|
-
},
|
|
500
|
-
{
|
|
501
|
-
type: "function",
|
|
502
|
-
name: "rootRegistry",
|
|
503
|
-
inputs: [],
|
|
504
|
-
outputs: [{ name: "", type: "address", internalType: "contract IRootRegistry" }],
|
|
505
|
-
stateMutability: "view"
|
|
506
|
-
},
|
|
507
|
-
{
|
|
508
|
-
type: "function",
|
|
509
|
-
name: "setPaused",
|
|
510
|
-
inputs: [{ name: "_paused", type: "bool", internalType: "bool" }],
|
|
511
|
-
outputs: [],
|
|
512
|
-
stateMutability: "nonpayable"
|
|
513
|
-
},
|
|
514
|
-
{
|
|
515
|
-
type: "function",
|
|
516
|
-
name: "transferAdmin",
|
|
517
|
-
inputs: [{ name: "newAdmin", type: "address", internalType: "address" }],
|
|
518
|
-
outputs: [],
|
|
519
|
-
stateMutability: "nonpayable"
|
|
520
|
-
},
|
|
521
|
-
{
|
|
522
|
-
type: "function",
|
|
523
|
-
name: "updateRootRegistry",
|
|
524
|
-
inputs: [{ name: "_rootRegistry", type: "address", internalType: "address" }],
|
|
525
|
-
outputs: [],
|
|
526
|
-
stateMutability: "nonpayable"
|
|
527
|
-
},
|
|
528
|
-
{
|
|
529
|
-
type: "function",
|
|
530
|
-
name: "verifyProof",
|
|
531
|
-
inputs: [
|
|
532
|
-
{
|
|
533
|
-
name: "params",
|
|
534
|
-
type: "tuple",
|
|
535
|
-
internalType: "struct ProofVerificationParams",
|
|
536
|
-
components: [
|
|
537
|
-
{
|
|
538
|
-
name: "proofVerificationData",
|
|
539
|
-
type: "tuple",
|
|
540
|
-
internalType: "struct ProofVerificationData",
|
|
541
|
-
components: [
|
|
542
|
-
{ name: "vkeyHash", type: "bytes32", internalType: "bytes32" },
|
|
543
|
-
{ name: "proof", type: "bytes", internalType: "bytes" },
|
|
544
|
-
{ name: "publicInputs", type: "bytes32[]", internalType: "bytes32[]" }
|
|
545
|
-
]
|
|
546
|
-
},
|
|
547
|
-
{
|
|
548
|
-
name: "commitments",
|
|
549
|
-
type: "tuple",
|
|
550
|
-
internalType: "struct Commitments",
|
|
551
|
-
components: [
|
|
552
|
-
{ name: "committedInputs", type: "bytes", internalType: "bytes" }
|
|
553
|
-
]
|
|
554
|
-
},
|
|
555
|
-
{
|
|
556
|
-
name: "serviceConfig",
|
|
557
|
-
type: "tuple",
|
|
558
|
-
internalType: "struct ServiceConfig",
|
|
559
|
-
components: [
|
|
560
|
-
{ name: "validityPeriodInSeconds", type: "uint256", internalType: "uint256" },
|
|
561
|
-
{ name: "domain", type: "string", internalType: "string" },
|
|
562
|
-
{ name: "scope", type: "string", internalType: "string" },
|
|
563
|
-
{ name: "devMode", type: "bool", internalType: "bool" }
|
|
564
|
-
]
|
|
565
|
-
}
|
|
566
|
-
]
|
|
567
|
-
}
|
|
568
|
-
],
|
|
569
|
-
outputs: [
|
|
570
|
-
{ name: "isValid", type: "bool", internalType: "bool" },
|
|
571
|
-
{ name: "uniqueIdentifier", type: "bytes32", internalType: "bytes32" }
|
|
572
|
-
],
|
|
573
|
-
stateMutability: "view"
|
|
574
|
-
},
|
|
575
|
-
{
|
|
576
|
-
type: "function",
|
|
577
|
-
name: "verifyScopes",
|
|
578
|
-
inputs: [
|
|
579
|
-
{ name: "publicInputs", type: "bytes32[]", internalType: "bytes32[]" },
|
|
580
|
-
{ name: "domain", type: "string", internalType: "string" },
|
|
581
|
-
{ name: "scope", type: "string", internalType: "string" }
|
|
582
|
-
],
|
|
583
|
-
outputs: [{ name: "", type: "bool", internalType: "bool" }],
|
|
584
|
-
stateMutability: "pure"
|
|
585
|
-
},
|
|
586
|
-
{
|
|
587
|
-
type: "function",
|
|
588
|
-
name: "vkeyHashToVerifier",
|
|
589
|
-
inputs: [{ name: "", type: "bytes32", internalType: "bytes32" }],
|
|
590
|
-
outputs: [{ name: "", type: "address", internalType: "address" }],
|
|
591
|
-
stateMutability: "view"
|
|
592
|
-
},
|
|
593
|
-
{
|
|
594
|
-
type: "event",
|
|
595
|
-
name: "AdminUpdated",
|
|
596
|
-
inputs: [
|
|
597
|
-
{ name: "oldAdmin", type: "address", indexed: true, internalType: "address" },
|
|
598
|
-
{ name: "newAdmin", type: "address", indexed: true, internalType: "address" }
|
|
599
|
-
],
|
|
600
|
-
anonymous: false
|
|
601
|
-
},
|
|
602
|
-
{
|
|
603
|
-
type: "event",
|
|
604
|
-
name: "CertificateRegistryRootAdded",
|
|
605
|
-
inputs: [
|
|
606
|
-
{
|
|
607
|
-
name: "certificateRegistryRoot",
|
|
608
|
-
type: "bytes32",
|
|
609
|
-
indexed: true,
|
|
610
|
-
internalType: "bytes32"
|
|
611
|
-
}
|
|
612
|
-
],
|
|
613
|
-
anonymous: false
|
|
614
|
-
},
|
|
615
|
-
{
|
|
616
|
-
type: "event",
|
|
617
|
-
name: "CertificateRegistryRootRemoved",
|
|
618
|
-
inputs: [
|
|
619
|
-
{
|
|
620
|
-
name: "certificateRegistryRoot",
|
|
621
|
-
type: "bytes32",
|
|
622
|
-
indexed: true,
|
|
623
|
-
internalType: "bytes32"
|
|
624
|
-
}
|
|
625
|
-
],
|
|
626
|
-
anonymous: false
|
|
627
|
-
},
|
|
628
|
-
{
|
|
629
|
-
type: "event",
|
|
630
|
-
name: "PausedStatusChanged",
|
|
631
|
-
inputs: [{ name: "paused", type: "bool", indexed: false, internalType: "bool" }],
|
|
632
|
-
anonymous: false
|
|
633
|
-
},
|
|
634
|
-
{
|
|
635
|
-
type: "event",
|
|
636
|
-
name: "SanctionsTreesRootUpdates",
|
|
637
|
-
inputs: [
|
|
638
|
-
{
|
|
639
|
-
name: "_sanctionsTreesRoot",
|
|
640
|
-
type: "bytes32",
|
|
641
|
-
indexed: true,
|
|
642
|
-
internalType: "bytes32"
|
|
643
|
-
}
|
|
644
|
-
],
|
|
645
|
-
anonymous: false
|
|
646
|
-
},
|
|
647
|
-
{
|
|
648
|
-
type: "event",
|
|
649
|
-
name: "VerifierAdded",
|
|
650
|
-
inputs: [
|
|
651
|
-
{ name: "vkeyHash", type: "bytes32", indexed: true, internalType: "bytes32" },
|
|
652
|
-
{ name: "verifier", type: "address", indexed: true, internalType: "address" }
|
|
653
|
-
],
|
|
654
|
-
anonymous: false
|
|
655
|
-
},
|
|
656
|
-
{
|
|
657
|
-
type: "event",
|
|
658
|
-
name: "VerifierRemoved",
|
|
659
|
-
inputs: [
|
|
660
|
-
{ name: "vkeyHash", type: "bytes32", indexed: true, internalType: "bytes32" }
|
|
661
|
-
],
|
|
662
|
-
anonymous: false
|
|
663
|
-
},
|
|
664
|
-
{
|
|
665
|
-
type: "event",
|
|
666
|
-
name: "ZKPassportVerifierDeployed",
|
|
667
|
-
inputs: [
|
|
668
|
-
{ name: "admin", type: "address", indexed: true, internalType: "address" },
|
|
669
|
-
{ name: "timestamp", type: "uint256", indexed: false, internalType: "uint256" }
|
|
670
|
-
],
|
|
671
|
-
anonymous: false
|
|
672
|
-
}
|
|
673
|
-
],
|
|
674
|
-
bytecode: {
|
|
675
|
-
object: "0x608060405234801561000f575f5ffd5b50604051613c34380380613c3483398101604081905261002e916100f6565b6001600160a01b0381166100945760405162461bcd60e51b8152602060048201526024808201527f526f6f742072656769737472792063616e6e6f74206265207a65726f206164646044820152637265737360e01b606482015260840160405180910390fd5b5f8054336001600160a01b03199182168117909255600280549091166001600160a01b0384161790556040514281527ff29b53747ae7121d0958d490ad3d5cf6767119b0fdbd8389d918de3a12cf5a299060200160405180910390a250610123565b5f60208284031215610106575f5ffd5b81516001600160a01b038116811461011c575f5ffd5b9392505050565b613b04806101305f395ff3fe608060405234801561000f575f5ffd5b506004361061023f575f3560e01c806375829def11610135578063a30470b2116100b4578063c17361df11610079578063c17361df1461053e578063d2bbe05f14610551578063e3e6525e14610564578063e8ba670514610577578063f851a4401461058a575f5ffd5b8063a30470b2146104df578063a6df2c01146104f2578063a72a8a4914610505578063b1bab8f214610518578063b96b161c1461052b575f5ffd5b8063822d00f8116100fa578063822d00f814610473578063847755e3146104935780638d6937b8146104a657806390e44dd7146104b95780639facc38a146104cc575f5ffd5b806375829def146103e7578063782f2497146103fa5780637db36adf1461040d5780637f303f26146104205780638163f23114610433575f5ffd5b80634035b41d116101c15780635c975abb116101865780635c975abb1461039157806364ce783d146103a4578063652ba33d146103b75780636c40d5d6146103bf578063712f5e1c146103c7575f5ffd5b80634035b41d1461031857806341a0e2c2146103425780634736a71414610358578063518e9b921461036b5780635c0578431461037e575f5ffd5b806322eb54d51161020757806322eb54d5146102b957806329354ea6146102cc578063307ad1ee146102df5780633a1e38bd146102f25780633e11569a14610305575f5ffd5b806302298d5614610243578063074bd4e21461026b5780630ed1cb511461028057806316c38b3c1461029357806318677f2a146102a6575b5f5ffd5b610256610251366004612a16565b61059c565b60405190151581526020015b60405180910390f35b61027e610279366004612a66565b6105b2565b005b61025661028e366004612aaa565b610694565b61027e6102a1366004612ac6565b6106fb565b61027e6102b4366004612af5565b61077b565b6102566102c7366004612a16565b610828565b6102566102da366004612b1c565b610841565b6102566102ed366004612aaa565b610b58565b610256610300366004612a16565b610b6d565b610256610313366004612a16565b610b7a565b61032b610326366004612b79565b610b87565b604080519215158352602083019190915201610262565b61034a600181565b604051908152602001610262565b610256610366366004612baf565b61110a565b610256610379366004612a16565b611120565b61025661038c366004612aaa565b61112e565b5f5461025690600160a01b900460ff1681565b6102566103b2366004612aaa565b61113a565b61034a600381565b61034a600281565b6103da6103d5366004612be4565b611241565b6040516102629190612c43565b61027e6103f5366004612af5565b61136c565b610256610408366004612a16565b61143a565b61025661041b366004612d2e565b611448565b61025661042e366004612d2e565b611455565b61045b610441366004612e36565b60016020525f90815260409020546001600160a01b031681565b6040516001600160a01b039091168152602001610262565b610486610481366004612e4d565b611462565b6040516102629190612e9b565b6102566104a1366004613017565b6115a2565b61027e6104b43660046130b3565b61176a565b6102566104c73660046130f1565b61182a565b6102566104da366004612a16565b611a50565b6102566104ed366004612d2e565b611a69565b61027e61050036600461311e565b611a76565b610256610513366004612a16565b611ba0565b610256610526366004612a16565b611bb9565b60025461045b906001600160a01b031681565b61025661054c366004612a16565b611bd2565b61025661055f366004612d2e565b611bdf565b610256610572366004612aaa565b611bec565b610256610585366004612baf565b611cf3565b5f5461045b906001600160a01b031681565b5f6105a983600384611d01565b90505b92915050565b5f5f73__$144f4fe859debe4776cdef2b99f7b97a42$__63a623af24846040518263ffffffff1660e01b81526004016105eb91906131ff565b6040805180830381865af4158015610605573d5f5f3e3d5ffd5b505050506040513d601f19601f820116820180604052508101906106299190613211565b91509150801515841515146106855760405162461bcd60e51b815260206004820152601c60248201527f496e76616c69642073616e6374696f6e7320636865636b206d6f64650000000060448201526064015b60405180910390fd5b61068e82611ec6565b50505050565b5f5f8360ff16116106e75760405162461bcd60e51b815260206004820152601e60248201527f4d617820616765206d7573742062652067726561746572207468616e20300000604482015260640161067c565b6105a96106f5600185613249565b8361113a565b5f546001600160a01b031633146107245760405162461bcd60e51b815260040161067c90613262565b5f8054821515600160a01b0260ff60a01b199091161790556040517f9a506b30e47f3823b09f67e4c0dfa5c3d8023b71825b7ceaa97677129128c9c59061077090831515815260200190565b60405180910390a150565b5f546001600160a01b031633146107a45760405162461bcd60e51b815260040161067c90613262565b6001600160a01b0381166108065760405162461bcd60e51b8152602060048201526024808201527f526f6f742072656769737472792063616e6e6f74206265207a65726f206164646044820152637265737360e01b606482015260840161067c565b600280546001600160a01b0319166001600160a01b0392909216919091179055565b5f6105a96108398462015180613299565b600384611f87565b5f5f5f5f5f5f73__$144f4fe859debe4776cdef2b99f7b97a42$__63defa8ed9886040518263ffffffff1660e01b815260040161087e91906131ff565b60a060405180830381865af4158015610899573d5f5f3e3d5ffd5b505050506040513d601f19601f820116820180604052508101906108bd91906132ac565b9398509196509450925090505f60018560018111156108de576108de613304565b1490505f8a60028111156108f4576108f4613304565b83600281111561090657610906613304565b1490505f7f2532418a107c5306fa8308c22255792cf77e4a290cbce8a840a642a3e591340b88148015610964575060018b600281111561094857610948613304565b148061096457505f8b600281111561096257610962613304565b145b806109c457507f16700a2d9168a194fc85f237af5829b5a2be05b8ae8ac4879ada34cf54a9c211881480156109c4575060028b60028111156109a8576109a8613304565b14806109c457505f8b60028111156109c2576109c2613304565b145b90505f7f1fa73686cf510f8f85757b0602de0dd72a13e68ae2092462be8b72662e7f179b87148015610a21575060018c6002811115610a0557610a05613304565b1480610a2157505f8c6002811115610a1f57610a1f613304565b145b80610a8157507f24d9929b248be7eeecaa98e105c034a50539610f3fdd4cb9c8983ef4100d615d87148015610a81575060028c6002811115610a6557610a65613304565b1480610a8157505f8c6002811115610a7f57610a7f613304565b145b90505f86158015610abd575060018d6002811115610aa157610aa1613304565b1480610abd57505f8d6002811115610abb57610abb613304565b145b80610b1d57507f12e3dc7cc8fec0205b51ff21825630865028f3be5bc64a6eec9ee5e71221319f87148015610b1d575060028d6002811115610b0157610b01613304565b1480610b1d57505f8d6002811115610b1b57610b1b613304565b145b9050848015610b295750835b8015610b325750825b8015610b3b5750815b8015610b445750805b9a50505050505050505050505b9392505050565b5f6105a9610b67846001613318565b83611bec565b5f6105a983600284611d01565b5f6105a983600284611f87565b5f80548190600160a01b900460ff1615610bd85760405162461bcd60e51b815260206004820152601260248201527110dbdb9d1c9858dd081a5cc81c185d5cd95960721b604482015260640161067c565b5f610bec610be68580613331565b3561218b565b9050610c25610bfb8580613331565b610c0990604081019061334f565b5f818110610c1957610c19613394565b905060200201356121e4565b610c5d610c328580613331565b610c4090604081019061334f565b6001818110610c5157610c51613394565b905060200201356122ac565b610cbc610c6a8580613331565b610c7890604081019061334f565b808060200260200160405190810160405280939291908181526020018383602002808284375f92019190915250610cb69250505060408701876133a8565b3561236a565b610d245760405162461bcd60e51b815260206004820152603360248201527f5468652070726f6f66207761732067656e657261746564206f757473696465206044820152721d1a19481d985b1a591a5d1e481c195c9a5bd9606a1b606482015260840161067c565b610d75610d318580613331565b610d3f90604081019061334f565b610d4c60408801886133a8565b610d5a9060208101906133bc565b610d6760408a018a6133a8565b6104a19060408101906133bc565b610dc15760405162461bcd60e51b815260206004820152601760248201527f496e76616c696420646f6d61696e206f722073636f7065000000000000000000604482015260640161067c565b610e54610dce8580613331565b610ddc90604081019061334f565b6005906002610deb8980613331565b610df990604081019061334f565b610e049291506133fe565b92610e1193929190613411565b808060200260200160405190810160405280939291908181526020018383602002808284375f92019190915250610e4f92505050602087018761343c565b612395565b5f610e5f8580613331565b610e6d90604081019061334f565b6002610e798880613331565b610e8790604081019061334f565b610e929291506133fe565b818110610ea157610ea1613394565b905060200201355f1c6003811115610ebb57610ebb613304565b90506002816003811115610ed157610ed1613304565b14158015610ef157506003816003811115610eee57610eee613304565b14155b80610f155750610f0460408601866133a8565b610f15906080810190606001612ac6565b610f725760405162461bcd60e51b815260206004820152602860248201527f4d6f636b2070726f6f667320617265206f6e6c7920616c6c6f77656420696e20604482015267646576206d6f646560c01b606482015260840161067c565b5f816003811115610f8557610f85613304565b1480610faa5750610f9960408601866133a8565b610faa906080810190606001612ac6565b61100a5760405162461bcd60e51b815260206004820152602b60248201527f53616c746564206e756c6c69666965727320617265206e6f7420737570706f7260448201526a74656420666f72206e6f7760a81b606482015260840161067c565b6001600160a01b03821663ea50d0e46110238780613331565b6110319060208101906133bc565b61103b8980613331565b61104990604081019061334f565b6040518563ffffffff1660e01b81526004016110689493929190613450565b602060405180830381865afa158015611083573d5f5f3e3d5ffd5b505050506040513d601f19601f820116820180604052508101906110a7919061349a565b93505f60016110b68780613331565b6110c490604081019061334f565b6110cf9291506133fe565b90506110db8680613331565b6110e990604081019061334f565b828181106110f9576110f9613394565b905060200201359350505050915091565b5f61111884846003856125ce565b949350505050565b5f6105a983846003856125ce565b5f6105a983848461182a565b5f5f5f73__$144f4fe859debe4776cdef2b99f7b97a42$__6384052813856040518263ffffffff1660e01b815260040161117491906131ff565b6040805180830381865af415801561118e573d5f5f3e3d5ffd5b505050506040513d601f19601f820116820180604052508101906111b291906134b5565b915091508160ff165f14611230576040805162461bcd60e51b81526020600482015260248101919091527f5468652070726f6f66206c6f77657220626f756e64206d75737420626520302c60448201527f20706c65617365207573652069734167654265747765656e20696e7374656164606482015260840161067c565b60ff85811691161491505092915050565b60408051606080820183525f80835260208301529181019190915260405163dfda037960e01b81525f9073__$144f4fe859debe4776cdef2b99f7b97a42$__9063dfda0379906112959086906004016131ff565b5f60405180830381865af41580156112af573d5f5f3e3d5ffd5b505050506040513d5f823e601f3d908101601f191682016040526112d69190810190613531565b604051630578c5d360e11b815290915073__$144f4fe859debe4776cdef2b99f7b97a42$__90630af18ba690611310908490600401613562565b5f60405180830381865af415801561132a573d5f5f3e3d5ffd5b505050506040513d5f823e601f3d908101601f191682016040526113519190810190613574565b604085015260208401526001600160a01b0316825250919050565b5f546001600160a01b031633146113955760405162461bcd60e51b815260040161067c90613262565b6001600160a01b0381166113eb5760405162461bcd60e51b815260206004820152601c60248201527f41646d696e2063616e6e6f74206265207a65726f206164647265737300000000604482015260640161067c565b5f80546001600160a01b038381166001600160a01b0319831681178455604051919092169283917f101b8081ff3b56bbf45deb824d86a3b0fd38b7e3dd42421105cf8abe9106db0b9190a35050565b5f6105a983846002856125ce565b5f6105a9836006846128c0565b5f6105a9836004846128c0565b6114aa60405180610100016040528060608152602001606081526020016060815260200160608152602001606081526020016060815260200160608152602001606081525090565b604051635450abb360e11b81525f9073__$144f4fe859debe4776cdef2b99f7b97a42$__9063a8a15766906114e39087906004016131ff565b5f60405180830381865af41580156114fd573d5f5f3e3d5ffd5b505050506040513d5f823e601f3d908101601f1916820160405261152491908101906135bf565b6040516301e9bf5760e11b815290925073__$144f4fe859debe4776cdef2b99f7b97a42$__91506303d37eae906115619084908790600401613618565b5f60405180830381865af415801561157b573d5f5f3e3d5ffd5b505050506040513d5f823e601f3d908101601f19168201604052611118919081019061363b565b5f5f6115e286868080601f0160208091040260200160405190810160405280939291908181526020018383808284375f920191909152506129ce92505050565b61165c576008600287876040516020016115fd9291906137cc565b60408051601f1981840301815290829052611617916137db565b602060405180830381855afa158015611632573d5f5f3e3d5ffd5b5050506040513d601f19601f8201168201806040525081019061165591906137f1565b901c61165e565b5f5b90505f61169f85858080601f0160208091040260200160405190810160405280939291908181526020018383808284375f920191909152506129ce92505050565b611719576008600286866040516020016116ba9291906137cc565b60408051601f19818403018152908290526116d4916137db565b602060405180830381855afa1580156116ef573d5f5f3e3d5ffd5b5050506040513d601f19601f8201168201806040525081019061171291906137f1565b901c61171b565b5f5b9050818989600381811061173157611731613394565b9050602002013514801561175d5750808989600481811061175457611754613394565b90506020020135145b9998505050505050505050565b5f546001600160a01b031633146117935760405162461bcd60e51b815260040161067c90613262565b5f5b818110156118255760015f8484848181106117b2576117b2613394565b602090810292909201358352508101919091526040015f2080546001600160a01b03191690558282828181106117ea576117ea613394565b905060200201357f6fdcbcf8f91bc23f2c9dcfe8fe01d80d1b1afbbf207298e94c0171ccc587424c60405160405180910390a2600101611795565b505050565b5f5f5f73__$144f4fe859debe4776cdef2b99f7b97a42$__6384052813856040518263ffffffff1660e01b815260040161186491906131ff565b6040805180830381865af415801561187e573d5f5f3e3d5ffd5b505050506040513d601f19601f820116820180604052508101906118a291906134b5565b915091508460ff168660ff1611156119125760405162461bcd60e51b815260206004820152602d60248201527f4d696e20616765206d757374206265206c657373207468616e206f722065717560448201526c616c20746f206d61782061676560981b606482015260840161067c565b8160ff165f0361199f5760405162461bcd60e51b815260206004820152604c60248201527f5468652070726f6f66206c6f77657220626f756e64206d757374206265206e6f60448201527f6e2d7a65726f2c20706c656173652075736520697341676542656c6f774f724560648201526b1c5d585b081a5b9cdd19585960a21b608482015260a40161067c565b8060ff165f03611a2c5760405162461bcd60e51b815260206004820152604c60248201527f5468652070726f6f6620757070657220626f756e64206d757374206265206e6f60448201527f6e2d7a65726f2c20706c656173652075736520697341676541626f76654f724560648201526b1c5d585b081a5b9cdd19585960a21b608482015260a40161067c565b8160ff168660ff16148015611a4657508060ff168560ff16145b9695505050505050565b5f6105a9611a6162015180856133fe565b600284611d01565b5f6105a9836005846128c0565b5f546001600160a01b03163314611a9f5760405162461bcd60e51b815260040161067c90613262565b5f5b83811015611b9957828282818110611abb57611abb613394565b9050602002016020810190611ad09190612af5565b60015f878785818110611ae557611ae5613394565b9050602002013581526020019081526020015f205f6101000a8154816001600160a01b0302191690836001600160a01b03160217905550828282818110611b2e57611b2e613394565b9050602002016020810190611b439190612af5565b6001600160a01b0316858583818110611b5e57611b5e613394565b905060200201357f636107338a3eb46f1f60562462f3ec11393d35fbc965991aaade3b9e7d89c3f560405160405180910390a3600101611aa1565b5050505050565b5f6105a9611bb162015180856133fe565b600384611d01565b5f6105a9611bca8462015180613299565b600284611f87565b5f6105a983600384611f87565b5f6105a9836007846128c0565b5f5f5f73__$144f4fe859debe4776cdef2b99f7b97a42$__6384052813856040518263ffffffff1660e01b8152600401611c2691906131ff565b6040805180830381865af4158015611c40573d5f5f3e3d5ffd5b505050506040513d601f19601f82011682018060405250810190611c6491906134b5565b915091508060ff165f14611ce2576040805162461bcd60e51b81526020600482015260248101919091527f5468652070726f6f6620757070657220626f756e64206d75737420626520302c60448201527f20706c65617365207573652069734167654265747765656e20696e7374656164606482015260840161067c565b5060ff848116911614905092915050565b5f61111884846002856125ce565b5f5f5f73__$144f4fe859debe4776cdef2b99f7b97a42$__6374d9a37e85876040518363ffffffff1660e01b8152600401611d3d929190613808565b6040805180830381865af4158015611d57573d5f5f3e3d5ffd5b505050506040513d601f19601f82011682018060405250810190611d7b9190613845565b91509150815f14611dfe5760405162461bcd60e51b815260206004820152604160248201527f5468652070726f6f66206c6f77657220626f756e64206d75737420626520302c60448201527f20706c6561736520757365206973446174654265747765656e20696e737465616064820152601960fa1b608482015260a40161067c565b600285600a811115611e1257611e12613304565b1480611e2f5750600385600a811115611e2d57611e2d613304565b145b611e4b5760405162461bcd60e51b815260040161067c90613867565b600285600a811115611e5f57611e5f613304565b03611e9c57805f03611e835760405162461bcd60e51b815260040161067c90613893565b611e916383aa7e80826133fe565b861492505050610b51565b805f03611ebb5760405162461bcd60e51b815260040161067c9061390b565b85149150610b519050565b6002546040516383578c1160e01b815260036004820152602481018390526001600160a01b03909116906383578c1190604401602060405180830381865afa158015611f14573d5f5f3e3d5ffd5b505050506040513d601f19601f82011682018060405250810190611f38919061349a565b611f845760405162461bcd60e51b815260206004820152601f60248201527f496e76616c69642073616e6374696f6e7320726567697374727920726f6f7400604482015260640161067c565b50565b5f5f5f73__$144f4fe859debe4776cdef2b99f7b97a42$__6374d9a37e85876040518363ffffffff1660e01b8152600401611fc3929190613808565b6040805180830381865af4158015611fdd573d5f5f3e3d5ffd5b505050506040513d601f19601f820116820180604052508101906120019190613845565b9092509050600285600a81111561201a5761201a613304565b14806120375750600385600a81111561203557612035613304565b145b6120535760405162461bcd60e51b815260040161067c90613867565b600285600a81111561206757612067613304565b036120fd5780156120ef5760405162461bcd60e51b815260206004820152604660248201527f5468652070726f6f6620757070657220626f756e64206d75737420626520302c60448201527f20706c65617365207573652069734269727468646174654265747765656e20696064820152651b9cdd19585960d21b608482015260a40161067c565b611e916383aa7e80836133fe565b80156121815760405162461bcd60e51b815260206004820152604760248201527f5468652070726f6f6620757070657220626f756e64206d75737420626520302c60448201527f20706c6561736520757365206973457870697279446174654265747765656e206064820152661a5b9cdd19585960ca1b608482015260a40161067c565b5084149050610b51565b5f818152600160205260408120546001600160a01b0316806105ac5760405162461bcd60e51b815260206004820152601260248201527115995c9a599a595c881b9bdd08199bdd5b9960721b604482015260640161067c565b6002546040516383578c1160e01b815260016004820152602481018390526001600160a01b03909116906383578c1190604401602060405180830381865afa158015612232573d5f5f3e3d5ffd5b505050506040513d601f19601f82011682018060405250810190612256919061349a565b611f845760405162461bcd60e51b815260206004820152602160248201527f496e76616c696420636572746966696361746520726567697374727920726f6f6044820152601d60fa1b606482015260840161067c565b600280546040516383578c1160e01b81526004810192909252602482018390526001600160a01b0316906383578c1190604401602060405180830381865afa1580156122fa573d5f5f3e3d5ffd5b505050506040513d601f19601f8201168201806040525081019061231e919061349a565b611f845760405162461bcd60e51b815260206004820152601d60248201527f496e76616c6964206369726375697420726567697374727920726f6f74000000604482015260640161067c565b5f5f8360028151811061237f5761237f613394565b60200260200101515f1c905061111881846129d3565b5f805b6123a283806133bc565b9050821080156123b25750835181105b15612524575f6123c284806133bc565b6123cd856001613299565b906123d9866003613299565b926123e693929190613984565b6123ef916139ab565b60f01c90505f6008600261240387806133bc565b879061241361ffff881683613299565b61241e906003613299565b9261242b93929190613984565b60405160200161243c9291906137cc565b60408051601f1981840301815290829052612456916137db565b602060405180830381855afa158015612471573d5f5f3e3d5ffd5b5050506040513d601f19601f8201168201806040525081019061249491906137f1565b901c90508583815181106124aa576124aa613394565b602002602001015181146124f55760405162461bcd60e51b8152602060048201526012602482015271125b9d985b1a590818dbdb5b5a5d1b595b9d60721b604482015260640161067c565b6125008260036139e3565b61250e9061ffff1685613299565b93508261251a816139fd565b9350505050612398565b61252e83806133bc565b9050821461257e5760405162461bcd60e51b815260206004820152601f60248201527f496e76616c696420636f6d6d697474656420696e70757473206c656e67746800604482015260640161067c565b8351811461068e5760405162461bcd60e51b815260206004820152601d60248201527f496e76616c696420706172616d6574657220636f6d6d69746d656e7473000000604482015260640161067c565b5f5f5f73__$144f4fe859debe4776cdef2b99f7b97a42$__6374d9a37e85876040518363ffffffff1660e01b815260040161260a929190613808565b6040805180830381865af4158015612624573d5f5f3e3d5ffd5b505050506040513d601f19601f820116820180604052508101906126489190613845565b91509150858711156126b45760405162461bcd60e51b815260206004820152602f60248201527f4d696e2064617465206d757374206265206c657373207468616e206f7220657160448201526e75616c20746f206d6178206461746560881b606482015260840161067c565b600285600a8111156126c8576126c8613304565b14806126e55750600385600a8111156126e3576126e3613304565b145b6127015760405162461bcd60e51b815260040161067c90613867565b600285600a81111561271557612715613304565b036127fa57815f036127aa5760405162461bcd60e51b815260206004820152605260248201527f5468652070726f6f66206c6f77657220626f756e64206d757374206265206e6f60448201527f6e2d7a65726f2c20706c656173652075736520697342697274686461746542656064820152711b1bddd3dc915c5d585b081a5b9cdd19585960721b608482015260a40161067c565b805f036127c95760405162461bcd60e51b815260040161067c90613893565b6127d76383aa7e80836133fe565b871480156127f157506127ee6383aa7e80826133fe565b86145b92505050611118565b815f0361288b5760405162461bcd60e51b815260206004820152605360248201527f5468652070726f6f66206c6f77657220626f756e64206d757374206265206e6f60448201527f6e2d7a65726f2c20706c65617365207573652069734578706972794461746542606482015272195b1bddd3dc915c5d585b081a5b9cdd195859606a1b608482015260a40161067c565b805f036128aa5760405162461bcd60e51b815260040161067c9061390b565b81871480156127f1575090941495945050505050565b5f5f5f73__$144f4fe859debe4776cdef2b99f7b97a42$__63dc8c5e9a85876040518363ffffffff1660e01b81526004016128fc929190613808565b5f60405180830381865af4158015612916573d5f5f3e3d5ffd5b505050506040513d5f823e601f3d908101601f1916820160405261293d9190810190613a15565b9150915080865114612953575f92505050610b51565b5f5b818110156129c1576129aa87828151811061297257612972613394565b602002602001015184838151811061298c5761298c613394565b60200260200101518051602091820120825192909101919091201490565b6129b9575f9350505050610b51565b600101612955565b5060019695505050505050565b511590565b5f806129df8385613299565b90508342101580156129f057508381115b8015611118575042109392505050565b5f60208284031215612a10575f5ffd5b50919050565b5f5f60408385031215612a27575f5ffd5b8235915060208301356001600160401b03811115612a43575f5ffd5b612a4f85828601612a00565b9150509250929050565b8015158114611f84575f5ffd5b5f5f60408385031215612a77575f5ffd5b8235612a8281612a59565b915060208301356001600160401b03811115612a43575f5ffd5b60ff81168114611f84575f5ffd5b5f5f60408385031215612abb575f5ffd5b8235612a8281612a9c565b5f60208284031215612ad6575f5ffd5b8135610b5181612a59565b6001600160a01b0381168114611f84575f5ffd5b5f60208284031215612b05575f5ffd5b8135610b5181612ae1565b60038110611f84575f5ffd5b5f5f5f60608486031215612b2e575f5ffd5b8335612b3981612b10565b92506020840135612b4981612b10565b915060408401356001600160401b03811115612b63575f5ffd5b612b6f86828701612a00565b9150509250925092565b5f60208284031215612b89575f5ffd5b81356001600160401b03811115612b9e575f5ffd5b820160608185031215610b51575f5ffd5b5f5f5f60608486031215612bc1575f5ffd5b833592506020840135915060408401356001600160401b03811115612b63575f5ffd5b5f60208284031215612bf4575f5ffd5b81356001600160401b03811115612c09575f5ffd5b61111884828501612a00565b5f81518084528060208401602086015e5f602082860101526020601f19601f83011685010191505092915050565b6020815260018060a01b038251166020820152602082015160408201525f60408301516060808401526111186080840182612c15565b634e487b7160e01b5f52604160045260245ffd5b60405161010081016001600160401b0381118282101715612cb057612cb0612c79565b60405290565b604051601f8201601f191681016001600160401b0381118282101715612cde57612cde612c79565b604052919050565b5f6001600160401b03821115612cfe57612cfe612c79565b5060051b60200190565b5f6001600160401b03821115612d2057612d20612c79565b50601f01601f191660200190565b5f5f60408385031215612d3f575f5ffd5b82356001600160401b03811115612d54575f5ffd5b8301601f81018513612d64575f5ffd5b8035612d77612d7282612ce6565b612cb6565b8082825260208201915060208360051b850101925087831115612d98575f5ffd5b602084015b83811015612e185780356001600160401b03811115612dba575f5ffd5b8501603f81018a13612dca575f5ffd5b6020810135612ddb612d7282612d08565b8181526040838301018c1015612def575f5ffd5b816040840160208301375f60208383010152808652505050602083019250602081019050612d9d565b50945050505060208301356001600160401b03811115612a43575f5ffd5b5f60208284031215612e46575f5ffd5b5035919050565b5f5f60408385031215612e5e575f5ffd5b82356001600160401b03811115612e73575f5ffd5b612e7f85828601612a00565b9250506020830135612e9081612a59565b809150509250929050565b602081525f82516101006020840152612eb8610120840182612c15565b90506020840151601f19848303016040850152612ed58282612c15565b9150506040840151601f19848303016060850152612ef38282612c15565b9150506060840151601f19848303016080850152612f118282612c15565b9150506080840151601f198483030160a0850152612f2f8282612c15565b91505060a0840151601f198483030160c0850152612f4d8282612c15565b91505060c0840151601f198483030160e0850152612f6b8282612c15565b91505060e0840151601f1984830301610100850152612f8a8282612c15565b95945050505050565b5f5f83601f840112612fa3575f5ffd5b5081356001600160401b03811115612fb9575f5ffd5b6020830191508360208260051b8501011115612fd3575f5ffd5b9250929050565b5f5f83601f840112612fea575f5ffd5b5081356001600160401b03811115613000575f5ffd5b602083019150836020828501011115612fd3575f5ffd5b5f5f5f5f5f5f6060878903121561302c575f5ffd5b86356001600160401b03811115613041575f5ffd5b61304d89828a01612f93565b90975095505060208701356001600160401b0381111561306b575f5ffd5b61307789828a01612fda565b90955093505060408701356001600160401b03811115613095575f5ffd5b6130a189828a01612fda565b979a9699509497509295939492505050565b5f5f602083850312156130c4575f5ffd5b82356001600160401b038111156130d9575f5ffd5b6130e585828601612f93565b90969095509350505050565b5f5f5f60608486031215613103575f5ffd5b833561310e81612a9c565b92506020840135612b4981612a9c565b5f5f5f5f60408587031215613131575f5ffd5b84356001600160401b03811115613146575f5ffd5b61315287828801612f93565b90955093505060208501356001600160401b03811115613170575f5ffd5b61317c87828801612f93565b95989497509550505050565b81835281816020850137505f828201602090810191909152601f909101601f19169091010190565b5f8135601e198336030181126131c4575f5ffd5b82016020810190356001600160401b038111156131df575f5ffd5b8036038213156131ed575f5ffd5b60208552612f8a602086018284613188565b602081525f6105a960208301846131b0565b5f5f60408385031215613222575f5ffd5b82516020840151909250612e9081612a59565b634e487b7160e01b5f52601160045260245ffd5b60ff82811682821603908111156105ac576105ac613235565b6020808252601a908201527f4e6f7420617574686f72697a65643a2061646d696e206f6e6c79000000000000604082015260600190565b808201808211156105ac576105ac613235565b5f5f5f5f5f60a086880312156132c0575f5ffd5b85516020870151909550600281106132d6575f5ffd5b60408701516060880151608089015192965090945092506132f681612b10565b809150509295509295909350565b634e487b7160e01b5f52602160045260245ffd5b60ff81811683821601908111156105ac576105ac613235565b5f8235605e19833603018112613345575f5ffd5b9190910192915050565b5f5f8335601e19843603018112613364575f5ffd5b8301803591506001600160401b0382111561337d575f5ffd5b6020019150600581901b3603821315612fd3575f5ffd5b634e487b7160e01b5f52603260045260245ffd5b5f8235607e19833603018112613345575f5ffd5b5f5f8335601e198436030181126133d1575f5ffd5b8301803591506001600160401b038211156133ea575f5ffd5b602001915036819003821315612fd3575f5ffd5b818103818111156105ac576105ac613235565b5f5f8585111561341f575f5ffd5b8386111561342b575f5ffd5b5050600583901b0193919092039150565b5f8235601e19833603018112613345575f5ffd5b604081525f613463604083018688613188565b82810360208401528381526001600160fb1b03841115613481575f5ffd5b8360051b80866020840137016020019695505050505050565b5f602082840312156134aa575f5ffd5b8151610b5181612a59565b5f5f604083850312156134c6575f5ffd5b82516134d181612a9c565b6020840151909250612e9081612a9c565b5f82601f8301126134f1575f5ffd5b8151602083015f613504612d7284612d08565b9050828152858383011115613517575f5ffd5b8282602083015e5f92810160200192909252509392505050565b5f60208284031215613541575f5ffd5b81516001600160401b03811115613556575f5ffd5b611118848285016134e2565b602081525f6105a96020830184612c15565b5f5f5f60608486031215613586575f5ffd5b835161359181612ae1565b6020850151604086015191945092506001600160401b038111156135b3575f5ffd5b612b6f868287016134e2565b5f5f604083850312156135d0575f5ffd5b82516001600160401b038111156135e5575f5ffd5b6135f1858286016134e2565b92505060208301516001600160401b0381111561360c575f5ffd5b612a4f858286016134e2565b604081525f61362a6040830185612c15565b905082151560208301529392505050565b5f6020828403121561364b575f5ffd5b81516001600160401b03811115613660575f5ffd5b82016101008185031215613672575f5ffd5b61367a612c8d565b81516001600160401b0381111561368f575f5ffd5b61369b868285016134e2565b82525060208201516001600160401b038111156136b6575f5ffd5b6136c2868285016134e2565b60208301525060408201516001600160401b038111156136e0575f5ffd5b6136ec868285016134e2565b60408301525060608201516001600160401b0381111561370a575f5ffd5b613716868285016134e2565b60608301525060808201516001600160401b03811115613734575f5ffd5b613740868285016134e2565b60808301525060a08201516001600160401b0381111561375e575f5ffd5b61376a868285016134e2565b60a08301525060c08201516001600160401b03811115613788575f5ffd5b613794868285016134e2565b60c08301525060e08201516001600160401b038111156137b2575f5ffd5b6137be868285016134e2565b60e083015250949350505050565b818382375f9101908152919050565b5f82518060208501845e5f920191825250919050565b5f60208284031215613801575f5ffd5b5051919050565b604081525f61381a60408301856131b0565b9050600b831061383857634e487b7160e01b5f52602160045260245ffd5b8260208301529392505050565b5f5f60408385031215613856575f5ffd5b505080516020909101519092909150565b602080825260129082015271496e76616c69642070726f6f66207479706560701b604082015260600190565b60208082526052908201527f5468652070726f6f6620757070657220626f756e64206d757374206265206e6f60408201527f6e2d7a65726f2c20706c656173652075736520697342697274686461746541626060820152711bdd9953dc915c5d585b081a5b9cdd19585960721b608082015260a00190565b60208082526053908201527f5468652070726f6f6620757070657220626f756e64206d757374206265206e6f60408201527f6e2d7a65726f2c20706c65617365207573652069734578706972794461746541606082015272189bdd9953dc915c5d585b081a5b9cdd195859606a1b608082015260a00190565b5f5f85851115613992575f5ffd5b8386111561399e575f5ffd5b5050820193919092039150565b80356001600160f01b031981169060028410156139dc576001600160f01b0319600285900360031b81901b82161691505b5092915050565b61ffff81811683821601908111156105ac576105ac613235565b5f60018201613a0e57613a0e613235565b5060010190565b5f5f60408385031215613a26575f5ffd5b82516001600160401b03811115613a3b575f5ffd5b8301601f81018513613a4b575f5ffd5b8051613a59612d7282612ce6565b8082825260208201915060208360051b850101925087831115613a7a575f5ffd5b602084015b83811015613aba5780516001600160401b03811115613a9c575f5ffd5b613aab8a6020838901016134e2565b84525060209283019201613a7f565b50602096909601519597959650505050505056fea2646970667358221220f755de8bb391abb11be10350f9cc3590eeac4e8d2381edac92e3b462d6f7b18564736f6c634300081d0033",
|
|
676
|
-
sourceMap: "706:28281:26:-:0;;;1848:256;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;-1:-1:-1;;;;;1897:27:26;;1889:76;;;;-1:-1:-1;;;1889:76:26;;511:2:41;1889:76:26;;;493:21:41;550:2;530:18;;;523:30;589:34;569:18;;;562:62;-1:-1:-1;;;640:18:41;;;633:34;684:19;;1889:76:26;;;;;;;;1971:5;:18;;1979:10;-1:-1:-1;;;;;;1971:18:26;;;;;;;;1995:12;:43;;;;;-1:-1:-1;;;;;1995:43:26;;;;;2049:50;;2083:15;860:25:41;;2049:50:26;;848:2:41;833:18;2049:50:26;;;;;;;1848:256;706:28281;;14:290:41;84:6;137:2;125:9;116:7;112:23;108:32;105:52;;;153:1;150;143:12;105:52;179:16;;-1:-1:-1;;;;;224:31:41;;214:42;;204:70;;270:1;267;260:12;204:70;293:5;14:290;-1:-1:-1;;;14:290:41:o;714:177::-;706:28281:26;;;;;;",
|
|
677
|
-
linkReferences: {
|
|
678
|
-
"src/InputsExtractor.sol": {
|
|
679
|
-
InputsExtractor: [
|
|
680
|
-
{ start: 1766, length: 20 },
|
|
681
|
-
{ start: 2425, length: 20 },
|
|
682
|
-
{ start: 4719, length: 20 },
|
|
683
|
-
{ start: 5021, length: 20 },
|
|
684
|
-
{ start: 5144, length: 20 },
|
|
685
|
-
{ start: 5611, length: 20 },
|
|
686
|
-
{ start: 5734, length: 20 },
|
|
687
|
-
{ start: 6495, length: 20 },
|
|
688
|
-
{ start: 7457, length: 20 },
|
|
689
|
-
{ start: 7734, length: 20 },
|
|
690
|
-
{ start: 8380, length: 20 },
|
|
691
|
-
{ start: 9987, length: 20 },
|
|
692
|
-
{ start: 10741, length: 20 }
|
|
693
|
-
]
|
|
694
|
-
}
|
|
695
|
-
}
|
|
696
|
-
},
|
|
697
|
-
deployedBytecode: {
|
|
698
|
-
object: "0x608060405234801561000f575f5ffd5b506004361061023f575f3560e01c806375829def11610135578063a30470b2116100b4578063c17361df11610079578063c17361df1461053e578063d2bbe05f14610551578063e3e6525e14610564578063e8ba670514610577578063f851a4401461058a575f5ffd5b8063a30470b2146104df578063a6df2c01146104f2578063a72a8a4914610505578063b1bab8f214610518578063b96b161c1461052b575f5ffd5b8063822d00f8116100fa578063822d00f814610473578063847755e3146104935780638d6937b8146104a657806390e44dd7146104b95780639facc38a146104cc575f5ffd5b806375829def146103e7578063782f2497146103fa5780637db36adf1461040d5780637f303f26146104205780638163f23114610433575f5ffd5b80634035b41d116101c15780635c975abb116101865780635c975abb1461039157806364ce783d146103a4578063652ba33d146103b75780636c40d5d6146103bf578063712f5e1c146103c7575f5ffd5b80634035b41d1461031857806341a0e2c2146103425780634736a71414610358578063518e9b921461036b5780635c0578431461037e575f5ffd5b806322eb54d51161020757806322eb54d5146102b957806329354ea6146102cc578063307ad1ee146102df5780633a1e38bd146102f25780633e11569a14610305575f5ffd5b806302298d5614610243578063074bd4e21461026b5780630ed1cb511461028057806316c38b3c1461029357806318677f2a146102a6575b5f5ffd5b610256610251366004612a16565b61059c565b60405190151581526020015b60405180910390f35b61027e610279366004612a66565b6105b2565b005b61025661028e366004612aaa565b610694565b61027e6102a1366004612ac6565b6106fb565b61027e6102b4366004612af5565b61077b565b6102566102c7366004612a16565b610828565b6102566102da366004612b1c565b610841565b6102566102ed366004612aaa565b610b58565b610256610300366004612a16565b610b6d565b610256610313366004612a16565b610b7a565b61032b610326366004612b79565b610b87565b604080519215158352602083019190915201610262565b61034a600181565b604051908152602001610262565b610256610366366004612baf565b61110a565b610256610379366004612a16565b611120565b61025661038c366004612aaa565b61112e565b5f5461025690600160a01b900460ff1681565b6102566103b2366004612aaa565b61113a565b61034a600381565b61034a600281565b6103da6103d5366004612be4565b611241565b6040516102629190612c43565b61027e6103f5366004612af5565b61136c565b610256610408366004612a16565b61143a565b61025661041b366004612d2e565b611448565b61025661042e366004612d2e565b611455565b61045b610441366004612e36565b60016020525f90815260409020546001600160a01b031681565b6040516001600160a01b039091168152602001610262565b610486610481366004612e4d565b611462565b6040516102629190612e9b565b6102566104a1366004613017565b6115a2565b61027e6104b43660046130b3565b61176a565b6102566104c73660046130f1565b61182a565b6102566104da366004612a16565b611a50565b6102566104ed366004612d2e565b611a69565b61027e61050036600461311e565b611a76565b610256610513366004612a16565b611ba0565b610256610526366004612a16565b611bb9565b60025461045b906001600160a01b031681565b61025661054c366004612a16565b611bd2565b61025661055f366004612d2e565b611bdf565b610256610572366004612aaa565b611bec565b610256610585366004612baf565b611cf3565b5f5461045b906001600160a01b031681565b5f6105a983600384611d01565b90505b92915050565b5f5f73__$144f4fe859debe4776cdef2b99f7b97a42$__63a623af24846040518263ffffffff1660e01b81526004016105eb91906131ff565b6040805180830381865af4158015610605573d5f5f3e3d5ffd5b505050506040513d601f19601f820116820180604052508101906106299190613211565b91509150801515841515146106855760405162461bcd60e51b815260206004820152601c60248201527f496e76616c69642073616e6374696f6e7320636865636b206d6f64650000000060448201526064015b60405180910390fd5b61068e82611ec6565b50505050565b5f5f8360ff16116106e75760405162461bcd60e51b815260206004820152601e60248201527f4d617820616765206d7573742062652067726561746572207468616e20300000604482015260640161067c565b6105a96106f5600185613249565b8361113a565b5f546001600160a01b031633146107245760405162461bcd60e51b815260040161067c90613262565b5f8054821515600160a01b0260ff60a01b199091161790556040517f9a506b30e47f3823b09f67e4c0dfa5c3d8023b71825b7ceaa97677129128c9c59061077090831515815260200190565b60405180910390a150565b5f546001600160a01b031633146107a45760405162461bcd60e51b815260040161067c90613262565b6001600160a01b0381166108065760405162461bcd60e51b8152602060048201526024808201527f526f6f742072656769737472792063616e6e6f74206265207a65726f206164646044820152637265737360e01b606482015260840161067c565b600280546001600160a01b0319166001600160a01b0392909216919091179055565b5f6105a96108398462015180613299565b600384611f87565b5f5f5f5f5f5f73__$144f4fe859debe4776cdef2b99f7b97a42$__63defa8ed9886040518263ffffffff1660e01b815260040161087e91906131ff565b60a060405180830381865af4158015610899573d5f5f3e3d5ffd5b505050506040513d601f19601f820116820180604052508101906108bd91906132ac565b9398509196509450925090505f60018560018111156108de576108de613304565b1490505f8a60028111156108f4576108f4613304565b83600281111561090657610906613304565b1490505f7f2532418a107c5306fa8308c22255792cf77e4a290cbce8a840a642a3e591340b88148015610964575060018b600281111561094857610948613304565b148061096457505f8b600281111561096257610962613304565b145b806109c457507f16700a2d9168a194fc85f237af5829b5a2be05b8ae8ac4879ada34cf54a9c211881480156109c4575060028b60028111156109a8576109a8613304565b14806109c457505f8b60028111156109c2576109c2613304565b145b90505f7f1fa73686cf510f8f85757b0602de0dd72a13e68ae2092462be8b72662e7f179b87148015610a21575060018c6002811115610a0557610a05613304565b1480610a2157505f8c6002811115610a1f57610a1f613304565b145b80610a8157507f24d9929b248be7eeecaa98e105c034a50539610f3fdd4cb9c8983ef4100d615d87148015610a81575060028c6002811115610a6557610a65613304565b1480610a8157505f8c6002811115610a7f57610a7f613304565b145b90505f86158015610abd575060018d6002811115610aa157610aa1613304565b1480610abd57505f8d6002811115610abb57610abb613304565b145b80610b1d57507f12e3dc7cc8fec0205b51ff21825630865028f3be5bc64a6eec9ee5e71221319f87148015610b1d575060028d6002811115610b0157610b01613304565b1480610b1d57505f8d6002811115610b1b57610b1b613304565b145b9050848015610b295750835b8015610b325750825b8015610b3b5750815b8015610b445750805b9a50505050505050505050505b9392505050565b5f6105a9610b67846001613318565b83611bec565b5f6105a983600284611d01565b5f6105a983600284611f87565b5f80548190600160a01b900460ff1615610bd85760405162461bcd60e51b815260206004820152601260248201527110dbdb9d1c9858dd081a5cc81c185d5cd95960721b604482015260640161067c565b5f610bec610be68580613331565b3561218b565b9050610c25610bfb8580613331565b610c0990604081019061334f565b5f818110610c1957610c19613394565b905060200201356121e4565b610c5d610c328580613331565b610c4090604081019061334f565b6001818110610c5157610c51613394565b905060200201356122ac565b610cbc610c6a8580613331565b610c7890604081019061334f565b808060200260200160405190810160405280939291908181526020018383602002808284375f92019190915250610cb69250505060408701876133a8565b3561236a565b610d245760405162461bcd60e51b815260206004820152603360248201527f5468652070726f6f66207761732067656e657261746564206f757473696465206044820152721d1a19481d985b1a591a5d1e481c195c9a5bd9606a1b606482015260840161067c565b610d75610d318580613331565b610d3f90604081019061334f565b610d4c60408801886133a8565b610d5a9060208101906133bc565b610d6760408a018a6133a8565b6104a19060408101906133bc565b610dc15760405162461bcd60e51b815260206004820152601760248201527f496e76616c696420646f6d61696e206f722073636f7065000000000000000000604482015260640161067c565b610e54610dce8580613331565b610ddc90604081019061334f565b6005906002610deb8980613331565b610df990604081019061334f565b610e049291506133fe565b92610e1193929190613411565b808060200260200160405190810160405280939291908181526020018383602002808284375f92019190915250610e4f92505050602087018761343c565b612395565b5f610e5f8580613331565b610e6d90604081019061334f565b6002610e798880613331565b610e8790604081019061334f565b610e929291506133fe565b818110610ea157610ea1613394565b905060200201355f1c6003811115610ebb57610ebb613304565b90506002816003811115610ed157610ed1613304565b14158015610ef157506003816003811115610eee57610eee613304565b14155b80610f155750610f0460408601866133a8565b610f15906080810190606001612ac6565b610f725760405162461bcd60e51b815260206004820152602860248201527f4d6f636b2070726f6f667320617265206f6e6c7920616c6c6f77656420696e20604482015267646576206d6f646560c01b606482015260840161067c565b5f816003811115610f8557610f85613304565b1480610faa5750610f9960408601866133a8565b610faa906080810190606001612ac6565b61100a5760405162461bcd60e51b815260206004820152602b60248201527f53616c746564206e756c6c69666965727320617265206e6f7420737570706f7260448201526a74656420666f72206e6f7760a81b606482015260840161067c565b6001600160a01b03821663ea50d0e46110238780613331565b6110319060208101906133bc565b61103b8980613331565b61104990604081019061334f565b6040518563ffffffff1660e01b81526004016110689493929190613450565b602060405180830381865afa158015611083573d5f5f3e3d5ffd5b505050506040513d601f19601f820116820180604052508101906110a7919061349a565b93505f60016110b68780613331565b6110c490604081019061334f565b6110cf9291506133fe565b90506110db8680613331565b6110e990604081019061334f565b828181106110f9576110f9613394565b905060200201359350505050915091565b5f61111884846003856125ce565b949350505050565b5f6105a983846003856125ce565b5f6105a983848461182a565b5f5f5f73__$144f4fe859debe4776cdef2b99f7b97a42$__6384052813856040518263ffffffff1660e01b815260040161117491906131ff565b6040805180830381865af415801561118e573d5f5f3e3d5ffd5b505050506040513d601f19601f820116820180604052508101906111b291906134b5565b915091508160ff165f14611230576040805162461bcd60e51b81526020600482015260248101919091527f5468652070726f6f66206c6f77657220626f756e64206d75737420626520302c60448201527f20706c65617365207573652069734167654265747765656e20696e7374656164606482015260840161067c565b60ff85811691161491505092915050565b60408051606080820183525f80835260208301529181019190915260405163dfda037960e01b81525f9073__$144f4fe859debe4776cdef2b99f7b97a42$__9063dfda0379906112959086906004016131ff565b5f60405180830381865af41580156112af573d5f5f3e3d5ffd5b505050506040513d5f823e601f3d908101601f191682016040526112d69190810190613531565b604051630578c5d360e11b815290915073__$144f4fe859debe4776cdef2b99f7b97a42$__90630af18ba690611310908490600401613562565b5f60405180830381865af415801561132a573d5f5f3e3d5ffd5b505050506040513d5f823e601f3d908101601f191682016040526113519190810190613574565b604085015260208401526001600160a01b0316825250919050565b5f546001600160a01b031633146113955760405162461bcd60e51b815260040161067c90613262565b6001600160a01b0381166113eb5760405162461bcd60e51b815260206004820152601c60248201527f41646d696e2063616e6e6f74206265207a65726f206164647265737300000000604482015260640161067c565b5f80546001600160a01b038381166001600160a01b0319831681178455604051919092169283917f101b8081ff3b56bbf45deb824d86a3b0fd38b7e3dd42421105cf8abe9106db0b9190a35050565b5f6105a983846002856125ce565b5f6105a9836006846128c0565b5f6105a9836004846128c0565b6114aa60405180610100016040528060608152602001606081526020016060815260200160608152602001606081526020016060815260200160608152602001606081525090565b604051635450abb360e11b81525f9073__$144f4fe859debe4776cdef2b99f7b97a42$__9063a8a15766906114e39087906004016131ff565b5f60405180830381865af41580156114fd573d5f5f3e3d5ffd5b505050506040513d5f823e601f3d908101601f1916820160405261152491908101906135bf565b6040516301e9bf5760e11b815290925073__$144f4fe859debe4776cdef2b99f7b97a42$__91506303d37eae906115619084908790600401613618565b5f60405180830381865af415801561157b573d5f5f3e3d5ffd5b505050506040513d5f823e601f3d908101601f19168201604052611118919081019061363b565b5f5f6115e286868080601f0160208091040260200160405190810160405280939291908181526020018383808284375f920191909152506129ce92505050565b61165c576008600287876040516020016115fd9291906137cc565b60408051601f1981840301815290829052611617916137db565b602060405180830381855afa158015611632573d5f5f3e3d5ffd5b5050506040513d601f19601f8201168201806040525081019061165591906137f1565b901c61165e565b5f5b90505f61169f85858080601f0160208091040260200160405190810160405280939291908181526020018383808284375f920191909152506129ce92505050565b611719576008600286866040516020016116ba9291906137cc565b60408051601f19818403018152908290526116d4916137db565b602060405180830381855afa1580156116ef573d5f5f3e3d5ffd5b5050506040513d601f19601f8201168201806040525081019061171291906137f1565b901c61171b565b5f5b9050818989600381811061173157611731613394565b9050602002013514801561175d5750808989600481811061175457611754613394565b90506020020135145b9998505050505050505050565b5f546001600160a01b031633146117935760405162461bcd60e51b815260040161067c90613262565b5f5b818110156118255760015f8484848181106117b2576117b2613394565b602090810292909201358352508101919091526040015f2080546001600160a01b03191690558282828181106117ea576117ea613394565b905060200201357f6fdcbcf8f91bc23f2c9dcfe8fe01d80d1b1afbbf207298e94c0171ccc587424c60405160405180910390a2600101611795565b505050565b5f5f5f73__$144f4fe859debe4776cdef2b99f7b97a42$__6384052813856040518263ffffffff1660e01b815260040161186491906131ff565b6040805180830381865af415801561187e573d5f5f3e3d5ffd5b505050506040513d601f19601f820116820180604052508101906118a291906134b5565b915091508460ff168660ff1611156119125760405162461bcd60e51b815260206004820152602d60248201527f4d696e20616765206d757374206265206c657373207468616e206f722065717560448201526c616c20746f206d61782061676560981b606482015260840161067c565b8160ff165f0361199f5760405162461bcd60e51b815260206004820152604c60248201527f5468652070726f6f66206c6f77657220626f756e64206d757374206265206e6f60448201527f6e2d7a65726f2c20706c656173652075736520697341676542656c6f774f724560648201526b1c5d585b081a5b9cdd19585960a21b608482015260a40161067c565b8060ff165f03611a2c5760405162461bcd60e51b815260206004820152604c60248201527f5468652070726f6f6620757070657220626f756e64206d757374206265206e6f60448201527f6e2d7a65726f2c20706c656173652075736520697341676541626f76654f724560648201526b1c5d585b081a5b9cdd19585960a21b608482015260a40161067c565b8160ff168660ff16148015611a4657508060ff168560ff16145b9695505050505050565b5f6105a9611a6162015180856133fe565b600284611d01565b5f6105a9836005846128c0565b5f546001600160a01b03163314611a9f5760405162461bcd60e51b815260040161067c90613262565b5f5b83811015611b9957828282818110611abb57611abb613394565b9050602002016020810190611ad09190612af5565b60015f878785818110611ae557611ae5613394565b9050602002013581526020019081526020015f205f6101000a8154816001600160a01b0302191690836001600160a01b03160217905550828282818110611b2e57611b2e613394565b9050602002016020810190611b439190612af5565b6001600160a01b0316858583818110611b5e57611b5e613394565b905060200201357f636107338a3eb46f1f60562462f3ec11393d35fbc965991aaade3b9e7d89c3f560405160405180910390a3600101611aa1565b5050505050565b5f6105a9611bb162015180856133fe565b600384611d01565b5f6105a9611bca8462015180613299565b600284611f87565b5f6105a983600384611f87565b5f6105a9836007846128c0565b5f5f5f73__$144f4fe859debe4776cdef2b99f7b97a42$__6384052813856040518263ffffffff1660e01b8152600401611c2691906131ff565b6040805180830381865af4158015611c40573d5f5f3e3d5ffd5b505050506040513d601f19601f82011682018060405250810190611c6491906134b5565b915091508060ff165f14611ce2576040805162461bcd60e51b81526020600482015260248101919091527f5468652070726f6f6620757070657220626f756e64206d75737420626520302c60448201527f20706c65617365207573652069734167654265747765656e20696e7374656164606482015260840161067c565b5060ff848116911614905092915050565b5f61111884846002856125ce565b5f5f5f73__$144f4fe859debe4776cdef2b99f7b97a42$__6374d9a37e85876040518363ffffffff1660e01b8152600401611d3d929190613808565b6040805180830381865af4158015611d57573d5f5f3e3d5ffd5b505050506040513d601f19601f82011682018060405250810190611d7b9190613845565b91509150815f14611dfe5760405162461bcd60e51b815260206004820152604160248201527f5468652070726f6f66206c6f77657220626f756e64206d75737420626520302c60448201527f20706c6561736520757365206973446174654265747765656e20696e737465616064820152601960fa1b608482015260a40161067c565b600285600a811115611e1257611e12613304565b1480611e2f5750600385600a811115611e2d57611e2d613304565b145b611e4b5760405162461bcd60e51b815260040161067c90613867565b600285600a811115611e5f57611e5f613304565b03611e9c57805f03611e835760405162461bcd60e51b815260040161067c90613893565b611e916383aa7e80826133fe565b861492505050610b51565b805f03611ebb5760405162461bcd60e51b815260040161067c9061390b565b85149150610b519050565b6002546040516383578c1160e01b815260036004820152602481018390526001600160a01b03909116906383578c1190604401602060405180830381865afa158015611f14573d5f5f3e3d5ffd5b505050506040513d601f19601f82011682018060405250810190611f38919061349a565b611f845760405162461bcd60e51b815260206004820152601f60248201527f496e76616c69642073616e6374696f6e7320726567697374727920726f6f7400604482015260640161067c565b50565b5f5f5f73__$144f4fe859debe4776cdef2b99f7b97a42$__6374d9a37e85876040518363ffffffff1660e01b8152600401611fc3929190613808565b6040805180830381865af4158015611fdd573d5f5f3e3d5ffd5b505050506040513d601f19601f820116820180604052508101906120019190613845565b9092509050600285600a81111561201a5761201a613304565b14806120375750600385600a81111561203557612035613304565b145b6120535760405162461bcd60e51b815260040161067c90613867565b600285600a81111561206757612067613304565b036120fd5780156120ef5760405162461bcd60e51b815260206004820152604660248201527f5468652070726f6f6620757070657220626f756e64206d75737420626520302c60448201527f20706c65617365207573652069734269727468646174654265747765656e20696064820152651b9cdd19585960d21b608482015260a40161067c565b611e916383aa7e80836133fe565b80156121815760405162461bcd60e51b815260206004820152604760248201527f5468652070726f6f6620757070657220626f756e64206d75737420626520302c60448201527f20706c6561736520757365206973457870697279446174654265747765656e206064820152661a5b9cdd19585960ca1b608482015260a40161067c565b5084149050610b51565b5f818152600160205260408120546001600160a01b0316806105ac5760405162461bcd60e51b815260206004820152601260248201527115995c9a599a595c881b9bdd08199bdd5b9960721b604482015260640161067c565b6002546040516383578c1160e01b815260016004820152602481018390526001600160a01b03909116906383578c1190604401602060405180830381865afa158015612232573d5f5f3e3d5ffd5b505050506040513d601f19601f82011682018060405250810190612256919061349a565b611f845760405162461bcd60e51b815260206004820152602160248201527f496e76616c696420636572746966696361746520726567697374727920726f6f6044820152601d60fa1b606482015260840161067c565b600280546040516383578c1160e01b81526004810192909252602482018390526001600160a01b0316906383578c1190604401602060405180830381865afa1580156122fa573d5f5f3e3d5ffd5b505050506040513d601f19601f8201168201806040525081019061231e919061349a565b611f845760405162461bcd60e51b815260206004820152601d60248201527f496e76616c6964206369726375697420726567697374727920726f6f74000000604482015260640161067c565b5f5f8360028151811061237f5761237f613394565b60200260200101515f1c905061111881846129d3565b5f805b6123a283806133bc565b9050821080156123b25750835181105b15612524575f6123c284806133bc565b6123cd856001613299565b906123d9866003613299565b926123e693929190613984565b6123ef916139ab565b60f01c90505f6008600261240387806133bc565b879061241361ffff881683613299565b61241e906003613299565b9261242b93929190613984565b60405160200161243c9291906137cc565b60408051601f1981840301815290829052612456916137db565b602060405180830381855afa158015612471573d5f5f3e3d5ffd5b5050506040513d601f19601f8201168201806040525081019061249491906137f1565b901c90508583815181106124aa576124aa613394565b602002602001015181146124f55760405162461bcd60e51b8152602060048201526012602482015271125b9d985b1a590818dbdb5b5a5d1b595b9d60721b604482015260640161067c565b6125008260036139e3565b61250e9061ffff1685613299565b93508261251a816139fd565b9350505050612398565b61252e83806133bc565b9050821461257e5760405162461bcd60e51b815260206004820152601f60248201527f496e76616c696420636f6d6d697474656420696e70757473206c656e67746800604482015260640161067c565b8351811461068e5760405162461bcd60e51b815260206004820152601d60248201527f496e76616c696420706172616d6574657220636f6d6d69746d656e7473000000604482015260640161067c565b5f5f5f73__$144f4fe859debe4776cdef2b99f7b97a42$__6374d9a37e85876040518363ffffffff1660e01b815260040161260a929190613808565b6040805180830381865af4158015612624573d5f5f3e3d5ffd5b505050506040513d601f19601f820116820180604052508101906126489190613845565b91509150858711156126b45760405162461bcd60e51b815260206004820152602f60248201527f4d696e2064617465206d757374206265206c657373207468616e206f7220657160448201526e75616c20746f206d6178206461746560881b606482015260840161067c565b600285600a8111156126c8576126c8613304565b14806126e55750600385600a8111156126e3576126e3613304565b145b6127015760405162461bcd60e51b815260040161067c90613867565b600285600a81111561271557612715613304565b036127fa57815f036127aa5760405162461bcd60e51b815260206004820152605260248201527f5468652070726f6f66206c6f77657220626f756e64206d757374206265206e6f60448201527f6e2d7a65726f2c20706c656173652075736520697342697274686461746542656064820152711b1bddd3dc915c5d585b081a5b9cdd19585960721b608482015260a40161067c565b805f036127c95760405162461bcd60e51b815260040161067c90613893565b6127d76383aa7e80836133fe565b871480156127f157506127ee6383aa7e80826133fe565b86145b92505050611118565b815f0361288b5760405162461bcd60e51b815260206004820152605360248201527f5468652070726f6f66206c6f77657220626f756e64206d757374206265206e6f60448201527f6e2d7a65726f2c20706c65617365207573652069734578706972794461746542606482015272195b1bddd3dc915c5d585b081a5b9cdd195859606a1b608482015260a40161067c565b805f036128aa5760405162461bcd60e51b815260040161067c9061390b565b81871480156127f1575090941495945050505050565b5f5f5f73__$144f4fe859debe4776cdef2b99f7b97a42$__63dc8c5e9a85876040518363ffffffff1660e01b81526004016128fc929190613808565b5f60405180830381865af4158015612916573d5f5f3e3d5ffd5b505050506040513d5f823e601f3d908101601f1916820160405261293d9190810190613a15565b9150915080865114612953575f92505050610b51565b5f5b818110156129c1576129aa87828151811061297257612972613394565b602002602001015184838151811061298c5761298c613394565b60200260200101518051602091820120825192909101919091201490565b6129b9575f9350505050610b51565b600101612955565b5060019695505050505050565b511590565b5f806129df8385613299565b90508342101580156129f057508381115b8015611118575042109392505050565b5f60208284031215612a10575f5ffd5b50919050565b5f5f60408385031215612a27575f5ffd5b8235915060208301356001600160401b03811115612a43575f5ffd5b612a4f85828601612a00565b9150509250929050565b8015158114611f84575f5ffd5b5f5f60408385031215612a77575f5ffd5b8235612a8281612a59565b915060208301356001600160401b03811115612a43575f5ffd5b60ff81168114611f84575f5ffd5b5f5f60408385031215612abb575f5ffd5b8235612a8281612a9c565b5f60208284031215612ad6575f5ffd5b8135610b5181612a59565b6001600160a01b0381168114611f84575f5ffd5b5f60208284031215612b05575f5ffd5b8135610b5181612ae1565b60038110611f84575f5ffd5b5f5f5f60608486031215612b2e575f5ffd5b8335612b3981612b10565b92506020840135612b4981612b10565b915060408401356001600160401b03811115612b63575f5ffd5b612b6f86828701612a00565b9150509250925092565b5f60208284031215612b89575f5ffd5b81356001600160401b03811115612b9e575f5ffd5b820160608185031215610b51575f5ffd5b5f5f5f60608486031215612bc1575f5ffd5b833592506020840135915060408401356001600160401b03811115612b63575f5ffd5b5f60208284031215612bf4575f5ffd5b81356001600160401b03811115612c09575f5ffd5b61111884828501612a00565b5f81518084528060208401602086015e5f602082860101526020601f19601f83011685010191505092915050565b6020815260018060a01b038251166020820152602082015160408201525f60408301516060808401526111186080840182612c15565b634e487b7160e01b5f52604160045260245ffd5b60405161010081016001600160401b0381118282101715612cb057612cb0612c79565b60405290565b604051601f8201601f191681016001600160401b0381118282101715612cde57612cde612c79565b604052919050565b5f6001600160401b03821115612cfe57612cfe612c79565b5060051b60200190565b5f6001600160401b03821115612d2057612d20612c79565b50601f01601f191660200190565b5f5f60408385031215612d3f575f5ffd5b82356001600160401b03811115612d54575f5ffd5b8301601f81018513612d64575f5ffd5b8035612d77612d7282612ce6565b612cb6565b8082825260208201915060208360051b850101925087831115612d98575f5ffd5b602084015b83811015612e185780356001600160401b03811115612dba575f5ffd5b8501603f81018a13612dca575f5ffd5b6020810135612ddb612d7282612d08565b8181526040838301018c1015612def575f5ffd5b816040840160208301375f60208383010152808652505050602083019250602081019050612d9d565b50945050505060208301356001600160401b03811115612a43575f5ffd5b5f60208284031215612e46575f5ffd5b5035919050565b5f5f60408385031215612e5e575f5ffd5b82356001600160401b03811115612e73575f5ffd5b612e7f85828601612a00565b9250506020830135612e9081612a59565b809150509250929050565b602081525f82516101006020840152612eb8610120840182612c15565b90506020840151601f19848303016040850152612ed58282612c15565b9150506040840151601f19848303016060850152612ef38282612c15565b9150506060840151601f19848303016080850152612f118282612c15565b9150506080840151601f198483030160a0850152612f2f8282612c15565b91505060a0840151601f198483030160c0850152612f4d8282612c15565b91505060c0840151601f198483030160e0850152612f6b8282612c15565b91505060e0840151601f1984830301610100850152612f8a8282612c15565b95945050505050565b5f5f83601f840112612fa3575f5ffd5b5081356001600160401b03811115612fb9575f5ffd5b6020830191508360208260051b8501011115612fd3575f5ffd5b9250929050565b5f5f83601f840112612fea575f5ffd5b5081356001600160401b03811115613000575f5ffd5b602083019150836020828501011115612fd3575f5ffd5b5f5f5f5f5f5f6060878903121561302c575f5ffd5b86356001600160401b03811115613041575f5ffd5b61304d89828a01612f93565b90975095505060208701356001600160401b0381111561306b575f5ffd5b61307789828a01612fda565b90955093505060408701356001600160401b03811115613095575f5ffd5b6130a189828a01612fda565b979a9699509497509295939492505050565b5f5f602083850312156130c4575f5ffd5b82356001600160401b038111156130d9575f5ffd5b6130e585828601612f93565b90969095509350505050565b5f5f5f60608486031215613103575f5ffd5b833561310e81612a9c565b92506020840135612b4981612a9c565b5f5f5f5f60408587031215613131575f5ffd5b84356001600160401b03811115613146575f5ffd5b61315287828801612f93565b90955093505060208501356001600160401b03811115613170575f5ffd5b61317c87828801612f93565b95989497509550505050565b81835281816020850137505f828201602090810191909152601f909101601f19169091010190565b5f8135601e198336030181126131c4575f5ffd5b82016020810190356001600160401b038111156131df575f5ffd5b8036038213156131ed575f5ffd5b60208552612f8a602086018284613188565b602081525f6105a960208301846131b0565b5f5f60408385031215613222575f5ffd5b82516020840151909250612e9081612a59565b634e487b7160e01b5f52601160045260245ffd5b60ff82811682821603908111156105ac576105ac613235565b6020808252601a908201527f4e6f7420617574686f72697a65643a2061646d696e206f6e6c79000000000000604082015260600190565b808201808211156105ac576105ac613235565b5f5f5f5f5f60a086880312156132c0575f5ffd5b85516020870151909550600281106132d6575f5ffd5b60408701516060880151608089015192965090945092506132f681612b10565b809150509295509295909350565b634e487b7160e01b5f52602160045260245ffd5b60ff81811683821601908111156105ac576105ac613235565b5f8235605e19833603018112613345575f5ffd5b9190910192915050565b5f5f8335601e19843603018112613364575f5ffd5b8301803591506001600160401b0382111561337d575f5ffd5b6020019150600581901b3603821315612fd3575f5ffd5b634e487b7160e01b5f52603260045260245ffd5b5f8235607e19833603018112613345575f5ffd5b5f5f8335601e198436030181126133d1575f5ffd5b8301803591506001600160401b038211156133ea575f5ffd5b602001915036819003821315612fd3575f5ffd5b818103818111156105ac576105ac613235565b5f5f8585111561341f575f5ffd5b8386111561342b575f5ffd5b5050600583901b0193919092039150565b5f8235601e19833603018112613345575f5ffd5b604081525f613463604083018688613188565b82810360208401528381526001600160fb1b03841115613481575f5ffd5b8360051b80866020840137016020019695505050505050565b5f602082840312156134aa575f5ffd5b8151610b5181612a59565b5f5f604083850312156134c6575f5ffd5b82516134d181612a9c565b6020840151909250612e9081612a9c565b5f82601f8301126134f1575f5ffd5b8151602083015f613504612d7284612d08565b9050828152858383011115613517575f5ffd5b8282602083015e5f92810160200192909252509392505050565b5f60208284031215613541575f5ffd5b81516001600160401b03811115613556575f5ffd5b611118848285016134e2565b602081525f6105a96020830184612c15565b5f5f5f60608486031215613586575f5ffd5b835161359181612ae1565b6020850151604086015191945092506001600160401b038111156135b3575f5ffd5b612b6f868287016134e2565b5f5f604083850312156135d0575f5ffd5b82516001600160401b038111156135e5575f5ffd5b6135f1858286016134e2565b92505060208301516001600160401b0381111561360c575f5ffd5b612a4f858286016134e2565b604081525f61362a6040830185612c15565b905082151560208301529392505050565b5f6020828403121561364b575f5ffd5b81516001600160401b03811115613660575f5ffd5b82016101008185031215613672575f5ffd5b61367a612c8d565b81516001600160401b0381111561368f575f5ffd5b61369b868285016134e2565b82525060208201516001600160401b038111156136b6575f5ffd5b6136c2868285016134e2565b60208301525060408201516001600160401b038111156136e0575f5ffd5b6136ec868285016134e2565b60408301525060608201516001600160401b0381111561370a575f5ffd5b613716868285016134e2565b60608301525060808201516001600160401b03811115613734575f5ffd5b613740868285016134e2565b60808301525060a08201516001600160401b0381111561375e575f5ffd5b61376a868285016134e2565b60a08301525060c08201516001600160401b03811115613788575f5ffd5b613794868285016134e2565b60c08301525060e08201516001600160401b038111156137b2575f5ffd5b6137be868285016134e2565b60e083015250949350505050565b818382375f9101908152919050565b5f82518060208501845e5f920191825250919050565b5f60208284031215613801575f5ffd5b5051919050565b604081525f61381a60408301856131b0565b9050600b831061383857634e487b7160e01b5f52602160045260245ffd5b8260208301529392505050565b5f5f60408385031215613856575f5ffd5b505080516020909101519092909150565b602080825260129082015271496e76616c69642070726f6f66207479706560701b604082015260600190565b60208082526052908201527f5468652070726f6f6620757070657220626f756e64206d757374206265206e6f60408201527f6e2d7a65726f2c20706c656173652075736520697342697274686461746541626060820152711bdd9953dc915c5d585b081a5b9cdd19585960721b608082015260a00190565b60208082526053908201527f5468652070726f6f6620757070657220626f756e64206d757374206265206e6f60408201527f6e2d7a65726f2c20706c65617365207573652069734578706972794461746541606082015272189bdd9953dc915c5d585b081a5b9cdd195859606a1b608082015260a00190565b5f5f85851115613992575f5ffd5b8386111561399e575f5ffd5b5050820193919092039150565b80356001600160f01b031981169060028410156139dc576001600160f01b0319600285900360031b81901b82161691505b5092915050565b61ffff81811683821601908111156105ac576105ac613235565b5f60018201613a0e57613a0e613235565b5060010190565b5f5f60408385031215613a26575f5ffd5b82516001600160401b03811115613a3b575f5ffd5b8301601f81018513613a4b575f5ffd5b8051613a59612d7282612ce6565b8082825260208201915060208360051b850101925087831115613a7a575f5ffd5b602084015b83811015613aba5780516001600160401b03811115613a9c575f5ffd5b613aab8a6020838901016134e2565b84525060209283019201613a7f565b50602096909601519597959650505050505056fea2646970667358221220f755de8bb391abb11be10350f9cc3590eeac4e8d2381edac92e3b462d6f7b18564736f6c634300081d0033",
|
|
699
|
-
sourceMap: "706:28281:26:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;15475:207;;;;;;:::i;:::-;;:::i;:::-;;;827:14:41;;820:22;802:41;;790:2;775:18;15475:207:26;;;;;;;;20140:345;;;;;;:::i;:::-;;:::i;:::-;;6859:226;;;;;;:::i;:::-;;:::i;2527:118::-;;;;;;:::i;:::-;;:::i;3178:206::-;;;;;;:::i;:::-;;:::i;14399:207::-;;;;;;:::i;:::-;;:::i;20899:1308::-;;;;;;:::i;:::-;;:::i;5035:167::-;;;;;;:::i;:::-;;:::i;12533:204::-;;;;;;:::i;:::-;;:::i;11024:202::-;;;;;;:::i;:::-;;:::i;25637:3348::-;;;;;;:::i;:::-;;:::i;:::-;;;;4143:14:41;;4136:22;4118:41;;4190:2;4175:18;;4168:34;;;;4091:18;25637:3348:26;3950:258:41;738:69:26;;804:1;738:69;;;;;4359:25:41;;;4347:2;4332:18;738:69:26;4213:177:41;14954:225:26;;;;;;:::i;:::-;;:::i;16414:193::-;;;;;;:::i;:::-;;:::i;7320:157::-;;;;;;:::i;:::-;;:::i;976:18::-;;;;;-1:-1:-1;;;976:18:26;;;;;;6317:313;;;;;;:::i;:::-;;:::i;880:67::-;;944:1;880:67;;811:65;;873:1;811:65;;19635:300;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;2294:229::-;;;;;;:::i;:::-;;:::i;13454:190::-;;;;;;:::i;:::-;;:::i;18020:227::-;;;;;;:::i;:::-;;:::i;17481:220::-;;;;;;:::i;:::-;;:::i;1084:53::-;;;;;;:::i;:::-;;;;;;;;;;;;-1:-1:-1;;;;;1084:53:26;;;;;;-1:-1:-1;;;;;9334:32:41;;;9316:51;;9304:2;9289:18;1084:53:26;9170:203:41;3906:322:26;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;22546:706::-;;;;;;:::i;:::-;;:::i;2943:231::-;;;;;;:::i;:::-;;:::i;5514:538::-;;;;;;:::i;:::-;;:::i;12991:206::-;;;;;;:::i;:::-;;:::i;18636:221::-;;;;;;:::i;:::-;;:::i;2649:290::-;;;;;;:::i;:::-;;:::i;15942:209::-;;;;;;:::i;:::-;;:::i;11477:204::-;;;;;;:::i;:::-;;:::i;1211:33::-;;;;;-1:-1:-1;;;;;1211:33:26;;;13937:205;;;;;;:::i;:::-;;:::i;19254:228::-;;;;;;:::i;:::-;;:::i;4493:313::-;;;;;;:::i;:::-;;:::i;12021:222::-;;;;;;:::i;:::-;;:::i;952:20::-;;;;;-1:-1:-1;;;;;952:20:26;;;15475:207;15594:4;15613:64;15633:7;15642:21;15665:11;15613:19;:64::i;:::-;15606:71;;15475:207;;;;;:::o;20140:345::-;20250:26;20278:22;20304:15;:39;20344:11;20304:52;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;20249:107;;;;20382:17;20370:29;;:8;:29;;;20362:70;;;;-1:-1:-1;;;20362:70:26;;17181:2:41;20362:70:26;;;17163:21:41;17220:2;17200:18;;;17193:30;17259;17239:18;;;17232:58;17307:18;;20362:70:26;;;;;;;;;20438:42;20461:18;20438:22;:42::i;:::-;20243:242;;20140:345;;:::o;6859:226::-;6960:4;6989:1;6980:6;:10;;;6972:53;;;;-1:-1:-1;;;6972:53:26;;17538:2:41;6972:53:26;;;17520:21:41;17577:2;17557:18;;;17550:30;17616:32;17596:18;;;17589:60;17666:18;;6972:53:26;17336:354:41;6972:53:26;7038:42;7056:10;7065:1;7056:6;:10;:::i;:::-;7068:11;7038:17;:42::i;2527:118::-;2157:5;;-1:-1:-1;;;;;2157:5:26;2143:10;:19;2135:58;;;;-1:-1:-1;;;2135:58:26;;;;;;;:::i;:::-;2585:6:::1;:16:::0;;;::::1;;-1:-1:-1::0;;;2585:16:26::1;-1:-1:-1::0;;;;2585:16:26;;::::1;;::::0;;2612:28:::1;::::0;::::1;::::0;::::1;::::0;2594:7;827:14:41;820:22;802:41;;790:2;775:18;;662:187;2612:28:26::1;;;;;;;;2527:118:::0;:::o;3178:206::-;2157:5;;-1:-1:-1;;;;;2157:5:26;2143:10;:19;2135:58;;;;-1:-1:-1;;;2135:58:26;;;;;;;:::i;:::-;-1:-1:-1;;;;;3262:27:26;::::1;3254:76;;;::::0;-1:-1:-1;;;3254:76:26;;18540:2:41;3254:76:26::1;::::0;::::1;18522:21:41::0;18579:2;18559:18;;;18552:30;18618:34;18598:18;;;18591:62;-1:-1:-1;;;18669:18:41;;;18662:34;18713:19;;3254:76:26::1;18338:400:41::0;3254:76:26::1;3336:12;:43:::0;;-1:-1:-1;;;;;;3336:43:26::1;-1:-1:-1::0;;;;;3336:43:26;;;::::1;::::0;;;::::1;::::0;;3178:206::o;14399:207::-;14510:4;14529:72;14548:16;:7;14558:6;14548:16;:::i;:::-;14566:21;14589:11;14529:18;:72::i;20899:1308::-;21035:4;21048:19;21069:23;21094:17;21113:30;21145:36;21185:15;:39;21225:11;21185:52;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;21047:190;;-1:-1:-1;21047:190:26;;-1:-1:-1;21047:190:26;-1:-1:-1;21047:190:26;-1:-1:-1;21047:190:26;-1:-1:-1;21243:17:26;21278:22;21263:11;:37;;;;;;;;:::i;:::-;;21243:57;;21306:18;21353:13;21327:39;;;;;;;;:::i;:::-;:22;:39;;;;;;;;:::i;:::-;;;-1:-1:-1;21372:25:26;5404:66:19;21401:44:26;;:78;;;;-1:-1:-1;21456:6:26;21450:2;:12;;;;;;;;:::i;:::-;;:28;;;-1:-1:-1;21472:6:26;21466:2;:12;;;;;;;;:::i;:::-;;21450:28;21400:173;;;-1:-1:-1;5576:66:19;21485:49:26;;:87;;;;-1:-1:-1;21545:10:26;21539:2;:16;;;;;;;;:::i;:::-;;:32;;;-1:-1:-1;21565:6:26;21559:2;:12;;;;;;;;:::i;:::-;;21539:32;21372:201;-1:-1:-1;21579:23:26;5021:66:19;21606:38:26;;:72;;;;-1:-1:-1;21655:6:26;21649:2;:12;;;;;;;;:::i;:::-;;:28;;;-1:-1:-1;21671:6:26;21665:2;:12;;;;;;;;:::i;:::-;;21649:28;21605:160;;;-1:-1:-1;5242:66:19;21684:42:26;;:80;;;;-1:-1:-1;21737:10:26;21731:2;:16;;;;;;;;:::i;:::-;;:32;;;-1:-1:-1;21757:6:26;21751:2;:12;;;;;;;;:::i;:::-;;21731:32;21579:186;-1:-1:-1;21855:36:26;21895;;:70;;;;-1:-1:-1;21942:6:26;21936:2;:12;;;;;;;;:::i;:::-;;:28;;;-1:-1:-1;21958:6:26;21952:2;:12;;;;;;;;:::i;:::-;;21936:28;21894:185;;;-1:-1:-1;5749:66:19;21971:69:26;;:107;;;;-1:-1:-1;22051:10:26;22045:2;:16;;;;;;;;:::i;:::-;;:32;;;-1:-1:-1;22071:6:26;22065:2;:12;;;;;;;;:::i;:::-;;22045:32;21855:224;;22092:12;:29;;;;;22108:13;22092:29;:53;;;;;22125:20;22092:53;:75;;;;;22149:18;22092:75;:110;;;;;22171:31;22092:110;22085:117;;;;;;;;;;;;20899:1308;;;;;;:::o;5035:167::-;5136:4;5155:42;5173:10;:6;5182:1;5173:10;:::i;:::-;5185:11;5155:17;:42::i;12533:204::-;12651:4;12670:62;12690:7;12699:19;12720:11;12670:19;:62::i;11024:202::-;11141:4;11160:61;11179:7;11188:19;11209:11;11160:18;:61::i;25637:3348::-;25744:12;2249:6;;25744:12;;-1:-1:-1;;;2249:6:26;;;;2248:7;2240:38;;;;-1:-1:-1;;;2240:38:26;;20147:2:41;2240:38:26;;;20129:21:41;20186:2;20166:18;;;20159:30;-1:-1:-1;;;20205:18:41;;;20198:48;20263:18;;2240:38:26;19945:342:41;2240:38:26;25867:16:::1;25886:51;25899:28;:6:::0;;:28:::1;:::i;:::-;:37;25886:12;:51::i;:::-;25867:70:::0;-1:-1:-1;25986:112:26::1;26011:28;:6:::0;;:28:::1;:::i;:::-;:41;::::0;::::1;::::0;::::1;::::0;::::1;:::i;:::-;1045:1:19;26011:86:26;;;;;;;:::i;:::-;;;;;;;25986:24;:112::i;:::-;26143:104;26164:28;:6:::0;;:28:::1;:::i;:::-;:41;::::0;::::1;::::0;::::1;::::0;::::1;:::i;:::-;1097:1:19;26164:82:26;;;;;;;:::i;:::-;;;;;;;26143:20;:104::i;:::-;26479:98;26489:28;:6:::0;;:28:::1;:::i;:::-;:41;::::0;::::1;::::0;::::1;::::0;::::1;:::i;:::-;26479:98;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::1;::::0;;;;-1:-1:-1;26532:20:26::1;::::0;-1:-1:-1;;;26532:20:26::1;::::0;::::1;::::0;::::1;:::i;:::-;:44;26479:9;:98::i;:::-;26464:180;;;::::0;-1:-1:-1;;;26464:180:26;;21857:2:41;26464:180:26::1;::::0;::::1;21839:21:41::0;21896:2;21876:18;;;21869:30;21935:34;21915:18;;;21908:62;-1:-1:-1;;;21986:18:41;;;21979:49;22045:19;;26464:180:26::1;21655:415:41::0;26464:180:26::1;26988:112;27001:28;:6:::0;;:28:::1;:::i;:::-;:41;::::0;::::1;::::0;::::1;::::0;::::1;:::i;:::-;27044:20;;::::0;::::1;:6:::0;:20:::1;:::i;:::-;:27;::::0;::::1;::::0;::::1;::::0;::::1;:::i;:::-;27073:20;;::::0;::::1;:6:::0;:20:::1;:::i;:::-;:26;::::0;::::1;::::0;::::1;::::0;::::1;:::i;26988:112::-;26980:148;;;::::0;-1:-1:-1;;;26980:148:26;;22804:2:41;26980:148:26::1;::::0;::::1;22786:21:41::0;22843:2;22823:18;;;22816:30;22882:25;22862:18;;;22855:53;22925:18;;26980:148:26::1;22602:347:41::0;26980:148:26::1;27196:249;27282:28;:6:::0;;:28:::1;:::i;:::-;:41;::::0;::::1;::::0;::::1;::::0;::::1;:::i;:::-;1263:1:19;::::0;27411::26::1;27360:28;:6:::0;;:28:::1;:::i;:::-;:41;::::0;::::1;::::0;::::1;::::0;::::1;:::i;:::-;:52;::::0;;-1:-1:-1;27360:52:26::1;:::i;:::-;27282:131;;;;;;;:::i;:::-;27196:249;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::1;::::0;;;;-1:-1:-1;27421:18:26::1;::::0;-1:-1:-1;;;27421:18:26::1;::::0;::::1;::::0;::::1;:::i;:::-;27196:21;:249::i;:::-;27452:27;27504:28;:6:::0;;:28:::1;:::i;:::-;:41;::::0;::::1;::::0;::::1;::::0;::::1;:::i;:::-;27597:1;27546:28;:6:::0;;:28:::1;:::i;:::-;:41;::::0;::::1;::::0;::::1;::::0;::::1;:::i;:::-;:52;::::0;;-1:-1:-1;27546:52:26::1;:::i;:::-;27504:95;;;;;;;:::i;:::-;;;;;;;27496:104;;27482:119;;;;;;;;:::i;:::-;27452:149:::0;-1:-1:-1;27865:39:26::1;27848:13;:56;;;;;;;;:::i;:::-;;;:112;;;;-1:-1:-1::0;27925:35:26::1;27908:13;:52;;;;;;;;:::i;:::-;;;27848:112;27847:152;;;-1:-1:-1::0;27971:20:26::1;;::::0;::::1;:6:::0;:20:::1;:::i;:::-;:28;::::0;;;;;::::1;;;:::i;:::-;27832:223;;;::::0;-1:-1:-1;;;27832:223:26;;23983:2:41;27832:223:26::1;::::0;::::1;23965:21:41::0;24022:2;24002:18;;;23995:30;24061:34;24041:18;;;24034:62;-1:-1:-1;;;24112:18:41;;;24105:38;24160:19;;27832:223:26::1;23781:404:41::0;27832:223:26::1;28286:34;28269:13;:51;;;;;;;;:::i;:::-;;:83;;;-1:-1:-1::0;28324:20:26::1;;::::0;::::1;:6:::0;:20:::1;:::i;:::-;:28;::::0;;;;;::::1;;;:::i;:::-;28254:157;;;::::0;-1:-1:-1;;;28254:157:26;;24392:2:41;28254:157:26::1;::::0;::::1;24374:21:41::0;24431:2;24411:18;;;24404:30;24470:34;24450:18;;;24443:62;-1:-1:-1;;;24521:18:41;;;24514:41;24572:19;;28254:157:26::1;24190:407:41::0;28254:157:26::1;-1:-1:-1::0;;;;;28530:26:26;::::1;;28557:28;:6:::0;;:28:::1;:::i;:::-;:34;::::0;::::1;::::0;::::1;::::0;::::1;:::i;:::-;28593:28;:6:::0;;:28:::1;:::i;:::-;:41;::::0;::::1;::::0;::::1;::::0;::::1;:::i;:::-;28530:105;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;28520:115:::0;-1:-1:-1;28698:29:26::1;28781:1;28730:28;:6:::0;;:28:::1;:::i;:::-;:41;::::0;::::1;::::0;::::1;::::0;::::1;:::i;:::-;:52;::::0;;-1:-1:-1;28730:52:26::1;:::i;:::-;28698:84:::0;-1:-1:-1;28807:28:26::1;:6:::0;;:28:::1;:::i;:::-;:41;::::0;::::1;::::0;::::1;::::0;::::1;:::i;:::-;28849:21;28807:64;;;;;;;:::i;:::-;;;;;;;28788:83;;28946:34;;;25637:3348:::0;;;:::o;14954:225::-;15088:4;15107:67;15121:7;15130;15139:21;15162:11;15107:13;:67::i;:::-;15100:74;14954:225;-1:-1:-1;;;;14954:225:26:o;16414:193::-;16522:4;16541:61;16555:4;16561;16567:21;16590:11;16541:13;:61::i;7320:157::-;7418:4;7437:35;7450:3;7455;7460:11;7437:12;:35::i;6317:313::-;6425:4;6438:9;6449;6462:15;:33;6496:11;6462:46;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;6437:71;;;;6522:3;:8;;6529:1;6522:8;6514:85;;;;;-1:-1:-1;;;6514:85:26;;26591:2:41;6514:85:26;;;26573:21:41;26610:18;;;26603:30;;;;26669:34;26649:18;;;26642:62;26740:34;26720:18;;;26713:62;26792:19;;6514:85:26;26389:428:41;6514:85:26;6612:13;;;;;;;;-1:-1:-1;;6317:313:26;;;;:::o;19635:300::-;-1:-1:-1;;;;;;;;;;;;;;;;;;;;;;;;19774:47:26;;-1:-1:-1;;;19774:47:26;;19754:17;;19774:15;;:34;;:47;;19809:11;;19774:47;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;19774:47:26;;;;;;;;;;;;:::i;:::-;19896:34;;-1:-1:-1;;;19896:34:26;;19754:67;;-1:-1:-1;19896:15:26;;:28;;:34;;19754:67;;19896:34;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;19896:34:26;;;;;;;;;;;;:::i;:::-;19872:20;;;19827:103;19853:17;;;19827:103;-1:-1:-1;;;;;19827:103:26;;;-1:-1:-1;19828:9:26;19635:300;-1:-1:-1;19635:300:26:o;2294:229::-;2157:5;;-1:-1:-1;;;;;2157:5:26;2143:10;:19;2135:58;;;;-1:-1:-1;;;2135:58:26;;;;;;;:::i;:::-;-1:-1:-1;;;;;2368:22:26;::::1;2360:63;;;::::0;-1:-1:-1;;;2360:63:26;;28696:2:41;2360:63:26::1;::::0;::::1;28678:21:41::0;28735:2;28715:18;;;28708:30;28774;28754:18;;;28747:58;28822:18;;2360:63:26::1;28494:352:41::0;2360:63:26::1;2429:16;2448:5:::0;;-1:-1:-1;;;;;2459:16:26;;::::1;-1:-1:-1::0;;;;;;2459:16:26;::::1;::::0;::::1;::::0;;2486:32:::1;::::0;2448:5;;;::::1;::::0;;;2486:32:::1;::::0;2429:16;2486:32:::1;2354:169;2294:229:::0;:::o;13454:190::-;13561:4;13580:59;13594:4;13600;13606:19;13627:11;13580:13;:59::i;18020:227::-;18144:4;18163:79;18180:11;18193:35;18230:11;18163:16;:79::i;17481:220::-;17602:4;17621:75;17638:11;17651:31;17684:11;17621:16;:75::i;3906:322::-;4018:34;-1:-1:-1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;4018:34:26;4093:51;;-1:-1:-1;;;4093:51:26;;4063:26;;4093:15;;:38;;:51;;4132:11;;4093:51;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;4093:51:26;;;;;;;;;;;;:::i;:::-;4166:57;;-1:-1:-1;;;4166:57:26;;4060:84;;-1:-1:-1;4166:15:26;;-1:-1:-1;4166:32:26;;:57;;4060:84;;4214:8;;4166:57;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;4166:57:26;;;;;;;;;;;;:::i;22546:706::-;22685:4;22799:17;22819:27;22839:6;;22819:27;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;22819:19:26;;-1:-1:-1;;;22819:27:26:i;:::-;:92;;22910:1;22874:32;22898:6;;22881:24;;;;;;;;;:::i;:::-;;;;-1:-1:-1;;22881:24:26;;;;;;;;;;22874:32;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;:37;;22819:92;;;22863:1;22819:92;22799:112;;23011:20;23034:26;23054:5;;23034:26;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;23034:19:26;;-1:-1:-1;;;23034:26:26:i;:::-;:90;;23123:1;23088:31;23112:5;;23095:23;;;;;;;;;:::i;:::-;;;;-1:-1:-1;;23095:23:26;;;;;;;;;;23088:31;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;:36;;23034:90;;;23077:1;23034:90;23011:113;;23178:9;23137:12;;1176:1:19;23137:37:26;;;;;;;:::i;:::-;;;;;;;:50;:110;;;;;23235:12;23191;;1215:1:19;23191:40:26;;;;;;;:::i;:::-;;;;;;;:56;23137:110;23130:117;22546:706;-1:-1:-1;;;;;;;;;22546:706:26:o;2943:231::-;2157:5;;-1:-1:-1;;;;;2157:5:26;2143:10;:19;2135:58;;;;-1:-1:-1;;;2135:58:26;;;;;;;:::i;:::-;3029:9:::1;3024:146;3044:21:::0;;::::1;3024:146;;;3087:18;:33;3106:10;;3117:1;3106:13;;;;;;;:::i;:::-;;::::0;;::::1;::::0;;;::::1;;3087:33:::0;;-1:-1:-1;3087:33:26;::::1;::::0;;;;;;-1:-1:-1;3087:33:26;3080:40;;-1:-1:-1;;;;;;3080:40:26::1;::::0;;3149:10;;3160:1;3149:13;;::::1;;;;;:::i;:::-;;;;;;;3133:30;;;;;;;;;;3067:3;;3024:146;;;;2943:231:::0;;:::o;5514:538::-;5635:4;5648:9;5659;5672:15;:33;5706:11;5672:46;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;5647:71;;;;5742:6;5732:16;;:6;:16;;;;5724:74;;;;-1:-1:-1;;;5724:74:26;;32719:2:41;5724:74:26;;;32701:21:41;32758:2;32738:18;;;32731:30;32797:34;32777:18;;;32770:62;-1:-1:-1;;;32848:18:41;;;32841:43;32901:19;;5724:74:26;32517:409:41;5724:74:26;5812:3;:8;;5819:1;5812:8;5804:97;;;;-1:-1:-1;;;5804:97:26;;33133:2:41;5804:97:26;;;33115:21:41;33172:2;33152:18;;;33145:30;33211:34;33191:18;;;33184:62;33282:34;33262:18;;;33255:62;-1:-1:-1;;;33333:19:41;;;33326:43;33386:19;;5804:97:26;32931:480:41;5804:97:26;5915:3;:8;;5922:1;5915:8;5907:97;;;;-1:-1:-1;;;5907:97:26;;33618:2:41;5907:97:26;;;33600:21:41;33657:2;33637:18;;;33630:30;33696:34;33676:18;;;33669:62;33767:34;33747:18;;;33740:62;-1:-1:-1;;;33818:19:41;;;33811:43;33871:19;;5907:97:26;33416:480:41;5907:97:26;6027:3;6017:13;;:6;:13;;;:30;;;;;6044:3;6034:13;;:6;:13;;;6017:30;6010:37;5514:538;-1:-1:-1;;;;;;5514:538:26:o;12991:206::-;13102:4;13121:71;13141:16;13151:6;13141:7;:16;:::i;:::-;13159:19;13180:11;13121:19;:71::i;18636:221::-;18758:4;18777:75;18794:11;18807:31;18840:11;18777:16;:75::i;2649:290::-;2157:5;;-1:-1:-1;;;;;2157:5:26;2143:10;:19;2135:58;;;;-1:-1:-1;;;2135:58:26;;;;;;;:::i;:::-;2774:9:::1;2769:166;2789:21:::0;;::::1;2769:166;;;2861:9;;2871:1;2861:12;;;;;;;:::i;:::-;;;;;;;;;;;;;;:::i;:::-;2825:18;:33;2844:10;;2855:1;2844:13;;;;;;;:::i;:::-;;;;;;;2825:33;;;;;;;;;;;;:48;;;;;-1:-1:-1::0;;;;;2825:48:26::1;;;;;-1:-1:-1::0;;;;;2825:48:26::1;;;;;;2915:9;;2925:1;2915:12;;;;;;;:::i;:::-;;;;;;;;;;;;;;:::i;:::-;-1:-1:-1::0;;;;;2886:42:26::1;2900:10;;2911:1;2900:13;;;;;;;:::i;:::-;;;;;;;2886:42;;;;;;;;;;2812:3;;2769:166;;;;2649:290:::0;;;;:::o;15942:209::-;16054:4;16073:73;16093:16;16103:6;16093:7;:16;:::i;:::-;16111:21;16134:11;16073:19;:73::i;11477:204::-;11587:4;11606:70;11625:16;:7;11635:6;11625:16;:::i;:::-;11643:19;11664:11;11606:18;:70::i;13937:205::-;14055:4;14074:63;14093:7;14102:21;14125:11;14074:18;:63::i;19254:228::-;19379:4;19398:79;19415:11;19428:35;19465:11;19398:16;:79::i;4493:313::-;4601:4;4614:9;4625;4638:15;:33;4672:11;4638:46;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;4613:71;;;;4698:3;:8;;4705:1;4698:8;4690:85;;;;;-1:-1:-1;;;4690:85:26;;34103:2:41;4690:85:26;;;34085:21:41;34122:18;;;34115:30;;;;34181:34;34161:18;;;34154:62;34252:34;34232:18;;;34225:62;34304:19;;4690:85:26;33901:428:41;4690:85:26;-1:-1:-1;4788:13:26;;;;;;;;-1:-1:-1;4493:313:26;;;;:::o;12021:222::-;12154:4;12173:65;12187:7;12196;12205:19;12226:11;12173:13;:65::i;9715:1022::-;9854:4;9867:11;9880;9895:15;:34;9930:11;9943:9;9895:58;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;9866:87;;;;9967:3;9974:1;9967:8;9959:86;;;;-1:-1:-1;;;9959:86:26;;35418:2:41;9959:86:26;;;35400:21:41;35457:2;35437:18;;;35430:30;35496:34;35476:18;;;35469:62;35567:34;35547:18;;;35540:62;-1:-1:-1;;;35618:19:41;;;35611:32;35660:19;;9959:86:26;35216:469:41;9959:86:26;10072:19;10059:9;:32;;;;;;;;:::i;:::-;;:70;;;-1:-1:-1;10108:21:26;10095:9;:34;;;;;;;;:::i;:::-;;10059:70;10051:101;;;;-1:-1:-1;;;10051:101:26;;;;;;;:::i;:::-;10175:19;10162:9;:32;;;;;;;;:::i;:::-;;10158:575;;10212:3;10219:1;10212:8;10204:103;;;;-1:-1:-1;;;10204:103:26;;;;;;;:::i;:::-;10537:35;144:10:19;10537:3:26;:35;:::i;:::-;10526:7;:46;10519:53;;;;;;10158:575;10601:3;10608:1;10601:8;10593:104;;;;-1:-1:-1;;;10593:104:26;;;;;;;:::i;:::-;10712:14;;;-1:-1:-1;10705:21:26;;-1:-1:-1;10705:21:26;25140:204;25230:12;;:62;;-1:-1:-1;;;25230:62:26;;944:1;25230:62;;;37194:25:41;37235:18;;;37228:34;;;-1:-1:-1;;;;;25230:12:26;;;;:24;;37167:18:41;;25230:62:26;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;25215:124;;;;-1:-1:-1;;;25215:124:26;;37475:2:41;25215:124:26;;;37457:21:41;37514:2;37494:18;;;37487:30;37553:33;37533:18;;;37526:61;37604:18;;25215:124:26;37273:355:41;25215:124:26;25140:204;:::o;7481:905::-;7619:4;7632:11;7645;7660:15;:34;7695:11;7708:9;7660:58;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;7631:87;;-1:-1:-1;7631:87:26;-1:-1:-1;7745:19:26;7732:9;:32;;;;;;;;:::i;:::-;;:70;;;-1:-1:-1;7781:21:26;7768:9;:34;;;;;;;;:::i;:::-;;7732:70;7724:101;;;;-1:-1:-1;;;7724:101:26;;;;;;;:::i;:::-;7848:19;7835:9;:32;;;;;;;;:::i;:::-;;7831:551;;7885:8;;7877:91;;;;-1:-1:-1;;;7877:91:26;;37835:2:41;7877:91:26;;;37817:21:41;37874:2;37854:18;;;37847:30;37913:34;37893:18;;;37886:62;37984:34;37964:18;;;37957:62;-1:-1:-1;;;38035:19:41;;;38028:37;38082:19;;7877:91:26;37633:474:41;7877:91:26;8198:35;144:10:19;8198:3:26;:35;:::i;7831:551::-;8262:8;;8254:92;;;;-1:-1:-1;;;8254:92:26;;38314:2:41;8254:92:26;;;38296:21:41;38353:2;38333:18;;;38326:30;38392:34;38372:18;;;38365:62;38463:34;38443:18;;;38436:62;-1:-1:-1;;;38514:19:41;;;38507:38;38562:19;;8254:92:26;38112:475:41;8254:92:26;-1:-1:-1;8361:14:26;;;-1:-1:-1;8354:21:26;;24510:210;24573:7;24607:28;;;:18;:28;;;;;;-1:-1:-1;;;;;24607:28:26;;24641:53;;;;-1:-1:-1;;;24641:53:26;;38794:2:41;24641:53:26;;;38776:21:41;38833:2;38813:18;;;38806:30;-1:-1:-1;;;38852:18:41;;;38845:48;38910:18;;24641:53:26;38592:342:41;24724:214:26;24818:12;;:66;;-1:-1:-1;;;24818:66:26;;:12;:66;;;37194:25:41;37235:18;;;37228:34;;;-1:-1:-1;;;;;24818:12:26;;;;:24;;37167:18:41;;24818:66:26;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;24803:130;;;;-1:-1:-1;;;24803:130:26;;39141:2:41;24803:130:26;;;39123:21:41;39180:2;39160:18;;;39153:30;39219:34;39199:18;;;39192:62;-1:-1:-1;;;39270:18:41;;;39263:31;39311:19;;24803:130:26;38939:397:41;24942:194:26;25028:12;;;:58;;-1:-1:-1;;;25028:58:26;;;;;37194:25:41;;;;37235:18;;;37228:34;;;-1:-1:-1;;;;;25028:12:26;;:24;;37167:18:41;;25028:58:26;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;25013:118;;;;-1:-1:-1;;;25013:118:26;;39543:2:41;25013:118:26;;;39525:21:41;39582:2;39562:18;;;39555:30;39621:31;39601:18;;;39594:59;39670:18;;25013:118:26;39341:353:41;3388:300:26;3506:4;3518:28;3557:12;1140:1:19;3557:44:26;;;;;;;;:::i;:::-;;;;;;;3549:53;;3518:84;;3615:68;3637:20;3659:23;3615:21;:68::i;23256:1250::-;23388:14;;23435:802;23451:27;:11;;:27;:::i;:::-;:34;;23442:6;:43;:78;;;;;23497:16;:23;23489:5;:31;23442:78;23435:802;;;23722:13;23752:27;:11;;:27;:::i;:::-;23780:10;:6;23789:1;23780:10;:::i;:::-;23752:50;23791:10;:6;23800:1;23791:10;:::i;:::-;23752:50;;;;;;;:::i;:::-;23745:58;;;:::i;:::-;23738:66;;;-1:-1:-1;23968:28:26;24100:1;23999:97;24032:27;:11;;:27;:::i;:::-;24060:6;;24067:15;;;;24060:6;24067:15;:::i;:::-;:19;;24085:1;24067:19;:::i;:::-;24032:55;;;;;;;:::i;:::-;24015:73;;;;;;;;;:::i;:::-;;;;-1:-1:-1;;24015:73:26;;;;;;;;;;23999:97;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;:102;;23968:133;;24141:16;24158:5;24141:23;;;;;;;;:::i;:::-;;;;;;;24117:20;:47;24109:78;;;;-1:-1:-1;;;24109:78:26;;40847:2:41;24109:78:26;;;40829:21:41;40886:2;40866:18;;;40859:30;-1:-1:-1;;;40905:18:41;;;40898:48;40963:18;;24109:78:26;40645:342:41;24109:78:26;24205:10;:6;24214:1;24205:10;:::i;:::-;24195:20;;;;;;:::i;:::-;;-1:-1:-1;24223:7:26;;;;:::i;:::-;;;;23522:715;;23435:802;;;24351:27;:11;;:27;:::i;:::-;:34;;24341:6;:44;24333:88;;;;-1:-1:-1;;;24333:88:26;;41494:2:41;24333:88:26;;;41476:21:41;41533:2;41513:18;;;41506:30;41572:33;41552:18;;;41545:61;41623:18;;24333:88:26;41292:355:41;24333:88:26;24444:16;:23;24435:5;:32;24427:74;;;;-1:-1:-1;;;24427:74:26;;41854:2:41;24427:74:26;;;41836:21:41;41893:2;41873:18;;;41866:30;41932:31;41912:18;;;41905:59;41981:18;;24427:74:26;41652:353:41;8390:1321:26;8544:4;8557:11;8570;8585:15;:34;8620:11;8633:9;8585:58;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;8556:87;;;;8668:7;8657;:18;;8649:78;;;;-1:-1:-1;;;8649:78:26;;42212:2:41;8649:78:26;;;42194:21:41;42251:2;42231:18;;;42224:30;42290:34;42270:18;;;42263:62;-1:-1:-1;;;42341:18:41;;;42334:45;42396:19;;8649:78:26;42010:411:41;8649:78:26;8754:19;8741:9;:32;;;;;;;;:::i;:::-;;:70;;;-1:-1:-1;8790:21:26;8777:9;:34;;;;;;;;:::i;:::-;;8741:70;8733:101;;;;-1:-1:-1;;;8733:101:26;;;;;;;:::i;:::-;8857:19;8844:9;:32;;;;;;;;:::i;:::-;;8840:867;;8894:3;8901:1;8894:8;8886:103;;;;-1:-1:-1;;;8886:103:26;;42628:2:41;8886:103:26;;;42610:21:41;42667:2;42647:18;;;42640:30;42706:34;42686:18;;;42679:62;42777:34;42757:18;;;42750:62;-1:-1:-1;;;42828:19:41;;;42821:49;42887:19;;8886:103:26;42426:486:41;8886:103:26;9005:3;9012:1;9005:8;8997:103;;;;-1:-1:-1;;;8997:103:26;;;;;;;:::i;:::-;9331:35;144:10:19;9331:3:26;:35;:::i;:::-;9320:7;:46;:96;;;;-1:-1:-1;9381:35:26;144:10:19;9381:3:26;:35;:::i;:::-;9370:7;:46;9320:96;9313:103;;;;;;8840:867;9445:3;9452:1;9445:8;9437:104;;;;-1:-1:-1;;;9437:104:26;;43119:2:41;9437:104:26;;;43101:21:41;43158:2;43138:18;;;43131:30;43197:34;43177:18;;;43170:62;43268:34;43248:18;;;43241:62;-1:-1:-1;;;43319:19:41;;;43312:50;43379:19;;9437:104:26;42917:487:41;9437:104:26;9557:3;9564:1;9557:8;9549:104;;;;-1:-1:-1;;;9549:104:26;;;;;;;:::i;:::-;9679:3;9668:7;:14;:32;;;;-1:-1:-1;9686:14:26;;;;8390:1321;-1:-1:-1;;;;;8390:1321:26:o;16611:559::-;16759:4;16772:32;16806:30;16840:15;:37;16878:11;16891:9;16840:61;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;16840:61:26;;;;;;;;;;;;:::i;:::-;16771:130;;;;16933:22;16911:11;:18;:44;16907:77;;16972:5;16965:12;;;;;;16907:77;16994:9;16989:160;17013:22;17009:1;:26;16989:160;;;17055:55;17074:11;17086:1;17074:14;;;;;;;;:::i;:::-;;;;;;;17090:16;17107:1;17090:19;;;;;;;;:::i;:::-;;;;;;;234::24;;;;;;;211;;;;;;;;;;:42;;119:139;17055:55:26;17050:93;;17129:5;17122:12;;;;;;;17050:93;17037:3;;16989:160;;;-1:-1:-1;17161:4:26;;16611:559;-1:-1:-1;;;;;;16611:559:26:o;262:101:24:-;338:15;:20;;262:101::o;392:337:20:-;500:4;;546:35;558:23;546:9;:35;:::i;:::-;512:69;;619:9;600:15;:28;;:73;;;;;664:9;638:23;:35;600:73;:124;;;;-1:-1:-1;709:15:20;-1:-1:-1;683:41:20;392:337;-1:-1:-1;;;392:337:20:o;14:159:41:-;78:5;123:2;114:6;109:3;105:16;101:25;98:45;;;139:1;136;129:12;98:45;-1:-1:-1;161:6:41;14:159;-1:-1:-1;14:159:41:o;178:479::-;278:6;286;339:2;327:9;318:7;314:23;310:32;307:52;;;355:1;352;345:12;307:52;400:23;;;-1:-1:-1;498:2:41;483:18;;470:32;-1:-1:-1;;;;;514:30:41;;511:50;;;557:1;554;547:12;511:50;580:71;643:7;634:6;623:9;619:22;580:71;:::i;:::-;570:81;;;178:479;;;;;:::o;854:118::-;940:5;933:13;926:21;919:5;916:32;906:60;;962:1;959;952:12;977:494;1074:6;1082;1135:2;1123:9;1114:7;1110:23;1106:32;1103:52;;;1151:1;1148;1141:12;1103:52;1190:9;1177:23;1209:28;1231:5;1209:28;:::i;:::-;1256:5;-1:-1:-1;1312:2:41;1297:18;;1284:32;-1:-1:-1;;;;;1328:30:41;;1325:50;;;1371:1;1368;1361:12;1476:114;1560:4;1553:5;1549:16;1542:5;1539:27;1529:55;;1580:1;1577;1570:12;1595:496;1693:6;1701;1754:2;1742:9;1733:7;1729:23;1725:32;1722:52;;;1770:1;1767;1760:12;1722:52;1809:9;1796:23;1828:29;1851:5;1828:29;:::i;2096:241::-;2152:6;2205:2;2193:9;2184:7;2180:23;2176:32;2173:52;;;2221:1;2218;2211:12;2173:52;2260:9;2247:23;2279:28;2301:5;2279:28;:::i;2342:131::-;-1:-1:-1;;;;;2417:31:41;;2407:42;;2397:70;;2463:1;2460;2453:12;2478:247;2537:6;2590:2;2578:9;2569:7;2565:23;2561:32;2558:52;;;2606:1;2603;2596:12;2558:52;2645:9;2632:23;2664:31;2689:5;2664:31;:::i;2730:112::-;2816:1;2809:5;2806:12;2796:40;;2832:1;2829;2822:12;2847:690;2983:6;2991;2999;3052:2;3040:9;3031:7;3027:23;3023:32;3020:52;;;3068:1;3065;3058:12;3020:52;3107:9;3094:23;3126:42;3162:5;3126:42;:::i;:::-;3187:5;-1:-1:-1;3244:2:41;3229:18;;3216:32;3257:44;3216:32;3257:44;:::i;:::-;3320:7;-1:-1:-1;3378:2:41;3363:18;;3350:32;-1:-1:-1;;;;;3394:30:41;;3391:50;;;3437:1;3434;3427:12;3391:50;3460:71;3523:7;3514:6;3503:9;3499:22;3460:71;:::i;:::-;3450:81;;;2847:690;;;;;:::o;3542:403::-;3645:6;3698:2;3686:9;3677:7;3673:23;3669:32;3666:52;;;3714:1;3711;3704:12;3666:52;3754:9;3741:23;-1:-1:-1;;;;;3779:6:41;3776:30;3773:50;;;3819:1;3816;3809:12;3773:50;3842:22;;3898:2;3880:16;;;3876:25;3873:45;;;3914:1;3911;3904:12;4395:599;4504:6;4512;4520;4573:2;4561:9;4552:7;4548:23;4544:32;4541:52;;;4589:1;4586;4579:12;4541:52;4634:23;;;-1:-1:-1;4754:2:41;4739:18;;4726:32;;-1:-1:-1;4835:2:41;4820:18;;4807:32;-1:-1:-1;;;;;4851:30:41;;4848:50;;;4894:1;4891;4884:12;4999:365;5090:6;5143:2;5131:9;5122:7;5118:23;5114:32;5111:52;;;5159:1;5156;5149:12;5111:52;5199:9;5186:23;-1:-1:-1;;;;;5224:6:41;5221:30;5218:50;;;5264:1;5261;5254:12;5218:50;5287:71;5350:7;5341:6;5330:9;5326:22;5287:71;:::i;5369:289::-;5411:3;5449:5;5443:12;5476:6;5471:3;5464:19;5532:6;5525:4;5518:5;5514:16;5507:4;5502:3;5498:14;5492:47;5584:1;5577:4;5568:6;5563:3;5559:16;5555:27;5548:38;5647:4;5640:2;5636:7;5631:2;5623:6;5619:15;5615:29;5610:3;5606:39;5602:50;5595:57;;;5369:289;;;;:::o;5663:492::-;5848:2;5837:9;5830:21;5923:1;5919;5914:3;5910:11;5906:19;5897:6;5891:13;5887:39;5882:2;5871:9;5867:18;5860:67;5981:2;5973:6;5969:15;5963:22;5958:2;5947:9;5943:18;5936:50;5811:4;6033:2;6025:6;6021:15;6015:22;6075:4;6068;6057:9;6053:20;6046:34;6097:52;6144:3;6133:9;6129:19;6115:12;6097:52;:::i;6160:127::-;6221:10;6216:3;6212:20;6209:1;6202:31;6252:4;6249:1;6242:15;6276:4;6273:1;6266:15;6292:255;6364:2;6358:9;6406:6;6394:19;;-1:-1:-1;;;;;6428:34:41;;6464:22;;;6425:62;6422:88;;;6490:18;;:::i;:::-;6526:2;6519:22;6292:255;:::o;6552:275::-;6623:2;6617:9;6688:2;6669:13;;-1:-1:-1;;6665:27:41;6653:40;;-1:-1:-1;;;;;6708:34:41;;6744:22;;;6705:62;6702:88;;;6770:18;;:::i;:::-;6806:2;6799:22;6552:275;;-1:-1:-1;6552:275:41:o;6832:182::-;6891:4;-1:-1:-1;;;;;6916:6:41;6913:30;6910:56;;;6946:18;;:::i;:::-;-1:-1:-1;6991:1:41;6987:14;7003:4;6983:25;;6832:182::o;7019:187::-;7068:4;-1:-1:-1;;;;;7093:6:41;7090:30;7087:56;;;7123:18;;:::i;:::-;-1:-1:-1;7189:2:41;7168:15;-1:-1:-1;;7164:29:41;7195:4;7160:40;;7019:187::o;7211:1769::-;7346:6;7354;7407:2;7395:9;7386:7;7382:23;7378:32;7375:52;;;7423:1;7420;7413:12;7375:52;7463:9;7450:23;-1:-1:-1;;;;;7488:6:41;7485:30;7482:50;;;7528:1;7525;7518:12;7482:50;7551:22;;7604:4;7596:13;;7592:27;-1:-1:-1;7582:55:41;;7633:1;7630;7623:12;7582:55;7673:2;7660:16;7696:63;7712:46;7751:6;7712:46;:::i;:::-;7696:63;:::i;:::-;7781:3;7805:6;7800:3;7793:19;7837:4;7832:3;7828:14;7821:21;;7894:4;7884:6;7881:1;7877:14;7873:2;7869:23;7865:34;7851:48;;7922:7;7914:6;7911:19;7908:39;;;7943:1;7940;7933:12;7908:39;7975:4;7971:2;7967:13;7989:749;8005:6;8000:3;7997:15;7989:749;;;8093:3;8080:17;-1:-1:-1;;;;;8116:11:41;8113:35;8110:55;;;8161:1;8158;8151:12;8110:55;8188:20;;8243:2;8235:11;;8231:25;-1:-1:-1;8221:53:41;;8270:1;8267;8260:12;8221:53;8324:4;8320:2;8316:13;8303:27;8358:55;8374:38;8403:8;8374:38;:::i;8358:55::-;8426:25;;;8470:39;8478:17;;;8470:39;8467:52;-1:-1:-1;8464:72:41;;;8532:1;8529;8522:12;8464:72;8595:8;8590:2;8586;8582:11;8575:4;8566:7;8562:18;8549:55;8659:1;8652:4;8641:8;8632:7;8628:22;8624:33;8617:44;8686:7;8681:3;8674:20;;;;8723:4;8718:3;8714:14;8707:21;;8031:4;8026:3;8022:14;8015:21;;7989:749;;;-1:-1:-1;8757:5:41;-1:-1:-1;;;;8815:4:41;8800:20;;8787:34;-1:-1:-1;;;;;8833:32:41;;8830:52;;;8878:1;8875;8868:12;8985:180;9044:6;9097:2;9085:9;9076:7;9072:23;9068:32;9065:52;;;9113:1;9110;9103:12;9065:52;-1:-1:-1;9136:23:41;;8985:180;-1:-1:-1;8985:180:41:o;9378:494::-;9475:6;9483;9536:2;9524:9;9515:7;9511:23;9507:32;9504:52;;;9552:1;9549;9542:12;9504:52;9592:9;9579:23;-1:-1:-1;;;;;9617:6:41;9614:30;9611:50;;;9657:1;9654;9647:12;9611:50;9680:71;9743:7;9734:6;9723:9;9719:22;9680:71;:::i;:::-;9670:81;;;9801:2;9790:9;9786:18;9773:32;9814:28;9836:5;9814:28;:::i;:::-;9861:5;9851:15;;;9378:494;;;;;:::o;9877:1698::-;10070:2;10059:9;10052:21;10033:4;10108:6;10102:13;10151:6;10146:2;10135:9;10131:18;10124:34;10181:52;10228:3;10217:9;10213:19;10199:12;10181:52;:::i;:::-;10167:66;;10282:2;10274:6;10270:15;10264:22;10354:2;10350:7;10338:9;10330:6;10326:22;10322:36;10317:2;10306:9;10302:18;10295:64;10382:41;10416:6;10400:14;10382:41;:::i;:::-;10368:55;;;10472:2;10464:6;10460:15;10454:22;10544:2;10540:7;10528:9;10520:6;10516:22;10512:36;10507:2;10496:9;10492:18;10485:64;10572:41;10606:6;10590:14;10572:41;:::i;:::-;10558:55;;;10662:2;10654:6;10650:15;10644:22;10735:2;10731:7;10719:9;10711:6;10707:22;10703:36;10697:3;10686:9;10682:19;10675:65;10763:41;10797:6;10781:14;10763:41;:::i;:::-;10749:55;;;10853:3;10845:6;10841:16;10835:23;10927:2;10923:7;10911:9;10903:6;10899:22;10895:36;10889:3;10878:9;10874:19;10867:65;10955:41;10989:6;10973:14;10955:41;:::i;:::-;10941:55;;;11045:3;11037:6;11033:16;11027:23;11119:2;11115:7;11103:9;11095:6;11091:22;11087:36;11081:3;11070:9;11066:19;11059:65;11147:41;11181:6;11165:14;11147:41;:::i;:::-;11133:55;;;11237:3;11229:6;11225:16;11219:23;11311:2;11307:7;11295:9;11287:6;11283:22;11279:36;11273:3;11262:9;11258:19;11251:65;11339:41;11373:6;11357:14;11339:41;:::i;:::-;11325:55;;;11429:3;11421:6;11417:16;11411:23;11506:2;11502:7;11490:9;11482:6;11478:22;11474:36;11465:6;11454:9;11450:22;11443:68;11528:41;11562:6;11546:14;11528:41;:::i;:::-;11520:49;9877:1698;-1:-1:-1;;;;;9877:1698:41:o;11580:367::-;11643:8;11653:6;11707:3;11700:4;11692:6;11688:17;11684:27;11674:55;;11725:1;11722;11715:12;11674:55;-1:-1:-1;11748:20:41;;-1:-1:-1;;;;;11780:30:41;;11777:50;;;11823:1;11820;11813:12;11777:50;11860:4;11852:6;11848:17;11836:29;;11920:3;11913:4;11903:6;11900:1;11896:14;11888:6;11884:27;11880:38;11877:47;11874:67;;;11937:1;11934;11927:12;11874:67;11580:367;;;;;:::o;11952:348::-;12004:8;12014:6;12068:3;12061:4;12053:6;12049:17;12045:27;12035:55;;12086:1;12083;12076:12;12035:55;-1:-1:-1;12109:20:41;;-1:-1:-1;;;;;12141:30:41;;12138:50;;;12184:1;12181;12174:12;12138:50;12221:4;12213:6;12209:17;12197:29;;12273:3;12266:4;12257:6;12249;12245:19;12241:30;12238:39;12235:59;;;12290:1;12287;12280:12;12305:1047;12433:6;12441;12449;12457;12465;12473;12526:2;12514:9;12505:7;12501:23;12497:32;12494:52;;;12542:1;12539;12532:12;12494:52;12582:9;12569:23;-1:-1:-1;;;;;12607:6:41;12604:30;12601:50;;;12647:1;12644;12637:12;12601:50;12686:70;12748:7;12739:6;12728:9;12724:22;12686:70;:::i;:::-;12775:8;;-1:-1:-1;12660:96:41;-1:-1:-1;;12863:2:41;12848:18;;12835:32;-1:-1:-1;;;;;12879:32:41;;12876:52;;;12924:1;12921;12914:12;12876:52;12963:61;13016:7;13005:8;12994:9;12990:24;12963:61;:::i;:::-;13043:8;;-1:-1:-1;12937:87:41;-1:-1:-1;;13131:2:41;13116:18;;13103:32;-1:-1:-1;;;;;13147:32:41;;13144:52;;;13192:1;13189;13182:12;13144:52;13231:61;13284:7;13273:8;13262:9;13258:24;13231:61;:::i;:::-;12305:1047;;;;-1:-1:-1;12305:1047:41;;-1:-1:-1;12305:1047:41;;13311:8;;12305:1047;-1:-1:-1;;;12305:1047:41:o;13357:437::-;13443:6;13451;13504:2;13492:9;13483:7;13479:23;13475:32;13472:52;;;13520:1;13517;13510:12;13472:52;13560:9;13547:23;-1:-1:-1;;;;;13585:6:41;13582:30;13579:50;;;13625:1;13622;13615:12;13579:50;13664:70;13726:7;13717:6;13706:9;13702:22;13664:70;:::i;:::-;13753:8;;13638:96;;-1:-1:-1;13357:437:41;-1:-1:-1;;;;13357:437:41:o;13799:633::-;13904:6;13912;13920;13973:2;13961:9;13952:7;13948:23;13944:32;13941:52;;;13989:1;13986;13979:12;13941:52;14028:9;14015:23;14047:29;14070:5;14047:29;:::i;:::-;14095:5;-1:-1:-1;14152:2:41;14137:18;;14124:32;14165:31;14124:32;14165:31;:::i;14437:768::-;14559:6;14567;14575;14583;14636:2;14624:9;14615:7;14611:23;14607:32;14604:52;;;14652:1;14649;14642:12;14604:52;14692:9;14679:23;-1:-1:-1;;;;;14717:6:41;14714:30;14711:50;;;14757:1;14754;14747:12;14711:50;14796:70;14858:7;14849:6;14838:9;14834:22;14796:70;:::i;:::-;14885:8;;-1:-1:-1;14770:96:41;-1:-1:-1;;14973:2:41;14958:18;;14945:32;-1:-1:-1;;;;;14989:32:41;;14986:52;;;15034:1;15031;15024:12;14986:52;15073:72;15137:7;15126:8;15115:9;15111:24;15073:72;:::i;:::-;14437:768;;;;-1:-1:-1;15164:8:41;-1:-1:-1;;;;14437:768:41:o;15441:266::-;15529:6;15524:3;15517:19;15581:6;15574:5;15567:4;15562:3;15558:14;15545:43;-1:-1:-1;15633:1:41;15608:16;;;15626:4;15604:27;;;15597:38;;;;15689:2;15668:15;;;-1:-1:-1;;15664:29:41;15655:39;;;15651:50;;15441:266::o;15712:603::-;15775:3;15832:5;15819:19;15917:2;15913:7;15905:5;15889:14;15885:26;15881:40;15861:18;15857:65;15847:93;;15936:1;15933;15926:12;15847:93;15964:30;;16075:4;16062:18;;;16017:21;-1:-1:-1;;;;;16092:30:41;;16089:50;;;16135:1;16132;16125:12;16089:50;16184:6;16168:14;16164:27;16155:7;16151:41;16148:61;;;16205:1;16202;16195:12;16148:61;16230:4;16225:3;16218:17;16251:58;16303:4;16298:3;16294:14;16286:6;16277:7;16251:58;:::i;16320:291::-;16519:2;16508:9;16501:21;16482:4;16539:66;16601:2;16590:9;16586:18;16578:6;16539:66;:::i;16616:358::-;16692:6;16700;16753:2;16741:9;16732:7;16728:23;16724:32;16721:52;;;16769:1;16766;16759:12;16721:52;16814:16;;16899:2;16884:18;;16878:25;16814:16;;-1:-1:-1;16912:30:41;16878:25;16912:30;:::i;17695:127::-;17756:10;17751:3;17747:20;17744:1;17737:31;17787:4;17784:1;17777:15;17811:4;17808:1;17801:15;17827:151;17917:4;17910:12;;;17896;;;17892:31;;17935:14;;17932:40;;;17952:18;;:::i;17983:350::-;18185:2;18167:21;;;18224:2;18204:18;;;18197:30;18263:28;18258:2;18243:18;;18236:56;18324:2;18309:18;;17983:350::o;18743:125::-;18808:9;;;18829:10;;;18826:36;;;18842:18;;:::i;18873:782::-;19015:6;19023;19031;19039;19047;19100:3;19088:9;19079:7;19075:23;19071:33;19068:53;;;19117:1;19114;19107:12;19068:53;19162:16;;19247:2;19232:18;;19226:25;19162:16;;-1:-1:-1;19282:1:41;19270:14;;19260:42;;19298:1;19295;19288:12;19260:42;19394:2;19379:18;;19373:25;19490:2;19475:18;;19469:25;19565:3;19550:19;;19544:26;19321:7;;-1:-1:-1;19373:25:41;;-1:-1:-1;19469:25:41;-1:-1:-1;19579:44:41;19544:26;19579:44;:::i;:::-;19642:7;19632:17;;;18873:782;;;;;;;;:::o;19660:127::-;19721:10;19716:3;19712:20;19709:1;19702:31;19752:4;19749:1;19742:15;19776:4;19773:1;19766:15;19792:148;19880:4;19859:12;;;19873;;;19855:31;;19898:13;;19895:39;;;19914:18;;:::i;20292:339::-;20400:4;20458:11;20445:25;20552:2;20548:7;20537:8;20521:14;20517:29;20513:43;20493:18;20489:68;20479:96;;20571:1;20568;20561:12;20479:96;20592:33;;;;;20292:339;-1:-1:-1;;20292:339:41:o;20636:545::-;20729:4;20735:6;20795:11;20782:25;20889:2;20885:7;20874:8;20858:14;20854:29;20850:43;20830:18;20826:68;20816:96;;20908:1;20905;20898:12;20816:96;20935:33;;20987:20;;;-1:-1:-1;;;;;;21019:30:41;;21016:50;;;21062:1;21059;21052:12;21016:50;21095:4;21083:17;;-1:-1:-1;21146:1:41;21142:14;;;21126;21122:35;21112:46;;21109:66;;;21171:1;21168;21161:12;21186:127;21247:10;21242:3;21238:20;21235:1;21228:31;21278:4;21275:1;21268:15;21302:4;21299:1;21292:15;21318:332;21418:4;21476:11;21463:25;21570:3;21566:8;21555;21539:14;21535:29;21531:44;21511:18;21507:69;21497:97;;21590:1;21587;21580:12;22075:522;22153:4;22159:6;22219:11;22206:25;22313:2;22309:7;22298:8;22282:14;22278:29;22274:43;22254:18;22250:68;22240:96;;22332:1;22329;22322:12;22240:96;22359:33;;22411:20;;;-1:-1:-1;;;;;;22443:30:41;;22440:50;;;22486:1;22483;22476:12;22440:50;22519:4;22507:17;;-1:-1:-1;22550:14:41;22546:27;;;22536:38;;22533:58;;;22587:1;22584;22577:12;22954:128;23021:9;;;23042:11;;;23039:37;;;23056:18;;:::i;23087:355::-;23208:9;23219;23261:8;23249:10;23246:24;23243:44;;;23283:1;23280;23273:12;23243:44;23312:6;23302:8;23299:20;23296:40;;;23332:1;23329;23322:12;23296:40;-1:-1:-1;;23374:1:41;23370:18;;;23358:31;;23411:25;;;;;-1:-1:-1;23087:355:41:o;23447:329::-;23545:4;23603:11;23590:25;23697:2;23693:7;23682:8;23666:14;23662:29;23658:43;23638:18;23634:68;23624:96;;23716:1;23713;23706:12;25128:624;25373:2;25362:9;25355:21;25336:4;25399:61;25456:2;25445:9;25441:18;25433:6;25425;25399:61;:::i;:::-;25496:22;;;25491:2;25476:18;;25469:50;25528:22;;;-1:-1:-1;;;;;25562:31:41;;25559:51;;;25606:1;25603;25596:12;25559:51;25640:6;25637:1;25633:14;25694:6;25686;25681:2;25673:6;25669:15;25656:45;25722:19;25743:2;25718:28;;25128:624;-1:-1:-1;;;;;;25128:624:41:o;25757:245::-;25824:6;25877:2;25865:9;25856:7;25852:23;25848:32;25845:52;;;25893:1;25890;25883:12;25845:52;25925:9;25919:16;25944:28;25966:5;25944:28;:::i;26007:377::-;26082:6;26090;26143:2;26131:9;26122:7;26118:23;26114:32;26111:52;;;26159:1;26156;26149:12;26111:52;26191:9;26185:16;26210:29;26233:5;26210:29;:::i;:::-;26308:2;26293:18;;26287:25;26258:5;;-1:-1:-1;26321:31:41;26287:25;26321:31;:::i;26822:514::-;26875:5;26928:3;26921:4;26913:6;26909:17;26905:27;26895:55;;26946:1;26943;26936:12;26895:55;26979:6;26973:13;27018:4;27010:6;27006:17;27047:1;27068:53;27084:36;27113:6;27084:36;:::i;27068:53::-;27057:64;;27146:6;27137:7;27130:23;27186:3;27177:6;27172:3;27168:16;27165:25;27162:45;;;27203:1;27200;27193:12;27162:45;27247:6;27242:3;27235:4;27226:7;27222:18;27216:38;27303:1;27274:20;;;27296:4;27270:31;27263:42;;;;-1:-1:-1;27278:7:41;26822:514;-1:-1:-1;;;26822:514:41:o;27341:335::-;27420:6;27473:2;27461:9;27452:7;27448:23;27444:32;27441:52;;;27489:1;27486;27479:12;27441:52;27522:9;27516:16;-1:-1:-1;;;;;27547:6:41;27544:30;27541:50;;;27587:1;27584;27577:12;27541:50;27610:60;27662:7;27653:6;27642:9;27638:22;27610:60;:::i;27681:226::-;27836:2;27825:9;27818:21;27799:4;27856:45;27897:2;27886:9;27882:18;27874:6;27856:45;:::i;27912:577::-;28010:6;28018;28026;28079:2;28067:9;28058:7;28054:23;28050:32;28047:52;;;28095:1;28092;28085:12;28047:52;28127:9;28121:16;28146:31;28171:5;28146:31;:::i;:::-;28267:2;28252:18;;28246:25;28341:2;28326:18;;28320:25;28196:5;;-1:-1:-1;28246:25:41;-1:-1:-1;;;;;;28357:30:41;;28354:50;;;28400:1;28397;28390:12;28354:50;28423:60;28475:7;28466:6;28455:9;28451:22;28423:60;:::i;28851:553::-;28948:6;28956;29009:2;28997:9;28988:7;28984:23;28980:32;28977:52;;;29025:1;29022;29015:12;28977:52;29058:9;29052:16;-1:-1:-1;;;;;29083:6:41;29080:30;29077:50;;;29123:1;29120;29113:12;29077:50;29146:60;29198:7;29189:6;29178:9;29174:22;29146:60;:::i;:::-;29136:70;;;29252:2;29241:9;29237:18;29231:25;-1:-1:-1;;;;;29271:8:41;29268:32;29265:52;;;29313:1;29310;29303:12;29265:52;29336:62;29390:7;29379:8;29368:9;29364:24;29336:62;:::i;29409:307::-;29586:2;29575:9;29568:21;29549:4;29606:45;29647:2;29636:9;29632:18;29624:6;29606:45;:::i;:::-;29598:53;;29701:6;29694:14;29687:22;29682:2;29671:9;29667:18;29660:50;29409:307;;;;;:::o;29721:1972::-;29823:6;29876:2;29864:9;29855:7;29851:23;29847:32;29844:52;;;29892:1;29889;29882:12;29844:52;29925:9;29919:16;-1:-1:-1;;;;;29950:6:41;29947:30;29944:50;;;29990:1;29987;29980:12;29944:50;30013:22;;30069:6;30051:16;;;30047:29;30044:49;;;30089:1;30086;30079:12;30044:49;30115:22;;:::i;:::-;30168:2;30162:9;-1:-1:-1;;;;;30186:8:41;30183:32;30180:52;;;30228:1;30225;30218:12;30180:52;30255:55;30302:7;30291:8;30287:2;30283:17;30255:55;:::i;:::-;30248:5;30241:70;;30350:2;30346;30342:11;30336:18;-1:-1:-1;;;;;30369:8:41;30366:32;30363:52;;;30411:1;30408;30401:12;30363:52;30447:55;30494:7;30483:8;30479:2;30475:17;30447:55;:::i;:::-;30442:2;30435:5;30431:14;30424:79;;30542:2;30538;30534:11;30528:18;-1:-1:-1;;;;;30561:8:41;30558:32;30555:52;;;30603:1;30600;30593:12;30555:52;30639:55;30686:7;30675:8;30671:2;30667:17;30639:55;:::i;:::-;30634:2;30627:5;30623:14;30616:79;;30734:2;30730;30726:11;30720:18;-1:-1:-1;;;;;30753:8:41;30750:32;30747:52;;;30795:1;30792;30785:12;30747:52;30831:55;30878:7;30867:8;30863:2;30859:17;30831:55;:::i;:::-;30826:2;30819:5;30815:14;30808:79;;30926:3;30922:2;30918:12;30912:19;-1:-1:-1;;;;;30946:8:41;30943:32;30940:52;;;30988:1;30985;30978:12;30940:52;31025:55;31072:7;31061:8;31057:2;31053:17;31025:55;:::i;:::-;31019:3;31012:5;31008:15;31001:80;;31120:3;31116:2;31112:12;31106:19;-1:-1:-1;;;;;31140:8:41;31137:32;31134:52;;;31182:1;31179;31172:12;31134:52;31219:55;31266:7;31255:8;31251:2;31247:17;31219:55;:::i;:::-;31213:3;31206:5;31202:15;31195:80;;31314:3;31310:2;31306:12;31300:19;-1:-1:-1;;;;;31334:8:41;31331:32;31328:52;;;31376:1;31373;31366:12;31328:52;31413:55;31460:7;31449:8;31445:2;31441:17;31413:55;:::i;:::-;31407:3;31400:5;31396:15;31389:80;;31508:3;31504:2;31500:12;31494:19;-1:-1:-1;;;;;31528:8:41;31525:32;31522:52;;;31570:1;31567;31560:12;31522:52;31607:55;31654:7;31643:8;31639:2;31635:17;31607:55;:::i;:::-;31601:3;31590:15;;31583:80;-1:-1:-1;31594:5:41;29721:1972;-1:-1:-1;;;;29721:1972:41:o;31698:273::-;31883:6;31875;31870:3;31857:33;31839:3;31909:16;;31934:13;;;31909:16;31698:273;-1:-1:-1;31698:273:41:o;31976:301::-;32105:3;32143:6;32137:13;32189:6;32182:4;32174:6;32170:17;32165:3;32159:37;32251:1;32215:16;;32240:13;;;-1:-1:-1;32215:16:41;31976:301;-1:-1:-1;31976:301:41:o;32282:230::-;32352:6;32405:2;32393:9;32384:7;32380:23;32376:32;32373:52;;;32421:1;32418;32411:12;32373:52;-1:-1:-1;32466:16:41;;32282:230;-1:-1:-1;32282:230:41:o;34334:529::-;34574:2;34563:9;34556:21;34537:4;34594:66;34656:2;34645:9;34641:18;34633:6;34594:66;:::i;:::-;34586:74;;34690:2;34682:6;34679:14;34669:145;;34736:10;34731:3;34727:20;34724:1;34717:31;34771:4;34768:1;34761:15;34799:4;34796:1;34789:15;34669:145;34850:6;34845:2;34834:9;34830:18;34823:34;34334:529;;;;;:::o;34868:343::-;34947:6;34955;35008:2;34996:9;34987:7;34983:23;34979:32;34976:52;;;35024:1;35021;35014:12;34976:52;-1:-1:-1;;35069:16:41;;35175:2;35160:18;;;35154:25;35069:16;;35154:25;;-1:-1:-1;34868:343:41:o;35690:342::-;35892:2;35874:21;;;35931:2;35911:18;;;35904:30;-1:-1:-1;;;35965:2:41;35950:18;;35943:48;36023:2;36008:18;;35690:342::o;36037:486::-;36239:2;36221:21;;;36278:2;36258:18;;;36251:30;36317:34;36312:2;36297:18;;36290:62;36388:34;36383:2;36368:18;;36361:62;-1:-1:-1;;;36454:3:41;36439:19;;36432:49;36513:3;36498:19;;36037:486::o;36528:487::-;36730:2;36712:21;;;36769:2;36749:18;;;36742:30;36808:34;36803:2;36788:18;;36781:62;36879:34;36874:2;36859:18;;36852:62;-1:-1:-1;;;36945:3:41;36930:19;;36923:50;37005:3;36990:19;;36528:487::o;39699:331::-;39804:9;39815;39857:8;39845:10;39842:24;39839:44;;;39879:1;39876;39869:12;39839:44;39908:6;39898:8;39895:20;39892:40;;;39928:1;39925;39918:12;39892:40;-1:-1:-1;;39954:23:41;;;39999:25;;;;;-1:-1:-1;39699:331:41:o;40035:323::-;40155:19;;-1:-1:-1;;;;;;40192:24:41;;;40236:1;40228:10;;40225:127;;;-1:-1:-1;;;;;;40297:1:41;40293:11;;;40290:1;40286:19;40282:41;;;40274:50;;40270:72;;-1:-1:-1;40225:127:41;;40035:323;;;;:::o;40992:155::-;41083:6;41060:14;;;41076;;;41056:35;;41103:15;;41100:41;;;41121:18;;:::i;41152:135::-;41191:3;41212:17;;;41209:43;;41232:18;;:::i;:::-;-1:-1:-1;41279:1:41;41268:13;;41152:135::o;43409:1173::-;43523:6;43531;43584:2;43572:9;43563:7;43559:23;43555:32;43552:52;;;43600:1;43597;43590:12;43552:52;43633:9;43627:16;-1:-1:-1;;;;;43658:6:41;43655:30;43652:50;;;43698:1;43695;43688:12;43652:50;43721:22;;43774:4;43766:13;;43762:27;-1:-1:-1;43752:55:41;;43803:1;43800;43793:12;43752:55;43836:2;43830:9;43859:63;43875:46;43914:6;43875:46;:::i;43859:63::-;43944:3;43968:6;43963:3;43956:19;44000:4;43995:3;43991:14;43984:21;;44057:4;44047:6;44044:1;44040:14;44036:2;44032:23;44028:34;44014:48;;44085:7;44077:6;44074:19;44071:39;;;44106:1;44103;44096:12;44071:39;44138:4;44134:2;44130:13;44152:308;44168:6;44163:3;44160:15;44152:308;;;44249:3;44243:10;-1:-1:-1;;;;;44272:11:41;44269:35;44266:55;;;44317:1;44314;44307:12;44266:55;44346:69;44407:7;44400:4;44386:11;44382:2;44378:20;44374:31;44346:69;:::i;:::-;44334:82;;-1:-1:-1;44445:4:41;44436:14;;;;44185;44152:308;;;-1:-1:-1;44546:4:41;44531:20;;;;44525:27;44479:5;;44525:27;;-1:-1:-1;;;;;;43409:1173:41:o",
|
|
700
|
-
linkReferences: {
|
|
701
|
-
"src/InputsExtractor.sol": {
|
|
702
|
-
InputsExtractor: [
|
|
703
|
-
{ start: 1462, length: 20 },
|
|
704
|
-
{ start: 2121, length: 20 },
|
|
705
|
-
{ start: 4415, length: 20 },
|
|
706
|
-
{ start: 4717, length: 20 },
|
|
707
|
-
{ start: 4840, length: 20 },
|
|
708
|
-
{ start: 5307, length: 20 },
|
|
709
|
-
{ start: 5430, length: 20 },
|
|
710
|
-
{ start: 6191, length: 20 },
|
|
711
|
-
{ start: 7153, length: 20 },
|
|
712
|
-
{ start: 7430, length: 20 },
|
|
713
|
-
{ start: 8076, length: 20 },
|
|
714
|
-
{ start: 9683, length: 20 },
|
|
715
|
-
{ start: 10437, length: 20 }
|
|
716
|
-
]
|
|
717
|
-
}
|
|
718
|
-
}
|
|
719
|
-
},
|
|
720
|
-
methodIdentifiers: {
|
|
721
|
-
"CERTIFICATE_REGISTRY_ID()": "41a0e2c2",
|
|
722
|
-
"CIRCUIT_REGISTRY_ID()": "6c40d5d6",
|
|
723
|
-
"SANCTIONS_REGISTRY_ID()": "652ba33d",
|
|
724
|
-
"addVerifiers(bytes32[],address[])": "a6df2c01",
|
|
725
|
-
"admin()": "f851a440",
|
|
726
|
-
"enforceSanctionsRoot(bool,(bytes))": "074bd4e2",
|
|
727
|
-
"getBoundData((bytes))": "712f5e1c",
|
|
728
|
-
"getDisclosedData((bytes),bool)": "822d00f8",
|
|
729
|
-
"isAgeAbove(uint8,(bytes))": "307ad1ee",
|
|
730
|
-
"isAgeAboveOrEqual(uint8,(bytes))": "e3e6525e",
|
|
731
|
-
"isAgeBelow(uint8,(bytes))": "0ed1cb51",
|
|
732
|
-
"isAgeBelowOrEqual(uint8,(bytes))": "64ce783d",
|
|
733
|
-
"isAgeBetween(uint8,uint8,(bytes))": "90e44dd7",
|
|
734
|
-
"isAgeEqual(uint8,(bytes))": "5c057843",
|
|
735
|
-
"isBirthdateAfter(uint256,(bytes))": "b1bab8f2",
|
|
736
|
-
"isBirthdateAfterOrEqual(uint256,(bytes))": "3e11569a",
|
|
737
|
-
"isBirthdateBefore(uint256,(bytes))": "9facc38a",
|
|
738
|
-
"isBirthdateBeforeOrEqual(uint256,(bytes))": "3a1e38bd",
|
|
739
|
-
"isBirthdateBetween(uint256,uint256,(bytes))": "e8ba6705",
|
|
740
|
-
"isBirthdateEqual(uint256,(bytes))": "782f2497",
|
|
741
|
-
"isExpiryDateAfter(uint256,(bytes))": "22eb54d5",
|
|
742
|
-
"isExpiryDateAfterOrEqual(uint256,(bytes))": "c17361df",
|
|
743
|
-
"isExpiryDateBefore(uint256,(bytes))": "a72a8a49",
|
|
744
|
-
"isExpiryDateBeforeOrEqual(uint256,(bytes))": "02298d56",
|
|
745
|
-
"isExpiryDateBetween(uint256,uint256,(bytes))": "4736a714",
|
|
746
|
-
"isExpiryDateEqual(uint256,(bytes))": "518e9b92",
|
|
747
|
-
"isFaceMatchVerified(uint8,uint8,(bytes))": "29354ea6",
|
|
748
|
-
"isIssuingCountryIn(string[],(bytes))": "7db36adf",
|
|
749
|
-
"isIssuingCountryOut(string[],(bytes))": "d2bbe05f",
|
|
750
|
-
"isNationalityIn(string[],(bytes))": "7f303f26",
|
|
751
|
-
"isNationalityOut(string[],(bytes))": "a30470b2",
|
|
752
|
-
"paused()": "5c975abb",
|
|
753
|
-
"removeVerifiers(bytes32[])": "8d6937b8",
|
|
754
|
-
"rootRegistry()": "b96b161c",
|
|
755
|
-
"setPaused(bool)": "16c38b3c",
|
|
756
|
-
"transferAdmin(address)": "75829def",
|
|
757
|
-
"updateRootRegistry(address)": "18677f2a",
|
|
758
|
-
"verifyProof(((bytes32,bytes,bytes32[]),(bytes),(uint256,string,string,bool)))": "4035b41d",
|
|
759
|
-
"verifyScopes(bytes32[],string,string)": "847755e3",
|
|
760
|
-
"vkeyHashToVerifier(bytes32)": "8163f231"
|
|
761
|
-
},
|
|
762
|
-
rawMetadata: '{"compiler":{"version":"0.8.29+commit.ab55807c"},"language":"Solidity","output":{"abi":[{"inputs":[{"internalType":"address","name":"_rootRegistry","type":"address"}],"stateMutability":"nonpayable","type":"constructor"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"oldAdmin","type":"address"},{"indexed":true,"internalType":"address","name":"newAdmin","type":"address"}],"name":"AdminUpdated","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"bytes32","name":"certificateRegistryRoot","type":"bytes32"}],"name":"CertificateRegistryRootAdded","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"bytes32","name":"certificateRegistryRoot","type":"bytes32"}],"name":"CertificateRegistryRootRemoved","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"bool","name":"paused","type":"bool"}],"name":"PausedStatusChanged","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"bytes32","name":"_sanctionsTreesRoot","type":"bytes32"}],"name":"SanctionsTreesRootUpdates","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"bytes32","name":"vkeyHash","type":"bytes32"},{"indexed":true,"internalType":"address","name":"verifier","type":"address"}],"name":"VerifierAdded","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"bytes32","name":"vkeyHash","type":"bytes32"}],"name":"VerifierRemoved","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"admin","type":"address"},{"indexed":false,"internalType":"uint256","name":"timestamp","type":"uint256"}],"name":"ZKPassportVerifierDeployed","type":"event"},{"inputs":[],"name":"CERTIFICATE_REGISTRY_ID","outputs":[{"internalType":"bytes32","name":"","type":"bytes32"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"CIRCUIT_REGISTRY_ID","outputs":[{"internalType":"bytes32","name":"","type":"bytes32"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"SANCTIONS_REGISTRY_ID","outputs":[{"internalType":"bytes32","name":"","type":"bytes32"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"bytes32[]","name":"vkeyHashes","type":"bytes32[]"},{"internalType":"address[]","name":"verifiers","type":"address[]"}],"name":"addVerifiers","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"admin","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"bool","name":"isStrict","type":"bool"},{"components":[{"internalType":"bytes","name":"committedInputs","type":"bytes"}],"internalType":"struct Commitments","name":"commitments","type":"tuple"}],"name":"enforceSanctionsRoot","outputs":[],"stateMutability":"view","type":"function"},{"inputs":[{"components":[{"internalType":"bytes","name":"committedInputs","type":"bytes"}],"internalType":"struct Commitments","name":"commitments","type":"tuple"}],"name":"getBoundData","outputs":[{"components":[{"internalType":"address","name":"senderAddress","type":"address"},{"internalType":"uint256","name":"chainId","type":"uint256"},{"internalType":"string","name":"customData","type":"string"}],"internalType":"struct BoundData","name":"boundData","type":"tuple"}],"stateMutability":"pure","type":"function"},{"inputs":[{"components":[{"internalType":"bytes","name":"committedInputs","type":"bytes"}],"internalType":"struct Commitments","name":"commitments","type":"tuple"},{"internalType":"bool","name":"isIDCard","type":"bool"}],"name":"getDisclosedData","outputs":[{"components":[{"internalType":"string","name":"name","type":"string"},{"internalType":"string","name":"issuingCountry","type":"string"},{"internalType":"string","name":"nationality","type":"string"},{"internalType":"string","name":"gender","type":"string"},{"internalType":"string","name":"birthDate","type":"string"},{"internalType":"string","name":"expiryDate","type":"string"},{"internalType":"string","name":"documentNumber","type":"string"},{"internalType":"string","name":"documentType","type":"string"}],"internalType":"struct DisclosedData","name":"disclosedData","type":"tuple"}],"stateMutability":"pure","type":"function"},{"inputs":[{"internalType":"uint8","name":"minAge","type":"uint8"},{"components":[{"internalType":"bytes","name":"committedInputs","type":"bytes"}],"internalType":"struct Commitments","name":"commitments","type":"tuple"}],"name":"isAgeAbove","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint8","name":"minAge","type":"uint8"},{"components":[{"internalType":"bytes","name":"committedInputs","type":"bytes"}],"internalType":"struct Commitments","name":"commitments","type":"tuple"}],"name":"isAgeAboveOrEqual","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint8","name":"maxAge","type":"uint8"},{"components":[{"internalType":"bytes","name":"committedInputs","type":"bytes"}],"internalType":"struct Commitments","name":"commitments","type":"tuple"}],"name":"isAgeBelow","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint8","name":"maxAge","type":"uint8"},{"components":[{"internalType":"bytes","name":"committedInputs","type":"bytes"}],"internalType":"struct Commitments","name":"commitments","type":"tuple"}],"name":"isAgeBelowOrEqual","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint8","name":"minAge","type":"uint8"},{"internalType":"uint8","name":"maxAge","type":"uint8"},{"components":[{"internalType":"bytes","name":"committedInputs","type":"bytes"}],"internalType":"struct Commitments","name":"commitments","type":"tuple"}],"name":"isAgeBetween","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint8","name":"age","type":"uint8"},{"components":[{"internalType":"bytes","name":"committedInputs","type":"bytes"}],"internalType":"struct Commitments","name":"commitments","type":"tuple"}],"name":"isAgeEqual","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"minDate","type":"uint256"},{"components":[{"internalType":"bytes","name":"committedInputs","type":"bytes"}],"internalType":"struct Commitments","name":"commitments","type":"tuple"}],"name":"isBirthdateAfter","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"minDate","type":"uint256"},{"components":[{"internalType":"bytes","name":"committedInputs","type":"bytes"}],"internalType":"struct Commitments","name":"commitments","type":"tuple"}],"name":"isBirthdateAfterOrEqual","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"maxDate","type":"uint256"},{"components":[{"internalType":"bytes","name":"committedInputs","type":"bytes"}],"internalType":"struct Commitments","name":"commitments","type":"tuple"}],"name":"isBirthdateBefore","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"maxDate","type":"uint256"},{"components":[{"internalType":"bytes","name":"committedInputs","type":"bytes"}],"internalType":"struct Commitments","name":"commitments","type":"tuple"}],"name":"isBirthdateBeforeOrEqual","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"minDate","type":"uint256"},{"internalType":"uint256","name":"maxDate","type":"uint256"},{"components":[{"internalType":"bytes","name":"committedInputs","type":"bytes"}],"internalType":"struct Commitments","name":"commitments","type":"tuple"}],"name":"isBirthdateBetween","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"date","type":"uint256"},{"components":[{"internalType":"bytes","name":"committedInputs","type":"bytes"}],"internalType":"struct Commitments","name":"commitments","type":"tuple"}],"name":"isBirthdateEqual","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"minDate","type":"uint256"},{"components":[{"internalType":"bytes","name":"committedInputs","type":"bytes"}],"internalType":"struct Commitments","name":"commitments","type":"tuple"}],"name":"isExpiryDateAfter","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"minDate","type":"uint256"},{"components":[{"internalType":"bytes","name":"committedInputs","type":"bytes"}],"internalType":"struct Commitments","name":"commitments","type":"tuple"}],"name":"isExpiryDateAfterOrEqual","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"maxDate","type":"uint256"},{"components":[{"internalType":"bytes","name":"committedInputs","type":"bytes"}],"internalType":"struct Commitments","name":"commitments","type":"tuple"}],"name":"isExpiryDateBefore","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"maxDate","type":"uint256"},{"components":[{"internalType":"bytes","name":"committedInputs","type":"bytes"}],"internalType":"struct Commitments","name":"commitments","type":"tuple"}],"name":"isExpiryDateBeforeOrEqual","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"minDate","type":"uint256"},{"internalType":"uint256","name":"maxDate","type":"uint256"},{"components":[{"internalType":"bytes","name":"committedInputs","type":"bytes"}],"internalType":"struct Commitments","name":"commitments","type":"tuple"}],"name":"isExpiryDateBetween","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"date","type":"uint256"},{"components":[{"internalType":"bytes","name":"committedInputs","type":"bytes"}],"internalType":"struct Commitments","name":"commitments","type":"tuple"}],"name":"isExpiryDateEqual","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"enum FaceMatchMode","name":"faceMatchMode","type":"uint8"},{"internalType":"enum OS","name":"os","type":"uint8"},{"components":[{"internalType":"bytes","name":"committedInputs","type":"bytes"}],"internalType":"struct Commitments","name":"commitments","type":"tuple"}],"name":"isFaceMatchVerified","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"pure","type":"function"},{"inputs":[{"internalType":"string[]","name":"countryList","type":"string[]"},{"components":[{"internalType":"bytes","name":"committedInputs","type":"bytes"}],"internalType":"struct Commitments","name":"commitments","type":"tuple"}],"name":"isIssuingCountryIn","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"pure","type":"function"},{"inputs":[{"internalType":"string[]","name":"countryList","type":"string[]"},{"components":[{"internalType":"bytes","name":"committedInputs","type":"bytes"}],"internalType":"struct Commitments","name":"commitments","type":"tuple"}],"name":"isIssuingCountryOut","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"pure","type":"function"},{"inputs":[{"internalType":"string[]","name":"countryList","type":"string[]"},{"components":[{"internalType":"bytes","name":"committedInputs","type":"bytes"}],"internalType":"struct Commitments","name":"commitments","type":"tuple"}],"name":"isNationalityIn","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"pure","type":"function"},{"inputs":[{"internalType":"string[]","name":"countryList","type":"string[]"},{"components":[{"internalType":"bytes","name":"committedInputs","type":"bytes"}],"internalType":"struct Commitments","name":"commitments","type":"tuple"}],"name":"isNationalityOut","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"pure","type":"function"},{"inputs":[],"name":"paused","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"bytes32[]","name":"vkeyHashes","type":"bytes32[]"}],"name":"removeVerifiers","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"rootRegistry","outputs":[{"internalType":"contract IRootRegistry","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"bool","name":"_paused","type":"bool"}],"name":"setPaused","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"newAdmin","type":"address"}],"name":"transferAdmin","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"_rootRegistry","type":"address"}],"name":"updateRootRegistry","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"components":[{"components":[{"internalType":"bytes32","name":"vkeyHash","type":"bytes32"},{"internalType":"bytes","name":"proof","type":"bytes"},{"internalType":"bytes32[]","name":"publicInputs","type":"bytes32[]"}],"internalType":"struct ProofVerificationData","name":"proofVerificationData","type":"tuple"},{"components":[{"internalType":"bytes","name":"committedInputs","type":"bytes"}],"internalType":"struct Commitments","name":"commitments","type":"tuple"},{"components":[{"internalType":"uint256","name":"validityPeriodInSeconds","type":"uint256"},{"internalType":"string","name":"domain","type":"string"},{"internalType":"string","name":"scope","type":"string"},{"internalType":"bool","name":"devMode","type":"bool"}],"internalType":"struct ServiceConfig","name":"serviceConfig","type":"tuple"}],"internalType":"struct ProofVerificationParams","name":"params","type":"tuple"}],"name":"verifyProof","outputs":[{"internalType":"bool","name":"isValid","type":"bool"},{"internalType":"bytes32","name":"uniqueIdentifier","type":"bytes32"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"bytes32[]","name":"publicInputs","type":"bytes32[]"},{"internalType":"string","name":"domain","type":"string"},{"internalType":"string","name":"scope","type":"string"}],"name":"verifyScopes","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"pure","type":"function"},{"inputs":[{"internalType":"bytes32","name":"","type":"bytes32"}],"name":"vkeyHashToVerifier","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"}],"devdoc":{"kind":"dev","methods":{"constructor":{"details":"Constructor"},"enforceSanctionsRoot(bool,(bytes))":{"params":{"commitments":"The commitments","isStrict":"Whether the sanctions check was strict or not"}},"getBoundData((bytes))":{"params":{"commitments":"The commitments"},"returns":{"boundData":"The data bound to the proof"}},"getDisclosedData((bytes),bool)":{"params":{"commitments":"The commitments","isIDCard":"Whether the proof is an ID card"},"returns":{"disclosedData":"The data disclosed by the proof"}},"isAgeAbove(uint8,(bytes))":{"params":{"commitments":"The commitments","minAge":"The age must be above this age"},"returns":{"_0":"True if the age is above the given age, false otherwise"}},"isAgeAboveOrEqual(uint8,(bytes))":{"params":{"commitments":"The commitments","minAge":"The age must be above or equal to this age"},"returns":{"_0":"True if the age is above or equal to the given age, false otherwise"}},"isAgeBelow(uint8,(bytes))":{"params":{"commitments":"The commitments","maxAge":"The age must be below this age"},"returns":{"_0":"True if the age is below the given age, false otherwise"}},"isAgeBelowOrEqual(uint8,(bytes))":{"params":{"commitments":"The commitments","maxAge":"The age must be below or equal to this age"},"returns":{"_0":"True if the age is below or equal to the given age, false otherwise"}},"isAgeBetween(uint8,uint8,(bytes))":{"params":{"commitments":"The commitments","maxAge":"The age must be less than or equal to this age","minAge":"The age must be greater than or equal to this age"},"returns":{"_0":"True if the age is in the given range, false otherwise"}},"isAgeEqual(uint8,(bytes))":{"params":{"age":"The age must be equal to this age","commitments":"The commitments"},"returns":{"_0":"True if the age is equal to the given age, false otherwise"}},"isBirthdateAfter(uint256,(bytes))":{"params":{"commitments":"The commitments","minDate":"The birthdate must be after this date"},"returns":{"_0":"True if the birthdate is after the given date, false otherwise"}},"isBirthdateAfterOrEqual(uint256,(bytes))":{"params":{"commitments":"The commitments","minDate":"The birthdate must be after or equal to this date"},"returns":{"_0":"True if the birthdate is after or equal to the given date, false otherwise"}},"isBirthdateBefore(uint256,(bytes))":{"params":{"commitments":"The commitments","maxDate":"The birthdate must be before this date"},"returns":{"_0":"True if the birthdate is before the given date, false otherwise"}},"isBirthdateBeforeOrEqual(uint256,(bytes))":{"params":{"commitments":"The commitments","maxDate":"The birthdate must be before or equal to this date"},"returns":{"_0":"True if the birthdate is before or equal to the given date, false otherwise"}},"isBirthdateBetween(uint256,uint256,(bytes))":{"params":{"commitments":"The commitments","maxDate":"The birthdate must be before or equal to this date","minDate":"The birthdate must be after or equal to this date"},"returns":{"_0":"True if the birthdate is between the given dates, false otherwise"}},"isBirthdateEqual(uint256,(bytes))":{"params":{"commitments":"The commitments","date":"The birthdate must be equal to this date"},"returns":{"_0":"True if the birthdate is equal to the given date, false otherwise"}},"isExpiryDateAfter(uint256,(bytes))":{"params":{"commitments":"The commitments","minDate":"The expiry date must be after this date"},"returns":{"_0":"True if the expiry date is after the given date, false otherwise"}},"isExpiryDateAfterOrEqual(uint256,(bytes))":{"params":{"commitments":"The commitments","minDate":"The expiry date must be after or equal to this date"},"returns":{"_0":"True if the expiry date is after or equal to the given date, false otherwise"}},"isExpiryDateBefore(uint256,(bytes))":{"params":{"commitments":"The commitments","maxDate":"The expiry date must be before this date"},"returns":{"_0":"True if the expiry date is before the given date, false otherwise"}},"isExpiryDateBeforeOrEqual(uint256,(bytes))":{"params":{"commitments":"The commitments","maxDate":"The expiry date must be before or equal to this date"},"returns":{"_0":"True if the expiry date is before or equal to the given date, false otherwise"}},"isExpiryDateBetween(uint256,uint256,(bytes))":{"params":{"commitments":"The commitments","maxDate":"The expiry date must be before or equal to this date","minDate":"The expiry date must be after or equal to this date"},"returns":{"_0":"True if the expiry date is between the given dates, false otherwise"}},"isExpiryDateEqual(uint256,(bytes))":{"params":{"commitments":"The commitments","date":"The expiry date must be equal to this date"},"returns":{"_0":"True if the expiry date is equal to the given date, false otherwise"}},"isFaceMatchVerified(uint8,uint8,(bytes))":{"params":{"commitments":"The commitments","faceMatchMode":"The FaceMatch mode expected to be used in the verification","os":"The operating system on which the proof should have been generated (Any (0), iOS (1), Android (2))"},"returns":{"_0":"True if the proof is tied to a valid FaceMatch verification, false otherwise"}},"isIssuingCountryIn(string[],(bytes))":{"params":{"commitments":"The commitments","countryList":"The list of countries (needs to match exactly the list of countries in the proof)"},"returns":{"_0":"True if the issuing country is in the list of countries, false otherwise"}},"isIssuingCountryOut(string[],(bytes))":{"params":{"commitments":"The commitments","countryList":"The list of countries (needs to match exactly the list of countries in the proof) Note: The list of countries must be sorted in alphabetical order"},"returns":{"_0":"True if the issuing country is not in the list of countries, false otherwise"}},"isNationalityIn(string[],(bytes))":{"params":{"commitments":"The commitments","countryList":"The list of countries (needs to match exactly the list of countries in the proof)"},"returns":{"_0":"True if the nationality is in the list of countries, false otherwise"}},"isNationalityOut(string[],(bytes))":{"params":{"commitments":"The commitments","countryList":"The list of countries (needs to match exactly the list of countries in the proof) Note: The list of countries must be sorted in alphabetical order"},"returns":{"_0":"True if the nationality is not in the list of countries, false otherwise"}},"verifyProof(((bytes32,bytes,bytes32[]),(bytes),(uint256,string,string,bool)))":{"params":{"params":"The proof verification parameters"},"returns":{"isValid":"True if the proof is valid, false otherwise","uniqueIdentifier":"The unique identifier associated to the identity document that generated the proof"}},"verifyScopes(bytes32[],string,string)":{"params":{"domain":"The domain to check against","publicInputs":"The public inputs of the proof","scope":"The scope to check against"},"returns":{"_0":"True if the proof was generated for the given domain and scope, false otherwise"}}},"version":1},"userdoc":{"kind":"user","methods":{"enforceSanctionsRoot(bool,(bytes))":{"notice":"Enforces that the proof checks against the expected sanction list(s)"},"getBoundData((bytes))":{"notice":"Gets the data bound to the proof"},"getDisclosedData((bytes),bool)":{"notice":"Gets the data disclosed by the proof"},"isAgeAbove(uint8,(bytes))":{"notice":"Checks if the age is above the given age"},"isAgeAboveOrEqual(uint8,(bytes))":{"notice":"Checks if the age is above or equal to the given age"},"isAgeBelow(uint8,(bytes))":{"notice":"Checks if the age is below the given age"},"isAgeBelowOrEqual(uint8,(bytes))":{"notice":"Checks if the age is below or equal to the given age"},"isAgeBetween(uint8,uint8,(bytes))":{"notice":"Checks if the age is in the given range"},"isAgeEqual(uint8,(bytes))":{"notice":"Checks if the age is equal to the given age"},"isBirthdateAfter(uint256,(bytes))":{"notice":"Checks if the birthdate is after the given date"},"isBirthdateAfterOrEqual(uint256,(bytes))":{"notice":"Checks if the birthdate is after or equal to the given date"},"isBirthdateBefore(uint256,(bytes))":{"notice":"Checks if the birthdate is before the given date"},"isBirthdateBeforeOrEqual(uint256,(bytes))":{"notice":"Checks if the birthdate is before or equal to the given date"},"isBirthdateBetween(uint256,uint256,(bytes))":{"notice":"Checks if the birthdate is between the given dates"},"isBirthdateEqual(uint256,(bytes))":{"notice":"Checks if the birthdate is equal to the given date"},"isExpiryDateAfter(uint256,(bytes))":{"notice":"Checks if the expiry date is after the given date"},"isExpiryDateAfterOrEqual(uint256,(bytes))":{"notice":"Checks if the expiry date is after or equal to the given date"},"isExpiryDateBefore(uint256,(bytes))":{"notice":"Checks if the expiry date is before the given date"},"isExpiryDateBeforeOrEqual(uint256,(bytes))":{"notice":"Checks if the expiry date is before or equal to the given date"},"isExpiryDateBetween(uint256,uint256,(bytes))":{"notice":"Checks if the expiry date is between the given dates"},"isExpiryDateEqual(uint256,(bytes))":{"notice":"Checks if the expiry date is equal to the given date"},"isFaceMatchVerified(uint8,uint8,(bytes))":{"notice":"Checks if the proof is tied to a FaceMatch verification"},"isIssuingCountryIn(string[],(bytes))":{"notice":"Checks if the issuing country is in the list of countries"},"isIssuingCountryOut(string[],(bytes))":{"notice":"Checks if the issuing country is not in the list of countries"},"isNationalityIn(string[],(bytes))":{"notice":"Checks if the nationality is in the list of countries"},"isNationalityOut(string[],(bytes))":{"notice":"Checks if the nationality is not in the list of countries"},"verifyProof(((bytes32,bytes,bytes32[]),(bytes),(uint256,string,string,bool)))":{"notice":"Verifies a proof from ZKPassport"},"verifyScopes(bytes32[],string,string)":{"notice":"Verifies that the proof was generated for the given domain and scope"}},"version":1}},"settings":{"compilationTarget":{"src/ZKPassportVerifier.sol":"ZKPassportVerifier"},"evmVersion":"prague","libraries":{},"metadata":{"bytecodeHash":"ipfs"},"optimizer":{"enabled":true,"runs":200},"remappings":[":forge-std/=lib/forge-std/src/"]},"sources":{"src/Constants.sol":{"keccak256":"0xfa558b70129f1b70e1ba49402ba966d3d4f5cea2b31c09f442a0e0a5dc7fe897","license":"Apache-2.0","urls":["bzz-raw://56b21abbd540f3e9a9a21183f10f565f271fae65bc81843afae85c8801f2694c","dweb:/ipfs/QmcbYeyTLvwFKYRBsCSVSxyuoNkZE38BDKMA6nGKb5CXN2"]},"src/DateUtils.sol":{"keccak256":"0xc04aef2f5732f8c3b28077a0af19e2fbbdec2f9178f3800563bf64ccdecefc77","license":"Apache-2.0","urls":["bzz-raw://bcc2610f3bdd3411fc040d39efe9e68f826b48986b2df7987f3adb6a1467c833","dweb:/ipfs/Qmc7uyW8Y7ekaKEdjd3kU9e1eDcCiAqsujGc5ZavuzGx4w"]},"src/IRootRegistry.sol":{"keccak256":"0xa9955e80821ca9ccbdf7d05a8ce9a3e237b4771e1f6e09190ed1c803a5e1e516","license":"MIT","urls":["bzz-raw://fd9fc9fbd7057a6bcc16a682e52be9ebd012954898626a11f0a0e8788644789d","dweb:/ipfs/QmZYpMRHdv4gMCNXCQtGQu8XqRVtNR9Kgkzh7u1YMpvrEB"]},"src/InputsExtractor.sol":{"keccak256":"0x8c55d03f86334deb61086145bc04b56ee96d1b4a6bead8dae7651f9439754b23","license":"Apache-2.0","urls":["bzz-raw://fd4a6cf59604a726c314d144f4f6eff1cffa8764c9468a19f41e97fd89bb8c08","dweb:/ipfs/QmWim6m6zdHj2JzyMnjYNfwaX33DgPwhSLUp197FqqDeMh"]},"src/StringUtils.sol":{"keccak256":"0x0174454c28003f489bcdf636c93ccb512d80f3dbdca7485e11b51cf2c8ebfff1","license":"Apache-2.0","urls":["bzz-raw://92ea71064b8199c9a05cbe279cf42adaaa7b29604d960a84754d3d997b1c2342","dweb:/ipfs/QmcsrqRJ2YZABCZHzS782RqKmWEegSK1LCmTTjJ94gdh5q"]},"src/Types.sol":{"keccak256":"0xc1654e29b719d2a04cd2c605092e3a91933498af0453260c47fb6900d7a09c5d","license":"Apache-2.0","urls":["bzz-raw://600e7ad78cca07976f2a97ad573992b47163e93350b3856927a5d7af85f96f65","dweb:/ipfs/Qmc9NGHiBHHx9qJy9aWMmuvM5Y5buPV4yM2HkMfBqrqeKi"]},"src/ZKPassportVerifier.sol":{"keccak256":"0xa384e5f6f29c1919528a5db15e7f258e7dbe56cab981440883a4b933b7e6ebd7","license":"Apache-2.0","urls":["bzz-raw://2fc689c80dcff94cce5590b282aa34cbf5f5cd4e02ecf16890a664dc76e017bf","dweb:/ipfs/Qme8nkFNsbJrEDF9xSiaaVv1Tb365PDPoGZ2iqAFamzVrh"]},"src/ultra-honk-verifiers/OuterCount4.sol":{"keccak256":"0x7f4fe82593dcb379ffb63af53cbf9aa7f8ade43b04492dded7fb8b2b45a3164f","license":"Apache-2.0","urls":["bzz-raw://1f094b7652c2118e3884c9696562f1d113f1d60374666d7fa0d59b3af245de56","dweb:/ipfs/QmP1GbNKdTXgoPCWQYQgHcjPDfEvfjune7jUa6uvpccmkb"]}},"version":1}',
|
|
763
|
-
metadata: {
|
|
764
|
-
compiler: { version: "0.8.29+commit.ab55807c" },
|
|
765
|
-
language: "Solidity",
|
|
766
|
-
output: {
|
|
767
|
-
abi: [
|
|
768
|
-
{
|
|
769
|
-
inputs: [{ internalType: "address", name: "_rootRegistry", type: "address" }],
|
|
770
|
-
stateMutability: "nonpayable",
|
|
771
|
-
type: "constructor"
|
|
772
|
-
},
|
|
773
|
-
{
|
|
774
|
-
inputs: [
|
|
775
|
-
{ internalType: "address", name: "oldAdmin", type: "address", indexed: true },
|
|
776
|
-
{ internalType: "address", name: "newAdmin", type: "address", indexed: true }
|
|
777
|
-
],
|
|
778
|
-
type: "event",
|
|
779
|
-
name: "AdminUpdated",
|
|
780
|
-
anonymous: false
|
|
781
|
-
},
|
|
782
|
-
{
|
|
783
|
-
inputs: [
|
|
784
|
-
{
|
|
785
|
-
internalType: "bytes32",
|
|
786
|
-
name: "certificateRegistryRoot",
|
|
787
|
-
type: "bytes32",
|
|
788
|
-
indexed: true
|
|
789
|
-
}
|
|
790
|
-
],
|
|
791
|
-
type: "event",
|
|
792
|
-
name: "CertificateRegistryRootAdded",
|
|
793
|
-
anonymous: false
|
|
794
|
-
},
|
|
795
|
-
{
|
|
796
|
-
inputs: [
|
|
797
|
-
{
|
|
798
|
-
internalType: "bytes32",
|
|
799
|
-
name: "certificateRegistryRoot",
|
|
800
|
-
type: "bytes32",
|
|
801
|
-
indexed: true
|
|
802
|
-
}
|
|
803
|
-
],
|
|
804
|
-
type: "event",
|
|
805
|
-
name: "CertificateRegistryRootRemoved",
|
|
806
|
-
anonymous: false
|
|
807
|
-
},
|
|
808
|
-
{
|
|
809
|
-
inputs: [
|
|
810
|
-
{ internalType: "bool", name: "paused", type: "bool", indexed: false }
|
|
811
|
-
],
|
|
812
|
-
type: "event",
|
|
813
|
-
name: "PausedStatusChanged",
|
|
814
|
-
anonymous: false
|
|
815
|
-
},
|
|
816
|
-
{
|
|
817
|
-
inputs: [
|
|
818
|
-
{
|
|
819
|
-
internalType: "bytes32",
|
|
820
|
-
name: "_sanctionsTreesRoot",
|
|
821
|
-
type: "bytes32",
|
|
822
|
-
indexed: true
|
|
823
|
-
}
|
|
824
|
-
],
|
|
825
|
-
type: "event",
|
|
826
|
-
name: "SanctionsTreesRootUpdates",
|
|
827
|
-
anonymous: false
|
|
828
|
-
},
|
|
829
|
-
{
|
|
830
|
-
inputs: [
|
|
831
|
-
{ internalType: "bytes32", name: "vkeyHash", type: "bytes32", indexed: true },
|
|
832
|
-
{ internalType: "address", name: "verifier", type: "address", indexed: true }
|
|
833
|
-
],
|
|
834
|
-
type: "event",
|
|
835
|
-
name: "VerifierAdded",
|
|
836
|
-
anonymous: false
|
|
837
|
-
},
|
|
838
|
-
{
|
|
839
|
-
inputs: [
|
|
840
|
-
{ internalType: "bytes32", name: "vkeyHash", type: "bytes32", indexed: true }
|
|
841
|
-
],
|
|
842
|
-
type: "event",
|
|
843
|
-
name: "VerifierRemoved",
|
|
844
|
-
anonymous: false
|
|
845
|
-
},
|
|
846
|
-
{
|
|
847
|
-
inputs: [
|
|
848
|
-
{ internalType: "address", name: "admin", type: "address", indexed: true },
|
|
849
|
-
{ internalType: "uint256", name: "timestamp", type: "uint256", indexed: false }
|
|
850
|
-
],
|
|
851
|
-
type: "event",
|
|
852
|
-
name: "ZKPassportVerifierDeployed",
|
|
853
|
-
anonymous: false
|
|
854
|
-
},
|
|
855
|
-
{
|
|
856
|
-
inputs: [],
|
|
857
|
-
stateMutability: "view",
|
|
858
|
-
type: "function",
|
|
859
|
-
name: "CERTIFICATE_REGISTRY_ID",
|
|
860
|
-
outputs: [{ internalType: "bytes32", name: "", type: "bytes32" }]
|
|
861
|
-
},
|
|
862
|
-
{
|
|
863
|
-
inputs: [],
|
|
864
|
-
stateMutability: "view",
|
|
865
|
-
type: "function",
|
|
866
|
-
name: "CIRCUIT_REGISTRY_ID",
|
|
867
|
-
outputs: [{ internalType: "bytes32", name: "", type: "bytes32" }]
|
|
868
|
-
},
|
|
869
|
-
{
|
|
870
|
-
inputs: [],
|
|
871
|
-
stateMutability: "view",
|
|
872
|
-
type: "function",
|
|
873
|
-
name: "SANCTIONS_REGISTRY_ID",
|
|
874
|
-
outputs: [{ internalType: "bytes32", name: "", type: "bytes32" }]
|
|
875
|
-
},
|
|
876
|
-
{
|
|
877
|
-
inputs: [
|
|
878
|
-
{ internalType: "bytes32[]", name: "vkeyHashes", type: "bytes32[]" },
|
|
879
|
-
{ internalType: "address[]", name: "verifiers", type: "address[]" }
|
|
880
|
-
],
|
|
881
|
-
stateMutability: "nonpayable",
|
|
882
|
-
type: "function",
|
|
883
|
-
name: "addVerifiers"
|
|
884
|
-
},
|
|
885
|
-
{
|
|
886
|
-
inputs: [],
|
|
887
|
-
stateMutability: "view",
|
|
888
|
-
type: "function",
|
|
889
|
-
name: "admin",
|
|
890
|
-
outputs: [{ internalType: "address", name: "", type: "address" }]
|
|
891
|
-
},
|
|
892
|
-
{
|
|
893
|
-
inputs: [
|
|
894
|
-
{ internalType: "bool", name: "isStrict", type: "bool" },
|
|
895
|
-
{
|
|
896
|
-
internalType: "struct Commitments",
|
|
897
|
-
name: "commitments",
|
|
898
|
-
type: "tuple",
|
|
899
|
-
components: [
|
|
900
|
-
{ internalType: "bytes", name: "committedInputs", type: "bytes" }
|
|
901
|
-
]
|
|
902
|
-
}
|
|
903
|
-
],
|
|
904
|
-
stateMutability: "view",
|
|
905
|
-
type: "function",
|
|
906
|
-
name: "enforceSanctionsRoot"
|
|
907
|
-
},
|
|
908
|
-
{
|
|
909
|
-
inputs: [
|
|
910
|
-
{
|
|
911
|
-
internalType: "struct Commitments",
|
|
912
|
-
name: "commitments",
|
|
913
|
-
type: "tuple",
|
|
914
|
-
components: [
|
|
915
|
-
{ internalType: "bytes", name: "committedInputs", type: "bytes" }
|
|
916
|
-
]
|
|
917
|
-
}
|
|
918
|
-
],
|
|
919
|
-
stateMutability: "pure",
|
|
920
|
-
type: "function",
|
|
921
|
-
name: "getBoundData",
|
|
922
|
-
outputs: [
|
|
923
|
-
{
|
|
924
|
-
internalType: "struct BoundData",
|
|
925
|
-
name: "boundData",
|
|
926
|
-
type: "tuple",
|
|
927
|
-
components: [
|
|
928
|
-
{ internalType: "address", name: "senderAddress", type: "address" },
|
|
929
|
-
{ internalType: "uint256", name: "chainId", type: "uint256" },
|
|
930
|
-
{ internalType: "string", name: "customData", type: "string" }
|
|
931
|
-
]
|
|
932
|
-
}
|
|
933
|
-
]
|
|
934
|
-
},
|
|
935
|
-
{
|
|
936
|
-
inputs: [
|
|
937
|
-
{
|
|
938
|
-
internalType: "struct Commitments",
|
|
939
|
-
name: "commitments",
|
|
940
|
-
type: "tuple",
|
|
941
|
-
components: [
|
|
942
|
-
{ internalType: "bytes", name: "committedInputs", type: "bytes" }
|
|
943
|
-
]
|
|
944
|
-
},
|
|
945
|
-
{ internalType: "bool", name: "isIDCard", type: "bool" }
|
|
946
|
-
],
|
|
947
|
-
stateMutability: "pure",
|
|
948
|
-
type: "function",
|
|
949
|
-
name: "getDisclosedData",
|
|
950
|
-
outputs: [
|
|
951
|
-
{
|
|
952
|
-
internalType: "struct DisclosedData",
|
|
953
|
-
name: "disclosedData",
|
|
954
|
-
type: "tuple",
|
|
955
|
-
components: [
|
|
956
|
-
{ internalType: "string", name: "name", type: "string" },
|
|
957
|
-
{ internalType: "string", name: "issuingCountry", type: "string" },
|
|
958
|
-
{ internalType: "string", name: "nationality", type: "string" },
|
|
959
|
-
{ internalType: "string", name: "gender", type: "string" },
|
|
960
|
-
{ internalType: "string", name: "birthDate", type: "string" },
|
|
961
|
-
{ internalType: "string", name: "expiryDate", type: "string" },
|
|
962
|
-
{ internalType: "string", name: "documentNumber", type: "string" },
|
|
963
|
-
{ internalType: "string", name: "documentType", type: "string" }
|
|
964
|
-
]
|
|
965
|
-
}
|
|
966
|
-
]
|
|
967
|
-
},
|
|
968
|
-
{
|
|
969
|
-
inputs: [
|
|
970
|
-
{ internalType: "uint8", name: "minAge", type: "uint8" },
|
|
971
|
-
{
|
|
972
|
-
internalType: "struct Commitments",
|
|
973
|
-
name: "commitments",
|
|
974
|
-
type: "tuple",
|
|
975
|
-
components: [
|
|
976
|
-
{ internalType: "bytes", name: "committedInputs", type: "bytes" }
|
|
977
|
-
]
|
|
978
|
-
}
|
|
979
|
-
],
|
|
980
|
-
stateMutability: "view",
|
|
981
|
-
type: "function",
|
|
982
|
-
name: "isAgeAbove",
|
|
983
|
-
outputs: [{ internalType: "bool", name: "", type: "bool" }]
|
|
984
|
-
},
|
|
985
|
-
{
|
|
986
|
-
inputs: [
|
|
987
|
-
{ internalType: "uint8", name: "minAge", type: "uint8" },
|
|
988
|
-
{
|
|
989
|
-
internalType: "struct Commitments",
|
|
990
|
-
name: "commitments",
|
|
991
|
-
type: "tuple",
|
|
992
|
-
components: [
|
|
993
|
-
{ internalType: "bytes", name: "committedInputs", type: "bytes" }
|
|
994
|
-
]
|
|
995
|
-
}
|
|
996
|
-
],
|
|
997
|
-
stateMutability: "view",
|
|
998
|
-
type: "function",
|
|
999
|
-
name: "isAgeAboveOrEqual",
|
|
1000
|
-
outputs: [{ internalType: "bool", name: "", type: "bool" }]
|
|
1001
|
-
},
|
|
1002
|
-
{
|
|
1003
|
-
inputs: [
|
|
1004
|
-
{ internalType: "uint8", name: "maxAge", type: "uint8" },
|
|
1005
|
-
{
|
|
1006
|
-
internalType: "struct Commitments",
|
|
1007
|
-
name: "commitments",
|
|
1008
|
-
type: "tuple",
|
|
1009
|
-
components: [
|
|
1010
|
-
{ internalType: "bytes", name: "committedInputs", type: "bytes" }
|
|
1011
|
-
]
|
|
1012
|
-
}
|
|
1013
|
-
],
|
|
1014
|
-
stateMutability: "view",
|
|
1015
|
-
type: "function",
|
|
1016
|
-
name: "isAgeBelow",
|
|
1017
|
-
outputs: [{ internalType: "bool", name: "", type: "bool" }]
|
|
1018
|
-
},
|
|
1019
|
-
{
|
|
1020
|
-
inputs: [
|
|
1021
|
-
{ internalType: "uint8", name: "maxAge", type: "uint8" },
|
|
1022
|
-
{
|
|
1023
|
-
internalType: "struct Commitments",
|
|
1024
|
-
name: "commitments",
|
|
1025
|
-
type: "tuple",
|
|
1026
|
-
components: [
|
|
1027
|
-
{ internalType: "bytes", name: "committedInputs", type: "bytes" }
|
|
1028
|
-
]
|
|
1029
|
-
}
|
|
1030
|
-
],
|
|
1031
|
-
stateMutability: "view",
|
|
1032
|
-
type: "function",
|
|
1033
|
-
name: "isAgeBelowOrEqual",
|
|
1034
|
-
outputs: [{ internalType: "bool", name: "", type: "bool" }]
|
|
1035
|
-
},
|
|
1036
|
-
{
|
|
1037
|
-
inputs: [
|
|
1038
|
-
{ internalType: "uint8", name: "minAge", type: "uint8" },
|
|
1039
|
-
{ internalType: "uint8", name: "maxAge", type: "uint8" },
|
|
1040
|
-
{
|
|
1041
|
-
internalType: "struct Commitments",
|
|
1042
|
-
name: "commitments",
|
|
1043
|
-
type: "tuple",
|
|
1044
|
-
components: [
|
|
1045
|
-
{ internalType: "bytes", name: "committedInputs", type: "bytes" }
|
|
1046
|
-
]
|
|
1047
|
-
}
|
|
1048
|
-
],
|
|
1049
|
-
stateMutability: "view",
|
|
1050
|
-
type: "function",
|
|
1051
|
-
name: "isAgeBetween",
|
|
1052
|
-
outputs: [{ internalType: "bool", name: "", type: "bool" }]
|
|
1053
|
-
},
|
|
1054
|
-
{
|
|
1055
|
-
inputs: [
|
|
1056
|
-
{ internalType: "uint8", name: "age", type: "uint8" },
|
|
1057
|
-
{
|
|
1058
|
-
internalType: "struct Commitments",
|
|
1059
|
-
name: "commitments",
|
|
1060
|
-
type: "tuple",
|
|
1061
|
-
components: [
|
|
1062
|
-
{ internalType: "bytes", name: "committedInputs", type: "bytes" }
|
|
1063
|
-
]
|
|
1064
|
-
}
|
|
1065
|
-
],
|
|
1066
|
-
stateMutability: "view",
|
|
1067
|
-
type: "function",
|
|
1068
|
-
name: "isAgeEqual",
|
|
1069
|
-
outputs: [{ internalType: "bool", name: "", type: "bool" }]
|
|
1070
|
-
},
|
|
1071
|
-
{
|
|
1072
|
-
inputs: [
|
|
1073
|
-
{ internalType: "uint256", name: "minDate", type: "uint256" },
|
|
1074
|
-
{
|
|
1075
|
-
internalType: "struct Commitments",
|
|
1076
|
-
name: "commitments",
|
|
1077
|
-
type: "tuple",
|
|
1078
|
-
components: [
|
|
1079
|
-
{ internalType: "bytes", name: "committedInputs", type: "bytes" }
|
|
1080
|
-
]
|
|
1081
|
-
}
|
|
1082
|
-
],
|
|
1083
|
-
stateMutability: "view",
|
|
1084
|
-
type: "function",
|
|
1085
|
-
name: "isBirthdateAfter",
|
|
1086
|
-
outputs: [{ internalType: "bool", name: "", type: "bool" }]
|
|
1087
|
-
},
|
|
1088
|
-
{
|
|
1089
|
-
inputs: [
|
|
1090
|
-
{ internalType: "uint256", name: "minDate", type: "uint256" },
|
|
1091
|
-
{
|
|
1092
|
-
internalType: "struct Commitments",
|
|
1093
|
-
name: "commitments",
|
|
1094
|
-
type: "tuple",
|
|
1095
|
-
components: [
|
|
1096
|
-
{ internalType: "bytes", name: "committedInputs", type: "bytes" }
|
|
1097
|
-
]
|
|
1098
|
-
}
|
|
1099
|
-
],
|
|
1100
|
-
stateMutability: "view",
|
|
1101
|
-
type: "function",
|
|
1102
|
-
name: "isBirthdateAfterOrEqual",
|
|
1103
|
-
outputs: [{ internalType: "bool", name: "", type: "bool" }]
|
|
1104
|
-
},
|
|
1105
|
-
{
|
|
1106
|
-
inputs: [
|
|
1107
|
-
{ internalType: "uint256", name: "maxDate", type: "uint256" },
|
|
1108
|
-
{
|
|
1109
|
-
internalType: "struct Commitments",
|
|
1110
|
-
name: "commitments",
|
|
1111
|
-
type: "tuple",
|
|
1112
|
-
components: [
|
|
1113
|
-
{ internalType: "bytes", name: "committedInputs", type: "bytes" }
|
|
1114
|
-
]
|
|
1115
|
-
}
|
|
1116
|
-
],
|
|
1117
|
-
stateMutability: "view",
|
|
1118
|
-
type: "function",
|
|
1119
|
-
name: "isBirthdateBefore",
|
|
1120
|
-
outputs: [{ internalType: "bool", name: "", type: "bool" }]
|
|
1121
|
-
},
|
|
1122
|
-
{
|
|
1123
|
-
inputs: [
|
|
1124
|
-
{ internalType: "uint256", name: "maxDate", type: "uint256" },
|
|
1125
|
-
{
|
|
1126
|
-
internalType: "struct Commitments",
|
|
1127
|
-
name: "commitments",
|
|
1128
|
-
type: "tuple",
|
|
1129
|
-
components: [
|
|
1130
|
-
{ internalType: "bytes", name: "committedInputs", type: "bytes" }
|
|
1131
|
-
]
|
|
1132
|
-
}
|
|
1133
|
-
],
|
|
1134
|
-
stateMutability: "view",
|
|
1135
|
-
type: "function",
|
|
1136
|
-
name: "isBirthdateBeforeOrEqual",
|
|
1137
|
-
outputs: [{ internalType: "bool", name: "", type: "bool" }]
|
|
1138
|
-
},
|
|
1139
|
-
{
|
|
1140
|
-
inputs: [
|
|
1141
|
-
{ internalType: "uint256", name: "minDate", type: "uint256" },
|
|
1142
|
-
{ internalType: "uint256", name: "maxDate", type: "uint256" },
|
|
1143
|
-
{
|
|
1144
|
-
internalType: "struct Commitments",
|
|
1145
|
-
name: "commitments",
|
|
1146
|
-
type: "tuple",
|
|
1147
|
-
components: [
|
|
1148
|
-
{ internalType: "bytes", name: "committedInputs", type: "bytes" }
|
|
1149
|
-
]
|
|
1150
|
-
}
|
|
1151
|
-
],
|
|
1152
|
-
stateMutability: "view",
|
|
1153
|
-
type: "function",
|
|
1154
|
-
name: "isBirthdateBetween",
|
|
1155
|
-
outputs: [{ internalType: "bool", name: "", type: "bool" }]
|
|
1156
|
-
},
|
|
1157
|
-
{
|
|
1158
|
-
inputs: [
|
|
1159
|
-
{ internalType: "uint256", name: "date", type: "uint256" },
|
|
1160
|
-
{
|
|
1161
|
-
internalType: "struct Commitments",
|
|
1162
|
-
name: "commitments",
|
|
1163
|
-
type: "tuple",
|
|
1164
|
-
components: [
|
|
1165
|
-
{ internalType: "bytes", name: "committedInputs", type: "bytes" }
|
|
1166
|
-
]
|
|
1167
|
-
}
|
|
1168
|
-
],
|
|
1169
|
-
stateMutability: "view",
|
|
1170
|
-
type: "function",
|
|
1171
|
-
name: "isBirthdateEqual",
|
|
1172
|
-
outputs: [{ internalType: "bool", name: "", type: "bool" }]
|
|
1173
|
-
},
|
|
1174
|
-
{
|
|
1175
|
-
inputs: [
|
|
1176
|
-
{ internalType: "uint256", name: "minDate", type: "uint256" },
|
|
1177
|
-
{
|
|
1178
|
-
internalType: "struct Commitments",
|
|
1179
|
-
name: "commitments",
|
|
1180
|
-
type: "tuple",
|
|
1181
|
-
components: [
|
|
1182
|
-
{ internalType: "bytes", name: "committedInputs", type: "bytes" }
|
|
1183
|
-
]
|
|
1184
|
-
}
|
|
1185
|
-
],
|
|
1186
|
-
stateMutability: "view",
|
|
1187
|
-
type: "function",
|
|
1188
|
-
name: "isExpiryDateAfter",
|
|
1189
|
-
outputs: [{ internalType: "bool", name: "", type: "bool" }]
|
|
1190
|
-
},
|
|
1191
|
-
{
|
|
1192
|
-
inputs: [
|
|
1193
|
-
{ internalType: "uint256", name: "minDate", type: "uint256" },
|
|
1194
|
-
{
|
|
1195
|
-
internalType: "struct Commitments",
|
|
1196
|
-
name: "commitments",
|
|
1197
|
-
type: "tuple",
|
|
1198
|
-
components: [
|
|
1199
|
-
{ internalType: "bytes", name: "committedInputs", type: "bytes" }
|
|
1200
|
-
]
|
|
1201
|
-
}
|
|
1202
|
-
],
|
|
1203
|
-
stateMutability: "view",
|
|
1204
|
-
type: "function",
|
|
1205
|
-
name: "isExpiryDateAfterOrEqual",
|
|
1206
|
-
outputs: [{ internalType: "bool", name: "", type: "bool" }]
|
|
1207
|
-
},
|
|
1208
|
-
{
|
|
1209
|
-
inputs: [
|
|
1210
|
-
{ internalType: "uint256", name: "maxDate", type: "uint256" },
|
|
1211
|
-
{
|
|
1212
|
-
internalType: "struct Commitments",
|
|
1213
|
-
name: "commitments",
|
|
1214
|
-
type: "tuple",
|
|
1215
|
-
components: [
|
|
1216
|
-
{ internalType: "bytes", name: "committedInputs", type: "bytes" }
|
|
1217
|
-
]
|
|
1218
|
-
}
|
|
1219
|
-
],
|
|
1220
|
-
stateMutability: "view",
|
|
1221
|
-
type: "function",
|
|
1222
|
-
name: "isExpiryDateBefore",
|
|
1223
|
-
outputs: [{ internalType: "bool", name: "", type: "bool" }]
|
|
1224
|
-
},
|
|
1225
|
-
{
|
|
1226
|
-
inputs: [
|
|
1227
|
-
{ internalType: "uint256", name: "maxDate", type: "uint256" },
|
|
1228
|
-
{
|
|
1229
|
-
internalType: "struct Commitments",
|
|
1230
|
-
name: "commitments",
|
|
1231
|
-
type: "tuple",
|
|
1232
|
-
components: [
|
|
1233
|
-
{ internalType: "bytes", name: "committedInputs", type: "bytes" }
|
|
1234
|
-
]
|
|
1235
|
-
}
|
|
1236
|
-
],
|
|
1237
|
-
stateMutability: "view",
|
|
1238
|
-
type: "function",
|
|
1239
|
-
name: "isExpiryDateBeforeOrEqual",
|
|
1240
|
-
outputs: [{ internalType: "bool", name: "", type: "bool" }]
|
|
1241
|
-
},
|
|
1242
|
-
{
|
|
1243
|
-
inputs: [
|
|
1244
|
-
{ internalType: "uint256", name: "minDate", type: "uint256" },
|
|
1245
|
-
{ internalType: "uint256", name: "maxDate", type: "uint256" },
|
|
1246
|
-
{
|
|
1247
|
-
internalType: "struct Commitments",
|
|
1248
|
-
name: "commitments",
|
|
1249
|
-
type: "tuple",
|
|
1250
|
-
components: [
|
|
1251
|
-
{ internalType: "bytes", name: "committedInputs", type: "bytes" }
|
|
1252
|
-
]
|
|
1253
|
-
}
|
|
1254
|
-
],
|
|
1255
|
-
stateMutability: "view",
|
|
1256
|
-
type: "function",
|
|
1257
|
-
name: "isExpiryDateBetween",
|
|
1258
|
-
outputs: [{ internalType: "bool", name: "", type: "bool" }]
|
|
1259
|
-
},
|
|
1260
|
-
{
|
|
1261
|
-
inputs: [
|
|
1262
|
-
{ internalType: "uint256", name: "date", type: "uint256" },
|
|
1263
|
-
{
|
|
1264
|
-
internalType: "struct Commitments",
|
|
1265
|
-
name: "commitments",
|
|
1266
|
-
type: "tuple",
|
|
1267
|
-
components: [
|
|
1268
|
-
{ internalType: "bytes", name: "committedInputs", type: "bytes" }
|
|
1269
|
-
]
|
|
1270
|
-
}
|
|
1271
|
-
],
|
|
1272
|
-
stateMutability: "view",
|
|
1273
|
-
type: "function",
|
|
1274
|
-
name: "isExpiryDateEqual",
|
|
1275
|
-
outputs: [{ internalType: "bool", name: "", type: "bool" }]
|
|
1276
|
-
},
|
|
1277
|
-
{
|
|
1278
|
-
inputs: [
|
|
1279
|
-
{ internalType: "enum FaceMatchMode", name: "faceMatchMode", type: "uint8" },
|
|
1280
|
-
{ internalType: "enum OS", name: "os", type: "uint8" },
|
|
1281
|
-
{
|
|
1282
|
-
internalType: "struct Commitments",
|
|
1283
|
-
name: "commitments",
|
|
1284
|
-
type: "tuple",
|
|
1285
|
-
components: [
|
|
1286
|
-
{ internalType: "bytes", name: "committedInputs", type: "bytes" }
|
|
1287
|
-
]
|
|
1288
|
-
}
|
|
1289
|
-
],
|
|
1290
|
-
stateMutability: "pure",
|
|
1291
|
-
type: "function",
|
|
1292
|
-
name: "isFaceMatchVerified",
|
|
1293
|
-
outputs: [{ internalType: "bool", name: "", type: "bool" }]
|
|
1294
|
-
},
|
|
1295
|
-
{
|
|
1296
|
-
inputs: [
|
|
1297
|
-
{ internalType: "string[]", name: "countryList", type: "string[]" },
|
|
1298
|
-
{
|
|
1299
|
-
internalType: "struct Commitments",
|
|
1300
|
-
name: "commitments",
|
|
1301
|
-
type: "tuple",
|
|
1302
|
-
components: [
|
|
1303
|
-
{ internalType: "bytes", name: "committedInputs", type: "bytes" }
|
|
1304
|
-
]
|
|
1305
|
-
}
|
|
1306
|
-
],
|
|
1307
|
-
stateMutability: "pure",
|
|
1308
|
-
type: "function",
|
|
1309
|
-
name: "isIssuingCountryIn",
|
|
1310
|
-
outputs: [{ internalType: "bool", name: "", type: "bool" }]
|
|
1311
|
-
},
|
|
1312
|
-
{
|
|
1313
|
-
inputs: [
|
|
1314
|
-
{ internalType: "string[]", name: "countryList", type: "string[]" },
|
|
1315
|
-
{
|
|
1316
|
-
internalType: "struct Commitments",
|
|
1317
|
-
name: "commitments",
|
|
1318
|
-
type: "tuple",
|
|
1319
|
-
components: [
|
|
1320
|
-
{ internalType: "bytes", name: "committedInputs", type: "bytes" }
|
|
1321
|
-
]
|
|
1322
|
-
}
|
|
1323
|
-
],
|
|
1324
|
-
stateMutability: "pure",
|
|
1325
|
-
type: "function",
|
|
1326
|
-
name: "isIssuingCountryOut",
|
|
1327
|
-
outputs: [{ internalType: "bool", name: "", type: "bool" }]
|
|
1328
|
-
},
|
|
1329
|
-
{
|
|
1330
|
-
inputs: [
|
|
1331
|
-
{ internalType: "string[]", name: "countryList", type: "string[]" },
|
|
1332
|
-
{
|
|
1333
|
-
internalType: "struct Commitments",
|
|
1334
|
-
name: "commitments",
|
|
1335
|
-
type: "tuple",
|
|
1336
|
-
components: [
|
|
1337
|
-
{ internalType: "bytes", name: "committedInputs", type: "bytes" }
|
|
1338
|
-
]
|
|
1339
|
-
}
|
|
1340
|
-
],
|
|
1341
|
-
stateMutability: "pure",
|
|
1342
|
-
type: "function",
|
|
1343
|
-
name: "isNationalityIn",
|
|
1344
|
-
outputs: [{ internalType: "bool", name: "", type: "bool" }]
|
|
1345
|
-
},
|
|
1346
|
-
{
|
|
1347
|
-
inputs: [
|
|
1348
|
-
{ internalType: "string[]", name: "countryList", type: "string[]" },
|
|
1349
|
-
{
|
|
1350
|
-
internalType: "struct Commitments",
|
|
1351
|
-
name: "commitments",
|
|
1352
|
-
type: "tuple",
|
|
1353
|
-
components: [
|
|
1354
|
-
{ internalType: "bytes", name: "committedInputs", type: "bytes" }
|
|
1355
|
-
]
|
|
1356
|
-
}
|
|
1357
|
-
],
|
|
1358
|
-
stateMutability: "pure",
|
|
1359
|
-
type: "function",
|
|
1360
|
-
name: "isNationalityOut",
|
|
1361
|
-
outputs: [{ internalType: "bool", name: "", type: "bool" }]
|
|
1362
|
-
},
|
|
1363
|
-
{
|
|
1364
|
-
inputs: [],
|
|
1365
|
-
stateMutability: "view",
|
|
1366
|
-
type: "function",
|
|
1367
|
-
name: "paused",
|
|
1368
|
-
outputs: [{ internalType: "bool", name: "", type: "bool" }]
|
|
1369
|
-
},
|
|
1370
|
-
{
|
|
1371
|
-
inputs: [{ internalType: "bytes32[]", name: "vkeyHashes", type: "bytes32[]" }],
|
|
1372
|
-
stateMutability: "nonpayable",
|
|
1373
|
-
type: "function",
|
|
1374
|
-
name: "removeVerifiers"
|
|
1375
|
-
},
|
|
1376
|
-
{
|
|
1377
|
-
inputs: [],
|
|
1378
|
-
stateMutability: "view",
|
|
1379
|
-
type: "function",
|
|
1380
|
-
name: "rootRegistry",
|
|
1381
|
-
outputs: [{ internalType: "contract IRootRegistry", name: "", type: "address" }]
|
|
1382
|
-
},
|
|
1383
|
-
{
|
|
1384
|
-
inputs: [{ internalType: "bool", name: "_paused", type: "bool" }],
|
|
1385
|
-
stateMutability: "nonpayable",
|
|
1386
|
-
type: "function",
|
|
1387
|
-
name: "setPaused"
|
|
1388
|
-
},
|
|
1389
|
-
{
|
|
1390
|
-
inputs: [{ internalType: "address", name: "newAdmin", type: "address" }],
|
|
1391
|
-
stateMutability: "nonpayable",
|
|
1392
|
-
type: "function",
|
|
1393
|
-
name: "transferAdmin"
|
|
1394
|
-
},
|
|
1395
|
-
{
|
|
1396
|
-
inputs: [{ internalType: "address", name: "_rootRegistry", type: "address" }],
|
|
1397
|
-
stateMutability: "nonpayable",
|
|
1398
|
-
type: "function",
|
|
1399
|
-
name: "updateRootRegistry"
|
|
1400
|
-
},
|
|
1401
|
-
{
|
|
1402
|
-
inputs: [
|
|
1403
|
-
{
|
|
1404
|
-
internalType: "struct ProofVerificationParams",
|
|
1405
|
-
name: "params",
|
|
1406
|
-
type: "tuple",
|
|
1407
|
-
components: [
|
|
1408
|
-
{
|
|
1409
|
-
internalType: "struct ProofVerificationData",
|
|
1410
|
-
name: "proofVerificationData",
|
|
1411
|
-
type: "tuple",
|
|
1412
|
-
components: [
|
|
1413
|
-
{ internalType: "bytes32", name: "vkeyHash", type: "bytes32" },
|
|
1414
|
-
{ internalType: "bytes", name: "proof", type: "bytes" },
|
|
1415
|
-
{ internalType: "bytes32[]", name: "publicInputs", type: "bytes32[]" }
|
|
1416
|
-
]
|
|
1417
|
-
},
|
|
1418
|
-
{
|
|
1419
|
-
internalType: "struct Commitments",
|
|
1420
|
-
name: "commitments",
|
|
1421
|
-
type: "tuple",
|
|
1422
|
-
components: [
|
|
1423
|
-
{ internalType: "bytes", name: "committedInputs", type: "bytes" }
|
|
1424
|
-
]
|
|
1425
|
-
},
|
|
1426
|
-
{
|
|
1427
|
-
internalType: "struct ServiceConfig",
|
|
1428
|
-
name: "serviceConfig",
|
|
1429
|
-
type: "tuple",
|
|
1430
|
-
components: [
|
|
1431
|
-
{
|
|
1432
|
-
internalType: "uint256",
|
|
1433
|
-
name: "validityPeriodInSeconds",
|
|
1434
|
-
type: "uint256"
|
|
1435
|
-
},
|
|
1436
|
-
{ internalType: "string", name: "domain", type: "string" },
|
|
1437
|
-
{ internalType: "string", name: "scope", type: "string" },
|
|
1438
|
-
{ internalType: "bool", name: "devMode", type: "bool" }
|
|
1439
|
-
]
|
|
1440
|
-
}
|
|
1441
|
-
]
|
|
1442
|
-
}
|
|
1443
|
-
],
|
|
1444
|
-
stateMutability: "view",
|
|
1445
|
-
type: "function",
|
|
1446
|
-
name: "verifyProof",
|
|
1447
|
-
outputs: [
|
|
1448
|
-
{ internalType: "bool", name: "isValid", type: "bool" },
|
|
1449
|
-
{ internalType: "bytes32", name: "uniqueIdentifier", type: "bytes32" }
|
|
1450
|
-
]
|
|
1451
|
-
},
|
|
1452
|
-
{
|
|
1453
|
-
inputs: [
|
|
1454
|
-
{ internalType: "bytes32[]", name: "publicInputs", type: "bytes32[]" },
|
|
1455
|
-
{ internalType: "string", name: "domain", type: "string" },
|
|
1456
|
-
{ internalType: "string", name: "scope", type: "string" }
|
|
1457
|
-
],
|
|
1458
|
-
stateMutability: "pure",
|
|
1459
|
-
type: "function",
|
|
1460
|
-
name: "verifyScopes",
|
|
1461
|
-
outputs: [{ internalType: "bool", name: "", type: "bool" }]
|
|
1462
|
-
},
|
|
1463
|
-
{
|
|
1464
|
-
inputs: [{ internalType: "bytes32", name: "", type: "bytes32" }],
|
|
1465
|
-
stateMutability: "view",
|
|
1466
|
-
type: "function",
|
|
1467
|
-
name: "vkeyHashToVerifier",
|
|
1468
|
-
outputs: [{ internalType: "address", name: "", type: "address" }]
|
|
1469
|
-
}
|
|
1470
|
-
],
|
|
1471
|
-
devdoc: {
|
|
1472
|
-
kind: "dev",
|
|
1473
|
-
methods: {
|
|
1474
|
-
constructor: { details: "Constructor" },
|
|
1475
|
-
"enforceSanctionsRoot(bool,(bytes))": {
|
|
1476
|
-
params: {
|
|
1477
|
-
commitments: "The commitments",
|
|
1478
|
-
isStrict: "Whether the sanctions check was strict or not"
|
|
1479
|
-
}
|
|
1480
|
-
},
|
|
1481
|
-
"getBoundData((bytes))": {
|
|
1482
|
-
params: { commitments: "The commitments" },
|
|
1483
|
-
returns: { boundData: "The data bound to the proof" }
|
|
1484
|
-
},
|
|
1485
|
-
"getDisclosedData((bytes),bool)": {
|
|
1486
|
-
params: {
|
|
1487
|
-
commitments: "The commitments",
|
|
1488
|
-
isIDCard: "Whether the proof is an ID card"
|
|
1489
|
-
},
|
|
1490
|
-
returns: { disclosedData: "The data disclosed by the proof" }
|
|
1491
|
-
},
|
|
1492
|
-
"isAgeAbove(uint8,(bytes))": {
|
|
1493
|
-
params: {
|
|
1494
|
-
commitments: "The commitments",
|
|
1495
|
-
minAge: "The age must be above this age"
|
|
1496
|
-
},
|
|
1497
|
-
returns: { _0: "True if the age is above the given age, false otherwise" }
|
|
1498
|
-
},
|
|
1499
|
-
"isAgeAboveOrEqual(uint8,(bytes))": {
|
|
1500
|
-
params: {
|
|
1501
|
-
commitments: "The commitments",
|
|
1502
|
-
minAge: "The age must be above or equal to this age"
|
|
1503
|
-
},
|
|
1504
|
-
returns: {
|
|
1505
|
-
_0: "True if the age is above or equal to the given age, false otherwise"
|
|
1506
|
-
}
|
|
1507
|
-
},
|
|
1508
|
-
"isAgeBelow(uint8,(bytes))": {
|
|
1509
|
-
params: {
|
|
1510
|
-
commitments: "The commitments",
|
|
1511
|
-
maxAge: "The age must be below this age"
|
|
1512
|
-
},
|
|
1513
|
-
returns: { _0: "True if the age is below the given age, false otherwise" }
|
|
1514
|
-
},
|
|
1515
|
-
"isAgeBelowOrEqual(uint8,(bytes))": {
|
|
1516
|
-
params: {
|
|
1517
|
-
commitments: "The commitments",
|
|
1518
|
-
maxAge: "The age must be below or equal to this age"
|
|
1519
|
-
},
|
|
1520
|
-
returns: {
|
|
1521
|
-
_0: "True if the age is below or equal to the given age, false otherwise"
|
|
1522
|
-
}
|
|
1523
|
-
},
|
|
1524
|
-
"isAgeBetween(uint8,uint8,(bytes))": {
|
|
1525
|
-
params: {
|
|
1526
|
-
commitments: "The commitments",
|
|
1527
|
-
maxAge: "The age must be less than or equal to this age",
|
|
1528
|
-
minAge: "The age must be greater than or equal to this age"
|
|
1529
|
-
},
|
|
1530
|
-
returns: { _0: "True if the age is in the given range, false otherwise" }
|
|
1531
|
-
},
|
|
1532
|
-
"isAgeEqual(uint8,(bytes))": {
|
|
1533
|
-
params: {
|
|
1534
|
-
age: "The age must be equal to this age",
|
|
1535
|
-
commitments: "The commitments"
|
|
1536
|
-
},
|
|
1537
|
-
returns: { _0: "True if the age is equal to the given age, false otherwise" }
|
|
1538
|
-
},
|
|
1539
|
-
"isBirthdateAfter(uint256,(bytes))": {
|
|
1540
|
-
params: {
|
|
1541
|
-
commitments: "The commitments",
|
|
1542
|
-
minDate: "The birthdate must be after this date"
|
|
1543
|
-
},
|
|
1544
|
-
returns: { _0: "True if the birthdate is after the given date, false otherwise" }
|
|
1545
|
-
},
|
|
1546
|
-
"isBirthdateAfterOrEqual(uint256,(bytes))": {
|
|
1547
|
-
params: {
|
|
1548
|
-
commitments: "The commitments",
|
|
1549
|
-
minDate: "The birthdate must be after or equal to this date"
|
|
1550
|
-
},
|
|
1551
|
-
returns: {
|
|
1552
|
-
_0: "True if the birthdate is after or equal to the given date, false otherwise"
|
|
1553
|
-
}
|
|
1554
|
-
},
|
|
1555
|
-
"isBirthdateBefore(uint256,(bytes))": {
|
|
1556
|
-
params: {
|
|
1557
|
-
commitments: "The commitments",
|
|
1558
|
-
maxDate: "The birthdate must be before this date"
|
|
1559
|
-
},
|
|
1560
|
-
returns: { _0: "True if the birthdate is before the given date, false otherwise" }
|
|
1561
|
-
},
|
|
1562
|
-
"isBirthdateBeforeOrEqual(uint256,(bytes))": {
|
|
1563
|
-
params: {
|
|
1564
|
-
commitments: "The commitments",
|
|
1565
|
-
maxDate: "The birthdate must be before or equal to this date"
|
|
1566
|
-
},
|
|
1567
|
-
returns: {
|
|
1568
|
-
_0: "True if the birthdate is before or equal to the given date, false otherwise"
|
|
1569
|
-
}
|
|
1570
|
-
},
|
|
1571
|
-
"isBirthdateBetween(uint256,uint256,(bytes))": {
|
|
1572
|
-
params: {
|
|
1573
|
-
commitments: "The commitments",
|
|
1574
|
-
maxDate: "The birthdate must be before or equal to this date",
|
|
1575
|
-
minDate: "The birthdate must be after or equal to this date"
|
|
1576
|
-
},
|
|
1577
|
-
returns: { _0: "True if the birthdate is between the given dates, false otherwise" }
|
|
1578
|
-
},
|
|
1579
|
-
"isBirthdateEqual(uint256,(bytes))": {
|
|
1580
|
-
params: {
|
|
1581
|
-
commitments: "The commitments",
|
|
1582
|
-
date: "The birthdate must be equal to this date"
|
|
1583
|
-
},
|
|
1584
|
-
returns: { _0: "True if the birthdate is equal to the given date, false otherwise" }
|
|
1585
|
-
},
|
|
1586
|
-
"isExpiryDateAfter(uint256,(bytes))": {
|
|
1587
|
-
params: {
|
|
1588
|
-
commitments: "The commitments",
|
|
1589
|
-
minDate: "The expiry date must be after this date"
|
|
1590
|
-
},
|
|
1591
|
-
returns: { _0: "True if the expiry date is after the given date, false otherwise" }
|
|
1592
|
-
},
|
|
1593
|
-
"isExpiryDateAfterOrEqual(uint256,(bytes))": {
|
|
1594
|
-
params: {
|
|
1595
|
-
commitments: "The commitments",
|
|
1596
|
-
minDate: "The expiry date must be after or equal to this date"
|
|
1597
|
-
},
|
|
1598
|
-
returns: {
|
|
1599
|
-
_0: "True if the expiry date is after or equal to the given date, false otherwise"
|
|
1600
|
-
}
|
|
1601
|
-
},
|
|
1602
|
-
"isExpiryDateBefore(uint256,(bytes))": {
|
|
1603
|
-
params: {
|
|
1604
|
-
commitments: "The commitments",
|
|
1605
|
-
maxDate: "The expiry date must be before this date"
|
|
1606
|
-
},
|
|
1607
|
-
returns: { _0: "True if the expiry date is before the given date, false otherwise" }
|
|
1608
|
-
},
|
|
1609
|
-
"isExpiryDateBeforeOrEqual(uint256,(bytes))": {
|
|
1610
|
-
params: {
|
|
1611
|
-
commitments: "The commitments",
|
|
1612
|
-
maxDate: "The expiry date must be before or equal to this date"
|
|
1613
|
-
},
|
|
1614
|
-
returns: {
|
|
1615
|
-
_0: "True if the expiry date is before or equal to the given date, false otherwise"
|
|
1616
|
-
}
|
|
1617
|
-
},
|
|
1618
|
-
"isExpiryDateBetween(uint256,uint256,(bytes))": {
|
|
1619
|
-
params: {
|
|
1620
|
-
commitments: "The commitments",
|
|
1621
|
-
maxDate: "The expiry date must be before or equal to this date",
|
|
1622
|
-
minDate: "The expiry date must be after or equal to this date"
|
|
1623
|
-
},
|
|
1624
|
-
returns: {
|
|
1625
|
-
_0: "True if the expiry date is between the given dates, false otherwise"
|
|
1626
|
-
}
|
|
1627
|
-
},
|
|
1628
|
-
"isExpiryDateEqual(uint256,(bytes))": {
|
|
1629
|
-
params: {
|
|
1630
|
-
commitments: "The commitments",
|
|
1631
|
-
date: "The expiry date must be equal to this date"
|
|
1632
|
-
},
|
|
1633
|
-
returns: {
|
|
1634
|
-
_0: "True if the expiry date is equal to the given date, false otherwise"
|
|
1635
|
-
}
|
|
1636
|
-
},
|
|
1637
|
-
"isFaceMatchVerified(uint8,uint8,(bytes))": {
|
|
1638
|
-
params: {
|
|
1639
|
-
commitments: "The commitments",
|
|
1640
|
-
faceMatchMode: "The FaceMatch mode expected to be used in the verification",
|
|
1641
|
-
os: "The operating system on which the proof should have been generated (Any (0), iOS (1), Android (2))"
|
|
1642
|
-
},
|
|
1643
|
-
returns: {
|
|
1644
|
-
_0: "True if the proof is tied to a valid FaceMatch verification, false otherwise"
|
|
1645
|
-
}
|
|
1646
|
-
},
|
|
1647
|
-
"isIssuingCountryIn(string[],(bytes))": {
|
|
1648
|
-
params: {
|
|
1649
|
-
commitments: "The commitments",
|
|
1650
|
-
countryList: "The list of countries (needs to match exactly the list of countries in the proof)"
|
|
1651
|
-
},
|
|
1652
|
-
returns: {
|
|
1653
|
-
_0: "True if the issuing country is in the list of countries, false otherwise"
|
|
1654
|
-
}
|
|
1655
|
-
},
|
|
1656
|
-
"isIssuingCountryOut(string[],(bytes))": {
|
|
1657
|
-
params: {
|
|
1658
|
-
commitments: "The commitments",
|
|
1659
|
-
countryList: "The list of countries (needs to match exactly the list of countries in the proof) Note: The list of countries must be sorted in alphabetical order"
|
|
1660
|
-
},
|
|
1661
|
-
returns: {
|
|
1662
|
-
_0: "True if the issuing country is not in the list of countries, false otherwise"
|
|
1663
|
-
}
|
|
1664
|
-
},
|
|
1665
|
-
"isNationalityIn(string[],(bytes))": {
|
|
1666
|
-
params: {
|
|
1667
|
-
commitments: "The commitments",
|
|
1668
|
-
countryList: "The list of countries (needs to match exactly the list of countries in the proof)"
|
|
1669
|
-
},
|
|
1670
|
-
returns: {
|
|
1671
|
-
_0: "True if the nationality is in the list of countries, false otherwise"
|
|
1672
|
-
}
|
|
1673
|
-
},
|
|
1674
|
-
"isNationalityOut(string[],(bytes))": {
|
|
1675
|
-
params: {
|
|
1676
|
-
commitments: "The commitments",
|
|
1677
|
-
countryList: "The list of countries (needs to match exactly the list of countries in the proof) Note: The list of countries must be sorted in alphabetical order"
|
|
1678
|
-
},
|
|
1679
|
-
returns: {
|
|
1680
|
-
_0: "True if the nationality is not in the list of countries, false otherwise"
|
|
1681
|
-
}
|
|
1682
|
-
},
|
|
1683
|
-
"verifyProof(((bytes32,bytes,bytes32[]),(bytes),(uint256,string,string,bool)))": {
|
|
1684
|
-
params: { params: "The proof verification parameters" },
|
|
1685
|
-
returns: {
|
|
1686
|
-
isValid: "True if the proof is valid, false otherwise",
|
|
1687
|
-
uniqueIdentifier: "The unique identifier associated to the identity document that generated the proof"
|
|
1688
|
-
}
|
|
1689
|
-
},
|
|
1690
|
-
"verifyScopes(bytes32[],string,string)": {
|
|
1691
|
-
params: {
|
|
1692
|
-
domain: "The domain to check against",
|
|
1693
|
-
publicInputs: "The public inputs of the proof",
|
|
1694
|
-
scope: "The scope to check against"
|
|
1695
|
-
},
|
|
1696
|
-
returns: {
|
|
1697
|
-
_0: "True if the proof was generated for the given domain and scope, false otherwise"
|
|
1698
|
-
}
|
|
1699
|
-
}
|
|
1700
|
-
},
|
|
1701
|
-
version: 1
|
|
1702
|
-
},
|
|
1703
|
-
userdoc: {
|
|
1704
|
-
kind: "user",
|
|
1705
|
-
methods: {
|
|
1706
|
-
"enforceSanctionsRoot(bool,(bytes))": {
|
|
1707
|
-
notice: "Enforces that the proof checks against the expected sanction list(s)"
|
|
1708
|
-
},
|
|
1709
|
-
"getBoundData((bytes))": { notice: "Gets the data bound to the proof" },
|
|
1710
|
-
"getDisclosedData((bytes),bool)": { notice: "Gets the data disclosed by the proof" },
|
|
1711
|
-
"isAgeAbove(uint8,(bytes))": { notice: "Checks if the age is above the given age" },
|
|
1712
|
-
"isAgeAboveOrEqual(uint8,(bytes))": {
|
|
1713
|
-
notice: "Checks if the age is above or equal to the given age"
|
|
1714
|
-
},
|
|
1715
|
-
"isAgeBelow(uint8,(bytes))": { notice: "Checks if the age is below the given age" },
|
|
1716
|
-
"isAgeBelowOrEqual(uint8,(bytes))": {
|
|
1717
|
-
notice: "Checks if the age is below or equal to the given age"
|
|
1718
|
-
},
|
|
1719
|
-
"isAgeBetween(uint8,uint8,(bytes))": {
|
|
1720
|
-
notice: "Checks if the age is in the given range"
|
|
1721
|
-
},
|
|
1722
|
-
"isAgeEqual(uint8,(bytes))": { notice: "Checks if the age is equal to the given age" },
|
|
1723
|
-
"isBirthdateAfter(uint256,(bytes))": {
|
|
1724
|
-
notice: "Checks if the birthdate is after the given date"
|
|
1725
|
-
},
|
|
1726
|
-
"isBirthdateAfterOrEqual(uint256,(bytes))": {
|
|
1727
|
-
notice: "Checks if the birthdate is after or equal to the given date"
|
|
1728
|
-
},
|
|
1729
|
-
"isBirthdateBefore(uint256,(bytes))": {
|
|
1730
|
-
notice: "Checks if the birthdate is before the given date"
|
|
1731
|
-
},
|
|
1732
|
-
"isBirthdateBeforeOrEqual(uint256,(bytes))": {
|
|
1733
|
-
notice: "Checks if the birthdate is before or equal to the given date"
|
|
1734
|
-
},
|
|
1735
|
-
"isBirthdateBetween(uint256,uint256,(bytes))": {
|
|
1736
|
-
notice: "Checks if the birthdate is between the given dates"
|
|
1737
|
-
},
|
|
1738
|
-
"isBirthdateEqual(uint256,(bytes))": {
|
|
1739
|
-
notice: "Checks if the birthdate is equal to the given date"
|
|
1740
|
-
},
|
|
1741
|
-
"isExpiryDateAfter(uint256,(bytes))": {
|
|
1742
|
-
notice: "Checks if the expiry date is after the given date"
|
|
1743
|
-
},
|
|
1744
|
-
"isExpiryDateAfterOrEqual(uint256,(bytes))": {
|
|
1745
|
-
notice: "Checks if the expiry date is after or equal to the given date"
|
|
1746
|
-
},
|
|
1747
|
-
"isExpiryDateBefore(uint256,(bytes))": {
|
|
1748
|
-
notice: "Checks if the expiry date is before the given date"
|
|
1749
|
-
},
|
|
1750
|
-
"isExpiryDateBeforeOrEqual(uint256,(bytes))": {
|
|
1751
|
-
notice: "Checks if the expiry date is before or equal to the given date"
|
|
1752
|
-
},
|
|
1753
|
-
"isExpiryDateBetween(uint256,uint256,(bytes))": {
|
|
1754
|
-
notice: "Checks if the expiry date is between the given dates"
|
|
1755
|
-
},
|
|
1756
|
-
"isExpiryDateEqual(uint256,(bytes))": {
|
|
1757
|
-
notice: "Checks if the expiry date is equal to the given date"
|
|
1758
|
-
},
|
|
1759
|
-
"isFaceMatchVerified(uint8,uint8,(bytes))": {
|
|
1760
|
-
notice: "Checks if the proof is tied to a FaceMatch verification"
|
|
1761
|
-
},
|
|
1762
|
-
"isIssuingCountryIn(string[],(bytes))": {
|
|
1763
|
-
notice: "Checks if the issuing country is in the list of countries"
|
|
1764
|
-
},
|
|
1765
|
-
"isIssuingCountryOut(string[],(bytes))": {
|
|
1766
|
-
notice: "Checks if the issuing country is not in the list of countries"
|
|
1767
|
-
},
|
|
1768
|
-
"isNationalityIn(string[],(bytes))": {
|
|
1769
|
-
notice: "Checks if the nationality is in the list of countries"
|
|
1770
|
-
},
|
|
1771
|
-
"isNationalityOut(string[],(bytes))": {
|
|
1772
|
-
notice: "Checks if the nationality is not in the list of countries"
|
|
1773
|
-
},
|
|
1774
|
-
"verifyProof(((bytes32,bytes,bytes32[]),(bytes),(uint256,string,string,bool)))": {
|
|
1775
|
-
notice: "Verifies a proof from ZKPassport"
|
|
1776
|
-
},
|
|
1777
|
-
"verifyScopes(bytes32[],string,string)": {
|
|
1778
|
-
notice: "Verifies that the proof was generated for the given domain and scope"
|
|
1779
|
-
}
|
|
1780
|
-
},
|
|
1781
|
-
version: 1
|
|
1782
|
-
}
|
|
1783
|
-
},
|
|
1784
|
-
settings: {
|
|
1785
|
-
remappings: ["forge-std/=lib/forge-std/src/"],
|
|
1786
|
-
optimizer: { enabled: true, runs: 200 },
|
|
1787
|
-
metadata: { bytecodeHash: "ipfs" },
|
|
1788
|
-
compilationTarget: { "src/ZKPassportVerifier.sol": "ZKPassportVerifier" },
|
|
1789
|
-
evmVersion: "prague",
|
|
1790
|
-
libraries: {}
|
|
1791
|
-
},
|
|
1792
|
-
sources: {
|
|
1793
|
-
"src/Constants.sol": {
|
|
1794
|
-
keccak256: "0xfa558b70129f1b70e1ba49402ba966d3d4f5cea2b31c09f442a0e0a5dc7fe897",
|
|
1795
|
-
urls: [
|
|
1796
|
-
"bzz-raw://56b21abbd540f3e9a9a21183f10f565f271fae65bc81843afae85c8801f2694c",
|
|
1797
|
-
"dweb:/ipfs/QmcbYeyTLvwFKYRBsCSVSxyuoNkZE38BDKMA6nGKb5CXN2"
|
|
1798
|
-
],
|
|
1799
|
-
license: "Apache-2.0"
|
|
1800
|
-
},
|
|
1801
|
-
"src/DateUtils.sol": {
|
|
1802
|
-
keccak256: "0xc04aef2f5732f8c3b28077a0af19e2fbbdec2f9178f3800563bf64ccdecefc77",
|
|
1803
|
-
urls: [
|
|
1804
|
-
"bzz-raw://bcc2610f3bdd3411fc040d39efe9e68f826b48986b2df7987f3adb6a1467c833",
|
|
1805
|
-
"dweb:/ipfs/Qmc7uyW8Y7ekaKEdjd3kU9e1eDcCiAqsujGc5ZavuzGx4w"
|
|
1806
|
-
],
|
|
1807
|
-
license: "Apache-2.0"
|
|
1808
|
-
},
|
|
1809
|
-
"src/IRootRegistry.sol": {
|
|
1810
|
-
keccak256: "0xa9955e80821ca9ccbdf7d05a8ce9a3e237b4771e1f6e09190ed1c803a5e1e516",
|
|
1811
|
-
urls: [
|
|
1812
|
-
"bzz-raw://fd9fc9fbd7057a6bcc16a682e52be9ebd012954898626a11f0a0e8788644789d",
|
|
1813
|
-
"dweb:/ipfs/QmZYpMRHdv4gMCNXCQtGQu8XqRVtNR9Kgkzh7u1YMpvrEB"
|
|
1814
|
-
],
|
|
1815
|
-
license: "MIT"
|
|
1816
|
-
},
|
|
1817
|
-
"src/InputsExtractor.sol": {
|
|
1818
|
-
keccak256: "0x8c55d03f86334deb61086145bc04b56ee96d1b4a6bead8dae7651f9439754b23",
|
|
1819
|
-
urls: [
|
|
1820
|
-
"bzz-raw://fd4a6cf59604a726c314d144f4f6eff1cffa8764c9468a19f41e97fd89bb8c08",
|
|
1821
|
-
"dweb:/ipfs/QmWim6m6zdHj2JzyMnjYNfwaX33DgPwhSLUp197FqqDeMh"
|
|
1822
|
-
],
|
|
1823
|
-
license: "Apache-2.0"
|
|
1824
|
-
},
|
|
1825
|
-
"src/StringUtils.sol": {
|
|
1826
|
-
keccak256: "0x0174454c28003f489bcdf636c93ccb512d80f3dbdca7485e11b51cf2c8ebfff1",
|
|
1827
|
-
urls: [
|
|
1828
|
-
"bzz-raw://92ea71064b8199c9a05cbe279cf42adaaa7b29604d960a84754d3d997b1c2342",
|
|
1829
|
-
"dweb:/ipfs/QmcsrqRJ2YZABCZHzS782RqKmWEegSK1LCmTTjJ94gdh5q"
|
|
1830
|
-
],
|
|
1831
|
-
license: "Apache-2.0"
|
|
1832
|
-
},
|
|
1833
|
-
"src/Types.sol": {
|
|
1834
|
-
keccak256: "0xc1654e29b719d2a04cd2c605092e3a91933498af0453260c47fb6900d7a09c5d",
|
|
1835
|
-
urls: [
|
|
1836
|
-
"bzz-raw://600e7ad78cca07976f2a97ad573992b47163e93350b3856927a5d7af85f96f65",
|
|
1837
|
-
"dweb:/ipfs/Qmc9NGHiBHHx9qJy9aWMmuvM5Y5buPV4yM2HkMfBqrqeKi"
|
|
1838
|
-
],
|
|
1839
|
-
license: "Apache-2.0"
|
|
1840
|
-
},
|
|
1841
|
-
"src/ZKPassportVerifier.sol": {
|
|
1842
|
-
keccak256: "0xa384e5f6f29c1919528a5db15e7f258e7dbe56cab981440883a4b933b7e6ebd7",
|
|
1843
|
-
urls: [
|
|
1844
|
-
"bzz-raw://2fc689c80dcff94cce5590b282aa34cbf5f5cd4e02ecf16890a664dc76e017bf",
|
|
1845
|
-
"dweb:/ipfs/Qme8nkFNsbJrEDF9xSiaaVv1Tb365PDPoGZ2iqAFamzVrh"
|
|
1846
|
-
],
|
|
1847
|
-
license: "Apache-2.0"
|
|
1848
|
-
},
|
|
1849
|
-
"src/ultra-honk-verifiers/OuterCount4.sol": {
|
|
1850
|
-
keccak256: "0x7f4fe82593dcb379ffb63af53cbf9aa7f8ade43b04492dded7fb8b2b45a3164f",
|
|
1851
|
-
urls: [
|
|
1852
|
-
"bzz-raw://1f094b7652c2118e3884c9696562f1d113f1d60374666d7fa0d59b3af245de56",
|
|
1853
|
-
"dweb:/ipfs/QmP1GbNKdTXgoPCWQYQgHcjPDfEvfjune7jUa6uvpccmkb"
|
|
1854
|
-
],
|
|
1855
|
-
license: "Apache-2.0"
|
|
1856
|
-
}
|
|
1857
|
-
},
|
|
1858
|
-
version: 1
|
|
1859
|
-
},
|
|
1860
|
-
id: 26
|
|
1861
|
-
};
|
|
1862
|
-
|
|
1863
|
-
// src/solidity-verifier.ts
|
|
1864
|
-
var SolidityVerifier = class {
|
|
1865
|
-
static getDetails(network) {
|
|
1866
|
-
const baseConfig = {
|
|
1867
|
-
functionName: "verifyProof",
|
|
1868
|
-
abi: ZKPassportVerifier_default.abi
|
|
1869
|
-
};
|
|
1870
|
-
if (network === "ethereum_sepolia") {
|
|
1871
|
-
return {
|
|
1872
|
-
...baseConfig,
|
|
1873
|
-
address: "0x0b05F45ff2F431a136eE8e708458286eC02b0d00"
|
|
1874
|
-
};
|
|
1875
|
-
} else if (network === "local_anvil") {
|
|
1876
|
-
return {
|
|
1877
|
-
...baseConfig,
|
|
1878
|
-
address: "0x0"
|
|
1879
|
-
};
|
|
1880
|
-
}
|
|
1881
|
-
throw new Error(`Unsupported network: ${network}`);
|
|
1882
|
-
}
|
|
1883
|
-
static getParameters({
|
|
1884
|
-
proof,
|
|
1885
|
-
validityPeriodInSeconds = DEFAULT_VALIDITY,
|
|
1886
|
-
domain,
|
|
1887
|
-
scope,
|
|
1888
|
-
devMode = false
|
|
1889
|
-
}) {
|
|
1890
|
-
if (!proof.name?.startsWith("outer_evm")) {
|
|
1891
|
-
throw new Error(
|
|
1892
|
-
"This proof cannot be verified on an EVM chain. Please make sure to use the `compressed-evm` mode."
|
|
1893
|
-
);
|
|
1894
|
-
}
|
|
1895
|
-
const proofData = getProofData(proof.proof, getNumberOfPublicInputs(proof.name));
|
|
1896
|
-
let committedInputCounts = [];
|
|
1897
|
-
let committedInputs = [];
|
|
1898
|
-
for (const key in proof.committedInputs) {
|
|
1899
|
-
const committedInputCount = getCommittedInputCount(key);
|
|
1900
|
-
const circuitName = key;
|
|
1901
|
-
committedInputCounts.push({ circuitName, count: committedInputCount });
|
|
1902
|
-
let compressedCommittedInputs2 = "";
|
|
1903
|
-
if (circuitName === "inclusion_check_issuing_country_evm" || circuitName === "inclusion_check_nationality_evm" || circuitName === "exclusion_check_issuing_country_evm" || circuitName === "exclusion_check_nationality_evm") {
|
|
1904
|
-
const value = proof.committedInputs[circuitName];
|
|
1905
|
-
const formattedCountries = value.countries;
|
|
1906
|
-
if (circuitName === "exclusion_check_issuing_country_evm" || circuitName === "exclusion_check_nationality_evm") {
|
|
1907
|
-
formattedCountries.sort((a, b) => a.localeCompare(b));
|
|
1908
|
-
}
|
|
1909
|
-
const proofType = (() => {
|
|
1910
|
-
switch (circuitName) {
|
|
1911
|
-
case "exclusion_check_issuing_country_evm":
|
|
1912
|
-
return ProofType.ISSUING_COUNTRY_EXCLUSION;
|
|
1913
|
-
case "exclusion_check_nationality_evm":
|
|
1914
|
-
return ProofType.NATIONALITY_EXCLUSION;
|
|
1915
|
-
case "inclusion_check_issuing_country_evm":
|
|
1916
|
-
return ProofType.ISSUING_COUNTRY_INCLUSION;
|
|
1917
|
-
case "inclusion_check_nationality_evm":
|
|
1918
|
-
return ProofType.NATIONALITY_INCLUSION;
|
|
1919
|
-
}
|
|
1920
|
-
})();
|
|
1921
|
-
compressedCommittedInputs2 = proofType.toString(16).padStart(2, "0") + ProofTypeLength[proofType].evm.toString(16).padStart(4, "0") + rightPadArrayWithZeros(
|
|
1922
|
-
formattedCountries.map((c) => Array.from(new TextEncoder().encode(c))).flat(),
|
|
1923
|
-
600
|
|
1924
|
-
).map((x) => x.toString(16).padStart(2, "0")).join("");
|
|
1925
|
-
} else if (circuitName === "compare_age_evm") {
|
|
1926
|
-
const value = proof.committedInputs[circuitName];
|
|
1927
|
-
compressedCommittedInputs2 = ProofType.AGE.toString(16).padStart(2, "0") + ProofTypeLength[ProofType.AGE].evm.toString(16).padStart(4, "0") + value.minAge.toString(16).padStart(2, "0") + value.maxAge.toString(16).padStart(2, "0");
|
|
1928
|
-
} else if (circuitName === "compare_birthdate_evm") {
|
|
1929
|
-
const value = proof.committedInputs[circuitName];
|
|
1930
|
-
const minDateBytes = Array.from(numberToBytesBE(value.minDateTimestamp, 8));
|
|
1931
|
-
const maxDateBytes = Array.from(numberToBytesBE(value.maxDateTimestamp, 8));
|
|
1932
|
-
compressedCommittedInputs2 = ProofType.BIRTHDATE.toString(16).padStart(2, "0") + ProofTypeLength[ProofType.BIRTHDATE].evm.toString(16).padStart(4, "0") + minDateBytes.map((x) => x.toString(16).padStart(2, "0")).join("") + maxDateBytes.map((x) => x.toString(16).padStart(2, "0")).join("");
|
|
1933
|
-
} else if (circuitName === "compare_expiry_evm") {
|
|
1934
|
-
const value = proof.committedInputs[circuitName];
|
|
1935
|
-
const minDateBytes = Array.from(numberToBytesBE(value.minDateTimestamp, 8));
|
|
1936
|
-
const maxDateBytes = Array.from(numberToBytesBE(value.maxDateTimestamp, 8));
|
|
1937
|
-
compressedCommittedInputs2 = ProofType.EXPIRY_DATE.toString(16).padStart(2, "0") + ProofTypeLength[ProofType.EXPIRY_DATE].evm.toString(16).padStart(4, "0") + minDateBytes.map((x) => x.toString(16).padStart(2, "0")).join("") + maxDateBytes.map((x) => x.toString(16).padStart(2, "0")).join("");
|
|
1938
|
-
} else if (circuitName === "disclose_bytes_evm") {
|
|
1939
|
-
const value = proof.committedInputs[circuitName];
|
|
1940
|
-
compressedCommittedInputs2 = ProofType.DISCLOSE.toString(16).padStart(2, "0") + ProofTypeLength[ProofType.DISCLOSE].evm.toString(16).padStart(4, "0") + value.discloseMask.map((x) => x.toString(16).padStart(2, "0")).join("") + value.disclosedBytes.map((x) => x.toString(16).padStart(2, "0")).join("");
|
|
1941
|
-
} else if (circuitName === "bind_evm") {
|
|
1942
|
-
const value = proof.committedInputs[circuitName];
|
|
1943
|
-
compressedCommittedInputs2 = ProofType.BIND.toString(16).padStart(2, "0") + ProofTypeLength[ProofType.BIND].evm.toString(16).padStart(4, "0") + rightPadArrayWithZeros(formatBoundData(value.data), 509).map((x) => x.toString(16).padStart(2, "0")).join("");
|
|
1944
|
-
} else if (circuitName === "exclusion_check_sanctions_evm") {
|
|
1945
|
-
const value = proof.committedInputs[circuitName];
|
|
1946
|
-
compressedCommittedInputs2 += ProofType.SANCTIONS_EXCLUSION.toString(16).padStart(2, "0");
|
|
1947
|
-
compressedCommittedInputs2 += ProofTypeLength[ProofType.SANCTIONS_EXCLUSION].evm.toString(16).padStart(4, "0");
|
|
1948
|
-
compressedCommittedInputs2 += Array.from(numberToBytesBE(BigInt(value.rootHash), 32)).map((x) => x.toString(16).padStart(2, "0")).join("");
|
|
1949
|
-
compressedCommittedInputs2 += value.isStrict ? "01" : "00";
|
|
1950
|
-
} else if (circuitName.startsWith("facematch") && circuitName.endsWith("_evm")) {
|
|
1951
|
-
const value = proof.committedInputs[circuitName];
|
|
1952
|
-
compressedCommittedInputs2 += ProofType.FACEMATCH.toString(16).padStart(2, "0");
|
|
1953
|
-
compressedCommittedInputs2 += ProofTypeLength[ProofType.FACEMATCH].evm.toString(16).padStart(4, "0");
|
|
1954
|
-
compressedCommittedInputs2 += Array.from(numberToBytesBE(BigInt(value.rootKeyLeaf), 32)).map((x) => x.toString(16).padStart(2, "0")).join("");
|
|
1955
|
-
compressedCommittedInputs2 += value.environment === "development" ? "00" : "01";
|
|
1956
|
-
compressedCommittedInputs2 += Array.from(numberToBytesBE(BigInt(value.appIdHash), 32)).map((x) => x.toString(16).padStart(2, "0")).join("");
|
|
1957
|
-
compressedCommittedInputs2 += Array.from(
|
|
1958
|
-
numberToBytesBE(BigInt(value.integrityPubkeyHash), 32)
|
|
1959
|
-
).map((x) => x.toString(16).padStart(2, "0")).join("");
|
|
1960
|
-
compressedCommittedInputs2 += value.mode === "regular" ? "01" : "02";
|
|
1961
|
-
} else {
|
|
1962
|
-
throw new Error(`Unsupported circuit for EVM verification: ${circuitName}`);
|
|
1963
|
-
}
|
|
1964
|
-
committedInputs.push({ circuitName, inputs: compressedCommittedInputs2 });
|
|
1965
|
-
}
|
|
1966
|
-
const parameterCommitments = getParamCommitmentsFromOuterProof(proofData).map(
|
|
1967
|
-
(x) => x.toString(16).padStart(64, "0")
|
|
1968
|
-
);
|
|
1969
|
-
let compressedCommittedInputs = "";
|
|
1970
|
-
let committedInputCountsArray = [];
|
|
1971
|
-
for (const commitment of parameterCommitments) {
|
|
1972
|
-
const committedInput = committedInputs.find((x) => {
|
|
1973
|
-
const rawHashedInputs = sha256(hexToBytes(x.inputs));
|
|
1974
|
-
const hashedInputs = new Uint8Array(rawHashedInputs.length);
|
|
1975
|
-
for (let i = 0; i < rawHashedInputs.length - 1; i++) {
|
|
1976
|
-
hashedInputs[i + 1] = rawHashedInputs[i];
|
|
1977
|
-
}
|
|
1978
|
-
hashedInputs[0] = 0;
|
|
1979
|
-
return bytesToHex(hashedInputs) === commitment.replace("0x", "");
|
|
1980
|
-
});
|
|
1981
|
-
if (committedInput) {
|
|
1982
|
-
const count = committedInputCounts.find(
|
|
1983
|
-
(x) => x.circuitName === committedInput.circuitName
|
|
1984
|
-
)?.count;
|
|
1985
|
-
if (count) {
|
|
1986
|
-
committedInputCountsArray.push(count);
|
|
1987
|
-
compressedCommittedInputs += committedInput.inputs;
|
|
1988
|
-
} else {
|
|
1989
|
-
throw new Error(`Unknown circuit name: ${committedInput.circuitName}`);
|
|
1990
|
-
}
|
|
1991
|
-
} else {
|
|
1992
|
-
throw new Error(`Invalid commitment: ${commitment}`);
|
|
1993
|
-
}
|
|
1994
|
-
}
|
|
1995
|
-
const params = {
|
|
1996
|
-
proofVerificationData: {
|
|
1997
|
-
// Make sure the vkeyHash is 32 bytes
|
|
1998
|
-
vkeyHash: `0x${proof.vkeyHash.replace("0x", "").padStart(64, "0")}`,
|
|
1999
|
-
proof: `0x${proofData.proof.join("")}`,
|
|
2000
|
-
publicInputs: proofData.publicInputs
|
|
2001
|
-
},
|
|
2002
|
-
commitments: {
|
|
2003
|
-
committedInputs: `0x${compressedCommittedInputs}`
|
|
2004
|
-
},
|
|
2005
|
-
serviceConfig: {
|
|
2006
|
-
validityPeriodInSeconds,
|
|
2007
|
-
domain,
|
|
2008
|
-
scope: scope ?? "",
|
|
2009
|
-
devMode
|
|
2010
|
-
}
|
|
2011
|
-
};
|
|
2012
|
-
return params;
|
|
2013
|
-
}
|
|
2014
|
-
};
|
|
2015
|
-
|
|
2016
|
-
export {
|
|
2017
|
-
SolidityVerifier
|
|
2018
|
-
};
|