x
608
1440
{ parameter (or (or (or (or (nat %cleanup) (nat %cleanup_offline)) (or (pair %collect (mutez %amount) (pair (nat %channel_id) (signature %signature))) (or (nat %collect_offline) (pair %donate_offline (nat %cid) (bytes %message))))) (or (or (nat %escheat) (nat %escheat_offline)) (or (pair %extend (nat %channel_id) (timestamp %new_expiration)) (or (nat %mark_offline) (pair %open_channel (nat %cid) (pair (timestamp %expiration) (pair (bytes %offer) (pair (key %recipient_key) (key %sender_key))))))))) (or (or (or (pair %post_answer (bytes %answer) (nat %channel_id)) (pair %post_offer (nat %channel_id) (bytes %offer))) (or (pair %rebind_key (nat %channel_id) (key %new_key)) (or (pair %set_block (nat %cid) (pair (bool %on) (address %user))) (pair %set_mute (nat %cid) (pair (bool %on) (address %user)))))) (or (or (pair %set_status (nat %cid) (bool %online)) (or (pair %signal_answer (bytes %answer) (nat %channel_id)) (pair %signal_offer (nat %channel_id) (bytes %offer)))) (or (nat %timeout) (or (nat %top_up) (unit %withdraw_fees)))))) ; storage (pair (big_map %blocked (pair nat address) bool) (pair (big_map %channels nat (pair (bytes %answer) (pair (nat %answer_round) (pair (nat %cid) (pair (bool %cleaned) (pair (mutez %deposit) (pair (timestamp %expiration) (pair (bytes %offer) (pair (nat %offer_round) (pair (timestamp %offer_ts) (pair (address %recipient) (pair (key %recipient_key) (pair (nat %seen_round) (pair (address %sender) (pair (key %sender_key) (mutez %withdrawn)))))))))))))))) (pair (mutez %cleanup_bounty) (pair (big_map %donations nat (pair (nat %last_week) (pair (mutez %w0) (pair (mutez %w1) (pair (mutez %w2) (mutez %w3)))))) (pair (mutez %fees) (pair (big_map %mailbox nat (pair (mutez %amount) (pair (nat %cid) (pair (bytes %message) (pair (timestamp %posted) (pair (address %recipient) (address %sender))))))) (pair (big_map %muted (pair nat address) bool) (pair (nat %next_id) (pair (nat %next_mail_id) (pair (address %owner) (pair (address %registry) (big_map %status nat (pair (bool %online) (timestamp %since)))))))))))))) ; code { LAMBDA (pair (pair nat mutez) (pair (big_map (pair nat address) bool) (pair (big_map nat (pair bytes (pair nat (pair nat (pair bool (pair mutez (pair timestamp (pair bytes (pair nat (pair timestamp (pair address (pair key (pair nat (pair address (pair key mutez))))))))))))))) (pair mutez (pair (big_map nat (pair nat (pair mutez (pair mutez (pair mutez mutez))))) (pair mutez (pair (big_map nat (pair mutez (pair nat (pair bytes (pair timestamp (pair address address)))))) (pair (big_map (pair nat address) bool) (pair nat (pair nat (pair address (pair address (big_map nat (pair bool timestamp)))))))))))))) (pair unit (pair (big_map (pair nat address) bool) (pair (big_map nat (pair bytes (pair nat (pair nat (pair bool (pair mutez (pair timestamp (pair bytes (pair nat (pair timestamp (pair address (pair key (pair nat (pair address (pair key mutez))))))))))))))) (pair mutez (pair (big_map nat (pair nat (pair mutez (pair mutez (pair mutez mutez))))) (pair mutez (pair (big_map nat (pair mutez (pair nat (pair bytes (pair timestamp (pair address address)))))) (pair (big_map (pair nat address) bool) (pair nat (pair nat (pair address (pair address (big_map nat (pair bool timestamp)))))))))))))) { UNPAIR ; PUSH timestamp "1970-01-01T00:00:00Z" ; NOW ; SUB ; PUSH nat 604800 ; PUSH int 259200 ; DUP 3 ; ADD ; EDIV ; IF_NONE { PUSH string "WEEK" ; FAILWITH } {} ; CAR ; ISNAT ; IF_NONE { PUSH int 195 ; FAILWITH } {} ; DUP 4 ; GET 7 ; DUP 4 ; CAR ; MEM ; IF { DUP 4 ; GET 7 ; DUP 4 ; CAR ; GET ; IF_NONE { PUSH int 197 ; FAILWITH } {} ; DUP ; CAR ; DUP 3 ; SUB ; DUP 5 ; CDR ; PUSH mutez 0 ; PUSH mutez 0 ; PUSH mutez 0 ; DUP 5 ; EQ ; IF { DIG 3 ; DROP 4 ; DUP 5 ; CDR ; DUP 3 ; GET 3 ; ADD ; DUP 3 ; GET 5 ; DUP 4 ; GET 7 ; DUP 5 ; GET 8 } { PUSH int 1 ; DUP 6 ; COMPARE ; EQ ; IF { DIG 2 ; DROP 3 ; DUP 3 ; GET 3 ; DUP 4 ; GET 5 ; DUP 5 ; GET 7 } { PUSH int 2 ; DUP 6 ; COMPARE ; EQ ; IF { DROP 2 ; DUP 4 ; GET 3 ; DUP 5 ; GET 5 } { PUSH int 3 ; DUP 6 ; COMPARE ; EQ ; IF { DROP ; DUP 5 ; GET 3 } {} } } } ; DIG 9 ; DUP ; GET 7 ; DUP 3 ; DUP 5 ; DUP 7 ; DUP 9 ; DUP 13 ; PAIR 5 ; DIG 3 ; DROP ; DIG 3 ; DROP ; DIG 3 ; DROP ; DIG 3 ; DROP ; DIG 3 ; DROP ; DIG 3 ; DROP ; DIG 3 ; DROP ; DIG 3 ; DROP ; SOME ; DIG 3 ; CAR ; UPDATE ; UPDATE 7 } { DIG 3 ; DUP ; GET 7 ; PUSH mutez 0 ; DUP ; DUP ; DUP 8 ; CDR ; DUP 7 ; PAIR 5 ; DIG 3 ; DROP ; DIG 3 ; DROP ; SOME ; DIG 3 ; CAR ; UPDATE ; UPDATE 7 } ; UNIT ; PAIR } ; SWAP ; LAMBDA (pair nat (pair (big_map (pair nat address) bool) (pair (big_map nat (pair bytes (pair nat (pair nat (pair bool (pair mutez (pair timestamp (pair bytes (pair nat (pair timestamp (pair address (pair key (pair nat (pair address (pair key mutez))))))))))))))) (pair mutez (pair (big_map nat (pair nat (pair mutez (pair mutez (pair mutez mutez))))) (pair mutez (pair (big_map nat (pair mutez (pair nat (pair bytes (pair timestamp (pair address address)))))) (pair (big_map (pair nat address) bool) (pair nat (pair nat (pair address (pair address (big_map nat (pair bool timestamp)))))))))))))) (pair bool (pair (big_map (pair nat address) bool) (pair (big_map nat (pair bytes (pair nat (pair nat (pair bool (pair mutez (pair timestamp (pair bytes (pair nat (pair timestamp (pair address (pair key (pair nat (pair address (pair key mutez))))))))))))))) (pair mutez (pair (big_map nat (pair nat (pair mutez (pair mutez (pair mutez mutez))))) (pair mutez (pair (big_map nat (pair mutez (pair nat (pair bytes (pair timestamp (pair address address)))))) (pair (big_map (pair nat address) bool) (pair nat (pair nat (pair address (pair address (big_map nat (pair bool timestamp)))))))))))))) { UNPAIR ; SWAP ; DUP ; GET 21 ; DIG 2 ; VIEW "get_channel" (pair (bytes %name_enc) (pair (bytes %name_hash) (pair (address %owner) (bool %primary)))) ; IF_NONE { PUSH string "NO_SUCH_CONTENT_CHANNEL" ; FAILWITH } {} ; GET 5 ; DUP ; SENDER ; COMPARE ; EQ ; DUP ; IF { SWAP ; DROP } { DUP 3 ; GET 21 ; DIG 2 ; VIEW "get_burner_key" key ; DUP ; IF_NONE { DROP } { DROP ; SWAP ; DROP ; IF_NONE { PUSH int 253 ; FAILWITH } {} ; HASH_KEY ; IMPLICIT_ACCOUNT ; ADDRESS ; SENDER ; COMPARE ; EQ } } ; PAIR } ; SWAP ; LAMBDA (pair nat (pair (big_map (pair nat address) bool) (pair (big_map nat (pair bytes (pair nat (pair nat (pair bool (pair mutez (pair timestamp (pair bytes (pair nat (pair timestamp (pair address (pair key (pair nat (pair address (pair key mutez))))))))))))))) (pair mutez (pair (big_map nat (pair nat (pair mutez (pair mutez (pair mutez mutez))))) (pair mutez (pair (big_map nat (pair mutez (pair nat (pair bytes (pair timestamp (pair address address)))))) (pair (big_map (pair nat address) bool) (pair nat (pair nat (pair address (pair address (big_map nat (pair bool timestamp)))))))))))))) (pair address (pair (big_map (pair nat address) bool) (pair (big_map nat (pair bytes (pair nat (pair nat (pair bool (pair mutez (pair timestamp (pair bytes (pair nat (pair timestamp (pair address (pair key (pair nat (pair address (pair key mutez))))))))))))))) (pair mutez (pair (big_map nat (pair nat (pair mutez (pair mutez (pair mutez mutez))))) (pair mutez (pair (big_map nat (pair mutez (pair nat (pair bytes (pair timestamp (pair address address)))))) (pair (big_map (pair nat address) bool) (pair nat (pair nat (pair address (pair address (big_map nat (pair bool timestamp)))))))))))))) { UNPAIR ; SWAP ; DUP ; GET 21 ; DIG 2 ; VIEW "get_channel" (pair (bytes %name_enc) (pair (bytes %name_hash) (pair (address %owner) (bool %primary)))) ; IF_NONE { PUSH string "NO_SUCH_CONTENT_CHANNEL" ; FAILWITH } {} ; GET 5 ; PAIR } ; SWAP ; UNPAIR ; IF_LEFT { IF_LEFT { IF_LEFT { DIG 3 ; DROP ; DIG 3 ; DROP ; IF_LEFT { PUSH mutez 0 ; AMOUNT ; COMPARE ; EQ ; IF {} { PUSH string "NO_TEZ_ACCEPTED" ; FAILWITH } ; DUP 2 ; GET 3 ; DUP 2 ; MEM ; IF {} { PUSH string "NO_SUCH_CHANNEL" ; FAILWITH } ; DUP 2 ; GET 3 ; DUP 2 ; GET ; IF_NONE { PUSH int 442 ; FAILWITH } {} ; DUP ; GET 7 ; IF { PUSH string "ALREADY_CLEANED" ; FAILWITH } {} ; PUSH int 2592000 ; DUP 2 ; GET 11 ; ADD ; NOW ; COMPARE ; GT ; IF {} { PUSH string "NOT_STALE_YET" ; FAILWITH } ; DUP ; GET 28 ; DUP 2 ; GET 9 ; SUB_MUTEZ ; IF_NONE { PUSH int 446 ; FAILWITH } {} ; PUSH mutez 0 ; COMPARE ; LT ; IF { DIG 3 ; DROP ; PUSH bytes 0x ; UPDATE 13 ; PUSH bytes 0x ; UPDATE 1 ; PUSH bool True ; UPDATE 7 ; DIG 2 ; DUP ; GET 3 ; DIG 2 ; SOME ; DUP 4 ; UPDATE ; UPDATE 3 ; SWAP } { DROP ; DIG 2 ; DROP ; SWAP ; DUP ; GET 3 ; NONE (pair bytes (pair nat (pair nat (pair bool (pair mutez (pair timestamp (pair bytes (pair nat (pair timestamp (pair address (pair key (pair nat (pair address (pair key mutez)))))))))))))) ; DUP 4 ; UPDATE ; UPDATE 3 ; SWAP } ; PUSH mutez 0 ; DUP 3 ; GET 5 ; COMPARE ; GT ; IF { NIL operation ; SENDER ; CONTRACT unit ; IF_NONE { PUSH int 457 ; FAILWITH } {} ; DUP 4 ; GET 5 ; UNIT ; TRANSFER_TOKENS ; CONS } { NIL operation } ; SWAP ; EMIT %channel_cleaned nat ; CONS } { DIG 2 ; DROP ; PUSH mutez 0 ; AMOUNT ; COMPARE ; EQ ; IF {} { PUSH string "NO_TEZ_ACCEPTED" ; FAILWITH } ; DUP 2 ; GET 11 ; DUP 2 ; MEM ; IF {} { PUSH string "NO_SUCH_MAIL" ; FAILWITH } ; DUP 2 ; GET 11 ; DUP 2 ; GET ; IF_NONE { PUSH int 746 ; FAILWITH } {} ; DUP ; GET 10 ; SENDER ; COMPARE ; EQ ; IF {} { PUSH string "NOT_DONOR" ; FAILWITH } ; PUSH int 2592000 ; DUP 2 ; GET 7 ; ADD ; NOW ; COMPARE ; GT ; IF {} { PUSH string "NOT_STALE_YET" ; FAILWITH } ; PUSH mutez 0 ; DUP 2 ; CAR ; COMPARE ; GT ; IF { NIL operation ; DUP 2 ; GET 10 ; CONTRACT unit ; IF_NONE { PUSH int 750 ; FAILWITH } {} ; DIG 2 ; CAR ; UNIT ; TRANSFER_TOKENS ; CONS } { DROP ; NIL operation } ; DIG 2 ; DUP ; GET 11 ; NONE (pair mutez (pair nat (pair bytes (pair timestamp (pair address address))))) ; DUP 5 ; UPDATE ; UPDATE 11 ; DUG 2 ; SWAP ; EMIT %offline_cleaned nat ; CONS } } { IF_LEFT { PUSH mutez 0 ; AMOUNT ; COMPARE ; EQ ; IF {} { PUSH string "NO_TEZ_ACCEPTED" ; FAILWITH } ; DUP 2 ; GET 3 ; DUP 2 ; GET 3 ; MEM ; IF {} { PUSH string "NO_SUCH_CHANNEL" ; FAILWITH } ; DUP 2 ; GET 3 ; DUP 2 ; GET 3 ; GET ; IF_NONE { PUSH int 338 ; FAILWITH } {} ; DUP ; GET 21 ; HASH_KEY ; IMPLICIT_ACCOUNT ; ADDRESS ; DUP 2 ; GET 19 ; SENDER ; COMPARE ; EQ ; IF { DROP ; PUSH bool True } { SENDER ; COMPARE ; EQ } ; IF {} { PUSH string "NOT_RECIPIENT" ; FAILWITH } ; DUP ; GET 9 ; DUP 3 ; CAR ; COMPARE ; LE ; IF {} { PUSH string "AMOUNT_EXCEEDS_DEPOSIT" ; FAILWITH } ; DUP ; GET 28 ; DUP 3 ; CAR ; COMPARE ; GT ; IF {} { PUSH string "NOTHING_TO_COLLECT" ; FAILWITH } ; SELF_ADDRESS ; DUP 3 ; GET 3 ; DUP 4 ; CAR ; PAIR 3 ; PACK ; DUP 3 ; GET 4 ; DUP 3 ; GET 27 ; CHECK_SIGNATURE ; IF {} { PUSH string "BAD_SIGNATURE" ; FAILWITH } ; DUP ; GET 28 ; DUP 3 ; CAR ; SUB_MUTEZ ; IF_NONE { PUSH int 386 ; FAILWITH } {} ; PUSH nat 100 ; PUSH nat 1 ; DUP 3 ; MUL ; EDIV ; IF_NONE { PUSH int 387 ; FAILWITH } {} ; CAR ; DIG 4 ; DUP ; GET 9 ; DUP 3 ; ADD ; UPDATE 9 ; DUG 4 ; NIL operation ; DUP 4 ; GET 19 ; CONTRACT unit ; IF_NONE { PUSH int 389 ; FAILWITH } {} ; DIG 2 ; DUP 4 ; SUB_MUTEZ ; IF_NONE { PUSH int 389 ; FAILWITH } {} ; UNIT ; TRANSFER_TOKENS ; CONS ; DIG 2 ; DUP 4 ; CAR ; UPDATE 28 ; DUG 2 ; DIG 4 ; DUP ; GET 3 ; DUP 5 ; SOME ; DUP 7 ; GET 3 ; UPDATE ; UPDATE 3 ; DUG 4 ; DUP 5 ; GET 13 ; DUP 4 ; GET 25 ; DUP 5 ; GET 5 ; PAIR ; GET ; IF_NONE { PUSH bool False } {} ; IF { SWAP ; DROP ; SWAP ; DROP ; SWAP ; DROP ; DIG 2 ; DROP ; DIG 2 ; DROP ; DIG 2 ; DROP } { DIG 3 ; DROP ; DIG 4 ; DROP ; DIG 4 ; DROP ; DIG 4 ; DIG 2 ; DIG 3 ; GET 5 ; PAIR ; SWAP ; DIG 3 ; DIG 2 ; PAIR ; EXEC ; CDR ; SWAP } } { IF_LEFT { PUSH mutez 0 ; AMOUNT ; COMPARE ; EQ ; IF {} { PUSH string "NO_TEZ_ACCEPTED" ; FAILWITH } ; DUP 2 ; GET 11 ; DUP 2 ; MEM ; IF {} { PUSH string "NO_SUCH_MAIL" ; FAILWITH } ; DUP 2 ; GET 11 ; DUP 2 ; GET ; IF_NONE { PUSH int 723 ; FAILWITH } {} ; DUP 5 ; SWAP ; DUP ; GET 3 ; DIG 2 ; DIG 4 ; DIG 2 ; PAIR ; EXEC ; UNPAIR ; DIG 6 ; DIG 6 ; DIG 6 ; DIG 4 ; DIG 6 ; DIG 6 ; DIG 6 ; IF {} { PUSH string "NOT_RECIPIENT" ; FAILWITH } ; PUSH nat 100 ; PUSH nat 1 ; DUP 3 ; CAR ; MUL ; EDIV ; IF_NONE { PUSH int 727 ; FAILWITH } {} ; CAR ; DIG 3 ; DUP ; GET 9 ; DUP 3 ; ADD ; UPDATE 9 ; DUG 3 ; NIL operation ; DUP 3 ; GET 9 ; CONTRACT unit ; IF_NONE { PUSH int 729 ; FAILWITH } {} ; DIG 2 ; DUP 4 ; CAR ; SUB_MUTEZ ; IF_NONE { PUSH int 729 ; FAILWITH } {} ; UNIT ; TRANSFER_TOKENS ; CONS ; DUP 4 ; GET 13 ; DUP 3 ; GET 10 ; DUP 4 ; GET 3 ; PAIR ; GET ; IF_NONE { PUSH bool False } {} ; IF { SWAP ; DROP ; DIG 3 ; DROP ; DIG 3 ; DROP ; DIG 3 ; DROP } { DIG 4 ; DROP ; DIG 4 ; DROP ; DIG 4 ; DUP 3 ; CAR ; DIG 3 ; GET 3 ; PAIR ; SWAP ; DIG 4 ; DIG 2 ; PAIR ; EXEC ; CDR ; DUG 2 } ; DIG 2 ; DUP ; GET 11 ; NONE (pair mutez (pair nat (pair bytes (pair timestamp (pair address address))))) ; DIG 4 ; UPDATE ; UPDATE 11 ; SWAP } { PUSH mutez 0 ; AMOUNT ; COMPARE ; GT ; IF {} { PUSH string "EMPTY_DONATION" ; FAILWITH } ; DUP 3 ; SWAP ; DUP ; CAR ; DIG 2 ; DIG 3 ; DIG 2 ; PAIR ; EXEC ; UNPAIR ; DIG 5 ; DIG 5 ; DIG 5 ; DIG 4 ; DIG 5 ; DIG 5 ; PUSH nat 0 ; DUP 3 ; CDR ; SIZE ; COMPARE ; GT ; IF { DUP 3 ; CAR ; SENDER ; DUP 4 ; CAR ; PAIR ; GET ; IF_NONE { PUSH bool False } {} ; IF { PUSH string "BLOCKED" ; FAILWITH } {} ; DUP 3 ; GET 13 ; SENDER ; DUP 4 ; CAR ; PAIR ; GET ; IF_NONE { PUSH bool False } {} ; IF { PUSH string "MUTED" ; FAILWITH } {} } {} ; DUP 3 ; GET 17 ; DIG 3 ; DUP ; GET 11 ; SENDER ; DUP 5 ; NOW ; DUP 8 ; CDR ; DUP 9 ; CAR ; AMOUNT ; PAIR 6 ; DIG 6 ; DROP ; DIG 6 ; DROP ; DIG 6 ; DROP ; SOME ; DUP 4 ; UPDATE ; UPDATE 11 ; DUP ; GET 17 ; PUSH nat 1 ; ADD ; UPDATE 17 ; DUG 3 ; NIL operation ; DUG 2 ; DIG 3 ; CAR ; PAIR 3 ; EMIT %offline_donation (pair (nat %cid) (pair (nat %mail_id) (address %recipient))) ; CONS } } } } { IF_LEFT { DIG 3 ; DROP ; DIG 3 ; DROP ; IF_LEFT { PUSH mutez 0 ; AMOUNT ; COMPARE ; EQ ; IF {} { PUSH string "NO_TEZ_ACCEPTED" ; FAILWITH } ; DUP 2 ; GET 19 ; SENDER ; COMPARE ; EQ ; IF {} { PUSH string "NOT_OWNER" ; FAILWITH } ; DUP 2 ; GET 3 ; DUP 2 ; MEM ; IF {} { PUSH string "NO_SUCH_CHANNEL" ; FAILWITH } ; DUP 2 ; GET 3 ; DUP 2 ; GET ; IF_NONE { PUSH int 474 ; FAILWITH } {} ; PUSH int 31536000 ; DUP 2 ; GET 11 ; ADD ; NOW ; COMPARE ; GT ; IF {} { PUSH string "NOT_ABANDONED" ; FAILWITH } ; DUP ; GET 28 ; DUP 2 ; GET 9 ; SUB_MUTEZ ; IF_NONE { PUSH int 477 ; FAILWITH } {} ; DUP 2 ; GET 7 ; IF {} { DUP 4 ; GET 5 ; ADD } ; PUSH mutez 0 ; DUP 2 ; COMPARE ; GT ; IF { SWAP ; DROP ; DIG 3 ; DROP ; NIL operation ; DUP 4 ; GET 19 ; CONTRACT unit ; IF_NONE { PUSH int 481 ; FAILWITH } {} ; DIG 2 ; UNIT ; TRANSFER_TOKENS ; CONS } { DROP 2 ; DIG 2 ; DROP ; NIL operation } ; DIG 2 ; DUP ; GET 3 ; NONE (pair bytes (pair nat (pair nat (pair bool (pair mutez (pair timestamp (pair bytes (pair nat (pair timestamp (pair address (pair key (pair nat (pair address (pair key mutez)))))))))))))) ; DUP 5 ; UPDATE ; UPDATE 3 ; DUG 2 ; SWAP ; EMIT %channel_escheated nat ; CONS } { PUSH mutez 0 ; AMOUNT ; COMPARE ; EQ ; IF {} { PUSH string "NO_TEZ_ACCEPTED" ; FAILWITH } ; DUP 2 ; GET 19 ; SENDER ; COMPARE ; EQ ; IF {} { PUSH string "NOT_OWNER" ; FAILWITH } ; DUP 2 ; GET 11 ; DUP 2 ; MEM ; IF {} { PUSH string "NO_SUCH_MAIL" ; FAILWITH } ; DUP 2 ; GET 11 ; DUP 2 ; GET ; IF_NONE { PUSH int 765 ; FAILWITH } {} ; PUSH int 31536000 ; DUP 2 ; GET 7 ; ADD ; NOW ; COMPARE ; GT ; IF {} { PUSH string "NOT_ABANDONED" ; FAILWITH } ; PUSH mutez 0 ; DUP 2 ; CAR ; COMPARE ; GT ; IF { DIG 3 ; DROP ; NIL operation ; DUP 4 ; GET 19 ; CONTRACT unit ; IF_NONE { PUSH int 769 ; FAILWITH } {} ; DIG 2 ; CAR ; UNIT ; TRANSFER_TOKENS ; CONS } { DROP ; DIG 2 ; DROP ; NIL operation } ; DIG 2 ; DUP ; GET 11 ; NONE (pair mutez (pair nat (pair bytes (pair timestamp (pair address address))))) ; DUP 5 ; UPDATE ; UPDATE 11 ; DUG 2 ; SWAP ; EMIT %offline_escheated nat ; CONS } } { IF_LEFT { DIG 2 ; DROP ; DIG 2 ; DROP ; DIG 2 ; DROP ; PUSH mutez 0 ; AMOUNT ; COMPARE ; EQ ; IF {} { PUSH string "NO_TEZ_ACCEPTED" ; FAILWITH } ; DUP 2 ; GET 3 ; DUP 2 ; CAR ; MEM ; IF {} { PUSH string "NO_SUCH_CHANNEL" ; FAILWITH } ; DUP 2 ; GET 3 ; DUP 2 ; CAR ; GET ; IF_NONE { PUSH int 522 ; FAILWITH } {} ; DUP ; GET 25 ; SENDER ; COMPARE ; EQ ; IF {} { PUSH string "NOT_SENDER" ; FAILWITH } ; DUP ; GET 7 ; IF { PUSH string "CHANNEL_CLEANED" ; FAILWITH } {} ; DUP ; GET 11 ; DUP 3 ; CDR ; COMPARE ; GT ; IF {} { PUSH string "NOT_LATER" ; FAILWITH } ; DUP 2 ; CDR ; UPDATE 11 ; DIG 2 ; DUP ; GET 3 ; DIG 2 ; SOME ; DIG 3 ; CAR ; UPDATE ; UPDATE 3 ; NIL operation } { IF_LEFT { DIG 2 ; DROP ; DIG 2 ; DROP ; DIG 2 ; DROP ; PUSH mutez 0 ; AMOUNT ; COMPARE ; EQ ; IF {} { PUSH string "NO_TEZ_ACCEPTED" ; FAILWITH } ; DUP 2 ; GET 3 ; DUP 2 ; MEM ; IF {} { PUSH string "NO_SUCH_CHANNEL" ; FAILWITH } ; SWAP ; DUP ; GET 3 ; DIG 2 ; GET ; IF_NONE { PUSH int 795 ; FAILWITH } {} ; DUP ; GET 23 ; DUP 2 ; GET 15 ; COMPARE ; GT ; IF {} { PUSH string "ANSWERED" ; FAILWITH } ; PUSH int 120 ; DUP 2 ; GET 17 ; ADD ; NOW ; COMPARE ; GT ; IF {} { PUSH string "NOT_STALE_YET" ; FAILWITH } ; DUP 2 ; GET 22 ; DUP 2 ; GET 5 ; GET ; IF_NONE { PUSH (pair bool timestamp) (Pair False "1970-01-01T00:00:00Z") } {} ; CDR ; DUP 2 ; GET 17 ; COMPARE ; GT ; IF {} { PUSH string "RECENTLY_ONLINE" ; FAILWITH } ; SWAP ; DUP ; GET 22 ; NOW ; PUSH bool False ; PAIR ; SOME ; DUP 4 ; GET 5 ; UPDATE ; UPDATE 22 ; SWAP ; NIL operation ; PUSH bool False ; DIG 2 ; GET 5 ; PAIR ; EMIT %status_changed (pair (nat %cid) (bool %online)) ; CONS } { DUP 2 ; GET 5 ; AMOUNT ; COMPARE ; GT ; IF {} { PUSH string "DEPOSIT_BELOW_BOUNTY" ; FAILWITH } ; NOW ; DUP 2 ; GET 3 ; COMPARE ; GT ; IF {} { PUSH string "EXPIRATION_IN_PAST" ; FAILWITH } ; DUP 3 ; SWAP ; DUP ; CAR ; DIG 2 ; DIG 3 ; DIG 2 ; PAIR ; EXEC ; UNPAIR ; DIG 5 ; DIG 5 ; DIG 5 ; DIG 4 ; DIG 5 ; DIG 5 ; DUP 3 ; CAR ; SENDER ; DUP 4 ; CAR ; PAIR ; GET ; IF_NONE { PUSH bool False } {} ; IF { PUSH string "BLOCKED" ; FAILWITH } {} ; DUP 3 ; GET 15 ; DUP 4 ; DUP ; GET 3 ; PUSH mutez 0 ; DUP 6 ; GET 8 ; SENDER ; PUSH nat 0 ; DUP 9 ; GET 7 ; DUP 9 ; NOW ; PUSH nat 1 ; DUP 13 ; GET 5 ; DUP 14 ; GET 3 ; DUP 16 ; GET 5 ; AMOUNT ; SUB_MUTEZ ; IF_NONE { PUSH int 299 ; FAILWITH } {} ; PUSH bool False ; DUP 17 ; CAR ; PUSH nat 0 ; PUSH bytes 0x ; PAIR 15 ; DIG 6 ; DROP ; DIG 6 ; DROP ; DIG 6 ; DROP ; DIG 6 ; DROP ; SOME ; DUP 4 ; UPDATE ; UPDATE 3 ; DUP ; GET 15 ; PUSH nat 1 ; ADD ; UPDATE 15 ; DUG 3 ; NIL operation ; DIG 2 ; DIG 3 ; CAR ; DIG 3 ; PAIR 3 ; EMIT %channel_opened (pair (nat %channel_id) (pair (nat %cid) (address %recipient))) ; CONS } } } } } { IF_LEFT { IF_LEFT { DIG 2 ; DROP ; DIG 2 ; DROP ; DIG 2 ; DROP ; IF_LEFT { PUSH mutez 0 ; AMOUNT ; COMPARE ; EQ ; IF {} { PUSH string "NO_TEZ_ACCEPTED" ; FAILWITH } ; DUP 2 ; GET 3 ; DUP 2 ; CDR ; MEM ; IF {} { PUSH string "NO_SUCH_CHANNEL" ; FAILWITH } ; DUP 2 ; GET 3 ; DUP 2 ; CDR ; GET ; IF_NONE { PUSH int 540 ; FAILWITH } {} ; DUP ; GET 21 ; HASH_KEY ; IMPLICIT_ACCOUNT ; ADDRESS ; DUP 2 ; GET 19 ; SENDER ; COMPARE ; EQ ; IF { DROP ; PUSH bool True } { SENDER ; COMPARE ; EQ } ; IF {} { PUSH string "NOT_RECIPIENT" ; FAILWITH } ; DUP ; GET 7 ; IF { PUSH string "CHANNEL_CLEANED" ; FAILWITH } {} ; DUP 2 ; CAR ; UPDATE 1 ; DUP ; GET 15 ; UPDATE 3 ; DUP ; GET 15 ; UPDATE 23 ; DIG 2 ; DUP ; GET 3 ; DIG 2 ; SOME ; DIG 3 ; CDR ; UPDATE ; UPDATE 3 } { PUSH mutez 0 ; AMOUNT ; COMPARE ; EQ ; IF {} { PUSH string "NO_TEZ_ACCEPTED" ; FAILWITH } ; DUP 2 ; GET 3 ; DUP 2 ; CAR ; MEM ; IF {} { PUSH string "NO_SUCH_CHANNEL" ; FAILWITH } ; DUP 2 ; GET 3 ; DUP 2 ; CAR ; GET ; IF_NONE { PUSH int 575 ; FAILWITH } {} ; DUP ; GET 27 ; HASH_KEY ; IMPLICIT_ACCOUNT ; ADDRESS ; DUP 2 ; GET 25 ; SENDER ; COMPARE ; EQ ; IF { DROP ; PUSH bool True } { SENDER ; COMPARE ; EQ } ; IF {} { PUSH string "NOT_SENDER" ; FAILWITH } ; DUP 3 ; CAR ; DUP 2 ; GET 25 ; DUP 3 ; GET 5 ; PAIR ; GET ; IF_NONE { PUSH bool False } {} ; IF { PUSH string "BLOCKED" ; FAILWITH } {} ; DUP ; GET 7 ; IF { PUSH string "CHANNEL_CLEANED" ; FAILWITH } {} ; DUP 2 ; CDR ; UPDATE 13 ; DUP ; GET 15 ; PUSH nat 1 ; ADD ; UPDATE 15 ; NOW ; UPDATE 17 ; DIG 2 ; DUP ; GET 3 ; DIG 2 ; SOME ; DIG 3 ; CAR ; UPDATE ; UPDATE 3 } } { IF_LEFT { DIG 2 ; DROP ; DIG 2 ; DROP ; DIG 2 ; DROP ; PUSH mutez 0 ; AMOUNT ; COMPARE ; EQ ; IF {} { PUSH string "NO_TEZ_ACCEPTED" ; FAILWITH } ; DUP 2 ; GET 3 ; DUP 2 ; CAR ; MEM ; IF {} { PUSH string "NO_SUCH_CHANNEL" ; FAILWITH } ; DUP 2 ; GET 3 ; DUP 2 ; CAR ; GET ; IF_NONE { PUSH int 618 ; FAILWITH } {} ; DUP ; GET 25 ; SENDER ; COMPARE ; EQ ; IF { DUP 2 ; CDR ; UPDATE 27 } { DUP ; GET 19 ; SENDER ; COMPARE ; EQ ; IF {} { PUSH string "NOT_PARTY" ; FAILWITH } ; DUP 2 ; CDR ; UPDATE 21 } ; DIG 2 ; DUP ; GET 3 ; DIG 2 ; SOME ; DIG 3 ; CAR ; UPDATE ; UPDATE 3 } { IF_LEFT { DIG 2 ; DROP ; DIG 3 ; DROP ; PUSH mutez 0 ; AMOUNT ; COMPARE ; EQ ; IF {} { PUSH string "NO_TEZ_ACCEPTED" ; FAILWITH } ; DIG 2 ; SWAP ; DUP ; CAR ; DIG 2 ; DIG 3 ; DIG 2 ; PAIR ; EXEC ; UNPAIR ; SWAP ; DUG 2 ; IF {} { PUSH string "NOT_AUTHORIZED" ; FAILWITH } ; SWAP ; DUP ; CAR ; DUP 3 ; GET 3 ; SOME ; DIG 3 ; DUP ; GET 4 ; SWAP ; CAR ; PAIR ; UPDATE ; UPDATE 1 } { DIG 2 ; DROP ; DIG 3 ; DROP ; PUSH mutez 0 ; AMOUNT ; COMPARE ; EQ ; IF {} { PUSH string "NO_TEZ_ACCEPTED" ; FAILWITH } ; DIG 2 ; SWAP ; DUP ; CAR ; DIG 2 ; DIG 3 ; DIG 2 ; PAIR ; EXEC ; UNPAIR ; SWAP ; DUG 2 ; IF {} { PUSH string "NOT_AUTHORIZED" ; FAILWITH } ; SWAP ; DUP ; GET 13 ; DUP 3 ; GET 3 ; SOME ; DIG 3 ; DUP ; GET 4 ; SWAP ; CAR ; PAIR ; UPDATE ; UPDATE 13 } } } ; NIL operation } { IF_LEFT { IF_LEFT { DIG 2 ; DROP ; DIG 3 ; DROP ; PUSH mutez 0 ; AMOUNT ; COMPARE ; EQ ; IF {} { PUSH string "NO_TEZ_ACCEPTED" ; FAILWITH } ; DIG 2 ; SWAP ; DUP ; CAR ; DIG 2 ; DIG 3 ; DIG 2 ; PAIR ; EXEC ; UNPAIR ; SWAP ; DUG 2 ; IF {} { PUSH string "NOT_AUTHORIZED" ; FAILWITH } ; SWAP ; DUP ; GET 22 ; NOW ; DUP 4 ; CDR ; PAIR ; SOME ; DUP 4 ; CAR ; UPDATE ; UPDATE 22 ; SWAP ; EMIT %status_changed (pair (nat %cid) (bool %online)) ; NIL operation ; SWAP ; CONS } { DIG 3 ; DROP ; DIG 3 ; DROP ; IF_LEFT { DIG 2 ; DROP ; PUSH mutez 0 ; AMOUNT ; COMPARE ; EQ ; IF {} { PUSH string "NO_TEZ_ACCEPTED" ; FAILWITH } ; DUP 2 ; GET 3 ; DUP 2 ; CDR ; MEM ; IF {} { PUSH string "NO_SUCH_CHANNEL" ; FAILWITH } ; DUP 2 ; GET 3 ; DUP 2 ; CDR ; GET ; IF_NONE { PUSH int 666 ; FAILWITH } {} ; DUP ; GET 21 ; HASH_KEY ; IMPLICIT_ACCOUNT ; ADDRESS ; DUP 2 ; GET 19 ; SENDER ; COMPARE ; EQ ; IF { DROP ; PUSH bool True } { SENDER ; COMPARE ; EQ } ; IF {} { PUSH string "NOT_RECIPIENT" ; FAILWITH } ; DUP ; GET 7 ; IF { PUSH string "CHANNEL_CLEANED" ; FAILWITH } {} ; DUP ; GET 15 ; UPDATE 23 ; DIG 2 ; DUP ; GET 3 ; DIG 2 ; SOME ; DUP 4 ; CDR ; UPDATE ; UPDATE 3 ; SWAP ; NIL operation ; SWAP ; UNPAIR ; SWAP ; PAIR ; EMIT %answer_signal (pair (nat %channel_id) (bytes %sdp)) ; CONS } { DIG 2 ; DROP ; PUSH mutez 0 ; AMOUNT ; COMPARE ; EQ ; IF {} { PUSH string "NO_TEZ_ACCEPTED" ; FAILWITH } ; DUP 2 ; GET 3 ; DUP 2 ; CAR ; MEM ; IF {} { PUSH string "NO_SUCH_CHANNEL" ; FAILWITH } ; DUP 2 ; GET 3 ; DUP 2 ; CAR ; GET ; IF_NONE { PUSH int 638 ; FAILWITH } {} ; DUP ; GET 27 ; HASH_KEY ; IMPLICIT_ACCOUNT ; ADDRESS ; DUP 2 ; GET 25 ; SENDER ; COMPARE ; EQ ; IF { DROP ; PUSH bool True } { SENDER ; COMPARE ; EQ } ; IF {} { PUSH string "NOT_SENDER" ; FAILWITH } ; DUP 3 ; CAR ; DUP 2 ; GET 25 ; DUP 3 ; GET 5 ; PAIR ; GET ; IF_NONE { PUSH bool False } {} ; IF { PUSH string "BLOCKED" ; FAILWITH } {} ; GET 7 ; IF { PUSH string "CHANNEL_CLEANED" ; FAILWITH } {} ; EMIT %offer_signal (pair (nat %channel_id) (bytes %sdp)) ; NIL operation ; SWAP ; CONS } } } { DIG 3 ; DROP ; DIG 3 ; DROP ; IF_LEFT { DIG 2 ; DROP ; PUSH mutez 0 ; AMOUNT ; COMPARE ; EQ ; IF {} { PUSH string "NO_TEZ_ACCEPTED" ; FAILWITH } ; DUP 2 ; GET 3 ; DUP 2 ; MEM ; IF {} { PUSH string "NO_SUCH_CHANNEL" ; FAILWITH } ; DUP 2 ; GET 3 ; DUP 2 ; GET ; IF_NONE { PUSH int 406 ; FAILWITH } {} ; DUP ; GET 25 ; SENDER ; COMPARE ; EQ ; IF {} { PUSH string "NOT_SENDER" ; FAILWITH } ; DUP ; GET 11 ; NOW ; COMPARE ; GE ; IF {} { PUSH string "NOT_EXPIRED" ; FAILWITH } ; DUP ; GET 28 ; DUP 2 ; GET 9 ; SUB_MUTEZ ; IF_NONE { PUSH int 416 ; FAILWITH } {} ; DUP 2 ; GET 7 ; IF {} { DUP 4 ; GET 5 ; ADD } ; PUSH mutez 0 ; DUP 2 ; COMPARE ; GT ; IF { NIL operation ; DIG 2 ; GET 25 ; CONTRACT unit ; IF_NONE { PUSH int 420 ; FAILWITH } {} ; DIG 2 ; UNIT ; TRANSFER_TOKENS ; CONS } { DROP 2 ; NIL operation } ; DIG 2 ; DUP ; GET 3 ; NONE (pair bytes (pair nat (pair nat (pair bool (pair mutez (pair timestamp (pair bytes (pair nat (pair timestamp (pair address (pair key (pair nat (pair address (pair key mutez)))))))))))))) ; DIG 4 ; UPDATE ; UPDATE 3 ; SWAP } { IF_LEFT { DIG 2 ; DROP ; DUP 2 ; GET 3 ; DUP 2 ; MEM ; IF {} { PUSH string "NO_SUCH_CHANNEL" ; FAILWITH } ; DUP 2 ; GET 3 ; DUP 2 ; GET ; IF_NONE { PUSH int 504 ; FAILWITH } {} ; DUP ; GET 25 ; SENDER ; COMPARE ; EQ ; IF {} { PUSH string "NOT_SENDER" ; FAILWITH } ; DUP ; GET 7 ; IF { PUSH string "CHANNEL_CLEANED" ; FAILWITH } {} ; PUSH mutez 0 ; AMOUNT ; COMPARE ; GT ; IF {} { PUSH string "EMPTY_TOPUP" ; FAILWITH } ; DUP ; GET 9 ; AMOUNT ; ADD ; UPDATE 9 ; DIG 2 ; DUP ; GET 3 ; DIG 2 ; SOME ; DIG 3 ; UPDATE ; UPDATE 3 ; NIL operation } { DROP ; SWAP ; DROP ; PUSH mutez 0 ; AMOUNT ; COMPARE ; EQ ; IF {} { PUSH string "NO_TEZ_ACCEPTED" ; FAILWITH } ; DUP ; GET 19 ; SENDER ; COMPARE ; EQ ; IF {} { PUSH string "NOT_OWNER" ; FAILWITH } ; PUSH mutez 0 ; DUP 2 ; GET 9 ; COMPARE ; GT ; IF {} { PUSH string "NO_FEES" ; FAILWITH } ; DUP ; GET 9 ; SWAP ; PUSH mutez 0 ; UPDATE 9 ; SWAP ; NIL operation ; DUP 3 ; GET 19 ; CONTRACT unit ; IF_NONE { PUSH int 495 ; FAILWITH } {} ; DIG 2 ; UNIT ; TRANSFER_TOKENS ; CONS } } } } } ; NIL operation ; SWAP ; ITER { CONS } ; PAIR } ; view "get_next_id" unit nat { CDR ; GET 15 } ; view "get_channel" nat (pair (bytes %answer) (pair (nat %answer_round) (pair (nat %cid) (pair (bool %cleaned) (pair (mutez %deposit) (pair (timestamp %expiration) (pair (bytes %offer) (pair (nat %offer_round) (pair (timestamp %offer_ts) (pair (address %recipient) (pair (key %recipient_key) (pair (nat %seen_round) (pair (address %sender) (pair (key %sender_key) (mutez %withdrawn))))))))))))))) { UNPAIR ; DUP 2 ; GET 3 ; DUP 2 ; MEM ; IF {} { PUSH string "NO_SUCH_CHANNEL" ; FAILWITH } ; SWAP ; GET 3 ; SWAP ; GET ; IF_NONE { PUSH int 838 ; FAILWITH } {} } ; view "get_donations" nat (option (pair (nat %last_week) (pair (mutez %w0) (pair (mutez %w1) (pair (mutez %w2) (mutez %w3)))))) { UNPAIR ; SWAP ; GET 7 ; SWAP ; GET } ; view "get_donations_4w" nat mutez { UNPAIR ; PUSH mutez 0 ; DUP 3 ; GET 7 ; DUP 3 ; MEM ; IF { DUP 3 ; GET 7 ; DUP 3 ; GET ; IF_NONE { PUSH int 858 ; FAILWITH } {} ; PUSH timestamp "1970-01-01T00:00:00Z" ; NOW ; SUB ; PUSH nat 604800 ; PUSH int 259200 ; DUP 3 ; ADD ; EDIV ; IF_NONE { PUSH string "WEEK" ; FAILWITH } {} ; CAR ; ISNAT ; IF_NONE { PUSH int 860 ; FAILWITH } {} ; DUP 3 ; CAR ; DUP 2 ; SUB ; DUP ; EQ ; IF { DIG 4 ; DROP 4 ; SWAP ; DROP ; SWAP ; DROP ; DUP ; GET 8 ; DUP 2 ; GET 7 ; DUP 3 ; GET 5 ; DIG 3 ; GET 3 ; ADD ; ADD ; ADD } { PUSH int 1 ; DUP 2 ; COMPARE ; EQ ; IF { DIG 4 ; DROP 4 ; SWAP ; DROP ; SWAP ; DROP ; DUP ; GET 7 ; DUP 2 ; GET 5 ; DIG 2 ; GET 3 ; ADD ; ADD } { PUSH int 2 ; DUP 2 ; COMPARE ; EQ ; IF { DIG 4 ; DROP 4 ; SWAP ; DROP ; SWAP ; DROP ; DUP ; GET 5 ; SWAP ; GET 3 ; ADD } { PUSH int 3 ; DUP 2 ; COMPARE ; EQ ; IF { DIG 4 ; DROP 4 ; SWAP ; DROP ; SWAP ; DROP ; GET 3 } { DROP 4 ; SWAP ; DROP ; SWAP ; DROP } } } } } { SWAP ; DROP ; SWAP ; DROP } } ; view "get_status" nat (option (pair (bool %online) (timestamp %since))) { UNPAIR ; SWAP ; GET 22 ; SWAP ; GET } ; view "get_mail" nat (option (pair (mutez %amount) (pair (nat %cid) (pair (bytes %message) (pair (timestamp %posted) (pair (address %recipient) (address %sender))))))) { UNPAIR ; SWAP ; GET 11 ; SWAP ; GET } ; view "get_next_mail_id" unit nat { CDR ; GET 17 } ; view "is_muted" (pair (nat %cid) (address %user)) bool { UNPAIR ; SWAP ; GET 13 ; SWAP ; GET ; IF_NONE { PUSH bool False } {} } ; view "is_blocked" (pair (nat %cid) (address %user)) bool { UNPAIR ; SWAP ; CAR ; SWAP ; GET ; IF_NONE { PUSH bool False } {} } }