x
691
{ parameter (or (or (or (address %add_manager) (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))))) (list %burn (pair (address %from_) (pair (nat %token_id) (nat %amount)))))) (or (map %create_token string bytes) (or (pair %lock (bool %metadata) (pair (bool %mint) (nat %token_id))) (pair %mint (list %mint_items (pair (nat %amount) (address %to_))) (nat %token_id))))) (or (or (address %remove_manager) (or (address %set_administrator) (big_map %set_metadata string bytes))) (or (list %transfer (pair (address %from_) (list %txs (pair (address %to_) (pair (nat %token_id) (nat %amount)))))) (or (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))))) (list %update_token_metadata (pair (nat %token_id) (map %token_info string bytes))))))) ; storage (pair (pair (pair (address %administrator) (nat %last_token_id)) (pair (big_map %ledger (pair address nat) nat) (big_map %locked nat (pair (bool %metadata) (bool %mint))))) (pair (pair (big_map %managers address unit) (big_map %metadata string bytes)) (pair (big_map %operators (pair (address %owner) (pair (address %operator) (nat %token_id))) unit) (pair (big_map %supply nat nat) (big_map %token_metadata nat (pair (nat %token_id) (map %token_info string bytes))))))) ; code { UNPAIR ; IF_LEFT { IF_LEFT { IF_LEFT { SWAP ; DUP ; DUG 2 ; CAR ; CAR ; CAR ; SENDER ; COMPARE ; EQ ; IF {} { PUSH string "FA2_NOT_ADMIN" ; FAILWITH } ; SWAP ; UNPAIR ; SWAP ; UNPAIR ; UNPAIR ; PUSH (option unit) (Some Unit) ; DIG 5 ; UPDATE ; PAIR ; PAIR ; SWAP ; PAIR ; NIL operation } { IF_LEFT { NIL operation ; DUP ; DUP 3 ; CDR ; PUSH mutez 0 ; DUP 5 ; CAR ; MAP { DUP 7 ; GET 8 ; SWAP ; DUP ; DUG 2 ; CDR ; MEM ; IF {} { PUSH string "FA2_TOKEN_UNDEFINED" ; FAILWITH } ; DUP 7 ; CAR ; GET 3 ; SWAP ; DUP ; CDR ; SWAP ; DUP ; DUG 3 ; CAR ; PAIR ; GET ; IF_NONE { PUSH nat 0 } {} ; SWAP ; PAIR } ; DIG 4 ; DROP ; DIG 4 ; DROP ; TRANSFER_TOKENS ; CONS } { DUP ; ITER { DUP 3 ; GET 8 ; SWAP ; DUP ; DUG 2 ; GET 3 ; MEM ; IF {} { PUSH string "FA2_TOKEN_UNDEFINED" ; FAILWITH } ; DUP ; CAR ; SENDER ; COMPARE ; EQ ; IF { PUSH bool True } { DUP 3 ; GET 5 ; SWAP ; DUP ; DUG 2 ; GET 3 ; SENDER ; DUP 4 ; CAR ; PAIR 3 ; MEM } ; IF {} { PUSH string "FA2_NOT_OPERATOR" ; FAILWITH } ; DUP 3 ; UNPAIR ; UNPAIR ; SWAP ; UNPAIR ; DUP 5 ; GET 4 ; DIG 7 ; CAR ; GET 3 ; DIG 6 ; DUP ; GET 3 ; SWAP ; DUP ; DUG 8 ; CAR ; PAIR ; GET ; IF_NONE { PUSH nat 0 } {} ; SUB ; ISNAT ; IF_NONE { PUSH string "FA2_INSUFFICIENT_BALANCE" ; FAILWITH } {} ; SOME ; DIG 5 ; DUP ; GET 3 ; SWAP ; DUP ; DUG 7 ; CAR ; PAIR ; UPDATE ; PAIR ; SWAP ; PAIR ; PAIR ; DUG 2 ; DUP ; GET 4 ; DUP 4 ; GET 7 ; DUP 3 ; GET 3 ; GET ; IF_NONE { PUSH nat 0 } {} ; SUB ; ISNAT ; IF_NONE { DIG 2 ; DUP ; GET 7 ; PUSH (option nat) (Some 0) ; DIG 3 ; GET 3 ; UPDATE ; UPDATE 7 ; SWAP } { DIG 3 ; DUP ; GET 7 ; DIG 2 ; SOME ; DIG 3 ; GET 3 ; UPDATE ; UPDATE 7 ; SWAP } } ; DROP ; NIL operation } } } { IF_LEFT { SWAP ; DUP ; DUG 2 ; CAR ; CAR ; CAR ; SENDER ; COMPARE ; EQ ; IF { PUSH bool True } { SWAP ; DUP ; DUG 2 ; GET 3 ; CAR ; SENDER ; MEM } ; IF {} { PUSH string "FA2_NOT_MANAGER" ; FAILWITH } ; PUSH nat 1 ; DUP 3 ; CAR ; CAR ; CDR ; ADD ; DIG 2 ; DUP ; GET 8 ; DIG 3 ; DUP 4 ; PAIR ; SOME ; DUP 4 ; UPDATE ; UPDATE 8 ; DUP ; GET 7 ; PUSH (option nat) (Some 0) ; DIG 3 ; UPDATE ; UPDATE 7 ; UNPAIR ; UNPAIR ; UNPAIR ; SWAP ; PUSH nat 1 ; ADD ; SWAP ; PAIR ; PAIR ; PAIR } { IF_LEFT { SWAP ; DUP ; DUG 2 ; CAR ; CAR ; CAR ; SENDER ; COMPARE ; EQ ; IF { PUSH bool True } { SWAP ; DUP ; DUG 2 ; GET 3 ; CAR ; SENDER ; MEM } ; IF {} { PUSH string "FA2_NOT_MANAGER" ; FAILWITH } ; SWAP ; DUP ; DUG 2 ; GET 8 ; SWAP ; DUP ; DUG 2 ; GET 4 ; MEM ; IF {} { PUSH string "OE_TOKEN_MISSING" ; FAILWITH } ; SWAP ; DUP ; DUG 2 ; CAR ; GET 4 ; SWAP ; DUP ; DUG 2 ; GET 4 ; GET ; IF_NONE { PUSH (pair bool bool) (Pair False False) } {} ; DUP ; CAR ; IF { PUSH bool True } { SWAP ; DUP ; DUG 2 ; CAR } ; UPDATE 1 ; DUP ; CDR ; IF { PUSH bool True } { SWAP ; DUP ; DUG 2 ; GET 3 } ; UPDATE 2 ; DIG 2 ; UNPAIR ; UNPAIR ; SWAP ; UNPAIR ; SWAP ; DIG 4 ; SOME ; DIG 5 ; GET 4 ; UPDATE ; SWAP ; PAIR ; SWAP ; PAIR ; PAIR } { SWAP ; DUP ; DUG 2 ; CAR ; CAR ; CAR ; SENDER ; COMPARE ; EQ ; IF { PUSH bool True } { SWAP ; DUP ; DUG 2 ; GET 3 ; CAR ; SENDER ; MEM } ; IF {} { PUSH string "FA2_NOT_MANAGER" ; FAILWITH } ; SWAP ; DUP ; DUG 2 ; GET 8 ; SWAP ; DUP ; DUG 2 ; CDR ; MEM ; IF {} { PUSH string "OE_TOKEN_N_EXTIST" ; FAILWITH } ; SWAP ; DUP ; DUG 2 ; CAR ; GET 4 ; SWAP ; DUP ; DUG 2 ; CDR ; MEM ; IF { SWAP ; DUP ; DUG 2 ; CAR ; GET 4 ; SWAP ; DUP ; DUG 2 ; CDR ; GET ; IF_NONE { PUSH int 135 ; FAILWITH } {} ; CDR ; NOT } { PUSH bool True } ; IF {} { PUSH string "OE_MINT_LOCKED" ; FAILWITH } ; PUSH nat 0 ; SWAP ; DUP ; DUG 2 ; CAR ; ITER { DUP 4 ; UNPAIR ; UNPAIR ; SWAP ; UNPAIR ; DUP 5 ; CAR ; DIG 8 ; CAR ; GET 3 ; DUP 9 ; CDR ; DUP 8 ; CDR ; PAIR ; GET ; IF_NONE { PUSH nat 0 } {} ; ADD ; SOME ; DUP 8 ; CDR ; DUP 7 ; CDR ; PAIR ; UPDATE ; PAIR ; SWAP ; PAIR ; PAIR ; DUG 3 ; CAR ; ADD } ; DUP 3 ; GET 7 ; DUP 3 ; CDR ; GET ; IF_NONE { PUSH nat 0 } {} ; DIG 3 ; DUP ; GET 7 ; DIG 3 ; DIG 3 ; ADD ; SOME ; DIG 3 ; CDR ; UPDATE ; UPDATE 7 } } ; NIL operation } } { IF_LEFT { IF_LEFT { SWAP ; DUP ; DUG 2 ; CAR ; CAR ; CAR ; SENDER ; COMPARE ; EQ ; IF {} { PUSH string "FA2_NOT_ADMIN" ; FAILWITH } ; SWAP ; UNPAIR ; SWAP ; UNPAIR ; UNPAIR ; NONE unit ; DIG 5 ; UPDATE ; PAIR ; PAIR ; SWAP ; PAIR } { IF_LEFT { SWAP ; DUP ; DUG 2 ; CAR ; CAR ; CAR ; SENDER ; COMPARE ; EQ ; IF {} { PUSH string "FA2_NOT_ADMIN" ; FAILWITH } ; SWAP ; UNPAIR ; UNPAIR ; CDR ; DIG 3 ; PAIR ; PAIR ; PAIR } { SWAP ; DUP ; DUG 2 ; CAR ; CAR ; CAR ; SENDER ; COMPARE ; EQ ; IF {} { PUSH string "FA2_NOT_ADMIN" ; FAILWITH } ; SWAP ; UNPAIR ; SWAP ; UNPAIR ; CAR ; DIG 3 ; SWAP ; PAIR ; PAIR ; SWAP ; PAIR } } } { IF_LEFT { DUP ; ITER { DUP ; CDR ; ITER { DUP 4 ; GET 8 ; SWAP ; DUP ; DUG 2 ; GET 3 ; MEM ; IF {} { PUSH string "FA2_TOKEN_UNDEFINED" ; FAILWITH } ; SWAP ; DUP ; DUG 2 ; CAR ; SENDER ; COMPARE ; EQ ; IF { PUSH bool True } { DUP 4 ; GET 5 ; SWAP ; DUP ; DUG 2 ; GET 3 ; SENDER ; DUP 5 ; CAR ; PAIR 3 ; MEM } ; IF {} { PUSH string "FA2_NOT_OPERATOR" ; FAILWITH } ; DUP ; GET 4 ; PUSH nat 0 ; COMPARE ; LT ; IF { DUP 4 ; UNPAIR ; UNPAIR ; SWAP ; UNPAIR ; DUP 5 ; GET 4 ; DIG 8 ; CAR ; GET 3 ; DUP 7 ; GET 3 ; DUP 9 ; CAR ; PAIR ; GET ; IF_NONE { PUSH nat 0 } {} ; SUB ; ISNAT ; IF_NONE { PUSH string "FA2_INSUFFICIENT_BALANCE" ; FAILWITH } {} ; SOME ; DUP 6 ; GET 3 ; DUP 8 ; CAR ; PAIR ; UPDATE ; PAIR ; SWAP ; PAIR ; PAIR ; DUP ; DUG 4 ; UNPAIR ; UNPAIR ; SWAP ; UNPAIR ; DUP 5 ; GET 4 ; DIG 8 ; CAR ; GET 3 ; DIG 6 ; DUP ; GET 3 ; SWAP ; DUP ; DUG 8 ; CAR ; PAIR ; GET ; IF_NONE { PUSH nat 0 } {} ; ADD ; SOME ; DIG 5 ; DUP ; GET 3 ; SWAP ; CAR ; PAIR ; UPDATE ; PAIR ; SWAP ; PAIR ; PAIR ; DUG 2 } { DROP } } ; DROP } ; DROP } { IF_LEFT { DUP ; ITER { IF_LEFT { DUP ; CAR ; SENDER ; COMPARE ; EQ ; IF {} { PUSH string "FA2_NOT_OWNER" ; FAILWITH } ; DIG 2 ; DUP ; GET 5 ; PUSH (option unit) (Some Unit) ; DIG 3 ; UPDATE ; UPDATE 5 ; SWAP } { DUP ; CAR ; SENDER ; COMPARE ; EQ ; IF {} { PUSH string "FA2_NOT_OWNER" ; FAILWITH } ; DIG 2 ; DUP ; GET 5 ; NONE unit ; DIG 3 ; UPDATE ; UPDATE 5 ; SWAP } } ; DROP } { SWAP ; DUP ; DUG 2 ; CAR ; CAR ; CAR ; SENDER ; COMPARE ; EQ ; IF { PUSH bool True } { SWAP ; DUP ; DUG 2 ; GET 3 ; CAR ; SENDER ; MEM } ; IF {} { PUSH string "FA2_NOT_MANAGER" ; FAILWITH } ; DUP ; ITER { DUP 3 ; CAR ; GET 4 ; SWAP ; DUP ; DUG 2 ; CAR ; MEM ; IF { DUP 3 ; CAR ; GET 4 ; SWAP ; DUP ; DUG 2 ; CAR ; GET ; IF_NONE { PUSH int 71 ; FAILWITH } {} ; CAR ; NOT } { PUSH bool True } ; IF {} { PUSH string "OE_TOKEN_LOCKED" ; FAILWITH } ; DIG 2 ; DUP ; GET 8 ; DIG 2 ; DUP ; CDR ; SWAP ; DUP ; DUG 4 ; CAR ; PAIR ; SOME ; DIG 3 ; CAR ; UPDATE ; UPDATE 8 ; SWAP } ; DROP } } } ; NIL operation } ; PAIR } ; view "get_last_token_id" unit nat { CDR ; CAR ; CAR ; CDR } }