@artblocks/contracts 1.2.1 → 1.3.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.
Files changed (71) hide show
  1. package/artifacts/contracts/BytecodeStorageReaders/BytecodeStorageReaderContractV2_Web3Call.sol/BytecodeStorageReaderContractV2_Web3Call.json +201 -0
  2. package/artifacts/contracts/BytecodeStorageReaders/UniversalBytecodeStorageReader.sol/UniversalBytecodeStorageReader.json +2 -2
  3. package/artifacts/contracts/DependencyRegistryV0.sol/DependencyRegistryV0.json +42 -53
  4. package/artifacts/contracts/engine/V3/GenArt721CoreV3_Engine_Flex.sol/GenArt721CoreV3_Engine_Flex.json +2 -2
  5. package/artifacts/contracts/generator/GenArt721GeneratorV0.sol/GenArt721GeneratorV0.json +2 -2
  6. package/artifacts/contracts/interfaces/v0.8.x/IDelegateRegistry.sol/IDelegateRegistry.json +820 -0
  7. package/artifacts/contracts/interfaces/v0.8.x/IDependencyRegistryV0.sol/IDependencyRegistryV0.json +13 -0
  8. package/artifacts/contracts/interfaces/v0.8.x/IPMPAugmentHook.sol/IPMPAugmentHook.json +83 -0
  9. package/artifacts/contracts/interfaces/v0.8.x/IPMPConfigureHook.sol/IPMPConfigureHook.json +80 -0
  10. package/artifacts/contracts/interfaces/v0.8.x/IPMPV0.sol/IPMPV0.json +402 -0
  11. package/artifacts/contracts/interfaces/v0.8.x/IUniversalBytecodeStorageReader.sol/IUniversalBytecodeStorageReader.json +13 -0
  12. package/artifacts/contracts/interfaces/v0.8.x/IWeb3Call.sol/IWeb3Call.json +47 -0
  13. package/artifacts/contracts/libs/integration-refs/delegation-registry/DelegateRegistry.sol/DelegateRegistry.json +846 -0
  14. package/artifacts/contracts/libs/integration-refs/delegation-registry/libraries/RegistryHashes.sol/RegistryHashes.json +10 -0
  15. package/artifacts/contracts/libs/integration-refs/delegation-registry/libraries/RegistryOps.sol/RegistryOps.json +10 -0
  16. package/artifacts/contracts/libs/integration-refs/delegation-registry/libraries/RegistryStorage.sol/RegistryStorage.json +10 -0
  17. package/artifacts/contracts/libs/v0.8.x/DependencyRegistryStorageLib.sol/DependencyRegistryStorageLib.json +2 -2
  18. package/artifacts/contracts/libs/v0.8.x/ImmutableStringArray.sol/ImmutableStringArray.json +10 -0
  19. package/artifacts/contracts/libs/v0.8.x/V3FlexLib.sol/V3FlexLib.json +2 -2
  20. package/artifacts/contracts/mock/ImmutableStringArrayMock.sol/ImmutableStringArrayMock.json +69 -0
  21. package/artifacts/contracts/mock/MockPMPAugmentHook.sol/MockPMPAugmentHook.json +214 -0
  22. package/artifacts/contracts/mock/MockPMPConfigureHook.sol/MockPMPConfigureHook.json +236 -0
  23. package/artifacts/contracts/web3call/PMPV0.sol/PMPV0.json +629 -0
  24. package/artifacts/contracts/web3call/Web3Call.sol/Web3Call.json +66 -0
  25. package/artifacts/contracts/web3call/augment-hooks/AbstractPMPAugmentHook.sol/AbstractPMPAugmentHook.json +83 -0
  26. package/artifacts/contracts/web3call/augment-hooks/InjectBaseGasFee.sol/InjectBaseGasFee.json +83 -0
  27. package/artifacts/contracts/web3call/augment-hooks/InjectChromieSquiggleFloorPrice.sol/IUniswapV2Pair.json +60 -0
  28. package/artifacts/contracts/web3call/augment-hooks/InjectChromieSquiggleFloorPrice.sol/InjectChromieSquiggleFloorPrice.json +107 -0
  29. package/artifacts/contracts/web3call/augment-hooks/InjectIsNounsDaoMember.sol/InjectIsNounsDaoMember.json +96 -0
  30. package/artifacts/contracts/web3call/augment-hooks/InjectIsProjectFullyMinted.sol/InjectIsProjectFullyMinted.json +83 -0
  31. package/artifacts/contracts/web3call/augment-hooks/InjectPolyptychTokenHash.sol/InjectPolyptychTokenHash.json +141 -0
  32. package/artifacts/contracts/web3call/augment-hooks/InjectTokenHashSeed.sol/InjectTokenHashSeed.json +99 -0
  33. package/artifacts/contracts/web3call/augment-hooks/InjectTokenOwner.sol/InjectTokenOwner.json +99 -0
  34. package/artifacts/contracts/web3call/augment-hooks/InjectTokenOwnerEthBalance.sol/InjectTokenOwnerEthBalance.json +83 -0
  35. package/artifacts/contracts/web3call/augment-hooks/InjectUSDCTotalSupply.sol/InjectUSDCTotalSupply.json +107 -0
  36. package/artifacts/contracts/web3call/configure-hooks/abstractPMPConfigureHook.sol/AbstractPMPConfigureHook.json +80 -0
  37. package/contracts/BytecodeStorageReaders/BytecodeStorageReaderContractV2_Web3Call.sol +128 -0
  38. package/contracts/DependencyRegistryV0.sol +67 -28
  39. package/contracts/engine/V3/GenArt721CoreV3_Engine_Flex.sol +7 -1
  40. package/contracts/generator/GenArt721GeneratorV0.sol +77 -8
  41. package/contracts/interfaces/v0.8.x/IDelegateRegistry.sol +318 -0
  42. package/contracts/interfaces/v0.8.x/IDependencyRegistryV0.sol +2 -0
  43. package/contracts/interfaces/v0.8.x/IPMPAugmentHook.sol +31 -0
  44. package/contracts/interfaces/v0.8.x/IPMPConfigureHook.sol +25 -0
  45. package/contracts/interfaces/v0.8.x/IPMPV0.sol +224 -0
  46. package/contracts/interfaces/v0.8.x/IUniversalBytecodeStorageReader.sol +5 -0
  47. package/contracts/interfaces/v0.8.x/IWeb3Call.sol +28 -0
  48. package/contracts/libs/integration-refs/delegation-registry/DelegateRegistry.sol +753 -0
  49. package/contracts/libs/integration-refs/delegation-registry/libraries/RegistryHashes.sol +359 -0
  50. package/contracts/libs/integration-refs/delegation-registry/libraries/RegistryOps.sol +31 -0
  51. package/contracts/libs/integration-refs/delegation-registry/libraries/RegistryStorage.sol +87 -0
  52. package/contracts/libs/v0.8.x/DependencyRegistryStorageLib.sol +3 -0
  53. package/contracts/libs/v0.8.x/ImmutableStringArray.sol +301 -0
  54. package/contracts/libs/v0.8.x/V3FlexLib.sol +7 -1
  55. package/contracts/mock/ImmutableStringArrayMock.sol +47 -0
  56. package/contracts/mock/MockPMPAugmentHook.sol +170 -0
  57. package/contracts/mock/MockPMPConfigureHook.sol +78 -0
  58. package/contracts/web3call/PMPV0.sol +1126 -0
  59. package/contracts/web3call/Web3Call.sol +25 -0
  60. package/contracts/web3call/augment-hooks/AbstractPMPAugmentHook.sol +46 -0
  61. package/contracts/web3call/augment-hooks/InjectBaseGasFee.sol +57 -0
  62. package/contracts/web3call/augment-hooks/InjectChromieSquiggleFloorPrice.sol +103 -0
  63. package/contracts/web3call/augment-hooks/InjectIsNounsDaoMember.sol +66 -0
  64. package/contracts/web3call/augment-hooks/InjectIsProjectFullyMinted.sol +73 -0
  65. package/contracts/web3call/augment-hooks/InjectPolyptychTokenHash.sol +88 -0
  66. package/contracts/web3call/augment-hooks/InjectTokenHashSeed.sol +62 -0
  67. package/contracts/web3call/augment-hooks/InjectTokenOwner.sol +60 -0
  68. package/contracts/web3call/augment-hooks/InjectTokenOwnerEthBalance.sol +61 -0
  69. package/contracts/web3call/augment-hooks/InjectUSDCTotalSupply.sol +69 -0
  70. package/contracts/web3call/configure-hooks/abstractPMPConfigureHook.sol +41 -0
  71. package/package.json +5 -5
