BCD

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