@rev-net/core-v6 0.0.13 → 0.0.14

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 (41) hide show
  1. package/CHANGE_LOG.md +8 -3
  2. package/package.json +1 -1
  3. package/deployments/revnet-core-v5/arbitrum/REVDeployer.json +0 -2821
  4. package/deployments/revnet-core-v5/arbitrum/REVLoans.json +0 -2260
  5. package/deployments/revnet-core-v5/arbitrum_sepolia/REVDeployer.json +0 -2821
  6. package/deployments/revnet-core-v5/arbitrum_sepolia/REVLoans.json +0 -2260
  7. package/deployments/revnet-core-v5/base/REVDeployer.json +0 -2825
  8. package/deployments/revnet-core-v5/base/REVLoans.json +0 -2264
  9. package/deployments/revnet-core-v5/base_sepolia/REVDeployer.json +0 -2825
  10. package/deployments/revnet-core-v5/base_sepolia/REVLoans.json +0 -2264
  11. package/deployments/revnet-core-v5/ethereum/REVDeployer.json +0 -2825
  12. package/deployments/revnet-core-v5/ethereum/REVLoans.json +0 -2264
  13. package/deployments/revnet-core-v5/optimism/REVDeployer.json +0 -2821
  14. package/deployments/revnet-core-v5/optimism/REVLoans.json +0 -2260
  15. package/deployments/revnet-core-v5/optimism_sepolia/REVDeployer.json +0 -2825
  16. package/deployments/revnet-core-v5/optimism_sepolia/REVLoans.json +0 -2264
  17. package/deployments/revnet-core-v5/sepolia/REVDeployer.json +0 -2825
  18. package/deployments/revnet-core-v5/sepolia/REVLoans.json +0 -2264
  19. package/docs/book.css +0 -13
  20. package/docs/book.toml +0 -13
  21. package/docs/solidity.min.js +0 -74
  22. package/docs/src/README.md +0 -185
  23. package/docs/src/SUMMARY.md +0 -18
  24. package/docs/src/src/README.md +0 -7
  25. package/docs/src/src/REVDeployer.sol/contract.REVDeployer.md +0 -999
  26. package/docs/src/src/REVLoans.sol/contract.REVLoans.md +0 -1108
  27. package/docs/src/src/interfaces/IREVDeployer.sol/interface.IREVDeployer.md +0 -525
  28. package/docs/src/src/interfaces/IREVLoans.sol/interface.IREVLoans.md +0 -598
  29. package/docs/src/src/interfaces/README.md +0 -5
  30. package/docs/src/src/structs/README.md +0 -12
  31. package/docs/src/src/structs/REVAutoIssuance.sol/struct.REVAutoIssuance.md +0 -19
  32. package/docs/src/src/structs/REVBuybackHookConfig.sol/struct.REVBuybackHookConfig.md +0 -19
  33. package/docs/src/src/structs/REVBuybackPoolConfig.sol/struct.REVBuybackPoolConfig.md +0 -21
  34. package/docs/src/src/structs/REVConfig.sol/struct.REVConfig.md +0 -23
  35. package/docs/src/src/structs/REVCroptopAllowedPost.sol/struct.REVCroptopAllowedPost.md +0 -32
  36. package/docs/src/src/structs/REVDeploy721TiersHookConfig.sol/struct.REVDeploy721TiersHookConfig.md +0 -34
  37. package/docs/src/src/structs/REVDescription.sol/struct.REVDescription.md +0 -23
  38. package/docs/src/src/structs/REVLoan.sol/struct.REVLoan.md +0 -28
  39. package/docs/src/src/structs/REVLoanSource.sol/struct.REVLoanSource.md +0 -16
  40. package/docs/src/src/structs/REVStageConfig.sol/struct.REVStageConfig.md +0 -44
  41. package/docs/src/src/structs/REVSuckerDeploymentConfig.sol/struct.REVSuckerDeploymentConfig.md +0 -16
