x
929
1117
parameter (or
(or
(or
(pair %balance_of
(list %requests (pair (address %owner) (nat %token_id)))
(contract %callback (list (pair
(pair %request (address %owner)
(nat %token_id))
(nat %balance)))))
(nat %mint))
(or (pair %mutez_transfer (mutez %amount) (address %destination))
(or
(pair %reveal (nat %endIndex)
(pair (string %revealed_folder_hash) (nat %startIndex)))
(address %set_administrator))))
(or
(or (pair %set_metadata (string %k) (bytes %v))
(or (bool %set_pause) (unit %start_sale)))
(or
(list %transfer (pair (address %from_)
(list %txs (pair (address %to_)
(pair (nat %token_id) (nat %amount))))))
(or (mutez %update_mint_price)
(list %update_operators (or
(pair %add_operator (address %owner)
(pair
(address %operator)
(nat %token_id)))
(pair %remove_operator (address %owner)
(pair
(address %operator)
(nat %token_id)))))))));
storage (pair
(pair
(pair (nat %adminAllocation)
(pair (address %administrator) (set %all_tokens nat)))
(pair (big_map %ledger (pair address nat) nat)
(pair (nat %maxMintQty) (nat %maxSupply))))
(pair
(pair (big_map %metadata string bytes)
(pair (nat %mintIndex)
(big_map %operators
(pair (address %owner)
(pair (address %operator) (nat %token_id)))
unit)))
(pair (pair (bool %paused) (mutez %publicSalePrice))
(pair (string %templateIPFSPath)
(big_map %token_metadata nat
(pair (nat %token_id)
(map %token_info string bytes)))))));
code { CAST (pair
(or
(or
(or
(pair (list (pair address nat))
(contract (list (pair (pair address nat) nat))))
nat)
(or (pair mutez address) (or (pair nat (pair string nat)) address)))
(or (or (pair string bytes) (or bool unit))
(or (list (pair address (list (pair address (pair nat nat)))))
(or mutez
(list (or (pair address (pair address nat))
(pair address (pair address nat))))))))
(pair
(pair (pair nat (pair address (set nat)))
(pair (big_map (pair address nat) nat) (pair nat nat)))
(pair
(pair (big_map string bytes)
(pair nat (big_map (pair address (pair address nat)) unit)))
(pair (pair bool mutez)
(pair string (big_map nat (pair nat (map string bytes)))))))) ;
LAMBDA
nat
string
{ DUP ;
NIL string ;
PUSH nat 0 ;
DUP 3 ;
COMPARE ;
EQ ;
IF { PUSH string "0" ; CONS } {} ;
PUSH nat 0 ;
DUP 3 ;
COMPARE ;
GT ;
LOOP { PUSH (map nat string) { Elt 0 "0" ;
Elt 1 "1" ;
Elt 2 "2" ;
Elt 3 "3" ;
Elt 4 "4" ;
Elt 5 "5" ;
Elt 6 "6" ;
Elt 7 "7" ;
Elt 8 "8" ;
Elt 9 "9" } ;
PUSH nat 10 ;
DUP 4 ;
EDIV ;
IF_NONE { PUSH int 65 ; FAILWITH } { CDR } ;
GET ;
IF_NONE { PUSH int 65 ; FAILWITH } {} ;
CONS ;
PUSH nat 10 ;
DIG 2 ;
EDIV ;
IF_NONE { PUSH int 66 ; FAILWITH } { CAR } ;
SWAP ;
PUSH nat 0 ;
DUP 3 ;
COMPARE ;
GT } ;
SWAP ;
DROP ;
SWAP ;
DROP ;
CONCAT } ;
SWAP ;
LAMBDA
(pair (pair address mutez)
(pair (list operation)
(pair
(pair (pair nat (pair address (set nat)))
(pair (big_map (pair address nat) nat) (pair nat nat)))
(pair
(pair (big_map string bytes)
(pair nat
(big_map (pair address (pair address nat)) unit)))
(pair (pair bool mutez)
(pair string (big_map nat (pair nat (map string bytes)))))))))
(pair unit
(pair (list operation)
(pair
(pair (pair nat (pair address (set nat)))
(pair (big_map (pair address nat) nat) (pair nat nat)))
(pair
(pair (big_map string bytes)
(pair nat
(big_map (pair address (pair address nat)) unit)))
(pair (pair bool mutez)
(pair string (big_map nat (pair nat (map string bytes)))))))))
{ UNPAIR 3 ;
SWAP ;
PUSH mutez 0 ;
DUP 3 ;
CDR ;
COMPARE ;
GT ;
IF {} { PUSH string "INVALID_AMOUNT[AMOUNT<0]" ; FAILWITH } ;
SWAP ;
DUP ;
DUG 2 ;
CAR ;
CONTRACT unit ;
IF_NONE { PUSH string "CANT_SEND_AMOUNT" ; FAILWITH } {} ;
DIG 2 ;
CDR ;
UNIT ;
TRANSFER_TOKENS ;
CONS ;
UNIT ;
PAIR 3 } ;
SWAP ;
UNPAIR ;
IF_LEFT
{ IF_LEFT
{ IF_LEFT
{ SWAP ;
DUP ;
DUG 2 ;
GET 5 ;
CAR ;
IF { PUSH string "FA2_PAUSED" ; FAILWITH } {} ;
DUP ;
CAR ;
MAP { DUP 3 ;
GET 8 ;
SWAP ;
DUP ;
DUG 2 ;
CDR ;
MEM ;
IF {} { PUSH string "FA2_TOKEN_UNDEFINED" ; FAILWITH } ;
DUP 3 ;
CAR ;
GET 3 ;
SWAP ;
DUP ;
CDR ;
SWAP ;
DUP ;
DUG 3 ;
CAR ;
PAIR ;
MEM ;
IF
{ DUP 3 ;
CAR ;
GET 3 ;
SWAP ;
DUP ;
CDR ;
SWAP ;
DUP ;
DUG 3 ;
CAR ;
PAIR ;
GET ;
IF_NONE { PUSH int 425 ; FAILWITH } {} ;
SWAP ;
PAIR }
{ PUSH nat 0 ; SWAP ; PAIR } } ;
DIG 3 ;
DROP ;
DIG 3 ;
DROP ;
NIL operation ;
DIG 2 ;
CDR ;
PUSH mutez 0 ;
DIG 3 ;
TRANSFER_TOKENS ;
CONS }
{ SWAP ;
DUP ;
DUG 2 ;
GET 5 ;
CAR ;
IF { PUSH string "FA2_PAUSED" ; FAILWITH } {} ;
SWAP ;
DUP ;
DUG 2 ;
CAR ;
GET 5 ;
SWAP ;
DUP ;
DUG 2 ;
COMPARE ;
LE ;
IF {} { PUSH string "FA2_MINT_QTY_TOO_LARGE" ; FAILWITH } ;
SENDER ;
DUP 3 ;
CAR ;
CAR ;
GET 3 ;
COMPARE ;
NEQ ;
IF
{ DUP ;
DUP 3 ;
GET 5 ;
CDR ;
MUL ;
AMOUNT ;
COMPARE ;
EQ ;
IF {} { PUSH string "FA2_INVALID_AMOUNT" ; FAILWITH } }
{} ;
DUP ;
PUSH nat 0 ;
DUP ;
DUP 3 ;
COMPARE ;
GT ;
LOOP { DIG 3 ;
DUP ;
CAR ;
GET 6 ;
SWAP ;
DUP ;
DUG 5 ;
GET 3 ;
GET 3 ;
COMPARE ;
GE ;
IF { PUSH string "FA2_MAX_SUPPLY_HIT" ; FAILWITH } {} ;
DIG 3 ;
DUP ;
CAR ;
GET 3 ;
SWAP ;
DUP ;
DUG 5 ;
GET 3 ;
GET 3 ;
SENDER ;
PAIR ;
MEM ;
IF
{ DUP 4 ;
UNPAIR ;
UNPAIR ;
SWAP ;
UNPAIR ;
DUP ;
DIG 8 ;
GET 3 ;
GET 3 ;
SENDER ;
PAIR ;
DUP ;
DUG 2 ;
GET ;
IF_NONE { PUSH int 84 ; FAILWITH } {} ;
PUSH nat 1 ;
ADD ;
SOME ;
SWAP ;
UPDATE ;
PAIR ;
SWAP ;
PAIR ;
PAIR ;
DUG 3 }
{ DUP 4 ;
UNPAIR ;
UNPAIR ;
SWAP ;
UNPAIR ;
PUSH (option nat) (Some 1) ;
DIG 8 ;
GET 3 ;
GET 3 ;
SENDER ;
PAIR ;
UPDATE ;
PAIR ;
SWAP ;
PAIR ;
PAIR ;
DUG 3 } ;
DIG 3 ;
DUP ;
CAR ;
CAR ;
GET 4 ;
SWAP ;
DUP ;
DUG 5 ;
GET 3 ;
GET 3 ;
MEM ;
IF
{}
{ DUP 4 ;
UNPAIR ;
UNPAIR ;
UNPAIR ;
SWAP ;
UNPAIR ;
SWAP ;
PUSH bool True ;
DIG 9 ;
GET 3 ;
GET 3 ;
UPDATE ;
SWAP ;
PAIR ;
SWAP ;
PAIR ;
PAIR ;
PAIR ;
DUP ;
DUG 4 ;
DUP ;
GET 8 ;
EMPTY_MAP string bytes ;
PUSH string ".json" ;
DUP 10 ;
DUP 9 ;
GET 3 ;
GET 3 ;
EXEC ;
PUSH string "/" ;
DUP 10 ;
GET 7 ;
PUSH string "ipfs://" ;
CONCAT ;
CONCAT ;
CONCAT ;
CONCAT ;
PACK ;
SOME ;
PUSH string "" ;
UPDATE ;
DUP 7 ;
GET 3 ;
GET 3 ;
PAIR ;
SOME ;
DIG 6 ;
GET 3 ;
GET 3 ;
UPDATE ;
UPDATE 8 ;
DUG 3 } ;
DIG 3 ;
UNPAIR ;
SWAP ;
UNPAIR ;
UNPAIR ;
SWAP ;
UNPAIR ;
PUSH nat 1 ;
ADD ;
PAIR ;
SWAP ;
PAIR ;
PAIR ;
SWAP ;
PAIR ;
DUG 3 ;
PUSH nat 1 ;
ADD ;
DUP ;
DUP 3 ;
COMPARE ;
GT } ;
DROP 3 ;
DIG 2 ;
DROP ;
PUSH mutez 0 ;
AMOUNT ;
COMPARE ;
GT ;
IF
{ NIL operation ;
DIG 2 ;
AMOUNT ;
DUP 4 ;
CAR ;
CAR ;
GET 3 ;
PAIR ;
SWAP ;
DUG 3 ;
PAIR 3 ;
EXEC ;
CDR ;
UNPAIR }
{ SWAP ; DROP ; NIL operation } } }
{ IF_LEFT
{ DIG 2 ;
DROP ;
DIG 2 ;
DROP ;
SWAP ;
DUP ;
DUG 2 ;
CAR ;
CAR ;
GET 3 ;
SENDER ;
COMPARE ;
EQ ;
IF {} { PUSH int 325 ; FAILWITH } ;
DUP ;
CDR ;
CONTRACT unit ;
IF_NONE { PUSH int 328 ; FAILWITH } {} ;
NIL operation ;
SWAP ;
DIG 2 ;
CAR ;
UNIT ;
TRANSFER_TOKENS ;
CONS }
{ IF_LEFT
{ SENDER ;
DUP 3 ;
CAR ;
CAR ;
GET 3 ;
COMPARE ;
NEQ ;
IF { PUSH string "FA2_NOT_OWNER" ; FAILWITH } {} ;
SWAP ;
DUP ;
DUG 2 ;
GET 3 ;
GET 3 ;
SWAP ;
DUP ;
DUG 2 ;
CAR ;
COMPARE ;
LT ;
IF {} { PUSH string "FA2_END_INDEX_TOO_BIG" ; FAILWITH } ;
DUP ;
DUG 2 ;
GET 3 ;
UPDATE 7 ;
SWAP ;
DUP ;
CAR ;
PUSH nat 1 ;
ADD ;
SWAP ;
DUP ;
DUG 2 ;
GET 4 ;
DUP ;
DUP 3 ;
COMPARE ;
GT ;
LOOP { DIG 3 ;
DUP ;
GET 8 ;
DUP ;
DUP 4 ;
DUP ;
DUG 2 ;
GET ;
IF_NONE { PUSH int 162 ; FAILWITH } {} ;
DUP ;
CDR ;
PUSH string ".json" ;
DUP 11 ;
DUP 8 ;
EXEC ;
PUSH string "/" ;
DUP 11 ;
GET 3 ;
PUSH string "ipfs://" ;
CONCAT ;
CONCAT ;
CONCAT ;
CONCAT ;
PACK ;
SOME ;
PUSH string "" ;
UPDATE ;
UPDATE 2 ;
SOME ;
SWAP ;
UPDATE ;
UPDATE 8 ;
DUG 3 ;
PUSH nat 1 ;
ADD ;
DUP ;
DUP 3 ;
COMPARE ;
GT } ;
DROP 3 ;
SWAP ;
DROP ;
SWAP ;
DROP }
{ DIG 2 ;
DROP ;
DIG 2 ;
DROP ;
SWAP ;
DUP ;
DUG 2 ;
CAR ;
CAR ;
GET 3 ;
SENDER ;
COMPARE ;
EQ ;
IF {} { PUSH string "FA2_NOT_ADMIN" ; FAILWITH } ;
SWAP ;
UNPAIR ;
UNPAIR ;
UNPAIR ;
SWAP ;
CDR ;
DIG 4 ;
PAIR ;
SWAP ;
PAIR ;
PAIR ;
PAIR } ;
NIL operation } } }
{ IF_LEFT
{ IF_LEFT
{ DIG 2 ;
DROP ;
DIG 2 ;
DROP ;
SWAP ;
DUP ;
DUG 2 ;
CAR ;
CAR ;
GET 3 ;
SENDER ;
COMPARE ;
EQ ;
IF {} { PUSH string "FA2_NOT_ADMIN" ; FAILWITH } ;
SWAP ;
UNPAIR ;
SWAP ;
UNPAIR ;
UNPAIR ;
DUP 5 ;
CDR ;
SOME ;
DIG 5 ;
CAR ;
UPDATE ;
PAIR ;
PAIR ;
SWAP ;
PAIR }
{ IF_LEFT
{ DIG 2 ;
DROP ;
DIG 2 ;
DROP ;
SWAP ;
DUP ;
DUG 2 ;
CAR ;
CAR ;
GET 3 ;
SENDER ;
COMPARE ;
EQ ;
IF {} { PUSH string "FA2_NOT_ADMIN" ; FAILWITH } ;
SWAP ;
UNPAIR ;
SWAP ;
UNPAIR ;
SWAP ;
UNPAIR ;
CDR ;
DIG 4 ;
PAIR ;
PAIR ;
SWAP ;
PAIR ;
SWAP ;
PAIR }
{ SENDER ;
DUP 3 ;
CAR ;
CAR ;
GET 3 ;
COMPARE ;
NEQ ;
IF { PUSH string "FA2_NOT_OWNER" ; FAILWITH } {} ;
PUSH nat 0 ;
DUP 3 ;
GET 3 ;
GET 3 ;
COMPARE ;
NEQ ;
IF { PUSH string "FA2_SALE_ALREADY_STARTED" ; FAILWITH } {} ;
SWAP ;
UNPAIR ;
SWAP ;
UNPAIR ;
SWAP ;
UNPAIR ;
CDR ;
PUSH bool False ;
PAIR ;
PAIR ;
SWAP ;
PAIR ;
SWAP ;
PAIR ;
DUP ;
DUG 2 ;
CAR ;
CAR ;
CAR ;
PUSH nat 0 ;
DUP ;
DUP 3 ;
COMPARE ;
GT ;
LOOP { DIG 3 ;
DUP ;
CAR ;
GET 6 ;
SWAP ;
DUP ;
DUG 5 ;
GET 3 ;
GET 3 ;
COMPARE ;
GE ;
IF { PUSH string "FA2_MAX_SUPPLY_HIT" ; FAILWITH } {} ;
DIG 3 ;
DUP ;
CAR ;
GET 3 ;
SWAP ;
DUP ;
DUG 5 ;
GET 3 ;
GET 3 ;
SENDER ;
PAIR ;
MEM ;
IF
{ DUP 4 ;
UNPAIR ;
UNPAIR ;
SWAP ;
UNPAIR ;
DUP ;
DIG 8 ;
GET 3 ;
GET 3 ;
SENDER ;
PAIR ;
DUP ;
DUG 2 ;
GET ;
IF_NONE { PUSH int 84 ; FAILWITH } {} ;
PUSH nat 1 ;
ADD ;
SOME ;
SWAP ;
UPDATE ;
PAIR ;
SWAP ;
PAIR ;
PAIR ;
DUG 3 }
{ DUP 4 ;
UNPAIR ;
UNPAIR ;
SWAP ;
UNPAIR ;
PUSH (option nat) (Some 1) ;
DIG 8 ;
GET 3 ;
GET 3 ;
SENDER ;
PAIR ;
UPDATE ;
PAIR ;
SWAP ;
PAIR ;
PAIR ;
DUG 3 } ;
DIG 3 ;
DUP ;
CAR ;
CAR ;
GET 4 ;
SWAP ;
DUP ;
DUG 5 ;
GET 3 ;
GET 3 ;
MEM ;
IF
{}
{ DUP 4 ;
UNPAIR ;
UNPAIR ;
UNPAIR ;
SWAP ;
UNPAIR ;
SWAP ;
PUSH bool True ;
DIG 9 ;
GET 3 ;
GET 3 ;
UPDATE ;
SWAP ;
PAIR ;
SWAP ;
PAIR ;
PAIR ;
PAIR ;
DUP ;
DUG 4 ;
DUP ;
GET 8 ;
EMPTY_MAP string bytes ;
PUSH string ".json" ;
DUP 10 ;
DUP 9 ;
GET 3 ;
GET 3 ;
EXEC ;
PUSH string "/" ;
DUP 10 ;
GET 7 ;
PUSH string "ipfs://" ;
CONCAT ;
CONCAT ;
CONCAT ;
CONCAT ;
PACK ;
SOME ;
PUSH string "" ;
UPDATE ;
DUP 7 ;
GET 3 ;
GET 3 ;
PAIR ;
SOME ;
DIG 6 ;
GET 3 ;
GET 3 ;
UPDATE ;
UPDATE 8 ;
DUG 3 } ;
DIG 3 ;
UNPAIR ;
SWAP ;
UNPAIR ;
UNPAIR ;
SWAP ;
UNPAIR ;
PUSH nat 1 ;
ADD ;
PAIR ;
SWAP ;
PAIR ;
PAIR ;
SWAP ;
PAIR ;
DUG 3 ;
PUSH nat 1 ;
ADD ;
DUP ;
DUP 3 ;
COMPARE ;
GT } ;
DROP 3 ;
SWAP ;
DROP ;
SWAP ;
DROP } } }
{ DIG 2 ;
DROP ;
DIG 2 ;
DROP ;
IF_LEFT
{ SWAP ;
DUP ;
DUG 2 ;
GET 5 ;
CAR ;
IF { PUSH string "FA2_PAUSED" ; FAILWITH } {} ;
DUP ;
ITER { DUP ;
CDR ;
ITER { DUP 4 ;
CAR ;
CAR ;
GET 3 ;
SENDER ;
COMPARE ;
EQ ;
IF
{ PUSH bool True }
{ SENDER ; DUP 3 ; CAR ; COMPARE ; EQ } ;
IF
{ PUSH bool True }
{ DUP 4 ;
GET 3 ;
GET 4 ;
SWAP ;
DUP ;
DUG 2 ;
GET 3 ;
SENDER ;
DUP 5 ;
CAR ;
PAIR 3 ;
MEM } ;
IF {} { PUSH string "FA2_NOT_OPERATOR" ; FAILWITH } ;
DUP 4 ;
GET 8 ;
SWAP ;
DUP ;
DUG 2 ;
GET 3 ;
MEM ;
IF
{}
{ PUSH string "FA2_TOKEN_UNDEFINED" ; FAILWITH } ;
DUP ;
GET 4 ;
PUSH nat 0 ;
COMPARE ;
LT ;
IF
{ DUP ;
GET 4 ;
DUP 5 ;
CAR ;
GET 3 ;
DUP 3 ;
GET 3 ;
DUP 5 ;
CAR ;
PAIR ;
GET ;
IF_NONE { PUSH int 404 ; FAILWITH } {} ;
COMPARE ;
GE ;
IF
{}
{ PUSH string "FA2_INSUFFICIENT_BALANCE" ;
FAILWITH } ;
DUP 4 ;
UNPAIR ;
UNPAIR ;
SWAP ;
UNPAIR ;
DUP ;
DUP 6 ;
GET 3 ;
DUP 8 ;
CAR ;
PAIR ;
DUP ;
DUG 2 ;
GET ;
IF_NONE { PUSH int 407 ; FAILWITH } { DROP } ;
DUP 6 ;
GET 4 ;
DIG 9 ;
CAR ;
GET 3 ;
DUP 8 ;
GET 3 ;
DUP 10 ;
CAR ;
PAIR ;
GET ;
IF_NONE { PUSH int 408 ; FAILWITH } {} ;
SUB ;
ISNAT ;
IF_NONE { PUSH int 407 ; FAILWITH } {} ;
SOME ;
SWAP ;
UPDATE ;
PAIR ;
SWAP ;
PAIR ;
PAIR ;
DUP ;
DUG 4 ;
CAR ;
GET 3 ;
SWAP ;
DUP ;
GET 3 ;
SWAP ;
DUP ;
DUG 3 ;
CAR ;
PAIR ;
MEM ;
IF
{ DIG 3 ;
UNPAIR ;
UNPAIR ;
SWAP ;
UNPAIR ;
DUP ;
DIG 5 ;
DUP ;
GET 3 ;
SWAP ;
DUP ;
DUG 7 ;
CAR ;
PAIR ;
DUP ;
DUG 2 ;
GET ;
IF_NONE { PUSH int 410 ; FAILWITH } {} ;
DIG 6 ;
GET 4 ;
ADD ;
SOME ;
SWAP ;
UPDATE ;
PAIR ;
SWAP ;
PAIR ;
PAIR ;
DUG 2 }
{ DIG 3 ;
UNPAIR ;
UNPAIR ;
SWAP ;
UNPAIR ;
DUP 5 ;
GET 4 ;
SOME ;
DIG 5 ;
DUP ;
GET 3 ;
SWAP ;
CAR ;
PAIR ;
UPDATE ;
PAIR ;
SWAP ;
PAIR ;
PAIR ;
DUG 2 } }
{ DROP } } ;
DROP } ;
DROP }
{ IF_LEFT
{ SENDER ;
DUP 3 ;
CAR ;
CAR ;
GET 3 ;
COMPARE ;
NEQ ;
IF { PUSH string "FA2_NOT_OWNER" ; FAILWITH } {} ;
SWAP ;
UNPAIR ;
SWAP ;
UNPAIR ;
SWAP ;
UNPAIR ;
CAR ;
DIG 4 ;
SWAP ;
PAIR ;
PAIR ;
SWAP ;
PAIR ;
SWAP ;
PAIR }
{ DUP ;
ITER { IF_LEFT
{ DUP ;
CAR ;
SENDER ;
COMPARE ;
EQ ;
IF
{ PUSH bool True }
{ DUP 3 ; CAR ; CAR ; GET 3 ; SENDER ; COMPARE ; EQ } ;
IF
{}
{ PUSH string "FA2_NOT_ADMIN_OR_OPERATOR" ; FAILWITH } ;
DIG 2 ;
UNPAIR ;
SWAP ;
UNPAIR ;
UNPAIR ;
SWAP ;
UNPAIR ;
SWAP ;
PUSH (option unit) (Some Unit) ;
DIG 6 ;
DUP ;
GET 4 ;
SWAP ;
DUP ;
GET 3 ;
SWAP ;
CAR ;
PAIR 3 ;
UPDATE ;
SWAP ;
PAIR ;
SWAP ;
PAIR ;
PAIR ;
SWAP ;
PAIR ;
SWAP }
{ DUP ;
CAR ;
SENDER ;
COMPARE ;
EQ ;
IF
{ PUSH bool True }
{ DUP 3 ; CAR ; CAR ; GET 3 ; SENDER ; COMPARE ; EQ } ;
IF
{}
{ PUSH string "FA2_NOT_ADMIN_OR_OPERATOR" ; FAILWITH } ;
DIG 2 ;
UNPAIR ;
SWAP ;
UNPAIR ;
UNPAIR ;
SWAP ;
UNPAIR ;
SWAP ;
NONE unit ;
DIG 6 ;
DUP ;
GET 4 ;
SWAP ;
DUP ;
GET 3 ;
SWAP ;
CAR ;
PAIR 3 ;
UPDATE ;
SWAP ;
PAIR ;
SWAP ;
PAIR ;
PAIR ;
SWAP ;
PAIR ;
SWAP } } ;
DROP } } } ;
NIL operation } ;
NIL operation ;
SWAP ;
ITER { CONS } ;
PAIR }