BCD

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