BCD

Tezos Contract Explorer
Search Networks Deploy
  • Home
  • /
  • Mainnet
  • /
  • KT1Bt9T...nBWg
Delegatable
operations (16)Storage Code Interact Tokens Fork Statistics Details
Latest
​x
696
1100
 
1
parameter (or (unit %request_balance)
2
              (or (nat %set_fa1_balance)
3
                  (or (list %set_fa2_balance (pair (pair address nat) nat))
4
                      (or (option %set_pool_delegate key_hash)
5
                          (or
6
                            (or %set_flat_curve_exponent (unit %exponent8)
7
                                                         (or (unit %exponent6)
8
                                                             (unit %exponent4)))
9
                            (or (address %set_target_oracle)
10
                                (or
11
                                  (pair %set_swap_fee_ratio (nat %numerator)
12
                                                            (nat %denominator))
13
                                  (or (address %remove_admin)
14
                                      (or (unit %accept_admin_proposal)
15
                                          (or (address %propose_admin)
16
                                              (or (address %set_baking_rewards_receiver)
17
                                                  (or
18
                                                    (pair %set_rewards_receiver_ratio
19
                                                      (nat %numerator)
20
                                                      (nat %denominator))
21
                                                    (or (address %set_rewards_receiver)
22
                                                        (or (address %set_lqt_address)
23
                                                            (or
24
                                                              (pair %token_swap_internal
25
                                                                (pair
26
                                                                  (or %src_token
27
                                                                    (pair %fa2 address
28
                                                                               nat)
29
                                                                    (or (address %fa1)
30
                                                                        (unit %tez)))
31
                                                                  (or %dst_token
32
                                                                    (pair %fa2 address
33
                                                                               nat)
34
                                                                    (or (address %fa1)
35
                                                                        (unit %tez)))
36
                                                                  (nat %amount_sold)
37
                                                                  (nat %min_amount_bought)
38
                                                                  (address %receiver)
39
                                                                  (timestamp %deadline))
40
                                                                address)
41
                                                              (or
42
                                                                (pair %token_swap
43
                                                                  (or %src_token
44
                                                                    (pair %fa2 address
45
                                                                               nat)
46
                                                                    (or (address %fa1)
47
                                                                        (unit %tez)))
48
                                                                  (or %dst_token
49
                                                                    (pair %fa2 address
50
                                                                               nat)
51
                                                                    (or (address %fa1)
52
                                                                        (unit %tez)))
53
                                                                  (nat %amount_sold)
54
                                                                  (nat %min_amount_bought)
55
                                                                  (address %receiver)
56
                                                                  (timestamp %deadline))
57
                                                                (or
58
                                                                  (pair %remove_liquidity_internal
59
                                                                    (pair
60
                                                                      (address %receiver)
61
                                                                      (nat %lqt_burned)
62
                                                                      (map %min_tokens_withdrawn
63
                                                                        (or
64
                                                                          (pair %fa2
65
                                                                            address
66
                                                                            nat)
67
                                                                          (or
68
                                                                            (address %fa1)
69
                                                                            (unit %tez)))
70
                                                                        nat)
71
                                                                      (timestamp %deadline))
72
                                                                    address)
73
                                                                  (or
74
                                                                    (pair %remove_liquidity
75
                                                                      (address %receiver)
76
                                                                      (nat %lqt_burned)
77
                                                                      (map %min_tokens_withdrawn
78
                                                                        (or
79
                                                                          (pair %fa2
80
                                                                            address
81
                                                                            nat)
82
                                                                          (or
83
                                                                            (address %fa1)
84
                                                                            (unit %tez)))
85
                                                                        nat)
86
                                                                      (timestamp %deadline))
87
                                                                    (or
88
                                                                      (pair %add_liquidity_internal
89
                                                                        (pair
90
                                                                          (address %owner)
91
                                                                          (nat %min_lqt_minted)
92
                                                                          (or %src_token
93
                                                                            (pair %fa2
94
                                                                              address
95
                                                                              nat)
96
                                                                            (or
97
                                                                              (address %fa1)
98
                                                                              (unit %tez)))
99
                                                                          (nat %src_token_amount)
100
                                                                          (map %remaining_tokens_max_deposited
101
                                                                            (or
102
                                                                              (pair %fa2
103
                                                                                address
104
                                                                                nat)
105
                                                                              (or
106
                                                                                (address %fa1)
107
                                                                                (unit %tez)))
108
                                                                            nat)
109
                                                                          (timestamp %deadline))
110
                                                                        address)
111
                                                                      (or
112
                                                                        (pair %add_liquidity
113
                                                                          (address %owner)
114
                                                                          (nat %min_lqt_minted)
115
                                                                          (or %src_token
116
                                                                            (pair %fa2
117
                                                                              address
118
                                                                              nat)
119
                                                                            (or
120
                                                                              (address %fa1)
121
                                                                              (unit %tez)))
122
                                                                          (nat %src_token_amount)
123
                                                                          (map %remaining_tokens_max_deposited
124
                                                                            (or
125
                                                                              (pair %fa2
126
                                                                                address
127
                                                                                nat)
128
                                                                              (or
129
                                                                                (address %fa1)
130
                                                                                (unit %tez)))
131
                                                                            nat)
132
                                                                          (timestamp %deadline))
133
                                                                        (unit %default)))))))))))))))))))));
134
storage (pair (big_map %administrators address (or (unit %proposed) (unit %set)))
135
              (nat %lqt_total)
136
              (address %lqt_address)
137
              (pair %swap_fee_ratio (nat %numerator) (nat %denominator))
138
              (address %rewards_receiver)
139
              (pair %rewards_receiver_ratio (nat %numerator) (nat %denominator))
140
              (address %baking_rewards_receiver)
141
              (map %tokens_info
142
                (or (pair %fa2 address nat) (or (address %fa1) (unit %tez)))
143
                (pair (nat %funds) (nat %multiplier)))
144
              (address %target_oracle)
145
              (or %curve_exponent (unit %exponent8)
146
                                  (or (unit %exponent6) (unit %exponent4))));
