-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy pathSolnSquareVerifier.json
9590 lines (9590 loc) · 458 KB
/
SolnSquareVerifier.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": "SolnSquareVerifier",
"abi": [
{
"constant": true,
"inputs": [
{
"name": "interfaceId",
"type": "bytes4"
}
],
"name": "supportsInterface",
"outputs": [
{
"name": "",
"type": "bool"
}
],
"payable": false,
"stateMutability": "view",
"type": "function"
},
{
"constant": true,
"inputs": [],
"name": "name",
"outputs": [
{
"name": "",
"type": "string"
}
],
"payable": false,
"stateMutability": "view",
"type": "function"
},
{
"constant": true,
"inputs": [
{
"name": "tokenId",
"type": "uint256"
}
],
"name": "getApproved",
"outputs": [
{
"name": "",
"type": "address"
}
],
"payable": false,
"stateMutability": "view",
"type": "function"
},
{
"constant": false,
"inputs": [
{
"name": "to",
"type": "address"
},
{
"name": "tokenId",
"type": "uint256"
}
],
"name": "approve",
"outputs": [],
"payable": false,
"stateMutability": "nonpayable",
"type": "function"
},
{
"constant": false,
"inputs": [
{
"name": "isPaused",
"type": "bool"
}
],
"name": "setPaused",
"outputs": [],
"payable": false,
"stateMutability": "nonpayable",
"type": "function"
},
{
"constant": true,
"inputs": [],
"name": "totalSupply",
"outputs": [
{
"name": "",
"type": "uint256"
}
],
"payable": false,
"stateMutability": "view",
"type": "function"
},
{
"constant": false,
"inputs": [
{
"name": "from",
"type": "address"
},
{
"name": "to",
"type": "address"
},
{
"name": "tokenId",
"type": "uint256"
}
],
"name": "transferFrom",
"outputs": [],
"payable": false,
"stateMutability": "nonpayable",
"type": "function"
},
{
"constant": false,
"inputs": [
{
"name": "_myid",
"type": "bytes32"
},
{
"name": "_result",
"type": "string"
}
],
"name": "__callback",
"outputs": [],
"payable": false,
"stateMutability": "nonpayable",
"type": "function"
},
{
"constant": true,
"inputs": [
{
"name": "owner",
"type": "address"
},
{
"name": "index",
"type": "uint256"
}
],
"name": "tokenOfOwnerByIndex",
"outputs": [
{
"name": "",
"type": "uint256"
}
],
"payable": false,
"stateMutability": "view",
"type": "function"
},
{
"constant": false,
"inputs": [
{
"name": "_myid",
"type": "bytes32"
},
{
"name": "_result",
"type": "string"
},
{
"name": "_proof",
"type": "bytes"
}
],
"name": "__callback",
"outputs": [],
"payable": false,
"stateMutability": "nonpayable",
"type": "function"
},
{
"constant": false,
"inputs": [
{
"name": "from",
"type": "address"
},
{
"name": "to",
"type": "address"
},
{
"name": "tokenId",
"type": "uint256"
}
],
"name": "safeTransferFrom",
"outputs": [],
"payable": false,
"stateMutability": "nonpayable",
"type": "function"
},
{
"constant": true,
"inputs": [
{
"name": "index",
"type": "uint256"
}
],
"name": "tokenByIndex",
"outputs": [
{
"name": "",
"type": "uint256"
}
],
"payable": false,
"stateMutability": "view",
"type": "function"
},
{
"constant": true,
"inputs": [
{
"name": "tokenId",
"type": "uint256"
}
],
"name": "ownerOf",
"outputs": [
{
"name": "",
"type": "address"
}
],
"payable": false,
"stateMutability": "view",
"type": "function"
},
{
"constant": true,
"inputs": [
{
"name": "owner",
"type": "address"
}
],
"name": "balanceOf",
"outputs": [
{
"name": "",
"type": "uint256"
}
],
"payable": false,
"stateMutability": "view",
"type": "function"
},
{
"constant": true,
"inputs": [],
"name": "symbol",
"outputs": [
{
"name": "",
"type": "string"
}
],
"payable": false,
"stateMutability": "view",
"type": "function"
},
{
"constant": false,
"inputs": [
{
"name": "to",
"type": "address"
},
{
"name": "approved",
"type": "bool"
}
],
"name": "setApprovalForAll",
"outputs": [],
"payable": false,
"stateMutability": "nonpayable",
"type": "function"
},
{
"constant": false,
"inputs": [
{
"name": "from",
"type": "address"
},
{
"name": "to",
"type": "address"
},
{
"name": "tokenId",
"type": "uint256"
},
{
"name": "_data",
"type": "bytes"
}
],
"name": "safeTransferFrom",
"outputs": [],
"payable": false,
"stateMutability": "nonpayable",
"type": "function"
},
{
"constant": true,
"inputs": [
{
"name": "tokenId",
"type": "uint256"
}
],
"name": "tokenURI",
"outputs": [
{
"name": "",
"type": "string"
}
],
"payable": false,
"stateMutability": "view",
"type": "function"
},
{
"constant": true,
"inputs": [],
"name": "contractOwner",
"outputs": [
{
"name": "",
"type": "address"
}
],
"payable": false,
"stateMutability": "view",
"type": "function"
},
{
"constant": true,
"inputs": [],
"name": "baseTokenURI",
"outputs": [
{
"name": "",
"type": "string"
}
],
"payable": false,
"stateMutability": "view",
"type": "function"
},
{
"constant": true,
"inputs": [
{
"name": "owner",
"type": "address"
},
{
"name": "operator",
"type": "address"
}
],
"name": "isApprovedForAll",
"outputs": [
{
"name": "",
"type": "bool"
}
],
"payable": false,
"stateMutability": "view",
"type": "function"
},
{
"constant": false,
"inputs": [
{
"name": "newOwner",
"type": "address"
}
],
"name": "transferOwnership",
"outputs": [],
"payable": false,
"stateMutability": "nonpayable",
"type": "function"
},
{
"inputs": [
{
"name": "verifierAddress",
"type": "address"
}
],
"payable": false,
"stateMutability": "nonpayable",
"type": "constructor"
},
{
"anonymous": false,
"inputs": [
{
"indexed": true,
"name": "to",
"type": "address"
},
{
"indexed": true,
"name": "TokenId",
"type": "uint256"
}
],
"name": "SolutionAdded",
"type": "event"
},
{
"anonymous": false,
"inputs": [
{
"indexed": true,
"name": "from",
"type": "address"
},
{
"indexed": true,
"name": "to",
"type": "address"
},
{
"indexed": true,
"name": "tokenId",
"type": "uint256"
}
],
"name": "Transfer",
"type": "event"
},
{
"anonymous": false,
"inputs": [
{
"indexed": true,
"name": "owner",
"type": "address"
},
{
"indexed": true,
"name": "approved",
"type": "address"
},
{
"indexed": true,
"name": "tokenId",
"type": "uint256"
}
],
"name": "Approval",
"type": "event"
},
{
"anonymous": false,
"inputs": [
{
"indexed": true,
"name": "owner",
"type": "address"
},
{
"indexed": true,
"name": "operator",
"type": "address"
},
{
"indexed": false,
"name": "approved",
"type": "bool"
}
],
"name": "ApprovalForAll",
"type": "event"
},
{
"anonymous": false,
"inputs": [],
"name": "Paused",
"type": "event"
},
{
"anonymous": false,
"inputs": [],
"name": "Unpaused",
"type": "event"
},
{
"anonymous": false,
"inputs": [
{
"indexed": true,
"name": "to",
"type": "address"
}
],
"name": "ownerityTransfered",
"type": "event"
},
{
"constant": false,
"inputs": [
{
"name": "a",
"type": "uint256[2]"
},
{
"name": "a_p",
"type": "uint256[2]"
},
{
"name": "b",
"type": "uint256[2][2]"
},
{
"name": "b_p",
"type": "uint256[2]"
},
{
"name": "c",
"type": "uint256[2]"
},
{
"name": "c_p",
"type": "uint256[2]"
},
{
"name": "h",
"type": "uint256[2]"
},
{
"name": "k",
"type": "uint256[2]"
},
{
"name": "input",
"type": "uint256[2]"
},
{
"name": "account",
"type": "address"
},
{
"name": "tokenId",
"type": "uint256"
}
],
"name": "submitSolution",
"outputs": [],
"payable": false,
"stateMutability": "nonpayable",
"type": "function"
},
{
"constant": false,
"inputs": [
{
"name": "to",
"type": "address"
},
{
"name": "tokenId",
"type": "uint256"
}
],
"name": "mint",
"outputs": [
{
"name": "",
"type": "bool"
}
],
"payable": false,
"stateMutability": "nonpayable",
"type": "function"
},
{
"constant": false,
"inputs": [
{
"name": "tokenId",
"type": "uint256"
}
],
"name": "mintBySolOwner",
"outputs": [
{
"name": "",
"type": "bool"
}
],
"payable": false,
"stateMutability": "nonpayable",
"type": "function"
}
],
"metadata": "{\"compiler\":{\"version\":\"0.5.2+commit.1df8f40c\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"constant\":true,\"inputs\":[{\"name\":\"interfaceId\",\"type\":\"bytes4\"}],\"name\":\"supportsInterface\",\"outputs\":[{\"name\":\"\",\"type\":\"bool\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"},{\"constant\":true,\"inputs\":[],\"name\":\"name\",\"outputs\":[{\"name\":\"\",\"type\":\"string\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"},{\"constant\":true,\"inputs\":[{\"name\":\"tokenId\",\"type\":\"uint256\"}],\"name\":\"getApproved\",\"outputs\":[{\"name\":\"\",\"type\":\"address\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"},{\"constant\":false,\"inputs\":[{\"name\":\"to\",\"type\":\"address\"},{\"name\":\"tokenId\",\"type\":\"uint256\"}],\"name\":\"approve\",\"outputs\":[],\"payable\":false,\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"constant\":false,\"inputs\":[{\"name\":\"isPaused\",\"type\":\"bool\"}],\"name\":\"setPaused\",\"outputs\":[],\"payable\":false,\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"constant\":true,\"inputs\":[],\"name\":\"totalSupply\",\"outputs\":[{\"name\":\"\",\"type\":\"uint256\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"},{\"constant\":false,\"inputs\":[{\"name\":\"a\",\"type\":\"uint256[2]\"},{\"name\":\"a_p\",\"type\":\"uint256[2]\"},{\"name\":\"b\",\"type\":\"uint256[2][2]\"},{\"name\":\"b_p\",\"type\":\"uint256[2]\"},{\"name\":\"c\",\"type\":\"uint256[2]\"},{\"name\":\"c_p\",\"type\":\"uint256[2]\"},{\"name\":\"h\",\"type\":\"uint256[2]\"},{\"name\":\"k\",\"type\":\"uint256[2]\"},{\"name\":\"input\",\"type\":\"uint256[2]\"},{\"name\":\"account\",\"type\":\"address\"},{\"name\":\"tokenId\",\"type\":\"uint256\"}],\"name\":\"submitSolution\",\"outputs\":[],\"payable\":false,\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"constant\":false,\"inputs\":[{\"name\":\"from\",\"type\":\"address\"},{\"name\":\"to\",\"type\":\"address\"},{\"name\":\"tokenId\",\"type\":\"uint256\"}],\"name\":\"transferFrom\",\"outputs\":[],\"payable\":false,\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"constant\":false,\"inputs\":[{\"name\":\"_myid\",\"type\":\"bytes32\"},{\"name\":\"_result\",\"type\":\"string\"}],\"name\":\"__callback\",\"outputs\":[],\"payable\":false,\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"constant\":true,\"inputs\":[{\"name\":\"owner\",\"type\":\"address\"},{\"name\":\"index\",\"type\":\"uint256\"}],\"name\":\"tokenOfOwnerByIndex\",\"outputs\":[{\"name\":\"\",\"type\":\"uint256\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"},{\"constant\":false,\"inputs\":[{\"name\":\"_myid\",\"type\":\"bytes32\"},{\"name\":\"_result\",\"type\":\"string\"},{\"name\":\"_proof\",\"type\":\"bytes\"}],\"name\":\"__callback\",\"outputs\":[],\"payable\":false,\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"constant\":false,\"inputs\":[{\"name\":\"to\",\"type\":\"address\"},{\"name\":\"tokenId\",\"type\":\"uint256\"}],\"name\":\"mint\",\"outputs\":[{\"name\":\"\",\"type\":\"bool\"}],\"payable\":false,\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"constant\":false,\"inputs\":[{\"name\":\"from\",\"type\":\"address\"},{\"name\":\"to\",\"type\":\"address\"},{\"name\":\"tokenId\",\"type\":\"uint256\"}],\"name\":\"safeTransferFrom\",\"outputs\":[],\"payable\":false,\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"constant\":true,\"inputs\":[{\"name\":\"index\",\"type\":\"uint256\"}],\"name\":\"tokenByIndex\",\"outputs\":[{\"name\":\"\",\"type\":\"uint256\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"},{\"constant\":true,\"inputs\":[{\"name\":\"tokenId\",\"type\":\"uint256\"}],\"name\":\"ownerOf\",\"outputs\":[{\"name\":\"\",\"type\":\"address\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"},{\"constant\":true,\"inputs\":[{\"name\":\"owner\",\"type\":\"address\"}],\"name\":\"balanceOf\",\"outputs\":[{\"name\":\"\",\"type\":\"uint256\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"},{\"constant\":true,\"inputs\":[],\"name\":\"symbol\",\"outputs\":[{\"name\":\"\",\"type\":\"string\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"},{\"constant\":false,\"inputs\":[{\"name\":\"to\",\"type\":\"address\"},{\"name\":\"approved\",\"type\":\"bool\"}],\"name\":\"setApprovalForAll\",\"outputs\":[],\"payable\":false,\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"constant\":false,\"inputs\":[{\"name\":\"tokenId\",\"type\":\"uint256\"}],\"name\":\"mintBySolOwner\",\"outputs\":[{\"name\":\"\",\"type\":\"bool\"}],\"payable\":false,\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"constant\":false,\"inputs\":[{\"name\":\"from\",\"type\":\"address\"},{\"name\":\"to\",\"type\":\"address\"},{\"name\":\"tokenId\",\"type\":\"uint256\"},{\"name\":\"_data\",\"type\":\"bytes\"}],\"name\":\"safeTransferFrom\",\"outputs\":[],\"payable\":false,\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"constant\":true,\"inputs\":[{\"name\":\"tokenId\",\"type\":\"uint256\"}],\"name\":\"tokenURI\",\"outputs\":[{\"name\":\"\",\"type\":\"string\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"},{\"constant\":true,\"inputs\":[],\"name\":\"contractOwner\",\"outputs\":[{\"name\":\"\",\"type\":\"address\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"},{\"constant\":true,\"inputs\":[],\"name\":\"baseTokenURI\",\"outputs\":[{\"name\":\"\",\"type\":\"string\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"},{\"constant\":true,\"inputs\":[{\"name\":\"owner\",\"type\":\"address\"},{\"name\":\"operator\",\"type\":\"address\"}],\"name\":\"isApprovedForAll\",\"outputs\":[{\"name\":\"\",\"type\":\"bool\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"},{\"constant\":false,\"inputs\":[{\"name\":\"newOwner\",\"type\":\"address\"}],\"name\":\"transferOwnership\",\"outputs\":[],\"payable\":false,\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"name\":\"verifierAddress\",\"type\":\"address\"}],\"payable\":false,\"stateMutability\":\"nonpayable\",\"type\":\"constructor\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"name\":\"to\",\"type\":\"address\"},{\"indexed\":true,\"name\":\"TokenId\",\"type\":\"uint256\"}],\"name\":\"SolutionAdded\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"name\":\"from\",\"type\":\"address\"},{\"indexed\":true,\"name\":\"to\",\"type\":\"address\"},{\"indexed\":true,\"name\":\"tokenId\",\"type\":\"uint256\"}],\"name\":\"Transfer\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"name\":\"owner\",\"type\":\"address\"},{\"indexed\":true,\"name\":\"approved\",\"type\":\"address\"},{\"indexed\":true,\"name\":\"tokenId\",\"type\":\"uint256\"}],\"name\":\"Approval\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"name\":\"owner\",\"type\":\"address\"},{\"indexed\":true,\"name\":\"operator\",\"type\":\"address\"},{\"indexed\":false,\"name\":\"approved\",\"type\":\"bool\"}],\"name\":\"ApprovalForAll\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[],\"name\":\"Paused\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[],\"name\":\"Unpaused\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"name\":\"to\",\"type\":\"address\"}],\"name\":\"ownerityTransfered\",\"type\":\"event\"}],\"devdoc\":{\"methods\":{\"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\"},\"return\":\"bool whether the given operator is approved by the given owner\"},\"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\"}},\"supportsInterface(bytes4)\":{\"details\":\"implement supportsInterface(bytes4) using a lookup table\"},\"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\"},\"return\":\"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\"},\"return\":\"uint256 token ID at the given index of the tokens list owned by the requested address\"},\"totalSupply()\":{\"details\":\"Gets the total amount of tokens stored by the contract\",\"return\":\"uint256 representing the total amount of tokens\"}}},\"userdoc\":{\"methods\":{}}},\"settings\":{\"compilationTarget\":{\"/Users/khalid/Desktop/AqarNFToken/eth-project/contracts/SolnSquareVerifier.sol\":\"SolnSquareVerifier\"},\"evmVersion\":\"byzantium\",\"libraries\":{},\"optimizer\":{\"enabled\":true,\"runs\":200},\"remappings\":[]},\"sources\":{\"/Users/khalid/Desktop/AqarNFToken/eth-project/contracts/ERC721Mintable.sol\":{\"keccak256\":\"0x1b6a9468ce1c5d235ed1d8efffdb917f50a24a91a29ca8b204b69a25b02fc9cc\",\"urls\":[\"bzzr://76046ecd9ad1aa2e2b9a48133705219f21e66ff3aa62c5008cad52be960ca360\"]},\"/Users/khalid/Desktop/AqarNFToken/eth-project/contracts/Oraclize.sol\":{\"keccak256\":\"0xe5ebe286b4624095629f76c6ac8dbad3cb305fbdb43fff09e4eebed35a05b49c\",\"urls\":[\"bzzr://f48ebdff8df1cabbd7749c5eb818a6c54a6ba92956a850736bdcfbc9f53f9ffd\"]},\"/Users/khalid/Desktop/AqarNFToken/eth-project/contracts/SolnSquareVerifier.sol\":{\"keccak256\":\"0x3e88c57ca10603f74b9ee0ab9f25d5c6324380c445ca0c2c379432c5c12e7feb\",\"urls\":[\"bzzr://b10561a1154e9561ef4ed7500634d917f1059673201fb4336a22dce1953f8abc\"]},\"/Users/khalid/Desktop/AqarNFToken/eth-project/contracts/SquareVerifier.sol\":{\"keccak256\":\"0x7628c8500652ead3feb25119bff302b8c8441ebfeddeabf0f3ef274c6d3fbaa6\",\"urls\":[\"bzzr://3f967b8661aa3e684b662961e416c341dcac77991047ba81f37dfd4cf32bcd31\"]},\"openzeppelin-solidity/contracts/drafts/Counters.sol\":{\"keccak256\":\"0x982e18d2e3df98e3339f70f955a4d1fb78411a29963d0ea34621759eef67e86d\",\"urls\":[\"bzzr://a5438906da44343a09c6b47666d3649f269d9d156f2109e147e21595b2284363\"]},\"openzeppelin-solidity/contracts/math/SafeMath.sol\":{\"keccak256\":\"0xc2a200a877c4a9b2475c246c54ffecc69ffde3e11af83319c63c2dc5458bac80\",\"urls\":[\"bzzr://c8876e2c39b60f155d748d71d715c8f3903fae5a405ac599adcb6ad2f9a583f9\"]},\"openzeppelin-solidity/contracts/token/ERC721/IERC721Receiver.sol\":{\"keccak256\":\"0xeb8a266ef2da0aa60eea704031902ffd28b2d13dd0e8f5b69bcfb8415f2dad85\",\"urls\":[\"bzzr://393e9843d41c0652f115378cc58083c4acc4d83f7999fe22932d5e237c215d3f\"]},\"openzeppelin-solidity/contracts/utils/Address.sol\":{\"keccak256\":\"0xea16b9933153c647242ba50b3e494fb133063d49f1fa81823f35a8c28754142e\",\"urls\":[\"bzzr://aa2b2eb534149525e194341c01cadf666668a1b7d679a268d10e23570a7e26b1\"]}},\"version\":1}",
"bytecode": "0x60806040523480156200001157600080fd5b5060405160208062002b63833981018060405260208110156200003357600080fd5b5051604080518082018252601981527f41716172205265616c204573746174652045786368616e67650000000000000060208281019190915282518084018452600481527f415141520000000000000000000000000000000000000000000000000000000081830152835160608101909452602880855292939092909162002b3b908301396000805460a060020a60ff0219600160a060020a031990911633171690556200010a7f01ffc9a70000000000000000000000000000000000000000000000000000000064010000000062000212810204565b6200013e7f80ac58cd0000000000000000000000000000000000000000000000000000000064010000000062000212810204565b620001727f780e9d630000000000000000000000000000000000000000000000000000000064010000000062000212810204565b82516200018790600f90602086019062000282565b5081516200019d90601090602085019062000282565b508051620001b390601190602084019062000282565b50620001e87f5b5e139f0000000000000000000000000000000000000000000000000000000064010000000062000212810204565b505060138054600160a060020a031916600160a060020a0393909316929092179091555062000327565b7fffffffff0000000000000000000000000000000000000000000000000000000080821614156200024257600080fd5b7fffffffff00000000000000000000000000000000000000000000000000000000166000908152600160208190526040909120805460ff19169091179055565b828054600181600116156101000203166002900490600052602060002090601f016020900481019282601f10620002c557805160ff1916838001178555620002f5565b82800160010185558215620002f5579182015b82811115620002f5578251825591602001919060010190620002d8565b506200030392915062000307565b5090565b6200032491905b808211156200030357600081556001016200030e565b90565b61280480620003376000396000f3fe608060405234801561001057600080fd5b5060043610610190576000357c01000000000000000000000000000000000000000000000000000000009004806342842e0e116100fb578063b0d64d1a116100b4578063ce606ee01161008e578063ce606ee014610911578063d547cfb714610919578063e985e9c514610921578063f2fde38b1461094f57610190565b8063b0d64d1a14610811578063b88d4fde1461082e578063c87b56dd146108f457610190565b806342842e0e146107455780634f6ccce71461077b5780636352211e1461079857806370a08231146107b557806395d89b41146107db578063a22cb465146107e357610190565b806318f511291161014d57806318f511291461030257806323b872dd146104d657806327dc297e1461050c5780632f745c59146105b957806338bbfa50146105e557806340c10f191461071957610190565b806301ffc9a71461019557806306fdde03146101e5578063081812fc14610262578063095ea7b31461029b57806316c38b3c146102c957806318160ddd146102e8575b600080fd5b6101d1600480360360208110156101ab57600080fd5b50357bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916610975565b604080519115158252519081900360200190f35b6101ed6109ad565b6040805160208082528351818301528351919283929083019185019080838360005b8381101561022757818101518382015260200161020f565b50505050905090810190601f1680156102545780820380516001836020036101000a031916815260200191505b509250505060405180910390f35b61027f6004803603602081101561027857600080fd5b5035610a44565b60408051600160a060020a039092168252519081900360200190f35b6102c7600480360360408110156102b157600080fd5b50600160a060020a038135169060200135610ac1565b005b6102c7600480360360208110156102df57600080fd5b50351515610c13565b6102f0610d67565b60408051918252519081900360200190f35b6102c760048036036102c081101561031957600080fd5b60408051808201825291830192918183019183906002908390839080828437600092019190915250506040805180820182529295949381810193925090600290839083908082843760009201829052506040805180820190915293969594608081019493509150600290835b828210156103c35760408051808201825290808402860190600290839083908082843760009201919091525050508152600190910190602001610385565b505060408051808201825293969594818101949350915060029083908390808284376000920191909152505060408051808201825292959493818101939250906002908390839080828437600092019190915250506040805180820182529295949381810193925090600290839083908082843760009201919091525050604080518082018252929594938181019392509060029083908390808284376000920191909152505060408051808201825292959493818101939250906002908390839080828437600092019190915250506040805180820182529295949381810193925090600290839083908082843760009201919091525091945050600160a060020a0382351692505060200135610d6d565b6102c7600480360360608110156104ec57600080fd5b50600160a060020a038135811691602081013590911690604001356113b7565b6102c76004803603604081101561052257600080fd5b8135919081019060408101602082013564010000000081111561054457600080fd5b82018360208201111561055657600080fd5b8035906020019184600183028401116401000000008311171561057857600080fd5b91908080601f0160208091040260200160405190810160405280939291908181526020018383808284376000920191909152509295506113dc945050505050565b6102f0600480360360408110156105cf57600080fd5b50600160a060020a0381351690602001356113fc565b6102c7600480360360608110156105fb57600080fd5b8135919081019060408101602082013564010000000081111561061d57600080fd5b82018360208201111561062f57600080fd5b8035906020019184600183028401116401000000008311171561065157600080fd5b91908080601f01602080910402602001604051908101604052809392919081815260200183838082843760009201919091525092959493602081019350359150506401000000008111156106a457600080fd5b8201836020820111156106b657600080fd5b803590602001918460018302840111640100000000831117156106d857600080fd5b91908080601f0160208091040260200160405190810160405280939291908181526020018383808284376000920191909152509295506113d7945050505050565b6101d16004803603604081101561072f57600080fd5b50600160a060020a038135169060200135611449565b6102c76004803603606081101561075b57600080fd5b50600160a060020a038135811691602081013590911690604001356115b5565b6102f06004803603602081101561079157600080fd5b50356115d1565b61027f600480360360208110156107ae57600080fd5b5035611606565b6102f0600480360360208110156107cb57600080fd5b5035600160a060020a0316611621565b6101ed61165f565b6102c7600480360360408110156107f957600080fd5b50600160a060020a03813516906020013515156116c0565b6101d16004803603602081101561082757600080fd5b5035611744565b6102c76004803603608081101561084457600080fd5b600160a060020a0382358116926020810135909116916040820135919081019060808101606082013564010000000081111561087f57600080fd5b82018360208201111561089157600080fd5b803590602001918460018302840111640100000000831117156108b357600080fd5b91908080601f0160208091040260200160405190810160405280939291908181526020018383808284376000920191909152509295506118b6945050505050565b6101ed6004803603602081101561090a57600080fd5b50356118de565b61027f611993565b6101ed6119a2565b6101d16004803603604081101561093757600080fd5b50600160a060020a0381358116916020013516611a03565b6102c76004803603602081101561096557600080fd5b5035600160a060020a0316611a31565b7bffffffffffffffffffffffffffffffffffffffffffffffffffffffff19811660009081526001602052604090205460ff165b919050565b600f8054604080516020601f6002600019610100600188161502019095169490940493840181900481028201810190925282815260609390929091830182828015610a395780601f10610a0e57610100808354040283529160200191610a39565b820191906000526020600020905b815481529060010190602001808311610a1c57829003601f168201915b505050505090505b90565b6000610a4f82611b50565b1515610aa5576040805160e560020a62461bcd02815260206004820152601060248201527f746f6b656e206e6f742065786973747300000000000000000000000000000000604482015290519081900360640190fd5b50600090815260036020526040902054600160a060020a031690565b600081815260026020526040902054600160a060020a0383811691161415610b1d5760405160e560020a62461bcd0281526004018080602001828103825260228152602001806127576022913960400191505060405180910390fd5b600081815260026020526040902054600160a060020a0316331480610b5f5750600081815260026020526040902054610b5f90600160a060020a031633611a03565b1515610b9f5760405160e560020a62461bcd0281526004018080602001828103825260368152602001806127216036913960400191505060405180910390fd5b6000818152600360209081526040808320805473ffffffffffffffffffffffffffffffffffffffff1916600160a060020a038781169182179092556002909352818420549151859492909116917f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92591a45050565b600054600160a060020a03163314610c5f5760405160e560020a62461bcd02815260040180806020018281038252602c815260200180612779602c913960400191505060405180910390fd5b60005460ff740100000000000000000000000000000000000000009091041615158115151415610cc35760405160e560020a62461bcd02815260040180806020018281038252602c8152602001806126f5602c913960400191505060405180910390fd5b6000805474ff00000000000000000000000000000000000000001916740100000000000000000000000000000000000000008315158102919091179182905560ff91041615610d3a576040517f9e87fac88ff661f02d44f95383c817fece4bce600a3dab7a54406878b965e75290600090a1610d64565b6040517fa45f47fdea8a1efdd9029a5691c7f759c32b7c698632b563573e155625d1693390600090a15b50565b60085490565b801515610dc4576040805160e560020a62461bcd02815260206004820152601d60248201527f746f6b656e49642073686f756c64206265206d6f7265207468616e2030000000604482015290519081900360640190fd5b60008181526015602052604090205415610e28576040805160e560020a62461bcd02815260206004820152601560248201527f746f6b656e49643a2068617320736f6c7574696f6e0000000000000000000000604482015290519081900360640190fd5b601360009054906101000a9004600160a060020a0316600160a060020a031663fe01ff628c8c8c8c8c8c8c8c8c6040518a63ffffffff167c0100000000000000000000000000000000000000000000000000000000028152600401808a600260200280838360005b83811015610ea8578181015183820152602001610e90565b5050505090500189600260200280838360005b83811015610ed3578181015183820152602001610ebb565b505050509050018860026000925b81841015610f215760208402830151604080838360005b83811015610f10578181015183820152602001610ef8565b505050509050019260010192610ee1565b9250505087600260200280838360005b83811015610f49578181015183820152602001610f31565b5050505090500186600260200280838360005b83811015610f74578181015183820152602001610f5c565b5050505090500185600260200280838360005b83811015610f9f578181015183820152602001610f87565b5050505090500184600260200280838360005b83811015610fca578181015183820152602001610fb2565b5050505090500183600260200280838360005b83811015610ff5578181015183820152602001610fdd565b5050505090500182600260200280838360005b83811015611020578181015183820152602001611008565b505050509050019950505050505050505050602060405180830381600087803b15801561104c57600080fd5b505af1158015611060573d6000803e3d6000fd5b505050506040513d602081101561107657600080fd5b505115156110ce576040805160e560020a62461bcd02815260206004820152601560248201527f696e636f72726563742070726f6f6620696e7075740000000000000000000000604482015290519081900360640190fd5b60008b8b8b8b8b8b8b8b8b604051602001808a600260200280838360005b838110156111045781810151838201526020016110ec565b5050505090500189600260200280838360005b8381101561112f578181015183820152602001611117565b505050509050018860026000925b8184101561117d5760208402830151604080838360005b8381101561116c578181015183820152602001611154565b50505050905001926001019261113d565b9250505087600260200280838360005b838110156111a557818101518382015260200161118d565b5050505090500186600260200280838360005b838110156111d05781810151838201526020016111b8565b5050505090500185600260200280838360005b838110156111fb5781810151838201526020016111e3565b5050505090500184600260200280838360005b8381101561122657818101518382015260200161120e565b5050505090500183600260200280838360005b83811015611251578181015183820152602001611239565b5050505090500182600260200280838360005b8381101561127c578181015183820152602001611264565b50505050905001995050505050505050505060405160208183030381529060405280519060200120905060146000828152602001908152602001600020600001546000141515611316576040805160e560020a62461bcd02815260206004820152601560248201527f736f6c7574696f6e20616c726561647920757365640000000000000000000000604482015290519081900360640190fd5b60008281526015602090815260408083208490558383526014909152902060018101805473ffffffffffffffffffffffffffffffffffffffff1916600160a060020a0386161790558281556113729060029081019086906125da565b506040518290600160a060020a038516907f3a01cc868bdb36c1d9b8a262a8ad25064b23ac175b3f8e4453f1daf8ff6bac0d90600090a3505050505050505050505050565b6113c13382611b6d565b15156113cc57600080fd5b6113d7838383611bcc565b505050565b6040805160008152602081019091526113f890839083906113d7565b5050565b600061140783611621565b821061141257600080fd5b600160a060020a038316600090815260066020526040902080548390811061143657fe5b9060005260206000200154905092915050565b6000818152601560205260408120548015156114af576040805160e560020a62461bcd02815260206004820152601d60248201527f6e6f20736f6c7574696f6e20666f756e6420666f7220746f6b656e4964000000604482015290519081900360640190fd5b60008181526014602052604090206004015460ff1615611519576040805160e560020a62461bcd02815260206004820152601760248201527f746f6b656e49643a20616c6c7265616479206d696e6564000000000000000000604482015290519081900360640190fd5b60008381526015602090815260408083205483526014909152902060010154600160a060020a0390811690851681146115865760405160e560020a62461bcd0281526004018080602001828103825260348152602001806127a56034913960400191505060405180910390fd5b6000828152601460205260409020600401805460ff191660011790556115ac8585611beb565b95945050505050565b6113d783838360206040519081016040528060008152506118b6565b60006115db610d67565b82106115e657600080fd5b60088054839081106115f457fe5b90600052602060002001549050919050565b600090815260026020526040902054600160a060020a031690565b6000600160a060020a038216151561163857600080fd5b600160a060020a038216600090815260046020526040902061165990611c54565b92915050565b60108054604080516020601f6002600019610100600188161502019095169490940493840181900481028201810190925282815260609390929091830182828015610a395780601f10610a0e57610100808354040283529160200191610a39565b600160a060020a0382163314156116d657600080fd5b336000818152600560209081526040808320600160a060020a03871680855290835292819020805460ff1916861515908117909155815190815290519293927f17307eab39ab6107e8899845ad3d59bd9653f200f220920489ca2b5937696c31929181900390910190a35050565b6000818152601560205260408120548015156117aa576040805160e560020a62461bcd02815260206004820152601d60248201527f6e6f20736f6c7574696f6e20666f756e6420666f7220746f6b656e4964000000604482015290519081900360640190fd5b60008181526014602052604090206004015460ff1615611814576040805160e560020a62461bcd02815260206004820152601760248201527f746f6b656e49643a20616c6c7265616479206d696e6564000000000000000000604482015290519081900360640190fd5b60008381526015602090815260408083205483526014909152902060010154600160a060020a031633811461187d5760405160e560020a62461bcd0281526004018080602001828103825260358152602001806126c06035913960400191505060405180910390fd5b6000828152601460205260409020600401805460ff191660011790556118a38185611c58565b6118ac84611c75565b5060019392505050565b6118c18484846113b7565b6118cd84848484611d4c565b15156118d857600080fd5b50505050565b60606118e982611b50565b15156118f457600080fd5b60008281526012602090815260409182902080548351601f6002600019610100600186161502019093169290920491820184900484028101840190945280845290918301828280156119875780601f1061195c57610100808354040283529160200191611987565b820191906000526020600020905b81548152906001019060200180831161196a57829003601f168201915b50505050509050919050565b600054600160a060020a031690565b60118054604080516020601f6002600019610100600188161502019095169490940493840181900481028201810190925282815260609390929091830182828015610a395780601f10610a0e57610100808354040283529160200191610a39565b600160a060020a03918216600090815260056020908152604080832093909416825291909152205460ff1690565b600054600160a060020a03163314611a7d5760405160e560020a62461bcd02815260040180806020018281038252602c815260200180612779602c913960400191505060405180910390fd5b600160a060020a03811615801590611aa35750600054600160a060020a03828116911614155b1515611afb576040805160e560020a62461bcd028152602060048083019190915260248201527f544f444f00000000000000000000000000000000000000000000000000000000604482015290519081900360640190fd5b6000805473ffffffffffffffffffffffffffffffffffffffff1916600160a060020a038316908117825560405190917f93e5ecfbe736ee3cad9b988a55772a484ccfce6d26873a3418b0514d588cce7691a250565b600090815260026020526040902054600160a060020a0316151590565b600080611b7983611606565b905080600160a060020a031684600160a060020a03161480611bb4575083600160a060020a0316611ba984610a44565b600160a060020a0316145b80611bc45750611bc48185611a03565b949350505050565b611bd7838383611ec8565b611be18382611fb7565b6113d782826120ae565b60008054600160a060020a03163314611c385760405160e560020a62461bcd02815260040180806020018281038252602c815260200180612779602c913960400191505060405180910390fd5b611c428383611c58565b611c4b82611c75565b50600192915050565b5490565b611c6282826120ec565b611c6c82826120ae565b6113f88161219c565b611c7e81611b50565b1515611c8957600080fd5b60118054604080516020601f60026000196101006001881615020190951694909404938401819004810282018101909252828152611d299390929091830182828015611d165780601f10611ceb57610100808354040283529160200191611d16565b820191906000526020600020905b815481529060010190602001808311611cf957829003601f168201915b5050505050611d24836121e0565b6122c4565b600082815260126020908152604090912082516113f89391929190910190612618565b6000611d6084600160a060020a0316612300565b1515611d6e57506001611bc4565b6040517f150b7a020000000000000000000000000000000000000000000000000000000081523360048201818152600160a060020a03888116602485015260448401879052608060648501908152865160848601528651600095928a169463150b7a029490938c938b938b939260a4019060208501908083838e5b83811015611e01578181015183820152602001611de9565b50505050905090810190601f168015611e2e5780820380516001836020036101000a031916815260200191505b5095505050505050602060405180830381600087803b158015611e5057600080fd5b505af1158015611e64573d6000803e3d6000fd5b505050506040513d6020811015611e7a57600080fd5b50517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff19167f150b7a020000000000000000000000000000000000000000000000000000000014915050949350505050565b82600160a060020a0316611edb82611606565b600160a060020a031614611eee57600080fd5b600160a060020a0382161515611f0357600080fd5b611f0c81612308565b600160a060020a0383166000908152600460205260409020611f2d90612350565b600160a060020a0382166000908152600460205260409020611f4e90612367565b600081815260026020526040808220805473ffffffffffffffffffffffffffffffffffffffff1916600160a060020a0386811691821790925591518493918716917fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef91a4505050565b600160a060020a038216600090815260066020526040812054611fe190600163ffffffff61237016565b60008381526007602052604090205490915080821461207e57600160a060020a038416600090815260066020526040812080548490811061201e57fe5b90600052602060002001549050806006600087600160a060020a0316600160a060020a031681526020019081526020016000208381548110151561205e57fe5b600091825260208083209091019290925591825260079052604090208190555b600160a060020a03841660009081526006602052604090208054906120a7906000198301612685565b5050505050565b600160a060020a0390911660009081526006602081815260408084208054868652600784529185208290559282526001810183559183529091200155565b600160a060020a038216151561210157600080fd5b61210a81611b50565b1561211457600080fd5b6000818152600260209081526040808320805473ffffffffffffffffffffffffffffffffffffffff1916600160a060020a03871690811790915583526004909152902061216090612367565b6040518190600160a060020a038416906000907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef908290a45050565b600880546000838152600960205260408120829055600182018355919091527ff3f7a9fe364faab93b216da50a3214154f22a0a2b415b23a84c8169e8b636ee30155565b6060811515612223575060408051808201909152600181527f300000000000000000000000000000000000000000000000000000000000000060208201526109a8565b8160005b811561223b57600101600a82049150612227565b6060816040519080825280601f01601f191660200182016040528015612268576020820181803883390190505b50905060001982015b85156122bb57815160001982019160f860020a6030600a8a06010291849190811061229857fe5b906020010190600160f860020a031916908160001a905350600a86049550612271565b50949350505050565b6040805160208181018352600080835283518083018552818152845192830190945281526060926122f9928692869290612385565b9392505050565b6000903b1190565b600081815260036020526040902054600160a060020a031615610d64576000908152600360205260409020805473ffffffffffffffffffffffffffffffffffffffff19169055565b805461236390600163ffffffff61237016565b9055565b80546001019055565b60008282111561237f57600080fd5b50900390565b6060808690506060869050606086905060608690506060869050606081518351855187518951010101016040519080825280601f01601f1916602001820160405280156123d9576020820181803883390190505b509050806000805b885181101561243f5788818151811015156123f857fe5b90602001015160f860020a900460f860020a02838380600101945081518110151561241f57fe5b906020010190600160f860020a031916908160001a9053506001016123e1565b5060005b87518110156124a157878181518110151561245a57fe5b90602001015160f860020a900460f860020a02838380600101945081518110151561248157fe5b906020010190600160f860020a031916908160001a905350600101612443565b5060005b86518110156125035786818151811015156124bc57fe5b90602001015160f860020a900460f860020a0283838060010194508151811015156124e357fe5b906020010190600160f860020a031916908160001a9053506001016124a5565b5060005b855181101561256557858181518110151561251e57fe5b90602001015160f860020a900460f860020a02838380600101945081518110151561254557fe5b906020010190600160f860020a031916908160001a905350600101612507565b5060005b84518110156125c757848181518110151561258057fe5b90602001015160f860020a900460f860020a0283838060010194508151811015156125a757fe5b906020010190600160f860020a031916908160001a905350600101612569565b50909d9c50505050505050505050505050565b8260028101928215612608579160200282015b828111156126085782518255916020019190600101906125ed565b506126149291506126a5565b5090565b828054600181600116156101000203166002900490600052602060002090601f016020900481019282601f1061265957805160ff1916838001178555612608565b8280016001018555821561260857918201828111156126085782518255916020019190600101906125ed565b8154818355818111156113d7576000838152602090206113d79181019083015b610a4191905b8082111561261457600081556001016126ab56fe6f7267696e616c206f776e6572206f6620746f6b656e20736f6c7574696f6e206973206e6f742063616c6c65722061646472657373636f6e74726163742070617573656420737461746520697320616c6c7265646579202769735061757365642763616c6c6572206e6f74206f776e6572206f66207468697320746f6b656e206e697468657220617070726f76656420666f7220616c6c63616e206e6f7420617070726f76652073616d65206f776e657220616464726573736f6e6c79206f776e6572206f6620636f6e74726163742063616e2063616c6c2074686973206d6574686f64736f7267696e616c206f776e6572206f6620746f6b656e20736f6c7574696f6e206973206e6f74206164647265737320676976656ea165627a7a72305820409304bff85daa9a78afab014c6b1e5ee4a42dfe2d6c1d016e546163eae6d96f002968747470733a2f2f617161726e66742e6865726f6b756170702e636f6d2f6170692f746f6b656e2f",
"deployedBytecode": "0x608060405234801561001057600080fd5b5060043610610190576000357c01000000000000000000000000000000000000000000000000000000009004806342842e0e116100fb578063b0d64d1a116100b4578063ce606ee01161008e578063ce606ee014610911578063d547cfb714610919578063e985e9c514610921578063f2fde38b1461094f57610190565b8063b0d64d1a14610811578063b88d4fde1461082e578063c87b56dd146108f457610190565b806342842e0e146107455780634f6ccce71461077b5780636352211e1461079857806370a08231146107b557806395d89b41146107db578063a22cb465146107e357610190565b806318f511291161014d57806318f511291461030257806323b872dd146104d657806327dc297e1461050c5780632f745c59146105b957806338bbfa50146105e557806340c10f191461071957610190565b806301ffc9a71461019557806306fdde03146101e5578063081812fc14610262578063095ea7b31461029b57806316c38b3c146102c957806318160ddd146102e8575b600080fd5b6101d1600480360360208110156101ab57600080fd5b50357bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916610975565b604080519115158252519081900360200190f35b6101ed6109ad565b6040805160208082528351818301528351919283929083019185019080838360005b8381101561022757818101518382015260200161020f565b50505050905090810190601f1680156102545780820380516001836020036101000a031916815260200191505b509250505060405180910390f35b61027f6004803603602081101561027857600080fd5b5035610a44565b60408051600160a060020a039092168252519081900360200190f35b6102c7600480360360408110156102b157600080fd5b50600160a060020a038135169060200135610ac1565b005b6102c7600480360360208110156102df57600080fd5b50351515610c13565b6102f0610d67565b60408051918252519081900360200190f35b6102c760048036036102c081101561031957600080fd5b60408051808201825291830192918183019183906002908390839080828437600092019190915250506040805180820182529295949381810193925090600290839083908082843760009201829052506040805180820190915293969594608081019493509150600290835b828210156103c35760408051808201825290808402860190600290839083908082843760009201919091525050508152600190910190602001610385565b505060408051808201825293969594818101949350915060029083908390808284376000920191909152505060408051808201825292959493818101939250906002908390839080828437600092019190915250506040805180820182529295949381810193925090600290839083908082843760009201919091525050604080518082018252929594938181019392509060029083908390808284376000920191909152505060408051808201825292959493818101939250906002908390839080828437600092019190915250506040805180820182529295949381810193925090600290839083908082843760009201919091525091945050600160a060020a0382351692505060200135610d6d565b6102c7600480360360608110156104ec57600080fd5b50600160a060020a038135811691602081013590911690604001356113b7565b6102c76004803603604081101561052257600080fd5b8135919081019060408101602082013564010000000081111561054457600080fd5b82018360208201111561055657600080fd5b8035906020019184600183028401116401000000008311171561057857600080fd5b91908080601f0160208091040260200160405190810160405280939291908181526020018383808284376000920191909152509295506113dc945050505050565b6102f0600480360360408110156105cf57600080fd5b50600160a060020a0381351690602001356113fc565b6102c7600480360360608110156105fb57600080fd5b8135919081019060408101602082013564010000000081111561061d57600080fd5b82018360208201111561062f57600080fd5b8035906020019184600183028401116401000000008311171561065157600080fd5b91908080601f01602080910402602001604051908101604052809392919081815260200183838082843760009201919091525092959493602081019350359150506401000000008111156106a457600080fd5b8201836020820111156106b657600080fd5b803590602001918460018302840111640100000000831117156106d857600080fd5b91908080601f0160208091040260200160405190810160405280939291908181526020018383808284376000920191909152509295506113d7945050505050565b6101d16004803603604081101561072f57600080fd5b50600160a060020a038135169060200135611449565b6102c76004803603606081101561075b57600080fd5b50600160a060020a038135811691602081013590911690604001356115b5565b6102f06004803603602081101561079157600080fd5b50356115d1565b61027f600480360360208110156107ae57600080fd5b5035611606565b6102f0600480360360208110156107cb57600080fd5b5035600160a060020a0316611621565b6101ed61165f565b6102c7600480360360408110156107f957600080fd5b50600160a060020a03813516906020013515156116c0565b6101d16004803603602081101561082757600080fd5b5035611744565b6102c76004803603608081101561084457600080fd5b600160a060020a0382358116926020810135909116916040820135919081019060808101606082013564010000000081111561087f57600080fd5b82018360208201111561089157600080fd5b803590602001918460018302840111640100000000831117156108b357600080fd5b91908080601f0160208091040260200160405190810160405280939291908181526020018383808284376000920191909152509295506118b6945050505050565b6101ed6004803603602081101561090a57600080fd5b50356118de565b61027f611993565b6101ed6119a2565b6101d16004803603604081101561093757600080fd5b50600160a060020a0381358116916020013516611a03565b6102c76004803603602081101561096557600080fd5b5035600160a060020a0316611a31565b7bffffffffffffffffffffffffffffffffffffffffffffffffffffffff19811660009081526001602052604090205460ff165b919050565b600f8054604080516020601f6002600019610100600188161502019095169490940493840181900481028201810190925282815260609390929091830182828015610a395780601f10610a0e57610100808354040283529160200191610a39565b820191906000526020600020905b815481529060010190602001808311610a1c57829003601f168201915b505050505090505b90565b6000610a4f82611b50565b1515610aa5576040805160e560020a62461bcd02815260206004820152601060248201527f746f6b656e206e6f742065786973747300000000000000000000000000000000604482015290519081900360640190fd5b50600090815260036020526040902054600160a060020a031690565b600081815260026020526040902054600160a060020a0383811691161415610b1d5760405160e560020a62461bcd0281526004018080602001828103825260228152602001806127576022913960400191505060405180910390fd5b600081815260026020526040902054600160a060020a0316331480610b5f5750600081815260026020526040902054610b5f90600160a060020a031633611a03565b1515610b9f5760405160e560020a62461bcd0281526004018080602001828103825260368152602001806127216036913960400191505060405180910390fd5b6000818152600360209081526040808320805473ffffffffffffffffffffffffffffffffffffffff1916600160a060020a038781169182179092556002909352818420549151859492909116917f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92591a45050565b600054600160a060020a03163314610c5f5760405160e560020a62461bcd02815260040180806020018281038252602c815260200180612779602c913960400191505060405180910390fd5b60005460ff740100000000000000000000000000000000000000009091041615158115151415610cc35760405160e560020a62461bcd02815260040180806020018281038252602c8152602001806126f5602c913960400191505060405180910390fd5b6000805474ff00000000000000000000000000000000000000001916740100000000000000000000000000000000000000008315158102919091179182905560ff91041615610d3a576040517f9e87fac88ff661f02d44f95383c817fece4bce600a3dab7a54406878b965e75290600090a1610d64565b6040517fa45f47fdea8a1efdd9029a5691c7f759c32b7c698632b563573e155625d1693390600090a15b50565b60085490565b801515610dc4576040805160e560020a62461bcd02815260206004820152601d60248201527f746f6b656e49642073686f756c64206265206d6f7265207468616e2030000000604482015290519081900360640190fd5b60008181526015602052604090205415610e28576040805160e560020a62461bcd02815260206004820152601560248201527f746f6b656e49643a2068617320736f6c7574696f6e0000000000000000000000604482015290519081900360640190fd5b601360009054906101000a9004600160a060020a0316600160a060020a031663fe01ff628c8c8c8c8c8c8c8c8c6040518a63ffffffff167c0100000000000000000000000000000000000000000000000000000000028152600401808a600260200280838360005b83811015610ea8578181015183820152602001610e90565b5050505090500189600260200280838360005b83811015610ed3578181015183820152602001610ebb565b505050509050018860026000925b81841015610f215760208402830151604080838360005b83811015610f10578181015183820152602001610ef8565b505050509050019260010192610ee1565b9250505087600260200280838360005b83811015610f49578181015183820152602001610f31565b5050505090500186600260200280838360005b83811015610f74578181015183820152602001610f5c565b5050505090500185600260200280838360005b83811015610f9f578181015183820152602001610f87565b5050505090500184600260200280838360005b83811015610fca578181015183820152602001610fb2565b5050505090500183600260200280838360005b83811015610ff5578181015183820152602001610fdd565b5050505090500182600260200280838360005b83811015611020578181015183820152602001611008565b505050509050019950505050505050505050602060405180830381600087803b15801561104c57600080fd5b505af1158015611060573d6000803e3d6000fd5b505050506040513d602081101561107657600080fd5b505115156110ce576040805160e560020a62461bcd02815260206004820152601560248201527f696e636f72726563742070726f6f6620696e7075740000000000000000000000604482015290519081900360640190fd5b60008b8b8b8b8b8b8b8b8b604051602001808a600260200280838360005b838110156111045781810151838201526020016110ec565b5050505090500189600260200280838360005b8381101561112f578181015183820152602001611117565b505050509050018860026000925b8184101561117d5760208402830151604080838360005b8381101561116c578181015183820152602001611154565b50505050905001926001019261113d565b9250505087600260200280838360005b838110156111a557818101518382015260200161118d565b5050505090500186600260200280838360005b838110156111d05781810151838201526020016111b8565b5050505090500185600260200280838360005b838110156111fb5781810151838201526020016111e3565b5050505090500184600260200280838360005b8381101561122657818101518382015260200161120e565b5050505090500183600260200280838360005b83811015611251578181015183820152602001611239565b5050505090500182600260200280838360005b8381101561127c578181015183820152602001611264565b50505050905001995050505050505050505060405160208183030381529060405280519060200120905060146000828152602001908152602001600020600001546000141515611316576040805160e560020a62461bcd02815260206004820152601560248201527f736f6c7574696f6e20616c726561647920757365640000000000000000000000604482015290519081900360640190fd5b60008281526015602090815260408083208490558383526014909152902060018101805473ffffffffffffffffffffffffffffffffffffffff1916600160a060020a0386161790558281556113729060029081019086906125da565b506040518290600160a060020a038516907f3a01cc868bdb36c1d9b8a262a8ad25064b23ac175b3f8e4453f1daf8ff6bac0d90600090a3505050505050505050505050565b6113c13382611b6d565b15156113cc57600080fd5b6113d7838383611bcc565b505050565b6040805160008152602081019091526113f890839083906113d7565b5050565b600061140783611621565b821061141257600080fd5b600160a060020a038316600090815260066020526040902080548390811061143657fe5b9060005260206000200154905092915050565b6000818152601560205260408120548015156114af576040805160e560020a62461bcd02815260206004820152601d60248201527f6e6f20736f6c7574696f6e20666f756e6420666f7220746f6b656e4964000000604482015290519081900360640190fd5b60008181526014602052604090206004015460ff1615611519576040805160e560020a62461bcd02815260206004820152601760248201527f746f6b656e49643a20616c6c7265616479206d696e6564000000000000000000604482015290519081900360640190fd5b60008381526015602090815260408083205483526014909152902060010154600160a060020a0390811690851681146115865760405160e560020a62461bcd0281526004018080602001828103825260348152602001806127a56034913960400191505060405180910390fd5b6000828152601460205260409020600401805460ff191660011790556115ac8585611beb565b95945050505050565b6113d783838360206040519081016040528060008152506118b6565b60006115db610d67565b82106115e657600080fd5b60088054839081106115f457fe5b90600052602060002001549050919050565b600090815260026020526040902054600160a060020a031690565b6000600160a060020a038216151561163857600080fd5b600160a060020a038216600090815260046020526040902061165990611c54565b92915050565b60108054604080516020601f6002600019610100600188161502019095169490940493840181900481028201810190925282815260609390929091830182828015610a395780601f10610a0e57610100808354040283529160200191610a39565b600160a060020a0382163314156116d657600080fd5b336000818152600560209081526040808320600160a060020a03871680855290835292819020805460ff1916861515908117909155815190815290519293927f17307eab39ab6107e8899845ad3d59bd9653f200f220920489ca2b5937696c31929181900390910190a35050565b6000818152601560205260408120548015156117aa576040805160e560020a62461bcd02815260206004820152601d60248201527f6e6f20736f6c7574696f6e20666f756e6420666f7220746f6b656e4964000000604482015290519081900360640190fd5b60008181526014602052604090206004015460ff1615611814576040805160e560020a62461bcd02815260206004820152601760248201527f746f6b656e49643a20616c6c7265616479206d696e6564000000000000000000604482015290519081900360640190fd5b60008381526015602090815260408083205483526014909152902060010154600160a060020a031633811461187d5760405160e560020a62461bcd0281526004018080602001828103825260358152602001806126c06035913960400191505060405180910390fd5b6000828152601460205260409020600401805460ff191660011790556118a38185611c58565b6118ac84611c75565b5060019392505050565b6118c18484846113b7565b6118cd84848484611d4c565b15156118d857600080fd5b50505050565b60606118e982611b50565b15156118f457600080fd5b60008281526012602090815260409182902080548351601f6002600019610100600186161502019093169290920491820184900484028101840190945280845290918301828280156119875780601f1061195c57610100808354040283529160200191611987565b820191906000526020600020905b81548152906001019060200180831161196a57829003601f168201915b50505050509050919050565b600054600160a060020a031690565b60118054604080516020601f6002600019610100600188161502019095169490940493840181900481028201810190925282815260609390929091830182828015610a395780601f10610a0e57610100808354040283529160200191610a39565b600160a060020a03918216600090815260056020908152604080832093909416825291909152205460ff1690565b600054600160a060020a03163314611a7d5760405160e560020a62461bcd02815260040180806020018281038252602c815260200180612779602c913960400191505060405180910390fd5b600160a060020a03811615801590611aa35750600054600160a060020a03828116911614155b1515611afb576040805160e560020a62461bcd028152602060048083019190915260248201527f544f444f00000000000000000000000000000000000000000000000000000000604482015290519081900360640190fd5b6000805473ffffffffffffffffffffffffffffffffffffffff1916600160a060020a038316908117825560405190917f93e5ecfbe736ee3cad9b988a55772a484ccfce6d26873a3418b0514d588cce7691a250565b600090815260026020526040902054600160a060020a0316151590565b600080611b7983611606565b905080600160a060020a031684600160a060020a03161480611bb4575083600160a060020a0316611ba984610a44565b600160a060020a0316145b80611bc45750611bc48185611a03565b949350505050565b611bd7838383611ec8565b611be18382611fb7565b6113d782826120ae565b60008054600160a060020a03163314611c385760405160e560020a62461bcd02815260040180806020018281038252602c815260200180612779602c913960400191505060405180910390fd5b611c428383611c58565b611c4b82611c75565b50600192915050565b5490565b611c6282826120ec565b611c6c82826120ae565b6113f88161219c565b611c7e81611b50565b1515611c8957600080fd5b60118054604080516020601f60026000196101006001881615020190951694909404938401819004810282018101909252828152611d299390929091830182828015611d165780601f10611ceb57610100808354040283529160200191611d16565b820191906000526020600020905b815481529060010190602001808311611cf957829003601f168201915b5050505050611d24836121e0565b6122c4565b600082815260126020908152604090912082516113f89391929190910190612618565b6000611d6084600160a060020a0316612300565b1515611d6e57506001611bc4565b6040517f150b7a020000000000000000000000000000000000000000000000000000000081523360048201818152600160a060020a03888116602485015260448401879052608060648501908152865160848601528651600095928a169463150b7a029490938c938b938b939260a4019060208501908083838e5b83811015611e01578181015183820152602001611de9565b50505050905090810190601f168015611e2e5780820380516001836020036101000a031916815260200191505b5095505050505050602060405180830381600087803b158015611e5057600080fd5b505af1158015611e64573d6000803e3d6000fd5b505050506040513d6020811015611e7a57600080fd5b50517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff19167f150b7a020000000000000000000000000000000000000000000000000000000014915050949350505050565b82600160a060020a0316611edb82611606565b600160a060020a031614611eee57600080fd5b600160a060020a0382161515611f0357600080fd5b611f0c81612308565b600160a060020a0383166000908152600460205260409020611f2d90612350565b600160a060020a0382166000908152600460205260409020611f4e90612367565b600081815260026020526040808220805473ffffffffffffffffffffffffffffffffffffffff1916600160a060020a0386811691821790925591518493918716917fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef91a4505050565b600160a060020a038216600090815260066020526040812054611fe190600163ffffffff61237016565b60008381526007602052604090205490915080821461207e57600160a060020a038416600090815260066020526040812080548490811061201e57fe5b90600052602060002001549050806006600087600160a060020a0316600160a060020a031681526020019081526020016000208381548110151561205e57fe5b600091825260208083209091019290925591825260079052604090208190555b600160a060020a03841660009081526006602052604090208054906120a7906000198301612685565b5050505050565b600160a060020a0390911660009081526006602081815260408084208054868652600784529185208290559282526001810183559183529091200155565b600160a060020a038216151561210157600080fd5b61210a81611b50565b1561211457600080fd5b6000818152600260209081526040808320805473ffffffffffffffffffffffffffffffffffffffff1916600160a060020a03871690811790915583526004909152902061216090612367565b6040518190600160a060020a038416906000907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef908290a45050565b600880546000838152600960205260408120829055600182018355919091527ff3f7a9fe364faab93b216da50a3214154f22a0a2b415b23a84c8169e8b636ee30155565b6060811515612223575060408051808201909152600181527f300000000000000000000000000000000000000000000000000000000000000060208201526109a8565b8160005b811561223b57600101600a82049150612227565b6060816040519080825280601f01601f191660200182016040528015612268576020820181803883390190505b50905060001982015b85156122bb57815160001982019160f860020a6030600a8a06010291849190811061229857fe5b906020010190600160f860020a031916908160001a905350600a86049550612271565b50949350505050565b6040805160208181018352600080835283518083018552818152845192830190945281526060926122f9928692869290612385565b9392505050565b6000903b1190565b600081815260036020526040902054600160a060020a031615610d64576000908152600360205260409020805473ffffffffffffffffffffffffffffffffffffffff19169055565b805461236390600163ffffffff61237016565b9055565b80546001019055565b60008282111561237f57600080fd5b50900390565b6060808690506060869050606086905060608690506060869050606081518351855187518951010101016040519080825280601f01601f1916602001820160405280156123d9576020820181803883390190505b509050806000805b885181101561243f5788818151811015156123f857fe5b90602001015160f860020a900460f860020a02838380600101945081518110151561241f57fe5b906020010190600160f860020a031916908160001a9053506001016123e1565b5060005b87518110156124a157878181518110151561245a57fe5b90602001015160f860020a900460f860020a02838380600101945081518110151561248157fe5b906020010190600160f860020a031916908160001a905350600101612443565b5060005b86518110156125035786818151811015156124bc57fe5b90602001015160f860020a900460f860020a0283838060010194508151811015156124e357fe5b906020010190600160f860020a031916908160001a9053506001016124a5565b5060005b855181101561256557858181518110151561251e57fe5b90602001015160f860020a900460f860020a02838380600101945081518110151561254557fe5b906020010190600160f860020a031916908160001a905350600101612507565b5060005b84518110156125c757848181518110151561258057fe5b90602001015160f860020a900460f860020a0283838060010194508151811015156125a757fe5b906020010190600160f860020a031916908160001a905350600101612569565b50909d9c50505050505050505050505050565b8260028101928215612608579160200282015b828111156126085782518255916020019190600101906125ed565b506126149291506126a5565b5090565b828054600181600116156101000203166002900490600052602060002090601f016020900481019282601f1061265957805160ff1916838001178555612608565b8280016001018555821561260857918201828111156126085782518255916020019190600101906125ed565b8154818355818111156113d7576000838152602090206113d79181019083015b610a4191905b8082111561261457600081556001016126ab56fe6f7267696e616c206f776e6572206f6620746f6b656e20736f6c7574696f6e206973206e6f742063616c6c65722061646472657373636f6e74726163742070617573656420737461746520697320616c6c7265646579202769735061757365642763616c6c6572206e6f74206f776e6572206f66207468697320746f6b656e206e697468657220617070726f76656420666f7220616c6c63616e206e6f7420617070726f76652073616d65206f776e657220616464726573736f6e6c79206f776e6572206f6620636f6e74726163742063616e2063616c6c2074686973206d6574686f64736f7267696e616c206f776e6572206f6620746f6b656e20736f6c7574696f6e206973206e6f74206164647265737320676976656ea165627a7a72305820409304bff85daa9a78afab014c6b1e5ee4a42dfe2d6c1d016e546163eae6d96f0029",
"sourceMap": "307:3180:3:-;;;926:97;8:9:-1;5:2;;;30:1;27;20:12;5:2;926:97:3;;;;;;;;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;926:97:3;20088:284:0;;;;;;;;;;;;926:97:3;20088:284:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;599:6;:19;;-1:-1:-1;;;;;;;;;;;;599:19:0;;;608:10;599:19;1888:15;;;3089:40;3108:20;3089:18;;;;:40;:::i;:::-;5235;5254:20;5235:18;;;;:40;:::i;:::-;12793:51;12812:31;12793:18;;;;:51;:::i;:::-;20229:12;;;;:5;;:12;;;;;:::i;:::-;-1:-1:-1;20251:16:0;;;;:7;;:16;;;;;:::i;:::-;-1:-1:-1;20277:28:0;;;;:13;;:28;;;;;:::i;:::-;-1:-1:-1;20316:49:0;20335:29;20316:18;;;;:49;:::i;:::-;-1:-1:-1;;980:8:3;:36;;-1:-1:-1;;;;;;980:36:3;-1:-1:-1;;;;;980:36:3;;;;;;;;;;;-1:-1:-1;307:3180:3;;3439:158:0;3514:25;;;;;;3506:34;;;;;;3550:33;;;;;;3586:4;3550:33;;;;;;;;:40;;-1:-1:-1;;3550:40:0;;;;;;3439:158::o;307:3180:3:-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;307:3180:3;;;-1:-1:-1;307:3180:3;:::i;:::-;;;:::o;:::-;;;;;;;;;;;;;;;;;;;;:::o;:::-;;;;;;;",
"deployedSourceMap": "307:3180:3:-;;;;8:9:-1;5:2;;;30:1;27;20:12;5:2;307:3180:3;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;3227:133:0;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;3227:133:0;-1:-1:-1;;3227:133:0;;:::i;:::-;;;;;;;;;;;;;;;;;;20460:81;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;8:100:-1;33:3;30:1;27:10;8:100;;;90:11;;;84:18;71:11;;;64:39;52:2;45:10;8:100;;;12:14;20460:81:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;6570:222;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;6570:222:0;;:::i;:::-;;;;-1:-1:-1;;;;;6570:222:0;;;;;;;;;;;;;;5852:712;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;;;;;;5852:712:0;;;;;;;;:::i;:::-;;2348:264;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;2348:264:0;;;;:::i;13558:94::-;;;:::i;:::-;;;;;;;;;;;;;;;;1108:1016:3;;;;;;13:3:-1;8;5:12;2:2;;;30:1;27;20:12;2:2;1108:1016:3;;;;;;;;;;;;;;;;;;;;;;;;;;;;1:33:-1;99:1;81:16;;74:27;;;;-1:-1;;1108:1016:3;;;;;;;;;;;;;;;;;-1:-1:-1;1108:1016:3;;;;;;;;;;1:33:-1;99:1;81:16;;74:27;;;-1:-1;1108:1016:3;;;;;;;;;;;;;;;;;;-1:-1:-1;1108:1016:3;-1:-1:-1;1108:1016:3;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;1:33:-1;99:1;81:16;;74:27;;;;-1:-1;;;1108:1016:3;;;;;;;;;;;;-1:-1:-1;;1108:1016:3;;;;;;;;;;;;;;;;;-1:-1:-1;1108:1016:3;-1:-1:-1;1108:1016:3;;;;;;;;;1:33:-1;99:1;81:16;;74:27;;;;-1:-1;;1108:1016:3;;;;;;;;;;;;;;;;;-1:-1:-1;1108:1016:3;;;;;;;;;;1:33:-1;99:1;81:16;;74:27;;;;-1:-1;;1108:1016:3;;;;;;;;;;;;;;;;;-1:-1:-1;1108:1016:3;;;;;;;;;;1:33:-1;99:1;81:16;;74:27;;;;-1:-1;;1108:1016:3;;;;;;;;;;;;;;;;;-1:-1:-1;1108:1016:3;;;;;;;;;;1:33:-1;99:1;81:16;;74:27;;;;-1:-1;;1108:1016:3;;;;;;;;;;;;;;;;;-1:-1:-1;1108:1016:3;;;;;;;;;;1:33:-1;99:1;81:16;;74:27;;;;-1:-1;;1108:1016:3;;;;;;;;;;;;;;;;;-1:-1:-1;1108:1016:3;;;;;;;;;;1:33:-1;99:1;81:16;;74:27;;;;-1:-1;1108:1016:3;;-1:-1:-1;;;;;;;1108:1016:3;;;;-1:-1:-1;;1108:1016:3;;;;:::i;7769:180:0:-;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;;;;;;7769:180:0;;;;;;;;;;;;;;;;;:::i;14801:122:2:-;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;14801:122:2;;;;;;;;;;;;;;21:11:-1;5:28;;2:2;;;46:1;43;36:12;2:2;14801:122:2;;35:9:-1;28:4;12:14;8:25;5:40;2:2;;;58:1;55;48:12;2:2;14801:122: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;14801:122:2;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;30:3:-1;22:6;14;1:33;99:1;81:16;;74:27;;;;-1:-1;14801:122:2;;-1:-1:-1;14801:122:2;;-1:-1:-1;;;;;14801:122:2:i;13224:182:0:-;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;;;;;;13224:182:0;;;;;;;;:::i;14929:166:2:-;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;14929:166:2;;;;;;;;;;;;;;21:11:-1;5:28;;2:2;;;46:1;43;36:12;2:2;14929:166:2;;35:9:-1;28:4;12:14;8:25;5:40;2:2;;;58:1;55;48:12;2:2;14929:166: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;14929:166:2;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;30:3:-1;22:6;14;1:33;99:1;81:16;;74:27;;;;-1:-1;14929:166:2;;;;;;;;-1:-1:-1;14929:166:2;;-1:-1:-1;;21:11;5:28;;2:2;;;46:1;43;36:12;2:2;14929:166:2;;35:9:-1;28:4;12:14;8:25;5:40;2:2;;;58:1;55;48:12;2:2;14929:166: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;14929:166:2;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;30:3:-1;22:6;14;1:33;99:1;81:16;;74:27;;;;-1:-1;14929:166:2;;-1:-1:-1;14929:166:2;;-1:-1:-1;;;;;14929:166:2:i;2340:535:3:-;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;;;;;;2340:535:3;;;;;;;;:::i;7955:132:0:-;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;;;;;;7955:132:0;;;;;;;;;;;;;;;;;:::i;13989:148::-;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;13989:148:0;;:::i;5617:162::-;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;5617:162:0;;:::i;5288:323::-;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;5288:323:0;-1:-1:-1;;;;;5288:323:0;;:::i;20547:85::-;;;:::i;7084:213::-;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;;;;;;7084:213:0;;;;;;;;;;:::i;2881:604:3:-;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;2881:604:3;;:::i;8093:211:0:-;;;;;;13:3:-1;8;5:12;2:2;;;30:1;27;20:12;2:2;-1:-1;;;;;8093:211:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;21:11:-1;5:28;;2:2;;;46:1;43;36:12;2:2;8093:211:0;;35:9:-1;28:4;12:14;8:25;5:40;2:2;;;58:1;55;48:12;2:2;8093:211:0;;;;;;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;8093:211:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;30:3:-1;22:6;14;1:33;99:1;81:16;;74:27;;;;-1:-1;8093:211:0;;-1:-1:-1;8093:211:0;;-1:-1:-1;;;;;8093:211:0:i;20741:151::-;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;20741:151:0;;:::i;1419:83::-;;;:::i;20638:97::-;;;:::i;7618:145::-;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;;;;;;7618:145:0;;;;;;;;;;:::i;1065:348::-;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;1065:348:0;-1:-1:-1;;;;;1065:348:0;;:::i;3227:133::-;-1:-1:-1;;3320:33:0;;3297:4;3320:33;;;:20;:33;;;;;;;;3227:133;;;;:::o;20460:81::-;20529:5;20522:12;;;;;;;;-1:-1:-1;;20522:12:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;20498:13;;20522:12;;20529:5;;20522:12;;20529:5;20522:12;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;20460:81;;:::o;6570:222::-;6629:7;6707:16;6715:7;6707;:16::i;:::-;6699:45;;;;;;;-1:-1:-1;;;;;6699:45:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;6761:24:0;;;;:15;:24;;;;;;-1:-1:-1;;;;;6761:24:0;;6570:222::o;5852:712::-;6015:20;;;;:11;:20;;;;;;-1:-1:-1;;;;;6009:26:0;;;6015:20;;6009:26;;6001:73;;;;-1:-1:-1;;;;;6001:73:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;6211:20;;;;:11;:20;;;;;;-1:-1:-1;;;;;6211:20:0;6197:10;:34;;:88;;-1:-1:-1;6252:20:0;;;;:11;:20;;;;;;6235:50;;-1:-1:-1;;;;;6252:20:0;6274:10;6235:16;:50::i;:::-;6189:180;;;;;;-1:-1:-1;;;;;6189:180:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;6432:24;;;;:15;:24;;;;;;;;:29;;-1:-1:-1;;6432:29:0;-1:-1:-1;;;;;6432:29:0;;;;;;;;;6522:11;:20;;;;;;;6513:43;;6432:24;;6522:20;;;;;6513:43;;;5852:712;;:::o;2348:264::-;783:6;;-1:-1:-1;;;;;783:6:0;769:10;:20;761:77;;;;-1:-1:-1;;;;;761:77:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;2419:7;;;;;;;;:19;;;;;;;2411:76;;;;-1:-1:-1;;;;;2411:76:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;2497:7;:18;;-1:-1:-1;;2497:18:0;;;;;;;;;;;;;;;;2529:7;;;2525:80;;;2555:8;;;;;;;2525:80;;;2595:10;;;;;;;2525:80;2348:264;:::o;13558:94::-;13628:10;:17;13558:94;:::o;1108:1016:3:-;1479:12;;;1471:54;;;;;-1:-1:-1;;;;;1471:54:3;;;;;;;;;;;;;;;;;;;;;;;;;;;;1577:1;1543:22;;;:13;:22;;;;;;:36;1535:70;;;;;-1:-1:-1;;;;;1535:70:3;;;;;;;;;;;;;;;;;;;;;;;;;;;;1623:8;;;;;;;;;-1:-1:-1;;;;;1623:8:3;-1:-1:-1;;;;;1623:17:3;;1641:1;1644:3;1649:1;1652:3;1657:1;1660:3;1665:1;1668;1671:5;1623:54;;;;;;;;;;;;;;;;;;;23:1:-1;8:100;33:3;30:1;27:10;8:100;;;90:11;;;84:18;71:11;;;64:39;52:2;45:10;8:100;;;12:14;1623:54:3;;;;;;;;;;;;;23:1:-1;8:100;33:3;30:1;27:10;8:100;;;90:11;;;84:18;71:11;;;64:39;52:2;45:10;8:100;;;12:14;1623:54:3;;;;;;;;;;;;;;;;;;;;;;;;;;;23:1:-1;8:100;33:3;30:1;27:10;8:100;;;90:11;;;84:18;71:11;;;64:39;52:2;45:10;8:100;;;12:14;1623:54:3;;;;;;;;;;;;;;;;;;;;;;;;23:1:-1;8:100;33:3;30:1;27:10;8:100;;;90:11;;;84:18;71:11;;;64:39;52:2;45:10;8:100;;;12:14;1623:54:3;;;;;;;;;;;;;23:1:-1;8:100;33:3;30:1;27:10;8:100;;;90:11;;;84:18;71:11;;;64:39;52:2;45:10;8:100;;;12:14;1623:54:3;;;;;;;;;;;;;23:1:-1;8:100;33:3;30:1;27:10;8:100;;;90:11;;;84:18;71:11;;;64:39;52:2;45:10;8:100;;;12:14;1623:54:3;;;;;;;;;;;;;23:1:-1;8:100;33:3;30:1;27:10;8:100;;;90:11;;;84:18;71:11;;;64:39;52:2;45:10;8:100;;;12:14;1623:54:3;;;;;;;;;;;;;23:1:-1;8:100;33:3;30:1;27:10;8:100;;;90:11;;;84:18;71:11;;;64:39;52:2;45:10;8:100;;;12:14;1623:54:3;;;;;;;;;;;;;23:1:-1;8:100;33:3;30:1;27:10;8:100;;;90:11;;;84:18;71:11;;;64:39;52:2;45:10;8:100;;;12:14;1623:54:3;;;;;;;;;;;;;;;;;;;;;;;;;;;;;8:9:-1;5:2;;;30:1;27;20:12;5:2;1623:54:3;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;1623:54:3;;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;1623:54:3;1615:88;;;;;;;-1:-1:-1;;;;;1615:88:3;;;;;;;;;;;;;;;;;;;;;;;;;;;;1714:19;1763:1;1766:3;1771:1;1774:3;1779:1;1782:3;1787:1;1790;1793:5;1746:53;;;;;;;;;;;;23:1:-1;8:100;33:3;30:1;27:10;8:100;;;90:11;;;84:18;71:11;;;64:39;52:2;45:10;8:100;;;12:14;1746:53:3;;;;;;;;;;;;;23:1:-1;8:100;33:3;30:1;27:10;8:100;;;90:11;;;84:18;71:11;;;64:39;52:2;45:10;8:100;;;12:14;1746:53:3;;;;;;;;;;;;;;;;;;;;;;;;;;;23:1:-1;8:100;33:3;30:1;27:10;8:100;;;90:11;;;84:18;71:11;;;64:39;52:2;45:10;8:100;;;12:14;1746:53:3;;;;;;;;;;;;;;;;;;;;;;;;23:1:-1;8:100;33:3;30:1;27:10;8:100;;;90:11;;;84:18;71:11;;;64:39;52:2;45:10;8:100;;;12:14;1746:53:3;;;;;;;;;;;;;23:1:-1;8:100;33:3;30:1;27:10;8:100;;;90:11;;;84:18;71:11;;;64:39;52:2;45:10;8:100;;;12:14;1746:53:3;;;;;;;;;;;;;23:1:-1;8:100;33:3;30:1;27:10;8:100;;;90:11;;;84:18;71:11;;;64:39;52:2;45:10;8:100;;;12:14;1746:53:3;;;;;;;;;;;;;23:1:-1;8:100;33:3;30:1;27:10;8:100;;;90:11;;;84:18;71:11;;;64:39;52:2;45:10;8:100;;;12:14;1746:53:3;;;;;;;;;;;;;23:1:-1;8:100;33:3;30:1;27:10;8:100;;;90:11;;;84:18;71:11;;;64:39;52:2;45:10;8:100;;;12:14;1746:53:3;;;;;;;;;;;;;23:1:-1;8:100;33:3;30:1;27:10;8:100;;;90:11;;;84:18;71:11;;;64:39;52:2;45:10;8:100;;;12:14;1746:53:3;;;;;;;;;;;;;;;;;;;49:4:-1;39:7;30;26:21;22:32;13:7;6:49;1746:53:3;;;1736:64;;;;;;1714:86;;1818:9;:22;1828:11;1818:22;;;;;;;;;;;:30;;;1852:1;1818:35;1810:69;;;;;;;-1:-1:-1;;;;;1810:69:3;;;;;;;;;;;;;;;;;;;;;;;;;;;;1890:22;;;;:13;:22;;;;;;;;:36;;;1936:22;;;:9;:22;;;;;:28;;;:38;;-1:-1:-1;;1936:38:3;-1:-1:-1;;;;;1936:38:3;;;;;1984:40;;;2034:36;;:28;;;;;2065:5;;2034:36;:::i;:::-;-1:-1:-1;2086:31:3;;2109:7;;-1:-1:-1;;;;;2086:31:3;;;;;;;;1108:1016;;;;;;;;;;;;:::o;7769:180:0:-;7859:39;7878:10;7890:7;7859:18;:39::i;:::-;7851:48;;;;;;;;7910:32;7924:4;7930:2;7934:7;7910:13;:32::i;:::-;7769:180;;;:::o;14801:122:2:-;14903:12;;;14913:1;14903:12;;;;;;;;14876:40;;14887:5;;14894:7;;14876:10;:40::i;:::-;14801:122;;:::o;13224:182:0:-;13304:7;13339:16;13349:5;13339:9;:16::i;:::-;13331:24;;13323:33;;;;;;-1:-1:-1;;;;;13373:19:0;;;;;;:12;:19;;;;;:26;;13393:5;;13373:26;;;;;;;;;;;;;;13366:33;;13224:182;;;;:::o;2340:535:3:-;2398:4;2436:22;;;:13;:22;;;;;;2476:25;;;2468:67;;;;;-1:-1:-1;;;;;2468:67:3;;;;;;;;;;;;;;;;;;;;;;;;;;;;2554:22;;;;:9;:22;;;;;:31;;;;;2553:32;2545:68;;;;;-1:-1:-1;;;;;2545:68:3;;;;;;;;;;;;;;;;;;;;;;;;;;;;2624:20;2657:22;;;:13;:22;;;;;;;;;2647:33;;:9;:33;;;;;:39;;;-1:-1:-1;;;;;2647:39:3;;;;2704:18;;;;2696:83;;;;-1:-1:-1;;;;;2696:83:3;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;2790:22;;;;:9;:22;;;;;:31;;:38;;-1:-1:-1;;2790:38:3;2824:4;2790:38;;;2845:23;2856:2;2860:7;2845:10;:23::i;:::-;2838:30;2340:535;-1:-1:-1;;;;;2340:535:3:o;7955:132:0:-;8041:39;8058:4;8064:2;8068:7;8041:39;;;;;;;;;;;;;:16;:39::i;13989:148::-;14047:7;14082:13;:11;:13::i;:::-;14074:21;;14066:30;;;;;;14113:10;:17;;14124:5;;14113:17;;;;;;;;;;;;;;14106:24;;13989:148;;;:::o;5617:162::-;5672:7;5752:20;;;:11;:20;;;;;;-1:-1:-1;;;;;5752:20:0;;5617:162::o;5288:323::-;5343:7;-1:-1:-1;;;;;5533:19:0;;;;5525:28;;;;;;-1:-1:-1;;;;;5570:24:0;;;;;;:17;:24;;;;;:34;;:32;:34::i;:::-;5563:41;5288:323;-1:-1:-1;;5288:323:0:o;20547:85::-;20618:7;20611:14;;;;;;;;-1:-1:-1;;20611:14:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;20587:13;;20611:14;;20618:7;;20611:14;;20618:7;20611:14;;;;;;;;;;;;;;;;;;;;;;;;7084:213;-1:-1:-1;;;;;7163:16:0;;7169:10;7163:16;;7155:25;;;;;;7209:10;7190:30;;;;:18;:30;;;;;;;;-1:-1:-1;;;;;7190:34:0;;;;;;;;;;;;:45;;-1:-1:-1;;7190:45:0;;;;;;;;;;7250:40;;;;;;;7190:34;;7209:10;7250:40;;;;;;;;;;;7084:213;;:::o;2881:604:3:-;2937:4;2975:22;;;:13;:22;;;;;;3015:25;;;3007:67;;;;;-1:-1:-1;;;;;3007:67:3;;;;;;;;;;;;;;;;;;;;;;;;;;;;3093:22;;;;:9;:22;;;;;:31;;;;;3092:32;3084:68;;;;;-1:-1:-1;;;;;3084:68:3;;;;;;;;;;;;;;;;;;;;;;;;;;;;3163:20;3196:22;;;:13;:22;;;;;;;;;3186:33;;:9;:33;;;;;:39;;;-1:-1:-1;;;;;3186:39:3;3259:10;3243:26;;3235:92;;;;-1:-1:-1;;;;;3235:92:3;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;3338:22;;;;:9;:22;;;;;:31;;:38;;-1:-1:-1;;3338:38:3;3372:4;3338:38;;;3386:34;3398:12;3412:7;3386:11;:34::i;:::-;3430:27;3449:7;3430:18;:27::i;:::-;-1:-1:-1;3474:4:3;;2881:604;-1:-1:-1;;;2881:604:3:o;8093:211:0:-;8199:31;8212:4;8218:2;8222:7;8199:12;:31::i;:::-;8248:48;8271:4;8277:2;8281:7;8290:5;8248:22;:48::i;:::-;8240:57;;;;;;;;8093:211;;;;:::o;20741:151::-;20799:13;20832:16;20840:7;20832;:16::i;:::-;20824:25;;;;;;;;20866:19;;;;:10;:19;;;;;;;;;20859:26;;;;;;-1:-1:-1;;20859:26:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;20866:19;;20859:26;;20866:19;20859:26;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;20741:151;;;:::o;1419:83::-;1464:7;1489:6;-1:-1:-1;;;;;1489:6:0;1419:83;:::o;20638:97::-;20715:13;20708:20;;;;;;;;-1:-1:-1;;20708:20:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;20684:13;;20708:20;;20715:13;;20708:20;;20715:13;20708:20;;;;;;;;;;;;;;;;;;;;;;;;7618:145;-1:-1:-1;;;;;7721:25:0;;;7698:4;7721:25;;;:18;:25;;;;;;;;:35;;;;;;;;;;;;;;;7618:145::o;1065:348::-;783:6;;-1:-1:-1;;;;;783:6:0;769:10;:20;761:77;;;;-1:-1:-1;;;;;761:77:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;1283:22:0;;;;;;:44;;-1:-1:-1;1321:6:0;;-1:-1:-1;;;;;1309:18:0;;;1321:6;;1309:18;;1283:44;1275:61;;;;;;;-1:-1:-1;;;;;1275:61:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;1346:6;:17;;-1:-1:-1;;1346:17:0;-1:-1:-1;;;;;1346:17:0;;;;;;;1378:28;;1346:17;;1378:28;;;1065:348;:::o;8498:152::-;8555:4;8587:20;;;:11;:20;;;;;;-1:-1:-1;;;;;8587:20:0;8624:19;;;8498:152::o;9010:246::-;9095:4;9111:13;9127:16;9135:7;9127;:16::i;:::-;9111:32;;9172:5;-1:-1:-1;;;;;9161:16:0;:7;-1:-1:-1;;;;;9161:16:0;;:51;;;;9205:7;-1:-1:-1;;;;;9181:31:0;:20;9193:7;9181:11;:20::i;:::-;-1:-1:-1;;;;;9181:31:0;;9161:51;:87;;;;9216:32;9233:5;9240:7;9216:16;:32::i;:::-;9153:96;9010:246;-1:-1:-1;;;;9010:246:0:o;14512:239::-;14597:38;14617:4;14623:2;14627:7;14597:19;:38::i;:::-;14646:47;14679:4;14685:7;14646:32;:47::i;:::-;14704:40;14732:2;14736:7;14704:27;:40::i;22406:230::-;22527:4;783:6;;-1:-1:-1;;;;;783:6:0;769:10;:20;761:77;;;;-1:-1:-1;;;;;761:77:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;22547:24;22559:2;22563:7;22547:11;:24::i;:::-;22581:27;22600:7;22581:18;:27::i;:::-;-1:-1:-1;22625:4:0;22406:230;;;;:::o;1062:112:5:-;1153:14;;1062:112::o;15006:196:0:-;15069:24;15081:2;15085:7;15069:11;:24::i;:::-;15104:40;15132:2;15136:7;15104:27;:40::i;:::-;15155;15187:7;15155:31;:40::i;21369:166::-;21435:16;21443:7;21435;:16::i;:::-;21427:25;;;;;;;;21495:13;21485:43;;;;;;;;-1:-1:-1;;21485:43:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;21495:13;;21485:43;;21495:13;21485:43;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;21510:17;21519:7;21510:8;:17::i;:::-;21485:9;:43::i;:::-;21463:19;;;;:10;:19;;;;;;;;:65;;;;:19;;:65;;;;;;:::i;11244:347::-;11365:4;11390:15;:2;-1:-1:-1;;;;;11390:13:0;;:15::i;:::-;11389:16;11385:58;;;-1:-1:-1;11428:4:0;11421:11;;11385:58;11469:70;;;;;11506:10;11469:70;;;;;;-1:-1:-1;;;;;11469:70:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;11453:13;;11469:36;;;;;;11506:10;;11518:4;;11524:7;;11533:5;;11469:70;;;;;;;;;;;11453:13;8:100:-1;33:3;30:1;27:10;8:100;;;90:11;;;84:18;71:11;;;64:39;52:2;45:10;8:100;;;12:14;11469:70:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;8:9:-1;5:2;;;30:1;27;20:12;5:2;11469:70:0;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;11469:70:0;;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;11469:70:0;-1:-1:-1;;11557:26:0;11567:16;11557:26;;-1:-1:-1;;11244:347:0;;;;;;:::o;10071:645::-;10255:4;-1:-1:-1;;;;;10235:24:0;:16;10243:7;10235;:16::i;:::-;-1:-1:-1;;;;;10235:24:0;;10227:33;;;;;;-1:-1:-1;;;;;10347:16:0;;;;10339:25;;;;;;10407:23;10422:7;10407:14;:23::i;:::-;-1:-1:-1;;;;;10516:23:0;;;;;;:17;:23;;;;;:35;;:33;:35::i;:::-;-1:-1:-1;;;;;10561:21:0;;;;;;:17;:21;;;;;:33;;:31;:33::i;:::-;10604:20;;;;:11;:20;;;;;;:25;;-1:-1:-1;;10604:25:0;-1:-1:-1;;;;;10604:25:0;;;;;;;;;10681:27;;10604:20;;10681:27;;;;;;;10071:645;;;:::o;16978:1128::-;-1:-1:-1;;;;;17265:18:0;;17240:22;17265:18;;;:12;:18;;;;;:25;:32;;17295:1;17265:32;:29;:32;:::i;:::-;17307:18;17328:26;;;:17;:26;;;;;;17240:57;;-1:-1:-1;17458:28:0;;;17454:323;;-1:-1:-1;;;;;17524:18:0;;17502:19;17524:18;;;:12;:18;;;;;:34;;17543:14;;17524:34;;;;;;;;;;;;;;17502:56;;17606:11;17573:12;:18;17586:4;-1:-1:-1;;;;;17573:18:0;-1:-1:-1;;;;;17573:18:0;;;;;;;;;;;;17592:10;17573:30;;;;;;;;;;;;;;;;;;;;;:44;;;;17689:30;;;:17;:30;;;;;:43;;;17454:323;-1:-1:-1;;;;;17863:18:0;;;;;;:12;:18;;;;;:27;;;;;-1:-1:-1;;17863:27:0;;;:::i;:::-;;16978:1128;;;;:::o;15824:183::-;-1:-1:-1;;;;;15937:16:0;;;;;;;:12;:16;;;;;;;;:23;;15908:26;;;:17;:26;;;;;:52;;;15970:16;;;39:1:-1;23:18;;45:23;;15970:30:0;;;;;;;;15824:183::o;9413:459::-;-1:-1:-1;;;;;9568:16:0;;;;9560:25;;;;;;9604:16;9612:7;9604;:16::i;:::-;9603:17;9595:26;;;;;;9712:20;;;;:11;:20;;;;;;;;:25;;-1:-1:-1;;9712:25:0;-1:-1:-1;;;;;9712:25:0;;;;;;;;9747:21;;:17;:21;;;;;:33;;:31;:33::i;:::-;9832;;9857:7;;-1:-1:-1;;;;;9832:33:0;;;9849:1;;9832:33;;9849:1;;9832:33;9413:459;;:::o;16202:161::-;16305:10;:17;;16278:24;;;;:15;:24;;;;;:44;;;39:1:-1;23:18;;45:23;;16332:24:0;;;;;;;16202:161::o;43271:465:2:-;43321:27;43364:7;;43360:48;;;-1:-1:-1;43387:10:2;;;;;;;;;;;;;;;;;;;43360:48;43426:2;43417:6;43456:66;43463:6;;43456:66;;43485:5;;43509:2;43504:7;;;;43456:66;;;43531:17;43561:3;43551:14;;;;;;;;;;;;;;;;;;;;;;;;;21:6:-1;;104:10;43551:14:2;87:34:-1;135:17;;-1:-1;43551:14:2;-1:-1:-1;43531:34:2;-1:-1:-1;;;43584:7:2;;43601:100;43608:7;;43601:100;;43631:9;;-1:-1:-1;;43636:3:2;;;-1:-1:-1;;;43654:2:2;43664;43659:7;;43654:12;43643:25;;43631:4;;43636:3;43631:9;;;;;;;;;;:37;-1:-1:-1;;;;;43631:37:2;;;;;;;;-1:-1:-1;43688:2:2;43682:8;;;;43601:100;;;-1:-1:-1;43724:4:2;43271:465;-1:-1:-1;;;;43271:465:2:o;39712:166::-;39842:29;;;;;;;;;-1:-1:-1;39842:29:2;;;;;;;;;;;;;;;;;;;;;;;39790:33;;39842:29;;39852:2;;39856;;39842:29;:9;:29::i;:::-;39835:36;39712:166;-1:-1:-1;;;39712:166:2:o;463:616:8:-;523:4;1026:20;;1064:8;;463:616::o;11672:171:0:-;11771:1;11735:24;;;:15;:24;;;;;;-1:-1:-1;;;;;11735:24:0;:38;11731:106;;11824:1;11789:24;;;:15;:24;;;;;:37;;-1:-1:-1;;11789:37:0;;;11672:171::o;1275:108:5:-;1355:14;;:21;;1374:1;1355:21;:18;:21;:::i;:::-;1338:38;;1275:108::o;1180:89::-;1243:19;;1261:1;1243:19;;;1180:89::o;1211:145:6:-;1269:7;1296:6;;;;1288:15;;;;;;-1:-1:-1;1325:5:6;;;1211:145::o;40282:1020:2:-;40414:33;40459:16;40484:2;40459:28;;40497:16;40522:2;40497:28;;40535:16;40560:2;40535:28;;40573:16;40598:2;40573:28;;40611:16;40636:2;40611:28;;40649:19;40734:3;:10;40721:3;:10;40708:3;:10;40695:3;:10;40682:3;:10;:23;:36;:49;:62;40671:74;;;;;;;;;;;;;;;;;;;;;;;;;21:6:-1;;104:10;40671:74:2;87:34:-1;135:17;;-1:-1;40671:74:2;-1:-1:-1;40649:96:2;-1:-1:-1;40649:96:2;40799:6;;40839:78;40855:3;:10;40851:1;:14;40839:78;;;40900:3;40904:1;40900:6;;;;;;;;;;;;;;;-1:-1:-1;;;40900:6:2;;-1:-1:-1;;;40900:6:2;40886;40893:3;;;;;;40886:11;;;;;;;;;;;;;;:20;-1:-1:-1;;;;;40886:20:2;;;;;;;;-1:-1:-1;40867:3:2;;40839:78;;;-1:-1:-1;40935:1:2;40926:78;40942:3;:10;40938:1;:14;40926:78;;;40987:3;40991:1;40987:6;;;;;;;;;;;;;;;-1:-1:-1;;;40987:6:2;;-1:-1:-1;;;40987:6:2;40973;40980:3;;;;;;40973:11;;;;;;;;;;;;;;:20;-1:-1:-1;;;;;40973:20:2;;;;;;;;-1:-1:-1;40954:3:2;;40926:78;;;-1:-1:-1;41022:1:2;41013:78;41029:3;:10;41025:1;:14;41013:78;;;41074:3;41078:1;41074:6;;;;;;;;;;;;;;;-1:-1:-1;;;41074:6:2;;-1:-1:-1;;;41074:6:2;41060;41067:3;;;;;;41060:11;;;;;;;;;;;;;;:20;-1:-1:-1;;;;;41060:20:2;;;;;;;;-1:-1:-1;41041:3:2;;41013:78;;;-1:-1:-1;41109:1:2;41100:78;41116:3;:10;41112:1;:14;41100:78;;;41161:3;41165:1;41161:6;;;;;;;;;;;;;;;-1:-1:-1;;;41161:6:2;;-1:-1:-1;;;41161:6:2;41147;41154:3;;;;;;41147:11;;;;;;;;;;;;;;:20;-1:-1:-1;;;;;41147:20:2;;;;;;;;-1:-1:-1;41128:3:2;;41100:78;;;-1:-1:-1;41196:1:2;41187:78;41203:3;:10;41199:1;:14;41187:78;;;41248:3;41252:1;41248:6;;;;;;;;;;;;;;;-1:-1:-1;;;41248:6:2;;-1:-1:-1;;;41248:6:2;41234;41241:3;;;;;;41234:11;;;;;;;;;;;;;;:20;-1:-1:-1;;;;;41234:20:2;;;;;;;;-1:-1:-1;41215:3:2;;41187:78;;;-1:-1:-1;41288:6:2;;40282:1020;-1:-1:-1;;;;;;;;;;;;;40282:1020:2:o;307:3180:3:-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;307:3180:3;;;-1:-1:-1;307:3180:3;:::i;:::-;;;:::o;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;",
"source": "pragma solidity >=0.4.21 <0.6.0;\n\n// TODO define a contract call to the zokrates generated solidity contract <Verifier> or <renamedVerifier>\nimport \"./ERC721Mintable.sol\";\nimport \"./SquareVerifier.sol\";\n\n\n// TODO define another contract named SolnSquareVerifier that inherits from your ERC721Mintable class\ncontract SolnSquareVerifier is AqarERC721MintableToken {\n\n\n\n// TODO define a solutions struct that can hold an index & an address\n struct Solution {\n uint256 tokenId;\n address owner;\n uint256[2] input;\n bool isMinted;\n }\n\n Verifier verifier;\n\n// TODO define an array of the above struct\n mapping(bytes32 => Solution) solutions;\n\n// TODO define a mapping to store unique solutions submitted\n mapping(uint256 => bytes32) private solutionsKeys;\n\n\n// TODO Create an event to emit when a solution is added\n event SolutionAdded(address indexed to, uint256 indexed TokenId);\n\n constructor(address verifierAddress) public {\n verifier = Verifier(verifierAddress);\n }\n\n// TODO Create a function to add the solutions to the array and emit the event\n function submitSolution\n (\n uint[2] memory a,\n uint[2] memory a_p,\n uint[2][2] memory b,\n uint[2] memory b_p,\n uint[2] memory c,\n uint[2] memory c_p,\n uint[2] memory h,\n uint[2] memory k,\n uint[2] memory input,\n address account,\n uint256 tokenId\n ) \n public \n {\n require(tokenId != 0, \"tokenId should be more than 0\");\n require(solutionsKeys[tokenId] == bytes32(0), \"tokenId: has solution\");\n require(verifier.verifyTx(a, a_p, b, b_p, c, c_p, h, k, input), \"incorrect proof input\");\n\n bytes32 solutionKey = keccak256(abi.encodePacked(a, a_p, b, b_p, c, c_p, h, k, input));\n require(solutions[solutionKey].tokenId == 0, \"solution already used\");\n\n solutionsKeys[tokenId] = solutionKey;\n solutions[solutionKey].owner = account;\n solutions[solutionKey].tokenId = tokenId;\n solutions[solutionKey].input = input;\n\n emit SolutionAdded(account, tokenId);\n }\n\n\n// TODO Create a function to mint new NFT only after the solution has been verified\n// - make sure the solution is unique (has not been used before)\n// - make sure you handle metadata as well as tokenSuplly\n function mint(address to, uint256 tokenId) public returns(bool) {\n bytes32 solutionKey = solutionsKeys[tokenId];\n require(solutionKey != bytes32(0), \"no solution found for tokenId\");\n require(!solutions[solutionKey].isMinted, \"tokenId: allready mined\");\n\n address orginalOwner = solutions[solutionsKeys[tokenId]].owner;\n require(orginalOwner == to, \"orginal owner of token solution is not address given\");\n\n solutions[solutionKey].isMinted = true;\n return super.mint(to, tokenId);\n }\n\n function mintBySolOwner(uint256 tokenId) public returns(bool) {\n bytes32 solutionKey = solutionsKeys[tokenId];\n require(solutionKey != bytes32(0), \"no solution found for tokenId\");\n require(!solutions[solutionKey].isMinted, \"tokenId: allready mined\");\n\n address orginalOwner = solutions[solutionsKeys[tokenId]].owner;\n require(orginalOwner == msg.sender, \"orginal owner of token solution is not caller address\");\n\n solutions[solutionKey].isMinted = true;\n super._mint(orginalOwner, tokenId);\n super._setTokenURI(tokenId);\n return true;\n }\n}\n",
"sourcePath": "/Users/khalid/Desktop/AqarNFToken/eth-project/contracts/SolnSquareVerifier.sol",
"ast": {
"absolutePath": "/Users/khalid/Desktop/AqarNFToken/eth-project/contracts/SolnSquareVerifier.sol",
"exportedSymbols": {
"SolnSquareVerifier": [
7769
]
},
"id": 7770,
"nodeType": "SourceUnit",
"nodes": [
{
"id": 7452,
"literals": [
"solidity",
">=",
"0.4",
".21",
"<",
"0.6",
".0"
],
"nodeType": "PragmaDirective",
"src": "0:32:3"
},
{
"absolutePath": "/Users/khalid/Desktop/AqarNFToken/eth-project/contracts/ERC721Mintable.sol",
"file": "./ERC721Mintable.sol",
"id": 7453,
"nodeType": "ImportDirective",
"scope": 7770,
"sourceUnit": 1126,
"src": "141:30:3",
"symbolAliases": [],
"unitAlias": ""
},
{
"absolutePath": "/Users/khalid/Desktop/AqarNFToken/eth-project/contracts/SquareVerifier.sol",
"file": "./SquareVerifier.sol",
"id": 7454,
"nodeType": "ImportDirective",
"scope": 7770,
"sourceUnit": 10551,
"src": "172:30:3",
"symbolAliases": [],
"unitAlias": ""
},
{
"baseContracts": [
{
"arguments": null,
"baseName": {
"contractScope": null,
"id": 7455,
"name": "AqarERC721MintableToken",
"nodeType": "UserDefinedTypeName",
"referencedDeclaration": 1125,
"src": "338:23:3",
"typeDescriptions": {
"typeIdentifier": "t_contract$_AqarERC721MintableToken_$1125",
"typeString": "contract AqarERC721MintableToken"
}
},
"id": 7456,
"nodeType": "InheritanceSpecifier",
"src": "338:23:3"
}
],
"contractDependencies": [
679,
71,
180,
134,
1125,
977,
1086,
7450
],
"contractKind": "contract",
"documentation": null,
"fullyImplemented": true,
"id": 7769,
"linearizedBaseContracts": [
7769,
1125,
1086,
7450,
977,
679,
180,
134,
71
],
"name": "SolnSquareVerifier",
"nodeType": "ContractDefinition",
"nodes": [
{
"canonicalName": "SolnSquareVerifier.Solution",
"id": 7467,
"members": [
{
"constant": false,
"id": 7458,
"name": "tokenId",
"nodeType": "VariableDeclaration",
"scope": 7467,
"src": "467:15:3",
"stateVariable": false,
"storageLocation": "default",
"typeDescriptions": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
},
"typeName": {
"id": 7457,
"name": "uint256",
"nodeType": "ElementaryTypeName",
"src": "467:7:3",
"typeDescriptions": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
}
},
"value": null,
"visibility": "internal"
},
{
"constant": false,
"id": 7460,
"name": "owner",
"nodeType": "VariableDeclaration",
"scope": 7467,
"src": "492:13:3",
"stateVariable": false,
"storageLocation": "default",
"typeDescriptions": {
"typeIdentifier": "t_address",
"typeString": "address"
},
"typeName": {
"id": 7459,
"name": "address",
"nodeType": "ElementaryTypeName",
"src": "492:7:3",
"stateMutability": "nonpayable",
"typeDescriptions": {
"typeIdentifier": "t_address",
"typeString": "address"
}
},
"value": null,
"visibility": "internal"
},
{
"constant": false,
"id": 7464,
"name": "input",
"nodeType": "VariableDeclaration",
"scope": 7467,
"src": "515:16:3",
"stateVariable": false,
"storageLocation": "default",
"typeDescriptions": {
"typeIdentifier": "t_array$_t_uint256_$2_storage_ptr",
"typeString": "uint256[2]"
},
"typeName": {
"baseType": {
"id": 7461,
"name": "uint256",
"nodeType": "ElementaryTypeName",
"src": "515:7:3",
"typeDescriptions": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
}
},
"id": 7463,
"length": {
"argumentTypes": null,
"hexValue": "32",
"id": 7462,
"isConstant": false,
"isLValue": false,
"isPure": false,
"kind": "number",
"lValueRequested": false,
"nodeType": "Literal",
"src": "523:1:3",
"subdenomination": null,
"typeDescriptions": {
"typeIdentifier": null,
"typeString": null
},
"value": "2"
},
"nodeType": "ArrayTypeName",
"src": "515:10:3",
"typeDescriptions": {
"typeIdentifier": "t_array$_t_uint256_$2_storage_ptr",
"typeString": "uint256[2]"
}
},
"value": null,
"visibility": "internal"
},
{
"constant": false,
"id": 7466,
"name": "isMinted",
"nodeType": "VariableDeclaration",
"scope": 7467,
"src": "541:13:3",
"stateVariable": false,
"storageLocation": "default",
"typeDescriptions": {
"typeIdentifier": "t_bool",
"typeString": "bool"
},
"typeName": {
"id": 7465,
"name": "bool",
"nodeType": "ElementaryTypeName",
"src": "541:4:3",
"typeDescriptions": {
"typeIdentifier": "t_bool",
"typeString": "bool"
}
},
"value": null,
"visibility": "internal"
}
],
"name": "Solution",
"nodeType": "StructDefinition",
"scope": 7769,
"src": "441:120:3",
"visibility": "public"
},
{
"constant": false,
"id": 7469,
"name": "verifier",
"nodeType": "VariableDeclaration",
"scope": 7769,
"src": "567:17:3",
"stateVariable": true,
"storageLocation": "default",
"typeDescriptions": {
"typeIdentifier": "t_contract$_Verifier_$10550",
"typeString": "contract Verifier"
},
"typeName": {
"contractScope": null,
"id": 7468,
"name": "Verifier",
"nodeType": "UserDefinedTypeName",
"referencedDeclaration": 10550,
"src": "567:8:3",
"typeDescriptions": {
"typeIdentifier": "t_contract$_Verifier_$10550",
"typeString": "contract Verifier"
}
},
"value": null,
"visibility": "internal"
},
{
"constant": false,
"id": 7473,
"name": "solutions",
"nodeType": "VariableDeclaration",
"scope": 7769,
"src": "635:38:3",
"stateVariable": true,
"storageLocation": "default",
"typeDescriptions": {
"typeIdentifier": "t_mapping$_t_bytes32_$_t_struct$_Solution_$7467_storage_$",
"typeString": "mapping(bytes32 => struct SolnSquareVerifier.Solution)"
},
"typeName": {
"id": 7472,
"keyType": {
"id": 7470,
"name": "bytes32",
"nodeType": "ElementaryTypeName",
"src": "643:7:3",
"typeDescriptions": {
"typeIdentifier": "t_bytes32",
"typeString": "bytes32"
}
},
"nodeType": "Mapping",
"src": "635:28:3",
"typeDescriptions": {
"typeIdentifier": "t_mapping$_t_bytes32_$_t_struct$_Solution_$7467_storage_$",
"typeString": "mapping(bytes32 => struct SolnSquareVerifier.Solution)"
},
"valueType": {
"contractScope": null,
"id": 7471,
"name": "Solution",
"nodeType": "UserDefinedTypeName",
"referencedDeclaration": 7467,
"src": "654:8:3",
"typeDescriptions": {
"typeIdentifier": "t_struct$_Solution_$7467_storage_ptr",
"typeString": "struct SolnSquareVerifier.Solution"
}
}
},
"value": null,
"visibility": "internal"
},
{
"constant": false,
"id": 7477,
"name": "solutionsKeys",
"nodeType": "VariableDeclaration",
"scope": 7769,
"src": "741:49:3",
"stateVariable": true,
"storageLocation": "default",
"typeDescriptions": {
"typeIdentifier": "t_mapping$_t_uint256_$_t_bytes32_$",
"typeString": "mapping(uint256 => bytes32)"
},
"typeName": {
"id": 7476,
"keyType": {
"id": 7474,
"name": "uint256",
"nodeType": "ElementaryTypeName",
"src": "749:7:3",
"typeDescriptions": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
}
},
"nodeType": "Mapping",
"src": "741:27:3",
"typeDescriptions": {
"typeIdentifier": "t_mapping$_t_uint256_$_t_bytes32_$",
"typeString": "mapping(uint256 => bytes32)"
},
"valueType": {
"id": 7475,
"name": "bytes32",
"nodeType": "ElementaryTypeName",
"src": "760:7:3",
"typeDescriptions": {
"typeIdentifier": "t_bytes32",
"typeString": "bytes32"
}
}
},
"value": null,
"visibility": "private"
},
{
"anonymous": false,
"documentation": null,
"id": 7483,
"name": "SolutionAdded",
"nodeType": "EventDefinition",
"parameters": {
"id": 7482,
"nodeType": "ParameterList",
"parameters": [
{
"constant": false,
"id": 7479,