x
618
1348
{ 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 (option %amount_opt nat) (pair (nat %dex_id) (pair (nat %code) (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 (nat %min_out) (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 (option %amount_opt nat) (pair (nat %dex_id) (pair (nat %code) (bytes %params))))) (nat %app_id)))))) (pair (nat %amount_in) (pair (nat %token_in_reserved) (pair (nat %token_out_reserved) (pair (map %intermediate_tokens_reserved nat nat) (pair (nat %next_token_id) (pair (nat %balance) (pair (nat %iter_num) (nat %current_fee)))))))))) (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 (nat %min_out) (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 (lambda (pair (pair (or (or (pair address nat) (pair address (pair nat nat))) nat) address) (pair address nat)) operation) (pair (pair bool (pair bool (pair (option (pair (pair nat (pair nat (pair nat (pair address (pair (map nat (pair (option nat) (pair nat (pair nat bytes)))) nat))))) (pair nat (pair nat (pair nat (pair (map nat nat) (pair 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 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 (option nat) (pair nat (pair nat bytes)))) nat))))) (pair nat (pair nat (pair nat (pair (map nat nat) (pair 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 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 ; SWAP ; DUP ; CAR ; GET 5 ; IF_NONE { PUSH nat 12 ; FAILWITH } {} ; DUP ; GET 15 ; DUP 2 ; CAR ; GET 9 ; SIZE ; COMPARE ; EQ ; IF { 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 ; LT ; IF { DROP 4 ; 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 16 ; COMPARE ; GT ; IF { DUP 3 ; GET 16 ; 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 (option nat) (pair nat (pair nat bytes)))) nat))))) (pair nat (pair nat (pair nat (pair (map nat nat) (pair nat (pair nat (pair nat nat)))))))) ; UPDATE 5 ; UPDATE 1 ; SWAP ; PAIR } } { DIG 2 ; DROP ; DUP ; CAR ; GET 9 ; DUP 2 ; GET 15 ; GET ; IF_NONE { PUSH string "option is None" ; FAILWITH } {} ; PUSH nat 2 ; PUSH nat 2 ; DUP 3 ; GET 5 ; AND ; COMPARE ; EQ ; PUSH nat 1 ; PUSH nat 1 ; DUP 4 ; GET 5 ; AND ; COMPARE ; EQ ; PUSH nat 4 ; PUSH nat 4 ; DUP 5 ; GET 5 ; AND ; COMPARE ; EQ ; PUSH nat 0 ; DUP 6 ; GET 11 ; COMPARE ; EQ ; IF { PUSH mutez 1 ; BALANCE ; EDIV ; IF_NONE { PUSH string "DIV by 0" ; FAILWITH } {} ; CAR } { DUP 5 ; GET 13 } ; DIG 5 ; DIG 3 ; IF { DUP 5 ; CAR ; IF_NONE { PUSH nat 23 ; FAILWITH } {} ; DUP 7 ; CAR ; GET 7 ; CAR ; DUP 2 ; PUSH nat 10000000000 ; DUG 2 ; MUL ; EDIV ; IF_NONE { PUSH string "DIV by 0" ; FAILWITH } {} ; CAR ; PUSH nat 24 ; DUP 2 ; DIG 3 ; SUB ; PUSH int 0 ; DUP 2 ; COMPARE ; LT ; IF { DROP ; FAILWITH } { SWAP ; DROP ; ABS } ; SWAP ; DUP 3 ; CAR ; GET 3 ; DUP 4 ; GET 11 ; COMPARE ; NEQ ; PUSH nat 0 ; DUP 5 ; GET 15 ; COMPARE ; NEQ ; AND ; DUP 4 ; PUSH nat 25 ; DUP 5 ; DUP 7 ; GET 5 ; SUB ; PUSH int 0 ; DUP 2 ; COMPARE ; LT ; IF { DROP ; FAILWITH } { SWAP ; DROP ; ABS } ; UPDATE 5 ; DUP 5 ; CAR ; GET 3 ; DUP 6 ; GET 11 ; COMPARE ; EQ ; IF { DUP 6 } { DUP 5 ; GET 7 } ; UPDATE 7 ; SWAP ; IF { DUP 4 ; DIG 5 ; DUP 2 ; CAR ; CAR ; DUP 3 ; GET 11 ; COMPARE ; EQ ; IF { PUSH nat 25 ; DUP 3 ; GET 5 ; DIG 2 ; SUB ; PUSH int 0 ; DUP 2 ; COMPARE ; LT ; IF { DROP ; FAILWITH } { SWAP ; DROP ; ABS } } {} ; DUP 2 ; GET 9 ; SWAP ; SOME ; DIG 2 ; GET 11 ; UPDATE } { DIG 4 ; DROP ; DUP 4 ; GET 9 } ; UPDATE 9 ; SWAP ; DIG 3 ; GET 16 ; ADD ; UPDATE 16 ; SWAP ; DIG 2 ; IF { DUP 2 ; DUP 3 ; CAR ; CAR ; SWAP ; GET 9 ; SWAP ; GET ; IF_NONE { PUSH nat 0 } {} ; ADD ; DUP 2 ; DUP 3 ; GET 9 ; NONE nat ; DIG 4 ; CAR ; CAR ; UPDATE ; UPDATE 9 ; SWAP } {} } { SWAP ; DUP 2 ; CAR ; GET 3 ; DUP 3 ; GET 11 ; COMPARE ; EQ ; IF { DIG 2 ; DROP ; PUSH nat 24 ; DUP 3 ; GET 7 ; DIG 2 ; SUB ; PUSH int 0 ; DUP 2 ; COMPARE ; LT ; IF { DROP ; FAILWITH } { SWAP ; DROP ; ABS } } { DUP 2 ; CAR ; CAR ; DUP 3 ; GET 11 ; COMPARE ; EQ ; IF { PUSH nat 24 ; DUP 3 ; GET 5 ; DIG 2 ; SUB ; PUSH int 0 ; DUP 2 ; COMPARE ; LT ; IF { DROP ; FAILWITH } { SWAP ; DROP ; ABS } } {} ; DIG 2 ; IF { DUP 2 ; DUP 3 ; GET 9 ; NONE nat ; DIG 4 ; GET 11 ; UPDATE ; UPDATE 9 ; SWAP } { PUSH nat 24 ; DUP 3 ; DUP 4 ; GET 11 ; SWAP ; GET 9 ; SWAP ; GET ; IF_NONE { PUSH nat 0 } {} ; DIG 2 ; SUB ; PUSH int 0 ; DUP 2 ; COMPARE ; LT ; IF { DROP ; FAILWITH } { SWAP ; DROP ; ABS } } } } ; SWAP ; DUP 5 ; CDR ; GET 3 ; DUP 5 ; GET 3 ; GET ; IF_NONE { PUSH nat 15 ; FAILWITH } {} ; DUP 4 ; IF { DUP ; GET 7 } { DUP ; GET 5 } ; DUP 3 ; DUP 2 ; UPDATE 11 ; PUSH nat 1 ; DIG 4 ; GET 15 ; ADD ; UPDATE 15 ; DUG 2 ; DIG 5 ; GET 6 ; DIG 5 ; PUSH nat 1 ; DIG 6 ; DIG 5 ; PAIR 5 ; 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 ; GET 11 ; COMPARE ; EQ ; IF { SWAP ; DROP ; 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 ; DIG 2 ; GET ; IF_NONE { PUSH string "option is None" ; 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 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 } } ; DUP 2 ; APPLY ; 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 ; CAR ; IF_NONE { PUSH nat 0 } {} ; 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 } ; DUP 3 ; DUP 4 ; CAR ; PUSH nat 0 ; PUSH nat 0 ; PUSH nat 0 ; DUP 7 ; CAR ; EMPTY_MAP nat nat ; PUSH nat 0 ; DUP 9 ; DUP 10 ; DUP 12 ; PAIR 9 ; SOME ; UPDATE 5 ; UPDATE 1 ; DIG 4 ; SWAP ; EXEC ; UNPAIR ; PUSH nat 0 ; DUP 5 ; CAR ; COMPARE ; NEQ ; IF { DIG 2 ; SELF_ADDRESS ; PAIR ; SENDER ; DIG 5 ; 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 ; DIG 5 ; DROP 4 } ; PAIR } { IF_LEFT { DIG 3 ; DROP 2 ; 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 { DIG 3 ; DROP ; 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 1 ; DIG 2 ; SUB ; PUSH int 0 ; DUP 2 ; COMPARE ; LT ; IF { DROP ; PUSH nat 24 ; FAILWITH } { ABS } ; UPDATE 13 ; DUP 2 ; DIG 2 ; CAR ; DIG 2 ; SOME ; UPDATE 5 ; UPDATE 1 ; EXEC } { IF_LEFT { DIG 3 ; DROP ; DUP 2 ; CAR ; GET 5 ; IF_NONE { PUSH nat 12 ; FAILWITH } {} ; PUSH nat 1 ; DIG 2 ; SUB ; PUSH int 0 ; DUP 2 ; COMPARE ; LT ; IF { DROP ; PUSH nat 24 ; FAILWITH } { ABS } ; UPDATE 13 ; DUP 2 ; DIG 2 ; CAR ; DIG 2 ; SOME ; UPDATE 5 ; UPDATE 1 ; EXEC } { DIG 2 ; DROP ; IF_LEFT { PUSH nat 6 ; SENDER ; DUP 4 ; CAR ; GET 11 ; COMPARE ; EQ ; NOT ; IF { FAILWITH } { DROP } ; IF_LEFT { DIG 2 ; DROP ; 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 ; CDR ; GET 3 ; SWAP ; ITER { UNPAIR ; UPDATE } ; DUP 2 ; DIG 2 ; CDR ; DIG 2 ; UPDATE 3 ; UPDATE 2 ; NIL operation } { IF_LEFT { DIG 2 ; DROP ; 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 ; CDR ; CAR ; SWAP ; ITER { UNPAIR ; UPDATE } ; DUP 2 ; DIG 2 ; CDR ; DIG 2 ; UPDATE 1 ; UPDATE 2 ; NIL operation } { IF_LEFT { DIG 2 ; DROP ; 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 9 ; SWAP ; ITER { UNPAIR ; UPDATE } ; DUP 2 ; DIG 2 ; CAR ; DIG 2 ; UPDATE 9 ; UPDATE 1 ; NIL operation } { IF_LEFT { DIG 2 ; DROP ; 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 ; DIG 2 ; CAR ; DIG 2 ; UPDATE 13 ; UPDATE 1 ; NIL operation } { IF_LEFT { DIG 2 ; DROP ; DUP 2 ; CAR ; CAR ; NOT ; NOT ; IF { PUSH nat 4 ; FAILWITH } {} ; DUP 2 ; DIG 2 ; CAR ; DIG 2 ; UPDATE 3 ; UPDATE 1 ; NIL operation } { IF_LEFT { DIG 2 ; DROP ; DUP 2 ; CAR ; CAR ; NOT ; NOT ; IF { PUSH nat 4 ; FAILWITH } {} ; DUP 2 ; CAR ; GET 3 ; NOT ; NOT ; IF { PUSH nat 5 ; FAILWITH } {} ; 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 } } { 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 } { DIG 2 ; DROP ; 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 ; DUP 3 ; CAR ; DUP 3 ; CDR ; IF_NONE { DUP 4 ; CAR ; GET 7 ; CDR } {} ; DIG 3 ; CAR ; IF_NONE { DIG 3 ; CAR ; GET 7 ; CAR } { DIG 4 ; DROP } ; PAIR ; UPDATE 7 ; UPDATE 1 } { 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 ; CDR ; GET 4 ; DUP 2 ; COMPARE ; NEQ ; NOT ; IF { PUSH nat 11 ; FAILWITH } {} ; DUP 2 ; DIG 2 ; CDR ; DIG 2 ; UPDATE 4 ; UPDATE 2 } { DUP 2 ; CAR ; CAR ; NOT ; NOT ; IF { PUSH nat 4 ; FAILWITH } {} ; 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 ; DIG 3 ; CAR ; GET 14 ; DIG 3 ; SOME ; UPDATE 4 ; UPDATE 14 ; UPDATE 1 } } ; NIL operation } } } } } } } } { DIG 2 ; DROP 2 ; 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 } }