147
code { LAMBDA
148
         (pair (or (pair address nat) (or address unit)) address address nat
149
               (or unit unit))
150
         (option operation)
151
         { UNPAIR 5 ;
152
           IF_LEFT
153
             { DIG 4 ;
154
               DROP ;
155
               UNPAIR ;
156
               CONTRACT %transfer (list (pair address (list (pair address nat nat)))) ;
157
               IF_NONE { PUSH nat 2 ; FAILWITH } {} ;
158
               PUSH mutez 0 ;
159
               NIL (pair address (list (pair address nat nat))) ;
160
               NIL (pair address nat nat) ;
161
               DIG 7 ;
162
               DIG 5 ;
163
               PAIR ;
164
               DIG 6 ;
165
               PAIR ;
166
               CONS ;
167
               DIG 4 ;
168
               PAIR ;
169
               CONS ;
170
               TRANSFER_TOKENS ;
171
               SOME }
172
             { IF_LEFT
173
                 { DIG 4 ;
174
                   DROP ;
175
                   CONTRACT %transfer (pair address address nat) ;
176
                   IF_NONE { PUSH nat 2 ; FAILWITH } {} ;
177
                   PUSH mutez 0 ;
178
                   DIG 4 ;
179
                   DIG 4 ;
180
                   PAIR ;
181
                   DIG 3 ;
182
                   PAIR ;
183
                   TRANSFER_TOKENS ;
184
                   SOME }
185
                 { DROP 2 ;
186
                   DIG 2 ;
187
                   IF_LEFT
188
                     { DROP ;
189
                       CONTRACT unit ;
190
                       IF_NONE { PUSH nat 2 ; FAILWITH } {} ;
191
                       PUSH mutez 1 ;
192
                       DIG 2 ;
193
                       MUL ;
194
                       UNIT ;
195
                       TRANSFER_TOKENS ;
196
                       SOME }
197
                     { DROP 3 ; NONE operation } } } } ;
198
       LAMBDA
199
         (pair nat nat)
200
         (pair nat nat)
201
         { UNPAIR ;
202
           DUP 2 ;
203
           DUP 2 ;
204
           ADD ;
205
           DUG 2 ;
206
           SUB ;
207
           DUP 2 ;
208
           DUP 3 ;
209
           MUL ;
210
           DUP ;
211
           MUL ;
212
           DUP ;
213
           MUL ;
214
           DIG 2 ;
215
           DUP 2 ;
216
           EDIV ;
217
           IF_NONE { PUSH string "DIV by 0" ; FAILWITH } {} ;
218
           CAR ;
219
           DUP 3 ;
220
           DUP 4 ;
221
           MUL ;
222
           DUP ;
223
           MUL ;
224
           DUP ;
225
           MUL ;
226
           PUSH int 0 ;
227
           DUP 5 ;
228
           COMPARE ;
229
           EQ ;
230
           IF
231
             { DIG 3 ; DROP ; PUSH int 0 }
232
             { DIG 3 ; DUP 2 ; EDIV ; IF_NONE { PUSH string "DIV by 0" ; FAILWITH } {} ; CAR } ;
233
           SWAP ;
234
           DIG 3 ;
235
           SUB ;
236
           ISNAT ;
237
           IF_NONE { PUSH nat 13 ; FAILWITH } {} ;
238
           DUG 2 ;
239
           ADD ;
240
           ISNAT ;
241
           IF_NONE { PUSH nat 13 ; FAILWITH } {} ;
242
           PUSH nat 8 ;
243
           MUL ;
244
           SWAP ;
245
           PAIR } ;
246
       LAMBDA
247
         (pair nat nat)
248
         (pair nat nat)
249
         { UNPAIR ;
250
           DUP 2 ;
251
           DUP 2 ;
252
           ADD ;
253
           DUG 2 ;
254
           SUB ;
255
           DUP 2 ;
256
           DUP 3 ;
257
           MUL ;
258
           DUP ;
259
           DUP 2 ;
260
           DIG 2 ;
261
           MUL ;
262
           MUL ;
263
           DIG 2 ;
264
           DUP 2 ;
265
           EDIV ;
266
           IF_NONE { PUSH string "DIV by 0" ; FAILWITH } {} ;
267
           CAR ;
268
           DUP 3 ;
269
           DUP 4 ;
270
           MUL ;
271
           DUP ;
272
           DUP 2 ;
273
           DIG 2 ;
274
           MUL ;
275
           MUL ;
276
           PUSH int 0 ;
277
           DUP 5 ;
278
           COMPARE ;
279
           EQ ;
280
           IF
281
             { DIG 3 ; DROP ; PUSH int 0 }
282
             { DIG 3 ; DUP 2 ; EDIV ; IF_NONE { PUSH string "DIV by 0" ; FAILWITH } {} ; CAR } ;
283
           SWAP ;
284
           DIG 3 ;
285
           SUB ;
286
           ISNAT ;
287
           IF_NONE { PUSH nat 13 ; FAILWITH } {} ;
288
           DUG 2 ;
289
           ADD ;
290
           ISNAT ;
291
           IF_NONE { PUSH nat 13 ; FAILWITH } {} ;
292
           PUSH nat 6 ;
293
           MUL ;
294
           SWAP ;
295
           PAIR } ;
296
       LAMBDA
297
         (pair nat nat)
298
         (pair nat nat)
299
         { UNPAIR ;
300
           DUP 2 ;
301
           DUP 2 ;
302
           ADD ;
303
           DUG 2 ;
304
           SUB ;
305
           DUP 2 ;
306
           DUP 3 ;
307
           MUL ;
308
           DUP ;
309
           DUP 2 ;
310
           MUL ;
311
           DIG 3 ;
312
           DIG 2 ;
313
           MUL ;
314
           DUP 3 ;
315
           DUP 4 ;
316
           MUL ;
317
           DUP ;
318
           DUP 2 ;
319
           MUL ;
320
           DIG 4 ;
321
           DIG 2 ;
322
           MUL ;
323
           SWAP ;
324
           DIG 3 ;
325
           SUB ;
326
           ISNAT ;
327
           IF_NONE { PUSH nat 13 ; FAILWITH } {} ;
328
           DUG 2 ;
329
           ADD ;
330
           ISNAT ;
331
           IF_NONE { PUSH nat 13 ; FAILWITH } {} ;
332
           PUSH nat 4 ;
333
           MUL ;
334
           SWAP ;
335
           PAIR } ;
336
       DIG 4 ;
337
       UNPAIR ;
338
       IF_LEFT
339
         { DIG 2 ;
340
           DIG 3 ;
341
           DIG 4 ;
342
           DIG 5 ;
343
           DROP 5 ;
344
           SELF_ADDRESS ;
345
           SENDER ;
346
           COMPARE ;
347
           NEQ ;
348
           SOURCE ;
349
           SENDER ;
350
           COMPARE ;
351
           NEQ ;
352
           AND ;
353
           IF
354
             { DROP ; PUSH nat 25 ; FAILWITH }
355
             { PUSH mutez 0 ;
356
               AMOUNT ;
357
               COMPARE ;
358
               GT ;
359
               IF
360
                 { DROP ; PUSH nat 24 ; FAILWITH }
361
                 { NIL operation ;
362
                   DUP 2 ;
363
                   GET 15 ;
364
                   ITER { CAR ;
365
                          IF_LEFT
366
                            { UNPAIR ;
367
                              SELF %set_fa2_balance ;
368
                              SWAP ;
369
                              CONTRACT %balance_of (pair (list (pair address nat))
370
                                                         (contract (list (pair
371
                                                                         (pair address
372
                                                                               nat)
373
                                                                         nat)))) ;
374
                              IF_NONE { PUSH nat 27 ; FAILWITH } {} ;
375
                              SWAP ;
376
                              NIL (pair address nat) ;
377
                              DIG 3 ;
378
                              SELF_ADDRESS ;
379
                              PAIR ;
380
                              CONS ;
381
                              PAIR ;
382
                              SWAP ;
383
                              PUSH mutez 0 ;
384
                              DIG 2 ;
385
                              TRANSFER_TOKENS ;
386
                              CONS }
387
                            { IF_LEFT
388
                                { SELF %set_fa1_balance ;
389
                                  SWAP ;
390
                                  CONTRACT %getBalance (pair address (contract nat)) ;
391
                                  IF_NONE { PUSH nat 26 ; FAILWITH } {} ;
392
                                  SWAP ;
393
                                  SELF_ADDRESS ;
394
                                  PAIR ;
395
                                  SWAP ;
396
                                  PUSH mutez 0 ;
397
                                  DIG 2 ;
398
                                  TRANSFER_TOKENS ;
399
                                  CONS }
400
                                { DROP } } } ;
401
                   PAIR } } }
402
         { IF_LEFT
403
             { DIG 2 ;
404
               DIG 3 ;
405
               DIG 4 ;
406
               DIG 5 ;
407
               DROP 4 ;
408
               SENDER ;
409
               LEFT unit ;
410
               RIGHT (pair address nat) ;
411
               DUP 3 ;
412
               GET 15 ;
413
               DUP 2 ;
414
               GET ;
415
               IF_NONE
416
                 { DROP 3 ; PUSH nat 30 ; FAILWITH }
417
                 { DUP 4 ;
418
                   DIG 4 ;
419
                   GET 15 ;
420
                   DIG 2 ;
421
                   DIG 4 ;
422
                   UPDATE 1 ;
423
                   SOME ;
424
                   DIG 3 ;
425
                   UPDATE ;
426
                   UPDATE 15 ;
427
                   NIL operation ;
428
                   PAIR } }
429
             { IF_LEFT
430
                 { DIG 2 ;
431
                   DIG 3 ;
432
                   DIG 4 ;
433
                   DIG 5 ;
434
                   DROP 4 ;
435
                   IF_CONS
436
                     { SWAP ; DROP ; DUP ; CDR ; DUP 2 ; CAR ; CDR ; DIG 2 ; CAR ; CAR ; PAIR 3 }
437
                     { PUSH nat 28 ; FAILWITH } ;
438
                   UNPAIR 3 ;
439
                   SELF_ADDRESS ;
440
                   SWAP ;
441
                   COMPARE ;
442
                   NEQ ;
443
                   IF
444
                     { DROP 3 ; PUSH nat 29 ; FAILWITH }
445
                     { SENDER ;
446
                       PAIR ;
447
                       LEFT (or address unit) ;
448
                       DUP 3 ;
449
                       GET 15 ;
450
                       DUP 2 ;
451
                       GET ;
452
                       IF_NONE
453
                         { DROP 3 ; PUSH nat 30 ; FAILWITH }
454
                         { DUP 4 ;
455
                           DIG 4 ;
456
                           GET 15 ;
457
                           DIG 2 ;
458
                           DIG 4 ;
459
                           UPDATE 1 ;
460
                           SOME ;
461
                           DIG 3 ;
462
                           UPDATE ;
463
                           UPDATE 15 ;
464
                           NIL operation ;
465
                           PAIR } } }
466
                 { IF_LEFT
467
                     { DIG 2 ;
468
                       DIG 3 ;
469
                       DIG 4 ;
470
                       DIG 5 ;
471
                       DROP 4 ;
472
                       DUP 2 ;
473
                       CAR ;
474
                       SENDER ;
475
                       GET ;
476
                       IF_NONE
477
                         { DROP 2 ; PUSH nat 12 ; FAILWITH }
478
                         { IF_LEFT
479
                             { DROP 3 ; PUSH nat 12 ; FAILWITH }
480
                             { DROP ; SWAP ; NIL operation ; DIG 2 ; SET_DELEGATE ; CONS ; PAIR } } }
481
                     { IF_LEFT
482
                         { DIG 2 ;
483
                           DIG 3 ;
484
                           DIG 4 ;
485
                           DIG 5 ;
486
                           DROP 4 ;
487
                           DUP 2 ;
488
                           CAR ;
489
                           SENDER ;
490
                           GET ;
491
                           IF_NONE
492
                             { DROP 2 ; PUSH nat 12 ; FAILWITH }
493
                             { IF_LEFT
494
                                 { DROP 3 ; PUSH nat 12 ; FAILWITH }
495
                                 { DROP ; UPDATE 18 ; NIL operation ; PAIR } } }
496
                         { IF_LEFT
497
                             { DIG 2 ;
498
                               DIG 3 ;
499
                               DIG 4 ;
500
                               DIG 5 ;
501
                               DROP 4 ;
502
                               DUP 2 ;
503
                               CAR ;
504
                               SENDER ;
505
                               GET ;
506
                               IF_NONE
507
                                 { DROP 2 ; PUSH nat 12 ; FAILWITH }
508
                                 { IF_LEFT
509
                                     { DROP 3 ; PUSH nat 12 ; FAILWITH }
510
                                     { DROP ; UPDATE 17 ; NIL operation ; PAIR } } }
511
                             { IF_LEFT
512
                                 { DIG 2 ;
513
                                   DIG 3 ;
514
                                   DIG 4 ;
515
                                   DIG 5 ;
516
                                   DROP 4 ;
517
                                   DUP 2 ;
518
                                   CAR ;
519
                                   SENDER ;
520
                                   GET ;
521
                                   IF_NONE
522
                                     { DROP 2 ; PUSH nat 12 ; FAILWITH }
523
                                     { IF_LEFT
524
                                         { DROP 3 ; PUSH nat 12 ; FAILWITH }
525
                                         { DROP ; UPDATE 7 ; NIL operation ; PAIR } } }
526
                                 { IF_LEFT
527
                                     { DIG 2 ;
528
                                       DIG 3 ;
529
                                       DIG 4 ;
530
                                       DIG 5 ;
531
                                       DROP 4 ;
532
                                       DUP 2 ;
533
                                       CAR ;
534
                                       SENDER ;
535
                                       GET ;
536
                                       IF_NONE
537
                                         { DROP 2 ; PUSH nat 12 ; FAILWITH }
538
                                         { IF_LEFT
539
                                             { DROP 3 ; PUSH nat 12 ; FAILWITH }
540
                                             { DROP ;
541
                                               DUP 2 ;
542
                                               DIG 2 ;
543
                                               CAR ;
544
                                               NONE (or unit unit) ;
545
                                               DIG 3 ;
546
                                               UPDATE ;
547
                                               UPDATE 1 ;
548
                                               NIL operation ;
549
                                               PAIR } } }
550
                                     { IF_LEFT
551
                                         { DIG 2 ;
552
                                           DIG 3 ;
553
                                           DIG 4 ;
554
                                           DIG 5 ;
555
                                           DROP 5 ;
556
                                           DUP ;
557
                                           CAR ;
558
                                           SENDER ;
559
                                           GET ;
560
                                           IF_NONE
561
                                             { DROP ; PUSH nat 16 ; FAILWITH }
562
                                             { IF_LEFT
563
                                                 { DROP ;
564
                                                   DUP ;
565
                                                   CAR ;
566
                                                   UNIT ;
567
                                                   RIGHT unit ;
568
                                                   SOME ;
569
                                                   SENDER ;
570
                                                   UPDATE ;
571
                                                   UPDATE 1 ;
572
                                                   NIL operation ;
573
                                                   PAIR }
574
                                                 { DROP 2 ; PUSH nat 17 ; FAILWITH } } }
575
                                         { IF_LEFT
576
                                             { DIG 2 ;
577
                                               DIG 3 ;
578
                                               DIG 4 ;
579
                                               DIG 5 ;
580
                                               DROP 4 ;
581
                                               DUP 2 ;
582
                                               CAR ;
583
                                               SENDER ;
584
                                               GET ;
585
                                               IF_NONE
586
                                                 { DROP 2 ; PUSH nat 12 ; FAILWITH }
587
                                                 { IF_LEFT
588
                                                     { DROP 3 ; PUSH nat 12 ; FAILWITH }
589
                                                     { DROP ;
590
                                                       DUP 2 ;
591
                                                       DIG 2 ;
592
                                                       CAR ;
593
                                                       UNIT ;
594
                                                       LEFT unit ;
595
                                                       SOME ;
596
                                                       DIG 3 ;
597
                                                       UPDATE ;
598
                                                       UPDATE 1 ;
599
                                                       NIL operation ;
600
                                                       PAIR } } }
601
                                             { IF_LEFT
602
                                                 { DIG 2 ;
603
                                                   DIG 3 ;
604
                                                   DIG 4 ;
605
                                                   DIG 5 ;
606
                                                   DROP 4 ;
607
                                                   DUP 2 ;
608
                                                   CAR ;
609
                                                   SENDER ;
610
                                                   GET ;
611
                                                   IF_NONE
612
                                                     { DROP 2 ; PUSH nat 12 ; FAILWITH }
613
                                                     { IF_LEFT
614
                                                         { DROP 3 ; PUSH nat 12 ; FAILWITH }
615
                                                         { DROP ;
616
                                                           UPDATE 13 ;
617
                                                           NIL operation ;
618
                                                           PAIR } } }
619
                                                 { IF_LEFT
620
                                                     { DIG 2 ;
621
                                                       DIG 3 ;
622
                                                       DIG 4 ;
623
                                                       DIG 5 ;
624
                                                       DROP 4 ;
625
                                                       DUP 2 ;
626
                                                       CAR ;
627
                                                       SENDER ;
628
                                                       GET ;
629
                                                       IF_NONE
630
                                                         { DROP 2 ; PUSH nat 12 ; FAILWITH }
631
                                                         { IF_LEFT
632
                                                             { DROP 3 ;
633
                                                               PUSH nat 12 ;
634
                                                               FAILWITH }
635
                                                             { DROP ;
636
                                                               UPDATE 11 ;
637
                                                               NIL operation ;
638
                                                               PAIR } } }
639
                                                     { IF_LEFT
640
                                                         { DIG 2 ;
641
                                                           DIG 3 ;
642
                                                           DIG 4 ;
643
                                                           DIG 5 ;
644
                                                           DROP 4 ;
645
                                                           DUP 2 ;
646
                                                           CAR ;
647
                                                           SENDER ;
648
                                                           GET ;
649
                                                           IF_NONE
650
                                                             { DROP 2 ;
651
                                                               PUSH nat 12 ;
652
                                                               FAILWITH }
653
                                                             { IF_LEFT
654
                                                                 { DROP 3 ;
655
                                                                   PUSH nat 12 ;
656
                                                                   FAILWITH }
657
                                                                 { DROP ;
658
                                                                   UPDATE 9 ;
659
                                                                   NIL operation ;
660
                                                                   PAIR } } }
661
                                                         { IF_LEFT
662
                                                             { DIG 2 ;
663
                                                               DIG 3 ;
664
                                                               DIG 4 ;
665
                                                               DIG 5 ;
666
                                                               DROP 4 ;
667
                                                               PUSH address "tz1Ke2h7sDdakHJQh8WX4Z372du1KChsksyU" ;
668
                                                               DUP 3 ;
669
                                                               GET 5 ;
670
                                                               COMPARE ;
671
                                                               NEQ ;
672
                                                               IF
673
                                                                 { DROP 2 ;
674
                                                                   PUSH nat 18 ;
675
                                                                   FAILWITH }
676
                                                                 { UPDATE 5 ;
677
                                                                   NIL operation ;
678
                                                                   PAIR } }
679
                                                             { IF_LEFT
680
                                                                 { UNPAIR ;
681
                                                                   UNPAIR 6 ;
682
                                                                   DIG 5 ;
683
                                                                   DROP ;
684
                                                                   SELF_ADDRESS ;
685
                                                                   SENDER ;
686
                                                                   COMPARE ;
687
                                                                   NEQ ;
688
                                                                   IF
689
                                                                     { DROP 11 ;
690
                                                                       PUSH nat 31 ;
691
                                                                       FAILWITH }
692
                                                                     { DUP 7 ;
693
                                                                       GET 15 ;
694
                                                                       DUP 2 ;
695
                                                                       GET ;
696
                                                                       IF_NONE
697
                                                                         { PUSH nat 21 ;
698
                                                                           FAILWITH }
699
                                                                         {} ;
700
                                                                       DUP 8 ;
701
                                                                       GET 15 ;
702
                                                                       DUP 4 ;
703
                                                                       GET ;
704
                                                                       IF_NONE
705
                                                                         { PUSH nat 21 ;
706
                                                                           FAILWITH }
707
                                                                         {} ;
708
                                                                       DUP 9 ;
709
                                                                       GET 17 ;
710
                                                                       DUP 5 ;
711
                                                                       DUP 5 ;
712
                                                                       PAIR ;
713
                                                                       VIEW
714
                                                                         "get_token_price"
715
                                                                         (pair nat nat) ;
716
                                                                       IF_NONE
717
                                                                         { PUSH nat 22 ;
718
                                                                           FAILWITH }
719
                                                                         {} ;
720
                                                                       UNPAIR ;
721
                                                                       DUP 4 ;
722
                                                                       CDR ;
723
                                                                       MUL ;
724
                                                                       SWAP ;
725
                                                                       DUP 3 ;
726
                                                                       CDR ;
727
                                                                       MUL ;
728
                                                                       DUP 11 ;
729
                                                                       GET 18 ;
730
                                                                       DUP 3 ;
731
                                                                       DUP 6 ;
732
                                                                       CAR ;
733
                                                                       MUL ;
734
                                                                       DUP 3 ;
735
                                                                       DUP 6 ;
736
                                                                       CAR ;
737
                                                                       MUL ;
738
                                                                       DUP 3 ;
739
                                                                       IF_LEFT
740
                                                                         { DROP ;
741
                                                                           DUP ;
742
                                                                           DUP 3 ;
743
                                                                           PAIR ;
744
                                                                           DUP 18 ;
745
                                                                           SWAP ;
746
                                                                           EXEC }
747
                                                                         { IF_LEFT
748
                                                                             { DROP ;
749
                                                                               DUP ;
750
                                                                               DUP 3 ;
751
                                                                               PAIR ;
752
                                                                               DUP 17 ;
753
                                                                               SWAP ;
754
                                                                               EXEC }
755
                                                                             { DROP ;
756
                                                                               DUP ;
757
                                                                               DUP 3 ;
758
                                                                               PAIR ;
759
                                                                               DUP 16 ;
760
                                                                               SWAP ;
761
                                                                               EXEC } } ;
762
                                                                       CAR ;
763
                                                                       DIG 4 ;
764
                                                                       DIG 4 ;
765
                                                                       PUSH int 5 ;
766
                                                                       DIG 3 ;
767
                                                                       PUSH nat 0 ;
768
                                                                       DIG 7 ;
769
                                                                       DUP 13 ;
770
                                                                       MUL ;
771
                                                                       DIG 6 ;
772
                                                                       DIG 7 ;
773
                                                                       PAIR 7 ;
774
                                                                       LEFT nat ;
775
                                                                       LOOP_LEFT { PUSH int 0 ;
776
                                                                                   DUP 2 ;
777
                                                                                   GET 11 ;
778
                                                                                   COMPARE ;
779
                                                                                   EQ ;
780
                                                                                   IF
781
                                                                                     { GET 7 ;
782
                                                                                       RIGHT (pair
783
                                                                                               nat
784
                                                                                               nat
785
                                                                                               nat
786
                                                                                               nat
787
                                                                                               nat
788
                                                                                               int
789
                                                                                               (or
790
                                                                                                 unit
791
                                                                                                 (or
792
                                                                                                   unit
793
                                                                                                   unit))) }
794
                                                                                     { DUP ;
795
                                                                                       GET 7 ;
796
                                                                                       DUP 2 ;
797
                                                                                       GET 3 ;
798
                                                                                       SUB ;
799
                                                                                       ISNAT ;
800
                                                                                       IF_NONE
801
                                                                                         { PUSH nat 13 ;
802
                                                                                           FAILWITH }
803
                                                                                         {} ;
804
                                                                                       DUP 2 ;
805
                                                                                       GET 12 ;
806
                                                                                       IF_LEFT
807
                                                                                         { DROP ;
808
                                                                                           DUP 2 ;
809
                                                                                           GET 5 ;
810
                                                                                           DUP 3 ;
811
                                                                                           CAR ;
812
                                                                                           ADD ;
813
                                                                                           PAIR ;
814
                                                                                           DUP 15 ;
815
                                                                                           SWAP ;
816
                                                                                           EXEC }
817
                                                                                         { IF_LEFT
818
                                                                                             { DROP ;
819
                                                                                               DUP 2 ;
820
                                                                                               GET 5 ;
821
                                                                                               DUP 3 ;
822
                                                                                               CAR ;
823
                                                                                               ADD ;
824
                                                                                               PAIR ;
825
                                                                                               DUP 14 ;
826
                                                                                               SWAP ;
827
                                                                                               EXEC }
828
                                                                                             { DROP ;
829
                                                                                               DUP 2 ;
830
                                                                                               GET 5 ;
831
                                                                                               DUP 3 ;
832
                                                                                               CAR ;
833
                                                                                               ADD ;
834
                                                                                               PAIR ;
835
                                                                                               DUP 13 ;
836
                                                                                               SWAP ;
837
                                                                                               EXEC } } ;
838
                                                                                       UNPAIR ;
839
                                                                                       DUP 3 ;
840
                                                                                       GET 9 ;
841
                                                                                       SWAP ;
842
                                                                                       SUB ;
843
                                                                                       ISNAT ;
844
                                                                                       IF_NONE
845
                                                                                         { DROP ;
846
                                                                                           PUSH nat 13 ;
847
                                                                                           FAILWITH }
848
                                                                                         { EDIV ;
849
                                                                                           IF_NONE
850
                                                                                             { PUSH string "DIV by 0" ;
851
                                                                                               FAILWITH }
852
                                                                                             {} ;
853
                                                                                           CAR ;
854
                                                                                           DUP 2 ;
855
                                                                                           GET 7 ;
856
                                                                                           ADD } ;
857
                                                                                       DUP 2 ;
858
                                                                                       SWAP ;
859
                                                                                       UPDATE 7 ;
860
                                                                                       PUSH int 1 ;
861
                                                                                       DIG 2 ;
862
                                                                                       GET 11 ;
863
                                                                                       SUB ;
864
                                                                                       UPDATE 11 ;
865
                                                                                       LEFT nat } } ;
866
                                                                       DIG 11 ;
867
                                                                       DIG 12 ;
868
                                                                       DIG 13 ;
869
                                                                       DROP 3 ;
870
                                                                       EDIV ;
871
                                                                       IF_NONE
872
                                                                         { PUSH string "DIV by 0" ;
873
                                                                           FAILWITH }
874
                                                                         {} ;
875
                                                                       CAR ;
876
                                                                       DUP 10 ;
877
                                                                       GET 7 ;
878
                                                                       CDR ;
879
                                                                       DUP 2 ;
880
                                                                       DUP 12 ;
881
                                                                       GET 7 ;
882
                                                                       CAR ;
883
                                                                       MUL ;
884
                                                                       EDIV ;
885
                                                                       IF_NONE
886
                                                                         { PUSH string "DIV by 0" ;
887
                                                                           FAILWITH }
888
                                                                         {} ;
889
                                                                       CAR ;
890
                                                                       DUP ;
891
                                                                       DIG 2 ;
892
                                                                       SUB ;
893
                                                                       ISNAT ;
894
                                                                       IF_NONE
895
                                                                         { DIG 6 ;
896
                                                                           DROP ;
897
                                                                           PUSH nat 15 ;
898
                                                                           FAILWITH }
899
                                                                         { DIG 7 ;
900
                                                                           DUP 2 ;
901
                                                                           COMPARE ;
902
                                                                           LT ;
903
                                                                           IF
904
                                                                             { DROP ;
905
                                                                               PUSH nat 15 ;
906
                                                                               FAILWITH }
907
                                                                             {} } ;
908
                                                                       DUP 10 ;
909
                                                                       GET 11 ;
910
                                                                       CDR ;
911
                                                                       DIG 2 ;
912
                                                                       DUP 11 ;
913
                                                                       GET 11 ;
914
                                                                       CAR ;
915
                                                                       MUL ;
916
                                                                       EDIV ;
917
                                                                       IF_NONE
918
                                                                         { PUSH string "DIV by 0" ;
919
                                                                           FAILWITH }
920
                                                                         {} ;
921
                                                                       CAR ;
922
                                                                       DUP 7 ;
923
                                                                       INT ;
924
                                                                       DIG 4 ;
925
                                                                       SWAP ;
926
                                                                       DUP 2 ;
927
                                                                       CAR ;
928
                                                                       ADD ;
929
                                                                       ISNAT ;
930
                                                                       IF_NONE
931
                                                                         { PUSH nat 3 ;
932
                                                                           FAILWITH }
933
                                                                         {} ;
934
                                                                       UPDATE 1 ;
935
                                                                       DUP 2 ;
936
                                                                       DUP 4 ;
937
                                                                       ADD ;
938
                                                                       PUSH int 0 ;
939
                                                                       SUB ;
940
                                                                       DIG 4 ;
941
                                                                       SWAP ;
942
                                                                       DUP 2 ;
943
                                                                       CAR ;
944
                                                                       ADD ;
945
                                                                       ISNAT ;
946
                                                                       IF_NONE
947
                                                                         { PUSH nat 3 ;
948
                                                                           FAILWITH }
949
                                                                         {} ;
950
                                                                       UPDATE 1 ;
951
                                                                       DUP 10 ;
952
                                                                       DIG 10 ;
953
                                                                       GET 15 ;
954
                                                                       DIG 3 ;
955
                                                                       SOME ;
956
                                                                       DUP 7 ;
957
                                                                       UPDATE ;
958
                                                                       DIG 2 ;
959
                                                                       SOME ;
960
                                                                       DUP 7 ;
961
                                                                       UPDATE ;
962
                                                                       UPDATE 15 ;
963
                                                                       NIL operation ;
964
                                                                       UNIT ;
965
                                                                       RIGHT unit ;
966
                                                                       DIG 7 ;
967
                                                                       SELF_ADDRESS ;
968
                                                                       DIG 10 ;
969
                                                                       DIG 8 ;
970
                                                                       PAIR 5 ;
971
                                                                       DUP 8 ;
972
                                                                       SWAP ;
973
                                                                       EXEC ;
974
                                                                       IF_NONE
975
                                                                         {}
976
                                                                         { CONS } ;
977
                                                                       UNIT ;
978
                                                                       LEFT unit ;
979
                                                                       DIG 4 ;
980
                                                                       DIG 6 ;
981
                                                                       SELF_ADDRESS ;
982
                                                                       DUP 8 ;
983
                                                                       PAIR 5 ;
984
                                                                       DUP 6 ;
985
                                                                       SWAP ;
986
                                                                       EXEC ;
987
                                                                       IF_NONE
988
                                                                         {}
989
                                                                         { CONS } ;
990
                                                                       UNIT ;
991
                                                                       LEFT unit ;
992
                                                                       DIG 3 ;
993
                                                                       DUP 4 ;
994
                                                                       GET 9 ;
995
                                                                       SELF_ADDRESS ;
996
                                                                       DIG 6 ;
997
                                                                       PAIR 5 ;
998
                                                                       DIG 3 ;
999
                                                                       SWAP ;
1000
                                                                       EXEC ;
1001
                                                                       DIG 2 ;
1002
                                                                       SWAP ;
1003
                                                                       IF_NONE
1004
                                                                         { SWAP }
1005
                                                                         { DIG 2 ;
1006
                                                                           SWAP ;
1007
                                                                           CONS } ;
1008
                                                                       PAIR } }
1009
                                                                 { DIG 2 ;
1010
                                                                   DIG 3 ;
1011
                                                                   DIG 4 ;
1012
                                                                   DROP 3 ;
1013
                                                                   IF_LEFT
1014
                                                                     { DIG 2 ;
1015
                                                                       DROP ;
1016
                                                                       DUP ;
1017
                                                                       GET 10 ;
1018
                                                                       NOW ;
1019
                                                                       COMPARE ;
1020
                                                                       GE ;
1021
                                                                       IF
1022
                                                                         { DROP 2 ;
1023
                                                                           PUSH nat 5 ;
1024
                                                                           FAILWITH }
1025
                                                                         { PUSH bool True ;
1026
                                                                           PUSH bool True ;
1027
                                                                           EMPTY_MAP
1028
                                                                             (or
1029
                                                                               (pair
1030
                                                                                 address
1031
                                                                                 nat)
1032
                                                                               (or
1033
                                                                                 address
1034
                                                                                 unit))
1035
                                                                             nat ;
1036
                                                                           DUP 4 ;
1037
                                                                           GET 5 ;
1038
                                                                           SOME ;
1039
                                                                           DUP 5 ;
1040
                                                                           CAR ;
1041
                                                                           UPDATE ;
1042
                                                                           ITER { UNPAIR ;
1043
                                                                                  IF_LEFT
1044
                                                                                    { DROP 2 }
1045
                                                                                    { IF_LEFT
1046
                                                                                        { DROP 2 }
1047
                                                                                        { DROP ;
1048
                                                                                          AMOUNT ;
1049
                                                                                          PUSH mutez 1 ;
1050
                                                                                          SWAP ;
1051
                                                                                          EDIV ;
1052
                                                                                          IF_NONE
1053
                                                                                            { PUSH string "DIV by 0" ;
1054
                                                                                              FAILWITH }
1055
                                                                                            {} ;
1056
                                                                                          CAR ;
1057
                                                                                          COMPARE ;
1058
                                                                                          EQ ;
1059
                                                                                          AND } } } ;
1060
                                                                           COMPARE ;
1061
                                                                           NEQ ;
1062
                                                                           IF
1063
                                                                             { DROP 2 ;
1064
                                                                               PUSH nat 23 ;
1065
                                                                               FAILWITH }
1066
                                                                             { BALANCE ;
1067
                                                                               PUSH mutez 1 ;
1068
                                                                               SWAP ;
1069
                                                                               EDIV ;
1070
                                                                               IF_NONE
1071
                                                                                 { PUSH string "DIV by 0" ;
1072
                                                                                   FAILWITH }
1073
                                                                                 {} ;
1074
                                                                               CAR ;
1075
                                                                               AMOUNT ;
1076
                                                                               PUSH mutez 1 ;
1077
                                                                               SWAP ;
1078
                                                                               EDIV ;
1079
                                                                               IF_NONE
1080
                                                                                 { PUSH string "DIV by 0" ;
1081
                                                                                   FAILWITH }
1082
                                                                                 {} ;
1083
                                                                               CAR ;
1084
                                                                               SWAP ;
1085
                                                                               SUB ;
1086
                                                                               ISNAT ;
1087
                                                                               IF_NONE
1088
                                                                                 { PUSH nat 32 ;
1089
                                                                                   FAILWITH }
1090
                                                                                 {} ;
1091
                                                                               UNIT ;
1092
                                                                               RIGHT address ;
1093
                                                                               RIGHT (pair
1094
                                                                                       address
1095
                                                                                       nat) ;
1096
                                                                               SELF %request_balance ;
1097
                                                                               SELF %token_swap_internal ;
1098
                                                                               SWAP ;
1099
                                                                               PUSH mutez 0 ;
1100
                                                                               UNIT ;
1101
                                                                               TRANSFER_TOKENS ;
1102
                                                                               SENDER ;
1103
                                                                               DIG 5 ;
1104
                                                                               PAIR ;
1105
                                                                               DIG 2 ;
1106
                                                                               PUSH mutez 0 ;
1107
                                                                               DIG 2 ;
1108
                                                                               TRANSFER_TOKENS ;
1109
                                                                               DUP 5 ;
1110
                                                                               GET 15 ;
1111
                                                                               DUP 4 ;
1112
                                                                               GET ;
1113
                                                                               IF_NONE
1114
                                                                                 { DIG 2 ;
1115
                                                                                   DIG 3 ;
1116
                                                                                   DROP 2 ;
1117
                                                                                   DIG 2 }
1118
                                                                                 { DUP 6 ;
1119
                                                                                   DIG 6 ;
1120
                                                                                   GET 15 ;
1121
                                                                                   DIG 2 ;
1122
                                                                                   DIG 6 ;
1123
                                                                                   UPDATE 1 ;
1124
                                                                                   SOME ;
1125
                                                                                   DIG 5 ;
1126
                                                                                   UPDATE ;
1127
                                                                                   UPDATE 15 } ;
1128
                                                                               NIL operation ;
1129
                                                                               DIG 2 ;
1130
                                                                               CONS ;
1131
                                                                               DIG 2 ;
1132
                                                                               CONS ;
1133
                                                                               PAIR } } }
1134
                                                                     { IF_LEFT
1135
                                                                         { UNPAIR ;
1136
                                                                           UNPAIR 4 ;
1137
                                                                           DIG 3 ;
1138
                                                                           DROP ;
1139
                                                                           SELF_ADDRESS ;
1140
                                                                           SENDER ;
1141
                                                                           COMPARE ;
1142
                                                                           NEQ ;
1143
                                                                           IF
1144
                                                                             { DROP 6 ;
1145
                                                                               PUSH nat 31 ;
1146
                                                                               FAILWITH }
1147
                                                                             { DIG 2 ;
1148
                                                                               MAP { UNPAIR ;
1149
                                                                                     DUP 6 ;
1150
                                                                                     GET 15 ;
1151
                                                                                     SWAP ;
1152
                                                                                     GET ;
1153
                                                                                     IF_NONE
1154
                                                                                       { PUSH nat 21 ;
1155
                                                                                         FAILWITH }
1156
                                                                                       {} ;
1157
                                                                                     DUP 6 ;
1158
                                                                                     GET 3 ;
1159
                                                                                     SWAP ;
1160
                                                                                     CAR ;
1161
                                                                                     DUP 5 ;
1162
                                                                                     MUL ;
1163
                                                                                     EDIV ;
1164
                                                                                     IF_NONE
1165
                                                                                       { PUSH string "DIV by 0" ;
1166
                                                                                         FAILWITH }
1167
                                                                                       {} ;
1168
                                                                                     CAR ;
1169
                                                                                     PAIR } ;
1170
                                                                               PUSH bool True ;
1171
                                                                               DUP 2 ;
1172
                                                                               ITER { CDR ;
1173
                                                                                      UNPAIR ;
1174
                                                                                      COMPARE ;
1175
                                                                                      GE ;
1176
                                                                                      AND } ;
1177
                                                                               PUSH bool True ;
1178
                                                                               SWAP ;
1179
                                                                               COMPARE ;
1180
                                                                               NEQ ;
1181
                                                                               IF
1182
                                                                                 { DROP ;
1183
                                                                                   PUSH nat 10 ;
1184
                                                                                   FAILWITH }
1185
                                                                                 { MAP { CDR ;
1186
                                                                                         CAR } } ;
1187
                                                                               EMPTY_MAP
1188
                                                                                 (or
1189
                                                                                   (pair
1190
                                                                                     address
1191
                                                                                     nat)
1192
                                                                                   (or
1193
                                                                                     address
1194
                                                                                     unit))
1195
                                                                                 (pair
1196
                                                                                   nat
1197
                                                                                   nat) ;
1198
                                                                               DUP 2 ;
1199
                                                                               ITER { UNPAIR ;
1200
                                                                                      DUP 8 ;
1201
                                                                                      GET 15 ;
1202
                                                                                      DUP 2 ;
1203
                                                                                      GET ;
1204
                                                                                      IF_NONE
1205
                                                                                        { PUSH nat 21 ;
1206
                                                                                          FAILWITH }
1207
                                                                                        {} ;
1208
                                                                                      DIG 2 ;
1209
                                                                                      PUSH int 0 ;
1210
                                                                                      SUB ;
1211
                                                                                      DUP 2 ;
1212
                                                                                      CAR ;
1213
                                                                                      ADD ;
1214
                                                                                      ISNAT ;
1215
                                                                                      IF_NONE
1216
                                                                                        { PUSH nat 3 ;
1217
                                                                                          FAILWITH }
1218
                                                                                        {} ;
1219
                                                                                      UPDATE 1 ;
1220
                                                                                      DIG 2 ;
1221
                                                                                      SWAP ;
1222
                                                                                      SOME ;
1223
                                                                                      DIG 2 ;
1224
                                                                                      UPDATE } ;
1225
                                                                               DUP 4 ;
1226
                                                                               DUP 7 ;
1227
                                                                               GET 3 ;
1228
                                                                               SUB ;
1229
                                                                               ISNAT ;
1230
                                                                               IF_NONE
1231
                                                                                 { PUSH nat 11 ;
1232
                                                                                   FAILWITH }
1233
                                                                                 {} ;
1234
                                                                               DIG 6 ;
1235
                                                                               SWAP ;
1236
                                                                               UPDATE 3 ;
1237
                                                                               SWAP ;
1238
                                                                               UPDATE 15 ;
1239
                                                                               DIG 3 ;
1240
                                                                               PUSH int 0 ;
1241
                                                                               SUB ;
1242
                                                                               DIG 4 ;
1243
                                                                               DUP 3 ;
1244
                                                                               GET 5 ;
1245
                                                                               CONTRACT %mintOrBurn (pair
1246
                                                                                                      (int %quantity)
1247
                                                                                                      (address %target)) ;
1248
                                                                               IF_NONE
1249
                                                                                 { PUSH nat 1 ;
1250
                                                                                   FAILWITH }
1251
                                                                                 {} ;
1252
                                                                               PUSH mutez 0 ;
1253
                                                                               DIG 2 ;
1254
                                                                               DIG 3 ;
1255
                                                                               PAIR ;
1256
                                                                               TRANSFER_TOKENS ;
1257
                                                                               NIL operation ;
1258
                                                                               DIG 3 ;
1259
                                                                               ITER { UNPAIR ;
1260
                                                                                      UNIT ;
1261
                                                                                      LEFT unit ;
1262
                                                                                      DIG 2 ;
1263
                                                                                      DUP 7 ;
1264
                                                                                      SELF_ADDRESS ;
1265
                                                                                      DIG 4 ;
1266
                                                                                      PAIR 5 ;
1267
                                                                                      DUP 6 ;
1268
                                                                                      SWAP ;
1269
                                                                                      EXEC ;
1270
                                                                                      IF_NONE
1271
                                                                                        {}
1272
                                                                                        { CONS } } ;
1273
                                                                               DIG 3 ;
1274
                                                                               DIG 4 ;
1275
                                                                               DROP 2 ;
1276
                                                                               DIG 2 ;
1277
                                                                               SWAP ;
1278
                                                                               DIG 2 ;
1279
                                                                               CONS ;
1280
                                                                               PAIR } }
1281
                                                                         { IF_LEFT
1282
                                                                             { DIG 2 ;
1283
                                                                               DROP ;
1284
                                                                               DUP ;
1285
                                                                               GET 6 ;
1286
                                                                               NOW ;
1287
                                                                               COMPARE ;
1288
                                                                               GE ;
1289
                                                                               IF
1290
                                                                                 { DROP 2 ;
1291
                                                                                   PUSH nat 5 ;
1292
                                                                                   FAILWITH }
1293
                                                                                 { DUP 2 ;
1294
                                                                                   GET 15 ;
1295
                                                                                   SIZE ;
1296
                                                                                   DUP 2 ;
1297
                                                                                   GET 5 ;
1298
                                                                                   SIZE ;
1299
                                                                                   COMPARE ;
1300
                                                                                   NEQ ;
1301
                                                                                   IF
1302
                                                                                     { DROP 2 ;
1303
                                                                                       PUSH nat 6 ;
1304
                                                                                       FAILWITH }
1305
                                                                                     { BALANCE ;
1306
                                                                                       PUSH mutez 1 ;
1307
                                                                                       SWAP ;
1308
                                                                                       EDIV ;
1309
                                                                                       IF_NONE
1310
                                                                                         { PUSH string "DIV by 0" ;
1311
                                                                                           FAILWITH }
1312
                                                                                         {} ;
1313
                                                                                       CAR ;
1314
                                                                                       AMOUNT ;
1315
                                                                                       PUSH mutez 1 ;
1316
                                                                                       SWAP ;
1317
                                                                                       EDIV ;
1318
                                                                                       IF_NONE
1319
                                                                                         { PUSH string "DIV by 0" ;
1320
                                                                                           FAILWITH }
1321
                                                                                         {} ;
1322
                                                                                       CAR ;
1323
                                                                                       SWAP ;
1324
                                                                                       SUB ;
1325
                                                                                       ISNAT ;
1326
                                                                                       IF_NONE
1327
                                                                                         { PUSH nat 32 ;
1328
                                                                                           FAILWITH }
1329
                                                                                         {} ;
1330
                                                                                       UNIT ;
1331
                                                                                       RIGHT address ;
1332
                                                                                       RIGHT (pair
1333
                                                                                               address
1334
                                                                                               nat) ;
1335
                                                                                       SELF %request_balance ;
1336
                                                                                       SELF %remove_liquidity_internal ;
1337
                                                                                       SWAP ;
1338
                                                                                       PUSH mutez 0 ;
1339
                                                                                       UNIT ;
1340
                                                                                       TRANSFER_TOKENS ;
1341
                                                                                       SENDER ;
1342
                                                                                       DIG 5 ;
1343
                                                                                       PAIR ;
1344
                                                                                       DIG 2 ;
1345
                                                                                       PUSH mutez 0 ;
1346
                                                                                       DIG 2 ;
1347
                                                                                       TRANSFER_TOKENS ;
1348
                                                                                       DUP 5 ;
1349
                                                                                       GET 15 ;
1350
                                                                                       DUP 4 ;
1351
                                                                                       GET ;
1352
                                                                                       IF_NONE
1353
                                                                                         { DIG 2 ;
1354
                                                                                           DIG 3 ;
1355
                                                                                           DROP 2 ;
1356
                                                                                           DIG 2 }
1357
                                                                                         { DUP 6 ;
1358
                                                                                           DIG 6 ;
1359
                                                                                           GET 15 ;
1360
                                                                                           DIG 2 ;
1361
                                                                                           DIG 6 ;
1362
                                                                                           UPDATE 1 ;
1363
                                                                                           SOME ;
1364
                                                                                           DIG 5 ;
1365
                                                                                           UPDATE ;
1366
                                                                                           UPDATE 15 } ;
1367
                                                                                       NIL operation ;
1368
                                                                                       DIG 2 ;
1369
                                                                                       CONS ;
1370
                                                                                       DIG 2 ;
1371
                                                                                       CONS ;
1372
                                                                                       PAIR } } }
1373
                                                                             { IF_LEFT
1374
                                                                                 { UNPAIR ;
1375
                                                                                   UNPAIR 6 ;
1376
                                                                                   DIG 5 ;
1377
                                                                                   DROP ;
1378
                                                                                   SELF_ADDRESS ;
1379
                                                                                   SENDER ;
1380
                                                                                   COMPARE ;
1381
                                                                                   NEQ ;
1382
                                                                                   IF
1383
                                                                                     { DROP 8 ;
1384
                                                                                       PUSH nat 31 ;
1385
                                                                                       FAILWITH }
1386
                                                                                     { DUP 7 ;
1387
                                                                                       GET 15 ;
1388
                                                                                       DUP 4 ;
1389
                                                                                       GET ;
1390
                                                                                       IF_NONE
1391
                                                                                         { PUSH nat 21 ;
1392
                                                                                           FAILWITH }
1393
                                                                                         {} ;
1394
                                                                                       DUP ;
1395
                                                                                       CAR ;
1396
                                                                                       DUP 9 ;
1397
                                                                                       GET 3 ;
1398
                                                                                       DUP 7 ;
1399
                                                                                       MUL ;
1400
                                                                                       EDIV ;
1401
                                                                                       IF_NONE
1402
                                                                                         { PUSH string "DIV by 0" ;
1403
                                                                                           FAILWITH }
1404
                                                                                         {} ;
1405
                                                                                       CAR ;
1406
                                                                                       DIG 3 ;
1407
                                                                                       DUP 2 ;
1408
                                                                                       COMPARE ;
1409
                                                                                       LT ;
1410
                                                                                       IF
1411
                                                                                         { DROP 9 ;
1412
                                                                                           PUSH nat 9 ;
1413
                                                                                           FAILWITH }
1414
                                                                                         { DIG 5 ;
1415
                                                                                           DUP 6 ;
1416
                                                                                           SOME ;
1417
                                                                                           DIG 5 ;
1418
                                                                                           UPDATE ;
1419
                                                                                           MAP { UNPAIR ;
1420
                                                                                                 DUP 8 ;
1421
                                                                                                 GET 15 ;
1422
                                                                                                 SWAP ;
1423
                                                                                                 GET ;
1424
                                                                                                 IF_NONE
1425
                                                                                                   { PUSH nat 21 ;
1426
                                                                                                     FAILWITH }
1427
                                                                                                   {} ;
1428
                                                                                                 DUP 4 ;
1429
                                                                                                 CAR ;
1430
                                                                                                 SWAP ;
1431
                                                                                                 CAR ;
1432
                                                                                                 DUP 7 ;
1433
                                                                                                 MUL ;
1434
                                                                                                 EDIV ;
1435
                                                                                                 IF_NONE
1436
                                                                                                   { PUSH string "DIV by 0" ;
1437
                                                                                                     FAILWITH }
1438
                                                                                                   {} ;
1439
                                                                                                 CAR ;
1440
                                                                                                 PAIR } ;
1441
                                                                                           DIG 2 ;
1442
                                                                                           DIG 4 ;
1443
                                                                                           DROP 2 ;
1444
                                                                                           PUSH bool True ;
1445
                                                                                           DUP 2 ;
1446
                                                                                           ITER { CDR ;
1447
                                                                                                  UNPAIR ;
1448
                                                                                                  COMPARE ;
1449
                                                                                                  LE ;
1450
                                                                                                  AND } ;
1451
                                                                                           PUSH bool True ;
1452
                                                                                           SWAP ;
1453
                                                                                           COMPARE ;
1454
                                                                                           NEQ ;
1455
                                                                                           IF
1456
                                                                                             { DROP ;
1457
                                                                                               PUSH nat 8 ;
1458
                                                                                               FAILWITH }
1459
                                                                                             { MAP { CDR ;
1460
                                                                                                     CAR } } ;
1461
                                                                                           EMPTY_MAP
1462
                                                                                             (or
1463
                                                                                               (pair
1464
                                                                                                 address
1465
                                                                                                 nat)
1466
                                                                                               (or
1467
                                                                                                 address
1468
                                                                                                 unit))
1469
                                                                                             (pair
1470
                                                                                               nat
1471
                                                                                               nat) ;
1472
                                                                                           DUP 2 ;
1473
                                                                                           ITER { UNPAIR ;
1474
                                                                                                  DUP 8 ;
1475
                                                                                                  GET 15 ;
1476
                                                                                                  DUP 2 ;
1477
                                                                                                  GET ;
1478
                                                                                                  IF_NONE
1479
                                                                                                    { PUSH nat 21 ;
1480
                                                                                                      FAILWITH }
1481
                                                                                                    {} ;
1482
                                                                                                  DIG 2 ;
1483
                                                                                                  INT ;
1484
                                                                                                  DUP 2 ;
1485
                                                                                                  CAR ;
1486
                                                                                                  ADD ;
1487
                                                                                                  ISNAT ;
1488
                                                                                                  IF_NONE
1489
                                                                                                    { PUSH nat 3 ;
1490
                                                                                                      FAILWITH }
1491
                                                                                                    {} ;
1492
                                                                                                  UPDATE 1 ;
1493
                                                                                                  DIG 2 ;
1494
                                                                                                  SWAP ;
1495
                                                                                                  SOME ;
1496
                                                                                                  DIG 2 ;
1497
                                                                                                  UPDATE } ;
1498
                                                                                           DUP 6 ;
1499
                                                                                           DUP 4 ;
1500
                                                                                           DIG 7 ;
1501
                                                                                           GET 3 ;
1502
                                                                                           ADD ;
1503
                                                                                           UPDATE 3 ;
1504
                                                                                           SWAP ;
1505
                                                                                           UPDATE 15 ;
1506
                                                                                           DIG 2 ;
1507
                                                                                           INT ;
1508
                                                                                           DIG 3 ;
1509
                                                                                           DUP 3 ;
1510
                                                                                           GET 5 ;
1511
                                                                                           CONTRACT %mintOrBurn (pair
1512
                                                                                                                  (int %quantity)
1513
                                                                                                                  (address %target)) ;
1514
                                                                                           IF_NONE
1515
                                                                                             { PUSH nat 1 ;
1516
                                                                                               FAILWITH }
1517
                                                                                             {} ;
1518
                                                                                           PUSH mutez 0 ;
1519
                                                                                           DIG 2 ;
1520
                                                                                           DIG 3 ;
1521
                                                                                           PAIR ;
1522
                                                                                           TRANSFER_TOKENS ;
1523
                                                                                           NIL operation ;
1524
                                                                                           DIG 3 ;
1525
                                                                                           ITER { UNPAIR ;
1526
                                                                                                  UNIT ;
1527
                                                                                                  RIGHT unit ;
1528
                                                                                                  DIG 2 ;
1529
                                                                                                  SELF_ADDRESS ;
1530
                                                                                                  DUP 8 ;
1531
                                                                                                  DIG 4 ;
1532
                                                                                                  PAIR 5 ;
1533
                                                                                                  DUP 6 ;
1534
                                                                                                  SWAP ;
1535
                                                                                                  EXEC ;
1536
                                                                                                  IF_NONE
1537
                                                                                                    {}
1538
                                                                                                    { CONS } } ;
1539
                                                                                           DIG 3 ;
1540
                                                                                           DIG 4 ;
1541
                                                                                           DROP 2 ;
1542
                                                                                           DIG 2 ;
1543
                                                                                           SWAP ;
1544
                                                                                           DIG 2 ;
1545
                                                                                           CONS ;
1546
                                                                                           PAIR } } }
1547
                                                                                 { DIG 2 ;
1548
                                                                                   DROP ;
1549
                                                                                   IF_LEFT
1550
                                                                                     { DUP ;
1551
                                                                                       UNPAIR 6 ;
1552
                                                                                       DROP 2 ;
1553
                                                                                       DUG 2 ;
1554
                                                                                       SOME ;
1555
                                                                                       DIG 2 ;
1556
                                                                                       UPDATE ;
1557
                                                                                       SWAP ;
1558
                                                                                       NOW ;
1559
                                                                                       COMPARE ;
1560
                                                                                       GE ;
1561
                                                                                       IF
1562
                                                                                         { DROP 3 ;
1563
                                                                                           PUSH nat 5 ;
1564
                                                                                           FAILWITH }
1565
                                                                                         { DUP 3 ;
1566
                                                                                           GET 15 ;
1567
                                                                                           SIZE ;
1568
                                                                                           DUP 2 ;
1569
                                                                                           SIZE ;
1570
                                                                                           COMPARE ;
1571
                                                                                           NEQ ;
1572
                                                                                           IF
1573
                                                                                             { DROP 3 ;
1574
                                                                                               PUSH nat 6 ;
1575
                                                                                               FAILWITH }
1576
                                                                                             { PUSH bool True ;
1577
                                                                                               PUSH bool True ;
1578
                                                                                               DIG 2 ;
1579
                                                                                               ITER { UNPAIR ;
1580
                                                                                                      IF_LEFT
1581
                                                                                                        { DROP 2 }
1582
                                                                                                        { IF_LEFT
1583
                                                                                                            { DROP 2 }
1584
                                                                                                            { DROP ;
1585
                                                                                                              AMOUNT ;
1586
                                                                                                              PUSH mutez 1 ;
1587
                                                                                                              SWAP ;
1588
                                                                                                              EDIV ;
1589
                                                                                                              IF_NONE
1590
                                                                                                                { PUSH string "DIV by 0" ;
1591
                                                                                                                  FAILWITH }
1592
                                                                                                                {} ;
1593
                                                                                                              CAR ;
1594
                                                                                                              COMPARE ;
1595
                                                                                                              EQ ;
1596
                                                                                                              AND } } } ;
1597
                                                                                               COMPARE ;
1598
                                                                                               NEQ ;
1599
                                                                                               IF
1600
                                                                                                 { DROP 2 ;
1601
                                                                                                   PUSH nat 23 ;
1602
                                                                                                   FAILWITH }
1603
                                                                                                 { BALANCE ;
1604
                                                                                                   PUSH mutez 1 ;
1605
                                                                                                   SWAP ;
1606
                                                                                                   EDIV ;
1607
                                                                                                   IF_NONE
1608
                                                                                                     { PUSH string "DIV by 0" ;
1609
                                                                                                       FAILWITH }
1610
                                                                                                     {} ;
1611
                                                                                                   CAR ;
1612
                                                                                                   AMOUNT ;
1613
                                                                                                   PUSH mutez 1 ;
1614
                                                                                                   SWAP ;
1615
                                                                                                   EDIV ;
1616
                                                                                                   IF_NONE
1617
                                                                                                     { PUSH string "DIV by 0" ;
1618
                                                                                                       FAILWITH }
1619
                                                                                                     {} ;
1620
                                                                                                   CAR ;
1621
                                                                                                   SWAP ;
1622
                                                                                                   SUB ;
1623
                                                                                                   ISNAT ;
1624
                                                                                                   IF_NONE
1625
                                                                                                     { PUSH nat 32 ;
1626
                                                                                                       FAILWITH }
1627
                                                                                                     {} ;
1628
                                                                                                   UNIT ;
1629
                                                                                                   RIGHT address ;
1630
                                                                                                   RIGHT (pair
1631
                                                                                                           address
1632
                                                                                                           nat) ;
1633
                                                                                                   SELF %request_balance ;
1634
                                                                                                   SELF %add_liquidity_internal ;
1635
                                                                                                   SWAP ;
1636
                                                                                                   PUSH mutez 0 ;
1637
                                                                                                   UNIT ;
1638
                                                                                                   TRANSFER_TOKENS ;
1639
                                                                                                   SENDER ;
1640
                                                                                                   DIG 5 ;
1641
                                                                                                   PAIR ;
1642
                                                                                                   DIG 2 ;
1643
                                                                                                   PUSH mutez 0 ;
1644
                                                                                                   DIG 2 ;
1645
                                                                                                   TRANSFER_TOKENS ;
1646
                                                                                                   DUP 5 ;
1647
                                                                                                   GET 15 ;
1648
                                                                                                   DUP 4 ;
1649
                                                                                                   GET ;
1650
                                                                                                   IF_NONE
1651
                                                                                                     { DIG 2 ;
1652
                                                                                                       DIG 3 ;
1653
                                                                                                       DROP 2 ;
1654
                                                                                                       DIG 2 }
1655
                                                                                                     { DUP 6 ;
1656
                                                                                                       DIG 6 ;
1657
                                                                                                       GET 15 ;
1658
                                                                                                       DIG 2 ;
1659
                                                                                                       DIG 6 ;
1660
                                                                                                       UPDATE 1 ;
1661
                                                                                                       SOME ;
1662
                                                                                                       DIG 5 ;
1663
                                                                                                       UPDATE ;
1664
                                                                                                       UPDATE 15 } ;
1665
                                                                                                   NIL operation ;
1666
                                                                                                   DIG 2 ;
1667
                                                                                                   CONS ;
1668
                                                                                                   DIG 2 ;
1669
                                                                                                   CONS ;
1670
                                                                                                   PAIR } } } }
1671
                                                                                     { DROP ;
1672
                                                                                       SELF_ADDRESS ;
1673
                                                                                       DUP 2 ;
1674
                                                                                       GET 13 ;
1675
                                                                                       COMPARE ;
1676
                                                                                       NEQ ;
1677
                                                                                       IF
1678
                                                                                         { DUP ;
1679
                                                                                           GET 13 ;
1680
                                                                                           CONTRACT unit ;
1681
                                                                                           IF_NONE
1682
                                                                                             { PUSH nat 20 ;
1683
                                                                                               FAILWITH }
1684
                                                                                             {} ;
1685
                                                                                           AMOUNT ;
1686
                                                                                           UNIT ;
1687
                                                                                           TRANSFER_TOKENS ;
1688
                                                                                           SWAP ;
1689
                                                                                           NIL operation ;
1690
                                                                                           DIG 2 ;
1691
                                                                                           CONS }
1692
                                                                                         { NIL operation } ;
1693
                                                                                       PAIR } } } } } } } } } } } } } } } } } } } } }