@@ -0,0 +1,629 @@
1
+ {
2
+ "_format": "hh-sol-artifact-1",
3
+ "contractName": "PMPV0",
4
+ "sourceName": "contracts/web3call/PMPV0.sol",
5
+ "abi": [
6
+ {
7
+ "inputs": [
8
+ {
9
+ "internalType": "contract IDelegateRegistry",
10
+ "name": "delegateRegistry_",
11
+ "type": "address"
12
+ }
13
+ ],
14
+ "stateMutability": "nonpayable",
15
+ "type": "constructor"
16
+ },
17
+ {
18
+ "inputs": [],
19
+ "name": "ReentrancyGuardReentrantCall",
20
+ "type": "error"
21
+ },
22
+ {
23
+ "anonymous": false,
24
+ "inputs": [
25
+ {
26
+ "indexed": false,
27
+ "internalType": "address",
28
+ "name": "delegationRegistry",
29
+ "type": "address"
30
+ }
31
+ ],
32
+ "name": "DelegationRegistryUpdated",
33
+ "type": "event"
34
+ },
35
+ {
36
+ "anonymous": false,
37
+ "inputs": [
38
+ {
39
+ "indexed": false,
40
+ "internalType": "address",
41
+ "name": "coreContract",
42
+ "type": "address"
43
+ },
44
+ {
45
+ "indexed": false,
46
+ "internalType": "uint256",
47
+ "name": "projectId",
48
+ "type": "uint256"
49
+ },
50
+ {
51
+ "components": [
52
+ {
53
+ "internalType": "string",
54
+ "name": "key",
55
+ "type": "string"
56
+ },
57
+ {
58
+ "components": [
59
+ {
60
+ "internalType": "enum IPMPV0.AuthOption",
61
+ "name": "authOption",
62
+ "type": "uint8"
63
+ },
64
+ {
65
+ "internalType": "enum IPMPV0.ParamType",
66
+ "name": "paramType",
67
+ "type": "uint8"
68
+ },
69
+ {
70
+ "internalType": "uint48",
71
+ "name": "pmpLockedAfterTimestamp",
72
+ "type": "uint48"
73
+ },
74
+ {
75
+ "internalType": "address",
76
+ "name": "authAddress",
77
+ "type": "address"
78
+ },
79
+ {
80
+ "internalType": "string[]",
81
+ "name": "selectOptions",
82
+ "type": "string[]"
83
+ },
84
+ {
85
+ "internalType": "bytes32",
86
+ "name": "minRange",
87
+ "type": "bytes32"
88
+ },
89
+ {
90
+ "internalType": "bytes32",
91
+ "name": "maxRange",
92
+ "type": "bytes32"
93
+ }
94
+ ],
95
+ "internalType": "struct IPMPV0.PMPConfig",
96
+ "name": "pmpConfig",
97
+ "type": "tuple"
98
+ }
99
+ ],
100
+ "indexed": false,
101
+ "internalType": "struct IPMPV0.PMPInputConfig[]",
102
+ "name": "pmpInputConfigs",
103
+ "type": "tuple[]"
104
+ },
105
+ {
106
+ "indexed": false,
107
+ "internalType": "uint8",
108
+ "name": "projectConfigNonce",
109
+ "type": "uint8"
110
+ }
111
+ ],
112
+ "name": "ProjectConfigured",
113
+ "type": "event"
114
+ },
115
+ {
116
+ "anonymous": false,
117
+ "inputs": [
118
+ {
119
+ "indexed": false,
120
+ "internalType": "address",
121
+ "name": "coreContract",
122
+ "type": "address"
123
+ },
124
+ {
125
+ "indexed": false,
126
+ "internalType": "uint256",
127
+ "name": "projectId",
128
+ "type": "uint256"
129
+ },
130
+ {
131
+ "indexed": false,
132
+ "internalType": "contract IPMPConfigureHook",
133
+ "name": "tokenPMPPostConfigHook",
134
+ "type": "address"
135
+ },
136
+ {
137
+ "indexed": false,
138
+ "internalType": "contract IPMPAugmentHook",
139
+ "name": "tokenPMPReadAugmentationHook",
140
+ "type": "address"
141
+ }
142
+ ],
143
+ "name": "ProjectHooksConfigured",
144
+ "type": "event"
145
+ },
146
+ {
147
+ "anonymous": false,
148
+ "inputs": [
149
+ {
150
+ "indexed": false,
151
+ "internalType": "address",
152
+ "name": "coreContract",
153
+ "type": "address"
154
+ },
155
+ {
156
+ "indexed": false,
157
+ "internalType": "uint256",
158
+ "name": "tokenId",
159
+ "type": "uint256"
160
+ },
161
+ {
162
+ "components": [
163
+ {
164
+ "internalType": "string",
165
+ "name": "key",
166
+ "type": "string"
167
+ },
168
+ {
169
+ "internalType": "enum IPMPV0.ParamType",
170
+ "name": "configuredParamType",
171
+ "type": "uint8"
172
+ },
173
+ {
174
+ "internalType": "bytes32",
175
+ "name": "configuredValue",
176
+ "type": "bytes32"
177
+ },
178
+ {
179
+ "internalType": "bool",
180
+ "name": "configuringArtistString",
181
+ "type": "bool"
182
+ },
183
+ {
184
+ "internalType": "string",
185
+ "name": "configuredValueString",
186
+ "type": "string"
187
+ }
188
+ ],
189
+ "indexed": false,
190
+ "internalType": "struct IPMPV0.PMPInput[]",
191
+ "name": "pmpInputs",
192
+ "type": "tuple[]"
193
+ }
194
+ ],
195
+ "name": "TokenParamsConfigured",
196
+ "type": "event"
197
+ },
198
+ {
199
+ "inputs": [],
200
+ "name": "DELEGATION_REGISTRY_TOKEN_OWNER_RIGHTS",
201
+ "outputs": [
202
+ {
203
+ "internalType": "bytes32",
204
+ "name": "",
205
+ "type": "bytes32"
206
+ }
207
+ ],
208
+ "stateMutability": "view",
209
+ "type": "function"
210
+ },
211
+ {
212
+ "inputs": [
213
+ {
214
+ "internalType": "address",
215
+ "name": "coreContract",
216
+ "type": "address"
217
+ },
218
+ {
219
+ "internalType": "uint256",
220
+ "name": "projectId",
221
+ "type": "uint256"
222
+ },
223
+ {
224
+ "components": [
225
+ {
226
+ "internalType": "string",
227
+ "name": "key",
228
+ "type": "string"
229
+ },
230
+ {
231
+ "components": [
232
+ {
233
+ "internalType": "enum IPMPV0.AuthOption",
234
+ "name": "authOption",
235
+ "type": "uint8"
236
+ },
237
+ {
238
+ "internalType": "enum IPMPV0.ParamType",
239
+ "name": "paramType",
240
+ "type": "uint8"
241
+ },
242
+ {
243
+ "internalType": "uint48",
244
+ "name": "pmpLockedAfterTimestamp",
245
+ "type": "uint48"
246
+ },
247
+ {
248
+ "internalType": "address",
249
+ "name": "authAddress",
250
+ "type": "address"
251
+ },
252
+ {
253
+ "internalType": "string[]",
254
+ "name": "selectOptions",
255
+ "type": "string[]"
256
+ },
257
+ {
258
+ "internalType": "bytes32",
259
+ "name": "minRange",
260
+ "type": "bytes32"
261
+ },
262
+ {
263
+ "internalType": "bytes32",
264
+ "name": "maxRange",
265
+ "type": "bytes32"
266
+ }
267
+ ],
268
+ "internalType": "struct IPMPV0.PMPConfig",
269
+ "name": "pmpConfig",
270
+ "type": "tuple"
271
+ }
272
+ ],
273
+ "internalType": "struct IPMPV0.PMPInputConfig[]",
274
+ "name": "pmpInputConfigs",
275
+ "type": "tuple[]"
276
+ }
277
+ ],
278
+ "name": "configureProject",
279
+ "outputs": [],
280
+ "stateMutability": "nonpayable",
281
+ "type": "function"
282
+ },
283
+ {
284
+ "inputs": [
285
+ {
286
+ "internalType": "address",
287
+ "name": "coreContract",
288
+ "type": "address"
289
+ },
290
+ {
291
+ "internalType": "uint256",
292
+ "name": "projectId",
293
+ "type": "uint256"
294
+ },
295
+ {
296
+ "internalType": "contract IPMPConfigureHook",
297
+ "name": "tokenPMPPostConfigHook",
298
+ "type": "address"
299
+ },
300
+ {
301
+ "internalType": "contract IPMPAugmentHook",
302
+ "name": "tokenPMPReadAugmentationHook",
303
+ "type": "address"
304
+ }
305
+ ],
306
+ "name": "configureProjectHooks",
307
+ "outputs": [],
308
+ "stateMutability": "nonpayable",
309
+ "type": "function"
310
+ },
311
+ {
312
+ "inputs": [
313
+ {
314
+ "internalType": "address",
315
+ "name": "coreContract",
316
+ "type": "address"
317
+ },
318
+ {
319
+ "internalType": "uint256",
320
+ "name": "tokenId",
321
+ "type": "uint256"
322
+ },
323
+ {
324
+ "components": [
325
+ {
326
+ "internalType": "string",
327
+ "name": "key",
328
+ "type": "string"
329
+ },
330
+ {
331
+ "internalType": "enum IPMPV0.ParamType",
332
+ "name": "configuredParamType",
333
+ "type": "uint8"
334
+ },
335
+ {
336
+ "internalType": "bytes32",
337
+ "name": "configuredValue",
338
+ "type": "bytes32"
339
+ },
340
+ {
341
+ "internalType": "bool",
342
+ "name": "configuringArtistString",
343
+ "type": "bool"
344
+ },
345
+ {
346
+ "internalType": "string",
347
+ "name": "configuredValueString",
348
+ "type": "string"
349
+ }
350
+ ],
351
+ "internalType": "struct IPMPV0.PMPInput[]",
352
+ "name": "pmpInputs",
353
+ "type": "tuple[]"
354
+ }
355
+ ],
356
+ "name": "configureTokenParams",
357
+ "outputs": [],
358
+ "stateMutability": "nonpayable",
359
+ "type": "function"
360
+ },
361
+ {
362
+ "inputs": [],
363
+ "name": "delegateRegistry",
364
+ "outputs": [
365
+ {
366
+ "internalType": "contract IDelegateRegistry",
367
+ "name": "",
368
+ "type": "address"
369
+ }
370
+ ],
371
+ "stateMutability": "view",
372
+ "type": "function"
373
+ },
374
+ {
375
+ "inputs": [
376
+ {
377
+ "internalType": "address",
378
+ "name": "coreContract",
379
+ "type": "address"
380
+ },
381
+ {
382
+ "internalType": "uint256",
383
+ "name": "projectId",
384
+ "type": "uint256"
385
+ }
386
+ ],
387
+ "name": "getProjectConfig",
388
+ "outputs": [
389
+ {
390
+ "internalType": "string[]",
391
+ "name": "pmpKeys",
392
+ "type": "string[]"
393
+ },
394
+ {
395
+ "internalType": "uint8",
396
+ "name": "configNonce",
397
+ "type": "uint8"
398
+ },
399
+ {
400
+ "internalType": "contract IPMPConfigureHook",
401
+ "name": "tokenPMPPostConfigHook",
402
+ "type": "address"
403
+ },
404
+ {
405
+ "internalType": "contract IPMPAugmentHook",
406
+ "name": "tokenPMPReadAugmentationHook",
407
+ "type": "address"
408
+ }
409
+ ],
410
+ "stateMutability": "view",
411
+ "type": "function"
412
+ },
413
+ {
414
+ "inputs": [
415
+ {
416
+ "internalType": "address",
417
+ "name": "coreContract",
418
+ "type": "address"
419
+ },
420
+ {
421
+ "internalType": "uint256",
422
+ "name": "projectId",
423
+ "type": "uint256"
424
+ },
425
+ {
426
+ "internalType": "string",
427
+ "name": "pmpKey",
428
+ "type": "string"
429
+ }
430
+ ],
431
+ "name": "getProjectPMPConfig",
432
+ "outputs": [
433
+ {
434
+ "components": [
435
+ {
436
+ "internalType": "uint8",
437
+ "name": "highestConfigNonce",
438
+ "type": "uint8"
439
+ },
440
+ {
441
+ "internalType": "enum IPMPV0.AuthOption",
442
+ "name": "authOption",
443
+ "type": "uint8"
444
+ },
445
+ {
446
+ "internalType": "enum IPMPV0.ParamType",
447
+ "name": "paramType",
448
+ "type": "uint8"
449
+ },
450
+ {
451
+ "internalType": "uint48",
452
+ "name": "pmpLockedAfterTimestamp",
453
+ "type": "uint48"
454
+ },
455
+ {
456
+ "internalType": "address",
457
+ "name": "authAddress",
458
+ "type": "address"
459
+ },
460
+ {
461
+ "internalType": "uint8",
462
+ "name": "selectOptionsLength",
463
+ "type": "uint8"
464
+ },
465
+ {
466
+ "internalType": "string[]",
467
+ "name": "selectOptions",
468
+ "type": "string[]"
469
+ },
470
+ {
471
+ "internalType": "bytes32",
472
+ "name": "minRange",
473
+ "type": "bytes32"
474
+ },
475
+ {
476
+ "internalType": "bytes32",
477
+ "name": "maxRange",
478
+ "type": "bytes32"
479
+ }
480
+ ],
481
+ "internalType": "struct IPMPV0.PMPConfigView",
482
+ "name": "pmpConfigView",
483
+ "type": "tuple"
484
+ }
485
+ ],
486
+ "stateMutability": "view",
487
+ "type": "function"
488
+ },
489
+ {
490
+ "inputs": [
491
+ {
492
+ "internalType": "address",
493
+ "name": "coreContract",
494
+ "type": "address"
495
+ },
496
+ {
497
+ "internalType": "uint256",
498
+ "name": "tokenId",
499
+ "type": "uint256"
500
+ },
501
+ {
502
+ "internalType": "string",
503
+ "name": "pmpKey",
504
+ "type": "string"
505
+ }
506
+ ],
507
+ "name": "getTokenPMPStorage",
508
+ "outputs": [
509
+ {
510
+ "components": [
511
+ {
512
+ "internalType": "enum IPMPV0.ParamType",
513
+ "name": "configuredParamType",
514
+ "type": "uint8"
515
+ },
516
+ {
517
+ "internalType": "bytes32",
518
+ "name": "configuredValue",
519
+ "type": "bytes32"
520
+ },
521
+ {
522
+ "internalType": "string",
523
+ "name": "artistConfiguredValueString",
524
+ "type": "string"
525
+ },
526
+ {
527
+ "internalType": "string",
528
+ "name": "nonArtistConfiguredValueString",
529
+ "type": "string"
530
+ }
531
+ ],
532
+ "internalType": "struct IPMPV0.PMPStorage",
533
+ "name": "pmp",
534
+ "type": "tuple"
535
+ }
536
+ ],
537
+ "stateMutability": "view",
538
+ "type": "function"
539
+ },
540
+ {
541
+ "inputs": [
542
+ {
543
+ "internalType": "address",
544
+ "name": "coreContract",
545
+ "type": "address"
546
+ },
547
+ {
548
+ "internalType": "uint256",
549
+ "name": "tokenId",
550
+ "type": "uint256"
551
+ }
552
+ ],
553
+ "name": "getTokenParams",
554
+ "outputs": [
555
+ {
556
+ "components": [
557
+ {
558
+ "internalType": "string",
559
+ "name": "key",
560
+ "type": "string"
561
+ },
562
+ {
563
+ "internalType": "string",
564
+ "name": "value",
565
+ "type": "string"
566
+ }
567
+ ],
568
+ "internalType": "struct IWeb3Call.TokenParam[]",
569
+ "name": "tokenParams",
570
+ "type": "tuple[]"
571
+ }
572
+ ],
573
+ "stateMutability": "view",
574
+ "type": "function"
575
+ },
576
+ {
577
+ "inputs": [
578
+ {
579
+ "internalType": "address",
580
+ "name": "wallet",
581
+ "type": "address"
582
+ },
583
+ {
584
+ "internalType": "address",
585
+ "name": "coreContract",
586
+ "type": "address"
587
+ },
588
+ {
589
+ "internalType": "uint256",
590
+ "name": "tokenId",
591
+ "type": "uint256"
592
+ }
593
+ ],
594
+ "name": "isTokenOwnerOrDelegate",
595
+ "outputs": [
596
+ {
597
+ "internalType": "bool",
598
+ "name": "",
599
+ "type": "bool"
600
+ }
601
+ ],
602
+ "stateMutability": "view",
603
+ "type": "function"
604
+ },
605
+ {
606
+ "inputs": [
607
+ {
608
+ "internalType": "bytes4",
609
+ "name": "interfaceId",
610
+ "type": "bytes4"
611
+ }
612
+ ],
613
+ "name": "supportsInterface",
614
+ "outputs": [
615
+ {
616
+ "internalType": "bool",
617
+ "name": "",
618
+ "type": "bool"
619
+ }
620
+ ],
621
+ "stateMutability": "view",
622
+ "type": "function"
623
+ }
624
+ ],
625
+ "bytecode": "0x60a06040523480156200001157600080fd5b5060405162004ce438038062004ce4833981016040819052620000349162000082565b60016000556001600160a01b03811660808190526040519081527f836360d1b094a7de3c3eab3d1185f3a5939467c23d4a12709dbdbf8c8d7e2f3b9060200160405180910390a150620000b4565b6000602082840312156200009557600080fd5b81516001600160a01b0381168114620000ad57600080fd5b9392505050565b608051614c0e620000d66000396000818160cb0152612ab80152614c0e6000f3fe608060405234801561001057600080fd5b50600436106100995760003560e01c806301ffc9a71461009e57806313bfffac146100c65780633c303afb1461010557806354ca22371461011a5780636f8637a01461013d57806398a6e11814610150578063af544a611461017a578063b69c984d1461018d578063ba8dba48146101a0578063c2b4f411146101c0578063dc809b1a146101e0575b600080fd5b6100b16100ac366004613751565b610200565b60405190151581526020015b60405180910390f35b6100ed7f000000000000000000000000000000000000000000000000000000000000000081565b6040516001600160a01b0390911681526020016100bd565b6101186101133660046137e7565b610237565b005b61012d610128366004613842565b610719565b6040516100bd94939291906138be565b61011861014b3660046137e7565b61077c565b61016c71706f73746d696e74706172616d657465727360701b81565b6040519081526020016100bd565b6100b1610188366004613945565b610a23565b61011861019b366004613986565b610a3a565b6101b36101ae366004613ae6565b610c20565b6040516100bd9190613bd2565b6101d36101ce366004613842565b610d88565b6040516100bd9190613cf3565b6101f36101ee366004613ae6565b610fa8565b6040516100bd9190613d06565b60006001600160e01b0319821663c2b4f41160e01b148061023157506301ffc9a760e01b6001600160e01b03198316145b92915050565b61023f61117e565b61024a8484336111a8565b8061010081111561029d5760405162461bcd60e51b8152602060048201526018602482015277504d503a204f6e6c79203c3d2032353620636f6e6669677360401b60448201526064015b60405180910390fd5b60005b818110156103925760008484838181106102bc576102bc613d5a565b90506020028101906102ce9190613d70565b6102d89080613d90565b91505080158015906102eb575061010081105b61034f5760405162461bcd60e51b815260206004820152602f60248201527f504d503a20706d704b65792063616e6e6f7420626520656d707479206f72206560448201526e78636565642032353520627974657360881b6064820152608401610294565b61038985858481811061036457610364613d5a565b90506020028101906103769190613d70565b610384906020810190613dd6565b611264565b506001016102a0565b506001600160a01b0385166000908152600160208181526040808420888552909152822060028101549092916103cb9160ff1690613e02565b60028301805460ff191660ff831617905590506000836001600160401b038111156103f8576103f86139d9565b60405190808252806020026020018201604052801561042b57816020015b60608152602001906001900390816104165790505b50905060005b848110156104c25786868281811061044b5761044b613d5a565b905060200281019061045d9190613d70565b6104679080613d90565b8080601f01602080910402602001604051908101604052809392919081815260200183838082843760009201919091525050845185925084915081106104af576104af613d5a565b6020908102919091010152600101610431565b506104cd81846119dd565b60005b848110156106c55760008460010160006105028585815181106104f5576104f5613d5a565b6020026020010151611a75565b8152602081019190915260400160002080549091506301000000900465ffffffffffff1680158061053257504281115b61058f5760405162461bcd60e51b815260206004820152602860248201527f504d503a20706d70206973206c6f636b656420616e642063616e6e6f74206265604482015267081d5c19185d195960c21b6064820152608401610294565b50805460ff191660ff851617815560008888848181106105b1576105b1613d5a565b90506020028101906105c39190613d70565b6105d1906020810190613dd6565b6105da90613efc565b8051835491925090839061ff0019166101008360068111156105fe576105fe613b3e565b021790555060208101518254839062ff000019166201000083600881111561062857610628613b3e565b02179055506040810151825460608301516080840151805160ff16600160e81b0260ff60e81b196001600160a01b03909316600160481b02600160481b600160e81b031965ffffffffffff909616630100000002959095166301000000600160e81b03199094169390931793909317161783556106a9906001840190611aa5565b60a0810151600283015560c001516003909101556001016104d0565b507f935e8b8dc0c19500cc0d4c29698f1af13be297f62b71eda8dd0e1a0bc6927fca88888888866040516106fd95949392919061405e565b60405180910390a1505050506107136001600055565b50505050565b6001600160a01b03821660009081526001602090815260408083208484529091528120606091908190819061074d81611d67565b6002820154600390920154909860ff831698506001600160a01b03610100909304831697509116945092505050565b61078461117e565b6001600160a01b0384166000908152600160205260408120816107a686611f91565b8152602001908152602001600020905060005b828110156109da57600061082e8585848181106107d8576107d8613d5a565b90506020028101906107ea91906141fd565b6107f49080613d90565b8080601f016020809104026020016040519081016040528093929190818152602001838380828437600092019190915250611a7592505050565b9050600085858481811061084457610844613d5a565b905060200281019061085691906141fd565b61085f90614221565b6001600160a01b03891660009081526002602081815260408084208c85528252808420878552825280842060018a019092529092209087015492935090916108b1908a908c908690859060ff16611fa0565b805482546201000090910460ff1690839060ff191660018360088111156108da576108da613b3e565b02179055506008815462010000900460ff1660088111156108fd576108fd613b3e565b0361093a5782606001511561092657608083015160028301906109209082614359565b50610945565b608083015160038301906109209082614359565b604083015160018301555b600286015461010090046001600160a01b0316156109ca57600286015460405163677e713560e01b81526101009091046001600160a01b03169063677e713590610997908d908d908890600401614418565b600060405180830381600087803b1580156109b157600080fd5b505af11580156109c5573d6000803e3d6000fd5b505050505b5050600190920191506107b99050565b507f8ab4d1a907cb32efca4abfcd8bfebaffdae90518a8e48d380e85ad5083fdc13185858585604051610a10949392919061448f565b60405180910390a1506107136001600055565b6000610a308284866129d4565b90505b9392505050565b610a4261117e565b610a4d8484336111a8565b6001600160a01b03821615610ae157610a6d8263677e713560e01b612b2c565b610ae1576040805162461bcd60e51b81526020600482015260248101919091527f504d503a20746f6b656e504d50506f7374436f6e666967486f6f6b20646f657360448201527f206e6f7420696d706c656d656e742049504d50436f6e666967757265486f6f6b6064820152608401610294565b6001600160a01b03811615610b8157610b01816358f8699f60e01b612b2c565b610b815760405162461bcd60e51b8152602060048201526044602482018190527f504d503a20746f6b656e504d50526561644175676d656e746174696f6e486f6f908201527f6b20646f6573206e6f7420696d706c656d656e742049504d504175676d656e74606482015263486f6f6b60e01b608482015260a401610294565b6001600160a01b038481166000818152600160209081526040808320888452825291829020600281018054610100600160a81b031916610100898816908102919091179091556003820180546001600160a01b031916968816968717905583519485529184018890529183015260608201929092527fd7a93580965b5dbb5c8a723af5a48167de5f41dc65e456be819bf739da05ce3890608001610a10565b610c6f60408051610120810190915260008082526020820190815260200160008152600060208201819052604082018190526060808301829052608083015260a0820181905260c09091015290565b6001600160a01b038416600090815260016020818152604080842087855290915282200181610c9d85611a75565b8152602080820192909252604001600020805460ff8082168652919350918401916101009004166006811115610cd557610cd5613b3e565b90816006811115610ce857610ce8613b3e565b9052508054604083019062010000900460ff166008811115610d0c57610d0c613b3e565b90816008811115610d1f57610d1f613b3e565b90525080546301000000810465ffffffffffff166060840152600160481b81046001600160a01b03166080840152600160e81b900460ff1660a0830152610d6860018201611d67565b60c0830152600281015460e0830152600301546101008201529392505050565b60606000610d9583611f91565b6001600160a01b03851660009081526001602090815260408083208484529091528120919250610dc482611d67565b8051909150806001600160401b03811115610de157610de16139d9565b604051908082528060200260200182016040528015610e2657816020015b6040805180820190915260608082526020820152815260200190600190039081610dff5790505b5094506000805b82811015610f08576000610e4c8583815181106104f5576104f5613d5a565b600081815260018801602090815260408083206001600160a01b038f168452600283528184208e85528352818420858552909252822092935090918291610e9291612b48565b9150915081610ea357505050610f00565b6040518060400160405280888681518110610ec057610ec0613d5a565b60200260200101518152602001828152508a8681518110610ee357610ee3613d5a565b60200260200101819052508480610ef99061458b565b9550505050505b600101610e2d565b5080865260038401546001600160a01b031615610f9d5760038401546040516358f8699f60e01b81526001600160a01b03909116906358f8699f90610f55908b908b908b906004016145a4565b600060405180830381865afa158015610f72573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f19168201604052610f9a9190810190614618565b95505b505050505092915050565b610fd260408051608081019091528060008152600060208201526060604082018190529081015290565b6001600160a01b0384166000908152600260209081526040808320868452909152812090610fff84611a75565b8152602081019190915260409081016000208151608081019092528054829060ff16600881111561103257611032613b3e565b600881111561104357611043613b3e565b815260200160018201548152602001600282018054611061906142d7565b80601f016020809104026020016040519081016040528092919081815260200182805461108d906142d7565b80156110da5780601f106110af576101008083540402835291602001916110da565b820191906000526020600020905b8154815290600101906020018083116110bd57829003601f168201915b505050505081526020016003820180546110f3906142d7565b80601f016020809104026020016040519081016040528092919081815260200182805461111f906142d7565b801561116c5780601f106111415761010080835404028352916020019161116c565b820191906000526020600020905b81548152906001019060200180831161114f57829003601f168201915b50505050508152505090509392505050565b6002600054036111a157604051633ee5aeb560e01b815260040160405180910390fd5b6002600055565b60405163a47d29cb60e01b8152600481018390526001600160a01b03808316919085169063a47d29cb90602401602060405180830381865afa1580156111f2573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906112169190614723565b6001600160a01b03161461125f5760405162461bcd60e51b815260206004820152601060248201526f1413540e881bdb9b1e48185c9d1a5cdd60821b6044820152606401610294565b505050565b60006112766040830160208401614740565b90506000611287602084018461475b565b9050600082600881111561129d5761129d613b3e565b036112ea5760405162461bcd60e51b815260206004820152601e60248201527f504d503a20706172616d5479706520697320756e636f6e6669677572656400006044820152606401610294565b6112fa6060840160408501614776565b65ffffffffffff16158061132457504261131a6060850160408601614776565b65ffffffffffff16115b6113a45760405162461bcd60e51b8152602060048201526044602482018190527f504d503a20706d704c6f636b6564416674657254696d657374616d7020697320908201527f696e20746865207061737420616e64206e6f7420756e6c696d6974656420287a60648201526365726f2960e01b608482015260a401610294565b60068160068111156113b8576113b8613b3e565b11156114005760405162461bcd60e51b81526020600482015260176024820152762826a81d1024b73b30b634b21030baba3427b83a34b7b760491b6044820152606401610294565b600882600881111561141457611414613b3e565b11156114325760405162461bcd60e51b815260040161029490614791565b600882600881111561144657611446613b3e565b0361151c57600081600681111561145f5761145f613b3e565b148061147c5750600381600681111561147a5761147a613b3e565b145b806114985750600681600681111561149657611496613b3e565b145b806114b4575060048160068111156114b2576114b2613b3e565b145b61151c5760405162461bcd60e51b815260206004820152603360248201527f504d503a20537472696e6720706172616d73206d75737420686176652061727460448201527234b9ba159030baba3432b73a34b1b0ba34b7b760691b6064820152608401610294565b600281600681111561153057611530613b3e565b148061154d5750600581600681111561154b5761154b613b3e565b145b806115695750600481600681111561156757611567613b3e565b145b806115855750600681600681111561158357611583613b3e565b145b156115f257600061159c60808501606086016147c1565b6001600160a01b0316036115ed5760405162461bcd60e51b8152602060048201526018602482015277504d503a206175746841646472657373206973207a65726f60401b6044820152606401610294565b611659565b600061160460808501606086016147c1565b6001600160a01b0316146116595760405162461bcd60e51b815260206004820152601c60248201527b504d503a206175746841646472657373206973206e6f74207a65726f60201b6044820152606401610294565b600282600881111561166d5761166d613b3e565b148061168a5750600882600881111561168857611688613b3e565b145b806116a6575060068260088111156116a4576116a4613b3e565b145b15611775576116b860808401846147de565b1590506116d75760405162461bcd60e51b815260040161029490614827565b60a0830135156117265760405162461bcd60e51b815260206004820152601a602482015279504d503a206d696e52616e6765206973206e6f7420656d70747960301b6044820152606401610294565b60c08301351561125f5760405162461bcd60e51b815260206004820152601a602482015279504d503a206d617852616e6765206973206e6f7420656d70747960301b6044820152606401610294565b600182600881111561178957611789613b3e565b0361184957600061179d60808501856147de565b9050116117ea5760405162461bcd60e51b815260206004820152601b60248201527a504d503a2073656c6563744f7074696f6e7320697320656d70747960281b6044820152606401610294565b6101006117fa60808501856147de565b9050106116d75760405162461bcd60e51b815260206004820152601f60248201527f504d503a2073656c6563744f7074696f6e73206c656e677468203e20323535006044820152606401610294565b600382600881111561185d5761185d613b3e565b148061187a5750600482600881111561187857611878613b3e565b145b806118965750600582600881111561189457611894613b3e565b145b806118b2575060078260088111156118b0576118b0613b3e565b145b156119c5576118c460808401846147de565b1590506118e35760405162461bcd60e51b815260040161029490614827565b60048260088111156118f7576118f7613b3e565b0361192c5760a083013560c08401358082126119255760405162461bcd60e51b81526004016102949061485e565b5050505050565b60a083013560c08401358082106119555760405162461bcd60e51b81526004016102949061485e565b600784600881111561196957611969613b3e565b03611925576001600160401b038111156119255760405162461bcd60e51b815260206004820152601e60248201527f504d503a206d617852616e6765203e205f54494d455354414d505f4d415800006044820152606401610294565b60405162461bcd60e51b815260040161029490614791565b60006119e882611d67565b9050600081518451146119fd57506001611a65565b60005b8451811015611a6357611a4e838281518110611a1e57611a1e613d5a565b6020026020010151868381518110611a3857611a38613d5a565b6020026020010151612fbb90919063ffffffff16565b611a5b5760019150611a63565b600101611a00565b505b8015610713576107138385611aa5565b600081604051602001611a889190614891565b604051602081830303815290604052805190602001209050919050565b80516000819003611ac257505080546001600160a01b0319169055565b6000816001600160401b03811115611adc57611adc6139d9565b604051908082528060200260200182016040528015611b05578160200160208202803683370190505b5090506000805b83811015611b775781838281518110611b2757611b27613d5a565b60200260200101906001600160401b031690816001600160401b031681525050848181518110611b5957611b59613d5a565b60200260200101515182611b6d91906148a4565b9150600101611b0c565b506001600160401b03811115611bcd5760405162461bcd60e51b815260206004820152601b60248201527a13d9999cd95d08195e18d959591cc81d5a5b9d0d8d081b1a5b5a5d602a1b6044820152606401610294565b600081611bdb8560086148b7565b611be69060086148a4565b611bf091906148a4565b90506000611bff8260206148a4565b6001600160401b03811115611c1657611c166139d9565b6040519080825280601f01601f191660200182016040528015611c40576020820181803683370190505b5060c086901b602082015290506028810160005b86811015611c99576000868281518110611c7057611c70613d5a565b602090810291909101015160c01b6001600160c01b031916835250600890910190600101611c54565b5060005b86811015611d33576000888281518110611cb957611cb9613d5a565b6020026020010151905060008151905060006020830190506000602083611ce091906148e4565b90506000611cef6020856148f8565b905060005b82811015611d12578351885260209788019790930192600101611cf4565b508015611d225782518752958601955b505060019093019250611c9d915050565b505081815280611d4281612fe0565b88546001600160a01b0319166001600160a01b03919091161790975550505050505050565b80546060906001600160a01b0316611dab576040805160008082526020820190925290611da4565b6060815260200190600190039081611d8f5790505b5092915050565b8154600090611dc2906001600160a01b0316613085565b602081015190915060c01c806001600160401b03811115611de557611de56139d9565b604051908082528060200260200182016040528015611e1857816020015b6060815260200190600190039081611e035790505b50925060005b81811015611f89576000808084611e368560016148a4565b03611e64576000865190506028870193506008850284015160c01c9250600886026008018103915050611e86565b6028860192506008840283015160c01c91506008600185010283015160c01c90505b6000611e92838361490c565b6001600160401b031690506000611eaa8260206148a4565b6001600160401b03811115611ec157611ec16139d9565b6040519080825280601f01601f191660200182016040528015611eeb576020820181803683370190505b5090506020810160005b83811015611f51576000816001600160401b038816611f158c60086148b7565b611f209060286148a4565b611f2a91906148a4565b611f3491906148a4565b8b0151835250602091820191611f4a90826148a4565b9050611ef5565b50819050828152818a8881518110611f6b57611f6b613d5a565b60200260200101819052505050505050508080600101915050611e1e565b505050919050565b6000610231620f4240836148e4565b815460ff8281169116146120195760405162461bcd60e51b815260206004820152603a60248201527f504d503a20706172616d206e6f742070617274206f66206d6f737420726563656044820152796e746c7920636f6e6669677572656420504d5020706172616d7360301b6064820152608401610294565b815462010000900460ff16600881111561203557612035613b3e565b8360200151600881111561204b5761204b613b3e565b146120925760405162461bcd60e51b81526020600482015260176024820152760a09aa07440e0c2e4c2daa8f2e0ca40dad2e6dac2e8c6d604b1b6044820152606401610294565b6000836020015160088111156120aa576120aa613b3e565b036121035760405162461bcd60e51b8152602060048201526024808201527f504d503a20696e70757420706172616d5479706520697320756e636f6e6669676044820152631d5c995960e21b6064820152608401610294565b8154610100900460ff16600081600681111561212157612121613b3e565b0361217e576121318686336130a6565b6121795760405162461bcd60e51b81526020600482015260196024820152781413540e88185c9d1a5cdd08185d5d1a081c995c5d5a5c9959603a1b6044820152606401610294565b612529565b600181600681111561219257612192613b3e565b036121ee576121a28686336129d4565b6121795760405162461bcd60e51b815260206004820152601e60248201527f504d503a20746f6b656e206f776e6572206175746820726571756972656400006044820152606401610294565b600381600681111561220257612202613b3e565b03612281576122128686336130a6565b8061222357506122238686336129d4565b6121795760405162461bcd60e51b815260206004820152602960248201527f504d503a2061727469737420616e6420746f6b656e206f776e65722061757468604482015268081c995c5d5a5c995960ba1b6064820152608401610294565b600281600681111561229557612295613b3e565b036122f7578254600160481b90046001600160a01b031633146121795760405162461bcd60e51b815260206004820152601a6024820152791413540e881859191c995cdcc8185d5d1a081c995c5d5a5c995960321b6044820152606401610294565b600681600681111561230b5761230b613b3e565b036123b15761231b8686336130a6565b8061233657508254600160481b90046001600160a01b031633145b8061234757506123478686336129d4565b6121795760405162461bcd60e51b815260206004820152603560248201527f504d503a2061727469737420616e6420746f6b656e206f776e657220616e64206044820152741859191c995cdcc8185d5d1a081c995c5d5a5c9959605a1b6064820152608401610294565b60048160068111156123c5576123c5613b3e565b0361244a576123d58686336130a6565b806123f057508254600160481b90046001600160a01b031633145b6121795760405162461bcd60e51b815260206004820152602560248201527f504d503a2061727469737420616e6420616464726573732061757468207265716044820152641d5a5c995960da1b6064820152608401610294565b600581600681111561245e5761245e613b3e565b036124e7578254600160481b90046001600160a01b031633148061248857506124888686336129d4565b6121795760405162461bcd60e51b815260206004820152602a60248201527f504d503a20746f6b656e206f776e657220616e642061646472657373206175746044820152691a081c995c5d5a5c995960b21b6064820152608401610294565b60405162461bcd60e51b81526020600482015260176024820152762826a81d1034b73b30b634b21030baba3427b83a34b7b760491b6044820152606401610294565b50815462010000900460ff16600881600881111561254957612549613b3e565b146127db57600181600881111561256257612562613b3e565b036125da5782546040850151600160e81b90910460ff16116125d55760405162461bcd60e51b815260206004820152602660248201527f504d503a2073656c6563744f7074696f6e7320696e646578206f7574206f6620604482015265626f756e647360d01b6064820152608401610294565b6127db565b60028160088111156125ee576125ee613b3e565b036126605760408401511580612608575060408401516001145b6125d55760405162461bcd60e51b8152602060048201526024808201527f504d503a20626f6f6c20706172616d2076616c7565206d7573742062652030206044820152636f72203160e01b6064820152608401610294565b600381600881111561267457612674613b3e565b14806126915750600581600881111561268f5761268f613b3e565b145b156126d25782600201548460400151101580156126b657508260030154846040015111155b6125d55760405162461bcd60e51b81526004016102949061492c565b60048160088111156126e6576126e6613b3e565b036127265760028301546040850151128015906126b657506003830154604085015113156125d55760405162461bcd60e51b81526004016102949061492c565b600781600881111561273a5761273a613b3e565b0361275a5760408401516001600160401b03108015906126b657506127db565b600681600881111561276e5761276e613b3e565b0361279a57604084015162ffffff10156125d55760405162461bcd60e51b815260040161029490614963565b60405162461bcd60e51b8152602060048201526016602482015275504d503a20696e76616c696420706172616d5479706560501b6044820152606401610294565b6008835462010000900460ff1660088111156127f9576127f9613b3e565b036128e6576040840151156128635760405162461bcd60e51b815260206004820152602a60248201527f504d503a2076616c7565206d75737420626520656d70747920666f7220737472604482015269696e6720706172616d7360b01b6064820152608401610294565b8360600151156128e1576128788686336130a6565b6128e15760405162461bcd60e51b815260206004820152603460248201527f504d503a20617274697374206175746820726571756972656420746f20636f6e6044820152736669677572652061727469737420737472696e6760601b6064820152608401610294565b6129cc565b608084015151156129545760405162461bcd60e51b815260206004820152603260248201527f504d503a206e6f6e2d737472696e6720706172616d206d757374206861766520604482015271656d70747920737472696e672076616c756560701b6064820152608401610294565b8360600151156129cc5760405162461bcd60e51b815260206004820152603d60248201527f504d503a2061727469737420737472696e672063616e6e6f7420626520636f6e60448201527f6669677572656420666f72206e6f6e2d737472696e6720706172616d730000006064820152608401610294565b505050505050565b6040516331a9108f60e11b81526004810184905260009081906001600160a01b03851690636352211e90602401602060405180830381865afa158015612a1e573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612a429190614723565b9050826001600160a01b0316816001600160a01b031603612a67576001915050610a33565b604051632e7cda1d60e21b81526001600160a01b038481166004830152828116602483015285811660448301526064820187905271706f73746d696e74706172616d657465727360701b60848301527f0000000000000000000000000000000000000000000000000000000000000000169063b9f368749060a401602060405180830381865afa158015612aff573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612b239190614993565b95945050505050565b6000612b3783613140565b8015610a335750610a338383613173565b805460009060609060ff1682816008811115612b6657612b66613b3e565b1480612b9e5750845462010000900460ff166008811115612b8957612b89613b3e565b816008811115612b9b57612b9b613b3e565b14155b15612bbc575050604080516020810190915260008082529150612fb4565b6008855462010000900460ff166008811115612bda57612bda613b3e565b03612cd8576000846002018054612bf0906142d7565b90501115612c9457600184600201808054612c0a906142d7565b80601f0160208091040260200160405190810160405280929190818152602001828054612c36906142d7565b8015612c835780601f10612c5857610100808354040283529160200191612c83565b820191906000526020600020905b815481529060010190602001808311612c6657829003601f168201915b505050505090509250925050612fb4565b6000846003018054612ca5906142d7565b90501115612cbf57600184600301808054612c0a906142d7565b5050604080516020810190915260008082529150612fb4565b6001816008811115612cec57612cec613b3e565b03612d3e5784546001850154600160e81b90910460ff1611612d21575050604080516020810190915260008082529150612fb4565b600184810154612d3490878301906131fd565b9250925050612fb4565b6002816008811115612d5257612d52613b3e565b03612dac5760018481015415612d8457604051806040016040528060048152602001637472756560e01b815250612d34565b6040518060400160405280600581526020016466616c736560d81b8152509250925050612fb4565b6003816008811115612dc057612dc0613b3e565b1480612ddd57506006816008811115612ddb57612ddb613b3e565b145b80612df957506007816008811115612df757612df7613b3e565b145b80612e1557506005816008811115612e1357612e13613b3e565b145b15612f0657600184015460006006836008811115612e3557612e35613b3e565b14612e44576003870154612e49565b62ffffff5b905060006006846008811115612e6157612e61613b3e565b14612e70576002880154612e73565b60005b905080831080612e8257508183115b15612ea6576000604051806020016040528060008152509550955050505050612fb4565b6005846008811115612eba57612eba613b3e565b03612ed7576001612eca846133a7565b9550955050505050612fb4565b6006846008811115612eeb57612eeb613b3e565b03612efb576001612eca84613454565b6001612eca8461353d565b6004816008811115612f1a57612f1a613b3e565b03612f715760018401546002860154811280612f395750600386015481135b15612f5b57600060405180602001604052806000815250935093505050612fb4565b6001612f66826135cf565b935093505050612fb4565b60405162461bcd60e51b8152602060048201526018602482015277504d503a20556e68616e646c656420506172616d5479706560401b6044820152606401610294565b9250929050565b600081518351148015610a335750508051602091820120825192909101919091201490565b60008082604051602001612ff491906149b0565b604051602081830303815290604052905060008160405160200161301891906149d6565b60405160208183030381529060405290508051602082016000f092506001600160a01b03831661307e5760405162461bcd60e51b81526020600482015260116024820152701111541313d65351539517d19052531151607a1b6044820152606401610294565b5050919050565b60606102318260016130a1816001600160a01b0384163b614a0a565b613641565b6000806130b285611f91565b9050826001600160a01b0316846001600160a01b031663a47d29cb836040518263ffffffff1660e01b81526004016130ec91815260200190565b602060405180830381865afa158015613109573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061312d9190614723565b6001600160a01b03161495945050505050565b6000613153826301ffc9a760e01b613173565b8015610231575061316c826001600160e01b0319613173565b1592915050565b6040516001600160e01b031982166024820152600090819060440160408051601f19818403018152919052602080820180516001600160e01b03166301ffc9a760e01b178152825192935060009283928392909183918a617530fa92503d915060005190508280156131e6575060208210155b80156131f25750600081115b979650505050505050565b81546060906001600160a01b03166132275760405162461bcd60e51b815260040161029490614a1d565b825460009061323e906001600160a01b0316613085565b9050600080600080602085015160c01c905080871061326f5760405162461bcd60e51b815260040161029490614a1d565b8061327b8860016148a4565b036132a9576000855190506028860194506008880285015160c01c93506008820260080181039250506132cb565b6028850193506008870284015160c01c92506008600188010284015160c01c91505b60006132d7848461490c565b6001600160401b0316905060006132ef8260206148a4565b6001600160401b03811115613306576133066139d9565b6040519080825280601f01601f191660200182016040528015613330576020820181803683370190505b5090506020810160005b83811015613396576000816001600160401b03891661335a8860086148b7565b6133659060286148a4565b61336f91906148a4565b61337991906148a4565b8a015183525060209182019161338f90826148a4565b905061333a565b505090815298975050505050505050565b606060006133b6600a80614b2e565b6133c090846148e4565b905060006133cf600a80614b2e565b6133d990856148f8565b905060006133e68361353d565b905060006133f38361353d565b90505b600a8151101561342757806040516020016134119190614b3a565b60405160208183030381529060405290506133f6565b818160405160200161343a929190614b56565b604051602081830303815290604052945050505050919050565b6040805160078082528183019092526060918391600091602082018180368337019050509050602360f81b8160008151811061349257613492613d5a565b60200101906001600160f81b031916908160001a90535060065b801561351e576f181899199a1a9b1b9c1cb0b131b232b360811b83600f16601081106134da576134da613d5a565b1a60f81b8282815181106134f0576134f0613d5a565b60200101906001600160f81b031916908160001a90535060049290921c9161351781614b92565b90506134ac565b508115610a335760405162461bcd60e51b815260040161029490614963565b6060600061354a83613664565b60010190506000816001600160401b03811115613569576135696139d9565b6040519080825280601f01601f191660200182016040528015613593576020820181803683370190505b5090508181016020015b600019016f181899199a1a9b1b9c1cb0b131b232b360811b600a86061a8153600a850494508461359d57509392505050565b6060600082126135ee5760405180602001604052806000815250613609565b604051806040016040528060018152602001602d60f81b8152505b61361a6136158461373a565b61353d565b60405160200161362b929190614ba9565b6040516020818303038152906040529050919050565b60408051603f8301601f19168101909152818152818360208301863c9392505050565b60008072184f03e93ff9f4daa797ed6e38ed64bf6a1f0160401b83106136a35772184f03e93ff9f4daa797ed6e38ed64bf6a1f0160401b830492506040015b6904ee2d6d415b85acef8160201b83106136cd576904ee2d6d415b85acef8160201b830492506020015b662386f26fc1000083106136eb57662386f26fc10000830492506010015b6305f5e1008310613703576305f5e100830492506008015b612710831061371757612710830492506004015b60648310613729576064830492506002015b600a83106102315760010192915050565b60008082121561374d5781600003610231565b5090565b60006020828403121561376357600080fd5b81356001600160e01b031981168114610a3357600080fd5b6001600160a01b038116811461379057600080fd5b50565b803561379e8161377b565b919050565b60008083601f8401126137b557600080fd5b5081356001600160401b038111156137cc57600080fd5b6020830191508360208260051b8501011115612fb457600080fd5b600080600080606085870312156137fd57600080fd5b84356138088161377b565b93506020850135925060408501356001600160401b0381111561382a57600080fd5b613836878288016137a3565b95989497509550505050565b6000806040838503121561385557600080fd5b82356138608161377b565b946020939093013593505050565b60005b83811015613889578181015183820152602001613871565b50506000910152565b600081518084526138aa81602086016020860161386e565b601f01601f19169290920160200192915050565b6000608082016080835280875180835260a08501915060a08160051b86010192506020808a0160005b8381101561391557609f19888703018552613903868351613892565b955093820193908201906001016138e7565b5050505060ff9690961660208401526001600160a01b039485166040840152929093166060909101529392505050565b60008060006060848603121561395a57600080fd5b83356139658161377b565b925060208401356139758161377b565b929592945050506040919091013590565b6000806000806080858703121561399c57600080fd5b84356139a78161377b565b93506020850135925060408501356139be8161377b565b915060608501356139ce8161377b565b939692955090935050565b634e487b7160e01b600052604160045260246000fd5b60405160e081016001600160401b0381118282101715613a1157613a116139d9565b60405290565b604080519081016001600160401b0381118282101715613a1157613a116139d9565b604051601f8201601f191681016001600160401b0381118282101715613a6157613a616139d9565b604052919050565b60006001600160401b03821115613a8257613a826139d9565b50601f01601f191660200190565b600082601f830112613aa157600080fd5b8135613ab4613aaf82613a69565b613a39565b818152846020838601011115613ac957600080fd5b816020850160208301376000918101602001919091529392505050565b600080600060608486031215613afb57600080fd5b8335613b068161377b565b92506020840135915060408401356001600160401b03811115613b2857600080fd5b613b3486828701613a90565b9150509250925092565b634e487b7160e01b600052602160045260246000fd5b60078110613b6457613b64613b3e565b9052565b60098110613b6457613b64613b3e565b60008282518085526020808601955060208260051b8401016020860160005b84811015613bc557601f19868403018952613bb3838351613892565b98840198925090830190600101613b97565b5090979650505050505050565b60208152613be660208201835160ff169052565b60006020830151613bfa6040840182613b54565b506040830151613c0d6060840182613b68565b50606083015165ffffffffffff811660808401525060808301516001600160a01b03811660a08401525060a083015160ff811660c08401525060c08301516101208060e0850152613c62610140850183613b78565b60e086015161010086810191909152909501519301929092525090919050565b600082825180855260208086019550808260051b84010181860160005b84811015613bc557601f19868403018952815160408151818652613cc582870182613892565b91505085820151915084810386860152613cdf8183613892565b9a86019a9450505090830190600101613c9f565b602081526000610a336020830184613c82565b60208152613d18602082018351613b68565b602082015160408201526000604083015160806060840152613d3d60a0840182613892565b90506060840151601f19848303016080850152612b238282613892565b634e487b7160e01b600052603260045260246000fd5b60008235603e19833603018112613d8657600080fd5b9190910192915050565b6000808335601e19843603018112613da757600080fd5b8301803591506001600160401b03821115613dc157600080fd5b602001915036819003821315612fb457600080fd5b6000823560de19833603018112613d8657600080fd5b634e487b7160e01b600052601160045260246000fd5b60ff818116838216019081111561023157610231613dec565b80356007811061379e57600080fd5b80356009811061379e57600080fd5b803565ffffffffffff8116811461379e57600080fd5b60006001600160401b03821115613e6857613e686139d9565b5060051b60200190565b600082601f830112613e8357600080fd5b81356020613e93613aaf83613e4f565b82815260059290921b84018101918181019086841115613eb257600080fd5b8286015b84811015613ef15780356001600160401b03811115613ed55760008081fd5b613ee38986838b0101613a90565b845250918301918301613eb6565b509695505050505050565b600060e08236031215613f0e57600080fd5b613f166139ef565b613f1f83613e1b565b8152613f2d60208401613e2a565b6020820152613f3e60408401613e39565b6040820152613f4f60608401613793565b606082015260808301356001600160401b03811115613f6d57600080fd5b613f7936828601613e72565b60808301525060a083013560a082015260c083013560c082015280915050919050565b6000808335601e19843603018112613fb357600080fd5b83016020810192503590506001600160401b03811115613fd257600080fd5b803603821315612fb457600080fd5b81835281816020850137506000828201602090810191909152601f909101601f19169091010190565b6000838385526020808601955060208560051b8301018460005b87811015613bc557848303601f1901895261403f8288613f9c565b61404a858284613fe1565b9a86019a9450505090830190600101614024565b6001600160a01b038681168252602080830187905260806040808501829052848201879052600093919260a0929183870160058a901b880185018b885b8c8110156141da578a8303609f190184528135368f9003603e190181126140c157600080fd5b8e016140cd8180613f9c565b8786526140dd8887018284613fe1565b9150508782013560de198336030181126140f657600080fd5b858203898701529091019060e06141158261411085613e1b565b613b54565b614120898401613e2a565b61412c8a840182613b68565b5065ffffffffffff61413f898501613e39565b16888301526060808401356141538161377b565b8b1690830152828c013536849003601e1901811261417057600080fd5b830189810190356001600160401b0381111561418b57600080fd5b8060051b360382131561419d57600080fd5b828e8501526141af838501828461400a565b858e0135858f015260c09586013595909401949094525050948701949350509085019060010161409b565b505060ff8a1660608a015296506141f395505050505050565b9695505050505050565b60008235609e19833603018112613d8657600080fd5b801515811461379057600080fd5b600060a0823603121561423357600080fd5b60405160a081016001600160401b038082118383101715614256576142566139d9565b81604052843591508082111561426b57600080fd5b61427736838701613a90565b835261428560208601613e2a565b602084015260408501356040840152606085013591506142a482614213565b81606084015260808501359150808211156142be57600080fd5b506142cb36828601613a90565b60808301525092915050565b600181811c908216806142eb57607f821691505b60208210810361430b57634e487b7160e01b600052602260045260246000fd5b50919050565b601f82111561125f576000816000526020600020601f850160051c8101602086101561433a5750805b601f850160051c820191505b818110156129cc57828155600101614346565b81516001600160401b03811115614372576143726139d9565b6143868161438084546142d7565b84614311565b602080601f8311600181146143bb57600084156143a35750858301515b600019600386901b1c1916600185901b1785556129cc565b600085815260208120601f198616915b828110156143ea578886015182559484019460019091019084016143cb565b50858210156144085787850151600019600388901b60f8161c191681555b5050505050600190811b01905550565b60018060a01b0384168152826020820152606060408201526000825160a06060840152614449610100840182613892565b9050602084015161445d6080850182613b68565b50604084015160a08401526060840151151560c08401526080840151838203605f190160e08501526131f28282613892565b6001600160a01b0385168152602080820185905260606040808401829052838201859052600092608091828601600588901b870184018987805b8b811015614578578a8403607f190185528235368e9003609e190181126144ee578283fd5b8d0160a06144fc8280613f9c565b82885261450c8389018284613fe1565b9250505061451b898301613e2a565b6145278a880182613b68565b5087820135888701528a82013561453d81614213565b1515868c015261454f828b0183613f9c565b92508682038b880152614563828483613fe1565b978a01979650505092870192506001016144c9565b50919d9c50505050505050505050505050565b60006001820161459d5761459d613dec565b5060010190565b60018060a01b0384168152826020820152606060408201526000612b236060830184613c82565b600082601f8301126145dc57600080fd5b81516145ea613aaf82613a69565b8181528460208386010111156145ff57600080fd5b61461082602083016020870161386e565b949350505050565b6000602080838503121561462b57600080fd5b82516001600160401b038082111561464257600080fd5b818501915085601f83011261465657600080fd5b8151614664613aaf82613e4f565b81815260059190911b8301840190848101908883111561468357600080fd5b8585015b838110156147165780518581111561469f5760008081fd5b86016040818c03601f19018113156146b75760008081fd5b6146bf613a17565b89830151888111156146d15760008081fd5b6146df8e8c838701016145cb565b8252509082015190878211156146f55760008081fd5b6147038d8b848601016145cb565b818b015285525050918601918601614687565b5098975050505050505050565b60006020828403121561473557600080fd5b8151610a338161377b565b60006020828403121561475257600080fd5b610a3382613e2a565b60006020828403121561476d57600080fd5b610a3382613e1b565b60006020828403121561478857600080fd5b610a3382613e39565b602080825260169082015275504d503a20496e76616c696420706172616d5479706560501b604082015260600190565b6000602082840312156147d357600080fd5b8135610a338161377b565b6000808335601e198436030181126147f557600080fd5b8301803591506001600160401b0382111561480f57600080fd5b6020019150600581901b3603821315612fb457600080fd5b6020808252601f908201527f504d503a2073656c6563744f7074696f6e73206973206e6f7420656d70747900604082015260600190565b602080825260199082015278504d503a206d696e52616e6765203e3d206d617852616e676560381b604082015260600190565b602081526000610a336020830184613892565b8082018082111561023157610231613dec565b808202811582820484141761023157610231613dec565b634e487b7160e01b600052601260045260246000fd5b6000826148f3576148f36148ce565b500490565b600082614907576149076148ce565b500690565b6001600160401b03828116828216039080821115611da457611da4613dec565b6020808252601e908201527f504d503a20706172616d2076616c7565206f7574206f6620626f756e64730000604082015260600190565b6020808252601690820152752826a81d1034b73b30b634b2103432bc1031b7b637b960511b604082015260600190565b6000602082840312156149a557600080fd5b8151610a3381614213565b60008152600082516149c981600185016020870161386e565b9190910160010192915050565b6a600b5981380380925939f360a81b815281516000906149fd81600b85016020870161386e565b91909101600b0192915050565b8181038181111561023157610231613dec565b602080825260139082015272496e646578206f7574206f6620626f756e647360681b604082015260600190565b600181815b80851115614a85578160001904821115614a6b57614a6b613dec565b80851615614a7857918102915b93841c9390800290614a4f565b509250929050565b600082614a9c57506001610231565b81614aa957506000610231565b8160018114614abf5760028114614ac957614ae5565b6001915050610231565b60ff841115614ada57614ada613dec565b50506001821b610231565b5060208310610133831016604e8410600b8410161715614b08575081810a610231565b614b128383614a4a565b8060001904821115614b2657614b26613dec565b029392505050565b6000610a338383614a8d565b600360fc1b8152600082516149c981600185016020870161386e565b60008351614b6881846020880161386e565b601760f91b9083019081528351614b8681600184016020880161386e565b01600101949350505050565b600081614ba157614ba1613dec565b506000190190565b60008351614bbb81846020880161386e565b835190830190614bcf81836020880161386e565b0194935050505056fea264697066735822122009134577e06d298f315ea2e69af422ee36cdd6d644576852f5fe8b14ecebd2b664736f6c63430008160033",
626
+ "deployedBytecode": "0x608060405234801561001057600080fd5b50600436106100995760003560e01c806301ffc9a71461009e57806313bfffac146100c65780633c303afb1461010557806354ca22371461011a5780636f8637a01461013d57806398a6e11814610150578063af544a611461017a578063b69c984d1461018d578063ba8dba48146101a0578063c2b4f411146101c0578063dc809b1a146101e0575b600080fd5b6100b16100ac366004613751565b610200565b60405190151581526020015b60405180910390f35b6100ed7f000000000000000000000000000000000000000000000000000000000000000081565b6040516001600160a01b0390911681526020016100bd565b6101186101133660046137e7565b610237565b005b61012d610128366004613842565b610719565b6040516100bd94939291906138be565b61011861014b3660046137e7565b61077c565b61016c71706f73746d696e74706172616d657465727360701b81565b6040519081526020016100bd565b6100b1610188366004613945565b610a23565b61011861019b366004613986565b610a3a565b6101b36101ae366004613ae6565b610c20565b6040516100bd9190613bd2565b6101d36101ce366004613842565b610d88565b6040516100bd9190613cf3565b6101f36101ee366004613ae6565b610fa8565b6040516100bd9190613d06565b60006001600160e01b0319821663c2b4f41160e01b148061023157506301ffc9a760e01b6001600160e01b03198316145b92915050565b61023f61117e565b61024a8484336111a8565b8061010081111561029d5760405162461bcd60e51b8152602060048201526018602482015277504d503a204f6e6c79203c3d2032353620636f6e6669677360401b60448201526064015b60405180910390fd5b60005b818110156103925760008484838181106102bc576102bc613d5a565b90506020028101906102ce9190613d70565b6102d89080613d90565b91505080158015906102eb575061010081105b61034f5760405162461bcd60e51b815260206004820152602f60248201527f504d503a20706d704b65792063616e6e6f7420626520656d707479206f72206560448201526e78636565642032353520627974657360881b6064820152608401610294565b61038985858481811061036457610364613d5a565b90506020028101906103769190613d70565b610384906020810190613dd6565b611264565b506001016102a0565b506001600160a01b0385166000908152600160208181526040808420888552909152822060028101549092916103cb9160ff1690613e02565b60028301805460ff191660ff831617905590506000836001600160401b038111156103f8576103f86139d9565b60405190808252806020026020018201604052801561042b57816020015b60608152602001906001900390816104165790505b50905060005b848110156104c25786868281811061044b5761044b613d5a565b905060200281019061045d9190613d70565b6104679080613d90565b8080601f01602080910402602001604051908101604052809392919081815260200183838082843760009201919091525050845185925084915081106104af576104af613d5a565b6020908102919091010152600101610431565b506104cd81846119dd565b60005b848110156106c55760008460010160006105028585815181106104f5576104f5613d5a565b6020026020010151611a75565b8152602081019190915260400160002080549091506301000000900465ffffffffffff1680158061053257504281115b61058f5760405162461bcd60e51b815260206004820152602860248201527f504d503a20706d70206973206c6f636b656420616e642063616e6e6f74206265604482015267081d5c19185d195960c21b6064820152608401610294565b50805460ff191660ff851617815560008888848181106105b1576105b1613d5a565b90506020028101906105c39190613d70565b6105d1906020810190613dd6565b6105da90613efc565b8051835491925090839061ff0019166101008360068111156105fe576105fe613b3e565b021790555060208101518254839062ff000019166201000083600881111561062857610628613b3e565b02179055506040810151825460608301516080840151805160ff16600160e81b0260ff60e81b196001600160a01b03909316600160481b02600160481b600160e81b031965ffffffffffff909616630100000002959095166301000000600160e81b03199094169390931793909317161783556106a9906001840190611aa5565b60a0810151600283015560c001516003909101556001016104d0565b507f935e8b8dc0c19500cc0d4c29698f1af13be297f62b71eda8dd0e1a0bc6927fca88888888866040516106fd95949392919061405e565b60405180910390a1505050506107136001600055565b50505050565b6001600160a01b03821660009081526001602090815260408083208484529091528120606091908190819061074d81611d67565b6002820154600390920154909860ff831698506001600160a01b03610100909304831697509116945092505050565b61078461117e565b6001600160a01b0384166000908152600160205260408120816107a686611f91565b8152602001908152602001600020905060005b828110156109da57600061082e8585848181106107d8576107d8613d5a565b90506020028101906107ea91906141fd565b6107f49080613d90565b8080601f016020809104026020016040519081016040528093929190818152602001838380828437600092019190915250611a7592505050565b9050600085858481811061084457610844613d5a565b905060200281019061085691906141fd565b61085f90614221565b6001600160a01b03891660009081526002602081815260408084208c85528252808420878552825280842060018a019092529092209087015492935090916108b1908a908c908690859060ff16611fa0565b805482546201000090910460ff1690839060ff191660018360088111156108da576108da613b3e565b02179055506008815462010000900460ff1660088111156108fd576108fd613b3e565b0361093a5782606001511561092657608083015160028301906109209082614359565b50610945565b608083015160038301906109209082614359565b604083015160018301555b600286015461010090046001600160a01b0316156109ca57600286015460405163677e713560e01b81526101009091046001600160a01b03169063677e713590610997908d908d908890600401614418565b600060405180830381600087803b1580156109b157600080fd5b505af11580156109c5573d6000803e3d6000fd5b505050505b5050600190920191506107b99050565b507f8ab4d1a907cb32efca4abfcd8bfebaffdae90518a8e48d380e85ad5083fdc13185858585604051610a10949392919061448f565b60405180910390a1506107136001600055565b6000610a308284866129d4565b90505b9392505050565b610a4261117e565b610a4d8484336111a8565b6001600160a01b03821615610ae157610a6d8263677e713560e01b612b2c565b610ae1576040805162461bcd60e51b81526020600482015260248101919091527f504d503a20746f6b656e504d50506f7374436f6e666967486f6f6b20646f657360448201527f206e6f7420696d706c656d656e742049504d50436f6e666967757265486f6f6b6064820152608401610294565b6001600160a01b03811615610b8157610b01816358f8699f60e01b612b2c565b610b815760405162461bcd60e51b8152602060048201526044602482018190527f504d503a20746f6b656e504d50526561644175676d656e746174696f6e486f6f908201527f6b20646f6573206e6f7420696d706c656d656e742049504d504175676d656e74606482015263486f6f6b60e01b608482015260a401610294565b6001600160a01b038481166000818152600160209081526040808320888452825291829020600281018054610100600160a81b031916610100898816908102919091179091556003820180546001600160a01b031916968816968717905583519485529184018890529183015260608201929092527fd7a93580965b5dbb5c8a723af5a48167de5f41dc65e456be819bf739da05ce3890608001610a10565b610c6f60408051610120810190915260008082526020820190815260200160008152600060208201819052604082018190526060808301829052608083015260a0820181905260c09091015290565b6001600160a01b038416600090815260016020818152604080842087855290915282200181610c9d85611a75565b8152602080820192909252604001600020805460ff8082168652919350918401916101009004166006811115610cd557610cd5613b3e565b90816006811115610ce857610ce8613b3e565b9052508054604083019062010000900460ff166008811115610d0c57610d0c613b3e565b90816008811115610d1f57610d1f613b3e565b90525080546301000000810465ffffffffffff166060840152600160481b81046001600160a01b03166080840152600160e81b900460ff1660a0830152610d6860018201611d67565b60c0830152600281015460e0830152600301546101008201529392505050565b60606000610d9583611f91565b6001600160a01b03851660009081526001602090815260408083208484529091528120919250610dc482611d67565b8051909150806001600160401b03811115610de157610de16139d9565b604051908082528060200260200182016040528015610e2657816020015b6040805180820190915260608082526020820152815260200190600190039081610dff5790505b5094506000805b82811015610f08576000610e4c8583815181106104f5576104f5613d5a565b600081815260018801602090815260408083206001600160a01b038f168452600283528184208e85528352818420858552909252822092935090918291610e9291612b48565b9150915081610ea357505050610f00565b6040518060400160405280888681518110610ec057610ec0613d5a565b60200260200101518152602001828152508a8681518110610ee357610ee3613d5a565b60200260200101819052508480610ef99061458b565b9550505050505b600101610e2d565b5080865260038401546001600160a01b031615610f9d5760038401546040516358f8699f60e01b81526001600160a01b03909116906358f8699f90610f55908b908b908b906004016145a4565b600060405180830381865afa158015610f72573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f19168201604052610f9a9190810190614618565b95505b505050505092915050565b610fd260408051608081019091528060008152600060208201526060604082018190529081015290565b6001600160a01b0384166000908152600260209081526040808320868452909152812090610fff84611a75565b8152602081019190915260409081016000208151608081019092528054829060ff16600881111561103257611032613b3e565b600881111561104357611043613b3e565b815260200160018201548152602001600282018054611061906142d7565b80601f016020809104026020016040519081016040528092919081815260200182805461108d906142d7565b80156110da5780601f106110af576101008083540402835291602001916110da565b820191906000526020600020905b8154815290600101906020018083116110bd57829003601f168201915b505050505081526020016003820180546110f3906142d7565b80601f016020809104026020016040519081016040528092919081815260200182805461111f906142d7565b801561116c5780601f106111415761010080835404028352916020019161116c565b820191906000526020600020905b81548152906001019060200180831161114f57829003601f168201915b50505050508152505090509392505050565b6002600054036111a157604051633ee5aeb560e01b815260040160405180910390fd5b6002600055565b60405163a47d29cb60e01b8152600481018390526001600160a01b03808316919085169063a47d29cb90602401602060405180830381865afa1580156111f2573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906112169190614723565b6001600160a01b03161461125f5760405162461bcd60e51b815260206004820152601060248201526f1413540e881bdb9b1e48185c9d1a5cdd60821b6044820152606401610294565b505050565b60006112766040830160208401614740565b90506000611287602084018461475b565b9050600082600881111561129d5761129d613b3e565b036112ea5760405162461bcd60e51b815260206004820152601e60248201527f504d503a20706172616d5479706520697320756e636f6e6669677572656400006044820152606401610294565b6112fa6060840160408501614776565b65ffffffffffff16158061132457504261131a6060850160408601614776565b65ffffffffffff16115b6113a45760405162461bcd60e51b8152602060048201526044602482018190527f504d503a20706d704c6f636b6564416674657254696d657374616d7020697320908201527f696e20746865207061737420616e64206e6f7420756e6c696d6974656420287a60648201526365726f2960e01b608482015260a401610294565b60068160068111156113b8576113b8613b3e565b11156114005760405162461bcd60e51b81526020600482015260176024820152762826a81d1024b73b30b634b21030baba3427b83a34b7b760491b6044820152606401610294565b600882600881111561141457611414613b3e565b11156114325760405162461bcd60e51b815260040161029490614791565b600882600881111561144657611446613b3e565b0361151c57600081600681111561145f5761145f613b3e565b148061147c5750600381600681111561147a5761147a613b3e565b145b806114985750600681600681111561149657611496613b3e565b145b806114b4575060048160068111156114b2576114b2613b3e565b145b61151c5760405162461bcd60e51b815260206004820152603360248201527f504d503a20537472696e6720706172616d73206d75737420686176652061727460448201527234b9ba159030baba3432b73a34b1b0ba34b7b760691b6064820152608401610294565b600281600681111561153057611530613b3e565b148061154d5750600581600681111561154b5761154b613b3e565b145b806115695750600481600681111561156757611567613b3e565b145b806115855750600681600681111561158357611583613b3e565b145b156115f257600061159c60808501606086016147c1565b6001600160a01b0316036115ed5760405162461bcd60e51b8152602060048201526018602482015277504d503a206175746841646472657373206973207a65726f60401b6044820152606401610294565b611659565b600061160460808501606086016147c1565b6001600160a01b0316146116595760405162461bcd60e51b815260206004820152601c60248201527b504d503a206175746841646472657373206973206e6f74207a65726f60201b6044820152606401610294565b600282600881111561166d5761166d613b3e565b148061168a5750600882600881111561168857611688613b3e565b145b806116a6575060068260088111156116a4576116a4613b3e565b145b15611775576116b860808401846147de565b1590506116d75760405162461bcd60e51b815260040161029490614827565b60a0830135156117265760405162461bcd60e51b815260206004820152601a602482015279504d503a206d696e52616e6765206973206e6f7420656d70747960301b6044820152606401610294565b60c08301351561125f5760405162461bcd60e51b815260206004820152601a602482015279504d503a206d617852616e6765206973206e6f7420656d70747960301b6044820152606401610294565b600182600881111561178957611789613b3e565b0361184957600061179d60808501856147de565b9050116117ea5760405162461bcd60e51b815260206004820152601b60248201527a504d503a2073656c6563744f7074696f6e7320697320656d70747960281b6044820152606401610294565b6101006117fa60808501856147de565b9050106116d75760405162461bcd60e51b815260206004820152601f60248201527f504d503a2073656c6563744f7074696f6e73206c656e677468203e20323535006044820152606401610294565b600382600881111561185d5761185d613b3e565b148061187a5750600482600881111561187857611878613b3e565b145b806118965750600582600881111561189457611894613b3e565b145b806118b2575060078260088111156118b0576118b0613b3e565b145b156119c5576118c460808401846147de565b1590506118e35760405162461bcd60e51b815260040161029490614827565b60048260088111156118f7576118f7613b3e565b0361192c5760a083013560c08401358082126119255760405162461bcd60e51b81526004016102949061485e565b5050505050565b60a083013560c08401358082106119555760405162461bcd60e51b81526004016102949061485e565b600784600881111561196957611969613b3e565b03611925576001600160401b038111156119255760405162461bcd60e51b815260206004820152601e60248201527f504d503a206d617852616e6765203e205f54494d455354414d505f4d415800006044820152606401610294565b60405162461bcd60e51b815260040161029490614791565b60006119e882611d67565b9050600081518451146119fd57506001611a65565b60005b8451811015611a6357611a4e838281518110611a1e57611a1e613d5a565b6020026020010151868381518110611a3857611a38613d5a565b6020026020010151612fbb90919063ffffffff16565b611a5b5760019150611a63565b600101611a00565b505b8015610713576107138385611aa5565b600081604051602001611a889190614891565b604051602081830303815290604052805190602001209050919050565b80516000819003611ac257505080546001600160a01b0319169055565b6000816001600160401b03811115611adc57611adc6139d9565b604051908082528060200260200182016040528015611b05578160200160208202803683370190505b5090506000805b83811015611b775781838281518110611b2757611b27613d5a565b60200260200101906001600160401b031690816001600160401b031681525050848181518110611b5957611b59613d5a565b60200260200101515182611b6d91906148a4565b9150600101611b0c565b506001600160401b03811115611bcd5760405162461bcd60e51b815260206004820152601b60248201527a13d9999cd95d08195e18d959591cc81d5a5b9d0d8d081b1a5b5a5d602a1b6044820152606401610294565b600081611bdb8560086148b7565b611be69060086148a4565b611bf091906148a4565b90506000611bff8260206148a4565b6001600160401b03811115611c1657611c166139d9565b6040519080825280601f01601f191660200182016040528015611c40576020820181803683370190505b5060c086901b602082015290506028810160005b86811015611c99576000868281518110611c7057611c70613d5a565b602090810291909101015160c01b6001600160c01b031916835250600890910190600101611c54565b5060005b86811015611d33576000888281518110611cb957611cb9613d5a565b6020026020010151905060008151905060006020830190506000602083611ce091906148e4565b90506000611cef6020856148f8565b905060005b82811015611d12578351885260209788019790930192600101611cf4565b508015611d225782518752958601955b505060019093019250611c9d915050565b505081815280611d4281612fe0565b88546001600160a01b0319166001600160a01b03919091161790975550505050505050565b80546060906001600160a01b0316611dab576040805160008082526020820190925290611da4565b6060815260200190600190039081611d8f5790505b5092915050565b8154600090611dc2906001600160a01b0316613085565b602081015190915060c01c806001600160401b03811115611de557611de56139d9565b604051908082528060200260200182016040528015611e1857816020015b6060815260200190600190039081611e035790505b50925060005b81811015611f89576000808084611e368560016148a4565b03611e64576000865190506028870193506008850284015160c01c9250600886026008018103915050611e86565b6028860192506008840283015160c01c91506008600185010283015160c01c90505b6000611e92838361490c565b6001600160401b031690506000611eaa8260206148a4565b6001600160401b03811115611ec157611ec16139d9565b6040519080825280601f01601f191660200182016040528015611eeb576020820181803683370190505b5090506020810160005b83811015611f51576000816001600160401b038816611f158c60086148b7565b611f209060286148a4565b611f2a91906148a4565b611f3491906148a4565b8b0151835250602091820191611f4a90826148a4565b9050611ef5565b50819050828152818a8881518110611f6b57611f6b613d5a565b60200260200101819052505050505050508080600101915050611e1e565b505050919050565b6000610231620f4240836148e4565b815460ff8281169116146120195760405162461bcd60e51b815260206004820152603a60248201527f504d503a20706172616d206e6f742070617274206f66206d6f737420726563656044820152796e746c7920636f6e6669677572656420504d5020706172616d7360301b6064820152608401610294565b815462010000900460ff16600881111561203557612035613b3e565b8360200151600881111561204b5761204b613b3e565b146120925760405162461bcd60e51b81526020600482015260176024820152760a09aa07440e0c2e4c2daa8f2e0ca40dad2e6dac2e8c6d604b1b6044820152606401610294565b6000836020015160088111156120aa576120aa613b3e565b036121035760405162461bcd60e51b8152602060048201526024808201527f504d503a20696e70757420706172616d5479706520697320756e636f6e6669676044820152631d5c995960e21b6064820152608401610294565b8154610100900460ff16600081600681111561212157612121613b3e565b0361217e576121318686336130a6565b6121795760405162461bcd60e51b81526020600482015260196024820152781413540e88185c9d1a5cdd08185d5d1a081c995c5d5a5c9959603a1b6044820152606401610294565b612529565b600181600681111561219257612192613b3e565b036121ee576121a28686336129d4565b6121795760405162461bcd60e51b815260206004820152601e60248201527f504d503a20746f6b656e206f776e6572206175746820726571756972656400006044820152606401610294565b600381600681111561220257612202613b3e565b03612281576122128686336130a6565b8061222357506122238686336129d4565b6121795760405162461bcd60e51b815260206004820152602960248201527f504d503a2061727469737420616e6420746f6b656e206f776e65722061757468604482015268081c995c5d5a5c995960ba1b6064820152608401610294565b600281600681111561229557612295613b3e565b036122f7578254600160481b90046001600160a01b031633146121795760405162461bcd60e51b815260206004820152601a6024820152791413540e881859191c995cdcc8185d5d1a081c995c5d5a5c995960321b6044820152606401610294565b600681600681111561230b5761230b613b3e565b036123b15761231b8686336130a6565b8061233657508254600160481b90046001600160a01b031633145b8061234757506123478686336129d4565b6121795760405162461bcd60e51b815260206004820152603560248201527f504d503a2061727469737420616e6420746f6b656e206f776e657220616e64206044820152741859191c995cdcc8185d5d1a081c995c5d5a5c9959605a1b6064820152608401610294565b60048160068111156123c5576123c5613b3e565b0361244a576123d58686336130a6565b806123f057508254600160481b90046001600160a01b031633145b6121795760405162461bcd60e51b815260206004820152602560248201527f504d503a2061727469737420616e6420616464726573732061757468207265716044820152641d5a5c995960da1b6064820152608401610294565b600581600681111561245e5761245e613b3e565b036124e7578254600160481b90046001600160a01b031633148061248857506124888686336129d4565b6121795760405162461bcd60e51b815260206004820152602a60248201527f504d503a20746f6b656e206f776e657220616e642061646472657373206175746044820152691a081c995c5d5a5c995960b21b6064820152608401610294565b60405162461bcd60e51b81526020600482015260176024820152762826a81d1034b73b30b634b21030baba3427b83a34b7b760491b6044820152606401610294565b50815462010000900460ff16600881600881111561254957612549613b3e565b146127db57600181600881111561256257612562613b3e565b036125da5782546040850151600160e81b90910460ff16116125d55760405162461bcd60e51b815260206004820152602660248201527f504d503a2073656c6563744f7074696f6e7320696e646578206f7574206f6620604482015265626f756e647360d01b6064820152608401610294565b6127db565b60028160088111156125ee576125ee613b3e565b036126605760408401511580612608575060408401516001145b6125d55760405162461bcd60e51b8152602060048201526024808201527f504d503a20626f6f6c20706172616d2076616c7565206d7573742062652030206044820152636f72203160e01b6064820152608401610294565b600381600881111561267457612674613b3e565b14806126915750600581600881111561268f5761268f613b3e565b145b156126d25782600201548460400151101580156126b657508260030154846040015111155b6125d55760405162461bcd60e51b81526004016102949061492c565b60048160088111156126e6576126e6613b3e565b036127265760028301546040850151128015906126b657506003830154604085015113156125d55760405162461bcd60e51b81526004016102949061492c565b600781600881111561273a5761273a613b3e565b0361275a5760408401516001600160401b03108015906126b657506127db565b600681600881111561276e5761276e613b3e565b0361279a57604084015162ffffff10156125d55760405162461bcd60e51b815260040161029490614963565b60405162461bcd60e51b8152602060048201526016602482015275504d503a20696e76616c696420706172616d5479706560501b6044820152606401610294565b6008835462010000900460ff1660088111156127f9576127f9613b3e565b036128e6576040840151156128635760405162461bcd60e51b815260206004820152602a60248201527f504d503a2076616c7565206d75737420626520656d70747920666f7220737472604482015269696e6720706172616d7360b01b6064820152608401610294565b8360600151156128e1576128788686336130a6565b6128e15760405162461bcd60e51b815260206004820152603460248201527f504d503a20617274697374206175746820726571756972656420746f20636f6e6044820152736669677572652061727469737420737472696e6760601b6064820152608401610294565b6129cc565b608084015151156129545760405162461bcd60e51b815260206004820152603260248201527f504d503a206e6f6e2d737472696e6720706172616d206d757374206861766520604482015271656d70747920737472696e672076616c756560701b6064820152608401610294565b8360600151156129cc5760405162461bcd60e51b815260206004820152603d60248201527f504d503a2061727469737420737472696e672063616e6e6f7420626520636f6e60448201527f6669677572656420666f72206e6f6e2d737472696e6720706172616d730000006064820152608401610294565b505050505050565b6040516331a9108f60e11b81526004810184905260009081906001600160a01b03851690636352211e90602401602060405180830381865afa158015612a1e573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612a429190614723565b9050826001600160a01b0316816001600160a01b031603612a67576001915050610a33565b604051632e7cda1d60e21b81526001600160a01b038481166004830152828116602483015285811660448301526064820187905271706f73746d696e74706172616d657465727360701b60848301527f0000000000000000000000000000000000000000000000000000000000000000169063b9f368749060a401602060405180830381865afa158015612aff573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612b239190614993565b95945050505050565b6000612b3783613140565b8015610a335750610a338383613173565b805460009060609060ff1682816008811115612b6657612b66613b3e565b1480612b9e5750845462010000900460ff166008811115612b8957612b89613b3e565b816008811115612b9b57612b9b613b3e565b14155b15612bbc575050604080516020810190915260008082529150612fb4565b6008855462010000900460ff166008811115612bda57612bda613b3e565b03612cd8576000846002018054612bf0906142d7565b90501115612c9457600184600201808054612c0a906142d7565b80601f0160208091040260200160405190810160405280929190818152602001828054612c36906142d7565b8015612c835780601f10612c5857610100808354040283529160200191612c83565b820191906000526020600020905b815481529060010190602001808311612c6657829003601f168201915b505050505090509250925050612fb4565b6000846003018054612ca5906142d7565b90501115612cbf57600184600301808054612c0a906142d7565b5050604080516020810190915260008082529150612fb4565b6001816008811115612cec57612cec613b3e565b03612d3e5784546001850154600160e81b90910460ff1611612d21575050604080516020810190915260008082529150612fb4565b600184810154612d3490878301906131fd565b9250925050612fb4565b6002816008811115612d5257612d52613b3e565b03612dac5760018481015415612d8457604051806040016040528060048152602001637472756560e01b815250612d34565b6040518060400160405280600581526020016466616c736560d81b8152509250925050612fb4565b6003816008811115612dc057612dc0613b3e565b1480612ddd57506006816008811115612ddb57612ddb613b3e565b145b80612df957506007816008811115612df757612df7613b3e565b145b80612e1557506005816008811115612e1357612e13613b3e565b145b15612f0657600184015460006006836008811115612e3557612e35613b3e565b14612e44576003870154612e49565b62ffffff5b905060006006846008811115612e6157612e61613b3e565b14612e70576002880154612e73565b60005b905080831080612e8257508183115b15612ea6576000604051806020016040528060008152509550955050505050612fb4565b6005846008811115612eba57612eba613b3e565b03612ed7576001612eca846133a7565b9550955050505050612fb4565b6006846008811115612eeb57612eeb613b3e565b03612efb576001612eca84613454565b6001612eca8461353d565b6004816008811115612f1a57612f1a613b3e565b03612f715760018401546002860154811280612f395750600386015481135b15612f5b57600060405180602001604052806000815250935093505050612fb4565b6001612f66826135cf565b935093505050612fb4565b60405162461bcd60e51b8152602060048201526018602482015277504d503a20556e68616e646c656420506172616d5479706560401b6044820152606401610294565b9250929050565b600081518351148015610a335750508051602091820120825192909101919091201490565b60008082604051602001612ff491906149b0565b604051602081830303815290604052905060008160405160200161301891906149d6565b60405160208183030381529060405290508051602082016000f092506001600160a01b03831661307e5760405162461bcd60e51b81526020600482015260116024820152701111541313d65351539517d19052531151607a1b6044820152606401610294565b5050919050565b60606102318260016130a1816001600160a01b0384163b614a0a565b613641565b6000806130b285611f91565b9050826001600160a01b0316846001600160a01b031663a47d29cb836040518263ffffffff1660e01b81526004016130ec91815260200190565b602060405180830381865afa158015613109573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061312d9190614723565b6001600160a01b03161495945050505050565b6000613153826301ffc9a760e01b613173565b8015610231575061316c826001600160e01b0319613173565b1592915050565b6040516001600160e01b031982166024820152600090819060440160408051601f19818403018152919052602080820180516001600160e01b03166301ffc9a760e01b178152825192935060009283928392909183918a617530fa92503d915060005190508280156131e6575060208210155b80156131f25750600081115b979650505050505050565b81546060906001600160a01b03166132275760405162461bcd60e51b815260040161029490614a1d565b825460009061323e906001600160a01b0316613085565b9050600080600080602085015160c01c905080871061326f5760405162461bcd60e51b815260040161029490614a1d565b8061327b8860016148a4565b036132a9576000855190506028860194506008880285015160c01c93506008820260080181039250506132cb565b6028850193506008870284015160c01c92506008600188010284015160c01c91505b60006132d7848461490c565b6001600160401b0316905060006132ef8260206148a4565b6001600160401b03811115613306576133066139d9565b6040519080825280601f01601f191660200182016040528015613330576020820181803683370190505b5090506020810160005b83811015613396576000816001600160401b03891661335a8860086148b7565b6133659060286148a4565b61336f91906148a4565b61337991906148a4565b8a015183525060209182019161338f90826148a4565b905061333a565b505090815298975050505050505050565b606060006133b6600a80614b2e565b6133c090846148e4565b905060006133cf600a80614b2e565b6133d990856148f8565b905060006133e68361353d565b905060006133f38361353d565b90505b600a8151101561342757806040516020016134119190614b3a565b60405160208183030381529060405290506133f6565b818160405160200161343a929190614b56565b604051602081830303815290604052945050505050919050565b6040805160078082528183019092526060918391600091602082018180368337019050509050602360f81b8160008151811061349257613492613d5a565b60200101906001600160f81b031916908160001a90535060065b801561351e576f181899199a1a9b1b9c1cb0b131b232b360811b83600f16601081106134da576134da613d5a565b1a60f81b8282815181106134f0576134f0613d5a565b60200101906001600160f81b031916908160001a90535060049290921c9161351781614b92565b90506134ac565b508115610a335760405162461bcd60e51b815260040161029490614963565b6060600061354a83613664565b60010190506000816001600160401b03811115613569576135696139d9565b6040519080825280601f01601f191660200182016040528015613593576020820181803683370190505b5090508181016020015b600019016f181899199a1a9b1b9c1cb0b131b232b360811b600a86061a8153600a850494508461359d57509392505050565b6060600082126135ee5760405180602001604052806000815250613609565b604051806040016040528060018152602001602d60f81b8152505b61361a6136158461373a565b61353d565b60405160200161362b929190614ba9565b6040516020818303038152906040529050919050565b60408051603f8301601f19168101909152818152818360208301863c9392505050565b60008072184f03e93ff9f4daa797ed6e38ed64bf6a1f0160401b83106136a35772184f03e93ff9f4daa797ed6e38ed64bf6a1f0160401b830492506040015b6904ee2d6d415b85acef8160201b83106136cd576904ee2d6d415b85acef8160201b830492506020015b662386f26fc1000083106136eb57662386f26fc10000830492506010015b6305f5e1008310613703576305f5e100830492506008015b612710831061371757612710830492506004015b60648310613729576064830492506002015b600a83106102315760010192915050565b60008082121561374d5781600003610231565b5090565b60006020828403121561376357600080fd5b81356001600160e01b031981168114610a3357600080fd5b6001600160a01b038116811461379057600080fd5b50565b803561379e8161377b565b919050565b60008083601f8401126137b557600080fd5b5081356001600160401b038111156137cc57600080fd5b6020830191508360208260051b8501011115612fb457600080fd5b600080600080606085870312156137fd57600080fd5b84356138088161377b565b93506020850135925060408501356001600160401b0381111561382a57600080fd5b613836878288016137a3565b95989497509550505050565b6000806040838503121561385557600080fd5b82356138608161377b565b946020939093013593505050565b60005b83811015613889578181015183820152602001613871565b50506000910152565b600081518084526138aa81602086016020860161386e565b601f01601f19169290920160200192915050565b6000608082016080835280875180835260a08501915060a08160051b86010192506020808a0160005b8381101561391557609f19888703018552613903868351613892565b955093820193908201906001016138e7565b5050505060ff9690961660208401526001600160a01b039485166040840152929093166060909101529392505050565b60008060006060848603121561395a57600080fd5b83356139658161377b565b925060208401356139758161377b565b929592945050506040919091013590565b6000806000806080858703121561399c57600080fd5b84356139a78161377b565b93506020850135925060408501356139be8161377b565b915060608501356139ce8161377b565b939692955090935050565b634e487b7160e01b600052604160045260246000fd5b60405160e081016001600160401b0381118282101715613a1157613a116139d9565b60405290565b604080519081016001600160401b0381118282101715613a1157613a116139d9565b604051601f8201601f191681016001600160401b0381118282101715613a6157613a616139d9565b604052919050565b60006001600160401b03821115613a8257613a826139d9565b50601f01601f191660200190565b600082601f830112613aa157600080fd5b8135613ab4613aaf82613a69565b613a39565b818152846020838601011115613ac957600080fd5b816020850160208301376000918101602001919091529392505050565b600080600060608486031215613afb57600080fd5b8335613b068161377b565b92506020840135915060408401356001600160401b03811115613b2857600080fd5b613b3486828701613a90565b9150509250925092565b634e487b7160e01b600052602160045260246000fd5b60078110613b6457613b64613b3e565b9052565b60098110613b6457613b64613b3e565b60008282518085526020808601955060208260051b8401016020860160005b84811015613bc557601f19868403018952613bb3838351613892565b98840198925090830190600101613b97565b5090979650505050505050565b60208152613be660208201835160ff169052565b60006020830151613bfa6040840182613b54565b506040830151613c0d6060840182613b68565b50606083015165ffffffffffff811660808401525060808301516001600160a01b03811660a08401525060a083015160ff811660c08401525060c08301516101208060e0850152613c62610140850183613b78565b60e086015161010086810191909152909501519301929092525090919050565b600082825180855260208086019550808260051b84010181860160005b84811015613bc557601f19868403018952815160408151818652613cc582870182613892565b91505085820151915084810386860152613cdf8183613892565b9a86019a9450505090830190600101613c9f565b602081526000610a336020830184613c82565b60208152613d18602082018351613b68565b602082015160408201526000604083015160806060840152613d3d60a0840182613892565b90506060840151601f19848303016080850152612b238282613892565b634e487b7160e01b600052603260045260246000fd5b60008235603e19833603018112613d8657600080fd5b9190910192915050565b6000808335601e19843603018112613da757600080fd5b8301803591506001600160401b03821115613dc157600080fd5b602001915036819003821315612fb457600080fd5b6000823560de19833603018112613d8657600080fd5b634e487b7160e01b600052601160045260246000fd5b60ff818116838216019081111561023157610231613dec565b80356007811061379e57600080fd5b80356009811061379e57600080fd5b803565ffffffffffff8116811461379e57600080fd5b60006001600160401b03821115613e6857613e686139d9565b5060051b60200190565b600082601f830112613e8357600080fd5b81356020613e93613aaf83613e4f565b82815260059290921b84018101918181019086841115613eb257600080fd5b8286015b84811015613ef15780356001600160401b03811115613ed55760008081fd5b613ee38986838b0101613a90565b845250918301918301613eb6565b509695505050505050565b600060e08236031215613f0e57600080fd5b613f166139ef565b613f1f83613e1b565b8152613f2d60208401613e2a565b6020820152613f3e60408401613e39565b6040820152613f4f60608401613793565b606082015260808301356001600160401b03811115613f6d57600080fd5b613f7936828601613e72565b60808301525060a083013560a082015260c083013560c082015280915050919050565b6000808335601e19843603018112613fb357600080fd5b83016020810192503590506001600160401b03811115613fd257600080fd5b803603821315612fb457600080fd5b81835281816020850137506000828201602090810191909152601f909101601f19169091010190565b6000838385526020808601955060208560051b8301018460005b87811015613bc557848303601f1901895261403f8288613f9c565b61404a858284613fe1565b9a86019a9450505090830190600101614024565b6001600160a01b038681168252602080830187905260806040808501829052848201879052600093919260a0929183870160058a901b880185018b885b8c8110156141da578a8303609f190184528135368f9003603e190181126140c157600080fd5b8e016140cd8180613f9c565b8786526140dd8887018284613fe1565b9150508782013560de198336030181126140f657600080fd5b858203898701529091019060e06141158261411085613e1b565b613b54565b614120898401613e2a565b61412c8a840182613b68565b5065ffffffffffff61413f898501613e39565b16888301526060808401356141538161377b565b8b1690830152828c013536849003601e1901811261417057600080fd5b830189810190356001600160401b0381111561418b57600080fd5b8060051b360382131561419d57600080fd5b828e8501526141af838501828461400a565b858e0135858f015260c09586013595909401949094525050948701949350509085019060010161409b565b505060ff8a1660608a015296506141f395505050505050565b9695505050505050565b60008235609e19833603018112613d8657600080fd5b801515811461379057600080fd5b600060a0823603121561423357600080fd5b60405160a081016001600160401b038082118383101715614256576142566139d9565b81604052843591508082111561426b57600080fd5b61427736838701613a90565b835261428560208601613e2a565b602084015260408501356040840152606085013591506142a482614213565b81606084015260808501359150808211156142be57600080fd5b506142cb36828601613a90565b60808301525092915050565b600181811c908216806142eb57607f821691505b60208210810361430b57634e487b7160e01b600052602260045260246000fd5b50919050565b601f82111561125f576000816000526020600020601f850160051c8101602086101561433a5750805b601f850160051c820191505b818110156129cc57828155600101614346565b81516001600160401b03811115614372576143726139d9565b6143868161438084546142d7565b84614311565b602080601f8311600181146143bb57600084156143a35750858301515b600019600386901b1c1916600185901b1785556129cc565b600085815260208120601f198616915b828110156143ea578886015182559484019460019091019084016143cb565b50858210156144085787850151600019600388901b60f8161c191681555b5050505050600190811b01905550565b60018060a01b0384168152826020820152606060408201526000825160a06060840152614449610100840182613892565b9050602084015161445d6080850182613b68565b50604084015160a08401526060840151151560c08401526080840151838203605f190160e08501526131f28282613892565b6001600160a01b0385168152602080820185905260606040808401829052838201859052600092608091828601600588901b870184018987805b8b811015614578578a8403607f190185528235368e9003609e190181126144ee578283fd5b8d0160a06144fc8280613f9c565b82885261450c8389018284613fe1565b9250505061451b898301613e2a565b6145278a880182613b68565b5087820135888701528a82013561453d81614213565b1515868c015261454f828b0183613f9c565b92508682038b880152614563828483613fe1565b978a01979650505092870192506001016144c9565b50919d9c50505050505050505050505050565b60006001820161459d5761459d613dec565b5060010190565b60018060a01b0384168152826020820152606060408201526000612b236060830184613c82565b600082601f8301126145dc57600080fd5b81516145ea613aaf82613a69565b8181528460208386010111156145ff57600080fd5b61461082602083016020870161386e565b949350505050565b6000602080838503121561462b57600080fd5b82516001600160401b038082111561464257600080fd5b818501915085601f83011261465657600080fd5b8151614664613aaf82613e4f565b81815260059190911b8301840190848101908883111561468357600080fd5b8585015b838110156147165780518581111561469f5760008081fd5b86016040818c03601f19018113156146b75760008081fd5b6146bf613a17565b89830151888111156146d15760008081fd5b6146df8e8c838701016145cb565b8252509082015190878211156146f55760008081fd5b6147038d8b848601016145cb565b818b015285525050918601918601614687565b5098975050505050505050565b60006020828403121561473557600080fd5b8151610a338161377b565b60006020828403121561475257600080fd5b610a3382613e2a565b60006020828403121561476d57600080fd5b610a3382613e1b565b60006020828403121561478857600080fd5b610a3382613e39565b602080825260169082015275504d503a20496e76616c696420706172616d5479706560501b604082015260600190565b6000602082840312156147d357600080fd5b8135610a338161377b565b6000808335601e198436030181126147f557600080fd5b8301803591506001600160401b0382111561480f57600080fd5b6020019150600581901b3603821315612fb457600080fd5b6020808252601f908201527f504d503a2073656c6563744f7074696f6e73206973206e6f7420656d70747900604082015260600190565b602080825260199082015278504d503a206d696e52616e6765203e3d206d617852616e676560381b604082015260600190565b602081526000610a336020830184613892565b8082018082111561023157610231613dec565b808202811582820484141761023157610231613dec565b634e487b7160e01b600052601260045260246000fd5b6000826148f3576148f36148ce565b500490565b600082614907576149076148ce565b500690565b6001600160401b03828116828216039080821115611da457611da4613dec565b6020808252601e908201527f504d503a20706172616d2076616c7565206f7574206f6620626f756e64730000604082015260600190565b6020808252601690820152752826a81d1034b73b30b634b2103432bc1031b7b637b960511b604082015260600190565b6000602082840312156149a557600080fd5b8151610a3381614213565b60008152600082516149c981600185016020870161386e565b9190910160010192915050565b6a600b5981380380925939f360a81b815281516000906149fd81600b85016020870161386e565b91909101600b0192915050565b8181038181111561023157610231613dec565b602080825260139082015272496e646578206f7574206f6620626f756e647360681b604082015260600190565b600181815b80851115614a85578160001904821115614a6b57614a6b613dec565b80851615614a7857918102915b93841c9390800290614a4f565b509250929050565b600082614a9c57506001610231565b81614aa957506000610231565b8160018114614abf5760028114614ac957614ae5565b6001915050610231565b60ff841115614ada57614ada613dec565b50506001821b610231565b5060208310610133831016604e8410600b8410161715614b08575081810a610231565b614b128383614a4a565b8060001904821115614b2657614b26613dec565b029392505050565b6000610a338383614a8d565b600360fc1b8152600082516149c981600185016020870161386e565b60008351614b6881846020880161386e565b601760f91b9083019081528351614b8681600184016020880161386e565b01600101949350505050565b600081614ba157614ba1613dec565b506000190190565b60008351614bbb81846020880161386e565b835190830190614bcf81836020880161386e565b0194935050505056fea264697066735822122009134577e06d298f315ea2e69af422ee36cdd6d644576852f5fe8b14ecebd2b664736f6c63430008160033",
627
+ "linkReferences": {},
628
+ "deployedLinkReferences": {}
629
+ }