tx · J1MKT2c23fPEq9HGgY8L3waCiyk8qshDeYedpnqZYJEY

3N7HtrKeFFLz5oy6PfGv1Lg3GwPk4gCPdGy:  -0.02600000 Waves

2024.11.25 16:56 [3387031] smart account 3N7HtrKeFFLz5oy6PfGv1Lg3GwPk4gCPdGy > SELF 0.00000000 Waves

{ "type": 13, "id": "J1MKT2c23fPEq9HGgY8L3waCiyk8qshDeYedpnqZYJEY", "fee": 2600000, "feeAssetId": null, "timestamp": 1732542991653, "version": 2, "chainId": 84, "sender": "3N7HtrKeFFLz5oy6PfGv1Lg3GwPk4gCPdGy", "senderPublicKey": "FsR18761ZAsUqsTd7TK3XmR6bhihs1UXVmpHYxz5JzQ1", "proofs": [ "3oaTadtcRq2p1vD2R7EJtQTbr7Tkehvew8FuhuX6ok1VmrMsZjBBZHEAizR3mLUtaj8XjihZwfzKApLG8xoyh8FX" ], "script": "base64:BgJHCAISBgoECAgICBIDCgEIEgMKAQESBAoCCAESAwoBARIECgIIARIAEgMKAQgSAwoBARIDCgEBEgMKAQgSAwoBCBIDCgEBEgCSAQADU0VQAgJfXwAFTVVMVDYAwIQ9AAVNVUxUOACAwtcvAA5NSU5TSE9QUEFZTUVOVACgjQYACkRBWV9NSUxMSVMAgLiZKQAFY2hhaW4JAMkBAgkAygECCAUEdGhpcwVieXRlcwABAAEACkRBWV9CTE9DS1MEByRtYXRjaDAFBWNoYWluAwkAAAIBAVcFByRtYXRjaDAAoAsDCQAAAgEBVAUHJG1hdGNoMAA8CQACAQINVW5rbm93biBjaGFpbgALV0VFS19CTE9DS1MEByRtYXRjaDAFBWNoYWluAwkAAAIBAVcFByRtYXRjaDAA4E4DCQAAAgEBVAUHJG1hdGNoMAC0AQkAAgECDVVua25vd24gY2hhaW4AClZSRl9PRkZTRVQEByRtYXRjaDAFBWNoYWluAwkAAAIBAVcFByRtYXRjaDAAAAMJAAACAQFUBQckbWF0Y2gwAJD5RQkAAgECDVVua25vd24gY2hhaW4AC3VzZHRBc3NldElkBAckbWF0Y2gwBQVjaGFpbgMJAAACAQFXBQckbWF0Y2gwASCE2nqyCAM/TtG7yo7ui5O8yYLdC136B5ao1CP5qA//uQMJAAACAQFUBQckbWF0Y2gwASBVsdifcoeC7+XjW42sBatl3ppDoS8WuwXzGreHpfHFGAkAAgECDVVua25vd24gY2hhaW4AFmRlZmF1bHRSZXN0MkFkZHJlc3NTdHIEByRtYXRjaDAFBWNoYWluAwkAAAIBAVcFByRtYXRjaDACIzNQRndZdGE4YmlFejMxenBlRmU1REpLOHdFNXRyU3BRVkY4AwkAAAIBAVQFByRtYXRjaDACIzNON1V1WWFyNjI2NFA1OEZCaFZXS1BRQWg0WXVhMmhnbmd2CQACAQINVW5rbm93biBjaGFpbgAVZGVmYXVsdFJlc3RBZGRyZXNzU3RyBAckbWF0Y2gwBQVjaGFpbgMJAAACAQFXBQckbWF0Y2gwAiMzUFFDdXZGYnZoNExrUFVucm5VMXozam5iQTFwOW0zV05odgMJAAACAQFUBQckbWF0Y2gwAiMzTXVta0dHenRDS0FYcFdEcXhrZGRvZnFYU1VicVFrdlNKeQkAAgECDVVua25vd24gY2hhaW4AEUtTX0FMTE9XX05GVF9EUkFXBAckbWF0Y2gwBQVjaGFpbgMJAAACAQFXBQckbWF0Y2gwBwMJAAACAQFUBQckbWF0Y2gwBgkAAgECDVVua25vd24gY2hhaW4BD2dldFN0cmluZ09yRmFpbAIHYWRkcmVzcwNrZXkJARN2YWx1ZU9yRXJyb3JNZXNzYWdlAgkAnQgCBQdhZGRyZXNzBQNrZXkJALkJAgkAzAgCAgptYW5kYXRvcnkgCQDMCAIJAKUIAQUHYWRkcmVzcwkAzAgCAgEuCQDMCAIFA2tleQkAzAgCAg8gaXMgbm90IGRlZmluZWQFA25pbAIAABBJZHhDZmdBY3JlczJEYXBwAAEADUlkeENmZ1dsZ0RhcHAAAgAUSWR4Q2ZnUHV6emxlUG9vbERhcHAABAAUSWR4Q2ZnSW52ZXN0RnVuZERhcHAABQEKa2V5UmVzdENmZwACDiVzX19yZXN0Q29uZmlnAQ9rZXlSZXN0MkFkZHJlc3MAAg0lc19fcmVzdDJBZGRyAQ5rZXlSZXN0QWRkcmVzcwACDCVzX19yZXN0QWRkcgAMcmVzdENvbnRyYWN0CQERQGV4dHJOYXRpdmUoMTA2MikBCQELdmFsdWVPckVsc2UCCQCdCAIFBHRoaXMJAQ5rZXlSZXN0QWRkcmVzcwAFFWRlZmF1bHRSZXN0QWRkcmVzc1N0cgERcmVhZFJlc3RDZmdPckZhaWwBBHJlc3QJALwJAgkBD2dldFN0cmluZ09yRmFpbAIFBHJlc3QJAQprZXlSZXN0Q2ZnAAUDU0VQARhnZXRDb250cmFjdEFkZHJlc3NPckZhaWwCCHJlc3QyQ2ZnA2lkeAkBE3ZhbHVlT3JFcnJvck1lc3NhZ2UCCQCmCAEJAJEDAgUIcmVzdDJDZmcFA2lkeAkArAICAipSZXN0IGNmZyBkb2Vzbid0IGNvbnRhaW4gYWRkcmVzcyBhdCBpbmRleCAJAKQDAQUDaWR4ABFJZHhDZmdTdGFraW5nRGFwcAABAA9JZHhDZmdBY3Jlc0RhcHAACAAHcmVzdENmZwkBEXJlYWRSZXN0Q2ZnT3JGYWlsAQUMcmVzdENvbnRyYWN0AA9zdGFraW5nQ29udHJhY3QJARhnZXRDb250cmFjdEFkZHJlc3NPckZhaWwCBQdyZXN0Q2ZnBRFJZHhDZmdTdGFraW5nRGFwcAANYWNyZXNDb250cmFjdAkBGGdldENvbnRyYWN0QWRkcmVzc09yRmFpbAIFB3Jlc3RDZmcFD0lkeENmZ0FjcmVzRGFwcAANcmVzdDJDb250cmFjdAkBEUBleHRyTmF0aXZlKDEwNjIpAQkBC3ZhbHVlT3JFbHNlAgkAnQgCBQR0aGlzCQEPa2V5UmVzdDJBZGRyZXNzAAUWZGVmYXVsdFJlc3QyQWRkcmVzc1N0cgAIcmVzdDJDZmcJARFyZWFkUmVzdENmZ09yRmFpbAEFDXJlc3QyQ29udHJhY3QADmFjcmVzMkNvbnRyYWN0CQEYZ2V0Q29udHJhY3RBZGRyZXNzT3JGYWlsAgUIcmVzdDJDZmcFEElkeENmZ0FjcmVzMkRhcHAAC3dsZ0NvbnRyYWN0CQEYZ2V0Q29udHJhY3RBZGRyZXNzT3JGYWlsAgUIcmVzdDJDZmcFDUlkeENmZ1dsZ0RhcHAAEnB1enpsZVBvb2xDb250cmFjdAkBGGdldENvbnRyYWN0QWRkcmVzc09yRmFpbAIFCHJlc3QyQ2ZnBRRJZHhDZmdQdXp6bGVQb29sRGFwcAASaW52ZXN0RnVuZENvbnRyYWN0CQEYZ2V0Q29udHJhY3RBZGRyZXNzT3JGYWlsAgUIcmVzdDJDZmcFFElkeENmZ0ludmVzdEZ1bmREYXBwARVrZXlMYXN0V2Vla1R4SWRCeVVzZXIBBGFkZHIJAKwCAgITbGFzdFdlZWtUeElkQnlVc2VyXwUEYWRkcgANd2xnQXNzZXRJZEtleQILd2xnX2Fzc2V0SWQACndsZ0Fzc2V0SWQJARN2YWx1ZU9yRXJyb3JNZXNzYWdlAgkAnAgCBQt3bGdDb250cmFjdAUNd2xnQXNzZXRJZEtleQIYV0xHT0xEIGlzIG5vdCBpc3N1ZWQgeWV0AQprZXlVc2VyQmV0AQRhZGRyCQCsAgICCHVzZXJCZXRfBQRhZGRyARJrZXlVc2VyV2Vla1RpY2tldHMCBGFkZHIEd2VlawkArAICCQCsAgIJAKwCAgIQdXNlcldlZWtUaWNrZXRzXwUEYWRkcgIBXwkApAMBBQR3ZWVrARNrZXlUb3RhbFdlZWtUaWNrZXRzAQR3ZWVrCQCsAgICEXRvdGFsV2Vla1RpY2tldHNfCQCkAwEFBHdlZWsBGGtleVRvdGFsV2Vla1BhcnRpY2lwYW50cwEEd2VlawkArAICAhZ0b3RhbFdlZWtQYXJ0aWNpcGFudHNfCQCkAwEFBHdlZWsBDmtleU51bU5GVDJEcmF3AQR3ZWVrCQCsAgICDG51bU5GVDJEcmF3XwkApAMBBQR3ZWVrAQ5rZXlOdW1ORlREcmF3bgEEd2VlawkArAICAgxudW1ORlREcmF3bl8JAKQDAQUEd2VlawEOa2V5V2Vla1dpbm5lcnMBBHdlZWsJAKwCAgIMd2Vla1dpbm5lcnNfCQCkAwEFBHdlZWsBCndpbm5pbmdCZXQBA2RheQQBYgkAaAIFA2RheQUKREFZX0JMT0NLUwQBaAMJAGYCBQFiBQpWUkZfT0ZGU0VUBQFiCQBkAgUBYgUKVlJGX09GRlNFVAkAagIJALEJAQkBBXZhbHVlAQgJAQV2YWx1ZQEJAO0HAQkAZAIJAGgCBQNkYXkFCkRBWV9CTE9DS1MFClZSRl9PRkZTRVQDdnJmAAQBBWFzSW50AQF2BAckbWF0Y2gwBQF2AwkAAQIFByRtYXRjaDACA0ludAQBbgUHJG1hdGNoMAUBbgkAAgECFWZhaWwgdG8gY2FzdCBpbnRvIEludAEKZml4ZWRQb2ludAIDdmFsCGRlY2ltYWxzBAZ0ZW5Qb3cJAGwGAAoAAAUIZGVjaW1hbHMAAAAABQRET1dOBAdsb3dQYXJ0CQCkAwEJAGoCBQN2YWwFBnRlblBvdwQGemVyb2VzCQCwAgIJAKQDAQUGdGVuUG93CQBkAgABCQCxAgEFB2xvd1BhcnQJAKwCAgkArAICCQCsAgIJAKQDAQkAaQIFA3ZhbAUGdGVuUG93AgEuBQZ6ZXJvZXMFB2xvd1BhcnQBD2dldFJhbmRvbU51bWJlcgMIbWF4VmFsdWUEc2FsdAdlbnRyb3B5AwkAZwIAAAUIbWF4VmFsdWUJAAIBAhZtYXhWYWx1ZSBzaG91bGQgYmUgPiAwBApyYW5kb21IYXNoCQDUFgEJAMsBAgUEc2FsdAUHZW50cm9weQkAagIJALEJAQUKcmFuZG9tSGFzaAUIbWF4VmFsdWUABlNDQUxFOACAwtcvAAx4cExldmVsU2NhbGUAgBkAD3hwTGV2ZWxSZWNpcFBvdwCgHwASbnVtUG9pbnRzT25MZXZlbFVwAAMAD3dsZ0Jhc2VBbW91bnRYcACA0NvD9AIBCWtleVVzZXJYUAEEYWRkcgkArAICAgd1c2VyWFBfBQRhZGRyAQxrZXlVc2VyTGV2ZWwBBGFkZHIJAKwCAgIKdXNlckxldmVsXwUEYWRkcgAFeHBXbGcAkE4BCWxldmVsQnlYUAECeHAJAGsDBQx4cExldmVsU2NhbGUJAGwGBQJ4cAAEBQ94cExldmVsUmVjaXBQb3cABAAEBQRET1dOBQZTQ0FMRTgBB2xldmVsVXACCWN1cnJMZXZlbAVuZXdYUAQIbmV3TGV2ZWwJAQlsZXZlbEJ5WFABBQVuZXdYUAkAzAgCBQhuZXdMZXZlbAkAzAgCCQBoAgUSbnVtUG9pbnRzT25MZXZlbFVwCQBlAgUIbmV3TGV2ZWwFCWN1cnJMZXZlbAUDbmlsAAhNSUxMSU9ONgCAgOmDsd4WAAtQTEFZRVJTSEFSRQCAtRgACURBWU1JTExJUwCAuJkpAAt0ZWFtQWRkcktleQIIdGVhbUFkZHIAD2xhc3RUZWFtVGltZUtleQIUbGFzdENsYWltZWRUaW1lX3RlYW0AEXRlYW1BbW91bnRMZWZ0S2V5Ag50ZWFtQW1vdW50TGVmdAAVbGFzdEFjdGl2aXRpZXNUaW1lS2V5AhpsYXN0Q2xhaW1lZFRpbWVfYWN0aXZpdGllcwAQYWN0QW1vdW50TGVmdEtleQIUYWN0aXZpdGllc0Ftb3VudExlZnQAFHN0YWtlcnNBbW91bnRMZWZ0S2V5AhFzdGFrZXJzQW1vdW50TGVmdAEZa2V5TGFzdFdsZ1RyYWRlVGltZUJ5VXNlcgEEYWRkcgkArAICAhBsYXN0QXJiVGltZVVzZXJfBQRhZGRyARprZXlMYXN0V2xnVHJhZGVMaW1pdEJ5VXNlcgEEYWRkcgkArAICAhFsYXN0V2xnTGltaXRVc2VyXwUEYWRkcgAPd2xnSXNzdWVUaW1lS2V5Ag13bGdfaXNzdWVUaW1lABJ3bGdJc3N1ZWRBbW91bnRLZXkCEHdsZ19pc3N1ZWRBbW91bnQBGmtleUFjcmVzU3Rha2VkQW1vdW50QnlVc2VyAQRhZGRyCQCsAgICGGFjcmVzU3Rha2VkQW1vdW50QnlVc2VyXwUEYWRkcgEYa2V5V2xnU3Rha2VkQW1vdW50QnlVc2VyAQRhZGRyCQCsAgICFndsZ1N0YWtlZEFtb3VudEJ5VXNlcl8FBGFkZHIAEXdsZ1N0YWtlZFRvdGFsS2V5AhR3bGdTdGFrZWRBbW91bnRUb3RhbAEWa2V5V2xnU3Rha2VkVGltZUJ5VXNlcgEEYWRkcgkArAICAhR3bGdTdGFrZWRUaW1lQnlVc2VyXwUEYWRkcgADTTZfAMCEPQADTThfAIDC1y8AClRFQU1fU0hBUkUAwJoMAA5BQ1RJVklUWV9TSEFSRQCgjQYADFBMQVlFUl9TSEFSRQCAtRgAC1lFQVJfTUlMTElTAICG68d1AAZEQVlfTVMAgLiZKQAHSVNTVUUxMACAlOvcAwAPUExBWUVSUzEwX1NIQVJFAIDqMAARTUFSS0VUSU5HMTBfU0hBUkUAoI0GAAxURUFNMTBfU0hBUkUAoI0GABFORVdfU1RBS0lOR19TVEFSVACA87jCsTIAEG1hcmtldGluZ0FkZHJLZXkCDW1hcmtldGluZ0FkZHIACnRlYW1BZHJLZXkCCHRlYW1BZGRyAA5sYXN0VGVhbVRpbUtleQIUbGFzdENsYWltZWRUaW1lX3RlYW0ADnRlYW1BbXRMZWZ0S2V5Ag50ZWFtQW1vdW50TGVmdAAUbGFzdEFjdGl2aXRpZXNUaW1LZXkCGmxhc3RDbGFpbWVkVGltZV9hY3Rpdml0aWVzAA1hY3RBbXRMZWZ0S2V5AhRhY3Rpdml0aWVzQW1vdW50TGVmdAARc3Rha2Vyc0FtdExlZnRLZXkCEXN0YWtlcnNBbW91bnRMZWZ0ARZrZXlMYXN0Q2xhaW1UaW1lQnlVc2VyAQRhZGRyCQCsAgICFGxhc3RDbGFpbWVkVGltZVVzZXJfBQRhZGRyAQ1kaXN0ckJ5UGVyaW9kAgxpc3N1ZWRBbW91bnQGcGVyaW9kCQBrAwUMaXNzdWVkQW1vdW50CQBoAgUMUExBWUVSX1NIQVJFCQBkAgUGcGVyaW9kAAEJAGgCAAYFA002XwARd2xnSXNzdWUxMFRpbWVLZXkCD3dsZ19pc3N1ZTEwVGltZQAOd2xnSXNzdWVUaW1LZXkCDXdsZ19pc3N1ZVRpbWUAD3dsZ0lzc3VlZEFtdEtleQIQd2xnX2lzc3VlZEFtb3VudAAOemJJc3N1ZWRBbXRLZXkCEnpiaWxsX2lzc3VlZEFtb3VudAEXa2V5QWNyZXNTdGFrZWRBbXRCeVVzZXIBBGFkZHIJAKwCAgIYYWNyZXNTdGFrZWRBbW91bnRCeVVzZXJfBQRhZGRyABJhY3Jlc1N0YWtkVG90YWxLZXkCFmFjcmVzU3Rha2VkQW1vdW50VG90YWwAFHRvdGFsRmFybWluZ1Bvd2VyS2V5AhF0b3RhbEZhcm1pbmdQb3dlcgAJZGFwcDJSZXN0AAAADGRhcHAyU3Rha2luZwABAAhkYXBwMldsZwACAAtkYXBwMlB1enpsZQADAA9kYXBwMkludmVzdEZ1bmQABAAUSWR4RHR4MVBlcmNHZW1XaW5uZXIAAQAVREVGQVVMVF9XRUVLTFlfUFJJWkVTAAUADUFDUkVTX0ZPUl9CRVQAgMLXLwEQa2V5VXNlckZ1bGxCb251cwEEYWRkcgkArAICAg51c2VyRnVsbEJvbnVzXwUEYWRkcgAKbGV2ZWxBY3JlcwkAzAgCAAAJAMwIAgAKCQDMCAIAFAkAzAgCACgJAMwIAgBQCQDMCAIAlgEJAMwIAgD6AQkAzAgCAJADCQDMCAIAvAUJAMwIAgDoBwUDbmlsAQ9nZXRMZXZlbEJ5QWNyZXMBBWFjcmVzBANhY3IJAGkCCQBkAgUFYWNyZXMA/8HXLwUDTThfCgEHY2hlY2tlcgIDYWNjBGl0ZW0DCQBnAgUEaXRlbQUDYWNyBQNhY2MJAGQCBQNhY2MAAQoAAiRsBQpsZXZlbEFjcmVzCgACJHMJAJADAQUCJGwKAAUkYWNjMAAACgEFJGYwXzECAiRhAiRpAwkAZwIFAiRpBQIkcwUCJGEJAQdjaGVja2VyAgUCJGEJAJEDAgUCJGwFAiRpCgEFJGYwXzICAiRhAiRpAwkAZwIFAiRpBQIkcwUCJGEJAAIBAhRMaXN0IHNpemUgZXhjZWVkcyAxMAkBBSRmMF8yAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgUFJGFjYzAAAAABAAIAAwAEAAUABgAHAAgACQAKARZnZXRGYXJtaW5nUG93ZXJCeUFjcmVzAQVhY3JlcwkAaAIJAGgCBQVhY3JlcwAUCQBkAgkBD2dldExldmVsQnlBY3JlcwEFBWFjcmVzAAQBHmdldEZhcm1pbmdQb3dlckJ5QWNyZXNBbmRCb251cwIFYWNyZXMGYm9udXM2BApub3RCb251c2VkCQEWZ2V0RmFybWluZ1Bvd2VyQnlBY3JlcwEFBWFjcmVzCQCUCgIJAGsDBQpub3RCb251c2VkCQBkAgUDTTZfBQZib251czYFA002XwUKbm90Qm9udXNlZAEQZ2V0RmFybWluZ1Bvd2VycwISdXNlckFkZHJTdHJPckVtcHR5DmFjcmVzMkNvbnRyYWN0BAd0b3RhbEZQCQELdmFsdWVPckVsc2UCCQCaCAIFDmFjcmVzMkNvbnRyYWN0BRR0b3RhbEZhcm1pbmdQb3dlcktleQAABAl1c2VyQWNyZXMJAQt2YWx1ZU9yRWxzZQIJAJoIAgUOYWNyZXMyQ29udHJhY3QJARdrZXlBY3Jlc1N0YWtlZEFtdEJ5VXNlcgEFEnVzZXJBZGRyU3RyT3JFbXB0eQAABAl1c2VyQm9udXMJAQt2YWx1ZU9yRWxzZQIJAJoIAgUOYWNyZXMyQ29udHJhY3QJARBrZXlVc2VyRnVsbEJvbnVzAQUSdXNlckFkZHJTdHJPckVtcHR5AAAECCR0MDc5MTQzCQEeZ2V0RmFybWluZ1Bvd2VyQnlBY3Jlc0FuZEJvbnVzAgUJdXNlckFjcmVzBQl1c2VyQm9udXMEDXVzZXJGUGJvbnVzZWQIBQgkdDA3OTE0MwJfMQQQdXNlckZQbm90Qm9udXNlZAgFCCR0MDc5MTQzAl8yCQDMCAIFB3RvdGFsRlAJAMwIAgUNdXNlckZQYm9udXNlZAkAzAgCBRB1c2VyRlBub3RCb251c2VkCQDMCAIFCXVzZXJCb251cwUDbmlsAAppZHhUb3RhbEZQAAAAEGlkeFVzZXJGUGJvbnVzZWQAAQALaXhXbGdBbW91bnQAAAAIaXhXbGdXbGcAAQAKaXhXbGdQcmljZQACAA5peFdsZ0lzc3VlVGltZQAIAA9peFdsZ1RlYW1BbUxlZnQACwATaXhXbGdUZWFtQW1BdmFpbE5vdwAMAA5peFdsZ0FjdEFtTGVmdAAPABJpeFdsZ0FjdEFtQXZhaWxOb3cAEAAQaXhXbGdBbUxlZnRUb3RhbAATABNpeFdsZ1VzZXJBbUF2YWlsTm93ABcAEGl4V2xnRWZmVXNlclRpbWUAGAASaXhXbGdJc3N1ZTEwQW1vdW50ABkAG2l4V2xnTWFya2V0aW5nSXNzdWUxMEFtb3VudAAaABZpeFdsZ1RlYW1Jc3N1ZTEwQW1vdW50ABsAD2l4V2xnVXNlcjEwcGFydAAcABBpeFdsZ0lzc3VlMTBUaW1lAB0BDGdldFdsZ1N0YXRzMgQLdXNlckFkZHJPcHQJY29udHJhY3RzBnVzZHRJZBV1c2R0QmFsYW5jZUNvcnJlY3Rpb24EDGlzc3VlZEFtb3VudAkBE3ZhbHVlT3JFcnJvck1lc3NhZ2UCCQCaCAIJAJEDAgUJY29udHJhY3RzBQhkYXBwMldsZwUPd2xnSXNzdWVkQW10S2V5AhhXTEdPTEQgaXMgbm90IGlzc3VlZCB5ZXQEB3Jlc3RVc2QJAPAHAgkAkQMCBQljb250cmFjdHMFCWRhcHAyUmVzdAUGdXNkdElkBAZ3bGdVc2QJAGUCCQDwBwIJAJEDAgUJY29udHJhY3RzBQhkYXBwMldsZwUGdXNkdElkBRV1c2R0QmFsYW5jZUNvcnJlY3Rpb24ECXB1enpsZVVzZAkA8AcCCQCRAwIFCWNvbnRyYWN0cwULZGFwcDJQdXp6bGUFBnVzZHRJZAQJYWNyZXMyVXNkCQDwBwIJAJEDAgUJY29udHJhY3RzBQxkYXBwMlN0YWtpbmcFBnVzZHRJZAQRaW52ZXN0Rm5kQ29udHJhY3QJAJEDAgUJY29udHJhY3RzBQ9kYXBwMkludmVzdEZ1bmQED2ludmVzdEZ1bmRUb3RhbAkAZAIJAPAHAgURaW52ZXN0Rm5kQ29udHJhY3QFBnVzZHRJZAkBC3ZhbHVlT3JFbHNlAgkAmggCBRFpbnZlc3RGbmRDb250cmFjdAUOemJJc3N1ZWRBbXRLZXkAAAQNdG90YWxGdW5kc1VzZAkAZAIJAGQCBQlhY3JlczJVc2QFBndsZ1VzZAUPaW52ZXN0RnVuZFRvdGFsBAV3bGdJZAkBE3ZhbHVlT3JFcnJvck1lc3NhZ2UCCQCcCAIJAJEDAgUJY29udHJhY3RzBQhkYXBwMldsZwILd2xnX2Fzc2V0SWQCE05vdCBpbml0aWFsaXplZCB5ZXQEA25vdwgFCWxhc3RCbG9jawl0aW1lc3RhbXAECWlzc3VlVGltZQkBE3ZhbHVlT3JFcnJvck1lc3NhZ2UCCQCaCAIJAJEDAgUJY29udHJhY3RzBQhkYXBwMldsZwUOd2xnSXNzdWVUaW1LZXkCD05vdCBpbml0aWFsaXplZAQGd2xnV2xnCQDwBwIJAJEDAgUJY29udHJhY3RzBQhkYXBwMldsZwUFd2xnSWQECXRlYW1Ub3RhbAkAawMFDGlzc3VlZEFtb3VudAUKVEVBTV9TSEFSRQUDTTZfBA50ZWFtQW1vdW50TGVmdAkBC3ZhbHVlT3JFbHNlAgkAmggCCQCRAwIFCWNvbnRyYWN0cwUIZGFwcDJXbGcFDnRlYW1BbXRMZWZ0S2V5BQl0ZWFtVG90YWwEDGxhc3RUZWFtVGltZQkBC3ZhbHVlT3JFbHNlAgkAmggCCQCRAwIFCWNvbnRyYWN0cwUIZGFwcDJXbGcFDmxhc3RUZWFtVGltS2V5BQlpc3N1ZVRpbWUECHRlYW1BZGRyCQERQGV4dHJOYXRpdmUoMTA2MikBCQEFdmFsdWUBCQCdCAIJAJEDAgUJY29udHJhY3RzBQhkYXBwMldsZwUKdGVhbUFkcktleQQWdGVhbUFtb3VudEF2YWlsYWJsZU5vdwkAlwMBCQDMCAIJAGsDBQl0ZWFtVG90YWwJAGUCBQNub3cFDGxhc3RUZWFtVGltZQkAaAIAAwULWUVBUl9NSUxMSVMJAMwIAgUOdGVhbUFtb3VudExlZnQFA25pbAQKdGVhbVdsZ29sZAkA8AcCBQh0ZWFtQWRkcgUFd2xnSWQECGFjdFRvdGFsCQBrAwUMaXNzdWVkQW1vdW50BQ5BQ1RJVklUWV9TSEFSRQUDTTZfBA1hY3RBbW91bnRMZWZ0CQELdmFsdWVPckVsc2UCCQCaCAIJAJEDAgUJY29udHJhY3RzBQhkYXBwMldsZwUNYWN0QW10TGVmdEtleQUIYWN0VG90YWwEEmxhc3RBY3Rpdml0aWVzVGltZQkBC3ZhbHVlT3JFbHNlAgkAmggCCQCRAwIFCWNvbnRyYWN0cwUIZGFwcDJXbGcFFGxhc3RBY3Rpdml0aWVzVGltS2V5BQlpc3N1ZVRpbWUEFWFjdEFtb3VudEF2YWlsYWJsZU5vdwkAlwMBCQDMCAIJAGsDBQhhY3RUb3RhbAkAZQIFA25vdwUSbGFzdEFjdGl2aXRpZXNUaW1lCQBoAgADBQtZRUFSX01JTExJUwkAzAgCBQ1hY3RBbW91bnRMZWZ0BQNuaWwECWFjdFdsZ29sZAkA8AcCCQCRAwIFCWNvbnRyYWN0cwUJZGFwcDJSZXN0BQV3bGdJZAQMbGFzdFVzZXJUaW1lCQELdmFsdWVPckVsc2UCCQCaCAIJAJEDAgUJY29udHJhY3RzBQhkYXBwMldsZwkBFmtleUxhc3RDbGFpbVRpbWVCeVVzZXIBBQt1c2VyQWRkck9wdAUJaXNzdWVUaW1lBA5sYXN0VXNlclBlcmlvZAkAaQIJAGUCBQxsYXN0VXNlclRpbWUFCWlzc3VlVGltZQULWUVBUl9NSUxMSVMECm5vd0xpbWl0ZWQJAJcDAQkAzAgCBQNub3cJAMwIAgkAZAIFCWlzc3VlVGltZQkAaAIAAwULWUVBUl9NSUxMSVMFA25pbAQJY3VyUGVyaW9kCQCXAwEJAMwIAgkAaQIJAGUCBQNub3cFCWlzc3VlVGltZQULWUVBUl9NSUxMSVMJAMwIAgACBQNuaWwEA2VmZgkBEGdldEZhcm1pbmdQb3dlcnMCBQt1c2VyQWRkck9wdAkAkQMCBQljb250cmFjdHMFDGRhcHAyU3Rha2luZwQVY3VyUGVyaW9kRGlzdHJpYnV0aW9uCQENZGlzdHJCeVBlcmlvZAIFDGlzc3VlZEFtb3VudAUJY3VyUGVyaW9kBA1wcmV2UGVyaW9kRW5kCQBkAgUJaXNzdWVUaW1lCQBoAgULWUVBUl9NSUxMSVMFCWN1clBlcmlvZAQRcHJldlByZXZQZXJpb2RFbmQJAGQCBQlpc3N1ZVRpbWUJAGgCBQtZRUFSX01JTExJUwkAZQIFCWN1clBlcmlvZAABBAJhMAkAawMFFWN1clBlcmlvZERpc3RyaWJ1dGlvbgkAZQIFCm5vd0xpbWl0ZWQFDGxhc3RVc2VyVGltZQULWUVBUl9NSUxMSVMEDXVzZXJBdmFpbGFibGUDCQAAAgUObGFzdFVzZXJQZXJpb2QFCWN1clBlcmlvZAUCYTADCQAAAgUObGFzdFVzZXJQZXJpb2QJAGUCBQljdXJQZXJpb2QAAQQCYTEJAGsDCQENZGlzdHJCeVBlcmlvZAIFDGlzc3VlZEFtb3VudAkAZQIFCWN1clBlcmlvZAABCQBlAgUNcHJldlBlcmlvZEVuZAUMbGFzdFVzZXJUaW1lBQtZRUFSX01JTExJUwkAZAIFAmExBQJhMAQCYTIJAGsDCQENZGlzdHJCeVBlcmlvZAIFDGlzc3VlZEFtb3VudAkAZQIFCWN1clBlcmlvZAACCQBlAgURcHJldlByZXZQZXJpb2RFbmQFDGxhc3RVc2VyVGltZQULWUVBUl9NSUxMSVMEAmExCQENZGlzdHJCeVBlcmlvZAIFDGlzc3VlZEFtb3VudAkAZQIFCWN1clBlcmlvZAABCQBkAgkAZAIFAmEyBQJhMQUCYTAED2Ftb3VudExlZnRUb3RhbAkBC3ZhbHVlT3JFbHNlAgkAmggCCQCRAwIFCWNvbnRyYWN0cwUIZGFwcDJXbGcFEXN0YWtlcnNBbXRMZWZ0S2V5AAAECnVzZXJBbW91bnQDCQECIT0CCQCRAwIFA2VmZgUKaWR4VG90YWxGUAAACQBrAwUNdXNlckF2YWlsYWJsZQkAkQMCBQNlZmYFEGlkeFVzZXJGUGJvbnVzZWQJAJEDAgUDZWZmBQppZHhUb3RhbEZQAAAED2xhc3RJc3N1ZTEwVGltZQkBC3ZhbHVlT3JFbHNlAgkAmggCCQCRAwIFCWNvbnRyYWN0cwUIZGFwcDJXbGcFEXdsZ0lzc3VlMTBUaW1lS2V5BRFORVdfU1RBS0lOR19TVEFSVAQNaXNzdWUxMEFtb3VudAkAawMFB0lTU1VFMTAJAJYDAQkAzAgCCQBlAgUDbm93BQ9sYXN0SXNzdWUxMFRpbWUJAMwIAgAABQNuaWwFBkRBWV9NUwQWbWFya2V0aW5nSXNzdWUxMEFtb3VudAkAawMFDWlzc3VlMTBBbW91bnQFEU1BUktFVElORzEwX1NIQVJFBQNNNl8EEXRlYW1Jc3N1ZTEwQW1vdW50CQBrAwUNaXNzdWUxMEFtb3VudAUMVEVBTTEwX1NIQVJFBQNNNl8EDnVzZXIxMEludGVydmFsCQCWAwEJAMwIAgkAZQIFA25vdwkAlgMBCQDMCAIFEU5FV19TVEFLSU5HX1NUQVJUCQDMCAIFDGxhc3RVc2VyVGltZQUDbmlsCQDMCAIAAAUDbmlsBAp1c2VyMTBwYXJ0AwkBAiE9AgkAkQMCBQNlZmYFCmlkeFRvdGFsRlAAAAkAawMJAGsDCQBrAwUHSVNTVUUxMAUOdXNlcjEwSW50ZXJ2YWwFBkRBWV9NUwkAkQMCBQNlZmYFEGlkeFVzZXJGUGJvbnVzZWQJAJEDAgUDZWZmBQppZHhUb3RhbEZQBQ9QTEFZRVJTMTBfU0hBUkUFA002XwAABA5uZXdJc3N1ZTEwVGltZQkAlgMBCQDMCAIFEU5FV19TVEFLSU5HX1NUQVJUCQDMCAIFA25vdwUDbmlsBBBhY3Jlc1N0YWtlZFRvdGFsCQELdmFsdWVPckVsc2UCCQCaCAIJAJEDAgUJY29udHJhY3RzBQxkYXBwMlN0YWtpbmcFEmFjcmVzU3Rha2RUb3RhbEtleQAACQDMCAIFDGlzc3VlZEFtb3VudAkAzAgCBQZ3bGdXbGcJAMwIAgkAawMFDXRvdGFsRnVuZHNVc2QFA004XwUMaXNzdWVkQW1vdW50CQDMCAIFDXRvdGFsRnVuZHNVc2QJAMwIAgUHcmVzdFVzZAkAzAgCBQlhY3JlczJVc2QJAMwIAgUGd2xnVXNkCQDMCAIFCXB1enpsZVVzZAkAzAgCBQlpc3N1ZVRpbWUJAMwIAgUMbGFzdFRlYW1UaW1lCQDMCAIFCXRlYW1Ub3RhbAkAzAgCBQ50ZWFtQW1vdW50TGVmdAkAzAgCBRZ0ZWFtQW1vdW50QXZhaWxhYmxlTm93CQDMCAIFCnRlYW1XbGdvbGQJAMwIAgUIYWN0VG90YWwJAMwIAgUNYWN0QW1vdW50TGVmdAkAzAgCBRVhY3RBbW91bnRBdmFpbGFibGVOb3cJAMwIAgUJYWN0V2xnb2xkCQDMCAIFCWN1clBlcmlvZAkAzAgCBQ9hbW91bnRMZWZ0VG90YWwJAMwIAgUVY3VyUGVyaW9kRGlzdHJpYnV0aW9uCQDMCAIFDGxhc3RVc2VyVGltZQkAzAgCBQ9pbnZlc3RGdW5kVG90YWwJAMwIAgUKdXNlckFtb3VudAkAzAgCBQpub3dMaW1pdGVkCQDMCAIFDWlzc3VlMTBBbW91bnQJAMwIAgUWbWFya2V0aW5nSXNzdWUxMEFtb3VudAkAzAgCBRF0ZWFtSXNzdWUxMEFtb3VudAkAzAgCBQp1c2VyMTBwYXJ0CQDMCAIFDm5ld0lzc3VlMTBUaW1lCQDMCAIJAJEDAgUDZWZmBQppZHhUb3RhbEZQCQDMCAIFEGFjcmVzU3Rha2VkVG90YWwFA25pbAANcHJvZml0QWRkcktleQIKcHJvZml0QWRkcgAZc3Rha2Vyc0Ftb3VudFBhaWRUb3RhbEtleQIWc3Rha2Vyc0Ftb3VudFBhaWRUb3RhbAEYa2V5U3Rha2Vyc0Ftb3VudFBhaWRVc2VyAQRhZGRyCQCsAgICFnN0YWtlcnNBbW91bnRQYWlkVXNlcl8FBGFkZHIBB3Byb2xvZzIACQEFYXNJbnQBCQD9BwQFDmFjcmVzMkNvbnRyYWN0AgpzYXZlTGFzdFR4BQNuaWwFA25pbAESZ2V0U3dhcExpbWl0V2xnb2xkAQRhZGRyBAhsYXN0VGltZQkBC3ZhbHVlT3JFbHNlAgkAnwgBCQEZa2V5TGFzdFdsZ1RyYWRlVGltZUJ5VXNlcgEFBGFkZHIAAAQMZGVmYXVsdExpbWl0CQELdmFsdWVPckVsc2UCCQCaCAIFDmFjcmVzMkNvbnRyYWN0CQEaa2V5QWNyZXNTdGFrZWRBbW91bnRCeVVzZXIBBQRhZGRyAAAEDWxhc3RMaW1pdExlZnQJAQt2YWx1ZU9yRWxzZQIJAJ8IAQkBGmtleUxhc3RXbGdUcmFkZUxpbWl0QnlVc2VyAQUEYWRkcgUMZGVmYXVsdExpbWl0BAxjdXJyZW50TGltaXQJAGQCBQ1sYXN0TGltaXRMZWZ0CQBrAwUMZGVmYXVsdExpbWl0CQBlAggFCWxhc3RCbG9jawl0aW1lc3RhbXAFCGxhc3RUaW1lBQpEQVlfTUlMTElTCQCXAwEJAMwIAgUMY3VycmVudExpbWl0CQDMCAIFDGRlZmF1bHRMaW1pdAUDbmlsAQ5jbGFpbUludGVybmFsMgEEYWRkcgQIY3VyU3RhdHMJAQxnZXRXbGdTdGF0czIEBQRhZGRyCQDMCAIFDXJlc3QyQ29udHJhY3QJAMwIAgUOYWNyZXMyQ29udHJhY3QJAMwIAgULd2xnQ29udHJhY3QJAMwIAgUScHV6emxlUG9vbENvbnRyYWN0CQDMCAIFEmludmVzdEZ1bmRDb250cmFjdAUDbmlsBQt1c2R0QXNzZXRJZAAABAt1c2VyVGltZUtleQkBFmtleUxhc3RDbGFpbVRpbWVCeVVzZXIBBQRhZGRyBAxsYXN0VXNlclRpbWUJAQt2YWx1ZU9yRWxzZQIJAJ8IAQULdXNlclRpbWVLZXkAAAQLdXNlckVmZlRpbWUJAJEDAgUIY3VyU3RhdHMFEGl4V2xnRWZmVXNlclRpbWUDCQAAAgUMbGFzdFVzZXJUaW1lBQt1c2VyRWZmVGltZQkAlAoCBQNuaWwAAAQDbm93CAUJbGFzdEJsb2NrCXRpbWVzdGFtcAQJaXNzdWVUaW1lCQCRAwIFCGN1clN0YXRzBQ5peFdsZ0lzc3VlVGltZQQOdGVhbUFtb3VudExlZnQJAJEDAgUIY3VyU3RhdHMFD2l4V2xnVGVhbUFtTGVmdAQKdGVhbUFtb3VudAkAZAIJAJEDAgUIY3VyU3RhdHMFE2l4V2xnVGVhbUFtQXZhaWxOb3cJAJEDAgUIY3VyU3RhdHMFFml4V2xnVGVhbUlzc3VlMTBBbW91bnQEDHRlYW1UcmFuc2ZlcgMJAGYCBQp0ZWFtQW1vdW50AAAJAMwIAgkBDlNjcmlwdFRyYW5zZmVyAwkBEUBleHRyTmF0aXZlKDEwNjIpAQkBBXZhbHVlAQkAoggBBQt0ZWFtQWRkcktleQUKdGVhbUFtb3VudAUKd2xnQXNzZXRJZAUDbmlsBQNuaWwEDWFjdEFtb3VudExlZnQJAJEDAgUIY3VyU3RhdHMFDml4V2xnQWN0QW1MZWZ0BAlhY3RBbW91bnQJAJEDAgUIY3VyU3RhdHMFEml4V2xnQWN0QW1BdmFpbE5vdwQLYWN0VHJhbnNmZXIDCQBmAgUJYWN0QW1vdW50AAAJAMwIAgkBDlNjcmlwdFRyYW5zZmVyAwUMcmVzdENvbnRyYWN0BQlhY3RBbW91bnQFCndsZ0Fzc2V0SWQFA25pbAUDbmlsBA9tYXJrZXRpbmdBbW91bnQJAJEDAgUIY3VyU3RhdHMFG2l4V2xnTWFya2V0aW5nSXNzdWUxMEFtb3VudAQRbWFya2V0aW5nVHJhbnNmZXIDCQBmAgUPbWFya2V0aW5nQW1vdW50AAAJAMwIAgkBDlNjcmlwdFRyYW5zZmVyAwkBEUBleHRyTmF0aXZlKDEwNjIpAQkBBXZhbHVlAQkAoggBBRBtYXJrZXRpbmdBZGRyS2V5BQ9tYXJrZXRpbmdBbW91bnQFCndsZ0Fzc2V0SWQFA25pbAUDbmlsBAp1c2VyQW1vdW50CQCRAwIFCGN1clN0YXRzBRNpeFdsZ1VzZXJBbUF2YWlsTm93BAd1c2VyS2V5CQEYa2V5U3Rha2Vyc0Ftb3VudFBhaWRVc2VyAQUEYWRkcgQJdXNlclRvdGFsCQBkAgUKdXNlckFtb3VudAkAkQMCBQhjdXJTdGF0cwUPaXhXbGdVc2VyMTBwYXJ0BA5pc3N1ZWQxMEFtb3VudAkAkQMCBQhjdXJTdGF0cwUSaXhXbGdJc3N1ZTEwQW1vdW50CQCUCgIJAM4IAgkAzggCCQDOCAIJAMwIAgkBB1JlaXNzdWUDBQp3bGdBc3NldElkBQ5pc3N1ZWQxMEFtb3VudAYJAMwIAgkBDEludGVnZXJFbnRyeQIFEndsZ0lzc3VlZEFtb3VudEtleQkAZAIJAJEDAgUIY3VyU3RhdHMFC2l4V2xnQW1vdW50BQ5pc3N1ZWQxMEFtb3VudAkAzAgCCQEMSW50ZWdlckVudHJ5AgURd2xnSXNzdWUxMFRpbWVLZXkJAJEDAgUIY3VyU3RhdHMFEGl4V2xnSXNzdWUxMFRpbWUJAMwIAgkBDEludGVnZXJFbnRyeQIFB3VzZXJLZXkJAGQCCQELdmFsdWVPckVsc2UCCQCfCAEFB3VzZXJLZXkAAAUKdXNlckFtb3VudAkAzAgCCQEMSW50ZWdlckVudHJ5AgUZc3Rha2Vyc0Ftb3VudFBhaWRUb3RhbEtleQkAZAIJAQt2YWx1ZU9yRWxzZQIJAJ8IAQUZc3Rha2Vyc0Ftb3VudFBhaWRUb3RhbEtleQAABQp1c2VyQW1vdW50CQDMCAIJAQxJbnRlZ2VyRW50cnkCBRRzdGFrZXJzQW1vdW50TGVmdEtleQkAZQIJAJEDAgUIY3VyU3RhdHMFEGl4V2xnQW1MZWZ0VG90YWwFCnVzZXJBbW91bnQJAMwIAgkBDEludGVnZXJFbnRyeQIFEXRlYW1BbW91bnRMZWZ0S2V5CQBkAgkAZQIFDnRlYW1BbW91bnRMZWZ0BQp0ZWFtQW1vdW50CQCRAwIFCGN1clN0YXRzBRZpeFdsZ1RlYW1Jc3N1ZTEwQW1vdW50CQDMCAIJAQxJbnRlZ2VyRW50cnkCBQ9sYXN0VGVhbVRpbWVLZXkFA25vdwkAzAgCCQEMSW50ZWdlckVudHJ5AgUQYWN0QW1vdW50TGVmdEtleQkAZQIFDWFjdEFtb3VudExlZnQFCWFjdEFtb3VudAkAzAgCCQEMSW50ZWdlckVudHJ5AgUVbGFzdEFjdGl2aXRpZXNUaW1lS2V5BQNub3cJAMwIAgkBDEludGVnZXJFbnRyeQIFC3VzZXJUaW1lS2V5BQt1c2VyRWZmVGltZQUDbmlsBQx0ZWFtVHJhbnNmZXIFC2FjdFRyYW5zZmVyBRFtYXJrZXRpbmdUcmFuc2ZlcgUJdXNlclRvdGFsAQ50YWtlWHBJbnRlcm5hbAIEYWRkcgVkZWx0YQQDbm93CAUJbGFzdEJsb2NrCXRpbWVzdGFtcAQHdGltZUtleQkBFmtleVdsZ1N0YWtlZFRpbWVCeVVzZXIBBQRhZGRyBAlhbW91bnRLZXkJARhrZXlXbGdTdGFrZWRBbW91bnRCeVVzZXIBBQRhZGRyBAhsYXN0VGltZQkBC3ZhbHVlT3JFbHNlAgkAnwgBBQd0aW1lS2V5AAAEB29sZFVzZXIJAQt2YWx1ZU9yRWxzZQIJAJ8IAQUJYW1vdW50S2V5AAAECG9sZFRvdGFsCQELdmFsdWVPckVsc2UCCQCfCAEFEXdsZ1N0YWtlZFRvdGFsS2V5AAAEAnhwCQBrAwkAawMFBXhwV2xnBQdvbGRVc2VyBQ93bGdCYXNlQW1vdW50WHAJAGUCBQhsYXN0VGltZQUDbm93BQlEQVlNSUxMSVMJAJUKAwkAzAgCCQEMSW50ZWdlckVudHJ5AgUHdGltZUtleQUDbm93CQDMCAIJAQxJbnRlZ2VyRW50cnkCBQlhbW91bnRLZXkJAGQCBQdvbGRVc2VyBQVkZWx0YQkAzAgCCQEMSW50ZWdlckVudHJ5AgURd2xnU3Rha2VkVG90YWxLZXkJAGQCBQhvbGRUb3RhbAUFZGVsdGEFA25pbAUCeHAFB29sZFVzZXIBEW9wZW5DaGVzdEludGVybmFsAQRhZGRyBAR3ZWVrCQBpAgUGaGVpZ2h0BQtXRUVLX0JMT0NLUwQIZHJhd1dlZWsJAGUCBQR3ZWVrAAEECW51bVByaXplcwkBC3ZhbHVlT3JFbHNlAgkAnwgBCQEOa2V5TnVtTkZUMkRyYXcBBQhkcmF3V2VlawUVREVGQVVMVF9XRUVLTFlfUFJJWkVTBAtwcml6ZXNEcmF3bgkBC3ZhbHVlT3JFbHNlAgkAnwgBCQEOa2V5TnVtTkZURHJhd24BBQhkcmF3V2VlawAABAt1c2VyVGlja2V0cwkBC3ZhbHVlT3JFbHNlAgkAnwgBCQESa2V5VXNlcldlZWtUaWNrZXRzAgUEYWRkcgUIZHJhd1dlZWsAAAMJAGcCAAAFC3VzZXJUaWNrZXRzCQCUCgIFA25pbAUEdW5pdAQLd2Vla1RpY2tldHMJAQt2YWx1ZU9yRWxzZQIJAJ8IAQkBE2tleVRvdGFsV2Vla1RpY2tldHMBBQhkcmF3V2VlawAAAwkAZwIAAAULd2Vla1RpY2tldHMJAJQKAgkAzAgCCQELRGVsZXRlRW50cnkBCQESa2V5VXNlcldlZWtUaWNrZXRzAgUEYWRkcgUIZHJhd1dlZWsFA25pbAUEdW5pdAQHZW50cm9weQkBBXZhbHVlAQgJAQV2YWx1ZQEJAO0HAQkAaAIFBHdlZWsFC1dFRUtfQkxPQ0tTA3ZyZgQEc2FsdAkA2QQBCQCRAwIJALUJAgkBC3ZhbHVlT3JFbHNlAgkAoggBCQEVa2V5TGFzdFdlZWtUeElkQnlVc2VyAQUEYWRkcgIKNDJfREVGQVVMVAIBXwABBAZyYW5kb20JAQ9nZXRSYW5kb21OdW1iZXIDBQt3ZWVrVGlja2V0cwUEc2FsdAUHZW50cm9weQMJAGYCCQBoAgULdXNlclRpY2tldHMFCW51bVByaXplcwUGcmFuZG9tBAtpc3N1ZVJlc3VsdAkA/AcEBQ5hY3JlczJDb250cmFjdAIIaXNzdWVORlQJAMwIAgUEYWRkcgkAzAgCBRRJZHhEdHgxUGVyY0dlbVdpbm5lcgUDbmlsBQNuaWwEB3dpbm5lcnMJAKIIAQkBDmtleVdlZWtXaW5uZXJzAQUIZHJhd1dlZWsECm5ld1dpbm5lcnMDCQEJaXNEZWZpbmVkAQUHd2lubmVycwkArAICCQCsAgIJAQV2YWx1ZQEFB3dpbm5lcnMCAV8FBGFkZHIFBGFkZHIJAJQKAgkAzAgCCQEMSW50ZWdlckVudHJ5AgkBDmtleU51bU5GVERyYXduAQUIZHJhd1dlZWsJAGQCBQtwcml6ZXNEcmF3bgABCQDMCAIJAQtEZWxldGVFbnRyeQEJARJrZXlVc2VyV2Vla1RpY2tldHMCBQRhZGRyBQhkcmF3V2VlawkAzAgCCQELU3RyaW5nRW50cnkCCQEOa2V5V2Vla1dpbm5lcnMBBQhkcmF3V2VlawUKbmV3V2lubmVycwUDbmlsBQtpc3N1ZVJlc3VsdAQHcmFuZG9tMQkAZAIJAQ9nZXRSYW5kb21OdW1iZXIDAAkJAMsBAgEBQgUEc2FsdAUHZW50cm9weQABBAtjb25zVGlja2V0cwkAawMFC3VzZXJUaWNrZXRzBQdyYW5kb20xAAoJAJQKAgkAzAgCCQELRGVsZXRlRW50cnkBCQESa2V5VXNlcldlZWtUaWNrZXRzAgUEYWRkcgUIZHJhd1dlZWsJAMwIAgkBDEludGVnZXJFbnRyeQIJARJrZXlVc2VyV2Vla1RpY2tldHMCBQRhZGRyBQR3ZWVrBQtjb25zVGlja2V0cwUDbmlsBQtjb25zVGlja2V0cwEUY2xhaW1UaWNrZXRzSW50ZXJuYWwCBGFkZHIKdXNlckJldFN0cgQEd2VlawkAaQIFBmhlaWdodAULV0VFS19CTE9DS1MECnRpY2tldHNLZXkJARJrZXlVc2VyV2Vla1RpY2tldHMCBQRhZGRyBQR3ZWVrBAZkYXlCZXQJALUJAgUKdXNlckJldFN0cgIBXwQPb2xkVG90YWxUaWNrZXRzCQELdmFsdWVPckVsc2UCCQCfCAEJARNrZXlUb3RhbFdlZWtUaWNrZXRzAQUEd2VlawAABApvbGRUaWNrZXRzCQELdmFsdWVPckVsc2UCCQCfCAEFCnRpY2tldHNLZXkAAAQMZGVsdGFUaWNrZXRzAwkAAAIJAQp3aW5uaW5nQmV0AQkBDXBhcnNlSW50VmFsdWUBCQCRAwIFBmRheUJldAAACQENcGFyc2VJbnRWYWx1ZQEJAJEDAgUGZGF5QmV0AAEAAQAABA9vbGRQYXJ0aWNpcGFudHMJAQt2YWx1ZU9yRWxzZQIJAJ8IAQkBGGtleVRvdGFsV2Vla1BhcnRpY2lwYW50cwEFBHdlZWsAAAQSdXBkYXRlUGFydGljaXBhbnRzAwMJAAACBQpvbGRUaWNrZXRzAAAJAAACBQxkZWx0YVRpY2tldHMAAQcJAMwIAgkBDEludGVnZXJFbnRyeQIJARhrZXlUb3RhbFdlZWtQYXJ0aWNpcGFudHMBBQR3ZWVrCQBkAgUPb2xkUGFydGljaXBhbnRzAAEFA25pbAUDbmlsCQCUCgIDCQAAAgUMZGVsdGFUaWNrZXRzAAAFA25pbAkAzQgCCQDNCAIFEnVwZGF0ZVBhcnRpY2lwYW50cwkBDEludGVnZXJFbnRyeQIFCnRpY2tldHNLZXkJAGQCBQpvbGRUaWNrZXRzBQxkZWx0YVRpY2tldHMJAQxJbnRlZ2VyRW50cnkCCQETa2V5VG90YWxXZWVrVGlja2V0cwEFBHdlZWsJAGQCBQ9vbGRUb3RhbFRpY2tldHMFDGRlbHRhVGlja2V0cwUMZGVsdGFUaWNrZXRzDgFpAQ1jb25zdHJ1Y3RvclYxBAhyZXN0QWRkcg1tYXJrZXRpbmdBZGRyCHRlYW1BZGRyCnByb2ZpdEFkZHIDCQECIT0CCAUBaQZjYWxsZXIFBHRoaXMJAAIBAhFQZXJtaXNzaW9uIGRlbmllZAMJAQlpc0RlZmluZWQBCQChCAEFDXdsZ0Fzc2V0SWRLZXkJAAIBAhNBbHJlYWR5IGluaXRpYWxpemVkBAxpc3N1ZWRBbW91bnQFCE1JTExJT042BAVpc3N1ZQkAwwgHAgZXTEdPTEQCIFdhdmVzTGFuZHMgR29sZCBpbnZlc3RtZW50IHRva2VuBQxpc3N1ZWRBbW91bnQACAYFBHVuaXQAAAQHYXNzZXRJZAkAuAgBBQVpc3N1ZQkAzAgCBQVpc3N1ZQkAzAgCCQEMSW50ZWdlckVudHJ5AgUPd2xnSXNzdWVUaW1lS2V5CAUJbGFzdEJsb2NrCXRpbWVzdGFtcAkAzAgCCQEMSW50ZWdlckVudHJ5AgUSd2xnSXNzdWVkQW1vdW50S2V5BQxpc3N1ZWRBbW91bnQJAMwIAgkBDEludGVnZXJFbnRyeQIFGXN0YWtlcnNBbW91bnRQYWlkVG90YWxLZXkAAAkAzAgCCQEMSW50ZWdlckVudHJ5AgUUc3Rha2Vyc0Ftb3VudExlZnRLZXkJAGsDBQhNSUxMSU9ONgULUExBWUVSU0hBUkUFBU1VTFQ2CQDMCAIJAQtCaW5hcnlFbnRyeQIFDXdsZ0Fzc2V0SWRLZXkFB2Fzc2V0SWQJAMwIAgkBC1N0cmluZ0VudHJ5AgkBDmtleVJlc3RBZGRyZXNzAAUIcmVzdEFkZHIJAMwIAgkBC1N0cmluZ0VudHJ5AgUQbWFya2V0aW5nQWRkcktleQUNbWFya2V0aW5nQWRkcgkAzAgCCQELU3RyaW5nRW50cnkCBQt0ZWFtQWRkcktleQUIdGVhbUFkZHIJAMwIAgkBC1N0cmluZ0VudHJ5AgUNcHJvZml0QWRkcktleQUKcHJvZml0QWRkcgUDbmlsAWkBDWNvbnN0cnVjdG9yVjIBCXJlc3QyQWRkcgMJAQIhPQIIBQFpBmNhbGxlcgUEdGhpcwkAAgECEVBlcm1pc3Npb24gZGVuaWVkCQDMCAIJAQtTdHJpbmdFbnRyeQIJAQ9rZXlSZXN0MkFkZHJlc3MABQlyZXN0MkFkZHIFA25pbAFpAQZidXlXbGcBDG1pblRvUmVjZWl2ZQQMcHJvbG9nUmVzdWx0CQEHcHJvbG9nMgADCQAAAgUMcHJvbG9nUmVzdWx0BQxwcm9sb2dSZXN1bHQDCQECIT0CCQCQAwEIBQFpCHBheW1lbnRzAAEJAAIBAiJleGFjdGx5IDEgcGF5bWVudCBtdXN0IGJlIGF0dGFjaGVkBANwbXQJAJEDAggFAWkIcGF5bWVudHMAAAQHdXNkdEFtdAgFA3BtdAZhbW91bnQDAwkBASEBCQEJaXNEZWZpbmVkAQgFA3BtdAdhc3NldElkBgkBAiE9AgkBBXZhbHVlAQgFA3BtdAdhc3NldElkBQt1c2R0QXNzZXRJZAkAAgECE1VTRFQgcGF5bWVudHMgb25seSEEBmNhbGxlcggFAWkGY2FsbGVyBARhZGRyCQClCAEFBmNhbGxlcgMJAGYCBQ5NSU5TSE9QUEFZTUVOVAUHdXNkdEFtdAkAAgEJAKwCAgkArAICAhJZb3UgY2FuIHRyYWRlIG1pbiAJAQpmaXhlZFBvaW50AgUOTUlOU0hPUFBBWU1FTlQABgIFIFVTRFQECGN1clN0YXRzCQEMZ2V0V2xnU3RhdHMyBAIACQDMCAIFDXJlc3QyQ29udHJhY3QJAMwIAgUOYWNyZXMyQ29udHJhY3QJAMwIAgULd2xnQ29udHJhY3QJAMwIAgUScHV6emxlUG9vbENvbnRyYWN0CQDMCAIFEmludmVzdEZ1bmRDb250cmFjdAUDbmlsBQt1c2R0QXNzZXRJZAUHdXNkdEFtdAQMY3VyV2xnQW1vdW50CQCRAwIFCGN1clN0YXRzBQtpeFdsZ0Ftb3VudAQId2xnUHJpY2UJAJEDAgUIY3VyU3RhdHMFCml4V2xnUHJpY2UECGJ1eVByaWNlCQBuBAUId2xnUHJpY2UABgAFBQdDRUlMSU5HBAl3bGdBbW91bnQJAGsDBQd1c2R0QW10BQVNVUxUOAUIYnV5UHJpY2UEBm1heFdsZwkBEmdldFN3YXBMaW1pdFdsZ29sZAEFBGFkZHIDCQBmAgUJd2xnQW1vdW50BQZtYXhXbGcJAAIBCQCsAgIJAKwCAgIQWW91IGNhbiBnZXQgbWF4IAkBCmZpeGVkUG9pbnQCBQZtYXhXbGcACAIVIFdMR09MRCBhdCB0aGUgbW9tZW50AwkAZgIFDG1pblRvUmVjZWl2ZQUJd2xnQW1vdW50CQACAQIwUHJpY2UgY2hhbmdlZCBkdXJpbmcgb3BlcmF0aW9uLCBwbGVhc2UgdHJ5IGFnYWluBAxwcm9maXRBbW91bnQJAGkCBQd1c2R0QW10AAYJAJQKAgkAzAgCCQEHUmVpc3N1ZQMFCndsZ0Fzc2V0SWQFCXdsZ0Ftb3VudAYJAMwIAgkBDEludGVnZXJFbnRyeQIFEndsZ0lzc3VlZEFtb3VudEtleQkAZAIFDGN1cldsZ0Ftb3VudAUJd2xnQW1vdW50CQDMCAIJAQxJbnRlZ2VyRW50cnkCCQEZa2V5TGFzdFdsZ1RyYWRlVGltZUJ5VXNlcgEFBGFkZHIIBQlsYXN0QmxvY2sJdGltZXN0YW1wCQDMCAIJAQxJbnRlZ2VyRW50cnkCCQEaa2V5TGFzdFdsZ1RyYWRlTGltaXRCeVVzZXIBBQRhZGRyCQBlAgUGbWF4V2xnBQl3bGdBbW91bnQJAMwIAgkBDlNjcmlwdFRyYW5zZmVyAwkBEUBleHRyTmF0aXZlKDEwNjIpAQkBBXZhbHVlAQkAoggBBQ1wcm9maXRBZGRyS2V5BQxwcm9maXRBbW91bnQFC3VzZHRBc3NldElkCQDMCAIJAQ5TY3JpcHRUcmFuc2ZlcgMFBmNhbGxlcgUJd2xnQW1vdW50BQp3bGdBc3NldElkBQNuaWwFDHByb2xvZ1Jlc3VsdAkAAgECJFN0cmljdCB2YWx1ZSBpcyBub3QgZXF1YWwgdG8gaXRzZWxmLgFpAQ5idXlXbGdSRUFET05MWQIHYWRkcmVzcwd1c2R0QW10BAhjdXJTdGF0cwkBDGdldFdsZ1N0YXRzMgQCAAkAzAgCBQ1yZXN0MkNvbnRyYWN0CQDMCAIFDmFjcmVzMkNvbnRyYWN0CQDMCAIFC3dsZ0NvbnRyYWN0CQDMCAIFEnB1enpsZVBvb2xDb250cmFjdAkAzAgCBRJpbnZlc3RGdW5kQ29udHJhY3QFA25pbAULdXNkdEFzc2V0SWQFB3VzZHRBbXQECHdsZ1ByaWNlCQCRAwIFCGN1clN0YXRzBQppeFdsZ1ByaWNlBAhidXlQcmljZQkAbgQFCHdsZ1ByaWNlAAYABQUHQ0VJTElORwQJd2xnQW1vdW50CQBrAwUHdXNkdEFtdAUFTVVMVDgFCGJ1eVByaWNlBAZtYXhXbGcJARJnZXRTd2FwTGltaXRXbGdvbGQBBQdhZGRyZXNzBAdtYXhVc2R0CQBrAwUGbWF4V2xnBQhidXlQcmljZQUFTVVMVDgEDHByb2ZpdEFtb3VudAkAaQIFB3VzZHRBbXQABgkAlAoCBQNuaWwJAMwIAgUJd2xnQW1vdW50CQDMCAIFDk1JTlNIT1BQQVlNRU5UCQDMCAIFB21heFVzZHQJAMwIAgUMcHJvZml0QW1vdW50BQNuaWwBaQEHc2VsbFdsZwEJbWluQW1vdW50BAxwcm9sb2dSZXN1bHQJAQdwcm9sb2cyAAMJAAACBQxwcm9sb2dSZXN1bHQFDHByb2xvZ1Jlc3VsdAMJAQIhPQIJAJADAQgFAWkIcGF5bWVudHMAAQkAAgECImV4YWN0bHkgMSBwYXltZW50IG11c3QgYmUgYXR0YWNoZWQEA3BtdAkAkQMCCAUBaQhwYXltZW50cwAABAZ3bGdBbXQIBQNwbXQGYW1vdW50BAZjYWxsZXIIBQFpBmNhbGxlcgQEYWRkcgkApQgBBQZjYWxsZXIEBm1heFdsZwkBEmdldFN3YXBMaW1pdFdsZ29sZAEFBGFkZHIDCQBmAgUGd2xnQW10BQZtYXhXbGcJAAIBCQCsAgIJAKwCAgISWW91IGNhbiBzcGVuZCBtYXggCQEKZml4ZWRQb2ludAIFBm1heFdsZwAIAhUgV0xHT0xEIGF0IHRoZSBtb21lbnQDAwkBASEBCQEJaXNEZWZpbmVkAQgFA3BtdAdhc3NldElkBgkBAiE9AgkBBXZhbHVlAQgFA3BtdAdhc3NldElkBQp3bGdBc3NldElkCQACAQIVV0xHT0xEIHBheW1lbnRzIG9ubHkhBAhjdXJTdGF0cwkBDGdldFdsZ1N0YXRzMgQCAAkAzAgCBQ1yZXN0MkNvbnRyYWN0CQDMCAIFDmFjcmVzMkNvbnRyYWN0CQDMCAIFC3dsZ0NvbnRyYWN0CQDMCAIFEnB1enpsZVBvb2xDb250cmFjdAkAzAgCBRJpbnZlc3RGdW5kQ29udHJhY3QFA25pbAULdXNkdEFzc2V0SWQAAAQMY3VyV2xnQW1vdW50CQCRAwIFCGN1clN0YXRzBQtpeFdsZ0Ftb3VudAQJc2VsbFByaWNlCQBpAgkAkQMCBQhjdXJTdGF0cwUKaXhXbGdQcmljZQACBAd1c2R0QW10CQBrAwUGd2xnQW10BQlzZWxsUHJpY2UFBU1VTFQ4AwkAZgIFDk1JTlNIT1BQQVlNRU5UBQd1c2R0QW10CQACAQkArAICCQCsAgICEllvdSBjYW4gdHJhZGUgbWluIAkBCmZpeGVkUG9pbnQCBQ5NSU5TSE9QUEFZTUVOVAAGAgUgVVNEVAMJAGYCBQltaW5BbW91bnQFB3VzZHRBbXQJAAIBAjBQcmljZSBjaGFuZ2VkIGR1cmluZyBvcGVyYXRpb24sIHBsZWFzZSB0cnkgYWdhaW4EDHByb2ZpdEFtb3VudAkAaQIFB3VzZHRBbXQABQkAlAoCCQDMCAIJAQRCdXJuAgUKd2xnQXNzZXRJZAUGd2xnQW10CQDMCAIJAQxJbnRlZ2VyRW50cnkCBRJ3bGdJc3N1ZWRBbW91bnRLZXkJAGUCBQxjdXJXbGdBbW91bnQFBndsZ0FtdAkAzAgCCQEMSW50ZWdlckVudHJ5AgkBGWtleUxhc3RXbGdUcmFkZVRpbWVCeVVzZXIBBQRhZGRyCAUJbGFzdEJsb2NrCXRpbWVzdGFtcAkAzAgCCQEMSW50ZWdlckVudHJ5AgkBGmtleUxhc3RXbGdUcmFkZUxpbWl0QnlVc2VyAQUEYWRkcgkAZQIFBm1heFdsZwUGd2xnQW10CQDMCAIJAQ5TY3JpcHRUcmFuc2ZlcgMJARFAZXh0ck5hdGl2ZSgxMDYyKQEJAQV2YWx1ZQEJAKIIAQUNcHJvZml0QWRkcktleQUMcHJvZml0QW1vdW50BQt1c2R0QXNzZXRJZAkAzAgCCQEOU2NyaXB0VHJhbnNmZXIDBQZjYWxsZXIFB3VzZHRBbXQFC3VzZHRBc3NldElkBQNuaWwFDHByb2xvZ1Jlc3VsdAkAAgECJFN0cmljdCB2YWx1ZSBpcyBub3QgZXF1YWwgdG8gaXRzZWxmLgFpAQ9zZWxsV2xnUkVBRE9OTFkCB2FkZHJlc3MGd2xnQW10BAZtYXhXbGcJARJnZXRTd2FwTGltaXRXbGdvbGQBBQdhZGRyZXNzBAhjdXJTdGF0cwkBDGdldFdsZ1N0YXRzMgQCAAkAzAgCBQ1yZXN0MkNvbnRyYWN0CQDMCAIFDmFjcmVzMkNvbnRyYWN0CQDMCAIFC3dsZ0NvbnRyYWN0CQDMCAIFEnB1enpsZVBvb2xDb250cmFjdAkAzAgCBRJpbnZlc3RGdW5kQ29udHJhY3QFA25pbAULdXNkdEFzc2V0SWQAAAQJc2VsbFByaWNlCQBpAgkAkQMCBQhjdXJTdGF0cwUKaXhXbGdQcmljZQACBAd1c2R0QW10CQBrAwUGd2xnQW10BQlzZWxsUHJpY2UFBU1VTFQ4BAZtaW5XbGcJAGsDBQ5NSU5TSE9QUEFZTUVOVAUFTVVMVDgFCXNlbGxQcmljZQQMcHJvZml0QW1vdW50CQBpAgUHdXNkdEFtdAAFCQCUCgIFA25pbAkAzAgCBQd1c2R0QW10CQDMCAIFBm1pbldsZwkAzAgCBQZtYXhXbGcJAMwIAgUMcHJvZml0QW1vdW50BQNuaWwBaQEFY2xhaW0ABAxwcm9sb2dSZXN1bHQJAQdwcm9sb2cyAAMJAAACBQxwcm9sb2dSZXN1bHQFDHByb2xvZ1Jlc3VsdAMJAQIhPQIJAJADAQgFAWkIcGF5bWVudHMAAAkAAgECFE5vIHBheW1lbnRzIHJlcXVpcmVkBA0kdDAxNDA0NTE0MTE0CQEOY2xhaW1JbnRlcm5hbDIBCQClCAEIBQFpBmNhbGxlcgQHYWN0aW9ucwgFDSR0MDE0MDQ1MTQxMTQCXzEEEHdsZ0NsYWltZWRBbW91bnQIBQ0kdDAxNDA0NTE0MTE0Al8yCQCUCgIJAM0IAgUHYWN0aW9ucwkBDlNjcmlwdFRyYW5zZmVyAwgFAWkGY2FsbGVyBRB3bGdDbGFpbWVkQW1vdW50BQp3bGdBc3NldElkBQxwcm9sb2dSZXN1bHQJAAIBAiRTdHJpY3QgdmFsdWUgaXMgbm90IGVxdWFsIHRvIGl0c2VsZi4BaQESb25TdGFrZVVuc3Rha2VMYW5kAQRhZGRyAwMDCQECIT0CCAUBaQZjYWxsZXIFD3N0YWtpbmdDb250cmFjdAkBAiE9AggFAWkGY2FsbGVyBQ1hY3Jlc0NvbnRyYWN0BwkBAiE9AggFAWkGY2FsbGVyBQ5hY3JlczJDb250cmFjdAcJAAIBAhFQZXJtaXNzaW9uIGRlbmllZAQNJHQwMTQ0MzMxNDQ4NwkBDmNsYWltSW50ZXJuYWwyAQUEYWRkcgQHYWN0aW9ucwgFDSR0MDE0NDMzMTQ0ODcCXzEEEHdsZ0NsYWltZWRBbW91bnQIBQ0kdDAxNDQzMzE0NDg3Al8yCQCUCgIDCQBmAgUQd2xnQ2xhaW1lZEFtb3VudAAACQDNCAIFB2FjdGlvbnMJAQ5TY3JpcHRUcmFuc2ZlcgMJARFAZXh0ck5hdGl2ZSgxMDYyKQEFBGFkZHIFEHdsZ0NsYWltZWRBbW91bnQFCndsZ0Fzc2V0SWQFB2FjdGlvbnMFEHdsZ0NsYWltZWRBbW91bnQBaQEKYnVybldsZ29sZAEGd2xnQW10AwkBAiE9AggFAWkGY2FsbGVyBQ5hY3JlczJDb250cmFjdAkAAgECEVBlcm1pc3Npb24gZGVuaWVkBAhjdXJTdGF0cwkBDGdldFdsZ1N0YXRzMgQCAAkAzAgCBQ1yZXN0MkNvbnRyYWN0CQDMCAIFDmFjcmVzMkNvbnRyYWN0CQDMCAIFC3dsZ0NvbnRyYWN0CQDMCAIFEnB1enpsZVBvb2xDb250cmFjdAkAzAgCBRJpbnZlc3RGdW5kQ29udHJhY3QFA25pbAULdXNkdEFzc2V0SWQAAAMJAGYCBQZ3bGdBbXQJAJEDAgUIY3VyU3RhdHMFCGl4V2xnV2xnCQACAQkArAICCQCsAgIJAKwCAgIFT25seSAJAQpmaXhlZFBvaW50AgkAkQMCBQhjdXJTdGF0cwUIaXhXbGdXbGcACAIlIFdMR09MRCBsZWZ0IG9uIGNvbnRyYWN0LCBjYW4ndCBidXJuIAkBCmZpeGVkUG9pbnQCBQZ3bGdBbXQACAQNd2xnQW1vdW50TGVmdAkAZQIJAJEDAgUIY3VyU3RhdHMFC2l4V2xnQW1vdW50BQZ3bGdBbXQJAJQKAgkAzAgCCQEEQnVybgIFCndsZ0Fzc2V0SWQFBndsZ0FtdAkAzAgCCQEMSW50ZWdlckVudHJ5AgUSd2xnSXNzdWVkQW1vdW50S2V5BQ13bGdBbW91bnRMZWZ0BQNuaWwFDXdsZ0Ftb3VudExlZnQBaQEMYmV0Rm9yVGlja2V0AQNiZXQEDHByb2xvZ1Jlc3VsdAkBB3Byb2xvZzIAAwkAAAIFDHByb2xvZ1Jlc3VsdAUMcHJvbG9nUmVzdWx0AwkBAiE9AgkAkAMBCAUBaQhwYXltZW50cwAACQACAQIUTm8gcGF5bWVudHMgcmVxdWlyZWQEBGFkZHIJAKUIAQgFAWkGY2FsbGVyBAhkcmF3V2VlawkAZQIJAGkCBQZoZWlnaHQFC1dFRUtfQkxPQ0tTAAEEC3VzZXJUaWNrZXRzCQELdmFsdWVPckVsc2UCCQCfCAEJARJrZXlVc2VyV2Vla1RpY2tldHMCBQRhZGRyBQhkcmF3V2VlawAABAt3ZWVrVGlja2V0cwkBC3ZhbHVlT3JFbHNlAgkAnwgBCQETa2V5VG90YWxXZWVrVGlja2V0cwEFCGRyYXdXZWVrAAADAwkAZgIFC3VzZXJUaWNrZXRzAAAJAGYCBQt3ZWVrVGlja2V0cwAABwkAAgECG1BsZWFzZSBvcGVuIHRoZSBjaGVzdCBmaXJzdAMJAQIhPQIJAGkCBQNiZXQABAAACQACAQIbSW52YWxpZCBiZXQ6IHNob3VsZCBiZSAwLi4zBAZtb21lbnQJAGoCBQZoZWlnaHQFCkRBWV9CTE9DS1MDCQBmAgUGbW9tZW50CQBlAgUKREFZX0JMT0NLUwADCQACAQkArAICCQCsAgICMUNhbm5vdCBiZXQ6IHRoZSBkYXkgaXMgYWxtb3N0IGVuZGVkLCBwbGVhc2Ugd2FpdCAJAKQDAQkAZQIFCkRBWV9CTE9DS1MFBm1vbWVudAIHIGJsb2NrcwQLc3Rha2VkQWNyZXMJAQt2YWx1ZU9yRWxzZQIJAJoIAgUOYWNyZXMyQ29udHJhY3QJARdrZXlBY3Jlc1N0YWtlZEFtdEJ5VXNlcgEFBGFkZHIAAAMJAGYCBQ1BQ1JFU19GT1JfQkVUBQtzdGFrZWRBY3JlcwkAAgEJAKwCAgkArAICAhtZb3UgbmVlZCB0byBzdGFrZSBhdCBsZWFzdCAJAQpmaXhlZFBvaW50AgUNQUNSRVNfRk9SX0JFVAAIAg0gQUNSRVMgdG8gYmV0BAh0b21vcnJvdwkAZAIJAGkCBQZoZWlnaHQFCkRBWV9CTE9DS1MAAQQGYmV0S2V5CQEKa2V5VXNlckJldAEFBGFkZHIEDW9sZFVzZXJCZXRTdHIJAKIIAQUGYmV0S2V5BAtuZXdCZXRFbnRyeQkBC1N0cmluZ0VudHJ5AgUGYmV0S2V5CQCsAgIJAKwCAgkApAMBBQh0b21vcnJvdwIBXwkApAMBBQNiZXQDCQEJaXNEZWZpbmVkAQUNb2xkVXNlckJldFN0cgQHdXNlckJldAkBBXZhbHVlAQUNb2xkVXNlckJldFN0cgMJAAACCQCRAwIJALUJAgUHdXNlckJldAIBXwAACQCkAwEFCHRvbW9ycm93CQACAQIcWW91IGFscmVhZHkgYmV0IGZvciB0b21vcnJvdwQBcgkBFGNsYWltVGlja2V0c0ludGVybmFsAgUEYWRkcgUHdXNlckJldAkAlAoCCQDNCAIIBQFyAl8xBQtuZXdCZXRFbnRyeQgFAXICXzIJAJQKAgkAzAgCBQtuZXdCZXRFbnRyeQUDbmlsAAAJAAIBAiRTdHJpY3QgdmFsdWUgaXMgbm90IGVxdWFsIHRvIGl0c2VsZi4BaQEJdGFrZVdsZ1hwAQRhZGRyAwkBAiE9AggFAWkGY2FsbGVyBQ9zdGFraW5nQ29udHJhY3QJAAIBAhFQZXJtaXNzaW9uIGRlbmllZAQNJHQwMTcwOTcxNzE0MAkBDnRha2VYcEludGVybmFsAgUEYWRkcgAABAdhY3Rpb25zCAUNJHQwMTcwOTcxNzE0MAJfMQQCeHAIBQ0kdDAxNzA5NzE3MTQwAl8yCQCUCgIFB2FjdGlvbnMFAnhwAWkBEmNoZWNrV2xnWHBSRUFET05MWQEEYWRkcgQNJHQwMTcyMTcxNzI2NQkBDnRha2VYcEludGVybmFsAgUEYWRkcgAABAdpZ25vcmVkCAUNJHQwMTcyMTcxNzI2NQJfMQQHZGVsdGFYUAgFDSR0MDE3MjE3MTcyNjUCXzIEBW5ld1hQCQBkAgkBC3ZhbHVlT3JFbHNlAgkAmggCBQ9zdGFraW5nQ29udHJhY3QJAQlrZXlVc2VyWFABBQRhZGRyAAAFB2RlbHRhWFAECWx2bFBvaW50cwkBB2xldmVsVXACCQELdmFsdWVPckVsc2UCCQCaCAIFD3N0YWtpbmdDb250cmFjdAkBDGtleVVzZXJMZXZlbAEFBGFkZHIAAAUFbmV3WFAJAJQKAgUDbmlsCQDNCAIFCWx2bFBvaW50cwUFbmV3WFABaQEMc2V0TnVtUHJpemVzAQludW1Qcml6ZXMDCQECIT0CCAUBaQZjYWxsZXIFBHRoaXMJAAIBAhFQZXJtaXNzaW9uIGRlbmllZAQEd2VlawkAaQIFBmhlaWdodAULV0VFS19CTE9DS1MJAJQKAgkAzAgCCQEMSW50ZWdlckVudHJ5AgkBDmtleU51bU5GVDJEcmF3AQUEd2VlawUJbnVtUHJpemVzBQNuaWwFCW51bVByaXplcwFpAQlvcGVuQ2hlc3QAAwkBASEBBRFLU19BTExPV19ORlRfRFJBVwkAAgECFFRlbXBvcmFyaWx5IGRpc2FibGVkBAxwcm9sb2dSZXN1bHQJAQdwcm9sb2cyAAMJAAACBQxwcm9sb2dSZXN1bHQFDHByb2xvZ1Jlc3VsdAMJAQIhPQIJAJADAQgFAWkIcGF5bWVudHMAAAkAAgECFE5vIHBheW1lbnRzIHJlcXVpcmVkBAhkcmF3V2VlawkAZQIJAGkCBQZoZWlnaHQFC1dFRUtfQkxPQ0tTAAEEBGFkZHIJAKUIAQgFAWkGY2FsbGVyBAt1c2VyVGlja2V0cwkBC3ZhbHVlT3JFbHNlAgkAnwgBCQESa2V5VXNlcldlZWtUaWNrZXRzAgUEYWRkcgUIZHJhd1dlZWsAAAMJAGcCAAAFC3VzZXJUaWNrZXRzCQACAQIZTm8gZ2VtcyB0byBvcGVuIHRoZSBjaGVzdAkBEW9wZW5DaGVzdEludGVybmFsAQUEYWRkcgkAAgECJFN0cmljdCB2YWx1ZSBpcyBub3QgZXF1YWwgdG8gaXRzZWxmLgAI6+Tr", "height": 3387031, "applicationStatus": "succeeded", "spentComplexity": 0 } View: original | compacted Prev: AsStSyGat4zjoxBfsjDmJDPZrWYizWLEHSDibvyXTCJV Next: 6EdXbEKV6ydFbNiodVfbFwv8zGaE2qgrGTBLDdurY9va Diff:
OldNewDifferences
154154 func Z (U) = ("weekWinners_" + toString(U))
155155
156156
157-func aa (ab) = (toInt(value(value(blockInfoByHeight(((ab * g) + j))).vrf)) % 4)
157+func aa (ab) = {
158+ let ac = (ab * g)
159+ let ad = if ((ac > j))
160+ then ac
161+ else (ac + j)
162+ (toInt(value(value(blockInfoByHeight(((ab * g) + j))).vrf)) % 4)
163+ }
158164
159165
160-func ac (ad) = {
161- let h = ad
166+func ae (af) = {
167+ let h = af
162168 if ($isInstanceOf(h, "Int"))
163169 then {
164- let ae = h
165- ae
170+ let ag = h
171+ ag
166172 }
167173 else throw("fail to cast into Int")
168174 }
169175
170176
171-func af (ag,ah) = {
172- let ai = pow(10, 0, ah, 0, 0, DOWN)
173- let aj = toString((ag % ai))
174- let ak = drop(toString(ai), (1 + size(aj)))
175- (((toString((ag / ai)) + ".") + ak) + aj)
177+func ah (ai,aj) = {
178+ let ak = pow(10, 0, aj, 0, 0, DOWN)
179+ let al = toString((ai % ak))
180+ let am = drop(toString(ak), (1 + size(al)))
181+ (((toString((ai / ak)) + ".") + am) + al)
176182 }
177183
178184
179-func al (am,an,ao) = if ((0 >= am))
185+func an (ao,ap,aq) = if ((0 >= ao))
180186 then throw("maxValue should be > 0")
181187 else {
182- let ap = sha256_16Kb((an + ao))
183- (toInt(ap) % am)
188+ let ar = sha256_16Kb((ap + aq))
189+ (toInt(ar) % ao)
184190 }
185191
186192
187-let aq = 100000000
193+let as = 100000000
188194
189-let ar = 3200
195+let at = 3200
190196
191-let as = 4000
197+let au = 4000
192198
193-let at = 3
199+let av = 3
194200
195-let au = 100000000000
201+let aw = 100000000000
196202
197-func av (P) = ("userXP_" + P)
203+func ax (P) = ("userXP_" + P)
198204
199205
200-func aw (P) = ("userLevel_" + P)
206+func ay (P) = ("userLevel_" + P)
201207
202208
203-let ax = 10000
209+let az = 10000
204210
205-func ay (az) = fraction(ar, pow(az, 4, as, 4, 4, DOWN), aq)
211+func aA (aB) = fraction(at, pow(aB, 4, au, 4, 4, DOWN), as)
206212
207213
208-func aA (aB,aC) = {
209- let aD = ay(aC)
210-[aD, (at * (aD - aB))]
214+func aC (aD,aE) = {
215+ let aF = aA(aE)
216+[aF, (av * (aF - aD))]
211217 }
212218
213219
214-let aE = 100000000000000
220+let aG = 100000000000000
215221
216-let aF = 400000
222+let aH = 400000
217223
218-let aG = 86400000
224+let aI = 86400000
219225
220-let aH = "teamAddr"
226+let aJ = "teamAddr"
221227
222-let aI = "lastClaimedTime_team"
228+let aK = "lastClaimedTime_team"
223229
224-let aJ = "teamAmountLeft"
230+let aL = "teamAmountLeft"
225231
226-let aK = "lastClaimedTime_activities"
232+let aM = "lastClaimedTime_activities"
227233
228-let aL = "activitiesAmountLeft"
234+let aN = "activitiesAmountLeft"
229235
230-let aM = "stakersAmountLeft"
236+let aO = "stakersAmountLeft"
231237
232-func aN (P) = ("lastArbTimeUser_" + P)
238+func aP (P) = ("lastArbTimeUser_" + P)
233239
234240
235-func aO (P) = ("lastWlgLimitUser_" + P)
241+func aQ (P) = ("lastWlgLimitUser_" + P)
236242
237243
238-let aP = "wlg_issueTime"
244+let aR = "wlg_issueTime"
239245
240-let aQ = "wlg_issuedAmount"
246+let aS = "wlg_issuedAmount"
241247
242-func aR (P) = ("acresStakedAmountByUser_" + P)
248+func aT (P) = ("acresStakedAmountByUser_" + P)
243249
244250
245-func aS (P) = ("wlgStakedAmountByUser_" + P)
251+func aU (P) = ("wlgStakedAmountByUser_" + P)
246252
247253
248-let aT = "wlgStakedAmountTotal"
254+let aV = "wlgStakedAmountTotal"
249255
250-func aU (P) = ("wlgStakedTimeByUser_" + P)
256+func aW (P) = ("wlgStakedTimeByUser_" + P)
251257
252258
253-let aV = 1000000
259+let aX = 1000000
254260
255-let aW = 100000000
261+let aY = 100000000
256262
257-let aX = 200000
263+let aZ = 200000
258264
259-let aY = 100000
265+let ba = 100000
260266
261-let aZ = 400000
267+let bb = 400000
262268
263-let ba = 31557600000
269+let bc = 31557600000
264270
265-let bb = 86400000
271+let bd = 86400000
266272
267-let bc = 1000000000
273+let be = 1000000000
268274
269-let bd = 800000
275+let bf = 800000
270276
271-let be = 100000
277+let bg = 100000
272278
273-let bf = 100000
279+let bh = 100000
274280
275-let bg = 1731279600000
281+let bi = 1731279600000
276282
277-let bh = "marketingAddr"
283+let bj = "marketingAddr"
278284
279-let bi = "teamAddr"
285+let bk = "teamAddr"
280286
281-let bj = "lastClaimedTime_team"
287+let bl = "lastClaimedTime_team"
282288
283-let bk = "teamAmountLeft"
289+let bm = "teamAmountLeft"
284290
285-let bl = "lastClaimedTime_activities"
291+let bn = "lastClaimedTime_activities"
286292
287-let bm = "activitiesAmountLeft"
293+let bo = "activitiesAmountLeft"
288294
289-let bn = "stakersAmountLeft"
295+let bp = "stakersAmountLeft"
290296
291-func bo (P) = ("lastClaimedTimeUser_" + P)
297+func bq (P) = ("lastClaimedTimeUser_" + P)
292298
293299
294-func bp (bq,br) = fraction(bq, (aZ * (br + 1)), (6 * aV))
300+func br (bs,bt) = fraction(bs, (bb * (bt + 1)), (6 * aX))
295301
296302
297-let bs = "wlg_issue10Time"
303+let bu = "wlg_issue10Time"
298304
299-let bt = "wlg_issueTime"
305+let bv = "wlg_issueTime"
300306
301-let bu = "wlg_issuedAmount"
307+let bw = "wlg_issuedAmount"
302308
303-let bv = "zbill_issuedAmount"
309+let bx = "zbill_issuedAmount"
304310
305-func bw (P) = ("acresStakedAmountByUser_" + P)
311+func by (P) = ("acresStakedAmountByUser_" + P)
306312
307313
308-let bx = "acresStakedAmountTotal"
314+let bz = "acresStakedAmountTotal"
309315
310-let by = "totalFarmingPower"
316+let bA = "totalFarmingPower"
311317
312-let bz = 0
318+let bB = 0
313319
314-let bA = 1
320+let bC = 1
315321
316-let bB = 2
322+let bD = 2
317323
318-let bC = 3
324+let bE = 3
319325
320-let bD = 4
326+let bF = 4
321327
322-let bE = 1
328+let bG = 1
323329
324-let bF = 5
330+let bH = 5
325331
326-let bG = 100000000
332+let bI = 100000000
327333
328-func bH (P) = ("userFullBonus_" + P)
334+func bJ (P) = ("userFullBonus_" + P)
329335
330336
331-let bI = [0, 10, 20, 40, 80, 150, 250, 400, 700, 1000]
337+let bK = [0, 10, 20, 40, 80, 150, 250, 400, 700, 1000]
332338
333-func bJ (bK) = {
334- let bL = ((bK + 99999999) / aW)
335- func bM (bN,bO) = if ((bO >= bL))
336- then bN
337- else (bN + 1)
339+func bL (bM) = {
340+ let bN = ((bM + 99999999) / aY)
341+ func bO (bP,bQ) = if ((bQ >= bN))
342+ then bP
343+ else (bP + 1)
338344
339- let bP = bI
340- let bQ = size(bP)
341- let bR = 0
342- func bS (bT,bU) = if ((bU >= bQ))
343- then bT
344- else bM(bT, bP[bU])
345+ let bR = bK
346+ let bS = size(bR)
347+ let bT = 0
348+ func bU (bV,bW) = if ((bW >= bS))
349+ then bV
350+ else bO(bV, bR[bW])
345351
346- func bV (bT,bU) = if ((bU >= bQ))
347- then bT
352+ func bX (bV,bW) = if ((bW >= bS))
353+ then bV
348354 else throw("List size exceeds 10")
349355
350- bV(bS(bS(bS(bS(bS(bS(bS(bS(bS(bS(bR, 0), 1), 2), 3), 4), 5), 6), 7), 8), 9), 10)
356+ bX(bU(bU(bU(bU(bU(bU(bU(bU(bU(bU(bT, 0), 1), 2), 3), 4), 5), 6), 7), 8), 9), 10)
351357 }
352358
353359
354-func bW (bK) = ((bK * 20) * (bJ(bK) + 4))
360+func bY (bM) = ((bM * 20) * (bL(bM) + 4))
355361
356362
357-func bX (bK,bY) = {
358- let bZ = bW(bK)
359- $Tuple2(fraction(bZ, (aV + bY), aV), bZ)
363+func bZ (bM,ca) = {
364+ let cb = bY(bM)
365+ $Tuple2(fraction(cb, (aX + ca), aX), cb)
360366 }
361367
362368
363-func ca (cb,K) = {
364- let cc = valueOrElse(getInteger(K, by), 0)
365- let cd = valueOrElse(getInteger(K, bw(cb)), 0)
366- let ce = valueOrElse(getInteger(K, bH(cb)), 0)
367- let cf = bX(cd, ce)
368- let cg = cf._1
369- let ch = cf._2
370-[cc, cg, ch, ce]
369+func cc (cd,K) = {
370+ let ce = valueOrElse(getInteger(K, bA), 0)
371+ let cf = valueOrElse(getInteger(K, by(cd)), 0)
372+ let cg = valueOrElse(getInteger(K, bJ(cd)), 0)
373+ let ch = bZ(cf, cg)
374+ let ci = ch._1
375+ let cj = ch._2
376+[ce, ci, cj, cg]
371377 }
372378
373-
374-let ci = 0
375-
376-let cj = 1
377379
378380 let ck = 0
379381
380382 let cl = 1
381383
382-let cm = 2
384+let cm = 0
383385
384-let cn = 8
386+let cn = 1
385387
386-let co = 11
388+let co = 2
387389
388-let cp = 12
390+let cp = 8
389391
390-let cq = 15
392+let cq = 11
391393
392-let cr = 16
394+let cr = 12
393395
394-let cs = 19
396+let cs = 15
395397
396-let ct = 23
398+let ct = 16
397399
398-let cu = 24
400+let cu = 19
399401
400-let cv = 25
402+let cv = 23
401403
402-let cw = 26
404+let cw = 24
403405
404-let cx = 27
406+let cx = 25
405407
406-let cy = 28
408+let cy = 26
407409
408-let cz = 29
410+let cz = 27
409411
410-func cA (cB,cC,cD,cE) = {
411- let bq = valueOrErrorMessage(getInteger(cC[bB], bu), "WLGOLD is not issued yet")
412- let cF = assetBalance(cC[bz], cD)
413- let cG = (assetBalance(cC[bB], cD) - cE)
414- let cH = assetBalance(cC[bC], cD)
415- let cI = assetBalance(cC[bA], cD)
416- let cJ = cC[bD]
417- let cK = (assetBalance(cJ, cD) + valueOrElse(getInteger(cJ, bv), 0))
418- let cL = ((cI + cG) + cK)
419- let cM = valueOrErrorMessage(getBinary(cC[bB], "wlg_assetId"), "Not initialized yet")
420- let cN = lastBlock.timestamp
421- let cO = valueOrErrorMessage(getInteger(cC[bB], bt), "Not initialized")
422- let cP = assetBalance(cC[bB], cM)
423- let cQ = fraction(bq, aX, aV)
424- let cR = valueOrElse(getInteger(cC[bB], bk), cQ)
425- let cS = valueOrElse(getInteger(cC[bB], bj), cO)
426- let cT = addressFromStringValue(value(getString(cC[bB], bi)))
427- let cU = min([fraction(cQ, (cN - cS), (3 * ba)), cR])
428- let cV = assetBalance(cT, cM)
429- let cW = fraction(bq, aY, aV)
430- let cX = valueOrElse(getInteger(cC[bB], bm), cW)
431- let cY = valueOrElse(getInteger(cC[bB], bl), cO)
432- let cZ = min([fraction(cW, (cN - cY), (3 * ba)), cX])
433- let da = assetBalance(cC[bz], cM)
434- let db = valueOrElse(getInteger(cC[bB], bo(cB)), cO)
435- let dc = ((db - cO) / ba)
436- let dd = min([cN, (cO + (3 * ba))])
437- let de = min([((cN - cO) / ba), 2])
438- let df = ca(cB, cC[bA])
439- let dg = bp(bq, de)
440- let dh = (cO + (ba * de))
441- let di = (cO + (ba * (de - 1)))
442- let dj = fraction(dg, (dd - db), ba)
443- let dk = if ((dc == de))
444- then dj
445- else if ((dc == (de - 1)))
412+let cA = 28
413+
414+let cB = 29
415+
416+func cC (cD,cE,cF,cG) = {
417+ let bs = valueOrErrorMessage(getInteger(cE[bD], bw), "WLGOLD is not issued yet")
418+ let cH = assetBalance(cE[bB], cF)
419+ let cI = (assetBalance(cE[bD], cF) - cG)
420+ let cJ = assetBalance(cE[bE], cF)
421+ let cK = assetBalance(cE[bC], cF)
422+ let cL = cE[bF]
423+ let cM = (assetBalance(cL, cF) + valueOrElse(getInteger(cL, bx), 0))
424+ let cN = ((cK + cI) + cM)
425+ let cO = valueOrErrorMessage(getBinary(cE[bD], "wlg_assetId"), "Not initialized yet")
426+ let cP = lastBlock.timestamp
427+ let cQ = valueOrErrorMessage(getInteger(cE[bD], bv), "Not initialized")
428+ let cR = assetBalance(cE[bD], cO)
429+ let cS = fraction(bs, aZ, aX)
430+ let cT = valueOrElse(getInteger(cE[bD], bm), cS)
431+ let cU = valueOrElse(getInteger(cE[bD], bl), cQ)
432+ let cV = addressFromStringValue(value(getString(cE[bD], bk)))
433+ let cW = min([fraction(cS, (cP - cU), (3 * bc)), cT])
434+ let cX = assetBalance(cV, cO)
435+ let cY = fraction(bs, ba, aX)
436+ let cZ = valueOrElse(getInteger(cE[bD], bo), cY)
437+ let da = valueOrElse(getInteger(cE[bD], bn), cQ)
438+ let db = min([fraction(cY, (cP - da), (3 * bc)), cZ])
439+ let dc = assetBalance(cE[bB], cO)
440+ let dd = valueOrElse(getInteger(cE[bD], bq(cD)), cQ)
441+ let de = ((dd - cQ) / bc)
442+ let df = min([cP, (cQ + (3 * bc))])
443+ let dg = min([((cP - cQ) / bc), 2])
444+ let dh = cc(cD, cE[bC])
445+ let di = br(bs, dg)
446+ let dj = (cQ + (bc * dg))
447+ let dk = (cQ + (bc * (dg - 1)))
448+ let dl = fraction(di, (df - dd), bc)
449+ let dm = if ((de == dg))
450+ then dl
451+ else if ((de == (dg - 1)))
446452 then {
447- let dl = fraction(bp(bq, (de - 1)), (dh - db), ba)
448- (dl + dj)
453+ let dn = fraction(br(bs, (dg - 1)), (dj - dd), bc)
454+ (dn + dl)
449455 }
450456 else {
451- let dm = fraction(bp(bq, (de - 2)), (di - db), ba)
452- let dl = bp(bq, (de - 1))
453- ((dm + dl) + dj)
457+ let do = fraction(br(bs, (dg - 2)), (dk - dd), bc)
458+ let dn = br(bs, (dg - 1))
459+ ((do + dn) + dl)
454460 }
455- let dn = valueOrElse(getInteger(cC[bB], bn), 0)
456- let do = if ((df[ci] != 0))
457- then fraction(dk, df[cj], df[ci])
461+ let dp = valueOrElse(getInteger(cE[bD], bp), 0)
462+ let dq = if ((dh[ck] != 0))
463+ then fraction(dm, dh[cl], dh[ck])
458464 else 0
459- let dp = valueOrElse(getInteger(cC[bB], bs), bg)
460- let dq = fraction(bc, max([(cN - dp), 0]), bb)
461- let dr = fraction(dq, be, aV)
462- let ds = fraction(dq, bf, aV)
463- let dt = max([(cN - max([bg, db])), 0])
464- let du = if ((df[ci] != 0))
465- then fraction(fraction(fraction(bc, dt, bb), df[cj], df[ci]), bd, aV)
465+ let dr = valueOrElse(getInteger(cE[bD], bu), bi)
466+ let ds = fraction(be, max([(cP - dr), 0]), bd)
467+ let dt = fraction(ds, bg, aX)
468+ let du = fraction(ds, bh, aX)
469+ let dv = max([(cP - max([bi, dd])), 0])
470+ let dw = if ((dh[ck] != 0))
471+ then fraction(fraction(fraction(be, dv, bd), dh[cl], dh[ck]), bf, aX)
466472 else 0
467- let dv = max([bg, cN])
468- let dw = valueOrElse(getInteger(cC[bA], bx), 0)
469-[bq, cP, fraction(cL, aW, bq), cL, cF, cI, cG, cH, cO, cS, cQ, cR, cU, cV, cW, cX, cZ, da, de, dn, dg, db, cK, do, dd, dq, dr, ds, du, dv, df[ci], dw]
473+ let dx = max([bi, cP])
474+ let dy = valueOrElse(getInteger(cE[bC], bz), 0)
475+[bs, cR, fraction(cN, aY, bs), cN, cH, cK, cI, cJ, cQ, cU, cS, cT, cW, cX, cY, cZ, db, dc, dg, dp, di, dd, cM, dq, df, ds, dt, du, dw, dx, dh[ck], dy]
470476 }
471477
472478
473-let dx = "profitAddr"
479+let dz = "profitAddr"
474480
475-let dy = "stakersAmountPaidTotal"
481+let dA = "stakersAmountPaidTotal"
476482
477-func dz (P) = ("stakersAmountPaidUser_" + P)
483+func dB (P) = ("stakersAmountPaidUser_" + P)
478484
479485
480-func dA () = ac(reentrantInvoke(K, "saveLastTx", nil, nil))
486+func dC () = ae(reentrantInvoke(K, "saveLastTx", nil, nil))
481487
482488
483-func dB (P) = {
484- let dC = valueOrElse(getInteger(aN(P)), 0)
485- let dD = valueOrElse(getInteger(K, aR(P)), 0)
486- let dE = valueOrElse(getInteger(aO(P)), dD)
487- let dF = (dE + fraction(dD, (lastBlock.timestamp - dC), e))
488- min([dF, dD])
489+func dD (P) = {
490+ let dE = valueOrElse(getInteger(aP(P)), 0)
491+ let dF = valueOrElse(getInteger(K, aT(P)), 0)
492+ let dG = valueOrElse(getInteger(aQ(P)), dF)
493+ let dH = (dG + fraction(dF, (lastBlock.timestamp - dE), e))
494+ min([dH, dF])
489495 }
490496
491497
492-func dG (P) = {
493- let dH = cA(P, [J, K, L, M, N], k, 0)
494- let dI = bo(P)
495- let db = valueOrElse(getInteger(dI), 0)
496- let dJ = dH[cu]
497- if ((db == dJ))
498+func dI (P) = {
499+ let dJ = cC(P, [J, K, L, M, N], k, 0)
500+ let dK = bq(P)
501+ let dd = valueOrElse(getInteger(dK), 0)
502+ let dL = dJ[cw]
503+ if ((dd == dL))
498504 then $Tuple2(nil, 0)
499505 else {
500- let cN = lastBlock.timestamp
501- let cO = dH[cn]
502- let cR = dH[co]
503- let dK = (dH[cp] + dH[cx])
504- let dL = if ((dK > 0))
505- then [ScriptTransfer(addressFromStringValue(value(getString(aH))), dK, R)]
506+ let cP = lastBlock.timestamp
507+ let cQ = dJ[cp]
508+ let cT = dJ[cq]
509+ let dM = (dJ[cr] + dJ[cz])
510+ let dN = if ((dM > 0))
511+ then [ScriptTransfer(addressFromStringValue(value(getString(aJ))), dM, R)]
506512 else nil
507- let cX = dH[cq]
508- let dM = dH[cr]
509- let dN = if ((dM > 0))
510- then [ScriptTransfer(y, dM, R)]
513+ let cZ = dJ[cs]
514+ let dO = dJ[ct]
515+ let dP = if ((dO > 0))
516+ then [ScriptTransfer(y, dO, R)]
511517 else nil
512- let dO = dH[cw]
513- let dP = if ((dO > 0))
514- then [ScriptTransfer(addressFromStringValue(value(getString(bh))), dO, R)]
518+ let dQ = dJ[cy]
519+ let dR = if ((dQ > 0))
520+ then [ScriptTransfer(addressFromStringValue(value(getString(bj))), dQ, R)]
515521 else nil
516- let do = dH[ct]
517- let dQ = dz(P)
518- let dR = (do + dH[cy])
519- let dS = dH[cv]
520- $Tuple2(((([Reissue(R, dS, true), IntegerEntry(aQ, (dH[ck] + dS)), IntegerEntry(bs, dH[cz]), IntegerEntry(dQ, (valueOrElse(getInteger(dQ), 0) + do)), IntegerEntry(dy, (valueOrElse(getInteger(dy), 0) + do)), IntegerEntry(aM, (dH[cs] - do)), IntegerEntry(aJ, ((cR - dK) + dH[cx])), IntegerEntry(aI, cN), IntegerEntry(aL, (cX - dM)), IntegerEntry(aK, cN), IntegerEntry(dI, dJ)] ++ dL) ++ dN) ++ dP), dR)
522+ let dq = dJ[cv]
523+ let dS = dB(P)
524+ let dT = (dq + dJ[cA])
525+ let dU = dJ[cx]
526+ $Tuple2(((([Reissue(R, dU, true), IntegerEntry(aS, (dJ[cm] + dU)), IntegerEntry(bu, dJ[cB]), IntegerEntry(dS, (valueOrElse(getInteger(dS), 0) + dq)), IntegerEntry(dA, (valueOrElse(getInteger(dA), 0) + dq)), IntegerEntry(aO, (dJ[cu] - dq)), IntegerEntry(aL, ((cT - dM) + dJ[cz])), IntegerEntry(aK, cP), IntegerEntry(aN, (cZ - dO)), IntegerEntry(aM, cP), IntegerEntry(dK, dL)] ++ dN) ++ dP) ++ dR), dT)
521527 }
522528 }
523529
524530
525-func dT (P,dU) = {
526- let cN = lastBlock.timestamp
527- let dV = aU(P)
528- let dW = aS(P)
529- let dC = valueOrElse(getInteger(dV), 0)
530- let dX = valueOrElse(getInteger(dW), 0)
531- let dY = valueOrElse(getInteger(aT), 0)
532- let az = fraction(fraction(ax, dX, au), (dC - cN), aG)
533- $Tuple3([IntegerEntry(dV, cN), IntegerEntry(dW, (dX + dU)), IntegerEntry(aT, (dY + dU))], az, dX)
531+func dV (P,dW) = {
532+ let cP = lastBlock.timestamp
533+ let dX = aW(P)
534+ let dY = aU(P)
535+ let dE = valueOrElse(getInteger(dX), 0)
536+ let dZ = valueOrElse(getInteger(dY), 0)
537+ let ea = valueOrElse(getInteger(aV), 0)
538+ let aB = fraction(fraction(az, dZ, aw), (dE - cP), aI)
539+ $Tuple3([IntegerEntry(dX, cP), IntegerEntry(dY, (dZ + dW)), IntegerEntry(aV, (ea + dW))], aB, dZ)
534540 }
535541
536542
537-func dZ (P) = {
543+func eb (P) = {
538544 let U = (height / i)
539- let ea = (U - 1)
540- let eb = valueOrElse(getInteger(X(ea)), bF)
541- let ec = valueOrElse(getInteger(Y(ea)), 0)
542- let ed = valueOrElse(getInteger(T(P, ea)), 0)
543- if ((0 >= ed))
545+ let ec = (U - 1)
546+ let ed = valueOrElse(getInteger(X(ec)), bH)
547+ let ee = valueOrElse(getInteger(Y(ec)), 0)
548+ let ef = valueOrElse(getInteger(T(P, ec)), 0)
549+ if ((0 >= ef))
544550 then $Tuple2(nil, unit)
545551 else {
546- let ee = valueOrElse(getInteger(V(ea)), 0)
547- if ((0 >= ee))
548- then $Tuple2([DeleteEntry(T(P, ea))], unit)
552+ let eg = valueOrElse(getInteger(V(ec)), 0)
553+ if ((0 >= eg))
554+ then $Tuple2([DeleteEntry(T(P, ec))], unit)
549555 else {
550- let ao = value(value(blockInfoByHeight((U * i))).vrf)
551- let an = fromBase58String(split(valueOrElse(getString(O(P)), "42_DEFAULT"), "_")[1])
552- let ef = al(ee, an, ao)
553- if (((ed * eb) > ef))
556+ let aq = value(value(blockInfoByHeight((U * i))).vrf)
557+ let ap = fromBase58String(split(valueOrElse(getString(O(P)), "42_DEFAULT"), "_")[1])
558+ let eh = an(eg, ap, aq)
559+ if (((ef * ed) > eh))
554560 then {
555- let eg = invoke(K, "issueNFT", [P, bE], nil)
556- let eh = getString(Z(ea))
557- let ei = if (isDefined(eh))
558- then ((value(eh) + "_") + P)
561+ let ei = invoke(K, "issueNFT", [P, bG], nil)
562+ let ej = getString(Z(ec))
563+ let ek = if (isDefined(ej))
564+ then ((value(ej) + "_") + P)
559565 else P
560- $Tuple2([IntegerEntry(Y(ea), (ec + 1)), DeleteEntry(T(P, ea)), StringEntry(Z(ea), ei)], eg)
566+ $Tuple2([IntegerEntry(Y(ec), (ee + 1)), DeleteEntry(T(P, ec)), StringEntry(Z(ec), ek)], ei)
561567 }
562568 else {
563- let ej = (al(9, (base58'29' + an), ao) + 1)
564- let ek = fraction(ed, ej, 10)
565- $Tuple2([DeleteEntry(T(P, ea)), IntegerEntry(T(P, U), ek)], ek)
569+ let el = (an(9, (base58'29' + ap), aq) + 1)
570+ let em = fraction(ef, el, 10)
571+ $Tuple2([DeleteEntry(T(P, ec)), IntegerEntry(T(P, U), em)], em)
566572 }
567573 }
568574 }
569575 }
570576
571577
572-func el (P,em) = {
578+func en (P,eo) = {
573579 let U = (height / i)
574- let en = T(P, U)
575- let eo = split(em, "_")
576- let ep = valueOrElse(getInteger(V(U)), 0)
577- let eq = valueOrElse(getInteger(en), 0)
578- let er = if ((aa(parseIntValue(eo[0])) == parseIntValue(eo[1])))
580+ let ep = T(P, U)
581+ let eq = split(eo, "_")
582+ let er = valueOrElse(getInteger(V(U)), 0)
583+ let es = valueOrElse(getInteger(ep), 0)
584+ let et = if ((aa(parseIntValue(eq[0])) == parseIntValue(eq[1])))
579585 then 1
580586 else 0
581- let es = valueOrElse(getInteger(W(U)), 0)
582- let et = if (if ((eq == 0))
583- then (er == 1)
587+ let eu = valueOrElse(getInteger(W(U)), 0)
588+ let ev = if (if ((es == 0))
589+ then (et == 1)
584590 else false)
585- then [IntegerEntry(W(U), (es + 1))]
591+ then [IntegerEntry(W(U), (eu + 1))]
586592 else nil
587- $Tuple2(if ((er == 0))
593+ $Tuple2(if ((et == 0))
588594 then nil
589- else ((et :+ IntegerEntry(en, (eq + er))) :+ IntegerEntry(V(U), (ep + er))), er)
595+ else ((ev :+ IntegerEntry(ep, (es + et))) :+ IntegerEntry(V(U), (er + et))), et)
590596 }
591597
592598
593-@Callable(eu)
594-func constructorV1 (ev,ew,cT,ex) = if ((eu.caller != this))
599+@Callable(ew)
600+func constructorV1 (ex,ey,cV,ez) = if ((ew.caller != this))
595601 then throw("Permission denied")
596602 else if (isDefined(getBinary(Q)))
597603 then throw("Already initialized")
598604 else {
599- let bq = aE
600- let ey = Issue("WLGOLD", "WavesLands Gold investment token", bq, 8, true, unit, 0)
601- let ez = calculateAssetId(ey)
602-[ey, IntegerEntry(aP, lastBlock.timestamp), IntegerEntry(aQ, bq), IntegerEntry(dy, 0), IntegerEntry(aM, fraction(aE, aF, b)), BinaryEntry(Q, ez), StringEntry(x(), ev), StringEntry(bh, ew), StringEntry(aH, cT), StringEntry(dx, ex)]
605+ let bs = aG
606+ let eA = Issue("WLGOLD", "WavesLands Gold investment token", bs, 8, true, unit, 0)
607+ let eB = calculateAssetId(eA)
608+[eA, IntegerEntry(aR, lastBlock.timestamp), IntegerEntry(aS, bs), IntegerEntry(dA, 0), IntegerEntry(aO, fraction(aG, aH, b)), BinaryEntry(Q, eB), StringEntry(x(), ex), StringEntry(bj, ey), StringEntry(aJ, cV), StringEntry(dz, ez)]
603609 }
604610
605611
606612
607-@Callable(eu)
608-func constructorV2 (eA) = if ((eu.caller != this))
613+@Callable(ew)
614+func constructorV2 (eC) = if ((ew.caller != this))
609615 then throw("Permission denied")
610- else [StringEntry(w(), eA)]
616+ else [StringEntry(w(), eC)]
611617
612618
613619
614-@Callable(eu)
615-func buyWlg (eB) = {
616- let eC = dA()
617- if ((eC == eC))
618- then if ((size(eu.payments) != 1))
620+@Callable(ew)
621+func buyWlg (eD) = {
622+ let eE = dC()
623+ if ((eE == eE))
624+ then if ((size(ew.payments) != 1))
619625 then throw("exactly 1 payment must be attached")
620626 else {
621- let eD = eu.payments[0]
622- let eE = eD.amount
623- if (if (!(isDefined(eD.assetId)))
627+ let eF = ew.payments[0]
628+ let eG = eF.amount
629+ if (if (!(isDefined(eF.assetId)))
624630 then true
625- else (value(eD.assetId) != k))
631+ else (value(eF.assetId) != k))
626632 then throw("USDT payments only!")
627633 else {
628- let eF = eu.caller
629- let P = toString(eF)
630- if ((d > eE))
631- then throw((("You can trade min " + af(d, 6)) + " USDT"))
634+ let eH = ew.caller
635+ let P = toString(eH)
636+ if ((d > eG))
637+ then throw((("You can trade min " + ah(d, 6)) + " USDT"))
632638 else {
633- let dH = cA("", [J, K, L, M, N], k, eE)
634- let eG = dH[ck]
635- let eH = dH[cm]
636- let eI = fraction(eH, 6, 5, CEILING)
637- let eJ = fraction(eE, c, eI)
638- let eK = dB(P)
639- if ((eJ > eK))
640- then throw((("You can get max " + af(eK, 8)) + " WLGOLD at the moment"))
641- else if ((eB > eJ))
639+ let dJ = cC("", [J, K, L, M, N], k, eG)
640+ let eI = dJ[cm]
641+ let eJ = dJ[co]
642+ let eK = fraction(eJ, 6, 5, CEILING)
643+ let eL = fraction(eG, c, eK)
644+ let eM = dD(P)
645+ if ((eL > eM))
646+ then throw((("You can get max " + ah(eM, 8)) + " WLGOLD at the moment"))
647+ else if ((eD > eL))
642648 then throw("Price changed during operation, please try again")
643649 else {
644- let eL = (eE / 6)
645- $Tuple2([Reissue(R, eJ, true), IntegerEntry(aQ, (eG + eJ)), IntegerEntry(aN(P), lastBlock.timestamp), IntegerEntry(aO(P), (eK - eJ)), ScriptTransfer(addressFromStringValue(value(getString(dx))), eL, k), ScriptTransfer(eF, eJ, R)], eC)
650+ let eN = (eG / 6)
651+ $Tuple2([Reissue(R, eL, true), IntegerEntry(aS, (eI + eL)), IntegerEntry(aP(P), lastBlock.timestamp), IntegerEntry(aQ(P), (eM - eL)), ScriptTransfer(addressFromStringValue(value(getString(dz))), eN, k), ScriptTransfer(eH, eL, R)], eE)
646652 }
647653 }
648654 }
652658
653659
654660
655-@Callable(eu)
656-func buyWlgREADONLY (p,eE) = {
657- let dH = cA("", [J, K, L, M, N], k, eE)
658- let eH = dH[cm]
659- let eI = fraction(eH, 6, 5, CEILING)
660- let eJ = fraction(eE, c, eI)
661- let eK = dB(p)
662- let eM = fraction(eK, eI, c)
663- let eL = (eE / 6)
664- $Tuple2(nil, [eJ, d, eM, eL])
661+@Callable(ew)
662+func buyWlgREADONLY (p,eG) = {
663+ let dJ = cC("", [J, K, L, M, N], k, eG)
664+ let eJ = dJ[co]
665+ let eK = fraction(eJ, 6, 5, CEILING)
666+ let eL = fraction(eG, c, eK)
667+ let eM = dD(p)
668+ let eO = fraction(eM, eK, c)
669+ let eN = (eG / 6)
670+ $Tuple2(nil, [eL, d, eO, eN])
665671 }
666672
667673
668674
669-@Callable(eu)
670-func sellWlg (eN) = {
671- let eC = dA()
672- if ((eC == eC))
673- then if ((size(eu.payments) != 1))
675+@Callable(ew)
676+func sellWlg (eP) = {
677+ let eE = dC()
678+ if ((eE == eE))
679+ then if ((size(ew.payments) != 1))
674680 then throw("exactly 1 payment must be attached")
675681 else {
676- let eD = eu.payments[0]
677- let eO = eD.amount
678- let eF = eu.caller
679- let P = toString(eF)
680- let eK = dB(P)
681- if ((eO > eK))
682- then throw((("You can spend max " + af(eK, 8)) + " WLGOLD at the moment"))
683- else if (if (!(isDefined(eD.assetId)))
682+ let eF = ew.payments[0]
683+ let eQ = eF.amount
684+ let eH = ew.caller
685+ let P = toString(eH)
686+ let eM = dD(P)
687+ if ((eQ > eM))
688+ then throw((("You can spend max " + ah(eM, 8)) + " WLGOLD at the moment"))
689+ else if (if (!(isDefined(eF.assetId)))
684690 then true
685- else (value(eD.assetId) != R))
691+ else (value(eF.assetId) != R))
686692 then throw("WLGOLD payments only!")
687693 else {
688- let dH = cA("", [J, K, L, M, N], k, 0)
689- let eG = dH[ck]
690- let eP = (dH[cm] / 2)
691- let eE = fraction(eO, eP, c)
692- if ((d > eE))
693- then throw((("You can trade min " + af(d, 6)) + " USDT"))
694- else if ((eN > eE))
694+ let dJ = cC("", [J, K, L, M, N], k, 0)
695+ let eI = dJ[cm]
696+ let eR = (dJ[co] / 2)
697+ let eG = fraction(eQ, eR, c)
698+ if ((d > eG))
699+ then throw((("You can trade min " + ah(d, 6)) + " USDT"))
700+ else if ((eP > eG))
695701 then throw("Price changed during operation, please try again")
696702 else {
697- let eL = (eE / 5)
698- $Tuple2([Burn(R, eO), IntegerEntry(aQ, (eG - eO)), IntegerEntry(aN(P), lastBlock.timestamp), IntegerEntry(aO(P), (eK - eO)), ScriptTransfer(addressFromStringValue(value(getString(dx))), eL, k), ScriptTransfer(eF, eE, k)], eC)
703+ let eN = (eG / 5)
704+ $Tuple2([Burn(R, eQ), IntegerEntry(aS, (eI - eQ)), IntegerEntry(aP(P), lastBlock.timestamp), IntegerEntry(aQ(P), (eM - eQ)), ScriptTransfer(addressFromStringValue(value(getString(dz))), eN, k), ScriptTransfer(eH, eG, k)], eE)
699705 }
700706 }
701707 }
704710
705711
706712
707-@Callable(eu)
708-func sellWlgREADONLY (p,eO) = {
709- let eK = dB(p)
710- let dH = cA("", [J, K, L, M, N], k, 0)
711- let eP = (dH[cm] / 2)
712- let eE = fraction(eO, eP, c)
713- let eQ = fraction(d, c, eP)
714- let eL = (eE / 5)
715- $Tuple2(nil, [eE, eQ, eK, eL])
713+@Callable(ew)
714+func sellWlgREADONLY (p,eQ) = {
715+ let eM = dD(p)
716+ let dJ = cC("", [J, K, L, M, N], k, 0)
717+ let eR = (dJ[co] / 2)
718+ let eG = fraction(eQ, eR, c)
719+ let eS = fraction(d, c, eR)
720+ let eN = (eG / 5)
721+ $Tuple2(nil, [eG, eS, eM, eN])
716722 }
717723
718724
719725
720-@Callable(eu)
726+@Callable(ew)
721727 func claim () = {
722- let eC = dA()
723- if ((eC == eC))
724- then if ((size(eu.payments) != 0))
728+ let eE = dC()
729+ if ((eE == eE))
730+ then if ((size(ew.payments) != 0))
725731 then throw("No payments required")
726732 else {
727- let eR = dG(toString(eu.caller))
728- let eS = eR._1
729- let eT = eR._2
730- $Tuple2((eS :+ ScriptTransfer(eu.caller, eT, R)), eC)
733+ let eT = dI(toString(ew.caller))
734+ let eU = eT._1
735+ let eV = eT._2
736+ $Tuple2((eU :+ ScriptTransfer(ew.caller, eV, R)), eE)
731737 }
732738 else throw("Strict value is not equal to itself.")
733739 }
734740
735741
736742
737-@Callable(eu)
738-func onStakeUnstakeLand (P) = if (if (if ((eu.caller != H))
739- then (eu.caller != I)
743+@Callable(ew)
744+func onStakeUnstakeLand (P) = if (if (if ((ew.caller != H))
745+ then (ew.caller != I)
740746 else false)
741- then (eu.caller != K)
747+ then (ew.caller != K)
742748 else false)
743749 then throw("Permission denied")
744750 else {
745- let eU = dG(P)
746- let eS = eU._1
747- let eT = eU._2
748- $Tuple2(if ((eT > 0))
749- then (eS :+ ScriptTransfer(addressFromStringValue(P), eT, R))
750- else eS, eT)
751+ let eW = dI(P)
752+ let eU = eW._1
753+ let eV = eW._2
754+ $Tuple2(if ((eV > 0))
755+ then (eU :+ ScriptTransfer(addressFromStringValue(P), eV, R))
756+ else eU, eV)
751757 }
752758
753759
754760
755-@Callable(eu)
756-func burnWlgold (eO) = if ((eu.caller != K))
761+@Callable(ew)
762+func burnWlgold (eQ) = if ((ew.caller != K))
757763 then throw("Permission denied")
758764 else {
759- let dH = cA("", [J, K, L, M, N], k, 0)
760- if ((eO > dH[cl]))
761- then throw(((("Only " + af(dH[cl], 8)) + " WLGOLD left on contract, can't burn ") + af(eO, 8)))
765+ let dJ = cC("", [J, K, L, M, N], k, 0)
766+ if ((eQ > dJ[cn]))
767+ then throw(((("Only " + ah(dJ[cn], 8)) + " WLGOLD left on contract, can't burn ") + ah(eQ, 8)))
762768 else {
763- let eV = (dH[ck] - eO)
764- $Tuple2([Burn(R, eO), IntegerEntry(aQ, eV)], eV)
769+ let eX = (dJ[cm] - eQ)
770+ $Tuple2([Burn(R, eQ), IntegerEntry(aS, eX)], eX)
765771 }
766772 }
767773
768774
769775
770-@Callable(eu)
771-func betForTicket (eW) = {
772- let eC = dA()
773- if ((eC == eC))
774- then if ((size(eu.payments) != 0))
776+@Callable(ew)
777+func betForTicket (eY) = {
778+ let eE = dC()
779+ if ((eE == eE))
780+ then if ((size(ew.payments) != 0))
775781 then throw("No payments required")
776782 else {
777- let P = toString(eu.caller)
778- let ea = ((height / i) - 1)
779- let ed = valueOrElse(getInteger(T(P, ea)), 0)
780- let ee = valueOrElse(getInteger(V(ea)), 0)
781- if (if ((ed > 0))
782- then (ee > 0)
783+ let P = toString(ew.caller)
784+ let ec = ((height / i) - 1)
785+ let ef = valueOrElse(getInteger(T(P, ec)), 0)
786+ let eg = valueOrElse(getInteger(V(ec)), 0)
787+ if (if ((ef > 0))
788+ then (eg > 0)
783789 else false)
784790 then throw("Please open the chest first")
785- else if (((eW / 4) != 0))
791+ else if (((eY / 4) != 0))
786792 then throw("Invalid bet: should be 0..3")
787793 else {
788- let eX = (height % g)
789- if ((eX > (g - 3)))
790- then throw((("Cannot bet: the day is almost ended, please wait " + toString((g - eX))) + " blocks"))
794+ let eZ = (height % g)
795+ if ((eZ > (g - 3)))
796+ then throw((("Cannot bet: the day is almost ended, please wait " + toString((g - eZ))) + " blocks"))
791797 else {
792- let eY = valueOrElse(getInteger(K, bw(P)), 0)
793- if ((bG > eY))
794- then throw((("You need to stake at least " + af(bG, 8)) + " ACRES to bet"))
798+ let fa = valueOrElse(getInteger(K, by(P)), 0)
799+ if ((bI > fa))
800+ then throw((("You need to stake at least " + ah(bI, 8)) + " ACRES to bet"))
795801 else {
796- let eZ = ((height / g) + 1)
797- let fa = S(P)
798- let fb = getString(fa)
799- let fc = StringEntry(fa, ((toString(eZ) + "_") + toString(eW)))
800- if (isDefined(fb))
802+ let fb = ((height / g) + 1)
803+ let fc = S(P)
804+ let fd = getString(fc)
805+ let fe = StringEntry(fc, ((toString(fb) + "_") + toString(eY)))
806+ if (isDefined(fd))
801807 then {
802- let fd = value(fb)
803- if ((split(fd, "_")[0] == toString(eZ)))
808+ let ff = value(fd)
809+ if ((split(ff, "_")[0] == toString(fb)))
804810 then throw("You already bet for tomorrow")
805811 else {
806- let fe = el(P, fd)
807- $Tuple2((fe._1 :+ fc), fe._2)
812+ let fg = en(P, ff)
813+ $Tuple2((fg._1 :+ fe), fg._2)
808814 }
809815 }
810- else $Tuple2([fc], 0)
816+ else $Tuple2([fe], 0)
811817 }
812818 }
813819 }
817823
818824
819825
820-@Callable(eu)
821-func takeWlgXp (P) = if ((eu.caller != H))
826+@Callable(ew)
827+func takeWlgXp (P) = if ((ew.caller != H))
822828 then throw("Permission denied")
823829 else {
824- let ff = dT(P, 0)
825- let eS = ff._1
826- let az = ff._2
827- $Tuple2(eS, az)
830+ let fh = dV(P, 0)
831+ let eU = fh._1
832+ let aB = fh._2
833+ $Tuple2(eU, aB)
828834 }
829835
830836
831837
832-@Callable(eu)
838+@Callable(ew)
833839 func checkWlgXpREADONLY (P) = {
834- let fg = dT(P, 0)
835- let fh = fg._1
836- let fi = fg._2
837- let aC = (valueOrElse(getInteger(H, av(P)), 0) + fi)
838- let fj = aA(valueOrElse(getInteger(H, aw(P)), 0), aC)
839- $Tuple2(nil, (fj :+ aC))
840+ let fi = dV(P, 0)
841+ let fj = fi._1
842+ let fk = fi._2
843+ let aE = (valueOrElse(getInteger(H, ax(P)), 0) + fk)
844+ let fl = aC(valueOrElse(getInteger(H, ay(P)), 0), aE)
845+ $Tuple2(nil, (fl :+ aE))
840846 }
841847
842848
843849
844-@Callable(eu)
845-func setNumPrizes (eb) = if ((eu.caller != this))
850+@Callable(ew)
851+func setNumPrizes (ed) = if ((ew.caller != this))
846852 then throw("Permission denied")
847853 else {
848854 let U = (height / i)
849- $Tuple2([IntegerEntry(X(U), eb)], eb)
855+ $Tuple2([IntegerEntry(X(U), ed)], ed)
850856 }
851857
852858
853859
854-@Callable(eu)
860+@Callable(ew)
855861 func openChest () = if (!(n))
856862 then throw("Temporarily disabled")
857863 else {
858- let eC = dA()
859- if ((eC == eC))
860- then if ((size(eu.payments) != 0))
864+ let eE = dC()
865+ if ((eE == eE))
866+ then if ((size(ew.payments) != 0))
861867 then throw("No payments required")
862868 else {
863- let ea = ((height / i) - 1)
864- let P = toString(eu.caller)
865- let ed = valueOrElse(getInteger(T(P, ea)), 0)
866- if ((0 >= ed))
869+ let ec = ((height / i) - 1)
870+ let P = toString(ew.caller)
871+ let ef = valueOrElse(getInteger(T(P, ec)), 0)
872+ if ((0 >= ef))
867873 then throw("No gems to open the chest")
868- else dZ(P)
874+ else eb(P)
869875 }
870876 else throw("Strict value is not equal to itself.")
871877 }
Full:
OldNewDifferences
11 {-# STDLIB_VERSION 6 #-}
22 {-# SCRIPT_TYPE ACCOUNT #-}
33 {-# CONTENT_TYPE DAPP #-}
44 let a = "__"
55
66 let b = 1000000
77
88 let c = 100000000
99
1010 let d = 100000
1111
1212 let e = 86400000
1313
1414 let f = take(drop(this.bytes, 1), 1)
1515
1616 let g = {
1717 let h = f
1818 if ((base58'2W' == h))
1919 then 1440
2020 else if ((base58'2T' == h))
2121 then 60
2222 else throw("Unknown chain")
2323 }
2424
2525 let i = {
2626 let h = f
2727 if ((base58'2W' == h))
2828 then 10080
2929 else if ((base58'2T' == h))
3030 then 180
3131 else throw("Unknown chain")
3232 }
3333
3434 let j = {
3535 let h = f
3636 if ((base58'2W' == h))
3737 then 0
3838 else if ((base58'2T' == h))
3939 then 1146000
4040 else throw("Unknown chain")
4141 }
4242
4343 let k = {
4444 let h = f
4545 if ((base58'2W' == h))
4646 then base58'9wc3LXNA4TEBsXyKtoLE9mrbDD7WMHXvXrCjZvabLAsi'
4747 else if ((base58'2T' == h))
4848 then base58'6mWwf9mZBjVgkC54idpyaZLQfAosD914wT8fGf2iiY63'
4949 else throw("Unknown chain")
5050 }
5151
5252 let l = {
5353 let h = f
5454 if ((base58'2W' == h))
5555 then "3PFwYta8biEz31zpeFe5DJK8wE5trSpQVF8"
5656 else if ((base58'2T' == h))
5757 then "3N7UuYar6264P58FBhVWKPQAh4Yua2hgngv"
5858 else throw("Unknown chain")
5959 }
6060
6161 let m = {
6262 let h = f
6363 if ((base58'2W' == h))
6464 then "3PQCuvFbvh4LkPUnrnU1z3jnbA1p9m3WNhv"
6565 else if ((base58'2T' == h))
6666 then "3MumkGGztCKAXpWDqxkddofqXSUbqQkvSJy"
6767 else throw("Unknown chain")
6868 }
6969
7070 let n = {
7171 let h = f
7272 if ((base58'2W' == h))
7373 then false
7474 else if ((base58'2T' == h))
7575 then true
7676 else throw("Unknown chain")
7777 }
7878
7979 func o (p,q) = valueOrErrorMessage(getString(p, q), makeString(["mandatory ", toString(p), ".", q, " is not defined"], ""))
8080
8181
8282 let r = 1
8383
8484 let s = 2
8585
8686 let t = 4
8787
8888 let u = 5
8989
9090 func v () = "%s__restConfig"
9191
9292
9393 func w () = "%s__rest2Addr"
9494
9595
9696 func x () = "%s__restAddr"
9797
9898
9999 let y = addressFromStringValue(valueOrElse(getString(this, x()), m))
100100
101101 func z (A) = split_4C(o(A, v()), a)
102102
103103
104104 func B (C,D) = valueOrErrorMessage(addressFromString(C[D]), ("Rest cfg doesn't contain address at index " + toString(D)))
105105
106106
107107 let E = 1
108108
109109 let F = 8
110110
111111 let G = z(y)
112112
113113 let H = B(G, E)
114114
115115 let I = B(G, F)
116116
117117 let J = addressFromStringValue(valueOrElse(getString(this, w()), l))
118118
119119 let C = z(J)
120120
121121 let K = B(C, r)
122122
123123 let L = B(C, s)
124124
125125 let M = B(C, t)
126126
127127 let N = B(C, u)
128128
129129 func O (P) = ("lastWeekTxIdByUser_" + P)
130130
131131
132132 let Q = "wlg_assetId"
133133
134134 let R = valueOrErrorMessage(getBinary(L, Q), "WLGOLD is not issued yet")
135135
136136 func S (P) = ("userBet_" + P)
137137
138138
139139 func T (P,U) = ((("userWeekTickets_" + P) + "_") + toString(U))
140140
141141
142142 func V (U) = ("totalWeekTickets_" + toString(U))
143143
144144
145145 func W (U) = ("totalWeekParticipants_" + toString(U))
146146
147147
148148 func X (U) = ("numNFT2Draw_" + toString(U))
149149
150150
151151 func Y (U) = ("numNFTDrawn_" + toString(U))
152152
153153
154154 func Z (U) = ("weekWinners_" + toString(U))
155155
156156
157-func aa (ab) = (toInt(value(value(blockInfoByHeight(((ab * g) + j))).vrf)) % 4)
157+func aa (ab) = {
158+ let ac = (ab * g)
159+ let ad = if ((ac > j))
160+ then ac
161+ else (ac + j)
162+ (toInt(value(value(blockInfoByHeight(((ab * g) + j))).vrf)) % 4)
163+ }
158164
159165
160-func ac (ad) = {
161- let h = ad
166+func ae (af) = {
167+ let h = af
162168 if ($isInstanceOf(h, "Int"))
163169 then {
164- let ae = h
165- ae
170+ let ag = h
171+ ag
166172 }
167173 else throw("fail to cast into Int")
168174 }
169175
170176
171-func af (ag,ah) = {
172- let ai = pow(10, 0, ah, 0, 0, DOWN)
173- let aj = toString((ag % ai))
174- let ak = drop(toString(ai), (1 + size(aj)))
175- (((toString((ag / ai)) + ".") + ak) + aj)
177+func ah (ai,aj) = {
178+ let ak = pow(10, 0, aj, 0, 0, DOWN)
179+ let al = toString((ai % ak))
180+ let am = drop(toString(ak), (1 + size(al)))
181+ (((toString((ai / ak)) + ".") + am) + al)
176182 }
177183
178184
179-func al (am,an,ao) = if ((0 >= am))
185+func an (ao,ap,aq) = if ((0 >= ao))
180186 then throw("maxValue should be > 0")
181187 else {
182- let ap = sha256_16Kb((an + ao))
183- (toInt(ap) % am)
188+ let ar = sha256_16Kb((ap + aq))
189+ (toInt(ar) % ao)
184190 }
185191
186192
187-let aq = 100000000
193+let as = 100000000
188194
189-let ar = 3200
195+let at = 3200
190196
191-let as = 4000
197+let au = 4000
192198
193-let at = 3
199+let av = 3
194200
195-let au = 100000000000
201+let aw = 100000000000
196202
197-func av (P) = ("userXP_" + P)
203+func ax (P) = ("userXP_" + P)
198204
199205
200-func aw (P) = ("userLevel_" + P)
206+func ay (P) = ("userLevel_" + P)
201207
202208
203-let ax = 10000
209+let az = 10000
204210
205-func ay (az) = fraction(ar, pow(az, 4, as, 4, 4, DOWN), aq)
211+func aA (aB) = fraction(at, pow(aB, 4, au, 4, 4, DOWN), as)
206212
207213
208-func aA (aB,aC) = {
209- let aD = ay(aC)
210-[aD, (at * (aD - aB))]
214+func aC (aD,aE) = {
215+ let aF = aA(aE)
216+[aF, (av * (aF - aD))]
211217 }
212218
213219
214-let aE = 100000000000000
220+let aG = 100000000000000
215221
216-let aF = 400000
222+let aH = 400000
217223
218-let aG = 86400000
224+let aI = 86400000
219225
220-let aH = "teamAddr"
226+let aJ = "teamAddr"
221227
222-let aI = "lastClaimedTime_team"
228+let aK = "lastClaimedTime_team"
223229
224-let aJ = "teamAmountLeft"
230+let aL = "teamAmountLeft"
225231
226-let aK = "lastClaimedTime_activities"
232+let aM = "lastClaimedTime_activities"
227233
228-let aL = "activitiesAmountLeft"
234+let aN = "activitiesAmountLeft"
229235
230-let aM = "stakersAmountLeft"
236+let aO = "stakersAmountLeft"
231237
232-func aN (P) = ("lastArbTimeUser_" + P)
238+func aP (P) = ("lastArbTimeUser_" + P)
233239
234240
235-func aO (P) = ("lastWlgLimitUser_" + P)
241+func aQ (P) = ("lastWlgLimitUser_" + P)
236242
237243
238-let aP = "wlg_issueTime"
244+let aR = "wlg_issueTime"
239245
240-let aQ = "wlg_issuedAmount"
246+let aS = "wlg_issuedAmount"
241247
242-func aR (P) = ("acresStakedAmountByUser_" + P)
248+func aT (P) = ("acresStakedAmountByUser_" + P)
243249
244250
245-func aS (P) = ("wlgStakedAmountByUser_" + P)
251+func aU (P) = ("wlgStakedAmountByUser_" + P)
246252
247253
248-let aT = "wlgStakedAmountTotal"
254+let aV = "wlgStakedAmountTotal"
249255
250-func aU (P) = ("wlgStakedTimeByUser_" + P)
256+func aW (P) = ("wlgStakedTimeByUser_" + P)
251257
252258
253-let aV = 1000000
259+let aX = 1000000
254260
255-let aW = 100000000
261+let aY = 100000000
256262
257-let aX = 200000
263+let aZ = 200000
258264
259-let aY = 100000
265+let ba = 100000
260266
261-let aZ = 400000
267+let bb = 400000
262268
263-let ba = 31557600000
269+let bc = 31557600000
264270
265-let bb = 86400000
271+let bd = 86400000
266272
267-let bc = 1000000000
273+let be = 1000000000
268274
269-let bd = 800000
275+let bf = 800000
270276
271-let be = 100000
277+let bg = 100000
272278
273-let bf = 100000
279+let bh = 100000
274280
275-let bg = 1731279600000
281+let bi = 1731279600000
276282
277-let bh = "marketingAddr"
283+let bj = "marketingAddr"
278284
279-let bi = "teamAddr"
285+let bk = "teamAddr"
280286
281-let bj = "lastClaimedTime_team"
287+let bl = "lastClaimedTime_team"
282288
283-let bk = "teamAmountLeft"
289+let bm = "teamAmountLeft"
284290
285-let bl = "lastClaimedTime_activities"
291+let bn = "lastClaimedTime_activities"
286292
287-let bm = "activitiesAmountLeft"
293+let bo = "activitiesAmountLeft"
288294
289-let bn = "stakersAmountLeft"
295+let bp = "stakersAmountLeft"
290296
291-func bo (P) = ("lastClaimedTimeUser_" + P)
297+func bq (P) = ("lastClaimedTimeUser_" + P)
292298
293299
294-func bp (bq,br) = fraction(bq, (aZ * (br + 1)), (6 * aV))
300+func br (bs,bt) = fraction(bs, (bb * (bt + 1)), (6 * aX))
295301
296302
297-let bs = "wlg_issue10Time"
303+let bu = "wlg_issue10Time"
298304
299-let bt = "wlg_issueTime"
305+let bv = "wlg_issueTime"
300306
301-let bu = "wlg_issuedAmount"
307+let bw = "wlg_issuedAmount"
302308
303-let bv = "zbill_issuedAmount"
309+let bx = "zbill_issuedAmount"
304310
305-func bw (P) = ("acresStakedAmountByUser_" + P)
311+func by (P) = ("acresStakedAmountByUser_" + P)
306312
307313
308-let bx = "acresStakedAmountTotal"
314+let bz = "acresStakedAmountTotal"
309315
310-let by = "totalFarmingPower"
316+let bA = "totalFarmingPower"
311317
312-let bz = 0
318+let bB = 0
313319
314-let bA = 1
320+let bC = 1
315321
316-let bB = 2
322+let bD = 2
317323
318-let bC = 3
324+let bE = 3
319325
320-let bD = 4
326+let bF = 4
321327
322-let bE = 1
328+let bG = 1
323329
324-let bF = 5
330+let bH = 5
325331
326-let bG = 100000000
332+let bI = 100000000
327333
328-func bH (P) = ("userFullBonus_" + P)
334+func bJ (P) = ("userFullBonus_" + P)
329335
330336
331-let bI = [0, 10, 20, 40, 80, 150, 250, 400, 700, 1000]
337+let bK = [0, 10, 20, 40, 80, 150, 250, 400, 700, 1000]
332338
333-func bJ (bK) = {
334- let bL = ((bK + 99999999) / aW)
335- func bM (bN,bO) = if ((bO >= bL))
336- then bN
337- else (bN + 1)
339+func bL (bM) = {
340+ let bN = ((bM + 99999999) / aY)
341+ func bO (bP,bQ) = if ((bQ >= bN))
342+ then bP
343+ else (bP + 1)
338344
339- let bP = bI
340- let bQ = size(bP)
341- let bR = 0
342- func bS (bT,bU) = if ((bU >= bQ))
343- then bT
344- else bM(bT, bP[bU])
345+ let bR = bK
346+ let bS = size(bR)
347+ let bT = 0
348+ func bU (bV,bW) = if ((bW >= bS))
349+ then bV
350+ else bO(bV, bR[bW])
345351
346- func bV (bT,bU) = if ((bU >= bQ))
347- then bT
352+ func bX (bV,bW) = if ((bW >= bS))
353+ then bV
348354 else throw("List size exceeds 10")
349355
350- bV(bS(bS(bS(bS(bS(bS(bS(bS(bS(bS(bR, 0), 1), 2), 3), 4), 5), 6), 7), 8), 9), 10)
356+ bX(bU(bU(bU(bU(bU(bU(bU(bU(bU(bU(bT, 0), 1), 2), 3), 4), 5), 6), 7), 8), 9), 10)
351357 }
352358
353359
354-func bW (bK) = ((bK * 20) * (bJ(bK) + 4))
360+func bY (bM) = ((bM * 20) * (bL(bM) + 4))
355361
356362
357-func bX (bK,bY) = {
358- let bZ = bW(bK)
359- $Tuple2(fraction(bZ, (aV + bY), aV), bZ)
363+func bZ (bM,ca) = {
364+ let cb = bY(bM)
365+ $Tuple2(fraction(cb, (aX + ca), aX), cb)
360366 }
361367
362368
363-func ca (cb,K) = {
364- let cc = valueOrElse(getInteger(K, by), 0)
365- let cd = valueOrElse(getInteger(K, bw(cb)), 0)
366- let ce = valueOrElse(getInteger(K, bH(cb)), 0)
367- let cf = bX(cd, ce)
368- let cg = cf._1
369- let ch = cf._2
370-[cc, cg, ch, ce]
369+func cc (cd,K) = {
370+ let ce = valueOrElse(getInteger(K, bA), 0)
371+ let cf = valueOrElse(getInteger(K, by(cd)), 0)
372+ let cg = valueOrElse(getInteger(K, bJ(cd)), 0)
373+ let ch = bZ(cf, cg)
374+ let ci = ch._1
375+ let cj = ch._2
376+[ce, ci, cj, cg]
371377 }
372378
373-
374-let ci = 0
375-
376-let cj = 1
377379
378380 let ck = 0
379381
380382 let cl = 1
381383
382-let cm = 2
384+let cm = 0
383385
384-let cn = 8
386+let cn = 1
385387
386-let co = 11
388+let co = 2
387389
388-let cp = 12
390+let cp = 8
389391
390-let cq = 15
392+let cq = 11
391393
392-let cr = 16
394+let cr = 12
393395
394-let cs = 19
396+let cs = 15
395397
396-let ct = 23
398+let ct = 16
397399
398-let cu = 24
400+let cu = 19
399401
400-let cv = 25
402+let cv = 23
401403
402-let cw = 26
404+let cw = 24
403405
404-let cx = 27
406+let cx = 25
405407
406-let cy = 28
408+let cy = 26
407409
408-let cz = 29
410+let cz = 27
409411
410-func cA (cB,cC,cD,cE) = {
411- let bq = valueOrErrorMessage(getInteger(cC[bB], bu), "WLGOLD is not issued yet")
412- let cF = assetBalance(cC[bz], cD)
413- let cG = (assetBalance(cC[bB], cD) - cE)
414- let cH = assetBalance(cC[bC], cD)
415- let cI = assetBalance(cC[bA], cD)
416- let cJ = cC[bD]
417- let cK = (assetBalance(cJ, cD) + valueOrElse(getInteger(cJ, bv), 0))
418- let cL = ((cI + cG) + cK)
419- let cM = valueOrErrorMessage(getBinary(cC[bB], "wlg_assetId"), "Not initialized yet")
420- let cN = lastBlock.timestamp
421- let cO = valueOrErrorMessage(getInteger(cC[bB], bt), "Not initialized")
422- let cP = assetBalance(cC[bB], cM)
423- let cQ = fraction(bq, aX, aV)
424- let cR = valueOrElse(getInteger(cC[bB], bk), cQ)
425- let cS = valueOrElse(getInteger(cC[bB], bj), cO)
426- let cT = addressFromStringValue(value(getString(cC[bB], bi)))
427- let cU = min([fraction(cQ, (cN - cS), (3 * ba)), cR])
428- let cV = assetBalance(cT, cM)
429- let cW = fraction(bq, aY, aV)
430- let cX = valueOrElse(getInteger(cC[bB], bm), cW)
431- let cY = valueOrElse(getInteger(cC[bB], bl), cO)
432- let cZ = min([fraction(cW, (cN - cY), (3 * ba)), cX])
433- let da = assetBalance(cC[bz], cM)
434- let db = valueOrElse(getInteger(cC[bB], bo(cB)), cO)
435- let dc = ((db - cO) / ba)
436- let dd = min([cN, (cO + (3 * ba))])
437- let de = min([((cN - cO) / ba), 2])
438- let df = ca(cB, cC[bA])
439- let dg = bp(bq, de)
440- let dh = (cO + (ba * de))
441- let di = (cO + (ba * (de - 1)))
442- let dj = fraction(dg, (dd - db), ba)
443- let dk = if ((dc == de))
444- then dj
445- else if ((dc == (de - 1)))
412+let cA = 28
413+
414+let cB = 29
415+
416+func cC (cD,cE,cF,cG) = {
417+ let bs = valueOrErrorMessage(getInteger(cE[bD], bw), "WLGOLD is not issued yet")
418+ let cH = assetBalance(cE[bB], cF)
419+ let cI = (assetBalance(cE[bD], cF) - cG)
420+ let cJ = assetBalance(cE[bE], cF)
421+ let cK = assetBalance(cE[bC], cF)
422+ let cL = cE[bF]
423+ let cM = (assetBalance(cL, cF) + valueOrElse(getInteger(cL, bx), 0))
424+ let cN = ((cK + cI) + cM)
425+ let cO = valueOrErrorMessage(getBinary(cE[bD], "wlg_assetId"), "Not initialized yet")
426+ let cP = lastBlock.timestamp
427+ let cQ = valueOrErrorMessage(getInteger(cE[bD], bv), "Not initialized")
428+ let cR = assetBalance(cE[bD], cO)
429+ let cS = fraction(bs, aZ, aX)
430+ let cT = valueOrElse(getInteger(cE[bD], bm), cS)
431+ let cU = valueOrElse(getInteger(cE[bD], bl), cQ)
432+ let cV = addressFromStringValue(value(getString(cE[bD], bk)))
433+ let cW = min([fraction(cS, (cP - cU), (3 * bc)), cT])
434+ let cX = assetBalance(cV, cO)
435+ let cY = fraction(bs, ba, aX)
436+ let cZ = valueOrElse(getInteger(cE[bD], bo), cY)
437+ let da = valueOrElse(getInteger(cE[bD], bn), cQ)
438+ let db = min([fraction(cY, (cP - da), (3 * bc)), cZ])
439+ let dc = assetBalance(cE[bB], cO)
440+ let dd = valueOrElse(getInteger(cE[bD], bq(cD)), cQ)
441+ let de = ((dd - cQ) / bc)
442+ let df = min([cP, (cQ + (3 * bc))])
443+ let dg = min([((cP - cQ) / bc), 2])
444+ let dh = cc(cD, cE[bC])
445+ let di = br(bs, dg)
446+ let dj = (cQ + (bc * dg))
447+ let dk = (cQ + (bc * (dg - 1)))
448+ let dl = fraction(di, (df - dd), bc)
449+ let dm = if ((de == dg))
450+ then dl
451+ else if ((de == (dg - 1)))
446452 then {
447- let dl = fraction(bp(bq, (de - 1)), (dh - db), ba)
448- (dl + dj)
453+ let dn = fraction(br(bs, (dg - 1)), (dj - dd), bc)
454+ (dn + dl)
449455 }
450456 else {
451- let dm = fraction(bp(bq, (de - 2)), (di - db), ba)
452- let dl = bp(bq, (de - 1))
453- ((dm + dl) + dj)
457+ let do = fraction(br(bs, (dg - 2)), (dk - dd), bc)
458+ let dn = br(bs, (dg - 1))
459+ ((do + dn) + dl)
454460 }
455- let dn = valueOrElse(getInteger(cC[bB], bn), 0)
456- let do = if ((df[ci] != 0))
457- then fraction(dk, df[cj], df[ci])
461+ let dp = valueOrElse(getInteger(cE[bD], bp), 0)
462+ let dq = if ((dh[ck] != 0))
463+ then fraction(dm, dh[cl], dh[ck])
458464 else 0
459- let dp = valueOrElse(getInteger(cC[bB], bs), bg)
460- let dq = fraction(bc, max([(cN - dp), 0]), bb)
461- let dr = fraction(dq, be, aV)
462- let ds = fraction(dq, bf, aV)
463- let dt = max([(cN - max([bg, db])), 0])
464- let du = if ((df[ci] != 0))
465- then fraction(fraction(fraction(bc, dt, bb), df[cj], df[ci]), bd, aV)
465+ let dr = valueOrElse(getInteger(cE[bD], bu), bi)
466+ let ds = fraction(be, max([(cP - dr), 0]), bd)
467+ let dt = fraction(ds, bg, aX)
468+ let du = fraction(ds, bh, aX)
469+ let dv = max([(cP - max([bi, dd])), 0])
470+ let dw = if ((dh[ck] != 0))
471+ then fraction(fraction(fraction(be, dv, bd), dh[cl], dh[ck]), bf, aX)
466472 else 0
467- let dv = max([bg, cN])
468- let dw = valueOrElse(getInteger(cC[bA], bx), 0)
469-[bq, cP, fraction(cL, aW, bq), cL, cF, cI, cG, cH, cO, cS, cQ, cR, cU, cV, cW, cX, cZ, da, de, dn, dg, db, cK, do, dd, dq, dr, ds, du, dv, df[ci], dw]
473+ let dx = max([bi, cP])
474+ let dy = valueOrElse(getInteger(cE[bC], bz), 0)
475+[bs, cR, fraction(cN, aY, bs), cN, cH, cK, cI, cJ, cQ, cU, cS, cT, cW, cX, cY, cZ, db, dc, dg, dp, di, dd, cM, dq, df, ds, dt, du, dw, dx, dh[ck], dy]
470476 }
471477
472478
473-let dx = "profitAddr"
479+let dz = "profitAddr"
474480
475-let dy = "stakersAmountPaidTotal"
481+let dA = "stakersAmountPaidTotal"
476482
477-func dz (P) = ("stakersAmountPaidUser_" + P)
483+func dB (P) = ("stakersAmountPaidUser_" + P)
478484
479485
480-func dA () = ac(reentrantInvoke(K, "saveLastTx", nil, nil))
486+func dC () = ae(reentrantInvoke(K, "saveLastTx", nil, nil))
481487
482488
483-func dB (P) = {
484- let dC = valueOrElse(getInteger(aN(P)), 0)
485- let dD = valueOrElse(getInteger(K, aR(P)), 0)
486- let dE = valueOrElse(getInteger(aO(P)), dD)
487- let dF = (dE + fraction(dD, (lastBlock.timestamp - dC), e))
488- min([dF, dD])
489+func dD (P) = {
490+ let dE = valueOrElse(getInteger(aP(P)), 0)
491+ let dF = valueOrElse(getInteger(K, aT(P)), 0)
492+ let dG = valueOrElse(getInteger(aQ(P)), dF)
493+ let dH = (dG + fraction(dF, (lastBlock.timestamp - dE), e))
494+ min([dH, dF])
489495 }
490496
491497
492-func dG (P) = {
493- let dH = cA(P, [J, K, L, M, N], k, 0)
494- let dI = bo(P)
495- let db = valueOrElse(getInteger(dI), 0)
496- let dJ = dH[cu]
497- if ((db == dJ))
498+func dI (P) = {
499+ let dJ = cC(P, [J, K, L, M, N], k, 0)
500+ let dK = bq(P)
501+ let dd = valueOrElse(getInteger(dK), 0)
502+ let dL = dJ[cw]
503+ if ((dd == dL))
498504 then $Tuple2(nil, 0)
499505 else {
500- let cN = lastBlock.timestamp
501- let cO = dH[cn]
502- let cR = dH[co]
503- let dK = (dH[cp] + dH[cx])
504- let dL = if ((dK > 0))
505- then [ScriptTransfer(addressFromStringValue(value(getString(aH))), dK, R)]
506+ let cP = lastBlock.timestamp
507+ let cQ = dJ[cp]
508+ let cT = dJ[cq]
509+ let dM = (dJ[cr] + dJ[cz])
510+ let dN = if ((dM > 0))
511+ then [ScriptTransfer(addressFromStringValue(value(getString(aJ))), dM, R)]
506512 else nil
507- let cX = dH[cq]
508- let dM = dH[cr]
509- let dN = if ((dM > 0))
510- then [ScriptTransfer(y, dM, R)]
513+ let cZ = dJ[cs]
514+ let dO = dJ[ct]
515+ let dP = if ((dO > 0))
516+ then [ScriptTransfer(y, dO, R)]
511517 else nil
512- let dO = dH[cw]
513- let dP = if ((dO > 0))
514- then [ScriptTransfer(addressFromStringValue(value(getString(bh))), dO, R)]
518+ let dQ = dJ[cy]
519+ let dR = if ((dQ > 0))
520+ then [ScriptTransfer(addressFromStringValue(value(getString(bj))), dQ, R)]
515521 else nil
516- let do = dH[ct]
517- let dQ = dz(P)
518- let dR = (do + dH[cy])
519- let dS = dH[cv]
520- $Tuple2(((([Reissue(R, dS, true), IntegerEntry(aQ, (dH[ck] + dS)), IntegerEntry(bs, dH[cz]), IntegerEntry(dQ, (valueOrElse(getInteger(dQ), 0) + do)), IntegerEntry(dy, (valueOrElse(getInteger(dy), 0) + do)), IntegerEntry(aM, (dH[cs] - do)), IntegerEntry(aJ, ((cR - dK) + dH[cx])), IntegerEntry(aI, cN), IntegerEntry(aL, (cX - dM)), IntegerEntry(aK, cN), IntegerEntry(dI, dJ)] ++ dL) ++ dN) ++ dP), dR)
522+ let dq = dJ[cv]
523+ let dS = dB(P)
524+ let dT = (dq + dJ[cA])
525+ let dU = dJ[cx]
526+ $Tuple2(((([Reissue(R, dU, true), IntegerEntry(aS, (dJ[cm] + dU)), IntegerEntry(bu, dJ[cB]), IntegerEntry(dS, (valueOrElse(getInteger(dS), 0) + dq)), IntegerEntry(dA, (valueOrElse(getInteger(dA), 0) + dq)), IntegerEntry(aO, (dJ[cu] - dq)), IntegerEntry(aL, ((cT - dM) + dJ[cz])), IntegerEntry(aK, cP), IntegerEntry(aN, (cZ - dO)), IntegerEntry(aM, cP), IntegerEntry(dK, dL)] ++ dN) ++ dP) ++ dR), dT)
521527 }
522528 }
523529
524530
525-func dT (P,dU) = {
526- let cN = lastBlock.timestamp
527- let dV = aU(P)
528- let dW = aS(P)
529- let dC = valueOrElse(getInteger(dV), 0)
530- let dX = valueOrElse(getInteger(dW), 0)
531- let dY = valueOrElse(getInteger(aT), 0)
532- let az = fraction(fraction(ax, dX, au), (dC - cN), aG)
533- $Tuple3([IntegerEntry(dV, cN), IntegerEntry(dW, (dX + dU)), IntegerEntry(aT, (dY + dU))], az, dX)
531+func dV (P,dW) = {
532+ let cP = lastBlock.timestamp
533+ let dX = aW(P)
534+ let dY = aU(P)
535+ let dE = valueOrElse(getInteger(dX), 0)
536+ let dZ = valueOrElse(getInteger(dY), 0)
537+ let ea = valueOrElse(getInteger(aV), 0)
538+ let aB = fraction(fraction(az, dZ, aw), (dE - cP), aI)
539+ $Tuple3([IntegerEntry(dX, cP), IntegerEntry(dY, (dZ + dW)), IntegerEntry(aV, (ea + dW))], aB, dZ)
534540 }
535541
536542
537-func dZ (P) = {
543+func eb (P) = {
538544 let U = (height / i)
539- let ea = (U - 1)
540- let eb = valueOrElse(getInteger(X(ea)), bF)
541- let ec = valueOrElse(getInteger(Y(ea)), 0)
542- let ed = valueOrElse(getInteger(T(P, ea)), 0)
543- if ((0 >= ed))
545+ let ec = (U - 1)
546+ let ed = valueOrElse(getInteger(X(ec)), bH)
547+ let ee = valueOrElse(getInteger(Y(ec)), 0)
548+ let ef = valueOrElse(getInteger(T(P, ec)), 0)
549+ if ((0 >= ef))
544550 then $Tuple2(nil, unit)
545551 else {
546- let ee = valueOrElse(getInteger(V(ea)), 0)
547- if ((0 >= ee))
548- then $Tuple2([DeleteEntry(T(P, ea))], unit)
552+ let eg = valueOrElse(getInteger(V(ec)), 0)
553+ if ((0 >= eg))
554+ then $Tuple2([DeleteEntry(T(P, ec))], unit)
549555 else {
550- let ao = value(value(blockInfoByHeight((U * i))).vrf)
551- let an = fromBase58String(split(valueOrElse(getString(O(P)), "42_DEFAULT"), "_")[1])
552- let ef = al(ee, an, ao)
553- if (((ed * eb) > ef))
556+ let aq = value(value(blockInfoByHeight((U * i))).vrf)
557+ let ap = fromBase58String(split(valueOrElse(getString(O(P)), "42_DEFAULT"), "_")[1])
558+ let eh = an(eg, ap, aq)
559+ if (((ef * ed) > eh))
554560 then {
555- let eg = invoke(K, "issueNFT", [P, bE], nil)
556- let eh = getString(Z(ea))
557- let ei = if (isDefined(eh))
558- then ((value(eh) + "_") + P)
561+ let ei = invoke(K, "issueNFT", [P, bG], nil)
562+ let ej = getString(Z(ec))
563+ let ek = if (isDefined(ej))
564+ then ((value(ej) + "_") + P)
559565 else P
560- $Tuple2([IntegerEntry(Y(ea), (ec + 1)), DeleteEntry(T(P, ea)), StringEntry(Z(ea), ei)], eg)
566+ $Tuple2([IntegerEntry(Y(ec), (ee + 1)), DeleteEntry(T(P, ec)), StringEntry(Z(ec), ek)], ei)
561567 }
562568 else {
563- let ej = (al(9, (base58'29' + an), ao) + 1)
564- let ek = fraction(ed, ej, 10)
565- $Tuple2([DeleteEntry(T(P, ea)), IntegerEntry(T(P, U), ek)], ek)
569+ let el = (an(9, (base58'29' + ap), aq) + 1)
570+ let em = fraction(ef, el, 10)
571+ $Tuple2([DeleteEntry(T(P, ec)), IntegerEntry(T(P, U), em)], em)
566572 }
567573 }
568574 }
569575 }
570576
571577
572-func el (P,em) = {
578+func en (P,eo) = {
573579 let U = (height / i)
574- let en = T(P, U)
575- let eo = split(em, "_")
576- let ep = valueOrElse(getInteger(V(U)), 0)
577- let eq = valueOrElse(getInteger(en), 0)
578- let er = if ((aa(parseIntValue(eo[0])) == parseIntValue(eo[1])))
580+ let ep = T(P, U)
581+ let eq = split(eo, "_")
582+ let er = valueOrElse(getInteger(V(U)), 0)
583+ let es = valueOrElse(getInteger(ep), 0)
584+ let et = if ((aa(parseIntValue(eq[0])) == parseIntValue(eq[1])))
579585 then 1
580586 else 0
581- let es = valueOrElse(getInteger(W(U)), 0)
582- let et = if (if ((eq == 0))
583- then (er == 1)
587+ let eu = valueOrElse(getInteger(W(U)), 0)
588+ let ev = if (if ((es == 0))
589+ then (et == 1)
584590 else false)
585- then [IntegerEntry(W(U), (es + 1))]
591+ then [IntegerEntry(W(U), (eu + 1))]
586592 else nil
587- $Tuple2(if ((er == 0))
593+ $Tuple2(if ((et == 0))
588594 then nil
589- else ((et :+ IntegerEntry(en, (eq + er))) :+ IntegerEntry(V(U), (ep + er))), er)
595+ else ((ev :+ IntegerEntry(ep, (es + et))) :+ IntegerEntry(V(U), (er + et))), et)
590596 }
591597
592598
593-@Callable(eu)
594-func constructorV1 (ev,ew,cT,ex) = if ((eu.caller != this))
599+@Callable(ew)
600+func constructorV1 (ex,ey,cV,ez) = if ((ew.caller != this))
595601 then throw("Permission denied")
596602 else if (isDefined(getBinary(Q)))
597603 then throw("Already initialized")
598604 else {
599- let bq = aE
600- let ey = Issue("WLGOLD", "WavesLands Gold investment token", bq, 8, true, unit, 0)
601- let ez = calculateAssetId(ey)
602-[ey, IntegerEntry(aP, lastBlock.timestamp), IntegerEntry(aQ, bq), IntegerEntry(dy, 0), IntegerEntry(aM, fraction(aE, aF, b)), BinaryEntry(Q, ez), StringEntry(x(), ev), StringEntry(bh, ew), StringEntry(aH, cT), StringEntry(dx, ex)]
605+ let bs = aG
606+ let eA = Issue("WLGOLD", "WavesLands Gold investment token", bs, 8, true, unit, 0)
607+ let eB = calculateAssetId(eA)
608+[eA, IntegerEntry(aR, lastBlock.timestamp), IntegerEntry(aS, bs), IntegerEntry(dA, 0), IntegerEntry(aO, fraction(aG, aH, b)), BinaryEntry(Q, eB), StringEntry(x(), ex), StringEntry(bj, ey), StringEntry(aJ, cV), StringEntry(dz, ez)]
603609 }
604610
605611
606612
607-@Callable(eu)
608-func constructorV2 (eA) = if ((eu.caller != this))
613+@Callable(ew)
614+func constructorV2 (eC) = if ((ew.caller != this))
609615 then throw("Permission denied")
610- else [StringEntry(w(), eA)]
616+ else [StringEntry(w(), eC)]
611617
612618
613619
614-@Callable(eu)
615-func buyWlg (eB) = {
616- let eC = dA()
617- if ((eC == eC))
618- then if ((size(eu.payments) != 1))
620+@Callable(ew)
621+func buyWlg (eD) = {
622+ let eE = dC()
623+ if ((eE == eE))
624+ then if ((size(ew.payments) != 1))
619625 then throw("exactly 1 payment must be attached")
620626 else {
621- let eD = eu.payments[0]
622- let eE = eD.amount
623- if (if (!(isDefined(eD.assetId)))
627+ let eF = ew.payments[0]
628+ let eG = eF.amount
629+ if (if (!(isDefined(eF.assetId)))
624630 then true
625- else (value(eD.assetId) != k))
631+ else (value(eF.assetId) != k))
626632 then throw("USDT payments only!")
627633 else {
628- let eF = eu.caller
629- let P = toString(eF)
630- if ((d > eE))
631- then throw((("You can trade min " + af(d, 6)) + " USDT"))
634+ let eH = ew.caller
635+ let P = toString(eH)
636+ if ((d > eG))
637+ then throw((("You can trade min " + ah(d, 6)) + " USDT"))
632638 else {
633- let dH = cA("", [J, K, L, M, N], k, eE)
634- let eG = dH[ck]
635- let eH = dH[cm]
636- let eI = fraction(eH, 6, 5, CEILING)
637- let eJ = fraction(eE, c, eI)
638- let eK = dB(P)
639- if ((eJ > eK))
640- then throw((("You can get max " + af(eK, 8)) + " WLGOLD at the moment"))
641- else if ((eB > eJ))
639+ let dJ = cC("", [J, K, L, M, N], k, eG)
640+ let eI = dJ[cm]
641+ let eJ = dJ[co]
642+ let eK = fraction(eJ, 6, 5, CEILING)
643+ let eL = fraction(eG, c, eK)
644+ let eM = dD(P)
645+ if ((eL > eM))
646+ then throw((("You can get max " + ah(eM, 8)) + " WLGOLD at the moment"))
647+ else if ((eD > eL))
642648 then throw("Price changed during operation, please try again")
643649 else {
644- let eL = (eE / 6)
645- $Tuple2([Reissue(R, eJ, true), IntegerEntry(aQ, (eG + eJ)), IntegerEntry(aN(P), lastBlock.timestamp), IntegerEntry(aO(P), (eK - eJ)), ScriptTransfer(addressFromStringValue(value(getString(dx))), eL, k), ScriptTransfer(eF, eJ, R)], eC)
650+ let eN = (eG / 6)
651+ $Tuple2([Reissue(R, eL, true), IntegerEntry(aS, (eI + eL)), IntegerEntry(aP(P), lastBlock.timestamp), IntegerEntry(aQ(P), (eM - eL)), ScriptTransfer(addressFromStringValue(value(getString(dz))), eN, k), ScriptTransfer(eH, eL, R)], eE)
646652 }
647653 }
648654 }
649655 }
650656 else throw("Strict value is not equal to itself.")
651657 }
652658
653659
654660
655-@Callable(eu)
656-func buyWlgREADONLY (p,eE) = {
657- let dH = cA("", [J, K, L, M, N], k, eE)
658- let eH = dH[cm]
659- let eI = fraction(eH, 6, 5, CEILING)
660- let eJ = fraction(eE, c, eI)
661- let eK = dB(p)
662- let eM = fraction(eK, eI, c)
663- let eL = (eE / 6)
664- $Tuple2(nil, [eJ, d, eM, eL])
661+@Callable(ew)
662+func buyWlgREADONLY (p,eG) = {
663+ let dJ = cC("", [J, K, L, M, N], k, eG)
664+ let eJ = dJ[co]
665+ let eK = fraction(eJ, 6, 5, CEILING)
666+ let eL = fraction(eG, c, eK)
667+ let eM = dD(p)
668+ let eO = fraction(eM, eK, c)
669+ let eN = (eG / 6)
670+ $Tuple2(nil, [eL, d, eO, eN])
665671 }
666672
667673
668674
669-@Callable(eu)
670-func sellWlg (eN) = {
671- let eC = dA()
672- if ((eC == eC))
673- then if ((size(eu.payments) != 1))
675+@Callable(ew)
676+func sellWlg (eP) = {
677+ let eE = dC()
678+ if ((eE == eE))
679+ then if ((size(ew.payments) != 1))
674680 then throw("exactly 1 payment must be attached")
675681 else {
676- let eD = eu.payments[0]
677- let eO = eD.amount
678- let eF = eu.caller
679- let P = toString(eF)
680- let eK = dB(P)
681- if ((eO > eK))
682- then throw((("You can spend max " + af(eK, 8)) + " WLGOLD at the moment"))
683- else if (if (!(isDefined(eD.assetId)))
682+ let eF = ew.payments[0]
683+ let eQ = eF.amount
684+ let eH = ew.caller
685+ let P = toString(eH)
686+ let eM = dD(P)
687+ if ((eQ > eM))
688+ then throw((("You can spend max " + ah(eM, 8)) + " WLGOLD at the moment"))
689+ else if (if (!(isDefined(eF.assetId)))
684690 then true
685- else (value(eD.assetId) != R))
691+ else (value(eF.assetId) != R))
686692 then throw("WLGOLD payments only!")
687693 else {
688- let dH = cA("", [J, K, L, M, N], k, 0)
689- let eG = dH[ck]
690- let eP = (dH[cm] / 2)
691- let eE = fraction(eO, eP, c)
692- if ((d > eE))
693- then throw((("You can trade min " + af(d, 6)) + " USDT"))
694- else if ((eN > eE))
694+ let dJ = cC("", [J, K, L, M, N], k, 0)
695+ let eI = dJ[cm]
696+ let eR = (dJ[co] / 2)
697+ let eG = fraction(eQ, eR, c)
698+ if ((d > eG))
699+ then throw((("You can trade min " + ah(d, 6)) + " USDT"))
700+ else if ((eP > eG))
695701 then throw("Price changed during operation, please try again")
696702 else {
697- let eL = (eE / 5)
698- $Tuple2([Burn(R, eO), IntegerEntry(aQ, (eG - eO)), IntegerEntry(aN(P), lastBlock.timestamp), IntegerEntry(aO(P), (eK - eO)), ScriptTransfer(addressFromStringValue(value(getString(dx))), eL, k), ScriptTransfer(eF, eE, k)], eC)
703+ let eN = (eG / 5)
704+ $Tuple2([Burn(R, eQ), IntegerEntry(aS, (eI - eQ)), IntegerEntry(aP(P), lastBlock.timestamp), IntegerEntry(aQ(P), (eM - eQ)), ScriptTransfer(addressFromStringValue(value(getString(dz))), eN, k), ScriptTransfer(eH, eG, k)], eE)
699705 }
700706 }
701707 }
702708 else throw("Strict value is not equal to itself.")
703709 }
704710
705711
706712
707-@Callable(eu)
708-func sellWlgREADONLY (p,eO) = {
709- let eK = dB(p)
710- let dH = cA("", [J, K, L, M, N], k, 0)
711- let eP = (dH[cm] / 2)
712- let eE = fraction(eO, eP, c)
713- let eQ = fraction(d, c, eP)
714- let eL = (eE / 5)
715- $Tuple2(nil, [eE, eQ, eK, eL])
713+@Callable(ew)
714+func sellWlgREADONLY (p,eQ) = {
715+ let eM = dD(p)
716+ let dJ = cC("", [J, K, L, M, N], k, 0)
717+ let eR = (dJ[co] / 2)
718+ let eG = fraction(eQ, eR, c)
719+ let eS = fraction(d, c, eR)
720+ let eN = (eG / 5)
721+ $Tuple2(nil, [eG, eS, eM, eN])
716722 }
717723
718724
719725
720-@Callable(eu)
726+@Callable(ew)
721727 func claim () = {
722- let eC = dA()
723- if ((eC == eC))
724- then if ((size(eu.payments) != 0))
728+ let eE = dC()
729+ if ((eE == eE))
730+ then if ((size(ew.payments) != 0))
725731 then throw("No payments required")
726732 else {
727- let eR = dG(toString(eu.caller))
728- let eS = eR._1
729- let eT = eR._2
730- $Tuple2((eS :+ ScriptTransfer(eu.caller, eT, R)), eC)
733+ let eT = dI(toString(ew.caller))
734+ let eU = eT._1
735+ let eV = eT._2
736+ $Tuple2((eU :+ ScriptTransfer(ew.caller, eV, R)), eE)
731737 }
732738 else throw("Strict value is not equal to itself.")
733739 }
734740
735741
736742
737-@Callable(eu)
738-func onStakeUnstakeLand (P) = if (if (if ((eu.caller != H))
739- then (eu.caller != I)
743+@Callable(ew)
744+func onStakeUnstakeLand (P) = if (if (if ((ew.caller != H))
745+ then (ew.caller != I)
740746 else false)
741- then (eu.caller != K)
747+ then (ew.caller != K)
742748 else false)
743749 then throw("Permission denied")
744750 else {
745- let eU = dG(P)
746- let eS = eU._1
747- let eT = eU._2
748- $Tuple2(if ((eT > 0))
749- then (eS :+ ScriptTransfer(addressFromStringValue(P), eT, R))
750- else eS, eT)
751+ let eW = dI(P)
752+ let eU = eW._1
753+ let eV = eW._2
754+ $Tuple2(if ((eV > 0))
755+ then (eU :+ ScriptTransfer(addressFromStringValue(P), eV, R))
756+ else eU, eV)
751757 }
752758
753759
754760
755-@Callable(eu)
756-func burnWlgold (eO) = if ((eu.caller != K))
761+@Callable(ew)
762+func burnWlgold (eQ) = if ((ew.caller != K))
757763 then throw("Permission denied")
758764 else {
759- let dH = cA("", [J, K, L, M, N], k, 0)
760- if ((eO > dH[cl]))
761- then throw(((("Only " + af(dH[cl], 8)) + " WLGOLD left on contract, can't burn ") + af(eO, 8)))
765+ let dJ = cC("", [J, K, L, M, N], k, 0)
766+ if ((eQ > dJ[cn]))
767+ then throw(((("Only " + ah(dJ[cn], 8)) + " WLGOLD left on contract, can't burn ") + ah(eQ, 8)))
762768 else {
763- let eV = (dH[ck] - eO)
764- $Tuple2([Burn(R, eO), IntegerEntry(aQ, eV)], eV)
769+ let eX = (dJ[cm] - eQ)
770+ $Tuple2([Burn(R, eQ), IntegerEntry(aS, eX)], eX)
765771 }
766772 }
767773
768774
769775
770-@Callable(eu)
771-func betForTicket (eW) = {
772- let eC = dA()
773- if ((eC == eC))
774- then if ((size(eu.payments) != 0))
776+@Callable(ew)
777+func betForTicket (eY) = {
778+ let eE = dC()
779+ if ((eE == eE))
780+ then if ((size(ew.payments) != 0))
775781 then throw("No payments required")
776782 else {
777- let P = toString(eu.caller)
778- let ea = ((height / i) - 1)
779- let ed = valueOrElse(getInteger(T(P, ea)), 0)
780- let ee = valueOrElse(getInteger(V(ea)), 0)
781- if (if ((ed > 0))
782- then (ee > 0)
783+ let P = toString(ew.caller)
784+ let ec = ((height / i) - 1)
785+ let ef = valueOrElse(getInteger(T(P, ec)), 0)
786+ let eg = valueOrElse(getInteger(V(ec)), 0)
787+ if (if ((ef > 0))
788+ then (eg > 0)
783789 else false)
784790 then throw("Please open the chest first")
785- else if (((eW / 4) != 0))
791+ else if (((eY / 4) != 0))
786792 then throw("Invalid bet: should be 0..3")
787793 else {
788- let eX = (height % g)
789- if ((eX > (g - 3)))
790- then throw((("Cannot bet: the day is almost ended, please wait " + toString((g - eX))) + " blocks"))
794+ let eZ = (height % g)
795+ if ((eZ > (g - 3)))
796+ then throw((("Cannot bet: the day is almost ended, please wait " + toString((g - eZ))) + " blocks"))
791797 else {
792- let eY = valueOrElse(getInteger(K, bw(P)), 0)
793- if ((bG > eY))
794- then throw((("You need to stake at least " + af(bG, 8)) + " ACRES to bet"))
798+ let fa = valueOrElse(getInteger(K, by(P)), 0)
799+ if ((bI > fa))
800+ then throw((("You need to stake at least " + ah(bI, 8)) + " ACRES to bet"))
795801 else {
796- let eZ = ((height / g) + 1)
797- let fa = S(P)
798- let fb = getString(fa)
799- let fc = StringEntry(fa, ((toString(eZ) + "_") + toString(eW)))
800- if (isDefined(fb))
802+ let fb = ((height / g) + 1)
803+ let fc = S(P)
804+ let fd = getString(fc)
805+ let fe = StringEntry(fc, ((toString(fb) + "_") + toString(eY)))
806+ if (isDefined(fd))
801807 then {
802- let fd = value(fb)
803- if ((split(fd, "_")[0] == toString(eZ)))
808+ let ff = value(fd)
809+ if ((split(ff, "_")[0] == toString(fb)))
804810 then throw("You already bet for tomorrow")
805811 else {
806- let fe = el(P, fd)
807- $Tuple2((fe._1 :+ fc), fe._2)
812+ let fg = en(P, ff)
813+ $Tuple2((fg._1 :+ fe), fg._2)
808814 }
809815 }
810- else $Tuple2([fc], 0)
816+ else $Tuple2([fe], 0)
811817 }
812818 }
813819 }
814820 }
815821 else throw("Strict value is not equal to itself.")
816822 }
817823
818824
819825
820-@Callable(eu)
821-func takeWlgXp (P) = if ((eu.caller != H))
826+@Callable(ew)
827+func takeWlgXp (P) = if ((ew.caller != H))
822828 then throw("Permission denied")
823829 else {
824- let ff = dT(P, 0)
825- let eS = ff._1
826- let az = ff._2
827- $Tuple2(eS, az)
830+ let fh = dV(P, 0)
831+ let eU = fh._1
832+ let aB = fh._2
833+ $Tuple2(eU, aB)
828834 }
829835
830836
831837
832-@Callable(eu)
838+@Callable(ew)
833839 func checkWlgXpREADONLY (P) = {
834- let fg = dT(P, 0)
835- let fh = fg._1
836- let fi = fg._2
837- let aC = (valueOrElse(getInteger(H, av(P)), 0) + fi)
838- let fj = aA(valueOrElse(getInteger(H, aw(P)), 0), aC)
839- $Tuple2(nil, (fj :+ aC))
840+ let fi = dV(P, 0)
841+ let fj = fi._1
842+ let fk = fi._2
843+ let aE = (valueOrElse(getInteger(H, ax(P)), 0) + fk)
844+ let fl = aC(valueOrElse(getInteger(H, ay(P)), 0), aE)
845+ $Tuple2(nil, (fl :+ aE))
840846 }
841847
842848
843849
844-@Callable(eu)
845-func setNumPrizes (eb) = if ((eu.caller != this))
850+@Callable(ew)
851+func setNumPrizes (ed) = if ((ew.caller != this))
846852 then throw("Permission denied")
847853 else {
848854 let U = (height / i)
849- $Tuple2([IntegerEntry(X(U), eb)], eb)
855+ $Tuple2([IntegerEntry(X(U), ed)], ed)
850856 }
851857
852858
853859
854-@Callable(eu)
860+@Callable(ew)
855861 func openChest () = if (!(n))
856862 then throw("Temporarily disabled")
857863 else {
858- let eC = dA()
859- if ((eC == eC))
860- then if ((size(eu.payments) != 0))
864+ let eE = dC()
865+ if ((eE == eE))
866+ then if ((size(ew.payments) != 0))
861867 then throw("No payments required")
862868 else {
863- let ea = ((height / i) - 1)
864- let P = toString(eu.caller)
865- let ed = valueOrElse(getInteger(T(P, ea)), 0)
866- if ((0 >= ed))
869+ let ec = ((height / i) - 1)
870+ let P = toString(ew.caller)
871+ let ef = valueOrElse(getInteger(T(P, ec)), 0)
872+ if ((0 >= ef))
867873 then throw("No gems to open the chest")
868- else dZ(P)
874+ else eb(P)
869875 }
870876 else throw("Strict value is not equal to itself.")
871877 }
872878
873879

github/deemru/w8io/169f3d6 
282.65 ms