BCD

Tezos Contract Explorer
Search Networks Deploy
  • Home
  • /
  • Mainnet
  • /
  • KT1FFRM...9JQK
Delegatable
operations (124)Storage Code Interact Tokens Fork Statistics Details
Latest
​x
995
 
1
parameter (or
2
            (or (or (unit %claim) (or (unit %default) (nat %deposit)))
3
                (or (unit %internal_claim)
4
                    (or (nat %internal_deposit) (unit %internal_withdraw))))
5
            (or
6
              (or (address %propose_administrator)
7
                  (or (address %remove_administrator) (unit %set_administrator)))
8
              (or (or (option %set_delegate key_hash) (nat %set_max_release_period))
9
                  (or
10
                    (list %set_reward_balance (pair
11
                                               (pair %request (address %owner)
12
                                                              (nat %token_id))
13
                                               (nat %balance)))
14
                    (unit %withdraw)))));
15
storage (pair
16
          (pair
17
            (pair (big_map %administrators address nat)
18
                  (pair (nat %current_reward_balance) (nat %dist_factor)))
19
            (pair (nat %last_reward_balance)
20
                  (pair (nat %max_release_period) (address %reward_token_address))))
21
          (pair
22
            (pair (nat %reward_token_id)
23
                  (pair (address %sender) (address %stake_token_address)))
24
            (pair (int %stake_token_id)
25
                  (pair
26
                    (big_map %stakes address
27
                                     (pair (timestamp %age_timestamp)
28
                                           (pair (nat %dist_factor) (nat %stake))))
29
                    (nat %total_stake)))));
