-
Notifications
You must be signed in to change notification settings - Fork 0
/
ProofVerifierKRS.json
11236 lines (11236 loc) · 543 KB
/
ProofVerifierKRS.json
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
255
256
257
258
259
260
261
262
263
264
265
266
267
268
269
270
271
272
273
274
275
276
277
278
279
280
281
282
283
284
285
286
287
288
289
290
291
292
293
294
295
296
297
298
299
300
301
302
303
304
305
306
307
308
309
310
311
312
313
314
315
316
317
318
319
320
321
322
323
324
325
326
327
328
329
330
331
332
333
334
335
336
337
338
339
340
341
342
343
344
345
346
347
348
349
350
351
352
353
354
355
356
357
358
359
360
361
362
363
364
365
366
367
368
369
370
371
372
373
374
375
376
377
378
379
380
381
382
383
384
385
386
387
388
389
390
391
392
393
394
395
396
397
398
399
400
401
402
403
404
405
406
407
408
409
410
411
412
413
414
415
416
417
418
419
420
421
422
423
424
425
426
427
428
429
430
431
432
433
434
435
436
437
438
439
440
441
442
443
444
445
446
447
448
449
450
451
452
453
454
455
456
457
458
459
460
461
462
463
464
465
466
467
468
469
470
471
472
473
474
475
476
477
478
479
480
481
482
483
484
485
486
487
488
489
490
491
492
493
494
495
496
497
498
499
500
501
502
503
504
505
506
507
508
509
510
511
512
513
514
515
516
517
518
519
520
521
522
523
524
525
526
527
528
529
530
531
532
533
534
535
536
537
538
539
540
541
542
543
544
545
546
547
548
549
550
551
552
553
554
555
556
557
558
559
560
561
562
563
564
565
566
567
568
569
570
571
572
573
574
575
576
577
578
579
580
581
582
583
584
585
586
587
588
589
590
591
592
593
594
595
596
597
598
599
600
601
602
603
604
605
606
607
608
609
610
611
612
613
614
615
616
617
618
619
620
621
622
623
624
625
626
627
628
629
630
631
632
633
634
635
636
637
638
639
640
641
642
643
644
645
646
647
648
649
650
651
652
653
654
655
656
657
658
659
660
661
662
663
664
665
666
667
668
669
670
671
672
673
674
675
676
677
678
679
680
681
682
683
684
685
686
687
688
689
690
691
692
693
694
695
696
697
698
699
700
701
702
703
704
705
706
707
708
709
710
711
712
713
714
715
716
717
718
719
720
721
722
723
724
725
726
727
728
729
730
731
732
733
734
735
736
737
738
739
740
741
742
743
744
745
746
747
748
749
750
751
752
753
754
755
756
757
758
759
760
761
762
763
764
765
766
767
768
769
770
771
772
773
774
775
776
777
778
779
780
781
782
783
784
785
786
787
788
789
790
791
792
793
794
795
796
797
798
799
800
801
802
803
804
805
806
807
808
809
810
811
812
813
814
815
816
817
818
819
820
821
822
823
824
825
826
827
828
829
830
831
832
833
834
835
836
837
838
839
840
841
842
843
844
845
846
847
848
849
850
851
852
853
854
855
856
857
858
859
860
861
862
863
864
865
866
867
868
869
870
871
872
873
874
875
876
877
878
879
880
881
882
883
884
885
886
887
888
889
890
891
892
893
894
895
896
897
898
899
900
901
902
903
904
905
906
907
908
909
910
911
912
913
914
915
916
917
918
919
920
921
922
923
924
925
926
927
928
929
930
931
932
933
934
935
936
937
938
939
940
941
942
943
944
945
946
947
948
949
950
951
952
953
954
955
956
957
958
959
960
961
962
963
964
965
966
967
968
969
970
971
972
973
974
975
976
977
978
979
980
981
982
983
984
985
986
987
988
989
990
991
992
993
994
995
996
997
998
999
1000
{
"contractName": "ProofVerifierKRS",
"abi": [
{
"inputs": [
{
"internalType": "address",
"name": "verifier",
"type": "address"
}
],
"stateMutability": "nonpayable",
"type": "constructor"
},
{
"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": "address",
"name": "previousOwner",
"type": "address"
},
{
"indexed": true,
"internalType": "address",
"name": "newOwner",
"type": "address"
}
],
"name": "OwnershipTransferred",
"type": "event"
},
{
"anonymous": false,
"inputs": [
{
"indexed": false,
"internalType": "address",
"name": "account",
"type": "address"
}
],
"name": "Paused",
"type": "event"
},
{
"anonymous": false,
"inputs": [
{
"indexed": false,
"internalType": "bytes32",
"name": "key",
"type": "bytes32"
},
{
"indexed": true,
"internalType": "address",
"name": "prover",
"type": "address"
}
],
"name": "ProofVerified",
"type": "event"
},
{
"anonymous": false,
"inputs": [
{
"indexed": false,
"internalType": "address",
"name": "account",
"type": "address"
}
],
"name": "Resumed",
"type": "event"
},
{
"anonymous": false,
"inputs": [
{
"indexed": false,
"internalType": "address",
"name": "to",
"type": "address"
},
{
"indexed": false,
"internalType": "bytes32",
"name": "key",
"type": "bytes32"
},
{
"indexed": false,
"internalType": "uint256",
"name": "tokenId",
"type": "uint256"
}
],
"name": "TokenMinted",
"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": [
{
"internalType": "address",
"name": "to",
"type": "address"
},
{
"internalType": "uint256",
"name": "tokenId",
"type": "uint256"
}
],
"name": "approve",
"outputs": [],
"stateMutability": "nonpayable",
"type": "function"
},
{
"inputs": [
{
"internalType": "address",
"name": "owner",
"type": "address"
}
],
"name": "balanceOf",
"outputs": [
{
"internalType": "uint256",
"name": "",
"type": "uint256"
}
],
"stateMutability": "view",
"type": "function",
"constant": true
},
{
"inputs": [],
"name": "baseURI",
"outputs": [
{
"internalType": "string",
"name": "",
"type": "string"
}
],
"stateMutability": "view",
"type": "function",
"constant": true
},
{
"inputs": [
{
"internalType": "uint256",
"name": "tokenId",
"type": "uint256"
}
],
"name": "getApproved",
"outputs": [
{
"internalType": "address",
"name": "",
"type": "address"
}
],
"stateMutability": "view",
"type": "function",
"constant": true
},
{
"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",
"constant": true
},
{
"inputs": [],
"name": "isPaused",
"outputs": [
{
"internalType": "bool",
"name": "",
"type": "bool"
}
],
"stateMutability": "view",
"type": "function",
"constant": true
},
{
"inputs": [],
"name": "name",
"outputs": [
{
"internalType": "string",
"name": "",
"type": "string"
}
],
"stateMutability": "view",
"type": "function",
"constant": true
},
{
"inputs": [],
"name": "owner",
"outputs": [
{
"internalType": "address",
"name": "",
"type": "address"
}
],
"stateMutability": "view",
"type": "function",
"constant": true
},
{
"inputs": [
{
"internalType": "uint256",
"name": "tokenId",
"type": "uint256"
}
],
"name": "ownerOf",
"outputs": [
{
"internalType": "address",
"name": "",
"type": "address"
}
],
"stateMutability": "view",
"type": "function",
"constant": true
},
{
"inputs": [],
"name": "pause",
"outputs": [],
"stateMutability": "nonpayable",
"type": "function"
},
{
"inputs": [],
"name": "resume",
"outputs": [],
"stateMutability": "nonpayable",
"type": "function"
},
{
"inputs": [
{
"internalType": "address",
"name": "from",
"type": "address"
},
{
"internalType": "address",
"name": "to",
"type": "address"
},
{
"internalType": "uint256",
"name": "tokenId",
"type": "uint256"
}
],
"name": "safeTransferFrom",
"outputs": [],
"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",
"outputs": [],
"stateMutability": "nonpayable",
"type": "function"
},
{
"inputs": [
{
"internalType": "address",
"name": "to",
"type": "address"
},
{
"internalType": "bool",
"name": "approved",
"type": "bool"
}
],
"name": "setApprovalForAll",
"outputs": [],
"stateMutability": "nonpayable",
"type": "function"
},
{
"inputs": [
{
"internalType": "bytes4",
"name": "interfaceId",
"type": "bytes4"
}
],
"name": "supportsInterface",
"outputs": [
{
"internalType": "bool",
"name": "",
"type": "bool"
}
],
"stateMutability": "view",
"type": "function",
"constant": true
},
{
"inputs": [],
"name": "symbol",
"outputs": [
{
"internalType": "string",
"name": "",
"type": "string"
}
],
"stateMutability": "view",
"type": "function",
"constant": true
},
{
"inputs": [
{
"internalType": "uint256",
"name": "index",
"type": "uint256"
}
],
"name": "tokenByIndex",
"outputs": [
{
"internalType": "uint256",
"name": "",
"type": "uint256"
}
],
"stateMutability": "view",
"type": "function",
"constant": true
},
{
"inputs": [
{
"internalType": "address",
"name": "owner",
"type": "address"
},
{
"internalType": "uint256",
"name": "index",
"type": "uint256"
}
],
"name": "tokenOfOwnerByIndex",
"outputs": [
{
"internalType": "uint256",
"name": "",
"type": "uint256"
}
],
"stateMutability": "view",
"type": "function",
"constant": true
},
{
"inputs": [
{
"internalType": "uint256",
"name": "tokenId",
"type": "uint256"
}
],
"name": "tokenURI",
"outputs": [
{
"internalType": "string",
"name": "",
"type": "string"
}
],
"stateMutability": "view",
"type": "function",
"constant": true
},
{
"inputs": [],
"name": "totalSupply",
"outputs": [
{
"internalType": "uint256",
"name": "",
"type": "uint256"
}
],
"stateMutability": "view",
"type": "function",
"constant": true
},
{
"inputs": [
{
"internalType": "address",
"name": "from",
"type": "address"
},
{
"internalType": "address",
"name": "to",
"type": "address"
},
{
"internalType": "uint256",
"name": "tokenId",
"type": "uint256"
}
],
"name": "transferFrom",
"outputs": [],
"stateMutability": "nonpayable",
"type": "function"
},
{
"inputs": [
{
"internalType": "address",
"name": "newOwner",
"type": "address"
}
],
"name": "transferOwnership",
"outputs": [],
"stateMutability": "nonpayable",
"type": "function"
},
{
"inputs": [
{
"internalType": "uint256[2]",
"name": "a",
"type": "uint256[2]"
},
{
"internalType": "uint256[2][2]",
"name": "b",
"type": "uint256[2][2]"
},
{
"internalType": "uint256[2]",
"name": "c",
"type": "uint256[2]"
},
{
"internalType": "uint256[2]",
"name": "input",
"type": "uint256[2]"
}
],
"name": "submitOwnershipProof",
"outputs": [],
"stateMutability": "nonpayable",
"type": "function"
},
{
"inputs": [
{
"internalType": "address",
"name": "to",
"type": "address"
},
{
"internalType": "uint256",
"name": "tokenId",
"type": "uint256"
}
],
"name": "mint",
"outputs": [
{
"internalType": "bool",
"name": "",
"type": "bool"
}
],
"stateMutability": "nonpayable",
"type": "function"
},
{
"inputs": [
{
"internalType": "bytes32",
"name": "key",
"type": "bytes32"
}
],
"name": "mint",
"outputs": [],
"stateMutability": "nonpayable",
"type": "function"
}
],
"metadata": "{\"compiler\":{\"version\":\"0.6.2+commit.bacdbe57\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"inputs\":[{\"internalType\":\"address\",\"name\":\"verifier\",\"type\":\"address\"}],\"stateMutability\":\"nonpayable\",\"type\":\"constructor\"},{\"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\":\"address\",\"name\":\"previousOwner\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"newOwner\",\"type\":\"address\"}],\"name\":\"OwnershipTransferred\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"address\",\"name\":\"account\",\"type\":\"address\"}],\"name\":\"Paused\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"bytes32\",\"name\":\"key\",\"type\":\"bytes32\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"prover\",\"type\":\"address\"}],\"name\":\"ProofVerified\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"address\",\"name\":\"account\",\"type\":\"address\"}],\"name\":\"Resumed\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"bytes32\",\"name\":\"key\",\"type\":\"bytes32\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"tokenId\",\"type\":\"uint256\"}],\"name\":\"TokenMinted\",\"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\":[{\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"tokenId\",\"type\":\"uint256\"}],\"name\":\"approve\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"owner\",\"type\":\"address\"}],\"name\":\"balanceOf\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"baseURI\",\"outputs\":[{\"internalType\":\"string\",\"name\":\"\",\"type\":\"string\"}],\"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\":[],\"name\":\"isPaused\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"tokenId\",\"type\":\"uint256\"}],\"name\":\"mint\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"key\",\"type\":\"bytes32\"}],\"name\":\"mint\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"name\",\"outputs\":[{\"internalType\":\"string\",\"name\":\"\",\"type\":\"string\"}],\"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\":[],\"name\":\"pause\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"resume\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"from\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"tokenId\",\"type\":\"uint256\"}],\"name\":\"safeTransferFrom\",\"outputs\":[],\"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\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"},{\"internalType\":\"bool\",\"name\":\"approved\",\"type\":\"bool\"}],\"name\":\"setApprovalForAll\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256[2]\",\"name\":\"a\",\"type\":\"uint256[2]\"},{\"internalType\":\"uint256[2][2]\",\"name\":\"b\",\"type\":\"uint256[2][2]\"},{\"internalType\":\"uint256[2]\",\"name\":\"c\",\"type\":\"uint256[2]\"},{\"internalType\":\"uint256[2]\",\"name\":\"input\",\"type\":\"uint256[2]\"}],\"name\":\"submitOwnershipProof\",\"outputs\":[],\"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\":\"index\",\"type\":\"uint256\"}],\"name\":\"tokenByIndex\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"owner\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"index\",\"type\":\"uint256\"}],\"name\":\"tokenOfOwnerByIndex\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"tokenId\",\"type\":\"uint256\"}],\"name\":\"tokenURI\",\"outputs\":[{\"internalType\":\"string\",\"name\":\"\",\"type\":\"string\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"totalSupply\",\"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\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"newOwner\",\"type\":\"address\"}],\"name\":\"transferOwnership\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"}],\"devdoc\":{\"details\":\"Contract module to mint KryptoRealState tokens. Sellers are entitle to list their properties only upon presenting a valid proof of ownership based on zk-SNARKs. * Tokens are implemented as in the ERC721 standard. see https://eips.ethereum.org/EIPS/eip-721\",\"methods\":{\"approve(address,uint256)\":{\"details\":\"Gives permission to `to` to transfer `tokenId` token to another account. The approval is cleared when the token is transferred. * Only a single account can be approved at a time, so approving the zero address clears previous approvals. * Requirements: * - The caller must own the token or be an approved operator. - `tokenId` must exist. * Emits an {Approval} event.\"},\"baseURI()\":{\"details\":\"Returns the base URI set via {_setBaseURI}.\"},\"getApproved(uint256)\":{\"details\":\"Returns the account approved for `tokenId` token.\"},\"isApprovedForAll(address,address)\":{\"details\":\"Tells whether an operator is approved by a given owner\",\"params\":{\"operator\":\"operator address which you want to query the approval of\",\"owner\":\"owner address which you want to query the approval of\"},\"returns\":{\"_0\":\"bool whether the given operator is approved by the given owner\"}},\"isPaused()\":{\"details\":\"Returns true if the contract is paused.\"},\"mint(bytes32)\":{\"details\":\"Mints a new token if a prover has previously submitted a valid proof of ownership.\"},\"name()\":{\"details\":\"Returns the token name.\"},\"owner()\":{\"details\":\"Returns the address of the current owner.\"},\"pause()\":{\"details\":\"Stops operational state.\"},\"resume()\":{\"details\":\"Resumes operational state.\"},\"setApprovalForAll(address,bool)\":{\"details\":\"Sets or unsets the approval of a given operator An operator is allowed to transfer all tokens of the sender on their behalf\",\"params\":{\"approved\":\"representing the status of the approval to be set\",\"to\":\"operator address to set the approval\"}},\"submitOwnershipProof(uint256[2],uint256[2][2],uint256[2],uint256[2])\":{\"details\":\"Submit a candidate ownership-proof for validation. * The proof consists on the points of the elliptic curve corresponding to the input.\"},\"supportsInterface(bytes4)\":{\"details\":\"Returns true if this contract implements the interface defined by `interfaceId`. See the corresponding https://eips.ethereum.org/EIPS/eip-165#how-interfaces-are-identified[EIP section]. * Time complexity O(1), guaranteed to always use less than 30 000 gas.\"},\"symbol()\":{\"details\":\"Returns the token symbol.\"},\"tokenByIndex(uint256)\":{\"details\":\"Gets the token ID at a given index of all the tokens in this contract Reverts if the index is greater or equal to the total number of tokens\",\"params\":{\"index\":\"uint256 representing the index to be accessed of the tokens list\"},\"returns\":{\"_0\":\"uint256 token ID at the given index of the tokens list\"}},\"tokenOfOwnerByIndex(address,uint256)\":{\"details\":\"Gets the token ID at a given index of the tokens list of the requested owner\",\"params\":{\"index\":\"uint256 representing the index to be accessed of the requested tokens list\",\"owner\":\"address owning the tokens list to be accessed\"},\"returns\":{\"_0\":\"uint256 token ID at the given index of the tokens list owned by the requested address\"}},\"tokenURI(uint256)\":{\"details\":\"Returns an URI for a given token ID Throws if the token ID does not exist. It may return an empty string.\",\"params\":{\"tokenId\":\"uint256 ID of the token to query\"}},\"totalSupply()\":{\"details\":\"Gets the total amount of tokens stored by the contract\",\"returns\":{\"_0\":\"uint256 representing the total amount of tokens\"}},\"transferOwnership(address)\":{\"details\":\"Transfers ownership of the contract to a new account (`newOwner`). Can only be called by the current owner.\"}}},\"userdoc\":{\"methods\":{}}},\"settings\":{\"compilationTarget\":{\"/C/Users/Diego/dev/blockchain/dapp-real-state/contracts/token/ProofVerifierKRS.sol\":\"ProofVerifierKRS\"},\"evmVersion\":\"istanbul\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\"},\"optimizer\":{\"enabled\":false,\"runs\":200},\"remappings\":[]},\"sources\":{\"/C/Users/Diego/dev/blockchain/dapp-real-state/contracts/token/ERC165.sol\":{\"keccak256\":\"0xcb595039f64d3e7f1ae680b8105f8d4d2010b73bf62355ddd0c0de824d399742\",\"urls\":[\"bzz-raw://f2e08ce1bbb0ea2628db773b0d2402d399e211953f9574da17089ae465b048d8\",\"dweb:/ipfs/QmT1vHbq7tbwvFt9uRaCULyGmFgZ1h35ft9M4j1p86S6SU\"]},\"/C/Users/Diego/dev/blockchain/dapp-real-state/contracts/token/ERC721.sol\":{\"keccak256\":\"0xcad0e0a24a93303fafd1d297a05ec681d88f531119d1aeb5f5e3acb20ef35488\",\"urls\":[\"bzz-raw://34bd2407e09c01b87a9df1eba31ffe59c2b31d49413cda70f7f62546c6edf725\",\"dweb:/ipfs/QmZfKPGE8M7FXVhuH9XdbiRiqJ6t4LSBuinJLCM16aLbX8\"]},\"/C/Users/Diego/dev/blockchain/dapp-real-state/contracts/token/ERC721Enumerable.sol\":{\"keccak256\":\"0x5470ca0c9c63f39b80e811d115c97a6a2feb86fad2d7ea742cf2b4a63087a092\",\"urls\":[\"bzz-raw://3e38c35a33a2d89df83b622d792917899ea4f11e92595f7ef4977f91336f8262\",\"dweb:/ipfs/QmPqrJ8C32jZN7FoLtmJw41m6GzQwr3vFAhCxC5N7oaE2W\"]},\"/C/Users/Diego/dev/blockchain/dapp-real-state/contracts/token/ERC721Metadata.sol\":{\"keccak256\":\"0x113368c3ababe045d1ea39987230e6542f4b0d9ea7b217e9171b1d70babb4a45\",\"urls\":[\"bzz-raw://ec4a1fd9ae09b8eca5ed039130e56326ff69cb6c5aa239cf960c8f5223c7a63e\",\"dweb:/ipfs/QmY4arb8wki1KGwMkq8NGx2LG1UQdS931V4SGDDJdvpbNv\"]},\"/C/Users/Diego/dev/blockchain/dapp-real-state/contracts/token/KryptoRealState.sol\":{\"keccak256\":\"0xa6d994309df5c53b6b55ad3b0a05aa40f76f5ca64fb4ea59b053d753a729e24b\",\"urls\":[\"bzz-raw://c3fd5e61e4b52fdbb77f3fdb7de23187667133909feffe084fa6716e6c7f3adb\",\"dweb:/ipfs/QmRyfoS7Uq1r6jhsHjUucpErHx6hWusGBuZ6vf7upwAbK1\"]},\"/C/Users/Diego/dev/blockchain/dapp-real-state/contracts/token/ProofVerifierKRS.sol\":{\"keccak256\":\"0x04e289a59bb56eb3986fed77dd5b91f36ddfdb37c34b2c91489ac8dd340c47de\",\"urls\":[\"bzz-raw://071ab13f2983cbf445de78043e7776d77b03ffc9bf994ff0f0822b38abf2df95\",\"dweb:/ipfs/QmQpgzK7sXuX2urqZLZQSjhjggeEDvcLLjagcoj4yE1grN\"]},\"/C/Users/Diego/dev/blockchain/dapp-real-state/contracts/util/Ownable.sol\":{\"keccak256\":\"0x82ef8aa91736625e9a857d74f887113396f3efff3f92487487951c01640185bd\",\"urls\":[\"bzz-raw://000e161ca84afddaf09a3f2aa5e2ac4ba231d99337dd8f2f34fb6968ed57ce95\",\"dweb:/ipfs/Qmavkk6BGxoxtrVpYe737HyuxE4WsPaFdtW39JsRiS9G4m\"]},\"/C/Users/Diego/dev/blockchain/dapp-real-state/contracts/util/Pausable.sol\":{\"keccak256\":\"0xe2cc8e8eee187921e15d10ac5d7d92c222a223b9048c6f7e9f5b93b6527f95c7\",\"urls\":[\"bzz-raw://9aeec234fe8bf28bed06a87a4cf873c5f1edd23b7719b84bc94b8b74da4ba160\",\"dweb:/ipfs/QmNuG23aVNMxMTybSiRKYvE4649qgdL1yFy3MJdBAeCd5N\"]},\"/C/Users/Diego/dev/blockchain/dapp-real-state/contracts/zokrates/code/square/verifier.sol\":{\"keccak256\":\"0xea2809bb967696406e674d57eccb6551466cc0fb033e0aba4c25a1c89c58ec4f\",\"urls\":[\"bzz-raw://a531b1eb59bb349f8d177dfc5b5088ede821f66e12614cbad1b7412bd7b105b7\",\"dweb:/ipfs/QmWaBsxggzdp74xUS1gnVuJoUBDyRktfuioGYq7KpN6DzL\"]},\"@openzeppelin/contracts/math/SafeMath.sol\":{\"keccak256\":\"0x9a9cf02622cd7a64261b10534fc3260449da25c98c9e96d1b4ae8110a20e5806\",\"urls\":[\"bzz-raw://2df142592d1dc267d9549049ee3317fa190d2f87eaa565f86ab05ec83f7ab8f5\",\"dweb:/ipfs/QmSkJtcfWo7c42KnL5hho6GFxK6HRNV91XABx1P7xDtfLV\"]},\"@openzeppelin/contracts/token/ERC721/IERC721Receiver.sol\":{\"keccak256\":\"0x321ee37ef4925020aa818a03ec7fe48e057561f65ab009a84f6c20c86026ade7\",\"urls\":[\"bzz-raw://01f9d74a17a56024984251b97e428e24c9d3abffbae5bd290f0ec263c82e9694\",\"dweb:/ipfs/QmRryCuuXu2ukrDmatB8TqdEhPLiK6NBRt41RiPUaX1qKy\"]},\"@openzeppelin/contracts/utils/Address.sol\":{\"keccak256\":\"0xdfb4f812600ba4ce6738c35584ceb8c9433472583051b48ba5b1f66cb758a498\",\"urls\":[\"bzz-raw://df02dffe1c1de089d9b4f6192f0dcf464526f2230f420b3deec4645e0cdd2bff\",\"dweb:/ipfs/QmcqXGAU3KJqwrgUVoGJ2W8osomhSJ4R5kdsRpbuW3fELS\"]},\"@openzeppelin/contracts/utils/Counters.sol\":{\"keccak256\":\"0x2d68b8e6425249cd05cc0a66ea50cb5b8d10cbdac59c6de834e1002232813faf\",\"urls\":[\"bzz-raw://e3ce6b6ac17c67bba01e9c8c778f82f68fd4823bd083359cdd03040b70eeeba3\",\"dweb:/ipfs/QmX4t1jWwKaAkacvmQxEG5rBtLXg3EHw6pRjKhMZR8iw3n\"]},\"@openzeppelin/contracts/utils/Strings.sol\":{\"keccak256\":\"0x79484115dbfa737054f73e041009a02eeb434dd81be5d684bf4255ad3b5ab558\",\"urls\":[\"bzz-raw://12c119699463450c2544f5b9d8709b5e9e9164c62948a79c3ec53423a051d969\",\"dweb:/ipfs/QmPJduzSAaekq447QeFqAp3E7dc8CnNk5ajofckJ4ahA7Q\"]}},\"version\":1}",
"bytecode": "0x60806040523480156200001157600080fd5b5060405162003ea438038062003ea4833981810160405260208110156200003757600080fd5b81019080805190602001909291905050506040518060400160405280600f81526020017f4b727970746f5265616c537461746500000000000000000000000000000000008152506040518060400160405280600381526020017f4b525300000000000000000000000000000000000000000000000000000000008152506040518060600160405280603f815260200162003e65603f9139620000e66301ffc9a760e01b6200029d60201b60201c565b33600160006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16600073ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a36000600160146101000a81548160ff021916908315150217905550620001d76380ac58cd60e01b6200029d60201b60201c565b620001ef63780e9d6360e01b6200029d60201b60201c565b82600a908051906020019062000207929190620003a6565b5081600b908051906020019062000220929190620003a6565b5080600c908051906020019062000239929190620003a6565b5062000252635b5e139f60e01b6200029d60201b60201c565b50505080600e60006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055505062000455565b63ffffffff60e01b817bffffffffffffffffffffffffffffffffffffffffffffffffffffffff191614156200033a576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252601c8152602001807f4552433136353a20696e76616c696420696e746572666163652049440000000081525060200191505060405180910390fd5b6001600080837bffffffffffffffffffffffffffffffffffffffffffffffffffffffff19167bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916815260200190815260200160002060006101000a81548160ff02191690831515021790555050565b828054600181600116156101000203166002900490600052602060002090601f016020900481019282601f10620003e957805160ff19168380011785556200041a565b828001600101855582156200041a579182015b8281111562000419578251825591602001919060010190620003fc565b5b5090506200042991906200042d565b5090565b6200045291905b808211156200044e57600081600090555060010162000434565b5090565b90565b613a0080620004656000396000f3fe608060405234801561001057600080fd5b50600436106101735760003560e01c80636c0360eb116100de578063adf2cead11610097578063b9ee0fe511610071578063b9ee0fe5146108ef578063c87b56dd1461093c578063e985e9c5146109e3578063f2fde38b14610a5f57610173565b8063adf2cead1461079a578063b187bd26146107c8578063b88d4fde146107ea57610173565b80636c0360eb1461059857806370a082311461061b5780638456cb59146106735780638da5cb5b1461067d57806395d89b41146106c7578063a22cb4651461074a57610173565b806323b872dd1161013057806323b872dd146103445780632f745c59146103b257806340c10f191461041457806342842e0e1461047a5780634f6ccce7146104e85780636352211e1461052a57610173565b806301ffc9a714610178578063046f7da2146101dd57806306fdde03146101e7578063081812fc1461026a578063095ea7b3146102d857806318160ddd14610326575b600080fd5b6101c36004803603602081101561018e57600080fd5b8101908080357bffffffffffffffffffffffffffffffffffffffffffffffffffffffff19169060200190929190505050610aa3565b604051808215151515815260200191505060405180910390f35b6101e5610b0a565b005b6101ef610cb2565b6040518080602001828103825283818151815260200191508051906020019080838360005b8381101561022f578082015181840152602081019050610214565b50505050905090810190601f16801561025c5780820380516001836020036101000a031916815260200191505b509250505060405180910390f35b6102966004803603602081101561028057600080fd5b8101908080359060200190929190505050610d54565b604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b610324600480360360408110156102ee57600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff16906020019092919080359060200190929190505050610def565b005b61032e61102e565b6040518082815260200191505060405180910390f35b6103b06004803603606081101561035a57600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803573ffffffffffffffffffffffffffffffffffffffff1690602001909291908035906020019092919050505061103b565b005b6103fe600480360360408110156103c857600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff1690602001909291908035906020019092919050505061105e565b6040518082815260200191505060405180910390f35b6104606004803603604081101561042a57600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803590602001909291905050506110d1565b604051808215151515815260200191505060405180910390f35b6104e66004803603606081101561049057600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803573ffffffffffffffffffffffffffffffffffffffff16906020019092919080359060200190929190505050611219565b005b610514600480360360208110156104fe57600080fd5b8101908080359060200190929190505050611239565b6040518082815260200191505060405180910390f35b6105566004803603602081101561054057600080fd5b810190808035906020019092919050505061126d565b604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b6105a06112aa565b6040518080602001828103825283818151815260200191508051906020019080838360005b838110156105e05780820151818401526020810190506105c5565b50505050905090810190601f16801561060d5780820380516001836020036101000a031916815260200191505b509250505060405180910390f35b61065d6004803603602081101561063157600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff16906020019092919050505061134c565b6040518082815260200191505060405180910390f35b61067b611421565b005b6106856115c9565b604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b6106cf6115f3565b6040518080602001828103825283818151815260200191508051906020019080838360005b8381101561070f5780820151818401526020810190506106f4565b50505050905090810190601f16801561073c5780820380516001836020036101000a031916815260200191505b509250505060405180910390f35b6107986004803603604081101561076057600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803515159060200190929190505050611695565b005b6107c6600480360360208110156107b057600080fd5b81019080803590602001909291905050506117cf565b005b6107d06119ab565b604051808215151515815260200191505060405180910390f35b6108ed6004803603608081101561080057600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803590602001909291908035906020019064010000000081111561086757600080fd5b82018360208201111561087957600080fd5b8035906020019184600183028401116401000000008311171561089b57600080fd5b91908080601f016020809104026020016040519081016040528093929190818152602001838380828437600081840152601f19601f8201169050808301925050505050505091929192905050506119c2565b005b61093a600480360361014081101561090657600080fd5b81019080806040019091929192908060800190919291929080604001909192919290806040019091929192905050506119e8565b005b6109686004803603602081101561095257600080fd5b8101908080359060200190929190505050611e89565b6040518080602001828103825283818151815260200191508051906020019080838360005b838110156109a857808201518184015260208101905061098d565b50505050905090810190601f1680156109d55780820380516001836020036101000a031916815260200191505b509250505060405180910390f35b610a45600480360360408110156109f957600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050611f9c565b604051808215151515815260200191505060405180910390f35b610aa160048036036020811015610a7557600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050612030565b005b6000806000837bffffffffffffffffffffffffffffffffffffffffffffffffffffffff19167bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916815260200190815260200160002060009054906101000a900460ff169050919050565b600160149054906101000a900460ff16610b6f576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260228152602001806138f36022913960400191505060405180910390fd5b3373ffffffffffffffffffffffffffffffffffffffff16600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610c32576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260208152602001807f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e657281525060200191505060405180910390fd5b6000600160146101000a81548160ff0219169083151502179055507f5d287a3a02ade76478d8449abebe9dc45b38421247132b68127dd3cd6c05f3cf33604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390a1565b6060600a8054600181600116156101000203166002900480601f016020809104026020016040519081016040528092919081815260200182805460018160011615610100020316600290048015610d4a5780601f10610d1f57610100808354040283529160200191610d4a565b820191906000526020600020905b815481529060010190602001808311610d2d57829003601f168201915b5050505050905090565b6000610d5f82612239565b610db4576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252602c8152602001806137f7602c913960400191505060405180910390fd5b6003600083815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff169050919050565b610df881612239565b610e4d576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252602d81526020018061399e602d913960400191505060405180910390fd5b6000610e588261126d565b90508073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff161415610edf576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260218152602001806138a76021913960400191505060405180910390fd5b8073ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff161480610f1f5750610f1e8133611f9c565b5b610f74576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260388152602001806137956038913960400191505060405180910390fd5b826003600084815260200190815260200160002060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550818373ffffffffffffffffffffffffffffffffffffffff16610fe78461126d565b73ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92560405160405180910390a4505050565b6000600880549050905090565b61104533826122ab565b61104e57600080fd5b611059838383612340565b505050565b60006110698361134c565b821061107457600080fd5b600660008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002082815481106110be57fe5b9060005260206000200154905092915050565b60003373ffffffffffffffffffffffffffffffffffffffff16600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614611196576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260208152602001807f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e657281525060200191505060405180910390fd5b600160149054906101000a900460ff16156111fc576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260268152602001806139786026913960400191505060405180910390fd5b6112068383612364565b61120f82612385565b6001905092915050565b611234838383604051806020016040528060008152506119c2565b505050565b600061124361102e565b821061124e57600080fd5b6008828154811061125b57fe5b90600052602060002001549050919050565b60006002600083815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff169050919050565b6060600c8054600181600116156101000203166002900480601f0160208091040260200160405190810160405280929190818152602001828054600181600116156101000203166002900480156113425780601f1061131757610100808354040283529160200191611342565b820191906000526020600020905b81548152906001019060200180831161132557829003601f168201915b5050505050905090565b60008073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614156113d3576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252602a8152602001806137cd602a913960400191505060405180910390fd5b61141a600460008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206124dc565b9050919050565b600160149054906101000a900460ff1615611487576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260268152602001806139786026913960400191505060405180910390fd5b3373ffffffffffffffffffffffffffffffffffffffff16600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff161461154a576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260208152602001807f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e657281525060200191505060405180910390fd5b60018060146101000a81548160ff0219169083151502179055507f62e78cea01bee320cd4e420270b5ea74000d11b0c9f74754ebdbfc544b05a25833604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390a1565b6000600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b6060600b8054600181600116156101000203166002900480601f01602080910402602001604051908101604052809291908181526020018280546001816001161561010002031660029004801561168b5780601f106116605761010080835404028352916020019161168b565b820191906000526020600020905b81548152906001019060200180831161166e57829003601f168201915b5050505050905090565b3373ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614156116ce57600080fd5b80600560003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055508173ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff167f17307eab39ab6107e8899845ad3d59bd9653f200f220920489ca2b5937696c3183604051808215151515815260200191505060405180910390a35050565b6117d8816124ea565b61182d576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252602f8152602001806136aa602f913960400191505060405180910390fd5b61183681612578565b61188b576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260328152602001806139156032913960400191505060405180910390fd5b3373ffffffffffffffffffffffffffffffffffffffff166118ab82612606565b6020015173ffffffffffffffffffffffffffffffffffffffff161461191b576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260348152602001806136ff6034913960400191505060405180910390fd5b611924816126ea565b611931338260001c6110d1565b507f07f44d32175369544305976bd326a6e5e99ede758a9980de84c645babf62096933828360001c604051808473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001838152602001828152602001935050505060405180910390a150565b6000600160149054906101000a900460ff16905090565b6119cd84848461103b565b6119d98484848461273d565b6119e257600080fd5b50505050565b6000846000600281106119f757fe5b602002013585600160028110611a0957fe5b602002013585600060028110611a1b57fe5b60400201600060028110611a2b57fe5b602002013586600060028110611a3d57fe5b60400201600160028110611a4d57fe5b602002013587600160028110611a5f57fe5b60400201600060028110611a6f57fe5b602002013588600160028110611a8157fe5b60400201600160028110611a9157fe5b602002013588600060028110611aa357fe5b602002013589600160028110611ab557fe5b602002013589600060028110611ac757fe5b60200201358a600160028110611ad957fe5b6020020135604051602001808b81526020018a81526020018981526020018881526020018781526020018681526020018581526020018481526020018381526020018281526020019a5050505050505050505050604051602081830303815290604052805190602001209050611b4e816124ea565b15611ba4576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252602b8152602001806138c8602b913960400191505060405180910390fd5b611cc4856002806020026040519081016040528092919082600260200280828437600081840152601f19601f82011690508083019250505050505085600280602002604051908101604052809291906000905b82821015611c4b578382604002016002806020026040519081016040528092919082600260200280828437600081840152601f19601f82011690508083019250505050505081526020019060010190611bf7565b50505050856002806020026040519081016040528092919082600260200280828437600081840152601f19601f820116905080830192505050505050856002806020026040519081016040528092919082600260200280828437600081840152601f19601f820116905080830192505050505050612926565b611d19576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252603e815260200180613757603e913960400191505060405180910390fd5b600f60405180608001604052808381526020013373ffffffffffffffffffffffffffffffffffffffff1681526020016001151581526020016001151581525090806001815401808255809150506001900390600052602060002090600202016000909190919091506000820151816000015560208201518160010160006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555060408201518160010160146101000a81548160ff02191690831515021790555060608201518160010160156101000a81548160ff02191690831515021790555050506001600f805490500360106000838152602001908152602001600020819055503373ffffffffffffffffffffffffffffffffffffffff167f60d9367e24cc6f7fa9630b6542cd57edc20576d1a1169ff87a9eb34680a56acf826040518082815260200191505060405180910390a25050505050565b6060611e9482612239565b611ee9576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252602f815260200180613878602f913960400191505060405180910390fd5b600d60008381526020019081526020016000208054600181600116156101000203166002900480601f016020809104026020016040519081016040528092919081815260200182805460018160011615610100020316600290048015611f905780601f10611f6557610100808354040283529160200191611f90565b820191906000526020600020905b815481529060010190602001808311611f7357829003601f168201915b50505050509050919050565b6000600560008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16905092915050565b3373ffffffffffffffffffffffffffffffffffffffff16600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16146120f3576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260208152602001807f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e657281525060200191505060405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff161415612179576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260268152602001806136d96026913960400191505060405180910390fd5b80600160006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508073ffffffffffffffffffffffffffffffffffffffff16600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a350565b6000806002600084815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff169050600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff161415915050919050565b6000806122b78361126d565b90508073ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff16148061232657508373ffffffffffffffffffffffffffffffffffffffff1661230e84610d54565b73ffffffffffffffffffffffffffffffffffffffff16145b8061233757506123368185611f9c565b5b91505092915050565b61234b838383612abb565b6123558382612d75565b61235f8282612f1e565b505050565b61236e8282612fe2565b6123788282612f1e565b612381816131fa565b5050565b61238e81612239565b6123e3576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252602c815260200180613823602c913960400191505060405180910390fd5b600c6123ee82613243565b604051602001808380546001816001161561010002031660029004801561244c5780601f1061242a57610100808354040283529182019161244c565b820191906000526020600020905b815481529060010190602001808311612438575b505082805190602001908083835b6020831061247d578051825260208201915060208101905060208303925061245a565b6001836020036101000a03801982511681845116808217855250505050505090500192505050604051602081830303815290604052600d600083815260200190815260200160002090805190602001906124d89291906135bf565b5050565b600081600001549050919050565b600080600f8054905014156125025760009050612573565b600060106000848152602001908152602001600020549050600f818154811061252757fe5b906000526020600020906002020160010160159054906101000a900460ff16801561256f575082600f828154811061255b57fe5b906000526020600020906002020160000154145b9150505b919050565b600080600f8054905014156125905760009050612601565b600060106000848152602001908152602001600020549050600f81815481106125b557fe5b906000526020600020906002020160010160149054906101000a900460ff1680156125fd575082600f82815481106125e957fe5b906000526020600020906002020160000154145b9150505b919050565b61260e61363f565b600060106000848152602001908152602001600020549050600f818154811061263357fe5b9060005260206000209060020201604051806080016040529081600082015481526020016001820160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020016001820160149054906101000a900460ff161515151581526020016001820160159054906101000a900460ff161515151581525050915050919050565b6000601060008381526020019081526020016000205490506000600f828154811061271157fe5b906000526020600020906002020160010160146101000a81548160ff0219169083151502179055505050565b600061275e8473ffffffffffffffffffffffffffffffffffffffff16613373565b61276b576001905061291e565b60008473ffffffffffffffffffffffffffffffffffffffff1663150b7a02338887876040518563ffffffff1660e01b8152600401808573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020018473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200183815260200180602001828103825283818151815260200191508051906020019080838360005b8381101561284657808201518184015260208101905061282b565b50505050905090810190601f1680156128735780820380516001836020036101000a031916815260200191505b5095505050505050602060405180830381600087803b15801561289557600080fd5b505af11580156128a9573d6000803e3d6000fd5b505050506040513d60208110156128bf57600080fd5b8101908080519060200190929190505050905063150b7a0260e01b7bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916817bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916149150505b949350505050565b6000600e60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663621e9ec0868686866040518563ffffffff1660e01b81526004018085600260200280838360005b838110156129a4578082015181840152602081019050612989565b505050509050018460026000925b818410156129f85782846020020151600260200280838360005b838110156129e75780820151818401526020810190506129cc565b5050505090500192600101926129b2565b9250505083600260200280838360005b83811015612a23578082015181840152602081019050612a08565b5050505090500182600260200280838360005b83811015612a51578082015181840152602081019050612a36565b5050505090500194505050505060206040518083038186803b158015612a7657600080fd5b505afa158015612a8a573d6000803e3d6000fd5b505050506040513d6020811015612aa057600080fd5b81019080805190602001909291905050509050949350505050565b612ac533826122ab565b612b1a576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260318152602001806139476031913960400191505060405180910390fd5b8273ffffffffffffffffffffffffffffffffffffffff16612b3a8261126d565b73ffffffffffffffffffffffffffffffffffffffff1614612ba6576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252602981526020018061384f6029913960400191505060405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff161415612c2c576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260248152602001806137336024913960400191505060405180910390fd5b612c35816133be565b816002600083815260200190815260200160002060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550612cce600460008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002061347c565b612d15600460008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002061349f565b808273ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef60405160405180910390a4505050565b6000612dcd6001600660008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020805490506134b590919063ffffffff16565b9050600060076000848152602001908152602001600020549050818114612eba576000600660008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000208381548110612e3a57fe5b9060005260206000200154905080600660008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000208381548110612e9257fe5b9060005260206000200181905550816007600083815260200190815260200160002081905550505b600660008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020805480612f0257fe5b6001900381819060005260206000200160009055905550505050565b600660008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020805490506007600083815260200190815260200160002081905550600660008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000208190806001815401808255809150506001900390600052602060002001600090919091909150555050565b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff161415613085576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260208152602001807f4552433732313a206d696e7420746f20746865207a65726f206164647265737381525060200191505060405180910390fd5b61308e81612239565b15613101576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252601c8152602001807f4552433732313a20746f6b656e20616c7265616479206d696e7465640000000081525060200191505060405180910390fd5b816002600083815260200190815260200160002060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555061319a600460008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002061349f565b808273ffffffffffffffffffffffffffffffffffffffff16600073ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef60405160405180910390a45050565b6008805490506009600083815260200190815260200160002081905550600881908060018154018082558091505060019003906000526020600020016000909190919091505550565b6060600082141561328b576040518060400160405280600181526020017f3000000000000000000000000000000000000000000000000000000000000000815250905061336e565b600082905060005b600082146132b5578080600101915050600a82816132ad57fe5b049150613293565b6060816040519080825280601f01601f1916602001820160405280156132ea5781602001600182028038833980820191505090505b50905060006001830390508593505b6000841461336657600a848161330b57fe5b0660300160f81b8282806001900393508151811061332557fe5b60200101907effffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916908160001a905350600a848161335e57fe5b0493506132f9565b819450505050505b919050565b60008060007fc5d2460186f7233c927e7db2dcc703c0e500b653ca82273b7bfad8045d85a47060001b9050833f91508082141580156133b557506000801b8214155b92505050919050565b600073ffffffffffffffffffffffffffffffffffffffff166003600083815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16146134795760006003600083815260200190815260200160002060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055505b50565b613494600182600001546134b590919063ffffffff16565b816000018190555050565b6001816000016000828254019250508190555050565b60006134f783836040518060400160405280601e81526020017f536166654d6174683a207375627472616374696f6e206f766572666c6f7700008152506134ff565b905092915050565b60008383111582906135ac576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825283818151815260200191508051906020019080838360005b83811015613571578082015181840152602081019050613556565b50505050905090810190601f16801561359e5780820380516001836020036101000a031916815260200191505b509250505060405180910390fd5b5060008385039050809150509392505050565b828054600181600116156101000203166002900490600052602060002090601f016020900481019282601f1061360057805160ff191683800117855561362e565b8280016001018555821561362e579182015b8281111561362d578251825591602001919060010190613612565b5b50905061363b9190613684565b5090565b604051806080016040528060008019168152602001600073ffffffffffffffffffffffffffffffffffffffff1681526020016000151581526020016000151581525090565b6136a691905b808211156136a257600081600090555060010161368a565b5090565b9056fe4b727970746f5265616c53746174655a4b503a20736f6c7574696f6e206b657920646f6573206e6f742065786973744f776e61626c653a206e6577206f776e657220697320746865207a65726f20616464726573734b727970746f5265616c53746174655a4b503a206f6e6c79207468652070726f7665722063616e206d696e74206120746f6b656e4552433732313a207472616e7366657220746f20746865207a65726f20616464726573734b727970746f5265616c53746174655a4b503a20736f6c7574696f6e2070726f6f66206973206e6f742076616c696420666f72207468617420696e7075744552433732313a20617070726f76652063616c6c6572206973206e6f74206f776e6572206e6f7220617070726f76656420666f7220616c6c4552433732313a2062616c616e636520717565727920666f7220746865207a65726f20616464726573734552433732313a20617070726f76656420717565727920666f72206e6f6e6578697374656e7420746f6b656e4552433732314d657461646174613a2055524920736574206f66206e6f6e6578697374656e7420746f6b656e4552433732313a207472616e73666572206f6620746f6b656e2074686174206973206e6f74206f776e4552433732314d657461646174613a2055524920717565727920666f72206e6f6e6578697374656e7420746f6b656e4552433732313a20617070726f76616c20746f2063757272656e74206f776e65724b727970746f5265616c53746174655a4b503a20736f6c7574696f6e2065786973747320616c72656164795061757361626c653a206578706563746564202770617573656427207374617475734b727970746f5265616c53746174655a4b503a20736f6c7574696f6e206b6579206973206e6f742072656465656d61626c654552433732313a207472616e736665722063616c6c6572206973206e6f74206f776e6572206e6f7220617070726f7665645061757361626c653a20657870656374656420276e6f742070617573656427207374617475734552433732313a20617070726f7665207265717565737420666f72206e6f6e6578697374656e7420746f6b656ea264697066735822122079252348c132e7085e5c889298a61649f0902119aa134f69ef9d0556abbbf3ad64736f6c6343000602003368747470733a2f2f73332d75732d776573742d322e616d617a6f6e6177732e636f6d2f756461636974792d626c6f636b636861696e2f63617073746f6e652f",
"deployedBytecode": "0x608060405234801561001057600080fd5b50600436106101735760003560e01c80636c0360eb116100de578063adf2cead11610097578063b9ee0fe511610071578063b9ee0fe5146108ef578063c87b56dd1461093c578063e985e9c5146109e3578063f2fde38b14610a5f57610173565b8063adf2cead1461079a578063b187bd26146107c8578063b88d4fde146107ea57610173565b80636c0360eb1461059857806370a082311461061b5780638456cb59146106735780638da5cb5b1461067d57806395d89b41146106c7578063a22cb4651461074a57610173565b806323b872dd1161013057806323b872dd146103445780632f745c59146103b257806340c10f191461041457806342842e0e1461047a5780634f6ccce7146104e85780636352211e1461052a57610173565b806301ffc9a714610178578063046f7da2146101dd57806306fdde03146101e7578063081812fc1461026a578063095ea7b3146102d857806318160ddd14610326575b600080fd5b6101c36004803603602081101561018e57600080fd5b8101908080357bffffffffffffffffffffffffffffffffffffffffffffffffffffffff19169060200190929190505050610aa3565b604051808215151515815260200191505060405180910390f35b6101e5610b0a565b005b6101ef610cb2565b6040518080602001828103825283818151815260200191508051906020019080838360005b8381101561022f578082015181840152602081019050610214565b50505050905090810190601f16801561025c5780820380516001836020036101000a031916815260200191505b509250505060405180910390f35b6102966004803603602081101561028057600080fd5b8101908080359060200190929190505050610d54565b604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b610324600480360360408110156102ee57600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff16906020019092919080359060200190929190505050610def565b005b61032e61102e565b6040518082815260200191505060405180910390f35b6103b06004803603606081101561035a57600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803573ffffffffffffffffffffffffffffffffffffffff1690602001909291908035906020019092919050505061103b565b005b6103fe600480360360408110156103c857600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff1690602001909291908035906020019092919050505061105e565b6040518082815260200191505060405180910390f35b6104606004803603604081101561042a57600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803590602001909291905050506110d1565b604051808215151515815260200191505060405180910390f35b6104e66004803603606081101561049057600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803573ffffffffffffffffffffffffffffffffffffffff16906020019092919080359060200190929190505050611219565b005b610514600480360360208110156104fe57600080fd5b8101908080359060200190929190505050611239565b6040518082815260200191505060405180910390f35b6105566004803603602081101561054057600080fd5b810190808035906020019092919050505061126d565b604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b6105a06112aa565b6040518080602001828103825283818151815260200191508051906020019080838360005b838110156105e05780820151818401526020810190506105c5565b50505050905090810190601f16801561060d5780820380516001836020036101000a031916815260200191505b509250505060405180910390f35b61065d6004803603602081101561063157600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff16906020019092919050505061134c565b6040518082815260200191505060405180910390f35b61067b611421565b005b6106856115c9565b604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b6106cf6115f3565b6040518080602001828103825283818151815260200191508051906020019080838360005b8381101561070f5780820151818401526020810190506106f4565b50505050905090810190601f16801561073c5780820380516001836020036101000a031916815260200191505b509250505060405180910390f35b6107986004803603604081101561076057600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803515159060200190929190505050611695565b005b6107c6600480360360208110156107b057600080fd5b81019080803590602001909291905050506117cf565b005b6107d06119ab565b604051808215151515815260200191505060405180910390f35b6108ed6004803603608081101561080057600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803590602001909291908035906020019064010000000081111561086757600080fd5b82018360208201111561087957600080fd5b8035906020019184600183028401116401000000008311171561089b57600080fd5b91908080601f016020809104026020016040519081016040528093929190818152602001838380828437600081840152601f19601f8201169050808301925050505050505091929192905050506119c2565b005b61093a600480360361014081101561090657600080fd5b81019080806040019091929192908060800190919291929080604001909192919290806040019091929192905050506119e8565b005b6109686004803603602081101561095257600080fd5b8101908080359060200190929190505050611e89565b6040518080602001828103825283818151815260200191508051906020019080838360005b838110156109a857808201518184015260208101905061098d565b50505050905090810190601f1680156109d55780820380516001836020036101000a031916815260200191505b509250505060405180910390f35b610a45600480360360408110156109f957600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050611f9c565b604051808215151515815260200191505060405180910390f35b610aa160048036036020811015610a7557600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050612030565b005b6000806000837bffffffffffffffffffffffffffffffffffffffffffffffffffffffff19167bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916815260200190815260200160002060009054906101000a900460ff169050919050565b600160149054906101000a900460ff16610b6f576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260228152602001806138f36022913960400191505060405180910390fd5b3373ffffffffffffffffffffffffffffffffffffffff16600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610c32576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260208152602001807f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e657281525060200191505060405180910390fd5b6000600160146101000a81548160ff0219169083151502179055507f5d287a3a02ade76478d8449abebe9dc45b38421247132b68127dd3cd6c05f3cf33604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390a1565b6060600a8054600181600116156101000203166002900480601f016020809104026020016040519081016040528092919081815260200182805460018160011615610100020316600290048015610d4a5780601f10610d1f57610100808354040283529160200191610d4a565b820191906000526020600020905b815481529060010190602001808311610d2d57829003601f168201915b5050505050905090565b6000610d5f82612239565b610db4576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252602c8152602001806137f7602c913960400191505060405180910390fd5b6003600083815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff169050919050565b610df881612239565b610e4d576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252602d81526020018061399e602d913960400191505060405180910390fd5b6000610e588261126d565b90508073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff161415610edf576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260218152602001806138a76021913960400191505060405180910390fd5b8073ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff161480610f1f5750610f1e8133611f9c565b5b610f74576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260388152602001806137956038913960400191505060405180910390fd5b826003600084815260200190815260200160002060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550818373ffffffffffffffffffffffffffffffffffffffff16610fe78461126d565b73ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92560405160405180910390a4505050565b6000600880549050905090565b61104533826122ab565b61104e57600080fd5b611059838383612340565b505050565b60006110698361134c565b821061107457600080fd5b600660008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002082815481106110be57fe5b9060005260206000200154905092915050565b60003373ffffffffffffffffffffffffffffffffffffffff16600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614611196576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260208152602001807f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e657281525060200191505060405180910390fd5b600160149054906101000a900460ff16156111fc576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260268152602001806139786026913960400191505060405180910390fd5b6112068383612364565b61120f82612385565b6001905092915050565b611234838383604051806020016040528060008152506119c2565b505050565b600061124361102e565b821061124e57600080fd5b6008828154811061125b57fe5b90600052602060002001549050919050565b60006002600083815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff169050919050565b6060600c8054600181600116156101000203166002900480601f0160208091040260200160405190810160405280929190818152602001828054600181600116156101000203166002900480156113425780601f1061131757610100808354040283529160200191611342565b820191906000526020600020905b81548152906001019060200180831161132557829003601f168201915b5050505050905090565b60008073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614156113d3576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252602a8152602001806137cd602a913960400191505060405180910390fd5b61141a600460008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206124dc565b9050919050565b600160149054906101000a900460ff1615611487576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260268152602001806139786026913960400191505060405180910390fd5b3373ffffffffffffffffffffffffffffffffffffffff16600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff161461154a576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260208152602001807f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e657281525060200191505060405180910390fd5b60018060146101000a81548160ff0219169083151502179055507f62e78cea01bee320cd4e420270b5ea74000d11b0c9f74754ebdbfc544b05a25833604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390a1565b6000600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b6060600b8054600181600116156101000203166002900480601f01602080910402602001604051908101604052809291908181526020018280546001816001161561010002031660029004801561168b5780601f106116605761010080835404028352916020019161168b565b820191906000526020600020905b81548152906001019060200180831161166e57829003601f168201915b5050505050905090565b3373ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614156116ce57600080fd5b80600560003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055508173ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff167f17307eab39ab6107e8899845ad3d59bd9653f200f220920489ca2b5937696c3183604051808215151515815260200191505060405180910390a35050565b6117d8816124ea565b61182d576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252602f8152602001806136aa602f913960400191505060405180910390fd5b61183681612578565b61188b576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260328152602001806139156032913960400191505060405180910390fd5b3373ffffffffffffffffffffffffffffffffffffffff166118ab82612606565b6020015173ffffffffffffffffffffffffffffffffffffffff161461191b576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260348152602001806136ff6034913960400191505060405180910390fd5b611924816126ea565b611931338260001c6110d1565b507f07f44d32175369544305976bd326a6e5e99ede758a9980de84c645babf62096933828360001c604051808473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001838152602001828152602001935050505060405180910390a150565b6000600160149054906101000a900460ff16905090565b6119cd84848461103b565b6119d98484848461273d565b6119e257600080fd5b50505050565b6000846000600281106119f757fe5b602002013585600160028110611a0957fe5b602002013585600060028110611a1b57fe5b60400201600060028110611a2b57fe5b602002013586600060028110611a3d57fe5b60400201600160028110611a4d57fe5b602002013587600160028110611a5f57fe5b60400201600060028110611a6f57fe5b602002013588600160028110611a8157fe5b60400201600160028110611a9157fe5b602002013588600060028110611aa357fe5b602002013589600160028110611ab557fe5b602002013589600060028110611ac757fe5b60200201358a600160028110611ad957fe5b6020020135604051602001808b81526020018a81526020018981526020018881526020018781526020018681526020018581526020018481526020018381526020018281526020019a5050505050505050505050604051602081830303815290604052805190602001209050611b4e816124ea565b15611ba4576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252602b8152602001806138c8602b913960400191505060405180910390fd5b611cc4856002806020026040519081016040528092919082600260200280828437600081840152601f19601f82011690508083019250505050505085600280602002604051908101604052809291906000905b82821015611c4b578382604002016002806020026040519081016040528092919082600260200280828437600081840152601f19601f82011690508083019250505050505081526020019060010190611bf7565b50505050856002806020026040519081016040528092919082600260200280828437600081840152601f19601f820116905080830192505050505050856002806020026040519081016040528092919082600260200280828437600081840152601f19601f820116905080830192505050505050612926565b611d19576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252603e815260200180613757603e913960400191505060405180910390fd5b600f60405180608001604052808381526020013373ffffffffffffffffffffffffffffffffffffffff1681526020016001151581526020016001151581525090806001815401808255809150506001900390600052602060002090600202016000909190919091506000820151816000015560208201518160010160006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555060408201518160010160146101000a81548160ff02191690831515021790555060608201518160010160156101000a81548160ff02191690831515021790555050506001600f805490500360106000838152602001908152602001600020819055503373ffffffffffffffffffffffffffffffffffffffff167f60d9367e24cc6f7fa9630b6542cd57edc20576d1a1169ff87a9eb34680a56acf826040518082815260200191505060405180910390a25050505050565b6060611e9482612239565b611ee9576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252602f815260200180613878602f913960400191505060405180910390fd5b600d60008381526020019081526020016000208054600181600116156101000203166002900480601f016020809104026020016040519081016040528092919081815260200182805460018160011615610100020316600290048015611f905780601f10611f6557610100808354040283529160200191611f90565b820191906000526020600020905b815481529060010190602001808311611f7357829003601f168201915b50505050509050919050565b6000600560008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16905092915050565b3373ffffffffffffffffffffffffffffffffffffffff16600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16146120f3576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260208152602001807f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e657281525060200191505060405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff161415612179576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260268152602001806136d96026913960400191505060405180910390fd5b80600160006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508073ffffffffffffffffffffffffffffffffffffffff16600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a350565b6000806002600084815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff169050600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff161415915050919050565b6000806122b78361126d565b90508073ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff16148061232657508373ffffffffffffffffffffffffffffffffffffffff1661230e84610d54565b73ffffffffffffffffffffffffffffffffffffffff16145b8061233757506123368185611f9c565b5b91505092915050565b61234b838383612abb565b6123558382612d75565b61235f8282612f1e565b505050565b61236e8282612fe2565b6123788282612f1e565b612381816131fa565b5050565b61238e81612239565b6123e3576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252602c815260200180613823602c913960400191505060405180910390fd5b600c6123ee82613243565b604051602001808380546001816001161561010002031660029004801561244c5780601f1061242a57610100808354040283529182019161244c565b820191906000526020600020905b815481529060010190602001808311612438575b505082805190602001908083835b6020831061247d578051825260208201915060208101905060208303925061245a565b6001836020036101000a03801982511681845116808217855250505050505090500192505050604051602081830303815290604052600d600083815260200190815260200160002090805190602001906124d89291906135bf565b5050565b600081600001549050919050565b600080600f8054905014156125025760009050612573565b600060106000848152602001908152602001600020549050600f818154811061252757fe5b906000526020600020906002020160010160159054906101000a900460ff16801561256f575082600f828154811061255b57fe5b906000526020600020906002020160000154145b9150505b919050565b600080600f8054905014156125905760009050612601565b600060106000848152602001908152602001600020549050600f81815481106125b557fe5b906000526020600020906002020160010160149054906101000a900460ff1680156125fd575082600f82815481106125e957fe5b906000526020600020906002020160000154145b9150505b919050565b61260e61363f565b600060106000848152602001908152602001600020549050600f818154811061263357fe5b9060005260206000209060020201604051806080016040529081600082015481526020016001820160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020016001820160149054906101000a900460ff161515151581526020016001820160159054906101000a900460ff161515151581525050915050919050565b6000601060008381526020019081526020016000205490506000600f828154811061271157fe5b906000526020600020906002020160010160146101000a81548160ff0219169083151502179055505050565b600061275e8473ffffffffffffffffffffffffffffffffffffffff16613373565b61276b576001905061291e565b60008473ffffffffffffffffffffffffffffffffffffffff1663150b7a02338887876040518563ffffffff1660e01b8152600401808573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020018473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200183815260200180602001828103825283818151815260200191508051906020019080838360005b8381101561284657808201518184015260208101905061282b565b50505050905090810190601f1680156128735780820380516001836020036101000a031916815260200191505b5095505050505050602060405180830381600087803b15801561289557600080fd5b505af11580156128a9573d6000803e3d6000fd5b505050506040513d60208110156128bf57600080fd5b8101908080519060200190929190505050905063150b7a0260e01b7bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916817bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916149150505b949350505050565b6000600e60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663621e9ec0868686866040518563ffffffff1660e01b81526004018085600260200280838360005b838110156129a4578082015181840152602081019050612989565b505050509050018460026000925b818410156129f85782846020020151600260200280838360005b838110156129e75780820151818401526020810190506129cc565b5050505090500192600101926129b2565b9250505083600260200280838360005b83811015612a23578082015181840152602081019050612a08565b5050505090500182600260200280838360005b83811015612a51578082015181840152602081019050612a36565b5050505090500194505050505060206040518083038186803b158015612a7657600080fd5b505afa158015612a8a573d6000803e3d6000fd5b505050506040513d6020811015612aa057600080fd5b81019080805190602001909291905050509050949350505050565b612ac533826122ab565b612b1a576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260318152602001806139476031913960400191505060405180910390fd5b8273ffffffffffffffffffffffffffffffffffffffff16612b3a8261126d565b73ffffffffffffffffffffffffffffffffffffffff1614612ba6576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252602981526020018061384f6029913960400191505060405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff161415612c2c576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260248152602001806137336024913960400191505060405180910390fd5b612c35816133be565b816002600083815260200190815260200160002060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550612cce600460008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002061347c565b612d15600460008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002061349f565b808273ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef60405160405180910390a4505050565b6000612dcd6001600660008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020805490506134b590919063ffffffff16565b9050600060076000848152602001908152602001600020549050818114612eba576000600660008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000208381548110612e3a57fe5b9060005260206000200154905080600660008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000208381548110612e9257fe5b9060005260206000200181905550816007600083815260200190815260200160002081905550505b600660008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020805480612f0257fe5b6001900381819060005260206000200160009055905550505050565b600660008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020805490506007600083815260200190815260200160002081905550600660008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000208190806001815401808255809150506001900390600052602060002001600090919091909150555050565b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff161415613085576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260208152602001807f4552433732313a206d696e7420746f20746865207a65726f206164647265737381525060200191505060405180910390fd5b61308e81612239565b15613101576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252601c8152602001807f4552433732313a20746f6b656e20616c7265616479206d696e7465640000000081525060200191505060405180910390fd5b816002600083815260200190815260200160002060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555061319a600460008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002061349f565b808273ffffffffffffffffffffffffffffffffffffffff16600073ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef60405160405180910390a45050565b6008805490506009600083815260200190815260200160002081905550600881908060018154018082558091505060019003906000526020600020016000909190919091505550565b6060600082141561328b576040518060400160405280600181526020017f3000000000000000000000000000000000000000000000000000000000000000815250905061336e565b600082905060005b600082146132b5578080600101915050600a82816132ad57fe5b049150613293565b6060816040519080825280601f01601f1916602001820160405280156132ea5781602001600182028038833980820191505090505b50905060006001830390508593505b6000841461336657600a848161330b57fe5b0660300160f81b8282806001900393508151811061332557fe5b60200101907effffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916908160001a905350600a848161335e57fe5b0493506132f9565b819450505050505b919050565b60008060007fc5d2460186f7233c927e7db2dcc703c0e500b653ca82273b7bfad8045d85a47060001b9050833f91508082141580156133b557506000801b8214155b92505050919050565b600073ffffffffffffffffffffffffffffffffffffffff166003600083815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16146134795760006003600083815260200190815260200160002060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055505b50565b613494600182600001546134b590919063ffffffff16565b816000018190555050565b6001816000016000828254019250508190555050565b60006134f783836040518060400160405280601e81526020017f536166654d6174683a207375627472616374696f6e206f766572666c6f7700008152506134ff565b905092915050565b60008383111582906135ac576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825283818151815260200191508051906020019080838360005b83811015613571578082015181840152602081019050613556565b50505050905090810190601f16801561359e5780820380516001836020036101000a031916815260200191505b509250505060405180910390fd5b5060008385039050809150509392505050565b828054600181600116156101000203166002900490600052602060002090601f016020900481019282601f1061360057805160ff191683800117855561362e565b8280016001018555821561362e579182015b8281111561362d578251825591602001919060010190613612565b5b50905061363b9190613684565b5090565b604051806080016040528060008019168152602001600073ffffffffffffffffffffffffffffffffffffffff1681526020016000151581526020016000151581525090565b6136a691905b808211156136a257600081600090555060010161368a565b5090565b9056fe4b727970746f5265616c53746174655a4b503a20736f6c7574696f6e206b657920646f6573206e6f742065786973744f776e61626c653a206e6577206f776e657220697320746865207a65726f20616464726573734b727970746f5265616c53746174655a4b503a206f6e6c79207468652070726f7665722063616e206d696e74206120746f6b656e4552433732313a207472616e7366657220746f20746865207a65726f20616464726573734b727970746f5265616c53746174655a4b503a20736f6c7574696f6e2070726f6f66206973206e6f742076616c696420666f72207468617420696e7075744552433732313a20617070726f76652063616c6c6572206973206e6f74206f776e6572206e6f7220617070726f76656420666f7220616c6c4552433732313a2062616c616e636520717565727920666f7220746865207a65726f20616464726573734552433732313a20617070726f76656420717565727920666f72206e6f6e6578697374656e7420746f6b656e4552433732314d657461646174613a2055524920736574206f66206e6f6e6578697374656e7420746f6b656e4552433732313a207472616e73666572206f6620746f6b656e2074686174206973206e6f74206f776e4552433732314d657461646174613a2055524920717565727920666f72206e6f6e6578697374656e7420746f6b656e4552433732313a20617070726f76616c20746f2063757272656e74206f776e65724b727970746f5265616c53746174655a4b503a20736f6c7574696f6e2065786973747320616c72656164795061757361626c653a206578706563746564202770617573656427207374617475734b727970746f5265616c53746174655a4b503a20736f6c7574696f6e206b6579206973206e6f742072656465656d61626c654552433732313a207472616e736665722063616c6c6572206973206e6f74206f776e6572206e6f7220617070726f7665645061757361626c653a20657870656374656420276e6f742070617573656427207374617475734552433732313a20617070726f7665207265717565737420666f72206e6f6e6578697374656e7420746f6b656ea264697066735822122079252348c132e7085e5c889298a61649f0902119aa134f69ef9d0556abbbf3ad64736f6c63430006020033",
"sourceMap": "437:3684:6:-:0;;;1017:115;8:9:-1;5:2;;;30:1;27;20:12;5:2;1017:115:6;;;;;;;;;;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;1017:115:6;;;;;;;;;;;;;;;;754:267:4;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;825:40:1;531:10;844:20;;825:18;;;:40;;:::i;:::-;884:10:7;875:6;;:19;;;;;;;;;;;;;;;;;;943:6;;;;;;;;;;;910:40;;939:1;910:40;;;;;;;;;;;;1188:5:8;1178:7;;:15;;;;;;;;;;;;;;;;;;2256:40:2;2108:10;2275:20;;2256:18;;;:40;;:::i;:::-;1216:51:3;1072:10;1235:31;;1216:18;;;:51;;:::i;:::-;891:4:4;883:5;:12;;;;;;;;;;;;:::i;:::-;;916:6;906:7;:16;;;;;;;;;;;;:::i;:::-;;944:7;933:8;:18;;;;;;;;;;;;:::i;:::-;;964:49;735:10;983:29;;964:18;;;:49;;:::i;:::-;754:267;;;1115:8:6::1;1083:14;;:41;;;;;;;;;;;;;;;;;;1017:115:::0;437:3684;;1607:193:1;1698:10;1683:25;;:11;:25;;;;;1675:66;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;1788:4;1752:20;:33;1773:11;1752:33;;;;;;;;;;;;;;;;;;:40;;;;;;;;;;;;;;;;;;1607:193;:::o;437:3684:6:-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;:::o;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;:::o;:::-;;;;;;;",
"deployedSourceMap": "437:3684:6:-:0;;;;8:9:-1;5:2;;;30:1;27;20:12;5:2;437:3684:6;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;1199:167:1;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;1199:167:1;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;1613:123:8;;;:::i;:::-;;1084:85:4;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;23:1:-1;8:100;33:3;30:1;27:10;8:100;;;99:1;94:3;90:11;84:18;80:1;75:3;71:11;64:39;52:2;49:1;45:10;40:15;;8:100;;;12:14;1084:85:4;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;3815:241:2;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;3815:241:2;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;3156:570;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;3156:570:2;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;2031:96:3;;;:::i;:::-;;;;;;;;;;;;;;;;;;;5089:218:2;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;5089:218:2;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;1656:217:3;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;1656:217:3;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;357:246:5;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;357:246:5;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;5315:168:2;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;5315:168:2;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;2472:151:3;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;2472:151:3;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;2568:110:2;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;2568:110:2;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;1406:91:4;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;23:1:-1;8:100;33:3;30:1;27:10;8:100;;;99:1;94:3;90:11;84:18;80:1;75:3;71:11;64:39;52:2;49:1;45:10;40:15;;8:100;;;12:14;1406:91:4;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;2312:248:2;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;2312:248:2;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;1424:123:8;;;:::i;:::-;;1039:79:7;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;1234:89:4;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;23:1:-1;8:100;33:3;30:1;27:10;8:100;;;99:1;94:3;90:11;84:18;80:1;75:3;71:11;64:39;52:2;49:1;45:10;40:15;;8:100;;;12:14;1234:89:4;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;4356:217:2;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;4356:217:2;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;2393:581:6;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;2393:581:6;;;;;;;;;;;;;;;;;:::i;:::-;;1280:80:8;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;5491:257:2;;;;;;13:3:-1;8;5:12;2:2;;;30:1;27;20:12;2:2;5491:257:2;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;21:11:-1;8;5:28;2:2;;;46:1;43;36:12;2:2;5491:257:2;;35:9:-1;28:4;12:14;8:25;5:40;2:2;;;58:1;55;48:12;2:2;5491:257:2;;;;;;100:9:-1;95:1;81:12;77:20;67:8;63:35;60:50;39:11;25:12;22:29;11:107;8:2;;;131:1;128;121:12;8:2;5491:257:2;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;30:3:-1;22:6;14;1:33;99:1;93:3;85:6;81:16;74:27;137:4;133:9;126:4;121:3;117:14;113:30;106:37;;169:3;161:6;157:16;147:26;;5491:257:2;;;;;;;;;;;;;;;:::i;:::-;;1329:934:6;;;;;;13:3:-1;8;5:12;2:2;;;30:1;27;20:12;2:2;1329:934:6;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;1706:244:4;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;1706:244:4;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;23:1:-1;8:100;33:3;30:1;27:10;8:100;;;99:1;94:3;90:11;84:18;80:1;75:3;71:11;64:39;52:2;49:1;45:10;40:15;;8:100;;;12:14;1706:244:4;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;4902:179:2;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;4902:179:2;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;1273:281:7;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;1273:281:7;;;;;;;;;;;;;;;;;;;:::i;:::-;;1199:167:1;1296:4;1325:20;:33;1346:11;1325:33;;;;;;;;;;;;;;;;;;;;;;;;;;;1318:40;;1199:167;;;:::o;1613:123:8:-;764:7;;;;;;;;;;;756:54;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;480:10:7::1;470:20;;:6;;;;;;;;;;;:20;;;462:65;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;1688:5:8::2;1678:7;;:15;;;;;;;;;;;;;;;;;;1709:19;1717:10;1709:19;;;;;;;;;;;;;;;;;;;;;;1613:123::o:0;1084:85:4:-;1123:13;1156:5;1149:12;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;1084:85;:::o;3815:241:2:-;3874:7;3916:16;3924:7;3916;:16::i;:::-;3894:110;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;4024:15;:24;4040:7;4024:24;;;;;;;;;;;;;;;;;;;;;4017:31;;3815:241;;;:::o;3156:570::-;3242:16;3250:7;3242;:16::i;:::-;3220:111;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;3344:13;3360:16;3368:7;3360;:16::i;:::-;3344:32;;3401:5;3395:11;;:2;:11;;;;3387:57;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;3493:5;3479:19;;:10;:19;;;:58;;;;3502:35;3519:5;3526:10;3502:16;:35::i;:::-;3479:58;3457:164;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;3661:2;3634:15;:24;3650:7;3634:24;;;;;;;;;;;;:29;;;;;;;;;;;;;;;;;;3710:7;3706:2;3679:39;;3688:16;3696:7;3688;:16::i;:::-;3679:39;;;;;;;;;;;;3156:570;;;:::o;2031:96:3:-;2075:7;2102:10;:17;;;;2095:24;;2031:96;:::o;5089:218:2:-;5214:39;5233:10;5245:7;5214:18;:39::i;:::-;5206:48;;;;;;5267:32;5281:4;5287:2;5291:7;5267:13;:32::i;:::-;5089:218;;;:::o;1656:217:3:-;1763:7;1804:16;1814:5;1804:9;:16::i;:::-;1796:5;:24;1788:33;;;;;;1839:12;:19;1852:5;1839:19;;;;;;;;;;;;;;;1859:5;1839:26;;;;;;;;;;;;;;;;1832:33;;1656:217;;;;:::o;357:246:5:-;493:4;480:10:7;470:20;;:6;;;;;;;;;;;:20;;;462:65;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;554:7:8::1;;;;;;;;;;;553:8;545:59;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;515:24:5::2;527:2;531:7;515:11;:24::i;:::-;550:21;563:7;550:12;:21::i;:::-;591:4;584:11;;357:246:::0;;;;:::o;5315:168:2:-;5436:39;5453:4;5459:2;5463:7;5436:39;;;;;;;;;;;;:16;:39::i;:::-;5315:168;;;:::o;2472:151:3:-;2530:7;2566:13;:11;:13::i;:::-;2558:5;:21;2550:30;;;;;;2598:10;2609:5;2598:17;;;;;;;;;;;;;;;;2591:24;;2472:151;;;:::o;2568:110:2:-;2623:7;2650:11;:20;2662:7;2650:20;;;;;;;;;;;;;;;;;;;;;2643:27;;2568:110;;;:::o;1406:91:4:-;1448:13;1481:8;1474:15;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;1406:91;:::o;2312:248:2:-;2367:7;2426:1;2409:19;;:5;:19;;;;2387:111;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;2518:34;:17;:24;2536:5;2518:24;;;;;;;;;;;;;;;:32;:34::i;:::-;2511:41;;2312:248;;;:::o;1424:123:8:-;554:7;;;;;;;;;;;553:8;545:59;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;480:10:7::1;470:20;;:6;;;;;;;;;;;:20;;;462:65;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;1501:4:8::2;1491:7:::0;::::2;:14;;;;;;;;;;;;;;;;;;1521:18;1528:10;1521:18;;;;;;;;;;;;;;;;;;;;;;1424:123::o:0;1039:79:7:-;1077:7;1104:6;;;;;;;;;;;1097:13;;1039:79;:::o;1234:89:4:-;1275:13;1308:7;1301:14;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;1234:89;:::o;4356:217:2:-;4442:10;4436:16;;:2;:16;;;;4428:25;;;;;;4501:8;4464:18;:30;4483:10;4464:30;;;;;;;;;;;;;;;:34;4495:2;4464:34;;;;;;;;;;;;;;;;:45;;;;;;;;;;;;;;;;;;4552:2;4525:40;;4540:10;4525:40;;;4556:8;4525:40;;;;;;;;;;;;;;;;;;;;;;4356:217;;:::o;2393:581:6:-;2462:12;2470:3;2462:7;:12::i;:::-;2440:109;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;2584:16;2596:3;2584:11;:16::i;:::-;2562:116;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;2738:10;2713:35;;:14;2723:3;2713:9;:14::i;:::-;:21;;;:35;;;2691:137;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;2841:20;2857:3;2841:15;:20::i;:::-;2872:36;2883:10;2903:3;2895:12;;2872:10;:36::i;:::-;;2924:42;2936:10;2948:3;2961;2953:12;;2924:42;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;2393:581;:::o;1280:80:8:-;1321:4;1345:7;;;;;;;;;;;1338:14;;1280:80;:::o;5491:257:2:-;5641:31;5654:4;5660:2;5664:7;5641:12;:31::i;:::-;5691:48;5714:4;5720:2;5724:7;5733:5;5691:22;:48::i;:::-;5683:57;;;;;;5491:257;;;;:::o;1329:934:6:-;1521:11;1594:1;1596;1594:4;;;;;;;;;;;1617:1;1619;1617:4;;;;;;;;;;;1640:1;1642;1640:4;;;;;;;;;;1645:1;1640:7;;;;;;;;;;;1666:1;1668;1666:4;;;;;;;;;;1671:1;1666:7;;;;;;;;;;;1692:1;1694;1692:4;;;;;;;;;;1697:1;1692:7;;;;;;;;;;;1718:1;1720;1718:4;;;;;;;;;;1723:1;1718:7;;;;;;;;;;;1744:1;1746;1744:4;;;;;;;;;;;1767:1;1769;1767:4;;;;;;;;;;;1790:5;1796:1;1790:8;;;;;;;;;;;1817:5;1823:1;1817:8;;;;;;;;;;;1559:281;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;49:4:-1;39:7;30;26:21;22:32;13:7;6:49;1559:281:6;;;1535:316;;;;;;1521:330;;1871:12;1879:3;1871:7;:12::i;:::-;1870:13;1862:69;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;1966:29;1980:1;1966:29;;;;;;;;;;;;;;;;;;;30:3:-1;22:6;14;1:33;99:1;93:3;85:6;81:16;74:27;137:4;133:9;126:4;121:3;117:14;113:30;106:37;;169:3;161:6;157:16;147:26;;1966:29:6;;;;;1983:1;1966:29;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;30:3:-1;22:6;14;1:33;99:1;93:3;85:6;81:16;74:27;137:4;133:9;126:4;121:3;117:14;113:30;106:37;;169:3;161:6;157:16;147:26;;1966:29:6;;;;;;;;;;;;;;;;;;;;1986:1;1966:29;;;;;;;;;;;;;;;;;;;30:3:-1;22:6;14;1:33;99:1;93:3;85:6;81:16;74:27;137:4;133:9;126:4;121:3;117:14;113:30;106:37;;169:3;161:6;157:16;147:26;;1966:29:6;;;;;1989:5;1966:29;;;;;;;;;;;;;;;;;;;30:3:-1;22:6;14;1:33;99:1;93:3;85:6;81:16;74:27;137:4;133:9;126:4;121:3;117:14;113:30;106:37;;169:3;161:6;157:16;147:26;;1966:29:6;;;;;:13;:29::i;:::-;1944:141;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;2098:10;2114:37;;;;;;;;2123:3;2114:37;;;;2128:10;2114:37;;;;;;2140:4;2114:37;;;;;;2146:4;2114:37;;;;;2098:54;;39:1:-1;33:3;27:10;23:18;57:10;52:3;45:23;79:10;72:17;;0:93;2098:54:6;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;2206:1;2186:10;:17;;;;:21;2163:15;:20;2179:3;2163:20;;;;;;;;;;;:44;;;;2244:10;2225:30;;;2239:3;2225:30;;;;;;;;;;;;;;;;;;1329:934;;;;;:::o;1706:244:4:-;1764:13;1812:16;1820:7;1812;:16::i;:::-;1790:113;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;1923:10;:19;1934:7;1923:19;;;;;;;;;;;1916:26;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;1706:244;;;:::o;4902:179:2:-;5009:4;5038:18;:25;5057:5;5038:25;;;;;;;;;;;;;;;:35;5064:8;5038:35;;;;;;;;;;;;;;;;;;;;;;;;;5031:42;;4902:179;;;;:::o;1273:281:7:-;480:10;470:20;;:6;;;;;;;;;;;:20;;;462:65;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;1396:1:::1;1376:22;;:8;:22;;;;1354:110;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;1484:8;1475:6;;:17;;;;;;;;;;;;;;;;;;1537:8;1508:38;;1529:6;;;;;;;;;;;1508:38;;;;;;;;;;;;1273:281:::0;:::o;5949:163:2:-;6014:4;6031:13;6047:11;:20;6059:7;6047:20;;;;;;;;;;;;;;;;;;;;;6031:36;;6102:1;6085:19;;:5;:19;;;;6078:26;;;5949:163;;;:::o;6481:307::-;6593:4;6615:13;6631:16;6639:7;6631;:16::i;:::-;6615:32;;6677:5;6666:16;;:7;:16;;;:64;;;;6723:7;6699:31;;:20;6711:7;6699:11;:20::i;:::-;:31;;;6666:64;:113;;;;6747:32;6764:5;6771:7;6747:16;:32::i;:::-;6666:113;6658:122;;;6481:307;;;;:::o;3007:286:3:-;3136:38;3156:4;3162:2;3166:7;3136:19;:38::i;:::-;3187:47;3220:4;3226:7;3187:32;:47::i;:::-;3245:40;3273:2;3277:7;3245:27;:40::i;:::-;3007:286;;;:::o;3556:209::-;3629:24;3641:2;3645:7;3629:11;:24::i;:::-;3666:40;3694:2;3698:7;3666:27;:40::i;:::-;3717;3749:7;3717:31;:40::i;:::-;3556:209;;:::o;2021:303:4:-;2110:16;2118:7;2110;:16::i;:::-;2088:110;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;2269:8;2279:25;2296:7;2279:16;:25::i;:::-;2252:53;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;36:153:-1;66:2;61:3;58:11;36:153;;182:3;176:10;171:3;164:23;98:2;93:3;89:12;82:19;;123:2;118:3;114:12;107:19;;148:2;143:3;139:12;132:19;;36:153;;;274:1;267:3;263:2;259:12;254:3;250:22;246:30;315:4;311:9;305:3;299:10;295:26;356:4;350:3;344:10;340:21;389:7;380;377:20;372:3;365:33;3:399;;;2252:53:4;;;;;;;;;;;;49:4:-1;39:7;30;26:21;22:32;13:7;6:49;2252:53:4;;;2209:10;:19;2220:7;2209:19;;;;;;;;;;;:107;;;;;;;;;;;;:::i;:::-;;2021:303;:::o;1098:112:14:-;1163:7;1189;:14;;;1182:21;;1098:112;;;:::o;3435:267:6:-;3488:4;3530:1;3509:10;:17;;;;:22;3505:67;;;3555:5;3548:12;;;;3505:67;3584:13;3600:15;:20;3616:3;3600:20;;;;;;;;;;;;3584:36;;3638:10;3649:5;3638:17;;;;;;;;;;;;;;;;;;:24;;;;;;;;;;;;:56;;;;;3691:3;3666:10;3677:5;3666:17;;;;;;;;;;;;;;;;;;:21;;;:28;3638:56;3631:63;;;3435:267;;;;:::o;3152:275::-;3209:4;3251:1;3230:10;:17;;;;:22;3226:67;;;3276:5;3269:12;;;;3226:67;3305:13;3321:15;:20;3337:3;3321:20;;;;;;;;;;;;3305:36;;3359:10;3370:5;3359:17;;;;;;;;;;;;;;;;;;:28;;;;;;;;;;;;:60;;;;;3416:3;3391:10;3402:5;3391:17;;;;;;;;;;;;;;;;;;:21;;;:28;3359:60;3352:67;;;3152:275;;;;:::o;2982:162::-;3037:15;;:::i;:::-;3065:13;3081:15;:20;3097:3;3081:20;;;;;;;;;;;;3065:36;;3119:10;3130:5;3119:17;;;;;;;;;;;;;;;;;;3112:24;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;2982:162;;;:::o;3710:149::-;3768:13;3784:15;:20;3800:3;3784:20;;;;;;;;;;;;3768:36;;3846:5;3815:10;3826:5;3815:17;;;;;;;;;;;;;;;;;;:28;;;:36;;;;;;;;;;;;;;;;;;3710:149;;:::o;8606:448:2:-;8762:4;8784:15;:2;:13;;;:15::i;:::-;8779:60;;8823:4;8816:11;;;;8779:60;8851:13;8883:2;8867:36;;;8918:10;8943:4;8962:7;8984:5;8867:133;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;23:1:-1;8:100;33:3;30:1;27:10;8:100;;;99:1;94:3;90:11;84:18;80:1;75:3;71:11;64:39;52:2;49:1;45:10;40:15;;8:100;;;12:14;8867:133:2;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;8:9:-1;5:2;;;30:1;27;20:12;5:2;8867:133:2;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;8867:133:2;;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;8867:133:2;;;;;;;;;;;;;;;;8851:149;;1229:10;9029:16;;9019:26;;;:6;:26;;;;9011:35;;;8606:448;;;;;;;:::o;3867:251:6:-;4047:4;4071:14;;;;;;;;;;;:23;;;4095:1;4098;4101;4104:5;4071:39;;;;;;;;;;;;;;;;;;;23:1:-1;8:100;33:3;30:1;27:10;8:100;;;99:1;94:3;90:11;84:18;80:1;75:3;71:11;64:39;52:2;49:1;45:10;40:15;;8:100;;;12:14;4071:39:6;;;;;;;;;;;;;;;;;;;;;;;;;;;;;23:1:-1;8:100;33:3;30:1;27:10;8:100;;;99:1;94:3;90:11;84:18;80:1;75:3;71:11;64:39;52:2;49:1;45:10;40:15;;8:100;;;12:14;4071:39:6;;;;;;;;;;;;;;;;;;;;;;;;23:1:-1;8:100;33:3;30:1;27:10;8:100;;;99:1;94:3;90:11;84:18;80:1;75:3;71:11;64:39;52:2;49:1;45:10;40:15;;8:100;;;12:14;4071:39:6;;;;;;;;;;;;;23:1:-1;8:100;33:3;30:1;27:10;8:100;;;99:1;94:3;90:11;84:18;80:1;75:3;71:11;64:39;52:2;49:1;45:10;40:15;;8:100;;;12:14;4071:39:6;;;;;;;;;;;;;;;;;;;;;;;8:9:-1;5:2;;;30:1;27;20:12;5:2;4071:39:6;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;4071:39:6;;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;4071:39:6;;;;;;;;;;;;;;;;4064:46;;3867:251;;;;;;:::o;7382:685:2:-;7532:39;7551:10;7563:7;7532:18;:39::i;:::-;7510:138;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;7701:4;7681:24;;:16;7689:7;7681;:16::i;:::-;:24;;;7659:115;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;7807:1;7793:16;;:2;:16;;;;7785:65;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;7863:23;7878:7;7863:14;:23::i;:::-;7922:2;7899:11;:20;7911:7;7899:20;;;;;;;;;;;;:25;;;;;;;;;;;;;;;;;;7935:35;:17;:23;7953:4;7935:23;;;;;;;;;;;;;;;:33;:35::i;:::-;7981:33;:17;:21;7999:2;7981:21;;;;;;;;;;;;;;;:31;:33::i;:::-;8051:7;8047:2;8032:27;;8041:4;8032:27;;;;;;;;;;;;7382:685;;;:::o;5242:1082:3:-;5522:22;5547:32;5577:1;5547:12;:18;5560:4;5547:18;;;;;;;;;;;;;;;:25;;;;:29;;:32;;;;:::i;:::-;5522:57;;5590:18;5611:17;:26;5629:7;5611:26;;;;;;;;;;;;5590:47;;5758:14;5744:10;:28;5740:328;;5789:19;5811:12;:18;5824:4;5811:18;;;;;;;;;;;;;;;5830:14;5811:34;;;;;;;;;;;;;;;;5789:56;;5895:11;5862:12;:18;5875:4;5862:18;;;;;;;;;;;;;;;5881:10;5862:30;;;;;;;;;;;;;;;:44;;;;6012:10;5979:17;:30;5997:11;5979:30;;;;;;;;;;;:43;;;;5740:328;;6080:12;:18;6093:4;6080:18;;;;;;;;;;;;;;;:24;;;;;;;;;;;;;;;;;;;;;;;;5242:1082;;;;:::o;4066:186::-;4180:12;:16;4193:2;4180:16;;;;;;;;;;;;;;;:23;;;;4151:17;:26;4169:7;4151:26;;;;;;;;;;;:52;;;;4214:12;:16;4227:2;4214:16;;;;;;;;;;;;;;;4236:7;4214:30;;39:1:-1;33:3;27:10;23:18;57:10;52:3;45:23;79:10;72:17;;0:93;4214:30:3;;;;;;;;;;;;;;;;;;;4066:186;;:::o;6911:343:2:-;7005:1;6991:16;;:2;:16;;;;6983:61;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;7064:16;7072:7;7064;:16::i;:::-;7063:17;7055:58;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;7149:2;7126:11;:20;7138:7;7126:20;;;;;;;;;;;;:25;;;;;;;;;;;;;;;;;;7162:33;:17;:21;7180:2;7162:21;;;;;;;;;;;;;;;:31;:33::i;:::-;7238:7;7234:2;7213:33;;7230:1;7213:33;;;;;;;;;;;;6911:343;;:::o;4453:164:3:-;4557:10;:17;;;;4530:15;:24;4546:7;4530:24;;;;;;;;;;;:44;;;;4585:10;4601:7;4585:24;;39:1:-1;33:3;27:10;23:18;57:10;52:3;45:23;79:10;72:17;;0:93;4585:24:3;;;;;;;;;;;;;;;;;;;4453:164;:::o;202:723:15:-;258:13;484:1;475:5;:10;471:51;;;501:10;;;;;;;;;;;;;;;;;;;;;471:51;531:12;546:5;531:20;;561:14;585:75;600:1;592:4;:9;585:75;;617:8;;;;;;;647:2;639:10;;;;;;;;;585:75;;;669:19;701:6;691:17;;;;;;;;;;;;;;;;;;;;;;;;;29:1:-1;21:6;17:14;116:4;104:10;96:6;87:34;147:4;139:6;135:17;125:27;;0:156;691:17:15;;;;669:39;;718:13;743:1;734:6;:10;718:26;;761:5;754:12;;776:112;791:1;783:4;:9;776:112;;849:2;842:4;:9;;;;;;837:2;:14;826:27;;808:6;815:7;;;;;;;808:15;;;;;;;;;;;:45;;;;;;;;;;;875:2;867:10;;;;;;;;;776:112;;;911:6;897:21;;;;;;202:723;;;;:::o;718:610:13:-;778:4;1036:16;1062:19;1084:66;1062:88;;;;1251:7;1239:20;1227:32;;1290:11;1278:8;:23;;:42;;;;;1317:3;1305:15;;:8;:15;;1278:42;1270:51;;;;718:610;;;:::o;9138:175:2:-;9238:1;9202:38;;:15;:24;9218:7;9202:24;;;;;;;;;;;;;;;;;;;;;:38;;;9198:108;;9292:1;9257:15;:24;9273:7;9257:24;;;;;;;;;;;;:37;;;;;;;;;;;;;;;;;;9198:108;9138:175;:::o;1400:108:14:-;1480:21;1499:1;1480:7;:14;;;:18;;:21;;;;:::i;:::-;1463:7;:14;;:38;;;;1400:108;:::o;1216:178::-;1386:1;1368:7;:14;;;:19;;;;;;;;;;;1216:178;:::o;1321:134:11:-;1379:7;1405:43;1409:1;1412;1405:43;;;;;;;;;;;;;;;;;:3;:43::i;:::-;1398:50;;1321:134;;;;:::o;1746:187::-;1832:7;1864:1;1859;:6;;1867:12;1851:29;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;23:1:-1;8:100;33:3;30:1;27:10;8:100;;;99:1;94:3;90:11;84:18;80:1;75:3;71:11;64:39;52:2;49:1;45:10;40:15;;8:100;;;12:14;1851:29:11;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;1890:9;1906:1;1902;:5;1890:17;;1925:1;1918:8;;;1746:187;;;;;:::o;437:3684:6:-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;:::o;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::o;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;:::o",
"source": "// SPDX-License-Identifier: MIT\r\n\r\npragma solidity 0.6.2;\r\n\r\nimport \"./KryptoRealState.sol\";\r\nimport \"../zokrates/code/square/verifier.sol\";\r\n\r\n/**\r\n * @dev Contract module to mint KryptoRealState tokens. Sellers are\r\n * entitle to list their properties only upon presenting a valid\r\n * proof of ownership based on zk-SNARKs.\r\n *\r\n * Tokens are implemented as in the ERC721 standard.\r\n * see https://eips.ethereum.org/EIPS/eip-721\r\n */\r\ncontract ProofVerifierKRS is KryptoRealState {\r\n SquareVerifier private squareVerifier;\r\n\r\n struct Solution {\r\n bytes32 key;\r\n address prover;\r\n bool redeemable;\r\n bool exists;\r\n }\r\n // Array with all solutions, used for enumeration\r\n Solution[] private _solutions;\r\n\r\n // Mapping from solution key to the position in the solutions array\r\n mapping(bytes32 => uint256) private _solutionsIndex;\r\n\r\n event ProofVerified(bytes32 key, address indexed prover);\r\n event TokenMinted(address to, bytes32 key, uint256 tokenId);\r\n\r\n constructor(address verifier) public KryptoRealState() {\r\n squareVerifier = SquareVerifier(verifier);\r\n }\r\n\r\n /**\r\n * @dev Submit a candidate ownership-proof for validation.\r\n *\r\n * The proof consists on the points of the elliptic curve\r\n * corresponding to the input.\r\n */\r\n function submitOwnershipProof(\r\n uint256[2] calldata a,\r\n uint256[2][2] calldata b,\r\n uint256[2] calldata c,\r\n uint256[2] calldata input\r\n ) external {\r\n bytes32 key = keccak256(\r\n abi.encodePacked(\r\n a[0],\r\n a[1],\r\n b[0][0],\r\n b[0][1],\r\n b[1][0],\r\n b[1][1],\r\n c[0],\r\n c[1],\r\n input[0],\r\n input[1]\r\n )\r\n );\r\n require(!_exists(key), \"KryptoRealStateZKP: solution exists already\");\r\n\r\n require(\r\n _isValidProof(a, b, c, input),\r\n \"KryptoRealStateZKP: solution proof is not valid for that input\"\r\n );\r\n\r\n _solutions.push(Solution(key, msg.sender, true, true));\r\n _solutionsIndex[key] = _solutions.length - 1;\r\n\r\n emit ProofVerified(key, msg.sender);\r\n }\r\n\r\n /**\r\n * @dev Mints a new token if a prover has previously submitted a valid\r\n * proof of ownership.\r\n */\r\n function mint(bytes32 key) external {\r\n require(\r\n _exists(key),\r\n \"KryptoRealStateZKP: solution key does not exist\"\r\n );\r\n\r\n require(\r\n _redeemable(key),\r\n \"KryptoRealStateZKP: solution key is not redeemable\"\r\n );\r\n\r\n require(\r\n _solution(key).prover == msg.sender,\r\n \"KryptoRealStateZKP: only the prover can mint a token\"\r\n );\r\n\r\n _redeemSolution(key);\r\n super.mint(msg.sender, uint256(key));\r\n emit TokenMinted(msg.sender, key, uint256(key));\r\n }\r\n\r\n function _solution(bytes32 key) internal view returns (Solution memory) {\r\n uint256 index = _solutionsIndex[key];\r\n return _solutions[index];\r\n }\r\n\r\n function _redeemable(bytes32 key) internal view returns (bool) {\r\n if (_solutions.length == 0) {\r\n return false;\r\n }\r\n\r\n uint256 index = _solutionsIndex[key];\r\n return _solutions[index].redeemable && _solutions[index].key == key;\r\n }\r\n\r\n function _exists(bytes32 key) internal view returns (bool) {\r\n if (_solutions.length == 0) {\r\n return false;\r\n }\r\n\r\n uint256 index = _solutionsIndex[key];\r\n return _solutions[index].exists && _solutions[index].key == key;\r\n }\r\n\r\n function _redeemSolution(bytes32 key) internal {\r\n uint256 index = _solutionsIndex[key];\r\n _solutions[index].redeemable = false;\r\n }\r\n\r\n function _isValidProof(\r\n uint256[2] memory a,\r\n uint256[2][2] memory b,\r\n uint256[2] memory c,\r\n uint256[2] memory input\r\n ) internal view returns (bool) {\r\n return squareVerifier.verifyTx(a, b, c, input);\r\n }\r\n}\r\n",
"sourcePath": "C:\\Users\\Diego\\dev\\blockchain\\dapp-real-state\\contracts\\token\\ProofVerifierKRS.sol",
"ast": {
"absolutePath": "/C/Users/Diego/dev/blockchain/dapp-real-state/contracts/token/ProofVerifierKRS.sol",
"exportedSymbols": {
"ProofVerifierKRS": [
1463
]
},
"id": 1464,
"nodeType": "SourceUnit",
"nodes": [
{
"id": 1106,
"literals": [
"solidity",
"0.6",
".2"
],
"nodeType": "PragmaDirective",
"src": "35:22:6"
},
{
"absolutePath": "/C/Users/Diego/dev/blockchain/dapp-real-state/contracts/token/KryptoRealState.sol",
"file": "./KryptoRealState.sol",
"id": 1107,
"nodeType": "ImportDirective",
"scope": 1464,
"sourceUnit": 1105,
"src": "61:31:6",
"symbolAliases": [],
"unitAlias": ""
},
{
"absolutePath": "/C/Users/Diego/dev/blockchain/dapp-real-state/contracts/zokrates/code/square/verifier.sol",
"file": "../zokrates/code/square/verifier.sol",
"id": 1108,
"nodeType": "ImportDirective",
"scope": 1464,
"sourceUnit": 6717,
"src": "94:46:6",
"symbolAliases": [],
"unitAlias": ""
},
{
"abstract": false,
"baseContracts": [
{
"arguments": null,
"baseName": {
"contractScope": null,
"id": 1109,
"name": "KryptoRealState",
"nodeType": "UserDefinedTypeName",
"referencedDeclaration": 1104,
"src": "466:15:6",
"typeDescriptions": {
"typeIdentifier": "t_contract$_KryptoRealState_$1104",
"typeString": "contract KryptoRealState"
}
},
"id": 1110,
"nodeType": "InheritanceSpecifier",
"src": "466:15:6"
}
],
"contractDependencies": [
105,
640,
931,
1062,
1104,
1538,
1623
],
"contractKind": "contract",
"documentation": "@dev Contract module to mint KryptoRealState tokens. Sellers are\nentitle to list their properties only upon presenting a valid\nproof of ownership based on zk-SNARKs.\n\n * Tokens are implemented as in the ERC721 standard.\nsee https://eips.ethereum.org/EIPS/eip-721",
"fullyImplemented": true,
"id": 1463,
"linearizedBaseContracts": [
1463,
1104,
1062,
931,
640,
1623,
1538,
105
],
"name": "ProofVerifierKRS",
"nodeType": "ContractDefinition",
"nodes": [
{
"constant": false,
"id": 1112,
"name": "squareVerifier",
"nodeType": "VariableDeclaration",
"overrides": null,
"scope": 1463,
"src": "489:37:6",
"stateVariable": true,
"storageLocation": "default",
"typeDescriptions": {
"typeIdentifier": "t_contract$_SquareVerifier_$6716",
"typeString": "contract SquareVerifier"
},
"typeName": {
"contractScope": null,
"id": 1111,
"name": "SquareVerifier",
"nodeType": "UserDefinedTypeName",
"referencedDeclaration": 6716,
"src": "489:14:6",
"typeDescriptions": {
"typeIdentifier": "t_contract$_SquareVerifier_$6716",
"typeString": "contract SquareVerifier"
}
},
"value": null,
"visibility": "private"
},
{
"canonicalName": "ProofVerifierKRS.Solution",
"id": 1121,
"members": [
{
"constant": false,
"id": 1114,
"name": "key",
"nodeType": "VariableDeclaration",
"overrides": null,
"scope": 1121,
"src": "562:11:6",
"stateVariable": false,
"storageLocation": "default",
"typeDescriptions": {
"typeIdentifier": "t_bytes32",
"typeString": "bytes32"
},
"typeName": {
"id": 1113,
"name": "bytes32",
"nodeType": "ElementaryTypeName",
"src": "562:7:6",
"typeDescriptions": {
"typeIdentifier": "t_bytes32",
"typeString": "bytes32"
}
},
"value": null,
"visibility": "internal"
},
{
"constant": false,
"id": 1116,
"name": "prover",
"nodeType": "VariableDeclaration",
"overrides": null,
"scope": 1121,
"src": "584:14:6",
"stateVariable": false,
"storageLocation": "default",
"typeDescriptions": {
"typeIdentifier": "t_address",
"typeString": "address"
},
"typeName": {
"id": 1115,
"name": "address",
"nodeType": "ElementaryTypeName",
"src": "584:7:6",
"stateMutability": "nonpayable",
"typeDescriptions": {
"typeIdentifier": "t_address",
"typeString": "address"
}
},
"value": null,
"visibility": "internal"
},
{
"constant": false,
"id": 1118,
"name": "redeemable",
"nodeType": "VariableDeclaration",
"overrides": null,
"scope": 1121,
"src": "609:15:6",
"stateVariable": false,
"storageLocation": "default",
"typeDescriptions": {
"typeIdentifier": "t_bool",
"typeString": "bool"
},
"typeName": {
"id": 1117,
"name": "bool",
"nodeType": "ElementaryTypeName",
"src": "609:4:6",
"typeDescriptions": {
"typeIdentifier": "t_bool",
"typeString": "bool"
}
},
"value": null,
"visibility": "internal"
},
{
"constant": false,
"id": 1120,
"name": "exists",
"nodeType": "VariableDeclaration",
"overrides": null,
"scope": 1121,
"src": "635:11:6",
"stateVariable": false,
"storageLocation": "default",
"typeDescriptions": {
"typeIdentifier": "t_bool",
"typeString": "bool"
},
"typeName": {
"id": 1119,
"name": "bool",
"nodeType": "ElementaryTypeName",
"src": "635:4:6",
"typeDescriptions": {
"typeIdentifier": "t_bool",
"typeString": "bool"
}
},
"value": null,
"visibility": "internal"
}
],
"name": "Solution",
"nodeType": "StructDefinition",
"scope": 1463,
"src": "535:119:6",
"visibility": "public"
},
{
"constant": false,
"id": 1124,
"name": "_solutions",
"nodeType": "VariableDeclaration",
"overrides": null,
"scope": 1463,
"src": "715:29:6",
"stateVariable": true,
"storageLocation": "default",
"typeDescriptions": {
"typeIdentifier": "t_array$_t_struct$_Solution_$1121_storage_$dyn_storage",
"typeString": "struct ProofVerifierKRS.Solution[]"
},
"typeName": {
"baseType": {
"contractScope": null,
"id": 1122,
"name": "Solution",
"nodeType": "UserDefinedTypeName",
"referencedDeclaration": 1121,
"src": "715:8:6",
"typeDescriptions": {
"typeIdentifier": "t_struct$_Solution_$1121_storage_ptr",
"typeString": "struct ProofVerifierKRS.Solution"
}
},
"id": 1123,
"length": null,
"nodeType": "ArrayTypeName",
"src": "715:10:6",
"typeDescriptions": {
"typeIdentifier": "t_array$_t_struct$_Solution_$1121_storage_$dyn_storage_ptr",
"typeString": "struct ProofVerifierKRS.Solution[]"
}
},
"value": null,
"visibility": "private"
},
{
"constant": false,
"id": 1128,
"name": "_solutionsIndex",
"nodeType": "VariableDeclaration",
"overrides": null,
"scope": 1463,
"src": "826:51:6",
"stateVariable": true,
"storageLocation": "default",
"typeDescriptions": {
"typeIdentifier": "t_mapping$_t_bytes32_$_t_uint256_$",
"typeString": "mapping(bytes32 => uint256)"
},
"typeName": {
"id": 1127,
"keyType": {
"id": 1125,
"name": "bytes32",
"nodeType": "ElementaryTypeName",
"src": "834:7:6",
"typeDescriptions": {
"typeIdentifier": "t_bytes32",
"typeString": "bytes32"
}
},
"nodeType": "Mapping",
"src": "826:27:6",
"typeDescriptions": {
"typeIdentifier": "t_mapping$_t_bytes32_$_t_uint256_$",
"typeString": "mapping(bytes32 => uint256)"
},
"valueType": {
"id": 1126,
"name": "uint256",
"nodeType": "ElementaryTypeName",
"src": "845:7:6",
"typeDescriptions": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
}
}
},
"value": null,
"visibility": "private"
},
{
"anonymous": false,
"documentation": null,
"id": 1134,
"name": "ProofVerified",
"nodeType": "EventDefinition",
"parameters": {
"id": 1133,
"nodeType": "ParameterList",
"parameters": [
{
"constant": false,
"id": 1130,
"indexed": false,
"name": "key",
"nodeType": "VariableDeclaration",
"overrides": null,
"scope": 1134,
"src": "906:11:6",
"stateVariable": false,
"storageLocation": "default",
"typeDescriptions": {
"typeIdentifier": "t_bytes32",
"typeString": "bytes32"
},
"typeName": {
"id": 1129,
"name": "bytes32",
"nodeType": "ElementaryTypeName",
"src": "906:7:6",
"typeDescriptions": {
"typeIdentifier": "t_bytes32",
"typeString": "bytes32"
}