tx · GpgrwSep6MQBf2L23KTPVKhmM2xvrbj3diNobq85AVUV

3NCGjbgqZVk7eaqrLMEnEnqRhozNm1KTG5z:  -0.02200000 Waves

2025.02.15 00:58 [3503949] smart account 3NCGjbgqZVk7eaqrLMEnEnqRhozNm1KTG5z > SELF 0.00000000 Waves

{ "type": 13, "id": "GpgrwSep6MQBf2L23KTPVKhmM2xvrbj3diNobq85AVUV", "fee": 2200000, "feeAssetId": null, "timestamp": 1739570367504, "version": 2, "chainId": 84, "sender": "3NCGjbgqZVk7eaqrLMEnEnqRhozNm1KTG5z", "senderPublicKey": "5CoDbXxoqnvJpx9GrS6M4G5GYJXh9rcoiXJz7RYTPVkL", "proofs": [ "4AXtXS4h1B42NSeBVqKDXbHRTRSMALjHevpRbekKvKnV1N5XmrsykdBEVH9XvT4yPVJv3hiwyGBGXWQRNGLFng7e" ], "script": "base64:BgIzCAISCgoIAQgEAhEYFBISBQoDCAgIEgASAwoBARIAEgASABIDCgEBEgASAwoBCBIDCgEIQwADTTE2AICAhP6m3uERAAJNOACAwtcvAA5TVEFLRVJTX0FNT1VOVACAgMHfybe4BAALVEVBTV9BTU9VTlQAgICapuqv4wEADU1BUktFVF9BTU9VTlQAgICc5f2e1AoAD1JFU0VSVkVEX0FNT1VOVACAgI2T9ddxAAtZRUFSX0JMT0NLUwkAaAIA7QIAoAsAE1RFQU1fVkVTVElOR19QRVJJT0QFC1lFQVJfQkxPQ0tTAAxTVEFLRV9QRVJJT0QJAGgCAAUFC1lFQVJfQkxPQ0tTAAtCTEVTU19QUklDRQCA5JfQEgANTE9UVEVSWV9QUklDRQCA0NvD9AIAE0RFRkFVTFRfRk9NT19QRVJJT0QAPAAPTUlOX0ZPTU9fUEVSSU9EAAIADFJBTkRPTV9ERUxBWQACABRDVVJSRU5UX0pBQ0tQT1RfUEVSQwAyABFORVhUX0pBQ0tQT1RfUEVSQwAUAAlURUFNX1BFUkMACgAFY2hhaW4JAMkBAgkAygECCAUEdGhpcwVieXRlcwABAAEACXd4RmFjdG9yeQQHJG1hdGNoMAUFY2hhaW4DCQAAAgEBVwUHJG1hdGNoMAkBEUBleHRyTmF0aXZlKDEwNjIpAQIjM1A2OHpOaXVmc3UxdmlacHUxYVkzY2RhaFJSS2N2VjVOOTMDCQAAAgEBVAUHJG1hdGNoMAkBEUBleHRyTmF0aXZlKDEwNjIpAQIjM042TEhqZkdiNkZnY3k3WXNWY054R3lQVGo0OVhiUUFpanEJAAIBAg1Vbmtub3duIGNoYWluAAhVU0RUX1BQVAIsRzVXV1d6elZzV1J5ekdmMzJ4b2pibmZwN2dYYldyZ3FKVDhSY1ZXRWZMbUMADmdvcmNBc3NldElkS2V5Agtnb3JjQXNzZXRJZAALZ29yY0Fzc2V0SWQJARN2YWx1ZU9yRXJyb3JNZXNzYWdlAgkAoQgBBQ5nb3JjQXNzZXRJZEtleQIWR09SQyBpcyBub3QgaXNzdWVkIHlldAAMaXNzdWVUaW1lS2V5Aglpc3N1ZVRpbWUAEXRlYW1BbW91bnRMZWZ0S2V5Ag50ZWFtQW1vdW50TGVmdAAWbGFzdFRlYW1WZXN0aW5nVGltZUtleQITbGFzdFRlYW1WZXN0aW5nVGltZQAVc3Rha2Vyc0Ftb3VudFRvdGFsS2V5AhJzdGFrZXJzQW1vdW50VG90YWwAFHN0YWtlcnNBbW91bnRMZWZ0S2V5AhFzdGFrZXJzQW1vdW50TGVmdAAUc3Rha2VkQW1vdW50VG90YWxLZXkCC3N0YWtlZFRvdGFsARVzdGFrZWRBbW91bnRCeVVzZXJLZXkBBGFkZHIJAKwCAgINc3Rha2VkQW1vdW50XwUEYWRkcgEWbGFzdENsYWltVGltZUJ5VXNlcktleQEEYWRkcgkArAICAg5sYXN0Q2xhaW1UaW1lXwUEYWRkcgAMZm9tb0Vwb2NoS2V5Aglmb21vRXBvY2gAEWN1cnJGb21vUGVyaW9kS2V5Ag5jdXJyRm9tb1BlcmlvZAAPbGFzdEZvbW9UaW1lS2V5AgxsYXN0Rm9tb1RpbWUAEmN1cnJGb21vSmFja3BvdEtleQIPY3VyckZvbW9KYWNrcG90ABJuZXh0Rm9tb0phY2twb3RLZXkCD25leHRGb21vSmFja3BvdAARbGFzdEZvbW9QbGF5ZXJLZXkCDmxhc3RGb21vUGxheWVyABFsYXN0Rm9tb1dpbm5lcktleQIObGFzdEZvbW9XaW5uZXIAF2xhc3RGb21vV2lubmVyQW1vdW50S2V5AhRsYXN0Rm9tb1dpbm5lckFtb3VudAAVbGFzdEZvbW9XaW5uZXJUaW1lS2V5AhJsYXN0Rm9tb1dpbm5lclRpbWUAEXRlYW1XYWxsZXRBZGRyS2V5Ag50ZWFtV2FsbGV0QWRkcgANYnJva2VyQWRkcktleQIKYnJva2VyQWRkcgAOcmVzZXJ2ZUFkZHJLZXkCC3Jlc2VydmVBZGRyAQlrZXlDb21taXQBB2FkZHJlc3MJAKwCAgIPZmluaXNoQmxvY2tGb3JfBQdhZGRyZXNzAQhrZXlHdWVzcwEHYWRkcmVzcwkArAICAglndWVzc0Zvcl8FB2FkZHJlc3MBB2tleVNhbHQBB2FkZHJlc3MJAKwCAgIIc2FsdEZvcl8FB2FkZHJlc3MAFWN1cnJMb3R0ZXJ5SmFja3BvdEtleQISY3VyckxvdHRlcnlKYWNrcG90ABVuZXh0TG90dGVyeUphY2twb3RLZXkCEm5leHRMb3R0ZXJ5SmFja3BvdAAUbGFzdExvdHRlcnlXaW5uZXJLZXkCEWxhc3RMb3R0ZXJ5V2lubmVyABpsYXN0TG90dGVyeVdpbm5lckFtb3VudEtleQIXbGFzdExvdHRlcnlXaW5uZXJBbW91bnQAGGxhc3RMb3R0ZXJ5V2lubmVyVGltZUtleQIVbGFzdExvdHRlcnlXaW5uZXJUaW1lABdmb21vTnVtVW5pcXVlUGxheWVyc0tleQIUZm9tb051bVVuaXF1ZVBsYXllcnMAFWZvbW9Ub3RhbE51bVN0YWtlc0tleQISZm9tb1RvdGFsTnVtU3Rha2VzABhmb21vVG90YWxTdGFrZWRBbW91bnRLZXkCFWZvbW9Ub3RhbFN0YWtlZEFtb3VudAAVZm9tb1RvdGFsV29uQW1vdW50S2V5AhJmb21vVG90YWxXb25BbW91bnQBFGZvbW9Vc2VyTnVtU3Rha2VzS2V5AQdhZGRyZXNzCQCsAgICEmZvbW9Vc2VyTnVtU3Rha2VzXwUHYWRkcmVzcwEXZm9tb1VzZXJTdGFrZWRBbW91bnRLZXkBB2FkZHJlc3MJAKwCAgIVZm9tb1VzZXJTdGFrZWRBbW91bnRfBQdhZGRyZXNzARJmb21vVXNlck51bVdpbnNLZXkBB2FkZHJlc3MJAKwCAgIQZm9tb1VzZXJOdW1XaW5zXwUHYWRkcmVzcwEUZm9tb1VzZXJXb25BbW91bnRLZXkBB2FkZHJlc3MJAKwCAgISZm9tb1VzZXJXb25BbW91bnRfBQdhZGRyZXNzABlmb21vRmF2b3JpdGVCeU51bUdhbWVzS2V5AhZmb21vRmF2b3JpdGVCeU51bUdhbWVzABdmb21vRmF2b3JpdGVCeUFtb3VudEtleQIUZm9tb0Zhdm9yaXRlQnlBbW91bnQBBWFzSW50AQF2BAckbWF0Y2gwBQF2AwkAAQIFByRtYXRjaDACA0ludAQBbgUHJG1hdGNoMAUBbgkAAgECFWZhaWwgdG8gY2FzdCBpbnRvIEludAEJZ29yY1N0YXRzAQt1c2VyQWRkck9wdAQJaXNzdWVUaW1lCQETdmFsdWVPckVycm9yTWVzc2FnZQIJAJ8IAQUMaXNzdWVUaW1lS2V5AhZHT1JDIGlzIG5vdCBpc3N1ZWQgeWV0BBFub3dMaW1pdGVkVmVzdGluZwkAlwMBCQDMCAIFBmhlaWdodAkAzAgCCQBkAgUJaXNzdWVUaW1lBRNURUFNX1ZFU1RJTkdfUEVSSU9EBQNuaWwEE2xhc3RUZWFtVmVzdGluZ1RpbWUJARN2YWx1ZU9yRXJyb3JNZXNzYWdlAgkAnwgBBRZsYXN0VGVhbVZlc3RpbmdUaW1lS2V5Ah1Db25zdHJ1Y3RvciBpcyBub3QgY2FsbGVkIHlldAQNdmVzdGluZ0Ftb3VudAkAawMFC1RFQU1fQU1PVU5UCQBlAgURbm93TGltaXRlZFZlc3RpbmcFE2xhc3RUZWFtVmVzdGluZ1RpbWUFE1RFQU1fVkVTVElOR19QRVJJT0QEDnRlYW1BbW91bnRMZWZ0CQBlAgkBC3ZhbHVlT3JFbHNlAgkAnwgBBRF0ZWFtQW1vdW50TGVmdEtleQAABQ12ZXN0aW5nQW1vdW50BA9hbW91bnRMZWZ0VG90YWwJAQt2YWx1ZU9yRWxzZQIJAJ8IAQUUc3Rha2Vyc0Ftb3VudExlZnRLZXkAAAQMbGFzdFVzZXJUaW1lCQELdmFsdWVPckVsc2UCCQCfCAEJARZsYXN0Q2xhaW1UaW1lQnlVc2VyS2V5AQULdXNlckFkZHJPcHQA////////////AQMJAGYCAAAFDGxhc3RVc2VyVGltZQkAlgoEAAAFD2Ftb3VudExlZnRUb3RhbAUNdmVzdGluZ0Ftb3VudAUOdGVhbUFtb3VudExlZnQEEW5vd0xpbWl0ZWRTdGFraW5nCQCXAwEJAMwIAgUGaGVpZ2h0CQDMCAIJAGQCBQlpc3N1ZVRpbWUFDFNUQUtFX1BFUklPRAUDbmlsBAp1c2VyU2hhcmVzCQELdmFsdWVPckVsc2UCCQCfCAEJARVzdGFrZWRBbW91bnRCeVVzZXJLZXkBBQt1c2VyQWRkck9wdAAABAt0b3RhbFNoYXJlcwkBC3ZhbHVlT3JFbHNlAgkAnwgBBRRzdGFrZWRBbW91bnRUb3RhbEtleQAABBJzdGFrZXJzQW1vdW50VG90YWwJAQt2YWx1ZU9yRWxzZQIJAJ8IAQUVc3Rha2Vyc0Ftb3VudFRvdGFsS2V5BQ5TVEFLRVJTX0FNT1VOVAQMdXNlclRlbXBvcmFsCQBrAwUSc3Rha2Vyc0Ftb3VudFRvdGFsCQBlAgURbm93TGltaXRlZFN0YWtpbmcFDGxhc3RVc2VyVGltZQUMU1RBS0VfUEVSSU9EBAp1c2VyQW1vdW50AwkBAiE9AgULdG90YWxTaGFyZXMAAAkAawMFDHVzZXJUZW1wb3JhbAUKdXNlclNoYXJlcwULdG90YWxTaGFyZXMAAAkAlgoEBQp1c2VyQW1vdW50CQBlAgUPYW1vdW50TGVmdFRvdGFsBQp1c2VyQW1vdW50BQ12ZXN0aW5nQW1vdW50BQ50ZWFtQW1vdW50TGVmdAEKZml4ZWRQb2ludAIDdmFsCGRlY2ltYWxzBAZ0ZW5Qb3cJAGwGAAoAAAUIZGVjaW1hbHMAAAAABQRET1dOBAdsb3dQYXJ0CQCkAwEJAGoCBQN2YWwFBnRlblBvdwQGemVyb2VzCQCwAgIJAKQDAQUGdGVuUG93CQBkAgABCQCxAgEFB2xvd1BhcnQJAKwCAgkArAICCQCsAgIJAKQDAQkAaQIFA3ZhbAUGdGVuUG93AgEuBQZ6ZXJvZXMFB2xvd1BhcnQBDWdldE5ld0xlYWRlcnMDDW9sZExlYWRlcnNTdHIHbmV3QWRkcgluZXdBbW91bnQEDG5ld0NhbmRpZGF0ZQkArAICCQCsAgIFB25ld0FkZHICAV8JAKQDAQUJbmV3QW1vdW50AwkAAAIFDW9sZExlYWRlcnNTdHICAAkAzAgCBQxuZXdDYW5kaWRhdGUFA25pbAoBDHNvcnRCeUFtb3VudAIDYWNjAmVsBAthZGRyX2Ftb3VudAkAtQkCBQJlbAIBXwQEYWRkcgkAkQMCBQthZGRyX2Ftb3VudAAABAZhbW91bnQJAQ1wYXJzZUludFZhbHVlAQkAkQMCBQthZGRyX2Ftb3VudAABAwgFA2FjYwJfMgMJAAACBQRhZGRyBQduZXdBZGRyBQNhY2MJAJQKAgkAzQgCCAUDYWNjAl8xBQJlbAYDCQAAAgUEYWRkcgUHbmV3QWRkcgkAlAoCCQDNCAIIBQNhY2MCXzEFDG5ld0NhbmRpZGF0ZQYDCQBmAgUGYW1vdW50BQluZXdBbW91bnQJAJQKAgkAzQgCCAUDYWNjAl8xBQJlbAcJAJQKAgkAzQgCCQDNCAIIBQNhY2MCXzEFDG5ld0NhbmRpZGF0ZQUCZWwGBAZyZXN1bHQKAAIkbAkAtQkCBQ1vbGRMZWFkZXJzU3RyAgE6CgACJHMJAJADAQUCJGwKAAUkYWNjMAkAlAoCBQNuaWwHCgEFJGYwXzECAiRhAiRpAwkAZwIFAiRpBQIkcwUCJGEJAQxzb3J0QnlBbW91bnQCBQIkYQkAkQMCBQIkbAUCJGkKAQUkZjBfMgICJGECJGkDCQBnAgUCJGkFAiRzBQIkYQkAAgECE0xpc3Qgc2l6ZSBleGNlZWRzIDMJAQUkZjBfMgIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIFBSRhY2MwAAAAAQACAAMEA2FycggFBnJlc3VsdAJfMQMIBQZyZXN1bHQCXzIDCQBmAgkAkAMBBQNhcnIAAwkAzAgCCQCRAwIFA2FycgAACQDMCAIJAJEDAgUDYXJyAAEJAMwIAgkAkQMCBQNhcnIAAgUDbmlsBQNhcnIDCQBnAgkAkAMBBQNhcnIAAwUDYXJyCQDNCAIFA2FycgUMbmV3Q2FuZGlkYXRlAQxmb21vSW50ZXJuYWwBAWkDCQECIT0CCQCQAwEIBQFpCHBheW1lbnRzAAEJAAIBAiJleGFjdGx5IDEgcGF5bWVudCBtdXN0IGJlIGF0dGFjaGVkBANwbXQJAJEDAggFAWkIcGF5bWVudHMAAAQDYW10CAUDcG10BmFtb3VudAMDCQEBIQEJAQlpc0RlZmluZWQBCAUDcG10B2Fzc2V0SWQGCQECIT0CCQEFdmFsdWUBCAUDcG10B2Fzc2V0SWQFC2dvcmNBc3NldElkCQACAQITR09SQyBwYXltZW50cyBvbmx5IQQGY2hhbmdlCQBlAgUDYW10BQtCTEVTU19QUklDRQMJAGYCAAAFBmNoYW5nZQkAAgEJAKwCAgkArAICCQCsAgICFllvdSBuZWVkIHRvIHNhY3JpZmljZSAJAQpmaXhlZFBvaW50AgULQkxFU1NfUFJJQ0UACAIWIEdPUkMsIGJ1dCBJIHNlZSBvbmx5IAkBCmZpeGVkUG9pbnQCBQNhbXQACAQNY2hhbmdlQWN0aW9ucwMJAGYCBQZjaGFuZ2UAAAkAzAgCCQEOU2NyaXB0VHJhbnNmZXIDCAUBaQZjYWxsZXIFBmNoYW5nZQULZ29yY0Fzc2V0SWQFA25pbAUDbmlsBAxsYXN0Rm9tb1RpbWUJAQt2YWx1ZU9yRWxzZQIJAJ8IAQUPbGFzdEZvbW9UaW1lS2V5AAAEDmxhc3RGb21vUGxheWVyCQELdmFsdWVPckVsc2UCCQCiCAEFEWxhc3RGb21vUGxheWVyS2V5AgAEEmxhc3RGb21vTnVtV2luc0tleQkBEmZvbW9Vc2VyTnVtV2luc0tleQEFDmxhc3RGb21vUGxheWVyBBRsYXN0Rm9tb1dvbkFtb3VudEtleQkBFGZvbW9Vc2VyV29uQW1vdW50S2V5AQUObGFzdEZvbW9QbGF5ZXIED2xhc3RGb21vTnVtV2lucwkBC3ZhbHVlT3JFbHNlAgkAnwgBBRJsYXN0Rm9tb051bVdpbnNLZXkAAAQRbGFzdEZvbW9Xb25BbW91bnQJAQt2YWx1ZU9yRWxzZQIJAJ8IAQUUbGFzdEZvbW9Xb25BbW91bnRLZXkAAAQQZGVsdGFDdXJySmFja3BvdAkAawMFC0JMRVNTX1BSSUNFBRRDVVJSRU5UX0pBQ0tQT1RfUEVSQwBkBBBkZWx0YU5leHRKYWNrcG90CQBrAwULQkxFU1NfUFJJQ0UFEU5FWFRfSkFDS1BPVF9QRVJDAGQED2RlbHRhVGVhbUFtb3VudAkAawMFC0JMRVNTX1BSSUNFBQlURUFNX1BFUkMAZAQSZGVsdGFTdGFrZXJzQW1vdW50CQBlAgkAZQIJAGUCBQtCTEVTU19QUklDRQUQZGVsdGFDdXJySmFja3BvdAUQZGVsdGFOZXh0SmFja3BvdAUPZGVsdGFUZWFtQW1vdW50BAlmb21vRXBvY2gJAQt2YWx1ZU9yRWxzZQIJAJ8IAQUMZm9tb0Vwb2NoS2V5AAAEDmN1cnJGb21vUGVyaW9kCQELdmFsdWVPckVsc2UCCQCfCAEFEWN1cnJGb21vUGVyaW9kS2V5BRNERUZBVUxUX0ZPTU9fUEVSSU9EBA5uZXh0Rm9tb1BlcmlvZAkAlgMBCQDMCAIFD01JTl9GT01PX1BFUklPRAkAzAgCCQBlAgUOY3VyckZvbW9QZXJpb2QAAQUDbmlsBA9mb21vQ3VyckphY2twb3QJAQt2YWx1ZU9yRWxzZQIJAJ8IAQUSY3VyckZvbW9KYWNrcG90S2V5AAAED2ZvbW9OZXh0SmFja3BvdAkBC3ZhbHVlT3JFbHNlAgkAnwgBBRJuZXh0Rm9tb0phY2twb3RLZXkAAAQPb2xkTGVhZGVyc0J5TnVtCQELdmFsdWVPckVsc2UCCQCiCAEFGWZvbW9GYXZvcml0ZUJ5TnVtR2FtZXNLZXkCAAQSb2xkTGVhZGVyc0J5QW1vdW50CQELdmFsdWVPckVsc2UCCQCiCAEFF2ZvbW9GYXZvcml0ZUJ5QW1vdW50S2V5AgAEC2ZvbW9BY3Rpb25zAwMDCQBmAgUGaGVpZ2h0CQBkAgUMbGFzdEZvbW9UaW1lBQ5jdXJyRm9tb1BlcmlvZAkAZgIFD2ZvbW9DdXJySmFja3BvdAAABwkBAiE9AgUObGFzdEZvbW9QbGF5ZXICAAcJAMwIAgkBDlNjcmlwdFRyYW5zZmVyAwkBEUBleHRyTmF0aXZlKDEwNjIpAQUObGFzdEZvbW9QbGF5ZXIFD2ZvbW9DdXJySmFja3BvdAULZ29yY0Fzc2V0SWQJAMwIAgkBC1N0cmluZ0VudHJ5AgURbGFzdEZvbW9XaW5uZXJLZXkFDmxhc3RGb21vUGxheWVyCQDMCAIJAQxJbnRlZ2VyRW50cnkCBRdsYXN0Rm9tb1dpbm5lckFtb3VudEtleQUPZm9tb0N1cnJKYWNrcG90CQDMCAIJAQxJbnRlZ2VyRW50cnkCBRVsYXN0Rm9tb1dpbm5lclRpbWVLZXkIBQlsYXN0QmxvY2sJdGltZXN0YW1wCQDMCAIJAQxJbnRlZ2VyRW50cnkCBRJjdXJyRm9tb0phY2twb3RLZXkJAGQCBQ9mb21vTmV4dEphY2twb3QFEGRlbHRhQ3VyckphY2twb3QJAMwIAgkBDEludGVnZXJFbnRyeQIFEm5leHRGb21vSmFja3BvdEtleQUQZGVsdGFOZXh0SmFja3BvdAkAzAgCCQEMSW50ZWdlckVudHJ5AgUMZm9tb0Vwb2NoS2V5CQBkAgUJZm9tb0Vwb2NoAAEJAMwIAgkBDEludGVnZXJFbnRyeQIFEWN1cnJGb21vUGVyaW9kS2V5BRNERUZBVUxUX0ZPTU9fUEVSSU9ECQDMCAIJAQtTdHJpbmdFbnRyeQIFGWZvbW9GYXZvcml0ZUJ5TnVtR2FtZXNLZXkJALkJAgkBDWdldE5ld0xlYWRlcnMDBQ9vbGRMZWFkZXJzQnlOdW0FDmxhc3RGb21vUGxheWVyCQBkAgUPbGFzdEZvbW9OdW1XaW5zAAECAToJAMwIAgkBC1N0cmluZ0VudHJ5AgUXZm9tb0Zhdm9yaXRlQnlBbW91bnRLZXkJALkJAgkBDWdldE5ld0xlYWRlcnMDBRJvbGRMZWFkZXJzQnlBbW91bnQFDmxhc3RGb21vUGxheWVyCQBkAgURbGFzdEZvbW9Xb25BbW91bnQFD2ZvbW9DdXJySmFja3BvdAIBOgkAzAgCCQEMSW50ZWdlckVudHJ5AgUSbGFzdEZvbW9OdW1XaW5zS2V5CQBkAgUPbGFzdEZvbW9OdW1XaW5zAAEJAMwIAgkBDEludGVnZXJFbnRyeQIFFGxhc3RGb21vV29uQW1vdW50S2V5CQBkAgURbGFzdEZvbW9Xb25BbW91bnQFD2ZvbW9DdXJySmFja3BvdAkAzAgCCQEMSW50ZWdlckVudHJ5AgUVZm9tb1RvdGFsV29uQW1vdW50S2V5CQBkAgkBC3ZhbHVlT3JFbHNlAgkAnwgBBRVmb21vVG90YWxXb25BbW91bnRLZXkAAAUPZm9tb0N1cnJKYWNrcG90BQNuaWwJAMwIAgkBDEludGVnZXJFbnRyeQIFEmN1cnJGb21vSmFja3BvdEtleQkAZAIFD2ZvbW9DdXJySmFja3BvdAUQZGVsdGFDdXJySmFja3BvdAkAzAgCCQEMSW50ZWdlckVudHJ5AgUSbmV4dEZvbW9KYWNrcG90S2V5CQBkAgUPZm9tb05leHRKYWNrcG90BRBkZWx0YU5leHRKYWNrcG90CQDMCAIJAQxJbnRlZ2VyRW50cnkCBRFjdXJyRm9tb1BlcmlvZEtleQUObmV4dEZvbW9QZXJpb2QFA25pbAQEYWRkcgkApQgBCAUBaQZjYWxsZXIEFGZvbW9OdW1VbmlxdWVQbGF5ZXJzCQELdmFsdWVPckVsc2UCCQCfCAEFF2ZvbW9OdW1VbmlxdWVQbGF5ZXJzS2V5AAAEEHVzZXJOdW1TdGFrZXNLZXkJARRmb21vVXNlck51bVN0YWtlc0tleQEFBGFkZHIEE3VzZXJTdGFrZWRBbW91bnRLZXkJARdmb21vVXNlclN0YWtlZEFtb3VudEtleQEFBGFkZHIEDXVzZXJOdW1TdGFrZXMJAJ8IAQUQdXNlck51bVN0YWtlc0tleQQMc3RhdHNBY3Rpb25zCQDOCAIDCQEJaXNEZWZpbmVkAQUNdXNlck51bVN0YWtlcwkAzAgCCQEMSW50ZWdlckVudHJ5AgUQdXNlck51bVN0YWtlc0tleQkAZAIJAQV2YWx1ZQEFDXVzZXJOdW1TdGFrZXMAAQkAzAgCCQEMSW50ZWdlckVudHJ5AgUTdXNlclN0YWtlZEFtb3VudEtleQkAZAIJAQt2YWx1ZU9yRWxzZQIJAJ8IAQUTdXNlclN0YWtlZEFtb3VudEtleQAABQtCTEVTU19QUklDRQUDbmlsCQDMCAIJAQxJbnRlZ2VyRW50cnkCBRdmb21vTnVtVW5pcXVlUGxheWVyc0tleQkAZAIFFGZvbW9OdW1VbmlxdWVQbGF5ZXJzAAEJAMwIAgkBDEludGVnZXJFbnRyeQIFEHVzZXJOdW1TdGFrZXNLZXkAAQkAzAgCCQEMSW50ZWdlckVudHJ5AgUTdXNlclN0YWtlZEFtb3VudEtleQULQkxFU1NfUFJJQ0UFA25pbAkAzAgCCQEMSW50ZWdlckVudHJ5AgUVZm9tb1RvdGFsTnVtU3Rha2VzS2V5CQBkAgkBC3ZhbHVlT3JFbHNlAgkAnwgBBRVmb21vVG90YWxOdW1TdGFrZXNLZXkAAAABCQDMCAIJAQxJbnRlZ2VyRW50cnkCBRhmb21vVG90YWxTdGFrZWRBbW91bnRLZXkJAGQCCQELdmFsdWVPckVsc2UCCQCfCAEFGGZvbW9Ub3RhbFN0YWtlZEFtb3VudEtleQAABQtCTEVTU19QUklDRQUDbmlsCQDOCAIJAM4IAgkAzggCCQDMCAIJAQxJbnRlZ2VyRW50cnkCBQ9sYXN0Rm9tb1RpbWVLZXkFBmhlaWdodAkAzAgCCQELU3RyaW5nRW50cnkCBRFsYXN0Rm9tb1BsYXllcktleQkApQgBCAUBaQZjYWxsZXIJAMwIAgkBDlNjcmlwdFRyYW5zZmVyAwkBEUBleHRyTmF0aXZlKDEwNjIpAQkBEUBleHRyTmF0aXZlKDEwNTgpAQURdGVhbVdhbGxldEFkZHJLZXkFD2RlbHRhVGVhbUFtb3VudAULZ29yY0Fzc2V0SWQJAMwIAgkBDEludGVnZXJFbnRyeQIFFHN0YWtlcnNBbW91bnRMZWZ0S2V5CQBkAgkBEUBleHRyTmF0aXZlKDEwNTUpAQUUc3Rha2Vyc0Ftb3VudExlZnRLZXkFEmRlbHRhU3Rha2Vyc0Ftb3VudAkAzAgCCQEMSW50ZWdlckVudHJ5AgUVc3Rha2Vyc0Ftb3VudFRvdGFsS2V5CQBkAgkBEUBleHRyTmF0aXZlKDEwNTUpAQUVc3Rha2Vyc0Ftb3VudFRvdGFsS2V5BRJkZWx0YVN0YWtlcnNBbW91bnQFA25pbAUNY2hhbmdlQWN0aW9ucwULZm9tb0FjdGlvbnMFDHN0YXRzQWN0aW9ucwEPZ2V0UmFuZG9tTnVtYmVyAwhtYXhWYWx1ZQRzYWx0B2VudHJvcHkDCQBnAgAABQhtYXhWYWx1ZQkAAgECFm1heFZhbHVlIHNob3VsZCBiZSA+IDAECnJhbmRvbUhhc2gJANQWAQkAywECBQRzYWx0BQdlbnRyb3B5CQBqAgkAsQkBBQpyYW5kb21IYXNoBQhtYXhWYWx1ZQEOd2FsbGV0SW50ZXJuYWwBDnVzZXJBZGRyZXNzT3B0BARhZGRyCQCmCAEFDnVzZXJBZGRyZXNzT3B0BAdiYWxhbmNlAwkBCWlzRGVmaW5lZAEFBGFkZHIJAO8HAQkBBXZhbHVlAQUEYWRkcgkBDkJhbGFuY2VEZXRhaWxzBAAAAAAAAAAABAtnb3JjQmFsYW5jZQMJAQlpc0RlZmluZWQBBQRhZGRyCQDwBwIJAQV2YWx1ZQEFBGFkZHIFC2dvcmNBc3NldElkAAAECnN0YWtlZEdvcmMJAQt2YWx1ZU9yRWxzZQIJAJ8IAQkBFXN0YWtlZEFtb3VudEJ5VXNlcktleQEFDnVzZXJBZGRyZXNzT3B0AAAJAMwIAgkArAICAhQlcyVkX193YXZlc0JhbGFuY2VfXwkApAMBCAUHYmFsYW5jZQlhdmFpbGFibGUJAMwIAgkArAICAhMlcyVkX19nb3JjQmFsYW5jZV9fCQCkAwEFC2dvcmNCYWxhbmNlCQDMCAIJAKwCAgISJXMlZF9fc3Rha2VkR29yY19fCQCkAwEFCnN0YWtlZEdvcmMFA25pbAsBaQEIdGVzdEFyZ3MIBmludFZhbAZzdHJWYWwHYm9vbFZhbAZiaW5WYWwGYXJySW50BmFyclN0cgdhcnJCb29sBmFyckJpbgUDbmlsAWkBDWNvbnN0cnVjdG9yVjEDDnRlYW1XYWxsZXRBZGRyCmJyb2tlckFkZHILcmVzZXJ2ZUFkZHIDCQECIT0CCAUBaQZjYWxsZXIFBHRoaXMJAAIBAhFQZXJtaXNzaW9uIGRlbmllZAQMaXNzdWVkQW1vdW50BQNNMTYEBWlzc3VlCQDDCAcCBEdPUkMCtQFNZW1lIGNvaW4gYnkgR29kIG9mIFJhbmRvbSBDaGFuY2UuIFZpc2l0IGh0dHBzOi8vZ29yYy5tZW1lLCBzYWNyaWZpY2UgdG8gdGhlIEdvZCBvZiBSYW5kb20gYW5kIHlvdSB3aWxsIHJlY2VpdmUgYW4gYW5zd2VyIHRvIGFueSBxdWVzdGlvbiBvciBhIGJsZXNzaW5nLiBMdWNreSBvbmUgZ2V0cyBhIEdpZnQgb2YgR29kBQxpc3N1ZWRBbW91bnQACAcFBHVuaXQAAAQHYXNzZXRJZAkAuAgBBQVpc3N1ZQkAzAgCBQVpc3N1ZQkAzAgCCQELQmluYXJ5RW50cnkCBQ5nb3JjQXNzZXRJZEtleQUHYXNzZXRJZAkAzAgCCQEMSW50ZWdlckVudHJ5AgUMaXNzdWVUaW1lS2V5BQZoZWlnaHQJAMwIAgkBDEludGVnZXJFbnRyeQIFFHN0YWtlcnNBbW91bnRMZWZ0S2V5BQ5TVEFLRVJTX0FNT1VOVAkAzAgCCQEMSW50ZWdlckVudHJ5AgUVc3Rha2Vyc0Ftb3VudFRvdGFsS2V5BQ5TVEFLRVJTX0FNT1VOVAkAzAgCCQEMSW50ZWdlckVudHJ5AgURdGVhbUFtb3VudExlZnRLZXkFC1RFQU1fQU1PVU5UCQDMCAIJAQxJbnRlZ2VyRW50cnkCBRZsYXN0VGVhbVZlc3RpbmdUaW1lS2V5BQZoZWlnaHQJAMwIAgkBC1N0cmluZ0VudHJ5AgURdGVhbVdhbGxldEFkZHJLZXkFDnRlYW1XYWxsZXRBZGRyCQDMCAIJAQtTdHJpbmdFbnRyeQIFDWJyb2tlckFkZHJLZXkFCmJyb2tlckFkZHIJAMwIAgkBC1N0cmluZ0VudHJ5AgUOcmVzZXJ2ZUFkZHJLZXkFC3Jlc2VydmVBZGRyCQDMCAIJAQ5TY3JpcHRUcmFuc2ZlcgMJARFAZXh0ck5hdGl2ZSgxMDYyKQEFC3Jlc2VydmVBZGRyBQ9SRVNFUlZFRF9BTU9VTlQFB2Fzc2V0SWQJAMwIAgkBDlNjcmlwdFRyYW5zZmVyAwkBEUBleHRyTmF0aXZlKDEwNjIpAQUKYnJva2VyQWRkcgUNTUFSS0VUX0FNT1VOVAUHYXNzZXRJZAkAzAgCCQEMSW50ZWdlckVudHJ5AgUMZm9tb0Vwb2NoS2V5AAAJAMwIAgkBDEludGVnZXJFbnRyeQIFEWN1cnJGb21vUGVyaW9kS2V5BRNERUZBVUxUX0ZPTU9fUEVSSU9EBQNuaWwBaQEJc3Rha2VHb3JjAAMJAQIhPQIIBQFpBmNhbGxlcgUEdGhpcwkAAgECEVBlcm1pc3Npb24gZGVuaWVkAwkBAiE9AgkAkAMBCAUBaQhwYXltZW50cwABCQACAQIiZXhhY3RseSAxIHBheW1lbnQgbXVzdCBiZSBhdHRhY2hlZAQDcG10CQCRAwIIBQFpCHBheW1lbnRzAAAEA2FtdAgFA3BtdAZhbW91bnQDAwkBASEBCQEJaXNEZWZpbmVkAQgFA3BtdAdhc3NldElkBgkBAiE9AgkBBXZhbHVlAQgFA3BtdAdhc3NldElkBQtnb3JjQXNzZXRJZAkAAgECE0dPUkMgcGF5bWVudHMgb25seSEEBGFkZHIJAKUIAQgFAWkGY2FsbGVyBA0kdDAxNDY2NTE0NzQ3CQEJZ29yY1N0YXRzAQUEYWRkcgQKdXNlckFtb3VudAgFDSR0MDE0NjY1MTQ3NDcCXzEED2Ftb3VudExlZnRUb3RhbAgFDSR0MDE0NjY1MTQ3NDcCXzIEDXZlc3RpbmdBbW91bnQIBQ0kdDAxNDY2NTE0NzQ3Al8zBA50ZWFtQW1vdW50TGVmdAgFDSR0MDE0NjY1MTQ3NDcCXzQEDXVzZXJBbW91bnRLZXkJARVzdGFrZWRBbW91bnRCeVVzZXJLZXkBBQRhZGRyBAxjbGFpbUFjdGlvbnMDCQBmAgUKdXNlckFtb3VudAAACQDMCAIJAQ5TY3JpcHRUcmFuc2ZlcgMIBQFpBmNhbGxlcgUKdXNlckFtb3VudAULZ29yY0Fzc2V0SWQFA25pbAUDbmlsBA52ZXN0aW5nQWN0aW9ucwMJAGYCBQ12ZXN0aW5nQW1vdW50AAAJAMwIAgkBDlNjcmlwdFRyYW5zZmVyAwkBEUBleHRyTmF0aXZlKDEwNjIpAQkBEUBleHRyTmF0aXZlKDEwNTgpAQURdGVhbVdhbGxldEFkZHJLZXkFDXZlc3RpbmdBbW91bnQFC2dvcmNBc3NldElkCQDMCAIJAQxJbnRlZ2VyRW50cnkCBRF0ZWFtQW1vdW50TGVmdEtleQUOdGVhbUFtb3VudExlZnQJAMwIAgkBDEludGVnZXJFbnRyeQIFFmxhc3RUZWFtVmVzdGluZ1RpbWVLZXkFBmhlaWdodAUDbmlsBQNuaWwJAJQKAgkAzggCCQDOCAIFDGNsYWltQWN0aW9ucwUOdmVzdGluZ0FjdGlvbnMJAMwIAgkBDEludGVnZXJFbnRyeQIFFHN0YWtlZEFtb3VudFRvdGFsS2V5CQBkAgkBC3ZhbHVlT3JFbHNlAgkAnwgBBRRzdGFrZWRBbW91bnRUb3RhbEtleQAABQNhbXQJAMwIAgkBDEludGVnZXJFbnRyeQIFDXVzZXJBbW91bnRLZXkJAGQCCQELdmFsdWVPckVsc2UCCQCfCAEFDXVzZXJBbW91bnRLZXkAAAUDYW10CQDMCAIJAQxJbnRlZ2VyRW50cnkCCQEWbGFzdENsYWltVGltZUJ5VXNlcktleQEFBGFkZHIFBmhlaWdodAkAzAgCCQEMSW50ZWdlckVudHJ5AgUUc3Rha2Vyc0Ftb3VudExlZnRLZXkFD2Ftb3VudExlZnRUb3RhbAUDbmlsBQp1c2VyQW1vdW50AWkBC3Vuc3Rha2VHb3JjAQZhbW91bnQDCQECIT0CCAUBaQZjYWxsZXIFBHRoaXMJAAIBAhFQZXJtaXNzaW9uIGRlbmllZAMJAGcCAAAFBmFtb3VudAkAAgECGUFtb3VudCBzaG91bGQgYmUgcG9zaXRpdmUEBGFkZHIJAKUIAQgFAWkGY2FsbGVyAwkBAiE9AgkAkAMBCAUBaQhwYXltZW50cwAACQACAQIUTm8gcGF5bWVudHMgcmVxdWlyZWQEDXVzZXJBbW91bnRLZXkJARVzdGFrZWRBbW91bnRCeVVzZXJLZXkBBQRhZGRyBAlvbGRBbW91bnQJAQt2YWx1ZU9yRWxzZQIJAJ8IAQUNdXNlckFtb3VudEtleQAAAwkAZgIAAAkAZQIFCW9sZEFtb3VudAUGYW1vdW50CQACAQkArAICCQCsAgIJAKwCAgIOWW91IGhhdmUgb25seSAJAQpmaXhlZFBvaW50AgUJb2xkQW1vdW50AAgCHyBHT1JDIHN0YWtlZCwgdHJpZWQgdG8gdW5zdGFrZSAJAQpmaXhlZFBvaW50AgUGYW1vdW50AAgEDSR0MDE2MDYzMTYxNDUJAQlnb3JjU3RhdHMBBQRhZGRyBAp1c2VyQW1vdW50CAUNJHQwMTYwNjMxNjE0NQJfMQQPYW1vdW50TGVmdFRvdGFsCAUNJHQwMTYwNjMxNjE0NQJfMgQNdmVzdGluZ0Ftb3VudAgFDSR0MDE2MDYzMTYxNDUCXzMEDnRlYW1BbW91bnRMZWZ0CAUNJHQwMTYwNjMxNjE0NQJfNAQMY2xhaW1BY3Rpb25zAwkAZgIFCnVzZXJBbW91bnQAAAkAzAgCCQEOU2NyaXB0VHJhbnNmZXIDCAUBaQZjYWxsZXIFCnVzZXJBbW91bnQFC2dvcmNBc3NldElkBQNuaWwFA25pbAQOdmVzdGluZ0FjdGlvbnMDCQBmAgUNdmVzdGluZ0Ftb3VudAAACQDMCAIJAQ5TY3JpcHRUcmFuc2ZlcgMJARFAZXh0ck5hdGl2ZSgxMDYyKQEJARFAZXh0ck5hdGl2ZSgxMDU4KQEFEXRlYW1XYWxsZXRBZGRyS2V5BQ12ZXN0aW5nQW1vdW50BQtnb3JjQXNzZXRJZAkAzAgCCQEMSW50ZWdlckVudHJ5AgURdGVhbUFtb3VudExlZnRLZXkFDnRlYW1BbW91bnRMZWZ0CQDMCAIJAQxJbnRlZ2VyRW50cnkCBRZsYXN0VGVhbVZlc3RpbmdUaW1lS2V5BQZoZWlnaHQFA25pbAUDbmlsCQCUCgIJAM4IAgkAzggCBQxjbGFpbUFjdGlvbnMFDnZlc3RpbmdBY3Rpb25zCQDMCAIJAQxJbnRlZ2VyRW50cnkCBRRzdGFrZWRBbW91bnRUb3RhbEtleQkAZQIJARN2YWx1ZU9yRXJyb3JNZXNzYWdlAgkAnwgBBRRzdGFrZWRBbW91bnRUb3RhbEtleQIOTm8gR09SQyBzdGFrZWQFBmFtb3VudAkAzAgCCQEMSW50ZWdlckVudHJ5AgUNdXNlckFtb3VudEtleQkAZQIFCW9sZEFtb3VudAUGYW1vdW50CQDMCAIJAQxJbnRlZ2VyRW50cnkCCQEWbGFzdENsYWltVGltZUJ5VXNlcktleQEFBGFkZHIFBmhlaWdodAkAzAgCCQEMSW50ZWdlckVudHJ5AgUUc3Rha2Vyc0Ftb3VudExlZnRLZXkFD2Ftb3VudExlZnRUb3RhbAUDbmlsAAABaQEJY2xhaW1Hb3JjAAMJAQIhPQIIBQFpBmNhbGxlcgUEdGhpcwkAAgECEVBlcm1pc3Npb24gZGVuaWVkAwkBAiE9AgkAkAMBCAUBaQhwYXltZW50cwAACQACAQIUTm8gcGF5bWVudHMgcmVxdWlyZWQEBGFkZHIJAKUIAQgFAWkGY2FsbGVyBA0kdDAxNzA2NDE3MTQ2CQEJZ29yY1N0YXRzAQUEYWRkcgQKdXNlckFtb3VudAgFDSR0MDE3MDY0MTcxNDYCXzEED2Ftb3VudExlZnRUb3RhbAgFDSR0MDE3MDY0MTcxNDYCXzIEDXZlc3RpbmdBbW91bnQIBQ0kdDAxNzA2NDE3MTQ2Al8zBA50ZWFtQW1vdW50TGVmdAgFDSR0MDE3MDY0MTcxNDYCXzQEDGNsYWltQWN0aW9ucwMJAGYCBQp1c2VyQW1vdW50AAAJAMwIAgkBDlNjcmlwdFRyYW5zZmVyAwgFAWkGY2FsbGVyBQp1c2VyQW1vdW50BQtnb3JjQXNzZXRJZAUDbmlsBQNuaWwEDnZlc3RpbmdBY3Rpb25zAwkAZgIFDXZlc3RpbmdBbW91bnQAAAkAzAgCCQEOU2NyaXB0VHJhbnNmZXIDCQERQGV4dHJOYXRpdmUoMTA2MikBCQERQGV4dHJOYXRpdmUoMTA1OCkBBRF0ZWFtV2FsbGV0QWRkcktleQUNdmVzdGluZ0Ftb3VudAULZ29yY0Fzc2V0SWQJAMwIAgkBDEludGVnZXJFbnRyeQIFEXRlYW1BbW91bnRMZWZ0S2V5BQ50ZWFtQW1vdW50TGVmdAkAzAgCCQEMSW50ZWdlckVudHJ5AgUWbGFzdFRlYW1WZXN0aW5nVGltZUtleQUGaGVpZ2h0BQNuaWwFA25pbAkAlAoCCQDOCAIJAM4IAgUMY2xhaW1BY3Rpb25zBQ52ZXN0aW5nQWN0aW9ucwkAzAgCCQEMSW50ZWdlckVudHJ5AgkBFmxhc3RDbGFpbVRpbWVCeVVzZXJLZXkBBQRhZGRyBQZoZWlnaHQJAMwIAgkBDEludGVnZXJFbnRyeQIFFHN0YWtlcnNBbW91bnRMZWZ0S2V5BQ9hbW91bnRMZWZ0VG90YWwFA25pbAUKdXNlckFtb3VudAFpAQhhbnN3ZXJNZQAJAJQKAgkBDGZvbW9JbnRlcm5hbAEFAWkJALEJAQgFAWkNdHJhbnNhY3Rpb25JZAFpAQdibGVzc01lAAkAlAoCCQEMZm9tb0ludGVybmFsAQUBaQAqAWkBC2NvbW1pdEd1ZXNzAQVndWVzcwMJAQIhPQIIBQFpBmNhbGxlcgUEdGhpcwkAAgECEVBlcm1pc3Npb24gZGVuaWVkBARhZGRyCQClCAEIBQFpBmNhbGxlcgQJZmluaXNoS2V5CQEJa2V5Q29tbWl0AQUEYWRkcgQIZ3Vlc3NLZXkJAQhrZXlHdWVzcwEFBGFkZHIDCQEJaXNEZWZpbmVkAQkAnwgBBQlmaW5pc2hLZXkJAAIBAiVZb3UgYWxyZWFkeSBtYWRlIGEgYmV0LCBwbGVhc2UgdXNlIGl0AwMJAGYCAAAFBWd1ZXNzBgkAZgIFBWd1ZXNzAAsJAAIBAiVUaGUgbnVtYmVyIHNob3VsZCBiZSBiZXR3ZWVuIDAgYW5kIDExAwkBAiE9AgkAkAMBCAUBaQhwYXltZW50cwABCQACAQIiZXhhY3RseSAxIHBheW1lbnQgbXVzdCBiZSBhdHRhY2hlZAQDcG10CQCRAwIIBQFpCHBheW1lbnRzAAAEA2FtdAgFA3BtdAZhbW91bnQDAwkBASEBCQEJaXNEZWZpbmVkAQgFA3BtdAdhc3NldElkBgkBAiE9AgkBBXZhbHVlAQgFA3BtdAdhc3NldElkBQtnb3JjQXNzZXRJZAkAAgECE0dPUkMgcGF5bWVudHMgb25seSEEBmNoYW5nZQkAZQIFA2FtdAUNTE9UVEVSWV9QUklDRQMJAGYCAAAFBmNoYW5nZQkAAgEJAKwCAgkArAICCQCsAgICFllvdSBuZWVkIHRvIHNhY3JpZmljZSAJAQpmaXhlZFBvaW50AgUNTE9UVEVSWV9QUklDRQAIAhYgR09SQywgYnV0IEkgc2VlIG9ubHkgCQEKZml4ZWRQb2ludAIFA2FtdAAIBA1jaGFuZ2VBY3Rpb25zAwkAZgIFBmNoYW5nZQAACQDMCAIJAQ5TY3JpcHRUcmFuc2ZlcgMIBQFpBmNhbGxlcgUGY2hhbmdlBQtnb3JjQXNzZXRJZAUDbmlsBQNuaWwEC2ZpbmlzaEJsb2NrCQBkAgUGaGVpZ2h0BQxSQU5ET01fREVMQVkEEGRlbHRhQ3VyckphY2twb3QJAGsDBQ1MT1RURVJZX1BSSUNFBRRDVVJSRU5UX0pBQ0tQT1RfUEVSQwBkBBBkZWx0YU5leHRKYWNrcG90CQBrAwUNTE9UVEVSWV9QUklDRQURTkVYVF9KQUNLUE9UX1BFUkMAZAQPZGVsdGFUZWFtQW1vdW50CQBrAwUNTE9UVEVSWV9QUklDRQUJVEVBTV9QRVJDAGQEEmRlbHRhU3Rha2Vyc0Ftb3VudAkAZQIJAGUCCQBlAgUNTE9UVEVSWV9QUklDRQUQZGVsdGFDdXJySmFja3BvdAUQZGVsdGFOZXh0SmFja3BvdAUPZGVsdGFUZWFtQW1vdW50CQCUCgIJAM4IAgkAzAgCCQEMSW50ZWdlckVudHJ5AgUJZmluaXNoS2V5BQtmaW5pc2hCbG9jawkAzAgCCQEMSW50ZWdlckVudHJ5AgUIZ3Vlc3NLZXkFBWd1ZXNzCQDMCAIJAQxJbnRlZ2VyRW50cnkCBRVjdXJyTG90dGVyeUphY2twb3RLZXkJAGQCCQELdmFsdWVPckVsc2UCCQCfCAEFFWN1cnJMb3R0ZXJ5SmFja3BvdEtleQAABRBkZWx0YUN1cnJKYWNrcG90CQDMCAIJAQxJbnRlZ2VyRW50cnkCBRVuZXh0TG90dGVyeUphY2twb3RLZXkJAGQCCQELdmFsdWVPckVsc2UCCQCfCAEFFW5leHRMb3R0ZXJ5SmFja3BvdEtleQAABRBkZWx0YU5leHRKYWNrcG90CQDMCAIJAQ5TY3JpcHRUcmFuc2ZlcgMJARFAZXh0ck5hdGl2ZSgxMDYyKQEJARFAZXh0ck5hdGl2ZSgxMDU4KQEFEXRlYW1XYWxsZXRBZGRyS2V5BQ9kZWx0YVRlYW1BbW91bnQFC2dvcmNBc3NldElkCQDMCAIJAQxJbnRlZ2VyRW50cnkCBRRzdGFrZXJzQW1vdW50TGVmdEtleQkAZAIJARFAZXh0ck5hdGl2ZSgxMDU1KQEFFHN0YWtlcnNBbW91bnRMZWZ0S2V5BRJkZWx0YVN0YWtlcnNBbW91bnQJAMwIAgkBDEludGVnZXJFbnRyeQIFFXN0YWtlcnNBbW91bnRUb3RhbEtleQkAZAIJARFAZXh0ck5hdGl2ZSgxMDU1KQEFFXN0YWtlcnNBbW91bnRUb3RhbEtleQUSZGVsdGFTdGFrZXJzQW1vdW50CQDMCAIJAQtTdHJpbmdFbnRyeQIJAQdrZXlTYWx0AQUEYWRkcgkA2AQBCAUBaQ10cmFuc2FjdGlvbklkBQNuaWwFDWNoYW5nZUFjdGlvbnMFC2ZpbmlzaEJsb2NrAWkBDGd1ZXNzTG90dGVyeQADCQECIT0CCAUBaQZjYWxsZXIFBHRoaXMJAAIBAhFQZXJtaXNzaW9uIGRlbmllZAQEYWRkcgkApQgBCAUBaQZjYWxsZXIECWZpbmlzaEtleQkBCWtleUNvbW1pdAEFBGFkZHIECGd1ZXNzS2V5CQEIa2V5R3Vlc3MBBQRhZGRyBAVndWVzcwkBE3ZhbHVlT3JFcnJvck1lc3NhZ2UCCQCfCAEFCGd1ZXNzS2V5AhdZb3UgaGF2ZSBub3QgbWFkZSBhIGJldAQLZmluaXNoQmxvY2sJARN2YWx1ZU9yRXJyb3JNZXNzYWdlAgkAnwgBBQlmaW5pc2hLZXkCF1lvdSBoYXZlIG5vdCBtYWRlIGEgYmV0AwkAZgIFC2ZpbmlzaEJsb2NrBQZoZWlnaHQJAAIBCQCsAgICNFJhbmRvbSBudW1iZXIgaXMgbm90IHJlYWR5IHlldCwgd2FpdCB1bnRpbCBoZWlnaHQgPSAJAKQDAQULZmluaXNoQmxvY2sEB2VudHJvcHkJAQV2YWx1ZQEICQEFdmFsdWUBCQDtBwEFC2ZpbmlzaEJsb2NrA3ZyZgQHc2FsdEtleQkBB2tleVNhbHQBBQRhZGRyBARzYWx0CQDZBAEJAQt2YWx1ZU9yRWxzZQIJAKIIAQUHc2FsdEtleQIHREVGQVVMVAQEcmFuZAkBD2dldFJhbmRvbU51bWJlcgMADAUEc2FsdAUHZW50cm9weQQLY3VyckphY2twb3QJAQt2YWx1ZU9yRWxzZQIJAJ8IAQUVY3VyckxvdHRlcnlKYWNrcG90S2V5AAAECndpbkFjdGlvbnMDCQAAAgUEcmFuZAUFZ3Vlc3MJAMwIAgkBDlNjcmlwdFRyYW5zZmVyAwgFAWkGY2FsbGVyBQtjdXJySmFja3BvdAULZ29yY0Fzc2V0SWQJAMwIAgkBC1N0cmluZ0VudHJ5AgUUbGFzdExvdHRlcnlXaW5uZXJLZXkFBGFkZHIJAMwIAgkBDEludGVnZXJFbnRyeQIFGmxhc3RMb3R0ZXJ5V2lubmVyQW1vdW50S2V5BQtjdXJySmFja3BvdAkAzAgCCQEMSW50ZWdlckVudHJ5AgUYbGFzdExvdHRlcnlXaW5uZXJUaW1lS2V5CAUJbGFzdEJsb2NrCXRpbWVzdGFtcAkAzAgCCQEMSW50ZWdlckVudHJ5AgUVY3VyckxvdHRlcnlKYWNrcG90S2V5CQELdmFsdWVPckVsc2UCCQCfCAEFFW5leHRMb3R0ZXJ5SmFja3BvdEtleQAACQDMCAIJAQxJbnRlZ2VyRW50cnkCBRVuZXh0TG90dGVyeUphY2twb3RLZXkAAAUDbmlsBQNuaWwJAJQKAgkAzggCCQDMCAIJAQtEZWxldGVFbnRyeQEFCWZpbmlzaEtleQkAzAgCCQELRGVsZXRlRW50cnkBBQhndWVzc0tleQkAzAgCCQELRGVsZXRlRW50cnkBBQdzYWx0S2V5BQNuaWwFCndpbkFjdGlvbnMFBHJhbmQBaQENc3RhdHNSRUFET05MWQELdXNlckFkZHJPcHQEDSR0MDIxOTExMjIwMDAJAQlnb3JjU3RhdHMBBQt1c2VyQWRkck9wdAQKdXNlckFtb3VudAgFDSR0MDIxOTExMjIwMDACXzEED2Ftb3VudExlZnRUb3RhbAgFDSR0MDIxOTExMjIwMDACXzIEDXZlc3RpbmdBbW91bnQIBQ0kdDAyMTkxMTIyMDAwAl8zBA50ZWFtQW1vdW50TGVmdAgFDSR0MDIxOTExMjIwMDACXzQED2N1cnJGb21vSmFja3BvdAkBC3ZhbHVlT3JFbHNlAgkAnwgBBRJjdXJyRm9tb0phY2twb3RLZXkAAAQPbmV4dEZvbW9KYWNrcG90CQELdmFsdWVPckVsc2UCCQCfCAEFEm5leHRGb21vSmFja3BvdEtleQAABAxsYXN0Rm9tb1RpbWUJAQt2YWx1ZU9yRWxzZQIJAJ8IAQUPbGFzdEZvbW9UaW1lS2V5AAAEDmxhc3RGb21vUGxheWVyCQELdmFsdWVPckVsc2UCCQCiCAEFEWxhc3RGb21vUGxheWVyS2V5AgAECWZvbW9FcG9jaAkBC3ZhbHVlT3JFbHNlAgkAnwgBBQxmb21vRXBvY2hLZXkAAAQOY3VyckZvbW9QZXJpb2QJAQt2YWx1ZU9yRWxzZQIJAJ8IAQURY3VyckZvbW9QZXJpb2RLZXkFE0RFRkFVTFRfRk9NT19QRVJJT0QEEmN1cnJMb3R0ZXJ5SmFja3BvdAkBC3ZhbHVlT3JFbHNlAgkAnwgBBRVjdXJyTG90dGVyeUphY2twb3RLZXkAAAQSbmV4dExvdHRlcnlKYWNrcG90CQELdmFsdWVPckVsc2UCCQCfCAEFFW5leHRMb3R0ZXJ5SmFja3BvdEtleQAABAlmaW5pc2hLZXkJAQlrZXlDb21taXQBBQt1c2VyQWRkck9wdAQIZ3Vlc3NLZXkJAQhrZXlHdWVzcwEFC3VzZXJBZGRyT3B0BAVndWVzcwkBC3ZhbHVlT3JFbHNlAgkAnwgBBQhndWVzc0tleQD///////////8BBAtmaW5pc2hCbG9jawkBC3ZhbHVlT3JFbHNlAgkAnwgBBQlmaW5pc2hLZXkA////////////AQQObGFzdEZvbW9XaW5uZXIJAQt2YWx1ZU9yRWxzZQIJAKIIAQURbGFzdEZvbW9XaW5uZXJLZXkCAAQUbGFzdEZvbW9XaW5uZXJBbW91bnQJAQt2YWx1ZU9yRWxzZQIJAJ8IAQUXbGFzdEZvbW9XaW5uZXJBbW91bnRLZXkAAAQSbGFzdEZvbW9XaW5uZXJUaW1lCQELdmFsdWVPckVsc2UCCQCfCAEFFWxhc3RGb21vV2lubmVyVGltZUtleQAABBFsYXN0TG90dGVyeVdpbm5lcgkBC3ZhbHVlT3JFbHNlAgkAoggBBRRsYXN0TG90dGVyeVdpbm5lcktleQIABBdsYXN0TG90dGVyeVdpbm5lckFtb3VudAkBC3ZhbHVlT3JFbHNlAgkAnwgBBRpsYXN0TG90dGVyeVdpbm5lckFtb3VudEtleQAABBVsYXN0TG90dGVyeVdpbm5lclRpbWUJAQt2YWx1ZU9yRWxzZQIJAJ8IAQUYbGFzdExvdHRlcnlXaW5uZXJUaW1lS2V5AAAED2dvcmNTdGFrZWRUb3RhbAkBC3ZhbHVlT3JFbHNlAgkAnwgBBRRzdGFrZWRBbW91bnRUb3RhbEtleQAABBRmb21vTnVtVW5pcXVlUGxheWVycwkBC3ZhbHVlT3JFbHNlAgkAnwgBBRdmb21vTnVtVW5pcXVlUGxheWVyc0tleQAABBJmb21vVG90YWxOdW1TdGFrZXMJAQt2YWx1ZU9yRWxzZQIJAJ8IAQUVZm9tb1RvdGFsTnVtU3Rha2VzS2V5AAAEFWZvbW9Ub3RhbFN0YWtlZEFtb3VudAkBC3ZhbHVlT3JFbHNlAgkAnwgBBRhmb21vVG90YWxTdGFrZWRBbW91bnRLZXkAAAQRZm9tb1VzZXJOdW1TdGFrZXMJAQt2YWx1ZU9yRWxzZQIJAJ8IAQkBFGZvbW9Vc2VyTnVtU3Rha2VzS2V5AQULdXNlckFkZHJPcHQAAAQUZm9tb1VzZXJTdGFrZWRBbW91bnQJAQt2YWx1ZU9yRWxzZQIJAJ8IAQkBF2ZvbW9Vc2VyU3Rha2VkQW1vdW50S2V5AQULdXNlckFkZHJPcHQAAAQPZm9tb1VzZXJOdW1XaW5zCQELdmFsdWVPckVsc2UCCQCfCAEJARJmb21vVXNlck51bVdpbnNLZXkBBQt1c2VyQWRkck9wdAAABBFmb21vVXNlcldvbkFtb3VudAkBC3ZhbHVlT3JFbHNlAgkAnwgBCQEUZm9tb1VzZXJXb25BbW91bnRLZXkBBQt1c2VyQWRkck9wdAAABBZmb21vRmF2b3JpdGVCeU51bUdhbWVzCQELdmFsdWVPckVsc2UCCQCiCAEFGWZvbW9GYXZvcml0ZUJ5TnVtR2FtZXNLZXkCAAQUZm9tb0Zhdm9yaXRlQnlBbW91bnQJAQt2YWx1ZU9yRWxzZQIJAKIIAQUXZm9tb0Zhdm9yaXRlQnlBbW91bnRLZXkCAAQPZ29yY1ByaWNlV2F2ZXM4AwkAAAIFBWNoYWluAQFXCQEFYXNJbnQBCQD8BwQFCXd4RmFjdG9yeQIVc3dhcENhbGN1bGF0ZVJFQURPTkxZCQDMCAIAgMLXLwkAzAgCCQDYBAEFC2dvcmNBc3NldElkCQDMCAICBVdBVkVTBQNuaWwFA25pbACgnAEED3dhdmVzUHJpY2VVc2R0NgMJAAACBQVjaGFpbgEBVwkBBWFzSW50AQkA/AcEBQl3eEZhY3RvcnkCFXN3YXBDYWxjdWxhdGVSRUFET05MWQkAzAgCAIDC1y8JAMwIAgIFV0FWRVMJAMwIAgUIVVNEVF9QUFQFA25pbAUDbmlsAICjw0cEBGNhcDgJAGQCCQBkAgUNTUFSS0VUX0FNT1VOVAUPUkVTRVJWRURfQU1PVU5UCQDwBwIJARFAZXh0ck5hdGl2ZSgxMDYyKQEJARFAZXh0ck5hdGl2ZSgxMDU4KQEFEXRlYW1XYWxsZXRBZGRyS2V5BQtnb3JjQXNzZXRJZAQKbWFya2V0Q2FwNgkAawMJAGsDBQRjYXA4BQ9nb3JjUHJpY2VXYXZlczgFAk04BQ93YXZlc1ByaWNlVXNkdDYFAk04CQCUCgIFA25pbAkAzAgCCQCsAgICFyVzJWRfX3RlYW1BdmFpbFRvVmVzdF9fCQCkAwEFDXZlc3RpbmdBbW91bnQJAMwIAgkArAICAhYlcyVkX190ZWFtQW1vdW50TGVmdF9fCQCkAwEFDnRlYW1BbW91bnRMZWZ0CQDMCAIJAKwCAgIYJXMlZF9fZ29yY0F2YWlsVG9DbGFpbV9fCQCkAwEFCnVzZXJBbW91bnQJAMwIAgkArAICAhElcyVkX19mb21vRXBvY2hfXwkApAMBBQlmb21vRXBvY2gJAMwIAgkArAICAhYlcyVkX19jdXJyRm9tb1BlcmlvZF9fCQCkAwEFDmN1cnJGb21vUGVyaW9kCQDMCAIJAKwCAgIdJXMlZF9fY3VyckZvbW9KYWNrcG90QW1vdW50X18JAKQDAQUPY3VyckZvbW9KYWNrcG90CQDMCAIJAKwCAgIdJXMlZF9fbmV4dEZvbW9KYWNrcG90QW1vdW50X18JAKQDAQUPbmV4dEZvbW9KYWNrcG90CQDMCAIJAKwCAgIgJXMlZF9fY3VyckxvdHRlcnlKYWNrcG90QW1vdW50X18JAKQDAQUSY3VyckxvdHRlcnlKYWNrcG90CQDMCAIJAKwCAgIgJXMlZF9fbmV4dExvdHRlcnlKYWNrcG90QW1vdW50X18JAKQDAQUSbmV4dExvdHRlcnlKYWNrcG90CQDMCAIJAKwCAgIUJXMlZF9fbGFzdEZvbW9UaW1lX18JAKQDAQUMbGFzdEZvbW9UaW1lCQDMCAIJAKwCAgIWJXMlc19fbGFzdEZvbW9QbGF5ZXJfXwUObGFzdEZvbW9QbGF5ZXIJAMwIAgkArAICAhclcyVkX19hbW91bnRMZWZ0VG90YWxfXwkApAMBBQ9hbW91bnRMZWZ0VG90YWwJAMwIAgkArAICAhMlcyVkX19maW5pc2hCbG9ja19fCQCkAwEFC2ZpbmlzaEJsb2NrCQDMCAIJAKwCAgINJXMlZF9fZ3Vlc3NfXwkApAMBBQVndWVzcwkAzAgCCQCsAgICFiVzJXNfX2xhc3RGb21vV2lubmVyX18FDmxhc3RGb21vV2lubmVyCQDMCAIJAKwCAgIcJXMlZF9fbGFzdEZvbW9XaW5uZXJBbW91bnRfXwkApAMBBRRsYXN0Rm9tb1dpbm5lckFtb3VudAkAzAgCCQCsAgICGiVzJWRfX2xhc3RGb21vV2lubmVyVGltZV9fCQCkAwEFEmxhc3RGb21vV2lubmVyVGltZQkAzAgCCQCsAgICGSVzJXNfX2xhc3RMb3R0ZXJ5V2lubmVyX18FEWxhc3RMb3R0ZXJ5V2lubmVyCQDMCAIJAKwCAgIfJXMlZF9fbGFzdExvdHRlcnlXaW5uZXJBbW91bnRfXwkApAMBBRdsYXN0TG90dGVyeVdpbm5lckFtb3VudAkAzAgCCQCsAgICHSVzJWRfX2xhc3RMb3R0ZXJ5V2lubmVyVGltZV9fCQCkAwEFFWxhc3RMb3R0ZXJ5V2lubmVyVGltZQkAzAgCCQCsAgICEiVzJWRfX2dvcmNJc3N1ZWRfXwkApAMBBQNNMTYJAMwIAgkArAICAhclcyVkX19nb3JjU3Rha2VkVG90YWxfXwkApAMBBQ9nb3JjU3Rha2VkVG90YWwJAMwIAgkArAICAhwlcyVkX19mb21vTnVtVW5pcXVlUGxheWVyc19fCQCkAwEFFGZvbW9OdW1VbmlxdWVQbGF5ZXJzCQDMCAIJAKwCAgIaJXMlZF9fZm9tb1RvdGFsTnVtU3Rha2VzX18JAKQDAQUSZm9tb1RvdGFsTnVtU3Rha2VzCQDMCAIJAKwCAgIdJXMlZF9fZm9tb1RvdGFsU3Rha2VkQW1vdW50X18JAKQDAQUVZm9tb1RvdGFsU3Rha2VkQW1vdW50CQDMCAIJAKwCAgIZJXMlZF9fZm9tb1VzZXJOdW1TdGFrZXNfXwkApAMBBRFmb21vVXNlck51bVN0YWtlcwkAzAgCCQCsAgICHCVzJWRfX2ZvbW9Vc2VyU3Rha2VkQW1vdW50X18JAKQDAQUUZm9tb1VzZXJTdGFrZWRBbW91bnQJAMwIAgkArAICAhclcyVkX19mb21vVXNlck51bVdpbnNfXwkApAMBBQ9mb21vVXNlck51bVdpbnMJAMwIAgkArAICAhklcyVkX19mb21vVXNlcldvbkFtb3VudF9fCQCkAwEFEWZvbW9Vc2VyV29uQW1vdW50CQDMCAIJAKwCAgIeJXMlc19fZm9tb0Zhdm9yaXRlQnlOdW1HYW1lc19fBRZmb21vRmF2b3JpdGVCeU51bUdhbWVzCQDMCAIJAKwCAgIcJXMlc19fZm9tb0Zhdm9yaXRlQnlBbW91bnRfXwUUZm9tb0Zhdm9yaXRlQnlBbW91bnQJAMwIAgkArAICAholcyVkX19mb21vVG90YWxXb25BbW91bnRfXwkApAMBCQELdmFsdWVPckVsc2UCCQCfCAEFFWZvbW9Ub3RhbFdvbkFtb3VudEtleQAACQDMCAIJAKwCAgISJXMlZF9fYmxlc3NQcmljZV9fCQCkAwEFC0JMRVNTX1BSSUNFCQDMCAIJAKwCAgIRJXMlZF9fbWFya2V0Q2FwX18JAKQDAQUKbWFya2V0Q2FwNgkAzAgCCQCsAgICFiVzJWRfX2dvcmNQcmljZVdhdmVzX18JAKQDAQUPZ29yY1ByaWNlV2F2ZXM4BQNuaWwBaQESd2FsbGV0SW5mb1JFQURPTkxZAQ51c2VyQWRkcmVzc09wdAkAlAoCBQNuaWwJAQ53YWxsZXRJbnRlcm5hbAEFDnVzZXJBZGRyZXNzT3B0AOM5HdE=", "height": 3503949, "applicationStatus": "succeeded", "spentComplexity": 0 } View: original | compacted Prev: dVMkCyzvEiRQ6mJupstEwWws5e9SBsENr7j72X9DQB8 Next: none Diff:
OldNewDifferences
526526 else 150000000
527527 let cap8 = ((MARKET_AMOUNT + RESERVED_AMOUNT) + assetBalance(addressFromStringValue(getStringValue(teamWalletAddrKey)), gorcAssetId))
528528 let marketCap6 = fraction(fraction(cap8, gorcPriceWaves8, M8), wavesPriceUsdt6, M8)
529- $Tuple2(nil, [("%s%d__teamAvailToVest__" + toString(vestingAmount)), ("%s%d__teamAmountLeft__" + toString(teamAmountLeft)), ("%s%d__gorcAvailToClaim__" + toString(userAmount)), ("%s%d__fomoEpoch__" + toString(fomoEpoch)), ("%s%d__currFomoPeriod__" + toString(currFomoPeriod)), ("%s%d__currFomoJackpotAmount__" + toString(currFomoJackpot)), ("%s%d__nextFomoJackpotAmount__" + toString(nextFomoJackpot)), ("%s%d__currLotteryJackpotAmount__" + toString(currLotteryJackpot)), ("%s%d__nextLotteryJackpotAmount__" + toString(nextLotteryJackpot)), ("%s%d__lastFomoTime__" + toString(lastFomoTime)), ("%s%s__lastFomoPlayer__" + lastFomoPlayer), ("%s%d__amountLeftTotal__" + toString(amountLeftTotal)), ("%s%d__finishBlock__" + toString(finishBlock)), ("%s%d__guess__" + toString(guess)), ("%s%s__lastFomoWinner__" + lastFomoWinner), ("%s%d__lastFomoWinnerAmount__" + toString(lastFomoWinnerAmount)), ("%s%d__lastFomoWinnerTime__" + toString(lastFomoWinnerTime)), ("%s%s__lastLotteryWinner__" + lastLotteryWinner), ("%s%d__lastLotteryWinnerAmount__" + toString(lastLotteryWinnerAmount)), ("%s%d__lastLotteryWinnerTime__" + toString(lastLotteryWinnerTime)), ("%s%d__gorcIssued__" + toString(M16)), ("%s%d__gorcStakedTotal__" + toString(gorcStakedTotal)), ("%s%d__fomoNumUniquePlayers__" + toString(fomoNumUniquePlayers)), ("%s%d__fomoTotalNumStakes__" + toString(fomoTotalNumStakes)), ("%s%d__fomoTotalStakedAmount__" + toString(fomoTotalStakedAmount)), ("%s%d__fomoUserNumStakes__" + toString(fomoUserNumStakes)), ("%s%d__fomoUserStakedAmount__" + toString(fomoUserStakedAmount)), ("%s%d__fomoUserNumWins__" + toString(fomoUserNumWins)), ("%s%d__fomoUserWonAmount__" + toString(fomoUserWonAmount)), ("%s%s__fomoFavoriteByNumGames__" + fomoFavoriteByNumGames), ("%s%s__fomoFavoriteByAmount__" + fomoFavoriteByAmount), ("%s%d__fomoTotalWonAmount__" + toString(valueOrElse(getInteger(fomoTotalWonAmountKey), 0))), ("%s%d__blessPrice__" + toString(BLESS_PRICE)), ("%s%d__marketCap__" + toString(marketCap6))])
529+ $Tuple2(nil, [("%s%d__teamAvailToVest__" + toString(vestingAmount)), ("%s%d__teamAmountLeft__" + toString(teamAmountLeft)), ("%s%d__gorcAvailToClaim__" + toString(userAmount)), ("%s%d__fomoEpoch__" + toString(fomoEpoch)), ("%s%d__currFomoPeriod__" + toString(currFomoPeriod)), ("%s%d__currFomoJackpotAmount__" + toString(currFomoJackpot)), ("%s%d__nextFomoJackpotAmount__" + toString(nextFomoJackpot)), ("%s%d__currLotteryJackpotAmount__" + toString(currLotteryJackpot)), ("%s%d__nextLotteryJackpotAmount__" + toString(nextLotteryJackpot)), ("%s%d__lastFomoTime__" + toString(lastFomoTime)), ("%s%s__lastFomoPlayer__" + lastFomoPlayer), ("%s%d__amountLeftTotal__" + toString(amountLeftTotal)), ("%s%d__finishBlock__" + toString(finishBlock)), ("%s%d__guess__" + toString(guess)), ("%s%s__lastFomoWinner__" + lastFomoWinner), ("%s%d__lastFomoWinnerAmount__" + toString(lastFomoWinnerAmount)), ("%s%d__lastFomoWinnerTime__" + toString(lastFomoWinnerTime)), ("%s%s__lastLotteryWinner__" + lastLotteryWinner), ("%s%d__lastLotteryWinnerAmount__" + toString(lastLotteryWinnerAmount)), ("%s%d__lastLotteryWinnerTime__" + toString(lastLotteryWinnerTime)), ("%s%d__gorcIssued__" + toString(M16)), ("%s%d__gorcStakedTotal__" + toString(gorcStakedTotal)), ("%s%d__fomoNumUniquePlayers__" + toString(fomoNumUniquePlayers)), ("%s%d__fomoTotalNumStakes__" + toString(fomoTotalNumStakes)), ("%s%d__fomoTotalStakedAmount__" + toString(fomoTotalStakedAmount)), ("%s%d__fomoUserNumStakes__" + toString(fomoUserNumStakes)), ("%s%d__fomoUserStakedAmount__" + toString(fomoUserStakedAmount)), ("%s%d__fomoUserNumWins__" + toString(fomoUserNumWins)), ("%s%d__fomoUserWonAmount__" + toString(fomoUserWonAmount)), ("%s%s__fomoFavoriteByNumGames__" + fomoFavoriteByNumGames), ("%s%s__fomoFavoriteByAmount__" + fomoFavoriteByAmount), ("%s%d__fomoTotalWonAmount__" + toString(valueOrElse(getInteger(fomoTotalWonAmountKey), 0))), ("%s%d__blessPrice__" + toString(BLESS_PRICE)), ("%s%d__marketCap__" + toString(marketCap6)), ("%s%d__gorcPriceWaves__" + toString(gorcPriceWaves8))])
530530 }
531531
532532
Full:
OldNewDifferences
11 {-# STDLIB_VERSION 6 #-}
22 {-# SCRIPT_TYPE ACCOUNT #-}
33 {-# CONTENT_TYPE DAPP #-}
44 let M16 = 10000000000000000
55
66 let M8 = 100000000
77
88 let STAKERS_AMOUNT = 2500000000000000
99
1010 let TEAM_AMOUNT = 1000000000000000
1111
1212 let MARKET_AMOUNT = 6000000000000000
1313
1414 let RESERVED_AMOUNT = 500000000000000
1515
1616 let YEAR_BLOCKS = (365 * 1440)
1717
1818 let TEAM_VESTING_PERIOD = YEAR_BLOCKS
1919
2020 let STAKE_PERIOD = (5 * YEAR_BLOCKS)
2121
2222 let BLESS_PRICE = 5000000000
2323
2424 let LOTTERY_PRICE = 100000000000
2525
2626 let DEFAULT_FOMO_PERIOD = 60
2727
2828 let MIN_FOMO_PERIOD = 2
2929
3030 let RANDOM_DELAY = 2
3131
3232 let CURRENT_JACKPOT_PERC = 50
3333
3434 let NEXT_JACKPOT_PERC = 20
3535
3636 let TEAM_PERC = 10
3737
3838 let chain = take(drop(this.bytes, 1), 1)
3939
4040 let wxFactory = match chain {
4141 case _ =>
4242 if ((base58'2W' == $match0))
4343 then addressFromStringValue("3P68zNiufsu1viZpu1aY3cdahRRKcvV5N93")
4444 else if ((base58'2T' == $match0))
4545 then addressFromStringValue("3N6LHjfGb6Fgcy7YsVcNxGyPTj49XbQAijq")
4646 else throw("Unknown chain")
4747 }
4848
4949 let USDT_PPT = "G5WWWzzVsWRyzGf32xojbnfp7gXbWrgqJT8RcVWEfLmC"
5050
5151 let gorcAssetIdKey = "gorcAssetId"
5252
5353 let gorcAssetId = valueOrErrorMessage(getBinary(gorcAssetIdKey), "GORC is not issued yet")
5454
5555 let issueTimeKey = "issueTime"
5656
5757 let teamAmountLeftKey = "teamAmountLeft"
5858
5959 let lastTeamVestingTimeKey = "lastTeamVestingTime"
6060
6161 let stakersAmountTotalKey = "stakersAmountTotal"
6262
6363 let stakersAmountLeftKey = "stakersAmountLeft"
6464
6565 let stakedAmountTotalKey = "stakedTotal"
6666
6767 func stakedAmountByUserKey (addr) = ("stakedAmount_" + addr)
6868
6969
7070 func lastClaimTimeByUserKey (addr) = ("lastClaimTime_" + addr)
7171
7272
7373 let fomoEpochKey = "fomoEpoch"
7474
7575 let currFomoPeriodKey = "currFomoPeriod"
7676
7777 let lastFomoTimeKey = "lastFomoTime"
7878
7979 let currFomoJackpotKey = "currFomoJackpot"
8080
8181 let nextFomoJackpotKey = "nextFomoJackpot"
8282
8383 let lastFomoPlayerKey = "lastFomoPlayer"
8484
8585 let lastFomoWinnerKey = "lastFomoWinner"
8686
8787 let lastFomoWinnerAmountKey = "lastFomoWinnerAmount"
8888
8989 let lastFomoWinnerTimeKey = "lastFomoWinnerTime"
9090
9191 let teamWalletAddrKey = "teamWalletAddr"
9292
9393 let brokerAddrKey = "brokerAddr"
9494
9595 let reserveAddrKey = "reserveAddr"
9696
9797 func keyCommit (address) = ("finishBlockFor_" + address)
9898
9999
100100 func keyGuess (address) = ("guessFor_" + address)
101101
102102
103103 func keySalt (address) = ("saltFor_" + address)
104104
105105
106106 let currLotteryJackpotKey = "currLotteryJackpot"
107107
108108 let nextLotteryJackpotKey = "nextLotteryJackpot"
109109
110110 let lastLotteryWinnerKey = "lastLotteryWinner"
111111
112112 let lastLotteryWinnerAmountKey = "lastLotteryWinnerAmount"
113113
114114 let lastLotteryWinnerTimeKey = "lastLotteryWinnerTime"
115115
116116 let fomoNumUniquePlayersKey = "fomoNumUniquePlayers"
117117
118118 let fomoTotalNumStakesKey = "fomoTotalNumStakes"
119119
120120 let fomoTotalStakedAmountKey = "fomoTotalStakedAmount"
121121
122122 let fomoTotalWonAmountKey = "fomoTotalWonAmount"
123123
124124 func fomoUserNumStakesKey (address) = ("fomoUserNumStakes_" + address)
125125
126126
127127 func fomoUserStakedAmountKey (address) = ("fomoUserStakedAmount_" + address)
128128
129129
130130 func fomoUserNumWinsKey (address) = ("fomoUserNumWins_" + address)
131131
132132
133133 func fomoUserWonAmountKey (address) = ("fomoUserWonAmount_" + address)
134134
135135
136136 let fomoFavoriteByNumGamesKey = "fomoFavoriteByNumGames"
137137
138138 let fomoFavoriteByAmountKey = "fomoFavoriteByAmount"
139139
140140 func asInt (v) = match v {
141141 case n: Int =>
142142 n
143143 case _ =>
144144 throw("fail to cast into Int")
145145 }
146146
147147
148148 func gorcStats (userAddrOpt) = {
149149 let issueTime = valueOrErrorMessage(getInteger(issueTimeKey), "GORC is not issued yet")
150150 let nowLimitedVesting = min([height, (issueTime + TEAM_VESTING_PERIOD)])
151151 let lastTeamVestingTime = valueOrErrorMessage(getInteger(lastTeamVestingTimeKey), "Constructor is not called yet")
152152 let vestingAmount = fraction(TEAM_AMOUNT, (nowLimitedVesting - lastTeamVestingTime), TEAM_VESTING_PERIOD)
153153 let teamAmountLeft = (valueOrElse(getInteger(teamAmountLeftKey), 0) - vestingAmount)
154154 let amountLeftTotal = valueOrElse(getInteger(stakersAmountLeftKey), 0)
155155 let lastUserTime = valueOrElse(getInteger(lastClaimTimeByUserKey(userAddrOpt)), -1)
156156 if ((0 > lastUserTime))
157157 then $Tuple4(0, amountLeftTotal, vestingAmount, teamAmountLeft)
158158 else {
159159 let nowLimitedStaking = min([height, (issueTime + STAKE_PERIOD)])
160160 let userShares = valueOrElse(getInteger(stakedAmountByUserKey(userAddrOpt)), 0)
161161 let totalShares = valueOrElse(getInteger(stakedAmountTotalKey), 0)
162162 let stakersAmountTotal = valueOrElse(getInteger(stakersAmountTotalKey), STAKERS_AMOUNT)
163163 let userTemporal = fraction(stakersAmountTotal, (nowLimitedStaking - lastUserTime), STAKE_PERIOD)
164164 let userAmount = if ((totalShares != 0))
165165 then fraction(userTemporal, userShares, totalShares)
166166 else 0
167167 $Tuple4(userAmount, (amountLeftTotal - userAmount), vestingAmount, teamAmountLeft)
168168 }
169169 }
170170
171171
172172 func fixedPoint (val,decimals) = {
173173 let tenPow = pow(10, 0, decimals, 0, 0, DOWN)
174174 let lowPart = toString((val % tenPow))
175175 let zeroes = drop(toString(tenPow), (1 + size(lowPart)))
176176 (((toString((val / tenPow)) + ".") + zeroes) + lowPart)
177177 }
178178
179179
180180 func getNewLeaders (oldLeadersStr,newAddr,newAmount) = {
181181 let newCandidate = ((newAddr + "_") + toString(newAmount))
182182 if ((oldLeadersStr == ""))
183183 then [newCandidate]
184184 else {
185185 func sortByAmount (acc,el) = {
186186 let addr_amount = split(el, "_")
187187 let addr = addr_amount[0]
188188 let amount = parseIntValue(addr_amount[1])
189189 if (acc._2)
190190 then if ((addr == newAddr))
191191 then acc
192192 else $Tuple2((acc._1 :+ el), true)
193193 else if ((addr == newAddr))
194194 then $Tuple2((acc._1 :+ newCandidate), true)
195195 else if ((amount > newAmount))
196196 then $Tuple2((acc._1 :+ el), false)
197197 else $Tuple2(((acc._1 :+ newCandidate) :+ el), true)
198198 }
199199
200200 let result = {
201201 let $l = split(oldLeadersStr, ":")
202202 let $s = size($l)
203203 let $acc0 = $Tuple2(nil, false)
204204 func $f0_1 ($a,$i) = if (($i >= $s))
205205 then $a
206206 else sortByAmount($a, $l[$i])
207207
208208 func $f0_2 ($a,$i) = if (($i >= $s))
209209 then $a
210210 else throw("List size exceeds 3")
211211
212212 $f0_2($f0_1($f0_1($f0_1($acc0, 0), 1), 2), 3)
213213 }
214214 let arr = result._1
215215 if (result._2)
216216 then if ((size(arr) > 3))
217217 then [arr[0], arr[1], arr[2]]
218218 else arr
219219 else if ((size(arr) >= 3))
220220 then arr
221221 else (arr :+ newCandidate)
222222 }
223223 }
224224
225225
226226 func fomoInternal (i) = if ((size(i.payments) != 1))
227227 then throw("exactly 1 payment must be attached")
228228 else {
229229 let pmt = i.payments[0]
230230 let amt = pmt.amount
231231 if (if (!(isDefined(pmt.assetId)))
232232 then true
233233 else (value(pmt.assetId) != gorcAssetId))
234234 then throw("GORC payments only!")
235235 else {
236236 let change = (amt - BLESS_PRICE)
237237 if ((0 > change))
238238 then throw(((("You need to sacrifice " + fixedPoint(BLESS_PRICE, 8)) + " GORC, but I see only ") + fixedPoint(amt, 8)))
239239 else {
240240 let changeActions = if ((change > 0))
241241 then [ScriptTransfer(i.caller, change, gorcAssetId)]
242242 else nil
243243 let lastFomoTime = valueOrElse(getInteger(lastFomoTimeKey), 0)
244244 let lastFomoPlayer = valueOrElse(getString(lastFomoPlayerKey), "")
245245 let lastFomoNumWinsKey = fomoUserNumWinsKey(lastFomoPlayer)
246246 let lastFomoWonAmountKey = fomoUserWonAmountKey(lastFomoPlayer)
247247 let lastFomoNumWins = valueOrElse(getInteger(lastFomoNumWinsKey), 0)
248248 let lastFomoWonAmount = valueOrElse(getInteger(lastFomoWonAmountKey), 0)
249249 let deltaCurrJackpot = fraction(BLESS_PRICE, CURRENT_JACKPOT_PERC, 100)
250250 let deltaNextJackpot = fraction(BLESS_PRICE, NEXT_JACKPOT_PERC, 100)
251251 let deltaTeamAmount = fraction(BLESS_PRICE, TEAM_PERC, 100)
252252 let deltaStakersAmount = (((BLESS_PRICE - deltaCurrJackpot) - deltaNextJackpot) - deltaTeamAmount)
253253 let fomoEpoch = valueOrElse(getInteger(fomoEpochKey), 0)
254254 let currFomoPeriod = valueOrElse(getInteger(currFomoPeriodKey), DEFAULT_FOMO_PERIOD)
255255 let nextFomoPeriod = max([MIN_FOMO_PERIOD, (currFomoPeriod - 1)])
256256 let fomoCurrJackpot = valueOrElse(getInteger(currFomoJackpotKey), 0)
257257 let fomoNextJackpot = valueOrElse(getInteger(nextFomoJackpotKey), 0)
258258 let oldLeadersByNum = valueOrElse(getString(fomoFavoriteByNumGamesKey), "")
259259 let oldLeadersByAmount = valueOrElse(getString(fomoFavoriteByAmountKey), "")
260260 let fomoActions = if (if (if ((height > (lastFomoTime + currFomoPeriod)))
261261 then (fomoCurrJackpot > 0)
262262 else false)
263263 then (lastFomoPlayer != "")
264264 else false)
265265 then [ScriptTransfer(addressFromStringValue(lastFomoPlayer), fomoCurrJackpot, gorcAssetId), StringEntry(lastFomoWinnerKey, lastFomoPlayer), IntegerEntry(lastFomoWinnerAmountKey, fomoCurrJackpot), IntegerEntry(lastFomoWinnerTimeKey, lastBlock.timestamp), IntegerEntry(currFomoJackpotKey, (fomoNextJackpot + deltaCurrJackpot)), IntegerEntry(nextFomoJackpotKey, deltaNextJackpot), IntegerEntry(fomoEpochKey, (fomoEpoch + 1)), IntegerEntry(currFomoPeriodKey, DEFAULT_FOMO_PERIOD), StringEntry(fomoFavoriteByNumGamesKey, makeString(getNewLeaders(oldLeadersByNum, lastFomoPlayer, (lastFomoNumWins + 1)), ":")), StringEntry(fomoFavoriteByAmountKey, makeString(getNewLeaders(oldLeadersByAmount, lastFomoPlayer, (lastFomoWonAmount + fomoCurrJackpot)), ":")), IntegerEntry(lastFomoNumWinsKey, (lastFomoNumWins + 1)), IntegerEntry(lastFomoWonAmountKey, (lastFomoWonAmount + fomoCurrJackpot)), IntegerEntry(fomoTotalWonAmountKey, (valueOrElse(getInteger(fomoTotalWonAmountKey), 0) + fomoCurrJackpot))]
266266 else [IntegerEntry(currFomoJackpotKey, (fomoCurrJackpot + deltaCurrJackpot)), IntegerEntry(nextFomoJackpotKey, (fomoNextJackpot + deltaNextJackpot)), IntegerEntry(currFomoPeriodKey, nextFomoPeriod)]
267267 let addr = toString(i.caller)
268268 let fomoNumUniquePlayers = valueOrElse(getInteger(fomoNumUniquePlayersKey), 0)
269269 let userNumStakesKey = fomoUserNumStakesKey(addr)
270270 let userStakedAmountKey = fomoUserStakedAmountKey(addr)
271271 let userNumStakes = getInteger(userNumStakesKey)
272272 let statsActions = ((if (isDefined(userNumStakes))
273273 then [IntegerEntry(userNumStakesKey, (value(userNumStakes) + 1)), IntegerEntry(userStakedAmountKey, (valueOrElse(getInteger(userStakedAmountKey), 0) + BLESS_PRICE))]
274274 else [IntegerEntry(fomoNumUniquePlayersKey, (fomoNumUniquePlayers + 1)), IntegerEntry(userNumStakesKey, 1), IntegerEntry(userStakedAmountKey, BLESS_PRICE)]) ++ [IntegerEntry(fomoTotalNumStakesKey, (valueOrElse(getInteger(fomoTotalNumStakesKey), 0) + 1)), IntegerEntry(fomoTotalStakedAmountKey, (valueOrElse(getInteger(fomoTotalStakedAmountKey), 0) + BLESS_PRICE))])
275275 ((([IntegerEntry(lastFomoTimeKey, height), StringEntry(lastFomoPlayerKey, toString(i.caller)), ScriptTransfer(addressFromStringValue(getStringValue(teamWalletAddrKey)), deltaTeamAmount, gorcAssetId), IntegerEntry(stakersAmountLeftKey, (getIntegerValue(stakersAmountLeftKey) + deltaStakersAmount)), IntegerEntry(stakersAmountTotalKey, (getIntegerValue(stakersAmountTotalKey) + deltaStakersAmount))] ++ changeActions) ++ fomoActions) ++ statsActions)
276276 }
277277 }
278278 }
279279
280280
281281 func getRandomNumber (maxValue,salt,entropy) = if ((0 >= maxValue))
282282 then throw("maxValue should be > 0")
283283 else {
284284 let randomHash = sha256_16Kb((salt + entropy))
285285 (toInt(randomHash) % maxValue)
286286 }
287287
288288
289289 func walletInternal (userAddressOpt) = {
290290 let addr = addressFromString(userAddressOpt)
291291 let balance = if (isDefined(addr))
292292 then wavesBalance(value(addr))
293293 else BalanceDetails(0, 0, 0, 0)
294294 let gorcBalance = if (isDefined(addr))
295295 then assetBalance(value(addr), gorcAssetId)
296296 else 0
297297 let stakedGorc = valueOrElse(getInteger(stakedAmountByUserKey(userAddressOpt)), 0)
298298 [("%s%d__wavesBalance__" + toString(balance.available)), ("%s%d__gorcBalance__" + toString(gorcBalance)), ("%s%d__stakedGorc__" + toString(stakedGorc))]
299299 }
300300
301301
302302 @Callable(i)
303303 func testArgs (intVal,strVal,boolVal,binVal,arrInt,arrStr,arrBool,arrBin) = nil
304304
305305
306306
307307 @Callable(i)
308308 func constructorV1 (teamWalletAddr,brokerAddr,reserveAddr) = if ((i.caller != this))
309309 then throw("Permission denied")
310310 else {
311311 let issuedAmount = M16
312312 let issue = Issue("GORC", "Meme coin by God of Random Chance. Visit https://gorc.meme, sacrifice to the God of Random and you will receive an answer to any question or a blessing. Lucky one gets a Gift of God", issuedAmount, 8, false, unit, 0)
313313 let assetId = calculateAssetId(issue)
314314 [issue, BinaryEntry(gorcAssetIdKey, assetId), IntegerEntry(issueTimeKey, height), IntegerEntry(stakersAmountLeftKey, STAKERS_AMOUNT), IntegerEntry(stakersAmountTotalKey, STAKERS_AMOUNT), IntegerEntry(teamAmountLeftKey, TEAM_AMOUNT), IntegerEntry(lastTeamVestingTimeKey, height), StringEntry(teamWalletAddrKey, teamWalletAddr), StringEntry(brokerAddrKey, brokerAddr), StringEntry(reserveAddrKey, reserveAddr), ScriptTransfer(addressFromStringValue(reserveAddr), RESERVED_AMOUNT, assetId), ScriptTransfer(addressFromStringValue(brokerAddr), MARKET_AMOUNT, assetId), IntegerEntry(fomoEpochKey, 0), IntegerEntry(currFomoPeriodKey, DEFAULT_FOMO_PERIOD)]
315315 }
316316
317317
318318
319319 @Callable(i)
320320 func stakeGorc () = if ((i.caller != this))
321321 then throw("Permission denied")
322322 else if ((size(i.payments) != 1))
323323 then throw("exactly 1 payment must be attached")
324324 else {
325325 let pmt = i.payments[0]
326326 let amt = pmt.amount
327327 if (if (!(isDefined(pmt.assetId)))
328328 then true
329329 else (value(pmt.assetId) != gorcAssetId))
330330 then throw("GORC payments only!")
331331 else {
332332 let addr = toString(i.caller)
333333 let $t01466514747 = gorcStats(addr)
334334 let userAmount = $t01466514747._1
335335 let amountLeftTotal = $t01466514747._2
336336 let vestingAmount = $t01466514747._3
337337 let teamAmountLeft = $t01466514747._4
338338 let userAmountKey = stakedAmountByUserKey(addr)
339339 let claimActions = if ((userAmount > 0))
340340 then [ScriptTransfer(i.caller, userAmount, gorcAssetId)]
341341 else nil
342342 let vestingActions = if ((vestingAmount > 0))
343343 then [ScriptTransfer(addressFromStringValue(getStringValue(teamWalletAddrKey)), vestingAmount, gorcAssetId), IntegerEntry(teamAmountLeftKey, teamAmountLeft), IntegerEntry(lastTeamVestingTimeKey, height)]
344344 else nil
345345 $Tuple2(((claimActions ++ vestingActions) ++ [IntegerEntry(stakedAmountTotalKey, (valueOrElse(getInteger(stakedAmountTotalKey), 0) + amt)), IntegerEntry(userAmountKey, (valueOrElse(getInteger(userAmountKey), 0) + amt)), IntegerEntry(lastClaimTimeByUserKey(addr), height), IntegerEntry(stakersAmountLeftKey, amountLeftTotal)]), userAmount)
346346 }
347347 }
348348
349349
350350
351351 @Callable(i)
352352 func unstakeGorc (amount) = if ((i.caller != this))
353353 then throw("Permission denied")
354354 else if ((0 >= amount))
355355 then throw("Amount should be positive")
356356 else {
357357 let addr = toString(i.caller)
358358 if ((size(i.payments) != 0))
359359 then throw("No payments required")
360360 else {
361361 let userAmountKey = stakedAmountByUserKey(addr)
362362 let oldAmount = valueOrElse(getInteger(userAmountKey), 0)
363363 if ((0 > (oldAmount - amount)))
364364 then throw(((("You have only " + fixedPoint(oldAmount, 8)) + " GORC staked, tried to unstake ") + fixedPoint(amount, 8)))
365365 else {
366366 let $t01606316145 = gorcStats(addr)
367367 let userAmount = $t01606316145._1
368368 let amountLeftTotal = $t01606316145._2
369369 let vestingAmount = $t01606316145._3
370370 let teamAmountLeft = $t01606316145._4
371371 let claimActions = if ((userAmount > 0))
372372 then [ScriptTransfer(i.caller, userAmount, gorcAssetId)]
373373 else nil
374374 let vestingActions = if ((vestingAmount > 0))
375375 then [ScriptTransfer(addressFromStringValue(getStringValue(teamWalletAddrKey)), vestingAmount, gorcAssetId), IntegerEntry(teamAmountLeftKey, teamAmountLeft), IntegerEntry(lastTeamVestingTimeKey, height)]
376376 else nil
377377 $Tuple2(((claimActions ++ vestingActions) ++ [IntegerEntry(stakedAmountTotalKey, (valueOrErrorMessage(getInteger(stakedAmountTotalKey), "No GORC staked") - amount)), IntegerEntry(userAmountKey, (oldAmount - amount)), IntegerEntry(lastClaimTimeByUserKey(addr), height), IntegerEntry(stakersAmountLeftKey, amountLeftTotal)]), 0)
378378 }
379379 }
380380 }
381381
382382
383383
384384 @Callable(i)
385385 func claimGorc () = if ((i.caller != this))
386386 then throw("Permission denied")
387387 else if ((size(i.payments) != 0))
388388 then throw("No payments required")
389389 else {
390390 let addr = toString(i.caller)
391391 let $t01706417146 = gorcStats(addr)
392392 let userAmount = $t01706417146._1
393393 let amountLeftTotal = $t01706417146._2
394394 let vestingAmount = $t01706417146._3
395395 let teamAmountLeft = $t01706417146._4
396396 let claimActions = if ((userAmount > 0))
397397 then [ScriptTransfer(i.caller, userAmount, gorcAssetId)]
398398 else nil
399399 let vestingActions = if ((vestingAmount > 0))
400400 then [ScriptTransfer(addressFromStringValue(getStringValue(teamWalletAddrKey)), vestingAmount, gorcAssetId), IntegerEntry(teamAmountLeftKey, teamAmountLeft), IntegerEntry(lastTeamVestingTimeKey, height)]
401401 else nil
402402 $Tuple2(((claimActions ++ vestingActions) ++ [IntegerEntry(lastClaimTimeByUserKey(addr), height), IntegerEntry(stakersAmountLeftKey, amountLeftTotal)]), userAmount)
403403 }
404404
405405
406406
407407 @Callable(i)
408408 func answerMe () = $Tuple2(fomoInternal(i), toInt(i.transactionId))
409409
410410
411411
412412 @Callable(i)
413413 func blessMe () = $Tuple2(fomoInternal(i), 42)
414414
415415
416416
417417 @Callable(i)
418418 func commitGuess (guess) = if ((i.caller != this))
419419 then throw("Permission denied")
420420 else {
421421 let addr = toString(i.caller)
422422 let finishKey = keyCommit(addr)
423423 let guessKey = keyGuess(addr)
424424 if (isDefined(getInteger(finishKey)))
425425 then throw("You already made a bet, please use it")
426426 else if (if ((0 > guess))
427427 then true
428428 else (guess > 11))
429429 then throw("The number should be between 0 and 11")
430430 else if ((size(i.payments) != 1))
431431 then throw("exactly 1 payment must be attached")
432432 else {
433433 let pmt = i.payments[0]
434434 let amt = pmt.amount
435435 if (if (!(isDefined(pmt.assetId)))
436436 then true
437437 else (value(pmt.assetId) != gorcAssetId))
438438 then throw("GORC payments only!")
439439 else {
440440 let change = (amt - LOTTERY_PRICE)
441441 if ((0 > change))
442442 then throw(((("You need to sacrifice " + fixedPoint(LOTTERY_PRICE, 8)) + " GORC, but I see only ") + fixedPoint(amt, 8)))
443443 else {
444444 let changeActions = if ((change > 0))
445445 then [ScriptTransfer(i.caller, change, gorcAssetId)]
446446 else nil
447447 let finishBlock = (height + RANDOM_DELAY)
448448 let deltaCurrJackpot = fraction(LOTTERY_PRICE, CURRENT_JACKPOT_PERC, 100)
449449 let deltaNextJackpot = fraction(LOTTERY_PRICE, NEXT_JACKPOT_PERC, 100)
450450 let deltaTeamAmount = fraction(LOTTERY_PRICE, TEAM_PERC, 100)
451451 let deltaStakersAmount = (((LOTTERY_PRICE - deltaCurrJackpot) - deltaNextJackpot) - deltaTeamAmount)
452452 $Tuple2(([IntegerEntry(finishKey, finishBlock), IntegerEntry(guessKey, guess), IntegerEntry(currLotteryJackpotKey, (valueOrElse(getInteger(currLotteryJackpotKey), 0) + deltaCurrJackpot)), IntegerEntry(nextLotteryJackpotKey, (valueOrElse(getInteger(nextLotteryJackpotKey), 0) + deltaNextJackpot)), ScriptTransfer(addressFromStringValue(getStringValue(teamWalletAddrKey)), deltaTeamAmount, gorcAssetId), IntegerEntry(stakersAmountLeftKey, (getIntegerValue(stakersAmountLeftKey) + deltaStakersAmount)), IntegerEntry(stakersAmountTotalKey, (getIntegerValue(stakersAmountTotalKey) + deltaStakersAmount)), StringEntry(keySalt(addr), toBase58String(i.transactionId))] ++ changeActions), finishBlock)
453453 }
454454 }
455455 }
456456 }
457457
458458
459459
460460 @Callable(i)
461461 func guessLottery () = if ((i.caller != this))
462462 then throw("Permission denied")
463463 else {
464464 let addr = toString(i.caller)
465465 let finishKey = keyCommit(addr)
466466 let guessKey = keyGuess(addr)
467467 let guess = valueOrErrorMessage(getInteger(guessKey), "You have not made a bet")
468468 let finishBlock = valueOrErrorMessage(getInteger(finishKey), "You have not made a bet")
469469 if ((finishBlock > height))
470470 then throw(("Random number is not ready yet, wait until height = " + toString(finishBlock)))
471471 else {
472472 let entropy = value(value(blockInfoByHeight(finishBlock)).vrf)
473473 let saltKey = keySalt(addr)
474474 let salt = fromBase58String(valueOrElse(getString(saltKey), "DEFAULT"))
475475 let rand = getRandomNumber(12, salt, entropy)
476476 let currJackpot = valueOrElse(getInteger(currLotteryJackpotKey), 0)
477477 let winActions = if ((rand == guess))
478478 then [ScriptTransfer(i.caller, currJackpot, gorcAssetId), StringEntry(lastLotteryWinnerKey, addr), IntegerEntry(lastLotteryWinnerAmountKey, currJackpot), IntegerEntry(lastLotteryWinnerTimeKey, lastBlock.timestamp), IntegerEntry(currLotteryJackpotKey, valueOrElse(getInteger(nextLotteryJackpotKey), 0)), IntegerEntry(nextLotteryJackpotKey, 0)]
479479 else nil
480480 $Tuple2(([DeleteEntry(finishKey), DeleteEntry(guessKey), DeleteEntry(saltKey)] ++ winActions), rand)
481481 }
482482 }
483483
484484
485485
486486 @Callable(i)
487487 func statsREADONLY (userAddrOpt) = {
488488 let $t02191122000 = gorcStats(userAddrOpt)
489489 let userAmount = $t02191122000._1
490490 let amountLeftTotal = $t02191122000._2
491491 let vestingAmount = $t02191122000._3
492492 let teamAmountLeft = $t02191122000._4
493493 let currFomoJackpot = valueOrElse(getInteger(currFomoJackpotKey), 0)
494494 let nextFomoJackpot = valueOrElse(getInteger(nextFomoJackpotKey), 0)
495495 let lastFomoTime = valueOrElse(getInteger(lastFomoTimeKey), 0)
496496 let lastFomoPlayer = valueOrElse(getString(lastFomoPlayerKey), "")
497497 let fomoEpoch = valueOrElse(getInteger(fomoEpochKey), 0)
498498 let currFomoPeriod = valueOrElse(getInteger(currFomoPeriodKey), DEFAULT_FOMO_PERIOD)
499499 let currLotteryJackpot = valueOrElse(getInteger(currLotteryJackpotKey), 0)
500500 let nextLotteryJackpot = valueOrElse(getInteger(nextLotteryJackpotKey), 0)
501501 let finishKey = keyCommit(userAddrOpt)
502502 let guessKey = keyGuess(userAddrOpt)
503503 let guess = valueOrElse(getInteger(guessKey), -1)
504504 let finishBlock = valueOrElse(getInteger(finishKey), -1)
505505 let lastFomoWinner = valueOrElse(getString(lastFomoWinnerKey), "")
506506 let lastFomoWinnerAmount = valueOrElse(getInteger(lastFomoWinnerAmountKey), 0)
507507 let lastFomoWinnerTime = valueOrElse(getInteger(lastFomoWinnerTimeKey), 0)
508508 let lastLotteryWinner = valueOrElse(getString(lastLotteryWinnerKey), "")
509509 let lastLotteryWinnerAmount = valueOrElse(getInteger(lastLotteryWinnerAmountKey), 0)
510510 let lastLotteryWinnerTime = valueOrElse(getInteger(lastLotteryWinnerTimeKey), 0)
511511 let gorcStakedTotal = valueOrElse(getInteger(stakedAmountTotalKey), 0)
512512 let fomoNumUniquePlayers = valueOrElse(getInteger(fomoNumUniquePlayersKey), 0)
513513 let fomoTotalNumStakes = valueOrElse(getInteger(fomoTotalNumStakesKey), 0)
514514 let fomoTotalStakedAmount = valueOrElse(getInteger(fomoTotalStakedAmountKey), 0)
515515 let fomoUserNumStakes = valueOrElse(getInteger(fomoUserNumStakesKey(userAddrOpt)), 0)
516516 let fomoUserStakedAmount = valueOrElse(getInteger(fomoUserStakedAmountKey(userAddrOpt)), 0)
517517 let fomoUserNumWins = valueOrElse(getInteger(fomoUserNumWinsKey(userAddrOpt)), 0)
518518 let fomoUserWonAmount = valueOrElse(getInteger(fomoUserWonAmountKey(userAddrOpt)), 0)
519519 let fomoFavoriteByNumGames = valueOrElse(getString(fomoFavoriteByNumGamesKey), "")
520520 let fomoFavoriteByAmount = valueOrElse(getString(fomoFavoriteByAmountKey), "")
521521 let gorcPriceWaves8 = if ((chain == base58'2W'))
522522 then asInt(invoke(wxFactory, "swapCalculateREADONLY", [100000000, toBase58String(gorcAssetId), "WAVES"], nil))
523523 else 20000
524524 let wavesPriceUsdt6 = if ((chain == base58'2W'))
525525 then asInt(invoke(wxFactory, "swapCalculateREADONLY", [100000000, "WAVES", USDT_PPT], nil))
526526 else 150000000
527527 let cap8 = ((MARKET_AMOUNT + RESERVED_AMOUNT) + assetBalance(addressFromStringValue(getStringValue(teamWalletAddrKey)), gorcAssetId))
528528 let marketCap6 = fraction(fraction(cap8, gorcPriceWaves8, M8), wavesPriceUsdt6, M8)
529- $Tuple2(nil, [("%s%d__teamAvailToVest__" + toString(vestingAmount)), ("%s%d__teamAmountLeft__" + toString(teamAmountLeft)), ("%s%d__gorcAvailToClaim__" + toString(userAmount)), ("%s%d__fomoEpoch__" + toString(fomoEpoch)), ("%s%d__currFomoPeriod__" + toString(currFomoPeriod)), ("%s%d__currFomoJackpotAmount__" + toString(currFomoJackpot)), ("%s%d__nextFomoJackpotAmount__" + toString(nextFomoJackpot)), ("%s%d__currLotteryJackpotAmount__" + toString(currLotteryJackpot)), ("%s%d__nextLotteryJackpotAmount__" + toString(nextLotteryJackpot)), ("%s%d__lastFomoTime__" + toString(lastFomoTime)), ("%s%s__lastFomoPlayer__" + lastFomoPlayer), ("%s%d__amountLeftTotal__" + toString(amountLeftTotal)), ("%s%d__finishBlock__" + toString(finishBlock)), ("%s%d__guess__" + toString(guess)), ("%s%s__lastFomoWinner__" + lastFomoWinner), ("%s%d__lastFomoWinnerAmount__" + toString(lastFomoWinnerAmount)), ("%s%d__lastFomoWinnerTime__" + toString(lastFomoWinnerTime)), ("%s%s__lastLotteryWinner__" + lastLotteryWinner), ("%s%d__lastLotteryWinnerAmount__" + toString(lastLotteryWinnerAmount)), ("%s%d__lastLotteryWinnerTime__" + toString(lastLotteryWinnerTime)), ("%s%d__gorcIssued__" + toString(M16)), ("%s%d__gorcStakedTotal__" + toString(gorcStakedTotal)), ("%s%d__fomoNumUniquePlayers__" + toString(fomoNumUniquePlayers)), ("%s%d__fomoTotalNumStakes__" + toString(fomoTotalNumStakes)), ("%s%d__fomoTotalStakedAmount__" + toString(fomoTotalStakedAmount)), ("%s%d__fomoUserNumStakes__" + toString(fomoUserNumStakes)), ("%s%d__fomoUserStakedAmount__" + toString(fomoUserStakedAmount)), ("%s%d__fomoUserNumWins__" + toString(fomoUserNumWins)), ("%s%d__fomoUserWonAmount__" + toString(fomoUserWonAmount)), ("%s%s__fomoFavoriteByNumGames__" + fomoFavoriteByNumGames), ("%s%s__fomoFavoriteByAmount__" + fomoFavoriteByAmount), ("%s%d__fomoTotalWonAmount__" + toString(valueOrElse(getInteger(fomoTotalWonAmountKey), 0))), ("%s%d__blessPrice__" + toString(BLESS_PRICE)), ("%s%d__marketCap__" + toString(marketCap6))])
529+ $Tuple2(nil, [("%s%d__teamAvailToVest__" + toString(vestingAmount)), ("%s%d__teamAmountLeft__" + toString(teamAmountLeft)), ("%s%d__gorcAvailToClaim__" + toString(userAmount)), ("%s%d__fomoEpoch__" + toString(fomoEpoch)), ("%s%d__currFomoPeriod__" + toString(currFomoPeriod)), ("%s%d__currFomoJackpotAmount__" + toString(currFomoJackpot)), ("%s%d__nextFomoJackpotAmount__" + toString(nextFomoJackpot)), ("%s%d__currLotteryJackpotAmount__" + toString(currLotteryJackpot)), ("%s%d__nextLotteryJackpotAmount__" + toString(nextLotteryJackpot)), ("%s%d__lastFomoTime__" + toString(lastFomoTime)), ("%s%s__lastFomoPlayer__" + lastFomoPlayer), ("%s%d__amountLeftTotal__" + toString(amountLeftTotal)), ("%s%d__finishBlock__" + toString(finishBlock)), ("%s%d__guess__" + toString(guess)), ("%s%s__lastFomoWinner__" + lastFomoWinner), ("%s%d__lastFomoWinnerAmount__" + toString(lastFomoWinnerAmount)), ("%s%d__lastFomoWinnerTime__" + toString(lastFomoWinnerTime)), ("%s%s__lastLotteryWinner__" + lastLotteryWinner), ("%s%d__lastLotteryWinnerAmount__" + toString(lastLotteryWinnerAmount)), ("%s%d__lastLotteryWinnerTime__" + toString(lastLotteryWinnerTime)), ("%s%d__gorcIssued__" + toString(M16)), ("%s%d__gorcStakedTotal__" + toString(gorcStakedTotal)), ("%s%d__fomoNumUniquePlayers__" + toString(fomoNumUniquePlayers)), ("%s%d__fomoTotalNumStakes__" + toString(fomoTotalNumStakes)), ("%s%d__fomoTotalStakedAmount__" + toString(fomoTotalStakedAmount)), ("%s%d__fomoUserNumStakes__" + toString(fomoUserNumStakes)), ("%s%d__fomoUserStakedAmount__" + toString(fomoUserStakedAmount)), ("%s%d__fomoUserNumWins__" + toString(fomoUserNumWins)), ("%s%d__fomoUserWonAmount__" + toString(fomoUserWonAmount)), ("%s%s__fomoFavoriteByNumGames__" + fomoFavoriteByNumGames), ("%s%s__fomoFavoriteByAmount__" + fomoFavoriteByAmount), ("%s%d__fomoTotalWonAmount__" + toString(valueOrElse(getInteger(fomoTotalWonAmountKey), 0))), ("%s%d__blessPrice__" + toString(BLESS_PRICE)), ("%s%d__marketCap__" + toString(marketCap6)), ("%s%d__gorcPriceWaves__" + toString(gorcPriceWaves8))])
530530 }
531531
532532
533533
534534 @Callable(i)
535535 func walletInfoREADONLY (userAddressOpt) = $Tuple2(nil, walletInternal(userAddressOpt))
536536
537537

github/deemru/w8io/169f3d6 
125.39 ms