x
655
1494
{ parameter (or (pair %execute (nat %token_in_id) (pair (nat %token_out_id) (pair (nat %min_out) (pair (address %receiver) (pair (map %hops nat (pair (nat %dex_id) (pair (nat %code) (pair (nat %amount_from_token_in_reserves) (pair (nat %amount_from_trading_balance) (bytes %params)))))) (nat %app_id)))))) (or (unit %tick) (or (unit %default) (or (list %onFA2Balance (pair (pair %request (address %owner) (nat %token_id)) (nat %balance))) (or (nat %onFA12Balance) (or (or %admin (map %updateDexes nat (option (pair (address %contract_address) (pair (nat %provider) (pair (nat %token1_id) (pair (nat %token2_id) (bytes %options))))))) (or (map %updateTokens nat (option (or (or (pair %fa12 (address %contract_address) (nat %decimals)) (pair %fa2 (address %contract_address) (pair (nat %fa2_id) (nat %decimals)))) (nat %xtz)))) (or (map %updateProviders nat (option (lambda (pair (pair (pair %dex (address %contract_address) (pair (nat %provider) (pair (nat %token1_id) (pair (nat %token2_id) (bytes %options))))) (pair (nat %amount_in) (pair (bool %is_sell) (bytes %params)))) (pair (big_map %tokens nat (or (or (pair %fa12 (address %contract_address) (nat %decimals)) (pair %fa2 (address %contract_address) (pair (nat %fa2_id) (nat %decimals)))) (nat %xtz))) (pair (big_map %dexes nat (pair (address %contract_address) (pair (nat %provider) (pair (nat %token1_id) (pair (nat %token2_id) (bytes %options)))))) (address %dex_referral)))) (list operation)))) (or (option %setAdmin address) (or (bool %setPaused) (or (list %approveTokens (pair (nat %id) (pair (address %spender_address) (nat %amount)))) (or (pair %withdrawTokens (list %tokens (pair (nat %id) (nat %amount))) (address %out_address)) (or (pair %updateFeeOptions (option %value nat) (option %recipient address)) (or (address %updateDexReferral) (address %updateContract)))))))))) (unit %confirmAdmin))))))) ; storage (pair (pair %main (bool %disabled) (pair (bool %paused) (pair (option %chain_context (pair (pair %request (nat %token_in_id) (pair (nat %token_out_id) (pair (nat %min_out) (pair (address %receiver) (pair (map %hops nat (pair (nat %dex_id) (pair (nat %code) (pair (nat %amount_from_token_in_reserves) (pair (nat %amount_from_trading_balance) (bytes %params)))))) (nat %app_id)))))) (pair (nat %amount_in) (pair (nat %token_in_reserves) (pair (nat %token_out_reserves) (pair (map %trading_balances nat nat) (pair (nat %received_token_id) (pair (nat %received_fa_token_balance) (nat %iter_num))))))))) (pair (pair %fee_options (nat %value) (address %recipient)) (pair (big_map %providers nat (lambda (pair (pair (pair %dex (address %contract_address) (pair (nat %provider) (pair (nat %token1_id) (pair (nat %token2_id) (bytes %options))))) (pair (nat %amount_in) (pair (bool %is_sell) (bytes %params)))) (pair (big_map %tokens nat (or (or (pair %fa12 (address %contract_address) (nat %decimals)) (pair %fa2 (address %contract_address) (pair (nat %fa2_id) (nat %decimals)))) (nat %xtz))) (pair (big_map %dexes nat (pair (address %contract_address) (pair (nat %provider) (pair (nat %token1_id) (pair (nat %token2_id) (bytes %options)))))) (address %dex_referral)))) (list operation))) (pair (address %admin) (pair (option %pending_admin address) (pair %contract_info (nat %version) (pair (option %previous_version_contract_address address) (option %next_version_contract_address address)))))))))) (pair %provider (big_map %tokens nat (or (or (pair %fa12 (address %contract_address) (nat %decimals)) (pair %fa2 (address %contract_address) (pair (nat %fa2_id) (nat %decimals)))) (nat %xtz))) (pair (big_map %dexes nat (pair (address %contract_address) (pair (nat %provider) (pair (nat %token1_id) (pair (nat %token2_id) (bytes %options)))))) (address %dex_referral)))) ; code { LAMBDA (pair (pair (or (or (pair address nat) (pair address (pair nat nat))) nat) address) (pair address nat)) operation { UNPAIR ; UNPAIR ; DIG 2 ; UNPAIR ; DIG 2 ; IF_LEFT { IF_LEFT { PUSH nat 1 ; SWAP ; CAR ; CONTRACT %transfer (pair (address %from) (pair (address %to) (nat %value))) ; IF_NONE { FAILWITH } { SWAP ; DROP } ; PUSH mutez 0 ; DIG 3 ; DIG 3 ; DIG 4 ; PAIR 3 ; TRANSFER_TOKENS } { PUSH nat 2 ; DUP 2 ; CAR ; CONTRACT %transfer (list (pair (address %from_) (list %txs (pair (address %to_) (pair (nat %token_id) (nat %amount)))))) ; IF_NONE { FAILWITH } { SWAP ; DROP } ; PUSH mutez 0 ; NIL (pair address (list (pair address (pair nat nat)))) ; NIL (pair address (pair nat nat)) ; DIG 6 ; DIG 5 ; GET 3 ; DIG 6 ; PAIR 3 ; CONS ; DIG 4 ; PAIR ; CONS ; TRANSFER_TOKENS } } { DIG 3 ; DROP 2 ; CONTRACT unit ; IF_NONE { PUSH string "bad address for get_contract" ; FAILWITH } {} ; PUSH mutez 1 ; DIG 2 ; MUL ; UNIT ; TRANSFER_TOKENS } } ; LAMBDA (pair (pair (pair nat (pair nat (pair nat (pair address (pair (map nat (pair nat (pair nat (pair nat (pair nat bytes))))) nat))))) (pair nat (pair nat (pair nat (pair (map nat nat) (pair nat (pair nat nat))))))) (pair (pair bool (pair bool (pair (option (pair (pair nat (pair nat (pair nat (pair address (pair (map nat (pair nat (pair nat (pair nat (pair nat bytes))))) nat))))) (pair nat (pair nat (pair nat (pair (map nat nat) (pair nat (pair nat nat)))))))) (pair (pair nat address) (pair (big_map nat (lambda (pair (pair (pair address (pair nat (pair nat (pair nat bytes)))) (pair nat (pair bool bytes))) (pair (big_map nat (or (or (pair address nat) (pair address (pair nat nat))) nat)) (pair (big_map nat (pair address (pair nat (pair nat (pair nat bytes))))) address))) (list operation))) (pair address (pair (option address) (pair nat (pair (option address) (option address)))))))))) (pair (big_map nat (or (or (pair address nat) (pair address (pair nat nat))) nat)) (pair (big_map nat (pair address (pair nat (pair nat (pair nat bytes))))) address)))) (pair (list operation) (pair (pair bool (pair bool (pair (option (pair (pair nat (pair nat (pair nat (pair address (pair (map nat (pair nat (pair nat (pair nat (pair nat bytes))))) nat))))) (pair nat (pair nat (pair nat (pair (map nat nat) (pair nat (pair nat nat)))))))) (pair (pair nat address) (pair (big_map nat (lambda (pair (pair (pair address (pair nat (pair nat (pair nat bytes)))) (pair nat (pair bool bytes))) (pair (big_map nat (or (or (pair address nat) (pair address (pair nat nat))) nat)) (pair (big_map nat (pair address (pair nat (pair nat (pair nat bytes))))) address))) (list operation))) (pair address (pair (option address) (pair nat (pair (option address) (option address)))))))))) (pair (big_map nat (or (or (pair address nat) (pair address (pair nat nat))) nat)) (pair (big_map nat (pair address (pair nat (pair nat (pair nat bytes))))) address)))) { UNPAIR ; DUP ; CAR ; GET 9 ; DUP 2 ; GET 14 ; GET ; IF_NONE { PUSH string "option is None" ; FAILWITH } {} ; DUP 3 ; CDR ; GET 3 ; DUP 2 ; CAR ; GET ; IF_NONE { PUSH nat 15 ; FAILWITH } {} ; PUSH nat 1 ; PUSH nat 1 ; DUP 4 ; GET 3 ; AND ; COMPARE ; EQ ; DUP ; IF { DUP 2 ; GET 7 ; DUP 3 ; GET 5 } { DUP 2 ; GET 5 ; DUP 3 ; GET 7 } ; DUP 6 ; CAR ; GET 3 ; DUP 7 ; GET 11 ; COMPARE ; EQ ; PUSH nat 2 ; PUSH nat 6 ; DUP 8 ; GET 3 ; AND ; COMPARE ; EQ ; PUSH nat 4 ; PUSH nat 6 ; DUP 9 ; GET 3 ; AND ; COMPARE ; EQ ; PUSH nat 6 ; PUSH nat 6 ; DUP 10 ; GET 3 ; AND ; COMPARE ; EQ ; PUSH nat 8 ; PUSH nat 8 ; DUP 11 ; GET 3 ; AND ; COMPARE ; EQ ; PUSH nat 0 ; DUP 11 ; GET 7 ; COMPARE ; GT ; PUSH nat 0 ; DUP 12 ; GET 5 ; COMPARE ; GT ; DUP 7 ; DUP 7 ; NOT ; OR ; NOT ; IF { PUSH nat 40 ; FAILWITH } {} ; DUP 3 ; NOT ; DUP 3 ; NOT ; OR ; NOT ; IF { PUSH nat 40 ; FAILWITH } {} ; DUP 4 ; NOT ; DUP 6 ; DUP 8 ; OR ; NOT ; OR ; NOT ; IF { PUSH nat 40 ; FAILWITH } {} ; DUP 4 ; NOT ; DUP 2 ; NOT ; OR ; NOT ; IF { PUSH nat 40 ; FAILWITH } {} ; PUSH nat 0 ; DUP 14 ; GET 14 ; COMPARE ; EQ ; IF { DIG 6 ; DROP ; PUSH nat 0 } { PUSH nat 0 ; DUP 14 ; GET 11 ; COMPARE ; EQ ; IF { PUSH mutez 1 ; BALANCE ; EDIV ; IF_NONE { PUSH string "DIV by 0" ; FAILWITH } {} ; CAR } { DUP 13 ; GET 13 } ; DUP 14 ; CAR ; CAR ; DUP 15 ; GET 11 ; COMPARE ; EQ ; IF { DIG 7 ; DROP ; PUSH nat 24 ; DUP 14 ; GET 5 ; DIG 2 ; SUB ; ISNAT ; IF_NONE { FAILWITH } { SWAP ; DROP } } { DIG 7 ; IF { PUSH nat 24 ; DUP 14 ; GET 7 ; DIG 2 ; SUB ; ISNAT ; IF_NONE { FAILWITH } { SWAP ; DROP } } {} } ; PUSH nat 24 ; DUP 14 ; GET 9 ; DUP 15 ; GET 11 ; GET ; IF_NONE { PUSH nat 0 } {} ; DIG 2 ; SUB ; ISNAT ; IF_NONE { FAILWITH } { SWAP ; DROP } } ; DIG 12 ; PUSH nat 0 ; DIG 6 ; IF { DIG 6 ; DIG 7 ; DROP 2 ; DIG 2 ; ADD } { DIG 7 ; IF { DIG 6 ; DROP ; DUP 2 ; DIG 3 ; DIG 3 ; GET 7 ; ADD ; UPDATE 7 ; SWAP } { DIG 6 ; IF { DIG 2 ; DUP 3 ; DUP 4 ; GET 11 ; SWAP ; GET 9 ; SWAP ; GET ; IF_NONE { PUSH nat 0 } {} ; ADD ; DUP 3 ; DUP 4 ; GET 9 ; DIG 2 ; SOME ; DIG 4 ; GET 11 ; UPDATE ; UPDATE 9 ; SWAP } { DIG 2 ; DROP } } } ; DIG 2 ; IF { PUSH nat 10000000000 ; DUP 11 ; CAR ; GET 7 ; CAR ; DUP 11 ; GET 5 ; MUL ; EDIV ; IF_NONE { PUSH string "DIV by 0" ; FAILWITH } {} ; CAR ; PUSH nat 24 ; SWAP ; DUP 11 ; GET 5 ; SUB ; ISNAT ; IF_NONE { FAILWITH } { SWAP ; DROP } ; DUP ; DIG 2 ; ADD ; SWAP ; DUP 3 ; PUSH nat 24 ; DIG 2 ; DIG 4 ; GET 5 ; SUB ; ISNAT ; IF_NONE { FAILWITH } { SWAP ; DROP } ; UPDATE 5 ; SWAP } {} ; DIG 2 ; IF { DIG 2 ; DROP ; DUP 7 ; GET 7 ; ADD ; PUSH nat 25 ; DUP 8 ; GET 7 ; DUP 4 ; DUP 6 ; SWAP ; GET 9 ; SWAP ; GET ; IF_NONE { PUSH nat 0 } {} ; SUB ; ISNAT ; IF_NONE { FAILWITH } { SWAP ; DROP } ; DUP 3 ; DIG 3 ; GET 9 ; DIG 2 ; SOME ; DIG 4 ; UPDATE ; UPDATE 9 ; SWAP } { DIG 2 ; IF { DUP 2 ; DUP 4 ; SWAP ; GET 9 ; SWAP ; GET ; IF_NONE { PUSH nat 0 } {} ; ADD ; DUP 2 ; DIG 2 ; GET 9 ; NONE nat ; DIG 4 ; UPDATE ; UPDATE 9 ; SWAP } { DIG 2 ; DROP } } ; SWAP ; DIG 5 ; GET 8 ; DIG 4 ; DIG 3 ; DIG 5 ; PAIR 4 ; DUP 4 ; CAR ; GET 9 ; DUP 2 ; CAR ; GET 3 ; GET ; IF_NONE { PUSH nat 13 ; FAILWITH } {} ; DUP 5 ; CDR ; DIG 2 ; PAIR ; EXEC ; PUSH nat 0 ; DUP 4 ; COMPARE ; EQ ; IF { SELF_ADDRESS ; CONTRACT %tick unit ; IF_NONE { PUSH string "bad address for get_entrypoint" ; FAILWITH } {} ; PUSH mutez 0 ; UNIT ; TRANSFER_TOKENS } { DUP 4 ; CDR ; CAR ; DUP 4 ; GET ; IF_NONE { PUSH nat 26 ; FAILWITH } {} ; IF_LEFT { IF_LEFT { CAR ; CONTRACT %getBalance (pair (address %owner) (contract nat)) ; IF_NONE { PUSH string "bad address for get_entrypoint" ; FAILWITH } {} ; SELF_ADDRESS ; CONTRACT %onFA12Balance nat ; IF_NONE { PUSH string "bad address for get_entrypoint" ; FAILWITH } {} ; SWAP ; PUSH mutez 0 ; DIG 2 ; SELF_ADDRESS ; PAIR ; TRANSFER_TOKENS } { DUP ; GET 3 ; SELF_ADDRESS ; PAIR ; SELF_ADDRESS ; CONTRACT %onFA2Balance (list (pair (pair %request (address %owner) (nat %token_id)) (nat %balance))) ; IF_NONE { PUSH string "bad address for get_entrypoint" ; FAILWITH } {} ; DIG 2 ; CAR ; CONTRACT %balance_of (pair (list %requests (pair (address %owner) (nat %token_id))) (contract %callback (list (pair (pair %request (address %owner) (nat %token_id)) (nat %balance))))) ; IF_NONE { PUSH string "bad address for get_entrypoint" ; FAILWITH } {} ; PUSH mutez 0 ; DIG 2 ; NIL (pair address nat) ; DIG 4 ; CONS ; PAIR ; TRANSFER_TOKENS } } { DROP ; PUSH nat 3 ; FAILWITH } } ; DUP 3 ; DIG 4 ; UPDATE 11 ; PUSH nat 1 ; DIG 4 ; GET 14 ; ADD ; UPDATE 14 ; DUG 2 ; DUP 4 ; DIG 4 ; CAR ; DIG 4 ; SOME ; UPDATE 5 ; UPDATE 1 ; NIL operation ; DIG 2 ; CONS ; DIG 2 ; NIL operation ; SWAP ; ITER { CONS } ; ITER { CONS } ; PAIR } ; DIG 2 ; UNPAIR ; IF_LEFT { DUP 2 ; CAR ; CAR ; NOT ; NOT ; IF { PUSH nat 4 ; FAILWITH } {} ; DUP 2 ; CAR ; GET 3 ; NOT ; NOT ; IF { PUSH nat 5 ; FAILWITH } {} ; DUP 2 ; CAR ; GET 5 ; IF_NONE {} { DROP ; PUSH nat 31 ; FAILWITH } ; PUSH nat 16 ; SELF_ADDRESS ; DUP 3 ; GET 7 ; COMPARE ; NEQ ; NOT ; IF { FAILWITH } { DROP } ; PUSH nat 0 ; DUP 2 ; GET 9 ; SIZE ; COMPARE ; GT ; NOT ; IF { PUSH nat 17 ; FAILWITH } {} ; DUP ; GET 3 ; DUP 2 ; CAR ; COMPARE ; NEQ ; NOT ; IF { PUSH nat 18 ; FAILWITH } {} ; PUSH nat 0 ; DUP 2 ; GET 5 ; COMPARE ; GT ; NOT ; IF { PUSH nat 19 ; FAILWITH } {} ; PUSH nat 0 ; DUP 2 ; GET 9 ; ITER { CDR ; GET 5 ; ADD } ; PUSH nat 0 ; DUP 2 ; COMPARE ; GT ; NOT ; IF { PUSH nat 20 ; FAILWITH } {} ; PUSH nat 0 ; DUP 3 ; CAR ; COMPARE ; EQ ; IF { PUSH mutez 1 ; DUP 2 ; MUL } { PUSH mutez 0 } ; PUSH nat 21 ; SWAP ; AMOUNT ; COMPARE ; EQ ; NOT ; IF { FAILWITH } { DROP } ; DIG 2 ; PUSH nat 0 ; PUSH nat 0 ; DUP 5 ; CAR ; EMPTY_MAP nat nat ; PUSH nat 0 ; DUP 7 ; DUP 8 ; DUP 10 ; PAIR 8 ; PAIR ; DIG 3 ; SWAP ; EXEC ; UNPAIR ; PUSH nat 0 ; DUP 5 ; CAR ; COMPARE ; NEQ ; IF { DIG 2 ; SELF_ADDRESS ; PAIR ; SENDER ; DUP 4 ; CDR ; CAR ; DIG 5 ; CAR ; GET ; IF_NONE { PUSH nat 26 ; FAILWITH } {} ; PAIR ; PAIR ; DIG 3 ; SWAP ; EXEC ; CONS } { DIG 2 ; DIG 3 ; DIG 4 ; DROP 3 } ; PAIR } { IF_LEFT { DROP ; DUP ; CAR ; GET 5 ; IF_NONE { PUSH nat 12 ; FAILWITH } {} ; DUP ; GET 14 ; DUP 2 ; CAR ; GET 9 ; SIZE ; COMPARE ; EQ ; IF { DIG 2 ; DROP ; PUSH nat 0 ; DUP 2 ; GET 9 ; ITER { CDR ; ADD } ; PUSH nat 0 ; SWAP ; COMPARE ; EQ ; NOT ; IF { PUSH nat 39 ; FAILWITH } {} ; PUSH nat 0 ; DUP 2 ; GET 11 ; COMPARE ; EQ ; IF { PUSH mutez 1 ; BALANCE ; EDIV ; IF_NONE { PUSH string "DIV by 0" ; FAILWITH } {} ; CAR } { DUP ; GET 13 } ; DUP 2 ; CAR ; GET 5 ; DUP 2 ; COMPARE ; GE ; NOT ; IF { PUSH nat 14 ; FAILWITH } {} ; NIL operation ; DUP 2 ; DUP 4 ; CAR ; GET 7 ; PAIR ; SELF_ADDRESS ; DUP 6 ; CDR ; CAR ; DUP 6 ; CAR ; GET 3 ; GET ; IF_NONE { PUSH nat 26 ; FAILWITH } {} ; PAIR ; PAIR ; DUP 6 ; SWAP ; EXEC ; CONS ; PUSH nat 0 ; DUP 4 ; GET 5 ; COMPARE ; GT ; IF { DUP 3 ; GET 5 ; DUP 5 ; CAR ; GET 7 ; CDR ; PAIR ; SELF_ADDRESS ; DUP 6 ; CDR ; CAR ; DUP 6 ; CAR ; CAR ; GET ; IF_NONE { PUSH nat 26 ; FAILWITH } {} ; PAIR ; PAIR ; DIG 5 ; SWAP ; EXEC ; CONS } { DIG 4 ; DROP } ; SWAP ; DUP 3 ; GET 3 ; DUP 4 ; CAR ; GET 3 ; DIG 4 ; CAR ; CAR ; PAIR 4 ; EMIT %swap (pair (nat %token_in_id) (pair (nat %token_out_id) (pair (nat %amount_in) (nat %amount_out)))) ; CONS ; DUP 2 ; DIG 2 ; CAR ; NONE (pair (pair nat (pair nat (pair nat (pair address (pair (map nat (pair nat (pair nat (pair nat (pair nat bytes))))) nat))))) (pair nat (pair nat (pair nat (pair (map nat nat) (pair nat (pair nat nat))))))) ; UPDATE 5 ; UPDATE 1 ; SWAP ; PAIR } { DIG 3 ; DROP ; PAIR ; EXEC } } { IF_LEFT { DIG 2 ; DIG 3 ; DROP 3 ; DUP ; CAR ; GET 5 ; IF_NONE { PUSH nat 12 ; FAILWITH } { DROP } ; NIL operation ; PAIR } { IF_LEFT { IF_CONS { SWAP ; DROP ; SOME } { NONE (pair (pair address nat) nat) } ; IF_NONE { PUSH string "option is None" ; FAILWITH } {} ; CDR ; DUP 2 ; CAR ; GET 5 ; IF_NONE { PUSH nat 12 ; FAILWITH } {} ; PUSH nat 24 ; PUSH nat 1 ; DIG 3 ; SUB ; ISNAT ; IF_NONE { FAILWITH } { SWAP ; DROP } ; UPDATE 13 ; DUP ; GET 14 ; DUP 2 ; CAR ; GET 9 ; SIZE ; COMPARE ; EQ ; IF { DIG 2 ; DROP ; PUSH nat 0 ; DUP 2 ; GET 9 ; ITER { CDR ; ADD } ; PUSH nat 0 ; SWAP ; COMPARE ; EQ ; NOT ; IF { PUSH nat 39 ; FAILWITH } {} ; PUSH nat 0 ; DUP 2 ; GET 11 ; COMPARE ; EQ ; IF { PUSH mutez 1 ; BALANCE ; EDIV ; IF_NONE { PUSH string "DIV by 0" ; FAILWITH } {} ; CAR } { DUP ; GET 13 } ; DUP 2 ; CAR ; GET 5 ; DUP 2 ; COMPARE ; GE ; NOT ; IF { PUSH nat 14 ; FAILWITH } {} ; NIL operation ; DUP 2 ; DUP 4 ; CAR ; GET 7 ; PAIR ; SELF_ADDRESS ; DUP 6 ; CDR ; CAR ; DUP 6 ; CAR ; GET 3 ; GET ; IF_NONE { PUSH nat 26 ; FAILWITH } {} ; PAIR ; PAIR ; DUP 6 ; SWAP ; EXEC ; CONS ; PUSH nat 0 ; DUP 4 ; GET 5 ; COMPARE ; GT ; IF { DUP 3 ; GET 5 ; DUP 5 ; CAR ; GET 7 ; CDR ; PAIR ; SELF_ADDRESS ; DUP 6 ; CDR ; CAR ; DUP 6 ; CAR ; CAR ; GET ; IF_NONE { PUSH nat 26 ; FAILWITH } {} ; PAIR ; PAIR ; DIG 5 ; SWAP ; EXEC ; CONS } { DIG 4 ; DROP } ; SWAP ; DUP 3 ; GET 3 ; DUP 4 ; CAR ; GET 3 ; DIG 4 ; CAR ; CAR ; PAIR 4 ; EMIT %swap (pair (nat %token_in_id) (pair (nat %token_out_id) (pair (nat %amount_in) (nat %amount_out)))) ; CONS ; DUP 2 ; DIG 2 ; CAR ; NONE (pair (pair nat (pair nat (pair nat (pair address (pair (map nat (pair nat (pair nat (pair nat (pair nat bytes))))) nat))))) (pair nat (pair nat (pair nat (pair (map nat nat) (pair nat (pair nat nat))))))) ; UPDATE 5 ; UPDATE 1 ; SWAP ; PAIR } { DIG 3 ; DROP ; PAIR ; EXEC } } { IF_LEFT { DUP 2 ; CAR ; GET 5 ; IF_NONE { PUSH nat 12 ; FAILWITH } {} ; PUSH nat 24 ; PUSH nat 1 ; DIG 3 ; SUB ; ISNAT ; IF_NONE { FAILWITH } { SWAP ; DROP } ; UPDATE 13 ; DUP ; GET 14 ; DUP 2 ; CAR ; GET 9 ; SIZE ; COMPARE ; EQ ; IF { DIG 2 ; DROP ; PUSH nat 0 ; DUP 2 ; GET 9 ; ITER { CDR ; ADD } ; PUSH nat 0 ; SWAP ; COMPARE ; EQ ; NOT ; IF { PUSH nat 39 ; FAILWITH } {} ; PUSH nat 0 ; DUP 2 ; GET 11 ; COMPARE ; EQ ; IF { PUSH mutez 1 ; BALANCE ; EDIV ; IF_NONE { PUSH string "DIV by 0" ; FAILWITH } {} ; CAR } { DUP ; GET 13 } ; DUP 2 ; CAR ; GET 5 ; DUP 2 ; COMPARE ; GE ; NOT ; IF { PUSH nat 14 ; FAILWITH } {} ; NIL operation ; DUP 2 ; DUP 4 ; CAR ; GET 7 ; PAIR ; SELF_ADDRESS ; DUP 6 ; CDR ; CAR ; DUP 6 ; CAR ; GET 3 ; GET ; IF_NONE { PUSH nat 26 ; FAILWITH } {} ; PAIR ; PAIR ; DUP 6 ; SWAP ; EXEC ; CONS ; PUSH nat 0 ; DUP 4 ; GET 5 ; COMPARE ; GT ; IF { DUP 3 ; GET 5 ; DUP 5 ; CAR ; GET 7 ; CDR ; PAIR ; SELF_ADDRESS ; DUP 6 ; CDR ; CAR ; DUP 6 ; CAR ; CAR ; GET ; IF_NONE { PUSH nat 26 ; FAILWITH } {} ; PAIR ; PAIR ; DIG 5 ; SWAP ; EXEC ; CONS } { DIG 4 ; DROP } ; SWAP ; DUP 3 ; GET 3 ; DUP 4 ; CAR ; GET 3 ; DIG 4 ; CAR ; CAR ; PAIR 4 ; EMIT %swap (pair (nat %token_in_id) (pair (nat %token_out_id) (pair (nat %amount_in) (nat %amount_out)))) ; CONS ; DUP 2 ; DIG 2 ; CAR ; NONE (pair (pair nat (pair nat (pair nat (pair address (pair (map nat (pair nat (pair nat (pair nat (pair nat bytes))))) nat))))) (pair nat (pair nat (pair nat (pair (map nat nat) (pair nat (pair nat nat))))))) ; UPDATE 5 ; UPDATE 1 ; SWAP ; PAIR } { DIG 3 ; DROP ; PAIR ; EXEC } } { DIG 2 ; DROP ; IF_LEFT { PUSH nat 6 ; SENDER ; DUP 4 ; CAR ; GET 11 ; COMPARE ; EQ ; NOT ; IF { FAILWITH } { DROP } ; PUSH nat 21 ; PUSH mutez 0 ; AMOUNT ; COMPARE ; EQ ; NOT ; IF { FAILWITH } { DROP } ; IF_LEFT { DIG 2 ; DROP ; DUP 2 ; CDR ; GET 3 ; SWAP ; ITER { UNPAIR ; UPDATE } ; DUP 2 ; DUP 3 ; CDR ; DIG 2 ; UPDATE 3 ; UPDATE 2 ; NIL operation ; PAIR ; PUSH nat 2 } { IF_LEFT { DIG 2 ; DROP ; DUP 2 ; CDR ; CAR ; SWAP ; ITER { UNPAIR ; UPDATE } ; DUP 2 ; DUP 3 ; CDR ; DIG 2 ; UPDATE 1 ; UPDATE 2 ; NIL operation ; PAIR ; PUSH nat 2 } { IF_LEFT { DIG 2 ; DROP ; DUP 2 ; CAR ; GET 9 ; SWAP ; ITER { UNPAIR ; UPDATE } ; DUP 2 ; DUP 3 ; CAR ; DIG 2 ; UPDATE 9 ; UPDATE 1 ; NIL operation ; PAIR ; PUSH nat 2 } { IF_LEFT { DIG 2 ; DROP ; DUP 2 ; DUP 3 ; CAR ; DIG 2 ; UPDATE 13 ; UPDATE 1 ; NIL operation ; PAIR ; PUSH nat 2 } { IF_LEFT { DIG 2 ; DROP ; DUP 2 ; DUP 3 ; CAR ; DIG 2 ; UPDATE 3 ; UPDATE 1 ; NIL operation ; PAIR ; PUSH nat 1 } { IF_LEFT { DIG 2 ; DROP ; NIL operation ; SWAP ; ITER { SWAP ; DUP 3 ; CDR ; CAR ; DUP 3 ; CAR ; GET ; IF_NONE { PUSH nat 10 ; FAILWITH } {} ; PUSH nat 0 ; DUP 4 ; GET 4 ; COMPARE ; GT ; IF { DUP 3 ; GET 4 ; DIG 3 ; GET 3 ; PAIR ; SELF_ADDRESS ; DUG 2 ; UNPAIR ; DIG 2 ; IF_LEFT { IF_LEFT { DIG 3 ; DROP ; CAR ; CONTRACT %approve (pair (address %spender) (nat %value)) ; IF_NONE { PUSH string "bad address for get_entrypoint" ; FAILWITH } {} ; PUSH mutez 0 ; DIG 3 ; DIG 3 ; PAIR ; TRANSFER_TOKENS } { DIG 2 ; DROP ; DUP ; CAR ; CONTRACT %update_operators (list (or (pair %add_operator (address %owner) (pair (address %operator) (nat %token_id))) (pair %remove_operator (address %owner) (pair (address %operator) (nat %token_id))))) ; IF_NONE { PUSH string "bad address for get_entrypoint" ; FAILWITH } {} ; PUSH mutez 0 ; NIL (or (pair address (pair address nat)) (pair address (pair address nat))) ; DIG 3 ; GET 3 ; DIG 4 ; DIG 5 ; PAIR 3 ; LEFT (pair address (pair address nat)) ; CONS ; TRANSFER_TOKENS } } { DROP 4 ; PUSH nat 3 ; FAILWITH } } { DIG 2 ; GET 3 ; SELF_ADDRESS ; DIG 2 ; IF_LEFT { IF_LEFT { SWAP ; DROP ; CAR ; CONTRACT %approve (pair (address %spender) (nat %value)) ; IF_NONE { PUSH string "bad address for get_entrypoint" ; FAILWITH } {} ; PUSH mutez 0 ; PUSH nat 0 ; DIG 3 ; PAIR ; TRANSFER_TOKENS } { DUP ; CAR ; CONTRACT %update_operators (list (or (pair %add_operator (address %owner) (pair (address %operator) (nat %token_id))) (pair %remove_operator (address %owner) (pair (address %operator) (nat %token_id))))) ; IF_NONE { PUSH string "bad address for get_entrypoint" ; FAILWITH } {} ; PUSH mutez 0 ; NIL (or (pair address (pair address nat)) (pair address (pair address nat))) ; DIG 3 ; GET 3 ; DIG 5 ; DIG 5 ; PAIR 3 ; RIGHT (pair address (pair address nat)) ; CONS ; TRANSFER_TOKENS } } { DROP 3 ; PUSH nat 3 ; FAILWITH } } ; CONS } ; DUP 2 ; SWAP ; PAIR ; PUSH nat 2 } { IF_LEFT { NIL operation ; DUP 2 ; CAR ; ITER { SWAP ; PUSH nat 0 ; DUP 3 ; CDR ; COMPARE ; EQ ; IF { SWAP ; DROP } { DUP 2 ; CDR ; DUP 4 ; CDR ; PAIR ; SELF_ADDRESS ; DUP 6 ; CDR ; CAR ; DIG 4 ; CAR ; GET ; IF_NONE { PUSH nat 9 ; FAILWITH } {} ; PAIR ; PAIR ; DUP 5 ; SWAP ; EXEC ; CONS } } ; SWAP ; DIG 3 ; DROP 2 ; DUP 2 ; SWAP ; PAIR ; PUSH nat 0 } { DIG 2 ; DROP ; IF_LEFT { DUP 2 ; DUP 3 ; CAR ; DUP 3 ; CDR ; IF_NONE { DUP 4 ; CAR ; GET 7 ; CDR } {} ; DIG 3 ; CAR ; IF_NONE { DUP 4 ; CAR ; GET 7 ; CAR } {} ; PAIR ; UPDATE 7 ; UPDATE 1 ; NIL operation ; PAIR ; PUSH nat 2 } { IF_LEFT { DUP 2 ; CDR ; GET 4 ; DUP 2 ; COMPARE ; NEQ ; NOT ; IF { PUSH nat 11 ; FAILWITH } {} ; DUP 2 ; DUP 3 ; CDR ; DIG 2 ; UPDATE 4 ; UPDATE 2 ; NIL operation ; PAIR ; PUSH nat 2 } { PUSH nat 27 ; SELF_ADDRESS ; DUP 3 ; COMPARE ; NEQ ; NOT ; IF { FAILWITH } { DROP } ; DUP 2 ; CAR ; GET 14 ; GET 3 ; DUP 2 ; SOME ; COMPARE ; NEQ ; NOT ; IF { PUSH nat 28 ; FAILWITH } {} ; DUP 2 ; DUP 3 ; CAR ; PUSH bool True ; UPDATE 1 ; PUSH bool False ; UPDATE 3 ; DUP 4 ; CAR ; GET 14 ; DIG 3 ; SOME ; UPDATE 4 ; UPDATE 14 ; UPDATE 1 ; NIL operation ; PAIR ; PUSH nat 1 } } } } } } } } } ; PUSH nat 0 ; DUP 2 ; COMPARE ; GT ; IF { DUP 3 ; CAR ; CAR ; NOT ; NOT ; IF { PUSH nat 4 ; FAILWITH } {} } {} ; PUSH nat 1 ; SWAP ; COMPARE ; GT ; IF { SWAP ; CAR ; GET 3 ; NOT ; NOT ; IF { PUSH nat 5 ; FAILWITH } {} } { SWAP ; DROP } } { DIG 2 ; DROP 2 ; PUSH nat 21 ; PUSH mutez 0 ; AMOUNT ; COMPARE ; EQ ; NOT ; IF { FAILWITH } { DROP } ; DUP ; CAR ; GET 13 ; IF_NONE { PUSH nat 7 ; FAILWITH } {} ; PUSH nat 8 ; SENDER ; DUP 3 ; COMPARE ; EQ ; NOT ; IF { FAILWITH } { DROP } ; DUP 2 ; DIG 2 ; CAR ; DIG 2 ; UPDATE 11 ; NONE address ; UPDATE 13 ; UPDATE 1 ; NIL operation ; PAIR } } } } } } } ; view "getToken" nat (option (or (or (pair %fa12 (address %contract_address) (nat %decimals)) (pair %fa2 (address %contract_address) (pair (nat %fa2_id) (nat %decimals)))) (nat %xtz))) { UNPAIR ; SWAP ; CDR ; CAR ; SWAP ; GET } ; view "getDex" nat (option (pair (address %contract_address) (pair (nat %provider) (pair (nat %token1_id) (pair (nat %token2_id) (bytes %options)))))) { UNPAIR ; SWAP ; CDR ; GET 3 ; SWAP ; GET } }