@@ -1,2260 +0,0 @@
1
- {
2
- "format": "sphinx-sol-ct-artifact-1",
3
- "merkleRoot": "0x4be49ca547a87b716d3e242b6b35a2953b41da4fb5d0a71e84e432f972737a5a",
4
- "address": "0x1880d832aa283d05b8eab68877717e25fbd550bb",
5
- "sourceName": "src/REVLoans.sol",
6
- "contractName": "REVLoans",
7
- "chainId": "0xa",
8
- "abi": [
9
- {
10
- "inputs": [
11
- {
12
- "internalType": "contract IREVDeployer",
13
- "name": "revnets",
14
- "type": "address"
15
- },
16
- {
17
- "internalType": "uint256",
18
- "name": "revId",
19
- "type": "uint256"
20
- },
21
- {
22
- "internalType": "address",
23
- "name": "owner",
24
- "type": "address"
25
- },
26
- {
27
- "internalType": "contract IPermit2",
28
- "name": "permit2",
29
- "type": "address"
30
- },
31
- {
32
- "internalType": "address",
33
- "name": "trustedForwarder",
34
- "type": "address"
35
- }
36
- ],
37
- "stateMutability": "nonpayable",
38
- "type": "constructor"
39
- },
40
- {
41
- "stateMutability": "payable",
42
- "type": "fallback"
43
- },
44
- {
45
- "stateMutability": "payable",
46
- "type": "receive"
47
- },
48
- {
49
- "inputs": [],
50
- "name": "CONTROLLER",
51
- "outputs": [
52
- {
53
- "internalType": "contract IJBController",
54
- "name": "",
55
- "type": "address"
56
- }
57
- ],
58
- "stateMutability": "view",
59
- "type": "function"
60
- },
61
- {
62
- "inputs": [],
63
- "name": "DIRECTORY",
64
- "outputs": [
65
- {
66
- "internalType": "contract IJBDirectory",
67
- "name": "",
68
- "type": "address"
69
- }
70
- ],
71
- "stateMutability": "view",
72
- "type": "function"
73
- },
74
- {
75
- "inputs": [],
76
- "name": "LOAN_LIQUIDATION_DURATION",
77
- "outputs": [
78
- {
79
- "internalType": "uint256",
80
- "name": "",
81
- "type": "uint256"
82
- }
83
- ],
84
- "stateMutability": "view",
85
- "type": "function"
86
- },
87
- {
88
- "inputs": [],
89
- "name": "MAX_PREPAID_FEE_PERCENT",
90
- "outputs": [
91
- {
92
- "internalType": "uint256",
93
- "name": "",
94
- "type": "uint256"
95
- }
96
- ],
97
- "stateMutability": "view",
98
- "type": "function"
99
- },
100
- {
101
- "inputs": [],
102
- "name": "MIN_PREPAID_FEE_PERCENT",
103
- "outputs": [
104
- {
105
- "internalType": "uint256",
106
- "name": "",
107
- "type": "uint256"
108
- }
109
- ],
110
- "stateMutability": "view",
111
- "type": "function"
112
- },
113
- {
114
- "inputs": [],
115
- "name": "PERMIT2",
116
- "outputs": [
117
- {
118
- "internalType": "contract IPermit2",
119
- "name": "",
120
- "type": "address"
121
- }
122
- ],
123
- "stateMutability": "view",
124
- "type": "function"
125
- },
126
- {
127
- "inputs": [],
128
- "name": "PRICES",
129
- "outputs": [
130
- {
131
- "internalType": "contract IJBPrices",
132
- "name": "",
133
- "type": "address"
134
- }
135
- ],
136
- "stateMutability": "view",
137
- "type": "function"
138
- },
139
- {
140
- "inputs": [],
141
- "name": "PROJECTS",
142
- "outputs": [
143
- {
144
- "internalType": "contract IJBProjects",
145
- "name": "",
146
- "type": "address"
147
- }
148
- ],
149
- "stateMutability": "view",
150
- "type": "function"
151
- },
152
- {
153
- "inputs": [],
154
- "name": "REVNETS",
155
- "outputs": [
156
- {
157
- "internalType": "contract IREVDeployer",
158
- "name": "",
159
- "type": "address"
160
- }
161
- ],
162
- "stateMutability": "view",
163
- "type": "function"
164
- },
165
- {
166
- "inputs": [],
167
- "name": "REV_ID",
168
- "outputs": [
169
- {
170
- "internalType": "uint256",
171
- "name": "",
172
- "type": "uint256"
173
- }
174
- ],
175
- "stateMutability": "view",
176
- "type": "function"
177
- },
178
- {
179
- "inputs": [],
180
- "name": "REV_PREPAID_FEE_PERCENT",
181
- "outputs": [
182
- {
183
- "internalType": "uint256",
184
- "name": "",
185
- "type": "uint256"
186
- }
187
- ],
188
- "stateMutability": "view",
189
- "type": "function"
190
- },
191
- {
192
- "inputs": [
193
- {
194
- "internalType": "address",
195
- "name": "to",
196
- "type": "address"
197
- },
198
- {
199
- "internalType": "uint256",
200
- "name": "tokenId",
201
- "type": "uint256"
202
- }
203
- ],
204
- "name": "approve",
205
- "outputs": [],
206
- "stateMutability": "nonpayable",
207
- "type": "function"
208
- },
209
- {
210
- "inputs": [
211
- {
212
- "internalType": "address",
213
- "name": "owner",
214
- "type": "address"
215
- }
216
- ],
217
- "name": "balanceOf",
218
- "outputs": [
219
- {
220
- "internalType": "uint256",
221
- "name": "",
222
- "type": "uint256"
223
- }
224
- ],
225
- "stateMutability": "view",
226
- "type": "function"
227
- },
228
- {
229
- "inputs": [
230
- {
231
- "internalType": "uint256",
232
- "name": "revnetId",
233
- "type": "uint256"
234
- },
235
- {
236
- "components": [
237
- {
238
- "internalType": "address",
239
- "name": "token",
240
- "type": "address"
241
- },
242
- {
243
- "internalType": "contract IJBPayoutTerminal",
244
- "name": "terminal",
245
- "type": "address"
246
- }
247
- ],
248
- "internalType": "struct REVLoanSource",
249
- "name": "source",
250
- "type": "tuple"
251
- },
252
- {
253
- "internalType": "uint256",
254
- "name": "minBorrowAmount",
255
- "type": "uint256"
256
- },
257
- {
258
- "internalType": "uint256",
259
- "name": "collateralCount",
260
- "type": "uint256"
261
- },
262
- {
263
- "internalType": "address payable",
264
- "name": "beneficiary",
265
- "type": "address"
266
- },
267
- {
268
- "internalType": "uint256",
269
- "name": "prepaidFeePercent",
270
- "type": "uint256"
271
- }
272
- ],
273
- "name": "borrowFrom",
274
- "outputs": [
275
- {
276
- "internalType": "uint256",
277
- "name": "loanId",
278
- "type": "uint256"
279
- },
280
- {
281
- "components": [
282
- {
283
- "internalType": "uint112",
284
- "name": "amount",
285
- "type": "uint112"
286
- },
287
- {
288
- "internalType": "uint112",
289
- "name": "collateral",
290
- "type": "uint112"
291
- },
292
- {
293
- "internalType": "uint48",
294
- "name": "createdAt",
295
- "type": "uint48"
296
- },
297
- {
298
- "internalType": "uint16",
299
- "name": "prepaidFeePercent",
300
- "type": "uint16"
301
- },
302
- {
303
- "internalType": "uint32",
304
- "name": "prepaidDuration",
305
- "type": "uint32"
306
- },
307
- {
308
- "components": [
309
- {
310
- "internalType": "address",
311
- "name": "token",
312
- "type": "address"
313
- },
314
- {
315
- "internalType": "contract IJBPayoutTerminal",
316
- "name": "terminal",
317
- "type": "address"
318
- }
319
- ],
320
- "internalType": "struct REVLoanSource",
321
- "name": "source",
322
- "type": "tuple"
323
- }
324
- ],
325
- "internalType": "struct REVLoan",
326
- "name": "",
327
- "type": "tuple"
328
- }
329
- ],
330
- "stateMutability": "nonpayable",
331
- "type": "function"
332
- },
333
- {
334
- "inputs": [
335
- {
336
- "internalType": "uint256",
337
- "name": "revnetId",
338
- "type": "uint256"
339
- },
340
- {
341
- "internalType": "uint256",
342
- "name": "collateralCount",
343
- "type": "uint256"
344
- },
345
- {
346
- "internalType": "uint256",
347
- "name": "decimals",
348
- "type": "uint256"
349
- },
350
- {
351
- "internalType": "uint256",
352
- "name": "currency",
353
- "type": "uint256"
354
- }
355
- ],
356
- "name": "borrowableAmountFrom",
357
- "outputs": [
358
- {
359
- "internalType": "uint256",
360
- "name": "",
361
- "type": "uint256"
362
- }
363
- ],
364
- "stateMutability": "view",
365
- "type": "function"
366
- },
367
- {
368
- "inputs": [
369
- {
370
- "components": [
371
- {
372
- "internalType": "uint112",
373
- "name": "amount",
374
- "type": "uint112"
375
- },
376
- {
377
- "internalType": "uint112",
378
- "name": "collateral",
379
- "type": "uint112"
380
- },
381
- {
382
- "internalType": "uint48",
383
- "name": "createdAt",
384
- "type": "uint48"
385
- },
386
- {
387
- "internalType": "uint16",
388
- "name": "prepaidFeePercent",
389
- "type": "uint16"
390
- },
391
- {
392
- "internalType": "uint32",
393
- "name": "prepaidDuration",
394
- "type": "uint32"
395
- },
396
- {
397
- "components": [
398
- {
399
- "internalType": "address",
400
- "name": "token",
401
- "type": "address"
402
- },
403
- {
404
- "internalType": "contract IJBPayoutTerminal",
405
- "name": "terminal",
406
- "type": "address"
407
- }
408
- ],
409
- "internalType": "struct REVLoanSource",
410
- "name": "source",
411
- "type": "tuple"
412
- }
413
- ],
414
- "internalType": "struct REVLoan",
415
- "name": "loan",
416
- "type": "tuple"
417
- },
418
- {
419
- "internalType": "uint256",
420
- "name": "amount",
421
- "type": "uint256"
422
- }
423
- ],
424
- "name": "determineSourceFeeAmount",
425
- "outputs": [
426
- {
427
- "internalType": "uint256",
428
- "name": "",
429
- "type": "uint256"
430
- }
431
- ],
432
- "stateMutability": "view",
433
- "type": "function"
434
- },
435
- {
436
- "inputs": [
437
- {
438
- "internalType": "uint256",
439
- "name": "tokenId",
440
- "type": "uint256"
441
- }
442
- ],
443
- "name": "getApproved",
444
- "outputs": [
445
- {
446
- "internalType": "address",
447
- "name": "",
448
- "type": "address"
449
- }
450
- ],
451
- "stateMutability": "view",
452
- "type": "function"
453
- },
454
- {
455
- "inputs": [
456
- {
457
- "internalType": "address",
458
- "name": "owner",
459
- "type": "address"
460
- },
461
- {
462
- "internalType": "address",
463
- "name": "operator",
464
- "type": "address"
465
- }
466
- ],
467
- "name": "isApprovedForAll",
468
- "outputs": [
469
- {
470
- "internalType": "bool",
471
- "name": "",
472
- "type": "bool"
473
- }
474
- ],
475
- "stateMutability": "view",
476
- "type": "function"
477
- },
478
- {
479
- "inputs": [
480
- {
481
- "internalType": "uint256",
482
- "name": "revnetId",
483
- "type": "uint256"
484
- },
485
- {
486
- "internalType": "contract IJBPayoutTerminal",
487
- "name": "terminal",
488
- "type": "address"
489
- },
490
- {
491
- "internalType": "address",
492
- "name": "token",
493
- "type": "address"
494
- }
495
- ],
496
- "name": "isLoanSourceOf",
497
- "outputs": [
498
- {
499
- "internalType": "bool",
500
- "name": "",
501
- "type": "bool"
502
- }
503
- ],
504
- "stateMutability": "view",
505
- "type": "function"
506
- },
507
- {
508
- "inputs": [
509
- {
510
- "internalType": "address",
511
- "name": "forwarder",
512
- "type": "address"
513
- }
514
- ],
515
- "name": "isTrustedForwarder",
516
- "outputs": [
517
- {
518
- "internalType": "bool",
519
- "name": "",
520
- "type": "bool"
521
- }
522
- ],
523
- "stateMutability": "view",
524
- "type": "function"
525
- },
526
- {
527
- "inputs": [
528
- {
529
- "internalType": "uint256",
530
- "name": "revnetId",
531
- "type": "uint256"
532
- },
533
- {
534
- "internalType": "uint256",
535
- "name": "startingLoanId",
536
- "type": "uint256"
537
- },
538
- {
539
- "internalType": "uint256",
540
- "name": "count",
541
- "type": "uint256"
542
- }
543
- ],
544
- "name": "liquidateExpiredLoansFrom",
545
- "outputs": [],
546
- "stateMutability": "nonpayable",
547
- "type": "function"
548
- },
549
- {
550
- "inputs": [
551
- {
552
- "internalType": "uint256",
553
- "name": "loanId",
554
- "type": "uint256"
555
- }
556
- ],
557
- "name": "loanOf",
558
- "outputs": [
559
- {
560
- "components": [
561
- {
562
- "internalType": "uint112",
563
- "name": "amount",
564
- "type": "uint112"
565
- },
566
- {
567
- "internalType": "uint112",
568
- "name": "collateral",
569
- "type": "uint112"
570
- },
571
- {
572
- "internalType": "uint48",
573
- "name": "createdAt",
574
- "type": "uint48"
575
- },
576
- {
577
- "internalType": "uint16",
578
- "name": "prepaidFeePercent",
579
- "type": "uint16"
580
- },
581
- {
582
- "internalType": "uint32",
583
- "name": "prepaidDuration",
584
- "type": "uint32"
585
- },
586
- {
587
- "components": [
588
- {
589
- "internalType": "address",
590
- "name": "token",
591
- "type": "address"
592
- },
593
- {
594
- "internalType": "contract IJBPayoutTerminal",
595
- "name": "terminal",
596
- "type": "address"
597
- }
598
- ],
599
- "internalType": "struct REVLoanSource",
600
- "name": "source",
601
- "type": "tuple"
602
- }
603
- ],
604
- "internalType": "struct REVLoan",
605
- "name": "",
606
- "type": "tuple"
607
- }
608
- ],
609
- "stateMutability": "view",
610
- "type": "function"
611
- },
612
- {
613
- "inputs": [
614
- {
615
- "internalType": "uint256",
616
- "name": "revnetId",
617
- "type": "uint256"
618
- }
619
- ],
620
- "name": "loanSourcesOf",
621
- "outputs": [
622
- {
623
- "components": [
624
- {
625
- "internalType": "address",
626
- "name": "token",
627
- "type": "address"
628
- },
629
- {
630
- "internalType": "contract IJBPayoutTerminal",
631
- "name": "terminal",
632
- "type": "address"
633
- }
634
- ],
635
- "internalType": "struct REVLoanSource[]",
636
- "name": "",
637
- "type": "tuple[]"
638
- }
639
- ],
640
- "stateMutability": "view",
641
- "type": "function"
642
- },
643
- {
644
- "inputs": [],
645
- "name": "name",
646
- "outputs": [
647
- {
648
- "internalType": "string",
649
- "name": "",
650
- "type": "string"
651
- }
652
- ],
653
- "stateMutability": "view",
654
- "type": "function"
655
- },
656
- {
657
- "inputs": [
658
- {
659
- "internalType": "uint256",
660
- "name": "revnetId",
661
- "type": "uint256"
662
- }
663
- ],
664
- "name": "numberOfLoansFor",
665
- "outputs": [
666
- {
667
- "internalType": "uint256",
668
- "name": "",
669
- "type": "uint256"
670
- }
671
- ],
672
- "stateMutability": "view",
673
- "type": "function"
674
- },
675
- {
676
- "inputs": [],
677
- "name": "owner",
678
- "outputs": [
679
- {
680
- "internalType": "address",
681
- "name": "",
682
- "type": "address"
683
- }
684
- ],
685
- "stateMutability": "view",
686
- "type": "function"
687
- },
688
- {
689
- "inputs": [
690
- {
691
- "internalType": "uint256",
692
- "name": "tokenId",
693
- "type": "uint256"
694
- }
695
- ],
696
- "name": "ownerOf",
697
- "outputs": [
698
- {
699
- "internalType": "address",
700
- "name": "",
701
- "type": "address"
702
- }
703
- ],
704
- "stateMutability": "view",
705
- "type": "function"
706
- },
707
- {
708
- "inputs": [
709
- {
710
- "internalType": "uint256",
711
- "name": "loanId",
712
- "type": "uint256"
713
- },
714
- {
715
- "internalType": "uint256",
716
- "name": "collateralCountToTransfer",
717
- "type": "uint256"
718
- },
719
- {
720
- "components": [
721
- {
722
- "internalType": "address",
723
- "name": "token",
724
- "type": "address"
725
- },
726
- {
727
- "internalType": "contract IJBPayoutTerminal",
728
- "name": "terminal",
729
- "type": "address"
730
- }
731
- ],
732
- "internalType": "struct REVLoanSource",
733
- "name": "source",
734
- "type": "tuple"
735
- },
736
- {
737
- "internalType": "uint256",
738
- "name": "minBorrowAmount",
739
- "type": "uint256"
740
- },
741
- {
742
- "internalType": "uint256",
743
- "name": "collateralCountToAdd",
744
- "type": "uint256"
745
- },
746
- {
747
- "internalType": "address payable",
748
- "name": "beneficiary",
749
- "type": "address"
750
- },
751
- {
752
- "internalType": "uint256",
753
- "name": "prepaidFeePercent",
754
- "type": "uint256"
755
- }
756
- ],
757
- "name": "reallocateCollateralFromLoan",
758
- "outputs": [
759
- {
760
- "internalType": "uint256",
761
- "name": "reallocatedLoanId",
762
- "type": "uint256"
763
- },
764
- {
765
- "internalType": "uint256",
766
- "name": "newLoanId",
767
- "type": "uint256"
768
- },
769
- {
770
- "components": [
771
- {
772
- "internalType": "uint112",
773
- "name": "amount",
774
- "type": "uint112"
775
- },
776
- {
777
- "internalType": "uint112",
778
- "name": "collateral",
779
- "type": "uint112"
780
- },
781
- {
782
- "internalType": "uint48",
783
- "name": "createdAt",
784
- "type": "uint48"
785
- },
786
- {
787
- "internalType": "uint16",
788
- "name": "prepaidFeePercent",
789
- "type": "uint16"
790
- },
791
- {
792
- "internalType": "uint32",
793
- "name": "prepaidDuration",
794
- "type": "uint32"
795
- },
796
- {
797
- "components": [
798
- {
799
- "internalType": "address",
800
- "name": "token",
801
- "type": "address"
802
- },
803
- {
804
- "internalType": "contract IJBPayoutTerminal",
805
- "name": "terminal",
806
- "type": "address"
807
- }
808
- ],
809
- "internalType": "struct REVLoanSource",
810
- "name": "source",
811
- "type": "tuple"
812
- }
813
- ],
814
- "internalType": "struct REVLoan",
815
- "name": "reallocatedLoan",
816
- "type": "tuple"
817
- },
818
- {
819
- "components": [
820
- {
821
- "internalType": "uint112",
822
- "name": "amount",
823
- "type": "uint112"
824
- },
825
- {
826
- "internalType": "uint112",
827
- "name": "collateral",
828
- "type": "uint112"
829
- },
830
- {
831
- "internalType": "uint48",
832
- "name": "createdAt",
833
- "type": "uint48"
834
- },
835
- {
836
- "internalType": "uint16",
837
- "name": "prepaidFeePercent",
838
- "type": "uint16"
839
- },
840
- {
841
- "internalType": "uint32",
842
- "name": "prepaidDuration",
843
- "type": "uint32"
844
- },
845
- {
846
- "components": [
847
- {
848
- "internalType": "address",
849
- "name": "token",
850
- "type": "address"
851
- },
852
- {
853
- "internalType": "contract IJBPayoutTerminal",
854
- "name": "terminal",
855
- "type": "address"
856
- }
857
- ],
858
- "internalType": "struct REVLoanSource",
859
- "name": "source",
860
- "type": "tuple"
861
- }
862
- ],
863
- "internalType": "struct REVLoan",
864
- "name": "newLoan",
865
- "type": "tuple"
866
- }
867
- ],
868
- "stateMutability": "payable",
869
- "type": "function"
870
- },
871
- {
872
- "inputs": [],
873
- "name": "renounceOwnership",
874
- "outputs": [],
875
- "stateMutability": "nonpayable",
876
- "type": "function"
877
- },
878
- {
879
- "inputs": [
880
- {
881
- "internalType": "uint256",
882
- "name": "loanId",
883
- "type": "uint256"
884
- },
885
- {
886
- "internalType": "uint256",
887
- "name": "maxRepayBorrowAmount",
888
- "type": "uint256"
889
- },
890
- {
891
- "internalType": "uint256",
892
- "name": "collateralCountToReturn",
893
- "type": "uint256"
894
- },
895
- {
896
- "internalType": "address payable",
897
- "name": "beneficiary",
898
- "type": "address"
899
- },
900
- {
901
- "components": [
902
- {
903
- "internalType": "uint256",
904
- "name": "sigDeadline",
905
- "type": "uint256"
906
- },
907
- {
908
- "internalType": "uint160",
909
- "name": "amount",
910
- "type": "uint160"
911
- },
912
- {
913
- "internalType": "uint48",
914
- "name": "expiration",
915
- "type": "uint48"
916
- },
917
- {
918
- "internalType": "uint48",
919
- "name": "nonce",
920
- "type": "uint48"
921
- },
922
- {
923
- "internalType": "bytes",
924
- "name": "signature",
925
- "type": "bytes"
926
- }
927
- ],
928
- "internalType": "struct JBSingleAllowance",
929
- "name": "allowance",
930
- "type": "tuple"
931
- }
932
- ],
933
- "name": "repayLoan",
934
- "outputs": [
935
- {
936
- "internalType": "uint256",
937
- "name": "paidOffLoanId",
938
- "type": "uint256"
939
- },
940
- {
941
- "components": [
942
- {
943
- "internalType": "uint112",
944
- "name": "amount",
945
- "type": "uint112"
946
- },
947
- {
948
- "internalType": "uint112",
949
- "name": "collateral",
950
- "type": "uint112"
951
- },
952
- {
953
- "internalType": "uint48",
954
- "name": "createdAt",
955
- "type": "uint48"
956
- },
957
- {
958
- "internalType": "uint16",
959
- "name": "prepaidFeePercent",
960
- "type": "uint16"
961
- },
962
- {
963
- "internalType": "uint32",
964
- "name": "prepaidDuration",
965
- "type": "uint32"
966
- },
967
- {
968
- "components": [
969
- {
970
- "internalType": "address",
971
- "name": "token",
972
- "type": "address"
973
- },
974
- {
975
- "internalType": "contract IJBPayoutTerminal",
976
- "name": "terminal",
977
- "type": "address"
978
- }
979
- ],
980
- "internalType": "struct REVLoanSource",
981
- "name": "source",
982
- "type": "tuple"
983
- }
984
- ],
985
- "internalType": "struct REVLoan",
986
- "name": "paidOffloan",
987
- "type": "tuple"
988
- }
989
- ],
990
- "stateMutability": "payable",
991
- "type": "function"
992
- },
993
- {
994
- "inputs": [
995
- {
996
- "internalType": "uint256",
997
- "name": "loanId",
998
- "type": "uint256"
999
- }
1000
- ],
1001
- "name": "revnetIdOfLoanWith",
1002
- "outputs": [
1003
- {
1004
- "internalType": "uint256",
1005
- "name": "",
1006
- "type": "uint256"
1007
- }
1008
- ],
1009
- "stateMutability": "pure",
1010
- "type": "function"
1011
- },
1012
- {
1013
- "inputs": [
1014
- {
1015
- "internalType": "address",
1016
- "name": "from",
1017
- "type": "address"
1018
- },
1019
- {
1020
- "internalType": "address",
1021
- "name": "to",
1022
- "type": "address"
1023
- },
1024
- {
1025
- "internalType": "uint256",
1026
- "name": "tokenId",
1027
- "type": "uint256"
1028
- }
1029
- ],
1030
- "name": "safeTransferFrom",
1031
- "outputs": [],
1032
- "stateMutability": "nonpayable",
1033
- "type": "function"
1034
- },
1035
- {
1036
- "inputs": [
1037
- {
1038
- "internalType": "address",
1039
- "name": "from",
1040
- "type": "address"
1041
- },
1042
- {
1043
- "internalType": "address",
1044
- "name": "to",
1045
- "type": "address"
1046
- },
1047
- {
1048
- "internalType": "uint256",
1049
- "name": "tokenId",
1050
- "type": "uint256"
1051
- },
1052
- {
1053
- "internalType": "bytes",
1054
- "name": "data",
1055
- "type": "bytes"
1056
- }
1057
- ],
1058
- "name": "safeTransferFrom",
1059
- "outputs": [],
1060
- "stateMutability": "nonpayable",
1061
- "type": "function"
1062
- },
1063
- {
1064
- "inputs": [
1065
- {
1066
- "internalType": "address",
1067
- "name": "operator",
1068
- "type": "address"
1069
- },
1070
- {
1071
- "internalType": "bool",
1072
- "name": "approved",
1073
- "type": "bool"
1074
- }
1075
- ],
1076
- "name": "setApprovalForAll",
1077
- "outputs": [],
1078
- "stateMutability": "nonpayable",
1079
- "type": "function"
1080
- },
1081
- {
1082
- "inputs": [
1083
- {
1084
- "internalType": "contract IJBTokenUriResolver",
1085
- "name": "resolver",
1086
- "type": "address"
1087
- }
1088
- ],
1089
- "name": "setTokenUriResolver",
1090
- "outputs": [],
1091
- "stateMutability": "nonpayable",
1092
- "type": "function"
1093
- },
1094
- {
1095
- "inputs": [
1096
- {
1097
- "internalType": "bytes4",
1098
- "name": "interfaceId",
1099
- "type": "bytes4"
1100
- }
1101
- ],
1102
- "name": "supportsInterface",
1103
- "outputs": [
1104
- {
1105
- "internalType": "bool",
1106
- "name": "",
1107
- "type": "bool"
1108
- }
1109
- ],
1110
- "stateMutability": "view",
1111
- "type": "function"
1112
- },
1113
- {
1114
- "inputs": [],
1115
- "name": "symbol",
1116
- "outputs": [
1117
- {
1118
- "internalType": "string",
1119
- "name": "",
1120
- "type": "string"
1121
- }
1122
- ],
1123
- "stateMutability": "view",
1124
- "type": "function"
1125
- },
1126
- {
1127
- "inputs": [
1128
- {
1129
- "internalType": "uint256",
1130
- "name": "loanId",
1131
- "type": "uint256"
1132
- }
1133
- ],
1134
- "name": "tokenURI",
1135
- "outputs": [
1136
- {
1137
- "internalType": "string",
1138
- "name": "",
1139
- "type": "string"
1140
- }
1141
- ],
1142
- "stateMutability": "view",
1143
- "type": "function"
1144
- },
1145
- {
1146
- "inputs": [],
1147
- "name": "tokenUriResolver",
1148
- "outputs": [
1149
- {
1150
- "internalType": "contract IJBTokenUriResolver",
1151
- "name": "",
1152
- "type": "address"
1153
- }
1154
- ],
1155
- "stateMutability": "view",
1156
- "type": "function"
1157
- },
1158
- {
1159
- "inputs": [
1160
- {
1161
- "internalType": "uint256",
1162
- "name": "revnetId",
1163
- "type": "uint256"
1164
- },
1165
- {
1166
- "internalType": "contract IJBPayoutTerminal",
1167
- "name": "terminal",
1168
- "type": "address"
1169
- },
1170
- {
1171
- "internalType": "address",
1172
- "name": "token",
1173
- "type": "address"
1174
- }
1175
- ],
1176
- "name": "totalBorrowedFrom",
1177
- "outputs": [
1178
- {
1179
- "internalType": "uint256",
1180
- "name": "",
1181
- "type": "uint256"
1182
- }
1183
- ],
1184
- "stateMutability": "view",
1185
- "type": "function"
1186
- },
1187
- {
1188
- "inputs": [
1189
- {
1190
- "internalType": "uint256",
1191
- "name": "revnetId",
1192
- "type": "uint256"
1193
- }
1194
- ],
1195
- "name": "totalCollateralOf",
1196
- "outputs": [
1197
- {
1198
- "internalType": "uint256",
1199
- "name": "",
1200
- "type": "uint256"
1201
- }
1202
- ],
1203
- "stateMutability": "view",
1204
- "type": "function"
1205
- },
1206
- {
1207
- "inputs": [
1208
- {
1209
- "internalType": "address",
1210
- "name": "from",
1211
- "type": "address"
1212
- },
1213
- {
1214
- "internalType": "address",
1215
- "name": "to",
1216
- "type": "address"
1217
- },
1218
- {
1219
- "internalType": "uint256",
1220
- "name": "tokenId",
1221
- "type": "uint256"
1222
- }
1223
- ],
1224
- "name": "transferFrom",
1225
- "outputs": [],
1226
- "stateMutability": "nonpayable",
1227
- "type": "function"
1228
- },
1229
- {
1230
- "inputs": [
1231
- {
1232
- "internalType": "address",
1233
- "name": "newOwner",
1234
- "type": "address"
1235
- }
1236
- ],
1237
- "name": "transferOwnership",
1238
- "outputs": [],
1239
- "stateMutability": "nonpayable",
1240
- "type": "function"
1241
- },
1242
- {
1243
- "inputs": [],
1244
- "name": "trustedForwarder",
1245
- "outputs": [
1246
- {
1247
- "internalType": "address",
1248
- "name": "",
1249
- "type": "address"
1250
- }
1251
- ],
1252
- "stateMutability": "view",
1253
- "type": "function"
1254
- },
1255
- {
1256
- "anonymous": false,
1257
- "inputs": [
1258
- {
1259
- "indexed": true,
1260
- "internalType": "address",
1261
- "name": "owner",
1262
- "type": "address"
1263
- },
1264
- {
1265
- "indexed": true,
1266
- "internalType": "address",
1267
- "name": "approved",
1268
- "type": "address"
1269
- },
1270
- {
1271
- "indexed": true,
1272
- "internalType": "uint256",
1273
- "name": "tokenId",
1274
- "type": "uint256"
1275
- }
1276
- ],
1277
- "name": "Approval",
1278
- "type": "event"
1279
- },
1280
- {
1281
- "anonymous": false,
1282
- "inputs": [
1283
- {
1284
- "indexed": true,
1285
- "internalType": "address",
1286
- "name": "owner",
1287
- "type": "address"
1288
- },
1289
- {
1290
- "indexed": true,
1291
- "internalType": "address",
1292
- "name": "operator",
1293
- "type": "address"
1294
- },
1295
- {
1296
- "indexed": false,
1297
- "internalType": "bool",
1298
- "name": "approved",
1299
- "type": "bool"
1300
- }
1301
- ],
1302
- "name": "ApprovalForAll",
1303
- "type": "event"
1304
- },
1305
- {
1306
- "anonymous": false,
1307
- "inputs": [
1308
- {
1309
- "indexed": true,
1310
- "internalType": "uint256",
1311
- "name": "loanId",
1312
- "type": "uint256"
1313
- },
1314
- {
1315
- "indexed": true,
1316
- "internalType": "uint256",
1317
- "name": "revnetId",
1318
- "type": "uint256"
1319
- },
1320
- {
1321
- "components": [
1322
- {
1323
- "internalType": "uint112",
1324
- "name": "amount",
1325
- "type": "uint112"
1326
- },
1327
- {
1328
- "internalType": "uint112",
1329
- "name": "collateral",
1330
- "type": "uint112"
1331
- },
1332
- {
1333
- "internalType": "uint48",
1334
- "name": "createdAt",
1335
- "type": "uint48"
1336
- },
1337
- {
1338
- "internalType": "uint16",
1339
- "name": "prepaidFeePercent",
1340
- "type": "uint16"
1341
- },
1342
- {
1343
- "internalType": "uint32",
1344
- "name": "prepaidDuration",
1345
- "type": "uint32"
1346
- },
1347
- {
1348
- "components": [
1349
- {
1350
- "internalType": "address",
1351
- "name": "token",
1352
- "type": "address"
1353
- },
1354
- {
1355
- "internalType": "contract IJBPayoutTerminal",
1356
- "name": "terminal",
1357
- "type": "address"
1358
- }
1359
- ],
1360
- "internalType": "struct REVLoanSource",
1361
- "name": "source",
1362
- "type": "tuple"
1363
- }
1364
- ],
1365
- "indexed": false,
1366
- "internalType": "struct REVLoan",
1367
- "name": "loan",
1368
- "type": "tuple"
1369
- },
1370
- {
1371
- "components": [
1372
- {
1373
- "internalType": "address",
1374
- "name": "token",
1375
- "type": "address"
1376
- },
1377
- {
1378
- "internalType": "contract IJBPayoutTerminal",
1379
- "name": "terminal",
1380
- "type": "address"
1381
- }
1382
- ],
1383
- "indexed": false,
1384
- "internalType": "struct REVLoanSource",
1385
- "name": "source",
1386
- "type": "tuple"
1387
- },
1388
- {
1389
- "indexed": false,
1390
- "internalType": "uint256",
1391
- "name": "borrowAmount",
1392
- "type": "uint256"
1393
- },
1394
- {
1395
- "indexed": false,
1396
- "internalType": "uint256",
1397
- "name": "collateralCount",
1398
- "type": "uint256"
1399
- },
1400
- {
1401
- "indexed": false,
1402
- "internalType": "uint256",
1403
- "name": "sourceFeeAmount",
1404
- "type": "uint256"
1405
- },
1406
- {
1407
- "indexed": false,
1408
- "internalType": "address payable",
1409
- "name": "beneficiary",
1410
- "type": "address"
1411
- },
1412
- {
1413
- "indexed": false,
1414
- "internalType": "address",
1415
- "name": "caller",
1416
- "type": "address"
1417
- }
1418
- ],
1419
- "name": "Borrow",
1420
- "type": "event"
1421
- },
1422
- {
1423
- "anonymous": false,
1424
- "inputs": [
1425
- {
1426
- "indexed": true,
1427
- "internalType": "uint256",
1428
- "name": "loanId",
1429
- "type": "uint256"
1430
- },
1431
- {
1432
- "indexed": true,
1433
- "internalType": "uint256",
1434
- "name": "revnetId",
1435
- "type": "uint256"
1436
- },
1437
- {
1438
- "components": [
1439
- {
1440
- "internalType": "uint112",
1441
- "name": "amount",
1442
- "type": "uint112"
1443
- },
1444
- {
1445
- "internalType": "uint112",
1446
- "name": "collateral",
1447
- "type": "uint112"
1448
- },
1449
- {
1450
- "internalType": "uint48",
1451
- "name": "createdAt",
1452
- "type": "uint48"
1453
- },
1454
- {
1455
- "internalType": "uint16",
1456
- "name": "prepaidFeePercent",
1457
- "type": "uint16"
1458
- },
1459
- {
1460
- "internalType": "uint32",
1461
- "name": "prepaidDuration",
1462
- "type": "uint32"
1463
- },
1464
- {
1465
- "components": [
1466
- {
1467
- "internalType": "address",
1468
- "name": "token",
1469
- "type": "address"
1470
- },
1471
- {
1472
- "internalType": "contract IJBPayoutTerminal",
1473
- "name": "terminal",
1474
- "type": "address"
1475
- }
1476
- ],
1477
- "internalType": "struct REVLoanSource",
1478
- "name": "source",
1479
- "type": "tuple"
1480
- }
1481
- ],
1482
- "indexed": false,
1483
- "internalType": "struct REVLoan",
1484
- "name": "loan",
1485
- "type": "tuple"
1486
- },
1487
- {
1488
- "indexed": false,
1489
- "internalType": "address",
1490
- "name": "caller",
1491
- "type": "address"
1492
- }
1493
- ],
1494
- "name": "Liquidate",
1495
- "type": "event"
1496
- },
1497
- {
1498
- "anonymous": false,
1499
- "inputs": [
1500
- {
1501
- "indexed": true,
1502
- "internalType": "address",
1503
- "name": "previousOwner",
1504
- "type": "address"
1505
- },
1506
- {
1507
- "indexed": true,
1508
- "internalType": "address",
1509
- "name": "newOwner",
1510
- "type": "address"
1511
- }
1512
- ],
1513
- "name": "OwnershipTransferred",
1514
- "type": "event"
1515
- },
1516
- {
1517
- "anonymous": false,
1518
- "inputs": [
1519
- {
1520
- "indexed": true,
1521
- "internalType": "uint256",
1522
- "name": "loanId",
1523
- "type": "uint256"
1524
- },
1525
- {
1526
- "indexed": true,
1527
- "internalType": "uint256",
1528
- "name": "revnetId",
1529
- "type": "uint256"
1530
- },
1531
- {
1532
- "indexed": true,
1533
- "internalType": "uint256",
1534
- "name": "reallocatedLoanId",
1535
- "type": "uint256"
1536
- },
1537
- {
1538
- "components": [
1539
- {
1540
- "internalType": "uint112",
1541
- "name": "amount",
1542
- "type": "uint112"
1543
- },
1544
- {
1545
- "internalType": "uint112",
1546
- "name": "collateral",
1547
- "type": "uint112"
1548
- },
1549
- {
1550
- "internalType": "uint48",
1551
- "name": "createdAt",
1552
- "type": "uint48"
1553
- },
1554
- {
1555
- "internalType": "uint16",
1556
- "name": "prepaidFeePercent",
1557
- "type": "uint16"
1558
- },
1559
- {
1560
- "internalType": "uint32",
1561
- "name": "prepaidDuration",
1562
- "type": "uint32"
1563
- },
1564
- {
1565
- "components": [
1566
- {
1567
- "internalType": "address",
1568
- "name": "token",
1569
- "type": "address"
1570
- },
1571
- {
1572
- "internalType": "contract IJBPayoutTerminal",
1573
- "name": "terminal",
1574
- "type": "address"
1575
- }
1576
- ],
1577
- "internalType": "struct REVLoanSource",
1578
- "name": "source",
1579
- "type": "tuple"
1580
- }
1581
- ],
1582
- "indexed": false,
1583
- "internalType": "struct REVLoan",
1584
- "name": "reallocatedLoan",
1585
- "type": "tuple"
1586
- },
1587
- {
1588
- "indexed": false,
1589
- "internalType": "uint256",
1590
- "name": "removedcollateralCount",
1591
- "type": "uint256"
1592
- },
1593
- {
1594
- "indexed": false,
1595
- "internalType": "address",
1596
- "name": "caller",
1597
- "type": "address"
1598
- }
1599
- ],
1600
- "name": "ReallocateCollateral",
1601
- "type": "event"
1602
- },
1603
- {
1604
- "anonymous": false,
1605
- "inputs": [
1606
- {
1607
- "indexed": true,
1608
- "internalType": "uint256",
1609
- "name": "loanId",
1610
- "type": "uint256"
1611
- },
1612
- {
1613
- "indexed": true,
1614
- "internalType": "uint256",
1615
- "name": "revnetId",
1616
- "type": "uint256"
1617
- },
1618
- {
1619
- "indexed": true,
1620
- "internalType": "uint256",
1621
- "name": "paidOffLoanId",
1622
- "type": "uint256"
1623
- },
1624
- {
1625
- "components": [
1626
- {
1627
- "internalType": "uint112",
1628
- "name": "amount",
1629
- "type": "uint112"
1630
- },
1631
- {
1632
- "internalType": "uint112",
1633
- "name": "collateral",
1634
- "type": "uint112"
1635
- },
1636
- {
1637
- "internalType": "uint48",
1638
- "name": "createdAt",
1639
- "type": "uint48"
1640
- },
1641
- {
1642
- "internalType": "uint16",
1643
- "name": "prepaidFeePercent",
1644
- "type": "uint16"
1645
- },
1646
- {
1647
- "internalType": "uint32",
1648
- "name": "prepaidDuration",
1649
- "type": "uint32"
1650
- },
1651
- {
1652
- "components": [
1653
- {
1654
- "internalType": "address",
1655
- "name": "token",
1656
- "type": "address"
1657
- },
1658
- {
1659
- "internalType": "contract IJBPayoutTerminal",
1660
- "name": "terminal",
1661
- "type": "address"
1662
- }
1663
- ],
1664
- "internalType": "struct REVLoanSource",
1665
- "name": "source",
1666
- "type": "tuple"
1667
- }
1668
- ],
1669
- "indexed": false,
1670
- "internalType": "struct REVLoan",
1671
- "name": "loan",
1672
- "type": "tuple"
1673
- },
1674
- {
1675
- "components": [
1676
- {
1677
- "internalType": "uint112",
1678
- "name": "amount",
1679
- "type": "uint112"
1680
- },
1681
- {
1682
- "internalType": "uint112",
1683
- "name": "collateral",
1684
- "type": "uint112"
1685
- },
1686
- {
1687
- "internalType": "uint48",
1688
- "name": "createdAt",
1689
- "type": "uint48"
1690
- },
1691
- {
1692
- "internalType": "uint16",
1693
- "name": "prepaidFeePercent",
1694
- "type": "uint16"
1695
- },
1696
- {
1697
- "internalType": "uint32",
1698
- "name": "prepaidDuration",
1699
- "type": "uint32"
1700
- },
1701
- {
1702
- "components": [
1703
- {
1704
- "internalType": "address",
1705
- "name": "token",
1706
- "type": "address"
1707
- },
1708
- {
1709
- "internalType": "contract IJBPayoutTerminal",
1710
- "name": "terminal",
1711
- "type": "address"
1712
- }
1713
- ],
1714
- "internalType": "struct REVLoanSource",
1715
- "name": "source",
1716
- "type": "tuple"
1717
- }
1718
- ],
1719
- "indexed": false,
1720
- "internalType": "struct REVLoan",
1721
- "name": "paidOffLoan",
1722
- "type": "tuple"
1723
- },
1724
- {
1725
- "indexed": false,
1726
- "internalType": "uint256",
1727
- "name": "repayBorrowAmount",
1728
- "type": "uint256"
1729
- },
1730
- {
1731
- "indexed": false,
1732
- "internalType": "uint256",
1733
- "name": "sourceFeeAmount",
1734
- "type": "uint256"
1735
- },
1736
- {
1737
- "indexed": false,
1738
- "internalType": "uint256",
1739
- "name": "collateralCountToReturn",
1740
- "type": "uint256"
1741
- },
1742
- {
1743
- "indexed": false,
1744
- "internalType": "address payable",
1745
- "name": "beneficiary",
1746
- "type": "address"
1747
- },
1748
- {
1749
- "indexed": false,
1750
- "internalType": "address",
1751
- "name": "caller",
1752
- "type": "address"
1753
- }
1754
- ],
1755
- "name": "RepayLoan",
1756
- "type": "event"
1757
- },
1758
- {
1759
- "anonymous": false,
1760
- "inputs": [
1761
- {
1762
- "indexed": true,
1763
- "internalType": "contract IJBTokenUriResolver",
1764
- "name": "resolver",
1765
- "type": "address"
1766
- },
1767
- {
1768
- "indexed": false,
1769
- "internalType": "address",
1770
- "name": "caller",
1771
- "type": "address"
1772
- }
1773
- ],
1774
- "name": "SetTokenUriResolver",
1775
- "type": "event"
1776
- },
1777
- {
1778
- "anonymous": false,
1779
- "inputs": [
1780
- {
1781
- "indexed": true,
1782
- "internalType": "address",
1783
- "name": "from",
1784
- "type": "address"
1785
- },
1786
- {
1787
- "indexed": true,
1788
- "internalType": "address",
1789
- "name": "to",
1790
- "type": "address"
1791
- },
1792
- {
1793
- "indexed": true,
1794
- "internalType": "uint256",
1795
- "name": "tokenId",
1796
- "type": "uint256"
1797
- }
1798
- ],
1799
- "name": "Transfer",
1800
- "type": "event"
1801
- },
1802
- {
1803
- "inputs": [
1804
- {
1805
- "internalType": "address",
1806
- "name": "sender",
1807
- "type": "address"
1808
- },
1809
- {
1810
- "internalType": "uint256",
1811
- "name": "tokenId",
1812
- "type": "uint256"
1813
- },
1814
- {
1815
- "internalType": "address",
1816
- "name": "owner",
1817
- "type": "address"
1818
- }
1819
- ],
1820
- "name": "ERC721IncorrectOwner",
1821
- "type": "error"
1822
- },
1823
- {
1824
- "inputs": [
1825
- {
1826
- "internalType": "address",
1827
- "name": "operator",
1828
- "type": "address"
1829
- },
1830
- {
1831
- "internalType": "uint256",
1832
- "name": "tokenId",
1833
- "type": "uint256"
1834
- }
1835
- ],
1836
- "name": "ERC721InsufficientApproval",
1837
- "type": "error"
1838
- },
1839
- {
1840
- "inputs": [
1841
- {
1842
- "internalType": "address",
1843
- "name": "approver",
1844
- "type": "address"
1845
- }
1846
- ],
1847
- "name": "ERC721InvalidApprover",
1848
- "type": "error"
1849
- },
1850
- {
1851
- "inputs": [
1852
- {
1853
- "internalType": "address",
1854
- "name": "operator",
1855
- "type": "address"
1856
- }
1857
- ],
1858
- "name": "ERC721InvalidOperator",
1859
- "type": "error"
1860
- },
1861
- {
1862
- "inputs": [
1863
- {
1864
- "internalType": "address",
1865
- "name": "owner",
1866
- "type": "address"
1867
- }
1868
- ],
1869
- "name": "ERC721InvalidOwner",
1870
- "type": "error"
1871
- },
1872
- {
1873
- "inputs": [
1874
- {
1875
- "internalType": "address",
1876
- "name": "receiver",
1877
- "type": "address"
1878
- }
1879
- ],
1880
- "name": "ERC721InvalidReceiver",
1881
- "type": "error"
1882
- },
1883
- {
1884
- "inputs": [
1885
- {
1886
- "internalType": "address",
1887
- "name": "sender",
1888
- "type": "address"
1889
- }
1890
- ],
1891
- "name": "ERC721InvalidSender",
1892
- "type": "error"
1893
- },
1894
- {
1895
- "inputs": [
1896
- {
1897
- "internalType": "uint256",
1898
- "name": "tokenId",
1899
- "type": "uint256"
1900
- }
1901
- ],
1902
- "name": "ERC721NonexistentToken",
1903
- "type": "error"
1904
- },
1905
- {
1906
- "inputs": [],
1907
- "name": "FailedCall",
1908
- "type": "error"
1909
- },
1910
- {
1911
- "inputs": [
1912
- {
1913
- "internalType": "uint256",
1914
- "name": "balance",
1915
- "type": "uint256"
1916
- },
1917
- {
1918
- "internalType": "uint256",
1919
- "name": "needed",
1920
- "type": "uint256"
1921
- }
1922
- ],
1923
- "name": "InsufficientBalance",
1924
- "type": "error"
1925
- },
1926
- {
1927
- "inputs": [
1928
- {
1929
- "internalType": "address",
1930
- "name": "owner",
1931
- "type": "address"
1932
- }
1933
- ],
1934
- "name": "OwnableInvalidOwner",
1935
- "type": "error"
1936
- },
1937
- {
1938
- "inputs": [
1939
- {
1940
- "internalType": "address",
1941
- "name": "account",
1942
- "type": "address"
1943
- }
1944
- ],
1945
- "name": "OwnableUnauthorizedAccount",
1946
- "type": "error"
1947
- },
1948
- {
1949
- "inputs": [
1950
- {
1951
- "internalType": "uint256",
1952
- "name": "x",
1953
- "type": "uint256"
1954
- },
1955
- {
1956
- "internalType": "uint256",
1957
- "name": "y",
1958
- "type": "uint256"
1959
- },
1960
- {
1961
- "internalType": "uint256",
1962
- "name": "denominator",
1963
- "type": "uint256"
1964
- }
1965
- ],
1966
- "name": "PRBMath_MulDiv_Overflow",
1967
- "type": "error"
1968
- },
1969
- {
1970
- "inputs": [
1971
- {
1972
- "internalType": "uint256",
1973
- "name": "collateralToReturn",
1974
- "type": "uint256"
1975
- },
1976
- {
1977
- "internalType": "uint256",
1978
- "name": "loanCollateral",
1979
- "type": "uint256"
1980
- }
1981
- ],
1982
- "name": "REVLoans_CollateralExceedsLoan",
1983
- "type": "error"
1984
- },
1985
- {
1986
- "inputs": [
1987
- {
1988
- "internalType": "uint256",
1989
- "name": "prepaidFeePercent",
1990
- "type": "uint256"
1991
- },
1992
- {
1993
- "internalType": "uint256",
1994
- "name": "min",
1995
- "type": "uint256"
1996
- },
1997
- {
1998
- "internalType": "uint256",
1999
- "name": "max",
2000
- "type": "uint256"
2001
- }
2002
- ],
2003
- "name": "REVLoans_InvalidPrepaidFeePercent",
2004
- "type": "error"
2005
- },
2006
- {
2007
- "inputs": [
2008
- {
2009
- "internalType": "uint256",
2010
- "name": "timeSinceLoanCreated",
2011
- "type": "uint256"
2012
- },
2013
- {
2014
- "internalType": "uint256",
2015
- "name": "loanLiquidationDuration",
2016
- "type": "uint256"
2017
- }
2018
- ],
2019
- "name": "REVLoans_LoanExpired",
2020
- "type": "error"
2021
- },
2022
- {
2023
- "inputs": [
2024
- {
2025
- "internalType": "uint256",
2026
- "name": "newBorrowAmount",
2027
- "type": "uint256"
2028
- },
2029
- {
2030
- "internalType": "uint256",
2031
- "name": "loanAmount",
2032
- "type": "uint256"
2033
- }
2034
- ],
2035
- "name": "REVLoans_NewBorrowAmountGreaterThanLoanAmount",
2036
- "type": "error"
2037
- },
2038
- {
2039
- "inputs": [],
2040
- "name": "REVLoans_NoMsgValueAllowed",
2041
- "type": "error"
2042
- },
2043
- {
2044
- "inputs": [],
2045
- "name": "REVLoans_NotEnoughCollateral",
2046
- "type": "error"
2047
- },
2048
- {
2049
- "inputs": [
2050
- {
2051
- "internalType": "uint256",
2052
- "name": "maxRepayBorrowAmount",
2053
- "type": "uint256"
2054
- },
2055
- {
2056
- "internalType": "uint256",
2057
- "name": "repayBorrowAmount",
2058
- "type": "uint256"
2059
- }
2060
- ],
2061
- "name": "REVLoans_OverMaxRepayBorrowAmount",
2062
- "type": "error"
2063
- },
2064
- {
2065
- "inputs": [
2066
- {
2067
- "internalType": "uint256",
2068
- "name": "value",
2069
- "type": "uint256"
2070
- },
2071
- {
2072
- "internalType": "uint256",
2073
- "name": "limit",
2074
- "type": "uint256"
2075
- }
2076
- ],
2077
- "name": "REVLoans_OverflowAlert",
2078
- "type": "error"
2079
- },
2080
- {
2081
- "inputs": [
2082
- {
2083
- "internalType": "uint256",
2084
- "name": "allowanceAmount",
2085
- "type": "uint256"
2086
- },
2087
- {
2088
- "internalType": "uint256",
2089
- "name": "requiredAmount",
2090
- "type": "uint256"
2091
- }
2092
- ],
2093
- "name": "REVLoans_PermitAllowanceNotEnough",
2094
- "type": "error"
2095
- },
2096
- {
2097
- "inputs": [
2098
- {
2099
- "internalType": "uint256",
2100
- "name": "newBorrowAmount",
2101
- "type": "uint256"
2102
- },
2103
- {
2104
- "internalType": "uint256",
2105
- "name": "loanAmount",
2106
- "type": "uint256"
2107
- }
2108
- ],
2109
- "name": "REVLoans_ReallocatingMoreCollateralThanBorrowedAmountAllows",
2110
- "type": "error"
2111
- },
2112
- {
2113
- "inputs": [
2114
- {
2115
- "internalType": "address",
2116
- "name": "revnetOwner",
2117
- "type": "address"
2118
- },
2119
- {
2120
- "internalType": "address",
2121
- "name": "revnets",
2122
- "type": "address"
2123
- }
2124
- ],
2125
- "name": "REVLoans_RevnetsMismatch",
2126
- "type": "error"
2127
- },
2128
- {
2129
- "inputs": [
2130
- {
2131
- "internalType": "address",
2132
- "name": "caller",
2133
- "type": "address"
2134
- },
2135
- {
2136
- "internalType": "address",
2137
- "name": "owner",
2138
- "type": "address"
2139
- }
2140
- ],
2141
- "name": "REVLoans_Unauthorized",
2142
- "type": "error"
2143
- },
2144
- {
2145
- "inputs": [
2146
- {
2147
- "internalType": "uint256",
2148
- "name": "minBorrowAmount",
2149
- "type": "uint256"
2150
- },
2151
- {
2152
- "internalType": "uint256",
2153
- "name": "borrowAmount",
2154
- "type": "uint256"
2155
- }
2156
- ],
2157
- "name": "REVLoans_UnderMinBorrowAmount",
2158
- "type": "error"
2159
- },
2160
- {
2161
- "inputs": [],
2162
- "name": "REVLoans_ZeroCollateralLoanIsInvalid",
2163
- "type": "error"
2164
- },
2165
- {
2166
- "inputs": [
2167
- {
2168
- "internalType": "address",
2169
- "name": "token",
2170
- "type": "address"
2171
- }
2172
- ],
2173
- "name": "SafeERC20FailedOperation",
2174
- "type": "error"
2175
- }
2176
- ],
2177
- "args": [],
2178
- "solcInputHash": "f71d3fc8ea9b29896a8a303357115199",
2179
- "receipt": {
2180
- "type": "0x2",
2181
- "status": "0x1",
2182
- "cumulativeGasUsed": "0x543634",
2183
- "logs": [
2184
- {
2185
- "address": "0xa2ea7657440875bf916cbfc0cfa88f13e38ad463",
2186
- "topics": [
2187
- "0x572f161235911da04685a68c06adf558fc7e4a36909dca394650e0adc19cc93d",
2188
- "0x000000000000000000000000755ff2f75a0a586ecfa2b9a3c959cb662458a105",
2189
- "0x0000000000000000000000000740356dc773dee1ee291619cea1a07c692a56a8",
2190
- "0x12c322986bfbcabfe486098629b0eac9c2a0a17d349a726207bf5870a6a9a020"
2191
- ],
2192
- "data": "0x0000000000000000000000000000000000000000000000000000000000000000",
2193
- "blockHash": "0x5ff1e0551a6c3d2ba6f48584807ec40e9be44a7e68ccc7cd4c6777916e03a930",
2194
- "blockNumber": "0x868164e",
2195
- "transactionHash": "0xef8c2cf097af74a9f2381cf9de5b07ccf2afc79b2318783d3186121c743662b9",
2196
- "transactionIndex": "0x6",
2197
- "logIndex": "0x9",
2198
- "removed": false
2199
- },
2200
- {
2201
- "address": "0x1880d832aa283d05b8eab68877717e25fbd550bb",
2202
- "topics": [
2203
- "0x8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0",
2204
- "0x0000000000000000000000000000000000000000000000000000000000000000",
2205
- "0x0000000000000000000000006b92c73682f0e1fac35a18ab17efa5e77dde9fe1"
2206
- ],
2207
- "data": "0x",
2208
- "blockHash": "0x5ff1e0551a6c3d2ba6f48584807ec40e9be44a7e68ccc7cd4c6777916e03a930",
2209
- "blockNumber": "0x868164e",
2210
- "transactionHash": "0xef8c2cf097af74a9f2381cf9de5b07ccf2afc79b2318783d3186121c743662b9",
2211
- "transactionIndex": "0x6",
2212
- "logIndex": "0xa",
2213
- "removed": false
2214
- },
2215
- {
2216
- "address": "0x6b92c73682f0e1fac35a18ab17efa5e77dde9fe1",
2217
- "topics": [
2218
- "0x6895c13664aa4f67288b25d7a21d7aaa34916e355fb9b6fae0a139a9085becb8",
2219
- "0x0000000000000000000000000740356dc773dee1ee291619cea1a07c692a56a8"
2220
- ],
2221
- "data": "0x",
2222
- "blockHash": "0x5ff1e0551a6c3d2ba6f48584807ec40e9be44a7e68ccc7cd4c6777916e03a930",
2223
- "blockNumber": "0x868164e",
2224
- "transactionHash": "0xef8c2cf097af74a9f2381cf9de5b07ccf2afc79b2318783d3186121c743662b9",
2225
- "transactionIndex": "0x6",
2226
- "logIndex": "0xb",
2227
- "removed": false
2228
- },
2229
- {
2230
- "address": "0x0740356dc773dee1ee291619cea1a07c692a56a8",
2231
- "topics": [
2232
- "0xa65fb05c5808f5f389d72edeaf719ce38f4cc55c1f69ca3cbfb31c21501caa07",
2233
- "0x4be49ca547a87b716d3e242b6b35a2953b41da4fb5d0a71e84e432f972737a5a"
2234
- ],
2235
- "data": "0x0000000000000000000000000000000000000000000000000000000000000003",
2236
- "blockHash": "0x5ff1e0551a6c3d2ba6f48584807ec40e9be44a7e68ccc7cd4c6777916e03a930",
2237
- "blockNumber": "0x868164e",
2238
- "transactionHash": "0xef8c2cf097af74a9f2381cf9de5b07ccf2afc79b2318783d3186121c743662b9",
2239
- "transactionIndex": "0x6",
2240
- "logIndex": "0xc",
2241
- "removed": false
2242
- }
2243
- ],
2244
- "logsBloom": "0x00000000000010008000000000380000000000000000000000801000000000000000000000000000000000000040000000000000000020000000000000000000000400000000200000000800000000000001000000000000000000000002000000000000020000000000000000000800000004000000800000000000000000400800020008000000000104000008000100100000000000000000000000000000004000040000000000000000000000002200200000000000020800000004000000000002000000000000000000000000400000000001000000000000000020000000004000000000000000000000000200000000000080000000000000000000",
2245
- "transactionHash": "0xef8c2cf097af74a9f2381cf9de5b07ccf2afc79b2318783d3186121c743662b9",
2246
- "transactionIndex": "0x6",
2247
- "blockHash": "0x5ff1e0551a6c3d2ba6f48584807ec40e9be44a7e68ccc7cd4c6777916e03a930",
2248
- "blockNumber": "0x868164e",
2249
- "gasUsed": "0x4c7374",
2250
- "effectiveGasPrice": "0x24b674",
2251
- "from": "0x755ff2f75a0a586ecfa2b9a3c959cb662458a105",
2252
- "to": "0xa2ea7657440875bf916cbfc0cfa88f13e38ad463",
2253
- "contractAddress": null
2254
- },
2255
- "bytecode": "0x61018060405234801562000011575f80fd5b5060405162005901380380620059018339810160408190526200003491620003b1565b828160405180604001604052806009815260200168524556204c6f616e7360b81b81525060405180604001604052806008815260200167122922ab2627a0a760c11b815250815f9081620000899190620004bf565b506001620000988282620004bf565b5050506001600160a01b039081166080528116620000cf57604051631e4fbdf760e01b81525f600482015260240160405180910390fd5b620000da8162000348565b506001600160a01b03851660e08190526040805163ee0fc12160e01b8152905163ee0fc121916004808201926020929091908290030181865afa15801562000124573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906200014a91906200058b565b6001600160a01b031660c0816001600160a01b031681525050846001600160a01b03166388bc2ef36040518163ffffffff1660e01b8152600401602060405180830381865afa158015620001a0573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190620001c691906200058b565b6001600160a01b0316610100816001600160a01b031681525050846001600160a01b031663ee0fc1216040518163ffffffff1660e01b8152600401602060405180830381865afa1580156200021d573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906200024391906200058b565b6001600160a01b0316631eabcd346040518163ffffffff1660e01b8152600401602060405180830381865afa1580156200027f573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190620002a591906200058b565b6001600160a01b0316610120816001600160a01b031681525050846001600160a01b031663293c49996040518163ffffffff1660e01b8152600401602060405180830381865afa158015620002fc573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906200032291906200058b565b6001600160a01b0390811661014052610160949094525090911660a05250620005b09050565b600680546001600160a01b038381166001600160a01b0319831681179093556040519116919082907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0905f90a35050565b6001600160a01b0381168114620003ae575f80fd5b50565b5f805f805f60a08688031215620003c6575f80fd5b8551620003d38162000399565b602087015160408801519196509450620003ed8162000399565b6060870151909350620004008162000399565b6080870151909250620004138162000399565b809150509295509295909350565b634e487b7160e01b5f52604160045260245ffd5b600181811c908216806200044a57607f821691505b6020821081036200046957634e487b7160e01b5f52602260045260245ffd5b50919050565b601f821115620004ba57805f5260205f20601f840160051c81016020851015620004965750805b601f840160051c820191505b81811015620004b7575f8155600101620004a2565b50505b505050565b81516001600160401b03811115620004db57620004db62000421565b620004f381620004ec845462000435565b846200046f565b602080601f83116001811462000529575f8415620005115750858301515b5f19600386901b1c1916600185901b17855562000583565b5f85815260208120601f198616915b82811015620005595788860151825594840194600190910190840162000538565b50858210156200057757878501515f19600388901b60f8161c191681555b505060018460011b0185555b505050505050565b5f602082840312156200059c575f80fd5b8151620005a98162000399565b9392505050565b60805160a05160c05160e051610100516101205161014051610160516152776200068a5f395f81816104360152818161294a015281816134720152818161353a01526136cf01525f81816103ee015261103b01525f818161037d0152613b8f01525f818161062301528181611651015281816119da015261344501525f8181610893015281816110b001526110ea01525f818161082201528181612b8201528181612c780152818161378f01526138d701525f818161056c01528181611c4d01526121e601525f81816105cf0152610f8801526152775ff3fe608060405260043610610252575f3560e01c806370a0823111610137578063b88d4fde116100af578063e4ba13c711610076578063e4ba13c7146107c6578063e985e9c5146107f2578063ee0fc12114610811578063f2fde38b14610844578063f8231e3914610863578063fe91edd61461088257005b8063b88d4fde146106ff578063c4d8ea3c1461071e578063c87b56dd14610749578063ddad527114610768578063e131fc0c146107a757005b80638da5cb5b116100fe5780638da5cb5b1461064557806395d89b4114610662578063a21cd6f814610676578063a22cb465146106a2578063a33853d1146106c1578063a4a0481a146106e057005b806370a082311461058e578063715018a6146105ad5780637da0a877146105c157806383b4cf2f146105f357806388bc2ef31461061257005b80632cc2cb63116101ca578063501158691161019157806350115869146104a2578063572b6c05146104de5780636352211e146104fd578063667079891461051c5780636a57728f146105475780636afdd8501461055b57005b80632cc2cb631461041057806331011c5414610425578063325eefd9146104585780633e73ec331461046c57806342842e0e1461048357005b806309c586211161021957806309c58621146103285780630ba8827d146103495780631eabcd341461036c57806323b872dd1461039f5780632407497e146103be578063293c4999146103dd57005b806301ffc9a71461025b5780630582928e1461028f57806306fdde03146102bc578063081812fc146102dd578063095ea7b31461030957005b3661025957005b005b348015610266575f80fd5b5061027a610275366004613f85565b6108b5565b60405190151581526020015b60405180910390f35b34801561029a575f80fd5b506102ae6102a9366004613fa0565b610906565b604051908152602001610286565b3480156102c7575f80fd5b506102d0610916565b6040516102869190614004565b3480156102e8575f80fd5b506102fc6102f7366004613fa0565b6109a5565b6040516102869190614016565b348015610314575f80fd5b5061025961032336600461403e565b6109cc565b61033b610336366004614068565b6109e2565b604051610286929190614148565b61035c610357366004614173565b610c8e565b60405161028694939291906141d7565b348015610377575f80fd5b506102fc7f000000000000000000000000000000000000000000000000000000000000000081565b3480156103aa575f80fd5b506102596103b9366004614201565b610e70565b3480156103c9575f80fd5b506102596103d836600461423f565b610f00565b3480156103e8575f80fd5b506102fc7f000000000000000000000000000000000000000000000000000000000000000081565b34801561041b575f80fd5b506102ae6101f481565b348015610430575f80fd5b506102ae7f000000000000000000000000000000000000000000000000000000000000000081565b348015610463575f80fd5b506102ae601981565b348015610477575f80fd5b506102ae6312cc030081565b34801561048e575f80fd5b5061025961049d366004614201565b610f67565b3480156104ad575f80fd5b506102ae6104bc36600461425a565b600a60209081525f938452604080852082529284528284209052825290205481565b3480156104e9575f80fd5b5061027a6104f836600461423f565b610f86565b348015610508575f80fd5b506102fc610517366004613fa0565b610fb8565b348015610527575f80fd5b506102ae610536366004613fa0565b600b6020525f908152604090205481565b348015610552575f80fd5b506102ae600a81565b348015610566575f80fd5b506102fc7f000000000000000000000000000000000000000000000000000000000000000081565b348015610599575f80fd5b506102ae6105a836600461423f565b610fc2565b3480156105b8575f80fd5b50610259611007565b3480156105cc575f80fd5b507f00000000000000000000000000000000000000000000000000000000000000006102fc565b3480156105fe575f80fd5b5061033b61060d366004614299565b61101a565b34801561061d575f80fd5b506102fc7f000000000000000000000000000000000000000000000000000000000000000081565b348015610650575f80fd5b506006546001600160a01b03166102fc565b34801561066d575f80fd5b506102d061137b565b348015610681575f80fd5b50610695610690366004613fa0565b61138a565b60405161028691906142f2565b3480156106ad575f80fd5b506102596106bc366004614361565b611411565b3480156106cc575f80fd5b506102596106db366004614398565b611423565b3480156106eb575f80fd5b506102ae6106fa3660046143c1565b611647565b34801561070a575f80fd5b5061025961071936600461453c565b6116ee565b348015610729575f80fd5b506102ae610738366004613fa0565b60086020525f908152604090205481565b348015610754575f80fd5b506102d0610763366004613fa0565b61170d565b348015610773575f80fd5b5061027a61078236600461425a565b600760209081525f938452604080852082529284528284209052825290205460ff1681565b3480156107b2575f80fd5b506009546102fc906001600160a01b031681565b3480156107d1575f80fd5b506107e56107e0366004613fa0565b6117a6565b60405161028691906145a3565b3480156107fd575f80fd5b5061027a61080c3660046145b1565b61184d565b34801561081c575f80fd5b506102fc7f000000000000000000000000000000000000000000000000000000000000000081565b34801561084f575f80fd5b5061025961085e36600461423f565b61187a565b34801561086e575f80fd5b506102ae61087d366004614624565b6118b7565b34801561088d575f80fd5b506102fc7f000000000000000000000000000000000000000000000000000000000000000081565b5f6001600160e01b031982166380ac58cd60e01b14806108e557506001600160e01b03198216635b5e139f60e01b145b8061090057506301ffc9a760e01b6001600160e01b03198316145b92915050565b5f61090064e8d4a5100083614721565b60605f805461092490614740565b80601f016020809104026020016040519081016040528092919081815260200182805461095090614740565b801561099b5780601f106109725761010080835404028352916020019161099b565b820191905f5260205f20905b81548152906001019060200180831161097e57829003601f168201915b5050505050905090565b5f6109af826118c2565b505f828152600460205260409020546001600160a01b0316610900565b6109de82826109d96118f9565b611907565b5050565b5f6109eb613f2f565b6109f36118f9565b6001600160a01b0316610a0588611914565b6001600160a01b031614610a4857610a1b6118f9565b610a2488611914565b6040516318d514bd60e21b8152600401610a3f929190614772565b60405180910390fd5b5f878152600d602052604090208054600160701b90046001600160701b0316861115610aa257805460405163b9c5041760e01b815260048101889052600160701b9091046001600160701b03166024820152604401610a3f565b5f610aac89610906565b82549091505f90610adb9084908490610ad6908c90600160701b90046001600160701b031661478c565b61192e565b83549091506001600160701b0316811115610b1e5782546040516395e361d560e01b8152600481018390526001600160701b039091166024820152604401610a3f565b82545f90610b369083906001600160701b031661478c565b6040805160c08101825286546001600160701b038082168352600160701b90910416602080830191909152600188015465ffffffffffff811683850152600160301b810461ffff166060840152600160401b900463ffffffff166080830152825180840190935260028801546001600160a01b0390811684526003890154169083015260a08101919091529091505f90610bd09083611a6f565b9050610bdc818361479f565b6002860154909250610c00906001600160a01b03168c610bfb8b6147b2565b611b6d565b9a508a821115610c2d5760405163c4d4ea0d60e01b8152600481018c905260248101839052604401610a3f565b610c3c8c868685858f8f611d39565b9097509550818b1115610c7f57610c7f30610c556118f9565b876002015f015f9054906101000a90046001600160a01b0316858f610c7a919061478c565b6120ad565b50505050509550959350505050565b5f80610c98613f2f565b610ca0613f2f565b610ca86118f9565b6001600160a01b0316610cba8c611914565b6001600160a01b031614610cd957610cd06118f9565b610a248c611914565b5f610ce38c610906565b9050610cf08c828d612243565b806040518060c00160405290815f82015f9054906101000a90046001600160701b03166001600160701b03166001600160701b031681526020015f8201600e9054906101000a90046001600160701b03166001600160701b03166001600160701b03168152602001600182015f9054906101000a900465ffffffffffff1665ffffffffffff1665ffffffffffff1681526020016001820160069054906101000a900461ffff1661ffff1661ffff1681526020016001820160089054906101000a900463ffffffff1663ffffffff1663ffffffff168152602001600282016040518060400160405290815f82015f9054906101000a90046001600160a01b03166001600160a01b03166001600160a01b03168152602001600182015f9054906101000a90046001600160a01b03166001600160a01b03166001600160a01b0316815250508152505090508094508196505050610e5a818b8b8b8f610e53919061479f565b8b8b61101a565b959d909c50929a50939850909650505050505050565b6001600160a01b038216610e99575f604051633250574960e11b8152600401610a3f9190614016565b5f610eac8383610ea76118f9565b612493565b9050836001600160a01b0316816001600160a01b031614610efa576040516364283d7b60e01b81526001600160a01b0380861660048301526024820184905282166044820152606401610a3f565b50505050565b610f08612580565b600980546001600160a01b0319166001600160a01b0383169081179091557fe7784d93cfbfa4408e19577e6cc0436f4dbb51214b70e100905dfce9def88c16610f4f6118f9565b604051610f5c9190614016565b60405180910390a250565b610f8183838360405180602001604052805f8152506116ee565b505050565b7f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0390811691161490565b5f610900826118c2565b5f6001600160a01b038216610fec575f6040516322718ad960e21b8152600401610a3f9190614016565b506001600160a01b03165f9081526003602052604090205490565b61100f612580565b6110185f6125d3565b565b5f611023613f2f565b6040516331a9108f60e11b8152600481018990525f907f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031690636352211e90602401602060405180830381865afa158015611088573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906110ac919061486b565b90507f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316816001600160a01b03161461112457807f0000000000000000000000000000000000000000000000000000000000000000604051630128886560e71b8152600401610a3f929190614772565b855f0361114457604051631a39845d60e21b815260040160405180910390fd5b601984108061115457506101f484115b1561118457604051633a54873960e21b815260048101859052601960248201526101f46044820152606401610a3f565b5f89815260086020526040812080546111ad928c92916111a390614886565b9182905550612624565b5f818152600d6020526040902090935088600282016111cc82826148be565b505060018101805461ffff8716600160301b0267ffffffffffffffff1990911664ffffffffff421617179055611209856312cc03006101f461263f565b8160010160086101000a81548163ffffffff021916908363ffffffff1602179055505f611237828c8a61192e565b905088811015611264576040516304aefef560e51b8152600481018a905260248101829052604401610a3f565b5f61126f828861270e565b905061127f838d848c858d61271c565b61129061128a6118f9565b87612a32565b8b867f90ac858b09db4f44113a984e09c297b5c0529be26c65a23a1b8967d4124ca5e4858e868e878f6112c16118f9565b6040516112d4979695949392919061495f565b60405180910390a350506040805160c08101825282546001600160701b038082168352600160701b90910416602080830191909152600184015465ffffffffffff81168385015261ffff600160301b820416606084015263ffffffff600160401b909104166080830152825180840190935260028401546001600160a01b0390811684526003909401549093169282019290925260a0820152915050965096945050505050565b60606001805461092490614740565b6060600c5f8381526020019081526020015f20805480602002602001604051908101604052809291908181526020015f905b82821015611406575f848152602090819020604080518082019091526002850290910180546001600160a01b039081168352600191820154168284015290835290920191016113bc565b505050509050919050565b6109de61141c6118f9565b8383612a93565b5f5b81811015610efa575f6114418561143c848761479f565b612624565b5f818152600d60209081526040808320815160c08101835281546001600160701b038082168352600160701b9091041681850152600182015465ffffffffffff808216838601908152600160301b830461ffff166060850152600160401b90920463ffffffff166080840152845180860190955260028401546001600160a01b0390811686526003909401549093169484019490945260a08101929092529151939450921690036114f3575050610efa565b5f6114fd83611914565b90506001600160a01b038116158061153057506312cc0300826040015165ffffffffffff1661152c919061479f565b4211155b1561153d5750505061163f565b61154683612b28565b60208201516001600160701b03161561158c5781602001516001600160701b0316600b5f8981526020019081526020015f205f828254611586919061478c565b90915550505b81516001600160701b0316156115f95781515f888152600a6020908152604080832060a0870180518401516001600160a01b0390811686529184528285209051519091168452909152812080546001600160701b03909316929091906115f390849061478c565b90915550505b86837f2710408375e429523d39f7c37d7d73c1b816756d511f9cb07cd54215ead59f80846116256118f9565b6040516116339291906149d6565b60405180910390a35050505b600101611425565b5f6116e3858585857f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031663d17541538b6040518263ffffffff1660e01b815260040161169d91815260200190565b5f60405180830381865afa1580156116b7573d5f803e3d5ffd5b505050506040513d5f823e601f3d908101601f191682016040526116de91908101906149fd565b612b60565b90505b949350505050565b6116f9848484610e70565b610efa6117046118f9565b85858585612d2b565b6009546060906001600160a01b03168061173657505060408051602081019091525f8152919050565b604051636d02a25560e11b8152600481018490526001600160a01b0382169063da0544aa906024015f60405180830381865afa158015611778573d5f803e3d5ffd5b505050506040513d5f823e601f3d908101601f1916820160405261179f9190810190614aa9565b9392505050565b6117ae613f2f565b505f908152600d6020908152604091829020825160c08101845281546001600160701b038082168352600160701b9091041681840152600182015465ffffffffffff811682860152600160301b810461ffff166060830152600160401b900463ffffffff166080820152835180850190945260028201546001600160a01b0390811685526003909201549091169183019190915260a081019190915290565b6001600160a01b039182165f90815260056020908152604080832093909416825291909152205460ff1690565b611882612580565b6001600160a01b0381166118ab575f604051631e4fbdf760e01b8152600401610a3f9190614016565b6118b4816125d3565b50565b5f61179f8383611a6f565b5f806118cd83611914565b90506001600160a01b03811661090057604051637e27328960e01b815260048101849052602401610a3f565b5f611902612e41565b905090565b610f818383836001612e91565b5f908152600260205260409020546001600160a01b031690565b5f815f0361193d57505f61179f565b60038401546002850154604051633a01714f60e01b81525f926001600160a01b0390811692633a01714f926119789289921690600401614b11565b606060405180830381865afa158015611993573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906119b79190614b33565b60405163d175415360e01b8152600481018690529091505f906001600160a01b037f0000000000000000000000000000000000000000000000000000000000000000169063d1754153906024015f60405180830381865afa158015611a1e573d5f803e3d5ffd5b505050506040513d5f823e601f3d908101601f19168201604052611a4591908101906149fd565b9050611a658585846020015160ff16856040015163ffffffff1685612b60565b9695505050505050565b5f80836040015165ffffffffffff1642611a89919061478c565b9050836080015163ffffffff168111611aa5575f915050610900565b6312cc0300811115611ad75760405163045be49160e01b8152600481018290526312cc03006024820152604401610a3f565b5f611af6855f01516001600160701b0316866060015161ffff1661270e565b90505f611b5482875f01516001600160701b0316611b14919061478c565b611b4f886080015163ffffffff1686611b2d919061478c565b60808a01516103e890611b4a9063ffffffff166312cc030061478c565b61263f565b61270e565b9050611a658186885f01516001600160701b031661263f565b5f61eeed196001600160a01b03851601611b8857503461179f565b3415611ba7576040516314ac44cf60e21b815260040160405180910390fd5b60208201516001600160a01b031615611cfd578282602001516001600160a01b03161015611bf0578160200151836040516335c2b2a360e21b8152600401610a3f929190614ba7565b6040805160e0810182526001600160a01b038087166060808401918252602087810151841660808601528786015165ffffffffffff90811660a08701529188015190911660c08501529083523090830152845192820192909252907f000000000000000000000000000000000000000000000000000000000000000016632b67b570611c7a6118f9565b8386608001516040518463ffffffff1660e01b8152600401611c9e93929190614bc0565b5f604051808303815f87803b158015611cb5575f80fd5b505af1925050508015611cc6575060015b611cfb573d808015611cf3576040519150601f19603f3d011682016040523d82523d5f602084013e611cf8565b606091505b50505b505b5f611d0785612f8c565b9050611d1c611d146118f9565b3087876120ad565b80611d2686612f8c565b611d30919061478c565b95945050505050565b5f611d42613f2f565b611d4b89612b28565b8754600160701b90046001600160701b03168403611e5257611d7188885f80898861271c565b88878a7f791f716b9ed5747949be0a1d9657c61802806973871cbd7ffb8dbaff12b8b2c68b8c8b8b8b8b611da36118f9565b604051611db69796959493929190614c33565b60405180910390a450506040805160c08101825287546001600160701b038082168352600160701b90910416602080830191909152600189015465ffffffffffff811683850152600160301b810461ffff166060840152600160401b900463ffffffff166080830152825180840190935260028901546001600160a01b03908116845260038a0154169083015260a081019190915287906120a1565b5f8781526008602052604081208054611e72918a9184906111a390614886565b5f818152600d602052604090208a5481546001600160701b039182166001600160701b03198216811784558d546001600160e01b031990921617600160701b91829004909216021781556001808c018054918301805465ffffffffffff90931665ffffffffffff19841681178255825467ffffffffffffffff1990941617600160301b9384900461ffff1690930292909217808355905463ffffffff60401b19909116600160401b9182900463ffffffff169091021790556002808c015490820180546001600160a01b039283166001600160a01b0319918216179091556003808e01549084018054919093169116179055909150611faf818a611f768a8c61478c565b8454611f8b91906001600160701b031661478c565b8454611fa8908b90600160701b90046001600160701b031661478c565b8b8a61271c565b611fc0611fba6118f9565b83612a32565b81898c7f791f716b9ed5747949be0a1d9657c61802806973871cbd7ffb8dbaff12b8b2c68d858d8d8d8d611ff26118f9565b6040516120059796959493929190614c33565b60405180910390a46040805160c08101825282546001600160701b038082168352600160701b90910416602080830191909152600184015465ffffffffffff811683850152600160301b810461ffff166060840152600160401b900463ffffffff166080830152825180840190935260028401546001600160a01b0390811684526003909401549093169282019290925260a082015290925090505b97509795505050505050565b306001600160a01b038516036120f35761eeed196001600160a01b038316016120df576120da8382613016565b610efa565b6120da6001600160a01b03831684836130a2565b604051636eb1769f60e11b815281906001600160a01b0384169063dd62ed3e906121239088903090600401614772565b602060405180830381865afa15801561213e573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906121629190614c89565b1061217c576120da6001600160a01b0383168585846130fa565b6001600160a01b038111156121af57806001600160a01b03604051633459303960e01b8152600401610a3f929190614b11565b604051631b63c28b60e11b81526001600160a01b0385811660048301528481166024830152828116604483015283811660648301527f000000000000000000000000000000000000000000000000000000000000000016906336c78516906084015f604051808303815f87803b158015612227575f80fd5b505af1158015612239573d5f803e3d5ffd5b5050505050505050565b5f8061224e85612b28565b5f858152600d602052604090208054600160701b90046001600160701b031684111561228d5760405163c459ec8360e01b815260040160405180910390fd5b80545f906122ac908690600160701b90046001600160701b031661478c565b90505f6122ba83888461192e565b83549091506001600160701b03168110156122fd578254604051631b5de0b760e31b8152600481018390526001600160701b039091166024820152604401610a3f565b5f878152600860205260408120805461231c928a92916111a390614886565b5f818152600d60205260408120855481546001600160701b031981166001600160701b0392831690811784558854600160701b908190048416026001600160e01b0319909216171780835560018089018054918501805465ffffffffffff19811665ffffffffffff9094169384178255825461ffff600160301b91829004160267ffffffffffffffff1990911690931792909217808355905463ffffffff600160401b91829004160263ffffffff60401b1990911617905560028089015490840180546001600160a01b03199081166001600160a01b03938416179091556003808b0154908601805490921692169190911790559398509096506124329287928b929190911690869061242d6118f9565b61271c565b61244361243d6118f9565b86612a32565b8487897f7d3a0daefe69f98b6718ad00d0a9cf2dd50902a8db1b484d4238a86fea6be7c6878a6124716118f9565b60405161248093929190614ca0565b60405180910390a4505050935093915050565b5f8061249e84611914565b90506001600160a01b038316156124ba576124ba818486613133565b6001600160a01b038116156124f4576124d55f855f80612e91565b6001600160a01b0381165f90815260036020526040902080545f190190555b6001600160a01b03851615612522576001600160a01b0385165f908152600360205260409020805460010190555b5f8481526002602052604080822080546001600160a01b0319166001600160a01b0389811691821790925591518793918516917fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef91a4949350505050565b6125886118f9565b6001600160a01b03166125a36006546001600160a01b031690565b6001600160a01b031614611018576125b96118f9565b60405163118cdaa760e01b8152600401610a3f9190614016565b600680546001600160a01b038381166001600160a01b0319831681179093556040519116919082907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0905f90a35050565b5f8161263564e8d4a5100085614ccf565b61179f919061479f565b5f80805f19858709858702925082811083820303915050805f036126765783828161266c5761266c6146f9565b049250505061179f565b8381106126a757604051630c740aef60e31b8152600481018790526024810186905260448101859052606401610a3f565b5f8486880960026001871981018816978890046003810283188082028403028082028403028082028403028082028403028082028403029081029092039091025f889003889004909101858311909403939093029303949094049190911702949350505050565b5f61179f83836103e861263f565b85546001600160701b03168411156127d6576040805160c08101825287546001600160701b03808216808452600160701b9092041660208084019190915260018a015465ffffffffffff811684860152600160301b810461ffff166060850152600160401b900463ffffffff166080840152835180850190945260028a01546001600160a01b03908116855260038b0154169084015260a08201929092526127d19187906127ca908861478c565b8585613189565b61288a565b85546001600160701b031684101561288a576040805160c08101825287546001600160701b03808216808452600160701b9092041660208084019190915260018a015465ffffffffffff811684860152600160301b810461ffff166060850152600160401b900463ffffffff166080840152835180850190945260028a01546001600160a01b03908116855260038b0154169084015260a082019290925261288a91879061288590889061478c565b613642565b8554600160701b90046001600160701b03168311156128cf5785546128ca9086906128c590600160701b90046001600160701b03168661478c565b613763565b612911565b8554600160701b90046001600160701b031683101561291157855461291190869061290b908690600160701b90046001600160701b031661478c565b8361384e565b8115612a0557600386015460028701545f9161293a916001600160a01b03918216911685613941565b60038801546002890154604080517f000000000000000000000000000000000000000000000000000000000000000060208201529394506001600160a01b039283169363fef432579386938c93911691899189915f91016040516020818303038152906040526040518863ffffffff1660e01b81526004016129c196959493929190614ce6565b60206040518083038185885af11580156129dd573d5f803e3d5ffd5b50505050506040513d601f19601f82011682018060405250810190612a029190614c89565b50505b505083546001600160701b03918216600160701b026001600160e01b031990911691909216171790915550565b6001600160a01b038216612a5b575f604051633250574960e11b8152600401610a3f9190614016565b5f612a6783835f612493565b90506001600160a01b03811615610f81575f6040516339e3563760e11b8152600401610a3f9190614016565b6001600160a01b038216612abc5781604051630b61174360e31b8152600401610a3f9190614016565b6001600160a01b038381165f81815260056020908152604080832094871680845294825291829020805460ff191686151590811790915591519182527f17307eab39ab6107e8899845ad3d59bd9653f200f220920489ca2b5937696c31910160405180910390a3505050565b5f612b345f835f612493565b90506001600160a01b0381166109de57604051637e27328960e01b815260048101839052602401610a3f565b6040516320c94b1360e11b8152600481018690525f9081906001600160a01b037f0000000000000000000000000000000000000000000000000000000000000000169063419296269060240161038060405180830381865afa158015612bc8573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190612bec9190614eea565b5090505f612c47888583604051908082528060200260200182016040528015612c3f57816020015b604080516060810182525f80825260208083018290529282015282525f19909201910181612c145790505b508989613979565b90505f612c55898888613a30565b604051634da781a960e01b8152600481018b90529091505f906001600160a01b037f00000000000000000000000000000000000000000000000000000000000000001690634da781a990602401602060405180830381865afa158015612cbd573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190612ce19190614c89565b5f8b8152600b6020526040902054909150612d1c612cff848661479f565b8b612d0a848661479f565b61010089015160141c61ffff16613c84565b9b9a5050505050505050505050565b6001600160a01b0383163b15612e3a57604051630a85bd0160e11b81526001600160a01b0384169063150b7a0290612d6d908890889087908790600401614fbe565b6020604051808303815f875af1925050508015612da7575060408051601f3d908101601f19168201909252612da491810190614ff0565b60015b612e05573d808015612dd4576040519150601f19603f3d011682016040523d82523d5f602084013e612dd9565b606091505b5080515f03612dfd5783604051633250574960e11b8152600401610a3f9190614016565b805181602001fd5b6001600160e01b03198116630a85bd0160e11b14612e385783604051633250574960e11b8152600401610a3f9190614016565b505b5050505050565b5f366014612e4e33610f86565b8015612e5a5750808210155b15612e89575f36612e6b838561478c565b612e7692829061500b565b612e7f91615032565b60601c9250505090565b339250505090565b8080612ea557506001600160a01b03821615155b15612f5d575f612eb4846118c2565b90506001600160a01b03831615801590612ee05750826001600160a01b0316816001600160a01b031614155b8015612ef35750612ef1818461184d565b155b15612f13578260405163a9fbf51f60e01b8152600401610a3f9190614016565b8115612f5b5783856001600160a01b0316826001600160a01b03167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92560405160405180910390a45b505b50505f90815260046020526040902080546001600160a01b0319166001600160a01b0392909216919091179055565b5f6001600160a01b03821661eeee1461300f576040516370a0823160e01b81526001600160a01b038316906370a0823190612fcb903090600401614016565b602060405180830381865afa158015612fe6573d5f803e3d5ffd5b505050506040513d601f19601f8201168201806040525081019061300a9190614c89565b610900565b4792915050565b804710156130405760405163cf47918160e01b815247600482015260248101829052604401610a3f565b5f80836001600160a01b0316836040515f6040518083038185875af1925050503d805f811461308a576040519150601f19603f3d011682016040523d82523d5f602084013e61308f565b606091505b509150915081610efa57610efa81613ced565b610f8183846001600160a01b031663a9059cbb85856040516024016130c8929190614ba7565b604051602081830303815290604052915060e01b6020820180516001600160e01b038381831617835250505050613d16565b6040516001600160a01b038481166024830152838116604483015260648201839052610efa9186918216906323b872dd906084016130c8565b61313e838383613d79565b610f81576001600160a01b03831661316c57604051637e27328960e01b815260048101829052602401610a3f565b818160405163177e802f60e01b8152600401610a3f929190614ba7565b5f84815260076020908152604080832060a0890180518401516001600160a01b039081168652918452828520905151909116845290915290205460ff16613274575f84815260076020908152604080832060a0890180518401516001600160a01b039081168652918452828520815151831686528452828520805460ff19166001908117909155898652600c85528386208451808601909552825151841685529151850151831684860190815282548083018455928752949095209251600290910290920180549282166001600160a01b031993841617815592519290930180549290931691161790555b5f848152600a6020908152604080832060a0890180518401516001600160a01b0390811686529184528285209051519091168452909152812080548592906132bd90849061479f565b909155505060a085015160208101519051604051633a01714f60e01b81525f9283926001600160a01b0390911691633a01714f91613300918a9190600401614b11565b606060405180830381865afa15801561331b573d5f803e3d5ffd5b505050506040513d601f19601f8201168201806040525081019061333f9190614b33565b60a0880151602081015190516040838101519051631d23a08760e21b8152600481018b90526001600160a01b039283166024820152604481018a905263ffffffff90911660648201525f60848201523060a482015286821660c482015261010060e482015260196101048201527f4c656e64696e67206f757420746f206120626f72726f77657200000000000000610124820152929350169063748e821c90610144016020604051808303815f875af11580156133fe573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906134229190614c89565b60a088015151604051630862026560e41b81529193505f92506001600160a01b037f0000000000000000000000000000000000000000000000000000000000000000169163862026509161349b917f00000000000000000000000000000000000000000000000000000000000000009190600401614b11565b602060405180830381865afa1580156134b6573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906134da919061486b565b90505f6001600160a01b038216156134fc576134f786600a61270e565b6134fe565b5f5b9050801561361f575f81156135245761351f838a60a001515f015184613941565b613526565b5f5b9050826001600160a01b031663fef43257827f00000000000000000000000000000000000000000000000000000000000000008c60a001515f0151868a5f8f60405160200161357791815260200190565b6040516020818303038152906040526040518863ffffffff1660e01b81526004016135a796959493929190614ce6565b60206040518083038185885af1935050505080156135e2575060408051601f3d908101601f191682019092526135df91810190614c89565b60015b61361b573d80801561360f576040519150601f19603f3d011682016040523d82523d5f602084013e613614565b606091505b505061361d565b505b505b60a088015151612239903090869088613638868961478c565b610c7a919061478c565b5f828152600a6020908152604080832060a0870180518401516001600160a01b03908116865291845282852090515190911684529091528120805483929061368b90849061478c565b909155505060a0830151602081015190515f916136a89184613941565b90508360a00151602001516001600160a01b0316639e6eec0582858760a001515f0151865f7f000000000000000000000000000000000000000000000000000000000000000060405160200161370091815260200190565b6040516020818303038152906040526040518763ffffffff1660e01b815260040161372f959493929190615067565b5f604051808303818588803b158015613746575f80fd5b505af1158015613758573d5f803e3d5ffd5b505050505050505050565b5f828152600b60205260408120805483929061378090849061479f565b90915550506001600160a01b037f00000000000000000000000000000000000000000000000000000000000000001663a2d532e66137bc6118f9565b6040516001600160e01b031960e084901b1681526001600160a01b039091166004820152602481018590526044810184905260806064820152601960848201527f416464696e6720636f6c6c61746572616c20746f206c6f616e0000000000000060a482015260c4015f604051808303815f87803b15801561383c575f80fd5b505af1158015612e38573d5f803e3d5ffd5b5f838152600b60205260408120805484929061386b90849061478c565b90915550506040516363fdc96f60e11b815260048101849052602481018390526001600160a01b03828116604483015260a06064830152601d60a48301527f52656d6f76696e6720636f6c6c61746572616c2066726f6d206c6f616e00000060c48301525f60848301527f0000000000000000000000000000000000000000000000000000000000000000169063c7fb92de9060e4016020604051808303815f875af115801561391d573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190610efa9190614c89565b5f61eeed196001600160a01b0384160161395c57508061179f565b6139706001600160a01b0384168584613dda565b505f9392505050565b83515f90815b81811015613a2557868181518110613999576139996150c2565b60200260200101516001600160a01b031663edb40950898888886040518563ffffffff1660e01b81526004016139d294939291906150d6565b602060405180830381865afa1580156139ed573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190613a119190614c89565b613a1b908461479f565b925060010161397f565b505095945050505050565b5f838152600c6020908152604080832080548251818502810185019093528083528493849084015b82821015613aa2575f848152602090819020604080518082019091526002850290910180546001600160a01b03908116835260019182015416828401529083529092019101613a58565b5050505090505f5b8151811015613c7b575f828281518110613ac657613ac66150c2565b602002602001015190505f81602001516001600160a01b0316633a01714f89845f01516040518363ffffffff1660e01b8152600401613b06929190614b11565b606060405180830381865afa158015613b21573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190613b459190614b33565b90505f86826040015163ffffffff1614613c05576040828101519051631df139fd60e11b8152600481018b905263ffffffff909116602482015260448101889052606481018990527f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031690633be273fa90608401602060405180830381865afa158015613bdc573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190613c009190614c89565b613c10565b613c1088600a615236565b5f8a8152600a60208181526040808420888301516001600160a01b0390811686529083528185208951909116855290915290912054919250613c5f908290613c59908c90615236565b8461263f565b613c69908861479f565b96505060019093019250613aaa915050565b50509392505050565b5f61270f198201613c9657505f6116e6565b828410613ca45750836116e6565b5f613cb086868661263f565b9050825f03613cc05790506116e6565b611a6581613ccf85888861263f565b613cdb8661271061478c565b613ce5919061479f565b61271061263f565b805115613cfd5780518082602001fd5b60405163d6bda27560e01b815260040160405180910390fd5b5f8060205f8451602086015f885af180613d35576040513d5f823e3d81fd5b50505f513d91508115613d4c578060011415613d59565b6001600160a01b0384163b155b15610efa5783604051635274afe760e01b8152600401610a3f9190614016565b5f6001600160a01b038316158015906116e65750826001600160a01b0316846001600160a01b03161480613db25750613db2848461184d565b806116e65750505f908152600460205260409020546001600160a01b03908116911614919050565b604051636eb1769f60e11b81525f906001600160a01b0385169063dd62ed3e90613e0a9030908790600401614772565b602060405180830381865afa158015613e25573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190613e499190614c89565b9050610efa8484613e5a858561479f565b5f836001600160a01b031663095ea7b38484604051602401613e7d929190614ba7565b604051602081830303815290604052915060e01b6020820180516001600160e01b0383818316178352505050509050613eb68482613eea565b610efa57613ee084856001600160a01b031663095ea7b3865f6040516024016130c8929190614ba7565b610efa8482613d16565b5f805f8060205f8651602088015f8a5af192503d91505f519050828015611a6557508115613f1b5780600114611a65565b50505050506001600160a01b03163b151590565b6040805160c0810182525f8082526020808301829052828401829052606083018290526080830182905283518085019094528184528301529060a082015290565b6001600160e01b0319811681146118b4575f80fd5b5f60208284031215613f95575f80fd5b813561179f81613f70565b5f60208284031215613fb0575f80fd5b5035919050565b5f5b83811015613fd1578181015183820152602001613fb9565b50505f910152565b5f8151808452613ff0816020860160208601613fb7565b601f01601f19169290920160200192915050565b602081525f61179f6020830184613fd9565b6001600160a01b0391909116815260200190565b6001600160a01b03811681146118b4575f80fd5b5f806040838503121561404f575f80fd5b823561405a8161402a565b946020939093013593505050565b5f805f805f60a0868803121561407c575f80fd5b853594506020860135935060408601359250606086013561409c8161402a565b915060808601356001600160401b038111156140b6575f80fd5b860160a081890312156140c7575f80fd5b809150509295509295909350565b6001600160701b038082511683528060208301511660208401525065ffffffffffff604082015116604083015261ffff606082015116606083015263ffffffff608082015116608083015260a0810151610f8160a084018280516001600160a01b03908116835260209182015116910152565b828152610100810161179f60208301846140d5565b5f6040828403121561416d575f80fd5b50919050565b5f805f805f805f610100888a03121561418a575f80fd5b87359650602088013595506141a28960408a0161415d565b94506080880135935060a0880135925060c08801356141c08161402a565b8092505060e0880135905092959891949750929550565b8481526020810184905261020081016141f360408301856140d5565b611d306101208301846140d5565b5f805f60608486031215614213575f80fd5b833561421e8161402a565b9250602084013561422e8161402a565b929592945050506040919091013590565b5f6020828403121561424f575f80fd5b813561179f8161402a565b5f805f6060848603121561426c575f80fd5b83359250602084013561427e8161402a565b9150604084013561428e8161402a565b809150509250925092565b5f805f805f8060e087890312156142ae575f80fd5b863595506142bf886020890161415d565b9450606087013593506080870135925060a08701356142dd8161402a565b8092505060c087013590509295509295509295565b602080825282518282018190525f919060409081850190868401855b828110156143475761433784835180516001600160a01b03908116835260209182015116910152565b928401929085019060010161430e565b5091979650505050505050565b80151581146118b4575f80fd5b5f8060408385031215614372575f80fd5b823561437d8161402a565b9150602083013561438d81614354565b809150509250929050565b5f805f606084860312156143aa575f80fd5b505081359360208301359350604090920135919050565b5f805f80608085870312156143d4575f80fd5b5050823594602084013594506040840135936060013592509050565b634e487b7160e01b5f52604160045260245ffd5b60405160c081016001600160401b0381118282101715614426576144266143f0565b60405290565b604080519081016001600160401b0381118282101715614426576144266143f0565b60405161026081016001600160401b0381118282101715614426576144266143f0565b60405161012081016001600160401b0381118282101715614426576144266143f0565b604051601f8201601f191681016001600160401b03811182821017156144bc576144bc6143f0565b604052919050565b5f6001600160401b038211156144dc576144dc6143f0565b50601f01601f191660200190565b5f82601f8301126144f9575f80fd5b813561450c614507826144c4565b614494565b818152846020838601011115614520575f80fd5b816020850160208301375f918101602001919091529392505050565b5f805f806080858703121561454f575f80fd5b843561455a8161402a565b9350602085013561456a8161402a565b92506040850135915060608501356001600160401b0381111561458b575f80fd5b614597878288016144ea565b91505092959194509250565b60e0810161090082846140d5565b5f80604083850312156145c2575f80fd5b82356145cd8161402a565b9150602083013561438d8161402a565b6001600160701b03811681146118b4575f80fd5b65ffffffffffff811681146118b4575f80fd5b61ffff811681146118b4575f80fd5b63ffffffff811681146118b4575f80fd5b5f80828403610100811215614637575f80fd5b60e0811215614644575f80fd5b61464c614404565b8435614657816145dd565b81526020850135614667816145dd565b6020820152604085013561467a816145f1565b6040820152606085013561468d81614604565b606082015260808501356146a081614613565b60808201526040609f19830112156146b6575f80fd5b6146be61442c565b915060a08501356146ce8161402a565b825260c08501356146de8161402a565b602083015260a08101919091529460e0939093013593505050565b634e487b7160e01b5f52601260045260245ffd5b634e487b7160e01b5f52601160045260245ffd5b5f8261473b57634e487b7160e01b5f52601260045260245ffd5b500490565b600181811c9082168061475457607f821691505b60208210810361416d57634e487b7160e01b5f52602260045260245ffd5b6001600160a01b0392831681529116602082015260400190565b818103818111156109005761090061470d565b808201808211156109005761090061470d565b5f60a082360312156147c2575f80fd5b60405160a081016001600160401b0382821081831117156147e5576147e56143f0565b8160405284358352602085013591506147fd8261402a565b81602084015260408501359150614813826145f1565b81604084015260608501359150614829826145f1565b8160608401526080850135915080821115614842575f80fd5b5061484f368286016144ea565b60808301525092915050565b80516148668161402a565b919050565b5f6020828403121561487b575f80fd5b815161179f8161402a565b5f600182016148975761489761470d565b5060010190565b80546001600160a01b0319166001600160a01b0392909216919091179055565b81356148c98161402a565b6148d3818361489e565b5060208201356148e28161402a565b610f81816001840161489e565b80546001600160701b03808216845260709190911c166020830152600181015465ffffffffffff8116604080850191909152603082901c61ffff1660608501521c63ffffffff16608083015260028101546001600160a01b0390811660a08401526003909101541660c090910152565b6101c0810161496e828a6148ef565b87356149798161402a565b6001600160a01b0390811660e08401526020890135906149988261402a565b8082166101008501528861012085015287610140850152866101608501528086166101808501528085166101a0850152505098975050505050505050565b61010081016149e582856140d5565b6001600160a01b039290921660e09190910152919050565b5f6020808385031215614a0e575f80fd5b82516001600160401b0380821115614a24575f80fd5b818501915085601f830112614a37575f80fd5b815181811115614a4957614a496143f0565b8060051b9150614a5a848301614494565b8181529183018401918481019088841115614a73575f80fd5b938501935b83851015614a9d5784519250614a8d8361402a565b8282529385019390850190614a78565b98975050505050505050565b5f60208284031215614ab9575f80fd5b81516001600160401b03811115614ace575f80fd5b8201601f81018413614ade575f80fd5b8051614aec614507826144c4565b818152856020838501011115614b00575f80fd5b611d30826020830160208601613fb7565b9182526001600160a01b0316602082015260400190565b805161486681614613565b5f60608284031215614b43575f80fd5b604051606081018181106001600160401b0382111715614b6557614b656143f0565b6040528251614b738161402a565b8152602083015160ff81168114614b88575f80fd5b60208201526040830151614b9b81614613565b60408201529392505050565b6001600160a01b03929092168252602082015260400190565b5f61010060018060a01b0380871684528551818151166020860152816020820151166040860152604081015165ffffffffffff80821660608801528060608401511660808801525050508060208701511660a085015250604085015160c08401528060e0840152611a6581840185613fd9565b6102608101614c42828a6148ef565b614c4f60e08301896148ef565b6101c08201969096526101e08101949094526102008401929092526001600160a01b03908116610220840152166102409091015292915050565b5f60208284031215614c99575f80fd5b5051919050565b6101208101614caf82866148ef565b60e08201939093526001600160a01b039190911661010090910152919050565b80820281158282048414176109005761090061470d565b8681525f60018060a01b03808816602084015286604084015280861660608401525083608083015260e060a0830152600d60e08301526c2332b290333937b6903637b0b760991b6101008301526101208060c0840152614d4881840185613fd9565b9998505050505050505050565b8051614866816145f1565b8051614866816145dd565b805161486681614604565b805161486681614354565b5f6102608284031215614d92575f80fd5b614d9a61444e565b9050614da582614d6b565b8152614db360208301614d6b565b6020820152614dc460408301614b28565b6040820152614dd560608301614d76565b6060820152614de660808301614d76565b6080820152614df760a08301614d76565b60a0820152614e0860c08301614d76565b60c0820152614e1960e08301614d76565b60e0820152610100614e2c818401614d76565b90820152610120614e3e838201614d76565b90820152610140614e50838201614d76565b90820152610160614e62838201614d76565b90820152610180614e74838201614d76565b908201526101a0614e86838201614d76565b908201526101c0614e98838201614d76565b908201526101e0614eaa838201614d76565b90820152610200614ebc838201614d76565b90820152610220614ece83820161485b565b90820152610240614ee0838201614d6b565b9082015292915050565b5f80828403610380811215614efd575f80fd5b61012080821215614f0c575f80fd5b614f14614471565b9150614f1f85614d55565b8252614f2d60208601614d55565b6020830152614f3e60408601614d55565b6040830152614f4f60608601614d55565b6060830152614f6060808601614b28565b6080830152614f7160a08601614d60565b60a0830152614f8260c08601614b28565b60c0830152614f9360e0860161485b565b60e0830152610100808601518184015250819350614fb386828701614d81565b925050509250929050565b6001600160a01b03858116825284166020820152604081018390526080606082018190525f90611a6590830184613fd9565b5f60208284031215615000575f80fd5b815161179f81613f70565b5f8085851115615019575f80fd5b83861115615025575f80fd5b5050820193919092039150565b6bffffffffffffffffffffffff19813581811691601485101561505f5780818660140360031b1b83161692505b505092915050565b85815260018060a01b0385166020820152836040820152821515606082015260c06080820152600f60c08201526e2830bcb4b7339037b333103637b0b760891b60e08201525f6101008060a0840152614a9d81840185613fd9565b634e487b7160e01b5f52603260045260245ffd5b5f6080820186835260206080602085015281875180845260a0860191506020890193505f5b8181101561513f57845180516001600160a01b031684528481015160ff168585015260409081015163ffffffff1690840152938301936060909201916001016150fb565b505060408501969096525050506060015292915050565b600181815b8085111561519057815f19048211156151765761517661470d565b8085161561518357918102915b93841c939080029061515b565b509250929050565b5f826151a657506001610900565b816151b257505f610900565b81600181146151c857600281146151d2576151ee565b6001915050610900565b60ff8411156151e3576151e361470d565b50506001821b610900565b5060208310610133831016604e8410600b8410161715615211575081810a610900565b61521b8383615156565b805f190482111561522e5761522e61470d565b029392505050565b5f61179f838361519856fea26469706673582212204fb711e9753cc04b67aad7b6cbe53cebf306b53583c036e2a8b8fbd3d993235164736f6c63430008170033",
2256
- "deployedBytecode": "0x608060405260043610610252575f3560e01c806370a0823111610137578063b88d4fde116100af578063e4ba13c711610076578063e4ba13c7146107c6578063e985e9c5146107f2578063ee0fc12114610811578063f2fde38b14610844578063f8231e3914610863578063fe91edd61461088257005b8063b88d4fde146106ff578063c4d8ea3c1461071e578063c87b56dd14610749578063ddad527114610768578063e131fc0c146107a757005b80638da5cb5b116100fe5780638da5cb5b1461064557806395d89b4114610662578063a21cd6f814610676578063a22cb465146106a2578063a33853d1146106c1578063a4a0481a146106e057005b806370a082311461058e578063715018a6146105ad5780637da0a877146105c157806383b4cf2f146105f357806388bc2ef31461061257005b80632cc2cb63116101ca578063501158691161019157806350115869146104a2578063572b6c05146104de5780636352211e146104fd578063667079891461051c5780636a57728f146105475780636afdd8501461055b57005b80632cc2cb631461041057806331011c5414610425578063325eefd9146104585780633e73ec331461046c57806342842e0e1461048357005b806309c586211161021957806309c58621146103285780630ba8827d146103495780631eabcd341461036c57806323b872dd1461039f5780632407497e146103be578063293c4999146103dd57005b806301ffc9a71461025b5780630582928e1461028f57806306fdde03146102bc578063081812fc146102dd578063095ea7b31461030957005b3661025957005b005b348015610266575f80fd5b5061027a610275366004613f85565b6108b5565b60405190151581526020015b60405180910390f35b34801561029a575f80fd5b506102ae6102a9366004613fa0565b610906565b604051908152602001610286565b3480156102c7575f80fd5b506102d0610916565b6040516102869190614004565b3480156102e8575f80fd5b506102fc6102f7366004613fa0565b6109a5565b6040516102869190614016565b348015610314575f80fd5b5061025961032336600461403e565b6109cc565b61033b610336366004614068565b6109e2565b604051610286929190614148565b61035c610357366004614173565b610c8e565b60405161028694939291906141d7565b348015610377575f80fd5b506102fc7f0000000000000000000000009b90e507cf6b7eb681a506b111f6f50245e614c481565b3480156103aa575f80fd5b506102596103b9366004614201565b610e70565b3480156103c9575f80fd5b506102596103d836600461423f565b610f00565b3480156103e8575f80fd5b506102fc7f000000000000000000000000885f707efa18d2cb12f05a3a8eba6b4b26c8c1d481565b34801561041b575f80fd5b506102ae6101f481565b348015610430575f80fd5b506102ae7f000000000000000000000000000000000000000000000000000000000000000381565b348015610463575f80fd5b506102ae601981565b348015610477575f80fd5b506102ae6312cc030081565b34801561048e575f80fd5b5061025961049d366004614201565b610f67565b3480156104ad575f80fd5b506102ae6104bc36600461425a565b600a60209081525f938452604080852082529284528284209052825290205481565b3480156104e9575f80fd5b5061027a6104f836600461423f565b610f86565b348015610508575f80fd5b506102fc610517366004613fa0565b610fb8565b348015610527575f80fd5b506102ae610536366004613fa0565b600b6020525f908152604090205481565b348015610552575f80fd5b506102ae600a81565b348015610566575f80fd5b506102fc7f000000000000000000000000000000000022d473030f116ddee9f6b43ac78ba381565b348015610599575f80fd5b506102ae6105a836600461423f565b610fc2565b3480156105b8575f80fd5b50610259611007565b3480156105cc575f80fd5b507f000000000000000000000000c29d6995ab3b0df4650ad643adeac55e7acbb5666102fc565b3480156105fe575f80fd5b5061033b61060d366004614299565b61101a565b34801561061d575f80fd5b506102fc7f0000000000000000000000000061e516886a0540f63157f112c0588ee0651dcf81565b348015610650575f80fd5b506006546001600160a01b03166102fc565b34801561066d575f80fd5b506102d061137b565b348015610681575f80fd5b50610695610690366004613fa0565b61138a565b60405161028691906142f2565b3480156106ad575f80fd5b506102596106bc366004614361565b611411565b3480156106cc575f80fd5b506102596106db366004614398565b611423565b3480156106eb575f80fd5b506102ae6106fa3660046143c1565b611647565b34801561070a575f80fd5b5061025961071936600461453c565b6116ee565b348015610729575f80fd5b506102ae610738366004613fa0565b60086020525f908152604090205481565b348015610754575f80fd5b506102d0610763366004613fa0565b61170d565b348015610773575f80fd5b5061027a61078236600461425a565b600760209081525f938452604080852082529284528284209052825290205460ff1681565b3480156107b2575f80fd5b506009546102fc906001600160a01b031681565b3480156107d1575f80fd5b506107e56107e0366004613fa0565b6117a6565b60405161028691906145a3565b3480156107fd575f80fd5b5061027a61080c3660046145b1565b61184d565b34801561081c575f80fd5b506102fc7f00000000000000000000000027da30646502e2f642be5281322ae8c394f7668a81565b34801561084f575f80fd5b5061025961085e36600461423f565b61187a565b34801561086e575f80fd5b506102ae61087d366004614624565b6118b7565b34801561088d575f80fd5b506102fc7f0000000000000000000000002ca27bde7e7d33e353b44c27acfcf6c78dde251d81565b5f6001600160e01b031982166380ac58cd60e01b14806108e557506001600160e01b03198216635b5e139f60e01b145b8061090057506301ffc9a760e01b6001600160e01b03198316145b92915050565b5f61090064e8d4a5100083614721565b60605f805461092490614740565b80601f016020809104026020016040519081016040528092919081815260200182805461095090614740565b801561099b5780601f106109725761010080835404028352916020019161099b565b820191905f5260205f20905b81548152906001019060200180831161097e57829003601f168201915b5050505050905090565b5f6109af826118c2565b505f828152600460205260409020546001600160a01b0316610900565b6109de82826109d96118f9565b611907565b5050565b5f6109eb613f2f565b6109f36118f9565b6001600160a01b0316610a0588611914565b6001600160a01b031614610a4857610a1b6118f9565b610a2488611914565b6040516318d514bd60e21b8152600401610a3f929190614772565b60405180910390fd5b5f878152600d602052604090208054600160701b90046001600160701b0316861115610aa257805460405163b9c5041760e01b815260048101889052600160701b9091046001600160701b03166024820152604401610a3f565b5f610aac89610906565b82549091505f90610adb9084908490610ad6908c90600160701b90046001600160701b031661478c565b61192e565b83549091506001600160701b0316811115610b1e5782546040516395e361d560e01b8152600481018390526001600160701b039091166024820152604401610a3f565b82545f90610b369083906001600160701b031661478c565b6040805160c08101825286546001600160701b038082168352600160701b90910416602080830191909152600188015465ffffffffffff811683850152600160301b810461ffff166060840152600160401b900463ffffffff166080830152825180840190935260028801546001600160a01b0390811684526003890154169083015260a08101919091529091505f90610bd09083611a6f565b9050610bdc818361479f565b6002860154909250610c00906001600160a01b03168c610bfb8b6147b2565b611b6d565b9a508a821115610c2d5760405163c4d4ea0d60e01b8152600481018c905260248101839052604401610a3f565b610c3c8c868685858f8f611d39565b9097509550818b1115610c7f57610c7f30610c556118f9565b876002015f015f9054906101000a90046001600160a01b0316858f610c7a919061478c565b6120ad565b50505050509550959350505050565b5f80610c98613f2f565b610ca0613f2f565b610ca86118f9565b6001600160a01b0316610cba8c611914565b6001600160a01b031614610cd957610cd06118f9565b610a248c611914565b5f610ce38c610906565b9050610cf08c828d612243565b806040518060c00160405290815f82015f9054906101000a90046001600160701b03166001600160701b03166001600160701b031681526020015f8201600e9054906101000a90046001600160701b03166001600160701b03166001600160701b03168152602001600182015f9054906101000a900465ffffffffffff1665ffffffffffff1665ffffffffffff1681526020016001820160069054906101000a900461ffff1661ffff1661ffff1681526020016001820160089054906101000a900463ffffffff1663ffffffff1663ffffffff168152602001600282016040518060400160405290815f82015f9054906101000a90046001600160a01b03166001600160a01b03166001600160a01b03168152602001600182015f9054906101000a90046001600160a01b03166001600160a01b03166001600160a01b0316815250508152505090508094508196505050610e5a818b8b8b8f610e53919061479f565b8b8b61101a565b959d909c50929a50939850909650505050505050565b6001600160a01b038216610e99575f604051633250574960e11b8152600401610a3f9190614016565b5f610eac8383610ea76118f9565b612493565b9050836001600160a01b0316816001600160a01b031614610efa576040516364283d7b60e01b81526001600160a01b0380861660048301526024820184905282166044820152606401610a3f565b50505050565b610f08612580565b600980546001600160a01b0319166001600160a01b0383169081179091557fe7784d93cfbfa4408e19577e6cc0436f4dbb51214b70e100905dfce9def88c16610f4f6118f9565b604051610f5c9190614016565b60405180910390a250565b610f8183838360405180602001604052805f8152506116ee565b505050565b7f000000000000000000000000c29d6995ab3b0df4650ad643adeac55e7acbb5666001600160a01b0390811691161490565b5f610900826118c2565b5f6001600160a01b038216610fec575f6040516322718ad960e21b8152600401610a3f9190614016565b506001600160a01b03165f9081526003602052604090205490565b61100f612580565b6110185f6125d3565b565b5f611023613f2f565b6040516331a9108f60e11b8152600481018990525f907f000000000000000000000000885f707efa18d2cb12f05a3a8eba6b4b26c8c1d46001600160a01b031690636352211e90602401602060405180830381865afa158015611088573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906110ac919061486b565b90507f0000000000000000000000002ca27bde7e7d33e353b44c27acfcf6c78dde251d6001600160a01b0316816001600160a01b03161461112457807f0000000000000000000000002ca27bde7e7d33e353b44c27acfcf6c78dde251d604051630128886560e71b8152600401610a3f929190614772565b855f0361114457604051631a39845d60e21b815260040160405180910390fd5b601984108061115457506101f484115b1561118457604051633a54873960e21b815260048101859052601960248201526101f46044820152606401610a3f565b5f89815260086020526040812080546111ad928c92916111a390614886565b9182905550612624565b5f818152600d6020526040902090935088600282016111cc82826148be565b505060018101805461ffff8716600160301b0267ffffffffffffffff1990911664ffffffffff421617179055611209856312cc03006101f461263f565b8160010160086101000a81548163ffffffff021916908363ffffffff1602179055505f611237828c8a61192e565b905088811015611264576040516304aefef560e51b8152600481018a905260248101829052604401610a3f565b5f61126f828861270e565b905061127f838d848c858d61271c565b61129061128a6118f9565b87612a32565b8b867f90ac858b09db4f44113a984e09c297b5c0529be26c65a23a1b8967d4124ca5e4858e868e878f6112c16118f9565b6040516112d4979695949392919061495f565b60405180910390a350506040805160c08101825282546001600160701b038082168352600160701b90910416602080830191909152600184015465ffffffffffff81168385015261ffff600160301b820416606084015263ffffffff600160401b909104166080830152825180840190935260028401546001600160a01b0390811684526003909401549093169282019290925260a0820152915050965096945050505050565b60606001805461092490614740565b6060600c5f8381526020019081526020015f20805480602002602001604051908101604052809291908181526020015f905b82821015611406575f848152602090819020604080518082019091526002850290910180546001600160a01b039081168352600191820154168284015290835290920191016113bc565b505050509050919050565b6109de61141c6118f9565b8383612a93565b5f5b81811015610efa575f6114418561143c848761479f565b612624565b5f818152600d60209081526040808320815160c08101835281546001600160701b038082168352600160701b9091041681850152600182015465ffffffffffff808216838601908152600160301b830461ffff166060850152600160401b90920463ffffffff166080840152845180860190955260028401546001600160a01b0390811686526003909401549093169484019490945260a08101929092529151939450921690036114f3575050610efa565b5f6114fd83611914565b90506001600160a01b038116158061153057506312cc0300826040015165ffffffffffff1661152c919061479f565b4211155b1561153d5750505061163f565b61154683612b28565b60208201516001600160701b03161561158c5781602001516001600160701b0316600b5f8981526020019081526020015f205f828254611586919061478c565b90915550505b81516001600160701b0316156115f95781515f888152600a6020908152604080832060a0870180518401516001600160a01b0390811686529184528285209051519091168452909152812080546001600160701b03909316929091906115f390849061478c565b90915550505b86837f2710408375e429523d39f7c37d7d73c1b816756d511f9cb07cd54215ead59f80846116256118f9565b6040516116339291906149d6565b60405180910390a35050505b600101611425565b5f6116e3858585857f0000000000000000000000000061e516886a0540f63157f112c0588ee0651dcf6001600160a01b031663d17541538b6040518263ffffffff1660e01b815260040161169d91815260200190565b5f60405180830381865afa1580156116b7573d5f803e3d5ffd5b505050506040513d5f823e601f3d908101601f191682016040526116de91908101906149fd565b612b60565b90505b949350505050565b6116f9848484610e70565b610efa6117046118f9565b85858585612d2b565b6009546060906001600160a01b03168061173657505060408051602081019091525f8152919050565b604051636d02a25560e11b8152600481018490526001600160a01b0382169063da0544aa906024015f60405180830381865afa158015611778573d5f803e3d5ffd5b505050506040513d5f823e601f3d908101601f1916820160405261179f9190810190614aa9565b9392505050565b6117ae613f2f565b505f908152600d6020908152604091829020825160c08101845281546001600160701b038082168352600160701b9091041681840152600182015465ffffffffffff811682860152600160301b810461ffff166060830152600160401b900463ffffffff166080820152835180850190945260028201546001600160a01b0390811685526003909201549091169183019190915260a081019190915290565b6001600160a01b039182165f90815260056020908152604080832093909416825291909152205460ff1690565b611882612580565b6001600160a01b0381166118ab575f604051631e4fbdf760e01b8152600401610a3f9190614016565b6118b4816125d3565b50565b5f61179f8383611a6f565b5f806118cd83611914565b90506001600160a01b03811661090057604051637e27328960e01b815260048101849052602401610a3f565b5f611902612e41565b905090565b610f818383836001612e91565b5f908152600260205260409020546001600160a01b031690565b5f815f0361193d57505f61179f565b60038401546002850154604051633a01714f60e01b81525f926001600160a01b0390811692633a01714f926119789289921690600401614b11565b606060405180830381865afa158015611993573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906119b79190614b33565b60405163d175415360e01b8152600481018690529091505f906001600160a01b037f0000000000000000000000000061e516886a0540f63157f112c0588ee0651dcf169063d1754153906024015f60405180830381865afa158015611a1e573d5f803e3d5ffd5b505050506040513d5f823e601f3d908101601f19168201604052611a4591908101906149fd565b9050611a658585846020015160ff16856040015163ffffffff1685612b60565b9695505050505050565b5f80836040015165ffffffffffff1642611a89919061478c565b9050836080015163ffffffff168111611aa5575f915050610900565b6312cc0300811115611ad75760405163045be49160e01b8152600481018290526312cc03006024820152604401610a3f565b5f611af6855f01516001600160701b0316866060015161ffff1661270e565b90505f611b5482875f01516001600160701b0316611b14919061478c565b611b4f886080015163ffffffff1686611b2d919061478c565b60808a01516103e890611b4a9063ffffffff166312cc030061478c565b61263f565b61270e565b9050611a658186885f01516001600160701b031661263f565b5f61eeed196001600160a01b03851601611b8857503461179f565b3415611ba7576040516314ac44cf60e21b815260040160405180910390fd5b60208201516001600160a01b031615611cfd578282602001516001600160a01b03161015611bf0578160200151836040516335c2b2a360e21b8152600401610a3f929190614ba7565b6040805160e0810182526001600160a01b038087166060808401918252602087810151841660808601528786015165ffffffffffff90811660a08701529188015190911660c08501529083523090830152845192820192909252907f000000000000000000000000000000000022d473030f116ddee9f6b43ac78ba316632b67b570611c7a6118f9565b8386608001516040518463ffffffff1660e01b8152600401611c9e93929190614bc0565b5f604051808303815f87803b158015611cb5575f80fd5b505af1925050508015611cc6575060015b611cfb573d808015611cf3576040519150601f19603f3d011682016040523d82523d5f602084013e611cf8565b606091505b50505b505b5f611d0785612f8c565b9050611d1c611d146118f9565b3087876120ad565b80611d2686612f8c565b611d30919061478c565b95945050505050565b5f611d42613f2f565b611d4b89612b28565b8754600160701b90046001600160701b03168403611e5257611d7188885f80898861271c565b88878a7f791f716b9ed5747949be0a1d9657c61802806973871cbd7ffb8dbaff12b8b2c68b8c8b8b8b8b611da36118f9565b604051611db69796959493929190614c33565b60405180910390a450506040805160c08101825287546001600160701b038082168352600160701b90910416602080830191909152600189015465ffffffffffff811683850152600160301b810461ffff166060840152600160401b900463ffffffff166080830152825180840190935260028901546001600160a01b03908116845260038a0154169083015260a081019190915287906120a1565b5f8781526008602052604081208054611e72918a9184906111a390614886565b5f818152600d602052604090208a5481546001600160701b039182166001600160701b03198216811784558d546001600160e01b031990921617600160701b91829004909216021781556001808c018054918301805465ffffffffffff90931665ffffffffffff19841681178255825467ffffffffffffffff1990941617600160301b9384900461ffff1690930292909217808355905463ffffffff60401b19909116600160401b9182900463ffffffff169091021790556002808c015490820180546001600160a01b039283166001600160a01b0319918216179091556003808e01549084018054919093169116179055909150611faf818a611f768a8c61478c565b8454611f8b91906001600160701b031661478c565b8454611fa8908b90600160701b90046001600160701b031661478c565b8b8a61271c565b611fc0611fba6118f9565b83612a32565b81898c7f791f716b9ed5747949be0a1d9657c61802806973871cbd7ffb8dbaff12b8b2c68d858d8d8d8d611ff26118f9565b6040516120059796959493929190614c33565b60405180910390a46040805160c08101825282546001600160701b038082168352600160701b90910416602080830191909152600184015465ffffffffffff811683850152600160301b810461ffff166060840152600160401b900463ffffffff166080830152825180840190935260028401546001600160a01b0390811684526003909401549093169282019290925260a082015290925090505b97509795505050505050565b306001600160a01b038516036120f35761eeed196001600160a01b038316016120df576120da8382613016565b610efa565b6120da6001600160a01b03831684836130a2565b604051636eb1769f60e11b815281906001600160a01b0384169063dd62ed3e906121239088903090600401614772565b602060405180830381865afa15801561213e573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906121629190614c89565b1061217c576120da6001600160a01b0383168585846130fa565b6001600160a01b038111156121af57806001600160a01b03604051633459303960e01b8152600401610a3f929190614b11565b604051631b63c28b60e11b81526001600160a01b0385811660048301528481166024830152828116604483015283811660648301527f000000000000000000000000000000000022d473030f116ddee9f6b43ac78ba316906336c78516906084015f604051808303815f87803b158015612227575f80fd5b505af1158015612239573d5f803e3d5ffd5b5050505050505050565b5f8061224e85612b28565b5f858152600d602052604090208054600160701b90046001600160701b031684111561228d5760405163c459ec8360e01b815260040160405180910390fd5b80545f906122ac908690600160701b90046001600160701b031661478c565b90505f6122ba83888461192e565b83549091506001600160701b03168110156122fd578254604051631b5de0b760e31b8152600481018390526001600160701b039091166024820152604401610a3f565b5f878152600860205260408120805461231c928a92916111a390614886565b5f818152600d60205260408120855481546001600160701b031981166001600160701b0392831690811784558854600160701b908190048416026001600160e01b0319909216171780835560018089018054918501805465ffffffffffff19811665ffffffffffff9094169384178255825461ffff600160301b91829004160267ffffffffffffffff1990911690931792909217808355905463ffffffff600160401b91829004160263ffffffff60401b1990911617905560028089015490840180546001600160a01b03199081166001600160a01b03938416179091556003808b0154908601805490921692169190911790559398509096506124329287928b929190911690869061242d6118f9565b61271c565b61244361243d6118f9565b86612a32565b8487897f7d3a0daefe69f98b6718ad00d0a9cf2dd50902a8db1b484d4238a86fea6be7c6878a6124716118f9565b60405161248093929190614ca0565b60405180910390a4505050935093915050565b5f8061249e84611914565b90506001600160a01b038316156124ba576124ba818486613133565b6001600160a01b038116156124f4576124d55f855f80612e91565b6001600160a01b0381165f90815260036020526040902080545f190190555b6001600160a01b03851615612522576001600160a01b0385165f908152600360205260409020805460010190555b5f8481526002602052604080822080546001600160a01b0319166001600160a01b0389811691821790925591518793918516917fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef91a4949350505050565b6125886118f9565b6001600160a01b03166125a36006546001600160a01b031690565b6001600160a01b031614611018576125b96118f9565b60405163118cdaa760e01b8152600401610a3f9190614016565b600680546001600160a01b038381166001600160a01b0319831681179093556040519116919082907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0905f90a35050565b5f8161263564e8d4a5100085614ccf565b61179f919061479f565b5f80805f19858709858702925082811083820303915050805f036126765783828161266c5761266c6146f9565b049250505061179f565b8381106126a757604051630c740aef60e31b8152600481018790526024810186905260448101859052606401610a3f565b5f8486880960026001871981018816978890046003810283188082028403028082028403028082028403028082028403028082028403029081029092039091025f889003889004909101858311909403939093029303949094049190911702949350505050565b5f61179f83836103e861263f565b85546001600160701b03168411156127d6576040805160c08101825287546001600160701b03808216808452600160701b9092041660208084019190915260018a015465ffffffffffff811684860152600160301b810461ffff166060850152600160401b900463ffffffff166080840152835180850190945260028a01546001600160a01b03908116855260038b0154169084015260a08201929092526127d19187906127ca908861478c565b8585613189565b61288a565b85546001600160701b031684101561288a576040805160c08101825287546001600160701b03808216808452600160701b9092041660208084019190915260018a015465ffffffffffff811684860152600160301b810461ffff166060850152600160401b900463ffffffff166080840152835180850190945260028a01546001600160a01b03908116855260038b0154169084015260a082019290925261288a91879061288590889061478c565b613642565b8554600160701b90046001600160701b03168311156128cf5785546128ca9086906128c590600160701b90046001600160701b03168661478c565b613763565b612911565b8554600160701b90046001600160701b031683101561291157855461291190869061290b908690600160701b90046001600160701b031661478c565b8361384e565b8115612a0557600386015460028701545f9161293a916001600160a01b03918216911685613941565b60038801546002890154604080517f000000000000000000000000000000000000000000000000000000000000000360208201529394506001600160a01b039283169363fef432579386938c93911691899189915f91016040516020818303038152906040526040518863ffffffff1660e01b81526004016129c196959493929190614ce6565b60206040518083038185885af11580156129dd573d5f803e3d5ffd5b50505050506040513d601f19601f82011682018060405250810190612a029190614c89565b50505b505083546001600160701b03918216600160701b026001600160e01b031990911691909216171790915550565b6001600160a01b038216612a5b575f604051633250574960e11b8152600401610a3f9190614016565b5f612a6783835f612493565b90506001600160a01b03811615610f81575f6040516339e3563760e11b8152600401610a3f9190614016565b6001600160a01b038216612abc5781604051630b61174360e31b8152600401610a3f9190614016565b6001600160a01b038381165f81815260056020908152604080832094871680845294825291829020805460ff191686151590811790915591519182527f17307eab39ab6107e8899845ad3d59bd9653f200f220920489ca2b5937696c31910160405180910390a3505050565b5f612b345f835f612493565b90506001600160a01b0381166109de57604051637e27328960e01b815260048101839052602401610a3f565b6040516320c94b1360e11b8152600481018690525f9081906001600160a01b037f00000000000000000000000027da30646502e2f642be5281322ae8c394f7668a169063419296269060240161038060405180830381865afa158015612bc8573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190612bec9190614eea565b5090505f612c47888583604051908082528060200260200182016040528015612c3f57816020015b604080516060810182525f80825260208083018290529282015282525f19909201910181612c145790505b508989613979565b90505f612c55898888613a30565b604051634da781a960e01b8152600481018b90529091505f906001600160a01b037f00000000000000000000000027da30646502e2f642be5281322ae8c394f7668a1690634da781a990602401602060405180830381865afa158015612cbd573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190612ce19190614c89565b5f8b8152600b6020526040902054909150612d1c612cff848661479f565b8b612d0a848661479f565b61010089015160141c61ffff16613c84565b9b9a5050505050505050505050565b6001600160a01b0383163b15612e3a57604051630a85bd0160e11b81526001600160a01b0384169063150b7a0290612d6d908890889087908790600401614fbe565b6020604051808303815f875af1925050508015612da7575060408051601f3d908101601f19168201909252612da491810190614ff0565b60015b612e05573d808015612dd4576040519150601f19603f3d011682016040523d82523d5f602084013e612dd9565b606091505b5080515f03612dfd5783604051633250574960e11b8152600401610a3f9190614016565b805181602001fd5b6001600160e01b03198116630a85bd0160e11b14612e385783604051633250574960e11b8152600401610a3f9190614016565b505b5050505050565b5f366014612e4e33610f86565b8015612e5a5750808210155b15612e89575f36612e6b838561478c565b612e7692829061500b565b612e7f91615032565b60601c9250505090565b339250505090565b8080612ea557506001600160a01b03821615155b15612f5d575f612eb4846118c2565b90506001600160a01b03831615801590612ee05750826001600160a01b0316816001600160a01b031614155b8015612ef35750612ef1818461184d565b155b15612f13578260405163a9fbf51f60e01b8152600401610a3f9190614016565b8115612f5b5783856001600160a01b0316826001600160a01b03167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92560405160405180910390a45b505b50505f90815260046020526040902080546001600160a01b0319166001600160a01b0392909216919091179055565b5f6001600160a01b03821661eeee1461300f576040516370a0823160e01b81526001600160a01b038316906370a0823190612fcb903090600401614016565b602060405180830381865afa158015612fe6573d5f803e3d5ffd5b505050506040513d601f19601f8201168201806040525081019061300a9190614c89565b610900565b4792915050565b804710156130405760405163cf47918160e01b815247600482015260248101829052604401610a3f565b5f80836001600160a01b0316836040515f6040518083038185875af1925050503d805f811461308a576040519150601f19603f3d011682016040523d82523d5f602084013e61308f565b606091505b509150915081610efa57610efa81613ced565b610f8183846001600160a01b031663a9059cbb85856040516024016130c8929190614ba7565b604051602081830303815290604052915060e01b6020820180516001600160e01b038381831617835250505050613d16565b6040516001600160a01b038481166024830152838116604483015260648201839052610efa9186918216906323b872dd906084016130c8565b61313e838383613d79565b610f81576001600160a01b03831661316c57604051637e27328960e01b815260048101829052602401610a3f565b818160405163177e802f60e01b8152600401610a3f929190614ba7565b5f84815260076020908152604080832060a0890180518401516001600160a01b039081168652918452828520905151909116845290915290205460ff16613274575f84815260076020908152604080832060a0890180518401516001600160a01b039081168652918452828520815151831686528452828520805460ff19166001908117909155898652600c85528386208451808601909552825151841685529151850151831684860190815282548083018455928752949095209251600290910290920180549282166001600160a01b031993841617815592519290930180549290931691161790555b5f848152600a6020908152604080832060a0890180518401516001600160a01b0390811686529184528285209051519091168452909152812080548592906132bd90849061479f565b909155505060a085015160208101519051604051633a01714f60e01b81525f9283926001600160a01b0390911691633a01714f91613300918a9190600401614b11565b606060405180830381865afa15801561331b573d5f803e3d5ffd5b505050506040513d601f19601f8201168201806040525081019061333f9190614b33565b60a0880151602081015190516040838101519051631d23a08760e21b8152600481018b90526001600160a01b039283166024820152604481018a905263ffffffff90911660648201525f60848201523060a482015286821660c482015261010060e482015260196101048201527f4c656e64696e67206f757420746f206120626f72726f77657200000000000000610124820152929350169063748e821c90610144016020604051808303815f875af11580156133fe573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906134229190614c89565b60a088015151604051630862026560e41b81529193505f92506001600160a01b037f0000000000000000000000000061e516886a0540f63157f112c0588ee0651dcf169163862026509161349b917f00000000000000000000000000000000000000000000000000000000000000039190600401614b11565b602060405180830381865afa1580156134b6573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906134da919061486b565b90505f6001600160a01b038216156134fc576134f786600a61270e565b6134fe565b5f5b9050801561361f575f81156135245761351f838a60a001515f015184613941565b613526565b5f5b9050826001600160a01b031663fef43257827f00000000000000000000000000000000000000000000000000000000000000038c60a001515f0151868a5f8f60405160200161357791815260200190565b6040516020818303038152906040526040518863ffffffff1660e01b81526004016135a796959493929190614ce6565b60206040518083038185885af1935050505080156135e2575060408051601f3d908101601f191682019092526135df91810190614c89565b60015b61361b573d80801561360f576040519150601f19603f3d011682016040523d82523d5f602084013e613614565b606091505b505061361d565b505b505b60a088015151612239903090869088613638868961478c565b610c7a919061478c565b5f828152600a6020908152604080832060a0870180518401516001600160a01b03908116865291845282852090515190911684529091528120805483929061368b90849061478c565b909155505060a0830151602081015190515f916136a89184613941565b90508360a00151602001516001600160a01b0316639e6eec0582858760a001515f0151865f7f000000000000000000000000000000000000000000000000000000000000000360405160200161370091815260200190565b6040516020818303038152906040526040518763ffffffff1660e01b815260040161372f959493929190615067565b5f604051808303818588803b158015613746575f80fd5b505af1158015613758573d5f803e3d5ffd5b505050505050505050565b5f828152600b60205260408120805483929061378090849061479f565b90915550506001600160a01b037f00000000000000000000000027da30646502e2f642be5281322ae8c394f7668a1663a2d532e66137bc6118f9565b6040516001600160e01b031960e084901b1681526001600160a01b039091166004820152602481018590526044810184905260806064820152601960848201527f416464696e6720636f6c6c61746572616c20746f206c6f616e0000000000000060a482015260c4015f604051808303815f87803b15801561383c575f80fd5b505af1158015612e38573d5f803e3d5ffd5b5f838152600b60205260408120805484929061386b90849061478c565b90915550506040516363fdc96f60e11b815260048101849052602481018390526001600160a01b03828116604483015260a06064830152601d60a48301527f52656d6f76696e6720636f6c6c61746572616c2066726f6d206c6f616e00000060c48301525f60848301527f00000000000000000000000027da30646502e2f642be5281322ae8c394f7668a169063c7fb92de9060e4016020604051808303815f875af115801561391d573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190610efa9190614c89565b5f61eeed196001600160a01b0384160161395c57508061179f565b6139706001600160a01b0384168584613dda565b505f9392505050565b83515f90815b81811015613a2557868181518110613999576139996150c2565b60200260200101516001600160a01b031663edb40950898888886040518563ffffffff1660e01b81526004016139d294939291906150d6565b602060405180830381865afa1580156139ed573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190613a119190614c89565b613a1b908461479f565b925060010161397f565b505095945050505050565b5f838152600c6020908152604080832080548251818502810185019093528083528493849084015b82821015613aa2575f848152602090819020604080518082019091526002850290910180546001600160a01b03908116835260019182015416828401529083529092019101613a58565b5050505090505f5b8151811015613c7b575f828281518110613ac657613ac66150c2565b602002602001015190505f81602001516001600160a01b0316633a01714f89845f01516040518363ffffffff1660e01b8152600401613b06929190614b11565b606060405180830381865afa158015613b21573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190613b459190614b33565b90505f86826040015163ffffffff1614613c05576040828101519051631df139fd60e11b8152600481018b905263ffffffff909116602482015260448101889052606481018990527f0000000000000000000000009b90e507cf6b7eb681a506b111f6f50245e614c46001600160a01b031690633be273fa90608401602060405180830381865afa158015613bdc573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190613c009190614c89565b613c10565b613c1088600a615236565b5f8a8152600a60208181526040808420888301516001600160a01b0390811686529083528185208951909116855290915290912054919250613c5f908290613c59908c90615236565b8461263f565b613c69908861479f565b96505060019093019250613aaa915050565b50509392505050565b5f61270f198201613c9657505f6116e6565b828410613ca45750836116e6565b5f613cb086868661263f565b9050825f03613cc05790506116e6565b611a6581613ccf85888861263f565b613cdb8661271061478c565b613ce5919061479f565b61271061263f565b805115613cfd5780518082602001fd5b60405163d6bda27560e01b815260040160405180910390fd5b5f8060205f8451602086015f885af180613d35576040513d5f823e3d81fd5b50505f513d91508115613d4c578060011415613d59565b6001600160a01b0384163b155b15610efa5783604051635274afe760e01b8152600401610a3f9190614016565b5f6001600160a01b038316158015906116e65750826001600160a01b0316846001600160a01b03161480613db25750613db2848461184d565b806116e65750505f908152600460205260409020546001600160a01b03908116911614919050565b604051636eb1769f60e11b81525f906001600160a01b0385169063dd62ed3e90613e0a9030908790600401614772565b602060405180830381865afa158015613e25573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190613e499190614c89565b9050610efa8484613e5a858561479f565b5f836001600160a01b031663095ea7b38484604051602401613e7d929190614ba7565b604051602081830303815290604052915060e01b6020820180516001600160e01b0383818316178352505050509050613eb68482613eea565b610efa57613ee084856001600160a01b031663095ea7b3865f6040516024016130c8929190614ba7565b610efa8482613d16565b5f805f8060205f8651602088015f8a5af192503d91505f519050828015611a6557508115613f1b5780600114611a65565b50505050506001600160a01b03163b151590565b6040805160c0810182525f8082526020808301829052828401829052606083018290526080830182905283518085019094528184528301529060a082015290565b6001600160e01b0319811681146118b4575f80fd5b5f60208284031215613f95575f80fd5b813561179f81613f70565b5f60208284031215613fb0575f80fd5b5035919050565b5f5b83811015613fd1578181015183820152602001613fb9565b50505f910152565b5f8151808452613ff0816020860160208601613fb7565b601f01601f19169290920160200192915050565b602081525f61179f6020830184613fd9565b6001600160a01b0391909116815260200190565b6001600160a01b03811681146118b4575f80fd5b5f806040838503121561404f575f80fd5b823561405a8161402a565b946020939093013593505050565b5f805f805f60a0868803121561407c575f80fd5b853594506020860135935060408601359250606086013561409c8161402a565b915060808601356001600160401b038111156140b6575f80fd5b860160a081890312156140c7575f80fd5b809150509295509295909350565b6001600160701b038082511683528060208301511660208401525065ffffffffffff604082015116604083015261ffff606082015116606083015263ffffffff608082015116608083015260a0810151610f8160a084018280516001600160a01b03908116835260209182015116910152565b828152610100810161179f60208301846140d5565b5f6040828403121561416d575f80fd5b50919050565b5f805f805f805f610100888a03121561418a575f80fd5b87359650602088013595506141a28960408a0161415d565b94506080880135935060a0880135925060c08801356141c08161402a565b8092505060e0880135905092959891949750929550565b8481526020810184905261020081016141f360408301856140d5565b611d306101208301846140d5565b5f805f60608486031215614213575f80fd5b833561421e8161402a565b9250602084013561422e8161402a565b929592945050506040919091013590565b5f6020828403121561424f575f80fd5b813561179f8161402a565b5f805f6060848603121561426c575f80fd5b83359250602084013561427e8161402a565b9150604084013561428e8161402a565b809150509250925092565b5f805f805f8060e087890312156142ae575f80fd5b863595506142bf886020890161415d565b9450606087013593506080870135925060a08701356142dd8161402a565b8092505060c087013590509295509295509295565b602080825282518282018190525f919060409081850190868401855b828110156143475761433784835180516001600160a01b03908116835260209182015116910152565b928401929085019060010161430e565b5091979650505050505050565b80151581146118b4575f80fd5b5f8060408385031215614372575f80fd5b823561437d8161402a565b9150602083013561438d81614354565b809150509250929050565b5f805f606084860312156143aa575f80fd5b505081359360208301359350604090920135919050565b5f805f80608085870312156143d4575f80fd5b5050823594602084013594506040840135936060013592509050565b634e487b7160e01b5f52604160045260245ffd5b60405160c081016001600160401b0381118282101715614426576144266143f0565b60405290565b604080519081016001600160401b0381118282101715614426576144266143f0565b60405161026081016001600160401b0381118282101715614426576144266143f0565b60405161012081016001600160401b0381118282101715614426576144266143f0565b604051601f8201601f191681016001600160401b03811182821017156144bc576144bc6143f0565b604052919050565b5f6001600160401b038211156144dc576144dc6143f0565b50601f01601f191660200190565b5f82601f8301126144f9575f80fd5b813561450c614507826144c4565b614494565b818152846020838601011115614520575f80fd5b816020850160208301375f918101602001919091529392505050565b5f805f806080858703121561454f575f80fd5b843561455a8161402a565b9350602085013561456a8161402a565b92506040850135915060608501356001600160401b0381111561458b575f80fd5b614597878288016144ea565b91505092959194509250565b60e0810161090082846140d5565b5f80604083850312156145c2575f80fd5b82356145cd8161402a565b9150602083013561438d8161402a565b6001600160701b03811681146118b4575f80fd5b65ffffffffffff811681146118b4575f80fd5b61ffff811681146118b4575f80fd5b63ffffffff811681146118b4575f80fd5b5f80828403610100811215614637575f80fd5b60e0811215614644575f80fd5b61464c614404565b8435614657816145dd565b81526020850135614667816145dd565b6020820152604085013561467a816145f1565b6040820152606085013561468d81614604565b606082015260808501356146a081614613565b60808201526040609f19830112156146b6575f80fd5b6146be61442c565b915060a08501356146ce8161402a565b825260c08501356146de8161402a565b602083015260a08101919091529460e0939093013593505050565b634e487b7160e01b5f52601260045260245ffd5b634e487b7160e01b5f52601160045260245ffd5b5f8261473b57634e487b7160e01b5f52601260045260245ffd5b500490565b600181811c9082168061475457607f821691505b60208210810361416d57634e487b7160e01b5f52602260045260245ffd5b6001600160a01b0392831681529116602082015260400190565b818103818111156109005761090061470d565b808201808211156109005761090061470d565b5f60a082360312156147c2575f80fd5b60405160a081016001600160401b0382821081831117156147e5576147e56143f0565b8160405284358352602085013591506147fd8261402a565b81602084015260408501359150614813826145f1565b81604084015260608501359150614829826145f1565b8160608401526080850135915080821115614842575f80fd5b5061484f368286016144ea565b60808301525092915050565b80516148668161402a565b919050565b5f6020828403121561487b575f80fd5b815161179f8161402a565b5f600182016148975761489761470d565b5060010190565b80546001600160a01b0319166001600160a01b0392909216919091179055565b81356148c98161402a565b6148d3818361489e565b5060208201356148e28161402a565b610f81816001840161489e565b80546001600160701b03808216845260709190911c166020830152600181015465ffffffffffff8116604080850191909152603082901c61ffff1660608501521c63ffffffff16608083015260028101546001600160a01b0390811660a08401526003909101541660c090910152565b6101c0810161496e828a6148ef565b87356149798161402a565b6001600160a01b0390811660e08401526020890135906149988261402a565b8082166101008501528861012085015287610140850152866101608501528086166101808501528085166101a0850152505098975050505050505050565b61010081016149e582856140d5565b6001600160a01b039290921660e09190910152919050565b5f6020808385031215614a0e575f80fd5b82516001600160401b0380821115614a24575f80fd5b818501915085601f830112614a37575f80fd5b815181811115614a4957614a496143f0565b8060051b9150614a5a848301614494565b8181529183018401918481019088841115614a73575f80fd5b938501935b83851015614a9d5784519250614a8d8361402a565b8282529385019390850190614a78565b98975050505050505050565b5f60208284031215614ab9575f80fd5b81516001600160401b03811115614ace575f80fd5b8201601f81018413614ade575f80fd5b8051614aec614507826144c4565b818152856020838501011115614b00575f80fd5b611d30826020830160208601613fb7565b9182526001600160a01b0316602082015260400190565b805161486681614613565b5f60608284031215614b43575f80fd5b604051606081018181106001600160401b0382111715614b6557614b656143f0565b6040528251614b738161402a565b8152602083015160ff81168114614b88575f80fd5b60208201526040830151614b9b81614613565b60408201529392505050565b6001600160a01b03929092168252602082015260400190565b5f61010060018060a01b0380871684528551818151166020860152816020820151166040860152604081015165ffffffffffff80821660608801528060608401511660808801525050508060208701511660a085015250604085015160c08401528060e0840152611a6581840185613fd9565b6102608101614c42828a6148ef565b614c4f60e08301896148ef565b6101c08201969096526101e08101949094526102008401929092526001600160a01b03908116610220840152166102409091015292915050565b5f60208284031215614c99575f80fd5b5051919050565b6101208101614caf82866148ef565b60e08201939093526001600160a01b039190911661010090910152919050565b80820281158282048414176109005761090061470d565b8681525f60018060a01b03808816602084015286604084015280861660608401525083608083015260e060a0830152600d60e08301526c2332b290333937b6903637b0b760991b6101008301526101208060c0840152614d4881840185613fd9565b9998505050505050505050565b8051614866816145f1565b8051614866816145dd565b805161486681614604565b805161486681614354565b5f6102608284031215614d92575f80fd5b614d9a61444e565b9050614da582614d6b565b8152614db360208301614d6b565b6020820152614dc460408301614b28565b6040820152614dd560608301614d76565b6060820152614de660808301614d76565b6080820152614df760a08301614d76565b60a0820152614e0860c08301614d76565b60c0820152614e1960e08301614d76565b60e0820152610100614e2c818401614d76565b90820152610120614e3e838201614d76565b90820152610140614e50838201614d76565b90820152610160614e62838201614d76565b90820152610180614e74838201614d76565b908201526101a0614e86838201614d76565b908201526101c0614e98838201614d76565b908201526101e0614eaa838201614d76565b90820152610200614ebc838201614d76565b90820152610220614ece83820161485b565b90820152610240614ee0838201614d6b565b9082015292915050565b5f80828403610380811215614efd575f80fd5b61012080821215614f0c575f80fd5b614f14614471565b9150614f1f85614d55565b8252614f2d60208601614d55565b6020830152614f3e60408601614d55565b6040830152614f4f60608601614d55565b6060830152614f6060808601614b28565b6080830152614f7160a08601614d60565b60a0830152614f8260c08601614b28565b60c0830152614f9360e0860161485b565b60e0830152610100808601518184015250819350614fb386828701614d81565b925050509250929050565b6001600160a01b03858116825284166020820152604081018390526080606082018190525f90611a6590830184613fd9565b5f60208284031215615000575f80fd5b815161179f81613f70565b5f8085851115615019575f80fd5b83861115615025575f80fd5b5050820193919092039150565b6bffffffffffffffffffffffff19813581811691601485101561505f5780818660140360031b1b83161692505b505092915050565b85815260018060a01b0385166020820152836040820152821515606082015260c06080820152600f60c08201526e2830bcb4b7339037b333103637b0b760891b60e08201525f6101008060a0840152614a9d81840185613fd9565b634e487b7160e01b5f52603260045260245ffd5b5f6080820186835260206080602085015281875180845260a0860191506020890193505f5b8181101561513f57845180516001600160a01b031684528481015160ff168585015260409081015163ffffffff1690840152938301936060909201916001016150fb565b505060408501969096525050506060015292915050565b600181815b8085111561519057815f19048211156151765761517661470d565b8085161561518357918102915b93841c939080029061515b565b509250929050565b5f826151a657506001610900565b816151b257505f610900565b81600181146151c857600281146151d2576151ee565b6001915050610900565b60ff8411156151e3576151e361470d565b50506001821b610900565b5060208310610133831016604e8410600b8410161715615211575081810a610900565b61521b8383615156565b805f190482111561522e5761522e61470d565b029392505050565b5f61179f838361519856fea26469706673582212204fb711e9753cc04b67aad7b6cbe53cebf306b53583c036e2a8b8fbd3d993235164736f6c63430008170033",
2257
- "metadata": "{\"compiler\":{\"version\":\"0.8.23+commit.f704f362\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"inputs\":[{\"internalType\":\"contract IREVDeployer\",\"name\":\"revnets\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"revId\",\"type\":\"uint256\"},{\"internalType\":\"address\",\"name\":\"owner\",\"type\":\"address\"},{\"internalType\":\"contract IPermit2\",\"name\":\"permit2\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"trustedForwarder\",\"type\":\"address\"}],\"stateMutability\":\"nonpayable\",\"type\":\"constructor\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"sender\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"tokenId\",\"type\":\"uint256\"},{\"internalType\":\"address\",\"name\":\"owner\",\"type\":\"address\"}],\"name\":\"ERC721IncorrectOwner\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"operator\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"tokenId\",\"type\":\"uint256\"}],\"name\":\"ERC721InsufficientApproval\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"approver\",\"type\":\"address\"}],\"name\":\"ERC721InvalidApprover\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"operator\",\"type\":\"address\"}],\"name\":\"ERC721InvalidOperator\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"owner\",\"type\":\"address\"}],\"name\":\"ERC721InvalidOwner\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"receiver\",\"type\":\"address\"}],\"name\":\"ERC721InvalidReceiver\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"sender\",\"type\":\"address\"}],\"name\":\"ERC721InvalidSender\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"tokenId\",\"type\":\"uint256\"}],\"name\":\"ERC721NonexistentToken\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"FailedCall\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"balance\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"needed\",\"type\":\"uint256\"}],\"name\":\"InsufficientBalance\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"owner\",\"type\":\"address\"}],\"name\":\"OwnableInvalidOwner\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"account\",\"type\":\"address\"}],\"name\":\"OwnableUnauthorizedAccount\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"x\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"y\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"denominator\",\"type\":\"uint256\"}],\"name\":\"PRBMath_MulDiv_Overflow\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"collateralToReturn\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"loanCollateral\",\"type\":\"uint256\"}],\"name\":\"REVLoans_CollateralExceedsLoan\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"prepaidFeePercent\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"min\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"max\",\"type\":\"uint256\"}],\"name\":\"REVLoans_InvalidPrepaidFeePercent\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"timeSinceLoanCreated\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"loanLiquidationDuration\",\"type\":\"uint256\"}],\"name\":\"REVLoans_LoanExpired\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"newBorrowAmount\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"loanAmount\",\"type\":\"uint256\"}],\"name\":\"REVLoans_NewBorrowAmountGreaterThanLoanAmount\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"REVLoans_NoMsgValueAllowed\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"REVLoans_NotEnoughCollateral\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"maxRepayBorrowAmount\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"repayBorrowAmount\",\"type\":\"uint256\"}],\"name\":\"REVLoans_OverMaxRepayBorrowAmount\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"value\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"limit\",\"type\":\"uint256\"}],\"name\":\"REVLoans_OverflowAlert\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"allowanceAmount\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"requiredAmount\",\"type\":\"uint256\"}],\"name\":\"REVLoans_PermitAllowanceNotEnough\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"newBorrowAmount\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"loanAmount\",\"type\":\"uint256\"}],\"name\":\"REVLoans_ReallocatingMoreCollateralThanBorrowedAmountAllows\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"revnetOwner\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"revnets\",\"type\":\"address\"}],\"name\":\"REVLoans_RevnetsMismatch\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"caller\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"owner\",\"type\":\"address\"}],\"name\":\"REVLoans_Unauthorized\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"minBorrowAmount\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"borrowAmount\",\"type\":\"uint256\"}],\"name\":\"REVLoans_UnderMinBorrowAmount\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"REVLoans_ZeroCollateralLoanIsInvalid\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"token\",\"type\":\"address\"}],\"name\":\"SafeERC20FailedOperation\",\"type\":\"error\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"owner\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"approved\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"uint256\",\"name\":\"tokenId\",\"type\":\"uint256\"}],\"name\":\"Approval\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"owner\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"operator\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"bool\",\"name\":\"approved\",\"type\":\"bool\"}],\"name\":\"ApprovalForAll\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"uint256\",\"name\":\"loanId\",\"type\":\"uint256\"},{\"indexed\":true,\"internalType\":\"uint256\",\"name\":\"revnetId\",\"type\":\"uint256\"},{\"components\":[{\"internalType\":\"uint112\",\"name\":\"amount\",\"type\":\"uint112\"},{\"internalType\":\"uint112\",\"name\":\"collateral\",\"type\":\"uint112\"},{\"internalType\":\"uint48\",\"name\":\"createdAt\",\"type\":\"uint48\"},{\"internalType\":\"uint16\",\"name\":\"prepaidFeePercent\",\"type\":\"uint16\"},{\"internalType\":\"uint32\",\"name\":\"prepaidDuration\",\"type\":\"uint32\"},{\"components\":[{\"internalType\":\"address\",\"name\":\"token\",\"type\":\"address\"},{\"internalType\":\"contract IJBPayoutTerminal\",\"name\":\"terminal\",\"type\":\"address\"}],\"internalType\":\"struct REVLoanSource\",\"name\":\"source\",\"type\":\"tuple\"}],\"indexed\":false,\"internalType\":\"struct REVLoan\",\"name\":\"loan\",\"type\":\"tuple\"},{\"components\":[{\"internalType\":\"address\",\"name\":\"token\",\"type\":\"address\"},{\"internalType\":\"contract IJBPayoutTerminal\",\"name\":\"terminal\",\"type\":\"address\"}],\"indexed\":false,\"internalType\":\"struct REVLoanSource\",\"name\":\"source\",\"type\":\"tuple\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"borrowAmount\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"collateralCount\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"sourceFeeAmount\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"address payable\",\"name\":\"beneficiary\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"address\",\"name\":\"caller\",\"type\":\"address\"}],\"name\":\"Borrow\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"uint256\",\"name\":\"loanId\",\"type\":\"uint256\"},{\"indexed\":true,\"internalType\":\"uint256\",\"name\":\"revnetId\",\"type\":\"uint256\"},{\"components\":[{\"internalType\":\"uint112\",\"name\":\"amount\",\"type\":\"uint112\"},{\"internalType\":\"uint112\",\"name\":\"collateral\",\"type\":\"uint112\"},{\"internalType\":\"uint48\",\"name\":\"createdAt\",\"type\":\"uint48\"},{\"internalType\":\"uint16\",\"name\":\"prepaidFeePercent\",\"type\":\"uint16\"},{\"internalType\":\"uint32\",\"name\":\"prepaidDuration\",\"type\":\"uint32\"},{\"components\":[{\"internalType\":\"address\",\"name\":\"token\",\"type\":\"address\"},{\"internalType\":\"contract IJBPayoutTerminal\",\"name\":\"terminal\",\"type\":\"address\"}],\"internalType\":\"struct REVLoanSource\",\"name\":\"source\",\"type\":\"tuple\"}],\"indexed\":false,\"internalType\":\"struct REVLoan\",\"name\":\"loan\",\"type\":\"tuple\"},{\"indexed\":false,\"internalType\":\"address\",\"name\":\"caller\",\"type\":\"address\"}],\"name\":\"Liquidate\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"previousOwner\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"newOwner\",\"type\":\"address\"}],\"name\":\"OwnershipTransferred\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"uint256\",\"name\":\"loanId\",\"type\":\"uint256\"},{\"indexed\":true,\"internalType\":\"uint256\",\"name\":\"revnetId\",\"type\":\"uint256\"},{\"indexed\":true,\"internalType\":\"uint256\",\"name\":\"reallocatedLoanId\",\"type\":\"uint256\"},{\"components\":[{\"internalType\":\"uint112\",\"name\":\"amount\",\"type\":\"uint112\"},{\"internalType\":\"uint112\",\"name\":\"collateral\",\"type\":\"uint112\"},{\"internalType\":\"uint48\",\"name\":\"createdAt\",\"type\":\"uint48\"},{\"internalType\":\"uint16\",\"name\":\"prepaidFeePercent\",\"type\":\"uint16\"},{\"internalType\":\"uint32\",\"name\":\"prepaidDuration\",\"type\":\"uint32\"},{\"components\":[{\"internalType\":\"address\",\"name\":\"token\",\"type\":\"address\"},{\"internalType\":\"contract IJBPayoutTerminal\",\"name\":\"terminal\",\"type\":\"address\"}],\"internalType\":\"struct REVLoanSource\",\"name\":\"source\",\"type\":\"tuple\"}],\"indexed\":false,\"internalType\":\"struct REVLoan\",\"name\":\"reallocatedLoan\",\"type\":\"tuple\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"removedcollateralCount\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"address\",\"name\":\"caller\",\"type\":\"address\"}],\"name\":\"ReallocateCollateral\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"uint256\",\"name\":\"loanId\",\"type\":\"uint256\"},{\"indexed\":true,\"internalType\":\"uint256\",\"name\":\"revnetId\",\"type\":\"uint256\"},{\"indexed\":true,\"internalType\":\"uint256\",\"name\":\"paidOffLoanId\",\"type\":\"uint256\"},{\"components\":[{\"internalType\":\"uint112\",\"name\":\"amount\",\"type\":\"uint112\"},{\"internalType\":\"uint112\",\"name\":\"collateral\",\"type\":\"uint112\"},{\"internalType\":\"uint48\",\"name\":\"createdAt\",\"type\":\"uint48\"},{\"internalType\":\"uint16\",\"name\":\"prepaidFeePercent\",\"type\":\"uint16\"},{\"internalType\":\"uint32\",\"name\":\"prepaidDuration\",\"type\":\"uint32\"},{\"components\":[{\"internalType\":\"address\",\"name\":\"token\",\"type\":\"address\"},{\"internalType\":\"contract IJBPayoutTerminal\",\"name\":\"terminal\",\"type\":\"address\"}],\"internalType\":\"struct REVLoanSource\",\"name\":\"source\",\"type\":\"tuple\"}],\"indexed\":false,\"internalType\":\"struct REVLoan\",\"name\":\"loan\",\"type\":\"tuple\"},{\"components\":[{\"internalType\":\"uint112\",\"name\":\"amount\",\"type\":\"uint112\"},{\"internalType\":\"uint112\",\"name\":\"collateral\",\"type\":\"uint112\"},{\"internalType\":\"uint48\",\"name\":\"createdAt\",\"type\":\"uint48\"},{\"internalType\":\"uint16\",\"name\":\"prepaidFeePercent\",\"type\":\"uint16\"},{\"internalType\":\"uint32\",\"name\":\"prepaidDuration\",\"type\":\"uint32\"},{\"components\":[{\"internalType\":\"address\",\"name\":\"token\",\"type\":\"address\"},{\"internalType\":\"contract IJBPayoutTerminal\",\"name\":\"terminal\",\"type\":\"address\"}],\"internalType\":\"struct REVLoanSource\",\"name\":\"source\",\"type\":\"tuple\"}],\"indexed\":false,\"internalType\":\"struct REVLoan\",\"name\":\"paidOffLoan\",\"type\":\"tuple\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"repayBorrowAmount\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"sourceFeeAmount\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"collateralCountToReturn\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"address payable\",\"name\":\"beneficiary\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"address\",\"name\":\"caller\",\"type\":\"address\"}],\"name\":\"RepayLoan\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"contract IJBTokenUriResolver\",\"name\":\"resolver\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"address\",\"name\":\"caller\",\"type\":\"address\"}],\"name\":\"SetTokenUriResolver\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"from\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"uint256\",\"name\":\"tokenId\",\"type\":\"uint256\"}],\"name\":\"Transfer\",\"type\":\"event\"},{\"inputs\":[],\"stateMutability\":\"payable\",\"type\":\"fallback\"},{\"inputs\":[],\"name\":\"CONTROLLER\",\"outputs\":[{\"internalType\":\"contract IJBController\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"DIRECTORY\",\"outputs\":[{\"internalType\":\"contract IJBDirectory\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"LOAN_LIQUIDATION_DURATION\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"MAX_PREPAID_FEE_PERCENT\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"MIN_PREPAID_FEE_PERCENT\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"PERMIT2\",\"outputs\":[{\"internalType\":\"contract IPermit2\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"PRICES\",\"outputs\":[{\"internalType\":\"contract IJBPrices\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"PROJECTS\",\"outputs\":[{\"internalType\":\"contract IJBProjects\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"REVNETS\",\"outputs\":[{\"internalType\":\"contract IREVDeployer\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"REV_ID\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"REV_PREPAID_FEE_PERCENT\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"tokenId\",\"type\":\"uint256\"}],\"name\":\"approve\",\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"owner\",\"type\":\"address\"}],\"name\":\"balanceOf\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"revnetId\",\"type\":\"uint256\"},{\"components\":[{\"internalType\":\"address\",\"name\":\"token\",\"type\":\"address\"},{\"internalType\":\"contract IJBPayoutTerminal\",\"name\":\"terminal\",\"type\":\"address\"}],\"internalType\":\"struct REVLoanSource\",\"name\":\"source\",\"type\":\"tuple\"},{\"internalType\":\"uint256\",\"name\":\"minBorrowAmount\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"collateralCount\",\"type\":\"uint256\"},{\"internalType\":\"address payable\",\"name\":\"beneficiary\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"prepaidFeePercent\",\"type\":\"uint256\"}],\"name\":\"borrowFrom\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"loanId\",\"type\":\"uint256\"},{\"components\":[{\"internalType\":\"uint112\",\"name\":\"amount\",\"type\":\"uint112\"},{\"internalType\":\"uint112\",\"name\":\"collateral\",\"type\":\"uint112\"},{\"internalType\":\"uint48\",\"name\":\"createdAt\",\"type\":\"uint48\"},{\"internalType\":\"uint16\",\"name\":\"prepaidFeePercent\",\"type\":\"uint16\"},{\"internalType\":\"uint32\",\"name\":\"prepaidDuration\",\"type\":\"uint32\"},{\"components\":[{\"internalType\":\"address\",\"name\":\"token\",\"type\":\"address\"},{\"internalType\":\"contract IJBPayoutTerminal\",\"name\":\"terminal\",\"type\":\"address\"}],\"internalType\":\"struct REVLoanSource\",\"name\":\"source\",\"type\":\"tuple\"}],\"internalType\":\"struct REVLoan\",\"name\":\"\",\"type\":\"tuple\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"revnetId\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"collateralCount\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"decimals\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"currency\",\"type\":\"uint256\"}],\"name\":\"borrowableAmountFrom\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"components\":[{\"internalType\":\"uint112\",\"name\":\"amount\",\"type\":\"uint112\"},{\"internalType\":\"uint112\",\"name\":\"collateral\",\"type\":\"uint112\"},{\"internalType\":\"uint48\",\"name\":\"createdAt\",\"type\":\"uint48\"},{\"internalType\":\"uint16\",\"name\":\"prepaidFeePercent\",\"type\":\"uint16\"},{\"internalType\":\"uint32\",\"name\":\"prepaidDuration\",\"type\":\"uint32\"},{\"components\":[{\"internalType\":\"address\",\"name\":\"token\",\"type\":\"address\"},{\"internalType\":\"contract IJBPayoutTerminal\",\"name\":\"terminal\",\"type\":\"address\"}],\"internalType\":\"struct REVLoanSource\",\"name\":\"source\",\"type\":\"tuple\"}],\"internalType\":\"struct REVLoan\",\"name\":\"loan\",\"type\":\"tuple\"},{\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"}],\"name\":\"determineSourceFeeAmount\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"tokenId\",\"type\":\"uint256\"}],\"name\":\"getApproved\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"owner\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"operator\",\"type\":\"address\"}],\"name\":\"isApprovedForAll\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"revnetId\",\"type\":\"uint256\"},{\"internalType\":\"contract IJBPayoutTerminal\",\"name\":\"terminal\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"token\",\"type\":\"address\"}],\"name\":\"isLoanSourceOf\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"forwarder\",\"type\":\"address\"}],\"name\":\"isTrustedForwarder\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"revnetId\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"startingLoanId\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"count\",\"type\":\"uint256\"}],\"name\":\"liquidateExpiredLoansFrom\",\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"loanId\",\"type\":\"uint256\"}],\"name\":\"loanOf\",\"outputs\":[{\"components\":[{\"internalType\":\"uint112\",\"name\":\"amount\",\"type\":\"uint112\"},{\"internalType\":\"uint112\",\"name\":\"collateral\",\"type\":\"uint112\"},{\"internalType\":\"uint48\",\"name\":\"createdAt\",\"type\":\"uint48\"},{\"internalType\":\"uint16\",\"name\":\"prepaidFeePercent\",\"type\":\"uint16\"},{\"internalType\":\"uint32\",\"name\":\"prepaidDuration\",\"type\":\"uint32\"},{\"components\":[{\"internalType\":\"address\",\"name\":\"token\",\"type\":\"address\"},{\"internalType\":\"contract IJBPayoutTerminal\",\"name\":\"terminal\",\"type\":\"address\"}],\"internalType\":\"struct REVLoanSource\",\"name\":\"source\",\"type\":\"tuple\"}],\"internalType\":\"struct REVLoan\",\"name\":\"\",\"type\":\"tuple\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"revnetId\",\"type\":\"uint256\"}],\"name\":\"loanSourcesOf\",\"outputs\":[{\"components\":[{\"internalType\":\"address\",\"name\":\"token\",\"type\":\"address\"},{\"internalType\":\"contract IJBPayoutTerminal\",\"name\":\"terminal\",\"type\":\"address\"}],\"internalType\":\"struct REVLoanSource[]\",\"name\":\"\",\"type\":\"tuple[]\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"name\",\"outputs\":[{\"internalType\":\"string\",\"name\":\"\",\"type\":\"string\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"revnetId\",\"type\":\"uint256\"}],\"name\":\"numberOfLoansFor\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"owner\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"tokenId\",\"type\":\"uint256\"}],\"name\":\"ownerOf\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"loanId\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"collateralCountToTransfer\",\"type\":\"uint256\"},{\"components\":[{\"internalType\":\"address\",\"name\":\"token\",\"type\":\"address\"},{\"internalType\":\"contract IJBPayoutTerminal\",\"name\":\"terminal\",\"type\":\"address\"}],\"internalType\":\"struct REVLoanSource\",\"name\":\"source\",\"type\":\"tuple\"},{\"internalType\":\"uint256\",\"name\":\"minBorrowAmount\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"collateralCountToAdd\",\"type\":\"uint256\"},{\"internalType\":\"address payable\",\"name\":\"beneficiary\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"prepaidFeePercent\",\"type\":\"uint256\"}],\"name\":\"reallocateCollateralFromLoan\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"reallocatedLoanId\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"newLoanId\",\"type\":\"uint256\"},{\"components\":[{\"internalType\":\"uint112\",\"name\":\"amount\",\"type\":\"uint112\"},{\"internalType\":\"uint112\",\"name\":\"collateral\",\"type\":\"uint112\"},{\"internalType\":\"uint48\",\"name\":\"createdAt\",\"type\":\"uint48\"},{\"internalType\":\"uint16\",\"name\":\"prepaidFeePercent\",\"type\":\"uint16\"},{\"internalType\":\"uint32\",\"name\":\"prepaidDuration\",\"type\":\"uint32\"},{\"components\":[{\"internalType\":\"address\",\"name\":\"token\",\"type\":\"address\"},{\"internalType\":\"contract IJBPayoutTerminal\",\"name\":\"terminal\",\"type\":\"address\"}],\"internalType\":\"struct REVLoanSource\",\"name\":\"source\",\"type\":\"tuple\"}],\"internalType\":\"struct REVLoan\",\"name\":\"reallocatedLoan\",\"type\":\"tuple\"},{\"components\":[{\"internalType\":\"uint112\",\"name\":\"amount\",\"type\":\"uint112\"},{\"internalType\":\"uint112\",\"name\":\"collateral\",\"type\":\"uint112\"},{\"internalType\":\"uint48\",\"name\":\"createdAt\",\"type\":\"uint48\"},{\"internalType\":\"uint16\",\"name\":\"prepaidFeePercent\",\"type\":\"uint16\"},{\"internalType\":\"uint32\",\"name\":\"prepaidDuration\",\"type\":\"uint32\"},{\"components\":[{\"internalType\":\"address\",\"name\":\"token\",\"type\":\"address\"},{\"internalType\":\"contract IJBPayoutTerminal\",\"name\":\"terminal\",\"type\":\"address\"}],\"internalType\":\"struct REVLoanSource\",\"name\":\"source\",\"type\":\"tuple\"}],\"internalType\":\"struct REVLoan\",\"name\":\"newLoan\",\"type\":\"tuple\"}],\"stateMutability\":\"payable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"renounceOwnership\",\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"loanId\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"maxRepayBorrowAmount\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"collateralCountToReturn\",\"type\":\"uint256\"},{\"internalType\":\"address payable\",\"name\":\"beneficiary\",\"type\":\"address\"},{\"components\":[{\"internalType\":\"uint256\",\"name\":\"sigDeadline\",\"type\":\"uint256\"},{\"internalType\":\"uint160\",\"name\":\"amount\",\"type\":\"uint160\"},{\"internalType\":\"uint48\",\"name\":\"expiration\",\"type\":\"uint48\"},{\"internalType\":\"uint48\",\"name\":\"nonce\",\"type\":\"uint48\"},{\"internalType\":\"bytes\",\"name\":\"signature\",\"type\":\"bytes\"}],\"internalType\":\"struct JBSingleAllowance\",\"name\":\"allowance\",\"type\":\"tuple\"}],\"name\":\"repayLoan\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"paidOffLoanId\",\"type\":\"uint256\"},{\"components\":[{\"internalType\":\"uint112\",\"name\":\"amount\",\"type\":\"uint112\"},{\"internalType\":\"uint112\",\"name\":\"collateral\",\"type\":\"uint112\"},{\"internalType\":\"uint48\",\"name\":\"createdAt\",\"type\":\"uint48\"},{\"internalType\":\"uint16\",\"name\":\"prepaidFeePercent\",\"type\":\"uint16\"},{\"internalType\":\"uint32\",\"name\":\"prepaidDuration\",\"type\":\"uint32\"},{\"components\":[{\"internalType\":\"address\",\"name\":\"token\",\"type\":\"address\"},{\"internalType\":\"contract IJBPayoutTerminal\",\"name\":\"terminal\",\"type\":\"address\"}],\"internalType\":\"struct REVLoanSource\",\"name\":\"source\",\"type\":\"tuple\"}],\"internalType\":\"struct REVLoan\",\"name\":\"paidOffloan\",\"type\":\"tuple\"}],\"stateMutability\":\"payable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"loanId\",\"type\":\"uint256\"}],\"name\":\"revnetIdOfLoanWith\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"pure\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"from\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"tokenId\",\"type\":\"uint256\"}],\"name\":\"safeTransferFrom\",\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"from\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"tokenId\",\"type\":\"uint256\"},{\"internalType\":\"bytes\",\"name\":\"data\",\"type\":\"bytes\"}],\"name\":\"safeTransferFrom\",\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"operator\",\"type\":\"address\"},{\"internalType\":\"bool\",\"name\":\"approved\",\"type\":\"bool\"}],\"name\":\"setApprovalForAll\",\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"contract IJBTokenUriResolver\",\"name\":\"resolver\",\"type\":\"address\"}],\"name\":\"setTokenUriResolver\",\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes4\",\"name\":\"interfaceId\",\"type\":\"bytes4\"}],\"name\":\"supportsInterface\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"symbol\",\"outputs\":[{\"internalType\":\"string\",\"name\":\"\",\"type\":\"string\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"loanId\",\"type\":\"uint256\"}],\"name\":\"tokenURI\",\"outputs\":[{\"internalType\":\"string\",\"name\":\"\",\"type\":\"string\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"tokenUriResolver\",\"outputs\":[{\"internalType\":\"contract IJBTokenUriResolver\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"revnetId\",\"type\":\"uint256\"},{\"internalType\":\"contract IJBPayoutTerminal\",\"name\":\"terminal\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"token\",\"type\":\"address\"}],\"name\":\"totalBorrowedFrom\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"revnetId\",\"type\":\"uint256\"}],\"name\":\"totalCollateralOf\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"from\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"tokenId\",\"type\":\"uint256\"}],\"name\":\"transferFrom\",\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"newOwner\",\"type\":\"address\"}],\"name\":\"transferOwnership\",\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"trustedForwarder\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"stateMutability\":\"payable\",\"type\":\"receive\"}],\"devdoc\":{\"kind\":\"dev\",\"methods\":{\"approve(address,uint256)\":{\"details\":\"See {IERC721-approve}.\"},\"balanceOf(address)\":{\"details\":\"See {IERC721-balanceOf}.\"},\"borrowFrom(uint256,(address,address),uint256,uint256,address,uint256)\":{\"params\":{\"beneficiary\":\"The address that'll receive the borrowed funds and the tokens resulting from fee payments.\",\"collateralCount\":\"The amount of tokens to use as collateral for the loan.\",\"minBorrowAmount\":\"The minimum amount being borrowed, denominated in the token of the source's accounting context.\",\"prepaidFeePercent\":\"The fee percent that will be charged upfront from the revnet being borrowed from. Prepaying a fee is cheaper than paying later.\",\"revnetId\":\"The ID of the revnet being borrowed from.\",\"source\":\"The source of the loan being borrowed.\"},\"returns\":{\"_1\":\"loan The loan created from borrowing.\",\"loanId\":\"The ID of the loan created from borrowing.\"}},\"borrowableAmountFrom(uint256,uint256,uint256,uint256)\":{\"params\":{\"collateralCount\":\"The amount of collateral used to secure the loan.\",\"currency\":\"The currency that the resulting amount should be in terms of.\",\"decimals\":\"The decimals the resulting fixed point value will include.\",\"revnetId\":\"The ID of the revnet to check for borrowable assets from.\"},\"returns\":{\"_0\":\"borrowableAmount The amount that can be borrowed from the revnet.\"}},\"constructor\":{\"params\":{\"owner\":\"The owner of the contract that can set the URI resolver.\",\"permit2\":\"A permit2 utility.\",\"revId\":\"The ID of the REV revnet that will receive the fees.\",\"revnets\":\"A contract from which revnets using this loans contract are deployed.\",\"trustedForwarder\":\"A trusted forwarder of transactions to this contract.\"}},\"determineSourceFeeAmount((uint112,uint112,uint48,uint16,uint32,(address,address)),uint256)\":{\"params\":{\"amount\":\"The amount being paid off.\",\"loan\":\"The loan having its source fee amount determined.\"},\"returns\":{\"_0\":\"sourceFeeAmount The source fee amount for the loan.\"}},\"getApproved(uint256)\":{\"details\":\"See {IERC721-getApproved}.\"},\"isApprovedForAll(address,address)\":{\"details\":\"See {IERC721-isApprovedForAll}.\"},\"isTrustedForwarder(address)\":{\"details\":\"Indicates whether any particular address is the trusted forwarder.\"},\"liquidateExpiredLoansFrom(uint256,uint256,uint256)\":{\"details\":\"Since some loans may be reallocated or paid off, loans within startingLoanId and startingLoanId + count may be skipped, so choose these parameters carefully to avoid extra gas usage.\",\"params\":{\"count\":\"The amount of loans iterate over since the last liquidated loan.\",\"revnetId\":\"The ID of the revnet to liquidate loans from.\",\"startingLoanId\":\"The ID of the loan to start iterating from.\"}},\"loanOf(uint256)\":{\"custom:member\":\"The ID of the loan.\"},\"loanSourcesOf(uint256)\":{\"custom:member\":\"revnetId The ID of the revnet issuing the loan.\"},\"name()\":{\"details\":\"See {IERC721Metadata-name}.\"},\"owner()\":{\"details\":\"Returns the address of the current owner.\"},\"ownerOf(uint256)\":{\"details\":\"See {IERC721-ownerOf}.\"},\"reallocateCollateralFromLoan(uint256,uint256,(address,address),uint256,uint256,address,uint256)\":{\"details\":\"Useful if a loan's collateral has gone up in value since the loan was created.Refinancing a loan will burn the original and create two new loans.\",\"params\":{\"beneficiary\":\"The address that'll receive the borrowed funds and the tokens resulting from fee payments.\",\"collateralCountToAdd\":\"The amount of collateral to add to the loan.\",\"collateralCountToTransfer\":\"The amount of collateral to transfer from the original loan.\",\"loanId\":\"The ID of the loan to reallocate collateral from.\",\"minBorrowAmount\":\"The minimum amount being borrowed, denominated in the token of the source's accounting context.\",\"prepaidFeePercent\":\"The fee percent that will be charged upfront from the revnet being borrowed from.\",\"source\":\"The source of the loan to create.\"},\"returns\":{\"newLoan\":\"The new loan created from reallocating collateral.\",\"newLoanId\":\"The ID of the new loan.\",\"reallocatedLoan\":\"The loan being reallocated.\",\"reallocatedLoanId\":\"The ID of the loan being reallocated.\"}},\"renounceOwnership()\":{\"details\":\"Leaves the contract without owner. It will not be possible to call `onlyOwner` functions. Can only be called by the current owner. NOTE: Renouncing ownership will leave the contract without an owner, thereby disabling any functionality that is only available to the owner.\"},\"repayLoan(uint256,uint256,uint256,address,(uint256,uint160,uint48,uint48,bytes))\":{\"params\":{\"allowance\":\"An allowance to faciliate permit2 interactions.\",\"beneficiary\":\"The address receiving the returned collateral and any tokens resulting from paying fees.\",\"collateralCountToReturn\":\"The amount of collateral being returned from the loan.\",\"loanId\":\"The ID of the loan being adjusted.\",\"maxRepayBorrowAmount\":\"The maximum amount being paid off, denominated in the token of the source's accounting context.\"},\"returns\":{\"paidOffLoanId\":\"The ID of the loan after it's been paid off.\",\"paidOffloan\":\"The loan after it's been paid off.\"}},\"revnetIdOfLoanWith(uint256)\":{\"params\":{\"loanId\":\"The loan ID of the loan to get the revent ID of.\"},\"returns\":{\"_0\":\"The ID of the revnet.\"}},\"safeTransferFrom(address,address,uint256)\":{\"details\":\"See {IERC721-safeTransferFrom}.\"},\"safeTransferFrom(address,address,uint256,bytes)\":{\"details\":\"See {IERC721-safeTransferFrom}.\"},\"setApprovalForAll(address,bool)\":{\"details\":\"See {IERC721-setApprovalForAll}.\"},\"setTokenUriResolver(address)\":{\"params\":{\"resolver\":\"The address of the new resolver.\"}},\"supportsInterface(bytes4)\":{\"details\":\"See {IERC165-supportsInterface}.\"},\"symbol()\":{\"details\":\"See {IERC721Metadata-symbol}.\"},\"tokenURI(uint256)\":{\"params\":{\"loanId\":\"The ID of the loan to get a URI of.\"},\"returns\":{\"_0\":\"The token URI to use for the provided `loanId`.\"}},\"transferFrom(address,address,uint256)\":{\"details\":\"See {IERC721-transferFrom}.\"},\"transferOwnership(address)\":{\"details\":\"Transfers ownership of the contract to a new account (`newOwner`). Can only be called by the current owner.\"},\"trustedForwarder()\":{\"details\":\"Returns the address of the trusted forwarder.\"}},\"version\":1},\"userdoc\":{\"kind\":\"user\",\"methods\":{\"CONTROLLER()\":{\"notice\":\"The controller of revnets that use this loans contract.\"},\"DIRECTORY()\":{\"notice\":\"The directory of terminals and controllers for revnets.\"},\"PERMIT2()\":{\"notice\":\"The permit2 utility.\"},\"PRICES()\":{\"notice\":\"A contract that stores prices for each revnet.\"},\"PROJECTS()\":{\"notice\":\"Mints ERC-721s that represent revnet ownership and transfers.\"},\"REVNETS()\":{\"notice\":\"Mints ERC-721s that represent project ownership and transfers.\"},\"REV_ID()\":{\"notice\":\"The ID of the REV revnet that will receive the fees.\"},\"borrowFrom(uint256,(address,address),uint256,uint256,address,uint256)\":{\"notice\":\"Open a loan by borrowing from a revnet.\"},\"borrowableAmountFrom(uint256,uint256,uint256,uint256)\":{\"notice\":\"The amount that can be borrowed from a revnet.\"},\"determineSourceFeeAmount((uint112,uint112,uint48,uint16,uint32,(address,address)),uint256)\":{\"notice\":\"Determines the source fee amount for a loan being paid off a certain amount.\"},\"isLoanSourceOf(uint256,address,address)\":{\"notice\":\"An indication if a revnet currently has outstanding loans from the specified terminal in the specified token.\"},\"liquidateExpiredLoansFrom(uint256,uint256,uint256)\":{\"notice\":\"Cleans up any liquiditated loans.\"},\"loanOf(uint256)\":{\"notice\":\"Get a loan.\"},\"loanSourcesOf(uint256)\":{\"notice\":\"The sources of each revnet's loan.\"},\"numberOfLoansFor(uint256)\":{\"notice\":\"The amount of loans that have been created.\"},\"reallocateCollateralFromLoan(uint256,uint256,(address,address),uint256,uint256,address,uint256)\":{\"notice\":\"Refinances a loan by transferring extra collateral from an existing loan to a new loan.\"},\"repayLoan(uint256,uint256,uint256,address,(uint256,uint160,uint48,uint48,bytes))\":{\"notice\":\"Allows the owner of a loan to pay it back or receive returned collateral no longer necessary to support the loan.\"},\"revnetIdOfLoanWith(uint256)\":{\"notice\":\"The revnet ID for the loan with the provided loan ID.\"},\"setTokenUriResolver(address)\":{\"notice\":\"Sets the address of the resolver used to retrieve the tokenURI of loans.\"},\"tokenURI(uint256)\":{\"notice\":\"Returns the URI where the ERC-721 standard JSON of a loan is hosted.\"},\"tokenUriResolver()\":{\"notice\":\"The contract resolving each project ID to its ERC721 URI.\"},\"totalBorrowedFrom(uint256,address,address)\":{\"notice\":\"The total amount loaned out by a revnet from a specified terminal in a specified token.\"},\"totalCollateralOf(uint256)\":{\"notice\":\"The total amount of collateral supporting a revnet's loans.\"}},\"version\":1}},\"settings\":{\"compilationTarget\":{\"src/REVLoans.sol\":\"REVLoans\"},\"evmVersion\":\"shanghai\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\"},\"optimizer\":{\"enabled\":true,\"runs\":150},\"remappings\":[\"@arbitrum/=node_modules/@arbitrum/\",\"@bananapus/=node_modules/@bananapus/\",\"@chainlink/=node_modules/@chainlink/\",\"@croptop/=node_modules/@croptop/\",\"@eth-optimism/=node_modules/@eth-optimism/\",\"@exhausted-pigeon/=node_modules/@exhausted-pigeon/\",\"@offchainlabs/=node_modules/@offchainlabs/\",\"@openzeppelin/=node_modules/@openzeppelin/\",\"@prb/=node_modules/@prb/\",\"@scroll-tech/=node_modules/@scroll-tech/\",\"@sphinx-labs/contracts/=node_modules/@sphinx-labs/contracts/contracts/foundry/\",\"@uniswap/=node_modules/@uniswap/\",\"@zksync/=node_modules/@zksync/\",\"base64-sol/=node_modules/base64-sol/\",\"forge-std/=lib/forge-std/src/\",\"hardhat/=node_modules/hardhat/\",\"solady/=node_modules/solady/\",\"solmate/=node_modules/solmate/\",\"sphinx/=lib/sphinx/packages/contracts/contracts/forge-std/src/\"]},\"sources\":{\"node_modules/@bananapus/721-hook-v5/src/interfaces/IJB721Hook.sol\":{\"keccak256\":\"0x1e7b684c86c0f44b0b680c7aba9e511c89892bc0638424722920368911a087f2\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://96995e70a8f15d5600b509ad689c8f2ea6f8116cc7cce9c529b7a41c12c854dc\",\"dweb:/ipfs/QmaAARj3BDSQNsPwkFxauDpWBNgb4kYdzo19tUNdBbc6cX\"]},\"node_modules/@bananapus/721-hook-v5/src/interfaces/IJB721TiersHook.sol\":{\"keccak256\":\"0x107f91c5a0674717684d75e0c71106dd1d2937c0089366c7bb555be7fffdd6b2\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://3ce29d75e454845d0636e671c60c7a691e4a77d1c88fe17dbc435945890465b1\",\"dweb:/ipfs/QmewJn8HeiqKggWA8scLUbwv1TMiit8Va8A5A3K7N9Euss\"]},\"node_modules/@bananapus/721-hook-v5/src/interfaces/IJB721TiersHookDeployer.sol\":{\"keccak256\":\"0x8dfdc8e1182e6ea80806e62c2e216fea1da3f6166d764134e243a5372ef05f02\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://9b53d7bd32017f23fb633903004fc476bb8ba166d90c4ae08ccb6ce7f2941adc\",\"dweb:/ipfs/QmeUu6tW6FA6b61DMgBTyRFZM8duae7J7rLyz4x9GZFAbn\"]},\"node_modules/@bananapus/721-hook-v5/src/interfaces/IJB721TiersHookStore.sol\":{\"keccak256\":\"0x01d419bf6b9dce2ab162f8aac82f0e4a6d948f53819a42ed023e8f23e358c9c2\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://0e0b14b2ae2032bd256614522078cf0f831c35d1f64d1ea2050227117d08c060\",\"dweb:/ipfs/QmP1xbw5597GDvNVgT5Te6w8LBqeXHq4x6HeXYmqLqw2RC\"]},\"node_modules/@bananapus/721-hook-v5/src/interfaces/IJB721TokenUriResolver.sol\":{\"keccak256\":\"0xfa599167098f4459320ec4141a98a17b2dfffbce422baa27d8b4e4530f61ece1\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://8b758b161f4c7b520b2c34b4d91e585e961b8f4ca278eebb91d791f7f2f45140\",\"dweb:/ipfs/QmcD9DF7NJ9QykQpT4KPzm4bs3fkjzukdAUWwdU6Atfw85\"]},\"node_modules/@bananapus/721-hook-v5/src/structs/JB721InitTiersConfig.sol\":{\"keccak256\":\"0xfe7147d09467fd8f9b755d2a1485f22bb4a8797acd0e97623258498ddac2e441\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://9ee21464af9e6c78f580c6920757017cdfbd276728773338a67660fedfea0fd2\",\"dweb:/ipfs/QmVYviC7uQ7rEvdpzD6U4BN19P5f8uMuC7jWffzQWvuFcu\"]},\"node_modules/@bananapus/721-hook-v5/src/structs/JB721Tier.sol\":{\"keccak256\":\"0x99232aa73d5715977332dc7c93b03552a93259e59ae00e86b4ddc200f06adaf1\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://721c0cf10a29fa11677718faafb3a2ecfcb4fbe4e1c09e70a7fac681c80fcc94\",\"dweb:/ipfs/QmSUR77E9PqnpB5kBcKNz2CGBjG9XL9FH57RWVYu3Q7GMR\"]},\"node_modules/@bananapus/721-hook-v5/src/structs/JB721TierConfig.sol\":{\"keccak256\":\"0x86e54a0de4deab9d105bf276586aebe256188b193e83eb7a6f6f93e4a29ae9c5\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://04bfcc07d452c26dfc50d3a5eb62df4b3b81e063defd752e0aa5ed049a78eef4\",\"dweb:/ipfs/QmWd5nJHUvZPHxJXkrYCboXaqdtiWWkQG26sNM6qkJuAgD\"]},\"node_modules/@bananapus/721-hook-v5/src/structs/JB721TiersHookFlags.sol\":{\"keccak256\":\"0x283d8429f31bd58875c056515aa42abd09c95362bd929e85cfc44a0d92585766\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://9a580b89fe99d9f8e930c58a4d0d63a5ff7c01c79d210af01373d066c9e72ed6\",\"dweb:/ipfs/QmdY1eSGSoTjv4KSdsG4Tm5CzJN6iqk3qTRga5ZWNbejRz\"]},\"node_modules/@bananapus/721-hook-v5/src/structs/JB721TiersMintReservesConfig.sol\":{\"keccak256\":\"0x86fe586a05e6d4bc6fab9b68996a7f4b74c5362ca6f24b9d8057ed7e4cd1c5ac\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://0915f17d1f958ab1fe6b214d99ed62f1f858684898c803f1a8a6a557472dd140\",\"dweb:/ipfs/QmUhdnSV8UzkgvbtkYEKHrpyDEmc2aJxW5HQ1gucuxxu5A\"]},\"node_modules/@bananapus/721-hook-v5/src/structs/JB721TiersSetDiscountPercentConfig.sol\":{\"keccak256\":\"0x4672eacb6b0cda5e6f5f72ddb91463c52fb90b4df421053e3b40024f19a59954\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://9d8e3a0b35d6b2a6ec66527594263400189b6c766bfd6943c83704380a989aec\",\"dweb:/ipfs/QmUE7NhFWsxjFRzTuRyHJ7oRx3JXD9CnG83t29PjGAhwPR\"]},\"node_modules/@bananapus/721-hook-v5/src/structs/JBDeploy721TiersHookConfig.sol\":{\"keccak256\":\"0x0ce457736946394772afe54d575b68a74269cbf37a250de2d27dca6d9dd45005\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://2010a8f6e19354038d3906ddb174f34464c5f341103313a5c4d628aa7732d5a8\",\"dweb:/ipfs/QmU9m18oWtYNV7UHLcW9kdwE3uzoQuGBe6sASvQTk8GZRL\"]},\"node_modules/@bananapus/buyback-hook-v5/src/interfaces/IJBBuybackHook.sol\":{\"keccak256\":\"0xcfa5f691a38949ebaf38c69fa1f1f6e7efe724f85c06f6cc398f21842bcfabbb\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://e6b7afe9e9cc48c751b0adec6b888f327c1dbacd9addba9211298db20c0f4b6a\",\"dweb:/ipfs/QmUr1TfCkuzJgmwrycsH1LZEiT8wsxiMJHJNS3cx4yevxW\"]},\"node_modules/@bananapus/buyback-hook-v5/src/interfaces/external/IWETH9.sol\":{\"keccak256\":\"0x50083bcaca6c1a8d12c79116fab4f6d8cd452a510cb3f00c4a8bc3a54678efb7\",\"license\":\"GPL-2.0-or-later\",\"urls\":[\"bzz-raw://726f187112d0953c14bff8099a8c9ce1ead47eb25e90839f77b100feaaf16127\",\"dweb:/ipfs/QmTEnMENpLjcTQLMwz4kEUiQHfiTkaZT3TL37nQ8JiRYh5\"]},\"node_modules/@bananapus/core-v5/src/abstract/JBPermissioned.sol\":{\"keccak256\":\"0xbaaa61c6aa043522617d3c1a86960c23b9978ee2a6c9d593b00beeeb6ce64423\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://09beed8608e02ce9dbf28814309aaf62c9eec67e0701a26113bdbb4cbae56c42\",\"dweb:/ipfs/QmZrHFnpjX9uBzbFrSjqQgQBkvpJ1ZyvjtT9RfneNGv32S\"]},\"node_modules/@bananapus/core-v5/src/enums/JBApprovalStatus.sol\":{\"keccak256\":\"0x61c69b6bac7d24b566d87cda23a77e4ca9cdb87200b106aba8534cb9a0973e33\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://6a9ca7249de76f77a8252eefe6bd1b63d47952f25a2acfa2c8db967cdff4470c\",\"dweb:/ipfs/QmaxSxptRQNj8bNy96EreENmrnRWdKmhyihBcxyWzBX5BN\"]},\"node_modules/@bananapus/core-v5/src/interfaces/IJBCashOutHook.sol\":{\"keccak256\":\"0x6c516b030f55065eb169d666d11dbd82c4a0b8cea7782ebc5e79433cade38670\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://fa0659eb08477176f130ccaf387d4bde71f0ecca2b24f61124d225f2f50397a3\",\"dweb:/ipfs/QmRNBRGhdGpLQLkC4wK4VrgNEw4EdSiJ4ZZJfiJU4aNt2L\"]},\"node_modules/@bananapus/core-v5/src/interfaces/IJBController.sol\":{\"keccak256\":\"0xc903b660dccd57e610e1d834407b2bead1fc456153e106f2582407e505a39a96\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://624bb32a7cd93ce056ea2705332821abd9cd7c83f419bbb279ad96e47c2b6013\",\"dweb:/ipfs/QmXKmQAGecR2zYAXMZ54erg5QnYoWNue4Ek3jCJCUyfW7q\"]},\"node_modules/@bananapus/core-v5/src/interfaces/IJBDirectory.sol\":{\"keccak256\":\"0xcb97db460d2948a7f51c660fe0d1b1749047a419027711c476b86ad3573534c5\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://a909c7a3d471054537894dca827e6e018e92ac25299b43026e5b1e335ec4de68\",\"dweb:/ipfs/QmU1GT3F8PNMjSiPPP5cSLLofefHYFJXnywMCdqqM9xUeh\"]},\"node_modules/@bananapus/core-v5/src/interfaces/IJBDirectoryAccessControl.sol\":{\"keccak256\":\"0x1ea768919979d9f625920c05a5e633739febc822ce14b1e4724d739b19c10fb8\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://7c5391a510bd610a97978245b7306d8d21c79d7c45c15f590ba9b603ea751154\",\"dweb:/ipfs/QmPSJvVWswqzv3bVq422UhA2BybMsiHoYFWGPp5Jh6Xs6a\"]},\"node_modules/@bananapus/core-v5/src/interfaces/IJBFundAccessLimits.sol\":{\"keccak256\":\"0xfd8ea4cffd289e7fef6e53b5c8983eb6b941de306517f40c047048d3a8a2ca08\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://2765cdee206f8b1b53874448e2481db001cd3706753190cfc9381318c7a7c41c\",\"dweb:/ipfs/QmQ5UYSadtzrb7BcTR93KnAYKXawdyDUG5HjjASV1zbys5\"]},\"node_modules/@bananapus/core-v5/src/interfaces/IJBPayHook.sol\":{\"keccak256\":\"0x9438866782c652c2942f4d114e35f393cd3c8b0334abce8387eed90bca35e8b2\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://cfd99daf57213f92325aad7d7d16e98476d38e870470e95ba01e3ae3cdecc95d\",\"dweb:/ipfs/QmUKKAVGf7ki8BHksr99tFcRW8APveeB5tNH63ctTbbCW8\"]},\"node_modules/@bananapus/core-v5/src/interfaces/IJBPayoutTerminal.sol\":{\"keccak256\":\"0x54e826b28de02e91191fcfcb93f4d26d9bc9a0a4ecad8704bbbfe2fecb862864\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://1269c0a6398db3293f24c6fa1153c312ef3ccfa0ccb22628bbc34e2aa8573f5d\",\"dweb:/ipfs/QmfDe6o6z4gh624fhhgJDcvDHRL3bHi5u7F7hSBkkMMt5a\"]},\"node_modules/@bananapus/core-v5/src/interfaces/IJBPermissioned.sol\":{\"keccak256\":\"0x5b038d4dee116584e88b230920e56d48e135053e3f7e5642eaea14a775c1dad7\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://19e43102f349fd4a1da1c0943ffb8f2950007fe4bb4bb7e8f74fc142575d091b\",\"dweb:/ipfs/QmXHAt4KzDTdDZgDDefEXH2WKi7NcfkJb9R7nxW5uDqsNp\"]},\"node_modules/@bananapus/core-v5/src/interfaces/IJBPermissions.sol\":{\"keccak256\":\"0x49d2b91a866004af098a6770b28040071885b048b4b50744b12a1e5b212c5e5e\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://089b4dda50be91412ffe1fbe333f78cc894f073c1a7afe469f10a2cee12fbf9e\",\"dweb:/ipfs/QmYPPBZ6HwBa1RNkNGqGcR2xgj4fnWBzrPHHoJG3kZA6AN\"]},\"node_modules/@bananapus/core-v5/src/interfaces/IJBPriceFeed.sol\":{\"keccak256\":\"0x4bd84c0f1a5d4729ed709bcddd43f4c50ec4a165ece79780af8dce482ed07d4a\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://62bac4bfb6982fb002f620c77e5c445e62d50241a5aa64a07e51d929f5a42180\",\"dweb:/ipfs/QmWgJUDreVY2BuMX38a1iUUR5kNbMwGnKG3VvurB7oZtuM\"]},\"node_modules/@bananapus/core-v5/src/interfaces/IJBPrices.sol\":{\"keccak256\":\"0xb4d5244daa52aafab0c9b8806b7f973afa6a3b298add5966d586d27b78424cfb\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://a819f74455aaa4f679ded378424702f3992608a640d7f943b19938eb4ff711da\",\"dweb:/ipfs/QmSMGvVTsMW3L5YSUyXTKoEsgNpGEutnq4frEZHuDdeDvz\"]},\"node_modules/@bananapus/core-v5/src/interfaces/IJBProjectUriRegistry.sol\":{\"keccak256\":\"0xc9ab647179d7d0c857fdd881d6ce96f06254739440ed08e85a1c2042218f7c7d\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://8529368f30c98c8d5a69acdbe4ac79e3eeb4afa5a9cd278325c5f2184ef3d50f\",\"dweb:/ipfs/QmfUaozYiAGt1UwBDUEZvon1tEBS5sLPzqpN9dNdjQotPN\"]},\"node_modules/@bananapus/core-v5/src/interfaces/IJBProjects.sol\":{\"keccak256\":\"0x4ae42a9cc29b517b26d2b9b635deb82c16696b777deeca92dfcad33b0f81c0a0\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://1dcbd860e7d7f05232d90c5e9cfd3d01e2ce986ffcdb053473d8a4d387b1a48a\",\"dweb:/ipfs/QmWKWoSJJbVWDumbnzXJBJyXmAacgC97bxMtchh8te41bn\"]},\"node_modules/@bananapus/core-v5/src/interfaces/IJBRulesetApprovalHook.sol\":{\"keccak256\":\"0x5f0dc5968277b572ba5dc74518906dfb33a9684b7a199c7843f4e66af1c11fb9\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://323ce3731aebdf5bf8055b8550055e856feed700d293af8beaf8a750625a0975\",\"dweb:/ipfs/QmU2ErV2uzvXnsJt1qBKm73H2qWcEqYtQGHtZEpx93DaWJ\"]},\"node_modules/@bananapus/core-v5/src/interfaces/IJBRulesetDataHook.sol\":{\"keccak256\":\"0x45a88aa9f26512f7fc3deff6d00be9a292fc07a76c8311f175249400e83d1837\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://1e88b996c3a05f87f7391ebcb9cd6d46c6ce8768083945f26a98c4ac4509e64c\",\"dweb:/ipfs/QmbpuYi6mYV8K8qrh8syWvbPc34pFrXG6QeC23m4MsX3r9\"]},\"node_modules/@bananapus/core-v5/src/interfaces/IJBRulesets.sol\":{\"keccak256\":\"0xf287c7a4a162cd58084ed10ee5f9f31c992addff0ce2f2ac7e810cc393546f30\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://c851b72de52c3ceb73c6b1849ad0cc7c0832fd126ee52cc838a163ab6d3055b8\",\"dweb:/ipfs/Qmbv6k6pSeNMwZoTUKzDNb18DMGR8DboRMrYQBydATuVZw\"]},\"node_modules/@bananapus/core-v5/src/interfaces/IJBSplitHook.sol\":{\"keccak256\":\"0xeb8dfac7a4b81897a1c3b5d0d853a406bcff33720fb187d5ca5bb3dcc0ba3a12\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://36aaeef6107cfe5b0127e063ea215aac7200f8af02e28a48e61111abd3254688\",\"dweb:/ipfs/QmQ8yQANXnhQCAWBGKsKCDsJ3A8hnTKNg5tyo79GfWXTcV\"]},\"node_modules/@bananapus/core-v5/src/interfaces/IJBSplits.sol\":{\"keccak256\":\"0x424e6d1189b9ba7a5d441e7675ae09ff893c13c62b9ddde4dd6bc2690e96c6f3\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://7e30ed7ab1daf20ff324aacfef7150a243b5db496eceaf032c7012ccb3c4227d\",\"dweb:/ipfs/QmRj5EZKmDjJy8tpvKbpz8vPSKHR5C9Q5ENe7oSLij4H8M\"]},\"node_modules/@bananapus/core-v5/src/interfaces/IJBTerminal.sol\":{\"keccak256\":\"0x5a4c0ef6c8fd10069a408cc42a862909f7b47aba46327da5003203508d8f17d9\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://09d8854151c21046b6b939189ad2139c669888e6baf47034a0cb754104d1efe6\",\"dweb:/ipfs/QmaMrxnf6K6znvDBwdAqsw5x6yuR4SY1BdNtyz226siAt5\"]},\"node_modules/@bananapus/core-v5/src/interfaces/IJBToken.sol\":{\"keccak256\":\"0xc2c0a75d97e3a20fd6964b09381736de03f56e58c27a874a0c96a21e02d0e577\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://6ef8d476174aca6c35f7fb24ff8be619191bfd22038d3729ca4803252d3dae6a\",\"dweb:/ipfs/QmdWtAwf2A4P88of9gUyWY6hodT9fqpxJK4NBVQt9ys2Jd\"]},\"node_modules/@bananapus/core-v5/src/interfaces/IJBTokenUriResolver.sol\":{\"keccak256\":\"0xfa5cb00dcd6085d1ef912d071fe73c63f9478a2cd0f9d8bddaf659b6af2d0967\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://282e4e7c342d65f77cde0e9a08fcaf20ef5cf379c7a48b639842c0ffd0b2afb8\",\"dweb:/ipfs/QmbnN3PEQeZaXdPLT75V1J79kMg7KqSMru37RHrL3z8Yf2\"]},\"node_modules/@bananapus/core-v5/src/interfaces/IJBTokens.sol\":{\"keccak256\":\"0xe3f0cca072afcac9ee3c875b7439a6edb4a9276e9dba01184d11e8270a25f258\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://bc3e437b8588965b911a750dc632ac1aca4f9348a137877047a62df598a17bc7\",\"dweb:/ipfs/QmdXjVMdCFcw8HFbhxZZbj9KzxNx2ThjVfcDhFBt1khfvL\"]},\"node_modules/@bananapus/core-v5/src/libraries/JBCashOuts.sol\":{\"keccak256\":\"0x3e4e5b16037dad09dc5224833a46226a555531f982fbdd338f1a519380e615e7\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://79b8e4d372f538e0e455c0d497c21613447d321dea75850321ee347c5563ef7e\",\"dweb:/ipfs/QmcS6eKZYN7VKKxkpz86NRZohgR84M6GTzn1NnCY7ux4ee\"]},\"node_modules/@bananapus/core-v5/src/libraries/JBConstants.sol\":{\"keccak256\":\"0x4dd0f809f1f10cf961e85632e5f3ea5e49716b104a0e8bc4d8ccc2081e9d007a\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://09432ec01de81f7c295579fa3176610776cb186fba4c50d799108a18f14e5cc6\",\"dweb:/ipfs/QmS52c525xJui5u1xoY76PTq2n1pvnUzThBK38A1fsWdLp\"]},\"node_modules/@bananapus/core-v5/src/libraries/JBFees.sol\":{\"keccak256\":\"0x01163ea5e23edaea11550f20b3d5a77c4c6c3ebec6220bb0d494ed93b1c2195a\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://056930171ebb9cc23fec5a7d9319816e9a7424c2e13516c842e92ae8141c893c\",\"dweb:/ipfs/QmSNbJgQBiRxV9aqdoUFtRJAY7Hua5Ezw41WEiCwomjWuX\"]},\"node_modules/@bananapus/core-v5/src/libraries/JBMetadataResolver.sol\":{\"keccak256\":\"0x52402cc945b1a23d0560a2a9c93a11271ce0ab18e592a4d78fc449a8b417526d\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://912b5056f5768b14f26e4e2a754b90ce631a1f4898af6883f6d1e4a1f4ce87c8\",\"dweb:/ipfs/QmdnGcjTQtxscD1QDTERN2xqVA6iJnLCkfq1vWSUmDYYtX\"]},\"node_modules/@bananapus/core-v5/src/libraries/JBRulesetMetadataResolver.sol\":{\"keccak256\":\"0x3ed84aa51ce7ee94c65c507bb6f209fef4ae89c7446a2ed841602a235afcf43d\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://cbeb6faae79112f85366ee53ad5c65f41a68f799912a5f09b0d6a49f8d9df647\",\"dweb:/ipfs/QmdEyZ6QF5q9UHMwbxWA9RrFwtL5iYHRydCAnHdKqqukDB\"]},\"node_modules/@bananapus/core-v5/src/libraries/JBSurplus.sol\":{\"keccak256\":\"0x21df719e4cd81ddf42fb8aa3a3e9b4db5fb67856a98271f0fdf943bb3dd1ae31\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://7291a580c5ed5c8b12c7b34d37dc711a31c2045a9afbd00f2907d5acbcb21704\",\"dweb:/ipfs/QmSMqwPcmgutfBK6x7Yud7ZQdCQQrRNHvCzqDaBrix9PF5\"]},\"node_modules/@bananapus/core-v5/src/structs/JBAccountingContext.sol\":{\"keccak256\":\"0x9c47e048a719f784f601df69a583505432217b9868a0244876d277f84dd1ebdf\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://8565f194b87914da9a02af2e760ae2ed2a9d185c6f11229f7035140776d2fec9\",\"dweb:/ipfs/QmPs2fic8W3F5e5zNRwmGmJFjb3JWGPWJ3YUe5o82nQgEn\"]},\"node_modules/@bananapus/core-v5/src/structs/JBAfterCashOutRecordedContext.sol\":{\"keccak256\":\"0xa1acdb1a5670f66f730e71f8eff120766b6f5c934e6cd699c7f1a7cc93adf658\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://a9c7655c9c42b30132688b395251748c809c334370ee584cb9bac46e1fb8f162\",\"dweb:/ipfs/QmbMV1wg1Fm236HaA6nnMSvRkzeYCKPRhMYDbqkAxieY7x\"]},\"node_modules/@bananapus/core-v5/src/structs/JBAfterPayRecordedContext.sol\":{\"keccak256\":\"0x3bfc01ae9944a0ff5c41125e18ebb8efca58d7aa4e471d2ffa6d8588afb689ab\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://beb21399142d9b89539cfc8aa94119bc106bd1ea847b922d4c78f3f8804a5cba\",\"dweb:/ipfs/QmXDwJXrzCb6zh1KYwVdN2PEY86uK62MTfYF1M2MBtbEP7\"]},\"node_modules/@bananapus/core-v5/src/structs/JBBeforeCashOutRecordedContext.sol\":{\"keccak256\":\"0x7b2119f3e0725becc552ed5dcfa51683960a8772550c95ac5e2f75240ced367c\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://03369dd07a9126ce453d83ac409919326f0aaa48ff9eac5c703092b3824d79c9\",\"dweb:/ipfs/Qmc1QKw6FfmeBD372RnDyeW27QyzEUjMX5up5rk8SHRYGa\"]},\"node_modules/@bananapus/core-v5/src/structs/JBBeforePayRecordedContext.sol\":{\"keccak256\":\"0xbc98b968d84be2f0ddbb24240723c7179ec9c5e02e5fbd5843dd0e76623a3ea5\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://1310e522696a9fc6f7f96b04c293fab3b4cf1e722bdbb7aa1eec7b3ecc25402f\",\"dweb:/ipfs/QmTYiijDJRuQcMhLrmpbHzHAQFPq6jurPP5HjyYtnzbpnK\"]},\"node_modules/@bananapus/core-v5/src/structs/JBCashOutHookSpecification.sol\":{\"keccak256\":\"0x67a6e781019979e626eaa81d84a800b2656603c23ae455e15d0fa1a6f03c1736\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://b43ce54447dda62d449a1e3575a9e4cb9c5a2adb41b45423dcefeb7d9afe8336\",\"dweb:/ipfs/QmW77REnQcvsfv4gwTLj2CyynmaGC3a6om7zCFWmERhrPY\"]},\"node_modules/@bananapus/core-v5/src/structs/JBCurrencyAmount.sol\":{\"keccak256\":\"0x7f321bbcbd13abfbc8f0d08a5adaaf8ef312db5bb899012fcffb6170fbb962a9\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://bf9301ef1dbb3abda7b492585377617508ba048c6170f21a5e7d2b3c034eb384\",\"dweb:/ipfs/QmcetEFxSYLLNSZzPBpNn3Fc8sFcrFE8A8h12ZSj2tLgxD\"]},\"node_modules/@bananapus/core-v5/src/structs/JBFundAccessLimitGroup.sol\":{\"keccak256\":\"0x9fdaa8d017b72da25f583700a444a86849df053f7fb8eac874ec5139bcf651e5\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://c8e44c49ee444a98424a0dbeb6897a76a0bf00d88a613f62ac2012afdac754ee\",\"dweb:/ipfs/QmdYkAiRi5bXM1YYNkc7BiqimHSFodMGn1cjHR5hcpm4xH\"]},\"node_modules/@bananapus/core-v5/src/structs/JBPayHookSpecification.sol\":{\"keccak256\":\"0x955f0bfca97300b9e5927dc181753830ee362f83fa9ca32a90daade32aa0cfd5\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://f517af1597c7c40f8d3da53f7a6684a3e162950a16559d6bf6ea3b727bb11546\",\"dweb:/ipfs/QmRWo2ZTYXmVZTzNJDYhsJNsEaHphjpUfx9eNz2cciyz86\"]},\"node_modules/@bananapus/core-v5/src/structs/JBPermissionsData.sol\":{\"keccak256\":\"0x65e26b78a1f00d81a21abd255c9670b600efca60cf36a993b8f48ecb268464a4\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://d108c721c4281b13de34641befd2a1e9fac73a70195ef5ca957abda6fca9acca\",\"dweb:/ipfs/QmWoJo7wzSKY3z4YCpFvR8DoCUTKviiuFEj2tBkcgKUqW1\"]},\"node_modules/@bananapus/core-v5/src/structs/JBRuleset.sol\":{\"keccak256\":\"0x2d1f0a8457e94addae51a8222b1837e372847624fde96bb3178e7aee52ab2b24\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://bbb1478e8f5d1c20f981e5a0d5e526d002add1e05ddced87ccd45543ed00c9e4\",\"dweb:/ipfs/QmZkgaYdwkbnvW2MGwVe9FeHjac8XyZTP1YZcWUApiGZgE\"]},\"node_modules/@bananapus/core-v5/src/structs/JBRulesetConfig.sol\":{\"keccak256\":\"0xeba54f25ad84b9c6009f62ded187b58f97e0822e9b19ab0986aee6603ca5400a\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://5a51743febf78f2ede92d32a2b18c3c5f06f02c413c2d01f28dc296840b068ef\",\"dweb:/ipfs/QmVSRDtB7xUgaLGW5tSJr7PhW5XPxkWg226Sk2g75qWpxh\"]},\"node_modules/@bananapus/core-v5/src/structs/JBRulesetMetadata.sol\":{\"keccak256\":\"0x318f0b75275c3822df53a02e98782c9e98e7961116f2ad66a528c6adcd14c946\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://d60f62390e43d182bfe875d1ac57e9de10426d81038ba7d8c3727b22392299e2\",\"dweb:/ipfs/QmUtE6fcP25wEhVJNEbrPHyFPkg5hp2PFf5xcwBeHPmNAf\"]},\"node_modules/@bananapus/core-v5/src/structs/JBRulesetWithMetadata.sol\":{\"keccak256\":\"0x1bcfadf20488f6df65227f8d4d0fbf9b7539456a2389567f7fe3900d23289bc3\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://0a15c399a71e5373f8c0484c6d6b83521eda31e063a2c53e4c5cec4e74550343\",\"dweb:/ipfs/QmQwi8zkjoTVXbK89NeETYimWCacTrNsesJdpLSvGdqMPX\"]},\"node_modules/@bananapus/core-v5/src/structs/JBSingleAllowance.sol\":{\"keccak256\":\"0x8782e1148524829a4f154442744c25963d0faba623c8a9583eaa8bc2290a040d\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://948696535a97640649fa3f44ea176c9d84066c28a303118d0440b6eac830b22f\",\"dweb:/ipfs/QmSGNC6W38F2XvLcqodgx792azsN8D1dt5LSUhS2vGhxZT\"]},\"node_modules/@bananapus/core-v5/src/structs/JBSplit.sol\":{\"keccak256\":\"0xfcedbb8b6937ee00578a4c3ec70e2555a2c0a5c18f1eba3b96701b07c1dd94a4\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://7014a7b6f30f35941898eea1d9d32a2d75c807f59e2f0fcb430efc8c25edc1da\",\"dweb:/ipfs/QmWitPTxQCDUfoWrRRrYvE9YhuTcwCAXxVvkVLNk9Jsem1\"]},\"node_modules/@bananapus/core-v5/src/structs/JBSplitGroup.sol\":{\"keccak256\":\"0x8dc98fa9e730bee8bcc0a8acf1bc4db1c9b0edf307d969c9c9caa4d6b8d856d9\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://66f4306e0e69c82033927952564fd617e7c4b29aa8b165d5b53a0ebe3109ea12\",\"dweb:/ipfs/QmQqN1u7FHAdEtEZNRcKvZwYtXEQVQnLd6FMzHESP7wDtx\"]},\"node_modules/@bananapus/core-v5/src/structs/JBSplitHookContext.sol\":{\"keccak256\":\"0x1cef82bf434f91d518092ea7e57db4a72ce7654f48a7db9bf44882900b6b6623\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://cc5012008ab7e74cf766fe1c202a23e3a73365356bcf1e0b04ec01baf21b204b\",\"dweb:/ipfs/QmSwJvd6Yrg9XZMhjquBcak5sfUswbR5nPEuJBfpjM54VT\"]},\"node_modules/@bananapus/core-v5/src/structs/JBTerminalConfig.sol\":{\"keccak256\":\"0x9e31505080d3754b6d7db96095b0545930ef6dbc035b91fcc32fdc76a0e7c2a5\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://f7702ab33a1b713c37e5397a55d8ef089289f4da8034cfe9622cbc69a98c47de\",\"dweb:/ipfs/QmXyiXps4aJyiM7vtDC373QUoqwB4DMETaZzC5cZPJKaAK\"]},\"node_modules/@bananapus/core-v5/src/structs/JBTokenAmount.sol\":{\"keccak256\":\"0xc61593d33d5ec30e695d382948a1b944d01e29a8f2bfd29f75ecebcdbc7816de\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://8992c1e5fca0c2342ecc0e734dfba6a2a752e4c29184784931d0971e44305051\",\"dweb:/ipfs/QmYNcaW3qeCkgAExUaFTq238fgfJuoYCTwjCn7jm94U4dJ\"]},\"node_modules/@bananapus/ownable-v5/src/JBOwnable.sol\":{\"keccak256\":\"0xad1f9fcc7cfa404a6c20b0eafbc71a2c90a4a3f9aebeaa4b2cab63355892ed30\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://cd0ef227f070c6c68c998c711e70e61850eabe789a026e34f11e8e0d506739a6\",\"dweb:/ipfs/QmPeZXX7Lq8Q3jHSMvQR5W6UprCy5z5BPY8tz6KXEt4a5S\"]},\"node_modules/@bananapus/ownable-v5/src/JBOwnableOverrides.sol\":{\"keccak256\":\"0x3ccb51dfe5ea52398b63013dba97552f5b1a443bc6df8713458ee5ce75230bd0\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://cd2985c7e5783482a64b774d3be8bcf6736c5e754ffd4c0baa3647fb0ff53b69\",\"dweb:/ipfs/QmfEYE8EXGPbvNcWZj4H4DX2HLxscYcFSckpAGwttt4SRS\"]},\"node_modules/@bananapus/ownable-v5/src/interfaces/IJBOwnable.sol\":{\"keccak256\":\"0xa94807eab5362c523d403a10902db431753b9b1e4b73259d4d7e217fc6cdf766\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://d5cd284927df617997d055dfaa5f17b9c22c5ce678b9c87b627d14aaa87fa8d2\",\"dweb:/ipfs/Qma1M9MV1FFsaPF5oAMDL7KdidFzCjZ6EZ8mdLo9MXkgxa\"]},\"node_modules/@bananapus/ownable-v5/src/structs/JBOwner.sol\":{\"keccak256\":\"0x535d669344addf9ce4a62320960699ae8c47b4a615327a1cb32590b4e046c069\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://64e228cc198dafde001eb65092eebf6e99f91420b993deb9c5dc8204cf2469ce\",\"dweb:/ipfs/QmWpKRsMt3SwToaVyNjF6ZJZaL3Kz2QDfee8BBN2FExV3i\"]},\"node_modules/@bananapus/permission-ids-v5/src/JBPermissionIds.sol\":{\"keccak256\":\"0x03d598c570091f294bebe9c7b59bfc2d907d5b70a3193c3bdb9ddec67edae1e0\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://afb1aefda01e53fa79441bab1fa9cb46154e0db9d16bec8f9b7fa80d200916db\",\"dweb:/ipfs/Qmbkt9HgWmz5rgehRttkzFqW9SkwRYvXYqtHmuxHVxz8ZD\"]},\"node_modules/@bananapus/suckers-v5/src/enums/JBAddToBalanceMode.sol\":{\"keccak256\":\"0x0c18399ed85e6ad5ade75726af9f74e876ae4cf1e8e9d320d50006e320288e1b\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://0080f23626ae9121aad63ba6ec37e95a5b6843de4732f9c7f16b4d09ae3d0880\",\"dweb:/ipfs/QmXudDnVpDAy7Yu7DRb7AZVJEsuK6afse7WtLE2uK12xYo\"]},\"node_modules/@bananapus/suckers-v5/src/enums/JBSuckerState.sol\":{\"keccak256\":\"0x0ee6d0d08cd4f538b8c9ff59d480c7c3371c4cb1971e5a67a89088b4b040a608\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://b8cce8e51b084cc9a844dc1040aba00b63b01f97868d52cc9f38b9d354fd741f\",\"dweb:/ipfs/QmTveKLmdZAGbwEwaCTBwofSBtckZsDcew3E7iNTnpeskY\"]},\"node_modules/@bananapus/suckers-v5/src/interfaces/IJBSucker.sol\":{\"keccak256\":\"0xc5637080a3bd632b53ca57457a09f252647e1aedd007a21ba9d2fcff8859b343\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://285815a5dc3f29bee503ecc9e7614d49f5e8fd44a6037c3a72e787694a59aebd\",\"dweb:/ipfs/QmccChKT2Gs1Tmeg4LgQAY1ejigdvQYHBo8AQCMfHLMg2j\"]},\"node_modules/@bananapus/suckers-v5/src/interfaces/IJBSuckerDeployer.sol\":{\"keccak256\":\"0x6913c0677d52e01cd2d6f785846a255fcc1783e6b90d15a2f296289d4f482026\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://24781b17a192ec8bc2d8ab47400a06e4eed2320bc5537489a1f7bbdaed078ad2\",\"dweb:/ipfs/QmbTUkAvFxcAHhjy8hvJ4uUo4PyeKK4BVuU4YtR3QT7s68\"]},\"node_modules/@bananapus/suckers-v5/src/interfaces/IJBSuckerRegistry.sol\":{\"keccak256\":\"0x65aaa205ac5ffc4a4d9a38a39cf5b427e6c58d610cf042854a27c41f0d7d8b8e\",\"license\":\"UNLICENSED\",\"urls\":[\"bzz-raw://9f279b1e5868b8c6b80220c87a4ad5f3a95665fabe0467e2b0601bd910a20592\",\"dweb:/ipfs/QmUqFEoGdUUNgH5FGWnXewSPzjZqG73b2z5nsJevG165oX\"]},\"node_modules/@bananapus/suckers-v5/src/structs/JBClaim.sol\":{\"keccak256\":\"0xd616fb935e61727ce04832808667bd40dc121d66f5cc2f347018dfd971635dab\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://dfdcfb12878dc03b4623ddfaa42afa7e8270e8a259a8c453ef4f7e916ca52876\",\"dweb:/ipfs/QmZyAUzatUq2HfGBpoKbeqkC7mpetQC27M3797wgNgkE6H\"]},\"node_modules/@bananapus/suckers-v5/src/structs/JBInboxTreeRoot.sol\":{\"keccak256\":\"0xc1d8a61fc49d5d095486b194b7041595dc7639db33e3e310b1703d21caa184da\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://b1c2d8480b823b25a55c4a9af0e6fb4bf6f8c0cba16f71bebf53585a5a86db6d\",\"dweb:/ipfs/QmY9Jbbb1PB9T8UHHjBq2Eq72zu5sPoSPYwVApbypLJtwB\"]},\"node_modules/@bananapus/suckers-v5/src/structs/JBLeaf.sol\":{\"keccak256\":\"0x4b71bd2b39022b2f7e59f45d967118ce47061db02e1e827ab4cc6f3a3b960107\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://ed6fd76058f73ff40da48553412b95c2c3f00ddbb2a59d0774b207ab98d555a9\",\"dweb:/ipfs/QmPMe4J6MvRt1hKdDtUGXJoiZjWxqh736ds79bh2fJQEeN\"]},\"node_modules/@bananapus/suckers-v5/src/structs/JBMessageRoot.sol\":{\"keccak256\":\"0xed41178db7810558f486583d76382b8eb77f586648e7522070475d5e576a869c\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://2516fee99b547fa4008f8e3f40a7ef86701b286e9e4ceabd8ae24e3e67b8cf42\",\"dweb:/ipfs/QmeiNo3zgHkqSczQEmCK4S7R5BZwPM9RJp9dnjqqQRNyku\"]},\"node_modules/@bananapus/suckers-v5/src/structs/JBOutboxTree.sol\":{\"keccak256\":\"0x900ddc463282f90537e6e6f80d9217bc8da68c06c79c0ba66be1a48ba3647d99\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://9e88c122091442114e734a9f6130cd3019add220f804518b82abbcb82726e5ee\",\"dweb:/ipfs/QmeG4grFoBaRbqPj5nDbxTt6V9mb8tvRLnMBzNSKkwKeyR\"]},\"node_modules/@bananapus/suckers-v5/src/structs/JBRemoteToken.sol\":{\"keccak256\":\"0xa675639bbc082957d4ea05b4c840d472f1777ad22fc78b0b32962fccc3f19995\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://d9cdd472cfb3efeb2e3c7a7032e844abcce7f615d8d67eb4b33280968d8f8fb0\",\"dweb:/ipfs/QmfPUPLrxNVEYUaYzkAV7CaDX6YRfx2aJ8qDhLPFaXEGEA\"]},\"node_modules/@bananapus/suckers-v5/src/structs/JBSuckerDeployerConfig.sol\":{\"keccak256\":\"0xf62c06876ee13ee67630dcc82c10264264c062f20972ff65a9c1d87a554d2379\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://ff81847604f9f1cd2a6c3b687759e69f4beddd67f8dc78488d81ca6aa1e7cc5d\",\"dweb:/ipfs/QmRJPRQq1ifZnGnf3V7xXoVarwTywAut4zq6jnhawtivPE\"]},\"node_modules/@bananapus/suckers-v5/src/structs/JBSuckersPair.sol\":{\"keccak256\":\"0xfe76a400e1fa57758973705a9cbac4fab125785b97b49b752b5c13d414f6938b\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://6d2449d365b5e45ed09c70cf4cfa4d2c9bccd492be5e1562f0b3fc2a10ccaf63\",\"dweb:/ipfs/QmYVrJVm7wKtGJ1hnPaHjfFgyKtA5LAJUrkMgSVRupj7AW\"]},\"node_modules/@bananapus/suckers-v5/src/structs/JBTokenMapping.sol\":{\"keccak256\":\"0x124f304139003b90ce0b15063d9d79a4990c8b2b6b0444fb0ebf2e2c213faabe\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://ea7411e1be2809991b66659dcfabf300550d356ae04d77a001ab33ba96eb109b\",\"dweb:/ipfs/QmdzMYmaxL7FTreDTV3qEScDPECZJga1HRE5yLZB2Zq3Tb\"]},\"node_modules/@bananapus/suckers-v5/src/utils/MerkleLib.sol\":{\"keccak256\":\"0xbe3c73ca7be5471a742f409c921cdb641b77600bb5eacd4b47c36ccd92955d47\",\"license\":\"MIT OR Apache-2.0\",\"urls\":[\"bzz-raw://b944fd8fa55e70696313ceac05ecb23ef81e0cd58386af75fc03953b69900efd\",\"dweb:/ipfs/QmSBPBakyc8vtcnu5YjGHXGgnpuc9tFW2eejiawp8z9yrk\"]},\"node_modules/@croptop/core-v5/src/CTPublisher.sol\":{\"keccak256\":\"0x98449aa904f6b6fdc1d94bd1f206ed95098022a75b709f7a0ee64400ffe2b1fc\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://d368af60cf40ac00753f230913398c65c3e726a64860785ed4491dabaa94163a\",\"dweb:/ipfs/Qmd3zb7F6XLvKFuwjpJo9Hjr97EeA183S3bV19WrV7AY63\"]},\"node_modules/@croptop/core-v5/src/interfaces/ICTPublisher.sol\":{\"keccak256\":\"0xdd28ee56853d7e1525d63a2f37d94516e4102e1602353a0bbeedce8011b8ef94\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://d2f2f88d2abe341270caf2fa3dec572de33bd178a603b5f4cf647c482918e51d\",\"dweb:/ipfs/QmeZLmsat4gK62Lhh1f225z2uWj6Zf3oyg6d8umA1g9vLf\"]},\"node_modules/@croptop/core-v5/src/structs/CTAllowedPost.sol\":{\"keccak256\":\"0x1cab9579ed19fea4d490b1de827fd123a8cc7ababd73ed5421351a6f7142a371\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://00695b12ade810d017427a7cf20856dc326bbedcf4548ed28e81a33f09b28ad8\",\"dweb:/ipfs/QmP3UPM4xyiSUnBhkThyVp1Ww8QfqfN7rk3fPx4Gu5Whsm\"]},\"node_modules/@croptop/core-v5/src/structs/CTPost.sol\":{\"keccak256\":\"0xc4d67fc9a0323a2a923521f2fb3042bde046cb8c78fc69d928804ab8f3987038\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://fb4d0a02ada8e751cbd7061f8d7b48705a9442339510232f51595ada0e73612d\",\"dweb:/ipfs/QmbFd4CeMhcY86Ze4izYYdK2xB7tQuwdHxdP7aB5zxy8ka\"]},\"node_modules/@openzeppelin/contracts/access/Ownable.sol\":{\"keccak256\":\"0xff6d0bb2e285473e5311d9d3caacb525ae3538a80758c10649a4d61029b017bb\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://8ed324d3920bb545059d66ab97d43e43ee85fd3bd52e03e401f020afb0b120f6\",\"dweb:/ipfs/QmfEckWLmZkDDcoWrkEvMWhms66xwTLff9DDhegYpvHo1a\"]},\"node_modules/@openzeppelin/contracts/interfaces/IERC1363.sol\":{\"keccak256\":\"0x9b6b3e7803bc5f2f8cd7ad57db8ac1def61a9930a5a3107df4882e028a9605d7\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://da62d6be1f5c6edf577f0cb45666a8aa9c2086a4bac87d95d65f02e2f4c36a4b\",\"dweb:/ipfs/QmNkpvBpoCMvX8JwAFNSc5XxJ2q5BXJpL5L1txb4QkqVFF\"]},\"node_modules/@openzeppelin/contracts/interfaces/IERC165.sol\":{\"keccak256\":\"0xde7e9fd9aee8d4f40772f96bb3b58836cbc6dfc0227014a061947f8821ea9724\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://11fea9f8bc98949ac6709f0c1699db7430d2948137aa94d5a9e95a91f61a710a\",\"dweb:/ipfs/QmQdfRXxQjwP6yn3DVo1GHPpriKNcFghSPi94Z1oKEFUNS\"]},\"node_modules/@openzeppelin/contracts/interfaces/IERC20.sol\":{\"keccak256\":\"0xce41876e78d1badc0512229b4d14e4daf83bc1003d7f83978d18e0e56f965b9c\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://a2608291cb038b388d80b79a06b6118a42f7894ff67b7da10ec0dbbf5b2973ba\",\"dweb:/ipfs/QmWohqcBLbcxmA4eGPhZDXe5RYMMEEpFq22nfkaUMvTfw1\"]},\"node_modules/@openzeppelin/contracts/interfaces/draft-IERC6093.sol\":{\"keccak256\":\"0x880da465c203cec76b10d72dbd87c80f387df4102274f23eea1f9c9b0918792b\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://399594cd8bb0143bc9e55e0f1d071d0d8c850a394fb7a319d50edd55d9ed822b\",\"dweb:/ipfs/QmbPZzgtT6LEm9CMqWfagQFwETbV1ztpECBB1DtQHrKiRz\"]},\"node_modules/@openzeppelin/contracts/metatx/ERC2771Context.sol\":{\"keccak256\":\"0x0b030a33274bde015419d99e54c9164f876a7d10eb590317b79b1d5e4ab23d99\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://68e5f96988198e8efd25ddef0d89750b4daebb7fd1204fa7f5eaccdfcb3398c8\",\"dweb:/ipfs/QmaM6nNkf9UmEtQraopuZamEWCdTWp7GvuN3pjMQrNCHxm\"]},\"node_modules/@openzeppelin/contracts/token/ERC20/IERC20.sol\":{\"keccak256\":\"0xe06a3f08a987af6ad2e1c1e774405d4fe08f1694b67517438b467cecf0da0ef7\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://df6f0c459663c9858b6cba2cda1d14a7d05a985bed6d2de72bd8e78c25ee79db\",\"dweb:/ipfs/QmeTTxZ7qVk9rjEv2R4CpCwdf8UMCcRqDNMvzNxHc3Fnn9\"]},\"node_modules/@openzeppelin/contracts/token/ERC20/utils/SafeERC20.sol\":{\"keccak256\":\"0x4ea01544758fd2c7045961904686bfe232d2220a04ecaa2d6b08dac17827febf\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://fabe6bef5167ae741dd8c22d7f81d3f9120bd61b290762a2e8f176712567d329\",\"dweb:/ipfs/QmSnEitJ6xmf1SSAUeZozD7Gx7h8bNnX3a1ZBzqeivsvVg\"]},\"node_modules/@openzeppelin/contracts/token/ERC721/ERC721.sol\":{\"keccak256\":\"0x39ed367e54765186281efcfe83e47cf0ad62cc879f10e191360712507125f29a\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://2c5ae6d85bd48cca8d6d2fcec8c63efd86f56f8a5832577a47e403ce0e65cb09\",\"dweb:/ipfs/QmUtcS8AbRSWhuc61puYet58os8FvSqm329ChoW8wwZXZk\"]},\"node_modules/@openzeppelin/contracts/token/ERC721/IERC721.sol\":{\"keccak256\":\"0x5dc63d1c6a12fe1b17793e1745877b2fcbe1964c3edfd0a482fac21ca8f18261\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://6b7f97c5960a50fd1822cb298551ffc908e37b7893a68d6d08bce18a11cb0f11\",\"dweb:/ipfs/QmQQvxBytoY1eBt3pRQDmvH2hZ2yjhs12YqVfzGm7KSURq\"]},\"node_modules/@openzeppelin/contracts/token/ERC721/IERC721Receiver.sol\":{\"keccak256\":\"0xb5afb8e8eebc4d1c6404df2f5e1e6d2c3d24fd01e5dfc855314951ecfaae462d\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://78586466c424f076c6a2a551d848cfbe3f7c49e723830807598484a1047b3b34\",\"dweb:/ipfs/Qmb717ovcFxm7qgNKEShiV6M9SPR3v1qnNpAGH84D6w29p\"]},\"node_modules/@openzeppelin/contracts/token/ERC721/extensions/IERC721Metadata.sol\":{\"keccak256\":\"0x37d1aaaa5a2908a09e9dcf56a26ddf762ecf295afb5964695937344fc6802ce1\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://ed0bfc1b92153c5000e50f4021367b931bbe96372ac6facec3c4961b72053d02\",\"dweb:/ipfs/Qmbwp8VDerjS5SV1quwHH1oMXxPQ93fzfLVqJ2RCqbowGE\"]},\"node_modules/@openzeppelin/contracts/token/ERC721/utils/ERC721Utils.sol\":{\"keccak256\":\"0x40399695922383778f9f540a620bec475a2f8e0f08d41f0005682842e28a9855\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://746d295e403931aeb9d6065fd5a0871f43ab5459814a60623611e4b6641a09fd\",\"dweb:/ipfs/QmWrgT8YJrQ9FfD1o3YYArwo57e7MGdpFKuM74qJ4qE34E\"]},\"node_modules/@openzeppelin/contracts/utils/Address.sol\":{\"keccak256\":\"0xaaa1d17c1129b127a4a401db2fbd72960e2671474be3d08cae71ccdc42f7624c\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://cb2f27cd3952aa667e198fba0d9b7bcec52fbb12c16f013c25fe6fb52b29cc0e\",\"dweb:/ipfs/QmeuohBFoeyDPZA9JNCTEDz3VBfBD4EABWuWXVhHAuEpKR\"]},\"node_modules/@openzeppelin/contracts/utils/Context.sol\":{\"keccak256\":\"0x493033a8d1b176a037b2cc6a04dad01a5c157722049bbecf632ca876224dd4b2\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://6a708e8a5bdb1011c2c381c9a5cfd8a9a956d7d0a9dc1bd8bcdaf52f76ef2f12\",\"dweb:/ipfs/Qmax9WHBnVsZP46ZxEMNRQpLQnrdE4dK8LehML1Py8FowF\"]},\"node_modules/@openzeppelin/contracts/utils/Errors.sol\":{\"keccak256\":\"0x6afa713bfd42cf0f7656efa91201007ac465e42049d7de1d50753a373648c123\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://ba1d02f4847670a1b83dec9f7d37f0b0418d6043447b69f3a29a5f9efc547fcf\",\"dweb:/ipfs/QmQ7iH2keLNUKgq2xSWcRmuBE5eZ3F5whYAkAGzCNNoEWB\"]},\"node_modules/@openzeppelin/contracts/utils/Panic.sol\":{\"keccak256\":\"0xf7fe324703a64fc51702311dc51562d5cb1497734f074e4f483bfb6717572d7a\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://c6a5ff4f9fd8649b7ee20800b7fa387d3465bd77cf20c2d1068cd5c98e1ed57a\",\"dweb:/ipfs/QmVSaVJf9FXFhdYEYeCEfjMVHrxDh5qL4CGkxdMWpQCrqG\"]},\"node_modules/@openzeppelin/contracts/utils/Strings.sol\":{\"keccak256\":\"0x44f87e91783e88415bde66f1a63f6c7f0076f2d511548820407d5c95643ac56c\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://13a51bc2b23827744dcf5bad10c69e72528cf015a6fe48c93632cdb2c0eb1251\",\"dweb:/ipfs/QmZwPA47Yqgje1qtkdEFEja8ntTahMStYzKf5q3JRnaR7d\"]},\"node_modules/@openzeppelin/contracts/utils/introspection/ERC165.sol\":{\"keccak256\":\"0xddce8e17e3d3f9ed818b4f4c4478a8262aab8b11ed322f1bf5ed705bb4bd97fa\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://8084aa71a4cc7d2980972412a88fe4f114869faea3fefa5436431644eb5c0287\",\"dweb:/ipfs/Qmbqfs5dRdPvHVKY8kTaeyc65NdqXRQwRK7h9s5UJEhD1p\"]},\"node_modules/@openzeppelin/contracts/utils/introspection/IERC165.sol\":{\"keccak256\":\"0x79796192ec90263f21b464d5bc90b777a525971d3de8232be80d9c4f9fb353b8\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://f6fda447a62815e8064f47eff0dd1cf58d9207ad69b5d32280f8d7ed1d1e4621\",\"dweb:/ipfs/QmfDRc7pxfaXB2Dh9np5Uf29Na3pQ7tafRS684wd3GLjVL\"]},\"node_modules/@openzeppelin/contracts/utils/math/Math.sol\":{\"keccak256\":\"0xa00be322d7db5786750ce0ac7e2f5b633ac30a5ed5fa1ced1e74acfc19acecea\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://6c84e822f87cbdc4082533b626667b6928715bb2b1e8e7eb96954cebb9e38c8d\",\"dweb:/ipfs/QmZmy9dgxLTerBAQDuuHqbL6EpgRxddqgv5KmwpXYVbKz1\"]},\"node_modules/@openzeppelin/contracts/utils/math/SafeCast.sol\":{\"keccak256\":\"0x195533c86d0ef72bcc06456a4f66a9b941f38eb403739b00f21fd7c1abd1ae54\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://b1d578337048cad08c1c03041cca5978eff5428aa130c781b271ad9e5566e1f8\",\"dweb:/ipfs/QmPFKL2r9CBsMwmUqqdcFPfHZB2qcs9g1HDrPxzWSxomvy\"]},\"node_modules/@openzeppelin/contracts/utils/math/SignedMath.sol\":{\"keccak256\":\"0xb1970fac7b64e6c09611e6691791e848d5e3fe410fa5899e7df2e0afd77a99e3\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://db5fbb3dddd8b7047465b62575d96231ba8a2774d37fb4737fbf23340fabbb03\",\"dweb:/ipfs/QmVUSvooZKEdEdap619tcJjTLcAuH6QBdZqAzWwnAXZAWJ\"]},\"node_modules/@prb/math/src/Common.sol\":{\"keccak256\":\"0x8225a3898d2f11f585da1fb82234800e9717fa080dbe53d450fd429a3a632e99\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://2dcbf39ca575f68f32f0d1c66391de94082424956e7585e849813966f8c0fc05\",\"dweb:/ipfs/QmYvk8vXFDUJHrmqbtutYXfoLomLBosYLyBzuPoYBxsQ42\"]},\"node_modules/@uniswap/permit2/src/interfaces/IAllowanceTransfer.sol\":{\"keccak256\":\"0x37f0ac203b6ef605c9533e1a739477e8e9dcea90710b40e645a367f8a21ace29\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://e0104d72aeaec1cd66cc232e7de7b7ead08608efcc179491b8a66387614670b0\",\"dweb:/ipfs/QmfAZDyuNC9FXXbnJUwqHNwmAK6uRrXxtWEytLsxjskPsN\"]},\"node_modules/@uniswap/permit2/src/interfaces/IEIP712.sol\":{\"keccak256\":\"0xfdccf2b9639070803cd0e4198427fb0df3cc452ca59bd3b8a0d957a9a4254138\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://f7c936ac42ce89e827db905a1544397f8bdf46db34cdb6aa1b90dea42fdb4c72\",\"dweb:/ipfs/QmVgurxo1N31qZqkPBirw9Z7S9tLYmv6jSwQp8R8ur2cBk\"]},\"node_modules/@uniswap/permit2/src/interfaces/IPermit2.sol\":{\"keccak256\":\"0xaa631cc9f53e699301d94233007110a345e6779011def484e8dd97b8fe0af771\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://fc0502cf19c9c18f320a3001201e89e350393b75837f6b7971de18b2de06f30d\",\"dweb:/ipfs/QmT9SfhdJ7VJNNrf94g4H5usyi7ShqWGx7Cqsz9jZTjX96\"]},\"node_modules/@uniswap/permit2/src/interfaces/ISignatureTransfer.sol\":{\"keccak256\":\"0xe6df9966f8841dc3958ee86169c89de97e7f614c81c28b9dc947b12d732df64e\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://3d4eafdee7f48c3be8350a94eb6edd0bfb2af2c105df65787a77174f356c0317\",\"dweb:/ipfs/QmY1j2adeeAhNpn6cUuthemxGCdLXHTfyMh9yTKsY4mZ2d\"]},\"node_modules/@uniswap/v3-core/contracts/interfaces/IUniswapV3Pool.sol\":{\"keccak256\":\"0x4e64844c56061cd90e0a80de73534a9166704c43eed579eb83f90bc2780ce968\",\"license\":\"GPL-2.0-or-later\",\"urls\":[\"bzz-raw://cba4fab5cebdddf644b901994a7f0f52b98885d4c56012f4dc51d52c2bf9de0e\",\"dweb:/ipfs/QmVyyrRmqXrAiapewWunRVgiPVFJHpH2hKiE1py1svMSNV\"]},\"node_modules/@uniswap/v3-core/contracts/interfaces/callback/IUniswapV3SwapCallback.sol\":{\"keccak256\":\"0x3f485fb1a44e8fbeadefb5da07d66edab3cfe809f0ac4074b1e54e3eb3c4cf69\",\"license\":\"GPL-2.0-or-later\",\"urls\":[\"bzz-raw://095ce0626b41318c772b3ebf19d548282607f6a8f3d6c41c13edfbd5370c8652\",\"dweb:/ipfs/QmVDZfJJ89UUCE1hMyzqpkZAtQ8jUsBgZNE5AMRG7RzRFS\"]},\"node_modules/@uniswap/v3-core/contracts/interfaces/pool/IUniswapV3PoolActions.sol\":{\"keccak256\":\"0x9453dd0e7442188667d01d9b65de3f1e14e9511ff3e303179a15f6fc267f7634\",\"license\":\"GPL-2.0-or-later\",\"urls\":[\"bzz-raw://982f4328f956c3e60e67501e759eb292ac487f76460c774c50e9ae4fcc92aae5\",\"dweb:/ipfs/QmRnzEDsaqtd9PJEVcgQi7p5aV5pMSvRUoGZJAdwFUJxgZ\"]},\"node_modules/@uniswap/v3-core/contracts/interfaces/pool/IUniswapV3PoolDerivedState.sol\":{\"keccak256\":\"0xe603ac5b17ecdee73ba2b27efdf386c257a19c14206e87eee77e2017b742d9e5\",\"license\":\"GPL-2.0-or-later\",\"urls\":[\"bzz-raw://8febc9bdb399a4d94bb89f5377732652e2400e4a8dee808201ade6848f9004e7\",\"dweb:/ipfs/QmaKDqYYFU4d2W2iN77aDHptfbFmYZRrMYXHeGpJmM8C1c\"]},\"node_modules/@uniswap/v3-core/contracts/interfaces/pool/IUniswapV3PoolErrors.sol\":{\"keccak256\":\"0xf80abf13fb1fafc127ba4e792f240dd8ea7c8c893978cdfd8439c27fae9a037b\",\"license\":\"GPL-2.0-or-later\",\"urls\":[\"bzz-raw://b04fc72a656bbf3631e9c2e67b9870a2d9d235185e833fe050e9606e6816a9aa\",\"dweb:/ipfs/QmUcz4bkEkJ9pwzFu1C3n97hBQ3st9U6qTAqCdyFwddKco\"]},\"node_modules/@uniswap/v3-core/contracts/interfaces/pool/IUniswapV3PoolEvents.sol\":{\"keccak256\":\"0x8071514d0fe5d17d6fbd31c191cdfb703031c24e0ece3621d88ab10e871375cd\",\"license\":\"GPL-2.0-or-later\",\"urls\":[\"bzz-raw://d0b571930cc7488b1d546a7e9cea7c52d8b3c4e207da657ed0e0db7343b8cd03\",\"dweb:/ipfs/QmaGK6vVwB95QSTR1XMYvrh7ivYAYZxi3fD7v6VMA4jZ39\"]},\"node_modules/@uniswap/v3-core/contracts/interfaces/pool/IUniswapV3PoolImmutables.sol\":{\"keccak256\":\"0xf6e5d2cd1139c4c276bdbc8e1d2b256e456c866a91f1b868da265c6d2685c3f7\",\"license\":\"GPL-2.0-or-later\",\"urls\":[\"bzz-raw://b99c8c9ae8e27ee6559e5866bea82cbc9ffc8247f8d15b7422a4deb287d4d047\",\"dweb:/ipfs/QmfL8gaqt3ffAnm6nVj5ksuNpLygXuL3xq5VBqrkwC2JJ3\"]},\"node_modules/@uniswap/v3-core/contracts/interfaces/pool/IUniswapV3PoolOwnerActions.sol\":{\"keccak256\":\"0x759b78a2918af9e99e246dc3af084f654e48ef32bb4e4cb8a966aa3dcaece235\",\"license\":\"GPL-2.0-or-later\",\"urls\":[\"bzz-raw://64144fb96e1c7fdba87305acadb98a198d26a3d46c097cb3a666e567f6f29735\",\"dweb:/ipfs/QmUnWVwN9FKB9uV5Pr8YfLpWZnYM2DENnRMaadZ492JS9u\"]},\"node_modules/@uniswap/v3-core/contracts/interfaces/pool/IUniswapV3PoolState.sol\":{\"keccak256\":\"0x44fa2ce1182f6c2f6bead3d1737804bf7e112252ae86e0f2e92f9b8249603f43\",\"license\":\"GPL-2.0-or-later\",\"urls\":[\"bzz-raw://54154e8665b98d65f5dc91b256551852cb47882180b501b260657122d207c0ea\",\"dweb:/ipfs/QmcfemK1A2PXYrWB5SBFGERpMCderbFRb8BtTzQDj1sUBp\"]},\"src/REVLoans.sol\":{\"keccak256\":\"0x677cc41aac3d5bbe277b58a8af7341510c4ed44c249180a82ac532bd59395891\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://95982ca25dca20bbbbbd11583d47fdb48c050b8b5f60df434844a082f2512fa9\",\"dweb:/ipfs/Qmedc7RU7mn7jVHFd5RsjGh5456TgaRbr2Ms4VUoo2uShZ\"]},\"src/interfaces/IREVDeployer.sol\":{\"keccak256\":\"0xdb7a5793c75ad0d43853e5169a3e6d715eff584d560c348eda1c3509b71362a6\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://10df1bf23360085273b82c355c36c78c5c4ee2bc800e9fb2ca4c234ca9737d1e\",\"dweb:/ipfs/QmRrBMG4wA4ZYSwk12RmUTfo2BaYS1PTK21aJ6BvLotTrv\"]},\"src/interfaces/IREVLoans.sol\":{\"keccak256\":\"0x1083fc86b48d602fca704e015797256fb3155514ba5fb014944c30f444dbe918\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://2c0c7146271f7bfb9169b51ded75e1e3c9f50dda07049ddfd088ff5d1f2195d2\",\"dweb:/ipfs/QmXttZt964qQv1JwYsKaBHCkEuRjpANH5Fo5RS2W5pJPX5\"]},\"src/structs/REVAutoIssuance.sol\":{\"keccak256\":\"0x01b82ab263e382878f86028172e4346e97513110b8dfdaa4418d4205fad8ffc4\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://53fe4dbeb61c3fd3c686cd4b10d0a82782d63b63e6197bfa12299c9252d3937d\",\"dweb:/ipfs/Qmc7KbynMchJgaUXwCStvxBMbd9XhxVDWqoqnfDih1rhLh\"]},\"src/structs/REVBuybackHookConfig.sol\":{\"keccak256\":\"0x90dcf4599ca6c3a4334b6adeac76933c0f21ba857d910b90a5317f7203a8eea3\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://0a0624e972a9fb54010485b1ce44ebf89ecea18424641e1e85ea1659eec4caa7\",\"dweb:/ipfs/QmbgndvwwScKn3UHdiSy3krbA8YiW8e621BX36qjBA5hLm\"]},\"src/structs/REVBuybackPoolConfig.sol\":{\"keccak256\":\"0xa108c0543206d978e4bbbfe02121a40ad46713ca47b2938204726e70dad74611\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://227c6d6492362eaf14a84ca32721cc9d93990f7419488eaf3c11dccb49cb7763\",\"dweb:/ipfs/QmPQ6FHXXsYLv7KJBSRdo8mv66ZHUCyVUysHR9CqrhyXfg\"]},\"src/structs/REVConfig.sol\":{\"keccak256\":\"0xec837325aea852651530f9d4178bc95d02de10a510ac137dfa6e6c3a5ab48685\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://d860e3d9d3d29676fd378210280202e7a16d8adf5eb762e0f0d893caa3573541\",\"dweb:/ipfs/QmQB1G7H3WAZtEL4P99xkdXEpU47NPGaPQXaNNZQqJmb5e\"]},\"src/structs/REVCroptopAllowedPost.sol\":{\"keccak256\":\"0x60366fe513872f887e67a4033a0dbbdff95f5fad10a7a8fe484f861e0c6c7526\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://8247c1958639d1c9655c1a6d055e060fed2d82cd91be97b514cf2e698b571fcd\",\"dweb:/ipfs/QmRV73bZHbPcUp682bddPZy7kHVreEyk9GDVXTs2Th83ZM\"]},\"src/structs/REVDeploy721TiersHookConfig.sol\":{\"keccak256\":\"0x5a72741cb8435b18fd155439c0e0d33b21c1bd4fd574e2a5612b615b269741a9\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://b1e2343288a3aa2d05c45d18d22980cab83db3307a05d9f3cf3ff03fd2b9ce5c\",\"dweb:/ipfs/QmRt34HcvKtL8PyrdYuEE3kh1uMA1bshKEJQN475hBgY2u\"]},\"src/structs/REVDescription.sol\":{\"keccak256\":\"0x40bebc53d50dbfb261882f51c7667d7263193e8fc48897b9384c2ca259046c1b\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://24f98bc7ef12f53afa326a266c69683e24501405f72566b7ca7e8dad242e1fe1\",\"dweb:/ipfs/QmNkLsCwhx5pTuMmJLwUNJdPrGjEi3H9JnTX2s9GsoUTAa\"]},\"src/structs/REVLoan.sol\":{\"keccak256\":\"0x34793cd8bb235749b86ebecfe1ab9308b3bbbef0f68b9d15d20cdb0de7ea63d4\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://7541b3a646c0ad4cc8c49a73847dc05e68aabc6e18efdc897550ce0df983fc53\",\"dweb:/ipfs/QmfJv9z7Ptu5GgkkYd6NAzZegRpjeamGfDGNWFToyP7fEe\"]},\"src/structs/REVLoanSource.sol\":{\"keccak256\":\"0x76c10dbad9859cb91b1b49f317586e08ddd9613069dbb364c033c7889f6378fc\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://02f52f4f0891be7c28727af774fdda442284ab0bfa62dc5d28157ab340214453\",\"dweb:/ipfs/QmfWjK5mWfvN3WBygbi84jGJLospE1CWfzK2Py6jZxR5Vv\"]},\"src/structs/REVStageConfig.sol\":{\"keccak256\":\"0x8bb90edc04e1e9cc7a1f7cb230175580da8484a1cad6d3575096f1ca525eddf3\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://8c96839fad44d0a43f67eaa5fb3f55046ee1261391520749c0e2b7f53445bcbb\",\"dweb:/ipfs/QmTCAs2yH7NwSNPL9vNEFexRhcKTkQC53TydLqLXoV3Gxf\"]},\"src/structs/REVSuckerDeploymentConfig.sol\":{\"keccak256\":\"0x5a7c3dd8f567f97da62d3815428d3a7307070affb1c4ca5feb72da0dd2b9fcdc\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://b0fab77cdc731f518b6b3c8df32c25333c86faad289f96dfa54deb465c21f786\",\"dweb:/ipfs/QmS3PuWmo2w7xMBYMJ2S6A9HL2ykJUayUgFwRQMps6t29z\"]}},\"version\":1}",
2258
- "gitCommit": "f2d3b9e48d34c4c7b1b3b360032750c1dde1aeec",
2259
- "history": []
2260
- }