tx · 34yy3epDTCAyDKooLbwXjWWcw3p5pf1bxVrFLmrGTmdY

3P6YGPihPiF81VELikoV1myU55iwTvmcQaQ:  -0.03500000 Waves

2022.11.25 11:28 [3397833] smart account 3P6YGPihPiF81VELikoV1myU55iwTvmcQaQ > SELF 0.00000000 Waves

{ "type": 13, "id": "34yy3epDTCAyDKooLbwXjWWcw3p5pf1bxVrFLmrGTmdY", "fee": 3500000, "feeAssetId": null, "timestamp": 1669364913710, "version": 2, "chainId": 87, "sender": "3P6YGPihPiF81VELikoV1myU55iwTvmcQaQ", "senderPublicKey": "BWnMC6WjWvjJRc2jc1XibbL3RSvL2mFekrvRxpJGdtp1", "proofs": [ "", "2ARV5n8ijbVhASkxKD4NV9MLzMAWYJpNdikEmqqunN27gGajdYPRyq94FaZNBvstVLNfydW1RJk6gV9Bfr4Hrquz", "2UjH9tk4orePWdQj2S45raHYACLsfKigL4G3VQkHYF1b3aZd3zZN1RykzAzAkhgMSMAnNJvhJNkYe9dmoX5n6FLd" ], "script": "base64:BgJQCAISBAoCAQgSAwoBCBIUChIIAQEIAQEBAQEBAQEYBAEBBBgSBAoCAQgSBAoCAQgSBAoCAQgSBQoDAQEIEgMKAQESAwoBARIECgIBARIAEgBMAAlrZXlBY3RpdmUCBmFjdGl2ZQALa0FjdGl2ZUdsb2ICFGFjdGl2ZV9hbGxfY29udHJhY3RzAA9rZXlBZG1pblB1YktleTECC2FkbWluX3B1Yl8xAA9rZXlBZG1pblB1YktleTICC2FkbWluX3B1Yl8yAA9rZXlBZG1pblB1YktleTMCC2FkbWluX3B1Yl8zACFrZXlMYXVuY2hwYWREYXRhVHJhbnNhY3Rpb25TdGF0dXMCIWxhdW5jaHBhZF9kYXRhX3RyYW5zYWN0aW9uX3N0YXR1cwASa2V5TGF1bmNocGFkTmV4dElkAhFsYXVuY2hwYWRfbmV4dF9pZAAUa2V5TGF1bmNocGFkQWN0aXZlSWQCE2xhdW5jaHBhZF9hY3RpdmVfaWQADWtleUluaXRDYWxsZXICC2luaXRfY2FsbGVyAAprZXlBZGRyZXNzAghfYWRkcmVzcwANa2V5SW5pdEhlaWdodAIMX2luaXRfaGVpZ2h0AA5rZXlTdGFydEhlaWdodAINX3N0YXJ0X2hlaWdodAARa2V5RmluYWxpc2VIZWlnaHQCEF9maW5hbGlzZV9oZWlnaHQADGtleUNvbWlzc2lvbgIKX2NvbWlzc2lvbgAKa2V5QXNzZXRJZAIJX2Fzc2V0X2lkABNrZXlUb3RhbFRva2VuQW1vdW50AhNfdG90YWxfdG9rZW5fYW1vdW50ABprZXlUb3RhbEFtb3VudEJ1eUFzc2V0U29sZAIVX3RvdGFsX2J1eV9hc3NldF9zb2xkABJrZXlUb2tlbnNQZXJUaWNrZXQCEl90b2tlbnNfcGVyX3RpY2tldAAQa2V5UHJpY2VQZXJUb2tlbgIQX3ByaWNlX3Blcl90b2tlbgAQa2V5U3dvcFBlclRpY2tldAIQX3N3b3BfcGVyX3RpY2tldAAWa2V5U3dvcGZpVGlja2V0c0Ftb3VudAIXX3RpY2tldHNfc3dvcGZpX21lbWJlcnMAF2tleUNhbXBhaWduVG9rZW5zQW1vdW50AhNfdG9rZW5zX2FjY2Vzc19saXN0ABZrZXlUb2tlbnNQZXJBbGxvY2F0aW9uAhZfdG9rZW5zX3Blcl9hbGxvY2F0aW9uABNrZXlUaWNrZXRMYXN0TnVtYmVyAhNfdGlja2V0X2xhc3RfbnVtYmVyABNrZXlHb3Zlcm5hbmNlU3Rha2VkAg1fR1N3b3BfYW1vdW50AAxrZXlVc2VyUmVmSWQCB19yZWZfaWQADWtleVZlcmlmeUhhc2gCDF92ZXJpZnlfaGFzaAALa2V5RHVyYXRpb24CCV9kdXJhdGlvbgAca2V5QW1vdW50QnV5QXNzZXRJbk1hcmtldGluZwInX3RvdGFsX3B1cmNoYXNlZF9idXlfYXNzZXRfaW5fbWFya2V0aW5nACVrZXlBbW91bnRCdXlBc3NldEluTWFya2V0aW5nRmluYWxpemVkAjFfdG90YWxfcHVyY2hhc2VkX2J1eV9hc3NldF9pbl9tYXJrZXRpbmdfZmluYWxpemVkABNrZXlUcmFuc2ZlckJ1eUFzc2V0AhNfdHJhbnNmZXJfYnV5X2Fzc2V0ABRrZXlGcmVlelN3b3BEdXJhdGlvbgIVX2ZyZWV6ZV9zd29wX2R1cmF0aW9uABhrZXlGcmVlemVBZGRpdGlvbmFsVG9rZW4CGF9mcmVlemVfYWRkaXRpb25hbF90b2tlbgAQa2V5RnJlZXplVG9rZW5JZAIQX2ZyZWV6ZV90b2tlbl9pZAAWa2V5RnJlZXplVG9rZW5EdXJhdGlvbgIWX2ZyZWV6ZV90b2tlbl9kdXJhdGlvbgAXa2V5RnJlZXplVG9rZW5QZXJUaWNrZXQCGF9mcmVlemVfdG9rZW5fcGVyX3RpY2tldAALa2V5QnV5VG9rZW4CCl9idXlfdG9rZW4ADmtleUNsYWltUGFyYW1zAg1fY2xhaW1fcGFyYW1zABtrZXlIaWdoQ29tcGV0aXRpb25Db21pc3Npb24CG19oaWdoX2NvbXBldGl0aW9uX2NvbWlzc2lvbgAWa2V5SGlnaENvbXBldGl0aW9uU2FsZQIWX2hpZ2hfY29tcGV0aXRpb25fc2FsZQAVa2V5SENUaWNrZXRMYXN0TnVtYmVyAiRfaGlnaF9jb21wZXRpdGlvbl90aWNrZXRfbGFzdF9udW1iZXIAGGtleUhpZ2hDb21wZXRpdGlvbkFtb3VudAIZX3RpY2tldHNfaGlnaF9jb21wZXRpdGlvbgAca2V5VG90YWxBbW91bnRCdXlBc3NldFNvbGRIQwImX3RvdGFsX2J1eV9hc3NldF9zb2xkX2hpZ2hfY29tcGV0aXRpb24AFGtleVVzZXJDbGFpbWVkVG9rZW5zAg9fY2xhaW1lZF90b2tlbnMAF2tleVVzZXJDbGFpbWVkQnV5VG9rZW5zAhNfY2xhaW1lZF9idXlfdG9rZW5zABprZXlVc2VyQm91Z2h0VGlja2V0c0Ftb3VudAIPX2JvdWdodF90aWNrZXRzAA5rZXlVc2VyVGlja2V0cwIPX3RpY2tldHNfbnVtYmVyABBrZXlVc2VySENUaWNrZXRzAiBfdGlja2V0c19udW1iZXJfaGlnaF9jb21wZXRpdGlvbgAca2V5VXNlckhDQm91Z2h0VGlja2V0c0Ftb3VudAIgX2JvdWdodF90aWNrZXRzX2hpZ2hfY29tcGV0aXRpb24AG2tleVVzZXJBdmFpbGFibGVBbGxvY2F0aW9ucwIdX2F2YWlsYWJsZV9wdXJjaGFzZV9tYXJrZXRpbmcAIGtleVVzZXJBbW91bnRCdXlBc3NldEluTWFya2V0aW5nAiFfcHVyY2hhc2VkX2J1eV9hc3NldF9pbl9tYXJrZXRpbmcAGGtleVVzZXJCb3VnaHRBbGxvY2F0aW9ucwITX2JvdWdodF9hbGxvY2F0aW9ucwASa2V5VXNlckNsYWltU3RhdHVzAg1fY2xhaW1fc3RhdHVzABprZXlVc2VyV2lubmVkVGlja2V0c0Ftb3VudAIPX3RpY2tldHNfcmVzdWx0AClrZXlVc2VyV2lubmVkSGlnaENvbXBldGl0aW9uVGlja2V0c0Ftb3VudAIgX3RpY2tldHNfcmVzdWx0X2hpZ2hfY29tcGV0aXRpb24AEmtleVVzZXJGcmVlemVUb2tlbgIUX2ZyZWV6ZV90b2tlbl9hbW91bnQABm9yYWNsZQkBB0FkZHJlc3MBARoBV4r/CGiaNbpAzWF08hI33qY38Po4zugeOAAKZ292ZXJuYW5jZQkBB0FkZHJlc3MBARoBV8lXnLdvepYMywgiOQ98homAomzcs7cW7QAQY29tbWlzc2lvbldhbGxldAkBB0FkZHJlc3MBARoBV6BRpy/wPSJ8xbXfMYJKm3TgPPkqMILhZwASc3Rha2luZ1VTRE5BZGRyZXNzCQEHQWRkcmVzcwEBGgFX5A6nNk+SC9eXz6QdPzUbz0Nq66o883GdAARVU0ROASC2JinDBPXOU5GkDkt1JC9kjFGx+t+vVCm9SNIdKrKq0QASYWRtaW5QdWJLZXlTdGFraW5nASCyPZ8dhjeaV4XmI1H04Td7I49qWAHdPugNaMCOdHtYKAAUbWF4QWxsb2NhdGlvbnNBbW91bnQAAgARYWN0aXZlTGF1bmNocGFkSWQJAQt2YWx1ZU9yRWxzZQIJARFAZXh0ck5hdGl2ZSgxMDUwKQIFBHRoaXMFFGtleUxhdW5jaHBhZEFjdGl2ZUlkAP///////////wEBC2dldEFkbWluUHViAQtrZXlBZG1pblB1YgQHJG1hdGNoMAkAnQgCBQZvcmFjbGUFC2tleUFkbWluUHViAwkAAQIFByRtYXRjaDACBlN0cmluZwQGc3RyaW5nBQckbWF0Y2gwCQDZBAEFBnN0cmluZwQHbm90aGluZwUHJG1hdGNoMAkAAgECGUFkbWluIHB1YmxpYyBrZXkgaXMgZW1wdHkADGFkbWluUHViS2V5MQkBC2dldEFkbWluUHViAQUPa2V5QWRtaW5QdWJLZXkxAAxhZG1pblB1YktleTIJAQtnZXRBZG1pblB1YgEFD2tleUFkbWluUHViS2V5MgAMYWRtaW5QdWJLZXkzCQELZ2V0QWRtaW5QdWIBBQ9rZXlBZG1pblB1YktleTMBDGdldEFzc2V0SW5mbwEHYXNzZXRJZAQHJG1hdGNoMAUHYXNzZXRJZAMJAAECBQckbWF0Y2gwAgpCeXRlVmVjdG9yBAJpZAUHJG1hdGNoMAQIc3RyaW5nSWQJANgEAQUCaWQEBGluZm8JARN2YWx1ZU9yRXJyb3JNZXNzYWdlAgkA7AcBBQJpZAkArAICCQCsAgICBkFzc2V0IAUIc3RyaW5nSWQCDiBkb2Vzbid0IGV4aXN0CQCVCgMFCHN0cmluZ0lkCAUEaW5mbwRuYW1lCAUEaW5mbwhkZWNpbWFscwMJAAECBQckbWF0Y2gwAgRVbml0BAV3YXZlcwUHJG1hdGNoMAkAlQoDAgVXQVZFUwIFV0FWRVMACAkAAgECC01hdGNoIGVycm9yARJnZXRMYXVuY2hwYWROZXh0SWQACQELdmFsdWVPckVsc2UCCQCaCAIFBHRoaXMFEmtleUxhdW5jaHBhZE5leHRJZAABARBzdGFrZWRVc2RuQW1vdW50AAkBC3ZhbHVlT3JFbHNlAgkAmggCBRJzdGFraW5nVVNETkFkZHJlc3MJAKwCAgkArAICCQCsAgICDHJwZF9iYWxhbmNlXwkA2AQBBQRVU0ROAgFfCQClCAEFBHRoaXMAAAAGYWN0aXZlCQELdmFsdWVPckVsc2UCCQCbCAIFBHRoaXMFCWtleUFjdGl2ZQYACmFjdGl2ZUdsb2IJAQt2YWx1ZU9yRWxzZQIJAJsIAgUGb3JhY2xlBQtrQWN0aXZlR2xvYgYBCGlzQWN0aXZlAAMDBQZhY3RpdmUFCmFjdGl2ZUdsb2IHBQR1bml0CQACAQIfREFwcCBpcyBpbmFjdGl2ZSBhdCB0aGlzIG1vbWVudAELaXNBZG1pbkNhbGwBAWkDCQEPY29udGFpbnNFbGVtZW50AgkAzAgCBQxhZG1pblB1YktleTEJAMwIAgUMYWRtaW5QdWJLZXkyCQDMCAIFDGFkbWluUHViS2V5MwUDbmlsCAUBaQ9jYWxsZXJQdWJsaWNLZXkFBHVuaXQJAAIBAiFPbmx5IGFkbWluIGNhbiBjYWxsIHRoaXMgZnVuY3Rpb24BFmdldEFzc2V0SW5mb0Zyb21TdHJpbmcBCGFzc2V0U3RyAwkAAAIFCGFzc2V0U3RyAgVXQVZFUwkAlgoEBQR1bml0AgVXQVZFUwIFV0FWRVMACAQIc3RyaW5nSWQFCGFzc2V0U3RyBAJpZAkA2QQBBQhhc3NldFN0cgQEaW5mbwkBE3ZhbHVlT3JFcnJvck1lc3NhZ2UCCQDsBwEFAmlkCQCsAgIJAKwCAgIGQXNzZXQgBQhzdHJpbmdJZAIOIGRvZXNuJ3QgZXhpc3QJAJYKBAUCaWQFCHN0cmluZ0lkCAUEaW5mbwRuYW1lCAUEaW5mbwhkZWNpbWFscwwBaQENaGFzaGluZ1JhbmRvbQILbGF1bmNocGFkSWQEaGFzaAkBC3ZhbHVlT3JFbHNlAgkBCGlzQWN0aXZlAAkBC3ZhbHVlT3JFbHNlAgkBC2lzQWRtaW5DYWxsAQUBaQkAzAgCCQELU3RyaW5nRW50cnkCCQCsAgIJAKQDAQULbGF1bmNocGFkSWQFDWtleVZlcmlmeUhhc2gFBGhhc2gFA25pbAFpAQppbml0Q2FsbGVyAQdhZGRyZXNzCQELdmFsdWVPckVsc2UCCQEIaXNBY3RpdmUACQELdmFsdWVPckVsc2UCCQELaXNBZG1pbkNhbGwBBQFpCQDMCAIJAQtTdHJpbmdFbnRyeQIFDWtleUluaXRDYWxsZXIFB2FkZHJlc3MFA25pbAFpAQRpbml0Eg5wcm9qZWN0QWRkcmVzcwtzdGFydEhlaWdodAhkdXJhdGlvbghidXlUb2tlbgpjb21taXNzaW9uD3Rva2Vuc1BlclRpY2tldA1wcmljZVBlclRva2VuE3N3b3BmaVRpY2tldHNBbW91bnQUY2FtcGFpZ25Ub2tlbnNBbW91bnQTdG9rZW5zUGVyQWxsb2NhdGlvbg1zd29wUGVyVGlja2V0EnN3b3BGcmVlemVEdXJhdGlvbgtjbGFpbVBhcmFtcxNIaWdoQ29tcGV0aXRpb25TYWxlGGhpZ2hDb21wZXRpdGlvbkNvbWlzc2lvbhxoaWdoQ29tcGV0aXRpb25UaWNrZXRzQW1vdW50FWZyZWV6ZUFkZGl0aW9uYWxUb2tlbgxmcmVlemVQYXJhbXMJAQt2YWx1ZU9yRWxzZQIJAQhpc0FjdGl2ZQADCQECIT0CCQClCAEIBQFpBmNhbGxlcgkBC3ZhbHVlT3JFbHNlAgkAnQgCBQR0aGlzBQ1rZXlJbml0Q2FsbGVyAgAJAAIBAilPbmx5IHByb2plY3QgYWRtaW4gY2FuIGNhbGwgaW5pdCBmdW5jdGlvbgMJAQIhPQIJAJADAQgFAWkIcGF5bWVudHMAAQkAAgECHU9uZSBhdHRhY2hlZCBwYXltZW50IGV4cGVjdGVkAwkAZgIFBmhlaWdodAULc3RhcnRIZWlnaHQJAAIBAjNTdGFydCBoZWlnaHQgbXVzdCBiZSBncmVhdGVyIHRoYW4gYmxvY2tjaGFpbiBoZWlnaHQDAwUVZnJlZXplQWRkaXRpb25hbFRva2VuCQECIT0CCQCQAwEFDGZyZWV6ZVBhcmFtcwADBwkAAgECJEZyZWV6ZSBwYXJhbXMgbGlzdCBtdXN0IGhhdmUgMyBpdGVtcwQLbGF1bmNocGFkSWQJARJnZXRMYXVuY2hwYWROZXh0SWQABA5sYXVuY2hwYWRJZFN0cgkApAMBBQtsYXVuY2hwYWRJZAQLJHQwNjUwMDY1NzUJAJQKAggJAJEDAggFAWkIcGF5bWVudHMAAAZhbW91bnQICQCRAwIIBQFpCHBheW1lbnRzAAAHYXNzZXRJZAQJcG10QW1vdW50CAULJHQwNjUwMDY1NzUCXzEECnBtdEFzc2V0SWQIBQskdDA2NTAwNjU3NQJfMgQLJHQwNjU4NDY2NTcJAQxnZXRBc3NldEluZm8BBQpwbXRBc3NldElkBA1wbXRTdHJBc3NldElkCAULJHQwNjU4NDY2NTcCXzEEDHBtdEFzc2V0TmFtZQgFCyR0MDY1ODQ2NjU3Al8yBAtwbXREZWNpbWFscwgFCyR0MDY1ODQ2NjU3Al8zBBVmcmVlemVBZGRpdGlvbmFsRW50cnkDBRVmcmVlemVBZGRpdGlvbmFsVG9rZW4JAMwIAgkBDEJvb2xlYW5FbnRyeQIJAKwCAgUObGF1bmNocGFkSWRTdHIFGGtleUZyZWV6ZUFkZGl0aW9uYWxUb2tlbgYJAMwIAgkBC1N0cmluZ0VudHJ5AgkArAICBQ5sYXVuY2hwYWRJZFN0cgUQa2V5RnJlZXplVG9rZW5JZAkAkQMCBQxmcmVlemVQYXJhbXMAAAkAzAgCCQEMSW50ZWdlckVudHJ5AgkArAICBQ5sYXVuY2hwYWRJZFN0cgUWa2V5RnJlZXplVG9rZW5EdXJhdGlvbgkBDXBhcnNlSW50VmFsdWUBCQCRAwIFDGZyZWV6ZVBhcmFtcwABCQDMCAIJAQxJbnRlZ2VyRW50cnkCCQCsAgIFDmxhdW5jaHBhZElkU3RyBRdrZXlGcmVlemVUb2tlblBlclRpY2tldAkBDXBhcnNlSW50VmFsdWUBCQCRAwIFDGZyZWV6ZVBhcmFtcwACBQNuaWwFA25pbAkAzggCCQDMCAIJAQxJbnRlZ2VyRW50cnkCCQCsAgIFDXBtdFN0ckFzc2V0SWQCCl9sYXVuY2hwYWQFC2xhdW5jaHBhZElkCQDMCAIJAQxJbnRlZ2VyRW50cnkCBRJrZXlMYXVuY2hwYWROZXh0SWQJAGQCBQtsYXVuY2hwYWRJZAABCQDMCAIJAQtTdHJpbmdFbnRyeQIJAKwCAgUObGF1bmNocGFkSWRTdHIFCmtleUFkZHJlc3MFDnByb2plY3RBZGRyZXNzCQDMCAIJAQxJbnRlZ2VyRW50cnkCCQCsAgIFDmxhdW5jaHBhZElkU3RyBQ1rZXlJbml0SGVpZ2h0BQZoZWlnaHQJAMwIAgkBDEludGVnZXJFbnRyeQIJAKwCAgUObGF1bmNocGFkSWRTdHIFDmtleVN0YXJ0SGVpZ2h0BQtzdGFydEhlaWdodAkAzAgCCQEMSW50ZWdlckVudHJ5AgkArAICBQ5sYXVuY2hwYWRJZFN0cgULa2V5RHVyYXRpb24FCGR1cmF0aW9uCQDMCAIJAQtTdHJpbmdFbnRyeQIJAKwCAgUObGF1bmNocGFkSWRTdHIFC2tleUJ1eVRva2VuBQhidXlUb2tlbgkAzAgCCQEMSW50ZWdlckVudHJ5AgkArAICBQ5sYXVuY2hwYWRJZFN0cgUUa2V5RnJlZXpTd29wRHVyYXRpb24FEnN3b3BGcmVlemVEdXJhdGlvbgkAzAgCCQEMSW50ZWdlckVudHJ5AgkArAICBQ5sYXVuY2hwYWRJZFN0cgUTa2V5VG90YWxUb2tlbkFtb3VudAUJcG10QW1vdW50CQDMCAIJAQtTdHJpbmdFbnRyeQIJAKwCAgUObGF1bmNocGFkSWRTdHIFCmtleUFzc2V0SWQFDXBtdFN0ckFzc2V0SWQJAMwIAgkBDEludGVnZXJFbnRyeQIJAKwCAgUObGF1bmNocGFkSWRTdHIFDGtleUNvbWlzc2lvbgUKY29tbWlzc2lvbgkAzAgCCQEMSW50ZWdlckVudHJ5AgkArAICBQ5sYXVuY2hwYWRJZFN0cgUTa2V5VGlja2V0TGFzdE51bWJlcgAACQDMCAIJAQxJbnRlZ2VyRW50cnkCCQCsAgIFDmxhdW5jaHBhZElkU3RyBRVrZXlIQ1RpY2tldExhc3ROdW1iZXIAAAkAzAgCCQEMSW50ZWdlckVudHJ5AgkArAICBQ5sYXVuY2hwYWRJZFN0cgUSa2V5VG9rZW5zUGVyVGlja2V0BQ90b2tlbnNQZXJUaWNrZXQJAMwIAgkBDEludGVnZXJFbnRyeQIJAKwCAgUObGF1bmNocGFkSWRTdHIFEGtleVByaWNlUGVyVG9rZW4FDXByaWNlUGVyVG9rZW4JAMwIAgkBDEludGVnZXJFbnRyeQIJAKwCAgUObGF1bmNocGFkSWRTdHIFEGtleVN3b3BQZXJUaWNrZXQFDXN3b3BQZXJUaWNrZXQJAMwIAgkBDEludGVnZXJFbnRyeQIJAKwCAgUObGF1bmNocGFkSWRTdHIFFmtleVN3b3BmaVRpY2tldHNBbW91bnQFE3N3b3BmaVRpY2tldHNBbW91bnQJAMwIAgkBDEludGVnZXJFbnRyeQIJAKwCAgUObGF1bmNocGFkSWRTdHIFF2tleUNhbXBhaWduVG9rZW5zQW1vdW50BRRjYW1wYWlnblRva2Vuc0Ftb3VudAkAzAgCCQEMSW50ZWdlckVudHJ5AgkArAICBQ5sYXVuY2hwYWRJZFN0cgUWa2V5VG9rZW5zUGVyQWxsb2NhdGlvbgUTdG9rZW5zUGVyQWxsb2NhdGlvbgkAzAgCCQELU3RyaW5nRW50cnkCCQCsAgIFDmxhdW5jaHBhZElkU3RyBQ5rZXlDbGFpbVBhcmFtcwkAuQkCBQtjbGFpbVBhcmFtcwIBLAkAzAgCCQEMQm9vbGVhbkVudHJ5AgkArAICBQ5sYXVuY2hwYWRJZFN0cgUWa2V5SGlnaENvbXBldGl0aW9uU2FsZQUTSGlnaENvbXBldGl0aW9uU2FsZQkAzAgCCQEMSW50ZWdlckVudHJ5AgkArAICBQ5sYXVuY2hwYWRJZFN0cgUba2V5SGlnaENvbXBldGl0aW9uQ29taXNzaW9uBRhoaWdoQ29tcGV0aXRpb25Db21pc3Npb24JAMwIAgkBDEludGVnZXJFbnRyeQIJAKwCAgUObGF1bmNocGFkSWRTdHIFGGtleUhpZ2hDb21wZXRpdGlvbkFtb3VudAUcaGlnaENvbXBldGl0aW9uVGlja2V0c0Ftb3VudAkAzAgCCQEMSW50ZWdlckVudHJ5AgUUa2V5TGF1bmNocGFkQWN0aXZlSWQFC2xhdW5jaHBhZElkCQDMCAIJAQtTdHJpbmdFbnRyeQIFDWtleUluaXRDYWxsZXICAAUDbmlsBRVmcmVlemVBZGRpdGlvbmFsRW50cnkBaQEQY29tbWl0U3dvcGZpU2FsZQILbGF1bmNocGFkSWQFcmVmSWQJAQt2YWx1ZU9yRWxzZQIJAQhpc0FjdGl2ZQAECyR0MDkyNjM5MzM4CQCUCgIICQCRAwIIBQFpCHBheW1lbnRzAAAGYW1vdW50CAkAkQMCCAUBaQhwYXltZW50cwAAB2Fzc2V0SWQECXBtdEFtb3VudAgFCyR0MDkyNjM5MzM4Al8xBApwbXRBc3NldElkCAULJHQwOTI2MzkzMzgCXzIECyR0MDkzNDM5NDkzCQEWZ2V0QXNzZXRJbmZvRnJvbVN0cmluZwEJAQV2YWx1ZQEJAJ0IAgUEdGhpcwkArAICCQCkAwEFC2xhdW5jaHBhZElkBQtrZXlCdXlUb2tlbgQKYnV5QXNzZXRJZAgFCyR0MDkzNDM5NDkzAl8xBA1idXlBc3NldFN0cklkCAULJHQwOTM0Mzk0OTMCXzIEDGJ1eUFzc2V0TmFtZQgFCyR0MDkzNDM5NDkzAl8zBBBidXlBc3NldERlY2ltYWxzCAULJHQwOTM0Mzk0OTMCXzQEC3N0YWtlZFN3b3BzCQELdmFsdWVPckVsc2UCCQCaCAIFCmdvdmVybmFuY2UJAKwCAgkApQgBCAUBaQZjYWxsZXIFE2tleUdvdmVybmFuY2VTdGFrZWQAAAQXYWxsb3dlZFRpY2tldHNBbW91bnRBbGwJAGkCBQtzdGFrZWRTd29wcwkBEUBleHRyTmF0aXZlKDEwNTApAgUEdGhpcwkArAICCQCkAwEFC2xhdW5jaHBhZElkBRBrZXlTd29wUGVyVGlja2V0BBNib3VnaHRUaWNrZXRzQW1vdW50CQELdmFsdWVPckVsc2UCCQCaCAIFBHRoaXMJAKwCAgkArAICCQCsAgIJAKUIAQgFAWkGY2FsbGVyAgFfCQCkAwEFC2xhdW5jaHBhZElkBRprZXlVc2VyQm91Z2h0VGlja2V0c0Ftb3VudAAABBRhbGxvd2VkVGlja2V0c0Ftb3VudAkAZQIFF2FsbG93ZWRUaWNrZXRzQW1vdW50QWxsBRNib3VnaHRUaWNrZXRzQW1vdW50BAtzdGFydEhlaWdodAkBBXZhbHVlAQkAmggCBQR0aGlzCQCsAgIJAKQDAQULbGF1bmNocGFkSWQFDmtleVN0YXJ0SGVpZ2h0BAhkdXJhdGlvbgkBBXZhbHVlAQkAmggCBQR0aGlzCQCsAgIJAKQDAQULbGF1bmNocGFkSWQFC2tleUR1cmF0aW9uBBVmcmVlemVBZGRpdGlvbmFsVG9rZW4JAQt2YWx1ZU9yRWxzZQIJAJsIAgUEdGhpcwkArAICCQCkAwEFC2xhdW5jaHBhZElkBRhrZXlGcmVlemVBZGRpdGlvbmFsVG9rZW4HAwkBAiE9AgURYWN0aXZlTGF1bmNocGFkSWQFC2xhdW5jaHBhZElkCQACAQI3VGhlcmUgaXMgbm8gYWN0aXZlIGxhdW5jaHBhZCBvciB0aGlzIGxhdW5jaHBhZCBpcyBlbmRlZAMJAGYCBQtzdGFydEhlaWdodAUGaGVpZ2h0CQACAQIeTGF1bmNocGFkIHNhbGUgbm90IHN0YXJ0ZWQgeWV0AwkAZgIFBmhlaWdodAkAZAIFC3N0YXJ0SGVpZ2h0BQhkdXJhdGlvbgkAAgECFExhdW5jaHBhZCBzYWxlIGVuZGVkAwMJAQEhAQUVZnJlZXplQWRkaXRpb25hbFRva2VuAwkBAiE9AgkAkAMBCAUBaQhwYXltZW50cwABBgkBAiE9AgUKcG10QXNzZXRJZAUKYnV5QXNzZXRJZAcJAAIBCQCsAgIJAKwCAgIYT25lIGF0dGFjaGVkIHBheW1lbnQgaW4gBQxidXlBc3NldE5hbWUCCSBleHBlY3RlZAMDBRVmcmVlemVBZGRpdGlvbmFsVG9rZW4DCQECIT0CCQCQAwEIBQFpCHBheW1lbnRzAAIGCQECIT0CBQpwbXRBc3NldElkBQpidXlBc3NldElkBwQNZnJlZXplVG9rZW5JZAkBEUBleHRyTmF0aXZlKDEwNTMpAgUEdGhpcwkArAICCQCkAwEFC2xhdW5jaHBhZElkBRBrZXlGcmVlemVUb2tlbklkCQACAQkArAICCQCsAgIJAKwCAgIpVHdvIGF0dGFjaGVkIHBheW1lbnRzIGV4cGVjdGVkOiBGaXJzdCBpbiAFDGJ1eUFzc2V0TmFtZQIMLCBzZWNvbmQgaW4gBQ1mcmVlemVUb2tlbklkAwMJAGcCAAAFF2FsbG93ZWRUaWNrZXRzQW1vdW50QWxsBgkAZwIAAAUUYWxsb3dlZFRpY2tldHNBbW91bnQJAAIBAipOb3QgZW5vdWdodCBTV09QIGluIHN0YWtpbmcgdG8gYnV5IHRpY2tldHMECnRva2VuUHJpY2UJARFAZXh0ck5hdGl2ZSgxMDUwKQIFBHRoaXMJAKwCAgkApAMBBQtsYXVuY2hwYWRJZAUQa2V5UHJpY2VQZXJUb2tlbgQPdG9rZW5zUGVyVGlja2V0CQERQGV4dHJOYXRpdmUoMTA1MCkCBQR0aGlzCQCsAgIJAKQDAQULbGF1bmNocGFkSWQFEmtleVRva2Vuc1BlclRpY2tldAQNJHQwMTEzMDUxMTQ0OQkBFmdldEFzc2V0SW5mb0Zyb21TdHJpbmcBCQERQGV4dHJOYXRpdmUoMTA1MykCBQR0aGlzCQCsAgIJAKQDAQULbGF1bmNocGFkSWQFCmtleUFzc2V0SWQEB3Rva2VuSWQIBQ0kdDAxMTMwNTExNDQ5Al8xBA90b2tlblN0ckFzc2V0SWQIBQ0kdDAxMTMwNTExNDQ5Al8yBA50b2tlbkFzc2V0TmFtZQgFDSR0MDExMzA1MTE0NDkCXzMEDXRva2VuRGVjaW1hbHMIBQ0kdDAxMTMwNTExNDQ5Al80BAt0aWNrZXRQcmljZQkAawMFD3Rva2Vuc1BlclRpY2tldAUKdG9rZW5QcmljZQkAbAYACgAABQ10b2tlbkRlY2ltYWxzAAAAAAUERE9XTgQTY29tbWlzc2lvblBlclRpY2tldAkAawMFC3RpY2tldFByaWNlCQERQGV4dHJOYXRpdmUoMTA1MCkCBQR0aGlzCQCsAgIJAKQDAQULbGF1bmNocGFkSWQFDGtleUNvbWlzc2lvbgBkBA9idXlUaWNrZXRBbW91bnQJAGkCBQlwbXRBbW91bnQJAGQCBQt0aWNrZXRQcmljZQUTY29tbWlzc2lvblBlclRpY2tldAQWYWxsb3dlZEJ1eVRpY2tldEFtb3VudAkAlwMBCQDMCAIFD2J1eVRpY2tldEFtb3VudAkAzAgCBRRhbGxvd2VkVGlja2V0c0Ftb3VudAUDbmlsBBxhbGxvd2VkQnV5UHJpY2VXaXRoQ29taXNzaW9uCQBoAgUWYWxsb3dlZEJ1eVRpY2tldEFtb3VudAkAZAIFC3RpY2tldFByaWNlBRNjb21taXNzaW9uUGVyVGlja2V0BAZjaGFuZ2UJAGUCBQlwbXRBbW91bnQFHGFsbG93ZWRCdXlQcmljZVdpdGhDb21pc3Npb24DCQAAAgUPYnV5VGlja2V0QW1vdW50AAAJAAIBCQCsAgIJAKwCAgIMTm90IGVub3VnaHQgBQxidXlBc3NldE5hbWUCDyB0byBidXkgdGlja2V0cwMJAQIhPQIFBmNoYW5nZQAACQACAQkArAICCQCsAgIJAKwCAgkArAICAhZXcm9uZyBwYXltZW50LiBUbyBidXkgCQCkAwEFFmFsbG93ZWRCdXlUaWNrZXRBbW91bnQCGHRpY2tldHMgeW91IG5lZWQgdG8gcGF5IAkApAMBBRxhbGxvd2VkQnV5UHJpY2VXaXRoQ29taXNzaW9uBQxidXlBc3NldE5hbWUEFWZyZWV6ZUFkZGl0aW9uYWxFbnRyeQMFFWZyZWV6ZUFkZGl0aW9uYWxUb2tlbgQNZnJlZXplVG9rZW5JZAkBEUBleHRyTmF0aXZlKDEwNTMpAgUEdGhpcwkArAICCQCkAwEFC2xhdW5jaHBhZElkBRBrZXlGcmVlemVUb2tlbklkBBRmcmVlemVUb2tlblBlclRpY2tldAkBEUBleHRyTmF0aXZlKDEwNTApAgUEdGhpcwkArAICCQCkAwEFC2xhdW5jaHBhZElkBRdrZXlGcmVlemVUb2tlblBlclRpY2tldAQNJHQwMTI2MTMxMjcwMAkAlAoCCAkAkQMCCAUBaQhwYXltZW50cwABBmFtb3VudAgJAJEDAggFAWkIcGF5bWVudHMAAQdhc3NldElkBA9wbXRBbW91bnRGcmVlemUIBQ0kdDAxMjYxMzEyNzAwAl8xBBBwbXRBc3NldElkRnJlZXplCAUNJHQwMTI2MTMxMjcwMAJfMgQNJHQwMTI3MTcxMjgwOAkBDGdldEFzc2V0SW5mbwEFCnBtdEFzc2V0SWQEE3BtdEZyZWV6ZVN0ckFzc2V0SWQIBQ0kdDAxMjcxNzEyODA4Al8xBBJwbXRGcmVlemVBc3NldE5hbWUIBQ0kdDAxMjcxNzEyODA4Al8yBBFwbXRGcmVlemVEZWNpbWFscwgFDSR0MDEyNzE3MTI4MDgCXzMEEG5lZWRGcmVlemVUb2tlbnMJAGgCBRRmcmVlemVUb2tlblBlclRpY2tldAUPYnV5VGlja2V0QW1vdW50AwMJAQIhPQIFE3BtdEZyZWV6ZVN0ckFzc2V0SWQFDWZyZWV6ZVRva2VuSWQGCQECIT0CBRBuZWVkRnJlZXplVG9rZW5zBQ9wbXRBbW91bnRGcmVlemUJAAIBCQCsAgIJAKwCAgkArAICCQCsAgICEFlvdSBuZWVkIHRvIGFkZCAJAKQDAQUQbmVlZEZyZWV6ZVRva2VucwIBIAUScG10RnJlZXplQXNzZXROYW1lAhQgYXMgYSBzZWNvbmQgcGF5bWVudAkAzAgCCQEMSW50ZWdlckVudHJ5AgkArAICCQCsAgIJAKwCAgkApQgBCAUBaQZjYWxsZXICAV8JAKQDAQULbGF1bmNocGFkSWQFEmtleVVzZXJGcmVlemVUb2tlbgUPcG10QW1vdW50RnJlZXplBQNuaWwFA25pbAQYdXNlckJvdWdodFRpY2tldHNOdW1iZXJzCQELdmFsdWVPckVsc2UCCQCdCAIFBHRoaXMJAKwCAgkArAICCQCsAgIJAKUIAQgFAWkGY2FsbGVyAgFfCQCkAwEFC2xhdW5jaHBhZElkBQ5rZXlVc2VyVGlja2V0cwIABBZsYXN0Qm91Z2h0VGlja2V0TnVtYmVyCQERQGV4dHJOYXRpdmUoMTA1MCkCBQR0aGlzCQCsAgIJAKQDAQULbGF1bmNocGFkSWQFE2tleVRpY2tldExhc3ROdW1iZXIEC2JvdWdodFJhbmdlCQCsAgIJAKwCAgkApAMBCQBkAgUWbGFzdEJvdWdodFRpY2tldE51bWJlcgABAgEtCQCkAwEJAGQCBRZsYXN0Qm91Z2h0VGlja2V0TnVtYmVyBRZhbGxvd2VkQnV5VGlja2V0QW1vdW50BBtuZXdVc2VyQm91Z2h0VGlja2V0c051bWJlcnMJAKwCAgUYdXNlckJvdWdodFRpY2tldHNOdW1iZXJzAwkBAiE9AgUYdXNlckJvdWdodFRpY2tldHNOdW1iZXJzAgAJAKwCAgIBLAULYm91Z2h0UmFuZ2UJAKwCAgIABQtib3VnaHRSYW5nZQQDaW52AwkAAAIFCmJ1eUFzc2V0SWQFBFVTRE4JAPwHBAUSc3Rha2luZ1VTRE5BZGRyZXNzAgxsb2NrTmV1dHJpbm8FA25pbAkAzAgCCQEPQXR0YWNoZWRQYXltZW50AgUKcG10QXNzZXRJZAUJcG10QW1vdW50BQNuaWwAAAMJAAACBQNpbnYFA2ludgQJYmFzZUVudHJ5CQDOCAIJAMwIAgkBDEludGVnZXJFbnRyeQIJAKwCAgkArAICCQCsAgIJAKUIAQgFAWkGY2FsbGVyAgFfCQCkAwEFC2xhdW5jaHBhZElkBRprZXlVc2VyQm91Z2h0VGlja2V0c0Ftb3VudAkAZAIFE2JvdWdodFRpY2tldHNBbW91bnQFFmFsbG93ZWRCdXlUaWNrZXRBbW91bnQJAMwIAgkBDEludGVnZXJFbnRyeQIJAKwCAgkApAMBBQtsYXVuY2hwYWRJZAUTa2V5VGlja2V0TGFzdE51bWJlcgkAZAIFFmxhc3RCb3VnaHRUaWNrZXROdW1iZXIFFmFsbG93ZWRCdXlUaWNrZXRBbW91bnQJAMwIAgkBC1N0cmluZ0VudHJ5AgkArAICCQCsAgIJAKwCAgkApQgBCAUBaQZjYWxsZXICAV8JAKQDAQULbGF1bmNocGFkSWQFDmtleVVzZXJUaWNrZXRzBRtuZXdVc2VyQm91Z2h0VGlja2V0c051bWJlcnMFA25pbAUVZnJlZXplQWRkaXRpb25hbEVudHJ5AwkBASEBCQEJaXNEZWZpbmVkAQkAnQgCBQR0aGlzCQCsAgIJAKwCAgkArAICCQClCAEIBQFpBmNhbGxlcgIBXwkApAMBBQtsYXVuY2hwYWRJZAUMa2V5VXNlclJlZklkCQDOCAIFCWJhc2VFbnRyeQkAzAgCCQELU3RyaW5nRW50cnkCCQCsAgIJAKwCAgkArAICCQClCAEIBQFpBmNhbGxlcgIBXwkApAMBBQtsYXVuY2hwYWRJZAUMa2V5VXNlclJlZklkBQVyZWZJZAUDbmlsBQliYXNlRW50cnkJAAIBAiRTdHJpY3QgdmFsdWUgaXMgbm90IGVxdWFsIHRvIGl0c2VsZi4BaQEUY29tbWl0QWNjZXNzTGlzdFNhbGUCC2xhdW5jaHBhZElkBXJlZklkCQELdmFsdWVPckVsc2UCCQEIaXNBY3RpdmUABA0kdDAxNDg3OTE0OTU0CQCUCgIICQCRAwIIBQFpCHBheW1lbnRzAAAGYW1vdW50CAkAkQMCCAUBaQhwYXltZW50cwAAB2Fzc2V0SWQECXBtdEFtb3VudAgFDSR0MDE0ODc5MTQ5NTQCXzEECnBtdEFzc2V0SWQIBQ0kdDAxNDg3OTE0OTU0Al8yBA0kdDAxNDk1OTE1MTA5CQEWZ2V0QXNzZXRJbmZvRnJvbVN0cmluZwEJAQV2YWx1ZQEJAJ0IAgUEdGhpcwkArAICCQCkAwEFC2xhdW5jaHBhZElkBQtrZXlCdXlUb2tlbgQKYnV5QXNzZXRJZAgFDSR0MDE0OTU5MTUxMDkCXzEEDWJ1eUFzc2V0U3RySWQIBQ0kdDAxNDk1OTE1MTA5Al8yBAxidXlBc3NldE5hbWUIBQ0kdDAxNDk1OTE1MTA5Al8zBBBidXlBc3NldERlY2ltYWxzCAUNJHQwMTQ5NTkxNTEwOQJfNAQTdXNlclVzZG5Jbk1hcmtldGluZwkBC3ZhbHVlT3JFbHNlAgkAmggCBQR0aGlzCQCsAgIJAKwCAgkArAICCQClCAEIBQFpBmNhbGxlcgIBXwkApAMBBQtsYXVuY2hwYWRJZAUga2V5VXNlckFtb3VudEJ1eUFzc2V0SW5NYXJrZXRpbmcAAAQPdXNkbkluTWFya2V0aW5nCQELdmFsdWVPckVsc2UCCQCaCAIFBHRoaXMJAKwCAgkApAMBBQtsYXVuY2hwYWRJZAUca2V5QW1vdW50QnV5QXNzZXRJbk1hcmtldGluZwAABBFib3VnaHRBbGxvY2F0aW9ucwkBC3ZhbHVlT3JFbHNlAgkAmggCBQR0aGlzCQCsAgIJAKwCAgkArAICCQClCAEIBQFpBmNhbGxlcgIBXwkApAMBBQtsYXVuY2hwYWRJZAUYa2V5VXNlckJvdWdodEFsbG9jYXRpb25zAAAECmNvbW1pc3Npb24JARFAZXh0ck5hdGl2ZSgxMDUwKQIFBHRoaXMJAKwCAgkApAMBBQtsYXVuY2hwYWRJZAUMa2V5Q29taXNzaW9uBAp0b2tlblByaWNlCQERQGV4dHJOYXRpdmUoMTA1MCkCBQR0aGlzCQCsAgIJAKQDAQULbGF1bmNocGFkSWQFEGtleVByaWNlUGVyVG9rZW4EE3Rva2Vuc1BlckFsbG9jYXRpb24JARFAZXh0ck5hdGl2ZSgxMDUwKQIFBHRoaXMJAKwCAgkApAMBBQtsYXVuY2hwYWRJZAUWa2V5VG9rZW5zUGVyQWxsb2NhdGlvbgQNJHQwMTU3NzgxNTkyMgkBFmdldEFzc2V0SW5mb0Zyb21TdHJpbmcBCQERQGV4dHJOYXRpdmUoMTA1MykCBQR0aGlzCQCsAgIJAKQDAQULbGF1bmNocGFkSWQFCmtleUFzc2V0SWQEB3Rva2VuSWQIBQ0kdDAxNTc3ODE1OTIyAl8xBA90b2tlblN0ckFzc2V0SWQIBQ0kdDAxNTc3ODE1OTIyAl8yBA50b2tlbkFzc2V0TmFtZQgFDSR0MDE1Nzc4MTU5MjICXzMEDXRva2VuRGVjaW1hbHMIBQ0kdDAxNTc3ODE1OTIyAl80BBxhbGxvY2F0aW9uUHJpY2VXaXRoQ29taXNzaW9uCQBrAwkAawMFCnRva2VuUHJpY2UFE3Rva2Vuc1BlckFsbG9jYXRpb24JAGwGAAoAAAUNdG9rZW5EZWNpbWFscwAAAAAFBERPV04JAGQCAGQFCmNvbW1pc3Npb24AZAQLc3RhcnRIZWlnaHQJAQV2YWx1ZQEJAJoIAgUEdGhpcwkArAICCQCkAwEFC2xhdW5jaHBhZElkBQ5rZXlTdGFydEhlaWdodAQIZHVyYXRpb24JAQV2YWx1ZQEJAJoIAgUEdGhpcwkArAICCQCkAwEFC2xhdW5jaHBhZElkBQtrZXlEdXJhdGlvbgMJAQIhPQIFEWFjdGl2ZUxhdW5jaHBhZElkBQtsYXVuY2hwYWRJZAkAAgECN1RoZXJlIGlzIG5vIGFjdGl2ZSBsYXVuY2hwYWQgb3IgdGhpcyBsYXVuY2hwYWQgaXMgZW5kZWQDCQBmAgULc3RhcnRIZWlnaHQFBmhlaWdodAkAAgECHkxhdW5jaHBhZCBzYWxlIG5vdCBzdGFydGVkIHlldAMJAGYCBQZoZWlnaHQJAGQCBQtzdGFydEhlaWdodAUIZHVyYXRpb24JAAIBAhRMYXVuY2hwYWQgc2FsZSBlbmRlZAMDCQECIT0CCQCQAwEIBQFpCHBheW1lbnRzAAEGCQECIT0CBQpwbXRBc3NldElkBQpidXlBc3NldElkCQACAQkArAICCQCsAgICGE9uZSBhdHRhY2hlZCBwYXltZW50IGluIAUMYnV5QXNzZXROYW1lAgkgZXhwZWN0ZWQDCQBnAgURYm91Z2h0QWxsb2NhdGlvbnMFFG1heEFsbG9jYXRpb25zQW1vdW50CQACAQkArAICCQCsAgICEVlvdSBjYW4gYnV5IG9ubHkgCQCkAwEFFG1heEFsbG9jYXRpb25zQW1vdW50AgthbGxvY2F0aW9ucwMDCQECIT0CBRxhbGxvY2F0aW9uUHJpY2VXaXRoQ29taXNzaW9uBQlwbXRBbW91bnQJAQIhPQIJAGgCBRxhbGxvY2F0aW9uUHJpY2VXaXRoQ29taXNzaW9uAAIFCXBtdEFtb3VudAcJAAIBCQCsAgIJAKwCAgkArAICAjJXcm9uZyBwYXltZW50LiBZb3UgY2FuIGJ1eSAxIG9yIDIgYWxsb2NhdGlvbnMgZm9yIAkApAMBBRxhbGxvY2F0aW9uUHJpY2VXaXRoQ29taXNzaW9uBQxidXlBc3NldE5hbWUCDyBwZXIgYWxsb2NhdGlvbgQUYnV5QWxsb2NhdGlvbnNBbW91bnQJAGkCBQlwbXRBbW91bnQFHGFsbG9jYXRpb25QcmljZVdpdGhDb21pc3Npb24EA2ludgMJAAACBQpidXlBc3NldElkBQRVU0ROCQD8BwQFEnN0YWtpbmdVU0ROQWRkcmVzcwIMbG9ja05ldXRyaW5vBQNuaWwJAMwIAgkBD0F0dGFjaGVkUGF5bWVudAIFCnBtdEFzc2V0SWQFCXBtdEFtb3VudAUDbmlsAAADCQAAAgUDaW52BQNpbnYECWJhc2VFbnRyeQkAzAgCCQEMSW50ZWdlckVudHJ5AgkArAICCQCsAgIJAKwCAgkApQgBCAUBaQZjYWxsZXICAV8JAKQDAQULbGF1bmNocGFkSWQFGGtleVVzZXJCb3VnaHRBbGxvY2F0aW9ucwkAZAIFEWJvdWdodEFsbG9jYXRpb25zBRRidXlBbGxvY2F0aW9uc0Ftb3VudAkAzAgCCQEMSW50ZWdlckVudHJ5AgkArAICCQCsAgIJAKwCAgkApQgBCAUBaQZjYWxsZXICAV8JAKQDAQULbGF1bmNocGFkSWQFIGtleVVzZXJBbW91bnRCdXlBc3NldEluTWFya2V0aW5nCQBkAgUTdXNlclVzZG5Jbk1hcmtldGluZwUJcG10QW1vdW50CQDMCAIJAQxJbnRlZ2VyRW50cnkCCQCsAgIJAKQDAQULbGF1bmNocGFkSWQFHGtleUFtb3VudEJ1eUFzc2V0SW5NYXJrZXRpbmcJAGQCBQ91c2RuSW5NYXJrZXRpbmcFCXBtdEFtb3VudAUDbmlsAwkBASEBCQEJaXNEZWZpbmVkAQkAnQgCBQR0aGlzCQCsAgIJAKwCAgkArAICCQClCAEIBQFpBmNhbGxlcgIBXwkApAMBBQtsYXVuY2hwYWRJZAUMa2V5VXNlclJlZklkCQDOCAIFCWJhc2VFbnRyeQkAzAgCCQELU3RyaW5nRW50cnkCCQCsAgIJAKwCAgkArAICCQClCAEIBQFpBmNhbGxlcgIBXwkApAMBBQtsYXVuY2hwYWRJZAUMa2V5VXNlclJlZklkBQVyZWZJZAUDbmlsBQliYXNlRW50cnkJAAIBAiRTdHJpY3QgdmFsdWUgaXMgbm90IGVxdWFsIHRvIGl0c2VsZi4BaQEZY29tbWl0SGlnaENvbXBldGl0aW9uU2FsZQILbGF1bmNocGFkSWQFcmVmSWQJAQt2YWx1ZU9yRWxzZQIJAQhpc0FjdGl2ZQAEDSR0MDE4MTgwMTgyNTUJAJQKAggJAJEDAggFAWkIcGF5bWVudHMAAAZhbW91bnQICQCRAwIIBQFpCHBheW1lbnRzAAAHYXNzZXRJZAQJcG10QW1vdW50CAUNJHQwMTgxODAxODI1NQJfMQQKcG10QXNzZXRJZAgFDSR0MDE4MTgwMTgyNTUCXzIEDSR0MDE4MjYwMTg0MTAJARZnZXRBc3NldEluZm9Gcm9tU3RyaW5nAQkBBXZhbHVlAQkAnQgCBQR0aGlzCQCsAgIJAKQDAQULbGF1bmNocGFkSWQFC2tleUJ1eVRva2VuBApidXlBc3NldElkCAUNJHQwMTgyNjAxODQxMAJfMQQNYnV5QXNzZXRTdHJJZAgFDSR0MDE4MjYwMTg0MTACXzIEDGJ1eUFzc2V0TmFtZQgFDSR0MDE4MjYwMTg0MTACXzMEEGJ1eUFzc2V0RGVjaW1hbHMIBQ0kdDAxODI2MDE4NDEwAl80BAtzdGFydEhlaWdodAkBBXZhbHVlAQkAmggCBQR0aGlzCQCsAgIJAKQDAQULbGF1bmNocGFkSWQFDmtleVN0YXJ0SGVpZ2h0BAhkdXJhdGlvbgkBBXZhbHVlAQkAmggCBQR0aGlzCQCsAgIJAKQDAQULbGF1bmNocGFkSWQFC2tleUR1cmF0aW9uBBVib3VnaHRIQ1RpY2tldHNBbW91bnQJAQt2YWx1ZU9yRWxzZQIJAJoIAgUEdGhpcwkArAICCQCsAgIJAKwCAgkApQgBCAUBaQZjYWxsZXICAV8JAKQDAQULbGF1bmNocGFkSWQFHGtleVVzZXJIQ0JvdWdodFRpY2tldHNBbW91bnQAAAQTaGlnaENvbXBldGl0aW9uU2FsZQkBC3ZhbHVlT3JFbHNlAgkAmwgCBQR0aGlzCQCsAgIJAKQDAQULbGF1bmNocGFkSWQFFmtleUhpZ2hDb21wZXRpdGlvblNhbGUHAwkBAiE9AgURYWN0aXZlTGF1bmNocGFkSWQFC2xhdW5jaHBhZElkCQACAQI3VGhlcmUgaXMgbm8gYWN0aXZlIGxhdW5jaHBhZCBvciB0aGlzIGxhdW5jaHBhZCBpcyBlbmRlZAMJAQEhAQUTaGlnaENvbXBldGl0aW9uU2FsZQkAAgECNFRoZXJlIGlzIG5vIGhpZ2ggY29tcGV0aXRpb24gc2FsZSBmb3IgdGhpcyBsYXVuY2hwYWQDCQBmAgULc3RhcnRIZWlnaHQFBmhlaWdodAkAAgECHkxhdW5jaHBhZCBzYWxlIG5vdCBzdGFydGVkIHlldAMJAGYCBQZoZWlnaHQJAGQCBQtzdGFydEhlaWdodAUIZHVyYXRpb24JAAIBAhRMYXVuY2hwYWQgc2FsZSBlbmRlZAMDCQECIT0CCQCQAwEIBQFpCHBheW1lbnRzAAEGCQECIT0CBQpwbXRBc3NldElkBQpidXlBc3NldElkCQACAQkArAICCQCsAgICGE9uZSBhdHRhY2hlZCBwYXltZW50IGluIAUMYnV5QXNzZXROYW1lAgkgZXhwZWN0ZWQECnRva2VuUHJpY2UJARFAZXh0ck5hdGl2ZSgxMDUwKQIFBHRoaXMJAKwCAgkApAMBBQtsYXVuY2hwYWRJZAUQa2V5UHJpY2VQZXJUb2tlbgQPdG9rZW5zUGVyVGlja2V0CQERQGV4dHJOYXRpdmUoMTA1MCkCBQR0aGlzCQCsAgIJAKQDAQULbGF1bmNocGFkSWQFEmtleVRva2Vuc1BlclRpY2tldAQNJHQwMTk1ODMxOTcyNwkBFmdldEFzc2V0SW5mb0Zyb21TdHJpbmcBCQERQGV4dHJOYXRpdmUoMTA1MykCBQR0aGlzCQCsAgIJAKQDAQULbGF1bmNocGFkSWQFCmtleUFzc2V0SWQEB3Rva2VuSWQIBQ0kdDAxOTU4MzE5NzI3Al8xBA90b2tlblN0ckFzc2V0SWQIBQ0kdDAxOTU4MzE5NzI3Al8yBA50b2tlbkFzc2V0TmFtZQgFDSR0MDE5NTgzMTk3MjcCXzMEDXRva2VuRGVjaW1hbHMIBQ0kdDAxOTU4MzE5NzI3Al80BAt0aWNrZXRQcmljZQkAawMFD3Rva2Vuc1BlclRpY2tldAUKdG9rZW5QcmljZQkAbAYACgAABQ10b2tlbkRlY2ltYWxzAAAAAAUERE9XTgQTY29tbWlzc2lvblBlclRpY2tldAkAawMFC3RpY2tldFByaWNlCQERQGV4dHJOYXRpdmUoMTA1MCkCBQR0aGlzCQCsAgIJAKQDAQULbGF1bmNocGFkSWQFG2tleUhpZ2hDb21wZXRpdGlvbkNvbWlzc2lvbgBkBA9idXlUaWNrZXRBbW91bnQJAGkCBQlwbXRBbW91bnQJAGQCBQt0aWNrZXRQcmljZQUTY29tbWlzc2lvblBlclRpY2tldAQVYnV5UHJpY2VXaXRoQ29taXNzaW9uCQBoAgUPYnV5VGlja2V0QW1vdW50CQBkAgULdGlja2V0UHJpY2UFE2NvbW1pc3Npb25QZXJUaWNrZXQEBmNoYW5nZQkAZQIFCXBtdEFtb3VudAUVYnV5UHJpY2VXaXRoQ29taXNzaW9uAwkAAAIFD2J1eVRpY2tldEFtb3VudAAACQACAQkArAICCQCsAgICDE5vdCBlbm91Z2h0IAUMYnV5QXNzZXROYW1lAg8gdG8gYnV5IHRpY2tldHMDCQECIT0CBQZjaGFuZ2UAAAkAAgEJAKwCAgkArAICCQCsAgIJAKwCAgIWV3JvbmcgcGF5bWVudC4gVG8gYnV5IAkApAMBBQ9idXlUaWNrZXRBbW91bnQCGHRpY2tldHMgeW91IG5lZWQgdG8gcGF5IAkApAMBBRVidXlQcmljZVdpdGhDb21pc3Npb24FDGJ1eUFzc2V0TmFtZQQYdXNlckJvdWdodFRpY2tldHNOdW1iZXJzCQELdmFsdWVPckVsc2UCCQCdCAIFBHRoaXMJAKwCAgkArAICCQCsAgIJAKUIAQgFAWkGY2FsbGVyAgFfCQCkAwEFC2xhdW5jaHBhZElkBRBrZXlVc2VySENUaWNrZXRzAgAEFmxhc3RCb3VnaHRUaWNrZXROdW1iZXIJARFAZXh0ck5hdGl2ZSgxMDUwKQIFBHRoaXMJAKwCAgkApAMBBQtsYXVuY2hwYWRJZAUVa2V5SENUaWNrZXRMYXN0TnVtYmVyBAtib3VnaHRSYW5nZQkArAICCQCsAgIJAKQDAQkAZAIFFmxhc3RCb3VnaHRUaWNrZXROdW1iZXIAAQIBLQkApAMBCQBkAgUWbGFzdEJvdWdodFRpY2tldE51bWJlcgUPYnV5VGlja2V0QW1vdW50BBtuZXdVc2VyQm91Z2h0VGlja2V0c051bWJlcnMJAKwCAgUYdXNlckJvdWdodFRpY2tldHNOdW1iZXJzAwkBAiE9AgUYdXNlckJvdWdodFRpY2tldHNOdW1iZXJzAgAJAKwCAgIBLAULYm91Z2h0UmFuZ2UJAKwCAgIABQtib3VnaHRSYW5nZQQDaW52AwkAAAIFCmJ1eUFzc2V0SWQFBFVTRE4JAPwHBAUSc3Rha2luZ1VTRE5BZGRyZXNzAgxsb2NrTmV1dHJpbm8FA25pbAkAzAgCCQEPQXR0YWNoZWRQYXltZW50AgUKcG10QXNzZXRJZAUJcG10QW1vdW50BQNuaWwAAAMJAAACBQNpbnYFA2ludgQJYmFzZUVudHJ5CQDMCAIJAQxJbnRlZ2VyRW50cnkCCQCsAgIJAKwCAgkArAICCQClCAEIBQFpBmNhbGxlcgIBXwkApAMBBQtsYXVuY2hwYWRJZAUca2V5VXNlckhDQm91Z2h0VGlja2V0c0Ftb3VudAkAZAIFFWJvdWdodEhDVGlja2V0c0Ftb3VudAUPYnV5VGlja2V0QW1vdW50CQDMCAIJAQxJbnRlZ2VyRW50cnkCCQCsAgIJAKQDAQULbGF1bmNocGFkSWQFFWtleUhDVGlja2V0TGFzdE51bWJlcgkAZAIFFmxhc3RCb3VnaHRUaWNrZXROdW1iZXIFD2J1eVRpY2tldEFtb3VudAkAzAgCCQELU3RyaW5nRW50cnkCCQCsAgIJAKwCAgkArAICCQClCAEIBQFpBmNhbGxlcgIBXwkApAMBBQtsYXVuY2hwYWRJZAUQa2V5VXNlckhDVGlja2V0cwUbbmV3VXNlckJvdWdodFRpY2tldHNOdW1iZXJzBQNuaWwDCQEBIQEJAQlpc0RlZmluZWQBCQCdCAIFBHRoaXMJAKwCAgkArAICCQCsAgIJAKUIAQgFAWkGY2FsbGVyAgFfCQCkAwEFC2xhdW5jaHBhZElkBQxrZXlVc2VyUmVmSWQJAM4IAgUJYmFzZUVudHJ5CQDMCAIJAQtTdHJpbmdFbnRyeQIJAKwCAgkArAICCQCsAgIJAKUIAQgFAWkGY2FsbGVyAgFfCQCkAwEFC2xhdW5jaHBhZElkBQxrZXlVc2VyUmVmSWQFBXJlZklkBQNuaWwFCWJhc2VFbnRyeQkAAgECJFN0cmljdCB2YWx1ZSBpcyBub3QgZXF1YWwgdG8gaXRzZWxmLgFpAQhmaW5hbGlzZQMLbGF1bmNocGFkSWQJdnJmSGVpZ2h0CnNlY3JldFdvcmQJAQt2YWx1ZU9yRWxzZQIJAQhpc0FjdGl2ZQAJAQt2YWx1ZU9yRWxzZQIJAQtpc0FkbWluQ2FsbAEFAWkECXNhdmVkSGFzaAkBEUBleHRyTmF0aXZlKDEwNTMpAgUEdGhpcwkArAICCQCkAwEFC2xhdW5jaHBhZElkBQ1rZXlWZXJpZnlIYXNoBAhjYWxjSGFzaAkA2AQBCQD3AwEJAMsBAgkAmgMBBQl2cmZIZWlnaHQJAJsDAQUKc2VjcmV0V29yZAMJAQIhPQIFCGNhbGNIYXNoBQlzYXZlZEhhc2gJAAIBAhx2cmYgSGVpZ2h0IGhhc2ggbm90IG1hdGNoaW5nBA0kdDAyMjM0MDIyNDkwCQEWZ2V0QXNzZXRJbmZvRnJvbVN0cmluZwEJAQV2YWx1ZQEJAJ0IAgUEdGhpcwkArAICCQCkAwEFC2xhdW5jaHBhZElkBQtrZXlCdXlUb2tlbgQKYnV5QXNzZXRJZAgFDSR0MDIyMzQwMjI0OTACXzEEDWJ1eUFzc2V0U3RySWQIBQ0kdDAyMjM0MDIyNDkwAl8yBAxidXlBc3NldE5hbWUIBQ0kdDAyMjM0MDIyNDkwAl8zBBBidXlBc3NldERlY2ltYWxzCAUNJHQwMjIzNDAyMjQ5MAJfNAQOcHJvamVjdEFkZHJlc3MJARFAZXh0ck5hdGl2ZSgxMDYyKQEJARFAZXh0ck5hdGl2ZSgxMDUzKQIFBHRoaXMJAKwCAgkApAMBBQtsYXVuY2hwYWRJZAUKa2V5QWRkcmVzcwQKY29tbWlzc2lvbgkBEUBleHRyTmF0aXZlKDEwNTApAgUEdGhpcwkArAICCQCkAwEFC2xhdW5jaHBhZElkBQxrZXlDb21pc3Npb24EDGNvbW1pc3Npb25IQwkBEUBleHRyTmF0aXZlKDEwNTApAgUEdGhpcwkArAICCQCkAwEFC2xhdW5jaHBhZElkBRtrZXlIaWdoQ29tcGV0aXRpb25Db21pc3Npb24EEnRyYW5zZmVyZWRCdXlBc3NldAkBC3ZhbHVlT3JFbHNlAgkAmggCBQR0aGlzCQCsAgIJAKQDAQULbGF1bmNocGFkSWQFE2tleVRyYW5zZmVyQnV5QXNzZXQAAAQbc3dvcGZpTWVtYmVyc0J1eUFzc2V0QW1vdW50CQERQGV4dHJOYXRpdmUoMTA1MCkCBQR0aGlzCQCsAgIJAKQDAQULbGF1bmNocGFkSWQFGmtleVRvdGFsQW1vdW50QnV5QXNzZXRTb2xkBBZzd29wZmlIQ0J1eUFzc2V0QW1vdW50CQELdmFsdWVPckVsc2UCCQCaCAIFBHRoaXMJAKwCAgkApAMBBQtsYXVuY2hwYWRJZAUca2V5VG90YWxBbW91bnRCdXlBc3NldFNvbGRIQwAABBZzd29wZmlNZW1iZXJzQ29taXNzaW9uCQBrAwUbc3dvcGZpTWVtYmVyc0J1eUFzc2V0QW1vdW50BQpjb21taXNzaW9uAGQEEXN3b3BmaUhDQ29taXNzaW9uCQBrAwUWc3dvcGZpSENCdXlBc3NldEFtb3VudAUMY29tbWlzc2lvbkhDAGQEHnRvdGFsQW1vdW50QnV5QXNzZXRJbk1hcmtldGluZwkBEUBleHRyTmF0aXZlKDEwNTApAgUEdGhpcwkArAICCQCkAwEFC2xhdW5jaHBhZElkBSVrZXlBbW91bnRCdXlBc3NldEluTWFya2V0aW5nRmluYWxpemVkBBJtYXJrZXRpbmdDb21pc3Npb24JAGsDBR50b3RhbEFtb3VudEJ1eUFzc2V0SW5NYXJrZXRpbmcFCmNvbW1pc3Npb24AZAQNdW5zdGFrZUFtb3VudAkAZQIJAGQCCQBkAgkAZAIJAGQCCQBkAgUbc3dvcGZpTWVtYmVyc0J1eUFzc2V0QW1vdW50BR50b3RhbEFtb3VudEJ1eUFzc2V0SW5NYXJrZXRpbmcFFnN3b3BmaU1lbWJlcnNDb21pc3Npb24FEm1hcmtldGluZ0NvbWlzc2lvbgUWc3dvcGZpSENCdXlBc3NldEFtb3VudAURc3dvcGZpSENDb21pc3Npb24FEnRyYW5zZmVyZWRCdXlBc3NldAMJAGYCBRJ0cmFuc2ZlcmVkQnV5QXNzZXQJAGQCCQBkAgUbc3dvcGZpTWVtYmVyc0J1eUFzc2V0QW1vdW50BR50b3RhbEFtb3VudEJ1eUFzc2V0SW5NYXJrZXRpbmcFFnN3b3BmaUhDQnV5QXNzZXRBbW91bnQJAAIBAihDYW4ndCB0cmFuc2ZlciBuZWdhdGl2ZSB2YWx1ZSB0byBwcm9qZWN0BANpbnYDCQAAAgUKYnV5QXNzZXRJZAUEVVNETgkA/AcEBRJzdGFraW5nVVNETkFkZHJlc3MCDnVubG9ja05ldXRyaW5vCQDMCAIFDXVuc3Rha2VBbW91bnQJAMwIAgkA2AQBBQRVU0ROBQNuaWwFA25pbAAAAwkAAAIFA2ludgUDaW52CQDMCAIJAQxJbnRlZ2VyRW50cnkCCQCsAgIJAKQDAQULbGF1bmNocGFkSWQFEWtleUZpbmFsaXNlSGVpZ2h0BQZoZWlnaHQJAMwIAgkBDlNjcmlwdFRyYW5zZmVyAwUOcHJvamVjdEFkZHJlc3MJAGUCCQBkAgkAZAIFG3N3b3BmaU1lbWJlcnNCdXlBc3NldEFtb3VudAUWc3dvcGZpSENCdXlBc3NldEFtb3VudAUedG90YWxBbW91bnRCdXlBc3NldEluTWFya2V0aW5nBRJ0cmFuc2ZlcmVkQnV5QXNzZXQFCmJ1eUFzc2V0SWQJAMwIAgkBDlNjcmlwdFRyYW5zZmVyAwUQY29tbWlzc2lvbldhbGxldAkAZAIJAGQCBRZzd29wZmlNZW1iZXJzQ29taXNzaW9uBRJtYXJrZXRpbmdDb21pc3Npb24FEXN3b3BmaUhDQ29taXNzaW9uBQpidXlBc3NldElkBQNuaWwJAAIBAiRTdHJpY3QgdmFsdWUgaXMgbm90IGVxdWFsIHRvIGl0c2VsZi4BaQEFY2xhaW0BC2xhdW5jaHBhZElkCQELdmFsdWVPckVsc2UCCQEIaXNBY3RpdmUABA1ib3VnaHRUaWNrZXRzCQELdmFsdWVPckVsc2UCCQCaCAIFBHRoaXMJAKwCAgkArAICCQCsAgIJAKUIAQgFAWkGY2FsbGVyAgFfCQCkAwEFC2xhdW5jaHBhZElkBRprZXlVc2VyQm91Z2h0VGlja2V0c0Ftb3VudAAABA9ib3VnaHRIQ1RpY2tldHMJAQt2YWx1ZU9yRWxzZQIJAJoIAgUEdGhpcwkArAICCQCsAgIJAKwCAgkApQgBCAUBaQZjYWxsZXICAV8JAKQDAQULbGF1bmNocGFkSWQFHGtleVVzZXJIQ0JvdWdodFRpY2tldHNBbW91bnQAAAQRYm91Z2h0QWxsb2NhdGlvbnMJAQt2YWx1ZU9yRWxzZQIJAJoIAgUEdGhpcwkArAICCQCsAgIJAKwCAgkApQgBCAUBaQZjYWxsZXICAV8JAKQDAQULbGF1bmNocGFkSWQFGGtleVVzZXJCb3VnaHRBbGxvY2F0aW9ucwAABA91c2VyQ2xhaW1TdGF0dXMJAQt2YWx1ZU9yRWxzZQIJAJsIAgUEdGhpcwkArAICCQCsAgIJAKwCAgkApQgBCAUBaQZjYWxsZXICAV8JAKQDAQULbGF1bmNocGFkSWQFEmtleVVzZXJDbGFpbVN0YXR1cwcEDmZpbmFsaXplSGVpZ2h0CQELdmFsdWVPckVsc2UCCQCaCAIFBHRoaXMJAKwCAgkApAMBBQtsYXVuY2hwYWRJZAURa2V5RmluYWxpc2VIZWlnaHQAAAMJAAACBQ5maW5hbGl6ZUhlaWdodAAACQACAQIxWW91IGNhbid0IGNsYWltIGJlY2F1c2UgcmVzdWx0cyBhcmUgbm90IGZpbmFsaXplZAMFD3VzZXJDbGFpbVN0YXR1cwkAAgECF1lvdSBhcmUgYWxyZWFkeSBjbGFpbWVkAwMDCQAAAgUNYm91Z2h0VGlja2V0cwAACQAAAgURYm91Z2h0QWxsb2NhdGlvbnMAAAcJAAACBQ9ib3VnaHRIQ1RpY2tldHMAAAcJAAIBAi5Zb3UgY2FuJ3QgY2xhaW0gYmVjYXVzZSB5b3UgZG9uJ3QgYnV5IGFueXRoaW5nBA0kdDAyNTU3NDI1NzUxCQEWZ2V0QXNzZXRJbmZvRnJvbVN0cmluZwEJAQt2YWx1ZU9yRWxzZQIJAJ0IAgUEdGhpcwkArAICCQCkAwEFC2xhdW5jaHBhZElkBQtrZXlCdXlUb2tlbgkA2AQBBQRVU0ROBApidXlBc3NldElkCAUNJHQwMjU1NzQyNTc1MQJfMQQNYnV5QXNzZXRTdHJJZAgFDSR0MDI1NTc0MjU3NTECXzIEDGJ1eUFzc2V0TmFtZQgFDSR0MDI1NTc0MjU3NTECXzMEEGJ1eUFzc2V0RGVjaW1hbHMIBQ0kdDAyNTU3NDI1NzUxAl80BA13b25uZWRUaWNrZXRzCQELdmFsdWVPckVsc2UCCQCaCAIFBHRoaXMJAKwCAgkArAICCQCsAgIJAKUIAQgFAWkGY2FsbGVyAgFfCQCkAwEFC2xhdW5jaHBhZElkBRprZXlVc2VyV2lubmVkVGlja2V0c0Ftb3VudAAABA93b25uZWRIQ1RpY2tldHMJAQt2YWx1ZU9yRWxzZQIJAJoIAgUEdGhpcwkArAICCQCsAgIJAKwCAgkApQgBCAUBaQZjYWxsZXICAV8JAKQDAQULbGF1bmNocGFkSWQFKWtleVVzZXJXaW5uZWRIaWdoQ29tcGV0aXRpb25UaWNrZXRzQW1vdW50AAAEFGF3YWlsYWJsZUFsbG9jYXRpb25zCQELdmFsdWVPckVsc2UCCQCaCAIFBHRoaXMJAKwCAgkArAICCQCsAgIJAKUIAQgFAWkGY2FsbGVyAgFfCQCkAwEFC2xhdW5jaHBhZElkBRtrZXlVc2VyQXZhaWxhYmxlQWxsb2NhdGlvbnMAAAQKY29tbWlzc2lvbgkBEUBleHRyTmF0aXZlKDEwNTApAgUEdGhpcwkArAICCQCkAwEFC2xhdW5jaHBhZElkBQxrZXlDb21pc3Npb24EDGNvbW1pc3Npb25IQwkBC3ZhbHVlT3JFbHNlAgkAmggCBQR0aGlzCQCsAgIJAKQDAQULbGF1bmNocGFkSWQFG2tleUhpZ2hDb21wZXRpdGlvbkNvbWlzc2lvbgAABBJhbGxvd2VkQWxsb2NhdGlvbnMJAJcDAQkAzAgCBRFib3VnaHRBbGxvY2F0aW9ucwkAzAgCBRRhd2FpbGFibGVBbGxvY2F0aW9ucwUDbmlsBAp0b2tlblByaWNlCQERQGV4dHJOYXRpdmUoMTA1MCkCBQR0aGlzCQCsAgIJAKQDAQULbGF1bmNocGFkSWQFEGtleVByaWNlUGVyVG9rZW4ED3Rva2Vuc1BlclRpY2tldAkBEUBleHRyTmF0aXZlKDEwNTApAgUEdGhpcwkArAICCQCkAwEFC2xhdW5jaHBhZElkBRJrZXlUb2tlbnNQZXJUaWNrZXQEDSR0MDI2NjY3MjY4MTEJARZnZXRBc3NldEluZm9Gcm9tU3RyaW5nAQkBEUBleHRyTmF0aXZlKDEwNTMpAgUEdGhpcwkArAICCQCkAwEFC2xhdW5jaHBhZElkBQprZXlBc3NldElkBAd0b2tlbklkCAUNJHQwMjY2NjcyNjgxMQJfMQQPdG9rZW5TdHJBc3NldElkCAUNJHQwMjY2NjcyNjgxMQJfMgQOdG9rZW5Bc3NldE5hbWUIBQ0kdDAyNjY2NzI2ODExAl8zBA10b2tlbkRlY2ltYWxzCAUNJHQwMjY2NjcyNjgxMQJfNAQLdGlja2V0UHJpY2UJAGsDBQ90b2tlbnNQZXJUaWNrZXQFCnRva2VuUHJpY2UJAGwGAAoAAAUNdG9rZW5EZWNpbWFscwAAAAAFBERPV04EE3Rva2Vuc1BlckFsbG9jYXRpb24JARFAZXh0ck5hdGl2ZSgxMDUwKQIFBHRoaXMJAKwCAgkApAMBBQtsYXVuY2hwYWRJZAUWa2V5VG9rZW5zUGVyQWxsb2NhdGlvbgQUdHJhbnNmZXJUb2tlbnNBbW91bnQJAGQCCQBkAgkAaAIFDXdvbm5lZFRpY2tldHMFD3Rva2Vuc1BlclRpY2tldAkAaAIFEmFsbG93ZWRBbGxvY2F0aW9ucwUTdG9rZW5zUGVyQWxsb2NhdGlvbgkAaAIFD3dvbm5lZEhDVGlja2V0cwUPdG9rZW5zUGVyVGlja2V0BBtub3RBbGxvd2VkQWxsb2NhdGlvbnNUb2tlbnMJAGgCCQBlAgURYm91Z2h0QWxsb2NhdGlvbnMFEmFsbG93ZWRBbGxvY2F0aW9ucwUTdG9rZW5zUGVyQWxsb2NhdGlvbgQWYnV5QXNzZXRGb3JBbGxvY2F0aW9ucwkAawMJAGsDBRtub3RBbGxvd2VkQWxsb2NhdGlvbnNUb2tlbnMFCnRva2VuUHJpY2UJAGwGAAoAAAUNdG9rZW5EZWNpbWFscwAAAAAFBERPV04JAGQCAGQFCmNvbW1pc3Npb24AZAQaYnV5QXNzZXRGb3JVbndvbm5lZFRpY2tldHMJAGsDCQBoAgkAZQIFDWJvdWdodFRpY2tldHMFDXdvbm5lZFRpY2tldHMFC3RpY2tldFByaWNlCQBkAgBkBQpjb21taXNzaW9uAGQEHGJ1eUFzc2V0Rm9ySENVbndvbm5lZFRpY2tldHMJAGsDCQBoAgkAZQIFD2JvdWdodEhDVGlja2V0cwUPd29ubmVkSENUaWNrZXRzBQt0aWNrZXRQcmljZQkAZAIAZAUMY29tbWlzc2lvbkhDAGQED2NsYWltZWRCdXlUb2tlbgkBC3ZhbHVlT3JFbHNlAgkAmggCBQR0aGlzCQCsAgIJAKwCAgkArAICCQClCAEIBQFpBmNhbGxlcgIBXwkApAMBBQtsYXVuY2hwYWRJZAUXa2V5VXNlckNsYWltZWRCdXlUb2tlbnMAAAMDAwkAZgIAAAUWYnV5QXNzZXRGb3JBbGxvY2F0aW9ucwYJAGYCAAAFGmJ1eUFzc2V0Rm9yVW53b25uZWRUaWNrZXRzBgkAZgIAAAUcYnV5QXNzZXRGb3JIQ1Vud29ubmVkVGlja2V0cwkAAgECUkVycm9yIHdpdGggYWxsb3dlZCBhbGxvY2F0aW9uIHBhcmFtIG9yIHdvbm5lZCB0aWNrZXRzIHBhcmFtIHBsZWFzZSBjb250YWN0IHN1cHBvcnQEFnJldHVybmVkQnV5QXNzZXRBbW91bnQJAGUCCQBkAgkAZAIFGmJ1eUFzc2V0Rm9yVW53b25uZWRUaWNrZXRzBRxidXlBc3NldEZvckhDVW53b25uZWRUaWNrZXRzBRZidXlBc3NldEZvckFsbG9jYXRpb25zBQ9jbGFpbWVkQnV5VG9rZW4EEHRyYW5zZmVyQnV5QXNzZXQDCQBmAgUWcmV0dXJuZWRCdXlBc3NldEFtb3VudAAACQDMCAIJAQ5TY3JpcHRUcmFuc2ZlcgMIBQFpBmNhbGxlcgUWcmV0dXJuZWRCdXlBc3NldEFtb3VudAUKYnV5QXNzZXRJZAkAzAgCCQEMSW50ZWdlckVudHJ5AgkArAICCQCsAgIJAKwCAgkApQgBCAUBaQZjYWxsZXICAV8JAKQDAQULbGF1bmNocGFkSWQFF2tleVVzZXJDbGFpbWVkQnV5VG9rZW5zBRZyZXR1cm5lZEJ1eUFzc2V0QW1vdW50BQNuaWwFA25pbAQDaW52AwMJAGYCBRZyZXR1cm5lZEJ1eUFzc2V0QW1vdW50AAAJAAACBQpidXlBc3NldElkBQRVU0ROBwkA/AcEBRJzdGFraW5nVVNETkFkZHJlc3MCDnVubG9ja05ldXRyaW5vCQDMCAIFFnJldHVybmVkQnV5QXNzZXRBbW91bnQJAMwIAgkA2AQBBQRVU0ROBQNuaWwFA25pbAAAAwkAAAIFA2ludgUDaW52BA1jbGFpbWVkUGFyYW1zCQC1CQIJAQt2YWx1ZU9yRWxzZQIJAJ0IAgUEdGhpcwkArAICCQCkAwEFC2xhdW5jaHBhZElkBQ5rZXlDbGFpbVBhcmFtcwIIY2xhaW1BbGwCASwDCQAAAgkAkQMCBQ1jbGFpbWVkUGFyYW1zAAACCGNsYWltQWxsBA50cmFuc2ZlclRva2VucwMJAGYCBRR0cmFuc2ZlclRva2Vuc0Ftb3VudAAACQDMCAIJAQ5TY3JpcHRUcmFuc2ZlcgMIBQFpBmNhbGxlcgUUdHJhbnNmZXJUb2tlbnNBbW91bnQFB3Rva2VuSWQFA25pbAUDbmlsCQDOCAIJAM4IAgkAzAgCCQEMQm9vbGVhbkVudHJ5AgkArAICCQCsAgIJAKwCAgkApQgBCAUBaQZjYWxsZXICAV8JAKQDAQULbGF1bmNocGFkSWQFEmtleVVzZXJDbGFpbVN0YXR1cwYJAMwIAgkBDEludGVnZXJFbnRyeQIJAKwCAgkArAICCQCsAgIJAKUIAQgFAWkGY2FsbGVyAgFfCQCkAwEFC2xhdW5jaHBhZElkBRRrZXlVc2VyQ2xhaW1lZFRva2VucwUUdHJhbnNmZXJUb2tlbnNBbW91bnQFA25pbAUOdHJhbnNmZXJUb2tlbnMFEHRyYW5zZmVyQnV5QXNzZXQDCQAAAgkAkQMCBQ1jbGFpbWVkUGFyYW1zAAACC2NsYWltUGVyaW9kBA1jbGFpbWVkVG9rZW5zCQELdmFsdWVPckVsc2UCCQCaCAIFBHRoaXMJAKwCAgkArAICCQCsAgIJAKUIAQgFAWkGY2FsbGVyAgFfCQCkAwEFC2xhdW5jaHBhZElkBRRrZXlVc2VyQ2xhaW1lZFRva2VucwAABAx1bmxvY2tQZXJpb2QJAQV2YWx1ZQEJALYJAQkAkQMCBQ1jbGFpbWVkUGFyYW1zAAIEC2Jsb2NrSGVpZ2h0CQBkAgkBBXZhbHVlAQkAtgkBCQCRAwIFDWNsYWltZWRQYXJhbXMAAwUOZmluYWxpemVIZWlnaHQEDHVubG9ja0hlaWdodAkAZAIFDHVubG9ja1BlcmlvZAULYmxvY2tIZWlnaHQEEmFsbG93ZWRTdGFydEFtb3VudAkAawMFFHRyYW5zZmVyVG9rZW5zQW1vdW50CQEFdmFsdWUBCQC2CQEJAJEDAgUNY2xhaW1lZFBhcmFtcwABAGQEE2FsbG93ZWRUb2tlbnNBbW91bnQJAGQCBRJhbGxvd2VkU3RhcnRBbW91bnQDCQBmAgUGaGVpZ2h0BQtibG9ja0hlaWdodAkAZQIJAGsDCQBlAgUUdHJhbnNmZXJUb2tlbnNBbW91bnQFEmFsbG93ZWRTdGFydEFtb3VudAkAZQIJAJcDAQkAzAgCBQZoZWlnaHQJAMwIAgUMdW5sb2NrSGVpZ2h0BQNuaWwFC2Jsb2NrSGVpZ2h0BQx1bmxvY2tQZXJpb2QFDWNsYWltZWRUb2tlbnMJAGUCAAAFDWNsYWltZWRUb2tlbnMEEGNsYWltU3RhdHVzRW50cnkDCQBnAgUUdHJhbnNmZXJUb2tlbnNBbW91bnQJAGQCBQ1jbGFpbWVkVG9rZW5zBRNhbGxvd2VkVG9rZW5zQW1vdW50CQDMCAIJAQxCb29sZWFuRW50cnkCCQCsAgIJAKwCAgkArAICCQClCAEIBQFpBmNhbGxlcgIBXwkApAMBBQtsYXVuY2hwYWRJZAUSa2V5VXNlckNsYWltU3RhdHVzBgUDbmlsBQNuaWwDAwkAZgIFE2FsbG93ZWRUb2tlbnNBbW91bnQAAAYJAGYCBRZyZXR1cm5lZEJ1eUFzc2V0QW1vdW50AAAEDnRyYW5zZmVyVG9rZW5zAwkAZgIFE2FsbG93ZWRUb2tlbnNBbW91bnQAAAkAzAgCCQEMSW50ZWdlckVudHJ5AgkArAICCQCsAgIJAKwCAgkApQgBCAUBaQZjYWxsZXICAV8JAKQDAQULbGF1bmNocGFkSWQFFGtleVVzZXJDbGFpbWVkVG9rZW5zCQBkAgUNY2xhaW1lZFRva2VucwUTYWxsb3dlZFRva2Vuc0Ftb3VudAkAzAgCCQEOU2NyaXB0VHJhbnNmZXIDCAUBaQZjYWxsZXIFE2FsbG93ZWRUb2tlbnNBbW91bnQFB3Rva2VuSWQFA25pbAUDbmlsCQDOCAIFEHRyYW5zZmVyQnV5QXNzZXQFDnRyYW5zZmVyVG9rZW5zCQACAQIQTm90aGluZyB0byBjbGFpbQkAAgECFlVua25vd24gY2xhaW0gZnVuY3Rpb24JAAIBAiRTdHJpY3QgdmFsdWUgaXMgbm90IGVxdWFsIHRvIGl0c2VsZi4BaQEQY2xhaW1GcmVlemVUb2tlbgELbGF1bmNocGFkSWQJAQt2YWx1ZU9yRWxzZQIJAQhpc0FjdGl2ZQAEFWZyZWV6ZUFkZGl0aW9uYWxUb2tlbgkBC3ZhbHVlT3JFbHNlAgkAmwgCBQR0aGlzCQCsAgIJAKQDAQULbGF1bmNocGFkSWQFGGtleUZyZWV6ZUFkZGl0aW9uYWxUb2tlbgcDCQEBIQEJAQlpc0RlZmluZWQBCQCaCAIFBHRoaXMJAKwCAgkApAMBBQtsYXVuY2hwYWRJZAURa2V5RmluYWxpc2VIZWlnaHQJAAIBAjFZb3UgY2FuJ3QgY2xhaW0gYmVjYXVzZSByZXN1bHRzIGFyZSBub3QgZmluYWxpemVkAwkBASEBBRVmcmVlemVBZGRpdGlvbmFsVG9rZW4JAAIBAjlUaGVyZSBhcmUgbm8gYWRkaXRpb25hbCB0b2tlbiBmcmVlemluZyBmb3IgdGhpcyBsYXVuY2hwYWQEB3Rva2VuSWQJANkEAQkBEUBleHRyTmF0aXZlKDEwNTMpAgUEdGhpcwkArAICCQCkAwEFC2xhdW5jaHBhZElkBRBrZXlGcmVlemVUb2tlbklkBBF1c2VyVG9rZW5zRnJlZXplZAkBC3ZhbHVlT3JFbHNlAgkAmggCBQR0aGlzCQCsAgIJAKwCAgkArAICCQClCAEIBQFpBmNhbGxlcgIBXwkApAMBBQtsYXVuY2hwYWRJZAUSa2V5VXNlckZyZWV6ZVRva2VuAAAEC3N0YXJ0SGVpZ2h0CQELdmFsdWVPckVsc2UCCQCaCAIFBHRoaXMJAKwCAgkApAMBBQtsYXVuY2hwYWRJZAUOa2V5U3RhcnRIZWlnaHQAAAQIZHVyYXRpb24JAQt2YWx1ZU9yRWxzZQIJAJoIAgUEdGhpcwkArAICCQCkAwEFC2xhdW5jaHBhZElkBQtrZXlEdXJhdGlvbgAABBNmcmVlemVUb2tlbkR1cmF0aW9uCQERQGV4dHJOYXRpdmUoMTA1MCkCBQR0aGlzCQCsAgIJAKQDAQULbGF1bmNocGFkSWQFFmtleUZyZWV6ZVRva2VuRHVyYXRpb24EDmJsb2NrRW5kSGVpZ2h0CQBkAgkAZAIFC3N0YXJ0SGVpZ2h0BQhkdXJhdGlvbgUTZnJlZXplVG9rZW5EdXJhdGlvbgMJAAACBRF1c2VyVG9rZW5zRnJlZXplZAAACQACAQI4WW91IGFyZSBhbHJlYWR5IGNsYWltZWQgeW91ciB0b2tlbnMgb3Igbm90IHBhaWQgYW55dGhpbmcDCQBmAgUOYmxvY2tFbmRIZWlnaHQFBmhlaWdodAkAAgEJAKwCAgIZWW91ciB0b2tlbnMgZnJlZXplZCB0ZWVsIAkApAMBBQ5ibG9ja0VuZEhlaWdodAkAzAgCCQEOU2NyaXB0VHJhbnNmZXIDCAUBaQZjYWxsZXIFEXVzZXJUb2tlbnNGcmVlemVkBQd0b2tlbklkCQDMCAIJAQxJbnRlZ2VyRW50cnkCCQCsAgIJAKwCAgkArAICCQClCAEIBQFpBmNhbGxlcgIBXwkApAMBBQtsYXVuY2hwYWRJZAUSa2V5VXNlckZyZWV6ZVRva2VuAAAFA25pbAFpARB0cmFuc2ZlckJ1eUFzc2V0AgtsYXVuY2hwYWRJZAZhbW91bnQJAQt2YWx1ZU9yRWxzZQIJAQhpc0FjdGl2ZQAJAQt2YWx1ZU9yRWxzZQIJAQtpc0FkbWluQ2FsbAEFAWkEDnByb2plY3RBZGRyZXNzCQERQGV4dHJOYXRpdmUoMTA2MikBCQERQGV4dHJOYXRpdmUoMTA1MykCBQR0aGlzCQCsAgIJAKQDAQULbGF1bmNocGFkSWQFCmtleUFkZHJlc3MEDSR0MDMyOTc2MzMxMjYJARZnZXRBc3NldEluZm9Gcm9tU3RyaW5nAQkBBXZhbHVlAQkAnQgCBQR0aGlzCQCsAgIJAKQDAQULbGF1bmNocGFkSWQFC2tleUJ1eVRva2VuBApidXlBc3NldElkCAUNJHQwMzI5NzYzMzEyNgJfMQQNYnV5QXNzZXRTdHJJZAgFDSR0MDMyOTc2MzMxMjYCXzIEDGJ1eUFzc2V0TmFtZQgFDSR0MDMyOTc2MzMxMjYCXzMEEGJ1eUFzc2V0RGVjaW1hbHMIBQ0kdDAzMjk3NjMzMTI2Al80BBJ0cmFuc2ZlcmVkQnV5QXNzZXQJAQt2YWx1ZU9yRWxzZQIJAJoIAgUEdGhpcwkArAICCQCkAwEFC2xhdW5jaHBhZElkBRNrZXlUcmFuc2ZlckJ1eUFzc2V0AAAEA2ludgMDCQBmAgUGYW1vdW50AAAJAAACBQpidXlBc3NldElkBQRVU0ROBwkA/AcEBRJzdGFraW5nVVNETkFkZHJlc3MCDnVubG9ja05ldXRyaW5vCQDMCAIFBmFtb3VudAkAzAgCCQDYBAEFBFVTRE4FA25pbAUDbmlsAAADCQAAAgUDaW52BQNpbnYJAMwIAgkBDEludGVnZXJFbnRyeQIJAKwCAgkApAMBBQtsYXVuY2hwYWRJZAUTa2V5VHJhbnNmZXJCdXlBc3NldAkAZAIFEnRyYW5zZmVyZWRCdXlBc3NldAUGYW1vdW50CQDMCAIJAQ5TY3JpcHRUcmFuc2ZlcgMFDnByb2plY3RBZGRyZXNzBQZhbW91bnQFCmJ1eUFzc2V0SWQFA25pbAkAAgECJFN0cmljdCB2YWx1ZSBpcyBub3QgZXF1YWwgdG8gaXRzZWxmLgFpAQhzaHV0ZG93bgAJAQt2YWx1ZU9yRWxzZQIJAQtpc0FkbWluQ2FsbAEFAWkDCQEBIQEFBmFjdGl2ZQkAAgECFURBcHAgYWxyZWFkeSBpbmFjdGl2ZQkAzAgCCQEMQm9vbGVhbkVudHJ5AgUJa2V5QWN0aXZlBwUDbmlsAWkBCGFjdGl2YXRlAAkBC3ZhbHVlT3JFbHNlAgkBC2lzQWRtaW5DYWxsAQUBaQMFBmFjdGl2ZQkAAgECE0RBcHAgYWxyZWFkeSBhY3RpdmUJAMwIAgkBDEJvb2xlYW5FbnRyeQIFCWtleUFjdGl2ZQYFA25pbAECdHgBBnZlcmlmeQAEE211bHRpU2lnbmVkQnlBZG1pbnMEEmFkbWluUHViS2V5MVNpZ25lZAMJAPQDAwgFAnR4CWJvZHlCeXRlcwkAkQMCCAUCdHgGcHJvb2ZzAAAFDGFkbWluUHViS2V5MQABAAAEEmFkbWluUHViS2V5MlNpZ25lZAMJAPQDAwgFAnR4CWJvZHlCeXRlcwkAkQMCCAUCdHgGcHJvb2ZzAAEFDGFkbWluUHViS2V5MgABAAAEEmFkbWluUHViS2V5M1NpZ25lZAMJAPQDAwgFAnR4CWJvZHlCeXRlcwkAkQMCCAUCdHgGcHJvb2ZzAAIFDGFkbWluUHViS2V5MwABAAAJAGcCCQBkAgkAZAIFEmFkbWluUHViS2V5MVNpZ25lZAUSYWRtaW5QdWJLZXkyU2lnbmVkBRJhZG1pblB1YktleTNTaWduZWQAAgQNc2lnbmVkQnlBZG1pbgMDAwkA9AMDCAUCdHgJYm9keUJ5dGVzCQCRAwIIBQJ0eAZwcm9vZnMAAAUMYWRtaW5QdWJLZXkxBgkA9AMDCAUCdHgJYm9keUJ5dGVzCQCRAwIIBQJ0eAZwcm9vZnMAAAUMYWRtaW5QdWJLZXkyBgkA9AMDCAUCdHgJYm9keUJ5dGVzCQCRAwIIBQJ0eAZwcm9vZnMAAAUMYWRtaW5QdWJLZXkzBgkA9AMDCAUCdHgJYm9keUJ5dGVzCQCRAwIIBQJ0eAZwcm9vZnMAAAUSYWRtaW5QdWJLZXlTdGFraW5nBAckbWF0Y2gwBQJ0eAMJAAECBQckbWF0Y2gwAg9EYXRhVHJhbnNhY3Rpb24EA2R0eAUHJG1hdGNoMAMJAQt2YWx1ZU9yRWxzZQIJAJsIAgUGb3JhY2xlBSFrZXlMYXVuY2hwYWREYXRhVHJhbnNhY3Rpb25TdGF0dXMHBQ1zaWduZWRCeUFkbWluBwUTbXVsdGlTaWduZWRCeUFkbWluc0Ught8=", "height": 3397833, "applicationStatus": "succeeded", "spentComplexity": 0 } View: original | compacted Prev: 5viUKyPzTSCPq7zgaEdT6xApWdBxhpBEhdXSYRz8UtkV Next: 9fGTo7f2ptP9h1GBhiaZStmkBykKAQxwmpbmtiFDZpRU Diff:
OldNewDifferences
1-{-# STDLIB_VERSION 5 #-}
1+{-# STDLIB_VERSION 6 #-}
22 {-# SCRIPT_TYPE ACCOUNT #-}
33 {-# CONTENT_TYPE DAPP #-}
44 let a = "active"
55
6-let b = "admin_pub_1"
6+let b = "active_all_contracts"
77
8-let c = "admin_pub_2"
8+let c = "admin_pub_1"
99
10-let d = "admin_pub_3"
10+let d = "admin_pub_2"
1111
12-let e = "launchpad_data_transaction_status"
12+let e = "admin_pub_3"
1313
14-let f = "launchpad_next_id"
14+let f = "launchpad_data_transaction_status"
1515
16-let g = "launchpad_active_id"
16+let g = "launchpad_next_id"
1717
18-let h = "init_caller"
18+let h = "launchpad_active_id"
1919
20-let i = "_address"
20+let i = "init_caller"
2121
22-let j = "_init_height"
22+let j = "_address"
2323
24-let k = "_start_height"
24+let k = "_init_height"
2525
26-let l = "_finalise_height"
26+let l = "_start_height"
2727
28-let m = "_comission"
28+let m = "_finalise_height"
2929
30-let n = "_asset_id"
30+let n = "_comission"
3131
32-let o = "_total_token_amount"
32+let o = "_asset_id"
3333
34-let p = "_total_buy_asset_sold"
34+let p = "_total_token_amount"
3535
36-let q = "_tokens_per_ticket"
36+let q = "_total_buy_asset_sold"
3737
38-let r = "_price_per_token"
38+let r = "_tokens_per_ticket"
3939
40-let s = "_swop_per_ticket"
40+let s = "_price_per_token"
4141
42-let t = "_tickets_swopfi_members"
42+let t = "_swop_per_ticket"
4343
44-let u = "_tokens_access_list"
44+let u = "_tickets_swopfi_members"
4545
46-let v = "_tokens_per_allocation"
46+let v = "_tokens_access_list"
4747
48-let w = "_ticket_last_number"
48+let w = "_tokens_per_allocation"
4949
50-let x = "_SWOP_amount"
50+let x = "_ticket_last_number"
5151
52-let y = "_ref_id"
52+let y = "_GSwop_amount"
5353
54-let z = "_verify_hash"
54+let z = "_ref_id"
5555
56-let A = "_duration"
56+let A = "_verify_hash"
5757
58-let B = "_total_purchased_buy_asset_in_marketing"
58+let B = "_duration"
5959
60-let C = "_total_purchased_buy_asset_in_marketing_finalized"
60+let C = "_total_purchased_buy_asset_in_marketing"
6161
62-let D = "_transfer_buy_asset"
62+let D = "_total_purchased_buy_asset_in_marketing_finalized"
6363
64-let E = "_freeze_swop_duration"
64+let E = "_transfer_buy_asset"
6565
66-let F = "_freeze_additional_token"
66+let F = "_freeze_swop_duration"
6767
68-let G = "_freeze_token_id"
68+let G = "_freeze_additional_token"
6969
70-let H = "_freeze_token_duration"
70+let H = "_freeze_token_id"
7171
72-let I = "_freeze_token_per_ticket"
72+let I = "_freeze_token_duration"
7373
74-let J = "_buy_token"
74+let J = "_freeze_token_per_ticket"
7575
76-let K = "_claim_params"
76+let K = "_buy_token"
7777
78-let L = "_high_competition_comission"
78+let L = "_claim_params"
7979
80-let M = "_high_competition_sale"
80+let M = "_high_competition_comission"
8181
82-let N = "_high_competition_ticket_last_number"
82+let N = "_high_competition_sale"
8383
84-let O = "_tickets_high_competition"
84+let O = "_high_competition_ticket_last_number"
8585
86-let P = "_total_buy_asset_sold_high_competition"
86+let P = "_tickets_high_competition"
8787
88-let Q = "_claimed_tokens"
88+let Q = "_total_buy_asset_sold_high_competition"
8989
90-let R = "_claimed_buy_tokens"
90+let R = "_claimed_tokens"
9191
92-let S = "_bought_tickets"
92+let S = "_claimed_buy_tokens"
9393
94-let T = "_tickets_number"
94+let T = "_bought_tickets"
9595
96-let U = "_tickets_number_high_competition"
96+let U = "_tickets_number"
9797
98-let V = "_bought_tickets_high_competition"
98+let V = "_tickets_number_high_competition"
9999
100-let W = "_available_purchase_marketing"
100+let W = "_bought_tickets_high_competition"
101101
102-let X = "_purchased_buy_asset_in_marketing"
102+let X = "_available_purchase_marketing"
103103
104-let Y = "_bought_allocations"
104+let Y = "_purchased_buy_asset_in_marketing"
105105
106-let Z = "_claim_status"
106+let Z = "_bought_allocations"
107107
108-let aa = "_tickets_result"
108+let aa = "_claim_status"
109109
110-let ab = "_tickets_result_high_competition"
110+let ab = "_tickets_result"
111111
112-let ac = "_freeze_token_amount"
112+let ac = "_tickets_result_high_competition"
113113
114-let ad = Address(base58'3PEbqViERCoKnmcSULh6n2aiMvUdSQdCsom')
114+let ad = "_freeze_token_amount"
115115
116-let ae = Address(base58'3PLHVWCqA9DJPDbadUofTohnCULLauiDWhS')
116+let ae = Address(base58'3PEbqViERCoKnmcSULh6n2aiMvUdSQdCsom')
117117
118-let af = Address(base58'3PGYafJ2GuqPckmZNywet8moiPnBHz51Xdg')
118+let af = Address(base58'3PLHVWCqA9DJPDbadUofTohnCULLauiDWhS')
119119
120-let ag = Address(base58'3PNikM6yp4NqcSU8guxQtmR5onr2D4e8yTJ')
120+let ag = Address(base58'3PGYafJ2GuqPckmZNywet8moiPnBHz51Xdg')
121121
122-let ah = base58'DG2xFkPdDwKUoBkzGAhQtLpSGzfXLiCYPEzeKH2Ad24p'
122+let ah = Address(base58'3PNikM6yp4NqcSU8guxQtmR5onr2D4e8yTJ')
123123
124-let ai = base58'Czn4yoAuUZCVCLJDRfskn8URfkwpknwBTZDbs1wFrY7h'
124+let ai = base58'DG2xFkPdDwKUoBkzGAhQtLpSGzfXLiCYPEzeKH2Ad24p'
125125
126-let aj = 2
126+let aj = base58'Czn4yoAuUZCVCLJDRfskn8URfkwpknwBTZDbs1wFrY7h'
127127
128-let ak = valueOrElse(getIntegerValue(this, g), -1)
128+let ak = 2
129129
130-func al (am) = {
131- let an = getString(ad, am)
132- if ($isInstanceOf(an, "String"))
130+let al = valueOrElse(getIntegerValue(this, h), -1)
131+
132+func am (an) = {
133+ let ao = getString(ae, an)
134+ if ($isInstanceOf(ao, "String"))
133135 then {
134- let ao = an
135- fromBase58String(ao)
136+ let ap = ao
137+ fromBase58String(ap)
136138 }
137139 else {
138- let ap = an
140+ let aq = ao
139141 throw("Admin public key is empty")
140142 }
141143 }
142144
143145
144-let aq = al(b)
146+let ar = am(c)
145147
146-let ar = al(c)
148+let as = am(d)
147149
148-let as = al(d)
150+let at = am(e)
149151
150-func at (au) = {
151- let an = au
152- if ($isInstanceOf(an, "ByteVector"))
152+func au (av) = {
153+ let ao = av
154+ if ($isInstanceOf(ao, "ByteVector"))
153155 then {
154- let av = an
155- let aw = toBase58String(av)
156- let ax = valueOrErrorMessage(assetInfo(av), (("Asset " + aw) + " doesn't exist"))
157- $Tuple3(aw, ax.name, ax.decimals)
156+ let aw = ao
157+ let ax = toBase58String(aw)
158+ let ay = valueOrErrorMessage(assetInfo(aw), (("Asset " + ax) + " doesn't exist"))
159+ $Tuple3(ax, ay.name, ay.decimals)
158160 }
159- else if ($isInstanceOf(an, "Unit"))
161+ else if ($isInstanceOf(ao, "Unit"))
160162 then {
161- let ay = an
163+ let az = ao
162164 $Tuple3("WAVES", "WAVES", 8)
163165 }
164166 else throw("Match error")
165167 }
166168
167169
168-func az () = valueOrElse(getInteger(this, f), 1)
170+func aA () = valueOrElse(getInteger(this, g), 1)
169171
170172
171-let aA = valueOrElse(getBoolean(this, a), true)
173+func aB () = valueOrElse(getInteger(ah, ((("rpd_balance_" + toBase58String(ai)) + "_") + toString(this))), 0)
172174
173-func aB () = if (aA)
175+
176+let aC = valueOrElse(getBoolean(this, a), true)
177+
178+let aD = valueOrElse(getBoolean(ae, b), true)
179+
180+func aE () = if (if (aC)
181+ then aD
182+ else false)
174183 then unit
175184 else throw("DApp is inactive at this moment")
176185
177186
178-func aC (aD) = if (containsElement([aq, ar, as], aD.callerPublicKey))
187+func aF (aG) = if (containsElement([ar, as, at], aG.callerPublicKey))
179188 then unit
180189 else throw("Only admin can call this function")
181190
182191
183-func aE (aF) = if ((aF == "WAVES"))
192+func aH (aI) = if ((aI == "WAVES"))
184193 then $Tuple4(unit, "WAVES", "WAVES", 8)
185194 else {
186- let aw = aF
187- let av = fromBase58String(aF)
188- let ax = valueOrErrorMessage(assetInfo(av), (("Asset " + aw) + " doesn't exist"))
189- $Tuple4(av, aw, ax.name, ax.decimals)
195+ let ax = aI
196+ let aw = fromBase58String(aI)
197+ let ay = valueOrErrorMessage(assetInfo(aw), (("Asset " + ax) + " doesn't exist"))
198+ $Tuple4(aw, ax, ay.name, ay.decimals)
190199 }
191200
192201
193-@Callable(aD)
194-func hashingRandom (aG,aH) = valueOrElse(aB(), valueOrElse(aC(aD), [StringEntry((toString(aG) + z), aH)]))
202+@Callable(aG)
203+func hashingRandom (aJ,aK) = valueOrElse(aE(), valueOrElse(aF(aG), [StringEntry((toString(aJ) + A), aK)]))
195204
196205
197206
198-@Callable(aD)
199-func initCaller (aI) = valueOrElse(aB(), valueOrElse(aC(aD), [StringEntry(h, aI)]))
207+@Callable(aG)
208+func initCaller (aL) = valueOrElse(aE(), valueOrElse(aF(aG), [StringEntry(i, aL)]))
200209
201210
202211
203-@Callable(aD)
204-func init (aJ,aK,aL,aM,aN,aO,aP,aQ,aR,aS,aT,aU,aV,aW,aX,aY,aZ,ba) = valueOrElse(aB(), if ((toString(aD.caller) != valueOrElse(getString(this, h), "")))
212+@Callable(aG)
213+func init (aM,aN,aO,aP,aQ,aR,aS,aT,aU,aV,aW,aX,aY,aZ,ba,bb,bc,bd) = valueOrElse(aE(), if ((toString(aG.caller) != valueOrElse(getString(this, i), "")))
205214 then throw("Only project admin can call init function")
206- else if ((size(aD.payments) != 1))
215+ else if ((size(aG.payments) != 1))
207216 then throw("One attached payment expected")
208- else if ((height > aK))
217+ else if ((height > aN))
209218 then throw("Start height must be greater than blockchain height")
210- else if (if (aZ)
211- then (size(ba) != 3)
219+ else if (if (bc)
220+ then (size(bd) != 3)
212221 else false)
213222 then throw("Freeze params list must have 3 items")
214223 else {
215- let aG = az()
216- let bb = toString(aG)
217- let bc = $Tuple2(aD.payments[0].amount, aD.payments[0].assetId)
218- let bd = bc._1
219- let be = bc._2
220- let bf = at(be)
224+ let aJ = aA()
225+ let be = toString(aJ)
226+ let bf = $Tuple2(aG.payments[0].amount, aG.payments[0].assetId)
221227 let bg = bf._1
222228 let bh = bf._2
223- let bi = bf._3
224- let bj = if (aZ)
225- then [BooleanEntry((bb + F), true), StringEntry((bb + G), ba[0]), IntegerEntry((bb + H), parseIntValue(ba[1])), IntegerEntry((bb + I), parseIntValue(ba[2]))]
229+ let bi = au(bh)
230+ let bj = bi._1
231+ let bk = bi._2
232+ let bl = bi._3
233+ let bm = if (bc)
234+ then [BooleanEntry((be + G), true), StringEntry((be + H), bd[0]), IntegerEntry((be + I), parseIntValue(bd[1])), IntegerEntry((be + J), parseIntValue(bd[2]))]
226235 else nil
227- ([IntegerEntry((bg + "_launchpad"), aG), IntegerEntry(f, (aG + 1)), StringEntry((bb + i), aJ), IntegerEntry((bb + j), height), IntegerEntry((bb + k), aK), IntegerEntry((bb + A), aL), StringEntry((bb + J), aM), IntegerEntry((bb + E), aU), IntegerEntry((bb + o), bd), StringEntry((bb + n), bg), IntegerEntry((bb + m), aN), IntegerEntry((bb + w), 0), IntegerEntry((bb + N), 0), IntegerEntry((bb + q), aO), IntegerEntry((bb + r), aP), IntegerEntry((bb + s), aT), IntegerEntry((bb + t), aQ), IntegerEntry((bb + u), aR), IntegerEntry((bb + v), aS), StringEntry((bb + K), makeString(aV, ",")), BooleanEntry((bb + M), aW), IntegerEntry((bb + L), aX), IntegerEntry((bb + O), aY), IntegerEntry(g, aG), StringEntry(h, "")] ++ bj)
236+ ([IntegerEntry((bj + "_launchpad"), aJ), IntegerEntry(g, (aJ + 1)), StringEntry((be + j), aM), IntegerEntry((be + k), height), IntegerEntry((be + l), aN), IntegerEntry((be + B), aO), StringEntry((be + K), aP), IntegerEntry((be + F), aX), IntegerEntry((be + p), bg), StringEntry((be + o), bj), IntegerEntry((be + n), aQ), IntegerEntry((be + x), 0), IntegerEntry((be + O), 0), IntegerEntry((be + r), aR), IntegerEntry((be + s), aS), IntegerEntry((be + t), aW), IntegerEntry((be + u), aT), IntegerEntry((be + v), aU), IntegerEntry((be + w), aV), StringEntry((be + L), makeString(aY, ",")), BooleanEntry((be + N), aZ), IntegerEntry((be + M), ba), IntegerEntry((be + P), bb), IntegerEntry(h, aJ), StringEntry(i, "")] ++ bm)
228237 })
229238
230239
231240
232-@Callable(aD)
233-func commitSwopfiSale (aG,bk) = valueOrElse(aB(), {
234- let bl = $Tuple2(aD.payments[0].amount, aD.payments[0].assetId)
235- let bd = bl._1
236- let be = bl._2
237- let bm = aE(value(getString(this, (toString(aG) + J))))
238- let bn = bm._1
239- let bo = bm._2
240- let bp = bm._3
241- let bq = bm._4
242- let br = valueOrElse(getInteger(ae, (toString(aD.caller) + x)), 0)
243- let bs = (br / getIntegerValue(this, (toString(aG) + s)))
244- let bt = valueOrElse(getInteger(this, (((toString(aD.caller) + "_") + toString(aG)) + S)), 0)
245- let bu = (bs - bt)
246- let aK = value(getInteger(this, (toString(aG) + k)))
247- let aL = value(getInteger(this, (toString(aG) + A)))
248- let aZ = valueOrElse(getBoolean(this, (toString(aG) + F)), false)
249- if ((ak != aG))
241+@Callable(aG)
242+func commitSwopfiSale (aJ,bn) = valueOrElse(aE(), {
243+ let bo = $Tuple2(aG.payments[0].amount, aG.payments[0].assetId)
244+ let bg = bo._1
245+ let bh = bo._2
246+ let bp = aH(value(getString(this, (toString(aJ) + K))))
247+ let bq = bp._1
248+ let br = bp._2
249+ let bs = bp._3
250+ let bt = bp._4
251+ let bu = valueOrElse(getInteger(af, (toString(aG.caller) + y)), 0)
252+ let bv = (bu / getIntegerValue(this, (toString(aJ) + t)))
253+ let bw = valueOrElse(getInteger(this, (((toString(aG.caller) + "_") + toString(aJ)) + T)), 0)
254+ let bx = (bv - bw)
255+ let aN = value(getInteger(this, (toString(aJ) + l)))
256+ let aO = value(getInteger(this, (toString(aJ) + B)))
257+ let bc = valueOrElse(getBoolean(this, (toString(aJ) + G)), false)
258+ if ((al != aJ))
250259 then throw("There is no active launchpad or this launchpad is ended")
251- else if ((aK > height))
260+ else if ((aN > height))
252261 then throw("Launchpad sale not started yet")
253- else if ((height > (aK + aL)))
262+ else if ((height > (aN + aO)))
254263 then throw("Launchpad sale ended")
255- else if (if (!(aZ))
256- then if ((size(aD.payments) != 1))
264+ else if (if (!(bc))
265+ then if ((size(aG.payments) != 1))
257266 then true
258- else (be != bn)
267+ else (bh != bq)
259268 else false)
260- then throw((("One attached payment in " + bp) + " expected"))
261- else if (if (aZ)
262- then if ((size(aD.payments) != 2))
269+ then throw((("One attached payment in " + bs) + " expected"))
270+ else if (if (bc)
271+ then if ((size(aG.payments) != 2))
263272 then true
264- else (be != bn)
273+ else (bh != bq)
265274 else false)
266275 then {
267- let bv = getStringValue(this, (toString(aG) + G))
268- throw(((("Two attached payments expected: First in " + bp) + ", second in ") + bv))
276+ let by = getStringValue(this, (toString(aJ) + H))
277+ throw(((("Two attached payments expected: First in " + bs) + ", second in ") + by))
269278 }
270- else if (if ((0 >= bs))
279+ else if (if ((0 >= bv))
271280 then true
272- else (0 >= bu))
281+ else (0 >= bx))
273282 then throw("Not enought SWOP in staking to buy tickets")
274283 else {
275- let bw = getIntegerValue(this, (toString(aG) + r))
276- let aO = getIntegerValue(this, (toString(aG) + q))
277- let bx = aE(getStringValue(this, (toString(aG) + n)))
278- let by = bx._1
279- let bz = bx._2
280- let bA = bx._3
281- let bB = bx._4
282- let bC = fraction(aO, bw, pow(10, 0, bB, 0, 0, DOWN))
283- let bD = fraction(bC, getIntegerValue(this, (toString(aG) + m)), 100)
284- let bE = (bd / (bC + bD))
285- let bF = min([bE, bu])
286- let bG = (bF * (bC + bD))
287- let bH = (bd - bG)
288- if ((bE == 0))
289- then throw((("Not enought " + bp) + " to buy tickets"))
290- else if ((bH != 0))
291- then throw((((("Wrong payment. To buy " + toString(bF)) + "tickets you need to pay ") + toString(bG)) + bp))
284+ let bz = getIntegerValue(this, (toString(aJ) + s))
285+ let aR = getIntegerValue(this, (toString(aJ) + r))
286+ let bA = aH(getStringValue(this, (toString(aJ) + o)))
287+ let bB = bA._1
288+ let bC = bA._2
289+ let bD = bA._3
290+ let bE = bA._4
291+ let bF = fraction(aR, bz, pow(10, 0, bE, 0, 0, DOWN))
292+ let bG = fraction(bF, getIntegerValue(this, (toString(aJ) + n)), 100)
293+ let bH = (bg / (bF + bG))
294+ let bI = min([bH, bx])
295+ let bJ = (bI * (bF + bG))
296+ let bK = (bg - bJ)
297+ if ((bH == 0))
298+ then throw((("Not enought " + bs) + " to buy tickets"))
299+ else if ((bK != 0))
300+ then throw((((("Wrong payment. To buy " + toString(bI)) + "tickets you need to pay ") + toString(bJ)) + bs))
292301 else {
293- let bj = if (aZ)
302+ let bm = if (bc)
294303 then {
295- let bv = getStringValue(this, (toString(aG) + G))
296- let bI = getIntegerValue(this, (toString(aG) + I))
297- let bJ = $Tuple2(aD.payments[1].amount, aD.payments[1].assetId)
298- let bK = bJ._1
299- let bL = bJ._2
300- let bM = at(be)
304+ let by = getStringValue(this, (toString(aJ) + H))
305+ let bL = getIntegerValue(this, (toString(aJ) + J))
306+ let bM = $Tuple2(aG.payments[1].amount, aG.payments[1].assetId)
301307 let bN = bM._1
302308 let bO = bM._2
303- let bP = bM._3
304- let bQ = (bI * bE)
305- if (if ((bN != bv))
309+ let bP = au(bh)
310+ let bQ = bP._1
311+ let bR = bP._2
312+ let bS = bP._3
313+ let bT = (bL * bH)
314+ if (if ((bQ != by))
306315 then true
307- else (bQ != bK))
308- then throw((((("You need to add " + toString(bQ)) + " ") + bO) + " as a second payment"))
309- else [IntegerEntry((((toString(aD.caller) + "_") + toString(aG)) + ac), bK)]
316+ else (bT != bN))
317+ then throw((((("You need to add " + toString(bT)) + " ") + bR) + " as a second payment"))
318+ else [IntegerEntry((((toString(aG.caller) + "_") + toString(aJ)) + ad), bN)]
310319 }
311320 else nil
312- let bR = valueOrElse(getString(this, (((toString(aD.caller) + "_") + toString(aG)) + T)), "")
313- let bS = getIntegerValue(this, (toString(aG) + w))
314- let bT = ((toString((bS + 1)) + "-") + toString((bS + bF)))
315- let bU = (bR + (if ((bR != ""))
316- then ("," + bT)
317- else ("" + bT)))
318- let bV = if ((bn == ah))
319- then invoke(ag, "lockNeutrino", nil, [AttachedPayment(be, bd)])
321+ let bU = valueOrElse(getString(this, (((toString(aG.caller) + "_") + toString(aJ)) + U)), "")
322+ let bV = getIntegerValue(this, (toString(aJ) + x))
323+ let bW = ((toString((bV + 1)) + "-") + toString((bV + bI)))
324+ let bX = (bU + (if ((bU != ""))
325+ then ("," + bW)
326+ else ("" + bW)))
327+ let bY = if ((bq == ai))
328+ then invoke(ah, "lockNeutrino", nil, [AttachedPayment(bh, bg)])
320329 else 0
321- if ((bV == bV))
330+ if ((bY == bY))
322331 then {
323- let bW = ([IntegerEntry((((toString(aD.caller) + "_") + toString(aG)) + S), (bt + bF)), IntegerEntry((toString(aG) + w), (bS + bF)), StringEntry((((toString(aD.caller) + "_") + toString(aG)) + T), bU)] ++ bj)
324- if (!(isDefined(getString(this, (((toString(aD.caller) + "_") + toString(aG)) + y)))))
325- then (bW ++ [StringEntry((((toString(aD.caller) + "_") + toString(aG)) + y), bk)])
326- else bW
332+ let bZ = ([IntegerEntry((((toString(aG.caller) + "_") + toString(aJ)) + T), (bw + bI)), IntegerEntry((toString(aJ) + x), (bV + bI)), StringEntry((((toString(aG.caller) + "_") + toString(aJ)) + U), bX)] ++ bm)
333+ if (!(isDefined(getString(this, (((toString(aG.caller) + "_") + toString(aJ)) + z)))))
334+ then (bZ ++ [StringEntry((((toString(aG.caller) + "_") + toString(aJ)) + z), bn)])
335+ else bZ
327336 }
328337 else throw("Strict value is not equal to itself.")
329338 }
332341
333342
334343
335-@Callable(aD)
336-func commitAccessListSale (aG,bk) = valueOrElse(aB(), {
337- let bX = $Tuple2(aD.payments[0].amount, aD.payments[0].assetId)
338- let bd = bX._1
339- let be = bX._2
340- let bY = aE(value(getString(this, (toString(aG) + J))))
341- let bn = bY._1
342- let bo = bY._2
343- let bp = bY._3
344- let bq = bY._4
345- let bZ = valueOrElse(getInteger(this, (((toString(aD.caller) + "_") + toString(aG)) + X)), 0)
346- let ca = valueOrElse(getInteger(this, (toString(aG) + B)), 0)
347- let cb = valueOrElse(getInteger(this, (((toString(aD.caller) + "_") + toString(aG)) + Y)), 0)
348- let aN = getIntegerValue(this, (toString(aG) + m))
349- let bw = getIntegerValue(this, (toString(aG) + r))
350- let aS = getIntegerValue(this, (toString(aG) + v))
351- let cc = aE(getStringValue(this, (toString(aG) + n)))
352- let by = cc._1
353- let bz = cc._2
354- let bA = cc._3
355- let bB = cc._4
356- let cd = fraction(fraction(bw, aS, pow(10, 0, bB, 0, 0, DOWN)), (100 + aN), 100)
357- let aK = value(getInteger(this, (toString(aG) + k)))
358- let aL = value(getInteger(this, (toString(aG) + A)))
359- if ((ak != aG))
344+@Callable(aG)
345+func commitAccessListSale (aJ,bn) = valueOrElse(aE(), {
346+ let ca = $Tuple2(aG.payments[0].amount, aG.payments[0].assetId)
347+ let bg = ca._1
348+ let bh = ca._2
349+ let cb = aH(value(getString(this, (toString(aJ) + K))))
350+ let bq = cb._1
351+ let br = cb._2
352+ let bs = cb._3
353+ let bt = cb._4
354+ let cc = valueOrElse(getInteger(this, (((toString(aG.caller) + "_") + toString(aJ)) + Y)), 0)
355+ let cd = valueOrElse(getInteger(this, (toString(aJ) + C)), 0)
356+ let ce = valueOrElse(getInteger(this, (((toString(aG.caller) + "_") + toString(aJ)) + Z)), 0)
357+ let aQ = getIntegerValue(this, (toString(aJ) + n))
358+ let bz = getIntegerValue(this, (toString(aJ) + s))
359+ let aV = getIntegerValue(this, (toString(aJ) + w))
360+ let cf = aH(getStringValue(this, (toString(aJ) + o)))
361+ let bB = cf._1
362+ let bC = cf._2
363+ let bD = cf._3
364+ let bE = cf._4
365+ let cg = fraction(fraction(bz, aV, pow(10, 0, bE, 0, 0, DOWN)), (100 + aQ), 100)
366+ let aN = value(getInteger(this, (toString(aJ) + l)))
367+ let aO = value(getInteger(this, (toString(aJ) + B)))
368+ if ((al != aJ))
360369 then throw("There is no active launchpad or this launchpad is ended")
361- else if ((aK > height))
370+ else if ((aN > height))
362371 then throw("Launchpad sale not started yet")
363- else if ((height > (aK + aL)))
372+ else if ((height > (aN + aO)))
364373 then throw("Launchpad sale ended")
365- else if (if ((size(aD.payments) != 1))
374+ else if (if ((size(aG.payments) != 1))
366375 then true
367- else (be != bn))
368- then throw((("One attached payment in " + bp) + " expected"))
369- else if ((cb >= aj))
370- then throw((("You can buy only " + toString(aj)) + "allocations"))
371- else if (if ((cd != bd))
372- then ((cd * 2) != bd)
376+ else (bh != bq))
377+ then throw((("One attached payment in " + bs) + " expected"))
378+ else if ((ce >= ak))
379+ then throw((("You can buy only " + toString(ak)) + "allocations"))
380+ else if (if ((cg != bg))
381+ then ((cg * 2) != bg)
373382 else false)
374- then throw(((("Wrong payment. You can buy 1 or 2 allocations for " + toString(cd)) + bp) + " per allocation"))
383+ then throw(((("Wrong payment. You can buy 1 or 2 allocations for " + toString(cg)) + bs) + " per allocation"))
375384 else {
376- let ce = (bd / cd)
377- let bV = if ((bn == ah))
378- then invoke(ag, "lockNeutrino", nil, [AttachedPayment(be, bd)])
385+ let ch = (bg / cg)
386+ let bY = if ((bq == ai))
387+ then invoke(ah, "lockNeutrino", nil, [AttachedPayment(bh, bg)])
379388 else 0
380- if ((bV == bV))
389+ if ((bY == bY))
381390 then {
382- let bW = [IntegerEntry((((toString(aD.caller) + "_") + toString(aG)) + Y), (cb + ce)), IntegerEntry((((toString(aD.caller) + "_") + toString(aG)) + X), (bZ + bd)), IntegerEntry((toString(aG) + B), (ca + bd))]
383- if (!(isDefined(getString(this, (((toString(aD.caller) + "_") + toString(aG)) + y)))))
384- then (bW ++ [StringEntry((((toString(aD.caller) + "_") + toString(aG)) + y), bk)])
385- else bW
391+ let bZ = [IntegerEntry((((toString(aG.caller) + "_") + toString(aJ)) + Z), (ce + ch)), IntegerEntry((((toString(aG.caller) + "_") + toString(aJ)) + Y), (cc + bg)), IntegerEntry((toString(aJ) + C), (cd + bg))]
392+ if (!(isDefined(getString(this, (((toString(aG.caller) + "_") + toString(aJ)) + z)))))
393+ then (bZ ++ [StringEntry((((toString(aG.caller) + "_") + toString(aJ)) + z), bn)])
394+ else bZ
386395 }
387396 else throw("Strict value is not equal to itself.")
388397 }
390399
391400
392401
393-@Callable(aD)
394-func commitHighCompetitionSale (aG,bk) = valueOrElse(aB(), {
395- let cf = $Tuple2(aD.payments[0].amount, aD.payments[0].assetId)
396- let bd = cf._1
397- let be = cf._2
398- let cg = aE(value(getString(this, (toString(aG) + J))))
399- let bn = cg._1
400- let bo = cg._2
401- let bp = cg._3
402- let bq = cg._4
403- let aK = value(getInteger(this, (toString(aG) + k)))
404- let aL = value(getInteger(this, (toString(aG) + A)))
405- let ch = valueOrElse(getInteger(this, (((toString(aD.caller) + "_") + toString(aG)) + V)), 0)
406- let ci = valueOrElse(getBoolean(this, (toString(aG) + M)), false)
407- if ((ak != aG))
402+@Callable(aG)
403+func commitHighCompetitionSale (aJ,bn) = valueOrElse(aE(), {
404+ let ci = $Tuple2(aG.payments[0].amount, aG.payments[0].assetId)
405+ let bg = ci._1
406+ let bh = ci._2
407+ let cj = aH(value(getString(this, (toString(aJ) + K))))
408+ let bq = cj._1
409+ let br = cj._2
410+ let bs = cj._3
411+ let bt = cj._4
412+ let aN = value(getInteger(this, (toString(aJ) + l)))
413+ let aO = value(getInteger(this, (toString(aJ) + B)))
414+ let ck = valueOrElse(getInteger(this, (((toString(aG.caller) + "_") + toString(aJ)) + W)), 0)
415+ let cl = valueOrElse(getBoolean(this, (toString(aJ) + N)), false)
416+ if ((al != aJ))
408417 then throw("There is no active launchpad or this launchpad is ended")
409- else if (!(ci))
418+ else if (!(cl))
410419 then throw("There is no high competition sale for this launchpad")
411- else if ((aK > height))
420+ else if ((aN > height))
412421 then throw("Launchpad sale not started yet")
413- else if ((height > (aK + aL)))
422+ else if ((height > (aN + aO)))
414423 then throw("Launchpad sale ended")
415- else if (if ((size(aD.payments) != 1))
424+ else if (if ((size(aG.payments) != 1))
416425 then true
417- else (be != bn))
418- then throw((("One attached payment in " + bp) + " expected"))
426+ else (bh != bq))
427+ then throw((("One attached payment in " + bs) + " expected"))
419428 else {
420- let bw = getIntegerValue(this, (toString(aG) + r))
421- let aO = getIntegerValue(this, (toString(aG) + q))
422- let cj = aE(getStringValue(this, (toString(aG) + n)))
423- let by = cj._1
424- let bz = cj._2
425- let bA = cj._3
426- let bB = cj._4
427- let bC = fraction(aO, bw, pow(10, 0, bB, 0, 0, DOWN))
428- let bD = fraction(bC, getIntegerValue(this, (toString(aG) + L)), 100)
429- let bE = (bd / (bC + bD))
430- let ck = (bE * (bC + bD))
431- let bH = (bd - ck)
432- if ((bE == 0))
433- then throw((("Not enought " + bp) + " to buy tickets"))
434- else if ((bH != 0))
435- then throw((((("Wrong payment. To buy " + toString(bE)) + "tickets you need to pay ") + toString(ck)) + bp))
429+ let bz = getIntegerValue(this, (toString(aJ) + s))
430+ let aR = getIntegerValue(this, (toString(aJ) + r))
431+ let cm = aH(getStringValue(this, (toString(aJ) + o)))
432+ let bB = cm._1
433+ let bC = cm._2
434+ let bD = cm._3
435+ let bE = cm._4
436+ let bF = fraction(aR, bz, pow(10, 0, bE, 0, 0, DOWN))
437+ let bG = fraction(bF, getIntegerValue(this, (toString(aJ) + M)), 100)
438+ let bH = (bg / (bF + bG))
439+ let cn = (bH * (bF + bG))
440+ let bK = (bg - cn)
441+ if ((bH == 0))
442+ then throw((("Not enought " + bs) + " to buy tickets"))
443+ else if ((bK != 0))
444+ then throw((((("Wrong payment. To buy " + toString(bH)) + "tickets you need to pay ") + toString(cn)) + bs))
436445 else {
437- let bR = valueOrElse(getString(this, (((toString(aD.caller) + "_") + toString(aG)) + U)), "")
438- let bS = getIntegerValue(this, (toString(aG) + N))
439- let bT = ((toString((bS + 1)) + "-") + toString((bS + bE)))
440- let bU = (bR + (if ((bR != ""))
441- then ("," + bT)
442- else ("" + bT)))
443- let bV = if ((bn == ah))
444- then invoke(ag, "lockNeutrino", nil, [AttachedPayment(be, bd)])
446+ let bU = valueOrElse(getString(this, (((toString(aG.caller) + "_") + toString(aJ)) + V)), "")
447+ let bV = getIntegerValue(this, (toString(aJ) + O))
448+ let bW = ((toString((bV + 1)) + "-") + toString((bV + bH)))
449+ let bX = (bU + (if ((bU != ""))
450+ then ("," + bW)
451+ else ("" + bW)))
452+ let bY = if ((bq == ai))
453+ then invoke(ah, "lockNeutrino", nil, [AttachedPayment(bh, bg)])
445454 else 0
446- if ((bV == bV))
455+ if ((bY == bY))
447456 then {
448- let bW = [IntegerEntry((((toString(aD.caller) + "_") + toString(aG)) + V), (ch + bE)), IntegerEntry((toString(aG) + N), (bS + bE)), StringEntry((((toString(aD.caller) + "_") + toString(aG)) + U), bU)]
449- if (!(isDefined(getString(this, (((toString(aD.caller) + "_") + toString(aG)) + y)))))
450- then (bW ++ [StringEntry((((toString(aD.caller) + "_") + toString(aG)) + y), bk)])
451- else bW
457+ let bZ = [IntegerEntry((((toString(aG.caller) + "_") + toString(aJ)) + W), (ck + bH)), IntegerEntry((toString(aJ) + O), (bV + bH)), StringEntry((((toString(aG.caller) + "_") + toString(aJ)) + V), bX)]
458+ if (!(isDefined(getString(this, (((toString(aG.caller) + "_") + toString(aJ)) + z)))))
459+ then (bZ ++ [StringEntry((((toString(aG.caller) + "_") + toString(aJ)) + z), bn)])
460+ else bZ
452461 }
453462 else throw("Strict value is not equal to itself.")
454463 }
457466
458467
459468
460-@Callable(aD)
461-func finalise (aG,cl,cm) = valueOrElse(aB(), valueOrElse(aC(aD), {
462- let cn = getStringValue(this, (toString(aG) + z))
463- let co = toBase58String(sha256((toBytes(cl) + toBytes(cm))))
464- if ((co != cn))
469+@Callable(aG)
470+func finalise (aJ,co,cp) = valueOrElse(aE(), valueOrElse(aF(aG), {
471+ let cq = getStringValue(this, (toString(aJ) + A))
472+ let cr = toBase58String(sha256((toBytes(co) + toBytes(cp))))
473+ if ((cr != cq))
465474 then throw("vrf Height hash not matching")
466475 else {
467- let cp = aE(value(getString(this, (toString(aG) + J))))
468- let bn = cp._1
469- let bo = cp._2
470- let bp = cp._3
471- let bq = cp._4
472- let aJ = addressFromStringValue(getStringValue(this, (toString(aG) + i)))
473- let aN = getIntegerValue(this, (toString(aG) + m))
474- let cq = getIntegerValue(this, (toString(aG) + L))
475- let cr = valueOrElse(getInteger(this, (toString(aG) + D)), 0)
476- let cs = getIntegerValue(this, (toString(aG) + p))
477- let ct = valueOrElse(getInteger(this, (toString(aG) + P)), 0)
478- let cu = fraction(cs, aN, 100)
479- let cv = fraction(ct, cq, 100)
480- let cw = getIntegerValue(this, (toString(aG) + C))
481- let cx = fraction(cw, aN, 100)
482- let cy = ((((((cs + cw) + cu) + cx) + ct) + cv) - cr)
483- if ((cr > ((cs + cw) + ct)))
476+ let cs = aH(value(getString(this, (toString(aJ) + K))))
477+ let bq = cs._1
478+ let br = cs._2
479+ let bs = cs._3
480+ let bt = cs._4
481+ let aM = addressFromStringValue(getStringValue(this, (toString(aJ) + j)))
482+ let aQ = getIntegerValue(this, (toString(aJ) + n))
483+ let ct = getIntegerValue(this, (toString(aJ) + M))
484+ let cu = valueOrElse(getInteger(this, (toString(aJ) + E)), 0)
485+ let cv = getIntegerValue(this, (toString(aJ) + q))
486+ let cw = valueOrElse(getInteger(this, (toString(aJ) + Q)), 0)
487+ let cx = fraction(cv, aQ, 100)
488+ let cy = fraction(cw, ct, 100)
489+ let cz = getIntegerValue(this, (toString(aJ) + D))
490+ let cA = fraction(cz, aQ, 100)
491+ let cB = ((((((cv + cz) + cx) + cA) + cw) + cy) - cu)
492+ if ((cu > ((cv + cz) + cw)))
484493 then throw("Can't transfer negative value to project")
485494 else {
486- let bV = if ((bn == ah))
487- then invoke(ag, "unlockNeutrino", [cy, toBase58String(ah)], nil)
495+ let bY = if ((bq == ai))
496+ then invoke(ah, "unlockNeutrino", [cB, toBase58String(ai)], nil)
488497 else 0
489- if ((bV == bV))
490- then [IntegerEntry((toString(aG) + l), height), ScriptTransfer(aJ, (((cs + ct) + cw) - cr), bn), ScriptTransfer(af, ((cu + cx) + cv), bn)]
498+ if ((bY == bY))
499+ then [IntegerEntry((toString(aJ) + m), height), ScriptTransfer(aM, (((cv + cw) + cz) - cu), bq), ScriptTransfer(ag, ((cx + cA) + cy), bq)]
491500 else throw("Strict value is not equal to itself.")
492501 }
493502 }
495504
496505
497506
498-@Callable(aD)
499-func claim (aG) = valueOrElse(aB(), {
500- let cz = valueOrElse(getInteger(this, (((toString(aD.caller) + "_") + toString(aG)) + S)), 0)
501- let cA = valueOrElse(getInteger(this, (((toString(aD.caller) + "_") + toString(aG)) + V)), 0)
502- let cb = valueOrElse(getInteger(this, (((toString(aD.caller) + "_") + toString(aG)) + Y)), 0)
503- let cB = valueOrElse(getBoolean(this, (((toString(aD.caller) + "_") + toString(aG)) + Z)), false)
504- let cC = valueOrElse(getInteger(this, (toString(aG) + l)), 0)
505- if ((cC == 0))
507+@Callable(aG)
508+func claim (aJ) = valueOrElse(aE(), {
509+ let cC = valueOrElse(getInteger(this, (((toString(aG.caller) + "_") + toString(aJ)) + T)), 0)
510+ let cD = valueOrElse(getInteger(this, (((toString(aG.caller) + "_") + toString(aJ)) + W)), 0)
511+ let ce = valueOrElse(getInteger(this, (((toString(aG.caller) + "_") + toString(aJ)) + Z)), 0)
512+ let cE = valueOrElse(getBoolean(this, (((toString(aG.caller) + "_") + toString(aJ)) + aa)), false)
513+ let cF = valueOrElse(getInteger(this, (toString(aJ) + m)), 0)
514+ if ((cF == 0))
506515 then throw("You can't claim because results are not finalized")
507- else if (cB)
516+ else if (cE)
508517 then throw("You are already claimed")
509- else if (if (if ((cz == 0))
510- then (cb == 0)
518+ else if (if (if ((cC == 0))
519+ then (ce == 0)
511520 else false)
512- then (cA == 0)
521+ then (cD == 0)
513522 else false)
514523 then throw("You can't claim because you don't buy anything")
515524 else {
516- let cD = aE(valueOrElse(getString(this, (toString(aG) + J)), toBase58String(ah)))
517- let bn = cD._1
518- let bo = cD._2
519- let bp = cD._3
520- let bq = cD._4
521- let cE = valueOrElse(getInteger(this, (((toString(aD.caller) + "_") + toString(aG)) + aa)), 0)
522- let cF = valueOrElse(getInteger(this, (((toString(aD.caller) + "_") + toString(aG)) + ab)), 0)
523- let cG = valueOrElse(getInteger(this, (((toString(aD.caller) + "_") + toString(aG)) + W)), 0)
524- let aN = getIntegerValue(this, (toString(aG) + m))
525- let cq = valueOrElse(getInteger(this, (toString(aG) + L)), 0)
526- let cH = min([cb, cG])
527- let bw = getIntegerValue(this, (toString(aG) + r))
528- let aO = getIntegerValue(this, (toString(aG) + q))
529- let cI = aE(getStringValue(this, (toString(aG) + n)))
530- let by = cI._1
531- let bz = cI._2
532- let bA = cI._3
533- let bB = cI._4
534- let bC = fraction(aO, bw, pow(10, 0, bB, 0, 0, DOWN))
535- let aS = getIntegerValue(this, (toString(aG) + v))
536- let cJ = (((cE * aO) + (cH * aS)) + (cF * aO))
537- let cK = ((cb - cH) * aS)
538- let cL = fraction(fraction(cK, bw, pow(10, 0, bB, 0, 0, DOWN)), (100 + aN), 100)
539- let cM = fraction(((cz - cE) * bC), (100 + aN), 100)
540- let cN = fraction(((cA - cF) * bC), (100 + cq), 100)
541- let cO = valueOrElse(getInteger(this, (((toString(aD.caller) + "_") + toString(aG)) + R)), 0)
542- if (if (if ((0 > cL))
525+ let cG = aH(valueOrElse(getString(this, (toString(aJ) + K)), toBase58String(ai)))
526+ let bq = cG._1
527+ let br = cG._2
528+ let bs = cG._3
529+ let bt = cG._4
530+ let cH = valueOrElse(getInteger(this, (((toString(aG.caller) + "_") + toString(aJ)) + ab)), 0)
531+ let cI = valueOrElse(getInteger(this, (((toString(aG.caller) + "_") + toString(aJ)) + ac)), 0)
532+ let cJ = valueOrElse(getInteger(this, (((toString(aG.caller) + "_") + toString(aJ)) + X)), 0)
533+ let aQ = getIntegerValue(this, (toString(aJ) + n))
534+ let ct = valueOrElse(getInteger(this, (toString(aJ) + M)), 0)
535+ let cK = min([ce, cJ])
536+ let bz = getIntegerValue(this, (toString(aJ) + s))
537+ let aR = getIntegerValue(this, (toString(aJ) + r))
538+ let cL = aH(getStringValue(this, (toString(aJ) + o)))
539+ let bB = cL._1
540+ let bC = cL._2
541+ let bD = cL._3
542+ let bE = cL._4
543+ let bF = fraction(aR, bz, pow(10, 0, bE, 0, 0, DOWN))
544+ let aV = getIntegerValue(this, (toString(aJ) + w))
545+ let cM = (((cH * aR) + (cK * aV)) + (cI * aR))
546+ let cN = ((ce - cK) * aV)
547+ let cO = fraction(fraction(cN, bz, pow(10, 0, bE, 0, 0, DOWN)), (100 + aQ), 100)
548+ let cP = fraction(((cC - cH) * bF), (100 + aQ), 100)
549+ let cQ = fraction(((cD - cI) * bF), (100 + ct), 100)
550+ let cR = valueOrElse(getInteger(this, (((toString(aG.caller) + "_") + toString(aJ)) + S)), 0)
551+ if (if (if ((0 > cO))
543552 then true
544- else (0 > cM))
553+ else (0 > cP))
545554 then true
546- else (0 > cN))
555+ else (0 > cQ))
547556 then throw("Error with allowed allocation param or wonned tickets param please contact support")
548557 else {
549- let cP = (((cM + cN) + cL) - cO)
550- let cQ = if ((cP > 0))
551- then [ScriptTransfer(aD.caller, cP, bn), IntegerEntry((((toString(aD.caller) + "_") + toString(aG)) + R), cP)]
558+ let cS = (((cP + cQ) + cO) - cR)
559+ let cT = if ((cS > 0))
560+ then [ScriptTransfer(aG.caller, cS, bq), IntegerEntry((((toString(aG.caller) + "_") + toString(aJ)) + S), cS)]
552561 else nil
553- let bV = if (if ((cP > 0))
554- then (bn == ah)
562+ let bY = if (if ((cS > 0))
563+ then (bq == ai)
555564 else false)
556- then invoke(ag, "unlockNeutrino", [cP, toBase58String(ah)], nil)
565+ then invoke(ah, "unlockNeutrino", [cS, toBase58String(ai)], nil)
557566 else 0
558- if ((bV == bV))
567+ if ((bY == bY))
559568 then {
560- let cR = split(valueOrElse(getString(this, (toString(aG) + K)), "claimAll"), ",")
561- if ((cR[0] == "claimAll"))
569+ let cU = split(valueOrElse(getString(this, (toString(aJ) + L)), "claimAll"), ",")
570+ if ((cU[0] == "claimAll"))
562571 then {
563- let cS = if ((cJ > 0))
564- then [ScriptTransfer(aD.caller, cJ, by)]
572+ let cV = if ((cM > 0))
573+ then [ScriptTransfer(aG.caller, cM, bB)]
565574 else nil
566- (([BooleanEntry((((toString(aD.caller) + "_") + toString(aG)) + Z), true), IntegerEntry((((toString(aD.caller) + "_") + toString(aG)) + Q), cJ)] ++ cS) ++ cQ)
575+ (([BooleanEntry((((toString(aG.caller) + "_") + toString(aJ)) + aa), true), IntegerEntry((((toString(aG.caller) + "_") + toString(aJ)) + R), cM)] ++ cV) ++ cT)
567576 }
568- else if ((cR[0] == "claimPeriod"))
577+ else if ((cU[0] == "claimPeriod"))
569578 then {
570- let cT = valueOrElse(getInteger(this, (((toString(aD.caller) + "_") + toString(aG)) + Q)), 0)
571- let cU = value(parseInt(cR[2]))
572- let cV = (value(parseInt(cR[3])) + cC)
573- let cW = (cU + cV)
574- let cX = fraction(cJ, value(parseInt(cR[1])), 100)
575- let cY = (cX + (if ((height > cV))
576- then (fraction((cJ - cX), (min([height, cW]) - cV), cU) - cT)
577- else (0 - cT)))
578- let cZ = if ((cJ >= (cT + cY)))
579- then [BooleanEntry((((toString(aD.caller) + "_") + toString(aG)) + Z), true)]
579+ let cW = valueOrElse(getInteger(this, (((toString(aG.caller) + "_") + toString(aJ)) + R)), 0)
580+ let cX = value(parseInt(cU[2]))
581+ let cY = (value(parseInt(cU[3])) + cF)
582+ let cZ = (cX + cY)
583+ let da = fraction(cM, value(parseInt(cU[1])), 100)
584+ let db = (da + (if ((height > cY))
585+ then (fraction((cM - da), (min([height, cZ]) - cY), cX) - cW)
586+ else (0 - cW)))
587+ let dc = if ((cM >= (cW + db)))
588+ then [BooleanEntry((((toString(aG.caller) + "_") + toString(aJ)) + aa), true)]
580589 else nil
581- if (if ((cY > 0))
590+ if (if ((db > 0))
582591 then true
583- else (cP > 0))
592+ else (cS > 0))
584593 then {
585- let cS = if ((cY > 0))
586- then [IntegerEntry((((toString(aD.caller) + "_") + toString(aG)) + Q), (cT + cY)), ScriptTransfer(aD.caller, cY, by)]
594+ let cV = if ((db > 0))
595+ then [IntegerEntry((((toString(aG.caller) + "_") + toString(aJ)) + R), (cW + db)), ScriptTransfer(aG.caller, db, bB)]
587596 else nil
588- (cQ ++ cS)
597+ (cT ++ cV)
589598 }
590599 else throw("Nothing to claim")
591600 }
598607
599608
600609
601-@Callable(aD)
602-func claimFreezeToken (aG) = valueOrElse(aB(), {
603- let aZ = valueOrElse(getBoolean(this, (toString(aG) + F)), false)
604- if (!(isDefined(getInteger(this, (toString(aG) + l)))))
610+@Callable(aG)
611+func claimFreezeToken (aJ) = valueOrElse(aE(), {
612+ let bc = valueOrElse(getBoolean(this, (toString(aJ) + G)), false)
613+ if (!(isDefined(getInteger(this, (toString(aJ) + m)))))
605614 then throw("You can't claim because results are not finalized")
606- else if (!(aZ))
615+ else if (!(bc))
607616 then throw("There are no additional token freezing for this launchpad")
608617 else {
609- let by = fromBase58String(getStringValue(this, (toString(aG) + G)))
610- let da = valueOrElse(getInteger(this, (((toString(aD.caller) + "_") + toString(aG)) + ac)), 0)
611- let aK = valueOrElse(getInteger(this, (toString(aG) + k)), 0)
612- let aL = valueOrElse(getInteger(this, (toString(aG) + A)), 0)
613- let db = getIntegerValue(this, (toString(aG) + H))
614- let dc = ((aK + aL) + db)
615- if ((da == 0))
618+ let bB = fromBase58String(getStringValue(this, (toString(aJ) + H)))
619+ let dd = valueOrElse(getInteger(this, (((toString(aG.caller) + "_") + toString(aJ)) + ad)), 0)
620+ let aN = valueOrElse(getInteger(this, (toString(aJ) + l)), 0)
621+ let aO = valueOrElse(getInteger(this, (toString(aJ) + B)), 0)
622+ let de = getIntegerValue(this, (toString(aJ) + I))
623+ let df = ((aN + aO) + de)
624+ if ((dd == 0))
616625 then throw("You are already claimed your tokens or not paid anything")
617- else if ((dc > height))
618- then throw(("Your tokens freezed teel " + toString(dc)))
619- else [ScriptTransfer(aD.caller, da, by), IntegerEntry((((toString(aD.caller) + "_") + toString(aG)) + ac), 0)]
626+ else if ((df > height))
627+ then throw(("Your tokens freezed teel " + toString(df)))
628+ else [ScriptTransfer(aG.caller, dd, bB), IntegerEntry((((toString(aG.caller) + "_") + toString(aJ)) + ad), 0)]
620629 }
621630 })
622631
623632
624633
625-@Callable(aD)
626-func transferBuyAsset (aG,dd) = valueOrElse(aB(), valueOrElse(aC(aD), {
627- let aJ = addressFromStringValue(getStringValue(this, (toString(aG) + i)))
628- let de = aE(value(getString(this, (toString(aG) + J))))
629- let bn = de._1
630- let bo = de._2
631- let bp = de._3
632- let bq = de._4
633- let cr = valueOrElse(getInteger(this, (toString(aG) + D)), 0)
634- let bV = if (if ((dd > 0))
635- then (bn == ah)
634+@Callable(aG)
635+func transferBuyAsset (aJ,dg) = valueOrElse(aE(), valueOrElse(aF(aG), {
636+ let aM = addressFromStringValue(getStringValue(this, (toString(aJ) + j)))
637+ let dh = aH(value(getString(this, (toString(aJ) + K))))
638+ let bq = dh._1
639+ let br = dh._2
640+ let bs = dh._3
641+ let bt = dh._4
642+ let cu = valueOrElse(getInteger(this, (toString(aJ) + E)), 0)
643+ let bY = if (if ((dg > 0))
644+ then (bq == ai)
636645 else false)
637- then invoke(ag, "unlockNeutrino", [dd, toBase58String(ah)], nil)
646+ then invoke(ah, "unlockNeutrino", [dg, toBase58String(ai)], nil)
638647 else 0
639- if ((bV == bV))
640- then [IntegerEntry((toString(aG) + D), (cr + dd)), ScriptTransfer(aJ, dd, bn)]
648+ if ((bY == bY))
649+ then [IntegerEntry((toString(aJ) + E), (cu + dg)), ScriptTransfer(aM, dg, bq)]
641650 else throw("Strict value is not equal to itself.")
642651 }))
643652
644653
645654
646-@Callable(aD)
647-func shutdown () = valueOrElse(aC(aD), if (!(aA))
655+@Callable(aG)
656+func shutdown () = valueOrElse(aF(aG), if (!(aC))
648657 then throw("DApp already inactive")
649658 else [BooleanEntry(a, false)])
650659
651660
652661
653-@Callable(aD)
654-func activate () = valueOrElse(aC(aD), if (aA)
662+@Callable(aG)
663+func activate () = valueOrElse(aF(aG), if (aC)
655664 then throw("DApp already active")
656665 else [BooleanEntry(a, true)])
657666
658667
659-@Verifier(df)
660-func dg () = {
661- let dh = {
662- let di = if (sigVerify(df.bodyBytes, df.proofs[0], aq))
668+@Verifier(di)
669+func dj () = {
670+ let dk = {
671+ let dl = if (sigVerify(di.bodyBytes, di.proofs[0], ar))
663672 then 1
664673 else 0
665- let dj = if (sigVerify(df.bodyBytes, df.proofs[1], ar))
674+ let dm = if (sigVerify(di.bodyBytes, di.proofs[1], as))
666675 then 1
667676 else 0
668- let dk = if (sigVerify(df.bodyBytes, df.proofs[2], as))
677+ let dn = if (sigVerify(di.bodyBytes, di.proofs[2], at))
669678 then 1
670679 else 0
671- (((di + dj) + dk) >= 2)
680+ (((dl + dm) + dn) >= 2)
672681 }
673- let dl = if (if (if (sigVerify(df.bodyBytes, df.proofs[0], aq))
682+ let do = if (if (if (sigVerify(di.bodyBytes, di.proofs[0], ar))
674683 then true
675- else sigVerify(df.bodyBytes, df.proofs[0], ar))
684+ else sigVerify(di.bodyBytes, di.proofs[0], as))
676685 then true
677- else sigVerify(df.bodyBytes, df.proofs[0], as))
686+ else sigVerify(di.bodyBytes, di.proofs[0], at))
678687 then true
679- else sigVerify(df.bodyBytes, df.proofs[0], ai)
680- let an = df
681- if ($isInstanceOf(an, "DataTransaction"))
688+ else sigVerify(di.bodyBytes, di.proofs[0], aj)
689+ let ao = di
690+ if ($isInstanceOf(ao, "DataTransaction"))
682691 then {
683- let dm = an
684- if (valueOrElse(getBoolean(ad, e), false))
685- then dl
692+ let dp = ao
693+ if (valueOrElse(getBoolean(ae, f), false))
694+ then do
686695 else false
687696 }
688- else dh
697+ else dk
689698 }
690699
Full:
OldNewDifferences
1-{-# STDLIB_VERSION 5 #-}
1+{-# STDLIB_VERSION 6 #-}
22 {-# SCRIPT_TYPE ACCOUNT #-}
33 {-# CONTENT_TYPE DAPP #-}
44 let a = "active"
55
6-let b = "admin_pub_1"
6+let b = "active_all_contracts"
77
8-let c = "admin_pub_2"
8+let c = "admin_pub_1"
99
10-let d = "admin_pub_3"
10+let d = "admin_pub_2"
1111
12-let e = "launchpad_data_transaction_status"
12+let e = "admin_pub_3"
1313
14-let f = "launchpad_next_id"
14+let f = "launchpad_data_transaction_status"
1515
16-let g = "launchpad_active_id"
16+let g = "launchpad_next_id"
1717
18-let h = "init_caller"
18+let h = "launchpad_active_id"
1919
20-let i = "_address"
20+let i = "init_caller"
2121
22-let j = "_init_height"
22+let j = "_address"
2323
24-let k = "_start_height"
24+let k = "_init_height"
2525
26-let l = "_finalise_height"
26+let l = "_start_height"
2727
28-let m = "_comission"
28+let m = "_finalise_height"
2929
30-let n = "_asset_id"
30+let n = "_comission"
3131
32-let o = "_total_token_amount"
32+let o = "_asset_id"
3333
34-let p = "_total_buy_asset_sold"
34+let p = "_total_token_amount"
3535
36-let q = "_tokens_per_ticket"
36+let q = "_total_buy_asset_sold"
3737
38-let r = "_price_per_token"
38+let r = "_tokens_per_ticket"
3939
40-let s = "_swop_per_ticket"
40+let s = "_price_per_token"
4141
42-let t = "_tickets_swopfi_members"
42+let t = "_swop_per_ticket"
4343
44-let u = "_tokens_access_list"
44+let u = "_tickets_swopfi_members"
4545
46-let v = "_tokens_per_allocation"
46+let v = "_tokens_access_list"
4747
48-let w = "_ticket_last_number"
48+let w = "_tokens_per_allocation"
4949
50-let x = "_SWOP_amount"
50+let x = "_ticket_last_number"
5151
52-let y = "_ref_id"
52+let y = "_GSwop_amount"
5353
54-let z = "_verify_hash"
54+let z = "_ref_id"
5555
56-let A = "_duration"
56+let A = "_verify_hash"
5757
58-let B = "_total_purchased_buy_asset_in_marketing"
58+let B = "_duration"
5959
60-let C = "_total_purchased_buy_asset_in_marketing_finalized"
60+let C = "_total_purchased_buy_asset_in_marketing"
6161
62-let D = "_transfer_buy_asset"
62+let D = "_total_purchased_buy_asset_in_marketing_finalized"
6363
64-let E = "_freeze_swop_duration"
64+let E = "_transfer_buy_asset"
6565
66-let F = "_freeze_additional_token"
66+let F = "_freeze_swop_duration"
6767
68-let G = "_freeze_token_id"
68+let G = "_freeze_additional_token"
6969
70-let H = "_freeze_token_duration"
70+let H = "_freeze_token_id"
7171
72-let I = "_freeze_token_per_ticket"
72+let I = "_freeze_token_duration"
7373
74-let J = "_buy_token"
74+let J = "_freeze_token_per_ticket"
7575
76-let K = "_claim_params"
76+let K = "_buy_token"
7777
78-let L = "_high_competition_comission"
78+let L = "_claim_params"
7979
80-let M = "_high_competition_sale"
80+let M = "_high_competition_comission"
8181
82-let N = "_high_competition_ticket_last_number"
82+let N = "_high_competition_sale"
8383
84-let O = "_tickets_high_competition"
84+let O = "_high_competition_ticket_last_number"
8585
86-let P = "_total_buy_asset_sold_high_competition"
86+let P = "_tickets_high_competition"
8787
88-let Q = "_claimed_tokens"
88+let Q = "_total_buy_asset_sold_high_competition"
8989
90-let R = "_claimed_buy_tokens"
90+let R = "_claimed_tokens"
9191
92-let S = "_bought_tickets"
92+let S = "_claimed_buy_tokens"
9393
94-let T = "_tickets_number"
94+let T = "_bought_tickets"
9595
96-let U = "_tickets_number_high_competition"
96+let U = "_tickets_number"
9797
98-let V = "_bought_tickets_high_competition"
98+let V = "_tickets_number_high_competition"
9999
100-let W = "_available_purchase_marketing"
100+let W = "_bought_tickets_high_competition"
101101
102-let X = "_purchased_buy_asset_in_marketing"
102+let X = "_available_purchase_marketing"
103103
104-let Y = "_bought_allocations"
104+let Y = "_purchased_buy_asset_in_marketing"
105105
106-let Z = "_claim_status"
106+let Z = "_bought_allocations"
107107
108-let aa = "_tickets_result"
108+let aa = "_claim_status"
109109
110-let ab = "_tickets_result_high_competition"
110+let ab = "_tickets_result"
111111
112-let ac = "_freeze_token_amount"
112+let ac = "_tickets_result_high_competition"
113113
114-let ad = Address(base58'3PEbqViERCoKnmcSULh6n2aiMvUdSQdCsom')
114+let ad = "_freeze_token_amount"
115115
116-let ae = Address(base58'3PLHVWCqA9DJPDbadUofTohnCULLauiDWhS')
116+let ae = Address(base58'3PEbqViERCoKnmcSULh6n2aiMvUdSQdCsom')
117117
118-let af = Address(base58'3PGYafJ2GuqPckmZNywet8moiPnBHz51Xdg')
118+let af = Address(base58'3PLHVWCqA9DJPDbadUofTohnCULLauiDWhS')
119119
120-let ag = Address(base58'3PNikM6yp4NqcSU8guxQtmR5onr2D4e8yTJ')
120+let ag = Address(base58'3PGYafJ2GuqPckmZNywet8moiPnBHz51Xdg')
121121
122-let ah = base58'DG2xFkPdDwKUoBkzGAhQtLpSGzfXLiCYPEzeKH2Ad24p'
122+let ah = Address(base58'3PNikM6yp4NqcSU8guxQtmR5onr2D4e8yTJ')
123123
124-let ai = base58'Czn4yoAuUZCVCLJDRfskn8URfkwpknwBTZDbs1wFrY7h'
124+let ai = base58'DG2xFkPdDwKUoBkzGAhQtLpSGzfXLiCYPEzeKH2Ad24p'
125125
126-let aj = 2
126+let aj = base58'Czn4yoAuUZCVCLJDRfskn8URfkwpknwBTZDbs1wFrY7h'
127127
128-let ak = valueOrElse(getIntegerValue(this, g), -1)
128+let ak = 2
129129
130-func al (am) = {
131- let an = getString(ad, am)
132- if ($isInstanceOf(an, "String"))
130+let al = valueOrElse(getIntegerValue(this, h), -1)
131+
132+func am (an) = {
133+ let ao = getString(ae, an)
134+ if ($isInstanceOf(ao, "String"))
133135 then {
134- let ao = an
135- fromBase58String(ao)
136+ let ap = ao
137+ fromBase58String(ap)
136138 }
137139 else {
138- let ap = an
140+ let aq = ao
139141 throw("Admin public key is empty")
140142 }
141143 }
142144
143145
144-let aq = al(b)
146+let ar = am(c)
145147
146-let ar = al(c)
148+let as = am(d)
147149
148-let as = al(d)
150+let at = am(e)
149151
150-func at (au) = {
151- let an = au
152- if ($isInstanceOf(an, "ByteVector"))
152+func au (av) = {
153+ let ao = av
154+ if ($isInstanceOf(ao, "ByteVector"))
153155 then {
154- let av = an
155- let aw = toBase58String(av)
156- let ax = valueOrErrorMessage(assetInfo(av), (("Asset " + aw) + " doesn't exist"))
157- $Tuple3(aw, ax.name, ax.decimals)
156+ let aw = ao
157+ let ax = toBase58String(aw)
158+ let ay = valueOrErrorMessage(assetInfo(aw), (("Asset " + ax) + " doesn't exist"))
159+ $Tuple3(ax, ay.name, ay.decimals)
158160 }
159- else if ($isInstanceOf(an, "Unit"))
161+ else if ($isInstanceOf(ao, "Unit"))
160162 then {
161- let ay = an
163+ let az = ao
162164 $Tuple3("WAVES", "WAVES", 8)
163165 }
164166 else throw("Match error")
165167 }
166168
167169
168-func az () = valueOrElse(getInteger(this, f), 1)
170+func aA () = valueOrElse(getInteger(this, g), 1)
169171
170172
171-let aA = valueOrElse(getBoolean(this, a), true)
173+func aB () = valueOrElse(getInteger(ah, ((("rpd_balance_" + toBase58String(ai)) + "_") + toString(this))), 0)
172174
173-func aB () = if (aA)
175+
176+let aC = valueOrElse(getBoolean(this, a), true)
177+
178+let aD = valueOrElse(getBoolean(ae, b), true)
179+
180+func aE () = if (if (aC)
181+ then aD
182+ else false)
174183 then unit
175184 else throw("DApp is inactive at this moment")
176185
177186
178-func aC (aD) = if (containsElement([aq, ar, as], aD.callerPublicKey))
187+func aF (aG) = if (containsElement([ar, as, at], aG.callerPublicKey))
179188 then unit
180189 else throw("Only admin can call this function")
181190
182191
183-func aE (aF) = if ((aF == "WAVES"))
192+func aH (aI) = if ((aI == "WAVES"))
184193 then $Tuple4(unit, "WAVES", "WAVES", 8)
185194 else {
186- let aw = aF
187- let av = fromBase58String(aF)
188- let ax = valueOrErrorMessage(assetInfo(av), (("Asset " + aw) + " doesn't exist"))
189- $Tuple4(av, aw, ax.name, ax.decimals)
195+ let ax = aI
196+ let aw = fromBase58String(aI)
197+ let ay = valueOrErrorMessage(assetInfo(aw), (("Asset " + ax) + " doesn't exist"))
198+ $Tuple4(aw, ax, ay.name, ay.decimals)
190199 }
191200
192201
193-@Callable(aD)
194-func hashingRandom (aG,aH) = valueOrElse(aB(), valueOrElse(aC(aD), [StringEntry((toString(aG) + z), aH)]))
202+@Callable(aG)
203+func hashingRandom (aJ,aK) = valueOrElse(aE(), valueOrElse(aF(aG), [StringEntry((toString(aJ) + A), aK)]))
195204
196205
197206
198-@Callable(aD)
199-func initCaller (aI) = valueOrElse(aB(), valueOrElse(aC(aD), [StringEntry(h, aI)]))
207+@Callable(aG)
208+func initCaller (aL) = valueOrElse(aE(), valueOrElse(aF(aG), [StringEntry(i, aL)]))
200209
201210
202211
203-@Callable(aD)
204-func init (aJ,aK,aL,aM,aN,aO,aP,aQ,aR,aS,aT,aU,aV,aW,aX,aY,aZ,ba) = valueOrElse(aB(), if ((toString(aD.caller) != valueOrElse(getString(this, h), "")))
212+@Callable(aG)
213+func init (aM,aN,aO,aP,aQ,aR,aS,aT,aU,aV,aW,aX,aY,aZ,ba,bb,bc,bd) = valueOrElse(aE(), if ((toString(aG.caller) != valueOrElse(getString(this, i), "")))
205214 then throw("Only project admin can call init function")
206- else if ((size(aD.payments) != 1))
215+ else if ((size(aG.payments) != 1))
207216 then throw("One attached payment expected")
208- else if ((height > aK))
217+ else if ((height > aN))
209218 then throw("Start height must be greater than blockchain height")
210- else if (if (aZ)
211- then (size(ba) != 3)
219+ else if (if (bc)
220+ then (size(bd) != 3)
212221 else false)
213222 then throw("Freeze params list must have 3 items")
214223 else {
215- let aG = az()
216- let bb = toString(aG)
217- let bc = $Tuple2(aD.payments[0].amount, aD.payments[0].assetId)
218- let bd = bc._1
219- let be = bc._2
220- let bf = at(be)
224+ let aJ = aA()
225+ let be = toString(aJ)
226+ let bf = $Tuple2(aG.payments[0].amount, aG.payments[0].assetId)
221227 let bg = bf._1
222228 let bh = bf._2
223- let bi = bf._3
224- let bj = if (aZ)
225- then [BooleanEntry((bb + F), true), StringEntry((bb + G), ba[0]), IntegerEntry((bb + H), parseIntValue(ba[1])), IntegerEntry((bb + I), parseIntValue(ba[2]))]
229+ let bi = au(bh)
230+ let bj = bi._1
231+ let bk = bi._2
232+ let bl = bi._3
233+ let bm = if (bc)
234+ then [BooleanEntry((be + G), true), StringEntry((be + H), bd[0]), IntegerEntry((be + I), parseIntValue(bd[1])), IntegerEntry((be + J), parseIntValue(bd[2]))]
226235 else nil
227- ([IntegerEntry((bg + "_launchpad"), aG), IntegerEntry(f, (aG + 1)), StringEntry((bb + i), aJ), IntegerEntry((bb + j), height), IntegerEntry((bb + k), aK), IntegerEntry((bb + A), aL), StringEntry((bb + J), aM), IntegerEntry((bb + E), aU), IntegerEntry((bb + o), bd), StringEntry((bb + n), bg), IntegerEntry((bb + m), aN), IntegerEntry((bb + w), 0), IntegerEntry((bb + N), 0), IntegerEntry((bb + q), aO), IntegerEntry((bb + r), aP), IntegerEntry((bb + s), aT), IntegerEntry((bb + t), aQ), IntegerEntry((bb + u), aR), IntegerEntry((bb + v), aS), StringEntry((bb + K), makeString(aV, ",")), BooleanEntry((bb + M), aW), IntegerEntry((bb + L), aX), IntegerEntry((bb + O), aY), IntegerEntry(g, aG), StringEntry(h, "")] ++ bj)
236+ ([IntegerEntry((bj + "_launchpad"), aJ), IntegerEntry(g, (aJ + 1)), StringEntry((be + j), aM), IntegerEntry((be + k), height), IntegerEntry((be + l), aN), IntegerEntry((be + B), aO), StringEntry((be + K), aP), IntegerEntry((be + F), aX), IntegerEntry((be + p), bg), StringEntry((be + o), bj), IntegerEntry((be + n), aQ), IntegerEntry((be + x), 0), IntegerEntry((be + O), 0), IntegerEntry((be + r), aR), IntegerEntry((be + s), aS), IntegerEntry((be + t), aW), IntegerEntry((be + u), aT), IntegerEntry((be + v), aU), IntegerEntry((be + w), aV), StringEntry((be + L), makeString(aY, ",")), BooleanEntry((be + N), aZ), IntegerEntry((be + M), ba), IntegerEntry((be + P), bb), IntegerEntry(h, aJ), StringEntry(i, "")] ++ bm)
228237 })
229238
230239
231240
232-@Callable(aD)
233-func commitSwopfiSale (aG,bk) = valueOrElse(aB(), {
234- let bl = $Tuple2(aD.payments[0].amount, aD.payments[0].assetId)
235- let bd = bl._1
236- let be = bl._2
237- let bm = aE(value(getString(this, (toString(aG) + J))))
238- let bn = bm._1
239- let bo = bm._2
240- let bp = bm._3
241- let bq = bm._4
242- let br = valueOrElse(getInteger(ae, (toString(aD.caller) + x)), 0)
243- let bs = (br / getIntegerValue(this, (toString(aG) + s)))
244- let bt = valueOrElse(getInteger(this, (((toString(aD.caller) + "_") + toString(aG)) + S)), 0)
245- let bu = (bs - bt)
246- let aK = value(getInteger(this, (toString(aG) + k)))
247- let aL = value(getInteger(this, (toString(aG) + A)))
248- let aZ = valueOrElse(getBoolean(this, (toString(aG) + F)), false)
249- if ((ak != aG))
241+@Callable(aG)
242+func commitSwopfiSale (aJ,bn) = valueOrElse(aE(), {
243+ let bo = $Tuple2(aG.payments[0].amount, aG.payments[0].assetId)
244+ let bg = bo._1
245+ let bh = bo._2
246+ let bp = aH(value(getString(this, (toString(aJ) + K))))
247+ let bq = bp._1
248+ let br = bp._2
249+ let bs = bp._3
250+ let bt = bp._4
251+ let bu = valueOrElse(getInteger(af, (toString(aG.caller) + y)), 0)
252+ let bv = (bu / getIntegerValue(this, (toString(aJ) + t)))
253+ let bw = valueOrElse(getInteger(this, (((toString(aG.caller) + "_") + toString(aJ)) + T)), 0)
254+ let bx = (bv - bw)
255+ let aN = value(getInteger(this, (toString(aJ) + l)))
256+ let aO = value(getInteger(this, (toString(aJ) + B)))
257+ let bc = valueOrElse(getBoolean(this, (toString(aJ) + G)), false)
258+ if ((al != aJ))
250259 then throw("There is no active launchpad or this launchpad is ended")
251- else if ((aK > height))
260+ else if ((aN > height))
252261 then throw("Launchpad sale not started yet")
253- else if ((height > (aK + aL)))
262+ else if ((height > (aN + aO)))
254263 then throw("Launchpad sale ended")
255- else if (if (!(aZ))
256- then if ((size(aD.payments) != 1))
264+ else if (if (!(bc))
265+ then if ((size(aG.payments) != 1))
257266 then true
258- else (be != bn)
267+ else (bh != bq)
259268 else false)
260- then throw((("One attached payment in " + bp) + " expected"))
261- else if (if (aZ)
262- then if ((size(aD.payments) != 2))
269+ then throw((("One attached payment in " + bs) + " expected"))
270+ else if (if (bc)
271+ then if ((size(aG.payments) != 2))
263272 then true
264- else (be != bn)
273+ else (bh != bq)
265274 else false)
266275 then {
267- let bv = getStringValue(this, (toString(aG) + G))
268- throw(((("Two attached payments expected: First in " + bp) + ", second in ") + bv))
276+ let by = getStringValue(this, (toString(aJ) + H))
277+ throw(((("Two attached payments expected: First in " + bs) + ", second in ") + by))
269278 }
270- else if (if ((0 >= bs))
279+ else if (if ((0 >= bv))
271280 then true
272- else (0 >= bu))
281+ else (0 >= bx))
273282 then throw("Not enought SWOP in staking to buy tickets")
274283 else {
275- let bw = getIntegerValue(this, (toString(aG) + r))
276- let aO = getIntegerValue(this, (toString(aG) + q))
277- let bx = aE(getStringValue(this, (toString(aG) + n)))
278- let by = bx._1
279- let bz = bx._2
280- let bA = bx._3
281- let bB = bx._4
282- let bC = fraction(aO, bw, pow(10, 0, bB, 0, 0, DOWN))
283- let bD = fraction(bC, getIntegerValue(this, (toString(aG) + m)), 100)
284- let bE = (bd / (bC + bD))
285- let bF = min([bE, bu])
286- let bG = (bF * (bC + bD))
287- let bH = (bd - bG)
288- if ((bE == 0))
289- then throw((("Not enought " + bp) + " to buy tickets"))
290- else if ((bH != 0))
291- then throw((((("Wrong payment. To buy " + toString(bF)) + "tickets you need to pay ") + toString(bG)) + bp))
284+ let bz = getIntegerValue(this, (toString(aJ) + s))
285+ let aR = getIntegerValue(this, (toString(aJ) + r))
286+ let bA = aH(getStringValue(this, (toString(aJ) + o)))
287+ let bB = bA._1
288+ let bC = bA._2
289+ let bD = bA._3
290+ let bE = bA._4
291+ let bF = fraction(aR, bz, pow(10, 0, bE, 0, 0, DOWN))
292+ let bG = fraction(bF, getIntegerValue(this, (toString(aJ) + n)), 100)
293+ let bH = (bg / (bF + bG))
294+ let bI = min([bH, bx])
295+ let bJ = (bI * (bF + bG))
296+ let bK = (bg - bJ)
297+ if ((bH == 0))
298+ then throw((("Not enought " + bs) + " to buy tickets"))
299+ else if ((bK != 0))
300+ then throw((((("Wrong payment. To buy " + toString(bI)) + "tickets you need to pay ") + toString(bJ)) + bs))
292301 else {
293- let bj = if (aZ)
302+ let bm = if (bc)
294303 then {
295- let bv = getStringValue(this, (toString(aG) + G))
296- let bI = getIntegerValue(this, (toString(aG) + I))
297- let bJ = $Tuple2(aD.payments[1].amount, aD.payments[1].assetId)
298- let bK = bJ._1
299- let bL = bJ._2
300- let bM = at(be)
304+ let by = getStringValue(this, (toString(aJ) + H))
305+ let bL = getIntegerValue(this, (toString(aJ) + J))
306+ let bM = $Tuple2(aG.payments[1].amount, aG.payments[1].assetId)
301307 let bN = bM._1
302308 let bO = bM._2
303- let bP = bM._3
304- let bQ = (bI * bE)
305- if (if ((bN != bv))
309+ let bP = au(bh)
310+ let bQ = bP._1
311+ let bR = bP._2
312+ let bS = bP._3
313+ let bT = (bL * bH)
314+ if (if ((bQ != by))
306315 then true
307- else (bQ != bK))
308- then throw((((("You need to add " + toString(bQ)) + " ") + bO) + " as a second payment"))
309- else [IntegerEntry((((toString(aD.caller) + "_") + toString(aG)) + ac), bK)]
316+ else (bT != bN))
317+ then throw((((("You need to add " + toString(bT)) + " ") + bR) + " as a second payment"))
318+ else [IntegerEntry((((toString(aG.caller) + "_") + toString(aJ)) + ad), bN)]
310319 }
311320 else nil
312- let bR = valueOrElse(getString(this, (((toString(aD.caller) + "_") + toString(aG)) + T)), "")
313- let bS = getIntegerValue(this, (toString(aG) + w))
314- let bT = ((toString((bS + 1)) + "-") + toString((bS + bF)))
315- let bU = (bR + (if ((bR != ""))
316- then ("," + bT)
317- else ("" + bT)))
318- let bV = if ((bn == ah))
319- then invoke(ag, "lockNeutrino", nil, [AttachedPayment(be, bd)])
321+ let bU = valueOrElse(getString(this, (((toString(aG.caller) + "_") + toString(aJ)) + U)), "")
322+ let bV = getIntegerValue(this, (toString(aJ) + x))
323+ let bW = ((toString((bV + 1)) + "-") + toString((bV + bI)))
324+ let bX = (bU + (if ((bU != ""))
325+ then ("," + bW)
326+ else ("" + bW)))
327+ let bY = if ((bq == ai))
328+ then invoke(ah, "lockNeutrino", nil, [AttachedPayment(bh, bg)])
320329 else 0
321- if ((bV == bV))
330+ if ((bY == bY))
322331 then {
323- let bW = ([IntegerEntry((((toString(aD.caller) + "_") + toString(aG)) + S), (bt + bF)), IntegerEntry((toString(aG) + w), (bS + bF)), StringEntry((((toString(aD.caller) + "_") + toString(aG)) + T), bU)] ++ bj)
324- if (!(isDefined(getString(this, (((toString(aD.caller) + "_") + toString(aG)) + y)))))
325- then (bW ++ [StringEntry((((toString(aD.caller) + "_") + toString(aG)) + y), bk)])
326- else bW
332+ let bZ = ([IntegerEntry((((toString(aG.caller) + "_") + toString(aJ)) + T), (bw + bI)), IntegerEntry((toString(aJ) + x), (bV + bI)), StringEntry((((toString(aG.caller) + "_") + toString(aJ)) + U), bX)] ++ bm)
333+ if (!(isDefined(getString(this, (((toString(aG.caller) + "_") + toString(aJ)) + z)))))
334+ then (bZ ++ [StringEntry((((toString(aG.caller) + "_") + toString(aJ)) + z), bn)])
335+ else bZ
327336 }
328337 else throw("Strict value is not equal to itself.")
329338 }
330339 }
331340 })
332341
333342
334343
335-@Callable(aD)
336-func commitAccessListSale (aG,bk) = valueOrElse(aB(), {
337- let bX = $Tuple2(aD.payments[0].amount, aD.payments[0].assetId)
338- let bd = bX._1
339- let be = bX._2
340- let bY = aE(value(getString(this, (toString(aG) + J))))
341- let bn = bY._1
342- let bo = bY._2
343- let bp = bY._3
344- let bq = bY._4
345- let bZ = valueOrElse(getInteger(this, (((toString(aD.caller) + "_") + toString(aG)) + X)), 0)
346- let ca = valueOrElse(getInteger(this, (toString(aG) + B)), 0)
347- let cb = valueOrElse(getInteger(this, (((toString(aD.caller) + "_") + toString(aG)) + Y)), 0)
348- let aN = getIntegerValue(this, (toString(aG) + m))
349- let bw = getIntegerValue(this, (toString(aG) + r))
350- let aS = getIntegerValue(this, (toString(aG) + v))
351- let cc = aE(getStringValue(this, (toString(aG) + n)))
352- let by = cc._1
353- let bz = cc._2
354- let bA = cc._3
355- let bB = cc._4
356- let cd = fraction(fraction(bw, aS, pow(10, 0, bB, 0, 0, DOWN)), (100 + aN), 100)
357- let aK = value(getInteger(this, (toString(aG) + k)))
358- let aL = value(getInteger(this, (toString(aG) + A)))
359- if ((ak != aG))
344+@Callable(aG)
345+func commitAccessListSale (aJ,bn) = valueOrElse(aE(), {
346+ let ca = $Tuple2(aG.payments[0].amount, aG.payments[0].assetId)
347+ let bg = ca._1
348+ let bh = ca._2
349+ let cb = aH(value(getString(this, (toString(aJ) + K))))
350+ let bq = cb._1
351+ let br = cb._2
352+ let bs = cb._3
353+ let bt = cb._4
354+ let cc = valueOrElse(getInteger(this, (((toString(aG.caller) + "_") + toString(aJ)) + Y)), 0)
355+ let cd = valueOrElse(getInteger(this, (toString(aJ) + C)), 0)
356+ let ce = valueOrElse(getInteger(this, (((toString(aG.caller) + "_") + toString(aJ)) + Z)), 0)
357+ let aQ = getIntegerValue(this, (toString(aJ) + n))
358+ let bz = getIntegerValue(this, (toString(aJ) + s))
359+ let aV = getIntegerValue(this, (toString(aJ) + w))
360+ let cf = aH(getStringValue(this, (toString(aJ) + o)))
361+ let bB = cf._1
362+ let bC = cf._2
363+ let bD = cf._3
364+ let bE = cf._4
365+ let cg = fraction(fraction(bz, aV, pow(10, 0, bE, 0, 0, DOWN)), (100 + aQ), 100)
366+ let aN = value(getInteger(this, (toString(aJ) + l)))
367+ let aO = value(getInteger(this, (toString(aJ) + B)))
368+ if ((al != aJ))
360369 then throw("There is no active launchpad or this launchpad is ended")
361- else if ((aK > height))
370+ else if ((aN > height))
362371 then throw("Launchpad sale not started yet")
363- else if ((height > (aK + aL)))
372+ else if ((height > (aN + aO)))
364373 then throw("Launchpad sale ended")
365- else if (if ((size(aD.payments) != 1))
374+ else if (if ((size(aG.payments) != 1))
366375 then true
367- else (be != bn))
368- then throw((("One attached payment in " + bp) + " expected"))
369- else if ((cb >= aj))
370- then throw((("You can buy only " + toString(aj)) + "allocations"))
371- else if (if ((cd != bd))
372- then ((cd * 2) != bd)
376+ else (bh != bq))
377+ then throw((("One attached payment in " + bs) + " expected"))
378+ else if ((ce >= ak))
379+ then throw((("You can buy only " + toString(ak)) + "allocations"))
380+ else if (if ((cg != bg))
381+ then ((cg * 2) != bg)
373382 else false)
374- then throw(((("Wrong payment. You can buy 1 or 2 allocations for " + toString(cd)) + bp) + " per allocation"))
383+ then throw(((("Wrong payment. You can buy 1 or 2 allocations for " + toString(cg)) + bs) + " per allocation"))
375384 else {
376- let ce = (bd / cd)
377- let bV = if ((bn == ah))
378- then invoke(ag, "lockNeutrino", nil, [AttachedPayment(be, bd)])
385+ let ch = (bg / cg)
386+ let bY = if ((bq == ai))
387+ then invoke(ah, "lockNeutrino", nil, [AttachedPayment(bh, bg)])
379388 else 0
380- if ((bV == bV))
389+ if ((bY == bY))
381390 then {
382- let bW = [IntegerEntry((((toString(aD.caller) + "_") + toString(aG)) + Y), (cb + ce)), IntegerEntry((((toString(aD.caller) + "_") + toString(aG)) + X), (bZ + bd)), IntegerEntry((toString(aG) + B), (ca + bd))]
383- if (!(isDefined(getString(this, (((toString(aD.caller) + "_") + toString(aG)) + y)))))
384- then (bW ++ [StringEntry((((toString(aD.caller) + "_") + toString(aG)) + y), bk)])
385- else bW
391+ let bZ = [IntegerEntry((((toString(aG.caller) + "_") + toString(aJ)) + Z), (ce + ch)), IntegerEntry((((toString(aG.caller) + "_") + toString(aJ)) + Y), (cc + bg)), IntegerEntry((toString(aJ) + C), (cd + bg))]
392+ if (!(isDefined(getString(this, (((toString(aG.caller) + "_") + toString(aJ)) + z)))))
393+ then (bZ ++ [StringEntry((((toString(aG.caller) + "_") + toString(aJ)) + z), bn)])
394+ else bZ
386395 }
387396 else throw("Strict value is not equal to itself.")
388397 }
389398 })
390399
391400
392401
393-@Callable(aD)
394-func commitHighCompetitionSale (aG,bk) = valueOrElse(aB(), {
395- let cf = $Tuple2(aD.payments[0].amount, aD.payments[0].assetId)
396- let bd = cf._1
397- let be = cf._2
398- let cg = aE(value(getString(this, (toString(aG) + J))))
399- let bn = cg._1
400- let bo = cg._2
401- let bp = cg._3
402- let bq = cg._4
403- let aK = value(getInteger(this, (toString(aG) + k)))
404- let aL = value(getInteger(this, (toString(aG) + A)))
405- let ch = valueOrElse(getInteger(this, (((toString(aD.caller) + "_") + toString(aG)) + V)), 0)
406- let ci = valueOrElse(getBoolean(this, (toString(aG) + M)), false)
407- if ((ak != aG))
402+@Callable(aG)
403+func commitHighCompetitionSale (aJ,bn) = valueOrElse(aE(), {
404+ let ci = $Tuple2(aG.payments[0].amount, aG.payments[0].assetId)
405+ let bg = ci._1
406+ let bh = ci._2
407+ let cj = aH(value(getString(this, (toString(aJ) + K))))
408+ let bq = cj._1
409+ let br = cj._2
410+ let bs = cj._3
411+ let bt = cj._4
412+ let aN = value(getInteger(this, (toString(aJ) + l)))
413+ let aO = value(getInteger(this, (toString(aJ) + B)))
414+ let ck = valueOrElse(getInteger(this, (((toString(aG.caller) + "_") + toString(aJ)) + W)), 0)
415+ let cl = valueOrElse(getBoolean(this, (toString(aJ) + N)), false)
416+ if ((al != aJ))
408417 then throw("There is no active launchpad or this launchpad is ended")
409- else if (!(ci))
418+ else if (!(cl))
410419 then throw("There is no high competition sale for this launchpad")
411- else if ((aK > height))
420+ else if ((aN > height))
412421 then throw("Launchpad sale not started yet")
413- else if ((height > (aK + aL)))
422+ else if ((height > (aN + aO)))
414423 then throw("Launchpad sale ended")
415- else if (if ((size(aD.payments) != 1))
424+ else if (if ((size(aG.payments) != 1))
416425 then true
417- else (be != bn))
418- then throw((("One attached payment in " + bp) + " expected"))
426+ else (bh != bq))
427+ then throw((("One attached payment in " + bs) + " expected"))
419428 else {
420- let bw = getIntegerValue(this, (toString(aG) + r))
421- let aO = getIntegerValue(this, (toString(aG) + q))
422- let cj = aE(getStringValue(this, (toString(aG) + n)))
423- let by = cj._1
424- let bz = cj._2
425- let bA = cj._3
426- let bB = cj._4
427- let bC = fraction(aO, bw, pow(10, 0, bB, 0, 0, DOWN))
428- let bD = fraction(bC, getIntegerValue(this, (toString(aG) + L)), 100)
429- let bE = (bd / (bC + bD))
430- let ck = (bE * (bC + bD))
431- let bH = (bd - ck)
432- if ((bE == 0))
433- then throw((("Not enought " + bp) + " to buy tickets"))
434- else if ((bH != 0))
435- then throw((((("Wrong payment. To buy " + toString(bE)) + "tickets you need to pay ") + toString(ck)) + bp))
429+ let bz = getIntegerValue(this, (toString(aJ) + s))
430+ let aR = getIntegerValue(this, (toString(aJ) + r))
431+ let cm = aH(getStringValue(this, (toString(aJ) + o)))
432+ let bB = cm._1
433+ let bC = cm._2
434+ let bD = cm._3
435+ let bE = cm._4
436+ let bF = fraction(aR, bz, pow(10, 0, bE, 0, 0, DOWN))
437+ let bG = fraction(bF, getIntegerValue(this, (toString(aJ) + M)), 100)
438+ let bH = (bg / (bF + bG))
439+ let cn = (bH * (bF + bG))
440+ let bK = (bg - cn)
441+ if ((bH == 0))
442+ then throw((("Not enought " + bs) + " to buy tickets"))
443+ else if ((bK != 0))
444+ then throw((((("Wrong payment. To buy " + toString(bH)) + "tickets you need to pay ") + toString(cn)) + bs))
436445 else {
437- let bR = valueOrElse(getString(this, (((toString(aD.caller) + "_") + toString(aG)) + U)), "")
438- let bS = getIntegerValue(this, (toString(aG) + N))
439- let bT = ((toString((bS + 1)) + "-") + toString((bS + bE)))
440- let bU = (bR + (if ((bR != ""))
441- then ("," + bT)
442- else ("" + bT)))
443- let bV = if ((bn == ah))
444- then invoke(ag, "lockNeutrino", nil, [AttachedPayment(be, bd)])
446+ let bU = valueOrElse(getString(this, (((toString(aG.caller) + "_") + toString(aJ)) + V)), "")
447+ let bV = getIntegerValue(this, (toString(aJ) + O))
448+ let bW = ((toString((bV + 1)) + "-") + toString((bV + bH)))
449+ let bX = (bU + (if ((bU != ""))
450+ then ("," + bW)
451+ else ("" + bW)))
452+ let bY = if ((bq == ai))
453+ then invoke(ah, "lockNeutrino", nil, [AttachedPayment(bh, bg)])
445454 else 0
446- if ((bV == bV))
455+ if ((bY == bY))
447456 then {
448- let bW = [IntegerEntry((((toString(aD.caller) + "_") + toString(aG)) + V), (ch + bE)), IntegerEntry((toString(aG) + N), (bS + bE)), StringEntry((((toString(aD.caller) + "_") + toString(aG)) + U), bU)]
449- if (!(isDefined(getString(this, (((toString(aD.caller) + "_") + toString(aG)) + y)))))
450- then (bW ++ [StringEntry((((toString(aD.caller) + "_") + toString(aG)) + y), bk)])
451- else bW
457+ let bZ = [IntegerEntry((((toString(aG.caller) + "_") + toString(aJ)) + W), (ck + bH)), IntegerEntry((toString(aJ) + O), (bV + bH)), StringEntry((((toString(aG.caller) + "_") + toString(aJ)) + V), bX)]
458+ if (!(isDefined(getString(this, (((toString(aG.caller) + "_") + toString(aJ)) + z)))))
459+ then (bZ ++ [StringEntry((((toString(aG.caller) + "_") + toString(aJ)) + z), bn)])
460+ else bZ
452461 }
453462 else throw("Strict value is not equal to itself.")
454463 }
455464 }
456465 })
457466
458467
459468
460-@Callable(aD)
461-func finalise (aG,cl,cm) = valueOrElse(aB(), valueOrElse(aC(aD), {
462- let cn = getStringValue(this, (toString(aG) + z))
463- let co = toBase58String(sha256((toBytes(cl) + toBytes(cm))))
464- if ((co != cn))
469+@Callable(aG)
470+func finalise (aJ,co,cp) = valueOrElse(aE(), valueOrElse(aF(aG), {
471+ let cq = getStringValue(this, (toString(aJ) + A))
472+ let cr = toBase58String(sha256((toBytes(co) + toBytes(cp))))
473+ if ((cr != cq))
465474 then throw("vrf Height hash not matching")
466475 else {
467- let cp = aE(value(getString(this, (toString(aG) + J))))
468- let bn = cp._1
469- let bo = cp._2
470- let bp = cp._3
471- let bq = cp._4
472- let aJ = addressFromStringValue(getStringValue(this, (toString(aG) + i)))
473- let aN = getIntegerValue(this, (toString(aG) + m))
474- let cq = getIntegerValue(this, (toString(aG) + L))
475- let cr = valueOrElse(getInteger(this, (toString(aG) + D)), 0)
476- let cs = getIntegerValue(this, (toString(aG) + p))
477- let ct = valueOrElse(getInteger(this, (toString(aG) + P)), 0)
478- let cu = fraction(cs, aN, 100)
479- let cv = fraction(ct, cq, 100)
480- let cw = getIntegerValue(this, (toString(aG) + C))
481- let cx = fraction(cw, aN, 100)
482- let cy = ((((((cs + cw) + cu) + cx) + ct) + cv) - cr)
483- if ((cr > ((cs + cw) + ct)))
476+ let cs = aH(value(getString(this, (toString(aJ) + K))))
477+ let bq = cs._1
478+ let br = cs._2
479+ let bs = cs._3
480+ let bt = cs._4
481+ let aM = addressFromStringValue(getStringValue(this, (toString(aJ) + j)))
482+ let aQ = getIntegerValue(this, (toString(aJ) + n))
483+ let ct = getIntegerValue(this, (toString(aJ) + M))
484+ let cu = valueOrElse(getInteger(this, (toString(aJ) + E)), 0)
485+ let cv = getIntegerValue(this, (toString(aJ) + q))
486+ let cw = valueOrElse(getInteger(this, (toString(aJ) + Q)), 0)
487+ let cx = fraction(cv, aQ, 100)
488+ let cy = fraction(cw, ct, 100)
489+ let cz = getIntegerValue(this, (toString(aJ) + D))
490+ let cA = fraction(cz, aQ, 100)
491+ let cB = ((((((cv + cz) + cx) + cA) + cw) + cy) - cu)
492+ if ((cu > ((cv + cz) + cw)))
484493 then throw("Can't transfer negative value to project")
485494 else {
486- let bV = if ((bn == ah))
487- then invoke(ag, "unlockNeutrino", [cy, toBase58String(ah)], nil)
495+ let bY = if ((bq == ai))
496+ then invoke(ah, "unlockNeutrino", [cB, toBase58String(ai)], nil)
488497 else 0
489- if ((bV == bV))
490- then [IntegerEntry((toString(aG) + l), height), ScriptTransfer(aJ, (((cs + ct) + cw) - cr), bn), ScriptTransfer(af, ((cu + cx) + cv), bn)]
498+ if ((bY == bY))
499+ then [IntegerEntry((toString(aJ) + m), height), ScriptTransfer(aM, (((cv + cw) + cz) - cu), bq), ScriptTransfer(ag, ((cx + cA) + cy), bq)]
491500 else throw("Strict value is not equal to itself.")
492501 }
493502 }
494503 }))
495504
496505
497506
498-@Callable(aD)
499-func claim (aG) = valueOrElse(aB(), {
500- let cz = valueOrElse(getInteger(this, (((toString(aD.caller) + "_") + toString(aG)) + S)), 0)
501- let cA = valueOrElse(getInteger(this, (((toString(aD.caller) + "_") + toString(aG)) + V)), 0)
502- let cb = valueOrElse(getInteger(this, (((toString(aD.caller) + "_") + toString(aG)) + Y)), 0)
503- let cB = valueOrElse(getBoolean(this, (((toString(aD.caller) + "_") + toString(aG)) + Z)), false)
504- let cC = valueOrElse(getInteger(this, (toString(aG) + l)), 0)
505- if ((cC == 0))
507+@Callable(aG)
508+func claim (aJ) = valueOrElse(aE(), {
509+ let cC = valueOrElse(getInteger(this, (((toString(aG.caller) + "_") + toString(aJ)) + T)), 0)
510+ let cD = valueOrElse(getInteger(this, (((toString(aG.caller) + "_") + toString(aJ)) + W)), 0)
511+ let ce = valueOrElse(getInteger(this, (((toString(aG.caller) + "_") + toString(aJ)) + Z)), 0)
512+ let cE = valueOrElse(getBoolean(this, (((toString(aG.caller) + "_") + toString(aJ)) + aa)), false)
513+ let cF = valueOrElse(getInteger(this, (toString(aJ) + m)), 0)
514+ if ((cF == 0))
506515 then throw("You can't claim because results are not finalized")
507- else if (cB)
516+ else if (cE)
508517 then throw("You are already claimed")
509- else if (if (if ((cz == 0))
510- then (cb == 0)
518+ else if (if (if ((cC == 0))
519+ then (ce == 0)
511520 else false)
512- then (cA == 0)
521+ then (cD == 0)
513522 else false)
514523 then throw("You can't claim because you don't buy anything")
515524 else {
516- let cD = aE(valueOrElse(getString(this, (toString(aG) + J)), toBase58String(ah)))
517- let bn = cD._1
518- let bo = cD._2
519- let bp = cD._3
520- let bq = cD._4
521- let cE = valueOrElse(getInteger(this, (((toString(aD.caller) + "_") + toString(aG)) + aa)), 0)
522- let cF = valueOrElse(getInteger(this, (((toString(aD.caller) + "_") + toString(aG)) + ab)), 0)
523- let cG = valueOrElse(getInteger(this, (((toString(aD.caller) + "_") + toString(aG)) + W)), 0)
524- let aN = getIntegerValue(this, (toString(aG) + m))
525- let cq = valueOrElse(getInteger(this, (toString(aG) + L)), 0)
526- let cH = min([cb, cG])
527- let bw = getIntegerValue(this, (toString(aG) + r))
528- let aO = getIntegerValue(this, (toString(aG) + q))
529- let cI = aE(getStringValue(this, (toString(aG) + n)))
530- let by = cI._1
531- let bz = cI._2
532- let bA = cI._3
533- let bB = cI._4
534- let bC = fraction(aO, bw, pow(10, 0, bB, 0, 0, DOWN))
535- let aS = getIntegerValue(this, (toString(aG) + v))
536- let cJ = (((cE * aO) + (cH * aS)) + (cF * aO))
537- let cK = ((cb - cH) * aS)
538- let cL = fraction(fraction(cK, bw, pow(10, 0, bB, 0, 0, DOWN)), (100 + aN), 100)
539- let cM = fraction(((cz - cE) * bC), (100 + aN), 100)
540- let cN = fraction(((cA - cF) * bC), (100 + cq), 100)
541- let cO = valueOrElse(getInteger(this, (((toString(aD.caller) + "_") + toString(aG)) + R)), 0)
542- if (if (if ((0 > cL))
525+ let cG = aH(valueOrElse(getString(this, (toString(aJ) + K)), toBase58String(ai)))
526+ let bq = cG._1
527+ let br = cG._2
528+ let bs = cG._3
529+ let bt = cG._4
530+ let cH = valueOrElse(getInteger(this, (((toString(aG.caller) + "_") + toString(aJ)) + ab)), 0)
531+ let cI = valueOrElse(getInteger(this, (((toString(aG.caller) + "_") + toString(aJ)) + ac)), 0)
532+ let cJ = valueOrElse(getInteger(this, (((toString(aG.caller) + "_") + toString(aJ)) + X)), 0)
533+ let aQ = getIntegerValue(this, (toString(aJ) + n))
534+ let ct = valueOrElse(getInteger(this, (toString(aJ) + M)), 0)
535+ let cK = min([ce, cJ])
536+ let bz = getIntegerValue(this, (toString(aJ) + s))
537+ let aR = getIntegerValue(this, (toString(aJ) + r))
538+ let cL = aH(getStringValue(this, (toString(aJ) + o)))
539+ let bB = cL._1
540+ let bC = cL._2
541+ let bD = cL._3
542+ let bE = cL._4
543+ let bF = fraction(aR, bz, pow(10, 0, bE, 0, 0, DOWN))
544+ let aV = getIntegerValue(this, (toString(aJ) + w))
545+ let cM = (((cH * aR) + (cK * aV)) + (cI * aR))
546+ let cN = ((ce - cK) * aV)
547+ let cO = fraction(fraction(cN, bz, pow(10, 0, bE, 0, 0, DOWN)), (100 + aQ), 100)
548+ let cP = fraction(((cC - cH) * bF), (100 + aQ), 100)
549+ let cQ = fraction(((cD - cI) * bF), (100 + ct), 100)
550+ let cR = valueOrElse(getInteger(this, (((toString(aG.caller) + "_") + toString(aJ)) + S)), 0)
551+ if (if (if ((0 > cO))
543552 then true
544- else (0 > cM))
553+ else (0 > cP))
545554 then true
546- else (0 > cN))
555+ else (0 > cQ))
547556 then throw("Error with allowed allocation param or wonned tickets param please contact support")
548557 else {
549- let cP = (((cM + cN) + cL) - cO)
550- let cQ = if ((cP > 0))
551- then [ScriptTransfer(aD.caller, cP, bn), IntegerEntry((((toString(aD.caller) + "_") + toString(aG)) + R), cP)]
558+ let cS = (((cP + cQ) + cO) - cR)
559+ let cT = if ((cS > 0))
560+ then [ScriptTransfer(aG.caller, cS, bq), IntegerEntry((((toString(aG.caller) + "_") + toString(aJ)) + S), cS)]
552561 else nil
553- let bV = if (if ((cP > 0))
554- then (bn == ah)
562+ let bY = if (if ((cS > 0))
563+ then (bq == ai)
555564 else false)
556- then invoke(ag, "unlockNeutrino", [cP, toBase58String(ah)], nil)
565+ then invoke(ah, "unlockNeutrino", [cS, toBase58String(ai)], nil)
557566 else 0
558- if ((bV == bV))
567+ if ((bY == bY))
559568 then {
560- let cR = split(valueOrElse(getString(this, (toString(aG) + K)), "claimAll"), ",")
561- if ((cR[0] == "claimAll"))
569+ let cU = split(valueOrElse(getString(this, (toString(aJ) + L)), "claimAll"), ",")
570+ if ((cU[0] == "claimAll"))
562571 then {
563- let cS = if ((cJ > 0))
564- then [ScriptTransfer(aD.caller, cJ, by)]
572+ let cV = if ((cM > 0))
573+ then [ScriptTransfer(aG.caller, cM, bB)]
565574 else nil
566- (([BooleanEntry((((toString(aD.caller) + "_") + toString(aG)) + Z), true), IntegerEntry((((toString(aD.caller) + "_") + toString(aG)) + Q), cJ)] ++ cS) ++ cQ)
575+ (([BooleanEntry((((toString(aG.caller) + "_") + toString(aJ)) + aa), true), IntegerEntry((((toString(aG.caller) + "_") + toString(aJ)) + R), cM)] ++ cV) ++ cT)
567576 }
568- else if ((cR[0] == "claimPeriod"))
577+ else if ((cU[0] == "claimPeriod"))
569578 then {
570- let cT = valueOrElse(getInteger(this, (((toString(aD.caller) + "_") + toString(aG)) + Q)), 0)
571- let cU = value(parseInt(cR[2]))
572- let cV = (value(parseInt(cR[3])) + cC)
573- let cW = (cU + cV)
574- let cX = fraction(cJ, value(parseInt(cR[1])), 100)
575- let cY = (cX + (if ((height > cV))
576- then (fraction((cJ - cX), (min([height, cW]) - cV), cU) - cT)
577- else (0 - cT)))
578- let cZ = if ((cJ >= (cT + cY)))
579- then [BooleanEntry((((toString(aD.caller) + "_") + toString(aG)) + Z), true)]
579+ let cW = valueOrElse(getInteger(this, (((toString(aG.caller) + "_") + toString(aJ)) + R)), 0)
580+ let cX = value(parseInt(cU[2]))
581+ let cY = (value(parseInt(cU[3])) + cF)
582+ let cZ = (cX + cY)
583+ let da = fraction(cM, value(parseInt(cU[1])), 100)
584+ let db = (da + (if ((height > cY))
585+ then (fraction((cM - da), (min([height, cZ]) - cY), cX) - cW)
586+ else (0 - cW)))
587+ let dc = if ((cM >= (cW + db)))
588+ then [BooleanEntry((((toString(aG.caller) + "_") + toString(aJ)) + aa), true)]
580589 else nil
581- if (if ((cY > 0))
590+ if (if ((db > 0))
582591 then true
583- else (cP > 0))
592+ else (cS > 0))
584593 then {
585- let cS = if ((cY > 0))
586- then [IntegerEntry((((toString(aD.caller) + "_") + toString(aG)) + Q), (cT + cY)), ScriptTransfer(aD.caller, cY, by)]
594+ let cV = if ((db > 0))
595+ then [IntegerEntry((((toString(aG.caller) + "_") + toString(aJ)) + R), (cW + db)), ScriptTransfer(aG.caller, db, bB)]
587596 else nil
588- (cQ ++ cS)
597+ (cT ++ cV)
589598 }
590599 else throw("Nothing to claim")
591600 }
592601 else throw("Unknown claim function")
593602 }
594603 else throw("Strict value is not equal to itself.")
595604 }
596605 }
597606 })
598607
599608
600609
601-@Callable(aD)
602-func claimFreezeToken (aG) = valueOrElse(aB(), {
603- let aZ = valueOrElse(getBoolean(this, (toString(aG) + F)), false)
604- if (!(isDefined(getInteger(this, (toString(aG) + l)))))
610+@Callable(aG)
611+func claimFreezeToken (aJ) = valueOrElse(aE(), {
612+ let bc = valueOrElse(getBoolean(this, (toString(aJ) + G)), false)
613+ if (!(isDefined(getInteger(this, (toString(aJ) + m)))))
605614 then throw("You can't claim because results are not finalized")
606- else if (!(aZ))
615+ else if (!(bc))
607616 then throw("There are no additional token freezing for this launchpad")
608617 else {
609- let by = fromBase58String(getStringValue(this, (toString(aG) + G)))
610- let da = valueOrElse(getInteger(this, (((toString(aD.caller) + "_") + toString(aG)) + ac)), 0)
611- let aK = valueOrElse(getInteger(this, (toString(aG) + k)), 0)
612- let aL = valueOrElse(getInteger(this, (toString(aG) + A)), 0)
613- let db = getIntegerValue(this, (toString(aG) + H))
614- let dc = ((aK + aL) + db)
615- if ((da == 0))
618+ let bB = fromBase58String(getStringValue(this, (toString(aJ) + H)))
619+ let dd = valueOrElse(getInteger(this, (((toString(aG.caller) + "_") + toString(aJ)) + ad)), 0)
620+ let aN = valueOrElse(getInteger(this, (toString(aJ) + l)), 0)
621+ let aO = valueOrElse(getInteger(this, (toString(aJ) + B)), 0)
622+ let de = getIntegerValue(this, (toString(aJ) + I))
623+ let df = ((aN + aO) + de)
624+ if ((dd == 0))
616625 then throw("You are already claimed your tokens or not paid anything")
617- else if ((dc > height))
618- then throw(("Your tokens freezed teel " + toString(dc)))
619- else [ScriptTransfer(aD.caller, da, by), IntegerEntry((((toString(aD.caller) + "_") + toString(aG)) + ac), 0)]
626+ else if ((df > height))
627+ then throw(("Your tokens freezed teel " + toString(df)))
628+ else [ScriptTransfer(aG.caller, dd, bB), IntegerEntry((((toString(aG.caller) + "_") + toString(aJ)) + ad), 0)]
620629 }
621630 })
622631
623632
624633
625-@Callable(aD)
626-func transferBuyAsset (aG,dd) = valueOrElse(aB(), valueOrElse(aC(aD), {
627- let aJ = addressFromStringValue(getStringValue(this, (toString(aG) + i)))
628- let de = aE(value(getString(this, (toString(aG) + J))))
629- let bn = de._1
630- let bo = de._2
631- let bp = de._3
632- let bq = de._4
633- let cr = valueOrElse(getInteger(this, (toString(aG) + D)), 0)
634- let bV = if (if ((dd > 0))
635- then (bn == ah)
634+@Callable(aG)
635+func transferBuyAsset (aJ,dg) = valueOrElse(aE(), valueOrElse(aF(aG), {
636+ let aM = addressFromStringValue(getStringValue(this, (toString(aJ) + j)))
637+ let dh = aH(value(getString(this, (toString(aJ) + K))))
638+ let bq = dh._1
639+ let br = dh._2
640+ let bs = dh._3
641+ let bt = dh._4
642+ let cu = valueOrElse(getInteger(this, (toString(aJ) + E)), 0)
643+ let bY = if (if ((dg > 0))
644+ then (bq == ai)
636645 else false)
637- then invoke(ag, "unlockNeutrino", [dd, toBase58String(ah)], nil)
646+ then invoke(ah, "unlockNeutrino", [dg, toBase58String(ai)], nil)
638647 else 0
639- if ((bV == bV))
640- then [IntegerEntry((toString(aG) + D), (cr + dd)), ScriptTransfer(aJ, dd, bn)]
648+ if ((bY == bY))
649+ then [IntegerEntry((toString(aJ) + E), (cu + dg)), ScriptTransfer(aM, dg, bq)]
641650 else throw("Strict value is not equal to itself.")
642651 }))
643652
644653
645654
646-@Callable(aD)
647-func shutdown () = valueOrElse(aC(aD), if (!(aA))
655+@Callable(aG)
656+func shutdown () = valueOrElse(aF(aG), if (!(aC))
648657 then throw("DApp already inactive")
649658 else [BooleanEntry(a, false)])
650659
651660
652661
653-@Callable(aD)
654-func activate () = valueOrElse(aC(aD), if (aA)
662+@Callable(aG)
663+func activate () = valueOrElse(aF(aG), if (aC)
655664 then throw("DApp already active")
656665 else [BooleanEntry(a, true)])
657666
658667
659-@Verifier(df)
660-func dg () = {
661- let dh = {
662- let di = if (sigVerify(df.bodyBytes, df.proofs[0], aq))
668+@Verifier(di)
669+func dj () = {
670+ let dk = {
671+ let dl = if (sigVerify(di.bodyBytes, di.proofs[0], ar))
663672 then 1
664673 else 0
665- let dj = if (sigVerify(df.bodyBytes, df.proofs[1], ar))
674+ let dm = if (sigVerify(di.bodyBytes, di.proofs[1], as))
666675 then 1
667676 else 0
668- let dk = if (sigVerify(df.bodyBytes, df.proofs[2], as))
677+ let dn = if (sigVerify(di.bodyBytes, di.proofs[2], at))
669678 then 1
670679 else 0
671- (((di + dj) + dk) >= 2)
680+ (((dl + dm) + dn) >= 2)
672681 }
673- let dl = if (if (if (sigVerify(df.bodyBytes, df.proofs[0], aq))
682+ let do = if (if (if (sigVerify(di.bodyBytes, di.proofs[0], ar))
674683 then true
675- else sigVerify(df.bodyBytes, df.proofs[0], ar))
684+ else sigVerify(di.bodyBytes, di.proofs[0], as))
676685 then true
677- else sigVerify(df.bodyBytes, df.proofs[0], as))
686+ else sigVerify(di.bodyBytes, di.proofs[0], at))
678687 then true
679- else sigVerify(df.bodyBytes, df.proofs[0], ai)
680- let an = df
681- if ($isInstanceOf(an, "DataTransaction"))
688+ else sigVerify(di.bodyBytes, di.proofs[0], aj)
689+ let ao = di
690+ if ($isInstanceOf(ao, "DataTransaction"))
682691 then {
683- let dm = an
684- if (valueOrElse(getBoolean(ad, e), false))
685- then dl
692+ let dp = ao
693+ if (valueOrElse(getBoolean(ae, f), false))
694+ then do
686695 else false
687696 }
688- else dh
697+ else dk
689698 }
690699

github/deemru/w8io/3ef1775 
381.57 ms