x
757
1531
{ parameter (or (or (or (unit %cancel_timelock) (pair %change_vote (nat %vote) (nat %vote_id))) (or (unit %end_vote) (or (unit %execute_timelock) (pair %propose (string %title) (pair (string %description_link) (pair (string %description_hash) (lambda %proposal_lambda unit (list operation)))))))) (or (or (list %return_stakes (pair (address %voter) (pair (nat %vote_id) (nat %proposal_id)))) (or (option %set_break_glass_contract address) (address %set_community_fund_address))) (or (pair %set_governance_params (nat %escrow_amount) (pair (nat %vote_delay_blocks) (pair (nat %vote_length_blocks) (pair (nat %min_yes_votes_percentage_for_escrow_return) (pair (nat %timelock_execution_delay_blocks) (pair (nat %timelock_cancelation_delay_blocks) (pair (nat %super_majority_percentage) (pair %quorum_cap (nat %lower) (nat %upper))))))))) (or (unit %veto_timelock) (pair %vote (nat %vote) (nat %vote_id)))))) ; storage (pair (pair (pair (option %break_glass_contract address) (pair (address %community_fund_address) (or %escrow_contract (address %fa1) (or (pair %fa2 (address %contract) (nat %token_id)) (unit %tez))))) (pair (pair %governance_params (nat %escrow_amount) (pair (nat %vote_delay_blocks) (pair (nat %vote_length_blocks) (pair (nat %min_yes_votes_percentage_for_escrow_return) (pair (nat %timelock_execution_delay_blocks) (pair (nat %timelock_cancelation_delay_blocks) (pair (nat %super_majority_percentage) (pair %quorum_cap (nat %lower) (nat %upper))))))))) (pair (big_map %historical_outcomes nat (pair (nat %outcome) (pair %poll (nat %id) (pair (pair %proposal (string %title) (pair (string %description_link) (pair (string %description_hash) (lambda %proposal_lambda unit (list operation))))) (pair (nat %voting_start_block) (pair (nat %voting_end_block) (pair (map %votes nat nat) (pair (nat %total_votes) (pair (address %author) (pair (nat %escrow_amount) (pair (nat %quorum) (pair %quorum_cap (nat %lower) (nat %upper))))))))))))) (big_map %metadata string bytes)))) (pair (pair (nat %next_proposal_id) (pair (option %poll (pair (nat %id) (pair (pair %proposal (string %title) (pair (string %description_link) (pair (string %description_hash) (lambda %proposal_lambda unit (list operation))))) (pair (nat %voting_start_block) (pair (nat %voting_end_block) (pair (map %votes nat nat) (pair (nat %total_votes) (pair (address %author) (pair (nat %escrow_amount) (pair (nat %quorum) (pair %quorum_cap (nat %lower) (nat %upper)))))))))))) (nat %quorum))) (pair (option %timelock (pair (nat %id) (pair (pair %proposal (string %title) (pair (string %description_link) (pair (string %description_hash) (lambda %proposal_lambda unit (list operation))))) (pair (nat %execution_start_block) (pair (nat %cancelation_start_block) (address %author)))))) (pair (big_map %vote_tracker (pair (address %voter) (pair (nat %vote_id) (nat %proposal_id))) (pair (nat %vote_value) (nat %weight))) (address %voting_contract))))) ; code { LAMBDA (pair (pair nat nat) (pair (pair (pair (option address) (pair address (or address (or (pair address nat) unit)))) (pair (pair nat (pair nat (pair nat (pair nat (pair nat (pair nat (pair nat (pair nat nat)))))))) (pair (big_map nat (pair nat (pair nat (pair (pair string (pair string (pair string (lambda unit (list operation))))) (pair nat (pair nat (pair (map nat nat) (pair nat (pair address (pair nat (pair nat (pair nat nat)))))))))))) (big_map string bytes)))) (pair (pair nat (pair (option (pair nat (pair (pair string (pair string (pair string (lambda unit (list operation))))) (pair nat (pair nat (pair (map nat nat) (pair nat (pair address (pair nat (pair nat (pair nat nat))))))))))) nat)) (pair (option (pair nat (pair (pair string (pair string (pair string (lambda unit (list operation))))) (pair nat (pair nat address))))) (pair (big_map (pair address (pair nat nat)) (pair nat nat)) address))))) (pair (pair nat (pair (pair string (pair string (pair string (lambda unit (list operation))))) (pair nat (pair nat (pair (map nat nat) (pair nat (pair address (pair nat (pair nat (pair nat nat)))))))))) (pair (pair (pair (option address) (pair address (or address (or (pair address nat) unit)))) (pair (pair nat (pair nat (pair nat (pair nat (pair nat (pair nat (pair nat (pair nat nat)))))))) (pair (big_map nat (pair nat (pair nat (pair (pair string (pair string (pair string (lambda unit (list operation))))) (pair nat (pair nat (pair (map nat nat) (pair nat (pair address (pair nat (pair nat (pair nat nat)))))))))))) (big_map string bytes)))) (pair (pair nat (pair (option (pair nat (pair (pair string (pair string (pair string (lambda unit (list operation))))) (pair nat (pair nat (pair (map nat nat) (pair nat (pair address (pair nat (pair nat (pair nat nat))))))))))) nat)) (pair (option (pair nat (pair (pair string (pair string (pair string (lambda unit (list operation))))) (pair nat (pair nat address))))) (pair (big_map (pair address (pair nat nat)) (pair nat nat)) address))))) { UNPAIR ; SWAP ; DUP ; DUG 2 ; GET 3 ; GET 3 ; IF_NONE { PUSH string "NO_POLL" ; FAILWITH } {} ; DUP ; GET 7 ; LEVEL ; COMPARE ; LE ; IF {} { PUSH string "VOTING_FINISHED" ; FAILWITH } ; DUP ; GET 5 ; LEVEL ; COMPARE ; GE ; IF {} { PUSH string "VOTING_NOT_STARTED" ; FAILWITH } ; PUSH nat 3 ; DIG 2 ; CAR ; COMPARE ; LT ; IF {} { PUSH string "BAD_VOTE_VALUE" ; FAILWITH } ; PAIR } ; SWAP ; UNPAIR ; IF_LEFT { IF_LEFT { IF_LEFT { AMOUNT ; PUSH mutez 0 ; COMPARE ; EQ ; IF {} { AMOUNT ; FAILWITH } ; SWAP ; DUP ; DUG 2 ; GET 5 ; IF_NONE { PUSH string "NO_ITEM_IN_TIMELOCK" ; FAILWITH } {} ; DUP ; GET 7 ; LEVEL ; DIG 3 ; DROP ; DIG 4 ; DROP ; COMPARE ; GE ; IF {} { PUSH string "TOO_SOON" ; FAILWITH } ; CAR ; SWAP ; DUP ; DUG 2 ; CAR ; GET 5 ; SWAP ; DUP ; DUG 2 ; GET ; IF_NONE { PUSH int 423 ; FAILWITH } {} ; DIG 2 ; UNPAIR ; UNPAIR ; SWAP ; UNPAIR ; SWAP ; UNPAIR ; DIG 5 ; CDR ; PUSH nat 3 ; PAIR ; SOME ; DIG 6 ; UPDATE ; PAIR ; SWAP ; PAIR ; SWAP ; PAIR ; PAIR ; NONE (pair nat (pair (pair string (pair string (pair string (lambda unit (list operation))))) (pair nat (pair nat address)))) ; UPDATE 5 } { AMOUNT ; PUSH mutez 0 ; COMPARE ; EQ ; IF {} { AMOUNT ; FAILWITH } ; DIG 2 ; SWAP ; DUP ; DUG 2 ; SWAP ; DIG 3 ; DIG 2 ; PAIR ; EXEC ; UNPAIR ; SWAP ; DUP ; DUG 3 ; GET 7 ; SWAP ; DUP ; DUG 2 ; CAR ; DUP 4 ; CDR ; SENDER ; PAIR 3 ; MEM ; IF {} { PUSH string "MUST_VOTE_FIRST" ; FAILWITH } ; DUP 3 ; GET 7 ; SWAP ; DUP ; DUG 2 ; CAR ; DUP 4 ; CDR ; SENDER ; PAIR 3 ; GET ; IF_NONE { PUSH int 233 ; FAILWITH } {} ; DUP 3 ; CAR ; SWAP ; DUP ; DUG 2 ; CAR ; COMPARE ; NEQ ; IF {} { PUSH string "BAD_VOTE_VALUE" ; FAILWITH } ; SWAP ; DUP ; GET 9 ; DUP ; DUP 5 ; CAR ; DUP ; DUG 2 ; GET ; IF_NONE { PUSH int 237 ; FAILWITH } {} ; DUP 5 ; CDR ; ADD ; SOME ; SWAP ; UPDATE ; UPDATE 9 ; DUP ; DUG 2 ; DUP ; GET 9 ; DUP 3 ; CDR ; DIG 4 ; GET 9 ; DUP 5 ; CAR ; GET ; IF_NONE { PUSH int 239 ; FAILWITH } {} ; SUB ; ISNAT ; IF_NONE { PUSH int 238 ; FAILWITH } {} ; SOME ; DUP 4 ; CAR ; UPDATE ; UPDATE 9 ; SWAP ; DIG 3 ; DUP ; GET 7 ; DIG 2 ; CDR ; DUP 5 ; CAR ; PAIR ; SOME ; DUP 4 ; CAR ; DIG 5 ; CDR ; SENDER ; PAIR 3 ; UPDATE ; UPDATE 7 ; UNPAIR ; SWAP ; UNPAIR ; UNPAIR ; SWAP ; CDR ; DIG 4 ; SOME ; PAIR ; SWAP ; PAIR ; PAIR ; SWAP ; PAIR } ; NIL operation } { IF_LEFT { AMOUNT ; PUSH mutez 0 ; COMPARE ; EQ ; IF {} { AMOUNT ; FAILWITH } ; SWAP ; DUP ; DUG 2 ; GET 5 ; IF_NONE {} { PUSH string "ITEM_IN_TIMELOCK" ; FAILWITH } ; SWAP ; DUP ; DUG 2 ; GET 3 ; GET 3 ; IF_NONE { PUSH string "NO_POLL" ; FAILWITH } {} ; DUP ; GET 7 ; LEVEL ; COMPARE ; GT ; IF {} { PUSH string "VOTING_NOT_FINISHED" ; FAILWITH } ; DUP 3 ; GET 8 ; UNIT ; VIEW "view_disc_factor" nat ; IF_NONE { PUSH string "Invalue View: view_disc_factor" ; FAILWITH } {} ; PUSH nat 100 ; DUP 5 ; CAR ; GET 3 ; GET 7 ; PUSH nat 1000000000000 ; DUP 4 ; DUP 6 ; GET 9 ; PUSH nat 0 ; GET ; IF_NONE { PUSH int 318 ; FAILWITH } {} ; MUL ; EDIV ; IF_NONE { PUSH int 318 ; FAILWITH } { CAR } ; PUSH nat 1000000000000 ; DUP 5 ; DUP 7 ; GET 9 ; PUSH nat 1 ; GET ; IF_NONE { PUSH int 317 ; FAILWITH } {} ; MUL ; EDIV ; IF_NONE { PUSH int 317 ; FAILWITH } { CAR } ; ADD ; MUL ; EDIV ; IF_NONE { PUSH int 325 ; FAILWITH } { CAR } ; PUSH nat 100 ; DUP 6 ; CAR ; GET 3 ; GET 13 ; PUSH nat 1000000000000 ; DUP 5 ; DUP 7 ; GET 9 ; PUSH nat 0 ; GET ; IF_NONE { PUSH int 318 ; FAILWITH } {} ; MUL ; EDIV ; IF_NONE { PUSH int 318 ; FAILWITH } { CAR } ; PUSH nat 1000000000000 ; DUP 6 ; DUP 8 ; GET 9 ; PUSH nat 1 ; GET ; IF_NONE { PUSH int 317 ; FAILWITH } {} ; MUL ; EDIV ; IF_NONE { PUSH int 317 ; FAILWITH } { CAR } ; ADD ; MUL ; EDIV ; IF_NONE { PUSH int 328 ; FAILWITH } { CAR } ; DUP 6 ; CAR ; CAR ; GET 3 ; DUP 3 ; PUSH nat 1000000000000 ; DUP 6 ; DUP 8 ; GET 9 ; PUSH nat 1 ; GET ; IF_NONE { PUSH int 317 ; FAILWITH } {} ; MUL ; EDIV ; IF_NONE { PUSH int 317 ; FAILWITH } { CAR } ; COMPARE ; GE ; IF { DROP ; DUP 4 ; GET 13 } {} ; DUP 7 ; CAR ; CAR ; GET 4 ; IF_LEFT { PUSH nat 0 ; DUP 9 ; CAR ; GET 3 ; CAR ; COMPARE ; GT ; IF { CONTRACT %transfer (pair (address %from) (pair (address %to) (nat %value))) ; IF_NONE { PUSH int 19 ; FAILWITH } {} ; NIL operation ; SWAP ; PUSH mutez 0 ; DUP 10 ; CAR ; GET 3 ; CAR ; DUP 5 ; SELF_ADDRESS ; PAIR 3 ; TRANSFER_TOKENS ; CONS } { DROP ; NIL operation } } { IF_LEFT { PUSH nat 0 ; DUP 9 ; CAR ; GET 3 ; CAR ; COMPARE ; GT ; IF { DUP ; CAR ; CONTRACT %transfer (list (pair (address %from_) (list %txs (pair (address %to_) (pair (nat %token_id) (nat %amount)))))) ; IF_NONE { PUSH int 36 ; FAILWITH } {} ; NIL operation ; SWAP ; PUSH mutez 0 ; NIL (pair address (list (pair address (pair nat nat)))) ; NIL (pair address (pair nat nat)) ; DUP 13 ; CAR ; GET 3 ; CAR ; DIG 6 ; CDR ; DUP 8 ; PAIR 3 ; CONS ; SELF_ADDRESS ; PAIR ; CONS ; TRANSFER_TOKENS ; CONS } { DROP ; NIL operation } } { DROP ; DUP ; CONTRACT unit ; IF_NONE { PUSH int 340 ; FAILWITH } {} ; NIL operation ; SWAP ; PUSH mutez 1 ; DUP 10 ; CAR ; GET 3 ; CAR ; MUL ; UNIT ; TRANSFER_TOKENS ; CONS } } ; DUP 3 ; PUSH nat 1000000000000 ; DUP 7 ; DUP 9 ; GET 9 ; PUSH nat 1 ; GET ; IF_NONE { PUSH int 317 ; FAILWITH } {} ; MUL ; EDIV ; IF_NONE { PUSH int 317 ; FAILWITH } { CAR } ; COMPARE ; GE ; IF { DUP 8 ; GET 3 ; GET 4 ; PUSH nat 1000000000000 ; DUP 7 ; DUP 9 ; GET 11 ; MUL ; EDIV ; IF_NONE { PUSH int 320 ; FAILWITH } { CAR } ; COMPARE ; GE } { PUSH bool False } ; IF { DUP 8 ; DUP 7 ; GET 13 ; DUP 10 ; CAR ; GET 3 ; GET 11 ; LEVEL ; ADD ; DUP 11 ; CAR ; GET 3 ; GET 9 ; LEVEL ; ADD ; DIG 9 ; DUP ; GET 3 ; SWAP ; DUP ; DUG 11 ; CAR ; PAIR 5 ; DIG 3 ; DROP ; DIG 3 ; DROP ; DIG 3 ; DROP ; DIG 5 ; DROP ; DIG 5 ; DROP ; DIG 5 ; DROP ; SOME ; UPDATE 5 ; UNPAIR ; UNPAIR ; SWAP ; UNPAIR ; SWAP ; UNPAIR ; DUP 8 ; PUSH nat 1 ; PAIR ; SOME ; DUP 9 ; CAR ; UPDATE ; PAIR ; SWAP ; PAIR ; SWAP ; PAIR ; PAIR ; DUG 3 } { SWAP ; DROP ; SWAP ; DROP ; SWAP ; DROP ; DIG 3 ; DROP ; DIG 4 ; DROP ; DIG 3 ; UNPAIR ; UNPAIR ; SWAP ; UNPAIR ; SWAP ; UNPAIR ; DUP 8 ; PUSH nat 0 ; PAIR ; SOME ; DUP 9 ; CAR ; UPDATE ; PAIR ; SWAP ; PAIR ; SWAP ; PAIR ; PAIR ; DUG 3 } ; PUSH nat 100 ; PUSH nat 20 ; PUSH nat 1000000000000 ; DIG 4 ; DUP 6 ; GET 11 ; MUL ; EDIV ; IF_NONE { PUSH int 320 ; FAILWITH } { CAR } ; MUL ; PUSH nat 80 ; DUP 5 ; GET 17 ; MUL ; ADD ; EDIV ; IF_NONE { PUSH int 362 ; FAILWITH } { CAR } ; DUP 3 ; GET 20 ; DUP ; DUP 3 ; COMPARE ; LE ; IF { DROP } { SWAP ; DROP } ; DIG 2 ; GET 19 ; DUP ; DUP 3 ; COMPARE ; LE ; IF { SWAP ; DROP } { DROP } ; DIG 2 ; UNPAIR ; SWAP ; UNPAIR ; CAR ; DIG 3 ; NONE (pair nat (pair (pair string (pair string (pair string (lambda unit (list operation))))) (pair nat (pair nat (pair (map nat nat) (pair nat (pair address (pair nat (pair nat (pair nat nat)))))))))) ; PAIR ; SWAP ; PAIR ; PAIR ; SWAP ; PAIR ; SWAP } { IF_LEFT { AMOUNT ; PUSH mutez 0 ; COMPARE ; EQ ; IF {} { AMOUNT ; FAILWITH } ; SWAP ; DUP ; DUG 2 ; GET 5 ; IF_NONE { PUSH string "NO_ITEM_IN_TIMELOCK" ; FAILWITH } {} ; DUP ; GET 8 ; SENDER ; COMPARE ; EQ ; IF {} { PUSH string "NOT_AUTHOR" ; FAILWITH } ; DUP ; GET 5 ; LEVEL ; DIG 3 ; DROP ; DIG 4 ; DROP ; COMPARE ; GE ; IF {} { PUSH string "TOO_SOON" ; FAILWITH } ; DUP ; GET 3 ; GET 6 ; NIL operation ; SWAP ; UNIT ; EXEC ; ITER { CONS } ; SWAP ; CAR ; DUP 3 ; CAR ; GET 5 ; SWAP ; DUP ; DUG 2 ; GET ; IF_NONE { PUSH int 396 ; FAILWITH } {} ; DIG 3 ; UNPAIR ; UNPAIR ; SWAP ; UNPAIR ; SWAP ; UNPAIR ; DIG 5 ; CDR ; PUSH nat 2 ; PAIR ; SOME ; DIG 6 ; UPDATE ; PAIR ; SWAP ; PAIR ; SWAP ; PAIR ; PAIR ; NONE (pair nat (pair (pair string (pair string (pair string (lambda unit (list operation))))) (pair nat (pair nat address)))) ; UPDATE 5 ; SWAP } { SWAP ; DUP ; DUG 2 ; GET 3 ; GET 3 ; IF_NONE {} { PUSH string "POLL_UNDERWAY" ; FAILWITH } ; SWAP ; DUP ; DUG 2 ; CAR ; CAR ; GET 4 ; IF_LEFT { PUSH nat 0 ; DUP 4 ; CAR ; GET 3 ; CAR ; COMPARE ; GT ; IF { CONTRACT %transfer (pair (address %from) (pair (address %to) (nat %value))) ; IF_NONE { PUSH int 19 ; FAILWITH } {} ; NIL operation ; SWAP ; PUSH mutez 0 ; DUP 5 ; CAR ; GET 3 ; CAR ; SELF_ADDRESS ; SENDER ; PAIR 3 ; TRANSFER_TOKENS ; CONS } { DROP ; NIL operation } } { IF_LEFT { PUSH nat 0 ; DUP 4 ; CAR ; GET 3 ; CAR ; COMPARE ; GT ; IF { DUP ; CAR ; CONTRACT %transfer (list (pair (address %from_) (list %txs (pair (address %to_) (pair (nat %token_id) (nat %amount)))))) ; IF_NONE { PUSH int 36 ; FAILWITH } {} ; NIL operation ; SWAP ; PUSH mutez 0 ; NIL (pair address (list (pair address (pair nat nat)))) ; NIL (pair address (pair nat nat)) ; DUP 8 ; CAR ; GET 3 ; CAR ; DIG 6 ; CDR ; SELF_ADDRESS ; PAIR 3 ; CONS ; SENDER ; PAIR ; CONS ; TRANSFER_TOKENS ; CONS } { DROP ; NIL operation } } { DROP ; PUSH mutez 1 ; DUP 3 ; CAR ; GET 3 ; CAR ; MUL ; AMOUNT ; COMPARE ; EQ ; IF {} { PUSH string "NOT_ENOUGH_ESCROW" ; FAILWITH } ; NIL operation } } ; DUP 3 ; CAR ; GET 3 ; GET 3 ; LEVEL ; ADD ; DUP 4 ; CAR ; GET 3 ; GET 5 ; SWAP ; DUP ; DUG 2 ; ADD ; DUP 5 ; UNPAIR ; SWAP ; UNPAIR ; UNPAIR ; SWAP ; CDR ; DIG 8 ; DUP ; CAR ; GET 3 ; GET 14 ; SWAP ; DUP ; GET 3 ; GET 4 ; SWAP ; DUP ; DUG 11 ; CAR ; GET 3 ; CAR ; SENDER ; PUSH nat 0 ; PUSH (map nat nat) { Elt 0 0 ; Elt 1 0 ; Elt 2 0 } ; DUP 11 ; DUP 13 ; DUP 16 ; DUP 18 ; GET 3 ; CAR ; PAIR 10 ; DIG 5 ; DROP ; DIG 5 ; DROP ; DIG 6 ; DROP ; DIG 6 ; DROP ; DIG 6 ; DROP ; SOME ; PAIR ; SWAP ; PUSH nat 1 ; ADD ; PAIR ; PAIR ; SWAP ; PAIR ; SWAP } } } } { IF_LEFT { IF_LEFT { AMOUNT ; PUSH mutez 0 ; COMPARE ; EQ ; IF {} { AMOUNT ; FAILWITH } ; DUP ; SIZE ; PUSH nat 50 ; SWAP ; COMPARE ; LE ; IF {} { PUSH string "TOO_MANY_STAKES_TO_RETURN" ; FAILWITH } ; SWAP ; DUP ; DUG 2 ; GET 3 ; CAR ; DUP 3 ; GET 3 ; GET 3 ; IF_NONE {} { DROP 2 ; SWAP ; DUP ; DUG 2 ; GET 3 ; GET 3 ; IF_NONE { PUSH int 263 ; FAILWITH } {} ; CAR } ; NIL (pair address (list (pair address (pair nat nat)))) ; DUP 3 ; ITER { DUP 3 ; SWAP ; DUP ; DUG 2 ; GET 4 ; COMPARE ; LT ; IF {} { PUSH string "NOT_ALLOWED" ; FAILWITH } ; DUP 5 ; GET 7 ; SWAP ; DUP ; DUG 2 ; MEM ; IF {} { PUSH string "NOT_ALLOWED" ; FAILWITH } ; SWAP ; NIL (pair address (pair nat nat)) ; PUSH nat 1 ; DIG 3 ; DUP ; GET 3 ; SWAP ; DUP ; DUG 5 ; CAR ; PAIR 3 ; CONS ; SELF_ADDRESS ; PAIR ; CONS ; SWAP ; DIG 4 ; DUP ; GET 7 ; NONE (pair nat nat) ; DIG 3 ; UPDATE ; UPDATE 7 ; DUG 3 } ; SWAP ; DROP ; SWAP ; DROP ; DIG 2 ; DROP ; NIL operation ; DUP 3 ; GET 8 ; CONTRACT %transfer (list (pair (address %from_) (list %txs (pair (address %to_) (pair (nat %token_id) (nat %amount)))))) ; IF_NONE { PUSH string "NOT_TOKEN_CONTRACT" ; FAILWITH } {} ; PUSH mutez 0 ; DIG 3 ; TRANSFER_TOKENS ; CONS } { DIG 2 ; DROP ; IF_LEFT { AMOUNT ; PUSH mutez 0 ; COMPARE ; EQ ; IF {} { AMOUNT ; FAILWITH } ; SELF_ADDRESS ; SENDER ; COMPARE ; EQ ; IF {} { PUSH string "NOT_ALLOWED" ; FAILWITH } ; SWAP ; UNPAIR ; UNPAIR ; CDR ; DIG 3 ; PAIR ; PAIR ; PAIR } { AMOUNT ; PUSH mutez 0 ; COMPARE ; EQ ; IF {} { AMOUNT ; FAILWITH } ; SELF_ADDRESS ; SENDER ; COMPARE ; EQ ; IF {} { PUSH string "NOT_ALLOWED" ; FAILWITH } ; SWAP ; UNPAIR ; UNPAIR ; UNPAIR ; SWAP ; CDR ; DIG 4 ; PAIR ; SWAP ; PAIR ; PAIR ; PAIR } ; NIL operation } } { IF_LEFT { DIG 2 ; DROP ; AMOUNT ; PUSH mutez 0 ; COMPARE ; EQ ; IF {} { AMOUNT ; FAILWITH } ; SWAP ; DUP ; DUG 2 ; CAR ; CAR ; CAR ; IF_NONE { SELF_ADDRESS ; SENDER ; COMPARE ; EQ ; IF {} { PUSH string "NOT_ALLOWED" ; FAILWITH } } { DROP ; SWAP ; DUP ; DUG 2 ; CAR ; CAR ; CAR ; IF_NONE { PUSH string "NO_BREAK_GLASS_CONTRACT_SET" ; FAILWITH } {} ; SELF_ADDRESS ; SENDER ; COMPARE ; EQ ; IF { DROP ; PUSH bool True } { SENDER ; COMPARE ; EQ } ; IF {} { PUSH string "NOT_ALLOWED" ; FAILWITH } } ; SWAP ; UNPAIR ; UNPAIR ; SWAP ; CDR ; DIG 3 ; PAIR ; SWAP ; PAIR ; PAIR ; NIL operation } { IF_LEFT { AMOUNT ; PUSH mutez 0 ; COMPARE ; EQ ; IF {} { AMOUNT ; FAILWITH } ; SWAP ; DUP ; DUG 2 ; CAR ; CAR ; CAR ; IF_NONE { PUSH string "NO_BREAK_GLASS_CONTRACT_SET" ; FAILWITH } {} ; DUP ; SENDER ; COMPARE ; EQ ; IF {} { PUSH string "NOT_ALLOWED" ; FAILWITH } ; DUP 3 ; GET 5 ; IF_NONE { PUSH string "NO_ITEM_IN_TIMELOCK" ; FAILWITH } {} ; DUP ; GET 5 ; LEVEL ; DIG 3 ; DROP ; DIG 3 ; DROP ; DIG 4 ; DROP ; COMPARE ; LT ; IF {} { PUSH string "TOO_LATE" ; FAILWITH } ; CAR ; SWAP ; DUP ; DUG 2 ; CAR ; GET 5 ; SWAP ; DUP ; DUG 2 ; GET ; IF_NONE { PUSH int 454 ; FAILWITH } {} ; DIG 2 ; UNPAIR ; UNPAIR ; SWAP ; UNPAIR ; SWAP ; UNPAIR ; DIG 5 ; CDR ; PUSH nat 4 ; PAIR ; SOME ; DIG 6 ; UPDATE ; PAIR ; SWAP ; PAIR ; SWAP ; PAIR ; PAIR ; NONE (pair nat (pair (pair string (pair string (pair string (lambda unit (list operation))))) (pair nat (pair nat address)))) ; UPDATE 5 ; NIL operation } { AMOUNT ; PUSH mutez 0 ; COMPARE ; EQ ; IF {} { AMOUNT ; FAILWITH } ; DIG 2 ; SWAP ; DUP ; DUG 2 ; SWAP ; DIG 3 ; DIG 2 ; PAIR ; EXEC ; UNPAIR ; SWAP ; DUP ; DUG 3 ; GET 7 ; SWAP ; DUP ; DUG 2 ; CAR ; DUP 4 ; CDR ; SENDER ; PAIR 3 ; MEM ; IF { PUSH string "ALREADY_VOTED" ; FAILWITH } {} ; DUP 3 ; GET 8 ; SENDER ; VIEW "view_owner_stakes" (set nat) ; IF_NONE { PUSH string "Invalid View: view_owner_stakes" ; FAILWITH } {} ; DUP 3 ; CDR ; MEM ; IF {} { PUSH string "NOT_OWNER" ; FAILWITH } ; DUP 3 ; GET 8 ; DUP 3 ; CDR ; VIEW "view_stake" (pair (nat %token_amount) (pair (nat %stake) (timestamp %age_timestamp))) ; IF_NONE { PUSH string "Invalid View: view_stake" ; FAILWITH } {} ; SWAP ; DUP ; GET 9 ; DUP ; DUP 5 ; CAR ; DUP ; DUG 2 ; GET ; IF_NONE { PUSH int 194 ; FAILWITH } {} ; DUP 5 ; GET 3 ; ADD ; SOME ; SWAP ; UPDATE ; UPDATE 9 ; DUP ; GET 11 ; DUP 3 ; GET 3 ; ADD ; UPDATE 11 ; SWAP ; DIG 3 ; UNPAIR ; SWAP ; UNPAIR ; UNPAIR ; SWAP ; CDR ; DUP 6 ; SOME ; PAIR ; SWAP ; PAIR ; PAIR ; SWAP ; PAIR ; DUP ; GET 7 ; DIG 2 ; GET 3 ; DUP 5 ; CAR ; PAIR ; SOME ; DIG 3 ; CAR ; DUP 5 ; CDR ; SENDER ; PAIR 3 ; UPDATE ; UPDATE 7 ; SWAP ; NIL operation ; DUP 3 ; GET 8 ; CONTRACT %transfer (list (pair (address %from_) (list %txs (pair (address %to_) (pair (nat %token_id) (nat %amount)))))) ; IF_NONE { PUSH string "NOT_TOKEN_CONTRACT" ; FAILWITH } {} ; PUSH mutez 0 ; NIL (pair address (list (pair address (pair nat nat)))) ; NIL (pair address (pair nat nat)) ; PUSH nat 1 ; DIG 6 ; CDR ; SELF_ADDRESS ; PAIR 3 ; CONS ; SENDER ; PAIR ; CONS ; TRANSFER_TOKENS ; CONS } } } } ; NIL operation ; SWAP ; ITER { CONS } ; PAIR } ; view "get_current_poll_stats" unit (option (map nat nat)) { CDR ; DUP ; GET 3 ; GET 3 ; IF_NONE { DROP ; NONE (map nat nat) } { DROP ; DUP ; GET 3 ; GET 3 ; IF_NONE { PUSH int 523 ; FAILWITH } {} ; GET 9 ; SWAP ; GET 8 ; UNIT ; VIEW "view_disc_factor" nat ; IF_NONE { PUSH string "Invalue View: view_disc_factor" ; FAILWITH } {} ; SWAP ; DUP ; DUG 2 ; PUSH nat 1000000000000 ; DUP 3 ; DIG 4 ; PUSH nat 1 ; GET ; IF_NONE { PUSH int 528 ; FAILWITH } {} ; MUL ; EDIV ; IF_NONE { PUSH int 528 ; FAILWITH } { CAR } ; SOME ; PUSH nat 1 ; UPDATE ; DUP ; DUG 2 ; PUSH nat 1000000000000 ; DUP 3 ; DIG 4 ; PUSH nat 0 ; GET ; IF_NONE { PUSH int 529 ; FAILWITH } {} ; MUL ; EDIV ; IF_NONE { PUSH int 529 ; FAILWITH } { CAR } ; SOME ; PUSH nat 0 ; UPDATE ; DUP ; DUG 2 ; PUSH nat 1000000000000 ; DIG 2 ; DIG 3 ; PUSH nat 2 ; GET ; IF_NONE { PUSH int 530 ; FAILWITH } {} ; MUL ; EDIV ; IF_NONE { PUSH int 530 ; FAILWITH } { CAR } ; SOME ; PUSH nat 2 ; UPDATE ; SOME } } }