tx · ATpPFcLMXmKvVMfWXYvgVqw3tCqYw8uCe15RKV6Nue6p

3N9XnyPpWxYohKH7z5dEuq8rpnobpyzPrzE:  -0.01400000 Waves

2019.09.08 14:34 [667049] smart account 3N9XnyPpWxYohKH7z5dEuq8rpnobpyzPrzE > SELF 0.00000000 Waves

{ "type": 13, "id": "ATpPFcLMXmKvVMfWXYvgVqw3tCqYw8uCe15RKV6Nue6p", "fee": 1400000, "feeAssetId": null, "timestamp": 1567942468618, "version": 1, "sender": "3N9XnyPpWxYohKH7z5dEuq8rpnobpyzPrzE", "senderPublicKey": "ESNVczQiY4oxY2hoRSZcruKNBwsPdXVu1nSCbpprDGJB", "proofs": [ "3rzBeDdhq9UZZFjP8wQLcto9iSjYP64LQd4aS2gcsziFVRxXbfjpNkrTMzSMbhXVY2hNBEcPqLXeEw58xwX9GEYN" ], "script": "base64:AAIDAAAAAAAAAAAAAAALAAAAAA9TZXJ2ZXJQdWJsaWNLZXkJAAJZAAAAAQIAAAAsN2ltOWNhaUNtRTRTTDZqVG00S1RpY0hINGJHUGY1djU5cm5mVUEzY0NSRGoAAAAACUJldFNlcnZlcgkBAAAAHEBleHRyVXNlcihhZGRyZXNzRnJvbVN0cmluZykAAAABAgAAACMzTjZ5Rko1WjhOVVVRdmZHR01McDVlZm1ldlJSdFRnUXV1bgAAAAAHV0FWRUxFVAkAAGgAAAACCQAAaAAAAAIAAAAAAAAAAGQAAAAAAAAAA+gAAAAAAAAAA+gAAAAACkNPTU1JU1NJT04JAABpAAAAAgkAAGgAAAACAAAAAAAAAAAFBQAAAAdXQVZFTEVUAAAAAAAAAAPoAAAAAA5UaWNrZXRzUGVyV2F2ZQAAAAAAAAAAZAAAAAALQ1VSUkVOVEdBTUUCAAAADSRDVVJSRU5UX0dBTUUAAAAACkxBU1RUSUNLRVQCAAAADCRMQVNUX1RJQ0tFVAAAAAAEQkFOSwIAAAAKJEdBTUVfQkFOSwEAAAAPR2VuZXJhdGVSYW5kSW50AAAAAgAAAAZnYW1lSWQAAAAHcnNhU2lnbgQAAAAKbGFzdFRpY2tldAkBAAAAEUBleHRyTmF0aXZlKDEwNTApAAAAAgUAAAAJQmV0U2VydmVyBQAAAApMQVNUVElDS0VUBAAAAAtyc2FTaWdWYWxpZAkAAfQAAAADCQABmwAAAAEFAAAABmdhbWVJZAUAAAAHcnNhU2lnbgUAAAAPU2VydmVyUHVibGljS2V5AwUAAAALcnNhU2lnVmFsaWQEAAAABHJhbmQJAABqAAAAAgkABLEAAAABCQAB9wAAAAEFAAAAB3JzYVNpZ24FAAAACmxhc3RUaWNrZXQDCQAAZgAAAAIAAAAAAAAAAAAFAAAABHJhbmQJAABkAAAAAgkAAGgAAAACAP//////////BQAAAARyYW5kAAAAAAAAAAABCQAAZAAAAAIFAAAABHJhbmQAAAAAAAAAAAEJAAACAAAAAQIAAAAVSW52YWxpZCBSU0Egc2lnbmF0dXJlAQAAAAhpc1dpbm5lcgAAAAIAAAAKdGlja2V0c1N0cgAAAAl3aW5UaWNrZXQEAAAAB3RpY2tldHMJAAS1AAAAAgUAAAAKdGlja2V0c1N0cgIAAAABXwMDCQAAZwAAAAIFAAAACXdpblRpY2tldAkBAAAADXBhcnNlSW50VmFsdWUAAAABCQABkQAAAAIFAAAAB3RpY2tldHMAAAAAAAAAAAAJAABnAAAAAgkBAAAADXBhcnNlSW50VmFsdWUAAAABCQABkQAAAAIFAAAAB3RpY2tldHMAAAAAAAAAAAEFAAAACXdpblRpY2tldAcGAwMJAABnAAAAAgUAAAAJd2luVGlja2V0CQEAAAANcGFyc2VJbnRWYWx1ZQAAAAEJAAGRAAAAAgUAAAAHdGlja2V0cwAAAAAAAAAAAgkAAGcAAAACCQEAAAANcGFyc2VJbnRWYWx1ZQAAAAEJAAGRAAAAAgUAAAAHdGlja2V0cwAAAAAAAAAAAwUAAAAJd2luVGlja2V0BwYDAwkAAGcAAAACBQAAAAl3aW5UaWNrZXQJAQAAAA1wYXJzZUludFZhbHVlAAAAAQkAAZEAAAACBQAAAAd0aWNrZXRzAAAAAAAAAAAECQAAZwAAAAIJAQAAAA1wYXJzZUludFZhbHVlAAAAAQkAAZEAAAACBQAAAAd0aWNrZXRzAAAAAAAAAAAFBQAAAAl3aW5UaWNrZXQHBgMDCQAAZwAAAAIFAAAACXdpblRpY2tldAkBAAAADXBhcnNlSW50VmFsdWUAAAABCQABkQAAAAIFAAAAB3RpY2tldHMAAAAAAAAAAAYJAABnAAAAAgkBAAAADXBhcnNlSW50VmFsdWUAAAABCQABkQAAAAIFAAAAB3RpY2tldHMAAAAAAAAAAAcFAAAACXdpblRpY2tldAcGBwEAAAADd2luAAAABQAAAAZnYW1lSWQAAAAJd2luVGlja2V0AAAAEHdpbm5lckFkZHJlc3NTdHIAAAALYmFua0JhbGFuY2UAAAASdG90YWxXaW5uZXJCZXRzQW10BAAAAAZ3aW5BbXQJAABpAAAAAgkAAGgAAAACCQAAZQAAAAIFAAAAC2JhbmtCYWxhbmNlBQAAABJ0b3RhbFdpbm5lckJldHNBbXQAAAAAAAAAAFoAAAAAAAAAAGQEAAAABXdpblRYCQAETAAAAAIJAQAAAA5TY3JpcHRUcmFuc2ZlcgAAAAMJAQAAABxAZXh0clVzZXIoYWRkcmVzc0Zyb21TdHJpbmcpAAAAAQUAAAAQd2lubmVyQWRkcmVzc1N0cgUAAAAGd2luQW10BQAAAAR1bml0BQAAAANuaWwEAAAACmdhbWVSZXN1bHQJAARMAAAAAgkBAAAACURhdGFFbnRyeQAAAAIJAAEsAAAAAgUAAAAGZ2FtZUlkAgAAAAdfcmVzdWx0CQABpAAAAAEFAAAACXdpblRpY2tldAkABEwAAAACCQEAAAAJRGF0YUVudHJ5AAAAAgkAASwAAAACBQAAAAZnYW1lSWQCAAAAB193aW5uZXIFAAAAEHdpbm5lckFkZHJlc3NTdHIJAARMAAAAAgkBAAAACURhdGFFbnRyeQAAAAIJAAEsAAAAAgUAAAAGZ2FtZUlkAgAAAAdfd2luQW10BQAAAAZ3aW5BbXQFAAAAA25pbAkBAAAADFNjcmlwdFJlc3VsdAAAAAIJAQAAAAhXcml0ZVNldAAAAAEFAAAACmdhbWVSZXN1bHQJAQAAAAtUcmFuc2ZlclNldAAAAAEFAAAABXdpblRYAAAAAQAAAAFpAQAAAA5nZW5lcmF0ZVJlc3VsdAAAAAIAAAAGZ2FtZUlkAAAADnJzYVNpZ25DcnlwdGVkBAAAAAtjdXJyZW50R2FtZQkBAAAAEUBleHRyTmF0aXZlKDEwNTMpAAAAAgUAAAAJQmV0U2VydmVyBQAAAAtDVVJSRU5UR0FNRQMJAAAAAAAAAgUAAAALY3VycmVudEdhbWUFAAAABmdhbWVJZAQAAAAHcnNhU2lnbgkAAlkAAAABBQAAAA5yc2FTaWduQ3J5cHRlZAQAAAAJd2luVGlja2V0CQEAAAAPR2VuZXJhdGVSYW5kSW50AAAAAgUAAAAGZ2FtZUlkBQAAAAdyc2FTaWduBAAAAAdwbGF5ZXJzCQEAAAARQGV4dHJOYXRpdmUoMTA1MykAAAACBQAAAAlCZXRTZXJ2ZXIJAAEsAAAAAgUAAAAGZ2FtZUlkAgAAAAhfcGxheWVycwQAAAALcGxheWVyc0xpc3QJAAS1AAAAAgUAAAAHcGxheWVycwIAAAABXwQAAAALYmFua0JhbGFuY2UJAQAAABFAZXh0ck5hdGl2ZSgxMDUwKQAAAAIFAAAACUJldFNlcnZlcgUAAAAEQkFOSwMJAQAAAAhpc1dpbm5lcgAAAAIJAQAAABFAZXh0ck5hdGl2ZSgxMDUzKQAAAAIFAAAACUJldFNlcnZlcgkAASwAAAACCQABLAAAAAIJAAEsAAAAAgUAAAAGZ2FtZUlkAgAAAAFfCQABkQAAAAIFAAAAC3BsYXllcnNMaXN0AAAAAAAAAAAAAgAAAAhfdGlja2V0cwUAAAAJd2luVGlja2V0CQEAAAADd2luAAAABQUAAAAGZ2FtZUlkBQAAAAl3aW5UaWNrZXQJAAGRAAAAAgUAAAALcGxheWVyc0xpc3QAAAAAAAAAAAAFAAAAC2JhbmtCYWxhbmNlCQEAAAARQGV4dHJOYXRpdmUoMTA1MCkAAAACBQAAAAlCZXRTZXJ2ZXIJAAEsAAAAAgkAASwAAAACCQABLAAAAAIFAAAABmdhbWVJZAIAAAABXwkAAZEAAAACBQAAAAtwbGF5ZXJzTGlzdAAAAAAAAAAAAAIAAAANX3RvdGFsQmV0c0FtdAMJAQAAAAhpc1dpbm5lcgAAAAIJAQAAABFAZXh0ck5hdGl2ZSgxMDUzKQAAAAIFAAAACUJldFNlcnZlcgkAASwAAAACCQABLAAAAAIJAAEsAAAAAgUAAAAGZ2FtZUlkAgAAAAFfCQABkQAAAAIFAAAAC3BsYXllcnNMaXN0AAAAAAAAAAABAgAAAAhfdGlja2V0cwUAAAAJd2luVGlja2V0CQEAAAADd2luAAAABQUAAAAGZ2FtZUlkBQAAAAl3aW5UaWNrZXQJAAGRAAAAAgUAAAALcGxheWVyc0xpc3QAAAAAAAAAAAEFAAAAC2JhbmtCYWxhbmNlCQEAAAARQGV4dHJOYXRpdmUoMTA1MCkAAAACBQAAAAlCZXRTZXJ2ZXIJAAEsAAAAAgkAASwAAAACCQABLAAAAAIFAAAABmdhbWVJZAIAAAABXwkAAZEAAAACBQAAAAtwbGF5ZXJzTGlzdAAAAAAAAAAAAQIAAAANX3RvdGFsQmV0c0FtdAMJAQAAAAhpc1dpbm5lcgAAAAIJAQAAABFAZXh0ck5hdGl2ZSgxMDUzKQAAAAIFAAAACUJldFNlcnZlcgkAASwAAAACCQABLAAAAAIJAAEsAAAAAgUAAAAGZ2FtZUlkAgAAAAFfCQABkQAAAAIFAAAAC3BsYXllcnNMaXN0AAAAAAAAAAACAgAAAAhfdGlja2V0cwUAAAAJd2luVGlja2V0CQEAAAADd2luAAAABQUAAAAGZ2FtZUlkBQAAAAl3aW5UaWNrZXQJAAGRAAAAAgUAAAALcGxheWVyc0xpc3QAAAAAAAAAAAIFAAAAC2JhbmtCYWxhbmNlCQEAAAARQGV4dHJOYXRpdmUoMTA1MCkAAAACBQAAAAlCZXRTZXJ2ZXIJAAEsAAAAAgkAASwAAAACCQABLAAAAAIFAAAABmdhbWVJZAIAAAABXwkAAZEAAAACBQAAAAtwbGF5ZXJzTGlzdAAAAAAAAAAAAgIAAAANX3RvdGFsQmV0c0FtdAMJAQAAAAhpc1dpbm5lcgAAAAIJAQAAABFAZXh0ck5hdGl2ZSgxMDUzKQAAAAIFAAAACUJldFNlcnZlcgkAASwAAAACCQABLAAAAAIJAAEsAAAAAgUAAAAGZ2FtZUlkAgAAAAFfCQABkQAAAAIFAAAAC3BsYXllcnNMaXN0AAAAAAAAAAADAgAAAAhfdGlja2V0cwUAAAAJd2luVGlja2V0CQEAAAADd2luAAAABQUAAAAGZ2FtZUlkBQAAAAl3aW5UaWNrZXQJAAGRAAAAAgUAAAALcGxheWVyc0xpc3QAAAAAAAAAAAMFAAAAC2JhbmtCYWxhbmNlCQEAAAARQGV4dHJOYXRpdmUoMTA1MCkAAAACBQAAAAlCZXRTZXJ2ZXIJAAEsAAAAAgkAASwAAAACCQABLAAAAAIFAAAABmdhbWVJZAIAAAABXwkAAZEAAAACBQAAAAtwbGF5ZXJzTGlzdAAAAAAAAAAAAwIAAAANX3RvdGFsQmV0c0FtdAMJAQAAAAhpc1dpbm5lcgAAAAIJAQAAABFAZXh0ck5hdGl2ZSgxMDUzKQAAAAIFAAAACUJldFNlcnZlcgkAASwAAAACCQABLAAAAAIJAAEsAAAAAgUAAAAGZ2FtZUlkAgAAAAFfCQABkQAAAAIFAAAAC3BsYXllcnNMaXN0AAAAAAAAAAAEAgAAAAhfdGlja2V0cwUAAAAJd2luVGlja2V0CQEAAAADd2luAAAABQUAAAAGZ2FtZUlkBQAAAAl3aW5UaWNrZXQJAAGRAAAAAgUAAAALcGxheWVyc0xpc3QAAAAAAAAAAAQFAAAAC2JhbmtCYWxhbmNlCQEAAAARQGV4dHJOYXRpdmUoMTA1MCkAAAACBQAAAAlCZXRTZXJ2ZXIJAAEsAAAAAgkAASwAAAACCQABLAAAAAIFAAAABmdhbWVJZAIAAAABXwkAAZEAAAACBQAAAAtwbGF5ZXJzTGlzdAAAAAAAAAAABAIAAAANX3RvdGFsQmV0c0FtdAkAAAIAAAABAgAAAAVFcnJvcgkAAAIAAAABCQABLAAAAAIJAAEsAAAAAgkAASwAAAACAgAAABBDdXJyZW50IEdhbWUgaXMgBQAAAAtjdXJyZW50R2FtZQIAAAAKLCBidXQgbm90IAUAAAAGZ2FtZUlkAAAAAA/aLK4=", "chainId": 84, "height": 667049, "spentComplexity": 0 } View: original | compacted Prev: 8z9ntPpH32zATzu2Z5zobFBvJKhJ2Dh2jycwRSAUDaKV Next: rkk2us1fdwEDqcUhojN8xa3h6Qv5R7cRdGjttQyfdLT Diff:
OldNewDifferences
1414 let CURRENTGAME = "$CURRENT_GAME"
1515
1616 let LASTTICKET = "$LAST_TICKET"
17+
18+let BANK = "$GAME_BANK"
1719
1820 func GenerateRandInt (gameId,rsaSign) = {
1921 let lastTicket = getIntegerValue(BetServer, LASTTICKET)
5153 }
5254
5355
54-func win (gameId,winTicket,winnerAddressStr,winAmt) = {
56+func win (gameId,winTicket,winnerAddressStr,bankBalance,totalWinnerBetsAmt) = {
57+ let winAmt = (((bankBalance - totalWinnerBetsAmt) * 90) / 100)
5558 let winTX = [ScriptTransfer(addressFromStringValue(winnerAddressStr), winAmt, unit)]
5659 let gameResult = [DataEntry((gameId + "_result"), toString(winTicket)), DataEntry((gameId + "_winner"), winnerAddressStr), DataEntry((gameId + "_winAmt"), winAmt)]
5760 ScriptResult(WriteSet(gameResult), TransferSet(winTX))
6770 let winTicket = GenerateRandInt(gameId, rsaSign)
6871 let players = getStringValue(BetServer, (gameId + "_players"))
6972 let playersList = split(players, "_")
70- let winAmts = getStringValue(BetServer, (gameId + "_winAmts"))
71- let winAmtsList = split(winAmts, "_")
73+ let bankBalance = getIntegerValue(BetServer, BANK)
7274 if (isWinner(getStringValue(BetServer, (((gameId + "_") + playersList[0]) + "_tickets")), winTicket))
73- then win(gameId, winTicket, playersList[0], parseIntValue(winAmtsList[0]))
75+ then win(gameId, winTicket, playersList[0], bankBalance, getIntegerValue(BetServer, (((gameId + "_") + playersList[0]) + "_totalBetsAmt")))
7476 else if (isWinner(getStringValue(BetServer, (((gameId + "_") + playersList[1]) + "_tickets")), winTicket))
75- then win(gameId, winTicket, playersList[1], parseIntValue(winAmtsList[1]))
77+ then win(gameId, winTicket, playersList[1], bankBalance, getIntegerValue(BetServer, (((gameId + "_") + playersList[1]) + "_totalBetsAmt")))
7678 else if (isWinner(getStringValue(BetServer, (((gameId + "_") + playersList[2]) + "_tickets")), winTicket))
77- then win(gameId, winTicket, playersList[2], parseIntValue(winAmtsList[2]))
79+ then win(gameId, winTicket, playersList[2], bankBalance, getIntegerValue(BetServer, (((gameId + "_") + playersList[2]) + "_totalBetsAmt")))
7880 else if (isWinner(getStringValue(BetServer, (((gameId + "_") + playersList[3]) + "_tickets")), winTicket))
79- then win(gameId, winTicket, playersList[3], parseIntValue(winAmtsList[3]))
81+ then win(gameId, winTicket, playersList[3], bankBalance, getIntegerValue(BetServer, (((gameId + "_") + playersList[3]) + "_totalBetsAmt")))
8082 else if (isWinner(getStringValue(BetServer, (((gameId + "_") + playersList[4]) + "_tickets")), winTicket))
81- then win(gameId, winTicket, playersList[4], parseIntValue(winAmtsList[4]))
83+ then win(gameId, winTicket, playersList[4], bankBalance, getIntegerValue(BetServer, (((gameId + "_") + playersList[4]) + "_totalBetsAmt")))
8284 else throw("Error")
8385 }
8486 else throw(((("Current Game is " + currentGame) + ", but not ") + gameId))
Full:
OldNewDifferences
11 {-# STDLIB_VERSION 3 #-}
22 {-# SCRIPT_TYPE ACCOUNT #-}
33 {-# CONTENT_TYPE DAPP #-}
44 let ServerPublicKey = fromBase58String("7im9caiCmE4SL6jTm4KTicHH4bGPf5v59rnfUA3cCRDj")
55
66 let BetServer = addressFromStringValue("3N6yFJ5Z8NUUQvfGGMLp5efmevRRtTgQuun")
77
88 let WAVELET = ((100 * 1000) * 1000)
99
1010 let COMMISSION = ((5 * WAVELET) / 1000)
1111
1212 let TicketsPerWave = 100
1313
1414 let CURRENTGAME = "$CURRENT_GAME"
1515
1616 let LASTTICKET = "$LAST_TICKET"
17+
18+let BANK = "$GAME_BANK"
1719
1820 func GenerateRandInt (gameId,rsaSign) = {
1921 let lastTicket = getIntegerValue(BetServer, LASTTICKET)
2022 let rsaSigValid = sigVerify(toBytes(gameId), rsaSign, ServerPublicKey)
2123 if (rsaSigValid)
2224 then {
2325 let rand = (toInt(sha256(rsaSign)) % lastTicket)
2426 if ((0 > rand))
2527 then ((-1 * rand) + 1)
2628 else (rand + 1)
2729 }
2830 else throw("Invalid RSA signature")
2931 }
3032
3133
3234 func isWinner (ticketsStr,winTicket) = {
3335 let tickets = split(ticketsStr, "_")
3436 if (if ((winTicket >= parseIntValue(tickets[0])))
3537 then (parseIntValue(tickets[1]) >= winTicket)
3638 else false)
3739 then true
3840 else if (if ((winTicket >= parseIntValue(tickets[2])))
3941 then (parseIntValue(tickets[3]) >= winTicket)
4042 else false)
4143 then true
4244 else if (if ((winTicket >= parseIntValue(tickets[4])))
4345 then (parseIntValue(tickets[5]) >= winTicket)
4446 else false)
4547 then true
4648 else if (if ((winTicket >= parseIntValue(tickets[6])))
4749 then (parseIntValue(tickets[7]) >= winTicket)
4850 else false)
4951 then true
5052 else false
5153 }
5254
5355
54-func win (gameId,winTicket,winnerAddressStr,winAmt) = {
56+func win (gameId,winTicket,winnerAddressStr,bankBalance,totalWinnerBetsAmt) = {
57+ let winAmt = (((bankBalance - totalWinnerBetsAmt) * 90) / 100)
5558 let winTX = [ScriptTransfer(addressFromStringValue(winnerAddressStr), winAmt, unit)]
5659 let gameResult = [DataEntry((gameId + "_result"), toString(winTicket)), DataEntry((gameId + "_winner"), winnerAddressStr), DataEntry((gameId + "_winAmt"), winAmt)]
5760 ScriptResult(WriteSet(gameResult), TransferSet(winTX))
5861 }
5962
6063
6164 @Callable(i)
6265 func generateResult (gameId,rsaSignCrypted) = {
6366 let currentGame = getStringValue(BetServer, CURRENTGAME)
6467 if ((currentGame == gameId))
6568 then {
6669 let rsaSign = fromBase58String(rsaSignCrypted)
6770 let winTicket = GenerateRandInt(gameId, rsaSign)
6871 let players = getStringValue(BetServer, (gameId + "_players"))
6972 let playersList = split(players, "_")
70- let winAmts = getStringValue(BetServer, (gameId + "_winAmts"))
71- let winAmtsList = split(winAmts, "_")
73+ let bankBalance = getIntegerValue(BetServer, BANK)
7274 if (isWinner(getStringValue(BetServer, (((gameId + "_") + playersList[0]) + "_tickets")), winTicket))
73- then win(gameId, winTicket, playersList[0], parseIntValue(winAmtsList[0]))
75+ then win(gameId, winTicket, playersList[0], bankBalance, getIntegerValue(BetServer, (((gameId + "_") + playersList[0]) + "_totalBetsAmt")))
7476 else if (isWinner(getStringValue(BetServer, (((gameId + "_") + playersList[1]) + "_tickets")), winTicket))
75- then win(gameId, winTicket, playersList[1], parseIntValue(winAmtsList[1]))
77+ then win(gameId, winTicket, playersList[1], bankBalance, getIntegerValue(BetServer, (((gameId + "_") + playersList[1]) + "_totalBetsAmt")))
7678 else if (isWinner(getStringValue(BetServer, (((gameId + "_") + playersList[2]) + "_tickets")), winTicket))
77- then win(gameId, winTicket, playersList[2], parseIntValue(winAmtsList[2]))
79+ then win(gameId, winTicket, playersList[2], bankBalance, getIntegerValue(BetServer, (((gameId + "_") + playersList[2]) + "_totalBetsAmt")))
7880 else if (isWinner(getStringValue(BetServer, (((gameId + "_") + playersList[3]) + "_tickets")), winTicket))
79- then win(gameId, winTicket, playersList[3], parseIntValue(winAmtsList[3]))
81+ then win(gameId, winTicket, playersList[3], bankBalance, getIntegerValue(BetServer, (((gameId + "_") + playersList[3]) + "_totalBetsAmt")))
8082 else if (isWinner(getStringValue(BetServer, (((gameId + "_") + playersList[4]) + "_tickets")), winTicket))
81- then win(gameId, winTicket, playersList[4], parseIntValue(winAmtsList[4]))
83+ then win(gameId, winTicket, playersList[4], bankBalance, getIntegerValue(BetServer, (((gameId + "_") + playersList[4]) + "_totalBetsAmt")))
8284 else throw("Error")
8385 }
8486 else throw(((("Current Game is " + currentGame) + ", but not ") + gameId))
8587 }
8688
8789

github/deemru/w8io/873ac7e 
26.69 ms