BCD

Tezos Contract Explorer
Search Networks Deploy
  • Home
  • /
  • Mainnet
  • /
  • Materia
FA2Ledger
operations (161K)Storage Code Interact Tokens Metadata Fork Views Statistics Details
Latest
​x
590
 
1
{ parameter (or
2
              (or
3
                (or
4
                  (or (pair %_charge_materia (address %from_) (nat %amount))
5
                      (or (unit %_genesis)
6
                          (pair %_set_claim_root (bytes %info)
7
                                                 (pair (bytes %new_root)
8
                                                       (nat %proof_depth)))))
9
                  (or (or (address %_set_contract_registry) (bool %_set_contracts_mht))
10
                      (or (address %_set_identity)
11
                          (pair %_ul_all_contracts_mht (address %minter) (nat %token_id)))))
12
                (or
13
                  (or
14
                    (or (pair %claim_materia (nat %amount) (list %proofs bytes))
15
                        (bytes %generic))
16
                    (or
17
                      (pair %mint (pair (address %address) (nat %amount))
18
                                  (pair (map %metadata string bytes) (nat %token_id)))
19
                      (list %transfer (pair (address %from_)
20
                                           (list %txs (pair (address %to_)
21
                                                           (pair (nat %token_id)
22
                                                                 (nat %amount))))))))
23
                  (or
24
                    (or (pair %update_extra_db (bytes %key) (bytes %value))
25
                        (list %update_operators (or
26
                                                 (pair %add_operator (address %owner)
27
                                                                     (pair
28
                                                                       (address %operator)
29
                                                                       (nat %token_id)))
30
                                                 (pair %remove_operator (address %owner)
31
                                                                        (pair
32
                                                                          (address %operator)
33
                                                                          (nat %token_id))))))
34
                    (or
35
                      (pair %update_token_metadata (map %metadata string bytes)
36
                                                   (nat %token_id))
37
                      (pair %verify_min_balance (address %address) (nat %amount))))))
38
              (or
39
                (or
40
                  (pair %balance_of
41
                    (list %requests (pair (address %owner) (nat %token_id)))
42
                    (contract %callback (list (pair
43
                                              (pair %request (address %owner)
44
                                                             (nat %token_id))
45
                                              (nat %balance)))))
46
                  (or (pair %mutez_transfer (mutez %amount) (address %destination))
47
                      (address %set_administrator)))
48
                (or (pair %set_metadata (string %k) (bytes %v))
49
                    (or (bool %set_pause)
50
                        (pair %update_ep
51
                          (or %ep_name
52
                            (or (unit %claim_materia) (or (unit %generic) (unit %mint)))
53
                            (or (unit %transfer)
54
                                (or (unit %update_operators) (unit %verify_min_balance))))
55
                          (lambda %new_ep
56
                            (pair
57
                              (or
58
                                (or
59
                                  (or
60
                                    (pair %_charge_materia (address %from_)
61
                                                           (nat %amount))
62
                                    (or (unit %_genesis)
63
                                        (pair %_set_claim_root (bytes %info)
64
                                                               (pair (bytes %new_root)
65
                                                                     (nat %proof_depth)))))
66
                                  (or
67
                                    (or (address %_set_contract_registry)
68
                                        (bool %_set_contracts_mht))
69
                                    (or (address %_set_identity)
70
                                        (pair %_ul_all_contracts_mht (address %minter)
71
                                                                     (nat %token_id)))))
72
                                (or
73
                                  (or
74
                                    (or
75
                                      (pair %claim_materia (nat %amount)
76
                                                           (list %proofs bytes))
77
                                      (bytes %generic))
78
                                    (or
79
                                      (pair %mint
80
                                        (pair (address %address) (nat %amount))
81
                                        (pair (map %metadata string bytes)
82
                                              (nat %token_id)))
83
                                      (list %transfer (pair (address %from_)
84
                                                           (list %txs (pair
85
                                                                       (address %to_)
86
                                                                       (pair
87
                                                                         (nat %token_id)
88
                                                                         (nat %amount))))))))
89
                                  (or
90
                                    (or
91
                                      (pair %update_extra_db (bytes %key) (bytes %value))
92
                                      (list %update_operators (or
93
                                                               (pair %add_operator
94
                                                                 (address %owner)
95
                                                                 (pair
96
                                                                   (address %operator)
97
                                                                   (nat %token_id)))
98
                                                               (pair %remove_operator
99
                                                                 (address %owner)
100
                                                                 (pair
101
                                                                   (address %operator)
102
                                                                   (nat %token_id))))))
103
                                    (or
104
                                      (pair %update_token_metadata
105
                                        (map %metadata string bytes)
106
                                        (nat %token_id))
107
                                      (pair %verify_min_balance (address %address)
108
                                                                (nat %amount))))))
109
                              (pair
110
                                (pair
111
                                  (pair
112
                                    (pair
113
                                      (lambda %admin_check_lambda
114
                                        (pair
115
                                          (pair (address %address)
116
                                                (option %permission string))
117
                                          (pair (address %self_address)
118
                                                (address %self_admin)))
119
                                        bool)
120
                                      (address %administrator))
121
                                    (pair (nat %all_tokens) (nat %claim_proof_depth)))
122
                                  (pair
123
                                    (pair (bytes %claim_root) (bytes %claim_root_info))
124
                                    (pair (big_map %claimed address nat)
125
                                          (pair (address %contract_registry)
126
                                                (bool %contracts_may_hold_tokens_global)))))
127
                                (pair
128
                                  (pair
129
                                    (pair (big_map %extra_db bytes bytes)
130
                                          (bool %genesis))
131
                                    (pair (address %identity)
132
                                          (pair (big_map %ledger address nat)
133
                                                (big_map %metadata string bytes))))
134
                                  (pair
135
                                    (pair
136
                                      (big_map %operators
137
                                        (pair (address %owner)
138
                                              (pair (address %operator) (nat %token_id)))
139
                                        unit)
140
                                      (bool %paused))
141
                                    (pair
142
                                      (big_map %token_extra_data nat
143
                                                                 (pair
144
                                                                   (bool %contracts_may_hold_token)
145
                                                                   (pair
146
                                                                     (map %extra_fields
147
                                                                       string
148
                                                                       bytes)
149
                                                                     (address %minter))))
150
                                      (pair
151
                                        (big_map %token_metadata nat
152
                                                                 (pair (nat %token_id)
153
                                                                       (map %token_info
154
                                                                         string
155
                                                                         bytes)))
156
                                        (big_map %total_supply nat nat)))))))
157
                            (pair (list operation)
158
                                  (pair
159
                                    (pair
160
                                      (pair
161
                                        (pair
162
                                          (lambda %admin_check_lambda
163
                                            (pair
164
                                              (pair (address %address)
165
                                                    (option %permission string))
166
                                              (pair (address %self_address)
167
                                                    (address %self_admin)))
168
                                            bool)
169
                                          (address %administrator))
170
                                        (pair (nat %all_tokens) (nat %claim_proof_depth)))
171
                                      (pair
172
                                        (pair (bytes %claim_root)
173
                                              (bytes %claim_root_info))
174
                                        (pair (big_map %claimed address nat)
175
                                              (pair (address %contract_registry)
176
                                                    (bool %contracts_may_hold_tokens_global)))))
177
                                    (pair
178
                                      (pair
179
                                        (pair (big_map %extra_db bytes bytes)
180
                                              (bool %genesis))
181
                                        (pair (address %identity)
182
                                              (pair (big_map %ledger address nat)
183
                                                    (big_map %metadata string bytes))))
184
                                      (pair
185
                                        (pair
186
                                          (big_map %operators
187
                                            (pair (address %owner)
188
                                                  (pair (address %operator)
189
                                                        (nat %token_id)))
190
                                            unit)
191
                                          (bool %paused))
192
                                        (pair
193
                                          (big_map %token_extra_data nat
194
                                                                     (pair
195
                                                                       (bool %contracts_may_hold_token)
196
                                                                       (pair
197
                                                                         (map %extra_fields
198
                                                                           string
199
                                                                           bytes)
200
                                                                         (address %minter))))
201
                                          (pair
202
                                            (big_map %token_metadata nat
203
                                                                     (pair
204
                                                                       (nat %token_id)
205
                                                                       (map %token_info
206
                                                                         string
207
                                                                         bytes)))
208
                                            (big_map %total_supply nat nat))))))))))))) ;
209
  storage (pair
210
            (pair
211
              (pair
212
                (pair
213
                  (pair
214
                    (lambda %admin_check_lambda
215
                      (pair (pair (address %address) (option %permission string))
216
                            (pair (address %self_address) (address %self_admin)))
217
                      bool)
218
                    (address %administrator))
219
                  (pair (nat %all_tokens) (nat %claim_proof_depth)))
220
                (pair (pair (bytes %claim_root) (bytes %claim_root_info))
221
                      (pair (big_map %claimed address nat)
222
                            (pair (address %contract_registry)
223
                                  (bool %contracts_may_hold_tokens_global)))))
224
              (pair
225
                (pair (pair (big_map %extra_db bytes bytes) (bool %genesis))
226
                      (pair (address %identity)
227
                            (pair (big_map %ledger address nat)
228
                                  (big_map %metadata string bytes))))
229
                (pair
230
                  (pair
231
                    (big_map %operators
232
                      (pair (address %owner) (pair (address %operator) (nat %token_id)))
233
                      unit)
234
                    (bool %paused))
235
                  (pair
236
                    (big_map %token_extra_data nat
237
                                               (pair (bool %contracts_may_hold_token)
238
                                                     (pair
239
                                                       (map %extra_fields string bytes)
240
                                                       (address %minter))))
241
                    (pair
242
                      (big_map %token_metadata nat
243
                                               (pair (nat %token_id)
244
                                                     (map %token_info string bytes)))
245
                      (big_map %total_supply nat nat))))))
246
            (big_map nat
247
                     (lambda
248
                       (pair
249
                         (or
250
                           (or
251
                             (or (pair address nat)
252
                                 (or unit (pair bytes (pair bytes nat))))
253
                             (or (or address bool) (or address (pair address nat))))
254
                           (or
255
                             (or (or (pair nat (list bytes)) bytes)
256
                                 (or
257
                                   (pair (pair address nat)
258
                                         (pair (map string bytes) nat))
259
                                   (list (pair address
260
                                              (list (pair address (pair nat nat)))))))
261
                             (or
262
                               (or (pair bytes bytes)
263
                                   (list (or (pair address (pair address nat))
264
                                            (pair address (pair address nat)))))
265
                               (or (pair (map string bytes) nat) (pair address nat)))))
266
                         (pair
267
                           (pair
268
                             (pair
269
                               (pair
270
                                 (lambda
271
                                   (pair (pair address (option string))
272
                                         (pair address address))
273
                                   bool)
274
                                 address)
275
                               (pair nat nat))
276
                             (pair (pair bytes bytes)
277
                                   (pair (big_map address nat) (pair address bool))))
278
                           (pair
279
                             (pair (pair (big_map bytes bytes) bool)
280
                                   (pair address
281
                                         (pair (big_map address nat)
282
                                               (big_map string bytes))))
283
                             (pair
284
                               (pair (big_map (pair address (pair address nat)) unit)
285
                                     bool)
286
                               (pair
287
                                 (big_map nat
288
                                          (pair bool (pair (map string bytes) address)))
289
                                 (pair (big_map nat (pair nat (map string bytes)))
290
                                       (big_map nat nat)))))))
291
                       (pair (list operation)
292
                             (pair
293
                               (pair
294
                                 (pair
295
                                   (pair
296
                                     (lambda
297
                                       (pair (pair address (option string))
298
                                             (pair address address))
299
                                       bool)
300
                                     address)
301
                                   (pair nat nat))
302
                                 (pair (pair bytes bytes)
303
                                       (pair (big_map address nat) (pair address bool))))
304
                               (pair
305
                                 (pair (pair (big_map bytes bytes) bool)
306
                                       (pair address
307
                                             (pair (big_map address nat)
308
                                                   (big_map string bytes))))
309
                                 (pair
310
                                   (pair
311
                                     (big_map (pair address (pair address nat)) unit)
312
                                     bool)
313
                                   (pair
314
                                     (big_map nat
315
                                              (pair bool
316
                                                    (pair (map string bytes) address)))
317
                                     (pair (big_map nat (pair nat (map string bytes)))
318
                                           (big_map nat nat)))))))))) ;
319
  code { CAST (pair
320
                (or
321
                  (or
322
                    (or (or (pair address nat) (or unit (pair bytes (pair bytes nat))))
323
                        (or (or address bool) (or address (pair address nat))))
324
                    (or
325
                      (or (or (pair nat (list bytes)) bytes)
326
                          (or (pair (pair address nat) (pair (map string bytes) nat))
327
                              (list (pair address (list (pair address (pair nat nat)))))))
328
                      (or
329
                        (or (pair bytes bytes)
330
                            (list (or (pair address (pair address nat))
331
                                     (pair address (pair address nat)))))
332
                        (or (pair (map string bytes) nat) (pair address nat)))))
333
                  (or
334
                    (or
335
                      (pair (list (pair address nat))
336
                            (contract (list (pair (pair address nat) nat))))
337
                      (or (pair mutez address) address))
338
                    (or (pair string bytes)
339
                        (or bool
340
                            (pair (or (or unit (or unit unit)) (or unit (or unit unit)))
341
                                  (lambda
342
                                    (pair
343
                                      (or
344
                                        (or
345
                                          (or (pair address nat)
346
                                              (or unit (pair bytes (pair bytes nat))))
347
                                          (or (or address bool)
348
                                              (or address (pair address nat))))
349
                                        (or
350
                                          (or (or (pair nat (list bytes)) bytes)
351
                                              (or
352
                                                (pair (pair address nat)
353
                                                      (pair (map string bytes) nat))
354
                                                (list (pair address
355
                                                           (list (pair address
356
                                                                      (pair nat nat)))))))
357
                                          (or
358
                                            (or (pair bytes bytes)
359
                                                (list (or
360
                                                       (pair address (pair address nat))
361
                                                       (pair address (pair address nat)))))
362
                                            (or (pair (map string bytes) nat)
363
                                                (pair address nat)))))
364
                                      (pair
365
                                        (pair
366
                                          (pair
367
                                            (pair
368
                                              (lambda
369
                                                (pair (pair address (option string))
370
                                                      (pair address address))
371
                                                bool)
372
                                              address)
373
                                            (pair nat nat))
374
                                          (pair (pair bytes bytes)
375
                                                (pair (big_map address nat)
376
                                                      (pair address bool))))
377
                                        (pair
378
                                          (pair (pair (big_map bytes bytes) bool)
379
                                                (pair address
380
                                                      (pair (big_map address nat)
381
                                                            (big_map string bytes))))
382
                                          (pair
383
                                            (pair
384
                                              (big_map (pair address (pair address nat))
385
                                                       unit)
386
                                              bool)
387
                                            (pair
388
                                              (big_map nat
389
                                                       (pair bool
390
                                                             (pair (map string bytes)
391
                                                                   address)))
392
                                              (pair
393
                                                (big_map nat
394
                                                         (pair nat (map string bytes)))
395
                                                (big_map nat nat)))))))
396
                                    (pair (list operation)
397
                                          (pair
398
                                            (pair
399
                                              (pair
400
                                                (pair
401
                                                  (lambda
402
                                                    (pair (pair address (option string))
403
                                                          (pair address address))
404
                                                    bool)
405
                                                  address)
406
                                                (pair nat nat))
407
                                              (pair (pair bytes bytes)
408
                                                    (pair (big_map address nat)
409
                                                          (pair address bool))))
410
                                            (pair
411
                                              (pair (pair (big_map bytes bytes) bool)
412
                                                    (pair address
413
                                                          (pair (big_map address nat)
414
                                                                (big_map string bytes))))
415
                                              (pair
416
                                                (pair
417
                                                  (big_map
418
                                                    (pair address (pair address nat))
419
                                                    unit)
420
                                                  bool)
421
                                                (pair
422
                                                  (big_map nat
423
                                                           (pair bool
424
                                                                 (pair
425
                                                                   (map string bytes)
426
                                                                   address)))
427
                                                  (pair
428
                                                    (big_map nat
429
                                                             (pair nat
430
                                                                   (map string bytes)))
431
                                                    (big_map nat nat)))))))))))))
432
                (pair
433
                  (pair
434
                    (pair
435
                      (pair
436
                        (pair
437
                          (lambda
438
                            (pair (pair address (option string)) (pair address address))
439
                            bool)
440
                          address)
441
                        (pair nat nat))
442
                      (pair (pair bytes bytes)
443
                            (pair (big_map address nat) (pair address bool))))
444
                    (pair
445
                      (pair (pair (big_map bytes bytes) bool)
446
                            (pair address
447
                                  (pair (big_map address nat) (big_map string bytes))))
448
                      (pair (pair (big_map (pair address (pair address nat)) unit) bool)
449
                            (pair
450
                              (big_map nat (pair bool (pair (map string bytes) address)))
451
                              (pair (big_map nat (pair nat (map string bytes)))
452
                                    (big_map nat nat))))))
453
                  (big_map nat
454
                           (lambda
455
                             (pair
456
                               (or
457
                                 (or
458
                                   (or (pair address nat)
459
                                       (or unit (pair bytes (pair bytes nat))))
460
                                   (or (or address bool) (or address (pair address nat))))
461
                                 (or
462
                                   (or (or (pair nat (list bytes)) bytes)
463
                                       (or
464
                                         (pair (pair address nat)
465
                                               (pair (map string bytes) nat))
466
                                         (list (pair address
467
                                                    (list (pair address (pair nat nat)))))))
468
                                   (or
469
                                     (or (pair bytes bytes)
470
                                         (list (or (pair address (pair address nat))
471
                                                  (pair address (pair address nat)))))
472
                                     (or (pair (map string bytes) nat)
473
                                         (pair address nat)))))
474
                               (pair
475
                                 (pair
476
                                   (pair
477
                                     (pair
478
                                       (lambda
479
                                         (pair (pair address (option string))
480
                                               (pair address address))
481
                                         bool)
482
                                       address)
483
                                     (pair nat nat))
484
                                   (pair (pair bytes bytes)
485
                                         (pair (big_map address nat) (pair address bool))))
486
                                 (pair
487
                                   (pair (pair (big_map bytes bytes) bool)
488
                                         (pair address
489
                                               (pair (big_map address nat)
490
                                                     (big_map string bytes))))
491
                                   (pair
492
                                     (pair
493
                                       (big_map (pair address (pair address nat)) unit)
494
                                       bool)
495
                                     (pair
496
                                       (big_map nat
497
                                                (pair bool
498
                                                      (pair (map string bytes) address)))
499
                                       (pair (big_map nat (pair nat (map string bytes)))
500
                                             (big_map nat nat)))))))
501
                             (pair (list operation)
502
                                   (pair
503
                                     (pair
504
                                       (pair
505
                                         (pair
506
                                           (lambda
507
                                             (pair (pair address (option string))
508
                                                   (pair address address))
509
                                             bool)
510
                                           address)
511
                                         (pair nat nat))
512
                                       (pair (pair bytes bytes)
513
                                             (pair (big_map address nat)
514
                                                   (pair address bool))))
515
                                     (pair
516
                                       (pair (pair (big_map bytes bytes) bool)
517
                                             (pair address
518
                                                   (pair (big_map address nat)
519
                                                         (big_map string bytes))))
520
                                       (pair
521
                                         (pair
522
                                           (big_map (pair address (pair address nat))
523
                                                    unit)
524
                                           bool)
525
                                         (pair
526
                                           (big_map nat
527
                                                    (pair bool
528
                                                          (pair (map string bytes)
529
                                                                address)))
530
                                           (pair
531
                                             (big_map nat (pair nat (map string bytes)))
532
                                             (big_map nat nat))))))))))) ;
533
         UNPAIR 3 ;
534
         IF_LEFT
535
           { DUP ;
536
             IF_LEFT
537
               { IF_LEFT
538
                   { IF_LEFT
539
                       { DROP ; PUSH nat 0 }
540
                       { IF_LEFT { DROP ; PUSH nat 1 } { DROP ; PUSH nat 2 } } }
541
                   { IF_LEFT
542
                       { IF_LEFT { DROP ; PUSH nat 3 } { DROP ; PUSH nat 4 } }
543
                       { IF_LEFT { DROP ; PUSH nat 5 } { DROP ; PUSH nat 6 } } } }
544
               { IF_LEFT
545
                   { IF_LEFT
546
                       { IF_LEFT { DROP ; PUSH nat 7 } { DROP ; PUSH nat 8 } }
547
                       { IF_LEFT { DROP ; PUSH nat 9 } { DROP ; PUSH nat 10 } } }
548
                   { IF_LEFT
549
                       { IF_LEFT { DROP ; PUSH nat 11 } { DROP ; PUSH nat 12 } }
550
                       { IF_LEFT { DROP ; PUSH nat 13 } { DROP ; PUSH nat 14 } } } } ;
551
             DUP 4 ;
552
             SWAP ;
553
             GET ;
554
             IF_NONE { PUSH int -1 ; FAILWITH } {} ;
555
             DUG 2 ;
556
             PAIR ;
557
             EXEC ;
558
             UNPAIR }
559
           { IF_LEFT
560
               { IF_LEFT
561
                   { SWAP ;
562
                     DUP ;
563
                     DUG 2 ;
564
                     GET 5 ;
565
                     CDR ;
566
                     IF { PUSH string "FA2_PAUSED" ; FAILWITH } {} ;
567
                     DUP ;
568
                     CAR ;
569
                     MAP { DUP 3 ;
570
                           GET 9 ;
571
                           SWAP ;
572
                           DUP ;
573
                           DUG 2 ;
574
                           CDR ;
575
                           MEM ;
576
                           IF {} { PUSH string "FA2_TOKEN_UNDEFINED" ; FAILWITH } ;
577
                           DUP 3 ;
578
                           GET 3 ;
579
                           GET 5 ;
580
                           SWAP ;
581
                           DUP ;
582
                           DUG 2 ;
583
                           CAR ;
584
                           MEM ;
585
                           IF
586
                             { DUP 3 ;
587
                               GET 3 ;
588
                               GET 5 ;
589
                               SWAP ;
590
                               DUP ;
591
                               DUG 2 ;
592
                               CAR ;
593
                               GET ;
594
                               IF_NONE { PUSH int 421 ; FAILWITH } {} ;
595
                               SWAP ;
596
                               PAIR }
597
                             { PUSH nat 0 ; SWAP ; PAIR } } ;
598
                     NIL operation ;
599
                     DIG 2 ;
600
                     CDR ;
601
                     PUSH mutez 0 ;
602
                     DIG 3 ;
603
                     TRANSFER_TOKENS ;
604
                     CONS }
605
                   { IF_LEFT
606
                       { SWAP ;
607
                         DUP ;
608
                         DUG 2 ;
609
                         CAR ;
610
                         CAR ;
611
                         CAR ;
612
                         CDR ;
613
                         SENDER ;
614
                         COMPARE ;
615
                         EQ ;
616
                         IF {} { PUSH int 325 ; FAILWITH } ;
617
                         DUP ;
618
                         CDR ;
619
                         CONTRACT unit ;
620
                         IF_NONE { PUSH int 328 ; FAILWITH } {} ;
621
                         NIL operation ;
622
                         SWAP ;
623
                         DIG 2 ;
624
                         CAR ;
625
                         UNIT ;
626
                         TRANSFER_TOKENS ;
627
                         CONS }
628
                       { SWAP ;
629
                         DUP ;
630
                         CAR ;
631
                         CAR ;
632
                         CAR ;
633
                         CAR ;
634
                         SWAP ;
635
                         DUP ;
636
                         DUG 3 ;
637
                         CAR ;
638
                         CAR ;
639
                         CAR ;
640
                         CDR ;
641
                         SELF_ADDRESS ;
642
                         PAIR ;
643
                         NONE string ;
644
                         SENDER ;
645
                         PAIR ;
646
                         PAIR ;
647
                         EXEC ;
648
                         IF {} { PUSH string "FA2_NOT_ADMIN" ; FAILWITH } ;
649
                         SWAP ;
650
                         UNPAIR ;
651
                         UNPAIR ;
652
                         UNPAIR ;
653
                         CAR ;
654
                         DIG 4 ;
655
                         SWAP ;
656
                         PAIR ;
657
                         PAIR ;
658
                         PAIR ;
659
                         PAIR ;
660
                         NIL operation } } }
661
               { IF_LEFT
662
                   { SWAP ;
663
                     DUP ;
664
                     CAR ;
665
                     CAR ;
666
                     CAR ;
667
                     CAR ;
668
                     SWAP ;
669
                     DUP ;
670
                     DUG 3 ;
671
                     CAR ;
672
                     CAR ;
673
                     CAR ;
674
                     CDR ;
675
                     SELF_ADDRESS ;
676
                     PAIR ;
677
                     NONE string ;
678
                     SENDER ;
679
                     PAIR ;
680
                     PAIR ;
681
                     EXEC ;
682
                     IF {} { PUSH string "FA2_NOT_ADMIN" ; FAILWITH } ;
683
                     SWAP ;
684
                     UNPAIR ;
685
                     SWAP ;
686
                     UNPAIR ;
687
                     UNPAIR ;
688
                     SWAP ;
689
                     UNPAIR ;
690
                     SWAP ;
691
                     UNPAIR ;
692
                     SWAP ;
693
                     DUP 7 ;
694
                     CDR ;
695
                     SOME ;
696
                     DIG 7 ;
697
                     CAR ;
698
                     UPDATE ;
699
                     SWAP ;
700
                     PAIR ;
701
                     SWAP ;
702
                     PAIR ;
703
                     SWAP ;
704
                     PAIR ;
705
                     PAIR ;
706
                     SWAP ;
707
                     PAIR }
708
                   { IF_LEFT
709
                       { SWAP ;
710
                         DUP ;
711
                         CAR ;
712
                         CAR ;
713
                         CAR ;
714
                         CAR ;
715
                         SWAP ;
716
                         DUP ;
717
                         DUG 3 ;
718
                         CAR ;
719
                         CAR ;
720
                         CAR ;
721
                         CDR ;
722
                         SELF_ADDRESS ;
723
                         PAIR ;
724
                         NONE string ;
725
                         SENDER ;
726
                         PAIR ;
727
                         PAIR ;
728
                         EXEC ;
729
                         IF {} { PUSH string "FA2_NOT_ADMIN" ; FAILWITH } ;
730
                         SWAP ;
731
                         UNPAIR ;
732
                         SWAP ;
733
                         UNPAIR ;
734
                         SWAP ;
735
                         UNPAIR ;
736
                         CAR ;
737
                         DIG 4 ;
738
                         SWAP ;
739
                         PAIR ;
740
                         PAIR ;
741
                         SWAP ;
742
                         PAIR ;
743
                         SWAP ;
744
                         PAIR }
745
                       { SWAP ;
746
                         DUP ;
747
                         CAR ;
748
                         CAR ;
749
                         CAR ;
750
                         CAR ;
751
                         SWAP ;
752
                         DUP ;
753
                         DUG 3 ;
754
                         CAR ;
755
                         CAR ;
756
                         CAR ;
757
                         CDR ;
758
                         SELF_ADDRESS ;
759
                         PAIR ;
760
                         PUSH (option string) (Some "update_code") ;
761
                         SENDER ;
762
                         PAIR ;
763
                         PAIR ;
764
                         EXEC ;
765
                         IF {} { PUSH int 598 ; FAILWITH } ;
766
                         DUP ;
767
                         CAR ;
768
                         IF_LEFT
769
                           { IF_LEFT
770
                               { DROP ; DIG 2 ; SWAP ; CDR ; SOME ; PUSH nat 7 ; UPDATE ; SWAP }
771
                               { IF_LEFT
772
                                   { DROP ; DIG 2 ; SWAP ; CDR ; SOME ; PUSH nat 8 ; UPDATE ; SWAP }
773
                                   { DROP ; DIG 2 ; SWAP ; CDR ; SOME ; PUSH nat 9 ; UPDATE ; SWAP } } }
774
                           { IF_LEFT
775
                               { DROP ; DIG 2 ; SWAP ; CDR ; SOME ; PUSH nat 10 ; UPDATE ; SWAP }
776
                               { IF_LEFT
777
                                   { DROP ; DIG 2 ; SWAP ; CDR ; SOME ; PUSH nat 12 ; UPDATE ; SWAP }
778
                                   { DROP ; DIG 2 ; SWAP ; CDR ; SOME ; PUSH nat 14 ; UPDATE ; SWAP } } } } } ;
779
                 NIL operation } } ;
780
         NIL operation ;
781
         SWAP ;
782
         ITER { CONS } ;
783
         DUG 2 ;
784
         PAIR ;
785
         SWAP ;
786
         PAIR } ;
787
  view "all_tokens" unit (list nat)
788
        { UNPAIR 3 ;
789
          DIG 2 ;
790
          DROP ;
791
          NIL nat ;
792
          DUP 3 ;
793
          CAR ;
794
          CAR ;
795
          GET 3 ;
796
          PUSH nat 0 ;
797
          DUP ;
798
          DUP 3 ;
799
          COMPARE ;
800
          GT ;
801
          LOOP { DUP ; DIG 3 ; SWAP ; CONS ; DUG 2 ; PUSH nat 1 ; ADD ; DUP ; DUP 3 ; COMPARE ; GT } ;
802
          DROP 2 ;
803
          SWAP ;
804
          DROP ;
805
          SWAP ;
806
          DROP ;
807
          NIL nat ;
808
          SWAP ;
809
          ITER { CONS } } ;
810
  view "count_tokens" unit nat { GET 3 ; CAR ; CAR ; GET 3 } ;
811
  view "does_token_exist" nat bool
812
        { UNPAIR 3 ; DIG 2 ; DROP ; SWAP ; GET 9 ; SWAP ; MEM } ;
813
  view "get_balance" (pair (address %owner) (nat %token_id)) nat
814
        { UNPAIR 3 ;
815
          DIG 2 ;
816
          DROP ;
817
          SWAP ;
818
          DUP ;
819
          DUG 2 ;
820
          GET 9 ;
821
          SWAP ;
822
          DUP ;
823
          DUG 2 ;
824
          CDR ;
825
          MEM ;
826
          IF {} { PUSH string "FA2_TOKEN_UNDEFINED" ; FAILWITH } ;
827
          SWAP ;
828
          GET 3 ;
829
          GET 5 ;
830
          SWAP ;
831
          CAR ;
832
          GET ;
833
          IF_NONE { PUSH int 502 ; FAILWITH } {} } ;
834
  view "is_operator" (pair (address %owner) (pair (address %operator) (nat %token_id)))
835
        bool
836
        { UNPAIR 3 ; DIG 2 ; DROP ; SWAP ; GET 5 ; CAR ; SWAP ; DUP ; GET 4 ; SWAP ; DUP ; GET 3 ; SWAP ; CAR ; PAIR 3 ; MEM } ;
837
  view "query_extra_db" bytes (option bytes)
838
        { UNPAIR 3 ;
839
          DIG 2 ;
840
          DROP ;
841
          NONE bytes ;
842
          DUP 3 ;
843
          GET 3 ;
844
          CAR ;
845
          CAR ;
846
          DUP 3 ;
847
          MEM ;
848
          IF
849
            { DROP ; SWAP ; GET 3 ; CAR ; CAR ; SWAP ; GET ; IF_NONE { PUSH int 489 ; FAILWITH } {} ; SOME }
850
            { SWAP ; DROP ; SWAP ; DROP } } ;
851
  view "total_supply" nat nat
852
        { UNPAIR 3 ; DIG 2 ; DROP ; SWAP ; GET 10 ; SWAP ; GET ; IF_NONE { PUSH int 527 ; FAILWITH } {} } }