x
1085
parameter (or (or (or (or (nat %cancelGame) (unit %confirmAdmin)) (or (unit %createGame) (unit %default))) (or (or (nat %match) (nat %push)) (or (option %setAdmin address) (option %setArbiter address)))) (or (or (pair %setLimits (mutez %checkLimit) (mutez %minStake) (mutez %maxStake) (nat %permille)) (address %setOracle)) (bool %setPause)));storage (pair (pair (pair (pair (address %admin) (option %arbiter address)) (pair (mutez %checkLimit) (address %communityWallet))) (pair (pair (nat %epoch) (mutez %flipped)) (pair (big_map %games nat (pair (address %p1) (mutez %amount) (nat %status) (option %p2 address) (nat %epoch) (option %ts timestamp) (nat %seed))) (nat %gamesTotal)))) (pair (pair (pair (mutez %maxStake) (mutez %minStake)) (pair (address %oracle) (bool %paused))) (pair (pair (option %pending address) (nat %permille)) (pair (big_map %players address nat) (nat %seed)))));code { PUSH nat 0 ; NIL operation ; PUSH string "Robot, huh?" ; PUSH string "Couldn't call oracle view" ; PUSH string "Contract is paused" ; DIG 5 ; UNPAIR ; IF_LEFT { IF_LEFT { IF_LEFT { DIG 2 ; DIG 3 ; DIG 6 ; DROP 3 ; IF_LEFT { SWAP ; DUP ; DUG 2 ; CDR ; CDR ; CDR ; CAR ; SENDER ; GET ; IF_NONE { DIG 2 ; DROP ; UNIT } { LEVEL ; SWAP ; COMPARE ; EQ ; IF { DIG 2 ; FAILWITH } { DIG 2 ; DROP ; UNIT } } ; DROP ; SWAP ; DUP ; DUG 2 ; CAR ; CDR ; CDR ; CAR ; SWAP ; DUP ; DUG 2 ; GET ; IF_NONE { PUSH int 1 ; FAILWITH } { DUP 3 ; CAR ; CAR ; CAR ; CAR ; SWAP ; DUP ; DUG 2 ; CAR ; COMPARE ; EQ ; SENDER ; DUP 3 ; CAR ; COMPARE ; EQ ; OR ; IF {} { DROP ; PUSH string "This game isn't yours to cancel!" ; FAILWITH } } ; PUSH string "Can't cancel this" ; NONE address ; DUP 3 ; GET 7 ; COMPARE ; EQ ; IF { DROP } { FAILWITH } ; DUP 3 ; CDR ; CDR ; CDR ; CDR ; DUP 4 ; CDR ; CDR ; CDR ; CAR ; LEVEL ; SOME ; SENDER ; UPDATE ; PAIR ; DUP 4 ; CDR ; CDR ; CAR ; PAIR ; DUP 4 ; CDR ; CAR ; PAIR ; DIG 3 ; CAR ; PAIR ; SWAP ; PUSH nat 3 ; UPDATE 5 ; SWAP ; DUP ; DUG 2 ; CDR ; DUP 3 ; CAR ; CDR ; CDR ; CDR ; DUP 4 ; CAR ; CDR ; CDR ; CAR ; DUP 4 ; DIG 6 ; SWAP ; SOME ; SWAP ; UPDATE ; PAIR ; DUP 4 ; CAR ; CDR ; CAR ; PAIR ; DIG 3 ; CAR ; CAR ; PAIR ; PAIR ; DUG 2 ; DUP ; DUG 3 ; GET 3 ; DIG 3 ; CAR ; PUSH mutez 0 ; DUP 3 ; COMPARE ; GT ; IF { CONTRACT unit ; IF_NONE { PUSH string "Destination not found" ; FAILWITH } {} ; DIG 2 ; SWAP ; DIG 2 ; UNIT ; TRANSFER_TOKENS ; CONS } { DROP 2 } ; PAIR } { DIG 2 ; DROP 2 ; DUP ; CDR ; CDR ; CAR ; CAR ; SENDER ; SOME ; COMPARE ; NEQ ; IF { PUSH int 1 ; FAILWITH } {} ; DUP ; CDR ; SWAP ; DUP ; DUG 2 ; CAR ; CDR ; DUP 3 ; CAR ; CAR ; CDR ; DIG 3 ; CAR ; CAR ; CAR ; CDR ; SENDER ; PAIR ; PAIR ; PAIR ; PAIR ; DUP ; CDR ; CDR ; CDR ; SWAP ; DUP ; DUG 2 ; CDR ; CDR ; CAR ; CDR ; NONE address ; PAIR ; PAIR ; SWAP ; DUP ; DUG 2 ; CDR ; CAR ; PAIR ; SWAP ; CAR ; PAIR ; SWAP ; PAIR } } { IF_LEFT { DROP ; SWAP ; PUSH bool False ; DUP 3 ; CDR ; CAR ; CDR ; CDR ; COMPARE ; EQ ; IF { DROP } { FAILWITH } ; PUSH string "Failed" ; SOURCE ; SENDER ; COMPARE ; EQ ; IF { DROP } { FAILWITH } ; PUSH string "Stake is too low" ; SWAP ; DUP ; DUG 2 ; CDR ; CAR ; CAR ; CDR ; AMOUNT ; COMPARE ; GE ; IF { DROP } { FAILWITH } ; PUSH string "Stake is too high" ; SWAP ; DUP ; DUG 2 ; CDR ; CAR ; CAR ; CAR ; AMOUNT ; COMPARE ; LE ; IF { DROP } { FAILWITH } ; PUSH string "Stake should be rounded to the nearest integer value" ; PUSH mutez 0 ; PUSH mutez 1000000 ; AMOUNT ; EDIV ; IF_NONE { PUSH string "MOD by 0" ; FAILWITH } {} ; CDR ; COMPARE ; EQ ; IF { DROP } { FAILWITH } ; DUP ; CDR ; CDR ; CDR ; CAR ; SENDER ; GET ; IF_NONE { DIG 2 ; DROP ; UNIT } { LEVEL ; SWAP ; COMPARE ; EQ ; IF { DIG 2 ; FAILWITH } { DIG 2 ; DROP ; UNIT } } ; DROP ; DUP ; CDR ; CDR ; CDR ; CDR ; SWAP ; DUP ; DUG 2 ; CDR ; CDR ; CDR ; CAR ; LEVEL ; SOME ; SENDER ; UPDATE ; PAIR ; SWAP ; DUP ; DUG 2 ; CDR ; CDR ; CAR ; PAIR ; SWAP ; DUP ; DUG 2 ; CDR ; CAR ; PAIR ; SWAP ; CAR ; PAIR ; DUP ; CDR ; SWAP ; DUP ; DUG 2 ; CAR ; CDR ; CDR ; DUP 3 ; CAR ; CDR ; CAR ; CDR ; DUP 4 ; CDR ; CAR ; CDR ; CAR ; UNIT ; VIEW "get_epoch" nat ; IF_NONE { DIG 4 ; FAILWITH } { DIG 5 ; DROP } ; PAIR ; PAIR ; DIG 2 ; CAR ; CAR ; PAIR ; PAIR ; DUP ; CDR ; SWAP ; DUP ; DUG 2 ; CAR ; CDR ; CDR ; CDR ; DUP 3 ; CAR ; CDR ; CDR ; CAR ; PUSH nat 0 ; NONE timestamp ; DUP 6 ; CAR ; CDR ; CAR ; CAR ; NONE address ; DIG 9 ; AMOUNT ; SENDER ; PAIR 7 ; DUP 5 ; CAR ; CDR ; CDR ; CDR ; SWAP ; SOME ; SWAP ; UPDATE ; PAIR ; DUP 3 ; CAR ; CDR ; CAR ; PAIR ; DIG 2 ; CAR ; CAR ; PAIR ; PAIR ; DUP ; CDR ; PUSH nat 1 ; DUP 3 ; CAR ; CDR ; CDR ; CDR ; ADD ; DUP 3 ; CAR ; CDR ; CDR ; CAR ; PAIR ; DUP 3 ; CAR ; CDR ; CAR ; PAIR ; DIG 2 ; CAR ; CAR ; PAIR ; PAIR ; SWAP ; PAIR } { DIG 2 ; DIG 3 ; DIG 4 ; DIG 6 ; DROP 5 ; SWAP ; PAIR } } } { IF_LEFT { IF_LEFT { DIG 2 ; PUSH bool False ; DUP 4 ; CDR ; CAR ; CDR ; CDR ; COMPARE ; EQ ; IF { DROP } { FAILWITH } ; SWAP ; DUP ; DUG 2 ; CDR ; CDR ; CDR ; CAR ; SENDER ; GET ; IF_NONE { DIG 3 ; DROP ; UNIT } { LEVEL ; SWAP ; COMPARE ; EQ ; IF { DIG 3 ; FAILWITH } { DIG 3 ; DROP ; UNIT } } ; DROP ; SWAP ; DUP ; DUG 2 ; CAR ; CDR ; CDR ; CAR ; SWAP ; DUP ; DUG 2 ; GET ; IF_NONE { PUSH int 1 ; FAILWITH } {} ; PUSH string "Can't touch this" ; DIG 6 ; DUP 3 ; GET 5 ; COMPARE ; EQ ; IF { DROP } { FAILWITH } ; PUSH string "Stake mismatch" ; AMOUNT ; DUP 3 ; GET 3 ; COMPARE ; EQ ; IF { DROP } { FAILWITH } ; DUP ; GET 7 ; IF_NONE {} { DROP ; PUSH int 2 ; FAILWITH } ; DUP 3 ; CDR ; CDR ; CDR ; CDR ; DUP 4 ; CDR ; CDR ; CDR ; CAR ; LEVEL ; SOME ; SENDER ; UPDATE ; PAIR ; DUP 4 ; CDR ; CDR ; CAR ; PAIR ; DUP 4 ; CDR ; CAR ; PAIR ; DIG 3 ; CAR ; PAIR ; DUP ; DUG 2 ; CDR ; CAR ; CDR ; CAR ; UNIT ; VIEW "get_epoch" nat ; IF_NONE { DUP 4 ; FAILWITH } {} ; UPDATE 9 ; SWAP ; DUP ; DUG 2 ; CDR ; CDR ; CDR ; CDR ; PUSH nat 13 ; SWAP ; DUP ; DUG 2 ; LSL ; XOR ; PUSH nat 17 ; SWAP ; DUP ; DUG 2 ; LSR ; XOR ; PUSH nat 5 ; SWAP ; DUP ; DUG 2 ; LSL ; XOR ; PUSH nat 4294967295 ; AND ; DUP 3 ; DUP 3 ; GET 9 ; SWAP ; CDR ; CAR ; CDR ; CAR ; SWAP ; VIEW "get_seed" nat ; IF_NONE { DIG 4 ; FAILWITH } { DIG 5 ; DROP } ; XOR ; DUP 3 ; CDR ; CDR ; CDR ; CAR ; PAIR ; DUP 3 ; CDR ; CDR ; CAR ; PAIR ; DUP 3 ; CDR ; CAR ; PAIR ; DIG 2 ; CAR ; PAIR ; SWAP ; SENDER ; SOME ; UPDATE 7 ; NOW ; SOME ; UPDATE 11 ; SWAP ; DUP ; DUG 2 ; CDR ; CDR ; CDR ; CDR ; UPDATE 12 ; SWAP ; DUP ; DUG 2 ; CDR ; DUP 3 ; CAR ; CDR ; CDR ; CDR ; DUP 4 ; CAR ; CDR ; CDR ; CAR ; DUP 4 ; DIG 6 ; SWAP ; SOME ; SWAP ; UPDATE ; PAIR ; DUP 4 ; CAR ; CDR ; CAR ; PAIR ; DIG 3 ; CAR ; CAR ; PAIR ; PAIR ; DUP ; CDR ; SWAP ; DUP ; DUG 2 ; CAR ; CDR ; CDR ; DIG 3 ; GET 3 ; DUP 4 ; CAR ; CDR ; CAR ; CDR ; ADD ; DUP 4 ; CAR ; CDR ; CAR ; CAR ; PAIR ; PAIR ; DIG 2 ; CAR ; CAR ; PAIR ; PAIR ; SWAP ; PAIR } { DIG 2 ; DROP ; SWAP ; DUP ; DUG 2 ; CAR ; CAR ; CAR ; CDR ; IF_NONE { SWAP ; DUP ; DUG 2 ; CDR ; CDR ; CDR ; CAR ; SENDER ; GET ; IF_NONE { DIG 3 ; DROP ; SENDER } { LEVEL ; SWAP ; COMPARE ; EQ ; IF { DIG 3 ; FAILWITH } { DIG 3 ; DROP ; SENDER } } } { DIG 4 ; DROP } ; PUSH string "Unknown source" ; SENDER ; DUP 3 ; COMPARE ; EQ ; IF { DROP } { FAILWITH } ; DUP 3 ; CAR ; CDR ; CDR ; CAR ; DUP 3 ; GET ; IF_NONE { PUSH int 2 ; FAILWITH } {} ; PUSH string "Game status is wrong" ; DIG 7 ; DUP 3 ; GET 5 ; COMPARE ; EQ ; IF { DROP } { FAILWITH } ; DUP ; GET 7 ; IF_NONE { PUSH string "No address found" ; FAILWITH } {} ; SWAP ; DUP ; DUG 2 ; GET 12 ; DUP 6 ; PUSH nat 2 ; DUP 5 ; GET 9 ; ADD ; SWAP ; CDR ; CAR ; CDR ; CAR ; SWAP ; VIEW "get_seed" nat ; IF_NONE { DIG 6 ; FAILWITH } { DIG 7 ; DROP } ; ADD ; PUSH nat 13 ; SWAP ; DUP ; DUG 2 ; LSL ; XOR ; PUSH nat 17 ; SWAP ; DUP ; DUG 2 ; LSR ; XOR ; PUSH nat 5 ; SWAP ; DUP ; DUG 2 ; LSL ; XOR ; PUSH nat 4294967295 ; AND ; PUSH nat 0 ; PUSH nat 4 ; DUP 3 ; AND ; COMPARE ; EQ ; IF { SWAP ; DROP ; SWAP ; PUSH nat 1 ; UPDATE 5 ; DUP ; CAR ; SWAP ; PAIR } { SWAP ; DIG 2 ; PUSH nat 2 ; UPDATE 5 ; PAIR } ; DUP ; CAR ; DIG 2 ; UPDATE 12 ; NOW ; SOME ; UPDATE 11 ; DUP 5 ; CDR ; DUP 6 ; CAR ; CDR ; CDR ; CDR ; DUP 7 ; CAR ; CDR ; CDR ; CAR ; DUP 4 ; DIG 7 ; SWAP ; SOME ; SWAP ; UPDATE ; PAIR ; DUP 6 ; CAR ; CDR ; CAR ; PAIR ; DIG 5 ; CAR ; CAR ; PAIR ; PAIR ; PUSH nat 1000 ; DIG 2 ; GET 3 ; EDIV ; IF_NONE { PUSH string "DIV by 0" ; FAILWITH } {} ; CAR ; SWAP ; DUP ; DUG 2 ; CDR ; CDR ; CAR ; CDR ; SWAP ; DUP ; DUG 2 ; MUL ; DUP 3 ; CDR ; CDR ; CAR ; CDR ; PUSH nat 1000 ; SUB ; ABS ; DIG 2 ; MUL ; DIG 5 ; PUSH nat 2 ; DIG 2 ; MUL ; DIG 4 ; CDR ; PUSH mutez 0 ; DUP 3 ; COMPARE ; GT ; IF { CONTRACT unit ; IF_NONE { PUSH string "Destination not found" ; FAILWITH } {} ; DIG 2 ; SWAP ; DIG 2 ; UNIT ; TRANSFER_TOKENS ; CONS } { DROP 2 } ; DUP 3 ; CAR ; CAR ; CDR ; CAR ; PUSH nat 2 ; DIG 3 ; MUL ; SUB_MUTEZ ; IF_NONE { PUSH string "option is None" ; FAILWITH } {} ; DUP 3 ; CAR ; CAR ; CDR ; CDR ; PUSH mutez 0 ; DUP 3 ; COMPARE ; GT ; IF { CONTRACT unit ; IF_NONE { PUSH string "Destination not found" ; FAILWITH } {} ; DIG 2 ; SWAP ; DIG 2 ; UNIT ; TRANSFER_TOKENS ; CONS } { DROP 2 } ; SWAP ; DUP ; DUG 2 ; CAR ; CAR ; CDR ; CAR ; DIG 3 ; PUSH mutez 0 ; DUP 3 ; COMPARE ; GT ; IF { CONTRACT unit ; IF_NONE { PUSH string "Destination not found" ; FAILWITH } {} ; DIG 2 ; SWAP ; DIG 2 ; UNIT ; TRANSFER_TOKENS ; CONS } { DROP 2 } ; PAIR } } { DIG 2 ; DIG 3 ; DIG 4 ; DIG 6 ; DROP 4 ; IF_LEFT { SWAP ; DUP ; DUG 2 ; CAR ; CAR ; CAR ; CAR ; SENDER ; COMPARE ; NEQ ; IF { PUSH int 1 ; FAILWITH } {} ; SWAP ; DUP ; DUG 2 ; CDR ; CDR ; CDR ; DUP 3 ; CDR ; CDR ; CAR ; CDR ; DIG 2 ; PAIR ; PAIR ; SWAP ; DUP ; DUG 2 ; CDR ; CAR ; PAIR ; SWAP ; CAR ; PAIR ; SWAP ; PAIR } { SWAP ; DUP ; DUG 2 ; CAR ; CAR ; CAR ; CAR ; SENDER ; COMPARE ; NEQ ; IF { PUSH int 1 ; FAILWITH } {} ; SWAP ; DUP ; DUG 2 ; CDR ; DUP 3 ; CAR ; CDR ; DUP 4 ; CAR ; CAR ; CDR ; DIG 3 ; DIG 4 ; CAR ; CAR ; CAR ; CAR ; PAIR ; PAIR ; PAIR ; PAIR ; SWAP ; PAIR } } } } { DIG 2 ; DIG 3 ; DIG 4 ; DIG 6 ; DROP 4 ; IF_LEFT { IF_LEFT { SWAP ; DUP ; DUG 2 ; CAR ; CAR ; CAR ; CAR ; SENDER ; COMPARE ; NEQ ; IF { PUSH int 1 ; FAILWITH } {} ; SWAP ; DUP ; DUG 2 ; CDR ; DUP 3 ; CAR ; CDR ; DUP 4 ; CAR ; CAR ; CDR ; CDR ; DUP 4 ; CAR ; PAIR ; DIG 4 ; CAR ; CAR ; CAR ; PAIR ; PAIR ; PAIR ; DUP ; CDR ; CDR ; SWAP ; DUP ; DUG 2 ; CDR ; CAR ; CDR ; DUP 4 ; GET 3 ; DUP 4 ; CDR ; CAR ; CAR ; CAR ; PAIR ; PAIR ; PAIR ; SWAP ; CAR ; PAIR ; DUP ; CDR ; CDR ; SWAP ; DUP ; DUG 2 ; CDR ; CAR ; CDR ; DUP 3 ; CDR ; CAR ; CAR ; CDR ; DUP 5 ; GET 5 ; PAIR ; PAIR ; PAIR ; SWAP ; CAR ; PAIR ; DUP ; CDR ; CDR ; CDR ; DIG 2 ; GET 6 ; DUP 3 ; CDR ; CDR ; CAR ; CAR ; PAIR ; PAIR ; SWAP ; DUP ; DUG 2 ; CDR ; CAR ; PAIR ; SWAP ; CAR ; PAIR ; SWAP ; PAIR } { PUSH string "You are not administrator" ; DUP 3 ; CAR ; CAR ; CAR ; CAR ; SENDER ; COMPARE ; EQ ; IF { DROP } { FAILWITH } ; SWAP ; DUP ; DUG 2 ; CDR ; CDR ; DUP 3 ; CDR ; CAR ; CDR ; CDR ; DIG 2 ; PAIR ; DUP 3 ; CDR ; CAR ; CAR ; PAIR ; PAIR ; SWAP ; CAR ; PAIR ; SWAP ; PAIR } } { SWAP ; DUP ; DUG 2 ; CAR ; CAR ; CAR ; CAR ; SENDER ; COMPARE ; NEQ ; IF { PUSH int 1 ; FAILWITH } {} ; SWAP ; DUP ; DUG 2 ; CDR ; CDR ; SWAP ; DUP 3 ; CDR ; CAR ; CDR ; CAR ; PAIR ; DUP 3 ; CDR ; CAR ; CAR ; PAIR ; PAIR ; SWAP ; CAR ; PAIR ; SWAP ; PAIR } } }