tx · 5xymvw3vMy4b4m88chQRYRMMTs3NDFw5365ta7q3YGqm

3NBPx1Fciu3JQNEGZ21jSnTdutLNGGBUSXh:  -0.03600000 Waves

2024.12.13 02:41 [3412049] smart account 3NBPx1Fciu3JQNEGZ21jSnTdutLNGGBUSXh > SELF 0.00000000 Waves

{ "type": 13, "id": "5xymvw3vMy4b4m88chQRYRMMTs3NDFw5365ta7q3YGqm", "fee": 3600000, "feeAssetId": null, "timestamp": 1734046934375, "version": 2, "chainId": 84, "sender": "3NBPx1Fciu3JQNEGZ21jSnTdutLNGGBUSXh", "senderPublicKey": "3QtfC1XbLZXdeawMDeSERy9vvjUmj1XYd2GFmrvx7pWQ", "proofs": [ "4ShdNCvYLybbHGzbo7Wr7iyfsToU8wkw7TedNJmKT75UzDiawSWV4Rz97dSoQ3gPcixme4XBFvUDrHepwsNqSuUG" ], "script": "base64:BgJLCAISABIECgIICBIDCgEEEgMKAQESABIAEgMKAQESABIECgIIARIAEgMKAQgSAwoBCBIECgIIARIDCgEIEgASAwoBCBIAEgASABIAkQEAA1NFUAICX18ABU1VTFQ2AMCEPQAFTVVMVDcAgK3iBAAFTVVMVDgAgMLXLwAGTVVMVDE0AICA6YOx3hYACkRBWV9NSUxMSVMAgLiZKQAVVVNEVDJBQ1JFU19NVUxUSVBMSUVSAAoAE09ORV9QRVJDRU5UX0RJVklTT1IAZAAMUkFORE9NX0RFTEFZAAIAFE5GVF9DSEVTVF9QUklDRV9VU0RUAMCWsQIABWNoYWluCQDJAQIJAMoBAggFBHRoaXMFYnl0ZXMAAQABABdEQUlMWV9QUk9NT19TVEFSVF9CTE9DSwQHJG1hdGNoMAUFY2hhaW4DCQAAAgEBVwUHJG1hdGNoMACA75ECAwkAAAIBAVQFByRtYXRjaDAAwKbQAQkAAgECDVVua25vd24gY2hhaW4AFURBSUxZX1BST01PX0VORF9CTE9DSwQHJG1hdGNoMAUFY2hhaW4DCQAAAgEBVwUHJG1hdGNoMACg25MCAwkAAAIBAVQFByRtYXRjaDAA4JLSAQkAAgECDVVua25vd24gY2hhaW4ACkRBWV9CTE9DS1MEByRtYXRjaDAFBWNoYWluAwkAAAIBAVcFByRtYXRjaDAAoAsDCQAAAgEBVAUHJG1hdGNoMAA8CQACAQINVW5rbm93biBjaGFpbgALV0VFS19CTE9DS1MEByRtYXRjaDAFBWNoYWluAwkAAAIBAVcFByRtYXRjaDAA4E4DCQAAAgEBVAUHJG1hdGNoMAC0AQkAAgECDVVua25vd24gY2hhaW4AClZSRl9PRkZTRVQEByRtYXRjaDAFBWNoYWluAwkAAAIBAVcFByRtYXRjaDAAAAMJAAACAQFUBQckbWF0Y2gwAJD5RQkAAgECDVVua25vd24gY2hhaW4AC3VzZHRBc3NldElkBAckbWF0Y2gwBQVjaGFpbgMJAAACAQFXBQckbWF0Y2gwASCE2nqyCAM/TtG7yo7ui5O8yYLdC136B5ao1CP5qA//uQMJAAACAQFUBQckbWF0Y2gwASBVsdifcoeC7+XjW42sBatl3ppDoS8WuwXzGreHpfHFGAkAAgECDVVua25vd24gY2hhaW4AFmRlZmF1bHRSZXN0MkFkZHJlc3NTdHIEByRtYXRjaDAFBWNoYWluAwkAAAIBAVcFByRtYXRjaDACIzNQRndZdGE4YmlFejMxenBlRmU1REpLOHdFNXRyU3BRVkY4AwkAAAIBAVQFByRtYXRjaDACIzNON1V1WWFyNjI2NFA1OEZCaFZXS1BRQWg0WXVhMmhnbmd2CQACAQINVW5rbm93biBjaGFpbgAVZGVmYXVsdFJlc3RBZGRyZXNzU3RyBAckbWF0Y2gwBQVjaGFpbgMJAAACAQFXBQckbWF0Y2gwAiMzUFFDdXZGYnZoNExrUFVucm5VMXozam5iQTFwOW0zV05odgMJAAACAQFUBQckbWF0Y2gwAiMzTXVta0dHenRDS0FYcFdEcXhrZGRvZnFYU1VicVFrdlNKeQkAAgECDVVua25vd24gY2hhaW4ADmFyYml0cmFnZURlbGF5BAckbWF0Y2gwBQVjaGFpbgMJAAACAQFXBQckbWF0Y2gwBQpEQVlfTUlMTElTAwkAAAIBAVQFByRtYXRjaDAA4NQDCQACAQINVW5rbm93biBjaGFpbgAVb2xkU3Rha2luZ0NvbnRyYWN0U3RyBAckbWF0Y2gwBQVjaGFpbgMJAAACAQFXBQckbWF0Y2gwAiMzUExuY1h0UzFVODNENmNRYkZEM0g4ckJIUExnenhTRktaMQMJAAACAQFUBQckbWF0Y2gwAiMzTkRDeUJHNXE4NUp1YVJpaWdVZUV0YWlueWpDUVQzWHBabQkAAgECDVVua25vd24gY2hhaW4BD2dldFN0cmluZ09yRmFpbAIHYWRkcmVzcwNrZXkJARN2YWx1ZU9yRXJyb3JNZXNzYWdlAgkAnQgCBQdhZGRyZXNzBQNrZXkJALkJAgkAzAgCAgptYW5kYXRvcnkgCQDMCAIJAKUIAQUHYWRkcmVzcwkAzAgCAgEuCQDMCAIFA2tleQkAzAgCAg8gaXMgbm90IGRlZmluZWQFA25pbAIAABBJZHhDZmdBY3JlczJEYXBwAAEADUlkeENmZ1dsZ0RhcHAAAgAUSWR4Q2ZnSW52ZXN0RnVuZERhcHAABQAQSWR4Q2ZnTWFya2V0RGFwcAAGAQprZXlSZXN0Q2ZnAAIOJXNfX3Jlc3RDb25maWcBD2tleVJlc3QyQWRkcmVzcwACDSVzX19yZXN0MkFkZHIBDmtleVJlc3RBZGRyZXNzAAIMJXNfX3Jlc3RBZGRyAAxyZXN0Q29udHJhY3QJARFAZXh0ck5hdGl2ZSgxMDYyKQEJAQt2YWx1ZU9yRWxzZQIJAJ0IAgUEdGhpcwkBDmtleVJlc3RBZGRyZXNzAAUVZGVmYXVsdFJlc3RBZGRyZXNzU3RyARFyZWFkUmVzdENmZ09yRmFpbAEEcmVzdAkAvAkCCQEPZ2V0U3RyaW5nT3JGYWlsAgUEcmVzdAkBCmtleVJlc3RDZmcABQNTRVABGGdldENvbnRyYWN0QWRkcmVzc09yRmFpbAIIcmVzdDJDZmcDaWR4CQETdmFsdWVPckVycm9yTWVzc2FnZQIJAKYIAQkAkQMCBQhyZXN0MkNmZwUDaWR4CQCsAgICKlJlc3QgY2ZnIGRvZXNuJ3QgY29udGFpbiBhZGRyZXNzIGF0IGluZGV4IAkApAMBBQNpZHgAEUlkeENmZ1N0YWtpbmdEYXBwAAEAB3Jlc3RDZmcJARFyZWFkUmVzdENmZ09yRmFpbAEFDHJlc3RDb250cmFjdAAPc3Rha2luZ0NvbnRyYWN0CQEYZ2V0Q29udHJhY3RBZGRyZXNzT3JGYWlsAgUHcmVzdENmZwURSWR4Q2ZnU3Rha2luZ0RhcHAADXJlc3QyQ29udHJhY3QJARFAZXh0ck5hdGl2ZSgxMDYyKQEJAQt2YWx1ZU9yRWxzZQIJAJ0IAgUEdGhpcwkBD2tleVJlc3QyQWRkcmVzcwAFFmRlZmF1bHRSZXN0MkFkZHJlc3NTdHIACHJlc3QyQ2ZnCQERcmVhZFJlc3RDZmdPckZhaWwBBQ1yZXN0MkNvbnRyYWN0AA5hY3JlczJDb250cmFjdAkBGGdldENvbnRyYWN0QWRkcmVzc09yRmFpbAIFCHJlc3QyQ2ZnBRBJZHhDZmdBY3JlczJEYXBwAAt3bGdDb250cmFjdAkBGGdldENvbnRyYWN0QWRkcmVzc09yRmFpbAIFCHJlc3QyQ2ZnBQ1JZHhDZmdXbGdEYXBwABJpbnZlc3RGdW5kQ29udHJhY3QJARhnZXRDb250cmFjdEFkZHJlc3NPckZhaWwCBQhyZXN0MkNmZwUUSWR4Q2ZnSW52ZXN0RnVuZERhcHAADm1hcmtldENvbnRyYWN0CQEYZ2V0Q29udHJhY3RBZGRyZXNzT3JGYWlsAgUIcmVzdDJDZmcFEElkeENmZ01hcmtldERhcHAAE29sZEFjcmVzQ29udHJhY3RLZXkCEG9sZEFjcmVzQ29udHJhY3QBCmtleUJsb2NrZWQAAhBjb250cmFjdHNCbG9ja2VkARVrZXlMYXN0V2Vla1R4SWRCeVVzZXIBBGFkZHIJAKwCAgITbGFzdFdlZWtUeElkQnlVc2VyXwUEYWRkcgEUa2V5Q3VyV2Vla1R4SWRCeVVzZXIBBGFkZHIJAKwCAgISY3VyV2Vla1R4SWRCeVVzZXJfBQRhZGRyAQlrZXlDb21taXQBB2FkZHJlc3MJAKwCAgIPZmluaXNoQmxvY2tGb3JfBQdhZGRyZXNzAA13bGdBc3NldElkS2V5Agt3bGdfYXNzZXRJZAAKd2xnQXNzZXRJZAkBE3ZhbHVlT3JFcnJvck1lc3NhZ2UCCQCcCAIFC3dsZ0NvbnRyYWN0BQ13bGdBc3NldElkS2V5AhhXTEdPTEQgaXMgbm90IGlzc3VlZCB5ZXQAFGFjcmVzSXNzdWVkQW1vdW50S2V5AhFhY3Jlc0lzc3VlZEFtb3VudAAPYWNyZXNBc3NldElkS2V5AgxhY3Jlc0Fzc2V0SWQADGFjcmVzQXNzZXRJZAkBE3ZhbHVlT3JFcnJvck1lc3NhZ2UCCQCcCAIFDmFjcmVzMkNvbnRyYWN0BQ9hY3Jlc0Fzc2V0SWRLZXkCF0FDUkVTIGlzIG5vdCBpc3N1ZWQgeWV0ARhrZXlBY3Jlc1N0YWtlZFRpbWVCeVVzZXIBBGFkZHIJAKwCAgIWYWNyZXNTdGFrZWRUaW1lQnlVc2VyXwUEYWRkcgEVa2V5U3Rha2VkTGFuZHNCeU93bmVyAQlvd25lckFkZHIJAKwCAgITc3Rha2VkTGFuZHNCeU93bmVyXwUJb3duZXJBZGRyARRrZXlTdGFrZWREdWNrQnlPd25lcgEJb3duZXJBZGRyCQCsAgICEnN0YWtlZER1Y2tCeU93bmVyXwUJb3duZXJBZGRyAR5rZXlTdGFrZWRUaW1lQnlBc3NldElkQW5kT3duZXICB2Fzc2V0SWQEYWRkcgkArAICCQCsAgIJAKwCAgIDc3RfBQdhc3NldElkAgFfBQRhZGRyARRrZXlTdGFrZWRORlRzQnlPd25lcgEJb3duZXJBZGRyCQCsAgICEnN0YWtlZE5GVHNCeU93bmVyXwUJb3duZXJBZGRyARFrZXlVc2VyUHJvbW9BY3JlcwEHYWRkcmVzcwkArAICAgtwcm9tb0FjcmVzXwUHYWRkcmVzcwETa2V5VXNlclByb21vVGlja2V0cwEHYWRkcmVzcwkArAICAg1wcm9tb1RpY2tldHNfBQdhZGRyZXNzABRrZXlUb3RhbFByb21vVGlja2V0cwIRdG90YWxQcm9tb1RpY2tldHMAC2tleVByb21vTWFwAghwcm9tb01hcAEFYXNJbnQBAXYEByRtYXRjaDAFAXYDCQABAgUHJG1hdGNoMAIDSW50BAFuBQckbWF0Y2gwBQFuCQACAQIVZmFpbCB0byBjYXN0IGludG8gSW50AQxhc1R1cGxlNUludHMBA3ZhbAQHJG1hdGNoMAUDdmFsAwkAAQIFByRtYXRjaDACGShJbnQsIEludCwgSW50LCBJbnQsIEludCkEAXQFByRtYXRjaDAFAXQJAAIBAitmYWlsIHRvIGNhc3QgaW50byAoSW50LCBJbnQsIEludCwgSW50LCBJbnQpAQxhc1R1cGxlNEludHMBA3ZhbAQHJG1hdGNoMAUDdmFsAwkAAQIFByRtYXRjaDACFChJbnQsIEludCwgSW50LCBJbnQpBAF0BQckbWF0Y2gwBQF0CQACAQImZmFpbCB0byBjYXN0IGludG8gKEludCwgSW50LCBJbnQsIEludCkBDGFzVHVwbGUzSW50cwEDdmFsBAckbWF0Y2gwBQN2YWwDCQABAgUHJG1hdGNoMAIPKEludCwgSW50LCBJbnQpBAF0BQckbWF0Y2gwBQF0CQACAQIhZmFpbCB0byBjYXN0IGludG8gKEludCwgSW50LCBJbnQpAQxhc1R1cGxlMkludHMBA3ZhbAQHJG1hdGNoMAUDdmFsAwkAAQIFByRtYXRjaDACCihJbnQsIEludCkEAXQFByRtYXRjaDAFAXQJAAIBAhxmYWlsIHRvIGNhc3QgaW50byAoSW50LCBJbnQpAQpmaXhlZFBvaW50AgN2YWwIZGVjaW1hbHMEBnRlblBvdwkAbAYACgAABQhkZWNpbWFscwAAAAAFBERPV04EB2xvd1BhcnQJAKQDAQkAagIFA3ZhbAUGdGVuUG93BAZ6ZXJvZXMJALACAgkApAMBBQZ0ZW5Qb3cJAGQCAAEJALECAQUHbG93UGFydAkArAICCQCsAgIJAKwCAgkApAMBCQBpAgUDdmFsBQZ0ZW5Qb3cCAS4FBnplcm9lcwUHbG93UGFydAEPZ2V0UmFuZG9tTnVtYmVyAwhtYXhWYWx1ZQRzYWx0B2VudHJvcHkDCQBnAgAABQhtYXhWYWx1ZQkAAgECFm1heFZhbHVlIHNob3VsZCBiZSA+IDAECnJhbmRvbUhhc2gJANQWAQkAywECBQRzYWx0BQdlbnRyb3B5CQBqAgkAsQkBBQpyYW5kb21IYXNoBQhtYXhWYWx1ZQEEcGFkTAIDdmFsA2xlbgQEdmFsUwkApAMBBQN2YWwEBnplcm9lcwkAsAICCQCkAwEJAGwGAAoAAAkAZQIFA2xlbgkAsQIBBQR2YWxTAAAAAAUERE9XTgABCQCsAgIFBnplcm9lcwUEdmFsUwADTTZfAMCEPQADTThfAIDC1y8AD3dsZ0lzc3VlZEFtdEtleQIQd2xnX2lzc3VlZEFtb3VudAAOemJJc3N1ZWRBbXRLZXkCEnpiaWxsX2lzc3VlZEFtb3VudAEXa2V5QWNyZXNTdGFrZWRBbXRCeVVzZXIBBGFkZHIJAKwCAgIYYWNyZXNTdGFrZWRBbW91bnRCeVVzZXJfBQRhZGRyARVrZXlGYXJtaW5nUG93ZXJCeVVzZXIBBGFkZHIJAKwCAgITZmFybWluZ1Bvd2VyQnlVc2VyXwUEYWRkcgASYWNyZXNTdGFrZFRvdGFsS2V5AhZhY3Jlc1N0YWtlZEFtb3VudFRvdGFsABR0b3RhbEZhcm1pbmdQb3dlcktleQIRdG90YWxGYXJtaW5nUG93ZXIAC01BWF9XTF9ORlRTAAMADE1BWF9BUktfTkZUUwABAA1BUktfTkZUX0JPTlVTAIgnABdNQVhfTkZUU19TVEFLRURfQllfVVNFUgAEABFrZXlOZnRUb3RhbElzc3VlZAIObmZ0VG90YWxJc3N1ZWQAEWtleU5mdFRvdGFsQnVybmVkAg5uZnRUb3RhbEJ1cm5lZAATa2V5V2xOZnRUb3RhbFN0YWtlZAIQV2xOZnRUb3RhbFN0YWtlZAAUa2V5QXJrTmZ0VG90YWxTdGFrZWQCEUFya05mdFRvdGFsU3Rha2VkARVrZXlOZnROdW1iZXJCeUFzc2V0SWQBB2Fzc2V0SWQJAKwCAgITbmZ0TnVtYmVyQnlBc3NldElkXwUHYXNzZXRJZAESa2V5VXNlcldsTmZ0TnVtYmVyAQRhZGRyCQCsAgICEHVzZXJXbE5mdE51bWJlcl8FBGFkZHIBE2tleVVzZXJBcmtOZnROdW1iZXIBBGFkZHIJAKwCAgIRdXNlckFya05mdE51bWJlcl8FBGFkZHIBEGtleVVzZXJGdWxsQm9udXMBBGFkZHIJAKwCAgIOdXNlckZ1bGxCb251c18FBGFkZHIACmxldmVsQWNyZXMJAMwIAgAACQDMCAIACgkAzAgCABQJAMwIAgAoCQDMCAIAUAkAzAgCAJYBCQDMCAIA+gEJAMwIAgCQAwkAzAgCALwFCQDMCAIA6AcFA25pbAEPZ2V0TGV2ZWxCeUFjcmVzAQVhY3JlcwQDYWNyCQBpAgkAZAIFBWFjcmVzAP/B1y8FA004XwoBB2NoZWNrZXICA2FjYwRpdGVtAwkAZwIFBGl0ZW0FA2FjcgUDYWNjCQBkAgUDYWNjAAEKAAIkbAUKbGV2ZWxBY3JlcwoAAiRzCQCQAwEFAiRsCgAFJGFjYzAAAAoBBSRmMF8xAgIkYQIkaQMJAGcCBQIkaQUCJHMFAiRhCQEHY2hlY2tlcgIFAiRhCQCRAwIFAiRsBQIkaQoBBSRmMF8yAgIkYQIkaQMJAGcCBQIkaQUCJHMFAiRhCQACAQIUTGlzdCBzaXplIGV4Y2VlZHMgMTAJAQUkZjBfMgIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIFBSRhY2MwAAAAAQACAAMABAAFAAYABwAIAAkACgEWZ2V0RmFybWluZ1Bvd2VyQnlBY3JlcwEFYWNyZXMJAGgCCQBoAgUFYWNyZXMAFAkAZAIJAQ9nZXRMZXZlbEJ5QWNyZXMBBQVhY3JlcwAEAR5nZXRGYXJtaW5nUG93ZXJCeUFjcmVzQW5kQm9udXMCBWFjcmVzBmJvbnVzNgQKbm90Qm9udXNlZAkBFmdldEZhcm1pbmdQb3dlckJ5QWNyZXMBBQVhY3JlcwkAlAoCCQBrAwUKbm90Qm9udXNlZAkAZAIFA002XwUGYm9udXM2BQNNNl8FCm5vdEJvbnVzZWQAC3RlYW1BZGRyS2V5Agh0ZWFtQWRkcgEZa2V5TGFzdFdsZ1RyYWRlVGltZUJ5VXNlcgEEYWRkcgkArAICAhBsYXN0QXJiVGltZVVzZXJfBQRhZGRyABFPTERfU1RBS0lOR19ERUFETACA+eObuTIAFE1BWF9MQU5EU19UT19DT05WRVJUAA4AFGtleUxhc3RBY3Jlc1NlbGxUaW1lAhFsYXN0QWNyZXNTZWxsVGltZQAQa2V5TGFzdExpbWl0TGVmdAINbGFzdExpbWl0TGVmdAAFbmFtZXMJAMwIAgILR29sZCBzaG92ZWwJAMwIAgIHUGlja2F4ZQUDbmlsAAxkZXNjcmlwdGlvbnMJAMwIAgIWUmV3YXJkIGZvciBlYXJseSBiaXJkcwkAzAgCAhNJbmNyZWFzZXMgRmFybVBvd2VyBQNuaWwADmlkeERlc2NyU2hvdmVsAAAAD2lkeERlc2NyUGlja2F4ZQABABByYXJpdHlUaHJlc2hvbGRzCQDMCAIABQkAzAgCAAoJAMwIAgAUBQNuaWwADWlkeFRocmVzaG9sZEMAAAANaWR4VGhyZXNob2xkVQABAA1pZHhUaHJlc2hvbGRMAAIABW5hbWV6CQDMCAICBlNIT1ZFTAkAzAgCAgdQSUNLQVhFBQNuaWwADWlkeE5hbWVTaG92ZWwAAAAOaWR4TmFtZVBpY2theGUAAQALY29udGVudEtleXoJAMwIAgIPY29udGVudFBpY2theGVDCQDMCAICD2NvbnRlbnRQaWNrYXhlVQkAzAgCAg9jb250ZW50UGlja2F4ZUwJAMwIAgIPY29udGVudFBpY2theGVFCQDMCAICDmNvbnRlbnRTaG92ZWxQBQNuaWwAB2lkeEtleUMAAAAHaWR4S2V5UAAEAAtyYXJpdHlOYW1lcwkAzAgCAgZDb21tb24JAMwIAgIIVW5jb21tb24JAMwIAgIJTGVnZW5kYXJ5CQDMCAICBEVwaWMJAMwIAgIFUHJvbW8FA25pbAAKaWR4UmFyaXR5QwAAAAppZHhSYXJpdHlVAAEACmlkeFJhcml0eUwAAgAKaWR4UmFyaXR5RQADAAppZHhSYXJpdHlQAAQAC2NvbGxlY3Rpb256CQDMCAICDURpZ2dpbmcgdG9vbHMFA25pbAAKaWR4Q29sbERpZwAAAApib251c1R5cGV6CQDMCAICCUZhcm1Qb3dlcgUDbmlsAA5pZHhCb251c1R5cGVGcAAAAQZwcm9sb2cBAWkDAwkBAiE9AggFAWkMb3JpZ2luQ2FsbGVyBQ1yZXN0MkNvbnRyYWN0CQELdmFsdWVPckVsc2UCCQCgCAEJAQprZXlCbG9ja2VkAAcHCQACAQIfQ29udHJhY3RzIGFyZSB1bmRlciBtYWludGVuYW5jZQQEYWRkcgkApQgBCAUBaQxvcmlnaW5DYWxsZXIEBHdlZWsJAGkCBQZoZWlnaHQFC1dFRUtfQkxPQ0tTBAtsYXN0V2Vla0tleQkBFWtleUxhc3RXZWVrVHhJZEJ5VXNlcgEFBGFkZHIEEmxhc3RXZWVrVHhJZEJ5VXNlcgkAoggBBQtsYXN0V2Vla0tleQQEdHhJZAkA2AQBCAUBaQ10cmFuc2FjdGlvbklkBAN3dHgJAKwCAgkArAICCQCkAwEFBHdlZWsCAV8FBHR4SWQECmN1cldlZWtLZXkJARRrZXlDdXJXZWVrVHhJZEJ5VXNlcgEFBGFkZHIDCQEJaXNEZWZpbmVkAQUSbGFzdFdlZWtUeElkQnlVc2VyBApsYXN0V2Vla1R4CQC1CQIJAQV2YWx1ZQEFEmxhc3RXZWVrVHhJZEJ5VXNlcgIBXwMJAAACCQCRAwIFCmxhc3RXZWVrVHgAAAkApAMBBQR3ZWVrCQDMCAIJAQtTdHJpbmdFbnRyeQIFC2xhc3RXZWVrS2V5BQN3dHgJAMwIAgkBC1N0cmluZ0VudHJ5AgUKY3VyV2Vla0tleQUDd3R4BQNuaWwDCQAAAgkAkQMCBQpsYXN0V2Vla1R4AAAJAKQDAQkAZQIFBHdlZWsAAQkAzAgCCQELU3RyaW5nRW50cnkCBQpjdXJXZWVrS2V5BQN3dHgFA25pbAQRY3VyV2Vla1R4SWRCeVVzZXIJARFAZXh0ck5hdGl2ZSgxMDU4KQEFCmN1cldlZWtLZXkECWN1cldlZWtUeAkAtQkCBRFjdXJXZWVrVHhJZEJ5VXNlcgIBXwMJAAACCQCRAwIFCWN1cldlZWtUeAAACQCkAwEFBHdlZWsJAMwIAgkBC1N0cmluZ0VudHJ5AgUKY3VyV2Vla0tleQUDd3R4BQNuaWwJAMwIAgkBC1N0cmluZ0VudHJ5AgULbGFzdFdlZWtLZXkFEWN1cldlZWtUeElkQnlVc2VyCQDMCAIJAQtTdHJpbmdFbnRyeQIFCmN1cldlZWtLZXkFA3d0eAUDbmlsCQDMCAIJAQtTdHJpbmdFbnRyeQIFC2xhc3RXZWVrS2V5BQN3dHgJAMwIAgkBC1N0cmluZ0VudHJ5AgUKY3VyV2Vla0tleQUDd3R4BQNuaWwBFGNyZWF0ZU5mdERlc2NyQ3VzdG9tCAdjb250S2V5CW5mdFNlcmlhbApjb2xsZWN0aW9uBG5hbWUFZGVzY3IGcmFyaXR5BWJvbnVzCWJvbnVzVHlwZQkArAICCQCsAgIJAKwCAgkArAICCQCsAgIJAKwCAgkArAICCQCsAgIJAKwCAgkArAICCQCsAgIJAKwCAgkArAICCQCsAgIJAKwCAgkArAICCQCsAgIJAKwCAgkArAICCQCsAgIJAKwCAgkArAICCQCsAgIJAKwCAgIieyJ1cmwiOiAiaHR0cHM6Ly93YXZlc2xhbmRzLmNvbSIsIAIPImNvbnRlbnRLZXkiOiAiBQdjb250S2V5AgMiLCACCiJudW1iZXIiOiAJAKQDAQUJbmZ0U2VyaWFsAgIsIAIPImNvbGxlY3Rpb24iOiAiBQpjb2xsZWN0aW9uAgMiLCACCSJuYW1lIjogIgUEbmFtZQIDIiwgAhAiZGVzY3JpcHRpb24iOiAiBQVkZXNjcgIDIiwgAgkicmFyZSI6ICIFBnJhcml0eQIDIiwgAgkiYm9udXMiOiAJAKQDAQUFYm9udXMCAiwgAg4iYm9udXNUeXBlIjogIgUJYm9udXNUeXBlAgIifQEOaXNzdWVOZnRDdXN0b20IB25hbWVJZHgKY29udEtleUlkeAdjb2xsSWR4CXJhcml0eUlkeAlib251c1BlcmMIZGVzY3JJZHgMYm9udXNUeXBlSWR4BGFkZHIECW5mdFNlcmlhbAkBC3ZhbHVlT3JFbHNlAgkAnwgBBRFrZXlOZnRUb3RhbElzc3VlZAAABAZyYXJpdHkJAJEDAgULcmFyaXR5TmFtZXMFCXJhcml0eUlkeAQEbmFtZQkArAICCQCsAgIJAKwCAgkAkQMCBQVuYW1legUHbmFtZUlkeAIBLQkArwICBQZyYXJpdHkAAQkApAMBBQlib251c1BlcmMEBWlzc3VlCQDCCAUFBG5hbWUJARRjcmVhdGVOZnREZXNjckN1c3RvbQgJAJEDAgULY29udGVudEtleXoFCmNvbnRLZXlJZHgFCW5mdFNlcmlhbAkAkQMCBQtjb2xsZWN0aW9uegUHY29sbElkeAkAkQMCBQVuYW1lcwUHbmFtZUlkeAkAkQMCBQxkZXNjcmlwdGlvbnMFCGRlc2NySWR4CQCRAwIFC3Jhcml0eU5hbWVzBQlyYXJpdHlJZHgFCWJvbnVzUGVyYwkAkQMCBQpib251c1R5cGV6BQxib251c1R5cGVJZHgAAQAABwQKbmZ0QXNzZXRJZAkAuAgBBQVpc3N1ZQkAlAoCCQDMCAIFBWlzc3VlCQDMCAIJAQxJbnRlZ2VyRW50cnkCBRFrZXlOZnRUb3RhbElzc3VlZAkAZAIFCW5mdFNlcmlhbAABCQDMCAIJAQxJbnRlZ2VyRW50cnkCCQEVa2V5TmZ0TnVtYmVyQnlBc3NldElkAQkA2AQBBQpuZnRBc3NldElkBQluZnRTZXJpYWwJAMwIAgkBDlNjcmlwdFRyYW5zZmVyAwUEYWRkcgABBQpuZnRBc3NldElkBQNuaWwFCm5mdEFzc2V0SWQBEmJvbnVzQnlEZXNjcmlwdGlvbgEFZGVzY3IDCQEBIQEJAQhjb250YWlucwIFBWRlc2NyAhgiYm9udXNUeXBlIjogIkZhcm1Qb3dlciIJAAIBCQCsAgICFk5GVCBpcyBub3Qgc3VwcG9ydGVkOiAFBWRlc2NyBAhib251c1N0cgkAkQMCCQC8CQIJAJEDAgkAvAkCBQVkZXNjcgIIImJvbnVzIjoAAQIBLAAACQENcGFyc2VJbnRWYWx1ZQEJALACAgUIYm9udXNTdHIJAGQCCQELdmFsdWVPckVsc2UCCQC3CQIFCGJvbnVzU3RyAgEgAP///////////wEAAQEWcmFyaXR5SWR4QnlEZXNjcmlwcmlvbgEFZGVzY3IDCQEBIQEJAQhjb250YWlucwIFBWRlc2NyAgYicmFyZSIJAAIBCQCsAgICFk5GVCBpcyBub3Qgc3VwcG9ydGVkOiAFBWRlc2NyBAlyYXJpdHlTdHIJAJEDAgkAvAkCCQCRAwIJALwJAgkAkQMCCQC8CQIFBWRlc2NyAgYicmFyZSIAAQIBLAAAAgEiAAEJAQV2YWx1ZQEJAM8IAgULcmFyaXR5TmFtZXMFCXJhcml0eVN0cgEZc3Rha2VVbnN0YWtlQWNyZXNJbnRlcm5hbAMDYW10B2FkZHJlc3MKYm9udXNEZWx0YQMDCQAAAgUDYW10AAAJAAACBQpib251c0RlbHRhAAAHCQACAQINTm90aGluZyB0byBkbwQJd2xnUmVzdWx0CQD8BwQFC3dsZ0NvbnRyYWN0AhJvblN0YWtlVW5zdGFrZUxhbmQJAMwIAgUHYWRkcmVzcwUDbmlsBQNuaWwDCQAAAgUJd2xnUmVzdWx0BQl3bGdSZXN1bHQEA25vdwgFCWxhc3RCbG9jawl0aW1lc3RhbXAEB3RpbWVLZXkJARhrZXlBY3Jlc1N0YWtlZFRpbWVCeVVzZXIBBQdhZGRyZXNzBAlhbW91bnRLZXkJARdrZXlBY3Jlc1N0YWtlZEFtdEJ5VXNlcgEFB2FkZHJlc3MEDm9sZEFjcmVzQW1vdW50CQELdmFsdWVPckVsc2UCCQCfCAEFCWFtb3VudEtleQAAAwMJAGYCAAAFA2FtdAkAZgIAAAkAZAIFDm9sZEFjcmVzQW1vdW50BQNhbXQHCQACAQkArAICCQCsAgIJAKwCAgIOWW91IGhhdmUgb25seSAJAQpmaXhlZFBvaW50AgUOb2xkQWNyZXNBbW91bnQACAIgIEFDUkVTIHN0YWtlZCwgdHJpZWQgdG8gdW5zdGFrZSAJAQpmaXhlZFBvaW50AgkBAS0BBQNhbXQACAQObmV3QWNyZXNBbW91bnQJAGQCBQ5vbGRBY3Jlc0Ftb3VudAUDYW10BAhvbGRUb3RhbAkBC3ZhbHVlT3JFbHNlAgkAnwgBBRJhY3Jlc1N0YWtkVG90YWxLZXkAAAQJdXNlckZwS2V5CQEVa2V5RmFybWluZ1Bvd2VyQnlVc2VyAQUHYWRkcmVzcwQFb2xkRnAJAQt2YWx1ZU9yRWxzZQIJAJ8IAQUJdXNlckZwS2V5AAAECGJvbnVzS2V5CQEQa2V5VXNlckZ1bGxCb251cwEFB2FkZHJlc3MECG9sZEJvbnVzCQELdmFsdWVPckVsc2UCCQCaCAIFDmFjcmVzMkNvbnRyYWN0BQhib251c0tleQAAAwMJAGYCAAAFCmJvbnVzRGVsdGEJAGYCAAAJAGQCBQhvbGRCb251cwUKYm9udXNEZWx0YQcJAAIBCQCsAgIJAKwCAgkArAICCQCsAgICDllvdSBoYXZlIG9ubHkgCQEKZml4ZWRQb2ludAIFCG9sZEJvbnVzAAQCHiUgYm9udXMsIGFuZCB0cmllZCB0byB1bnN0YWtlIAkBCmZpeGVkUG9pbnQCCQEBLQEFCmJvbnVzRGVsdGEABAIBJQQLJHQwNjI5OTYzOTgJAR5nZXRGYXJtaW5nUG93ZXJCeUFjcmVzQW5kQm9udXMCBQ5uZXdBY3Jlc0Ftb3VudAkAZAIFCG9sZEJvbnVzBQpib251c0RlbHRhBAxuZXdCb251c2VkRnAIBQskdDA2Mjk5NjM5OAJfMQQHaWdub3JlZAgFCyR0MDYyOTk2Mzk4Al8yBApvbGRUb3RhbEZwCQELdmFsdWVPckVsc2UCCQCfCAEFFHRvdGFsRmFybWluZ1Bvd2VyS2V5AAAEDGFjcmVzQWN0aW9ucwMJAAACBQNhbXQAAAUDbmlsCQDMCAIJAQxJbnRlZ2VyRW50cnkCBQlhbW91bnRLZXkFDm5ld0FjcmVzQW1vdW50CQDMCAIJAQxJbnRlZ2VyRW50cnkCBRJhY3Jlc1N0YWtkVG90YWxLZXkJAGQCBQhvbGRUb3RhbAUDYW10BQNuaWwEDGJvbnVzQWN0aW9ucwMJAAACBQpib251c0RlbHRhAAAFA25pbAkAzAgCCQEMSW50ZWdlckVudHJ5AgUIYm9udXNLZXkJAGQCBQhvbGRCb251cwUKYm9udXNEZWx0YQUDbmlsCQCUCgIJAM0IAgkAzQgCCQDNCAIJAM4IAgUMYWNyZXNBY3Rpb25zBQxib251c0FjdGlvbnMJAQxJbnRlZ2VyRW50cnkCBQd0aW1lS2V5CAUJbGFzdEJsb2NrCXRpbWVzdGFtcAkBDEludGVnZXJFbnRyeQIFCXVzZXJGcEtleQUMbmV3Qm9udXNlZEZwCQEMSW50ZWdlckVudHJ5AgUUdG90YWxGYXJtaW5nUG93ZXJLZXkJAGUCCQBkAgUKb2xkVG90YWxGcAUMbmV3Qm9udXNlZEZwBQVvbGRGcAUJd2xnUmVzdWx0CQACAQIkU3RyaWN0IHZhbHVlIGlzIG5vdCBlcXVhbCB0byBpdHNlbGYuAQtnZXRXbGdQcmljZQEVdXNkdEJhbGFuY2VDb3JyZWN0aW9uBAxpc3N1ZWRBbW91bnQJARN2YWx1ZU9yRXJyb3JNZXNzYWdlAgkAmggCBQt3bGdDb250cmFjdAUPd2xnSXNzdWVkQW10S2V5AhhXTEdPTEQgaXMgbm90IGlzc3VlZCB5ZXQEBndsZ1VzZAkA8AcCBQt3bGdDb250cmFjdAULdXNkdEFzc2V0SWQECWFjcmVzMlVzZAkAZQIJAPAHAgUOYWNyZXMyQ29udHJhY3QFC3VzZHRBc3NldElkBRV1c2R0QmFsYW5jZUNvcnJlY3Rpb24ED2ludmVzdEZ1bmRUb3RhbAkAZAIJAPAHAgUSaW52ZXN0RnVuZENvbnRyYWN0BQt1c2R0QXNzZXRJZAkBC3ZhbHVlT3JFbHNlAgkAmggCBRJpbnZlc3RGdW5kQ29udHJhY3QFDnpiSXNzdWVkQW10S2V5AAAEDXRvdGFsRnVuZHNVc2QJAGQCCQBkAgUJYWNyZXMyVXNkBQZ3bGdVc2QFD2ludmVzdEZ1bmRUb3RhbAkAawMFDXRvdGFsRnVuZHNVc2QFBU1VTFQ4BQxpc3N1ZWRBbW91bnQBEWdldFN3YXBMaW1pdEFjcmVzAAQGd2xnVXNkCQDwBwIFC3dsZ0NvbnRyYWN0BQt1c2R0QXNzZXRJZAQJYWNyZXMyVXNkCQDwBwIFBHRoaXMFC3VzZHRBc3NldElkBA9pbnZlc3RGdW5kVG90YWwJAGQCCQDwBwIFEmludmVzdEZ1bmRDb250cmFjdAULdXNkdEFzc2V0SWQJAQt2YWx1ZU9yRWxzZQIJAJoIAgUSaW52ZXN0RnVuZENvbnRyYWN0BQ56Yklzc3VlZEFtdEtleQAABAxkZWZhdWx0TGltaXQJAGkCCQBkAgkAZAIFCWFjcmVzMlVzZAUGd2xnVXNkBQ9pbnZlc3RGdW5kVG90YWwFE09ORV9QRVJDRU5UX0RJVklTT1IEDWxhc3RMaW1pdExlZnQJAQt2YWx1ZU9yRWxzZQIJAJ8IAQUQa2V5TGFzdExpbWl0TGVmdAUMZGVmYXVsdExpbWl0BAhsYXN0VGltZQkBC3ZhbHVlT3JFbHNlAgkAnwgBBRRrZXlMYXN0QWNyZXNTZWxsVGltZQAABANub3cIBQlsYXN0QmxvY2sJdGltZXN0YW1wBAxjdXJyZW50TGltaXQJAGQCBQ1sYXN0TGltaXRMZWZ0CQBrAwUMZGVmYXVsdExpbWl0CQBlAgUDbm93BQhsYXN0VGltZQUKREFZX01JTExJUwQNbGltaXRMZWZ0VXNkdAkAlwMBCQDMCAIFDGN1cnJlbnRMaW1pdAkAzAgCBQxkZWZhdWx0TGltaXQFA25pbAkAlAoCCQEMSW50ZWdlckVudHJ5AgUUa2V5TGFzdEFjcmVzU2VsbFRpbWUFA25vdwUNbGltaXRMZWZ0VXNkdAAJYXJrT3JhY2xlCQERQGV4dHJOYXRpdmUoMTA2MikBAiMzUEpnWjZBSzFXVkNwZENtRVpwZXNIbWFLdnJRRGRYRzVvZwAJaW5jdWJhdG9yCQELdmFsdWVPckVsc2UCCQCdCAIFCWFya09yYWNsZQIXc3RhdGljX2luY3ViYXRvckFkZHJlc3MCAAAHYnJlZWRlcgkBC3ZhbHVlT3JFbHNlAgkAnQgCBQlhcmtPcmFjbGUCFXN0YXRpY19icmVlZGVyQWRkcmVzcwIAAA90dXJ0bGVJbmN1YmF0b3IJAQt2YWx1ZU9yRWxzZQIJAJ0IAgUJYXJrT3JhY2xlAh1zdGF0aWNfdHVydGxlSW5jdWJhdG9yQWRkcmVzcwIAAA10dXJ0bGVCcmVlZGVyCQELdmFsdWVPckVsc2UCCQCdCAIFCWFya09yYWNsZQIbc3RhdGljX3R1cnRsZUJyZWVkZXJBZGRyZXNzAgAAD2NhbmluZUluY3ViYXRvcgkBC3ZhbHVlT3JFbHNlAgkAnQgCBQlhcmtPcmFjbGUCHXN0YXRpY19jYW5pbmVJbmN1YmF0b3JBZGRyZXNzAgAADWNhbmluZUJyZWVkZXIJAQt2YWx1ZU9yRWxzZQIJAJ0IAgUJYXJrT3JhY2xlAhtzdGF0aWNfY2FuaW5lQnJlZWRlckFkZHJlc3MCAAAPZmVsaW5lSW5jdWJhdG9yCQELdmFsdWVPckVsc2UCCQCdCAIFCWFya09yYWNsZQIdc3RhdGljX2ZlbGluZUluY3ViYXRvckFkZHJlc3MCAAANZmVsaW5lQnJlZWRlcgkBC3ZhbHVlT3JFbHNlAgkAnQgCBQlhcmtPcmFjbGUCG3N0YXRpY19mZWxpbmVCcmVlZGVyQWRkcmVzcwIAAA1tdXRhbnRCcmVlZGVyCQELdmFsdWVPckVsc2UCCQCdCAIFCWFya09yYWNsZQIdc3RhdGljX211dGFudEluY3ViYXRvckFkZHJlc3MCAAEPaXNBcmtpbWFsSXNzdWVkAQNuZm8EBmlzc3VlcgkApQgBCAUDbmZvBmlzc3VlcgMDAwMDAwMDAwMJAAACBQVjaGFpbgEBVAkAAAIFBmlzc3VlcgUVb2xkU3Rha2luZ0NvbnRyYWN0U3RyBwYJAAACBQZpc3N1ZXIFCWluY3ViYXRvcgYJAAACBQZpc3N1ZXIFB2JyZWVkZXIGCQAAAgUGaXNzdWVyBQ90dXJ0bGVJbmN1YmF0b3IGCQAAAgUGaXNzdWVyBQ10dXJ0bGVCcmVlZGVyBgkAAAIFBmlzc3VlcgUPY2FuaW5lSW5jdWJhdG9yBgkAAAIFBmlzc3VlcgUNY2FuaW5lQnJlZWRlcgYJAAACBQZpc3N1ZXIFD2ZlbGluZUluY3ViYXRvcgYJAAACBQZpc3N1ZXIFDWZlbGluZUJyZWVkZXIIBQNuZm8EbmFtZQMJAAACBQZpc3N1ZXIFDW11dGFudEJyZWVkZXIIBQNuZm8LZGVzY3JpcHRpb24CAAEQc3Rha2VOZnRJbnRlcm5hbAYEYWRkcgphc3NldElkU3RyBmJvbnVzNgp1c2VyTnVtS2V5C3RvdGFsTnVtS2V5BWxpbWl0BAluZnROdW1iZXIJAQt2YWx1ZU9yRWxzZQIJAJ8IAQUKdXNlck51bUtleQAAAwkAZwIFCW5mdE51bWJlcgUFbGltaXQJAAIBCQCsAgIJAKwCAgISWW91IGNhbiBzdGFrZSBtYXggCQCkAwEFBWxpbWl0Ag0gb2Ygc3VjaCBORlRzBA0kdDAxMDY3NzEwNzUzCQEZc3Rha2VVbnN0YWtlQWNyZXNJbnRlcm5hbAMAAAUEYWRkcgUGYm9udXM2BAdhY3Rpb25zCAUNJHQwMTA2NzcxMDc1MwJfMQQQd2xnQ2xhaW1lZEFtb3VudAgFDSR0MDEwNjc3MTA3NTMCXzIJAJQKAgkAzQgCCQDNCAIJAM0IAgUHYWN0aW9ucwkBDEludGVnZXJFbnRyeQIFCnVzZXJOdW1LZXkJAGQCBQluZnROdW1iZXIAAQkBDEludGVnZXJFbnRyeQIFC3RvdGFsTnVtS2V5CQBkAgkBC3ZhbHVlT3JFbHNlAgkAnwgBBQt0b3RhbE51bUtleQAAAAEJAQxJbnRlZ2VyRW50cnkCCQEea2V5U3Rha2VkVGltZUJ5QXNzZXRJZEFuZE93bmVyAgUKYXNzZXRJZFN0cgUEYWRkcggFCWxhc3RCbG9jawl0aW1lc3RhbXAFEHdsZ0NsYWltZWRBbW91bnQADnByb21vTnVtUHJpemVzAAMAEnByb21vQXdhcmRQZXJSb3VuZAkAzAgCAIDh6xcJAMwIAgDA8PULCQDMCAIAwPD1CwUDbmlsAQ1zdGFrZUFjcmVzRm9yAwdhZGRyZXNzA2FtdBBzaG91bGRDbGVhblByb21vBA0kdDAxMTIyNTExMzAxCQEZc3Rha2VVbnN0YWtlQWNyZXNJbnRlcm5hbAMFA2FtdAUHYWRkcmVzcwAABAdhY3Rpb25zCAUNJHQwMTEyMjUxMTMwMQJfMQQQd2xnQ2xhaW1lZEFtb3VudAgFDSR0MDExMjI1MTEzMDECXzIEDHByb21vQWN0aW9ucwMDCQBnAgUGaGVpZ2h0BRdEQUlMWV9QUk9NT19TVEFSVF9CTE9DSwkAZgIFFURBSUxZX1BST01PX0VORF9CTE9DSwUGaGVpZ2h0BwQNcHJvbW9BY3Jlc0tleQkBEWtleVVzZXJQcm9tb0FjcmVzAQUHYWRkcmVzcwQKcHJvbW9BY3JlcwkAZAIDBRBzaG91bGRDbGVhblByb21vAAAJAQt2YWx1ZU9yRWxzZQIJAJ8IAQUNcHJvbW9BY3Jlc0tleQAABQNhbXQEB3RpY2tldHMJAGkCBQpwcm9tb0FjcmVzBQVNVUxUOAQKdGlja2V0c0tleQkBE2tleVVzZXJQcm9tb1RpY2tldHMBBQdhZGRyZXNzBAxkZWx0YVRpY2tldHMJAGUCBQd0aWNrZXRzCQELdmFsdWVPckVsc2UCCQCfCAEFCnRpY2tldHNLZXkAAAQMdG90YWxUaWNrZXRzCQBkAgkBC3ZhbHVlT3JFbHNlAgkAnwgBBRRrZXlUb3RhbFByb21vVGlja2V0cwAABQxkZWx0YVRpY2tldHMDAwUQc2hvdWxkQ2xlYW5Qcm9tbwYJAGYCBQxkZWx0YVRpY2tldHMAAAQIcHJvbW9NYXAJAQt2YWx1ZU9yRWxzZQIJAKIIAQULa2V5UHJvbW9NYXACAAQKdXNlclJlY29yZAkArAICCQCsAgIFB2FkZHJlc3MCAToJAQRwYWRMAgUHdGlja2V0cwADBAZuZXdNYXADCQEIY29udGFpbnMCBQhwcm9tb01hcAUHYWRkcmVzcwQIbWFwUGFydHMJAL0JAgUIcHJvbW9NYXAFB2FkZHJlc3MDCQAAAgkAkQMCBQhtYXBQYXJ0cwAAAgAEAXIJALACAgkAkQMCBQhtYXBQYXJ0cwABAAQDCQAAAgUBcgIAAwkAAAIFB3RpY2tldHMAAAIABQp1c2VyUmVjb3JkAwkAAAIFB3RpY2tldHMAAAkAsAICBQFyAAEJAKwCAgUKdXNlclJlY29yZAUBcgQBcgkAsAICCQCRAwIFCG1hcFBhcnRzAAEABAMJAAACBQFyAgADCQAAAgUHdGlja2V0cwAACQCzAgIJAJEDAgUIbWFwUGFydHMAAAABCQCsAgIJAJEDAgUIbWFwUGFydHMAAAUKdXNlclJlY29yZAMJAAACBQd0aWNrZXRzAAAJAKwCAgkAkQMCBQhtYXBQYXJ0cwAACQCwAgIFAXIAAQkArAICCQCsAgIJAJEDAgUIbWFwUGFydHMAAAUKdXNlclJlY29yZAUBcgMJAAACBQd0aWNrZXRzAAAFCHByb21vTWFwAwkAAAIFCHByb21vTWFwAgAFCnVzZXJSZWNvcmQJAKwCAgkArAICBQhwcm9tb01hcAIBXwUKdXNlclJlY29yZAkAzAgCCQEMSW50ZWdlckVudHJ5AgUNcHJvbW9BY3Jlc0tleQUKcHJvbW9BY3JlcwkAzAgCCQEMSW50ZWdlckVudHJ5AgUKdGlja2V0c0tleQUHdGlja2V0cwkAzAgCCQEMSW50ZWdlckVudHJ5AgUUa2V5VG90YWxQcm9tb1RpY2tldHMFDHRvdGFsVGlja2V0cwkAzAgCCQELU3RyaW5nRW50cnkCBQtrZXlQcm9tb01hcAUGbmV3TWFwBQNuaWwJAMwIAgkBDEludGVnZXJFbnRyeQIFDXByb21vQWNyZXNLZXkFCnByb21vQWNyZXMFA25pbAUDbmlsCQCUCgIJAM4IAgUHYWN0aW9ucwUMcHJvbW9BY3Rpb25zBRB3bGdDbGFpbWVkQW1vdW50FAFpAQpzYXZlTGFzdFR4AAMJAQEhAQkBD2NvbnRhaW5zRWxlbWVudAIJAMwIAgULd2xnQ29udHJhY3QJAMwIAgUObWFya2V0Q29udHJhY3QFA25pbAgFAWkGY2FsbGVyCQACAQINQWNjZXNzIGRlbmllZAkAlAoCCQEGcHJvbG9nAQUBaQAqAWkBDWNvbnN0cnVjdG9yVjECCXJlc3QyQWRkcg5vbGRBY3JDb250cmFjdAMJAQIhPQIIBQFpBmNhbGxlcgUEdGhpcwkAAgECEVBlcm1pc3Npb24gZGVuaWVkBA5vbGRBY3JDb250QWRkcgkBEUBleHRyTmF0aXZlKDEwNjIpAQUOb2xkQWNyQ29udHJhY3QJAMwIAgkBDEludGVnZXJFbnRyeQIFFGFjcmVzSXNzdWVkQW1vdW50S2V5CQERQGV4dHJOYXRpdmUoMTA1MCkCBQ5vbGRBY3JDb250QWRkcgUUYWNyZXNJc3N1ZWRBbW91bnRLZXkJAMwIAgkBC0JpbmFyeUVudHJ5AgUPYWNyZXNBc3NldElkS2V5CQERQGV4dHJOYXRpdmUoMTA1MikCBQ5vbGRBY3JDb250QWRkcgUPYWNyZXNBc3NldElkS2V5CQDMCAIJAQtTdHJpbmdFbnRyeQIJAQ9rZXlSZXN0MkFkZHJlc3MABQlyZXN0MkFkZHIJAMwIAgkBC1N0cmluZ0VudHJ5AgUTb2xkQWNyZXNDb250cmFjdEtleQUOb2xkQWNyQ29udHJhY3QFA25pbAFpAQpzZXRCbG9ja2VkAQlpc0Jsb2NrZWQDCQECIT0CCAUBaQZjYWxsZXIFBHRoaXMJAAIBAhFwZXJtaXNzaW9uIGRlbmllZAkAzAgCCQEMQm9vbGVhbkVudHJ5AgkBCmtleUJsb2NrZWQABQlpc0Jsb2NrZWQFA25pbAFpAQx1bnN0YWtlQWNyZXMBBmFtb3VudAQNcHJvbG9nQWN0aW9ucwkBBnByb2xvZwEFAWkDAwkAZwIFBmhlaWdodAUXREFJTFlfUFJPTU9fU1RBUlRfQkxPQ0sJAGYCBRVEQUlMWV9QUk9NT19FTkRfQkxPQ0sFBmhlaWdodAcJAAIBAipZb3UgY2FuJ3QgdW5zdGFrZSBkdXJpbmcgWG1hcyBwcm9tbyBwZXJpb2QDCQBnAgAABQZhbW91bnQJAAIBAhlBbW91bnQgc2hvdWxkIGJlIHBvc2l0aXZlBAdhZGRyZXNzCQClCAEIBQFpBmNhbGxlcgMJAQIhPQIJAJADAQgFAWkIcGF5bWVudHMAAAkAAgECFE5vIHBheW1lbnRzIHJlcXVpcmVkBA5hcmJSZWxlYXNlVGltZQkAZAIJAQt2YWx1ZU9yRWxzZQIJAJoIAgULd2xnQ29udHJhY3QJARlrZXlMYXN0V2xnVHJhZGVUaW1lQnlVc2VyAQUHYWRkcmVzcwAABQ5hcmJpdHJhZ2VEZWxheQMJAGYCBQ5hcmJSZWxlYXNlVGltZQgFCWxhc3RCbG9jawl0aW1lc3RhbXAJAAIBCQCsAgICLVlvdSB0cmFkZWQgc29tZSBXTEdPTEQsIGNhbm5vdCB1bnN0YWtlIHVudGlsIAkApAMBBQ5hcmJSZWxlYXNlVGltZQQNJHQwMTUzMDQxNTM4NAkBGXN0YWtlVW5zdGFrZUFjcmVzSW50ZXJuYWwDCQEBLQEFBmFtb3VudAUHYWRkcmVzcwAABAdhY3Rpb25zCAUNJHQwMTUzMDQxNTM4NAJfMQQQd2xnQ2xhaW1lZEFtb3VudAgFDSR0MDE1MzA0MTUzODQCXzIJAJQKAgkAzggCCQDNCAIFB2FjdGlvbnMJAQ5TY3JpcHRUcmFuc2ZlcgMIBQFpBmNhbGxlcgUGYW1vdW50BQxhY3Jlc0Fzc2V0SWQFDXByb2xvZ0FjdGlvbnMFEHdsZ0NsYWltZWRBbW91bnQBaQEKc3Rha2VBY3JlcwAEDXByb2xvZ0FjdGlvbnMJAQZwcm9sb2cBBQFpBAdhZGRyZXNzCQClCAEIBQFpBmNhbGxlcgMJAQIhPQIJAJADAQgFAWkIcGF5bWVudHMAAQkAAgECImV4YWN0bHkgMSBwYXltZW50IG11c3QgYmUgYXR0YWNoZWQEA3BtdAkAkQMCCAUBaQhwYXltZW50cwAABANhbXQIBQNwbXQGYW1vdW50AwMJAQEhAQkBCWlzRGVmaW5lZAEIBQNwbXQHYXNzZXRJZAYJAQIhPQIJAQV2YWx1ZQEIBQNwbXQHYXNzZXRJZAUMYWNyZXNBc3NldElkCQACAQIUQUNSRVMgcGF5bWVudHMgb25seSEEDSR0MDE1ODM1MTU5MDgJAQ1zdGFrZUFjcmVzRm9yAwUHYWRkcmVzcwUDYW10BwQMc3Rha2VBY3Rpb25zCAUNJHQwMTU4MzUxNTkwOAJfMQQQd2xnQ2xhaW1lZEFtb3VudAgFDSR0MDE1ODM1MTU5MDgCXzIJAJQKAgkAzggCBQxzdGFrZUFjdGlvbnMFDXByb2xvZ0FjdGlvbnMFEHdsZ0NsYWltZWRBbW91bnQBaQEIYnV5QWNyZXMABA1wcm9sb2dBY3Rpb25zCQEGcHJvbG9nAQUBaQMJAQIhPQIJAJADAQgFAWkIcGF5bWVudHMAAQkAAgECImV4YWN0bHkgMSBwYXltZW50IG11c3QgYmUgYXR0YWNoZWQEA3BtdAkAkQMCCAUBaQhwYXltZW50cwAABAp1c2R0QW1vdW50CAUDcG10BmFtb3VudAMDCQEBIQEJAQlpc0RlZmluZWQBCAUDcG10B2Fzc2V0SWQGCQECIT0CCQEFdmFsdWUBCAUDcG10B2Fzc2V0SWQFC3VzZHRBc3NldElkCQACAQITVVNEVCBwYXltZW50cyBvbmx5IQMJAGYCBQVNVUxUNgUKdXNkdEFtb3VudAkAAgEJAKwCAgkArAICAhZNaW4gcGF5bWVudCBzaG91bGQgYmUgCQEKZml4ZWRQb2ludAIFBU1VTFQ2AAYCBSBVU0RUBAthY3Jlc0Ftb3VudAkAaAIFCnVzZHRBbW91bnQFFVVTRFQyQUNSRVNfTVVMVElQTElFUgQJd2xnQW1vdW50CQBrAwUKdXNkdEFtb3VudAUFTVVMVDgJAQtnZXRXbGdQcmljZQEFCnVzZHRBbW91bnQED29sZEFjcmVzQWRkcmVzcwkBEUBleHRyTmF0aXZlKDEwNjIpAQkBEUBleHRyTmF0aXZlKDEwNTgpAQUTb2xkQWNyZXNDb250cmFjdEtleQQDcmVxCQD8BwQFD29sZEFjcmVzQWRkcmVzcwIUcmVxdWVzdEFjcmVzQ2FsbGJhY2sJAMwIAgULYWNyZXNBbW91bnQFA25pbAUDbmlsAwkAAAIFA3JlcQUDcmVxBAl3bGdSZW1haW4JAQVhc0ludAEJAPwHBAULd2xnQ29udHJhY3QCCmJ1cm5XbGdvbGQJAMwIAgUJd2xnQW1vdW50BQNuaWwFA25pbAkAlAoCCQDOCAIJAMwIAgkBDlNjcmlwdFRyYW5zZmVyAwgFAWkGY2FsbGVyBQthY3Jlc0Ftb3VudAUMYWNyZXNBc3NldElkBQNuaWwFDXByb2xvZ0FjdGlvbnMFCXdsZ1JlbWFpbgkAAgECJFN0cmljdCB2YWx1ZSBpcyBub3QgZXF1YWwgdG8gaXRzZWxmLgFpARBidXlBY3Jlc1JFQURPTkxZAQp1c2R0QW1vdW50BAthY3Jlc0Ftb3VudAkAaAIFCnVzZHRBbW91bnQFFVVTRFQyQUNSRVNfTVVMVElQTElFUgQJd2xnVG9CdXJuCQBrAwUKdXNkdEFtb3VudAUFTVVMVDgJAQtnZXRXbGdQcmljZQEFCnVzZHRBbW91bnQJAJQKAgUDbmlsCQDMCAIFC2FjcmVzQW1vdW50CQDMCAIFBU1VTFQ2CQDMCAIFC2FjcmVzQW1vdW50CQDMCAIFCXdsZ1RvQnVybgUDbmlsAWkBCXNlbGxBY3JlcwAEDXByb2xvZ0FjdGlvbnMJAQZwcm9sb2cBBQFpAwkBAiE9AgkAkAMBCAUBaQhwYXltZW50cwABCQACAQIiZXhhY3RseSAxIHBheW1lbnQgbXVzdCBiZSBhdHRhY2hlZAQDcG10CQCRAwIIBQFpCHBheW1lbnRzAAAEC2FjcmVzQW1vdW50CAUDcG10BmFtb3VudAMDCQEBIQEJAQlpc0RlZmluZWQBCAUDcG10B2Fzc2V0SWQGCQECIT0CCQEFdmFsdWUBCAUDcG10B2Fzc2V0SWQFDGFjcmVzQXNzZXRJZAkAAgECFEFDUkVTIHBheW1lbnRzIG9ubHkhAwkAZgIFBU1VTFQ3BQthY3Jlc0Ftb3VudAkAAgEJAKwCAgkArAICAhZNaW4gcGF5bWVudCBzaG91bGQgYmUgCQEKZml4ZWRQb2ludAIFBU1VTFQ3AAgCBiBBQ1JFUwQEYWRkcgkApQgBCAUBaQZjYWxsZXIEDSR0MDE3NzcwMTc4MTgJARFnZXRTd2FwTGltaXRBY3JlcwAEC2xpbWl0QWN0aW9uCAUNJHQwMTc3NzAxNzgxOAJfMQQHbWF4VXNkdAgFDSR0MDE3NzcwMTc4MTgCXzIECG1heEFjcmVzCQBoAgUHbWF4VXNkdAUVVVNEVDJBQ1JFU19NVUxUSVBMSUVSAwkAZgIFC2FjcmVzQW1vdW50BQhtYXhBY3JlcwkAAgEJAKwCAgkArAICAhFZb3UgY2FuIHNlbGwgbWF4IAkBCmZpeGVkUG9pbnQCBQhtYXhBY3JlcwAIAgYgQUNSRVMECnVzZHRBbW91bnQJAGkCCQBpAgULYWNyZXNBbW91bnQFFVVTRFQyQUNSRVNfTVVMVElQTElFUgACCQCUCgIJAM4IAgkAzAgCBQtsaW1pdEFjdGlvbgkAzAgCCQEMSW50ZWdlckVudHJ5AgUQa2V5TGFzdExpbWl0TGVmdAkAZQIFB21heFVzZHQFCnVzZHRBbW91bnQJAMwIAgkBDlNjcmlwdFRyYW5zZmVyAwgFAWkGY2FsbGVyBQp1c2R0QW1vdW50BQt1c2R0QXNzZXRJZAUDbmlsBQ1wcm9sb2dBY3Rpb25zBQp1c2R0QW1vdW50AWkBEXNlbGxBY3Jlc1JFQURPTkxZAgdhZGRyZXNzC2FjcmVzQW1vdW50BA0kdDAxODMxNDE4MzYyCQERZ2V0U3dhcExpbWl0QWNyZXMABAtsaW1pdEFjdGlvbggFDSR0MDE4MzE0MTgzNjICXzEEB21heFVzZHQIBQ0kdDAxODMxNDE4MzYyAl8yBAp1c2R0QW1vdW50CQBpAgkAaQIFC2FjcmVzQW1vdW50BRVVU0RUMkFDUkVTX01VTFRJUExJRVIAAgkAlAoCBQNuaWwJAMwIAgUKdXNkdEFtb3VudAkAzAgCBQVNVUxUNwkAzAgCCQBoAgUHbWF4VXNkdAUVVVNEVDJBQ1JFU19NVUxUSVBMSUVSCQDMCAIAAAUDbmlsAWkBEGNvbnZlcnRPbGRTdGFrZXMABA1wcm9sb2dBY3Rpb25zCQEGcHJvbG9nAQUBaQMJAGYCBRFPTERfU1RBS0lOR19ERUFETAgFCWxhc3RCbG9jawl0aW1lc3RhbXAJAAIBCQCsAgICD0Rpc2FibGVkIHVudGlsIAkApAMBCQBpAgURT0xEX1NUQUtJTkdfREVBREwA6AcEB2FkZHJlc3MJAKUIAQgFAWkGY2FsbGVyAwkBAiE9AgkAkAMBCAUBaQhwYXltZW50cwAACQACAQIUTm8gcGF5bWVudHMgcmVxdWlyZWQED29sZEFjcmVzQWRkcmVzcwkBEUBleHRyTmF0aXZlKDEwNjIpAQkBEUBleHRyTmF0aXZlKDEwNTgpAQUTb2xkQWNyZXNDb250cmFjdEtleQQGYW1vdW50CQELdmFsdWVPckVsc2UCCQCaCAIFD29sZEFjcmVzQWRkcmVzcwkBF2tleUFjcmVzU3Rha2VkQW10QnlVc2VyAQUHYWRkcmVzcwAABAlnb3RBY3JlczADCQBmAgUGYW1vdW50AAAJAQxhc1R1cGxlMkludHMBCQD8BwQFD29sZEFjcmVzQWRkcmVzcwIUdW5zdGFrZUFjcmVzQ2FsbGJhY2sJAMwIAgUGYW1vdW50CQDMCAIFB2FkZHJlc3MFA25pbAUDbmlsCQCUCgIAAAAABBFvbGRTdGFraW5nQWRkcmVzcwkBEUBleHRyTmF0aXZlKDEwNjIpAQUVb2xkU3Rha2luZ0NvbnRyYWN0U3RyBAhsYW5kc1N0cgkAnQgCBRFvbGRTdGFraW5nQWRkcmVzcwkBFWtleVN0YWtlZExhbmRzQnlPd25lcgEFB2FkZHJlc3MEC2xhbmRzUmVzdWx0AwkBCWlzRGVmaW5lZAEFCGxhbmRzU3RyBAVsYW5kcwkAvQkCCQEFdmFsdWUBBQhsYW5kc1N0cgIBXwMJAGYCCQCQAwEFBWxhbmRzBRRNQVhfTEFORFNfVE9fQ09OVkVSVAkAAgEJAKwCAgkArAICAhNZb3UgaGF2ZSBtb3JlIHRoYW4gCQCkAwEFFE1BWF9MQU5EU19UT19DT05WRVJUAkcgbGFuZHMgc3Rha2VkLCBwbGVhc2UgY29udGFjdCBzdXBwb3J0LCB3ZSdsbCBwcm9jZXNzIHlvdXIgY2FzZSBtYW51YWxseQoBB29uZUxhbmQCA2FjYwtsYW5kQXNzZXRJZAMJAAACBQtsYW5kQXNzZXRJZAIACQACAQIXbGFuZEFzc2V0SWQgaXMgcmVxdWlyZWQEAXIJAQxhc1R1cGxlNUludHMBCQD8BwQFEW9sZFN0YWtpbmdBZGRyZXNzAhN1bnN0YWtlTGFuZENhbGxiYWNrCQDMCAIFC2xhbmRBc3NldElkCQDMCAIFB2FkZHJlc3MFA25pbAUDbmlsAwkAAAIFAXIFAXIJAJcKBQkAZAIIBQNhY2MCXzEIBQFyAl8xCQBkAggFA2FjYwJfMggFAXICXzIJAGQCCAUDYWNjAl8zCAUBcgJfMwkAZAIIBQNhY2MCXzQIBQFyAl80CQBkAggFA2FjYwJfNQgFAXICXzUJAAIBAiRTdHJpY3QgdmFsdWUgaXMgbm90IGVxdWFsIHRvIGl0c2VsZi4EAnJyCgACJGwFBWxhbmRzCgACJHMJAJADAQUCJGwKAAUkYWNjMAkAlwoFAAAAAAAAAAAAAAoBBSRmMF8xAgIkYQIkaQMJAGcCBQIkaQUCJHMFAiRhCQEHb25lTGFuZAIFAiRhCQCRAwIFAiRsBQIkaQoBBSRmMF8yAgIkYQIkaQMJAGcCBQIkaQUCJHMFAiRhCQACAQIUTGlzdCBzaXplIGV4Y2VlZHMgMTQJAQUkZjBfMgIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIFBSRhY2MwAAAAAQACAAMABAAFAAYABwAIAAkACgALAAwADQAOAwkAAAIFAnJyBQJycgQIZmluYWxpemUJAPwHBAURb2xkU3Rha2luZ0FkZHJlc3MCHHVuc3Rha2VMYW5kc0ZpbmFsaXplQ2FsbGJhY2sJAMwIAgUHYWRkcmVzcwUDbmlsBQNuaWwDCQAAAgUIZmluYWxpemUFCGZpbmFsaXplBANyZXEJAPwHBAUPb2xkQWNyZXNBZGRyZXNzAhRyZXF1ZXN0QWNyZXNDYWxsYmFjawkAzAgCCQBkAgkAZAIJAGQCCAUCcnICXzEIBQJycgJfMggFAnJyAl8zCAUCcnICXzQFA25pbAUDbmlsAwkAAAIFA3JlcQUDcmVxBA0kdDAyMDg3NjIxMDE0CQEOaXNzdWVOZnRDdXN0b20IBQ1pZHhOYW1lU2hvdmVsBQdpZHhLZXlQBQppZHhDb2xsRGlnBQppZHhSYXJpdHlQAAMFDmlkeERlc2NyU2hvdmVsBQ5pZHhCb251c1R5cGVGcAgFAWkGY2FsbGVyBApuZnRBY3Rpb25zCAUNJHQwMjA4NzYyMTAxNAJfMQQKbmZ0QXNzZXRJZAgFDSR0MDIwODc2MjEwMTQCXzIJAJgKBggFAnJyAl8xCAUCcnICXzIIBQJycgJfMwgFAnJyAl80CAUCcnICXzUFCm5mdEFjdGlvbnMJAAIBAiRTdHJpY3QgdmFsdWUgaXMgbm90IGVxdWFsIHRvIGl0c2VsZi4JAAIBAiRTdHJpY3QgdmFsdWUgaXMgbm90IGVxdWFsIHRvIGl0c2VsZi4JAAIBAiRTdHJpY3QgdmFsdWUgaXMgbm90IGVxdWFsIHRvIGl0c2VsZi4JAJgKBgAAAAAAAAAAAAAFA25pbAQLZHVja0Fzc2V0SWQJAQt2YWx1ZU9yRWxzZQIJAJ0IAgURb2xkU3Rha2luZ0FkZHJlc3MJARRrZXlTdGFrZWREdWNrQnlPd25lcgEFB2FkZHJlc3MCAAQKZHVja1Jlc3VsdAMJAQIhPQIFC2R1Y2tBc3NldElkAgAJAQxhc1R1cGxlM0ludHMBCQD8BwQFEW9sZFN0YWtpbmdBZGRyZXNzAhN1bnN0YWtlRHVja0NhbGxiYWNrCQDMCAIFC2R1Y2tBc3NldElkCQDMCAIFB2FkZHJlc3MFA25pbAUDbmlsCQCVCgMAAAAAAAAEAXgJARlzdGFrZVVuc3Rha2VBY3Jlc0ludGVybmFsAwkAZAIJAGQCCQBkAgkAZAIJAGQCCQBkAgkAZAIIBQlnb3RBY3JlczACXzEIBQtsYW5kc1Jlc3VsdAJfMQgFC2xhbmRzUmVzdWx0Al8yCAULbGFuZHNSZXN1bHQCXzMIBQtsYW5kc1Jlc3VsdAJfNAgFCmR1Y2tSZXN1bHQCXzEIBQpkdWNrUmVzdWx0Al8yCAUKZHVja1Jlc3VsdAJfMwUHYWRkcmVzcwAACQCUCgIJAM4IAgkAzggCCAULbGFuZHNSZXN1bHQCXzYIBQF4Al8xBQ1wcm9sb2dBY3Rpb25zCQCVCgMIBQlnb3RBY3JlczACXzIIBQtsYW5kc1Jlc3VsdAJfNQgFAXgCXzIBaQEUdW5zdGFrZUxhbmRzUkVBRE9OTFkBB2FkZHJlc3MEEW9sZFN0YWtpbmdBZGRyZXNzCQERQGV4dHJOYXRpdmUoMTA2MikBBRVvbGRTdGFraW5nQ29udHJhY3RTdHIECGxhbmRzU3RyCQCdCAIFEW9sZFN0YWtpbmdBZGRyZXNzCQEVa2V5U3Rha2VkTGFuZHNCeU93bmVyAQUHYWRkcmVzcwQLbGFuZHNSZXN1bHQDCQEJaXNEZWZpbmVkAQUIbGFuZHNTdHIEBWxhbmRzCQC9CQIJAQV2YWx1ZQEFCGxhbmRzU3RyAgFfCgEHb25lTGFuZAIDYWNjC2xhbmRBc3NldElkAwkAAAIFC2xhbmRBc3NldElkAgAJAAIBAhdsYW5kQXNzZXRJZCBpcyByZXF1aXJlZAQBcgkBDGFzVHVwbGU0SW50cwEJAPwHBAURb2xkU3Rha2luZ0FkZHJlc3MCE3Vuc3Rha2VMYW5kUkVBRE9OTFkJAMwIAgULbGFuZEFzc2V0SWQJAMwIAgUHYWRkcmVzcwUDbmlsBQNuaWwJAJYKBAkAZAIIBQNhY2MCXzEIBQFyAl8xCQBkAggFA2FjYwJfMggFAXICXzIJAGQCCAUDYWNjAl8zCAUBcgJfMwkAZAIIBQNhY2MCXzQIBQFyAl80CgACJGwFBWxhbmRzCgACJHMJAJADAQUCJGwKAAUkYWNjMAkAlgoEAAAAAAAAAAAKAQUkZjBfMQICJGECJGkDCQBnAgUCJGkFAiRzBQIkYQkBB29uZUxhbmQCBQIkYQkAkQMCBQIkbAUCJGkKAQUkZjBfMgICJGECJGkDCQBnAgUCJGkFAiRzBQIkYQkAAgECFUxpc3Qgc2l6ZSBleGNlZWRzIDEwMAkBBSRmMF8yAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgUFJGFjYzAAAAABAAIAAwAEAAUABgAHAAgACQAKAAsADAANAA4ADwAQABEAEgATABQAFQAWABcAGAAZABoAGwAcAB0AHgAfACAAIQAiACMAJAAlACYAJwAoACkAKgArACwALQAuAC8AMAAxADIAMwA0ADUANgA3ADgAOQA6ADsAPAA9AD4APwBAAEEAQgBDAEQARQBGAEcASABJAEoASwBMAE0ATgBPAFAAUQBSAFMAVABVAFYAVwBYAFkAWgBbAFwAXQBeAF8AYABhAGIAYwBkCQCWCgQAAAAAAAAAAAkAlAoCBQNuaWwFC2xhbmRzUmVzdWx0AWkBEnN0YWtlQWNyZXNDYWxsYmFjawEEYWRkcgMJAQIhPQIIBQFpBmNhbGxlcgkBEUBleHRyTmF0aXZlKDEwNjIpAQUVb2xkU3Rha2luZ0NvbnRyYWN0U3RyCQACAQIRUGVybWlzc2lvbiBkZW5pZWQJARlzdGFrZVVuc3Rha2VBY3Jlc0ludGVybmFsAwgJAJEDAggFAWkIcGF5bWVudHMAAAZhbW91bnQFBGFkZHIAAAFpARpzaW11bGF0ZVN0YWtlQWNyZXNSRUFET05MWQIHYWRkcmVzcwthZGRlZEFtb3VudAQJYW1vdW50S2V5CQEXa2V5QWNyZXNTdGFrZWRBbXRCeVVzZXIBBQdhZGRyZXNzBA5uZXdBY3Jlc0Ftb3VudAkAZAIJAQt2YWx1ZU9yRWxzZQIJAJ8IAQUJYW1vdW50S2V5AAAFC2FkZGVkQW1vdW50BAhvbGRUb3RhbAkBC3ZhbHVlT3JFbHNlAgkAnwgBBRJhY3Jlc1N0YWtkVG90YWxLZXkAAAQJdXNlckZwS2V5CQEVa2V5RmFybWluZ1Bvd2VyQnlVc2VyAQUHYWRkcmVzcwQFb2xkRnAJAQt2YWx1ZU9yRWxzZQIJAJ8IAQUJdXNlckZwS2V5AAAECXVzZXJCb251cwkBC3ZhbHVlT3JFbHNlAgkAmggCBQ5hY3JlczJDb250cmFjdAkBEGtleVVzZXJGdWxsQm9udXMBBQdhZGRyZXNzAAAEDSR0MDIzMjg1MjMzNzIJAR5nZXRGYXJtaW5nUG93ZXJCeUFjcmVzQW5kQm9udXMCBQ5uZXdBY3Jlc0Ftb3VudAUJdXNlckJvbnVzBAxuZXdCb251c2VkRnAIBQ0kdDAyMzI4NTIzMzcyAl8xBAdpZ25vcmVkCAUNJHQwMjMyODUyMzM3MgJfMgQKb2xkVG90YWxGcAkBC3ZhbHVlT3JFbHNlAgkAnwgBBRR0b3RhbEZhcm1pbmdQb3dlcktleQAABApuZXdUb3RhbEZwCQBlAgkAZAIFCm9sZFRvdGFsRnAFDG5ld0JvbnVzZWRGcAUFb2xkRnAJAJQKAgUDbmlsCQDMCAIFBW9sZEZwCQDMCAIFDG5ld0JvbnVzZWRGcAkAzAgCBQpvbGRUb3RhbEZwCQDMCAIFCm5ld1RvdGFsRnAFA25pbAFpAQtpc3N1ZVBpY2tDMQEKZm9yQWRkcmVzcwMJAQIhPQIIBQFpBmNhbGxlcgULd2xnQ29udHJhY3QJAAIBAhFQZXJtaXNzaW9uIGRlbmllZAkBDmlzc3VlTmZ0Q3VzdG9tCAUOaWR4TmFtZVBpY2theGUFB2lkeEtleUMFCmlkeENvbGxEaWcFCmlkeFJhcml0eUMAAQUPaWR4RGVzY3JQaWNrYXhlBQ5pZHhCb251c1R5cGVGcAkBEUBleHRyTmF0aXZlKDEwNjIpAQUKZm9yQWRkcmVzcwFpAQhzdGFrZU5GVAAEDXByb2xvZ0FjdGlvbnMJAQZwcm9sb2cBBQFpAwkBAiE9AgkAkAMBCAUBaQhwYXltZW50cwABCQACAQIcRXhhY3RseSBvbmUgcGF5bWVudCByZXF1aXJlZAQDcG10CQEFdmFsdWUBCQCRAwIIBQFpCHBheW1lbnRzAAADCQECIT0CCAUDcG10BmFtb3VudAABCQACAQInTkZUIHRva2VuIHNob3VsZCBiZSBhdHRhY2hlZCBhcyBwYXltZW50BAdhc3NldElkCQEFdmFsdWUBCAUDcG10B2Fzc2V0SWQEBWFzc2V0CQEFdmFsdWUBCQDsBwEFB2Fzc2V0SWQECmFzc2V0SWRTdHIJANgEAQUHYXNzZXRJZAQEYWRkcgkApQgBCAUBaQZjYWxsZXIEB25mdHNLZXkJARRrZXlTdGFrZWRORlRzQnlPd25lcgEFBGFkZHIEB25mdHNTdHIJAKIIAQUHbmZ0c0tleQQEbmZ0cwMJAQlpc0RlZmluZWQBBQduZnRzU3RyCQC8CQIJAQV2YWx1ZQEFB25mdHNTdHICAV8FA25pbAMJAQ9jb250YWluc0VsZW1lbnQCBQRuZnRzBQphc3NldElkU3RyCQACAQkArAICAiFZb3VyIHN0YWtlZCBORlRzIGFscmVhZHkgY29udGFpbiAFCmFzc2V0SWRTdHIDCQBnAgkAkAMBBQRuZnRzBRdNQVhfTkZUU19TVEFLRURfQllfVVNFUgkAAgEJAKwCAgkArAICAhlZb3VyIGFscmVhZHkgc3Rha2VkIG1heCAoCQCkAwEFF01BWF9ORlRTX1NUQUtFRF9CWV9VU0VSAgYpIE5GVHMECmxpc3RBY3Rpb24JAQtTdHJpbmdFbnRyeQIFB25mdHNLZXkJALoJAgkAzQgCBQRuZnRzBQphc3NldElkU3RyAgFfAwkAAAIIBQVhc3NldAZpc3N1ZXIFBHRoaXMEDSR0MDI0NzgxMjQ5NzEJARBzdGFrZU5mdEludGVybmFsBgUEYWRkcgUKYXNzZXRJZFN0cgkAaAIJARJib251c0J5RGVzY3JpcHRpb24BCQEFdmFsdWUBCAUFYXNzZXQLZGVzY3JpcHRpb24AkE4JARJrZXlVc2VyV2xOZnROdW1iZXIBBQRhZGRyBRNrZXlXbE5mdFRvdGFsU3Rha2VkBQtNQVhfV0xfTkZUUwQHYWN0aW9ucwgFDSR0MDI0NzgxMjQ5NzECXzEEEHdsZ0NsYWltZWRBbW91bnQIBQ0kdDAyNDc4MTI0OTcxAl8yCQCUCgIJAM0IAgkAzggCBQ1wcm9sb2dBY3Rpb25zBQdhY3Rpb25zBQpsaXN0QWN0aW9uBRB3bGdDbGFpbWVkQW1vdW50AwkAAAIJAQ9pc0Fya2ltYWxJc3N1ZWQBBQVhc3NldAIACQACAQI0T25seSBXYXZlc0xhbmRzIGFuZCBBcmtpbWFscyBORlQgdG9rZW5zIGFyZSBhY2NlcHRlZAQNJHQwMjUxNTIyNTMwMwkBEHN0YWtlTmZ0SW50ZXJuYWwGBQRhZGRyBQphc3NldElkU3RyBQ1BUktfTkZUX0JPTlVTCQETa2V5VXNlckFya05mdE51bWJlcgEFBGFkZHIFFGtleUFya05mdFRvdGFsU3Rha2VkBQxNQVhfQVJLX05GVFMEB2FjdGlvbnMIBQ0kdDAyNTE1MjI1MzAzAl8xBBB3bGdDbGFpbWVkQW1vdW50CAUNJHQwMjUxNTIyNTMwMwJfMgkAlAoCCQDNCAIJAM4IAgUNcHJvbG9nQWN0aW9ucwUHYWN0aW9ucwUKbGlzdEFjdGlvbgUQd2xnQ2xhaW1lZEFtb3VudAFpAQp1bnN0YWtlTkZUAQphc3NldElkU3RyBA1wcm9sb2dBY3Rpb25zCQEGcHJvbG9nAQUBaQMJAQIhPQIJAJADAQgFAWkIcGF5bWVudHMAAAkAAgECFE5vIHBheW1lbnRzIHJlcXVpcmVkBAdhc3NldElkCQDZBAEFCmFzc2V0SWRTdHIEBGFkZHIJAKUIAQgFAWkGY2FsbGVyBAVhc3NldAkBBXZhbHVlAQkA7AcBBQdhc3NldElkBAd0aW1lS2V5CQEea2V5U3Rha2VkVGltZUJ5QXNzZXRJZEFuZE93bmVyAgUKYXNzZXRJZFN0cgUEYWRkcgMJAQEhAQkBCWlzRGVmaW5lZAEJAJ8IAQUHdGltZUtleQkAAgEJAKwCAgkArAICAgRORlQgCAUFYXNzZXQEbmFtZQIVIGlzIG5vdCBzdGFrZWQgYnkgeW91BAduZnRzS2V5CQEUa2V5U3Rha2VkTkZUc0J5T3duZXIBBQRhZGRyBARuZnRzCQC8CQIJAQt2YWx1ZU9yRWxzZQIJAKIIAQUHbmZ0c0tleQIAAgFfBANpZHgJAM8IAgUEbmZ0cwUKYXNzZXRJZFN0cgMJAQEhAQkBCWlzRGVmaW5lZAEFA2lkeAkAAgEJAKwCAgIfWW91ciBzdGFrZWQgTkZUcyBkb24ndCBjb250YWluIAUKYXNzZXRJZFN0cgQKbGlzdEFjdGlvbgMJAGYCCQCQAwEFBG5mdHMAAQkBC1N0cmluZ0VudHJ5AgUHbmZ0c0tleQkAugkCCQDRCAIFBG5mdHMJAQV2YWx1ZQEFA2lkeAIBXwkBC0RlbGV0ZUVudHJ5AQUHbmZ0c0tleQQEaXNXTAkAAAIIBQVhc3NldAZpc3N1ZXIFBHRoaXMDBQRpc1dMBAt3bE5mdE51bWJlcgkBC3ZhbHVlT3JFbHNlAgkAnwgBCQESa2V5VXNlcldsTmZ0TnVtYmVyAQUEYWRkcgAABAhib251c1ZhbAkAaAIJARJib251c0J5RGVzY3JpcHRpb24BCQEFdmFsdWUBCAUFYXNzZXQLZGVzY3JpcHRpb24AkE4EDSR0MDI2NDY4MjY1NDcJARlzdGFrZVVuc3Rha2VBY3Jlc0ludGVybmFsAwAABQRhZGRyCQEBLQEFCGJvbnVzVmFsBAdhY3Rpb25zCAUNJHQwMjY0NjgyNjU0NwJfMQQQd2xnQ2xhaW1lZEFtb3VudAgFDSR0MDI2NDY4MjY1NDcCXzIJAJQKAgkAzggCCQDNCAIJAM0IAgkAzQgCCQDNCAIJAM0IAgUHYWN0aW9ucwUKbGlzdEFjdGlvbgkBDEludGVnZXJFbnRyeQIJARJrZXlVc2VyV2xOZnROdW1iZXIBBQRhZGRyCQBlAgULd2xOZnROdW1iZXIAAQkBDEludGVnZXJFbnRyeQIFE2tleVdsTmZ0VG90YWxTdGFrZWQJAJYDAQkAzAgCAAAJAMwIAgkAZQIJAQt2YWx1ZU9yRWxzZQIJAJ8IAQUTa2V5V2xOZnRUb3RhbFN0YWtlZAAAAAEFA25pbAkBC0RlbGV0ZUVudHJ5AQkBHmtleVN0YWtlZFRpbWVCeUFzc2V0SWRBbmRPd25lcgIJANgEAQUHYXNzZXRJZAUEYWRkcgkBDlNjcmlwdFRyYW5zZmVyAwgFAWkGY2FsbGVyAAEFB2Fzc2V0SWQFDXByb2xvZ0FjdGlvbnMFEHdsZ0NsYWltZWRBbW91bnQEC2Fya2ltYWxOYW1lCQEPaXNBcmtpbWFsSXNzdWVkAQUFYXNzZXQDCQAAAgULYXJraW1hbE5hbWUCAAkAAgECNE9ubHkgV2F2ZXNMYW5kcyBhbmQgQXJraW1hbHMgTkZUIHRva2VucyBhcmUgYWNjZXB0ZWQEDGFya05mdE51bWJlcgkBC3ZhbHVlT3JFbHNlAgkAnwgBCQETa2V5VXNlckFya05mdE51bWJlcgEFBGFkZHIAAAQNJHQwMjcyMDcyNzI5MQkBGXN0YWtlVW5zdGFrZUFjcmVzSW50ZXJuYWwDAAAFBGFkZHIJAQEtAQUNQVJLX05GVF9CT05VUwQHYWN0aW9ucwgFDSR0MDI3MjA3MjcyOTECXzEEEHdsZ0NsYWltZWRBbW91bnQIBQ0kdDAyNzIwNzI3MjkxAl8yCQCUCgIJAM4IAgkAzQgCCQDNCAIJAM0IAgkAzQgCBQdhY3Rpb25zBQpsaXN0QWN0aW9uCQEMSW50ZWdlckVudHJ5AgkBE2tleVVzZXJBcmtOZnROdW1iZXIBBQRhZGRyCQBlAgUMYXJrTmZ0TnVtYmVyAAEJAQtEZWxldGVFbnRyeQEJAR5rZXlTdGFrZWRUaW1lQnlBc3NldElkQW5kT3duZXICCQDYBAEFB2Fzc2V0SWQFBGFkZHIJAQ5TY3JpcHRUcmFuc2ZlcgMIBQFpBmNhbGxlcgABBQdhc3NldElkBQ1wcm9sb2dBY3Rpb25zBRB3bGdDbGFpbWVkQW1vdW50AWkBDGV4Y2hhbmdlTkZUcwAEDXByb2xvZ0FjdGlvbnMJAQZwcm9sb2cBBQFpAwkAZgIAAwkAkAMBCAUBaQhwYXltZW50cwkAAgECKU1pbiBvbmUgV0xHT0xEIGFuZCAyIE5GVCBwYXltZW50cyBhbGxvd2VkAwkAZgIJAJADAQgFAWkIcGF5bWVudHMACgkAAgECKU1heCBvbmUgV0xHT0xEIGFuZCA5IE5GVCBwYXltZW50cyBhbGxvd2VkBARhZGRyCQClCAEIBQFpBmNhbGxlcgoBBWFkZFVwAgNhY2MDcG10BAdhc3NldElkCQETdmFsdWVPckVycm9yTWVzc2FnZQIIBQNwbXQHYXNzZXRJZAIaV0FWRVMgcGF5bWVudHMgbm90IGFsbG93ZWQDCQAAAgUHYXNzZXRJZAUKd2xnQXNzZXRJZAkAlgoECQBkAggFA2FjYwJfMQgFA3BtdAZhbW91bnQIBQNhY2MCXzIIBQNhY2MCXzMIBQNhY2MCXzQEBWFzc2V0CQEFdmFsdWUBCQDsBwEFB2Fzc2V0SWQDCQECIT0CCAUFYXNzZXQGaXNzdWVyBQR0aGlzCQACAQIbT25seSBXTC1pc3N1ZWQgTkZUcyBhbGxvd2VkBAhyYXJpdHlJeAkBFnJhcml0eUlkeEJ5RGVzY3JpcHJpb24BCQEFdmFsdWUBCAUFYXNzZXQLZGVzY3JpcHRpb24DAwkAZgIIBQNhY2MCXzQAAAkBAiE9AgUIcmFyaXR5SXgIBQNhY2MCXzQHCQACAQItWW91IGNhbiBleGNoYW5nZSBvbmx5IE5GVHMgb2YgdGhlIHNhbWUgcmFyaXR5BAlib251c1BlcmMJARJib251c0J5RGVzY3JpcHRpb24BCQEFdmFsdWUBCAUFYXNzZXQLZGVzY3JpcHRpb24JAJYKBAgFA2FjYwJfMQkAZAIIBQNhY2MCXzIFCWJvbnVzUGVyYwkAzQgCCAUDYWNjAl8zCQEEQnVybgIFB2Fzc2V0SWQAAQUIcmFyaXR5SXgEDSR0MDI4NjgwMjg4OTYKAAIkbAgFAWkIcGF5bWVudHMKAAIkcwkAkAMBBQIkbAoABSRhY2MwCQCWCgQAAAAABQNuaWwA////////////AQoBBSRmMF8xAgIkYQIkaQMJAGcCBQIkaQUCJHMFAiRhCQEFYWRkVXACBQIkYQkAkQMCBQIkbAUCJGkKAQUkZjBfMgICJGECJGkDCQBnAgUCJGkFAiRzBQIkYQkAAgECFExpc3Qgc2l6ZSBleGNlZWRzIDEwCQEFJGYwXzICCQEFJGYwXzECCQEFJGYwXzECCQEFJGYwXzECCQEFJGYwXzECCQEFJGYwXzECCQEFJGYwXzECCQEFJGYwXzECCQEFJGYwXzECCQEFJGYwXzECCQEFJGYwXzECBQUkYWNjMAAAAAEAAgADAAQABQAGAAcACAAJAAoEBndsZ0ZlZQgFDSR0MDI4NjgwMjg4OTYCXzEECnRvdGFsQm9udXMIBQ0kdDAyODY4MDI4ODk2Al8yBAtidXJuQWN0aW9ucwgFDSR0MDI4NjgwMjg4OTYCXzMECXJhcml0eUlkeAgFDSR0MDI4NjgwMjg4OTYCXzQEDG5ld1Jhcml0eUlkeAMJAAACBQlyYXJpdHlJZHgFCmlkeFJhcml0eUMDCQBmAgkAkQMCBRByYXJpdHlUaHJlc2hvbGRzBQ1pZHhUaHJlc2hvbGRDBQp0b3RhbEJvbnVzBQppZHhSYXJpdHlDAwkAZgIJAJEDAgUQcmFyaXR5VGhyZXNob2xkcwUNaWR4VGhyZXNob2xkVQUKdG90YWxCb251cwUKaWR4UmFyaXR5VQkAAgEJAKwCAgkArAICAjpZb3UgY2FuIGFkdmFuY2Ugb25seSBvbmUgbGV2ZWwgb2YgcmFyaXR5LCBtYXggdG90YWwgYm9udXMgCQCkAwEJAJEDAgUQcmFyaXR5VGhyZXNob2xkcwUNaWR4VGhyZXNob2xkVQIBJQMJAAACBQlyYXJpdHlJZHgFCmlkeFJhcml0eVUDCQBmAgkAkQMCBRByYXJpdHlUaHJlc2hvbGRzBQ1pZHhUaHJlc2hvbGRVBQp0b3RhbEJvbnVzBQppZHhSYXJpdHlVAwkAZgIJAJEDAgUQcmFyaXR5VGhyZXNob2xkcwUNaWR4VGhyZXNob2xkTAUKdG90YWxCb251cwUKaWR4UmFyaXR5TAkAAgEJAKwCAgkArAICAjpZb3UgY2FuIGFkdmFuY2Ugb25seSBvbmUgbGV2ZWwgb2YgcmFyaXR5LCBtYXggdG90YWwgYm9udXMgCQCkAwEJAJEDAgUQcmFyaXR5VGhyZXNob2xkcwUNaWR4VGhyZXNob2xkTAIBJQMJAAACBQlyYXJpdHlJZHgFCmlkeFJhcml0eUwDCQBmAgkAkQMCBRByYXJpdHlUaHJlc2hvbGRzBQ1pZHhUaHJlc2hvbGRMBQp0b3RhbEJvbnVzBQppZHhSYXJpdHlMBQppZHhSYXJpdHlFAwkAAAIFCXJhcml0eUlkeAUKaWR4UmFyaXR5RQUKaWR4UmFyaXR5RQMJAAACBQlyYXJpdHlJZHgFCmlkeFJhcml0eVAJAAIBAiZZb3UgY2FuJ3QgZXhjaGFuZ2UgTkZUcyBvZiB0aGlzIHJhcml0eQkAAgECDlVua25vd24gcmFyaXR5BAltaW5XbGdGZWUJAGsDBQp0b3RhbEJvbnVzBQZNVUxUMTQJAQtnZXRXbGdQcmljZQEAAAQGY2hhbmdlCQBlAgUGd2xnRmVlBQltaW5XbGdGZWUEB2ZvclRlYW0JAGkCBQltaW5XbGdGZWUAAgQJd2xnUmVtYWluCQEFYXNJbnQBCQD8BwQFC3dsZ0NvbnRyYWN0AgpidXJuV2xnb2xkCQDMCAIJAGUCBQltaW5XbGdGZWUFB2ZvclRlYW0FA25pbAUDbmlsAwkAZgIAAAUGY2hhbmdlCQACAQkArAICCQCsAgICE1lvdSBuZWVkIHRvIGF0dGFjaCAJAQpmaXhlZFBvaW50AgUJbWluV2xnRmVlAAgCDiBXTEdPTEQgYXMgZmVlBA1jaGFuZ2VBY3Rpb25zAwkAZgIFBmNoYW5nZQAACQDMCAIJAQ5TY3JpcHRUcmFuc2ZlcgMIBQFpBmNhbGxlcgUGY2hhbmdlBQp3bGdBc3NldElkBQNuaWwFA25pbAQNJHQwMzA0MzMzMDU5NAkBDmlzc3VlTmZ0Q3VzdG9tCAUOaWR4TmFtZVBpY2theGUFDG5ld1Jhcml0eUlkeAUKaWR4Q29sbERpZwUMbmV3UmFyaXR5SWR4BQp0b3RhbEJvbnVzBQ9pZHhEZXNjclBpY2theGUFDmlkeEJvbnVzVHlwZUZwCAUBaQZjYWxsZXIED2lzc3VlTmZ0QWN0aW9ucwgFDSR0MDMwNDMzMzA1OTQCXzEECm5mdEFzc2V0SWQIBQ0kdDAzMDQzMzMwNTk0Al8yBAZidXJuZWQJAJADAQULYnVybkFjdGlvbnMEEmJ1cm5Db3VudGVyQWN0aW9ucwMJAAACBQZidXJuZWQAAAUDbmlsCQDMCAIJAQxJbnRlZ2VyRW50cnkCBRFrZXlOZnRUb3RhbEJ1cm5lZAkAZAIJAQt2YWx1ZU9yRWxzZQIJAJ8IAQURa2V5TmZ0VG90YWxCdXJuZWQAAAUGYnVybmVkBQNuaWwJAJQKAgkAzQgCCQDOCAIJAM4IAgkAzggCCQDOCAIFD2lzc3VlTmZ0QWN0aW9ucwULYnVybkFjdGlvbnMFEmJ1cm5Db3VudGVyQWN0aW9ucwUNcHJvbG9nQWN0aW9ucwUNY2hhbmdlQWN0aW9ucwkBDlNjcmlwdFRyYW5zZmVyAwkBEUBleHRyTmF0aXZlKDEwNjIpAQkBEUBleHRyTmF0aXZlKDEwNTMpAgULd2xnQ29udHJhY3QFC3RlYW1BZGRyS2V5BQdmb3JUZWFtBQp3bGdBc3NldElkCQCUCgIFCm5mdEFzc2V0SWQFCXdsZ1JlbWFpbgFpAQxvcGVuTmZ0Q2hlc3QABA1wcm9sb2dBY3Rpb25zCQEGcHJvbG9nAQUBaQMJAQIhPQIJAJADAQgFAWkIcGF5bWVudHMAAQkAAgECImV4YWN0bHkgMSBwYXltZW50IG11c3QgYmUgYXR0YWNoZWQEA3BtdAkAkQMCCAUBaQhwYXltZW50cwAABAl3bGdBbW91bnQIBQNwbXQGYW1vdW50AwMJAQEhAQkBCWlzRGVmaW5lZAEIBQNwbXQHYXNzZXRJZAYJAQIhPQIJAQV2YWx1ZQEIBQNwbXQHYXNzZXRJZAUKd2xnQXNzZXRJZAkAAgECFVdMR09MRCBwYXltZW50cyBvbmx5IQQJbWluV2xnRmVlCQBrAwUUTkZUX0NIRVNUX1BSSUNFX1VTRFQFBU1VTFQ4CQELZ2V0V2xnUHJpY2UBAAAEBmNoYW5nZQkAZQIFCXdsZ0Ftb3VudAUJbWluV2xnRmVlBAdmb3JUZWFtCQBpAgUJbWluV2xnRmVlAAIECXdsZ1JlbWFpbgkBBWFzSW50AQkA/AcEBQt3bGdDb250cmFjdAIKYnVybldsZ29sZAkAzAgCCQBlAgUJbWluV2xnRmVlBQdmb3JUZWFtBQNuaWwFA25pbAMJAGYCAAAFBmNoYW5nZQkAAgEJAKwCAgkArAICAhNZb3UgbmVlZCB0byBhdHRhY2ggCQEKZml4ZWRQb2ludAIFCW1pbldsZ0ZlZQAIAg4gV0xHT0xEIGFzIGZlZQQNY2hhbmdlQWN0aW9ucwMJAGYCBQZjaGFuZ2UAAAkAzAgCCQEOU2NyaXB0VHJhbnNmZXIDCAUBaQZjYWxsZXIFBmNoYW5nZQUKd2xnQXNzZXRJZAUDbmlsBQNuaWwEBGFkZHIJAKUIAQgFAWkGY2FsbGVyBAlmaW5pc2hLZXkJAQlrZXlDb21taXQBBQRhZGRyBAtmaW5pc2hCbG9jawkBE3ZhbHVlT3JFcnJvck1lc3NhZ2UCCQCfCAEFCWZpbmlzaEtleQIkWW91IGhhdmUgdG8gY29tbWl0Rm9yUmFuZG9tKCkgZmlyc3QhAwkAZgIFC2ZpbmlzaEJsb2NrBQZoZWlnaHQJAAIBCQCsAgICNFJhbmRvbSBudW1iZXIgaXMgbm90IHJlYWR5IHlldCwgd2FpdCB1bnRpbCBoZWlnaHQgPSAJAKQDAQULZmluaXNoQmxvY2sEB2VudHJvcHkJAQV2YWx1ZQEICQEFdmFsdWUBCQDtBwEFC2ZpbmlzaEJsb2NrA3ZyZgQEc2FsdAkA2QQBCQCRAwIJALUJAgkBC3ZhbHVlT3JFbHNlAgkAoggBCQEUa2V5Q3VyV2Vla1R4SWRCeVVzZXIBBQRhZGRyAgo0Ml9ERUZBVUxUAgFfAAEEBHJhbmQJAQ9nZXRSYW5kb21OdW1iZXIDAGQFBHNhbHQFB2VudHJvcHkEDSR0MDMyNjEzMzI4ODUDCQBmAgBUBQRyYW5kCQCUCgIAAQUKaWR4UmFyaXR5QwMJAGYCAGIFBHJhbmQJAJQKAgAFBQppZHhSYXJpdHlVCQCUCgIACgUKaWR4UmFyaXR5TAQFYm9udXMIBQ0kdDAzMjYxMzMyODg1Al8xBAlyYXJpdHlJZHgIBQ0kdDAzMjYxMzMyODg1Al8yBA0kdDAzMjg4ODMzMDM4CQEOaXNzdWVOZnRDdXN0b20IBQ5pZHhOYW1lUGlja2F4ZQUJcmFyaXR5SWR4BQppZHhDb2xsRGlnBQlyYXJpdHlJZHgFBWJvbnVzBQ9pZHhEZXNjclBpY2theGUFDmlkeEJvbnVzVHlwZUZwCAUBaQZjYWxsZXIED2lzc3VlTmZ0QWN0aW9ucwgFDSR0MDMyODg4MzMwMzgCXzEECm5mdEFzc2V0SWQIBQ0kdDAzMjg4ODMzMDM4Al8yCQCUCgIJAM0IAgkAzQgCCQDOCAIJAM4IAgUPaXNzdWVOZnRBY3Rpb25zBQ1wcm9sb2dBY3Rpb25zBQ1jaGFuZ2VBY3Rpb25zCQEOU2NyaXB0VHJhbnNmZXIDCQERQGV4dHJOYXRpdmUoMTA2MikBCQERQGV4dHJOYXRpdmUoMTA1MykCBQt3bGdDb250cmFjdAULdGVhbUFkZHJLZXkFB2ZvclRlYW0FCndsZ0Fzc2V0SWQJAQtEZWxldGVFbnRyeQEFCWZpbmlzaEtleQkAlAoCBQpuZnRBc3NldElkBQl3bGdSZW1haW4BaQEPY29tbWl0Rm9yUmFuZG9tAAQNcHJvbG9nQWN0aW9ucwkBBnByb2xvZwEFAWkEBGFkZHIJAKUIAQgFAWkGY2FsbGVyBAlmaW5pc2hLZXkJAQlrZXlDb21taXQBBQRhZGRyAwkBCWlzRGVmaW5lZAEJAJ8IAQUJZmluaXNoS2V5CQACAQIuWW91IGFscmVhZHkgY29tbWl0ZWQgZm9yIHJhbmRvbSwgcGxlYXNlIHVzZSBpdAQLZmluaXNoQmxvY2sJAGQCBQZoZWlnaHQFDFJBTkRPTV9ERUxBWQkAlAoCCQDOCAIJAMwIAgkBDEludGVnZXJFbnRyeQIFCWZpbmlzaEtleQULZmluaXNoQmxvY2sFA25pbAUNcHJvbG9nQWN0aW9ucwULZmluaXNoQmxvY2sBaQEOZHJhd0RheWx5UHJvbW8AAwkBAiE9AggFAWkGY2FsbGVyBQR0aGlzCQACAQIRUGVybWlzc2lvbiBkZW5pZWQEBXRvZGF5CQBqAgUGaGVpZ2h0BQpEQVlfQkxPQ0tTBAhtYXhWYWx1ZQkBC3ZhbHVlT3JFbHNlAgkAnwgBBRRrZXlUb3RhbFByb21vVGlja2V0cwAAAwkAAAIFCG1heFZhbHVlAAAJAAIBAhJObyB0aWNrZXRzIHRvIGRyYXcEAWIJAGgCBQV0b2RheQUKREFZX0JMT0NLUwQBaAMJAGYCBQFiBQpWUkZfT0ZGU0VUBQFiCQBkAgUBYgUKVlJGX09GRlNFVAQHZW50cm9weQkBBXZhbHVlAQgJAQV2YWx1ZQEJAO0HAQUBaAN2cmYECHByb21vTWFwCQELdmFsdWVPckVsc2UCCQCiCAEFC2tleVByb21vTWFwAgADCQAAAgUIcHJvbW9NYXACAAkAAgECD05vIHBhcnRpY2lwYW50cwQJcHJvbW9MaXN0CQC9CQIFCHByb21vTWFwAgFfCgEKc2luZ2xlRHJhdwICYWMBagMJAGcCBQFqBQ5wcm9tb051bVByaXplcwUCYWMEBHJhbmQJAQ9nZXRSYW5kb21OdW1iZXIDCAUCYWMCXzEIBQJhYwJfMgUHZW50cm9weQQKcHJvbW80TGlzdAMJAAACCAUCYWMCXzMCAAUDbmlsCQC9CQIIBQJhYwJfMwIBXwoBDGNvdW50VGlja2V0cwIDYWNjAmVsBAVwYXJ0cwkAtQkCBQJlbAIBOgQEYWRkcgkAkQMCBQVwYXJ0cwAABAd0aWNrZXRzCQENcGFyc2VJbnRWYWx1ZQEJAJEDAgUFcGFydHMAAQQIbmV3VG90YWwJAGQCCAUDYWNjAl8xBQd0aWNrZXRzAwMJAAACCAUDYWNjAl8zAgAJAGYCBQhuZXdUb3RhbAUEcmFuZAcJAJUKAwUIbmV3VG90YWwFB3RpY2tldHMFBGFkZHIJAJUKAwUIbmV3VG90YWwIBQNhY2MCXzIIBQNhY2MCXzMEAXIKAAIkbAUKcHJvbW80TGlzdAoAAiRzCQCQAwEFAiRsCgAFJGFjYzAJAJUKAwAAAAACAAoBBSRmMF8xAgIkYQIkaQMJAGcCBQIkaQUCJHMFAiRhCQEMY291bnRUaWNrZXRzAgUCJGEJAJEDAgUCJGwFAiRpCgEFJGYwXzICAiRhAiRpAwkAZwIFAiRpBQIkcwUCJGEJAAIBAhRMaXN0IHNpemUgZXhjZWVkcyAyMAkBBSRmMF8yAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgUFJGFjYzAAAAABAAIAAwAEAAUABgAHAAgACQAKAAsADAANAA4ADwAQABEAEgATABQEBndpbm5lcggFAXICXzMDCQAAAgUGd2lubmVyAgAFAmFjBAhtYXBQYXJ0cwkAvQkCCAUCYWMCXzMFBndpbm5lcgQGbmV3TWFwAwkAAAIJAJEDAgUIbWFwUGFydHMAAAIACQCwAgIJAJEDAgUIbWFwUGFydHMAAQAFCQCsAgIJALMCAgkAkQMCBQhtYXBQYXJ0cwAAAAEJALACAgkAkQMCBQhtYXBQYXJ0cwABAAQEDSR0MDM1NjM2MzU3ODcJAQ1zdGFrZUFjcmVzRm9yAwUGd2lubmVyCQCRAwIFEnByb21vQXdhcmRQZXJSb3VuZAUBagYEDHN0YWtlQWN0aW9ucwgFDSR0MDM1NjM2MzU3ODcCXzEEF2lnbm9yZWRXbGdDbGFpbWVkQW1vdW50CAUNJHQwMzU2MzYzNTc4NwJfMgQHbmV3U2FsdAkA2QQBCQELdmFsdWVPckVsc2UCCQCdCAIFD3N0YWtpbmdDb250cmFjdAkBFGtleUN1cldlZWtUeElkQnlVc2VyAQUGd2lubmVyAgdERUZBVUxUCQCWCgQJAGUCCAUCYWMCXzEIBQFyAl8yBQduZXdTYWx0BQZuZXdNYXAJAM0IAggFAmFjAl80BQxzdGFrZUFjdGlvbnMEBWRyYXdzCgACJGwJAMwIAgAACQDMCAIAAQkAzAgCAAIFA25pbAoAAiRzCQCQAwEFAiRsCgAFJGFjYzAJAJYKBAUIbWF4VmFsdWUIBQFpDXRyYW5zYWN0aW9uSWQFCHByb21vTWFwBQNuaWwKAQUkZjBfMQICJGECJGkDCQBnAgUCJGkFAiRzBQIkYQkBCnNpbmdsZURyYXcCBQIkYQkAkQMCBQIkbAUCJGkKAQUkZjBfMgICJGECJGkDCQBnAgUCJGkFAiRzBQIkYQkAAgECE0xpc3Qgc2l6ZSBleGNlZWRzIDMJAQUkZjBfMgIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIFBSRhY2MwAAAAAQACAAMJAJQKAgkAzggCCQDMCAIJAQtTdHJpbmdFbnRyeQIFC2tleVByb21vTWFwCAUFZHJhd3MCXzMJAMwIAgkBDEludGVnZXJFbnRyeQIFFGtleVRvdGFsUHJvbW9UaWNrZXRzCAUFZHJhd3MCXzEFA25pbAgFBWRyYXdzAl80AAAAwFtU2w==", "height": 3412049, "applicationStatus": "succeeded", "spentComplexity": 0 } View: original | compacted Prev: AqoH5B9A5TnViM8xwAc94XBfkNzzg56WzQP7NuABDaA5 Next: GF9ZrVqtxwtdcPSkGuZrsZqMwPgyMXE3CcAW8SQHdkx2 Diff:
OldNewDifferences
2626 let l = {
2727 let m = k
2828 if ((base58'2W' == m))
29+ then 4487040
30+ else if ((base58'2T' == m))
31+ then 3412800
32+ else throw("Unknown chain")
33+ }
34+
35+let n = {
36+ let m = k
37+ if ((base58'2W' == m))
38+ then 4517280
39+ else if ((base58'2T' == m))
40+ then 3443040
41+ else throw("Unknown chain")
42+ }
43+
44+let o = {
45+ let m = k
46+ if ((base58'2W' == m))
47+ then 1440
48+ else if ((base58'2T' == m))
49+ then 60
50+ else throw("Unknown chain")
51+ }
52+
53+let p = {
54+ let m = k
55+ if ((base58'2W' == m))
2956 then 10080
3057 else if ((base58'2T' == m))
3158 then 180
3259 else throw("Unknown chain")
3360 }
3461
35-let n = {
62+let q = {
63+ let m = k
64+ if ((base58'2W' == m))
65+ then 0
66+ else if ((base58'2T' == m))
67+ then 1146000
68+ else throw("Unknown chain")
69+ }
70+
71+let r = {
3672 let m = k
3773 if ((base58'2W' == m))
3874 then base58'9wc3LXNA4TEBsXyKtoLE9mrbDD7WMHXvXrCjZvabLAsi'
4177 else throw("Unknown chain")
4278 }
4379
44-let o = {
80+let s = {
4581 let m = k
4682 if ((base58'2W' == m))
4783 then "3PFwYta8biEz31zpeFe5DJK8wE5trSpQVF8"
5086 else throw("Unknown chain")
5187 }
5288
53-let p = {
89+let t = {
90+ let m = k
91+ if ((base58'2W' == m))
92+ then "3PQCuvFbvh4LkPUnrnU1z3jnbA1p9m3WNhv"
93+ else if ((base58'2T' == m))
94+ then "3MumkGGztCKAXpWDqxkddofqXSUbqQkvSJy"
95+ else throw("Unknown chain")
96+ }
97+
98+let u = {
5499 let m = k
55100 if ((base58'2W' == m))
56101 then f
59104 else throw("Unknown chain")
60105 }
61106
62-let q = {
107+let v = {
63108 let m = k
64109 if ((base58'2W' == m))
65110 then "3PLncXtS1U83D6cQbFD3H8rBHPLgzxSFKZ1"
68113 else throw("Unknown chain")
69114 }
70115
71-func r (s,t) = valueOrErrorMessage(getString(s, t), makeString(["mandatory ", toString(s), ".", t, " is not defined"], ""))
116+func w (x,y) = valueOrErrorMessage(getString(x, y), makeString(["mandatory ", toString(x), ".", y, " is not defined"], ""))
72117
73118
74-let u = 1
119+let z = 1
75120
76-let v = 2
121+let A = 2
77122
78-let w = 5
123+let B = 5
79124
80-let x = 6
125+let C = 6
81126
82-func y () = "%s__restConfig"
127+func D () = "%s__restConfig"
83128
84129
85-func z () = "%s__rest2Addr"
130+func E () = "%s__rest2Addr"
86131
87132
88-func A (B) = split_4C(r(B, y()), a)
133+func F () = "%s__restAddr"
89134
90135
91-func C (D,E) = valueOrErrorMessage(addressFromString(D[E]), ("Rest cfg doesn't contain address at index " + toString(E)))
136+let G = addressFromStringValue(valueOrElse(getString(this, F()), t))
137+
138+func H (I) = split_4C(w(I, D()), a)
92139
93140
94-let F = addressFromStringValue(valueOrElse(getString(this, z()), o))
95-
96-let D = A(F)
97-
98-let G = C(D, u)
99-
100-let H = C(D, v)
101-
102-let I = C(D, w)
103-
104-let J = C(D, x)
105-
106-let K = "oldAcresContract"
107-
108-func L () = "contractsBlocked"
141+func J (K,L) = valueOrErrorMessage(addressFromString(K[L]), ("Rest cfg doesn't contain address at index " + toString(L)))
109142
110143
111-func M (N) = ("lastWeekTxIdByUser_" + N)
144+let M = 1
145+
146+let N = H(G)
147+
148+let O = J(N, M)
149+
150+let P = addressFromStringValue(valueOrElse(getString(this, E()), s))
151+
152+let K = H(P)
153+
154+let Q = J(K, z)
155+
156+let R = J(K, A)
157+
158+let S = J(K, B)
159+
160+let T = J(K, C)
161+
162+let U = "oldAcresContract"
163+
164+func V () = "contractsBlocked"
112165
113166
114-func O (N) = ("curWeekTxIdByUser_" + N)
167+func W (X) = ("lastWeekTxIdByUser_" + X)
115168
116169
117-func P (s) = ("finishBlockFor_" + s)
170+func Y (X) = ("curWeekTxIdByUser_" + X)
118171
119172
120-let Q = "wlg_assetId"
121-
122-let R = valueOrErrorMessage(getBinary(H, Q), "WLGOLD is not issued yet")
123-
124-let S = "acresIssuedAmount"
125-
126-let T = "acresAssetId"
127-
128-let U = valueOrErrorMessage(getBinary(G, T), "ACRES is not issued yet")
129-
130-func V (N) = ("acresStakedTimeByUser_" + N)
173+func Z (x) = ("finishBlockFor_" + x)
131174
132175
133-func W (X) = ("stakedLandsByOwner_" + X)
176+let aa = "wlg_assetId"
177+
178+let ab = valueOrErrorMessage(getBinary(R, aa), "WLGOLD is not issued yet")
179+
180+let ac = "acresIssuedAmount"
181+
182+let ad = "acresAssetId"
183+
184+let ae = valueOrErrorMessage(getBinary(Q, ad), "ACRES is not issued yet")
185+
186+func af (X) = ("acresStakedTimeByUser_" + X)
134187
135188
136-func Y (X) = ("stakedDuckByOwner_" + X)
189+func ag (ah) = ("stakedLandsByOwner_" + ah)
137190
138191
139-func Z (aa,N) = ((("st_" + aa) + "_") + N)
192+func ai (ah) = ("stakedDuckByOwner_" + ah)
140193
141194
142-func ab (X) = ("stakedNFTsByOwner_" + X)
195+func aj (ak,X) = ((("st_" + ak) + "_") + X)
143196
144197
145-func ac (ad) = {
146- let m = ad
198+func al (ah) = ("stakedNFTsByOwner_" + ah)
199+
200+
201+func am (x) = ("promoAcres_" + x)
202+
203+
204+func an (x) = ("promoTickets_" + x)
205+
206+
207+let ao = "totalPromoTickets"
208+
209+let ap = "promoMap"
210+
211+func aq (ar) = {
212+ let m = ar
147213 if ($isInstanceOf(m, "Int"))
148214 then {
149- let ae = m
150- ae
215+ let as = m
216+ as
151217 }
152218 else throw("fail to cast into Int")
153219 }
154220
155221
156-func af (ag) = {
157- let m = ag
222+func at (au) = {
223+ let m = au
158224 if ($isInstanceOf(m, "(Int, Int, Int, Int, Int)"))
159225 then {
160- let ah = m
161- ah
226+ let av = m
227+ av
162228 }
163229 else throw("fail to cast into (Int, Int, Int, Int, Int)")
164230 }
165231
166232
167-func ai (ag) = {
168- let m = ag
233+func aw (au) = {
234+ let m = au
169235 if ($isInstanceOf(m, "(Int, Int, Int, Int)"))
170236 then {
171- let ah = m
172- ah
237+ let av = m
238+ av
173239 }
174240 else throw("fail to cast into (Int, Int, Int, Int)")
175241 }
176242
177243
178-func aj (ag) = {
179- let m = ag
244+func ax (au) = {
245+ let m = au
180246 if ($isInstanceOf(m, "(Int, Int, Int)"))
181247 then {
182- let ah = m
183- ah
248+ let av = m
249+ av
184250 }
185251 else throw("fail to cast into (Int, Int, Int)")
186252 }
187253
188254
189-func ak (ag) = {
190- let m = ag
255+func ay (au) = {
256+ let m = au
191257 if ($isInstanceOf(m, "(Int, Int)"))
192258 then {
193- let ah = m
194- ah
259+ let av = m
260+ av
195261 }
196262 else throw("fail to cast into (Int, Int)")
197263 }
198264
199265
200-func al (ag,am) = {
201- let an = pow(10, 0, am, 0, 0, DOWN)
202- let ao = toString((ag % an))
203- let ap = drop(toString(an), (1 + size(ao)))
204- (((toString((ag / an)) + ".") + ap) + ao)
266+func az (au,aA) = {
267+ let aB = pow(10, 0, aA, 0, 0, DOWN)
268+ let aC = toString((au % aB))
269+ let aD = drop(toString(aB), (1 + size(aC)))
270+ (((toString((au / aB)) + ".") + aD) + aC)
205271 }
206272
207273
208-func aq (ar,as,at) = if ((0 >= ar))
274+func aE (aF,aG,aH) = if ((0 >= aF))
209275 then throw("maxValue should be > 0")
210276 else {
211- let au = sha256_16Kb((as + at))
212- (toInt(au) % ar)
277+ let aI = sha256_16Kb((aG + aH))
278+ (toInt(aI) % aF)
213279 }
214280
215281
216-let av = 1000000
217-
218-let aw = 100000000
219-
220-let ax = "wlg_issuedAmount"
221-
222-let ay = "zbill_issuedAmount"
223-
224-func az (N) = ("acresStakedAmountByUser_" + N)
225-
226-
227-func aA (N) = ("farmingPowerByUser_" + N)
228-
229-
230-let aB = "acresStakedAmountTotal"
231-
232-let aC = "totalFarmingPower"
233-
234-let aD = 3
235-
236-let aE = 1
237-
238-let aF = 5000
239-
240-let aG = 4
241-
242-let aH = "nftTotalIssued"
243-
244-let aI = "nftTotalBurned"
245-
246-let aJ = "WlNftTotalStaked"
247-
248-let aK = "ArkNftTotalStaked"
249-
250-func aL (aa) = ("nftNumberByAssetId_" + aa)
251-
252-
253-func aM (N) = ("userWlNftNumber_" + N)
254-
255-
256-func aN (N) = ("userArkNftNumber_" + N)
257-
258-
259-func aO (N) = ("userFullBonus_" + N)
260-
261-
262-let aP = [0, 10, 20, 40, 80, 150, 250, 400, 700, 1000]
263-
264-func aQ (aR) = {
265- let aS = ((aR + 99999999) / aw)
266- func aT (aU,aV) = if ((aV >= aS))
267- then aU
268- else (aU + 1)
269-
270- let aW = aP
271- let aX = size(aW)
272- let aY = 0
273- func aZ (ba,bb) = if ((bb >= aX))
274- then ba
275- else aT(ba, aW[bb])
276-
277- func bc (ba,bb) = if ((bb >= aX))
278- then ba
279- else throw("List size exceeds 10")
280-
281- bc(aZ(aZ(aZ(aZ(aZ(aZ(aZ(aZ(aZ(aZ(aY, 0), 1), 2), 3), 4), 5), 6), 7), 8), 9), 10)
282+func aJ (au,aK) = {
283+ let aL = toString(au)
284+ let aD = drop(toString(pow(10, 0, (aK - size(aL)), 0, 0, DOWN)), 1)
285+ (aD + aL)
282286 }
283287
284288
285-func bd (aR) = ((aR * 20) * (aQ(aR) + 4))
289+let aM = 1000000
290+
291+let aN = 100000000
292+
293+let aO = "wlg_issuedAmount"
294+
295+let aP = "zbill_issuedAmount"
296+
297+func aQ (X) = ("acresStakedAmountByUser_" + X)
286298
287299
288-func be (aR,bf) = {
289- let bg = bd(aR)
290- $Tuple2(fraction(bg, (av + bf), av), bg)
300+func aR (X) = ("farmingPowerByUser_" + X)
301+
302+
303+let aS = "acresStakedAmountTotal"
304+
305+let aT = "totalFarmingPower"
306+
307+let aU = 3
308+
309+let aV = 1
310+
311+let aW = 5000
312+
313+let aX = 4
314+
315+let aY = "nftTotalIssued"
316+
317+let aZ = "nftTotalBurned"
318+
319+let ba = "WlNftTotalStaked"
320+
321+let bb = "ArkNftTotalStaked"
322+
323+func bc (ak) = ("nftNumberByAssetId_" + ak)
324+
325+
326+func bd (X) = ("userWlNftNumber_" + X)
327+
328+
329+func be (X) = ("userArkNftNumber_" + X)
330+
331+
332+func bf (X) = ("userFullBonus_" + X)
333+
334+
335+let bg = [0, 10, 20, 40, 80, 150, 250, 400, 700, 1000]
336+
337+func bh (bi) = {
338+ let bj = ((bi + 99999999) / aN)
339+ func bk (bl,bm) = if ((bm >= bj))
340+ then bl
341+ else (bl + 1)
342+
343+ let bn = bg
344+ let bo = size(bn)
345+ let bp = 0
346+ func bq (br,bs) = if ((bs >= bo))
347+ then br
348+ else bk(br, bn[bs])
349+
350+ func bt (br,bs) = if ((bs >= bo))
351+ then br
352+ else throw("List size exceeds 10")
353+
354+ bt(bq(bq(bq(bq(bq(bq(bq(bq(bq(bq(bp, 0), 1), 2), 3), 4), 5), 6), 7), 8), 9), 10)
291355 }
292356
293357
294-let bh = "teamAddr"
295-
296-func bi (N) = ("lastArbTimeUser_" + N)
358+func bu (bi) = ((bi * 20) * (bh(bi) + 4))
297359
298360
299-let bj = 1733346000000
361+func bv (bi,bw) = {
362+ let bx = bu(bi)
363+ $Tuple2(fraction(bx, (aM + bw), aM), bx)
364+ }
300365
301-let bk = 14
302366
303-let bl = "lastAcresSellTime"
367+let by = "teamAddr"
304368
305-let bm = "lastLimitLeft"
369+func bz (X) = ("lastArbTimeUser_" + X)
306370
307-let bn = ["Gold shovel", "Pickaxe"]
308371
309-let bo = ["Reward for early birds", "Increases FarmPower"]
372+let bA = 1733346000000
310373
311-let bp = 0
374+let bB = 14
312375
313-let bq = 1
376+let bC = "lastAcresSellTime"
314377
315-let br = [5, 10, 20]
378+let bD = "lastLimitLeft"
316379
317-let bs = 0
380+let bE = ["Gold shovel", "Pickaxe"]
318381
319-let bt = 1
382+let bF = ["Reward for early birds", "Increases FarmPower"]
320383
321-let bu = 2
384+let bG = 0
322385
323-let bv = ["SHOVEL", "PICKAXE"]
386+let bH = 1
324387
325-let bw = 0
388+let bI = [5, 10, 20]
326389
327-let bx = 1
390+let bJ = 0
328391
329-let by = ["contentPickaxeC", "contentPickaxeU", "contentPickaxeL", "contentPickaxeE", "contentShovelP"]
392+let bK = 1
330393
331-let bz = 0
394+let bL = 2
332395
333-let bA = 4
396+let bM = ["SHOVEL", "PICKAXE"]
334397
335-let bB = ["Common", "Uncommon", "Legendary", "Epic", "Promo"]
398+let bN = 0
336399
337-let bC = 0
400+let bO = 1
338401
339-let bD = 1
402+let bP = ["contentPickaxeC", "contentPickaxeU", "contentPickaxeL", "contentPickaxeE", "contentShovelP"]
340403
341-let bE = 2
404+let bQ = 0
342405
343-let bF = 3
406+let bR = 4
344407
345-let bG = 4
408+let bS = ["Common", "Uncommon", "Legendary", "Epic", "Promo"]
346409
347-let bH = ["Digging tools"]
410+let bT = 0
348411
349-let bI = 0
412+let bU = 1
350413
351-let bJ = ["FarmPower"]
414+let bV = 2
352415
353-let bK = 0
416+let bW = 3
354417
355-func bL (bM) = if (if ((bM.originCaller != F))
356- then valueOrElse(getBoolean(L()), false)
418+let bX = 4
419+
420+let bY = ["Digging tools"]
421+
422+let bZ = 0
423+
424+let ca = ["FarmPower"]
425+
426+let cb = 0
427+
428+func cc (cd) = if (if ((cd.originCaller != P))
429+ then valueOrElse(getBoolean(V()), false)
357430 else false)
358431 then throw("Contracts are under maintenance")
359432 else {
360- let N = toString(bM.originCaller)
361- let bN = (height / l)
362- let bO = M(N)
363- let bP = getString(bO)
364- let bQ = toBase58String(bM.transactionId)
365- let bR = ((toString(bN) + "_") + bQ)
366- let bS = O(N)
367- if (isDefined(bP))
433+ let X = toString(cd.originCaller)
434+ let ce = (height / p)
435+ let cf = W(X)
436+ let cg = getString(cf)
437+ let ch = toBase58String(cd.transactionId)
438+ let ci = ((toString(ce) + "_") + ch)
439+ let cj = Y(X)
440+ if (isDefined(cg))
368441 then {
369- let bT = split(value(bP), "_")
370- if ((bT[0] == toString(bN)))
371- then [StringEntry(bO, bR), StringEntry(bS, bR)]
372- else if ((bT[0] == toString((bN - 1))))
373- then [StringEntry(bS, bR)]
442+ let ck = split(value(cg), "_")
443+ if ((ck[0] == toString(ce)))
444+ then [StringEntry(cf, ci), StringEntry(cj, ci)]
445+ else if ((ck[0] == toString((ce - 1))))
446+ then [StringEntry(cj, ci)]
374447 else {
375- let bU = getStringValue(bS)
376- let bV = split(bU, "_")
377- if ((bV[0] == toString(bN)))
378- then [StringEntry(bS, bR)]
379- else [StringEntry(bO, bU), StringEntry(bS, bR)]
448+ let cl = getStringValue(cj)
449+ let cm = split(cl, "_")
450+ if ((cm[0] == toString(ce)))
451+ then [StringEntry(cj, ci)]
452+ else [StringEntry(cf, cl), StringEntry(cj, ci)]
380453 }
381454 }
382- else [StringEntry(bO, bR), StringEntry(bS, bR)]
455+ else [StringEntry(cf, ci), StringEntry(cj, ci)]
383456 }
384457
385458
386-func bW (bX,bY,bZ,ca,cb,cc,cd,ce) = (((((((((((((((((((((((("{\"url\": \"https://waveslands.com\", " + "\"contentKey\": \"") + bX) + "\", ") + "\"number\": ") + toString(bY)) + ", ") + "\"collection\": \"") + bZ) + "\", ") + "\"name\": \"") + ca) + "\", ") + "\"description\": \"") + cb) + "\", ") + "\"rare\": \"") + cc) + "\", ") + "\"bonus\": ") + toString(cd)) + ", ") + "\"bonusType\": \"") + ce) + "\"}")
459+func cn (co,cp,cq,cr,cs,ct,cu,cv) = (((((((((((((((((((((((("{\"url\": \"https://waveslands.com\", " + "\"contentKey\": \"") + co) + "\", ") + "\"number\": ") + toString(cp)) + ", ") + "\"collection\": \"") + cq) + "\", ") + "\"name\": \"") + cr) + "\", ") + "\"description\": \"") + cs) + "\", ") + "\"rare\": \"") + ct) + "\", ") + "\"bonus\": ") + toString(cu)) + ", ") + "\"bonusType\": \"") + cv) + "\"}")
387460
388461
389-func cf (cg,ch,ci,cj,ck,cl,cm,N) = {
390- let bY = valueOrElse(getInteger(aH), 0)
391- let cc = bB[cj]
392- let ca = (((bv[cg] + "-") + take(cc, 1)) + toString(ck))
393- let cn = Issue(ca, bW(by[ch], bY, bH[ci], bn[cg], bo[cl], bB[cj], ck, bJ[cm]), 1, 0, false)
394- let co = calculateAssetId(cn)
395- $Tuple2([cn, IntegerEntry(aH, (bY + 1)), IntegerEntry(aL(toBase58String(co)), bY), ScriptTransfer(N, 1, co)], co)
462+func cw (cx,cy,cz,cA,cB,cC,cD,X) = {
463+ let cp = valueOrElse(getInteger(aY), 0)
464+ let ct = bS[cA]
465+ let cr = (((bM[cx] + "-") + take(ct, 1)) + toString(cB))
466+ let cE = Issue(cr, cn(bP[cy], cp, bY[cz], bE[cx], bF[cC], bS[cA], cB, ca[cD]), 1, 0, false)
467+ let cF = calculateAssetId(cE)
468+ $Tuple2([cE, IntegerEntry(aY, (cp + 1)), IntegerEntry(bc(toBase58String(cF)), cp), ScriptTransfer(X, 1, cF)], cF)
396469 }
397470
398471
399-func cp (cb) = if (!(contains(cb, "\"bonusType\": \"FarmPower\"")))
400- then throw(("NFT is not supported: " + cb))
472+func cG (cs) = if (!(contains(cs, "\"bonusType\": \"FarmPower\"")))
473+ then throw(("NFT is not supported: " + cs))
401474 else {
402- let cq = split_4C(split_4C(cb, "\"bonus\":")[1], ",")[0]
403- parseIntValue(drop(cq, (valueOrElse(lastIndexOf(cq, " "), -1) + 1)))
475+ let cH = split_4C(split_4C(cs, "\"bonus\":")[1], ",")[0]
476+ parseIntValue(drop(cH, (valueOrElse(lastIndexOf(cH, " "), -1) + 1)))
404477 }
405478
406479
407-func cr (cb) = if (!(contains(cb, "\"rare\"")))
408- then throw(("NFT is not supported: " + cb))
480+func cI (cs) = if (!(contains(cs, "\"rare\"")))
481+ then throw(("NFT is not supported: " + cs))
409482 else {
410- let cs = split_4C(split_4C(split_4C(cb, "\"rare\"")[1], ",")[0], "\"")[1]
411- value(indexOf(bB, cs))
483+ let cJ = split_4C(split_4C(split_4C(cs, "\"rare\"")[1], ",")[0], "\"")[1]
484+ value(indexOf(bS, cJ))
412485 }
413486
414487
415-func ct (cu,s,cv) = if (if ((cu == 0))
416- then (cv == 0)
488+func cK (cL,x,cM) = if (if ((cL == 0))
489+ then (cM == 0)
417490 else false)
418491 then throw("Nothing to do")
419492 else {
420- let cw = invoke(H, "onStakeUnstakeLand", [s], nil)
421- if ((cw == cw))
493+ let cN = invoke(R, "onStakeUnstakeLand", [x], nil)
494+ if ((cN == cN))
422495 then {
423- let cx = lastBlock.timestamp
424- let cy = V(s)
425- let cz = az(s)
426- let cA = valueOrElse(getInteger(cz), 0)
427- if (if ((0 > cu))
428- then (0 > (cA + cu))
496+ let cO = lastBlock.timestamp
497+ let cP = af(x)
498+ let cQ = aQ(x)
499+ let cR = valueOrElse(getInteger(cQ), 0)
500+ if (if ((0 > cL))
501+ then (0 > (cR + cL))
429502 else false)
430- then throw(((("You have only " + al(cA, 8)) + " ACRES staked, tried to unstake ") + al(-(cu), 8)))
503+ then throw(((("You have only " + az(cR, 8)) + " ACRES staked, tried to unstake ") + az(-(cL), 8)))
431504 else {
432- let cB = (cA + cu)
433- let cC = valueOrElse(getInteger(aB), 0)
434- let cD = aA(s)
435- let cE = valueOrElse(getInteger(cD), 0)
436- let cF = aO(s)
437- let cG = valueOrElse(getInteger(G, cF), 0)
438- if (if ((0 > cv))
439- then (0 > (cG + cv))
505+ let cS = (cR + cL)
506+ let cT = valueOrElse(getInteger(aS), 0)
507+ let cU = aR(x)
508+ let cV = valueOrElse(getInteger(cU), 0)
509+ let cW = bf(x)
510+ let cX = valueOrElse(getInteger(Q, cW), 0)
511+ if (if ((0 > cM))
512+ then (0 > (cX + cM))
440513 else false)
441- then throw((((("You have only " + al(cG, 4)) + "% bonus, and tried to unstake ") + al(-(cv), 4)) + "%"))
514+ then throw((((("You have only " + az(cX, 4)) + "% bonus, and tried to unstake ") + az(-(cM), 4)) + "%"))
442515 else {
443- let cH = be(cB, (cG + cv))
444- let cI = cH._1
445- let cJ = cH._2
446- let cK = valueOrElse(getInteger(aC), 0)
447- let cL = if ((cu == 0))
516+ let cY = bv(cS, (cX + cM))
517+ let cZ = cY._1
518+ let da = cY._2
519+ let db = valueOrElse(getInteger(aT), 0)
520+ let dc = if ((cL == 0))
448521 then nil
449- else [IntegerEntry(cz, cB), IntegerEntry(aB, (cC + cu))]
450- let cM = if ((cv == 0))
522+ else [IntegerEntry(cQ, cS), IntegerEntry(aS, (cT + cL))]
523+ let dd = if ((cM == 0))
451524 then nil
452- else [IntegerEntry(cF, (cG + cv))]
453- $Tuple2(((((cL ++ cM) :+ IntegerEntry(cy, lastBlock.timestamp)) :+ IntegerEntry(cD, cI)) :+ IntegerEntry(aC, ((cK + cI) - cE))), cw)
525+ else [IntegerEntry(cW, (cX + cM))]
526+ $Tuple2(((((dc ++ dd) :+ IntegerEntry(cP, lastBlock.timestamp)) :+ IntegerEntry(cU, cZ)) :+ IntegerEntry(aT, ((db + cZ) - cV))), cN)
454527 }
455528 }
456529 }
458531 }
459532
460533
461-func cN (cO) = {
462- let cP = valueOrErrorMessage(getInteger(H, ax), "WLGOLD is not issued yet")
463- let cQ = assetBalance(H, n)
464- let cR = (assetBalance(G, n) - cO)
465- let cS = (assetBalance(I, n) + valueOrElse(getInteger(I, ay), 0))
466- let cT = ((cR + cQ) + cS)
467- fraction(cT, d, cP)
534+func de (df) = {
535+ let dg = valueOrErrorMessage(getInteger(R, aO), "WLGOLD is not issued yet")
536+ let dh = assetBalance(R, r)
537+ let di = (assetBalance(Q, r) - df)
538+ let dj = (assetBalance(S, r) + valueOrElse(getInteger(S, aP), 0))
539+ let dk = ((di + dh) + dj)
540+ fraction(dk, d, dg)
468541 }
469542
470543
471-func cU () = {
472- let cQ = assetBalance(H, n)
473- let cR = assetBalance(this, n)
474- let cS = (assetBalance(I, n) + valueOrElse(getInteger(I, ay), 0))
475- let cV = (((cR + cQ) + cS) / h)
476- let cW = valueOrElse(getInteger(bm), cV)
477- let cX = valueOrElse(getInteger(bl), 0)
478- let cx = lastBlock.timestamp
479- let cY = (cW + fraction(cV, (cx - cX), f))
480- let cZ = min([cY, cV])
481- $Tuple2(IntegerEntry(bl, cx), cZ)
544+func dl () = {
545+ let dh = assetBalance(R, r)
546+ let di = assetBalance(this, r)
547+ let dj = (assetBalance(S, r) + valueOrElse(getInteger(S, aP), 0))
548+ let dm = (((di + dh) + dj) / h)
549+ let dn = valueOrElse(getInteger(bD), dm)
550+ let do = valueOrElse(getInteger(bC), 0)
551+ let cO = lastBlock.timestamp
552+ let dp = (dn + fraction(dm, (cO - do), f))
553+ let dq = min([dp, dm])
554+ $Tuple2(IntegerEntry(bC, cO), dq)
482555 }
483556
484557
485-let da = addressFromStringValue("3PJgZ6AK1WVCpdCmEZpesHmaKvrQDdXG5og")
558+let dr = addressFromStringValue("3PJgZ6AK1WVCpdCmEZpesHmaKvrQDdXG5og")
486559
487-let db = valueOrElse(getString(da, "static_incubatorAddress"), "")
560+let ds = valueOrElse(getString(dr, "static_incubatorAddress"), "")
488561
489-let dc = valueOrElse(getString(da, "static_breederAddress"), "")
562+let dt = valueOrElse(getString(dr, "static_breederAddress"), "")
490563
491-let dd = valueOrElse(getString(da, "static_turtleIncubatorAddress"), "")
564+let du = valueOrElse(getString(dr, "static_turtleIncubatorAddress"), "")
492565
493-let de = valueOrElse(getString(da, "static_turtleBreederAddress"), "")
566+let dv = valueOrElse(getString(dr, "static_turtleBreederAddress"), "")
494567
495-let df = valueOrElse(getString(da, "static_canineIncubatorAddress"), "")
568+let dw = valueOrElse(getString(dr, "static_canineIncubatorAddress"), "")
496569
497-let dg = valueOrElse(getString(da, "static_canineBreederAddress"), "")
570+let dx = valueOrElse(getString(dr, "static_canineBreederAddress"), "")
498571
499-let dh = valueOrElse(getString(da, "static_felineIncubatorAddress"), "")
572+let dy = valueOrElse(getString(dr, "static_felineIncubatorAddress"), "")
500573
501-let di = valueOrElse(getString(da, "static_felineBreederAddress"), "")
574+let dz = valueOrElse(getString(dr, "static_felineBreederAddress"), "")
502575
503-let dj = valueOrElse(getString(da, "static_mutantIncubatorAddress"), "")
576+let dA = valueOrElse(getString(dr, "static_mutantIncubatorAddress"), "")
504577
505-func dk (dl) = {
506- let dm = toString(dl.issuer)
578+func dB (dC) = {
579+ let dD = toString(dC.issuer)
507580 if (if (if (if (if (if (if (if (if (if ((k == base58'2T'))
508- then (dm == q)
581+ then (dD == v)
509582 else false)
510583 then true
511- else (dm == db))
584+ else (dD == ds))
512585 then true
513- else (dm == dc))
586+ else (dD == dt))
514587 then true
515- else (dm == dd))
588+ else (dD == du))
516589 then true
517- else (dm == de))
590+ else (dD == dv))
518591 then true
519- else (dm == df))
592+ else (dD == dw))
520593 then true
521- else (dm == dg))
594+ else (dD == dx))
522595 then true
523- else (dm == dh))
596+ else (dD == dy))
524597 then true
525- else (dm == di))
526- then dl.name
527- else if ((dm == dj))
528- then dl.description
598+ else (dD == dz))
599+ then dC.name
600+ else if ((dD == dA))
601+ then dC.description
529602 else ""
530603 }
531604
532605
533-func dn (N,do,bf,dp,dq,dr) = {
534- let ds = valueOrElse(getInteger(dp), 0)
535- if ((ds >= dr))
536- then throw((("You can stake max " + toString(dr)) + " of such NFTs"))
606+func dE (X,dF,bw,dG,dH,dI) = {
607+ let dJ = valueOrElse(getInteger(dG), 0)
608+ if ((dJ >= dI))
609+ then throw((("You can stake max " + toString(dI)) + " of such NFTs"))
537610 else {
538- let dt = ct(0, N, bf)
539- let du = dt._1
540- let dv = dt._2
541- $Tuple2((((du :+ IntegerEntry(dp, (ds + 1))) :+ IntegerEntry(dq, (valueOrElse(getInteger(dq), 0) + 1))) :+ IntegerEntry(Z(do, N), lastBlock.timestamp)), dv)
611+ let dK = cK(0, X, bw)
612+ let dL = dK._1
613+ let dM = dK._2
614+ $Tuple2((((dL :+ IntegerEntry(dG, (dJ + 1))) :+ IntegerEntry(dH, (valueOrElse(getInteger(dH), 0) + 1))) :+ IntegerEntry(aj(dF, X), lastBlock.timestamp)), dM)
542615 }
543616 }
544617
545618
546-@Callable(bM)
547-func saveLastTx () = if (!(containsElement([H, J], bM.caller)))
619+let dN = 3
620+
621+let dO = [50000000, 25000000, 25000000]
622+
623+func dP (x,cL,dQ) = {
624+ let dR = cK(cL, x, 0)
625+ let dL = dR._1
626+ let dM = dR._2
627+ let dS = if (if ((height >= l))
628+ then (n > height)
629+ else false)
630+ then {
631+ let dT = am(x)
632+ let dU = ((if (dQ)
633+ then 0
634+ else valueOrElse(getInteger(dT), 0)) + cL)
635+ let dV = (dU / d)
636+ let dW = an(x)
637+ let dX = (dV - valueOrElse(getInteger(dW), 0))
638+ let dY = (valueOrElse(getInteger(ao), 0) + dX)
639+ if (if (dQ)
640+ then true
641+ else (dX > 0))
642+ then {
643+ let dZ = valueOrElse(getString(ap), "")
644+ let ea = ((x + ":") + aJ(dV, 3))
645+ let eb = if (contains(dZ, x))
646+ then {
647+ let ec = split_51C(dZ, x)
648+ if ((ec[0] == ""))
649+ then {
650+ let ed = drop(ec[1], 4)
651+ if ((ed == ""))
652+ then if ((dV == 0))
653+ then ""
654+ else ea
655+ else if ((dV == 0))
656+ then drop(ed, 1)
657+ else (ea + ed)
658+ }
659+ else {
660+ let ed = drop(ec[1], 4)
661+ if ((ed == ""))
662+ then if ((dV == 0))
663+ then dropRight(ec[0], 1)
664+ else (ec[0] + ea)
665+ else if ((dV == 0))
666+ then (ec[0] + drop(ed, 1))
667+ else ((ec[0] + ea) + ed)
668+ }
669+ }
670+ else if ((dV == 0))
671+ then dZ
672+ else if ((dZ == ""))
673+ then ea
674+ else ((dZ + "_") + ea)
675+[IntegerEntry(dT, dU), IntegerEntry(dW, dV), IntegerEntry(ao, dY), StringEntry(ap, eb)]
676+ }
677+ else [IntegerEntry(dT, dU)]
678+ }
679+ else nil
680+ $Tuple2((dL ++ dS), dM)
681+ }
682+
683+
684+@Callable(cd)
685+func saveLastTx () = if (!(containsElement([R, T], cd.caller)))
548686 then throw("Access denied")
549- else $Tuple2(bL(bM), 42)
687+ else $Tuple2(cc(cd), 42)
550688
551689
552690
553-@Callable(bM)
554-func constructorV1 (dw,dx) = if ((bM.caller != this))
691+@Callable(cd)
692+func constructorV1 (ee,ef) = if ((cd.caller != this))
555693 then throw("Permission denied")
556694 else {
557- let dy = addressFromStringValue(dx)
558-[IntegerEntry(S, getIntegerValue(dy, S)), BinaryEntry(T, getBinaryValue(dy, T)), StringEntry(z(), dw), StringEntry(K, dx)]
695+ let eg = addressFromStringValue(ef)
696+[IntegerEntry(ac, getIntegerValue(eg, ac)), BinaryEntry(ad, getBinaryValue(eg, ad)), StringEntry(E(), ee), StringEntry(U, ef)]
559697 }
560698
561699
562700
563-@Callable(bM)
564-func setBlocked (dz) = if ((bM.caller != this))
701+@Callable(cd)
702+func setBlocked (eh) = if ((cd.caller != this))
565703 then throw("permission denied")
566- else [BooleanEntry(L(), dz)]
704+ else [BooleanEntry(V(), eh)]
567705
568706
569707
570-@Callable(bM)
571-func unstakeAcres (dA) = {
572- let dB = bL(bM)
573- if ((0 >= dA))
574- then throw("Amount should be positive")
708+@Callable(cd)
709+func unstakeAcres (ei) = {
710+ let ej = cc(cd)
711+ if (if ((height >= l))
712+ then (n > height)
713+ else false)
714+ then throw("You can't unstake during Xmas promo period")
715+ else if ((0 >= ei))
716+ then throw("Amount should be positive")
717+ else {
718+ let x = toString(cd.caller)
719+ if ((size(cd.payments) != 0))
720+ then throw("No payments required")
721+ else {
722+ let ek = (valueOrElse(getInteger(R, bz(x)), 0) + u)
723+ if ((ek > lastBlock.timestamp))
724+ then throw(("You traded some WLGOLD, cannot unstake until " + toString(ek)))
725+ else {
726+ let el = cK(-(ei), x, 0)
727+ let dL = el._1
728+ let dM = el._2
729+ $Tuple2(((dL :+ ScriptTransfer(cd.caller, ei, ae)) ++ ej), dM)
730+ }
731+ }
732+ }
733+ }
734+
735+
736+
737+@Callable(cd)
738+func stakeAcres () = {
739+ let ej = cc(cd)
740+ let x = toString(cd.caller)
741+ if ((size(cd.payments) != 1))
742+ then throw("exactly 1 payment must be attached")
575743 else {
576- let s = toString(bM.caller)
577- if ((size(bM.payments) != 0))
578- then throw("No payments required")
744+ let em = cd.payments[0]
745+ let cL = em.amount
746+ if (if (!(isDefined(em.assetId)))
747+ then true
748+ else (value(em.assetId) != ae))
749+ then throw("ACRES payments only!")
579750 else {
580- let dC = (valueOrElse(getInteger(H, bi(s)), 0) + p)
581- if ((dC > lastBlock.timestamp))
582- then throw(("You traded some WLGOLD, cannot unstake until " + toString(dC)))
583- else {
584- let dD = ct(-(dA), s, 0)
585- let du = dD._1
586- let dv = dD._2
587- $Tuple2(((du :+ ScriptTransfer(bM.caller, dA, U)) ++ dB), dv)
588- }
751+ let en = dP(x, cL, false)
752+ let eo = en._1
753+ let dM = en._2
754+ $Tuple2((eo ++ ej), dM)
589755 }
590756 }
591757 }
592758
593759
594760
595-@Callable(bM)
596-func stakeAcres () = {
597- let dB = bL(bM)
598- let s = toString(bM.caller)
599- if ((size(bM.payments) != 1))
761+@Callable(cd)
762+func buyAcres () = {
763+ let ej = cc(cd)
764+ if ((size(cd.payments) != 1))
600765 then throw("exactly 1 payment must be attached")
601766 else {
602- let dE = bM.payments[0]
603- let cu = dE.amount
604- if (if (!(isDefined(dE.assetId)))
767+ let em = cd.payments[0]
768+ let ep = em.amount
769+ if (if (!(isDefined(em.assetId)))
605770 then true
606- else (value(dE.assetId) != U))
607- then throw("ACRES payments only!")
608- else {
609- let dF = ct(cu, s, 0)
610- let du = dF._1
611- let dv = dF._2
612- $Tuple2((du ++ dB), dv)
613- }
614- }
615- }
616-
617-
618-
619-@Callable(bM)
620-func buyAcres () = {
621- let dB = bL(bM)
622- if ((size(bM.payments) != 1))
623- then throw("exactly 1 payment must be attached")
624- else {
625- let dE = bM.payments[0]
626- let dG = dE.amount
627- if (if (!(isDefined(dE.assetId)))
628- then true
629- else (value(dE.assetId) != n))
771+ else (value(em.assetId) != r))
630772 then throw("USDT payments only!")
631- else if ((b > dG))
632- then throw((("Min payment should be " + al(b, 6)) + " USDT"))
773+ else if ((b > ep))
774+ then throw((("Min payment should be " + az(b, 6)) + " USDT"))
633775 else {
634- let dH = (dG * g)
635- let dI = fraction(dG, d, cN(dG))
636- let dJ = addressFromStringValue(getStringValue(K))
637- let dK = invoke(dJ, "requestAcresCallback", [dH], nil)
638- if ((dK == dK))
776+ let eq = (ep * g)
777+ let er = fraction(ep, d, de(ep))
778+ let es = addressFromStringValue(getStringValue(U))
779+ let et = invoke(es, "requestAcresCallback", [eq], nil)
780+ if ((et == et))
639781 then {
640- let dL = ac(invoke(H, "burnWlgold", [dI], nil))
641- $Tuple2(([ScriptTransfer(bM.caller, dH, U)] ++ dB), dL)
782+ let eu = aq(invoke(R, "burnWlgold", [er], nil))
783+ $Tuple2(([ScriptTransfer(cd.caller, eq, ae)] ++ ej), eu)
642784 }
643785 else throw("Strict value is not equal to itself.")
644786 }
647789
648790
649791
650-@Callable(bM)
651-func buyAcresREADONLY (dG) = {
652- let dH = (dG * g)
653- let dM = fraction(dG, d, cN(dG))
654- $Tuple2(nil, [dH, b, dH, dM])
792+@Callable(cd)
793+func buyAcresREADONLY (ep) = {
794+ let eq = (ep * g)
795+ let ev = fraction(ep, d, de(ep))
796+ $Tuple2(nil, [eq, b, eq, ev])
655797 }
656798
657799
658800
659-@Callable(bM)
801+@Callable(cd)
660802 func sellAcres () = {
661- let dB = bL(bM)
662- if ((size(bM.payments) != 1))
803+ let ej = cc(cd)
804+ if ((size(cd.payments) != 1))
663805 then throw("exactly 1 payment must be attached")
664806 else {
665- let dE = bM.payments[0]
666- let dH = dE.amount
667- if (if (!(isDefined(dE.assetId)))
807+ let em = cd.payments[0]
808+ let eq = em.amount
809+ if (if (!(isDefined(em.assetId)))
668810 then true
669- else (value(dE.assetId) != U))
811+ else (value(em.assetId) != ae))
670812 then throw("ACRES payments only!")
671- else if ((c > dH))
672- then throw((("Min payment should be " + al(c, 8)) + " ACRES"))
813+ else if ((c > eq))
814+ then throw((("Min payment should be " + az(c, 8)) + " ACRES"))
673815 else {
674- let N = toString(bM.caller)
675- let dN = cU()
676- let dO = dN._1
677- let dP = dN._2
678- let dQ = (dP * g)
679- if ((dH > dQ))
680- then throw((("You can sell max " + al(dQ, 8)) + " ACRES"))
816+ let X = toString(cd.caller)
817+ let ew = dl()
818+ let ex = ew._1
819+ let ey = ew._2
820+ let ez = (ey * g)
821+ if ((eq > ez))
822+ then throw((("You can sell max " + az(ez, 8)) + " ACRES"))
681823 else {
682- let dG = ((dH / g) / 2)
683- $Tuple2(([dO, IntegerEntry(bm, (dP - dG)), ScriptTransfer(bM.caller, dG, n)] ++ dB), dG)
824+ let ep = ((eq / g) / 2)
825+ $Tuple2(([ex, IntegerEntry(bD, (ey - ep)), ScriptTransfer(cd.caller, ep, r)] ++ ej), ep)
684826 }
685827 }
686828 }
688830
689831
690832
691-@Callable(bM)
692-func sellAcresREADONLY (s,dH) = {
693- let dR = cU()
694- let dO = dR._1
695- let dP = dR._2
696- let dG = ((dH / g) / 2)
697- $Tuple2(nil, [dG, c, (dP * g), 0])
833+@Callable(cd)
834+func sellAcresREADONLY (x,eq) = {
835+ let eA = dl()
836+ let ex = eA._1
837+ let ey = eA._2
838+ let ep = ((eq / g) / 2)
839+ $Tuple2(nil, [ep, c, (ey * g), 0])
698840 }
699841
700842
701843
702-@Callable(bM)
844+@Callable(cd)
703845 func convertOldStakes () = {
704- let dB = bL(bM)
705- if ((bj > lastBlock.timestamp))
706- then throw(("Disabled until " + toString((bj / 1000))))
846+ let ej = cc(cd)
847+ if ((bA > lastBlock.timestamp))
848+ then throw(("Disabled until " + toString((bA / 1000))))
707849 else {
708- let s = toString(bM.caller)
709- if ((size(bM.payments) != 0))
850+ let x = toString(cd.caller)
851+ if ((size(cd.payments) != 0))
710852 then throw("No payments required")
711853 else {
712- let dJ = addressFromStringValue(getStringValue(K))
713- let dA = valueOrElse(getInteger(dJ, az(s)), 0)
714- let dS = if ((dA > 0))
715- then ak(invoke(dJ, "unstakeAcresCallback", [dA, s], nil))
854+ let es = addressFromStringValue(getStringValue(U))
855+ let ei = valueOrElse(getInteger(es, aQ(x)), 0)
856+ let eB = if ((ei > 0))
857+ then ay(invoke(es, "unstakeAcresCallback", [ei, x], nil))
716858 else $Tuple2(0, 0)
717- let dT = addressFromStringValue(q)
718- let dU = getString(dT, W(s))
719- let dV = if (isDefined(dU))
859+ let eC = addressFromStringValue(v)
860+ let eD = getString(eC, ag(x))
861+ let eE = if (isDefined(eD))
720862 then {
721- let dW = split_51C(value(dU), "_")
722- if ((size(dW) > bk))
723- then throw((("You have more than " + toString(bk)) + " lands staked, please contact support, we'll process your case manually"))
863+ let eF = split_51C(value(eD), "_")
864+ if ((size(eF) > bB))
865+ then throw((("You have more than " + toString(bB)) + " lands staked, please contact support, we'll process your case manually"))
724866 else {
725- func dX (aU,dY) = if ((dY == ""))
867+ func eG (bl,eH) = if ((eH == ""))
726868 then throw("landAssetId is required")
727869 else {
728- let dZ = af(invoke(dT, "unstakeLandCallback", [dY, s], nil))
729- if ((dZ == dZ))
730- then $Tuple5((aU._1 + dZ._1), (aU._2 + dZ._2), (aU._3 + dZ._3), (aU._4 + dZ._4), (aU._5 + dZ._5))
870+ let ed = at(invoke(eC, "unstakeLandCallback", [eH, x], nil))
871+ if ((ed == ed))
872+ then $Tuple5((bl._1 + ed._1), (bl._2 + ed._2), (bl._3 + ed._3), (bl._4 + ed._4), (bl._5 + ed._5))
731873 else throw("Strict value is not equal to itself.")
732874 }
733875
734- let ea = {
735- let aW = dW
736- let aX = size(aW)
737- let aY = $Tuple5(0, 0, 0, 0, 0)
738- func aZ (ba,bb) = if ((bb >= aX))
739- then ba
740- else dX(ba, aW[bb])
876+ let eI = {
877+ let bn = eF
878+ let bo = size(bn)
879+ let bp = $Tuple5(0, 0, 0, 0, 0)
880+ func bq (br,bs) = if ((bs >= bo))
881+ then br
882+ else eG(br, bn[bs])
741883
742- func bc (ba,bb) = if ((bb >= aX))
743- then ba
884+ func bt (br,bs) = if ((bs >= bo))
885+ then br
744886 else throw("List size exceeds 14")
745887
746- bc(aZ(aZ(aZ(aZ(aZ(aZ(aZ(aZ(aZ(aZ(aZ(aZ(aZ(aZ(aY, 0), 1), 2), 3), 4), 5), 6), 7), 8), 9), 10), 11), 12), 13), 14)
888+ bt(bq(bq(bq(bq(bq(bq(bq(bq(bq(bq(bq(bq(bq(bq(bp, 0), 1), 2), 3), 4), 5), 6), 7), 8), 9), 10), 11), 12), 13), 14)
747889 }
748- if ((ea == ea))
890+ if ((eI == eI))
749891 then {
750- let eb = invoke(dT, "unstakeLandsFinalizeCallback", [s], nil)
751- if ((eb == eb))
892+ let eJ = invoke(eC, "unstakeLandsFinalizeCallback", [x], nil)
893+ if ((eJ == eJ))
752894 then {
753- let dK = invoke(dJ, "requestAcresCallback", [(((ea._1 + ea._2) + ea._3) + ea._4)], nil)
754- if ((dK == dK))
895+ let et = invoke(es, "requestAcresCallback", [(((eI._1 + eI._2) + eI._3) + eI._4)], nil)
896+ if ((et == et))
755897 then {
756- let ec = cf(bw, bA, bI, bG, 3, bp, bK, bM.caller)
757- let ed = ec._1
758- let co = ec._2
759- $Tuple6(ea._1, ea._2, ea._3, ea._4, ea._5, ed)
898+ let eK = cw(bN, bR, bZ, bX, 3, bG, cb, cd.caller)
899+ let eL = eK._1
900+ let cF = eK._2
901+ $Tuple6(eI._1, eI._2, eI._3, eI._4, eI._5, eL)
760902 }
761903 else throw("Strict value is not equal to itself.")
762904 }
766908 }
767909 }
768910 else $Tuple6(0, 0, 0, 0, 0, nil)
769- let ee = valueOrElse(getString(dT, Y(s)), "")
770- let ef = if ((ee != ""))
771- then aj(invoke(dT, "unstakeDuckCallback", [ee, s], nil))
911+ let eM = valueOrElse(getString(eC, ai(x)), "")
912+ let eN = if ((eM != ""))
913+ then ax(invoke(eC, "unstakeDuckCallback", [eM, x], nil))
772914 else $Tuple3(0, 0, 0)
773- let eg = ct((((((((dS._1 + dV._1) + dV._2) + dV._3) + dV._4) + ef._1) + ef._2) + ef._3), s, 0)
774- $Tuple2(((dV._6 ++ eg._1) ++ dB), $Tuple3(dS._2, dV._5, eg._2))
915+ let eO = cK((((((((eB._1 + eE._1) + eE._2) + eE._3) + eE._4) + eN._1) + eN._2) + eN._3), x, 0)
916+ $Tuple2(((eE._6 ++ eO._1) ++ ej), $Tuple3(eB._2, eE._5, eO._2))
775917 }
776918 }
777919 }
778920
779921
780922
781-@Callable(bM)
782-func unstakeLandsREADONLY (s) = {
783- let dT = addressFromStringValue(q)
784- let dU = getString(dT, W(s))
785- let dV = if (isDefined(dU))
923+@Callable(cd)
924+func unstakeLandsREADONLY (x) = {
925+ let eC = addressFromStringValue(v)
926+ let eD = getString(eC, ag(x))
927+ let eE = if (isDefined(eD))
786928 then {
787- let dW = split_51C(value(dU), "_")
788- func dX (aU,dY) = if ((dY == ""))
929+ let eF = split_51C(value(eD), "_")
930+ func eG (bl,eH) = if ((eH == ""))
789931 then throw("landAssetId is required")
790932 else {
791- let dZ = ai(invoke(dT, "unstakeLandREADONLY", [dY, s], nil))
792- $Tuple4((aU._1 + dZ._1), (aU._2 + dZ._2), (aU._3 + dZ._3), (aU._4 + dZ._4))
933+ let ed = aw(invoke(eC, "unstakeLandREADONLY", [eH, x], nil))
934+ $Tuple4((bl._1 + ed._1), (bl._2 + ed._2), (bl._3 + ed._3), (bl._4 + ed._4))
793935 }
794936
795- let aW = dW
796- let aX = size(aW)
797- let aY = $Tuple4(0, 0, 0, 0)
798- func aZ (ba,bb) = if ((bb >= aX))
799- then ba
800- else dX(ba, aW[bb])
937+ let bn = eF
938+ let bo = size(bn)
939+ let bp = $Tuple4(0, 0, 0, 0)
940+ func bq (br,bs) = if ((bs >= bo))
941+ then br
942+ else eG(br, bn[bs])
801943
802- func bc (ba,bb) = if ((bb >= aX))
803- then ba
944+ func bt (br,bs) = if ((bs >= bo))
945+ then br
804946 else throw("List size exceeds 100")
805947
806- bc(aZ(aZ(aZ(aZ(aZ(aZ(aZ(aZ(aZ(aZ(aZ(aZ(aZ(aZ(aZ(aZ(aZ(aZ(aZ(aZ(aZ(aZ(aZ(aZ(aZ(aZ(aZ(aZ(aZ(aZ(aZ(aZ(aZ(aZ(aZ(aZ(aZ(aZ(aZ(aZ(aZ(aZ(aZ(aZ(aZ(aZ(aZ(aZ(aZ(aZ(aZ(aZ(aZ(aZ(aZ(aZ(aZ(aZ(aZ(aZ(aZ(aZ(aZ(aZ(aZ(aZ(aZ(aZ(aZ(aZ(aZ(aZ(aZ(aZ(aZ(aZ(aZ(aZ(aZ(aZ(aZ(aZ(aZ(aZ(aZ(aZ(aZ(aZ(aZ(aZ(aZ(aZ(aZ(aZ(aZ(aZ(aZ(aZ(aZ(aZ(aY, 0), 1), 2), 3), 4), 5), 6), 7), 8), 9), 10), 11), 12), 13), 14), 15), 16), 17), 18), 19), 20), 21), 22), 23), 24), 25), 26), 27), 28), 29), 30), 31), 32), 33), 34), 35), 36), 37), 38), 39), 40), 41), 42), 43), 44), 45), 46), 47), 48), 49), 50), 51), 52), 53), 54), 55), 56), 57), 58), 59), 60), 61), 62), 63), 64), 65), 66), 67), 68), 69), 70), 71), 72), 73), 74), 75), 76), 77), 78), 79), 80), 81), 82), 83), 84), 85), 86), 87), 88), 89), 90), 91), 92), 93), 94), 95), 96), 97), 98), 99), 100)
948+ bt(bq(bq(bq(bq(bq(bq(bq(bq(bq(bq(bq(bq(bq(bq(bq(bq(bq(bq(bq(bq(bq(bq(bq(bq(bq(bq(bq(bq(bq(bq(bq(bq(bq(bq(bq(bq(bq(bq(bq(bq(bq(bq(bq(bq(bq(bq(bq(bq(bq(bq(bq(bq(bq(bq(bq(bq(bq(bq(bq(bq(bq(bq(bq(bq(bq(bq(bq(bq(bq(bq(bq(bq(bq(bq(bq(bq(bq(bq(bq(bq(bq(bq(bq(bq(bq(bq(bq(bq(bq(bq(bq(bq(bq(bq(bq(bq(bq(bq(bq(bq(bp, 0), 1), 2), 3), 4), 5), 6), 7), 8), 9), 10), 11), 12), 13), 14), 15), 16), 17), 18), 19), 20), 21), 22), 23), 24), 25), 26), 27), 28), 29), 30), 31), 32), 33), 34), 35), 36), 37), 38), 39), 40), 41), 42), 43), 44), 45), 46), 47), 48), 49), 50), 51), 52), 53), 54), 55), 56), 57), 58), 59), 60), 61), 62), 63), 64), 65), 66), 67), 68), 69), 70), 71), 72), 73), 74), 75), 76), 77), 78), 79), 80), 81), 82), 83), 84), 85), 86), 87), 88), 89), 90), 91), 92), 93), 94), 95), 96), 97), 98), 99), 100)
807949 }
808950 else $Tuple4(0, 0, 0, 0)
809- $Tuple2(nil, dV)
951+ $Tuple2(nil, eE)
810952 }
811953
812954
813955
814-@Callable(bM)
815-func stakeAcresCallback (N) = if ((bM.caller != addressFromStringValue(q)))
956+@Callable(cd)
957+func stakeAcresCallback (X) = if ((cd.caller != addressFromStringValue(v)))
816958 then throw("Permission denied")
817- else ct(bM.payments[0].amount, N, 0)
959+ else cK(cd.payments[0].amount, X, 0)
818960
819961
820962
821-@Callable(bM)
822-func simulateStakeAcresREADONLY (s,eh) = {
823- let cz = az(s)
824- let cB = (valueOrElse(getInteger(cz), 0) + eh)
825- let cC = valueOrElse(getInteger(aB), 0)
826- let cD = aA(s)
827- let cE = valueOrElse(getInteger(cD), 0)
828- let ei = valueOrElse(getInteger(G, aO(s)), 0)
829- let ej = be(cB, ei)
830- let cI = ej._1
831- let cJ = ej._2
832- let cK = valueOrElse(getInteger(aC), 0)
833- let ek = ((cK + cI) - cE)
834- $Tuple2(nil, [cE, cI, cK, ek])
963+@Callable(cd)
964+func simulateStakeAcresREADONLY (x,eP) = {
965+ let cQ = aQ(x)
966+ let cS = (valueOrElse(getInteger(cQ), 0) + eP)
967+ let cT = valueOrElse(getInteger(aS), 0)
968+ let cU = aR(x)
969+ let cV = valueOrElse(getInteger(cU), 0)
970+ let eQ = valueOrElse(getInteger(Q, bf(x)), 0)
971+ let eR = bv(cS, eQ)
972+ let cZ = eR._1
973+ let da = eR._2
974+ let db = valueOrElse(getInteger(aT), 0)
975+ let eS = ((db + cZ) - cV)
976+ $Tuple2(nil, [cV, cZ, db, eS])
835977 }
836978
837979
838980
839-@Callable(bM)
840-func issuePickC1 (el) = if ((bM.caller != H))
981+@Callable(cd)
982+func issuePickC1 (eT) = if ((cd.caller != R))
841983 then throw("Permission denied")
842- else cf(bx, bz, bI, bC, 1, bq, bK, addressFromStringValue(el))
984+ else cw(bO, bQ, bZ, bT, 1, bH, cb, addressFromStringValue(eT))
843985
844986
845987
846-@Callable(bM)
988+@Callable(cd)
847989 func stakeNFT () = {
848- let dB = bL(bM)
849- if ((size(bM.payments) != 1))
990+ let ej = cc(cd)
991+ if ((size(cd.payments) != 1))
850992 then throw("Exactly one payment required")
851993 else {
852- let dE = value(bM.payments[0])
853- if ((dE.amount != 1))
994+ let em = value(cd.payments[0])
995+ if ((em.amount != 1))
854996 then throw("NFT token should be attached as payment")
855997 else {
856- let aa = value(dE.assetId)
857- let em = value(assetInfo(aa))
858- let do = toBase58String(aa)
859- let N = toString(bM.caller)
860- let en = ab(N)
861- let eo = getString(en)
862- let ep = if (isDefined(eo))
863- then split_4C(value(eo), "_")
998+ let ak = value(em.assetId)
999+ let eU = value(assetInfo(ak))
1000+ let dF = toBase58String(ak)
1001+ let X = toString(cd.caller)
1002+ let eV = al(X)
1003+ let eW = getString(eV)
1004+ let eX = if (isDefined(eW))
1005+ then split_4C(value(eW), "_")
8641006 else nil
865- if (containsElement(ep, do))
866- then throw(("Your staked NFTs already contain " + do))
867- else if ((size(ep) >= aG))
868- then throw((("Your already staked max (" + toString(aG)) + ") NFTs"))
1007+ if (containsElement(eX, dF))
1008+ then throw(("Your staked NFTs already contain " + dF))
1009+ else if ((size(eX) >= aX))
1010+ then throw((("Your already staked max (" + toString(aX)) + ") NFTs"))
8691011 else {
870- let eq = StringEntry(en, makeString_2C((ep :+ do), "_"))
871- if ((em.issuer == this))
1012+ let eY = StringEntry(eV, makeString_2C((eX :+ dF), "_"))
1013+ if ((eU.issuer == this))
8721014 then {
873- let er = dn(N, do, (cp(value(em.description)) * 10000), aM(N), aJ, aD)
874- let du = er._1
875- let dv = er._2
876- $Tuple2(((dB ++ du) :+ eq), dv)
1015+ let eZ = dE(X, dF, (cG(value(eU.description)) * 10000), bd(X), ba, aU)
1016+ let dL = eZ._1
1017+ let dM = eZ._2
1018+ $Tuple2(((ej ++ dL) :+ eY), dM)
8771019 }
878- else if ((dk(em) == ""))
1020+ else if ((dB(eU) == ""))
8791021 then throw("Only WavesLands and Arkimals NFT tokens are accepted")
8801022 else {
881- let es = dn(N, do, aF, aN(N), aK, aE)
882- let du = es._1
883- let dv = es._2
884- $Tuple2(((dB ++ du) :+ eq), dv)
1023+ let fa = dE(X, dF, aW, be(X), bb, aV)
1024+ let dL = fa._1
1025+ let dM = fa._2
1026+ $Tuple2(((ej ++ dL) :+ eY), dM)
8851027 }
8861028 }
8871029 }
8901032
8911033
8921034
893-@Callable(bM)
894-func unstakeNFT (do) = {
895- let dB = bL(bM)
896- if ((size(bM.payments) != 0))
1035+@Callable(cd)
1036+func unstakeNFT (dF) = {
1037+ let ej = cc(cd)
1038+ if ((size(cd.payments) != 0))
8971039 then throw("No payments required")
8981040 else {
899- let aa = fromBase58String(do)
900- let N = toString(bM.caller)
901- let em = value(assetInfo(aa))
902- let cy = Z(do, N)
903- if (!(isDefined(getInteger(cy))))
904- then throw((("NFT " + em.name) + " is not staked by you"))
1041+ let ak = fromBase58String(dF)
1042+ let X = toString(cd.caller)
1043+ let eU = value(assetInfo(ak))
1044+ let cP = aj(dF, X)
1045+ if (!(isDefined(getInteger(cP))))
1046+ then throw((("NFT " + eU.name) + " is not staked by you"))
9051047 else {
906- let en = ab(N)
907- let ep = split_4C(valueOrElse(getString(en), ""), "_")
908- let E = indexOf(ep, do)
909- if (!(isDefined(E)))
910- then throw(("Your staked NFTs don't contain " + do))
1048+ let eV = al(X)
1049+ let eX = split_4C(valueOrElse(getString(eV), ""), "_")
1050+ let L = indexOf(eX, dF)
1051+ if (!(isDefined(L)))
1052+ then throw(("Your staked NFTs don't contain " + dF))
9111053 else {
912- let eq = if ((size(ep) > 1))
913- then StringEntry(en, makeString_2C(removeByIndex(ep, value(E)), "_"))
914- else DeleteEntry(en)
915- let et = (em.issuer == this)
916- if (et)
1054+ let eY = if ((size(eX) > 1))
1055+ then StringEntry(eV, makeString_2C(removeByIndex(eX, value(L)), "_"))
1056+ else DeleteEntry(eV)
1057+ let fb = (eU.issuer == this)
1058+ if (fb)
9171059 then {
918- let eu = valueOrElse(getInteger(aM(N)), 0)
919- let ev = (cp(value(em.description)) * 10000)
920- let ew = ct(0, N, -(ev))
921- let du = ew._1
922- let dv = ew._2
923- $Tuple2(((((((du :+ eq) :+ IntegerEntry(aM(N), (eu - 1))) :+ IntegerEntry(aJ, max([0, (valueOrElse(getInteger(aJ), 0) - 1)]))) :+ DeleteEntry(Z(toBase58String(aa), N))) :+ ScriptTransfer(bM.caller, 1, aa)) ++ dB), dv)
1060+ let fc = valueOrElse(getInteger(bd(X)), 0)
1061+ let fd = (cG(value(eU.description)) * 10000)
1062+ let fe = cK(0, X, -(fd))
1063+ let dL = fe._1
1064+ let dM = fe._2
1065+ $Tuple2(((((((dL :+ eY) :+ IntegerEntry(bd(X), (fc - 1))) :+ IntegerEntry(ba, max([0, (valueOrElse(getInteger(ba), 0) - 1)]))) :+ DeleteEntry(aj(toBase58String(ak), X))) :+ ScriptTransfer(cd.caller, 1, ak)) ++ ej), dM)
9241066 }
9251067 else {
926- let ex = dk(em)
927- if ((ex == ""))
1068+ let ff = dB(eU)
1069+ if ((ff == ""))
9281070 then throw("Only WavesLands and Arkimals NFT tokens are accepted")
9291071 else {
930- let ey = valueOrElse(getInteger(aN(N)), 0)
931- let ez = ct(0, N, -(aF))
932- let du = ez._1
933- let dv = ez._2
934- $Tuple2((((((du :+ eq) :+ IntegerEntry(aN(N), (ey - 1))) :+ DeleteEntry(Z(toBase58String(aa), N))) :+ ScriptTransfer(bM.caller, 1, aa)) ++ dB), dv)
1072+ let fg = valueOrElse(getInteger(be(X)), 0)
1073+ let fh = cK(0, X, -(aW))
1074+ let dL = fh._1
1075+ let dM = fh._2
1076+ $Tuple2((((((dL :+ eY) :+ IntegerEntry(be(X), (fg - 1))) :+ DeleteEntry(aj(toBase58String(ak), X))) :+ ScriptTransfer(cd.caller, 1, ak)) ++ ej), dM)
9351077 }
9361078 }
9371079 }
9411083
9421084
9431085
944-@Callable(bM)
1086+@Callable(cd)
9451087 func exchangeNFTs () = {
946- let dB = bL(bM)
947- if ((3 > size(bM.payments)))
1088+ let ej = cc(cd)
1089+ if ((3 > size(cd.payments)))
9481090 then throw("Min one WLGOLD and 2 NFT payments allowed")
949- else if ((size(bM.payments) > 10))
1091+ else if ((size(cd.payments) > 10))
9501092 then throw("Max one WLGOLD and 9 NFT payments allowed")
9511093 else {
952- let N = toString(bM.caller)
953- func eA (aU,dE) = {
954- let aa = valueOrErrorMessage(dE.assetId, "WAVES payments not allowed")
955- if ((aa == R))
956- then $Tuple4((aU._1 + dE.amount), aU._2, aU._3, aU._4)
1094+ let X = toString(cd.caller)
1095+ func fi (bl,em) = {
1096+ let ak = valueOrErrorMessage(em.assetId, "WAVES payments not allowed")
1097+ if ((ak == ab))
1098+ then $Tuple4((bl._1 + em.amount), bl._2, bl._3, bl._4)
9571099 else {
958- let em = value(assetInfo(aa))
959- if ((em.issuer != this))
1100+ let eU = value(assetInfo(ak))
1101+ if ((eU.issuer != this))
9601102 then throw("Only WL-issued NFTs allowed")
9611103 else {
962- let eB = cr(value(em.description))
963- if (if ((aU._4 > 0))
964- then (eB != aU._4)
1104+ let fj = cI(value(eU.description))
1105+ if (if ((bl._4 > 0))
1106+ then (fj != bl._4)
9651107 else false)
9661108 then throw("You can exchange only NFTs of the same rarity")
9671109 else {
968- let ck = cp(value(em.description))
969- $Tuple4(aU._1, (aU._2 + ck), (aU._3 :+ Burn(aa, 1)), eB)
1110+ let cB = cG(value(eU.description))
1111+ $Tuple4(bl._1, (bl._2 + cB), (bl._3 :+ Burn(ak, 1)), fj)
9701112 }
9711113 }
9721114 }
9731115 }
9741116
975- let eC = {
976- let aW = bM.payments
977- let aX = size(aW)
978- let aY = $Tuple4(0, 0, nil, -1)
979- func aZ (ba,bb) = if ((bb >= aX))
980- then ba
981- else eA(ba, aW[bb])
1117+ let fk = {
1118+ let bn = cd.payments
1119+ let bo = size(bn)
1120+ let bp = $Tuple4(0, 0, nil, -1)
1121+ func bq (br,bs) = if ((bs >= bo))
1122+ then br
1123+ else fi(br, bn[bs])
9821124
983- func bc (ba,bb) = if ((bb >= aX))
984- then ba
1125+ func bt (br,bs) = if ((bs >= bo))
1126+ then br
9851127 else throw("List size exceeds 10")
9861128
987- bc(aZ(aZ(aZ(aZ(aZ(aZ(aZ(aZ(aZ(aZ(aY, 0), 1), 2), 3), 4), 5), 6), 7), 8), 9), 10)
1129+ bt(bq(bq(bq(bq(bq(bq(bq(bq(bq(bq(bp, 0), 1), 2), 3), 4), 5), 6), 7), 8), 9), 10)
9881130 }
989- let eD = eC._1
990- let eE = eC._2
991- let eF = eC._3
992- let cj = eC._4
993- let eG = if ((cj == bC))
994- then if ((br[bs] > eE))
995- then bC
996- else if ((br[bt] > eE))
997- then bD
998- else throw((("You can advance only one level of rarity, max total bonus " + toString(br[bt])) + "%"))
999- else if ((cj == bD))
1000- then if ((br[bt] > eE))
1001- then bD
1002- else if ((br[bu] > eE))
1003- then bE
1004- else throw((("You can advance only one level of rarity, max total bonus " + toString(br[bu])) + "%"))
1005- else if ((cj == bE))
1006- then if ((br[bu] > eE))
1007- then bE
1008- else bF
1009- else if ((cj == bF))
1010- then bF
1011- else if ((cj == bG))
1131+ let fl = fk._1
1132+ let fm = fk._2
1133+ let fn = fk._3
1134+ let cA = fk._4
1135+ let fo = if ((cA == bT))
1136+ then if ((bI[bJ] > fm))
1137+ then bT
1138+ else if ((bI[bK] > fm))
1139+ then bU
1140+ else throw((("You can advance only one level of rarity, max total bonus " + toString(bI[bK])) + "%"))
1141+ else if ((cA == bU))
1142+ then if ((bI[bK] > fm))
1143+ then bU
1144+ else if ((bI[bL] > fm))
1145+ then bV
1146+ else throw((("You can advance only one level of rarity, max total bonus " + toString(bI[bL])) + "%"))
1147+ else if ((cA == bV))
1148+ then if ((bI[bL] > fm))
1149+ then bV
1150+ else bW
1151+ else if ((cA == bW))
1152+ then bW
1153+ else if ((cA == bX))
10121154 then throw("You can't exchange NFTs of this rarity")
10131155 else throw("Unknown rarity")
1014- let eH = fraction(eE, e, cN(0))
1015- let eI = (eD - eH)
1016- let eJ = (eH / 2)
1017- let dL = ac(invoke(H, "burnWlgold", [(eH - eJ)], nil))
1018- if ((0 > eI))
1019- then throw((("You need to attach " + al(eH, 8)) + " WLGOLD as fee"))
1156+ let fp = fraction(fm, e, de(0))
1157+ let fq = (fl - fp)
1158+ let fr = (fp / 2)
1159+ let eu = aq(invoke(R, "burnWlgold", [(fp - fr)], nil))
1160+ if ((0 > fq))
1161+ then throw((("You need to attach " + az(fp, 8)) + " WLGOLD as fee"))
10201162 else {
1021- let eK = if ((eI > 0))
1022- then [ScriptTransfer(bM.caller, eI, R)]
1163+ let fs = if ((fq > 0))
1164+ then [ScriptTransfer(cd.caller, fq, ab)]
10231165 else nil
1024- let eL = cf(bx, eG, bI, eG, eE, bq, bK, bM.caller)
1025- let eM = eL._1
1026- let co = eL._2
1027- let eN = size(eF)
1028- let eO = if ((eN == 0))
1166+ let ft = cw(bO, fo, bZ, fo, fm, bH, cb, cd.caller)
1167+ let fu = ft._1
1168+ let cF = ft._2
1169+ let fv = size(fn)
1170+ let fw = if ((fv == 0))
10291171 then nil
1030- else [IntegerEntry(aI, (valueOrElse(getInteger(aI), 0) + eN))]
1031- $Tuple2((((((eM ++ eF) ++ eO) ++ dB) ++ eK) :+ ScriptTransfer(addressFromStringValue(getStringValue(H, bh)), eJ, R)), $Tuple2(co, dL))
1172+ else [IntegerEntry(aZ, (valueOrElse(getInteger(aZ), 0) + fv))]
1173+ $Tuple2((((((fu ++ fn) ++ fw) ++ ej) ++ fs) :+ ScriptTransfer(addressFromStringValue(getStringValue(R, by)), fr, ab)), $Tuple2(cF, eu))
10321174 }
10331175 }
10341176 }
10351177
10361178
10371179
1038-@Callable(bM)
1180+@Callable(cd)
10391181 func openNftChest () = {
1040- let dB = bL(bM)
1041- if ((size(bM.payments) != 1))
1182+ let ej = cc(cd)
1183+ if ((size(cd.payments) != 1))
10421184 then throw("exactly 1 payment must be attached")
10431185 else {
1044- let dE = bM.payments[0]
1045- let dI = dE.amount
1046- if (if (!(isDefined(dE.assetId)))
1186+ let em = cd.payments[0]
1187+ let er = em.amount
1188+ if (if (!(isDefined(em.assetId)))
10471189 then true
1048- else (value(dE.assetId) != R))
1190+ else (value(em.assetId) != ab))
10491191 then throw("WLGOLD payments only!")
10501192 else {
1051- let eH = fraction(j, d, cN(0))
1052- let eI = (dI - eH)
1053- let eJ = (eH / 2)
1054- let dL = ac(invoke(H, "burnWlgold", [(eH - eJ)], nil))
1055- if ((0 > eI))
1056- then throw((("You need to attach " + al(eH, 8)) + " WLGOLD as fee"))
1193+ let fp = fraction(j, d, de(0))
1194+ let fq = (er - fp)
1195+ let fr = (fp / 2)
1196+ let eu = aq(invoke(R, "burnWlgold", [(fp - fr)], nil))
1197+ if ((0 > fq))
1198+ then throw((("You need to attach " + az(fp, 8)) + " WLGOLD as fee"))
10571199 else {
1058- let eK = if ((eI > 0))
1059- then [ScriptTransfer(bM.caller, eI, R)]
1200+ let fs = if ((fq > 0))
1201+ then [ScriptTransfer(cd.caller, fq, ab)]
10601202 else nil
1061- let N = toString(bM.caller)
1062- let eP = P(N)
1063- let eQ = valueOrErrorMessage(getInteger(eP), "You have to commitForRandom() first!")
1064- if ((eQ > height))
1065- then throw(("Random number is not ready yet, wait until height = " + toString(eQ)))
1203+ let X = toString(cd.caller)
1204+ let fx = Z(X)
1205+ let fy = valueOrErrorMessage(getInteger(fx), "You have to commitForRandom() first!")
1206+ if ((fy > height))
1207+ then throw(("Random number is not ready yet, wait until height = " + toString(fy)))
10661208 else {
1067- let at = value(value(blockInfoByHeight(eQ)).vrf)
1068- let as = fromBase58String(split(valueOrElse(getString(O(N)), "42_DEFAULT"), "_")[1])
1069- let eR = aq(100, as, at)
1070- let eS = if ((84 > eR))
1071- then $Tuple2(1, bC)
1072- else if ((98 > eR))
1073- then $Tuple2(5, bD)
1074- else $Tuple2(10, bE)
1075- let cd = eS._1
1076- let cj = eS._2
1077- let eT = cf(bx, cj, bI, cj, cd, bq, bK, bM.caller)
1078- let eM = eT._1
1079- let co = eT._2
1080- $Tuple2(((((eM ++ dB) ++ eK) :+ ScriptTransfer(addressFromStringValue(getStringValue(H, bh)), eJ, R)) :+ DeleteEntry(eP)), $Tuple2(co, dL))
1209+ let aH = value(value(blockInfoByHeight(fy)).vrf)
1210+ let aG = fromBase58String(split(valueOrElse(getString(Y(X)), "42_DEFAULT"), "_")[1])
1211+ let fz = aE(100, aG, aH)
1212+ let fA = if ((84 > fz))
1213+ then $Tuple2(1, bT)
1214+ else if ((98 > fz))
1215+ then $Tuple2(5, bU)
1216+ else $Tuple2(10, bV)
1217+ let cu = fA._1
1218+ let cA = fA._2
1219+ let fB = cw(bO, cA, bZ, cA, cu, bH, cb, cd.caller)
1220+ let fu = fB._1
1221+ let cF = fB._2
1222+ $Tuple2(((((fu ++ ej) ++ fs) :+ ScriptTransfer(addressFromStringValue(getStringValue(R, by)), fr, ab)) :+ DeleteEntry(fx)), $Tuple2(cF, eu))
10811223 }
10821224 }
10831225 }
10861228
10871229
10881230
1089-@Callable(bM)
1231+@Callable(cd)
10901232 func commitForRandom () = {
1091- let dB = bL(bM)
1092- let N = toString(bM.caller)
1093- let eP = P(N)
1094- if (isDefined(getInteger(eP)))
1233+ let ej = cc(cd)
1234+ let X = toString(cd.caller)
1235+ let fx = Z(X)
1236+ if (isDefined(getInteger(fx)))
10951237 then throw("You already commited for random, please use it")
10961238 else {
1097- let eQ = (height + i)
1098- $Tuple2(([IntegerEntry(eP, eQ)] ++ dB), eQ)
1239+ let fy = (height + i)
1240+ $Tuple2(([IntegerEntry(fx, fy)] ++ ej), fy)
10991241 }
11001242 }
1243+
1244+
1245+
1246+@Callable(cd)
1247+func drawDaylyPromo () = if ((cd.caller != this))
1248+ then throw("Permission denied")
1249+ else {
1250+ let fC = (height % o)
1251+ let aF = valueOrElse(getInteger(ao), 0)
1252+ if ((aF == 0))
1253+ then throw("No tickets to draw")
1254+ else {
1255+ let fD = (fC * o)
1256+ let fE = if ((fD > q))
1257+ then fD
1258+ else (fD + q)
1259+ let aH = value(value(blockInfoByHeight(fE)).vrf)
1260+ let dZ = valueOrElse(getString(ap), "")
1261+ if ((dZ == ""))
1262+ then throw("No participants")
1263+ else {
1264+ let fF = split_51C(dZ, "_")
1265+ func fG (fH,fI) = if ((fI >= dN))
1266+ then fH
1267+ else {
1268+ let fz = aE(fH._1, fH._2, aH)
1269+ let fJ = if ((fH._3 == ""))
1270+ then nil
1271+ else split_51C(fH._3, "_")
1272+ func fK (bl,fL) = {
1273+ let fM = split(fL, ":")
1274+ let X = fM[0]
1275+ let dV = parseIntValue(fM[1])
1276+ let fN = (bl._1 + dV)
1277+ if (if ((bl._3 == ""))
1278+ then (fN > fz)
1279+ else false)
1280+ then $Tuple3(fN, dV, X)
1281+ else $Tuple3(fN, bl._2, bl._3)
1282+ }
1283+
1284+ let ed = {
1285+ let bn = fJ
1286+ let bo = size(bn)
1287+ let bp = $Tuple3(0, 0, "")
1288+ func bq (br,bs) = if ((bs >= bo))
1289+ then br
1290+ else fK(br, bn[bs])
1291+
1292+ func bt (br,bs) = if ((bs >= bo))
1293+ then br
1294+ else throw("List size exceeds 20")
1295+
1296+ bt(bq(bq(bq(bq(bq(bq(bq(bq(bq(bq(bq(bq(bq(bq(bq(bq(bq(bq(bq(bq(bp, 0), 1), 2), 3), 4), 5), 6), 7), 8), 9), 10), 11), 12), 13), 14), 15), 16), 17), 18), 19), 20)
1297+ }
1298+ let fO = ed._3
1299+ if ((fO == ""))
1300+ then fH
1301+ else {
1302+ let ec = split_51C(fH._3, fO)
1303+ let eb = if ((ec[0] == ""))
1304+ then drop(ec[1], 5)
1305+ else (dropRight(ec[0], 1) + drop(ec[1], 4))
1306+ let fP = dP(fO, dO[fI], true)
1307+ let eo = fP._1
1308+ let fQ = fP._2
1309+ let fR = fromBase58String(valueOrElse(getString(O, Y(fO)), "DEFAULT"))
1310+ $Tuple4((fH._1 - ed._2), fR, eb, (fH._4 :+ eo))
1311+ }
1312+ }
1313+
1314+ let fS = {
1315+ let bn = [0, 1, 2]
1316+ let bo = size(bn)
1317+ let bp = $Tuple4(aF, cd.transactionId, dZ, nil)
1318+ func bq (br,bs) = if ((bs >= bo))
1319+ then br
1320+ else fG(br, bn[bs])
1321+
1322+ func bt (br,bs) = if ((bs >= bo))
1323+ then br
1324+ else throw("List size exceeds 3")
1325+
1326+ bt(bq(bq(bq(bp, 0), 1), 2), 3)
1327+ }
1328+ $Tuple2(([StringEntry(ap, fS._3), IntegerEntry(ao, fS._1)] ++ fS._4), 0)
1329+ }
1330+ }
1331+ }
11011332
11021333
Full:
OldNewDifferences
11 {-# STDLIB_VERSION 6 #-}
22 {-# SCRIPT_TYPE ACCOUNT #-}
33 {-# CONTENT_TYPE DAPP #-}
44 let a = "__"
55
66 let b = 1000000
77
88 let c = 10000000
99
1010 let d = 100000000
1111
1212 let e = 100000000000000
1313
1414 let f = 86400000
1515
1616 let g = 10
1717
1818 let h = 100
1919
2020 let i = 2
2121
2222 let j = 5000000
2323
2424 let k = take(drop(this.bytes, 1), 1)
2525
2626 let l = {
2727 let m = k
2828 if ((base58'2W' == m))
29+ then 4487040
30+ else if ((base58'2T' == m))
31+ then 3412800
32+ else throw("Unknown chain")
33+ }
34+
35+let n = {
36+ let m = k
37+ if ((base58'2W' == m))
38+ then 4517280
39+ else if ((base58'2T' == m))
40+ then 3443040
41+ else throw("Unknown chain")
42+ }
43+
44+let o = {
45+ let m = k
46+ if ((base58'2W' == m))
47+ then 1440
48+ else if ((base58'2T' == m))
49+ then 60
50+ else throw("Unknown chain")
51+ }
52+
53+let p = {
54+ let m = k
55+ if ((base58'2W' == m))
2956 then 10080
3057 else if ((base58'2T' == m))
3158 then 180
3259 else throw("Unknown chain")
3360 }
3461
35-let n = {
62+let q = {
63+ let m = k
64+ if ((base58'2W' == m))
65+ then 0
66+ else if ((base58'2T' == m))
67+ then 1146000
68+ else throw("Unknown chain")
69+ }
70+
71+let r = {
3672 let m = k
3773 if ((base58'2W' == m))
3874 then base58'9wc3LXNA4TEBsXyKtoLE9mrbDD7WMHXvXrCjZvabLAsi'
3975 else if ((base58'2T' == m))
4076 then base58'6mWwf9mZBjVgkC54idpyaZLQfAosD914wT8fGf2iiY63'
4177 else throw("Unknown chain")
4278 }
4379
44-let o = {
80+let s = {
4581 let m = k
4682 if ((base58'2W' == m))
4783 then "3PFwYta8biEz31zpeFe5DJK8wE5trSpQVF8"
4884 else if ((base58'2T' == m))
4985 then "3N7UuYar6264P58FBhVWKPQAh4Yua2hgngv"
5086 else throw("Unknown chain")
5187 }
5288
53-let p = {
89+let t = {
90+ let m = k
91+ if ((base58'2W' == m))
92+ then "3PQCuvFbvh4LkPUnrnU1z3jnbA1p9m3WNhv"
93+ else if ((base58'2T' == m))
94+ then "3MumkGGztCKAXpWDqxkddofqXSUbqQkvSJy"
95+ else throw("Unknown chain")
96+ }
97+
98+let u = {
5499 let m = k
55100 if ((base58'2W' == m))
56101 then f
57102 else if ((base58'2T' == m))
58103 then 60000
59104 else throw("Unknown chain")
60105 }
61106
62-let q = {
107+let v = {
63108 let m = k
64109 if ((base58'2W' == m))
65110 then "3PLncXtS1U83D6cQbFD3H8rBHPLgzxSFKZ1"
66111 else if ((base58'2T' == m))
67112 then "3NDCyBG5q85JuaRiigUeEtainyjCQT3XpZm"
68113 else throw("Unknown chain")
69114 }
70115
71-func r (s,t) = valueOrErrorMessage(getString(s, t), makeString(["mandatory ", toString(s), ".", t, " is not defined"], ""))
116+func w (x,y) = valueOrErrorMessage(getString(x, y), makeString(["mandatory ", toString(x), ".", y, " is not defined"], ""))
72117
73118
74-let u = 1
119+let z = 1
75120
76-let v = 2
121+let A = 2
77122
78-let w = 5
123+let B = 5
79124
80-let x = 6
125+let C = 6
81126
82-func y () = "%s__restConfig"
127+func D () = "%s__restConfig"
83128
84129
85-func z () = "%s__rest2Addr"
130+func E () = "%s__rest2Addr"
86131
87132
88-func A (B) = split_4C(r(B, y()), a)
133+func F () = "%s__restAddr"
89134
90135
91-func C (D,E) = valueOrErrorMessage(addressFromString(D[E]), ("Rest cfg doesn't contain address at index " + toString(E)))
136+let G = addressFromStringValue(valueOrElse(getString(this, F()), t))
137+
138+func H (I) = split_4C(w(I, D()), a)
92139
93140
94-let F = addressFromStringValue(valueOrElse(getString(this, z()), o))
95-
96-let D = A(F)
97-
98-let G = C(D, u)
99-
100-let H = C(D, v)
101-
102-let I = C(D, w)
103-
104-let J = C(D, x)
105-
106-let K = "oldAcresContract"
107-
108-func L () = "contractsBlocked"
141+func J (K,L) = valueOrErrorMessage(addressFromString(K[L]), ("Rest cfg doesn't contain address at index " + toString(L)))
109142
110143
111-func M (N) = ("lastWeekTxIdByUser_" + N)
144+let M = 1
145+
146+let N = H(G)
147+
148+let O = J(N, M)
149+
150+let P = addressFromStringValue(valueOrElse(getString(this, E()), s))
151+
152+let K = H(P)
153+
154+let Q = J(K, z)
155+
156+let R = J(K, A)
157+
158+let S = J(K, B)
159+
160+let T = J(K, C)
161+
162+let U = "oldAcresContract"
163+
164+func V () = "contractsBlocked"
112165
113166
114-func O (N) = ("curWeekTxIdByUser_" + N)
167+func W (X) = ("lastWeekTxIdByUser_" + X)
115168
116169
117-func P (s) = ("finishBlockFor_" + s)
170+func Y (X) = ("curWeekTxIdByUser_" + X)
118171
119172
120-let Q = "wlg_assetId"
121-
122-let R = valueOrErrorMessage(getBinary(H, Q), "WLGOLD is not issued yet")
123-
124-let S = "acresIssuedAmount"
125-
126-let T = "acresAssetId"
127-
128-let U = valueOrErrorMessage(getBinary(G, T), "ACRES is not issued yet")
129-
130-func V (N) = ("acresStakedTimeByUser_" + N)
173+func Z (x) = ("finishBlockFor_" + x)
131174
132175
133-func W (X) = ("stakedLandsByOwner_" + X)
176+let aa = "wlg_assetId"
177+
178+let ab = valueOrErrorMessage(getBinary(R, aa), "WLGOLD is not issued yet")
179+
180+let ac = "acresIssuedAmount"
181+
182+let ad = "acresAssetId"
183+
184+let ae = valueOrErrorMessage(getBinary(Q, ad), "ACRES is not issued yet")
185+
186+func af (X) = ("acresStakedTimeByUser_" + X)
134187
135188
136-func Y (X) = ("stakedDuckByOwner_" + X)
189+func ag (ah) = ("stakedLandsByOwner_" + ah)
137190
138191
139-func Z (aa,N) = ((("st_" + aa) + "_") + N)
192+func ai (ah) = ("stakedDuckByOwner_" + ah)
140193
141194
142-func ab (X) = ("stakedNFTsByOwner_" + X)
195+func aj (ak,X) = ((("st_" + ak) + "_") + X)
143196
144197
145-func ac (ad) = {
146- let m = ad
198+func al (ah) = ("stakedNFTsByOwner_" + ah)
199+
200+
201+func am (x) = ("promoAcres_" + x)
202+
203+
204+func an (x) = ("promoTickets_" + x)
205+
206+
207+let ao = "totalPromoTickets"
208+
209+let ap = "promoMap"
210+
211+func aq (ar) = {
212+ let m = ar
147213 if ($isInstanceOf(m, "Int"))
148214 then {
149- let ae = m
150- ae
215+ let as = m
216+ as
151217 }
152218 else throw("fail to cast into Int")
153219 }
154220
155221
156-func af (ag) = {
157- let m = ag
222+func at (au) = {
223+ let m = au
158224 if ($isInstanceOf(m, "(Int, Int, Int, Int, Int)"))
159225 then {
160- let ah = m
161- ah
226+ let av = m
227+ av
162228 }
163229 else throw("fail to cast into (Int, Int, Int, Int, Int)")
164230 }
165231
166232
167-func ai (ag) = {
168- let m = ag
233+func aw (au) = {
234+ let m = au
169235 if ($isInstanceOf(m, "(Int, Int, Int, Int)"))
170236 then {
171- let ah = m
172- ah
237+ let av = m
238+ av
173239 }
174240 else throw("fail to cast into (Int, Int, Int, Int)")
175241 }
176242
177243
178-func aj (ag) = {
179- let m = ag
244+func ax (au) = {
245+ let m = au
180246 if ($isInstanceOf(m, "(Int, Int, Int)"))
181247 then {
182- let ah = m
183- ah
248+ let av = m
249+ av
184250 }
185251 else throw("fail to cast into (Int, Int, Int)")
186252 }
187253
188254
189-func ak (ag) = {
190- let m = ag
255+func ay (au) = {
256+ let m = au
191257 if ($isInstanceOf(m, "(Int, Int)"))
192258 then {
193- let ah = m
194- ah
259+ let av = m
260+ av
195261 }
196262 else throw("fail to cast into (Int, Int)")
197263 }
198264
199265
200-func al (ag,am) = {
201- let an = pow(10, 0, am, 0, 0, DOWN)
202- let ao = toString((ag % an))
203- let ap = drop(toString(an), (1 + size(ao)))
204- (((toString((ag / an)) + ".") + ap) + ao)
266+func az (au,aA) = {
267+ let aB = pow(10, 0, aA, 0, 0, DOWN)
268+ let aC = toString((au % aB))
269+ let aD = drop(toString(aB), (1 + size(aC)))
270+ (((toString((au / aB)) + ".") + aD) + aC)
205271 }
206272
207273
208-func aq (ar,as,at) = if ((0 >= ar))
274+func aE (aF,aG,aH) = if ((0 >= aF))
209275 then throw("maxValue should be > 0")
210276 else {
211- let au = sha256_16Kb((as + at))
212- (toInt(au) % ar)
277+ let aI = sha256_16Kb((aG + aH))
278+ (toInt(aI) % aF)
213279 }
214280
215281
216-let av = 1000000
217-
218-let aw = 100000000
219-
220-let ax = "wlg_issuedAmount"
221-
222-let ay = "zbill_issuedAmount"
223-
224-func az (N) = ("acresStakedAmountByUser_" + N)
225-
226-
227-func aA (N) = ("farmingPowerByUser_" + N)
228-
229-
230-let aB = "acresStakedAmountTotal"
231-
232-let aC = "totalFarmingPower"
233-
234-let aD = 3
235-
236-let aE = 1
237-
238-let aF = 5000
239-
240-let aG = 4
241-
242-let aH = "nftTotalIssued"
243-
244-let aI = "nftTotalBurned"
245-
246-let aJ = "WlNftTotalStaked"
247-
248-let aK = "ArkNftTotalStaked"
249-
250-func aL (aa) = ("nftNumberByAssetId_" + aa)
251-
252-
253-func aM (N) = ("userWlNftNumber_" + N)
254-
255-
256-func aN (N) = ("userArkNftNumber_" + N)
257-
258-
259-func aO (N) = ("userFullBonus_" + N)
260-
261-
262-let aP = [0, 10, 20, 40, 80, 150, 250, 400, 700, 1000]
263-
264-func aQ (aR) = {
265- let aS = ((aR + 99999999) / aw)
266- func aT (aU,aV) = if ((aV >= aS))
267- then aU
268- else (aU + 1)
269-
270- let aW = aP
271- let aX = size(aW)
272- let aY = 0
273- func aZ (ba,bb) = if ((bb >= aX))
274- then ba
275- else aT(ba, aW[bb])
276-
277- func bc (ba,bb) = if ((bb >= aX))
278- then ba
279- else throw("List size exceeds 10")
280-
281- bc(aZ(aZ(aZ(aZ(aZ(aZ(aZ(aZ(aZ(aZ(aY, 0), 1), 2), 3), 4), 5), 6), 7), 8), 9), 10)
282+func aJ (au,aK) = {
283+ let aL = toString(au)
284+ let aD = drop(toString(pow(10, 0, (aK - size(aL)), 0, 0, DOWN)), 1)
285+ (aD + aL)
282286 }
283287
284288
285-func bd (aR) = ((aR * 20) * (aQ(aR) + 4))
289+let aM = 1000000
290+
291+let aN = 100000000
292+
293+let aO = "wlg_issuedAmount"
294+
295+let aP = "zbill_issuedAmount"
296+
297+func aQ (X) = ("acresStakedAmountByUser_" + X)
286298
287299
288-func be (aR,bf) = {
289- let bg = bd(aR)
290- $Tuple2(fraction(bg, (av + bf), av), bg)
300+func aR (X) = ("farmingPowerByUser_" + X)
301+
302+
303+let aS = "acresStakedAmountTotal"
304+
305+let aT = "totalFarmingPower"
306+
307+let aU = 3
308+
309+let aV = 1
310+
311+let aW = 5000
312+
313+let aX = 4
314+
315+let aY = "nftTotalIssued"
316+
317+let aZ = "nftTotalBurned"
318+
319+let ba = "WlNftTotalStaked"
320+
321+let bb = "ArkNftTotalStaked"
322+
323+func bc (ak) = ("nftNumberByAssetId_" + ak)
324+
325+
326+func bd (X) = ("userWlNftNumber_" + X)
327+
328+
329+func be (X) = ("userArkNftNumber_" + X)
330+
331+
332+func bf (X) = ("userFullBonus_" + X)
333+
334+
335+let bg = [0, 10, 20, 40, 80, 150, 250, 400, 700, 1000]
336+
337+func bh (bi) = {
338+ let bj = ((bi + 99999999) / aN)
339+ func bk (bl,bm) = if ((bm >= bj))
340+ then bl
341+ else (bl + 1)
342+
343+ let bn = bg
344+ let bo = size(bn)
345+ let bp = 0
346+ func bq (br,bs) = if ((bs >= bo))
347+ then br
348+ else bk(br, bn[bs])
349+
350+ func bt (br,bs) = if ((bs >= bo))
351+ then br
352+ else throw("List size exceeds 10")
353+
354+ bt(bq(bq(bq(bq(bq(bq(bq(bq(bq(bq(bp, 0), 1), 2), 3), 4), 5), 6), 7), 8), 9), 10)
291355 }
292356
293357
294-let bh = "teamAddr"
295-
296-func bi (N) = ("lastArbTimeUser_" + N)
358+func bu (bi) = ((bi * 20) * (bh(bi) + 4))
297359
298360
299-let bj = 1733346000000
361+func bv (bi,bw) = {
362+ let bx = bu(bi)
363+ $Tuple2(fraction(bx, (aM + bw), aM), bx)
364+ }
300365
301-let bk = 14
302366
303-let bl = "lastAcresSellTime"
367+let by = "teamAddr"
304368
305-let bm = "lastLimitLeft"
369+func bz (X) = ("lastArbTimeUser_" + X)
306370
307-let bn = ["Gold shovel", "Pickaxe"]
308371
309-let bo = ["Reward for early birds", "Increases FarmPower"]
372+let bA = 1733346000000
310373
311-let bp = 0
374+let bB = 14
312375
313-let bq = 1
376+let bC = "lastAcresSellTime"
314377
315-let br = [5, 10, 20]
378+let bD = "lastLimitLeft"
316379
317-let bs = 0
380+let bE = ["Gold shovel", "Pickaxe"]
318381
319-let bt = 1
382+let bF = ["Reward for early birds", "Increases FarmPower"]
320383
321-let bu = 2
384+let bG = 0
322385
323-let bv = ["SHOVEL", "PICKAXE"]
386+let bH = 1
324387
325-let bw = 0
388+let bI = [5, 10, 20]
326389
327-let bx = 1
390+let bJ = 0
328391
329-let by = ["contentPickaxeC", "contentPickaxeU", "contentPickaxeL", "contentPickaxeE", "contentShovelP"]
392+let bK = 1
330393
331-let bz = 0
394+let bL = 2
332395
333-let bA = 4
396+let bM = ["SHOVEL", "PICKAXE"]
334397
335-let bB = ["Common", "Uncommon", "Legendary", "Epic", "Promo"]
398+let bN = 0
336399
337-let bC = 0
400+let bO = 1
338401
339-let bD = 1
402+let bP = ["contentPickaxeC", "contentPickaxeU", "contentPickaxeL", "contentPickaxeE", "contentShovelP"]
340403
341-let bE = 2
404+let bQ = 0
342405
343-let bF = 3
406+let bR = 4
344407
345-let bG = 4
408+let bS = ["Common", "Uncommon", "Legendary", "Epic", "Promo"]
346409
347-let bH = ["Digging tools"]
410+let bT = 0
348411
349-let bI = 0
412+let bU = 1
350413
351-let bJ = ["FarmPower"]
414+let bV = 2
352415
353-let bK = 0
416+let bW = 3
354417
355-func bL (bM) = if (if ((bM.originCaller != F))
356- then valueOrElse(getBoolean(L()), false)
418+let bX = 4
419+
420+let bY = ["Digging tools"]
421+
422+let bZ = 0
423+
424+let ca = ["FarmPower"]
425+
426+let cb = 0
427+
428+func cc (cd) = if (if ((cd.originCaller != P))
429+ then valueOrElse(getBoolean(V()), false)
357430 else false)
358431 then throw("Contracts are under maintenance")
359432 else {
360- let N = toString(bM.originCaller)
361- let bN = (height / l)
362- let bO = M(N)
363- let bP = getString(bO)
364- let bQ = toBase58String(bM.transactionId)
365- let bR = ((toString(bN) + "_") + bQ)
366- let bS = O(N)
367- if (isDefined(bP))
433+ let X = toString(cd.originCaller)
434+ let ce = (height / p)
435+ let cf = W(X)
436+ let cg = getString(cf)
437+ let ch = toBase58String(cd.transactionId)
438+ let ci = ((toString(ce) + "_") + ch)
439+ let cj = Y(X)
440+ if (isDefined(cg))
368441 then {
369- let bT = split(value(bP), "_")
370- if ((bT[0] == toString(bN)))
371- then [StringEntry(bO, bR), StringEntry(bS, bR)]
372- else if ((bT[0] == toString((bN - 1))))
373- then [StringEntry(bS, bR)]
442+ let ck = split(value(cg), "_")
443+ if ((ck[0] == toString(ce)))
444+ then [StringEntry(cf, ci), StringEntry(cj, ci)]
445+ else if ((ck[0] == toString((ce - 1))))
446+ then [StringEntry(cj, ci)]
374447 else {
375- let bU = getStringValue(bS)
376- let bV = split(bU, "_")
377- if ((bV[0] == toString(bN)))
378- then [StringEntry(bS, bR)]
379- else [StringEntry(bO, bU), StringEntry(bS, bR)]
448+ let cl = getStringValue(cj)
449+ let cm = split(cl, "_")
450+ if ((cm[0] == toString(ce)))
451+ then [StringEntry(cj, ci)]
452+ else [StringEntry(cf, cl), StringEntry(cj, ci)]
380453 }
381454 }
382- else [StringEntry(bO, bR), StringEntry(bS, bR)]
455+ else [StringEntry(cf, ci), StringEntry(cj, ci)]
383456 }
384457
385458
386-func bW (bX,bY,bZ,ca,cb,cc,cd,ce) = (((((((((((((((((((((((("{\"url\": \"https://waveslands.com\", " + "\"contentKey\": \"") + bX) + "\", ") + "\"number\": ") + toString(bY)) + ", ") + "\"collection\": \"") + bZ) + "\", ") + "\"name\": \"") + ca) + "\", ") + "\"description\": \"") + cb) + "\", ") + "\"rare\": \"") + cc) + "\", ") + "\"bonus\": ") + toString(cd)) + ", ") + "\"bonusType\": \"") + ce) + "\"}")
459+func cn (co,cp,cq,cr,cs,ct,cu,cv) = (((((((((((((((((((((((("{\"url\": \"https://waveslands.com\", " + "\"contentKey\": \"") + co) + "\", ") + "\"number\": ") + toString(cp)) + ", ") + "\"collection\": \"") + cq) + "\", ") + "\"name\": \"") + cr) + "\", ") + "\"description\": \"") + cs) + "\", ") + "\"rare\": \"") + ct) + "\", ") + "\"bonus\": ") + toString(cu)) + ", ") + "\"bonusType\": \"") + cv) + "\"}")
387460
388461
389-func cf (cg,ch,ci,cj,ck,cl,cm,N) = {
390- let bY = valueOrElse(getInteger(aH), 0)
391- let cc = bB[cj]
392- let ca = (((bv[cg] + "-") + take(cc, 1)) + toString(ck))
393- let cn = Issue(ca, bW(by[ch], bY, bH[ci], bn[cg], bo[cl], bB[cj], ck, bJ[cm]), 1, 0, false)
394- let co = calculateAssetId(cn)
395- $Tuple2([cn, IntegerEntry(aH, (bY + 1)), IntegerEntry(aL(toBase58String(co)), bY), ScriptTransfer(N, 1, co)], co)
462+func cw (cx,cy,cz,cA,cB,cC,cD,X) = {
463+ let cp = valueOrElse(getInteger(aY), 0)
464+ let ct = bS[cA]
465+ let cr = (((bM[cx] + "-") + take(ct, 1)) + toString(cB))
466+ let cE = Issue(cr, cn(bP[cy], cp, bY[cz], bE[cx], bF[cC], bS[cA], cB, ca[cD]), 1, 0, false)
467+ let cF = calculateAssetId(cE)
468+ $Tuple2([cE, IntegerEntry(aY, (cp + 1)), IntegerEntry(bc(toBase58String(cF)), cp), ScriptTransfer(X, 1, cF)], cF)
396469 }
397470
398471
399-func cp (cb) = if (!(contains(cb, "\"bonusType\": \"FarmPower\"")))
400- then throw(("NFT is not supported: " + cb))
472+func cG (cs) = if (!(contains(cs, "\"bonusType\": \"FarmPower\"")))
473+ then throw(("NFT is not supported: " + cs))
401474 else {
402- let cq = split_4C(split_4C(cb, "\"bonus\":")[1], ",")[0]
403- parseIntValue(drop(cq, (valueOrElse(lastIndexOf(cq, " "), -1) + 1)))
475+ let cH = split_4C(split_4C(cs, "\"bonus\":")[1], ",")[0]
476+ parseIntValue(drop(cH, (valueOrElse(lastIndexOf(cH, " "), -1) + 1)))
404477 }
405478
406479
407-func cr (cb) = if (!(contains(cb, "\"rare\"")))
408- then throw(("NFT is not supported: " + cb))
480+func cI (cs) = if (!(contains(cs, "\"rare\"")))
481+ then throw(("NFT is not supported: " + cs))
409482 else {
410- let cs = split_4C(split_4C(split_4C(cb, "\"rare\"")[1], ",")[0], "\"")[1]
411- value(indexOf(bB, cs))
483+ let cJ = split_4C(split_4C(split_4C(cs, "\"rare\"")[1], ",")[0], "\"")[1]
484+ value(indexOf(bS, cJ))
412485 }
413486
414487
415-func ct (cu,s,cv) = if (if ((cu == 0))
416- then (cv == 0)
488+func cK (cL,x,cM) = if (if ((cL == 0))
489+ then (cM == 0)
417490 else false)
418491 then throw("Nothing to do")
419492 else {
420- let cw = invoke(H, "onStakeUnstakeLand", [s], nil)
421- if ((cw == cw))
493+ let cN = invoke(R, "onStakeUnstakeLand", [x], nil)
494+ if ((cN == cN))
422495 then {
423- let cx = lastBlock.timestamp
424- let cy = V(s)
425- let cz = az(s)
426- let cA = valueOrElse(getInteger(cz), 0)
427- if (if ((0 > cu))
428- then (0 > (cA + cu))
496+ let cO = lastBlock.timestamp
497+ let cP = af(x)
498+ let cQ = aQ(x)
499+ let cR = valueOrElse(getInteger(cQ), 0)
500+ if (if ((0 > cL))
501+ then (0 > (cR + cL))
429502 else false)
430- then throw(((("You have only " + al(cA, 8)) + " ACRES staked, tried to unstake ") + al(-(cu), 8)))
503+ then throw(((("You have only " + az(cR, 8)) + " ACRES staked, tried to unstake ") + az(-(cL), 8)))
431504 else {
432- let cB = (cA + cu)
433- let cC = valueOrElse(getInteger(aB), 0)
434- let cD = aA(s)
435- let cE = valueOrElse(getInteger(cD), 0)
436- let cF = aO(s)
437- let cG = valueOrElse(getInteger(G, cF), 0)
438- if (if ((0 > cv))
439- then (0 > (cG + cv))
505+ let cS = (cR + cL)
506+ let cT = valueOrElse(getInteger(aS), 0)
507+ let cU = aR(x)
508+ let cV = valueOrElse(getInteger(cU), 0)
509+ let cW = bf(x)
510+ let cX = valueOrElse(getInteger(Q, cW), 0)
511+ if (if ((0 > cM))
512+ then (0 > (cX + cM))
440513 else false)
441- then throw((((("You have only " + al(cG, 4)) + "% bonus, and tried to unstake ") + al(-(cv), 4)) + "%"))
514+ then throw((((("You have only " + az(cX, 4)) + "% bonus, and tried to unstake ") + az(-(cM), 4)) + "%"))
442515 else {
443- let cH = be(cB, (cG + cv))
444- let cI = cH._1
445- let cJ = cH._2
446- let cK = valueOrElse(getInteger(aC), 0)
447- let cL = if ((cu == 0))
516+ let cY = bv(cS, (cX + cM))
517+ let cZ = cY._1
518+ let da = cY._2
519+ let db = valueOrElse(getInteger(aT), 0)
520+ let dc = if ((cL == 0))
448521 then nil
449- else [IntegerEntry(cz, cB), IntegerEntry(aB, (cC + cu))]
450- let cM = if ((cv == 0))
522+ else [IntegerEntry(cQ, cS), IntegerEntry(aS, (cT + cL))]
523+ let dd = if ((cM == 0))
451524 then nil
452- else [IntegerEntry(cF, (cG + cv))]
453- $Tuple2(((((cL ++ cM) :+ IntegerEntry(cy, lastBlock.timestamp)) :+ IntegerEntry(cD, cI)) :+ IntegerEntry(aC, ((cK + cI) - cE))), cw)
525+ else [IntegerEntry(cW, (cX + cM))]
526+ $Tuple2(((((dc ++ dd) :+ IntegerEntry(cP, lastBlock.timestamp)) :+ IntegerEntry(cU, cZ)) :+ IntegerEntry(aT, ((db + cZ) - cV))), cN)
454527 }
455528 }
456529 }
457530 else throw("Strict value is not equal to itself.")
458531 }
459532
460533
461-func cN (cO) = {
462- let cP = valueOrErrorMessage(getInteger(H, ax), "WLGOLD is not issued yet")
463- let cQ = assetBalance(H, n)
464- let cR = (assetBalance(G, n) - cO)
465- let cS = (assetBalance(I, n) + valueOrElse(getInteger(I, ay), 0))
466- let cT = ((cR + cQ) + cS)
467- fraction(cT, d, cP)
534+func de (df) = {
535+ let dg = valueOrErrorMessage(getInteger(R, aO), "WLGOLD is not issued yet")
536+ let dh = assetBalance(R, r)
537+ let di = (assetBalance(Q, r) - df)
538+ let dj = (assetBalance(S, r) + valueOrElse(getInteger(S, aP), 0))
539+ let dk = ((di + dh) + dj)
540+ fraction(dk, d, dg)
468541 }
469542
470543
471-func cU () = {
472- let cQ = assetBalance(H, n)
473- let cR = assetBalance(this, n)
474- let cS = (assetBalance(I, n) + valueOrElse(getInteger(I, ay), 0))
475- let cV = (((cR + cQ) + cS) / h)
476- let cW = valueOrElse(getInteger(bm), cV)
477- let cX = valueOrElse(getInteger(bl), 0)
478- let cx = lastBlock.timestamp
479- let cY = (cW + fraction(cV, (cx - cX), f))
480- let cZ = min([cY, cV])
481- $Tuple2(IntegerEntry(bl, cx), cZ)
544+func dl () = {
545+ let dh = assetBalance(R, r)
546+ let di = assetBalance(this, r)
547+ let dj = (assetBalance(S, r) + valueOrElse(getInteger(S, aP), 0))
548+ let dm = (((di + dh) + dj) / h)
549+ let dn = valueOrElse(getInteger(bD), dm)
550+ let do = valueOrElse(getInteger(bC), 0)
551+ let cO = lastBlock.timestamp
552+ let dp = (dn + fraction(dm, (cO - do), f))
553+ let dq = min([dp, dm])
554+ $Tuple2(IntegerEntry(bC, cO), dq)
482555 }
483556
484557
485-let da = addressFromStringValue("3PJgZ6AK1WVCpdCmEZpesHmaKvrQDdXG5og")
558+let dr = addressFromStringValue("3PJgZ6AK1WVCpdCmEZpesHmaKvrQDdXG5og")
486559
487-let db = valueOrElse(getString(da, "static_incubatorAddress"), "")
560+let ds = valueOrElse(getString(dr, "static_incubatorAddress"), "")
488561
489-let dc = valueOrElse(getString(da, "static_breederAddress"), "")
562+let dt = valueOrElse(getString(dr, "static_breederAddress"), "")
490563
491-let dd = valueOrElse(getString(da, "static_turtleIncubatorAddress"), "")
564+let du = valueOrElse(getString(dr, "static_turtleIncubatorAddress"), "")
492565
493-let de = valueOrElse(getString(da, "static_turtleBreederAddress"), "")
566+let dv = valueOrElse(getString(dr, "static_turtleBreederAddress"), "")
494567
495-let df = valueOrElse(getString(da, "static_canineIncubatorAddress"), "")
568+let dw = valueOrElse(getString(dr, "static_canineIncubatorAddress"), "")
496569
497-let dg = valueOrElse(getString(da, "static_canineBreederAddress"), "")
570+let dx = valueOrElse(getString(dr, "static_canineBreederAddress"), "")
498571
499-let dh = valueOrElse(getString(da, "static_felineIncubatorAddress"), "")
572+let dy = valueOrElse(getString(dr, "static_felineIncubatorAddress"), "")
500573
501-let di = valueOrElse(getString(da, "static_felineBreederAddress"), "")
574+let dz = valueOrElse(getString(dr, "static_felineBreederAddress"), "")
502575
503-let dj = valueOrElse(getString(da, "static_mutantIncubatorAddress"), "")
576+let dA = valueOrElse(getString(dr, "static_mutantIncubatorAddress"), "")
504577
505-func dk (dl) = {
506- let dm = toString(dl.issuer)
578+func dB (dC) = {
579+ let dD = toString(dC.issuer)
507580 if (if (if (if (if (if (if (if (if (if ((k == base58'2T'))
508- then (dm == q)
581+ then (dD == v)
509582 else false)
510583 then true
511- else (dm == db))
584+ else (dD == ds))
512585 then true
513- else (dm == dc))
586+ else (dD == dt))
514587 then true
515- else (dm == dd))
588+ else (dD == du))
516589 then true
517- else (dm == de))
590+ else (dD == dv))
518591 then true
519- else (dm == df))
592+ else (dD == dw))
520593 then true
521- else (dm == dg))
594+ else (dD == dx))
522595 then true
523- else (dm == dh))
596+ else (dD == dy))
524597 then true
525- else (dm == di))
526- then dl.name
527- else if ((dm == dj))
528- then dl.description
598+ else (dD == dz))
599+ then dC.name
600+ else if ((dD == dA))
601+ then dC.description
529602 else ""
530603 }
531604
532605
533-func dn (N,do,bf,dp,dq,dr) = {
534- let ds = valueOrElse(getInteger(dp), 0)
535- if ((ds >= dr))
536- then throw((("You can stake max " + toString(dr)) + " of such NFTs"))
606+func dE (X,dF,bw,dG,dH,dI) = {
607+ let dJ = valueOrElse(getInteger(dG), 0)
608+ if ((dJ >= dI))
609+ then throw((("You can stake max " + toString(dI)) + " of such NFTs"))
537610 else {
538- let dt = ct(0, N, bf)
539- let du = dt._1
540- let dv = dt._2
541- $Tuple2((((du :+ IntegerEntry(dp, (ds + 1))) :+ IntegerEntry(dq, (valueOrElse(getInteger(dq), 0) + 1))) :+ IntegerEntry(Z(do, N), lastBlock.timestamp)), dv)
611+ let dK = cK(0, X, bw)
612+ let dL = dK._1
613+ let dM = dK._2
614+ $Tuple2((((dL :+ IntegerEntry(dG, (dJ + 1))) :+ IntegerEntry(dH, (valueOrElse(getInteger(dH), 0) + 1))) :+ IntegerEntry(aj(dF, X), lastBlock.timestamp)), dM)
542615 }
543616 }
544617
545618
546-@Callable(bM)
547-func saveLastTx () = if (!(containsElement([H, J], bM.caller)))
619+let dN = 3
620+
621+let dO = [50000000, 25000000, 25000000]
622+
623+func dP (x,cL,dQ) = {
624+ let dR = cK(cL, x, 0)
625+ let dL = dR._1
626+ let dM = dR._2
627+ let dS = if (if ((height >= l))
628+ then (n > height)
629+ else false)
630+ then {
631+ let dT = am(x)
632+ let dU = ((if (dQ)
633+ then 0
634+ else valueOrElse(getInteger(dT), 0)) + cL)
635+ let dV = (dU / d)
636+ let dW = an(x)
637+ let dX = (dV - valueOrElse(getInteger(dW), 0))
638+ let dY = (valueOrElse(getInteger(ao), 0) + dX)
639+ if (if (dQ)
640+ then true
641+ else (dX > 0))
642+ then {
643+ let dZ = valueOrElse(getString(ap), "")
644+ let ea = ((x + ":") + aJ(dV, 3))
645+ let eb = if (contains(dZ, x))
646+ then {
647+ let ec = split_51C(dZ, x)
648+ if ((ec[0] == ""))
649+ then {
650+ let ed = drop(ec[1], 4)
651+ if ((ed == ""))
652+ then if ((dV == 0))
653+ then ""
654+ else ea
655+ else if ((dV == 0))
656+ then drop(ed, 1)
657+ else (ea + ed)
658+ }
659+ else {
660+ let ed = drop(ec[1], 4)
661+ if ((ed == ""))
662+ then if ((dV == 0))
663+ then dropRight(ec[0], 1)
664+ else (ec[0] + ea)
665+ else if ((dV == 0))
666+ then (ec[0] + drop(ed, 1))
667+ else ((ec[0] + ea) + ed)
668+ }
669+ }
670+ else if ((dV == 0))
671+ then dZ
672+ else if ((dZ == ""))
673+ then ea
674+ else ((dZ + "_") + ea)
675+[IntegerEntry(dT, dU), IntegerEntry(dW, dV), IntegerEntry(ao, dY), StringEntry(ap, eb)]
676+ }
677+ else [IntegerEntry(dT, dU)]
678+ }
679+ else nil
680+ $Tuple2((dL ++ dS), dM)
681+ }
682+
683+
684+@Callable(cd)
685+func saveLastTx () = if (!(containsElement([R, T], cd.caller)))
548686 then throw("Access denied")
549- else $Tuple2(bL(bM), 42)
687+ else $Tuple2(cc(cd), 42)
550688
551689
552690
553-@Callable(bM)
554-func constructorV1 (dw,dx) = if ((bM.caller != this))
691+@Callable(cd)
692+func constructorV1 (ee,ef) = if ((cd.caller != this))
555693 then throw("Permission denied")
556694 else {
557- let dy = addressFromStringValue(dx)
558-[IntegerEntry(S, getIntegerValue(dy, S)), BinaryEntry(T, getBinaryValue(dy, T)), StringEntry(z(), dw), StringEntry(K, dx)]
695+ let eg = addressFromStringValue(ef)
696+[IntegerEntry(ac, getIntegerValue(eg, ac)), BinaryEntry(ad, getBinaryValue(eg, ad)), StringEntry(E(), ee), StringEntry(U, ef)]
559697 }
560698
561699
562700
563-@Callable(bM)
564-func setBlocked (dz) = if ((bM.caller != this))
701+@Callable(cd)
702+func setBlocked (eh) = if ((cd.caller != this))
565703 then throw("permission denied")
566- else [BooleanEntry(L(), dz)]
704+ else [BooleanEntry(V(), eh)]
567705
568706
569707
570-@Callable(bM)
571-func unstakeAcres (dA) = {
572- let dB = bL(bM)
573- if ((0 >= dA))
574- then throw("Amount should be positive")
708+@Callable(cd)
709+func unstakeAcres (ei) = {
710+ let ej = cc(cd)
711+ if (if ((height >= l))
712+ then (n > height)
713+ else false)
714+ then throw("You can't unstake during Xmas promo period")
715+ else if ((0 >= ei))
716+ then throw("Amount should be positive")
717+ else {
718+ let x = toString(cd.caller)
719+ if ((size(cd.payments) != 0))
720+ then throw("No payments required")
721+ else {
722+ let ek = (valueOrElse(getInteger(R, bz(x)), 0) + u)
723+ if ((ek > lastBlock.timestamp))
724+ then throw(("You traded some WLGOLD, cannot unstake until " + toString(ek)))
725+ else {
726+ let el = cK(-(ei), x, 0)
727+ let dL = el._1
728+ let dM = el._2
729+ $Tuple2(((dL :+ ScriptTransfer(cd.caller, ei, ae)) ++ ej), dM)
730+ }
731+ }
732+ }
733+ }
734+
735+
736+
737+@Callable(cd)
738+func stakeAcres () = {
739+ let ej = cc(cd)
740+ let x = toString(cd.caller)
741+ if ((size(cd.payments) != 1))
742+ then throw("exactly 1 payment must be attached")
575743 else {
576- let s = toString(bM.caller)
577- if ((size(bM.payments) != 0))
578- then throw("No payments required")
744+ let em = cd.payments[0]
745+ let cL = em.amount
746+ if (if (!(isDefined(em.assetId)))
747+ then true
748+ else (value(em.assetId) != ae))
749+ then throw("ACRES payments only!")
579750 else {
580- let dC = (valueOrElse(getInteger(H, bi(s)), 0) + p)
581- if ((dC > lastBlock.timestamp))
582- then throw(("You traded some WLGOLD, cannot unstake until " + toString(dC)))
583- else {
584- let dD = ct(-(dA), s, 0)
585- let du = dD._1
586- let dv = dD._2
587- $Tuple2(((du :+ ScriptTransfer(bM.caller, dA, U)) ++ dB), dv)
588- }
751+ let en = dP(x, cL, false)
752+ let eo = en._1
753+ let dM = en._2
754+ $Tuple2((eo ++ ej), dM)
589755 }
590756 }
591757 }
592758
593759
594760
595-@Callable(bM)
596-func stakeAcres () = {
597- let dB = bL(bM)
598- let s = toString(bM.caller)
599- if ((size(bM.payments) != 1))
761+@Callable(cd)
762+func buyAcres () = {
763+ let ej = cc(cd)
764+ if ((size(cd.payments) != 1))
600765 then throw("exactly 1 payment must be attached")
601766 else {
602- let dE = bM.payments[0]
603- let cu = dE.amount
604- if (if (!(isDefined(dE.assetId)))
767+ let em = cd.payments[0]
768+ let ep = em.amount
769+ if (if (!(isDefined(em.assetId)))
605770 then true
606- else (value(dE.assetId) != U))
607- then throw("ACRES payments only!")
608- else {
609- let dF = ct(cu, s, 0)
610- let du = dF._1
611- let dv = dF._2
612- $Tuple2((du ++ dB), dv)
613- }
614- }
615- }
616-
617-
618-
619-@Callable(bM)
620-func buyAcres () = {
621- let dB = bL(bM)
622- if ((size(bM.payments) != 1))
623- then throw("exactly 1 payment must be attached")
624- else {
625- let dE = bM.payments[0]
626- let dG = dE.amount
627- if (if (!(isDefined(dE.assetId)))
628- then true
629- else (value(dE.assetId) != n))
771+ else (value(em.assetId) != r))
630772 then throw("USDT payments only!")
631- else if ((b > dG))
632- then throw((("Min payment should be " + al(b, 6)) + " USDT"))
773+ else if ((b > ep))
774+ then throw((("Min payment should be " + az(b, 6)) + " USDT"))
633775 else {
634- let dH = (dG * g)
635- let dI = fraction(dG, d, cN(dG))
636- let dJ = addressFromStringValue(getStringValue(K))
637- let dK = invoke(dJ, "requestAcresCallback", [dH], nil)
638- if ((dK == dK))
776+ let eq = (ep * g)
777+ let er = fraction(ep, d, de(ep))
778+ let es = addressFromStringValue(getStringValue(U))
779+ let et = invoke(es, "requestAcresCallback", [eq], nil)
780+ if ((et == et))
639781 then {
640- let dL = ac(invoke(H, "burnWlgold", [dI], nil))
641- $Tuple2(([ScriptTransfer(bM.caller, dH, U)] ++ dB), dL)
782+ let eu = aq(invoke(R, "burnWlgold", [er], nil))
783+ $Tuple2(([ScriptTransfer(cd.caller, eq, ae)] ++ ej), eu)
642784 }
643785 else throw("Strict value is not equal to itself.")
644786 }
645787 }
646788 }
647789
648790
649791
650-@Callable(bM)
651-func buyAcresREADONLY (dG) = {
652- let dH = (dG * g)
653- let dM = fraction(dG, d, cN(dG))
654- $Tuple2(nil, [dH, b, dH, dM])
792+@Callable(cd)
793+func buyAcresREADONLY (ep) = {
794+ let eq = (ep * g)
795+ let ev = fraction(ep, d, de(ep))
796+ $Tuple2(nil, [eq, b, eq, ev])
655797 }
656798
657799
658800
659-@Callable(bM)
801+@Callable(cd)
660802 func sellAcres () = {
661- let dB = bL(bM)
662- if ((size(bM.payments) != 1))
803+ let ej = cc(cd)
804+ if ((size(cd.payments) != 1))
663805 then throw("exactly 1 payment must be attached")
664806 else {
665- let dE = bM.payments[0]
666- let dH = dE.amount
667- if (if (!(isDefined(dE.assetId)))
807+ let em = cd.payments[0]
808+ let eq = em.amount
809+ if (if (!(isDefined(em.assetId)))
668810 then true
669- else (value(dE.assetId) != U))
811+ else (value(em.assetId) != ae))
670812 then throw("ACRES payments only!")
671- else if ((c > dH))
672- then throw((("Min payment should be " + al(c, 8)) + " ACRES"))
813+ else if ((c > eq))
814+ then throw((("Min payment should be " + az(c, 8)) + " ACRES"))
673815 else {
674- let N = toString(bM.caller)
675- let dN = cU()
676- let dO = dN._1
677- let dP = dN._2
678- let dQ = (dP * g)
679- if ((dH > dQ))
680- then throw((("You can sell max " + al(dQ, 8)) + " ACRES"))
816+ let X = toString(cd.caller)
817+ let ew = dl()
818+ let ex = ew._1
819+ let ey = ew._2
820+ let ez = (ey * g)
821+ if ((eq > ez))
822+ then throw((("You can sell max " + az(ez, 8)) + " ACRES"))
681823 else {
682- let dG = ((dH / g) / 2)
683- $Tuple2(([dO, IntegerEntry(bm, (dP - dG)), ScriptTransfer(bM.caller, dG, n)] ++ dB), dG)
824+ let ep = ((eq / g) / 2)
825+ $Tuple2(([ex, IntegerEntry(bD, (ey - ep)), ScriptTransfer(cd.caller, ep, r)] ++ ej), ep)
684826 }
685827 }
686828 }
687829 }
688830
689831
690832
691-@Callable(bM)
692-func sellAcresREADONLY (s,dH) = {
693- let dR = cU()
694- let dO = dR._1
695- let dP = dR._2
696- let dG = ((dH / g) / 2)
697- $Tuple2(nil, [dG, c, (dP * g), 0])
833+@Callable(cd)
834+func sellAcresREADONLY (x,eq) = {
835+ let eA = dl()
836+ let ex = eA._1
837+ let ey = eA._2
838+ let ep = ((eq / g) / 2)
839+ $Tuple2(nil, [ep, c, (ey * g), 0])
698840 }
699841
700842
701843
702-@Callable(bM)
844+@Callable(cd)
703845 func convertOldStakes () = {
704- let dB = bL(bM)
705- if ((bj > lastBlock.timestamp))
706- then throw(("Disabled until " + toString((bj / 1000))))
846+ let ej = cc(cd)
847+ if ((bA > lastBlock.timestamp))
848+ then throw(("Disabled until " + toString((bA / 1000))))
707849 else {
708- let s = toString(bM.caller)
709- if ((size(bM.payments) != 0))
850+ let x = toString(cd.caller)
851+ if ((size(cd.payments) != 0))
710852 then throw("No payments required")
711853 else {
712- let dJ = addressFromStringValue(getStringValue(K))
713- let dA = valueOrElse(getInteger(dJ, az(s)), 0)
714- let dS = if ((dA > 0))
715- then ak(invoke(dJ, "unstakeAcresCallback", [dA, s], nil))
854+ let es = addressFromStringValue(getStringValue(U))
855+ let ei = valueOrElse(getInteger(es, aQ(x)), 0)
856+ let eB = if ((ei > 0))
857+ then ay(invoke(es, "unstakeAcresCallback", [ei, x], nil))
716858 else $Tuple2(0, 0)
717- let dT = addressFromStringValue(q)
718- let dU = getString(dT, W(s))
719- let dV = if (isDefined(dU))
859+ let eC = addressFromStringValue(v)
860+ let eD = getString(eC, ag(x))
861+ let eE = if (isDefined(eD))
720862 then {
721- let dW = split_51C(value(dU), "_")
722- if ((size(dW) > bk))
723- then throw((("You have more than " + toString(bk)) + " lands staked, please contact support, we'll process your case manually"))
863+ let eF = split_51C(value(eD), "_")
864+ if ((size(eF) > bB))
865+ then throw((("You have more than " + toString(bB)) + " lands staked, please contact support, we'll process your case manually"))
724866 else {
725- func dX (aU,dY) = if ((dY == ""))
867+ func eG (bl,eH) = if ((eH == ""))
726868 then throw("landAssetId is required")
727869 else {
728- let dZ = af(invoke(dT, "unstakeLandCallback", [dY, s], nil))
729- if ((dZ == dZ))
730- then $Tuple5((aU._1 + dZ._1), (aU._2 + dZ._2), (aU._3 + dZ._3), (aU._4 + dZ._4), (aU._5 + dZ._5))
870+ let ed = at(invoke(eC, "unstakeLandCallback", [eH, x], nil))
871+ if ((ed == ed))
872+ then $Tuple5((bl._1 + ed._1), (bl._2 + ed._2), (bl._3 + ed._3), (bl._4 + ed._4), (bl._5 + ed._5))
731873 else throw("Strict value is not equal to itself.")
732874 }
733875
734- let ea = {
735- let aW = dW
736- let aX = size(aW)
737- let aY = $Tuple5(0, 0, 0, 0, 0)
738- func aZ (ba,bb) = if ((bb >= aX))
739- then ba
740- else dX(ba, aW[bb])
876+ let eI = {
877+ let bn = eF
878+ let bo = size(bn)
879+ let bp = $Tuple5(0, 0, 0, 0, 0)
880+ func bq (br,bs) = if ((bs >= bo))
881+ then br
882+ else eG(br, bn[bs])
741883
742- func bc (ba,bb) = if ((bb >= aX))
743- then ba
884+ func bt (br,bs) = if ((bs >= bo))
885+ then br
744886 else throw("List size exceeds 14")
745887
746- bc(aZ(aZ(aZ(aZ(aZ(aZ(aZ(aZ(aZ(aZ(aZ(aZ(aZ(aZ(aY, 0), 1), 2), 3), 4), 5), 6), 7), 8), 9), 10), 11), 12), 13), 14)
888+ bt(bq(bq(bq(bq(bq(bq(bq(bq(bq(bq(bq(bq(bq(bq(bp, 0), 1), 2), 3), 4), 5), 6), 7), 8), 9), 10), 11), 12), 13), 14)
747889 }
748- if ((ea == ea))
890+ if ((eI == eI))
749891 then {
750- let eb = invoke(dT, "unstakeLandsFinalizeCallback", [s], nil)
751- if ((eb == eb))
892+ let eJ = invoke(eC, "unstakeLandsFinalizeCallback", [x], nil)
893+ if ((eJ == eJ))
752894 then {
753- let dK = invoke(dJ, "requestAcresCallback", [(((ea._1 + ea._2) + ea._3) + ea._4)], nil)
754- if ((dK == dK))
895+ let et = invoke(es, "requestAcresCallback", [(((eI._1 + eI._2) + eI._3) + eI._4)], nil)
896+ if ((et == et))
755897 then {
756- let ec = cf(bw, bA, bI, bG, 3, bp, bK, bM.caller)
757- let ed = ec._1
758- let co = ec._2
759- $Tuple6(ea._1, ea._2, ea._3, ea._4, ea._5, ed)
898+ let eK = cw(bN, bR, bZ, bX, 3, bG, cb, cd.caller)
899+ let eL = eK._1
900+ let cF = eK._2
901+ $Tuple6(eI._1, eI._2, eI._3, eI._4, eI._5, eL)
760902 }
761903 else throw("Strict value is not equal to itself.")
762904 }
763905 else throw("Strict value is not equal to itself.")
764906 }
765907 else throw("Strict value is not equal to itself.")
766908 }
767909 }
768910 else $Tuple6(0, 0, 0, 0, 0, nil)
769- let ee = valueOrElse(getString(dT, Y(s)), "")
770- let ef = if ((ee != ""))
771- then aj(invoke(dT, "unstakeDuckCallback", [ee, s], nil))
911+ let eM = valueOrElse(getString(eC, ai(x)), "")
912+ let eN = if ((eM != ""))
913+ then ax(invoke(eC, "unstakeDuckCallback", [eM, x], nil))
772914 else $Tuple3(0, 0, 0)
773- let eg = ct((((((((dS._1 + dV._1) + dV._2) + dV._3) + dV._4) + ef._1) + ef._2) + ef._3), s, 0)
774- $Tuple2(((dV._6 ++ eg._1) ++ dB), $Tuple3(dS._2, dV._5, eg._2))
915+ let eO = cK((((((((eB._1 + eE._1) + eE._2) + eE._3) + eE._4) + eN._1) + eN._2) + eN._3), x, 0)
916+ $Tuple2(((eE._6 ++ eO._1) ++ ej), $Tuple3(eB._2, eE._5, eO._2))
775917 }
776918 }
777919 }
778920
779921
780922
781-@Callable(bM)
782-func unstakeLandsREADONLY (s) = {
783- let dT = addressFromStringValue(q)
784- let dU = getString(dT, W(s))
785- let dV = if (isDefined(dU))
923+@Callable(cd)
924+func unstakeLandsREADONLY (x) = {
925+ let eC = addressFromStringValue(v)
926+ let eD = getString(eC, ag(x))
927+ let eE = if (isDefined(eD))
786928 then {
787- let dW = split_51C(value(dU), "_")
788- func dX (aU,dY) = if ((dY == ""))
929+ let eF = split_51C(value(eD), "_")
930+ func eG (bl,eH) = if ((eH == ""))
789931 then throw("landAssetId is required")
790932 else {
791- let dZ = ai(invoke(dT, "unstakeLandREADONLY", [dY, s], nil))
792- $Tuple4((aU._1 + dZ._1), (aU._2 + dZ._2), (aU._3 + dZ._3), (aU._4 + dZ._4))
933+ let ed = aw(invoke(eC, "unstakeLandREADONLY", [eH, x], nil))
934+ $Tuple4((bl._1 + ed._1), (bl._2 + ed._2), (bl._3 + ed._3), (bl._4 + ed._4))
793935 }
794936
795- let aW = dW
796- let aX = size(aW)
797- let aY = $Tuple4(0, 0, 0, 0)
798- func aZ (ba,bb) = if ((bb >= aX))
799- then ba
800- else dX(ba, aW[bb])
937+ let bn = eF
938+ let bo = size(bn)
939+ let bp = $Tuple4(0, 0, 0, 0)
940+ func bq (br,bs) = if ((bs >= bo))
941+ then br
942+ else eG(br, bn[bs])
801943
802- func bc (ba,bb) = if ((bb >= aX))
803- then ba
944+ func bt (br,bs) = if ((bs >= bo))
945+ then br
804946 else throw("List size exceeds 100")
805947
806- bc(aZ(aZ(aZ(aZ(aZ(aZ(aZ(aZ(aZ(aZ(aZ(aZ(aZ(aZ(aZ(aZ(aZ(aZ(aZ(aZ(aZ(aZ(aZ(aZ(aZ(aZ(aZ(aZ(aZ(aZ(aZ(aZ(aZ(aZ(aZ(aZ(aZ(aZ(aZ(aZ(aZ(aZ(aZ(aZ(aZ(aZ(aZ(aZ(aZ(aZ(aZ(aZ(aZ(aZ(aZ(aZ(aZ(aZ(aZ(aZ(aZ(aZ(aZ(aZ(aZ(aZ(aZ(aZ(aZ(aZ(aZ(aZ(aZ(aZ(aZ(aZ(aZ(aZ(aZ(aZ(aZ(aZ(aZ(aZ(aZ(aZ(aZ(aZ(aZ(aZ(aZ(aZ(aZ(aZ(aZ(aZ(aZ(aZ(aZ(aZ(aY, 0), 1), 2), 3), 4), 5), 6), 7), 8), 9), 10), 11), 12), 13), 14), 15), 16), 17), 18), 19), 20), 21), 22), 23), 24), 25), 26), 27), 28), 29), 30), 31), 32), 33), 34), 35), 36), 37), 38), 39), 40), 41), 42), 43), 44), 45), 46), 47), 48), 49), 50), 51), 52), 53), 54), 55), 56), 57), 58), 59), 60), 61), 62), 63), 64), 65), 66), 67), 68), 69), 70), 71), 72), 73), 74), 75), 76), 77), 78), 79), 80), 81), 82), 83), 84), 85), 86), 87), 88), 89), 90), 91), 92), 93), 94), 95), 96), 97), 98), 99), 100)
948+ bt(bq(bq(bq(bq(bq(bq(bq(bq(bq(bq(bq(bq(bq(bq(bq(bq(bq(bq(bq(bq(bq(bq(bq(bq(bq(bq(bq(bq(bq(bq(bq(bq(bq(bq(bq(bq(bq(bq(bq(bq(bq(bq(bq(bq(bq(bq(bq(bq(bq(bq(bq(bq(bq(bq(bq(bq(bq(bq(bq(bq(bq(bq(bq(bq(bq(bq(bq(bq(bq(bq(bq(bq(bq(bq(bq(bq(bq(bq(bq(bq(bq(bq(bq(bq(bq(bq(bq(bq(bq(bq(bq(bq(bq(bq(bq(bq(bq(bq(bq(bq(bp, 0), 1), 2), 3), 4), 5), 6), 7), 8), 9), 10), 11), 12), 13), 14), 15), 16), 17), 18), 19), 20), 21), 22), 23), 24), 25), 26), 27), 28), 29), 30), 31), 32), 33), 34), 35), 36), 37), 38), 39), 40), 41), 42), 43), 44), 45), 46), 47), 48), 49), 50), 51), 52), 53), 54), 55), 56), 57), 58), 59), 60), 61), 62), 63), 64), 65), 66), 67), 68), 69), 70), 71), 72), 73), 74), 75), 76), 77), 78), 79), 80), 81), 82), 83), 84), 85), 86), 87), 88), 89), 90), 91), 92), 93), 94), 95), 96), 97), 98), 99), 100)
807949 }
808950 else $Tuple4(0, 0, 0, 0)
809- $Tuple2(nil, dV)
951+ $Tuple2(nil, eE)
810952 }
811953
812954
813955
814-@Callable(bM)
815-func stakeAcresCallback (N) = if ((bM.caller != addressFromStringValue(q)))
956+@Callable(cd)
957+func stakeAcresCallback (X) = if ((cd.caller != addressFromStringValue(v)))
816958 then throw("Permission denied")
817- else ct(bM.payments[0].amount, N, 0)
959+ else cK(cd.payments[0].amount, X, 0)
818960
819961
820962
821-@Callable(bM)
822-func simulateStakeAcresREADONLY (s,eh) = {
823- let cz = az(s)
824- let cB = (valueOrElse(getInteger(cz), 0) + eh)
825- let cC = valueOrElse(getInteger(aB), 0)
826- let cD = aA(s)
827- let cE = valueOrElse(getInteger(cD), 0)
828- let ei = valueOrElse(getInteger(G, aO(s)), 0)
829- let ej = be(cB, ei)
830- let cI = ej._1
831- let cJ = ej._2
832- let cK = valueOrElse(getInteger(aC), 0)
833- let ek = ((cK + cI) - cE)
834- $Tuple2(nil, [cE, cI, cK, ek])
963+@Callable(cd)
964+func simulateStakeAcresREADONLY (x,eP) = {
965+ let cQ = aQ(x)
966+ let cS = (valueOrElse(getInteger(cQ), 0) + eP)
967+ let cT = valueOrElse(getInteger(aS), 0)
968+ let cU = aR(x)
969+ let cV = valueOrElse(getInteger(cU), 0)
970+ let eQ = valueOrElse(getInteger(Q, bf(x)), 0)
971+ let eR = bv(cS, eQ)
972+ let cZ = eR._1
973+ let da = eR._2
974+ let db = valueOrElse(getInteger(aT), 0)
975+ let eS = ((db + cZ) - cV)
976+ $Tuple2(nil, [cV, cZ, db, eS])
835977 }
836978
837979
838980
839-@Callable(bM)
840-func issuePickC1 (el) = if ((bM.caller != H))
981+@Callable(cd)
982+func issuePickC1 (eT) = if ((cd.caller != R))
841983 then throw("Permission denied")
842- else cf(bx, bz, bI, bC, 1, bq, bK, addressFromStringValue(el))
984+ else cw(bO, bQ, bZ, bT, 1, bH, cb, addressFromStringValue(eT))
843985
844986
845987
846-@Callable(bM)
988+@Callable(cd)
847989 func stakeNFT () = {
848- let dB = bL(bM)
849- if ((size(bM.payments) != 1))
990+ let ej = cc(cd)
991+ if ((size(cd.payments) != 1))
850992 then throw("Exactly one payment required")
851993 else {
852- let dE = value(bM.payments[0])
853- if ((dE.amount != 1))
994+ let em = value(cd.payments[0])
995+ if ((em.amount != 1))
854996 then throw("NFT token should be attached as payment")
855997 else {
856- let aa = value(dE.assetId)
857- let em = value(assetInfo(aa))
858- let do = toBase58String(aa)
859- let N = toString(bM.caller)
860- let en = ab(N)
861- let eo = getString(en)
862- let ep = if (isDefined(eo))
863- then split_4C(value(eo), "_")
998+ let ak = value(em.assetId)
999+ let eU = value(assetInfo(ak))
1000+ let dF = toBase58String(ak)
1001+ let X = toString(cd.caller)
1002+ let eV = al(X)
1003+ let eW = getString(eV)
1004+ let eX = if (isDefined(eW))
1005+ then split_4C(value(eW), "_")
8641006 else nil
865- if (containsElement(ep, do))
866- then throw(("Your staked NFTs already contain " + do))
867- else if ((size(ep) >= aG))
868- then throw((("Your already staked max (" + toString(aG)) + ") NFTs"))
1007+ if (containsElement(eX, dF))
1008+ then throw(("Your staked NFTs already contain " + dF))
1009+ else if ((size(eX) >= aX))
1010+ then throw((("Your already staked max (" + toString(aX)) + ") NFTs"))
8691011 else {
870- let eq = StringEntry(en, makeString_2C((ep :+ do), "_"))
871- if ((em.issuer == this))
1012+ let eY = StringEntry(eV, makeString_2C((eX :+ dF), "_"))
1013+ if ((eU.issuer == this))
8721014 then {
873- let er = dn(N, do, (cp(value(em.description)) * 10000), aM(N), aJ, aD)
874- let du = er._1
875- let dv = er._2
876- $Tuple2(((dB ++ du) :+ eq), dv)
1015+ let eZ = dE(X, dF, (cG(value(eU.description)) * 10000), bd(X), ba, aU)
1016+ let dL = eZ._1
1017+ let dM = eZ._2
1018+ $Tuple2(((ej ++ dL) :+ eY), dM)
8771019 }
878- else if ((dk(em) == ""))
1020+ else if ((dB(eU) == ""))
8791021 then throw("Only WavesLands and Arkimals NFT tokens are accepted")
8801022 else {
881- let es = dn(N, do, aF, aN(N), aK, aE)
882- let du = es._1
883- let dv = es._2
884- $Tuple2(((dB ++ du) :+ eq), dv)
1023+ let fa = dE(X, dF, aW, be(X), bb, aV)
1024+ let dL = fa._1
1025+ let dM = fa._2
1026+ $Tuple2(((ej ++ dL) :+ eY), dM)
8851027 }
8861028 }
8871029 }
8881030 }
8891031 }
8901032
8911033
8921034
893-@Callable(bM)
894-func unstakeNFT (do) = {
895- let dB = bL(bM)
896- if ((size(bM.payments) != 0))
1035+@Callable(cd)
1036+func unstakeNFT (dF) = {
1037+ let ej = cc(cd)
1038+ if ((size(cd.payments) != 0))
8971039 then throw("No payments required")
8981040 else {
899- let aa = fromBase58String(do)
900- let N = toString(bM.caller)
901- let em = value(assetInfo(aa))
902- let cy = Z(do, N)
903- if (!(isDefined(getInteger(cy))))
904- then throw((("NFT " + em.name) + " is not staked by you"))
1041+ let ak = fromBase58String(dF)
1042+ let X = toString(cd.caller)
1043+ let eU = value(assetInfo(ak))
1044+ let cP = aj(dF, X)
1045+ if (!(isDefined(getInteger(cP))))
1046+ then throw((("NFT " + eU.name) + " is not staked by you"))
9051047 else {
906- let en = ab(N)
907- let ep = split_4C(valueOrElse(getString(en), ""), "_")
908- let E = indexOf(ep, do)
909- if (!(isDefined(E)))
910- then throw(("Your staked NFTs don't contain " + do))
1048+ let eV = al(X)
1049+ let eX = split_4C(valueOrElse(getString(eV), ""), "_")
1050+ let L = indexOf(eX, dF)
1051+ if (!(isDefined(L)))
1052+ then throw(("Your staked NFTs don't contain " + dF))
9111053 else {
912- let eq = if ((size(ep) > 1))
913- then StringEntry(en, makeString_2C(removeByIndex(ep, value(E)), "_"))
914- else DeleteEntry(en)
915- let et = (em.issuer == this)
916- if (et)
1054+ let eY = if ((size(eX) > 1))
1055+ then StringEntry(eV, makeString_2C(removeByIndex(eX, value(L)), "_"))
1056+ else DeleteEntry(eV)
1057+ let fb = (eU.issuer == this)
1058+ if (fb)
9171059 then {
918- let eu = valueOrElse(getInteger(aM(N)), 0)
919- let ev = (cp(value(em.description)) * 10000)
920- let ew = ct(0, N, -(ev))
921- let du = ew._1
922- let dv = ew._2
923- $Tuple2(((((((du :+ eq) :+ IntegerEntry(aM(N), (eu - 1))) :+ IntegerEntry(aJ, max([0, (valueOrElse(getInteger(aJ), 0) - 1)]))) :+ DeleteEntry(Z(toBase58String(aa), N))) :+ ScriptTransfer(bM.caller, 1, aa)) ++ dB), dv)
1060+ let fc = valueOrElse(getInteger(bd(X)), 0)
1061+ let fd = (cG(value(eU.description)) * 10000)
1062+ let fe = cK(0, X, -(fd))
1063+ let dL = fe._1
1064+ let dM = fe._2
1065+ $Tuple2(((((((dL :+ eY) :+ IntegerEntry(bd(X), (fc - 1))) :+ IntegerEntry(ba, max([0, (valueOrElse(getInteger(ba), 0) - 1)]))) :+ DeleteEntry(aj(toBase58String(ak), X))) :+ ScriptTransfer(cd.caller, 1, ak)) ++ ej), dM)
9241066 }
9251067 else {
926- let ex = dk(em)
927- if ((ex == ""))
1068+ let ff = dB(eU)
1069+ if ((ff == ""))
9281070 then throw("Only WavesLands and Arkimals NFT tokens are accepted")
9291071 else {
930- let ey = valueOrElse(getInteger(aN(N)), 0)
931- let ez = ct(0, N, -(aF))
932- let du = ez._1
933- let dv = ez._2
934- $Tuple2((((((du :+ eq) :+ IntegerEntry(aN(N), (ey - 1))) :+ DeleteEntry(Z(toBase58String(aa), N))) :+ ScriptTransfer(bM.caller, 1, aa)) ++ dB), dv)
1072+ let fg = valueOrElse(getInteger(be(X)), 0)
1073+ let fh = cK(0, X, -(aW))
1074+ let dL = fh._1
1075+ let dM = fh._2
1076+ $Tuple2((((((dL :+ eY) :+ IntegerEntry(be(X), (fg - 1))) :+ DeleteEntry(aj(toBase58String(ak), X))) :+ ScriptTransfer(cd.caller, 1, ak)) ++ ej), dM)
9351077 }
9361078 }
9371079 }
9381080 }
9391081 }
9401082 }
9411083
9421084
9431085
944-@Callable(bM)
1086+@Callable(cd)
9451087 func exchangeNFTs () = {
946- let dB = bL(bM)
947- if ((3 > size(bM.payments)))
1088+ let ej = cc(cd)
1089+ if ((3 > size(cd.payments)))
9481090 then throw("Min one WLGOLD and 2 NFT payments allowed")
949- else if ((size(bM.payments) > 10))
1091+ else if ((size(cd.payments) > 10))
9501092 then throw("Max one WLGOLD and 9 NFT payments allowed")
9511093 else {
952- let N = toString(bM.caller)
953- func eA (aU,dE) = {
954- let aa = valueOrErrorMessage(dE.assetId, "WAVES payments not allowed")
955- if ((aa == R))
956- then $Tuple4((aU._1 + dE.amount), aU._2, aU._3, aU._4)
1094+ let X = toString(cd.caller)
1095+ func fi (bl,em) = {
1096+ let ak = valueOrErrorMessage(em.assetId, "WAVES payments not allowed")
1097+ if ((ak == ab))
1098+ then $Tuple4((bl._1 + em.amount), bl._2, bl._3, bl._4)
9571099 else {
958- let em = value(assetInfo(aa))
959- if ((em.issuer != this))
1100+ let eU = value(assetInfo(ak))
1101+ if ((eU.issuer != this))
9601102 then throw("Only WL-issued NFTs allowed")
9611103 else {
962- let eB = cr(value(em.description))
963- if (if ((aU._4 > 0))
964- then (eB != aU._4)
1104+ let fj = cI(value(eU.description))
1105+ if (if ((bl._4 > 0))
1106+ then (fj != bl._4)
9651107 else false)
9661108 then throw("You can exchange only NFTs of the same rarity")
9671109 else {
968- let ck = cp(value(em.description))
969- $Tuple4(aU._1, (aU._2 + ck), (aU._3 :+ Burn(aa, 1)), eB)
1110+ let cB = cG(value(eU.description))
1111+ $Tuple4(bl._1, (bl._2 + cB), (bl._3 :+ Burn(ak, 1)), fj)
9701112 }
9711113 }
9721114 }
9731115 }
9741116
975- let eC = {
976- let aW = bM.payments
977- let aX = size(aW)
978- let aY = $Tuple4(0, 0, nil, -1)
979- func aZ (ba,bb) = if ((bb >= aX))
980- then ba
981- else eA(ba, aW[bb])
1117+ let fk = {
1118+ let bn = cd.payments
1119+ let bo = size(bn)
1120+ let bp = $Tuple4(0, 0, nil, -1)
1121+ func bq (br,bs) = if ((bs >= bo))
1122+ then br
1123+ else fi(br, bn[bs])
9821124
983- func bc (ba,bb) = if ((bb >= aX))
984- then ba
1125+ func bt (br,bs) = if ((bs >= bo))
1126+ then br
9851127 else throw("List size exceeds 10")
9861128
987- bc(aZ(aZ(aZ(aZ(aZ(aZ(aZ(aZ(aZ(aZ(aY, 0), 1), 2), 3), 4), 5), 6), 7), 8), 9), 10)
1129+ bt(bq(bq(bq(bq(bq(bq(bq(bq(bq(bq(bp, 0), 1), 2), 3), 4), 5), 6), 7), 8), 9), 10)
9881130 }
989- let eD = eC._1
990- let eE = eC._2
991- let eF = eC._3
992- let cj = eC._4
993- let eG = if ((cj == bC))
994- then if ((br[bs] > eE))
995- then bC
996- else if ((br[bt] > eE))
997- then bD
998- else throw((("You can advance only one level of rarity, max total bonus " + toString(br[bt])) + "%"))
999- else if ((cj == bD))
1000- then if ((br[bt] > eE))
1001- then bD
1002- else if ((br[bu] > eE))
1003- then bE
1004- else throw((("You can advance only one level of rarity, max total bonus " + toString(br[bu])) + "%"))
1005- else if ((cj == bE))
1006- then if ((br[bu] > eE))
1007- then bE
1008- else bF
1009- else if ((cj == bF))
1010- then bF
1011- else if ((cj == bG))
1131+ let fl = fk._1
1132+ let fm = fk._2
1133+ let fn = fk._3
1134+ let cA = fk._4
1135+ let fo = if ((cA == bT))
1136+ then if ((bI[bJ] > fm))
1137+ then bT
1138+ else if ((bI[bK] > fm))
1139+ then bU
1140+ else throw((("You can advance only one level of rarity, max total bonus " + toString(bI[bK])) + "%"))
1141+ else if ((cA == bU))
1142+ then if ((bI[bK] > fm))
1143+ then bU
1144+ else if ((bI[bL] > fm))
1145+ then bV
1146+ else throw((("You can advance only one level of rarity, max total bonus " + toString(bI[bL])) + "%"))
1147+ else if ((cA == bV))
1148+ then if ((bI[bL] > fm))
1149+ then bV
1150+ else bW
1151+ else if ((cA == bW))
1152+ then bW
1153+ else if ((cA == bX))
10121154 then throw("You can't exchange NFTs of this rarity")
10131155 else throw("Unknown rarity")
1014- let eH = fraction(eE, e, cN(0))
1015- let eI = (eD - eH)
1016- let eJ = (eH / 2)
1017- let dL = ac(invoke(H, "burnWlgold", [(eH - eJ)], nil))
1018- if ((0 > eI))
1019- then throw((("You need to attach " + al(eH, 8)) + " WLGOLD as fee"))
1156+ let fp = fraction(fm, e, de(0))
1157+ let fq = (fl - fp)
1158+ let fr = (fp / 2)
1159+ let eu = aq(invoke(R, "burnWlgold", [(fp - fr)], nil))
1160+ if ((0 > fq))
1161+ then throw((("You need to attach " + az(fp, 8)) + " WLGOLD as fee"))
10201162 else {
1021- let eK = if ((eI > 0))
1022- then [ScriptTransfer(bM.caller, eI, R)]
1163+ let fs = if ((fq > 0))
1164+ then [ScriptTransfer(cd.caller, fq, ab)]
10231165 else nil
1024- let eL = cf(bx, eG, bI, eG, eE, bq, bK, bM.caller)
1025- let eM = eL._1
1026- let co = eL._2
1027- let eN = size(eF)
1028- let eO = if ((eN == 0))
1166+ let ft = cw(bO, fo, bZ, fo, fm, bH, cb, cd.caller)
1167+ let fu = ft._1
1168+ let cF = ft._2
1169+ let fv = size(fn)
1170+ let fw = if ((fv == 0))
10291171 then nil
1030- else [IntegerEntry(aI, (valueOrElse(getInteger(aI), 0) + eN))]
1031- $Tuple2((((((eM ++ eF) ++ eO) ++ dB) ++ eK) :+ ScriptTransfer(addressFromStringValue(getStringValue(H, bh)), eJ, R)), $Tuple2(co, dL))
1172+ else [IntegerEntry(aZ, (valueOrElse(getInteger(aZ), 0) + fv))]
1173+ $Tuple2((((((fu ++ fn) ++ fw) ++ ej) ++ fs) :+ ScriptTransfer(addressFromStringValue(getStringValue(R, by)), fr, ab)), $Tuple2(cF, eu))
10321174 }
10331175 }
10341176 }
10351177
10361178
10371179
1038-@Callable(bM)
1180+@Callable(cd)
10391181 func openNftChest () = {
1040- let dB = bL(bM)
1041- if ((size(bM.payments) != 1))
1182+ let ej = cc(cd)
1183+ if ((size(cd.payments) != 1))
10421184 then throw("exactly 1 payment must be attached")
10431185 else {
1044- let dE = bM.payments[0]
1045- let dI = dE.amount
1046- if (if (!(isDefined(dE.assetId)))
1186+ let em = cd.payments[0]
1187+ let er = em.amount
1188+ if (if (!(isDefined(em.assetId)))
10471189 then true
1048- else (value(dE.assetId) != R))
1190+ else (value(em.assetId) != ab))
10491191 then throw("WLGOLD payments only!")
10501192 else {
1051- let eH = fraction(j, d, cN(0))
1052- let eI = (dI - eH)
1053- let eJ = (eH / 2)
1054- let dL = ac(invoke(H, "burnWlgold", [(eH - eJ)], nil))
1055- if ((0 > eI))
1056- then throw((("You need to attach " + al(eH, 8)) + " WLGOLD as fee"))
1193+ let fp = fraction(j, d, de(0))
1194+ let fq = (er - fp)
1195+ let fr = (fp / 2)
1196+ let eu = aq(invoke(R, "burnWlgold", [(fp - fr)], nil))
1197+ if ((0 > fq))
1198+ then throw((("You need to attach " + az(fp, 8)) + " WLGOLD as fee"))
10571199 else {
1058- let eK = if ((eI > 0))
1059- then [ScriptTransfer(bM.caller, eI, R)]
1200+ let fs = if ((fq > 0))
1201+ then [ScriptTransfer(cd.caller, fq, ab)]
10601202 else nil
1061- let N = toString(bM.caller)
1062- let eP = P(N)
1063- let eQ = valueOrErrorMessage(getInteger(eP), "You have to commitForRandom() first!")
1064- if ((eQ > height))
1065- then throw(("Random number is not ready yet, wait until height = " + toString(eQ)))
1203+ let X = toString(cd.caller)
1204+ let fx = Z(X)
1205+ let fy = valueOrErrorMessage(getInteger(fx), "You have to commitForRandom() first!")
1206+ if ((fy > height))
1207+ then throw(("Random number is not ready yet, wait until height = " + toString(fy)))
10661208 else {
1067- let at = value(value(blockInfoByHeight(eQ)).vrf)
1068- let as = fromBase58String(split(valueOrElse(getString(O(N)), "42_DEFAULT"), "_")[1])
1069- let eR = aq(100, as, at)
1070- let eS = if ((84 > eR))
1071- then $Tuple2(1, bC)
1072- else if ((98 > eR))
1073- then $Tuple2(5, bD)
1074- else $Tuple2(10, bE)
1075- let cd = eS._1
1076- let cj = eS._2
1077- let eT = cf(bx, cj, bI, cj, cd, bq, bK, bM.caller)
1078- let eM = eT._1
1079- let co = eT._2
1080- $Tuple2(((((eM ++ dB) ++ eK) :+ ScriptTransfer(addressFromStringValue(getStringValue(H, bh)), eJ, R)) :+ DeleteEntry(eP)), $Tuple2(co, dL))
1209+ let aH = value(value(blockInfoByHeight(fy)).vrf)
1210+ let aG = fromBase58String(split(valueOrElse(getString(Y(X)), "42_DEFAULT"), "_")[1])
1211+ let fz = aE(100, aG, aH)
1212+ let fA = if ((84 > fz))
1213+ then $Tuple2(1, bT)
1214+ else if ((98 > fz))
1215+ then $Tuple2(5, bU)
1216+ else $Tuple2(10, bV)
1217+ let cu = fA._1
1218+ let cA = fA._2
1219+ let fB = cw(bO, cA, bZ, cA, cu, bH, cb, cd.caller)
1220+ let fu = fB._1
1221+ let cF = fB._2
1222+ $Tuple2(((((fu ++ ej) ++ fs) :+ ScriptTransfer(addressFromStringValue(getStringValue(R, by)), fr, ab)) :+ DeleteEntry(fx)), $Tuple2(cF, eu))
10811223 }
10821224 }
10831225 }
10841226 }
10851227 }
10861228
10871229
10881230
1089-@Callable(bM)
1231+@Callable(cd)
10901232 func commitForRandom () = {
1091- let dB = bL(bM)
1092- let N = toString(bM.caller)
1093- let eP = P(N)
1094- if (isDefined(getInteger(eP)))
1233+ let ej = cc(cd)
1234+ let X = toString(cd.caller)
1235+ let fx = Z(X)
1236+ if (isDefined(getInteger(fx)))
10951237 then throw("You already commited for random, please use it")
10961238 else {
1097- let eQ = (height + i)
1098- $Tuple2(([IntegerEntry(eP, eQ)] ++ dB), eQ)
1239+ let fy = (height + i)
1240+ $Tuple2(([IntegerEntry(fx, fy)] ++ ej), fy)
10991241 }
11001242 }
1243+
1244+
1245+
1246+@Callable(cd)
1247+func drawDaylyPromo () = if ((cd.caller != this))
1248+ then throw("Permission denied")
1249+ else {
1250+ let fC = (height % o)
1251+ let aF = valueOrElse(getInteger(ao), 0)
1252+ if ((aF == 0))
1253+ then throw("No tickets to draw")
1254+ else {
1255+ let fD = (fC * o)
1256+ let fE = if ((fD > q))
1257+ then fD
1258+ else (fD + q)
1259+ let aH = value(value(blockInfoByHeight(fE)).vrf)
1260+ let dZ = valueOrElse(getString(ap), "")
1261+ if ((dZ == ""))
1262+ then throw("No participants")
1263+ else {
1264+ let fF = split_51C(dZ, "_")
1265+ func fG (fH,fI) = if ((fI >= dN))
1266+ then fH
1267+ else {
1268+ let fz = aE(fH._1, fH._2, aH)
1269+ let fJ = if ((fH._3 == ""))
1270+ then nil
1271+ else split_51C(fH._3, "_")
1272+ func fK (bl,fL) = {
1273+ let fM = split(fL, ":")
1274+ let X = fM[0]
1275+ let dV = parseIntValue(fM[1])
1276+ let fN = (bl._1 + dV)
1277+ if (if ((bl._3 == ""))
1278+ then (fN > fz)
1279+ else false)
1280+ then $Tuple3(fN, dV, X)
1281+ else $Tuple3(fN, bl._2, bl._3)
1282+ }
1283+
1284+ let ed = {
1285+ let bn = fJ
1286+ let bo = size(bn)
1287+ let bp = $Tuple3(0, 0, "")
1288+ func bq (br,bs) = if ((bs >= bo))
1289+ then br
1290+ else fK(br, bn[bs])
1291+
1292+ func bt (br,bs) = if ((bs >= bo))
1293+ then br
1294+ else throw("List size exceeds 20")
1295+
1296+ bt(bq(bq(bq(bq(bq(bq(bq(bq(bq(bq(bq(bq(bq(bq(bq(bq(bq(bq(bq(bq(bp, 0), 1), 2), 3), 4), 5), 6), 7), 8), 9), 10), 11), 12), 13), 14), 15), 16), 17), 18), 19), 20)
1297+ }
1298+ let fO = ed._3
1299+ if ((fO == ""))
1300+ then fH
1301+ else {
1302+ let ec = split_51C(fH._3, fO)
1303+ let eb = if ((ec[0] == ""))
1304+ then drop(ec[1], 5)
1305+ else (dropRight(ec[0], 1) + drop(ec[1], 4))
1306+ let fP = dP(fO, dO[fI], true)
1307+ let eo = fP._1
1308+ let fQ = fP._2
1309+ let fR = fromBase58String(valueOrElse(getString(O, Y(fO)), "DEFAULT"))
1310+ $Tuple4((fH._1 - ed._2), fR, eb, (fH._4 :+ eo))
1311+ }
1312+ }
1313+
1314+ let fS = {
1315+ let bn = [0, 1, 2]
1316+ let bo = size(bn)
1317+ let bp = $Tuple4(aF, cd.transactionId, dZ, nil)
1318+ func bq (br,bs) = if ((bs >= bo))
1319+ then br
1320+ else fG(br, bn[bs])
1321+
1322+ func bt (br,bs) = if ((bs >= bo))
1323+ then br
1324+ else throw("List size exceeds 3")
1325+
1326+ bt(bq(bq(bq(bp, 0), 1), 2), 3)
1327+ }
1328+ $Tuple2(([StringEntry(ap, fS._3), IntegerEntry(ao, fS._1)] ++ fS._4), 0)
1329+ }
1330+ }
1331+ }
11011332
11021333

github/deemru/w8io/169f3d6 
925.05 ms