BCD

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