x
1008
parameter (or (or (or (pair %AddLiquidity (address %recipient) (pair (nat %token1_max) (nat %token2_max))) (address %ChangeAdmin)) (or (unit %ChangeState) (or (pair %ModifyFee (nat %lpFee) (nat %systemFee)) (nat %ModifyMaxSwapAmount)))) (or (or (pair %RemoveLiquidity (pair (nat %lpAmount) (address %recipient)) (pair (nat %token1_min) (nat %token2_min))) (pair %Swap (pair (nat %MinimumTokenOut) (address %recipient)) (pair (address %requiredTokenAddress) (pair (nat %requiredTokenId) (nat %tokenAmountIn))))) (or (address %WithdrawSystemFee) (or (pair %getExchangeFee (pair (pair (address %token1Address) (nat %token1Id)) (pair (address %token2Address) (nat %token2Id))) (contract (pair (nat %lpFee) (nat %systemFee)))) (pair %getReserveBalance (pair (pair (address %token1Address) (nat %token1Id)) (pair (address %token2Address) (nat %token2Id))) (contract (pair (nat %token1_pool) (nat %token2_pool))))))));storage (pair (pair (pair (pair (address %admin) (nat %lpFee)) (pair (address %lpTokenAddress) (nat %maxSwapLimit))) (pair (pair (bool %paused) (nat %systemFee)) (pair (address %token1Address) (bool %token1Check)))) (pair (pair (pair (nat %token1Id) (nat %token1_Fee)) (pair (nat %token1_pool) (address %token2Address))) (pair (pair (bool %token2Check) (nat %token2Id)) (pair (nat %token2_Fee) (pair (nat %token2_pool) (nat %totalSupply))))));code { LAMBDA nat nat { DUP ; PUSH nat 0 ; SWAP ; COMPARE ; GE ; IF {} { PUSH string "PLentySwap_Negative_Value" ; FAILWITH } ; DUP ; DUP ; DUG 2 ; SWAP ; DUP ; DUP ; DUG 3 ; MUL ; COMPARE ; GT ; LOOP { PUSH nat 2 ; SWAP ; DUP ; DUP 4 ; EDIV ; IF_NONE { PUSH int 142 ; FAILWITH } { CAR } ; ADD ; EDIV ; IF_NONE { PUSH int 142 ; FAILWITH } { CAR } ; SWAP ; DUP ; DUG 2 ; SWAP ; DUP ; DUP ; DUG 3 ; MUL ; COMPARE ; GT } ; SWAP ; DUP ; DUG 2 ; SWAP ; DUP ; DUP ; DUG 3 ; MUL ; COMPARE ; LE ; IF { DUP ; PUSH nat 1 ; ADD ; PUSH nat 1 ; DUP 3 ; ADD ; MUL ; DIG 2 ; COMPARE ; LT } { SWAP ; DROP ; PUSH bool False } ; IF {} { PUSH string "WrongCondition: ((y.value * y.value) <= _x0) & (_x0 < ((y.value + 1) * (y.value + 1)))" ; FAILWITH } } ; SWAP ; UNPAIR ; IF_LEFT { IF_LEFT { IF_LEFT { PUSH nat 0 ; PUSH nat 0 ; PUSH nat 0 ; DUP 5 ; GET 10 ; COMPARE ; NEQ ; IF { DUP 3 ; GET 4 ; DIG 4 ; DUP ; GET 3 ; GET 3 ; SWAP ; DUP ; DUG 6 ; GET 9 ; DUP 6 ; GET 3 ; MUL ; EDIV ; IF_NONE { PUSH int 297 ; FAILWITH } { CAR } ; COMPARE ; LE ; IF { DROP 2 ; DUP ; GET 3 ; DIG 2 ; DUP ; GET 3 ; GET 3 ; SWAP ; DUP ; DUG 4 ; GET 9 ; DUP 4 ; GET 3 ; MUL ; EDIV ; IF_NONE { PUSH int 301 ; FAILWITH } { CAR } } {} ; DUP 3 ; GET 3 ; DIG 4 ; DUP ; GET 9 ; SWAP ; DUP ; DUG 6 ; GET 3 ; GET 3 ; DUP 6 ; GET 4 ; MUL ; EDIV ; IF_NONE { PUSH int 304 ; FAILWITH } { CAR } ; COMPARE ; LE ; IF { DROP 2 ; DIG 2 ; DROP ; DUP ; GET 4 ; DIG 2 ; DUP ; GET 9 ; SWAP ; DUP ; DUG 4 ; GET 3 ; GET 3 ; DUP 4 ; GET 4 ; MUL ; EDIV ; IF_NONE { PUSH int 308 ; FAILWITH } { CAR } ; SWAP } { DIG 4 ; DROP } ; PUSH nat 0 ; DUP 3 ; COMPARE ; GT ; IF {} { PUSH string "PLentySwap_Invalid_LP_Ratio" ; FAILWITH } ; DUP ; PUSH nat 0 ; COMPARE ; LT ; IF {} { PUSH string "PLentySwap_Invalid_LP_Ratio" ; FAILWITH } ; DIG 3 ; DUP ; GET 9 ; SWAP ; DUP ; DUG 5 ; GET 10 ; DUP 3 ; MUL ; EDIV ; IF_NONE { PUSH int 315 ; FAILWITH } { CAR } ; DIG 4 ; DUP ; GET 3 ; GET 3 ; SWAP ; DUP ; DUG 6 ; GET 10 ; DUP 5 ; MUL ; EDIV ; IF_NONE { PUSH int 315 ; FAILWITH } { CAR } ; COMPARE ; LT ; IF { DIG 3 ; DUP ; GET 3 ; GET 3 ; SWAP ; DUP ; DUG 5 ; GET 10 ; DUP 4 ; MUL ; EDIV ; IF_NONE { PUSH int 317 ; FAILWITH } { CAR } } { DIG 3 ; DUP ; GET 9 ; SWAP ; DUP ; DUG 5 ; GET 10 ; DUP 3 ; MUL ; EDIV ; IF_NONE { PUSH int 321 ; FAILWITH } { CAR } } } { DROP 2 ; PUSH nat 1000 ; DIG 3 ; DIG 2 ; DUP ; GET 4 ; SWAP ; DUP ; DUG 4 ; GET 3 ; MUL ; EXEC ; SUB ; ISNAT ; IF_NONE { PUSH int 325 ; FAILWITH } {} ; DIG 2 ; DUP ; GET 10 ; PUSH nat 1000 ; ADD ; UPDATE 10 ; DUG 2 ; SWAP ; DUP ; DUG 2 ; GET 3 ; SWAP ; DUP 3 ; GET 4 ; SWAP } ; DUP ; PUSH nat 0 ; COMPARE ; LT ; IF {} { PUSH string "WrongCondition: liquidity.value > 0" ; FAILWITH } ; DUP 4 ; GET 3 ; DUP 4 ; COMPARE ; LE ; IF {} { PUSH string "WrongCondition: token1Amount.value <= params.token1_max" ; FAILWITH } ; DUP 4 ; GET 4 ; DUP 3 ; COMPARE ; LE ; IF {} { PUSH string "WrongCondition: token2Amount.value <= params.token2_max" ; FAILWITH } ; PUSH nat 0 ; DUP 4 ; COMPARE ; GT ; IF {} { PUSH string "PLentySwap_Zero_Amount_Transfer" ; FAILWITH } ; DUP 5 ; CAR ; GET 6 ; IF { NIL operation ; DUP 6 ; CAR ; GET 5 ; CONTRACT %transfer (list (pair address (list (pair address (pair nat nat))))) ; IF_NONE { PUSH int 71 ; FAILWITH } {} ; PUSH mutez 0 ; NIL (pair address (list (pair address (pair nat nat)))) ; NIL (pair address (pair nat nat)) ; DUP 8 ; DUP 11 ; GET 3 ; CAR ; CAR ; SELF_ADDRESS ; PAIR 3 ; CONS ; SENDER ; PAIR ; CONS ; TRANSFER_TOKENS ; CONS } { NIL operation ; DUP 6 ; CAR ; GET 5 ; CONTRACT %transfer (pair address (pair address nat)) ; IF_NONE { PUSH int 95 ; FAILWITH } {} ; PUSH mutez 0 ; DUP 6 ; SELF_ADDRESS ; SENDER ; PAIR 3 ; TRANSFER_TOKENS ; CONS } ; PUSH nat 0 ; DUP 4 ; COMPARE ; GT ; IF {} { PUSH string "PLentySwap_Zero_Amount_Transfer" ; FAILWITH } ; DUP 6 ; GET 5 ; CAR ; IF { DUP 6 ; GET 3 ; GET 4 ; CONTRACT %transfer (list (pair address (list (pair address (pair nat nat))))) ; IF_NONE { PUSH int 71 ; FAILWITH } {} ; PUSH mutez 0 ; NIL (pair address (list (pair address (pair nat nat)))) ; NIL (pair address (pair nat nat)) ; DUP 7 ; DUP 11 ; GET 5 ; CDR ; SELF_ADDRESS ; PAIR 3 ; CONS ; SENDER ; PAIR ; CONS ; TRANSFER_TOKENS ; CONS } { DUP 6 ; GET 3 ; GET 4 ; CONTRACT %transfer (pair address (pair address nat)) ; IF_NONE { PUSH int 95 ; FAILWITH } {} ; PUSH mutez 0 ; DUP 5 ; SELF_ADDRESS ; SENDER ; PAIR 3 ; TRANSFER_TOKENS ; CONS } ; DIG 5 ; UNPAIR ; SWAP ; UNPAIR ; UNPAIR ; SWAP ; UNPAIR ; DIG 8 ; ADD ; PAIR ; SWAP ; PAIR ; PAIR ; SWAP ; PAIR ; DUP ; GET 9 ; DIG 4 ; ADD ; UPDATE 9 ; DUP ; GET 10 ; DUP 4 ; ADD ; UPDATE 10 ; DUP ; DUG 4 ; CAR ; CAR ; GET 3 ; CONTRACT %mint (pair address nat) ; IF_NONE { PUSH int 358 ; FAILWITH } {} ; PUSH mutez 0 ; DIG 3 ; DIG 4 ; CAR ; PAIR ; TRANSFER_TOKENS ; CONS } { DIG 2 ; DROP ; SWAP ; DUP ; DUG 2 ; CAR ; CAR ; CAR ; CAR ; SENDER ; COMPARE ; EQ ; IF {} { PUSH string "PLentySwap_Not_Admin" ; FAILWITH } ; SWAP ; UNPAIR ; UNPAIR ; UNPAIR ; CDR ; DIG 4 ; PAIR ; PAIR ; PAIR ; PAIR ; NIL operation } } { DIG 2 ; DROP ; IF_LEFT { DROP ; DUP ; CAR ; CAR ; CAR ; CAR ; SENDER ; COMPARE ; EQ ; IF {} { PUSH string "PLentySwap_Not_Admin" ; FAILWITH } ; DUP ; UNPAIR ; UNPAIR ; SWAP ; UNPAIR ; CDR ; DIG 4 ; CAR ; GET 3 ; CAR ; NOT ; PAIR ; PAIR ; SWAP ; PAIR ; PAIR } { IF_LEFT { SWAP ; DUP ; DUG 2 ; CAR ; CAR ; CAR ; CAR ; SENDER ; COMPARE ; EQ ; IF {} { PUSH string "PLentySwap_Not_Admin" ; FAILWITH } ; DUP ; CAR ; PUSH nat 50 ; COMPARE ; LT ; IF { DUP ; CDR ; PUSH nat 50 ; COMPARE ; LT } { PUSH bool False } ; IF {} { PUSH string "WrongCondition: (params.lpFee > 50) & (params.systemFee > 50)" ; FAILWITH } ; SWAP ; UNPAIR ; UNPAIR ; UNPAIR ; CAR ; DUP 5 ; CAR ; SWAP ; PAIR ; PAIR ; SWAP ; UNPAIR ; CAR ; DIG 4 ; CDR ; SWAP ; PAIR ; PAIR ; SWAP ; PAIR ; PAIR } { SWAP ; DUP ; DUG 2 ; CAR ; CAR ; CAR ; CAR ; SENDER ; COMPARE ; EQ ; IF {} { PUSH string "PLentySwap_Not_Admin" ; FAILWITH } ; SWAP ; UNPAIR ; UNPAIR ; UNPAIR ; SWAP ; CAR ; DIG 4 ; SWAP ; PAIR ; SWAP ; PAIR ; PAIR ; PAIR } } ; NIL operation } } { IF_LEFT { IF_LEFT { DIG 2 ; DROP ; PUSH nat 0 ; DUP 3 ; GET 10 ; COMPARE ; NEQ ; IF {} { PUSH string "PLentySwap_Not_Initialized" ; FAILWITH } ; SWAP ; DUP ; DUG 2 ; GET 10 ; SWAP ; DUP ; DUG 2 ; CAR ; CAR ; COMPARE ; LE ; IF {} { PUSH string "PLentySwap_Insufficient_Balance" ; FAILWITH } ; SWAP ; DUP ; GET 10 ; SWAP ; DUP ; DUG 3 ; GET 3 ; GET 3 ; DUP 3 ; CAR ; CAR ; MUL ; EDIV ; IF_NONE { PUSH int 389 ; FAILWITH } { CAR } ; DIG 2 ; DUP ; GET 10 ; SWAP ; DUP ; DUG 4 ; GET 9 ; DUP 4 ; CAR ; CAR ; MUL ; EDIV ; IF_NONE { PUSH int 391 ; FAILWITH } { CAR } ; DUP 3 ; GET 3 ; DUP 3 ; COMPARE ; GE ; IF {} { PUSH string "WrongCondition: token1Amount.value >= params.token1_min" ; FAILWITH } ; DUP 3 ; GET 4 ; SWAP ; DUP ; DUG 2 ; COMPARE ; GE ; IF {} { PUSH string "WrongCondition: token2Amount.value >= params.token2_min" ; FAILWITH } ; DUP 4 ; UNPAIR ; SWAP ; UNPAIR ; UNPAIR ; SWAP ; CDR ; DUP 6 ; DIG 8 ; GET 3 ; GET 3 ; SUB ; ISNAT ; IF_NONE { PUSH int 401 ; FAILWITH } {} ; PAIR ; SWAP ; PAIR ; PAIR ; SWAP ; PAIR ; DUP ; DUG 4 ; SWAP ; DUP ; DUG 2 ; DIG 5 ; GET 9 ; SUB ; ISNAT ; IF_NONE { PUSH int 403 ; FAILWITH } {} ; UPDATE 9 ; DUP ; DUG 4 ; DUP 4 ; CAR ; CAR ; DIG 5 ; GET 10 ; SUB ; ISNAT ; IF_NONE { PUSH int 405 ; FAILWITH } {} ; UPDATE 10 ; DUG 3 ; NIL operation ; DUP 5 ; CAR ; CAR ; GET 3 ; CONTRACT %burn (pair address nat) ; IF_NONE { PUSH int 414 ; FAILWITH } {} ; PUSH mutez 0 ; DUP 6 ; CAR ; CAR ; SENDER ; PAIR ; TRANSFER_TOKENS ; CONS ; PUSH nat 0 ; DUP 4 ; COMPARE ; GT ; IF {} { PUSH string "PLentySwap_Zero_Amount_Transfer" ; FAILWITH } ; DUP 5 ; CAR ; GET 6 ; IF { DUP 5 ; CAR ; GET 5 ; CONTRACT %transfer (list (pair address (list (pair address (pair nat nat))))) ; IF_NONE { PUSH int 71 ; FAILWITH } {} ; PUSH mutez 0 ; NIL (pair address (list (pair address (pair nat nat)))) ; NIL (pair address (pair nat nat)) ; DIG 6 ; DUP 9 ; GET 3 ; CAR ; CAR ; DUP 9 ; CAR ; CDR ; PAIR 3 ; CONS ; SELF_ADDRESS ; PAIR ; CONS ; TRANSFER_TOKENS ; CONS } { DUP 5 ; CAR ; GET 5 ; CONTRACT %transfer (pair address (pair address nat)) ; IF_NONE { PUSH int 95 ; FAILWITH } {} ; PUSH mutez 0 ; DIG 4 ; DUP 6 ; CAR ; CDR ; SELF_ADDRESS ; PAIR 3 ; TRANSFER_TOKENS ; CONS } ; PUSH nat 0 ; DUP 3 ; COMPARE ; GT ; IF {} { PUSH string "PLentySwap_Zero_Amount_Transfer" ; FAILWITH } ; DUP 4 ; GET 5 ; CAR ; IF { DUP 4 ; GET 3 ; GET 4 ; CONTRACT %transfer (list (pair address (list (pair address (pair nat nat))))) ; IF_NONE { PUSH int 71 ; FAILWITH } {} ; PUSH mutez 0 ; NIL (pair address (list (pair address (pair nat nat)))) ; NIL (pair address (pair nat nat)) ; DIG 5 ; DUP 8 ; GET 5 ; CDR ; DIG 7 ; CAR ; CDR ; PAIR 3 ; CONS ; SELF_ADDRESS ; PAIR ; CONS ; TRANSFER_TOKENS ; CONS } { DUP 4 ; GET 3 ; GET 4 ; CONTRACT %transfer (pair address (pair address nat)) ; IF_NONE { PUSH int 95 ; FAILWITH } {} ; PUSH mutez 0 ; DIG 3 ; DIG 4 ; CAR ; CDR ; SELF_ADDRESS ; PAIR 3 ; TRANSFER_TOKENS ; CONS } } { DIG 2 ; DROP ; SWAP ; DUP ; DUG 2 ; CAR ; GET 3 ; CAR ; IF { PUSH string "PLentySwap_Paused_State" ; FAILWITH } {} ; SWAP ; DUP ; DUG 2 ; CAR ; GET 5 ; SWAP ; DUP ; DUG 2 ; GET 3 ; COMPARE ; EQ ; IF { SWAP ; DUP ; DUG 2 ; GET 3 ; CAR ; CAR ; SWAP ; DUP ; DUG 2 ; GET 5 ; COMPARE ; EQ } { PUSH bool False } ; IF { PUSH bool True } { SWAP ; DUP ; DUG 2 ; GET 3 ; GET 4 ; SWAP ; DUP ; DUG 2 ; GET 3 ; COMPARE ; EQ ; IF { SWAP ; DUP ; DUG 2 ; GET 5 ; CDR ; SWAP ; DUP ; DUG 2 ; GET 5 ; COMPARE ; EQ } { PUSH bool False } } ; IF {} { PUSH string "PLentySwap_Invalid_Pair" ; FAILWITH } ; SWAP ; DUP ; DUG 2 ; CAR ; GET 5 ; SWAP ; DUP ; DUG 2 ; GET 3 ; COMPARE ; EQ ; IF { SWAP ; DUP ; DUG 2 ; GET 3 ; CAR ; CAR ; SWAP ; DUP ; DUG 2 ; GET 5 ; COMPARE ; EQ } { PUSH bool False } ; IF { SWAP ; DUP ; DUG 2 ; GET 9 ; DUP 3 ; GET 3 ; GET 3 } { SWAP ; DUP ; DUG 2 ; GET 3 ; GET 3 ; DUP 3 ; GET 9 } ; DUP 4 ; CAR ; CAR ; GET 4 ; DUP 3 ; MUL ; PUSH nat 100 ; DUP 5 ; GET 6 ; MUL ; COMPARE ; LE ; IF {} { PUSH string "PLentySwap_SwapLimitExceed" ; FAILWITH } ; DUP 4 ; CAR ; CAR ; CAR ; CDR ; DUP 4 ; GET 6 ; EDIV ; IF_NONE { PUSH int 235 ; FAILWITH } { CAR } ; DUP 5 ; CAR ; GET 3 ; CDR ; DUP 5 ; GET 6 ; EDIV ; IF_NONE { PUSH int 237 ; FAILWITH } { CAR } ; DIG 5 ; DUP ; GET 9 ; SWAP ; DUP ; DUG 7 ; GET 3 ; GET 3 ; MUL ; SWAP ; DUP ; DUG 2 ; DIG 3 ; ADD ; DUP 6 ; GET 6 ; DIG 5 ; ADD ; SUB ; ISNAT ; IF_NONE { PUSH int 241 ; FAILWITH } {} ; SWAP ; EDIV ; IF_NONE { PUSH int 241 ; FAILWITH } { CAR } ; DUP ; DIG 3 ; SUB ; ISNAT ; IF_NONE { PUSH int 243 ; FAILWITH } {} ; SWAP ; DUP 4 ; CAR ; CAR ; DUP 3 ; COMPARE ; GE ; IF {} { PUSH string "PLentySwap_Higher_Slippage" ; FAILWITH } ; PUSH nat 0 ; DUP 4 ; COMPARE ; GT ; IF {} { PUSH string "PLentySwap_Zero System Fee" ; FAILWITH } ; DUP 5 ; CAR ; GET 5 ; DUP 5 ; GET 3 ; COMPARE ; EQ ; IF { DUP 5 ; GET 3 ; CAR ; CAR ; DUP 5 ; GET 5 ; COMPARE ; EQ } { PUSH bool False } ; IF { DIG 4 ; UNPAIR ; SWAP ; UNPAIR ; UNPAIR ; SWAP ; CDR ; DIG 4 ; PAIR ; SWAP ; PAIR ; PAIR ; SWAP ; PAIR ; DUP ; GET 9 ; DUP 4 ; DUP 6 ; GET 6 ; SUB ; ISNAT ; IF_NONE { PUSH int 253 ; FAILWITH } {} ; ADD ; UPDATE 9 ; DUP ; GET 7 ; DIG 3 ; ADD ; UPDATE 7 ; DUG 2 ; PUSH nat 0 ; DUP 3 ; GET 6 ; COMPARE ; GT ; IF {} { PUSH string "PLentySwap_Zero_Amount_Transfer" ; FAILWITH } ; DUP 3 ; GET 5 ; CAR ; IF { NIL operation ; DUP 4 ; GET 3 ; GET 4 ; CONTRACT %transfer (list (pair address (list (pair address (pair nat nat))))) ; IF_NONE { PUSH int 71 ; FAILWITH } {} ; PUSH mutez 0 ; NIL (pair address (list (pair address (pair nat nat)))) ; NIL (pair address (pair nat nat)) ; DUP 7 ; GET 6 ; DUP 9 ; GET 5 ; CDR ; SELF_ADDRESS ; PAIR 3 ; CONS ; SENDER ; PAIR ; CONS ; TRANSFER_TOKENS ; CONS } { NIL operation ; DUP 4 ; GET 3 ; GET 4 ; CONTRACT %transfer (pair address (pair address nat)) ; IF_NONE { PUSH int 95 ; FAILWITH } {} ; PUSH mutez 0 ; DUP 5 ; GET 6 ; SELF_ADDRESS ; SENDER ; PAIR 3 ; TRANSFER_TOKENS ; CONS } ; PUSH nat 0 ; DUP 3 ; COMPARE ; GT ; IF {} { PUSH string "PLentySwap_Zero_Amount_Transfer" ; FAILWITH } ; DUP 4 ; CAR ; GET 6 ; IF { DUP 4 ; CAR ; GET 5 ; CONTRACT %transfer (list (pair address (list (pair address (pair nat nat))))) ; IF_NONE { PUSH int 71 ; FAILWITH } {} ; PUSH mutez 0 ; NIL (pair address (list (pair address (pair nat nat)))) ; NIL (pair address (pair nat nat)) ; DIG 5 ; DUP 8 ; GET 3 ; CAR ; CAR ; DIG 7 ; CAR ; CDR ; PAIR 3 ; CONS ; SELF_ADDRESS ; PAIR ; CONS ; TRANSFER_TOKENS ; CONS } { DUP 4 ; CAR ; GET 5 ; CONTRACT %transfer (pair address (pair address nat)) ; IF_NONE { PUSH int 95 ; FAILWITH } {} ; PUSH mutez 0 ; DIG 3 ; DIG 4 ; CAR ; CDR ; SELF_ADDRESS ; PAIR 3 ; TRANSFER_TOKENS ; CONS } } { DIG 4 ; SWAP ; UPDATE 9 ; UNPAIR ; SWAP ; UNPAIR ; UNPAIR ; SWAP ; UNPAIR ; DUP 7 ; DUP 9 ; GET 6 ; SUB ; ISNAT ; IF_NONE { PUSH int 267 ; FAILWITH } {} ; ADD ; PAIR ; SWAP ; UNPAIR ; SWAP ; DIG 6 ; ADD ; SWAP ; PAIR ; PAIR ; PAIR ; SWAP ; PAIR ; DUG 2 ; PUSH nat 0 ; DUP 3 ; GET 6 ; COMPARE ; GT ; IF {} { PUSH string "PLentySwap_Zero_Amount_Transfer" ; FAILWITH } ; DUP 3 ; CAR ; GET 6 ; IF { NIL operation ; DUP 4 ; CAR ; GET 5 ; CONTRACT %transfer (list (pair address (list (pair address (pair nat nat))))) ; IF_NONE { PUSH int 71 ; FAILWITH } {} ; PUSH mutez 0 ; NIL (pair address (list (pair address (pair nat nat)))) ; NIL (pair address (pair nat nat)) ; DUP 7 ; GET 6 ; DUP 9 ; GET 3 ; CAR ; CAR ; SELF_ADDRESS ; PAIR 3 ; CONS ; SENDER ; PAIR ; CONS ; TRANSFER_TOKENS ; CONS } { NIL operation ; DUP 4 ; CAR ; GET 5 ; CONTRACT %transfer (pair address (pair address nat)) ; IF_NONE { PUSH int 95 ; FAILWITH } {} ; PUSH mutez 0 ; DUP 5 ; GET 6 ; SELF_ADDRESS ; SENDER ; PAIR 3 ; TRANSFER_TOKENS ; CONS } ; PUSH nat 0 ; DUP 3 ; COMPARE ; GT ; IF {} { PUSH string "PLentySwap_Zero_Amount_Transfer" ; FAILWITH } ; DUP 4 ; GET 5 ; CAR ; IF { DUP 4 ; GET 3 ; GET 4 ; CONTRACT %transfer (list (pair address (list (pair address (pair nat nat))))) ; IF_NONE { PUSH int 71 ; FAILWITH } {} ; PUSH mutez 0 ; NIL (pair address (list (pair address (pair nat nat)))) ; NIL (pair address (pair nat nat)) ; DIG 5 ; DUP 8 ; GET 5 ; CDR ; DIG 7 ; CAR ; CDR ; PAIR 3 ; CONS ; SELF_ADDRESS ; PAIR ; CONS ; TRANSFER_TOKENS ; CONS } { DUP 4 ; GET 3 ; GET 4 ; CONTRACT %transfer (pair address (pair address nat)) ; IF_NONE { PUSH int 95 ; FAILWITH } {} ; PUSH mutez 0 ; DIG 3 ; DIG 4 ; CAR ; CDR ; SELF_ADDRESS ; PAIR 3 ; TRANSFER_TOKENS ; CONS } } } } { IF_LEFT { SWAP ; DUP ; DUG 2 ; CAR ; CAR ; CAR ; CAR ; SENDER ; COMPARE ; EQ ; IF {} { PUSH string "PLentySwap_Not_Admin" ; FAILWITH } ; PUSH nat 0 ; DUP 3 ; GET 3 ; CAR ; CDR ; COMPARE ; NEQ ; IF { PUSH nat 0 ; DUP 3 ; GET 3 ; CAR ; CDR ; COMPARE ; GT ; IF {} { PUSH string "PLentySwap_Zero_Amount_Transfer" ; FAILWITH } ; SWAP ; DUP ; DUG 2 ; CAR ; GET 6 ; IF { NIL operation ; DUP 3 ; CAR ; GET 5 ; CONTRACT %transfer (list (pair address (list (pair address (pair nat nat))))) ; IF_NONE { PUSH int 71 ; FAILWITH } {} ; PUSH mutez 0 ; NIL (pair address (list (pair address (pair nat nat)))) ; NIL (pair address (pair nat nat)) ; DIG 6 ; DUP ; GET 3 ; CAR ; CDR ; SWAP ; DUP ; DUG 8 ; GET 3 ; CAR ; CAR ; DUP 8 ; PAIR 3 ; CONS ; SELF_ADDRESS ; PAIR ; CONS ; TRANSFER_TOKENS ; CONS } { NIL operation ; DUP 3 ; CAR ; GET 5 ; CONTRACT %transfer (pair address (pair address nat)) ; IF_NONE { PUSH int 95 ; FAILWITH } {} ; PUSH mutez 0 ; DUP 5 ; GET 3 ; CAR ; CDR ; DUP 5 ; SELF_ADDRESS ; PAIR 3 ; TRANSFER_TOKENS ; CONS } } { NIL operation } ; PUSH nat 0 ; DUP 4 ; GET 7 ; COMPARE ; NEQ ; IF { DIG 3 ; DROP ; PUSH nat 0 ; DUP 4 ; GET 7 ; COMPARE ; GT ; IF {} { PUSH string "PLentySwap_Zero_Amount_Transfer" ; FAILWITH } ; DUP 3 ; GET 5 ; CAR ; IF { DUP 3 ; GET 3 ; GET 4 ; CONTRACT %transfer (list (pair address (list (pair address (pair nat nat))))) ; IF_NONE { PUSH int 71 ; FAILWITH } {} ; PUSH mutez 0 ; NIL (pair address (list (pair address (pair nat nat)))) ; NIL (pair address (pair nat nat)) ; DIG 6 ; DUP ; GET 7 ; SWAP ; DUP ; DUG 8 ; GET 5 ; CDR ; DIG 7 ; PAIR 3 ; CONS ; SELF_ADDRESS ; PAIR ; CONS ; TRANSFER_TOKENS ; CONS } { DUP 3 ; GET 3 ; GET 4 ; CONTRACT %transfer (pair address (pair address nat)) ; IF_NONE { PUSH int 95 ; FAILWITH } {} ; PUSH mutez 0 ; DUP 5 ; GET 7 ; DIG 4 ; SELF_ADDRESS ; PAIR 3 ; TRANSFER_TOKENS ; CONS } } { SWAP ; DROP ; DIG 2 ; DROP } ; SWAP ; UNPAIR ; SWAP ; UNPAIR ; UNPAIR ; CAR ; PUSH nat 0 ; SWAP ; PAIR ; PAIR ; PAIR ; SWAP ; PAIR ; PUSH nat 0 ; UPDATE 7 ; SWAP } { IF_LEFT { DIG 2 ; DROP ; SWAP ; DUP ; DUG 2 ; CAR ; GET 5 ; SWAP ; DUP ; DUG 2 ; CAR ; CAR ; CAR ; COMPARE ; EQ ; IF { SWAP ; DUP ; DUG 2 ; GET 3 ; CAR ; CAR ; SWAP ; DUP ; DUG 2 ; CAR ; CAR ; CDR ; COMPARE ; EQ } { PUSH bool False } ; IF { SWAP ; DUP ; DUG 2 ; GET 3 ; GET 4 ; SWAP ; DUP ; DUG 2 ; CAR ; GET 3 ; COMPARE ; EQ ; IF { SWAP ; DUP ; DUG 2 ; GET 5 ; CDR ; SWAP ; DUP ; DUG 2 ; CAR ; GET 4 ; COMPARE ; EQ } { PUSH bool False } } { PUSH bool False } ; IF {} { PUSH string "PLentySwap_Invalid_Pair" ; FAILWITH } ; SWAP ; DUP ; CAR ; GET 3 ; CDR ; SWAP ; DUP ; DUG 3 ; CAR ; CAR ; CAR ; CDR ; PAIR ; NIL operation ; DIG 2 ; CDR ; PUSH mutez 0 ; DIG 3 ; TRANSFER_TOKENS ; CONS } { DIG 2 ; DROP ; SWAP ; DUP ; DUG 2 ; CAR ; GET 5 ; SWAP ; DUP ; DUG 2 ; CAR ; CAR ; CAR ; COMPARE ; EQ ; IF { SWAP ; DUP ; DUG 2 ; GET 3 ; CAR ; CAR ; SWAP ; DUP ; DUG 2 ; CAR ; CAR ; CDR ; COMPARE ; EQ } { PUSH bool False } ; IF { SWAP ; DUP ; DUG 2 ; GET 3 ; GET 4 ; SWAP ; DUP ; DUG 2 ; CAR ; GET 3 ; COMPARE ; EQ ; IF { SWAP ; DUP ; DUG 2 ; GET 5 ; CDR ; SWAP ; DUP ; DUG 2 ; CAR ; GET 4 ; COMPARE ; EQ } { PUSH bool False } } { PUSH bool False } ; IF {} { PUSH string "PLentySwap_Invalid_Pair" ; FAILWITH } ; SWAP ; DUP ; GET 9 ; SWAP ; DUP ; DUG 3 ; GET 3 ; GET 3 ; PAIR ; NIL operation ; DIG 2 ; CDR ; PUSH mutez 0 ; DIG 3 ; TRANSFER_TOKENS ; CONS } } } } ; NIL operation ; SWAP ; ITER { CONS } ; PAIR }