30
code { LAMBDA
31
         (pair unit
32
               (pair (list operation)
33
                     (pair
34
                       (pair (pair (big_map address nat) (pair nat nat))
35
                             (pair nat (pair nat address)))
36
                       (pair (pair nat (pair address address))
37
                             (pair int
38
                                   (pair
39
                                     (big_map address (pair timestamp (pair nat nat)))
40
                                     nat))))))
41
         (pair unit
42
               (pair (list operation)
43
                     (pair
44
                       (pair (pair (big_map address nat) (pair nat nat))
45
                             (pair nat (pair nat address)))
46
                       (pair (pair nat (pair address address))
47
                             (pair int
48
                                   (pair
49
                                     (big_map address (pair timestamp (pair nat nat)))
50
                                     nat))))))
51
         { CDR ;
52
           UNPAIR ;
53
           DUP 2 ;
54
           CAR ;
55
           GET 6 ;
56
           CONTRACT %balance_of (pair
57
                                  (list %requests (pair (address %owner) (nat %token_id)))
58
                                  (contract %callback (list (pair
59
                                                            (pair %request
60
                                                              (address %owner)
61
                                                              (nat %token_id))
62
                                                            (nat %balance))))) ;
63
           IF_NONE { PUSH int 112 ; FAILWITH } {} ;
64
           PUSH mutez 0 ;
65
           SELF_ADDRESS ;
66
           CONTRACT %set_reward_balance (list (pair
67
                                               (pair %request (address %owner)
68
                                                              (nat %token_id))
69
                                               (nat %balance))) ;
70
           IF_NONE { PUSH int 115 ; FAILWITH } {} ;
71
           NIL (pair address nat) ;
72
           DUP 6 ;
73
           GET 3 ;
74
           CAR ;
75
           SELF_ADDRESS ;
76
           PAIR ;
77
           CONS ;
78
           PAIR ;
79
           TRANSFER_TOKENS ;
80
           CONS ;
81
           UNIT ;
82
           PAIR 3 } ;
83
       SWAP ;
84
       LAMBDA
85
         (pair unit
86
               (pair (list operation)
87
                     (pair
88
                       (pair (pair (big_map address nat) (pair nat nat))
89
                             (pair nat (pair nat address)))
90
                       (pair (pair nat (pair address address))
91
                             (pair int
92
                                   (pair
93
                                     (big_map address (pair timestamp (pair nat nat)))
94
                                     nat))))))
95
         (pair unit
96
               (pair (list operation)
97
                     (pair
98
                       (pair (pair (big_map address nat) (pair nat nat))
99
                             (pair nat (pair nat address)))
100
                       (pair (pair nat (pair address address))
101
                             (pair int
102
                                   (pair
103
                                     (big_map address (pair timestamp (pair nat nat)))
104
                                     nat))))))
105
         { UNPAIR 3 ;
106
           SWAP ;
107
           DUP 3 ;
108
           GET 7 ;
109
           DUP 4 ;
110
           GET 3 ;
111
           GET 3 ;
112
           MEM ;
113
           IF
114
             { DUP 3 ;
115
               GET 7 ;
116
               DUP 4 ;
117
               GET 3 ;
118
               GET 3 ;
119
               GET ;
120
               IF_NONE { PUSH int 150 ; FAILWITH } {} ;
121
               PUSH nat 1000000000000 ;
122
               DUP 2 ;
123
               GET 3 ;
124
               DUP 6 ;
125
               CAR ;
126
               CAR ;
127
               GET 4 ;
128
               SUB ;
129
               ISNAT ;
130
               IF_NONE { PUSH int 159 ; FAILWITH } {} ;
131
               DUP 3 ;
132
               GET 4 ;
133
               MUL ;
134
               EDIV ;
135
               IF_NONE { PUSH int 158 ; FAILWITH } { CAR } ;
136
               DUP 5 ;
137
               CAR ;
138
               GET 5 ;
139
               DUP 6 ;
140
               CAR ;
141
               GET 5 ;
142
               DUP 4 ;
143
               CAR ;
144
               NOW ;
145
               SUB ;
146
               ISNAT ;
147
               IF_NONE { PUSH int 152 ; FAILWITH } {} ;
148
               DUP ;
149
               DUP 3 ;
150
               COMPARE ;
151
               LE ;
152
               IF { DROP } { SWAP ; DROP } ;
153
               DUP 3 ;
154
               MUL ;
155
               EDIV ;
156
               IF_NONE { PUSH int 164 ; FAILWITH } { CAR } ;
157
               PUSH nat 0 ;
158
               DUP 2 ;
159
               DUP 4 ;
160
               SUB ;
161
               ISNAT ;
162
               IF_NONE { PUSH int 172 ; FAILWITH } {} ;
163
               COMPARE ;
164
               GT ;
165
               IF
166
                 { DIG 3 ;
167
                   DUP 6 ;
168
                   CAR ;
169
                   GET 6 ;
170
                   CONTRACT %transfer (list (pair (address %from_)
171
                                                 (list %txs (pair (address %to_)
172
                                                                 (pair (nat %token_id)
173
                                                                       (nat %amount)))))) ;
174
                   IF_NONE { PUSH int 36 ; FAILWITH } {} ;
175
                   PUSH mutez 0 ;
176
                   NIL (pair address (list (pair address (pair nat nat)))) ;
177
                   NIL (pair address (pair nat nat)) ;
178
                   DUP 6 ;
179
                   DUP 8 ;
180
                   SUB ;
181
                   ISNAT ;
182
                   IF_NONE { PUSH int 172 ; FAILWITH } {} ;
183
                   DUP 11 ;
184
                   GET 3 ;
185
                   CAR ;
186
                   SELF_ADDRESS ;
187
                   PAIR 3 ;
188
                   CONS ;
189
                   SELF_ADDRESS ;
190
                   PAIR ;
191
                   CONS ;
192
                   TRANSFER_TOKENS ;
193
                   CONS ;
194
                   DUG 3 }
195
                 {} ;
196
               PUSH nat 0 ;
197
               DUP 2 ;
198
               COMPARE ;
199
               GT ;
200
               IF
201
                 { DIG 2 ;
202
                   DROP ;
203
                   DIG 3 ;
204
                   DROP ;
205
                   DIG 2 ;
206
                   DUP 4 ;
207
                   CAR ;
208
                   GET 6 ;
209
                   CONTRACT %transfer (list (pair (address %from_)
210
                                                 (list %txs (pair (address %to_)
211
                                                                 (pair (nat %token_id)
212
                                                                       (nat %amount)))))) ;
213
                   IF_NONE { PUSH int 36 ; FAILWITH } {} ;
214
                   PUSH mutez 0 ;
215
                   NIL (pair address (list (pair address (pair nat nat)))) ;
216
                   NIL (pair address (pair nat nat)) ;
217
                   DIG 5 ;
218
                   DUP 8 ;
219
                   GET 3 ;
220
                   CAR ;
221
                   DUP 9 ;
222
                   GET 3 ;
223
                   GET 3 ;
224
                   PAIR 3 ;
225
                   CONS ;
226
                   SELF_ADDRESS ;
227
                   PAIR ;
228
                   CONS ;
229
                   TRANSFER_TOKENS ;
230
                   CONS ;
231
                   SWAP }
232
                 { DROP ; SWAP ; DROP ; DIG 2 ; DROP } ;
233
               DUP 3 ;
234
               CAR ;
235
               GET 3 ;
236
               SUB ;
237
               ISNAT ;
238
               IF_NONE { PUSH int 182 ; FAILWITH } {} ;
239
               DIG 2 ;
240
               UNPAIR ;
241
               UNPAIR ;
242
               SWAP ;
243
               CDR ;
244
               DIG 3 ;
245
               PAIR ;
246
               SWAP ;
247
               PAIR ;
248
               PAIR ;
249
               SWAP ;
250
               DUP 2 ;
251
               CAR ;
252
               CAR ;
253
               GET 4 ;
254
               DUP 3 ;
255
               DUP ;
256
               GET 7 ;
257
               DUP ;
258
               DIG 5 ;
259
               GET 3 ;
260
               GET 3 ;
261
               DUP ;
262
               DUG 2 ;
263
               GET ;
264
               IF_NONE { PUSH int 185 ; FAILWITH } {} ;
265
               DIG 4 ;
266
               UPDATE 3 ;
267
               SOME ;
268
               SWAP ;
269
               UPDATE ;
270
               UPDATE 7 ;
271
               SWAP }
272
             { SWAP ; DROP } ;
273
           UNIT ;
274
           PAIR 3 } ;
275
       SWAP ;
276
       LAMBDA
277
         (pair unit
278
               (pair
279
                 (pair (pair (big_map address nat) (pair nat nat))
280
                       (pair nat (pair nat address)))
281
                 (pair (pair nat (pair address address))
282
                       (pair int
283
                             (pair (big_map address (pair timestamp (pair nat nat))) nat)))))
284
         (pair unit
285
               (pair
286
                 (pair (pair (big_map address nat) (pair nat nat))
287
                       (pair nat (pair nat address)))
288
                 (pair (pair nat (pair address address))
289
                       (pair int
290
                             (pair (big_map address (pair timestamp (pair nat nat))) nat)))))
291
         { CDR ;
292
           PUSH nat 0 ;
293
           DUP 2 ;
294
           GET 8 ;
295
           COMPARE ;
296
           GT ;
297
           IF
298
             { DUP ;
299
               UNPAIR ;
300
               UNPAIR ;
301
               UNPAIR ;
302
               SWAP ;
303
               UNPAIR ;
304
               SWAP ;
305
               DUP 6 ;
306
               GET 8 ;
307
               PUSH nat 1000000000000 ;
308
               DIG 7 ;
309
               DUP ;
310
               CAR ;
311
               GET 3 ;
312
               SWAP ;
313
               CAR ;
314
               CAR ;
315
               GET 3 ;
316
               SUB ;
317
               ISNAT ;
318
               IF_NONE { PUSH int 132 ; FAILWITH } {} ;
319
               MUL ;
320
               EDIV ;
321
               IF_NONE { PUSH int 136 ; FAILWITH } { CAR } ;
322
               ADD ;
323
               SWAP ;
324
               PAIR ;
325
               SWAP ;
326
               PAIR ;
327
               PAIR ;
328
               PAIR ;
329
               DUP ;
330
               CAR ;
331
               CAR ;
332
               GET 3 ;
333
               SWAP ;
334
               UNPAIR ;
335
               UNPAIR ;
336
               SWAP ;
337
               CDR ;
338
               DIG 3 ;
339
               PAIR ;
340
               SWAP ;
341
               PAIR ;
342
               PAIR }
343
             {} ;
344
           UNIT ;
345
           PAIR } ;
346
       SWAP ;
347
       LAMBDA
348
         unit
349
         unit
350
         { DROP ; SELF_ADDRESS ; SENDER ; COMPARE ; EQ ; IF {} { PUSH int 400 ; FAILWITH } ; UNIT } ;
351
       SWAP ;
352
       LAMBDA
353
         (pair unit
354
               (pair
355
                 (pair (pair (big_map address nat) (pair nat nat))
356
                       (pair nat (pair nat address)))
357
                 (pair (pair nat (pair address address))
358
                       (pair int
359
                             (pair (big_map address (pair timestamp (pair nat nat))) nat)))))
360
         (pair unit
361
               (pair
362
                 (pair (pair (big_map address nat) (pair nat nat))
363
                       (pair nat (pair nat address)))
364
                 (pair (pair nat (pair address address))
365
                       (pair int
366
                             (pair (big_map address (pair timestamp (pair nat nat))) nat)))))
367
         { CDR ;
368
           PUSH nat 1 ;
369
           DUP 2 ;
370
           CAR ;
371
           CAR ;
372
           CAR ;
373
           SENDER ;
374
           GET ;
375
           IF_NONE { PUSH int 21 ; FAILWITH } {} ;
376
           COMPARE ;
377
           EQ ;
378
           IF {} { PUSH int 401 ; FAILWITH } ;
379
           UNIT ;
380
           PAIR } ;
381
       SWAP ;
382
       UNPAIR ;
383
       IF_LEFT
384
         { IF_LEFT
385
             { IF_LEFT
386
                 { DROP ;
387
                   SWAP ;
388
                   DROP ;
389
                   SWAP ;
390
                   DROP ;
391
                   SWAP ;
392
                   DROP ;
393
                   SWAP ;
394
                   DROP ;
395
                   AMOUNT ;
396
                   PUSH mutez 0 ;
397
                   COMPARE ;
398
                   EQ ;
399
                   IF {} { AMOUNT ; FAILWITH } ;
400
                   UNPAIR ;
401
                   SWAP ;
402
                   UNPAIR ;
403
                   UNPAIR ;
404
                   SWAP ;
405
                   CDR ;
406
                   SENDER ;
407
                   PAIR ;
408
                   SWAP ;
409
                   PAIR ;
410
                   PAIR ;
411
                   SWAP ;
412
                   PAIR ;
413
                   NIL operation ;
414
                   DIG 2 ;
415
                   UNIT ;
416
                   SWAP ;
417
                   DUG 3 ;
418
                   PAIR 3 ;
419
                   EXEC ;
420
                   CDR ;
421
                   UNPAIR ;
422
                   SELF %internal_claim ;
423
                   PUSH mutez 0 ;
424
                   UNIT ;
425
                   TRANSFER_TOKENS ;
426
                   CONS }
427
                 { IF_LEFT
428
                     { DROP ; SWAP ; DROP ; SWAP ; DROP ; SWAP ; DROP ; SWAP ; DROP ; SWAP ; DROP ; NIL operation }
429
                     { DIG 2 ;
430
                       DROP ;
431
                       DIG 2 ;
432
                       DROP ;
433
                       DIG 2 ;
434
                       DROP ;
435
                       DIG 2 ;
436
                       DROP ;
437
                       AMOUNT ;
438
                       PUSH mutez 0 ;
439
                       COMPARE ;
440
                       EQ ;
441
                       IF {} { AMOUNT ; FAILWITH } ;
442
                       SWAP ;
443
                       UNPAIR ;
444
                       SWAP ;
445
                       UNPAIR ;
446
                       UNPAIR ;
447
                       SWAP ;
448
                       CDR ;
449
                       SENDER ;
450
                       PAIR ;
451
                       SWAP ;
452
                       PAIR ;
453
                       PAIR ;
454
                       SWAP ;
455
                       PAIR ;
456
                       SWAP ;
457
                       NIL operation ;
458
                       DIG 3 ;
459
                       UNIT ;
460
                       SWAP ;
461
                       DIG 4 ;
462
                       DIG 3 ;
463
                       DIG 3 ;
464
                       PAIR 3 ;
465
                       EXEC ;
466
                       CDR ;
467
                       UNPAIR ;
468
                       SWAP ;
469
                       DUG 2 ;
470
                       SELF %internal_deposit ;
471
                       PUSH mutez 0 ;
472
                       DIG 3 ;
473
                       TRANSFER_TOKENS ;
474
                       CONS } } }
475
             { IF_LEFT
476
                 { DROP ;
477
                   SWAP ;
478
                   DROP ;
479
                   DIG 4 ;
480
                   DROP ;
481
                   AMOUNT ;
482
                   PUSH mutez 0 ;
483
                   COMPARE ;
484
                   EQ ;
485
                   IF {} { AMOUNT ; FAILWITH } ;
486
                   SWAP ;
487
                   UNIT ;
488
                   EXEC ;
489
                   DROP ;
490
                   UNIT ;
491
                   PAIR ;
492
                   EXEC ;
493
                   CDR ;
494
                   NIL operation ;
495
                   DIG 2 ;
496
                   UNIT ;
497
                   SWAP ;
498
                   DUG 3 ;
499
                   PAIR 3 ;
500
                   EXEC ;
501
                   CDR ;
502
                   UNPAIR }
503
                 { IF_LEFT
504
                     { DIG 2 ;
505
                       DROP ;
506
                       DIG 4 ;
507
                       DROP ;
508
                       DIG 4 ;
509
                       DROP ;
510
                       AMOUNT ;
511
                       PUSH mutez 0 ;
512
                       COMPARE ;
513
                       EQ ;
514
                       IF {} { AMOUNT ; FAILWITH } ;
515
                       DIG 2 ;
516
                       UNIT ;
517
                       EXEC ;
518
                       DROP ;
519
                       DIG 2 ;
520
                       UNIT ;
521
                       SWAP ;
522
                       DIG 3 ;
523
                       DIG 2 ;
524
                       PAIR ;
525
                       EXEC ;
526
                       CDR ;
527
                       SWAP ;
528
                       PUSH nat 0 ;
529
                       DUP 2 ;
530
                       COMPARE ;
531
                       GT ;
532
                       IF
533
                         { NIL operation ;
534
                           DUP 3 ;
535
                           GET 3 ;
536
                           GET 4 ;
537
                           CONTRACT %transfer (pair (address %from)
538
                                                    (pair (address %to) (nat %value))) ;
539
                           IF_NONE { PUSH int 19 ; FAILWITH } {} ;
540
                           PUSH mutez 0 ;
541
                           DUP 4 ;
542
                           SELF_ADDRESS ;
543
                           DUP 7 ;
544
                           GET 3 ;
545
                           GET 3 ;
546
                           PAIR 3 ;
547
                           TRANSFER_TOKENS ;
548
                           CONS }
549
                         { NIL operation } ;
550
                       DUP 3 ;
551
                       GET 7 ;
552
                       DUP 4 ;
553
                       GET 3 ;
554
                       GET 3 ;
555
                       MEM ;
556
                       IF
557
                         { DUP 3 ;
558
                           GET 7 ;
559
                           DUP 4 ;
560
                           GET 3 ;
561
                           GET 3 ;
562
                           GET ;
563
                           IF_NONE { PUSH int 263 ; FAILWITH } {} ;
564
                           PUSH nat 1000000000000 ;
565
                           DUP 2 ;
566
                           GET 3 ;
567
                           DUP 6 ;
568
                           CAR ;
569
                           CAR ;
570
                           GET 4 ;
571
                           SUB ;
572
                           ISNAT ;
573
                           IF_NONE { PUSH int 272 ; FAILWITH } {} ;
574
                           DUP 3 ;
575
                           GET 4 ;
576
                           MUL ;
577
                           EDIV ;
578
                           IF_NONE { PUSH int 271 ; FAILWITH } { CAR } ;
579
                           DUP 4 ;
580
                           DUP 3 ;
581
                           GET 4 ;
582
                           ADD ;
583
                           PUSH nat 1000000000000 ;
584
                           DIG 2 ;
585
                           MUL ;
586
                           EDIV ;
587
                           IF_NONE { PUSH int 281 ; FAILWITH } { CAR } ;
588
                           DUP 5 ;
589
                           CAR ;
590
                           CAR ;
591
                           GET 4 ;
592
                           SUB ;
593
                           ISNAT ;
594
                           IF_NONE { PUSH int 279 ; FAILWITH } {} ;
595
                           DUP 5 ;
596
                           DUP ;
597
                           GET 7 ;
598
                           DUP 6 ;
599
                           DUP 5 ;
600
                           GET 4 ;
601
                           ADD ;
602
                           DIG 3 ;
603
                           DUP 7 ;
604
                           DUP 6 ;
605
                           GET 4 ;
606
                           ADD ;
607
                           DUP 9 ;
608
                           CAR ;
609
                           GET 5 ;
610
                           DUP 7 ;
611
                           CAR ;
612
                           NOW ;
613
                           SUB ;
614
                           ISNAT ;
615
                           IF_NONE { PUSH int 265 ; FAILWITH } {} ;
616
                           DUP ;
617
                           DUP 3 ;
618
                           COMPARE ;
619
                           LE ;
620
                           IF { DROP } { SWAP ; DROP } ;
621
                           DIG 6 ;
622
                           GET 4 ;
623
                           MUL ;
624
                           EDIV ;
625
                           IF_NONE { PUSH int 287 ; FAILWITH } { CAR } ;
626
                           INT ;
627
                           PUSH int -1 ;
628
                           MUL ;
629
                           NOW ;
630
                           ADD ;
631
                           PAIR 3 ;
632
                           SOME ;
633
                           DIG 5 ;
634
                           GET 3 ;
635
                           GET 3 ;
636
                           UPDATE ;
637
                           UPDATE 7 ;
638
                           DUG 2 }
639
                         { DUP 3 ;
640
                           DUP ;
641
                           GET 7 ;
642
                           DUP 4 ;
643
                           DUP 6 ;
644
                           CAR ;
645
                           CAR ;
646
                           GET 4 ;
647
                           NOW ;
648
                           PAIR 3 ;
649
                           SOME ;
650
                           DIG 5 ;
651
                           GET 3 ;
652
                           GET 3 ;
653
                           UPDATE ;
654
                           UPDATE 7 ;
655
                           DUG 2 } ;
656
                       DIG 2 ;
657
                       DUP ;
658
                       GET 8 ;
659
                       DIG 3 ;
660
                       ADD ;
661
                       UPDATE 8 ;
662
                       SWAP }
663
                     { DROP ;
664
                       SWAP ;
665
                       DROP ;
666
                       DIG 4 ;
667
                       DROP ;
668
                       AMOUNT ;
669
                       PUSH mutez 0 ;
670
                       COMPARE ;
671
                       EQ ;
672
                       IF {} { AMOUNT ; FAILWITH } ;
673
                       SWAP ;
674
                       UNIT ;
675
                       EXEC ;
676
                       DROP ;
677
                       UNIT ;
678
                       PAIR ;
679
                       EXEC ;
680
                       CDR ;
681
                       NIL operation ;
682
                       DIG 2 ;
683
                       UNIT ;
684
                       SWAP ;
685
                       DUG 3 ;
686
                       PAIR 3 ;
687
                       EXEC ;
688
                       CDR ;
689
                       UNPAIR ;
690
                       DUP 2 ;
691
                       GET 7 ;
692
                       DUP 3 ;
693
                       GET 3 ;
694
                       GET 3 ;
695
                       GET ;
696
                       IF_NONE { PUSH int 354 ; FAILWITH } {} ;
697
                       PUSH nat 0 ;
698
                       DUP 2 ;
699
                       GET 4 ;
700
                       COMPARE ;
701
                       GT ;
702
                       IF
703
                         { SWAP ;
704
                           DUP 3 ;
705
                           GET 3 ;
706
                           GET 4 ;
707
                           CONTRACT %transfer (pair (address %from)
708
                                                    (pair (address %to) (nat %value))) ;
709
                           IF_NONE { PUSH int 19 ; FAILWITH } {} ;
710
                           PUSH mutez 0 ;
711
                           DUP 4 ;
712
                           GET 4 ;
713
                           DUP 6 ;
714
                           GET 3 ;
715
                           GET 3 ;
716
                           SELF_ADDRESS ;
717
                           PAIR 3 ;
718
                           TRANSFER_TOKENS ;
719
                           CONS ;
720
                           SWAP }
721
                         {} ;
722
                       GET 4 ;
723
                       DUP 3 ;
724
                       GET 8 ;
725
                       SUB ;
726
                       ISNAT ;
727
                       IF_NONE { PUSH int 370 ; FAILWITH } {} ;
728
                       DIG 2 ;
729
                       SWAP ;
730
                       UPDATE 8 ;
731
                       SWAP ;
732
                       DUP 2 ;
733
                       DUP ;
734
                       GET 7 ;
735
                       NONE (pair timestamp (pair nat nat)) ;
736
                       DIG 4 ;
737
                       GET 3 ;
738
                       GET 3 ;
739
                       UPDATE ;
740
                       UPDATE 7 ;
741
                       SWAP } } } }
742
         { IF_LEFT
743
             { IF_LEFT
744
                 { DIG 3 ;
745
                   DROP ;
746
                   DIG 3 ;
747
                   DROP ;
748
                   DIG 3 ;
749
                   DROP ;
750
                   DIG 3 ;
751
                   DROP ;
752
                   AMOUNT ;
753
                   PUSH mutez 0 ;
754
                   COMPARE ;
755
                   EQ ;
756
                   IF {} { AMOUNT ; FAILWITH } ;
757
                   DIG 2 ;
758
                   UNIT ;
759
                   SWAP ;
760
                   DIG 3 ;
761
                   DIG 2 ;
762
                   PAIR ;
763
                   EXEC ;
764
                   CDR ;
765
                   UNPAIR ;
766
                   UNPAIR ;
767
                   UNPAIR ;
768
                   PUSH (option nat) (Some 0) ;
769
                   DIG 5 ;
770
                   UPDATE ;
771
                   PAIR ;
772
                   PAIR ;
773
                   PAIR }
774
                 { IF_LEFT
775
                     { DIG 3 ;
776
                       DROP ;
777
                       DIG 3 ;
778
                       DROP ;
779
                       DIG 3 ;
780
                       DROP ;
781
                       DIG 3 ;
782
                       DROP ;
783
                       AMOUNT ;
784
                       PUSH mutez 0 ;
785
                       COMPARE ;
786
                       EQ ;
787
                       IF {} { AMOUNT ; FAILWITH } ;
788
                       DIG 2 ;
789
                       UNIT ;
790
                       SWAP ;
791
                       DIG 3 ;
792
                       DIG 2 ;
793
                       PAIR ;
794
                       EXEC ;
795
                       CDR ;
796
                       UNPAIR ;
797
                       UNPAIR ;
798
                       UNPAIR ;
799
                       NONE nat ;
800
                       DIG 5 ;
801
                       UPDATE ;
802
                       PAIR ;
803
                       PAIR ;
804
                       PAIR }
805
                     { DROP ;
806
                       SWAP ;
807
                       DROP ;
808
                       SWAP ;
809
                       DROP ;
810
                       SWAP ;
811
                       DROP ;
812
                       SWAP ;
813
                       DROP ;
814
                       SWAP ;
815
                       DROP ;
816
                       AMOUNT ;
817
                       PUSH mutez 0 ;
818
                       COMPARE ;
819
                       EQ ;
820
                       IF {} { AMOUNT ; FAILWITH } ;
821
                       PUSH nat 0 ;
822
                       DUP 2 ;
823
                       CAR ;
824
                       CAR ;
825
                       CAR ;
826
                       SENDER ;
827
                       GET ;
828
                       IF_NONE { PUSH int 46 ; FAILWITH } {} ;
829
                       COMPARE ;
830
                       EQ ;
831
                       IF {} { PUSH int 405 ; FAILWITH } ;
832
                       UNPAIR ;
833
                       UNPAIR ;
834
                       UNPAIR ;
835
                       PUSH (option nat) (Some 1) ;
836
                       SENDER ;
837
                       UPDATE ;
838
                       PAIR ;
839
                       PAIR ;
840
                       PAIR } } ;
841
               NIL operation }
842
             { IF_LEFT
843
                 { IF_LEFT
844
                     { DIG 3 ;
845
                       DROP ;
846
                       DIG 3 ;
847
                       DROP ;
848
                       DIG 3 ;
849
                       DROP ;
850
                       DIG 3 ;
851
                       DROP ;
852
                       DIG 2 ;
853
                       UNIT ;
854
                       SWAP ;
855
                       DIG 3 ;
856
                       DIG 2 ;
857
                       PAIR ;
858
                       EXEC ;
859
                       CDR ;
860
                       SWAP ;
861
                       SET_DELEGATE ;
862
                       NIL operation ;
863
                       SWAP ;
864
                       CONS }
865
                     { DIG 3 ;
866
                       DROP ;
867
                       DIG 3 ;
868
                       DROP ;
869
                       DIG 3 ;
870
                       DROP ;
871
                       DIG 3 ;
872
                       DROP ;
873
                       AMOUNT ;
874
                       PUSH mutez 0 ;
875
                       COMPARE ;
876
                       EQ ;
877
                       IF {} { AMOUNT ; FAILWITH } ;
878
                       DIG 2 ;
879
                       UNIT ;
880
                       SWAP ;
881
                       DIG 3 ;
882
                       DIG 2 ;
883
                       PAIR ;
884
                       EXEC ;
885
                       CDR ;
886
                       UNPAIR ;
887
                       UNPAIR ;
888
                       SWAP ;
889
                       UNPAIR ;
890
                       SWAP ;
891
                       CDR ;
892
                       DIG 4 ;
893
                       PAIR ;
894
                       SWAP ;
895
                       PAIR ;
896
                       SWAP ;
897
                       PAIR ;
898
                       PAIR ;
899
                       NIL operation } }
900
                 { IF_LEFT
901
                     { AMOUNT ;
902
                       PUSH mutez 0 ;
903
                       COMPARE ;
904
                       EQ ;
905
                       IF {} { AMOUNT ; FAILWITH } ;
906
                       DUP 2 ;
907
                       CAR ;
908
                       GET 6 ;
909
                       SENDER ;
910
                       COMPARE ;
911
                       EQ ;
912
                       IF {} { PUSH int 504 ; FAILWITH } ;
913
                       DUP ;
914
                       IF_CONS
915
                         { SWAP ;
916
                           DROP ;
917
                           SWAP ;
918
                           DROP ;
919
                           DIG 2 ;
920
                           DROP ;
921
                           DIG 2 ;
922
                           DROP ;
923
                           DIG 2 ;
924
                           DROP ;
925
                           DIG 2 ;
926
                           DROP ;
927
                           DIG 2 ;
928
                           DROP ;
929
                           SELF_ADDRESS ;
930
                           DUP 2 ;
931
                           CAR ;
932
                           CAR ;
933
                           COMPARE ;
934
                           EQ ;
935
                           IF {} { PUSH int 503 ; FAILWITH } ;
936
                           SWAP ;
937
                           UNPAIR ;
938
                           UNPAIR ;
939
                           UNPAIR ;
940
                           SWAP ;
941
                           CDR ;
942
                           DIG 4 ;
943
                           CDR ;
944
                           PAIR ;
945
                           SWAP ;
946
                           PAIR ;
947
                           PAIR ;
948
                           PAIR }
949
                         { DROP ; SWAP ; DROP ; SWAP ; DROP ; SWAP ; DROP ; SWAP ; DROP ; SWAP ; DROP } ;
950
                       NIL operation }
951
                     { DROP ;
952
                       SWAP ;
953
                       DROP ;
954
                       SWAP ;
955
                       DROP ;
956
                       SWAP ;
957
                       DROP ;
958
                       SWAP ;
959
                       DROP ;
960
                       AMOUNT ;
961
                       PUSH mutez 0 ;
962
                       COMPARE ;
963
                       EQ ;
964
                       IF {} { AMOUNT ; FAILWITH } ;
965
                       UNPAIR ;
966
                       SWAP ;
967
                       UNPAIR ;
968
                       UNPAIR ;
969
                       SWAP ;
970
                       CDR ;
971
                       SENDER ;
972
                       PAIR ;
973
                       SWAP ;
974
                       PAIR ;
975
                       PAIR ;
976
                       SWAP ;
977
                       PAIR ;
978
                       NIL operation ;
979
                       DIG 2 ;
980
                       UNIT ;
981
                       SWAP ;
982
                       DUG 3 ;
983
                       PAIR 3 ;
984
                       EXEC ;
985
                       CDR ;
986
                       UNPAIR ;
987
                       SELF %internal_withdraw ;
988
                       PUSH mutez 0 ;
989
                       UNIT ;
990
                       TRANSFER_TOKENS ;
991
                       CONS } } } } ;
992
       NIL operation ;
993
       SWAP ;
994
       ITER { CONS } ;
995
       PAIR }