tx · GyfXV9FxeaAcrbJEEYs6RTEeWs11oXnFKt7BDruDpqQd

3N7HtrKeFFLz5oy6PfGv1Lg3GwPk4gCPdGy:  -0.02700000 Waves

2024.11.28 03:49 [3390590] smart account 3N7HtrKeFFLz5oy6PfGv1Lg3GwPk4gCPdGy > SELF 0.00000000 Waves

{ "type": 13, "id": "GyfXV9FxeaAcrbJEEYs6RTEeWs11oXnFKt7BDruDpqQd", "fee": 2700000, "feeAssetId": null, "timestamp": 1732755046525, "version": 2, "chainId": 84, "sender": "3N7HtrKeFFLz5oy6PfGv1Lg3GwPk4gCPdGy", "senderPublicKey": "FsR18761ZAsUqsTd7TK3XmR6bhihs1UXVmpHYxz5JzQ1", "proofs": [ "5GqmBveCWZgmUGyqCgAEDQdUefg93NYg3XFsrUDJRn6MG5hMr825w7rS3kEq8qsvSL66JMpHc7mbD6A8vrdnUpEt" ], "script": "base64:BgJNCAISBgoECAgICBIDCgEIEgMKAQESBAoCCAESAwoBARIECgIIARIAEgMKAQgSAwoBARIDCgEBEgMKAQgSAwoBCBIDCgEBEgASBAoCCAGVAQADU0VQAgJfXwAFTVVMVDYAwIQ9AAVNVUxUOACAwtcvAA5NSU5TSE9QUEFZTUVOVACgjQYACkRBWV9NSUxMSVMAgLiZKQAFY2hhaW4JAMkBAgkAygECCAUEdGhpcwVieXRlcwABAAEACkRBWV9CTE9DS1MEByRtYXRjaDAFBWNoYWluAwkAAAIBAVcFByRtYXRjaDAAoAsDCQAAAgEBVAUHJG1hdGNoMAA8CQACAQINVW5rbm93biBjaGFpbgALV0VFS19CTE9DS1MEByRtYXRjaDAFBWNoYWluAwkAAAIBAVcFByRtYXRjaDAA4E4DCQAAAgEBVAUHJG1hdGNoMAC0AQkAAgECDVVua25vd24gY2hhaW4AClZSRl9PRkZTRVQEByRtYXRjaDAFBWNoYWluAwkAAAIBAVcFByRtYXRjaDAAAAMJAAACAQFUBQckbWF0Y2gwAJD5RQkAAgECDVVua25vd24gY2hhaW4AC3VzZHRBc3NldElkBAckbWF0Y2gwBQVjaGFpbgMJAAACAQFXBQckbWF0Y2gwASCE2nqyCAM/TtG7yo7ui5O8yYLdC136B5ao1CP5qA//uQMJAAACAQFUBQckbWF0Y2gwASBVsdifcoeC7+XjW42sBatl3ppDoS8WuwXzGreHpfHFGAkAAgECDVVua25vd24gY2hhaW4AFmRlZmF1bHRSZXN0MkFkZHJlc3NTdHIEByRtYXRjaDAFBWNoYWluAwkAAAIBAVcFByRtYXRjaDACIzNQRndZdGE4YmlFejMxenBlRmU1REpLOHdFNXRyU3BRVkY4AwkAAAIBAVQFByRtYXRjaDACIzNON1V1WWFyNjI2NFA1OEZCaFZXS1BRQWg0WXVhMmhnbmd2CQACAQINVW5rbm93biBjaGFpbgAVZGVmYXVsdFJlc3RBZGRyZXNzU3RyBAckbWF0Y2gwBQVjaGFpbgMJAAACAQFXBQckbWF0Y2gwAiMzUFFDdXZGYnZoNExrUFVucm5VMXozam5iQTFwOW0zV05odgMJAAACAQFUBQckbWF0Y2gwAiMzTXVta0dHenRDS0FYcFdEcXhrZGRvZnFYU1VicVFrdlNKeQkAAgECDVVua25vd24gY2hhaW4BD2dldFN0cmluZ09yRmFpbAIHYWRkcmVzcwNrZXkJARN2YWx1ZU9yRXJyb3JNZXNzYWdlAgkAnQgCBQdhZGRyZXNzBQNrZXkJALkJAgkAzAgCAgptYW5kYXRvcnkgCQDMCAIJAKUIAQUHYWRkcmVzcwkAzAgCAgEuCQDMCAIFA2tleQkAzAgCAg8gaXMgbm90IGRlZmluZWQFA25pbAIAABBJZHhDZmdBY3JlczJEYXBwAAEADUlkeENmZ1dsZ0RhcHAAAgAUSWR4Q2ZnUHV6emxlUG9vbERhcHAABAAUSWR4Q2ZnSW52ZXN0RnVuZERhcHAABQEKa2V5UmVzdENmZwACDiVzX19yZXN0Q29uZmlnAQ9rZXlSZXN0MkFkZHJlc3MAAg0lc19fcmVzdDJBZGRyAQ5rZXlSZXN0QWRkcmVzcwACDCVzX19yZXN0QWRkcgAMcmVzdENvbnRyYWN0CQERQGV4dHJOYXRpdmUoMTA2MikBCQELdmFsdWVPckVsc2UCCQCdCAIFBHRoaXMJAQ5rZXlSZXN0QWRkcmVzcwAFFWRlZmF1bHRSZXN0QWRkcmVzc1N0cgERcmVhZFJlc3RDZmdPckZhaWwBBHJlc3QJALwJAgkBD2dldFN0cmluZ09yRmFpbAIFBHJlc3QJAQprZXlSZXN0Q2ZnAAUDU0VQARhnZXRDb250cmFjdEFkZHJlc3NPckZhaWwCCHJlc3QyQ2ZnA2lkeAkBE3ZhbHVlT3JFcnJvck1lc3NhZ2UCCQCmCAEJAJEDAgUIcmVzdDJDZmcFA2lkeAkArAICAipSZXN0IGNmZyBkb2Vzbid0IGNvbnRhaW4gYWRkcmVzcyBhdCBpbmRleCAJAKQDAQUDaWR4ABFJZHhDZmdTdGFraW5nRGFwcAABAA9JZHhDZmdBY3Jlc0RhcHAACAAHcmVzdENmZwkBEXJlYWRSZXN0Q2ZnT3JGYWlsAQUMcmVzdENvbnRyYWN0AA9zdGFraW5nQ29udHJhY3QJARhnZXRDb250cmFjdEFkZHJlc3NPckZhaWwCBQdyZXN0Q2ZnBRFJZHhDZmdTdGFraW5nRGFwcAANYWNyZXNDb250cmFjdAkBGGdldENvbnRyYWN0QWRkcmVzc09yRmFpbAIFB3Jlc3RDZmcFD0lkeENmZ0FjcmVzRGFwcAANcmVzdDJDb250cmFjdAkBEUBleHRyTmF0aXZlKDEwNjIpAQkBC3ZhbHVlT3JFbHNlAgkAnQgCBQR0aGlzCQEPa2V5UmVzdDJBZGRyZXNzAAUWZGVmYXVsdFJlc3QyQWRkcmVzc1N0cgAIcmVzdDJDZmcJARFyZWFkUmVzdENmZ09yRmFpbAEFDXJlc3QyQ29udHJhY3QADmFjcmVzMkNvbnRyYWN0CQEYZ2V0Q29udHJhY3RBZGRyZXNzT3JGYWlsAgUIcmVzdDJDZmcFEElkeENmZ0FjcmVzMkRhcHAAC3dsZ0NvbnRyYWN0CQEYZ2V0Q29udHJhY3RBZGRyZXNzT3JGYWlsAgUIcmVzdDJDZmcFDUlkeENmZ1dsZ0RhcHAAEnB1enpsZVBvb2xDb250cmFjdAkBGGdldENvbnRyYWN0QWRkcmVzc09yRmFpbAIFCHJlc3QyQ2ZnBRRJZHhDZmdQdXp6bGVQb29sRGFwcAASaW52ZXN0RnVuZENvbnRyYWN0CQEYZ2V0Q29udHJhY3RBZGRyZXNzT3JGYWlsAgUIcmVzdDJDZmcFFElkeENmZ0ludmVzdEZ1bmREYXBwARVrZXlMYXN0V2Vla1R4SWRCeVVzZXIBBGFkZHIJAKwCAgITbGFzdFdlZWtUeElkQnlVc2VyXwUEYWRkcgANd2xnQXNzZXRJZEtleQILd2xnX2Fzc2V0SWQACndsZ0Fzc2V0SWQJARN2YWx1ZU9yRXJyb3JNZXNzYWdlAgkAnAgCBQt3bGdDb250cmFjdAUNd2xnQXNzZXRJZEtleQIYV0xHT0xEIGlzIG5vdCBpc3N1ZWQgeWV0AQprZXlVc2VyQmV0AQRhZGRyCQCsAgICCHVzZXJCZXRfBQRhZGRyARJrZXlVc2VyV2Vla1RpY2tldHMCBGFkZHIEd2VlawkArAICCQCsAgIJAKwCAgIQdXNlcldlZWtUaWNrZXRzXwUEYWRkcgIBXwkApAMBBQR3ZWVrARNrZXlUb3RhbFdlZWtUaWNrZXRzAQR3ZWVrCQCsAgICEXRvdGFsV2Vla1RpY2tldHNfCQCkAwEFBHdlZWsBGGtleVRvdGFsV2Vla1BhcnRpY2lwYW50cwEEd2VlawkArAICAhZ0b3RhbFdlZWtQYXJ0aWNpcGFudHNfCQCkAwEFBHdlZWsBDmtleU51bU5GVDJEcmF3AQR3ZWVrCQCsAgICDG51bU5GVDJEcmF3XwkApAMBBQR3ZWVrAQ5rZXlOdW1ORlREcmF3bgEEd2VlawkArAICAgxudW1ORlREcmF3bl8JAKQDAQUEd2VlawEOa2V5V2Vla1dpbm5lcnMBBHdlZWsJAKwCAgIMd2Vla1dpbm5lcnNfCQCkAwEFBHdlZWsBCndpbm5pbmdCZXQBA2RheQQBYgkAaAIFA2RheQUKREFZX0JMT0NLUwQBaAMJAGYCBQFiBQpWUkZfT0ZGU0VUBQFiCQBkAgUBYgUKVlJGX09GRlNFVAkAagIJALEJAQkBBXZhbHVlAQgJAQV2YWx1ZQEJAO0HAQUBaAN2cmYABAALaXhXbGdBbW91bnQAAAAIaXhXbGdXbGcAAQAKaXhXbGdQcmljZQACAA5peFdsZ0lzc3VlVGltZQAIAA9peFdsZ1RlYW1BbUxlZnQACwATaXhXbGdUZWFtQW1BdmFpbE5vdwAMAA5peFdsZ0FjdEFtTGVmdAAPABJpeFdsZ0FjdEFtQXZhaWxOb3cAEAAQaXhXbGdBbUxlZnRUb3RhbAATABNpeFdsZ1VzZXJBbUF2YWlsTm93ABcAEGl4V2xnRWZmVXNlclRpbWUAGAASaXhXbGdJc3N1ZTEwQW1vdW50ABkAG2l4V2xnTWFya2V0aW5nSXNzdWUxMEFtb3VudAAaABZpeFdsZ1RlYW1Jc3N1ZTEwQW1vdW50ABsAD2l4V2xnVXNlcjEwcGFydAAcABBpeFdsZ0lzc3VlMTBUaW1lAB0BBWFzSW50AQF2BAckbWF0Y2gwBQF2AwkAAQIFByRtYXRjaDACA0ludAQBbgUHJG1hdGNoMAUBbgkAAgECFWZhaWwgdG8gY2FzdCBpbnRvIEludAEKZml4ZWRQb2ludAIDdmFsCGRlY2ltYWxzBAZ0ZW5Qb3cJAGwGAAoAAAUIZGVjaW1hbHMAAAAABQRET1dOBAdsb3dQYXJ0CQCkAwEJAGoCBQN2YWwFBnRlblBvdwQGemVyb2VzCQCwAgIJAKQDAQUGdGVuUG93CQBkAgABCQCxAgEFB2xvd1BhcnQJAKwCAgkArAICCQCsAgIJAKQDAQkAaQIFA3ZhbAUGdGVuUG93AgEuBQZ6ZXJvZXMFB2xvd1BhcnQBD2dldFJhbmRvbU51bWJlcgMIbWF4VmFsdWUEc2FsdAdlbnRyb3B5AwkAZwIAAAUIbWF4VmFsdWUJAAIBAhZtYXhWYWx1ZSBzaG91bGQgYmUgPiAwBApyYW5kb21IYXNoCQDUFgEJAMsBAgUEc2FsdAUHZW50cm9weQkAagIJALEJAQUKcmFuZG9tSGFzaAUIbWF4VmFsdWUABlNDQUxFOACAwtcvAAx4cExldmVsU2NhbGUAgBkAD3hwTGV2ZWxSZWNpcFBvdwCgHwASbnVtUG9pbnRzT25MZXZlbFVwAAMAD3dsZ0Jhc2VBbW91bnRYcACA0NvD9AIBCWtleVVzZXJYUAEEYWRkcgkArAICAgd1c2VyWFBfBQRhZGRyAQxrZXlVc2VyTGV2ZWwBBGFkZHIJAKwCAgIKdXNlckxldmVsXwUEYWRkcgAFeHBXbGcAkE4BCWxldmVsQnlYUAECeHAJAGsDBQx4cExldmVsU2NhbGUJAGwGBQJ4cAAEBQ94cExldmVsUmVjaXBQb3cABAAEBQRET1dOBQZTQ0FMRTgBB2xldmVsVXACCWN1cnJMZXZlbAVuZXdYUAQIbmV3TGV2ZWwJAQlsZXZlbEJ5WFABBQVuZXdYUAkAzAgCBQhuZXdMZXZlbAkAzAgCCQBoAgUSbnVtUG9pbnRzT25MZXZlbFVwCQBlAgUIbmV3TGV2ZWwFCWN1cnJMZXZlbAUDbmlsAAhNSUxMSU9ONgCAgOmDsd4WAAtQTEFZRVJTSEFSRQCAtRgACURBWU1JTExJUwCAuJkpAAt0ZWFtQWRkcktleQIIdGVhbUFkZHIAD2xhc3RUZWFtVGltZUtleQIUbGFzdENsYWltZWRUaW1lX3RlYW0AEXRlYW1BbW91bnRMZWZ0S2V5Ag50ZWFtQW1vdW50TGVmdAAVbGFzdEFjdGl2aXRpZXNUaW1lS2V5AhpsYXN0Q2xhaW1lZFRpbWVfYWN0aXZpdGllcwAQYWN0QW1vdW50TGVmdEtleQIUYWN0aXZpdGllc0Ftb3VudExlZnQAFHN0YWtlcnNBbW91bnRMZWZ0S2V5AhFzdGFrZXJzQW1vdW50TGVmdAEZa2V5TGFzdFdsZ1RyYWRlVGltZUJ5VXNlcgEEYWRkcgkArAICAhBsYXN0QXJiVGltZVVzZXJfBQRhZGRyARprZXlMYXN0V2xnVHJhZGVMaW1pdEJ5VXNlcgEEYWRkcgkArAICAhFsYXN0V2xnTGltaXRVc2VyXwUEYWRkcgAPd2xnSXNzdWVUaW1lS2V5Ag13bGdfaXNzdWVUaW1lABJ3bGdJc3N1ZWRBbW91bnRLZXkCEHdsZ19pc3N1ZWRBbW91bnQBGmtleUFjcmVzU3Rha2VkQW1vdW50QnlVc2VyAQRhZGRyCQCsAgICGGFjcmVzU3Rha2VkQW1vdW50QnlVc2VyXwUEYWRkcgEYa2V5V2xnU3Rha2VkQW1vdW50QnlVc2VyAQRhZGRyCQCsAgICFndsZ1N0YWtlZEFtb3VudEJ5VXNlcl8FBGFkZHIAEXdsZ1N0YWtlZFRvdGFsS2V5AhR3bGdTdGFrZWRBbW91bnRUb3RhbAEWa2V5V2xnU3Rha2VkVGltZUJ5VXNlcgEEYWRkcgkArAICAhR3bGdTdGFrZWRUaW1lQnlVc2VyXwUEYWRkcgADTTZfAMCEPQADTThfAIDC1y8AClRFQU1fU0hBUkUAwJoMAA5BQ1RJVklUWV9TSEFSRQCgjQYADFBMQVlFUl9TSEFSRQCAtRgAC1lFQVJfTUlMTElTAICG68d1AAZEQVlfTVMAgLiZKQAHSVNTVUUxMACAlOvcAwAPUExBWUVSUzEwX1NIQVJFAIDqMAARTUFSS0VUSU5HMTBfU0hBUkUAoI0GAAxURUFNMTBfU0hBUkUAoI0GABFORVdfU1RBS0lOR19TVEFSVACA87jCsTIAEG1hcmtldGluZ0FkZHJLZXkCDW1hcmtldGluZ0FkZHIACnRlYW1BZHJLZXkCCHRlYW1BZGRyAA5sYXN0VGVhbVRpbUtleQIUbGFzdENsYWltZWRUaW1lX3RlYW0ADnRlYW1BbXRMZWZ0S2V5Ag50ZWFtQW1vdW50TGVmdAAUbGFzdEFjdGl2aXRpZXNUaW1LZXkCGmxhc3RDbGFpbWVkVGltZV9hY3Rpdml0aWVzAA1hY3RBbXRMZWZ0S2V5AhRhY3Rpdml0aWVzQW1vdW50TGVmdAARc3Rha2Vyc0FtdExlZnRLZXkCEXN0YWtlcnNBbW91bnRMZWZ0ARZrZXlMYXN0Q2xhaW1UaW1lQnlVc2VyAQRhZGRyCQCsAgICFGxhc3RDbGFpbWVkVGltZVVzZXJfBQRhZGRyAQ1kaXN0ckJ5UGVyaW9kAgxpc3N1ZWRBbW91bnQGcGVyaW9kCQBrAwUMaXNzdWVkQW1vdW50CQBoAgUMUExBWUVSX1NIQVJFCQBkAgUGcGVyaW9kAAEJAGgCAAYFA002XwARd2xnSXNzdWUxMFRpbWVLZXkCD3dsZ19pc3N1ZTEwVGltZQAOd2xnSXNzdWVUaW1LZXkCDXdsZ19pc3N1ZVRpbWUAD3dsZ0lzc3VlZEFtdEtleQIQd2xnX2lzc3VlZEFtb3VudAAOemJJc3N1ZWRBbXRLZXkCEnpiaWxsX2lzc3VlZEFtb3VudAEXa2V5QWNyZXNTdGFrZWRBbXRCeVVzZXIBBGFkZHIJAKwCAgIYYWNyZXNTdGFrZWRBbW91bnRCeVVzZXJfBQRhZGRyABJhY3Jlc1N0YWtkVG90YWxLZXkCFmFjcmVzU3Rha2VkQW1vdW50VG90YWwAFHRvdGFsRmFybWluZ1Bvd2VyS2V5AhF0b3RhbEZhcm1pbmdQb3dlcgAJZGFwcDJSZXN0AAAADGRhcHAyU3Rha2luZwABAAhkYXBwMldsZwACAAtkYXBwMlB1enpsZQADAA9kYXBwMkludmVzdEZ1bmQABAAUSWR4RHR4MVBlcmNHZW1XaW5uZXIAAQAVREVGQVVMVF9XRUVLTFlfUFJJWkVTAAUADUFDUkVTX0ZPUl9CRVQAgMLXLwARa2V5TmZ0VG90YWxJc3N1ZWQCDm5mdFRvdGFsSXNzdWVkABFrZXlOZnRUb3RhbEJ1cm5lZAIObmZ0VG90YWxCdXJuZWQAE2tleVdsTmZ0VG90YWxTdGFrZWQCEFdsTmZ0VG90YWxTdGFrZWQBEmtleVVzZXJXbE5mdE51bWJlcgEEYWRkcgkArAICAhB1c2VyV2xOZnROdW1iZXJfBQRhZGRyARBrZXlVc2VyRnVsbEJvbnVzAQRhZGRyCQCsAgICDnVzZXJGdWxsQm9udXNfBQRhZGRyAApsZXZlbEFjcmVzCQDMCAIAAAkAzAgCAAoJAMwIAgAUCQDMCAIAKAkAzAgCAFAJAMwIAgCWAQkAzAgCAPoBCQDMCAIAkAMJAMwIAgC8BQkAzAgCAOgHBQNuaWwBD2dldExldmVsQnlBY3JlcwEFYWNyZXMEA2FjcgkAaQIJAGQCBQVhY3JlcwD/wdcvBQNNOF8KAQdjaGVja2VyAgNhY2MEaXRlbQMJAGcCBQRpdGVtBQNhY3IFA2FjYwkAZAIFA2FjYwABCgACJGwFCmxldmVsQWNyZXMKAAIkcwkAkAMBBQIkbAoABSRhY2MwAAAKAQUkZjBfMQICJGECJGkDCQBnAgUCJGkFAiRzBQIkYQkBB2NoZWNrZXICBQIkYQkAkQMCBQIkbAUCJGkKAQUkZjBfMgICJGECJGkDCQBnAgUCJGkFAiRzBQIkYQkAAgECFExpc3Qgc2l6ZSBleGNlZWRzIDEwCQEFJGYwXzICCQEFJGYwXzECCQEFJGYwXzECCQEFJGYwXzECCQEFJGYwXzECCQEFJGYwXzECCQEFJGYwXzECCQEFJGYwXzECCQEFJGYwXzECCQEFJGYwXzECCQEFJGYwXzECBQUkYWNjMAAAAAEAAgADAAQABQAGAAcACAAJAAoBFmdldEZhcm1pbmdQb3dlckJ5QWNyZXMBBWFjcmVzCQBoAgkAaAIFBWFjcmVzABQJAGQCCQEPZ2V0TGV2ZWxCeUFjcmVzAQUFYWNyZXMABAEeZ2V0RmFybWluZ1Bvd2VyQnlBY3Jlc0FuZEJvbnVzAgVhY3JlcwZib251czYECm5vdEJvbnVzZWQJARZnZXRGYXJtaW5nUG93ZXJCeUFjcmVzAQUFYWNyZXMJAJQKAgkAawMFCm5vdEJvbnVzZWQJAGQCBQNNNl8FBmJvbnVzNgUDTTZfBQpub3RCb251c2VkARBnZXRGYXJtaW5nUG93ZXJzAhJ1c2VyQWRkclN0ck9yRW1wdHkOYWNyZXMyQ29udHJhY3QEB3RvdGFsRlAJAQt2YWx1ZU9yRWxzZQIJAJoIAgUOYWNyZXMyQ29udHJhY3QFFHRvdGFsRmFybWluZ1Bvd2VyS2V5AAAECXVzZXJBY3JlcwkBC3ZhbHVlT3JFbHNlAgkAmggCBQ5hY3JlczJDb250cmFjdAkBF2tleUFjcmVzU3Rha2VkQW10QnlVc2VyAQUSdXNlckFkZHJTdHJPckVtcHR5AAAECXVzZXJCb251cwkBC3ZhbHVlT3JFbHNlAgkAmggCBQ5hY3JlczJDb250cmFjdAkBEGtleVVzZXJGdWxsQm9udXMBBRJ1c2VyQWRkclN0ck9yRW1wdHkAAAQIJHQwNzkxNDMJAR5nZXRGYXJtaW5nUG93ZXJCeUFjcmVzQW5kQm9udXMCBQl1c2VyQWNyZXMFCXVzZXJCb251cwQNdXNlckZQYm9udXNlZAgFCCR0MDc5MTQzAl8xBBB1c2VyRlBub3RCb251c2VkCAUIJHQwNzkxNDMCXzIJAMwIAgUHdG90YWxGUAkAzAgCBQ11c2VyRlBib251c2VkCQDMCAIFEHVzZXJGUG5vdEJvbnVzZWQJAMwIAgUJdXNlckJvbnVzBQNuaWwACmlkeFRvdGFsRlAAAAAQaWR4VXNlckZQYm9udXNlZAABAQxnZXRXbGdTdGF0czIEC3VzZXJBZGRyT3B0CWNvbnRyYWN0cwZ1c2R0SWQVdXNkdEJhbGFuY2VDb3JyZWN0aW9uBAxpc3N1ZWRBbW91bnQJARN2YWx1ZU9yRXJyb3JNZXNzYWdlAgkAmggCCQCRAwIFCWNvbnRyYWN0cwUIZGFwcDJXbGcFD3dsZ0lzc3VlZEFtdEtleQIYV0xHT0xEIGlzIG5vdCBpc3N1ZWQgeWV0BAdyZXN0VXNkCQDwBwIJAJEDAgUJY29udHJhY3RzBQlkYXBwMlJlc3QFBnVzZHRJZAQGd2xnVXNkCQBlAgkA8AcCCQCRAwIFCWNvbnRyYWN0cwUIZGFwcDJXbGcFBnVzZHRJZAUVdXNkdEJhbGFuY2VDb3JyZWN0aW9uBAlwdXp6bGVVc2QJAPAHAgkAkQMCBQljb250cmFjdHMFC2RhcHAyUHV6emxlBQZ1c2R0SWQECWFjcmVzMlVzZAkA8AcCCQCRAwIFCWNvbnRyYWN0cwUMZGFwcDJTdGFraW5nBQZ1c2R0SWQEEWludmVzdEZuZENvbnRyYWN0CQCRAwIFCWNvbnRyYWN0cwUPZGFwcDJJbnZlc3RGdW5kBA9pbnZlc3RGdW5kVG90YWwJAGQCCQDwBwIFEWludmVzdEZuZENvbnRyYWN0BQZ1c2R0SWQJAQt2YWx1ZU9yRWxzZQIJAJoIAgURaW52ZXN0Rm5kQ29udHJhY3QFDnpiSXNzdWVkQW10S2V5AAAEDXRvdGFsRnVuZHNVc2QJAGQCCQBkAgUJYWNyZXMyVXNkBQZ3bGdVc2QFD2ludmVzdEZ1bmRUb3RhbAQFd2xnSWQJARN2YWx1ZU9yRXJyb3JNZXNzYWdlAgkAnAgCCQCRAwIFCWNvbnRyYWN0cwUIZGFwcDJXbGcCC3dsZ19hc3NldElkAhNOb3QgaW5pdGlhbGl6ZWQgeWV0BANub3cIBQlsYXN0QmxvY2sJdGltZXN0YW1wBAlpc3N1ZVRpbWUJARN2YWx1ZU9yRXJyb3JNZXNzYWdlAgkAmggCCQCRAwIFCWNvbnRyYWN0cwUIZGFwcDJXbGcFDndsZ0lzc3VlVGltS2V5Ag9Ob3QgaW5pdGlhbGl6ZWQEBndsZ1dsZwkA8AcCCQCRAwIFCWNvbnRyYWN0cwUIZGFwcDJXbGcFBXdsZ0lkBAl0ZWFtVG90YWwJAGsDBQxpc3N1ZWRBbW91bnQFClRFQU1fU0hBUkUFA002XwQOdGVhbUFtb3VudExlZnQJAQt2YWx1ZU9yRWxzZQIJAJoIAgkAkQMCBQljb250cmFjdHMFCGRhcHAyV2xnBQ50ZWFtQW10TGVmdEtleQUJdGVhbVRvdGFsBAxsYXN0VGVhbVRpbWUJAQt2YWx1ZU9yRWxzZQIJAJoIAgkAkQMCBQljb250cmFjdHMFCGRhcHAyV2xnBQ5sYXN0VGVhbVRpbUtleQUJaXNzdWVUaW1lBAh0ZWFtQWRkcgkBEUBleHRyTmF0aXZlKDEwNjIpAQkBBXZhbHVlAQkAnQgCCQCRAwIFCWNvbnRyYWN0cwUIZGFwcDJXbGcFCnRlYW1BZHJLZXkEFnRlYW1BbW91bnRBdmFpbGFibGVOb3cJAJcDAQkAzAgCCQBrAwUJdGVhbVRvdGFsCQBlAgUDbm93BQxsYXN0VGVhbVRpbWUJAGgCAAMFC1lFQVJfTUlMTElTCQDMCAIFDnRlYW1BbW91bnRMZWZ0BQNuaWwECnRlYW1XbGdvbGQJAPAHAgUIdGVhbUFkZHIFBXdsZ0lkBAhhY3RUb3RhbAkAawMFDGlzc3VlZEFtb3VudAUOQUNUSVZJVFlfU0hBUkUFA002XwQNYWN0QW1vdW50TGVmdAkBC3ZhbHVlT3JFbHNlAgkAmggCCQCRAwIFCWNvbnRyYWN0cwUIZGFwcDJXbGcFDWFjdEFtdExlZnRLZXkFCGFjdFRvdGFsBBJsYXN0QWN0aXZpdGllc1RpbWUJAQt2YWx1ZU9yRWxzZQIJAJoIAgkAkQMCBQljb250cmFjdHMFCGRhcHAyV2xnBRRsYXN0QWN0aXZpdGllc1RpbUtleQUJaXNzdWVUaW1lBBVhY3RBbW91bnRBdmFpbGFibGVOb3cJAJcDAQkAzAgCCQBrAwUIYWN0VG90YWwJAGUCBQNub3cFEmxhc3RBY3Rpdml0aWVzVGltZQkAaAIAAwULWUVBUl9NSUxMSVMJAMwIAgUNYWN0QW1vdW50TGVmdAUDbmlsBAlhY3RXbGdvbGQJAPAHAgkAkQMCBQljb250cmFjdHMFCWRhcHAyUmVzdAUFd2xnSWQEDGxhc3RVc2VyVGltZQkBC3ZhbHVlT3JFbHNlAgkAmggCCQCRAwIFCWNvbnRyYWN0cwUIZGFwcDJXbGcJARZrZXlMYXN0Q2xhaW1UaW1lQnlVc2VyAQULdXNlckFkZHJPcHQFCWlzc3VlVGltZQQObGFzdFVzZXJQZXJpb2QJAGkCCQBlAgUMbGFzdFVzZXJUaW1lBQlpc3N1ZVRpbWUFC1lFQVJfTUlMTElTBApub3dMaW1pdGVkCQCXAwEJAMwIAgUDbm93CQDMCAIJAGQCBQlpc3N1ZVRpbWUJAGgCAAMFC1lFQVJfTUlMTElTBQNuaWwECWN1clBlcmlvZAkAlwMBCQDMCAIJAGkCCQBlAgUDbm93BQlpc3N1ZVRpbWUFC1lFQVJfTUlMTElTCQDMCAIAAgUDbmlsBANlZmYJARBnZXRGYXJtaW5nUG93ZXJzAgULdXNlckFkZHJPcHQJAJEDAgUJY29udHJhY3RzBQxkYXBwMlN0YWtpbmcEFWN1clBlcmlvZERpc3RyaWJ1dGlvbgkBDWRpc3RyQnlQZXJpb2QCBQxpc3N1ZWRBbW91bnQFCWN1clBlcmlvZAQNcHJldlBlcmlvZEVuZAkAZAIFCWlzc3VlVGltZQkAaAIFC1lFQVJfTUlMTElTBQljdXJQZXJpb2QEEXByZXZQcmV2UGVyaW9kRW5kCQBkAgUJaXNzdWVUaW1lCQBoAgULWUVBUl9NSUxMSVMJAGUCBQljdXJQZXJpb2QAAQQCYTAJAGsDBRVjdXJQZXJpb2REaXN0cmlidXRpb24JAGUCBQpub3dMaW1pdGVkBQxsYXN0VXNlclRpbWUFC1lFQVJfTUlMTElTBA11c2VyQXZhaWxhYmxlAwkAAAIFDmxhc3RVc2VyUGVyaW9kBQljdXJQZXJpb2QFAmEwAwkAAAIFDmxhc3RVc2VyUGVyaW9kCQBlAgUJY3VyUGVyaW9kAAEEAmExCQBrAwkBDWRpc3RyQnlQZXJpb2QCBQxpc3N1ZWRBbW91bnQJAGUCBQljdXJQZXJpb2QAAQkAZQIFDXByZXZQZXJpb2RFbmQFDGxhc3RVc2VyVGltZQULWUVBUl9NSUxMSVMJAGQCBQJhMQUCYTAEAmEyCQBrAwkBDWRpc3RyQnlQZXJpb2QCBQxpc3N1ZWRBbW91bnQJAGUCBQljdXJQZXJpb2QAAgkAZQIFEXByZXZQcmV2UGVyaW9kRW5kBQxsYXN0VXNlclRpbWUFC1lFQVJfTUlMTElTBAJhMQkBDWRpc3RyQnlQZXJpb2QCBQxpc3N1ZWRBbW91bnQJAGUCBQljdXJQZXJpb2QAAQkAZAIJAGQCBQJhMgUCYTEFAmEwBA9hbW91bnRMZWZ0VG90YWwJAQt2YWx1ZU9yRWxzZQIJAJoIAgkAkQMCBQljb250cmFjdHMFCGRhcHAyV2xnBRFzdGFrZXJzQW10TGVmdEtleQAABAp1c2VyQW1vdW50AwkBAiE9AgkAkQMCBQNlZmYFCmlkeFRvdGFsRlAAAAkAawMFDXVzZXJBdmFpbGFibGUJAJEDAgUDZWZmBRBpZHhVc2VyRlBib251c2VkCQCRAwIFA2VmZgUKaWR4VG90YWxGUAAABA9sYXN0SXNzdWUxMFRpbWUJAQt2YWx1ZU9yRWxzZQIJAJoIAgkAkQMCBQljb250cmFjdHMFCGRhcHAyV2xnBRF3bGdJc3N1ZTEwVGltZUtleQURTkVXX1NUQUtJTkdfU1RBUlQEDWlzc3VlMTBBbW91bnQJAGsDBQdJU1NVRTEwCQCWAwEJAMwIAgkAZQIFA25vdwUPbGFzdElzc3VlMTBUaW1lCQDMCAIAAAUDbmlsBQZEQVlfTVMEFm1hcmtldGluZ0lzc3VlMTBBbW91bnQJAGsDBQ1pc3N1ZTEwQW1vdW50BRFNQVJLRVRJTkcxMF9TSEFSRQUDTTZfBBF0ZWFtSXNzdWUxMEFtb3VudAkAawMFDWlzc3VlMTBBbW91bnQFDFRFQU0xMF9TSEFSRQUDTTZfBA51c2VyMTBJbnRlcnZhbAkAlgMBCQDMCAIJAGUCBQNub3cJAJYDAQkAzAgCBRFORVdfU1RBS0lOR19TVEFSVAkAzAgCBQxsYXN0VXNlclRpbWUFA25pbAkAzAgCAAAFA25pbAQKdXNlcjEwcGFydAMJAQIhPQIJAJEDAgUDZWZmBQppZHhUb3RhbEZQAAAJAGsDCQBrAwkAawMFB0lTU1VFMTAFDnVzZXIxMEludGVydmFsBQZEQVlfTVMJAJEDAgUDZWZmBRBpZHhVc2VyRlBib251c2VkCQCRAwIFA2VmZgUKaWR4VG90YWxGUAUPUExBWUVSUzEwX1NIQVJFBQNNNl8AAAQObmV3SXNzdWUxMFRpbWUJAJYDAQkAzAgCBRFORVdfU1RBS0lOR19TVEFSVAkAzAgCBQNub3cFA25pbAQQYWNyZXNTdGFrZWRUb3RhbAkBC3ZhbHVlT3JFbHNlAgkAmggCCQCRAwIFCWNvbnRyYWN0cwUMZGFwcDJTdGFraW5nBRJhY3Jlc1N0YWtkVG90YWxLZXkAAAQObmZ0VG90YWxJc3N1ZWQJAQt2YWx1ZU9yRWxzZQIJAJoIAgkAkQMCBQljb250cmFjdHMFDGRhcHAyU3Rha2luZwURa2V5TmZ0VG90YWxJc3N1ZWQAAAQObmZ0VG90YWxCdXJuZWQJAQt2YWx1ZU9yRWxzZQIJAJoIAgkAkQMCBQljb250cmFjdHMFDGRhcHAyU3Rha2luZwURa2V5TmZ0VG90YWxCdXJuZWQAAAQQd2xOZnRUb3RhbFN0YWtlZAkBC3ZhbHVlT3JFbHNlAgkAmggCCQCRAwIFCWNvbnRyYWN0cwUMZGFwcDJTdGFraW5nBRNrZXlXbE5mdFRvdGFsU3Rha2VkAAAED3dsTmZ0VXNlclN0YWtlZAkBC3ZhbHVlT3JFbHNlAgkAmggCCQCRAwIFCWNvbnRyYWN0cwUMZGFwcDJTdGFraW5nCQESa2V5VXNlcldsTmZ0TnVtYmVyAQkBC3ZhbHVlT3JFbHNlAgULdXNlckFkZHJPcHQCAAAACQDMCAIFDGlzc3VlZEFtb3VudAkAzAgCBQZ3bGdXbGcJAMwIAgkAawMFDXRvdGFsRnVuZHNVc2QFA004XwUMaXNzdWVkQW1vdW50CQDMCAIFDXRvdGFsRnVuZHNVc2QJAMwIAgUHcmVzdFVzZAkAzAgCBQlhY3JlczJVc2QJAMwIAgUGd2xnVXNkCQDMCAIFCXB1enpsZVVzZAkAzAgCBQlpc3N1ZVRpbWUJAMwIAgUMbGFzdFRlYW1UaW1lCQDMCAIFCXRlYW1Ub3RhbAkAzAgCBQ50ZWFtQW1vdW50TGVmdAkAzAgCBRZ0ZWFtQW1vdW50QXZhaWxhYmxlTm93CQDMCAIFCnRlYW1XbGdvbGQJAMwIAgUIYWN0VG90YWwJAMwIAgUNYWN0QW1vdW50TGVmdAkAzAgCBRVhY3RBbW91bnRBdmFpbGFibGVOb3cJAMwIAgUJYWN0V2xnb2xkCQDMCAIFCWN1clBlcmlvZAkAzAgCBQ9hbW91bnRMZWZ0VG90YWwJAMwIAgUVY3VyUGVyaW9kRGlzdHJpYnV0aW9uCQDMCAIFDGxhc3RVc2VyVGltZQkAzAgCBQ9pbnZlc3RGdW5kVG90YWwJAMwIAgUKdXNlckFtb3VudAkAzAgCBQpub3dMaW1pdGVkCQDMCAIFDWlzc3VlMTBBbW91bnQJAMwIAgUWbWFya2V0aW5nSXNzdWUxMEFtb3VudAkAzAgCBRF0ZWFtSXNzdWUxMEFtb3VudAkAzAgCBQp1c2VyMTBwYXJ0CQDMCAIFDm5ld0lzc3VlMTBUaW1lCQDMCAIJAJEDAgUDZWZmBQppZHhUb3RhbEZQCQDMCAIFEGFjcmVzU3Rha2VkVG90YWwJAMwIAgUObmZ0VG90YWxJc3N1ZWQJAMwIAgUObmZ0VG90YWxCdXJuZWQJAMwIAgUQd2xOZnRUb3RhbFN0YWtlZAkAzAgCBQ93bE5mdFVzZXJTdGFrZWQFA25pbAANcHJvZml0QWRkcktleQIKcHJvZml0QWRkcgAZc3Rha2Vyc0Ftb3VudFBhaWRUb3RhbEtleQIWc3Rha2Vyc0Ftb3VudFBhaWRUb3RhbAEYa2V5U3Rha2Vyc0Ftb3VudFBhaWRVc2VyAQRhZGRyCQCsAgICFnN0YWtlcnNBbW91bnRQYWlkVXNlcl8FBGFkZHIBB3Byb2xvZzIACQEFYXNJbnQBCQD9BwQFDmFjcmVzMkNvbnRyYWN0AgpzYXZlTGFzdFR4BQNuaWwFA25pbAESZ2V0U3dhcExpbWl0V2xnb2xkAQRhZGRyBAhsYXN0VGltZQkBC3ZhbHVlT3JFbHNlAgkAnwgBCQEZa2V5TGFzdFdsZ1RyYWRlVGltZUJ5VXNlcgEFBGFkZHIAAAQMZGVmYXVsdExpbWl0CQELdmFsdWVPckVsc2UCCQCaCAIFDmFjcmVzMkNvbnRyYWN0CQEaa2V5QWNyZXNTdGFrZWRBbW91bnRCeVVzZXIBBQRhZGRyAAAEDWxhc3RMaW1pdExlZnQJAQt2YWx1ZU9yRWxzZQIJAJ8IAQkBGmtleUxhc3RXbGdUcmFkZUxpbWl0QnlVc2VyAQUEYWRkcgUMZGVmYXVsdExpbWl0BAxjdXJyZW50TGltaXQJAGQCBQ1sYXN0TGltaXRMZWZ0CQBrAwUMZGVmYXVsdExpbWl0CQBlAggFCWxhc3RCbG9jawl0aW1lc3RhbXAFCGxhc3RUaW1lBQpEQVlfTUlMTElTCQCXAwEJAMwIAgUMY3VycmVudExpbWl0CQDMCAIFDGRlZmF1bHRMaW1pdAUDbmlsAQ5jbGFpbUludGVybmFsMgEEYWRkcgQIY3VyU3RhdHMJAQxnZXRXbGdTdGF0czIEBQRhZGRyCQDMCAIFDXJlc3QyQ29udHJhY3QJAMwIAgUOYWNyZXMyQ29udHJhY3QJAMwIAgULd2xnQ29udHJhY3QJAMwIAgUScHV6emxlUG9vbENvbnRyYWN0CQDMCAIFEmludmVzdEZ1bmRDb250cmFjdAUDbmlsBQt1c2R0QXNzZXRJZAAABAt1c2VyVGltZUtleQkBFmtleUxhc3RDbGFpbVRpbWVCeVVzZXIBBQRhZGRyBAxsYXN0VXNlclRpbWUJAQt2YWx1ZU9yRWxzZQIJAJ8IAQULdXNlclRpbWVLZXkAAAQLdXNlckVmZlRpbWUJAJEDAgUIY3VyU3RhdHMFEGl4V2xnRWZmVXNlclRpbWUDCQAAAgUMbGFzdFVzZXJUaW1lBQt1c2VyRWZmVGltZQkAlAoCBQNuaWwAAAQDbm93CAUJbGFzdEJsb2NrCXRpbWVzdGFtcAQJaXNzdWVUaW1lCQCRAwIFCGN1clN0YXRzBQ5peFdsZ0lzc3VlVGltZQQOdGVhbUFtb3VudExlZnQJAJEDAgUIY3VyU3RhdHMFD2l4V2xnVGVhbUFtTGVmdAQKdGVhbUFtb3VudAkAZAIJAJEDAgUIY3VyU3RhdHMFE2l4V2xnVGVhbUFtQXZhaWxOb3cJAJEDAgUIY3VyU3RhdHMFFml4V2xnVGVhbUlzc3VlMTBBbW91bnQEDHRlYW1UcmFuc2ZlcgMJAGYCBQp0ZWFtQW1vdW50AAAJAMwIAgkBDlNjcmlwdFRyYW5zZmVyAwkBEUBleHRyTmF0aXZlKDEwNjIpAQkBBXZhbHVlAQkAoggBBQt0ZWFtQWRkcktleQUKdGVhbUFtb3VudAUKd2xnQXNzZXRJZAUDbmlsBQNuaWwEDWFjdEFtb3VudExlZnQJAJEDAgUIY3VyU3RhdHMFDml4V2xnQWN0QW1MZWZ0BAlhY3RBbW91bnQJAJEDAgUIY3VyU3RhdHMFEml4V2xnQWN0QW1BdmFpbE5vdwQLYWN0VHJhbnNmZXIDCQBmAgUJYWN0QW1vdW50AAAJAMwIAgkBDlNjcmlwdFRyYW5zZmVyAwUMcmVzdENvbnRyYWN0BQlhY3RBbW91bnQFCndsZ0Fzc2V0SWQFA25pbAUDbmlsBA9tYXJrZXRpbmdBbW91bnQJAJEDAgUIY3VyU3RhdHMFG2l4V2xnTWFya2V0aW5nSXNzdWUxMEFtb3VudAQRbWFya2V0aW5nVHJhbnNmZXIDCQBmAgUPbWFya2V0aW5nQW1vdW50AAAJAMwIAgkBDlNjcmlwdFRyYW5zZmVyAwkBEUBleHRyTmF0aXZlKDEwNjIpAQkBBXZhbHVlAQkAoggBBRBtYXJrZXRpbmdBZGRyS2V5BQ9tYXJrZXRpbmdBbW91bnQFCndsZ0Fzc2V0SWQFA25pbAUDbmlsBAp1c2VyQW1vdW50CQCRAwIFCGN1clN0YXRzBRNpeFdsZ1VzZXJBbUF2YWlsTm93BAd1c2VyS2V5CQEYa2V5U3Rha2Vyc0Ftb3VudFBhaWRVc2VyAQUEYWRkcgQJdXNlclRvdGFsCQBkAgUKdXNlckFtb3VudAkAkQMCBQhjdXJTdGF0cwUPaXhXbGdVc2VyMTBwYXJ0BA5pc3N1ZWQxMEFtb3VudAkAkQMCBQhjdXJTdGF0cwUSaXhXbGdJc3N1ZTEwQW1vdW50CQCUCgIJAM4IAgkAzggCCQDOCAIJAMwIAgkBB1JlaXNzdWUDBQp3bGdBc3NldElkBQ5pc3N1ZWQxMEFtb3VudAYJAMwIAgkBDEludGVnZXJFbnRyeQIFEndsZ0lzc3VlZEFtb3VudEtleQkAZAIJAJEDAgUIY3VyU3RhdHMFC2l4V2xnQW1vdW50BQ5pc3N1ZWQxMEFtb3VudAkAzAgCCQEMSW50ZWdlckVudHJ5AgURd2xnSXNzdWUxMFRpbWVLZXkJAJEDAgUIY3VyU3RhdHMFEGl4V2xnSXNzdWUxMFRpbWUJAMwIAgkBDEludGVnZXJFbnRyeQIFB3VzZXJLZXkJAGQCCQELdmFsdWVPckVsc2UCCQCfCAEFB3VzZXJLZXkAAAUKdXNlckFtb3VudAkAzAgCCQEMSW50ZWdlckVudHJ5AgUZc3Rha2Vyc0Ftb3VudFBhaWRUb3RhbEtleQkAZAIJAQt2YWx1ZU9yRWxzZQIJAJ8IAQUZc3Rha2Vyc0Ftb3VudFBhaWRUb3RhbEtleQAABQp1c2VyQW1vdW50CQDMCAIJAQxJbnRlZ2VyRW50cnkCBRRzdGFrZXJzQW1vdW50TGVmdEtleQkAZQIJAJEDAgUIY3VyU3RhdHMFEGl4V2xnQW1MZWZ0VG90YWwFCnVzZXJBbW91bnQJAMwIAgkBDEludGVnZXJFbnRyeQIFEXRlYW1BbW91bnRMZWZ0S2V5CQBkAgkAZQIFDnRlYW1BbW91bnRMZWZ0BQp0ZWFtQW1vdW50CQCRAwIFCGN1clN0YXRzBRZpeFdsZ1RlYW1Jc3N1ZTEwQW1vdW50CQDMCAIJAQxJbnRlZ2VyRW50cnkCBQ9sYXN0VGVhbVRpbWVLZXkFA25vdwkAzAgCCQEMSW50ZWdlckVudHJ5AgUQYWN0QW1vdW50TGVmdEtleQkAZQIFDWFjdEFtb3VudExlZnQFCWFjdEFtb3VudAkAzAgCCQEMSW50ZWdlckVudHJ5AgUVbGFzdEFjdGl2aXRpZXNUaW1lS2V5BQNub3cJAMwIAgkBDEludGVnZXJFbnRyeQIFC3VzZXJUaW1lS2V5BQt1c2VyRWZmVGltZQUDbmlsBQx0ZWFtVHJhbnNmZXIFC2FjdFRyYW5zZmVyBRFtYXJrZXRpbmdUcmFuc2ZlcgUJdXNlclRvdGFsAQ50YWtlWHBJbnRlcm5hbAIEYWRkcgVkZWx0YQQDbm93CAUJbGFzdEJsb2NrCXRpbWVzdGFtcAQHdGltZUtleQkBFmtleVdsZ1N0YWtlZFRpbWVCeVVzZXIBBQRhZGRyBAlhbW91bnRLZXkJARhrZXlXbGdTdGFrZWRBbW91bnRCeVVzZXIBBQRhZGRyBAhsYXN0VGltZQkBC3ZhbHVlT3JFbHNlAgkAnwgBBQd0aW1lS2V5AAAEB29sZFVzZXIJAQt2YWx1ZU9yRWxzZQIJAJ8IAQUJYW1vdW50S2V5AAAECG9sZFRvdGFsCQELdmFsdWVPckVsc2UCCQCfCAEFEXdsZ1N0YWtlZFRvdGFsS2V5AAAEAnhwCQBrAwkAawMFBXhwV2xnBQdvbGRVc2VyBQ93bGdCYXNlQW1vdW50WHAJAGUCBQhsYXN0VGltZQUDbm93BQlEQVlNSUxMSVMJAJUKAwkAzAgCCQEMSW50ZWdlckVudHJ5AgUHdGltZUtleQUDbm93CQDMCAIJAQxJbnRlZ2VyRW50cnkCBQlhbW91bnRLZXkJAGQCBQdvbGRVc2VyBQVkZWx0YQkAzAgCCQEMSW50ZWdlckVudHJ5AgURd2xnU3Rha2VkVG90YWxLZXkJAGQCBQhvbGRUb3RhbAUFZGVsdGEFA25pbAUCeHAFB29sZFVzZXIBEW9wZW5DaGVzdEludGVybmFsAQRhZGRyBAR3ZWVrCQBpAgUGaGVpZ2h0BQtXRUVLX0JMT0NLUwQIZHJhd1dlZWsJAGUCBQR3ZWVrAAEECW51bVByaXplcwkBC3ZhbHVlT3JFbHNlAgkAnwgBCQEOa2V5TnVtTkZUMkRyYXcBBQhkcmF3V2VlawUVREVGQVVMVF9XRUVLTFlfUFJJWkVTBAtwcml6ZXNEcmF3bgkBC3ZhbHVlT3JFbHNlAgkAnwgBCQEOa2V5TnVtTkZURHJhd24BBQhkcmF3V2VlawAABAt1c2VyVGlja2V0cwkBC3ZhbHVlT3JFbHNlAgkAnwgBCQESa2V5VXNlcldlZWtUaWNrZXRzAgUEYWRkcgUIZHJhd1dlZWsAAAMJAGcCAAAFC3VzZXJUaWNrZXRzCQCUCgIFA25pbAUEdW5pdAQLd2Vla1RpY2tldHMJAQt2YWx1ZU9yRWxzZQIJAJ8IAQkBE2tleVRvdGFsV2Vla1RpY2tldHMBBQhkcmF3V2VlawAAAwkAZwIAAAULd2Vla1RpY2tldHMJAJQKAgkAzAgCCQELRGVsZXRlRW50cnkBCQESa2V5VXNlcldlZWtUaWNrZXRzAgUEYWRkcgUIZHJhd1dlZWsFA25pbAUEdW5pdAQHZW50cm9weQkBBXZhbHVlAQgJAQV2YWx1ZQEJAO0HAQkAaAIFBHdlZWsFC1dFRUtfQkxPQ0tTA3ZyZgQEc2FsdAkA2QQBCQCRAwIJALUJAgkBC3ZhbHVlT3JFbHNlAgkAnQgCBQ5hY3JlczJDb250cmFjdAkBFWtleUxhc3RXZWVrVHhJZEJ5VXNlcgEFBGFkZHICCjQyX0RFRkFVTFQCAV8AAQQGcmFuZG9tCQEPZ2V0UmFuZG9tTnVtYmVyAwULd2Vla1RpY2tldHMFBHNhbHQFB2VudHJvcHkDCQBmAgkAaAIFC3VzZXJUaWNrZXRzBQludW1Qcml6ZXMFBnJhbmRvbQQLaXNzdWVSZXN1bHQJAPwHBAUOYWNyZXMyQ29udHJhY3QCCGlzc3VlTkZUCQDMCAIFBGFkZHIJAMwIAgUUSWR4RHR4MVBlcmNHZW1XaW5uZXIFA25pbAUDbmlsBAd3aW5uZXJzCQCiCAEJAQ5rZXlXZWVrV2lubmVycwEFCGRyYXdXZWVrBApuZXdXaW5uZXJzAwkBCWlzRGVmaW5lZAEFB3dpbm5lcnMJAKwCAgkArAICCQEFdmFsdWUBBQd3aW5uZXJzAgFfBQRhZGRyBQRhZGRyCQCUCgIJAMwIAgkBDEludGVnZXJFbnRyeQIJAQ5rZXlOdW1ORlREcmF3bgEFCGRyYXdXZWVrCQBkAgULcHJpemVzRHJhd24AAQkAzAgCCQELRGVsZXRlRW50cnkBCQESa2V5VXNlcldlZWtUaWNrZXRzAgUEYWRkcgUIZHJhd1dlZWsJAMwIAgkBC1N0cmluZ0VudHJ5AgkBDmtleVdlZWtXaW5uZXJzAQUIZHJhd1dlZWsFCm5ld1dpbm5lcnMFA25pbAULaXNzdWVSZXN1bHQEB3JhbmRvbTEJAGQCCQEPZ2V0UmFuZG9tTnVtYmVyAwAJCQDLAQIBAUIFBHNhbHQFB2VudHJvcHkAAQQLY29uc1RpY2tldHMJAGsDBQt1c2VyVGlja2V0cwUHcmFuZG9tMQAKCQCUCgIJAMwIAgkBC0RlbGV0ZUVudHJ5AQkBEmtleVVzZXJXZWVrVGlja2V0cwIFBGFkZHIFCGRyYXdXZWVrCQDMCAIJAQxJbnRlZ2VyRW50cnkCCQESa2V5VXNlcldlZWtUaWNrZXRzAgUEYWRkcgUEd2VlawULY29uc1RpY2tldHMFA25pbAULY29uc1RpY2tldHMBFGNsYWltVGlja2V0c0ludGVybmFsAgRhZGRyCnVzZXJCZXRTdHIEBHdlZWsJAGkCBQZoZWlnaHQFC1dFRUtfQkxPQ0tTBAp0aWNrZXRzS2V5CQESa2V5VXNlcldlZWtUaWNrZXRzAgUEYWRkcgUEd2VlawQGZGF5QmV0CQC1CQIFCnVzZXJCZXRTdHICAV8ED29sZFRvdGFsVGlja2V0cwkBC3ZhbHVlT3JFbHNlAgkAnwgBCQETa2V5VG90YWxXZWVrVGlja2V0cwEFBHdlZWsAAAQKb2xkVGlja2V0cwkBC3ZhbHVlT3JFbHNlAgkAnwgBBQp0aWNrZXRzS2V5AAAEDGRlbHRhVGlja2V0cwMJAAACCQEKd2lubmluZ0JldAEJAQ1wYXJzZUludFZhbHVlAQkAkQMCBQZkYXlCZXQAAAkBDXBhcnNlSW50VmFsdWUBCQCRAwIFBmRheUJldAABAAEAAAQPb2xkUGFydGljaXBhbnRzCQELdmFsdWVPckVsc2UCCQCfCAEJARhrZXlUb3RhbFdlZWtQYXJ0aWNpcGFudHMBBQR3ZWVrAAAEEnVwZGF0ZVBhcnRpY2lwYW50cwMDCQAAAgUKb2xkVGlja2V0cwAACQAAAgUMZGVsdGFUaWNrZXRzAAEHCQDMCAIJAQxJbnRlZ2VyRW50cnkCCQEYa2V5VG90YWxXZWVrUGFydGljaXBhbnRzAQUEd2VlawkAZAIFD29sZFBhcnRpY2lwYW50cwABBQNuaWwFA25pbAkAlAoCAwkAAAIFDGRlbHRhVGlja2V0cwAABQNuaWwJAM0IAgkAzQgCBRJ1cGRhdGVQYXJ0aWNpcGFudHMJAQxJbnRlZ2VyRW50cnkCBQp0aWNrZXRzS2V5CQBkAgUKb2xkVGlja2V0cwUMZGVsdGFUaWNrZXRzCQEMSW50ZWdlckVudHJ5AgkBE2tleVRvdGFsV2Vla1RpY2tldHMBBQR3ZWVrCQBkAgUPb2xkVG90YWxUaWNrZXRzBQxkZWx0YVRpY2tldHMFDGRlbHRhVGlja2V0cw8BaQENY29uc3RydWN0b3JWMQQIcmVzdEFkZHINbWFya2V0aW5nQWRkcgh0ZWFtQWRkcgpwcm9maXRBZGRyAwkBAiE9AggFAWkGY2FsbGVyBQR0aGlzCQACAQIRUGVybWlzc2lvbiBkZW5pZWQDCQEJaXNEZWZpbmVkAQkAoQgBBQ13bGdBc3NldElkS2V5CQACAQITQWxyZWFkeSBpbml0aWFsaXplZAQMaXNzdWVkQW1vdW50BQhNSUxMSU9ONgQFaXNzdWUJAMMIBwIGV0xHT0xEAiBXYXZlc0xhbmRzIEdvbGQgaW52ZXN0bWVudCB0b2tlbgUMaXNzdWVkQW1vdW50AAgGBQR1bml0AAAEB2Fzc2V0SWQJALgIAQUFaXNzdWUJAMwIAgUFaXNzdWUJAMwIAgkBDEludGVnZXJFbnRyeQIFD3dsZ0lzc3VlVGltZUtleQgFCWxhc3RCbG9jawl0aW1lc3RhbXAJAMwIAgkBDEludGVnZXJFbnRyeQIFEndsZ0lzc3VlZEFtb3VudEtleQUMaXNzdWVkQW1vdW50CQDMCAIJAQxJbnRlZ2VyRW50cnkCBRlzdGFrZXJzQW1vdW50UGFpZFRvdGFsS2V5AAAJAMwIAgkBDEludGVnZXJFbnRyeQIFFHN0YWtlcnNBbW91bnRMZWZ0S2V5CQBrAwUITUlMTElPTjYFC1BMQVlFUlNIQVJFBQVNVUxUNgkAzAgCCQELQmluYXJ5RW50cnkCBQ13bGdBc3NldElkS2V5BQdhc3NldElkCQDMCAIJAQtTdHJpbmdFbnRyeQIJAQ5rZXlSZXN0QWRkcmVzcwAFCHJlc3RBZGRyCQDMCAIJAQtTdHJpbmdFbnRyeQIFEG1hcmtldGluZ0FkZHJLZXkFDW1hcmtldGluZ0FkZHIJAMwIAgkBC1N0cmluZ0VudHJ5AgULdGVhbUFkZHJLZXkFCHRlYW1BZGRyCQDMCAIJAQtTdHJpbmdFbnRyeQIFDXByb2ZpdEFkZHJLZXkFCnByb2ZpdEFkZHIFA25pbAFpAQ1jb25zdHJ1Y3RvclYyAQlyZXN0MkFkZHIDCQECIT0CCAUBaQZjYWxsZXIFBHRoaXMJAAIBAhFQZXJtaXNzaW9uIGRlbmllZAkAzAgCCQELU3RyaW5nRW50cnkCCQEPa2V5UmVzdDJBZGRyZXNzAAUJcmVzdDJBZGRyBQNuaWwBaQEGYnV5V2xnAQxtaW5Ub1JlY2VpdmUEDHByb2xvZ1Jlc3VsdAkBB3Byb2xvZzIAAwkAAAIFDHByb2xvZ1Jlc3VsdAUMcHJvbG9nUmVzdWx0AwkBAiE9AgkAkAMBCAUBaQhwYXltZW50cwABCQACAQIiZXhhY3RseSAxIHBheW1lbnQgbXVzdCBiZSBhdHRhY2hlZAQDcG10CQCRAwIIBQFpCHBheW1lbnRzAAAEB3VzZHRBbXQIBQNwbXQGYW1vdW50AwMJAQEhAQkBCWlzRGVmaW5lZAEIBQNwbXQHYXNzZXRJZAYJAQIhPQIJAQV2YWx1ZQEIBQNwbXQHYXNzZXRJZAULdXNkdEFzc2V0SWQJAAIBAhNVU0RUIHBheW1lbnRzIG9ubHkhBAZjYWxsZXIIBQFpBmNhbGxlcgQEYWRkcgkApQgBBQZjYWxsZXIDCQBmAgUOTUlOU0hPUFBBWU1FTlQFB3VzZHRBbXQJAAIBCQCsAgIJAKwCAgISWW91IGNhbiB0cmFkZSBtaW4gCQEKZml4ZWRQb2ludAIFDk1JTlNIT1BQQVlNRU5UAAYCBSBVU0RUBAhjdXJTdGF0cwkBDGdldFdsZ1N0YXRzMgQCAAkAzAgCBQ1yZXN0MkNvbnRyYWN0CQDMCAIFDmFjcmVzMkNvbnRyYWN0CQDMCAIFC3dsZ0NvbnRyYWN0CQDMCAIFEnB1enpsZVBvb2xDb250cmFjdAkAzAgCBRJpbnZlc3RGdW5kQ29udHJhY3QFA25pbAULdXNkdEFzc2V0SWQFB3VzZHRBbXQEDGN1cldsZ0Ftb3VudAkAkQMCBQhjdXJTdGF0cwULaXhXbGdBbW91bnQECHdsZ1ByaWNlCQCRAwIFCGN1clN0YXRzBQppeFdsZ1ByaWNlBAhidXlQcmljZQkAbgQFCHdsZ1ByaWNlAAYABQUHQ0VJTElORwQJd2xnQW1vdW50CQBrAwUHdXNkdEFtdAUFTVVMVDgFCGJ1eVByaWNlBAZtYXhXbGcJARJnZXRTd2FwTGltaXRXbGdvbGQBBQRhZGRyAwkAZgIFCXdsZ0Ftb3VudAUGbWF4V2xnCQACAQkArAICCQCsAgICEFlvdSBjYW4gZ2V0IG1heCAJAQpmaXhlZFBvaW50AgUGbWF4V2xnAAgCFSBXTEdPTEQgYXQgdGhlIG1vbWVudAMJAGYCBQxtaW5Ub1JlY2VpdmUFCXdsZ0Ftb3VudAkAAgECMFByaWNlIGNoYW5nZWQgZHVyaW5nIG9wZXJhdGlvbiwgcGxlYXNlIHRyeSBhZ2FpbgQMcHJvZml0QW1vdW50CQBpAgUHdXNkdEFtdAAGCQCUCgIJAMwIAgkBB1JlaXNzdWUDBQp3bGdBc3NldElkBQl3bGdBbW91bnQGCQDMCAIJAQxJbnRlZ2VyRW50cnkCBRJ3bGdJc3N1ZWRBbW91bnRLZXkJAGQCBQxjdXJXbGdBbW91bnQFCXdsZ0Ftb3VudAkAzAgCCQEMSW50ZWdlckVudHJ5AgkBGWtleUxhc3RXbGdUcmFkZVRpbWVCeVVzZXIBBQRhZGRyCAUJbGFzdEJsb2NrCXRpbWVzdGFtcAkAzAgCCQEMSW50ZWdlckVudHJ5AgkBGmtleUxhc3RXbGdUcmFkZUxpbWl0QnlVc2VyAQUEYWRkcgkAZQIFBm1heFdsZwUJd2xnQW1vdW50CQDMCAIJAQ5TY3JpcHRUcmFuc2ZlcgMJARFAZXh0ck5hdGl2ZSgxMDYyKQEJAQV2YWx1ZQEJAKIIAQUNcHJvZml0QWRkcktleQUMcHJvZml0QW1vdW50BQt1c2R0QXNzZXRJZAkAzAgCCQEOU2NyaXB0VHJhbnNmZXIDBQZjYWxsZXIFCXdsZ0Ftb3VudAUKd2xnQXNzZXRJZAUDbmlsBQxwcm9sb2dSZXN1bHQJAAIBAiRTdHJpY3QgdmFsdWUgaXMgbm90IGVxdWFsIHRvIGl0c2VsZi4BaQEOYnV5V2xnUkVBRE9OTFkCB2FkZHJlc3MHdXNkdEFtdAQIY3VyU3RhdHMJAQxnZXRXbGdTdGF0czIEAgAJAMwIAgUNcmVzdDJDb250cmFjdAkAzAgCBQ5hY3JlczJDb250cmFjdAkAzAgCBQt3bGdDb250cmFjdAkAzAgCBRJwdXp6bGVQb29sQ29udHJhY3QJAMwIAgUSaW52ZXN0RnVuZENvbnRyYWN0BQNuaWwFC3VzZHRBc3NldElkBQd1c2R0QW10BAh3bGdQcmljZQkAkQMCBQhjdXJTdGF0cwUKaXhXbGdQcmljZQQIYnV5UHJpY2UJAG4EBQh3bGdQcmljZQAGAAUFB0NFSUxJTkcECXdsZ0Ftb3VudAkAawMFB3VzZHRBbXQFBU1VTFQ4BQhidXlQcmljZQQGbWF4V2xnCQESZ2V0U3dhcExpbWl0V2xnb2xkAQUHYWRkcmVzcwQHbWF4VXNkdAkAawMFBm1heFdsZwUIYnV5UHJpY2UFBU1VTFQ4BAxwcm9maXRBbW91bnQJAGkCBQd1c2R0QW10AAYJAJQKAgUDbmlsCQDMCAIFCXdsZ0Ftb3VudAkAzAgCBQ5NSU5TSE9QUEFZTUVOVAkAzAgCBQdtYXhVc2R0CQDMCAIFDHByb2ZpdEFtb3VudAUDbmlsAWkBB3NlbGxXbGcBCW1pbkFtb3VudAQMcHJvbG9nUmVzdWx0CQEHcHJvbG9nMgADCQAAAgUMcHJvbG9nUmVzdWx0BQxwcm9sb2dSZXN1bHQDCQECIT0CCQCQAwEIBQFpCHBheW1lbnRzAAEJAAIBAiJleGFjdGx5IDEgcGF5bWVudCBtdXN0IGJlIGF0dGFjaGVkBANwbXQJAJEDAggFAWkIcGF5bWVudHMAAAQGd2xnQW10CAUDcG10BmFtb3VudAQGY2FsbGVyCAUBaQZjYWxsZXIEBGFkZHIJAKUIAQUGY2FsbGVyBAZtYXhXbGcJARJnZXRTd2FwTGltaXRXbGdvbGQBBQRhZGRyAwkAZgIFBndsZ0FtdAUGbWF4V2xnCQACAQkArAICCQCsAgICEllvdSBjYW4gc3BlbmQgbWF4IAkBCmZpeGVkUG9pbnQCBQZtYXhXbGcACAIVIFdMR09MRCBhdCB0aGUgbW9tZW50AwMJAQEhAQkBCWlzRGVmaW5lZAEIBQNwbXQHYXNzZXRJZAYJAQIhPQIJAQV2YWx1ZQEIBQNwbXQHYXNzZXRJZAUKd2xnQXNzZXRJZAkAAgECFVdMR09MRCBwYXltZW50cyBvbmx5IQQIY3VyU3RhdHMJAQxnZXRXbGdTdGF0czIEAgAJAMwIAgUNcmVzdDJDb250cmFjdAkAzAgCBQ5hY3JlczJDb250cmFjdAkAzAgCBQt3bGdDb250cmFjdAkAzAgCBRJwdXp6bGVQb29sQ29udHJhY3QJAMwIAgUSaW52ZXN0RnVuZENvbnRyYWN0BQNuaWwFC3VzZHRBc3NldElkAAAEDGN1cldsZ0Ftb3VudAkAkQMCBQhjdXJTdGF0cwULaXhXbGdBbW91bnQECXNlbGxQcmljZQkAaQIJAJEDAgUIY3VyU3RhdHMFCml4V2xnUHJpY2UAAgQHdXNkdEFtdAkAawMFBndsZ0FtdAUJc2VsbFByaWNlBQVNVUxUOAMJAGYCBQ5NSU5TSE9QUEFZTUVOVAUHdXNkdEFtdAkAAgEJAKwCAgkArAICAhJZb3UgY2FuIHRyYWRlIG1pbiAJAQpmaXhlZFBvaW50AgUOTUlOU0hPUFBBWU1FTlQABgIFIFVTRFQDCQBmAgUJbWluQW1vdW50BQd1c2R0QW10CQACAQIwUHJpY2UgY2hhbmdlZCBkdXJpbmcgb3BlcmF0aW9uLCBwbGVhc2UgdHJ5IGFnYWluBAxwcm9maXRBbW91bnQJAGkCBQd1c2R0QW10AAUJAJQKAgkAzAgCCQEEQnVybgIFCndsZ0Fzc2V0SWQFBndsZ0FtdAkAzAgCCQEMSW50ZWdlckVudHJ5AgUSd2xnSXNzdWVkQW1vdW50S2V5CQBlAgUMY3VyV2xnQW1vdW50BQZ3bGdBbXQJAMwIAgkBDEludGVnZXJFbnRyeQIJARlrZXlMYXN0V2xnVHJhZGVUaW1lQnlVc2VyAQUEYWRkcggFCWxhc3RCbG9jawl0aW1lc3RhbXAJAMwIAgkBDEludGVnZXJFbnRyeQIJARprZXlMYXN0V2xnVHJhZGVMaW1pdEJ5VXNlcgEFBGFkZHIJAGUCBQZtYXhXbGcFBndsZ0FtdAkAzAgCCQEOU2NyaXB0VHJhbnNmZXIDCQERQGV4dHJOYXRpdmUoMTA2MikBCQEFdmFsdWUBCQCiCAEFDXByb2ZpdEFkZHJLZXkFDHByb2ZpdEFtb3VudAULdXNkdEFzc2V0SWQJAMwIAgkBDlNjcmlwdFRyYW5zZmVyAwUGY2FsbGVyBQd1c2R0QW10BQt1c2R0QXNzZXRJZAUDbmlsBQxwcm9sb2dSZXN1bHQJAAIBAiRTdHJpY3QgdmFsdWUgaXMgbm90IGVxdWFsIHRvIGl0c2VsZi4BaQEPc2VsbFdsZ1JFQURPTkxZAgdhZGRyZXNzBndsZ0FtdAQGbWF4V2xnCQESZ2V0U3dhcExpbWl0V2xnb2xkAQUHYWRkcmVzcwQIY3VyU3RhdHMJAQxnZXRXbGdTdGF0czIEAgAJAMwIAgUNcmVzdDJDb250cmFjdAkAzAgCBQ5hY3JlczJDb250cmFjdAkAzAgCBQt3bGdDb250cmFjdAkAzAgCBRJwdXp6bGVQb29sQ29udHJhY3QJAMwIAgUSaW52ZXN0RnVuZENvbnRyYWN0BQNuaWwFC3VzZHRBc3NldElkAAAECXNlbGxQcmljZQkAaQIJAJEDAgUIY3VyU3RhdHMFCml4V2xnUHJpY2UAAgQHdXNkdEFtdAkAawMFBndsZ0FtdAUJc2VsbFByaWNlBQVNVUxUOAQGbWluV2xnCQBrAwUOTUlOU0hPUFBBWU1FTlQFBU1VTFQ4BQlzZWxsUHJpY2UEDHByb2ZpdEFtb3VudAkAaQIFB3VzZHRBbXQABQkAlAoCBQNuaWwJAMwIAgUHdXNkdEFtdAkAzAgCBQZtaW5XbGcJAMwIAgUGbWF4V2xnCQDMCAIFDHByb2ZpdEFtb3VudAUDbmlsAWkBBWNsYWltAAQMcHJvbG9nUmVzdWx0CQEHcHJvbG9nMgADCQAAAgUMcHJvbG9nUmVzdWx0BQxwcm9sb2dSZXN1bHQDCQECIT0CCQCQAwEIBQFpCHBheW1lbnRzAAAJAAIBAhRObyBwYXltZW50cyByZXF1aXJlZAQNJHQwMTM3NTYxMzgyNQkBDmNsYWltSW50ZXJuYWwyAQkApQgBCAUBaQZjYWxsZXIEB2FjdGlvbnMIBQ0kdDAxMzc1NjEzODI1Al8xBBB3bGdDbGFpbWVkQW1vdW50CAUNJHQwMTM3NTYxMzgyNQJfMgkAlAoCCQDNCAIFB2FjdGlvbnMJAQ5TY3JpcHRUcmFuc2ZlcgMIBQFpBmNhbGxlcgUQd2xnQ2xhaW1lZEFtb3VudAUKd2xnQXNzZXRJZAUMcHJvbG9nUmVzdWx0CQACAQIkU3RyaWN0IHZhbHVlIGlzIG5vdCBlcXVhbCB0byBpdHNlbGYuAWkBEm9uU3Rha2VVbnN0YWtlTGFuZAEEYWRkcgMDAwkBAiE9AggFAWkGY2FsbGVyBQ9zdGFraW5nQ29udHJhY3QJAQIhPQIIBQFpBmNhbGxlcgUNYWNyZXNDb250cmFjdAcJAQIhPQIIBQFpBmNhbGxlcgUOYWNyZXMyQ29udHJhY3QHCQACAQIRUGVybWlzc2lvbiBkZW5pZWQEDSR0MDE0MTQ0MTQxOTgJAQ5jbGFpbUludGVybmFsMgEFBGFkZHIEB2FjdGlvbnMIBQ0kdDAxNDE0NDE0MTk4Al8xBBB3bGdDbGFpbWVkQW1vdW50CAUNJHQwMTQxNDQxNDE5OAJfMgkAlAoCAwkAZgIFEHdsZ0NsYWltZWRBbW91bnQAAAkAzQgCBQdhY3Rpb25zCQEOU2NyaXB0VHJhbnNmZXIDCQERQGV4dHJOYXRpdmUoMTA2MikBBQRhZGRyBRB3bGdDbGFpbWVkQW1vdW50BQp3bGdBc3NldElkBQdhY3Rpb25zBRB3bGdDbGFpbWVkQW1vdW50AWkBCmJ1cm5XbGdvbGQBBndsZ0FtdAMJAQIhPQIIBQFpBmNhbGxlcgUOYWNyZXMyQ29udHJhY3QJAAIBAhFQZXJtaXNzaW9uIGRlbmllZAQIY3VyU3RhdHMJAQxnZXRXbGdTdGF0czIEAgAJAMwIAgUNcmVzdDJDb250cmFjdAkAzAgCBQ5hY3JlczJDb250cmFjdAkAzAgCBQt3bGdDb250cmFjdAkAzAgCBRJwdXp6bGVQb29sQ29udHJhY3QJAMwIAgUSaW52ZXN0RnVuZENvbnRyYWN0BQNuaWwFC3VzZHRBc3NldElkAAADCQBmAgUGd2xnQW10CQCRAwIFCGN1clN0YXRzBQhpeFdsZ1dsZwkAAgEJAKwCAgkArAICCQCsAgICBU9ubHkgCQEKZml4ZWRQb2ludAIJAJEDAgUIY3VyU3RhdHMFCGl4V2xnV2xnAAgCJSBXTEdPTEQgbGVmdCBvbiBjb250cmFjdCwgY2FuJ3QgYnVybiAJAQpmaXhlZFBvaW50AgUGd2xnQW10AAgEDXdsZ0Ftb3VudExlZnQJAGUCCQCRAwIFCGN1clN0YXRzBQtpeFdsZ0Ftb3VudAUGd2xnQW10CQCUCgIJAMwIAgkBBEJ1cm4CBQp3bGdBc3NldElkBQZ3bGdBbXQJAMwIAgkBDEludGVnZXJFbnRyeQIFEndsZ0lzc3VlZEFtb3VudEtleQUNd2xnQW1vdW50TGVmdAUDbmlsBQ13bGdBbW91bnRMZWZ0AWkBDGJldEZvclRpY2tldAEDYmV0BAxwcm9sb2dSZXN1bHQJAQdwcm9sb2cyAAMJAAACBQxwcm9sb2dSZXN1bHQFDHByb2xvZ1Jlc3VsdAMJAQIhPQIJAJADAQgFAWkIcGF5bWVudHMAAAkAAgECFE5vIHBheW1lbnRzIHJlcXVpcmVkBARhZGRyCQClCAEIBQFpBmNhbGxlcgQIZHJhd1dlZWsJAGUCCQBpAgUGaGVpZ2h0BQtXRUVLX0JMT0NLUwABBAt1c2VyVGlja2V0cwkBC3ZhbHVlT3JFbHNlAgkAnwgBCQESa2V5VXNlcldlZWtUaWNrZXRzAgUEYWRkcgUIZHJhd1dlZWsAAAQLd2Vla1RpY2tldHMJAQt2YWx1ZU9yRWxzZQIJAJ8IAQkBE2tleVRvdGFsV2Vla1RpY2tldHMBBQhkcmF3V2VlawAAAwMJAGYCBQt1c2VyVGlja2V0cwAACQBmAgULd2Vla1RpY2tldHMAAAcJAAIBAhtQbGVhc2Ugb3BlbiB0aGUgY2hlc3QgZmlyc3QDCQECIT0CCQBpAgUDYmV0AAQAAAkAAgECG0ludmFsaWQgYmV0OiBzaG91bGQgYmUgMC4uMwQGbW9tZW50CQBqAgUGaGVpZ2h0BQpEQVlfQkxPQ0tTAwkAZgIFBm1vbWVudAkAZQIFCkRBWV9CTE9DS1MAAwkAAgEJAKwCAgkArAICAjFDYW5ub3QgYmV0OiB0aGUgZGF5IGlzIGFsbW9zdCBlbmRlZCwgcGxlYXNlIHdhaXQgCQCkAwEJAGUCBQpEQVlfQkxPQ0tTBQZtb21lbnQCByBibG9ja3MEC3N0YWtlZEFjcmVzCQELdmFsdWVPckVsc2UCCQCaCAIFDmFjcmVzMkNvbnRyYWN0CQEXa2V5QWNyZXNTdGFrZWRBbXRCeVVzZXIBBQRhZGRyAAADCQBmAgUNQUNSRVNfRk9SX0JFVAULc3Rha2VkQWNyZXMJAAIBCQCsAgIJAKwCAgIbWW91IG5lZWQgdG8gc3Rha2UgYXQgbGVhc3QgCQEKZml4ZWRQb2ludAIFDUFDUkVTX0ZPUl9CRVQACAINIEFDUkVTIHRvIGJldAQIdG9tb3Jyb3cJAGQCCQBpAgUGaGVpZ2h0BQpEQVlfQkxPQ0tTAAEEBmJldEtleQkBCmtleVVzZXJCZXQBBQRhZGRyBA1vbGRVc2VyQmV0U3RyCQCiCAEFBmJldEtleQQLbmV3QmV0RW50cnkJAQtTdHJpbmdFbnRyeQIFBmJldEtleQkArAICCQCsAgIJAKQDAQUIdG9tb3Jyb3cCAV8JAKQDAQUDYmV0AwkBCWlzRGVmaW5lZAEFDW9sZFVzZXJCZXRTdHIEB3VzZXJCZXQJAQV2YWx1ZQEFDW9sZFVzZXJCZXRTdHIDCQAAAgkAkQMCCQC1CQIFB3VzZXJCZXQCAV8AAAkApAMBBQh0b21vcnJvdwkAAgECHFlvdSBhbHJlYWR5IGJldCBmb3IgdG9tb3Jyb3cEAXIJARRjbGFpbVRpY2tldHNJbnRlcm5hbAIFBGFkZHIFB3VzZXJCZXQJAJQKAgkAzQgCCAUBcgJfMQULbmV3QmV0RW50cnkIBQFyAl8yCQCUCgIJAMwIAgULbmV3QmV0RW50cnkFA25pbAAACQACAQIkU3RyaWN0IHZhbHVlIGlzIG5vdCBlcXVhbCB0byBpdHNlbGYuAWkBCXRha2VXbGdYcAEEYWRkcgMJAQIhPQIIBQFpBmNhbGxlcgUPc3Rha2luZ0NvbnRyYWN0CQACAQIRUGVybWlzc2lvbiBkZW5pZWQEDSR0MDE2ODA4MTY4NTEJAQ50YWtlWHBJbnRlcm5hbAIFBGFkZHIAAAQHYWN0aW9ucwgFDSR0MDE2ODA4MTY4NTECXzEEAnhwCAUNJHQwMTY4MDgxNjg1MQJfMgkAlAoCBQdhY3Rpb25zBQJ4cAFpARJjaGVja1dsZ1hwUkVBRE9OTFkBBGFkZHIEDSR0MDE2OTI4MTY5NzYJAQ50YWtlWHBJbnRlcm5hbAIFBGFkZHIAAAQHaWdub3JlZAgFDSR0MDE2OTI4MTY5NzYCXzEEB2RlbHRhWFAIBQ0kdDAxNjkyODE2OTc2Al8yBAVuZXdYUAkAZAIJAQt2YWx1ZU9yRWxzZQIJAJoIAgUPc3Rha2luZ0NvbnRyYWN0CQEJa2V5VXNlclhQAQUEYWRkcgAABQdkZWx0YVhQBAlsdmxQb2ludHMJAQdsZXZlbFVwAgkBC3ZhbHVlT3JFbHNlAgkAmggCBQ9zdGFraW5nQ29udHJhY3QJAQxrZXlVc2VyTGV2ZWwBBQRhZGRyAAAFBW5ld1hQCQCUCgIFA25pbAkAzQgCBQlsdmxQb2ludHMFBW5ld1hQAWkBDHNldE51bVByaXplcwEJbnVtUHJpemVzAwkBAiE9AggFAWkGY2FsbGVyBQR0aGlzCQACAQIRUGVybWlzc2lvbiBkZW5pZWQEBHdlZWsJAGkCBQZoZWlnaHQFC1dFRUtfQkxPQ0tTCQCUCgIJAMwIAgkBDEludGVnZXJFbnRyeQIJAQ5rZXlOdW1ORlQyRHJhdwEFBHdlZWsFCW51bVByaXplcwUDbmlsBQludW1Qcml6ZXMBaQEJb3BlbkNoZXN0AAQMcHJvbG9nUmVzdWx0CQEHcHJvbG9nMgADCQAAAgUMcHJvbG9nUmVzdWx0BQxwcm9sb2dSZXN1bHQDCQECIT0CCQCQAwEIBQFpCHBheW1lbnRzAAAJAAIBAhRObyBwYXltZW50cyByZXF1aXJlZAQIZHJhd1dlZWsJAGUCCQBpAgUGaGVpZ2h0BQtXRUVLX0JMT0NLUwABBARhZGRyCQClCAEIBQFpBmNhbGxlcgQLdXNlclRpY2tldHMJAQt2YWx1ZU9yRWxzZQIJAJ8IAQkBEmtleVVzZXJXZWVrVGlja2V0cwIFBGFkZHIFCGRyYXdXZWVrAAADCQBnAgAABQt1c2VyVGlja2V0cwkAAgECGU5vIGdlbXMgdG8gb3BlbiB0aGUgY2hlc3QJARFvcGVuQ2hlc3RJbnRlcm5hbAEFBGFkZHIJAAIBAiRTdHJpY3QgdmFsdWUgaXMgbm90IGVxdWFsIHRvIGl0c2VsZi4BaQEKYWRkR2Vtc0ZvcgIEYWRkcgxkZWx0YVRpY2tldHMDCQECIT0CCAUBaQZjYWxsZXIFBHRoaXMJAAIBAhFQZXJtaXNzaW9uIGRlbmllZAQEd2VlawkAaQIFBmhlaWdodAULV0VFS19CTE9DS1MECnRpY2tldHNLZXkJARJrZXlVc2VyV2Vla1RpY2tldHMCBQRhZGRyBQR3ZWVrBA9vbGRUb3RhbFRpY2tldHMJAQt2YWx1ZU9yRWxzZQIJAJ8IAQkBE2tleVRvdGFsV2Vla1RpY2tldHMBBQR3ZWVrAAAECm9sZFRpY2tldHMJAQt2YWx1ZU9yRWxzZQIJAJ8IAQUKdGlja2V0c0tleQAABA9vbGRQYXJ0aWNpcGFudHMJAQt2YWx1ZU9yRWxzZQIJAJ8IAQkBGGtleVRvdGFsV2Vla1BhcnRpY2lwYW50cwEFBHdlZWsAAAQSdXBkYXRlUGFydGljaXBhbnRzAwMJAAACBQpvbGRUaWNrZXRzAAAJAAACBQxkZWx0YVRpY2tldHMAAQcJAMwIAgkBDEludGVnZXJFbnRyeQIJARhrZXlUb3RhbFdlZWtQYXJ0aWNpcGFudHMBBQR3ZWVrCQBkAgUPb2xkUGFydGljaXBhbnRzAAEFA25pbAUDbmlsCQCUCgIJAM0IAgkAzQgCBRJ1cGRhdGVQYXJ0aWNpcGFudHMJAQxJbnRlZ2VyRW50cnkCBQp0aWNrZXRzS2V5CQBkAgUKb2xkVGlja2V0cwUMZGVsdGFUaWNrZXRzCQEMSW50ZWdlckVudHJ5AgkBE2tleVRvdGFsV2Vla1RpY2tldHMBBQR3ZWVrCQBkAgUPb2xkVG90YWxUaWNrZXRzBQxkZWx0YVRpY2tldHMFDGRlbHRhVGlja2V0cwCjhCfv", "height": 3390590, "applicationStatus": "succeeded", "spentComplexity": 0 } View: original | compacted Prev: FX8Qp3uNwbKYfwhC7DJLfiwrELQX9pkQMsFq3XPmDwks Next: B6tY7jQBcjiCQhjKLqgPBb4xFLdeFqtx8WyjCQ3xo2U Diff:
OldNewDifferences
6767 else throw("Unknown chain")
6868 }
6969
70-let n = {
71- let h = f
72- if ((base58'2W' == h))
73- then false
74- else if ((base58'2T' == h))
75- then true
76- else throw("Unknown chain")
77- }
78-
79-func o (p,q) = valueOrErrorMessage(getString(p, q), makeString(["mandatory ", toString(p), ".", q, " is not defined"], ""))
70+func n (o,p) = valueOrErrorMessage(getString(o, p), makeString(["mandatory ", toString(o), ".", p, " is not defined"], ""))
8071
8172
82-let r = 1
73+let q = 1
8374
84-let s = 2
75+let r = 2
8576
86-let t = 4
77+let s = 4
8778
88-let u = 5
79+let t = 5
8980
90-func v () = "%s__restConfig"
81+func u () = "%s__restConfig"
9182
9283
93-func w () = "%s__rest2Addr"
84+func v () = "%s__rest2Addr"
9485
9586
96-func x () = "%s__restAddr"
87+func w () = "%s__restAddr"
9788
9889
99-let y = addressFromStringValue(valueOrElse(getString(this, x()), m))
90+let x = addressFromStringValue(valueOrElse(getString(this, w()), m))
10091
101-func z (A) = split_4C(o(A, v()), a)
92+func y (z) = split_4C(n(z, u()), a)
10293
10394
104-func B (C,D) = valueOrErrorMessage(addressFromString(C[D]), ("Rest cfg doesn't contain address at index " + toString(D)))
95+func A (B,C) = valueOrErrorMessage(addressFromString(B[C]), ("Rest cfg doesn't contain address at index " + toString(C)))
10596
10697
107-let E = 1
98+let D = 1
10899
109-let F = 8
100+let E = 8
110101
111-let G = z(y)
102+let F = y(x)
112103
113-let H = B(G, E)
104+let G = A(F, D)
114105
115-let I = B(G, F)
106+let H = A(F, E)
116107
117-let J = addressFromStringValue(valueOrElse(getString(this, w()), l))
108+let I = addressFromStringValue(valueOrElse(getString(this, v()), l))
118109
119-let C = z(J)
110+let B = y(I)
120111
121-let K = B(C, r)
112+let J = A(B, q)
122113
123-let L = B(C, s)
114+let K = A(B, r)
124115
125-let M = B(C, t)
116+let L = A(B, s)
126117
127-let N = B(C, u)
118+let M = A(B, t)
128119
129-func O (P) = ("lastWeekTxIdByUser_" + P)
120+func N (O) = ("lastWeekTxIdByUser_" + O)
130121
131122
132-let Q = "wlg_assetId"
123+let P = "wlg_assetId"
133124
134-let R = valueOrErrorMessage(getBinary(L, Q), "WLGOLD is not issued yet")
125+let Q = valueOrErrorMessage(getBinary(K, P), "WLGOLD is not issued yet")
135126
136-func S (P) = ("userBet_" + P)
127+func R (O) = ("userBet_" + O)
137128
138129
139-func T (P,U) = ((("userWeekTickets_" + P) + "_") + toString(U))
130+func S (O,T) = ((("userWeekTickets_" + O) + "_") + toString(T))
140131
141132
142-func V (U) = ("totalWeekTickets_" + toString(U))
133+func U (T) = ("totalWeekTickets_" + toString(T))
143134
144135
145-func W (U) = ("totalWeekParticipants_" + toString(U))
136+func V (T) = ("totalWeekParticipants_" + toString(T))
146137
147138
148-func X (U) = ("numNFT2Draw_" + toString(U))
139+func W (T) = ("numNFT2Draw_" + toString(T))
149140
150141
151-func Y (U) = ("numNFTDrawn_" + toString(U))
142+func X (T) = ("numNFTDrawn_" + toString(T))
152143
153144
154-func Z (U) = ("weekWinners_" + toString(U))
145+func Y (T) = ("weekWinners_" + toString(T))
155146
156147
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(ad)).vrf)) % 4)
148+func Z (aa) = {
149+ let ab = (aa * g)
150+ let ac = if ((ab > j))
151+ then ab
152+ else (ab + j)
153+ (toInt(value(value(blockInfoByHeight(ac)).vrf)) % 4)
163154 }
164155
165156
166-let ae = 0
157+let ad = 0
167158
168-let af = 1
159+let ae = 1
169160
170-let ag = 2
161+let af = 2
171162
172-let ah = 8
163+let ag = 8
173164
174-let ai = 11
165+let ah = 11
175166
176-let aj = 12
167+let ai = 12
177168
178-let ak = 15
169+let aj = 15
179170
180-let al = 16
171+let ak = 16
181172
182-let am = 19
173+let al = 19
183174
184-let an = 23
175+let am = 23
185176
186-let ao = 24
177+let an = 24
187178
188-let ap = 25
179+let ao = 25
189180
190-let aq = 26
181+let ap = 26
191182
192-let ar = 27
183+let aq = 27
193184
194-let as = 28
185+let ar = 28
195186
196-let at = 29
187+let as = 29
197188
198-func au (av) = {
199- let h = av
189+func at (au) = {
190+ let h = au
200191 if ($isInstanceOf(h, "Int"))
201192 then {
202- let aw = h
203- aw
193+ let av = h
194+ av
204195 }
205196 else throw("fail to cast into Int")
206197 }
207198
208199
209-func ax (ay,az) = {
210- let aA = pow(10, 0, az, 0, 0, DOWN)
211- let aB = toString((ay % aA))
212- let aC = drop(toString(aA), (1 + size(aB)))
213- (((toString((ay / aA)) + ".") + aC) + aB)
200+func aw (ax,ay) = {
201+ let az = pow(10, 0, ay, 0, 0, DOWN)
202+ let aA = toString((ax % az))
203+ let aB = drop(toString(az), (1 + size(aA)))
204+ (((toString((ax / az)) + ".") + aB) + aA)
214205 }
215206
216207
217-func aD (aE,aF,aG) = if ((0 >= aE))
208+func aC (aD,aE,aF) = if ((0 >= aD))
218209 then throw("maxValue should be > 0")
219210 else {
220- let aH = sha256_16Kb((aF + aG))
221- (toInt(aH) % aE)
211+ let aG = sha256_16Kb((aE + aF))
212+ (toInt(aG) % aD)
222213 }
223214
224215
225-let aI = 100000000
216+let aH = 100000000
226217
227-let aJ = 3200
218+let aI = 3200
228219
229-let aK = 4000
220+let aJ = 4000
230221
231-let aL = 3
222+let aK = 3
232223
233-let aM = 100000000000
224+let aL = 100000000000
234225
235-func aN (P) = ("userXP_" + P)
226+func aM (O) = ("userXP_" + O)
236227
237228
238-func aO (P) = ("userLevel_" + P)
229+func aN (O) = ("userLevel_" + O)
239230
240231
241-let aP = 10000
232+let aO = 10000
242233
243-func aQ (aR) = fraction(aJ, pow(aR, 4, aK, 4, 4, DOWN), aI)
234+func aP (aQ) = fraction(aI, pow(aQ, 4, aJ, 4, 4, DOWN), aH)
244235
245236
246-func aS (aT,aU) = {
247- let aV = aQ(aU)
248-[aV, (aL * (aV - aT))]
237+func aR (aS,aT) = {
238+ let aU = aP(aT)
239+[aU, (aK * (aU - aS))]
249240 }
250241
251242
252-let aW = 100000000000000
243+let aV = 100000000000000
253244
254-let aX = 400000
245+let aW = 400000
255246
256-let aY = 86400000
247+let aX = 86400000
257248
258-let aZ = "teamAddr"
249+let aY = "teamAddr"
259250
260-let ba = "lastClaimedTime_team"
251+let aZ = "lastClaimedTime_team"
261252
262-let bb = "teamAmountLeft"
253+let ba = "teamAmountLeft"
263254
264-let bc = "lastClaimedTime_activities"
255+let bb = "lastClaimedTime_activities"
265256
266-let bd = "activitiesAmountLeft"
257+let bc = "activitiesAmountLeft"
267258
268-let be = "stakersAmountLeft"
259+let bd = "stakersAmountLeft"
269260
270-func bf (P) = ("lastArbTimeUser_" + P)
261+func be (O) = ("lastArbTimeUser_" + O)
271262
272263
273-func bg (P) = ("lastWlgLimitUser_" + P)
264+func bf (O) = ("lastWlgLimitUser_" + O)
274265
275266
276-let bh = "wlg_issueTime"
267+let bg = "wlg_issueTime"
277268
278-let bi = "wlg_issuedAmount"
269+let bh = "wlg_issuedAmount"
279270
280-func bj (P) = ("acresStakedAmountByUser_" + P)
271+func bi (O) = ("acresStakedAmountByUser_" + O)
281272
282273
283-func bk (P) = ("wlgStakedAmountByUser_" + P)
274+func bj (O) = ("wlgStakedAmountByUser_" + O)
284275
285276
286-let bl = "wlgStakedAmountTotal"
277+let bk = "wlgStakedAmountTotal"
287278
288-func bm (P) = ("wlgStakedTimeByUser_" + P)
279+func bl (O) = ("wlgStakedTimeByUser_" + O)
289280
290281
291-let bn = 1000000
282+let bm = 1000000
292283
293-let bo = 100000000
284+let bn = 100000000
294285
295-let bp = 200000
286+let bo = 200000
296287
297-let bq = 100000
288+let bp = 100000
298289
299-let br = 400000
290+let bq = 400000
300291
301-let bs = 31557600000
292+let br = 31557600000
302293
303-let bt = 86400000
294+let bs = 86400000
304295
305-let bu = 1000000000
296+let bt = 1000000000
306297
307-let bv = 800000
298+let bu = 800000
299+
300+let bv = 100000
308301
309302 let bw = 100000
310303
311-let bx = 100000
304+let bx = 1731279600000
312305
313-let by = 1731279600000
306+let by = "marketingAddr"
314307
315-let bz = "marketingAddr"
308+let bz = "teamAddr"
316309
317-let bA = "teamAddr"
310+let bA = "lastClaimedTime_team"
318311
319-let bB = "lastClaimedTime_team"
312+let bB = "teamAmountLeft"
320313
321-let bC = "teamAmountLeft"
314+let bC = "lastClaimedTime_activities"
322315
323-let bD = "lastClaimedTime_activities"
316+let bD = "activitiesAmountLeft"
324317
325-let bE = "activitiesAmountLeft"
318+let bE = "stakersAmountLeft"
326319
327-let bF = "stakersAmountLeft"
328-
329-func bG (P) = ("lastClaimedTimeUser_" + P)
320+func bF (O) = ("lastClaimedTimeUser_" + O)
330321
331322
332-func bH (bI,bJ) = fraction(bI, (br * (bJ + 1)), (6 * bn))
323+func bG (bH,bI) = fraction(bH, (bq * (bI + 1)), (6 * bm))
333324
334325
335-let bK = "wlg_issue10Time"
326+let bJ = "wlg_issue10Time"
336327
337-let bL = "wlg_issueTime"
328+let bK = "wlg_issueTime"
338329
339-let bM = "wlg_issuedAmount"
330+let bL = "wlg_issuedAmount"
340331
341-let bN = "zbill_issuedAmount"
332+let bM = "zbill_issuedAmount"
342333
343-func bO (P) = ("acresStakedAmountByUser_" + P)
334+func bN (O) = ("acresStakedAmountByUser_" + O)
344335
345336
346-let bP = "acresStakedAmountTotal"
337+let bO = "acresStakedAmountTotal"
347338
348-let bQ = "totalFarmingPower"
339+let bP = "totalFarmingPower"
349340
350-let bR = 0
341+let bQ = 0
351342
352-let bS = 1
343+let bR = 1
353344
354-let bT = 2
345+let bS = 2
355346
356-let bU = 3
347+let bT = 3
357348
358-let bV = 4
349+let bU = 4
359350
360-let bW = 1
351+let bV = 1
361352
362-let bX = 5
353+let bW = 5
363354
364-let bY = 100000000
355+let bX = 100000000
365356
366-let bZ = "nftTotalIssued"
357+let bY = "nftTotalIssued"
367358
368-let ca = "nftTotalBurned"
359+let bZ = "nftTotalBurned"
369360
370-let cb = "WlNftTotalStaked"
361+let ca = "WlNftTotalStaked"
371362
372-func cc (P) = ("userWlNftNumber_" + P)
363+func cb (O) = ("userWlNftNumber_" + O)
373364
374365
375-func cd (P) = ("userFullBonus_" + P)
366+func cc (O) = ("userFullBonus_" + O)
376367
377368
378-let ce = [0, 10, 20, 40, 80, 150, 250, 400, 700, 1000]
369+let cd = [0, 10, 20, 40, 80, 150, 250, 400, 700, 1000]
379370
380-func cf (cg) = {
381- let ch = ((cg + 99999999) / bo)
382- func ci (cj,ck) = if ((ck >= ch))
383- then cj
384- else (cj + 1)
371+func ce (cf) = {
372+ let cg = ((cf + 99999999) / bn)
373+ func ch (ci,cj) = if ((cj >= cg))
374+ then ci
375+ else (ci + 1)
385376
386- let cl = ce
387- let cm = size(cl)
388- let cn = 0
389- func co (cp,cq) = if ((cq >= cm))
390- then cp
391- else ci(cp, cl[cq])
377+ let ck = cd
378+ let cl = size(ck)
379+ let cm = 0
380+ func cn (co,cp) = if ((cp >= cl))
381+ then co
382+ else ch(co, ck[cp])
392383
393- func cr (cp,cq) = if ((cq >= cm))
394- then cp
384+ func cq (co,cp) = if ((cp >= cl))
385+ then co
395386 else throw("List size exceeds 10")
396387
397- cr(co(co(co(co(co(co(co(co(co(co(cn, 0), 1), 2), 3), 4), 5), 6), 7), 8), 9), 10)
388+ cq(cn(cn(cn(cn(cn(cn(cn(cn(cn(cn(cm, 0), 1), 2), 3), 4), 5), 6), 7), 8), 9), 10)
398389 }
399390
400391
401-func cs (cg) = ((cg * 20) * (cf(cg) + 4))
392+func cr (cf) = ((cf * 20) * (ce(cf) + 4))
402393
403394
404-func ct (cg,cu) = {
405- let cv = cs(cg)
406- $Tuple2(fraction(cv, (bn + cu), bn), cv)
395+func cs (cf,ct) = {
396+ let cu = cr(cf)
397+ $Tuple2(fraction(cu, (bm + ct), bm), cu)
407398 }
408399
409400
410-func cw (cx,K) = {
411- let cy = valueOrElse(getInteger(K, bQ), 0)
412- let cz = valueOrElse(getInteger(K, bO(cx)), 0)
413- let cA = valueOrElse(getInteger(K, cd(cx)), 0)
414- let cB = ct(cz, cA)
415- let cC = cB._1
416- let cD = cB._2
417-[cy, cC, cD, cA]
401+func cv (cw,J) = {
402+ let cx = valueOrElse(getInteger(J, bP), 0)
403+ let cy = valueOrElse(getInteger(J, bN(cw)), 0)
404+ let cz = valueOrElse(getInteger(J, cc(cw)), 0)
405+ let cA = cs(cy, cz)
406+ let cB = cA._1
407+ let cC = cA._2
408+[cx, cB, cC, cz]
418409 }
419410
420411
421-let cE = 0
412+let cD = 0
422413
423-let cF = 1
414+let cE = 1
424415
425-func cG (cH,cI,cJ,cK) = {
426- let bI = valueOrErrorMessage(getInteger(cI[bT], bM), "WLGOLD is not issued yet")
427- let cL = assetBalance(cI[bR], cJ)
428- let cM = (assetBalance(cI[bT], cJ) - cK)
429- let cN = assetBalance(cI[bU], cJ)
430- let cO = assetBalance(cI[bS], cJ)
431- let cP = cI[bV]
432- let cQ = (assetBalance(cP, cJ) + valueOrElse(getInteger(cP, bN), 0))
433- let cR = ((cO + cM) + cQ)
434- let cS = valueOrErrorMessage(getBinary(cI[bT], "wlg_assetId"), "Not initialized yet")
435- let cT = lastBlock.timestamp
436- let cU = valueOrErrorMessage(getInteger(cI[bT], bL), "Not initialized")
437- let cV = assetBalance(cI[bT], cS)
438- let cW = fraction(bI, bp, bn)
439- let cX = valueOrElse(getInteger(cI[bT], bC), cW)
440- let cY = valueOrElse(getInteger(cI[bT], bB), cU)
441- let cZ = addressFromStringValue(value(getString(cI[bT], bA)))
442- let da = min([fraction(cW, (cT - cY), (3 * bs)), cX])
443- let db = assetBalance(cZ, cS)
444- let dc = fraction(bI, bq, bn)
445- let dd = valueOrElse(getInteger(cI[bT], bE), dc)
446- let de = valueOrElse(getInteger(cI[bT], bD), cU)
447- let df = min([fraction(dc, (cT - de), (3 * bs)), dd])
448- let dg = assetBalance(cI[bR], cS)
449- let dh = valueOrElse(getInteger(cI[bT], bG(cH)), cU)
450- let di = ((dh - cU) / bs)
451- let dj = min([cT, (cU + (3 * bs))])
452- let dk = min([((cT - cU) / bs), 2])
453- let dl = cw(cH, cI[bS])
454- let dm = bH(bI, dk)
455- let dn = (cU + (bs * dk))
456- let do = (cU + (bs * (dk - 1)))
457- let dp = fraction(dm, (dj - dh), bs)
458- let dq = if ((di == dk))
459- then dp
460- else if ((di == (dk - 1)))
416+func cF (cG,cH,cI,cJ) = {
417+ let bH = valueOrErrorMessage(getInteger(cH[bS], bL), "WLGOLD is not issued yet")
418+ let cK = assetBalance(cH[bQ], cI)
419+ let cL = (assetBalance(cH[bS], cI) - cJ)
420+ let cM = assetBalance(cH[bT], cI)
421+ let cN = assetBalance(cH[bR], cI)
422+ let cO = cH[bU]
423+ let cP = (assetBalance(cO, cI) + valueOrElse(getInteger(cO, bM), 0))
424+ let cQ = ((cN + cL) + cP)
425+ let cR = valueOrErrorMessage(getBinary(cH[bS], "wlg_assetId"), "Not initialized yet")
426+ let cS = lastBlock.timestamp
427+ let cT = valueOrErrorMessage(getInteger(cH[bS], bK), "Not initialized")
428+ let cU = assetBalance(cH[bS], cR)
429+ let cV = fraction(bH, bo, bm)
430+ let cW = valueOrElse(getInteger(cH[bS], bB), cV)
431+ let cX = valueOrElse(getInteger(cH[bS], bA), cT)
432+ let cY = addressFromStringValue(value(getString(cH[bS], bz)))
433+ let cZ = min([fraction(cV, (cS - cX), (3 * br)), cW])
434+ let da = assetBalance(cY, cR)
435+ let db = fraction(bH, bp, bm)
436+ let dc = valueOrElse(getInteger(cH[bS], bD), db)
437+ let dd = valueOrElse(getInteger(cH[bS], bC), cT)
438+ let de = min([fraction(db, (cS - dd), (3 * br)), dc])
439+ let df = assetBalance(cH[bQ], cR)
440+ let dg = valueOrElse(getInteger(cH[bS], bF(cG)), cT)
441+ let dh = ((dg - cT) / br)
442+ let di = min([cS, (cT + (3 * br))])
443+ let dj = min([((cS - cT) / br), 2])
444+ let dk = cv(cG, cH[bR])
445+ let dl = bG(bH, dj)
446+ let dm = (cT + (br * dj))
447+ let dn = (cT + (br * (dj - 1)))
448+ let do = fraction(dl, (di - dg), br)
449+ let dp = if ((dh == dj))
450+ then do
451+ else if ((dh == (dj - 1)))
461452 then {
462- let dr = fraction(bH(bI, (dk - 1)), (dn - dh), bs)
463- (dr + dp)
453+ let dq = fraction(bG(bH, (dj - 1)), (dm - dg), br)
454+ (dq + do)
464455 }
465456 else {
466- let ds = fraction(bH(bI, (dk - 2)), (do - dh), bs)
467- let dr = bH(bI, (dk - 1))
468- ((ds + dr) + dp)
457+ let dr = fraction(bG(bH, (dj - 2)), (dn - dg), br)
458+ let dq = bG(bH, (dj - 1))
459+ ((dr + dq) + do)
469460 }
470- let dt = valueOrElse(getInteger(cI[bT], bF), 0)
471- let du = if ((dl[cE] != 0))
472- then fraction(dq, dl[cF], dl[cE])
461+ let ds = valueOrElse(getInteger(cH[bS], bE), 0)
462+ let dt = if ((dk[cD] != 0))
463+ then fraction(dp, dk[cE], dk[cD])
473464 else 0
474- let dv = valueOrElse(getInteger(cI[bT], bK), by)
475- let dw = fraction(bu, max([(cT - dv), 0]), bt)
476- let dx = fraction(dw, bw, bn)
477- let dy = fraction(dw, bx, bn)
478- let dz = max([(cT - max([by, dh])), 0])
479- let dA = if ((dl[cE] != 0))
480- then fraction(fraction(fraction(bu, dz, bt), dl[cF], dl[cE]), bv, bn)
465+ let du = valueOrElse(getInteger(cH[bS], bJ), bx)
466+ let dv = fraction(bt, max([(cS - du), 0]), bs)
467+ let dw = fraction(dv, bv, bm)
468+ let dx = fraction(dv, bw, bm)
469+ let dy = max([(cS - max([bx, dg])), 0])
470+ let dz = if ((dk[cD] != 0))
471+ then fraction(fraction(fraction(bt, dy, bs), dk[cE], dk[cD]), bu, bm)
481472 else 0
482- let dB = max([by, cT])
483- let dC = valueOrElse(getInteger(cI[bS], bP), 0)
484- let dD = valueOrElse(getInteger(cI[bS], bZ), 0)
485- let dE = valueOrElse(getInteger(cI[bS], ca), 0)
486- let dF = valueOrElse(getInteger(cI[bS], cb), 0)
487- let dG = valueOrElse(getInteger(cI[bS], cc(valueOrElse(cH, ""))), 0)
488-[bI, cV, fraction(cR, bo, bI), cR, cL, cO, cM, cN, cU, cY, cW, cX, da, db, dc, dd, df, dg, dk, dt, dm, dh, cQ, du, dj, dw, dx, dy, dA, dB, dl[cE], dC, dD, dE, dF, dG]
473+ let dA = max([bx, cS])
474+ let dB = valueOrElse(getInteger(cH[bR], bO), 0)
475+ let dC = valueOrElse(getInteger(cH[bR], bY), 0)
476+ let dD = valueOrElse(getInteger(cH[bR], bZ), 0)
477+ let dE = valueOrElse(getInteger(cH[bR], ca), 0)
478+ let dF = valueOrElse(getInteger(cH[bR], cb(valueOrElse(cG, ""))), 0)
479+[bH, cU, fraction(cQ, bn, bH), cQ, cK, cN, cL, cM, cT, cX, cV, cW, cZ, da, db, dc, de, df, dj, ds, dl, dg, cP, dt, di, dv, dw, dx, dz, dA, dk[cD], dB, dC, dD, dE, dF]
489480 }
490481
491482
492-let dH = "profitAddr"
483+let dG = "profitAddr"
493484
494-let dI = "stakersAmountPaidTotal"
485+let dH = "stakersAmountPaidTotal"
495486
496-func dJ (P) = ("stakersAmountPaidUser_" + P)
487+func dI (O) = ("stakersAmountPaidUser_" + O)
497488
498489
499-func dK () = au(reentrantInvoke(K, "saveLastTx", nil, nil))
490+func dJ () = at(reentrantInvoke(J, "saveLastTx", nil, nil))
500491
501492
502-func dL (P) = {
503- let dM = valueOrElse(getInteger(bf(P)), 0)
504- let dN = valueOrElse(getInteger(K, bj(P)), 0)
505- let dO = valueOrElse(getInteger(bg(P)), dN)
506- let dP = (dO + fraction(dN, (lastBlock.timestamp - dM), e))
507- min([dP, dN])
493+func dK (O) = {
494+ let dL = valueOrElse(getInteger(be(O)), 0)
495+ let dM = valueOrElse(getInteger(J, bi(O)), 0)
496+ let dN = valueOrElse(getInteger(bf(O)), dM)
497+ let dO = (dN + fraction(dM, (lastBlock.timestamp - dL), e))
498+ min([dO, dM])
508499 }
509500
510501
511-func dQ (P) = {
512- let dR = cG(P, [J, K, L, M, N], k, 0)
513- let dS = bG(P)
514- let dh = valueOrElse(getInteger(dS), 0)
515- let dT = dR[ao]
516- if ((dh == dT))
502+func dP (O) = {
503+ let dQ = cF(O, [I, J, K, L, M], k, 0)
504+ let dR = bF(O)
505+ let dg = valueOrElse(getInteger(dR), 0)
506+ let dS = dQ[an]
507+ if ((dg == dS))
517508 then $Tuple2(nil, 0)
518509 else {
519- let cT = lastBlock.timestamp
520- let cU = dR[ah]
521- let cX = dR[ai]
522- let dU = (dR[aj] + dR[ar])
523- let dV = if ((dU > 0))
524- then [ScriptTransfer(addressFromStringValue(value(getString(aZ))), dU, R)]
510+ let cS = lastBlock.timestamp
511+ let cT = dQ[ag]
512+ let cW = dQ[ah]
513+ let dT = (dQ[ai] + dQ[aq])
514+ let dU = if ((dT > 0))
515+ then [ScriptTransfer(addressFromStringValue(value(getString(aY))), dT, Q)]
525516 else nil
526- let dd = dR[ak]
527- let dW = dR[al]
528- let dX = if ((dW > 0))
529- then [ScriptTransfer(y, dW, R)]
517+ let dc = dQ[aj]
518+ let dV = dQ[ak]
519+ let dW = if ((dV > 0))
520+ then [ScriptTransfer(x, dV, Q)]
530521 else nil
531- let dY = dR[aq]
532- let dZ = if ((dY > 0))
533- then [ScriptTransfer(addressFromStringValue(value(getString(bz))), dY, R)]
522+ let dX = dQ[ap]
523+ let dY = if ((dX > 0))
524+ then [ScriptTransfer(addressFromStringValue(value(getString(by))), dX, Q)]
534525 else nil
535- let du = dR[an]
536- let ea = dJ(P)
537- let eb = (du + dR[as])
538- let ec = dR[ap]
539- $Tuple2(((([Reissue(R, ec, true), IntegerEntry(bi, (dR[ae] + ec)), IntegerEntry(bK, dR[at]), IntegerEntry(ea, (valueOrElse(getInteger(ea), 0) + du)), IntegerEntry(dI, (valueOrElse(getInteger(dI), 0) + du)), IntegerEntry(be, (dR[am] - du)), IntegerEntry(bb, ((cX - dU) + dR[ar])), IntegerEntry(ba, cT), IntegerEntry(bd, (dd - dW)), IntegerEntry(bc, cT), IntegerEntry(dS, dT)] ++ dV) ++ dX) ++ dZ), eb)
526+ let dt = dQ[am]
527+ let dZ = dI(O)
528+ let ea = (dt + dQ[ar])
529+ let eb = dQ[ao]
530+ $Tuple2(((([Reissue(Q, eb, true), IntegerEntry(bh, (dQ[ad] + eb)), IntegerEntry(bJ, dQ[as]), IntegerEntry(dZ, (valueOrElse(getInteger(dZ), 0) + dt)), IntegerEntry(dH, (valueOrElse(getInteger(dH), 0) + dt)), IntegerEntry(bd, (dQ[al] - dt)), IntegerEntry(ba, ((cW - dT) + dQ[aq])), IntegerEntry(aZ, cS), IntegerEntry(bc, (dc - dV)), IntegerEntry(bb, cS), IntegerEntry(dR, dS)] ++ dU) ++ dW) ++ dY), ea)
540531 }
541532 }
542533
543534
544-func ed (P,ee) = {
545- let cT = lastBlock.timestamp
546- let ef = bm(P)
547- let eg = bk(P)
548- let dM = valueOrElse(getInteger(ef), 0)
549- let eh = valueOrElse(getInteger(eg), 0)
550- let ei = valueOrElse(getInteger(bl), 0)
551- let aR = fraction(fraction(aP, eh, aM), (dM - cT), aY)
552- $Tuple3([IntegerEntry(ef, cT), IntegerEntry(eg, (eh + ee)), IntegerEntry(bl, (ei + ee))], aR, eh)
535+func ec (O,ed) = {
536+ let cS = lastBlock.timestamp
537+ let ee = bl(O)
538+ let ef = bj(O)
539+ let dL = valueOrElse(getInteger(ee), 0)
540+ let eg = valueOrElse(getInteger(ef), 0)
541+ let eh = valueOrElse(getInteger(bk), 0)
542+ let aQ = fraction(fraction(aO, eg, aL), (dL - cS), aX)
543+ $Tuple3([IntegerEntry(ee, cS), IntegerEntry(ef, (eg + ed)), IntegerEntry(bk, (eh + ed))], aQ, eg)
553544 }
554545
555546
556-func ej (P) = {
557- let U = (height / i)
558- let ek = (U - 1)
559- let el = valueOrElse(getInteger(X(ek)), bX)
560- let em = valueOrElse(getInteger(Y(ek)), 0)
561- let en = valueOrElse(getInteger(T(P, ek)), 0)
562- if ((0 >= en))
547+func ei (O) = {
548+ let T = (height / i)
549+ let ej = (T - 1)
550+ let ek = valueOrElse(getInteger(W(ej)), bW)
551+ let el = valueOrElse(getInteger(X(ej)), 0)
552+ let em = valueOrElse(getInteger(S(O, ej)), 0)
553+ if ((0 >= em))
563554 then $Tuple2(nil, unit)
564555 else {
565- let eo = valueOrElse(getInteger(V(ek)), 0)
566- if ((0 >= eo))
567- then $Tuple2([DeleteEntry(T(P, ek))], unit)
556+ let en = valueOrElse(getInteger(U(ej)), 0)
557+ if ((0 >= en))
558+ then $Tuple2([DeleteEntry(S(O, ej))], unit)
568559 else {
569- let aG = value(value(blockInfoByHeight((U * i))).vrf)
570- let aF = fromBase58String(split(valueOrElse(getString(O(P)), "42_DEFAULT"), "_")[1])
571- let ep = aD(eo, aF, aG)
572- if (((en * el) > ep))
560+ let aF = value(value(blockInfoByHeight((T * i))).vrf)
561+ let aE = fromBase58String(split(valueOrElse(getString(J, N(O)), "42_DEFAULT"), "_")[1])
562+ let eo = aC(en, aE, aF)
563+ if (((em * ek) > eo))
573564 then {
574- let eq = invoke(K, "issueNFT", [P, bW], nil)
575- let er = getString(Z(ek))
576- let es = if (isDefined(er))
577- then ((value(er) + "_") + P)
578- else P
579- $Tuple2([IntegerEntry(Y(ek), (em + 1)), DeleteEntry(T(P, ek)), StringEntry(Z(ek), es)], eq)
565+ let ep = invoke(J, "issueNFT", [O, bV], nil)
566+ let eq = getString(Y(ej))
567+ let er = if (isDefined(eq))
568+ then ((value(eq) + "_") + O)
569+ else O
570+ $Tuple2([IntegerEntry(X(ej), (el + 1)), DeleteEntry(S(O, ej)), StringEntry(Y(ej), er)], ep)
580571 }
581572 else {
582- let et = (aD(9, (base58'29' + aF), aG) + 1)
583- let eu = fraction(en, et, 10)
584- $Tuple2([DeleteEntry(T(P, ek)), IntegerEntry(T(P, U), eu)], eu)
573+ let es = (aC(9, (base58'29' + aE), aF) + 1)
574+ let et = fraction(em, es, 10)
575+ $Tuple2([DeleteEntry(S(O, ej)), IntegerEntry(S(O, T), et)], et)
585576 }
586577 }
587578 }
588579 }
589580
590581
591-func ev (P,ew) = {
592- let U = (height / i)
593- let ex = T(P, U)
594- let ey = split(ew, "_")
595- let ez = valueOrElse(getInteger(V(U)), 0)
596- let eA = valueOrElse(getInteger(ex), 0)
597- let eB = if ((aa(parseIntValue(ey[0])) == parseIntValue(ey[1])))
582+func eu (O,ev) = {
583+ let T = (height / i)
584+ let ew = S(O, T)
585+ let ex = split(ev, "_")
586+ let ey = valueOrElse(getInteger(U(T)), 0)
587+ let ez = valueOrElse(getInteger(ew), 0)
588+ let eA = if ((Z(parseIntValue(ex[0])) == parseIntValue(ex[1])))
598589 then 1
599590 else 0
600- let eC = valueOrElse(getInteger(W(U)), 0)
601- let eD = if (if ((eA == 0))
602- then (eB == 1)
591+ let eB = valueOrElse(getInteger(V(T)), 0)
592+ let eC = if (if ((ez == 0))
593+ then (eA == 1)
603594 else false)
604- then [IntegerEntry(W(U), (eC + 1))]
595+ then [IntegerEntry(V(T), (eB + 1))]
605596 else nil
606- $Tuple2(if ((eB == 0))
597+ $Tuple2(if ((eA == 0))
607598 then nil
608- else ((eD :+ IntegerEntry(ex, (eA + eB))) :+ IntegerEntry(V(U), (ez + eB))), eB)
599+ else ((eC :+ IntegerEntry(ew, (ez + eA))) :+ IntegerEntry(U(T), (ey + eA))), eA)
609600 }
610601
611602
612-@Callable(eE)
613-func constructorV1 (eF,eG,cZ,eH) = if ((eE.caller != this))
603+@Callable(eD)
604+func constructorV1 (eE,eF,cY,eG) = if ((eD.caller != this))
614605 then throw("Permission denied")
615- else if (isDefined(getBinary(Q)))
606+ else if (isDefined(getBinary(P)))
616607 then throw("Already initialized")
617608 else {
618- let bI = aW
619- let eI = Issue("WLGOLD", "WavesLands Gold investment token", bI, 8, true, unit, 0)
620- let eJ = calculateAssetId(eI)
621-[eI, IntegerEntry(bh, lastBlock.timestamp), IntegerEntry(bi, bI), IntegerEntry(dI, 0), IntegerEntry(be, fraction(aW, aX, b)), BinaryEntry(Q, eJ), StringEntry(x(), eF), StringEntry(bz, eG), StringEntry(aZ, cZ), StringEntry(dH, eH)]
609+ let bH = aV
610+ let eH = Issue("WLGOLD", "WavesLands Gold investment token", bH, 8, true, unit, 0)
611+ let eI = calculateAssetId(eH)
612+[eH, IntegerEntry(bg, lastBlock.timestamp), IntegerEntry(bh, bH), IntegerEntry(dH, 0), IntegerEntry(bd, fraction(aV, aW, b)), BinaryEntry(P, eI), StringEntry(w(), eE), StringEntry(by, eF), StringEntry(aY, cY), StringEntry(dG, eG)]
622613 }
623614
624615
625616
626-@Callable(eE)
627-func constructorV2 (eK) = if ((eE.caller != this))
617+@Callable(eD)
618+func constructorV2 (eJ) = if ((eD.caller != this))
628619 then throw("Permission denied")
629- else [StringEntry(w(), eK)]
620+ else [StringEntry(v(), eJ)]
630621
631622
632623
633-@Callable(eE)
634-func buyWlg (eL) = {
635- let eM = dK()
636- if ((eM == eM))
637- then if ((size(eE.payments) != 1))
624+@Callable(eD)
625+func buyWlg (eK) = {
626+ let eL = dJ()
627+ if ((eL == eL))
628+ then if ((size(eD.payments) != 1))
638629 then throw("exactly 1 payment must be attached")
639630 else {
640- let eN = eE.payments[0]
641- let eO = eN.amount
642- if (if (!(isDefined(eN.assetId)))
631+ let eM = eD.payments[0]
632+ let eN = eM.amount
633+ if (if (!(isDefined(eM.assetId)))
643634 then true
644- else (value(eN.assetId) != k))
635+ else (value(eM.assetId) != k))
645636 then throw("USDT payments only!")
646637 else {
647- let eP = eE.caller
648- let P = toString(eP)
649- if ((d > eO))
650- then throw((("You can trade min " + ax(d, 6)) + " USDT"))
638+ let eO = eD.caller
639+ let O = toString(eO)
640+ if ((d > eN))
641+ then throw((("You can trade min " + aw(d, 6)) + " USDT"))
651642 else {
652- let dR = cG("", [J, K, L, M, N], k, eO)
653- let eQ = dR[ae]
654- let eR = dR[ag]
655- let eS = fraction(eR, 6, 5, CEILING)
656- let eT = fraction(eO, c, eS)
657- let eU = dL(P)
658- if ((eT > eU))
659- then throw((("You can get max " + ax(eU, 8)) + " WLGOLD at the moment"))
660- else if ((eL > eT))
643+ let dQ = cF("", [I, J, K, L, M], k, eN)
644+ let eP = dQ[ad]
645+ let eQ = dQ[af]
646+ let eR = fraction(eQ, 6, 5, CEILING)
647+ let eS = fraction(eN, c, eR)
648+ let eT = dK(O)
649+ if ((eS > eT))
650+ then throw((("You can get max " + aw(eT, 8)) + " WLGOLD at the moment"))
651+ else if ((eK > eS))
661652 then throw("Price changed during operation, please try again")
662653 else {
663- let eV = (eO / 6)
664- $Tuple2([Reissue(R, eT, true), IntegerEntry(bi, (eQ + eT)), IntegerEntry(bf(P), lastBlock.timestamp), IntegerEntry(bg(P), (eU - eT)), ScriptTransfer(addressFromStringValue(value(getString(dH))), eV, k), ScriptTransfer(eP, eT, R)], eM)
654+ let eU = (eN / 6)
655+ $Tuple2([Reissue(Q, eS, true), IntegerEntry(bh, (eP + eS)), IntegerEntry(be(O), lastBlock.timestamp), IntegerEntry(bf(O), (eT - eS)), ScriptTransfer(addressFromStringValue(value(getString(dG))), eU, k), ScriptTransfer(eO, eS, Q)], eL)
665656 }
666657 }
667658 }
671662
672663
673664
674-@Callable(eE)
675-func buyWlgREADONLY (p,eO) = {
676- let dR = cG("", [J, K, L, M, N], k, eO)
677- let eR = dR[ag]
678- let eS = fraction(eR, 6, 5, CEILING)
679- let eT = fraction(eO, c, eS)
680- let eU = dL(p)
681- let eW = fraction(eU, eS, c)
682- let eV = (eO / 6)
683- $Tuple2(nil, [eT, d, eW, eV])
665+@Callable(eD)
666+func buyWlgREADONLY (o,eN) = {
667+ let dQ = cF("", [I, J, K, L, M], k, eN)
668+ let eQ = dQ[af]
669+ let eR = fraction(eQ, 6, 5, CEILING)
670+ let eS = fraction(eN, c, eR)
671+ let eT = dK(o)
672+ let eV = fraction(eT, eR, c)
673+ let eU = (eN / 6)
674+ $Tuple2(nil, [eS, d, eV, eU])
684675 }
685676
686677
687678
688-@Callable(eE)
689-func sellWlg (eX) = {
690- let eM = dK()
691- if ((eM == eM))
692- then if ((size(eE.payments) != 1))
679+@Callable(eD)
680+func sellWlg (eW) = {
681+ let eL = dJ()
682+ if ((eL == eL))
683+ then if ((size(eD.payments) != 1))
693684 then throw("exactly 1 payment must be attached")
694685 else {
695- let eN = eE.payments[0]
696- let eY = eN.amount
697- let eP = eE.caller
698- let P = toString(eP)
699- let eU = dL(P)
700- if ((eY > eU))
701- then throw((("You can spend max " + ax(eU, 8)) + " WLGOLD at the moment"))
702- else if (if (!(isDefined(eN.assetId)))
686+ let eM = eD.payments[0]
687+ let eX = eM.amount
688+ let eO = eD.caller
689+ let O = toString(eO)
690+ let eT = dK(O)
691+ if ((eX > eT))
692+ then throw((("You can spend max " + aw(eT, 8)) + " WLGOLD at the moment"))
693+ else if (if (!(isDefined(eM.assetId)))
703694 then true
704- else (value(eN.assetId) != R))
695+ else (value(eM.assetId) != Q))
705696 then throw("WLGOLD payments only!")
706697 else {
707- let dR = cG("", [J, K, L, M, N], k, 0)
708- let eQ = dR[ae]
709- let eZ = (dR[ag] / 2)
710- let eO = fraction(eY, eZ, c)
711- if ((d > eO))
712- then throw((("You can trade min " + ax(d, 6)) + " USDT"))
713- else if ((eX > eO))
698+ let dQ = cF("", [I, J, K, L, M], k, 0)
699+ let eP = dQ[ad]
700+ let eY = (dQ[af] / 2)
701+ let eN = fraction(eX, eY, c)
702+ if ((d > eN))
703+ then throw((("You can trade min " + aw(d, 6)) + " USDT"))
704+ else if ((eW > eN))
714705 then throw("Price changed during operation, please try again")
715706 else {
716- let eV = (eO / 5)
717- $Tuple2([Burn(R, eY), IntegerEntry(bi, (eQ - eY)), IntegerEntry(bf(P), lastBlock.timestamp), IntegerEntry(bg(P), (eU - eY)), ScriptTransfer(addressFromStringValue(value(getString(dH))), eV, k), ScriptTransfer(eP, eO, k)], eM)
707+ let eU = (eN / 5)
708+ $Tuple2([Burn(Q, eX), IntegerEntry(bh, (eP - eX)), IntegerEntry(be(O), lastBlock.timestamp), IntegerEntry(bf(O), (eT - eX)), ScriptTransfer(addressFromStringValue(value(getString(dG))), eU, k), ScriptTransfer(eO, eN, k)], eL)
718709 }
719710 }
720711 }
723714
724715
725716
726-@Callable(eE)
727-func sellWlgREADONLY (p,eY) = {
728- let eU = dL(p)
729- let dR = cG("", [J, K, L, M, N], k, 0)
730- let eZ = (dR[ag] / 2)
731- let eO = fraction(eY, eZ, c)
732- let fa = fraction(d, c, eZ)
733- let eV = (eO / 5)
734- $Tuple2(nil, [eO, fa, eU, eV])
717+@Callable(eD)
718+func sellWlgREADONLY (o,eX) = {
719+ let eT = dK(o)
720+ let dQ = cF("", [I, J, K, L, M], k, 0)
721+ let eY = (dQ[af] / 2)
722+ let eN = fraction(eX, eY, c)
723+ let eZ = fraction(d, c, eY)
724+ let eU = (eN / 5)
725+ $Tuple2(nil, [eN, eZ, eT, eU])
735726 }
736727
737728
738729
739-@Callable(eE)
730+@Callable(eD)
740731 func claim () = {
741- let eM = dK()
742- if ((eM == eM))
743- then if ((size(eE.payments) != 0))
732+ let eL = dJ()
733+ if ((eL == eL))
734+ then if ((size(eD.payments) != 0))
744735 then throw("No payments required")
745736 else {
746- let fb = dQ(toString(eE.caller))
747- let fc = fb._1
748- let fd = fb._2
749- $Tuple2((fc :+ ScriptTransfer(eE.caller, fd, R)), eM)
737+ let fa = dP(toString(eD.caller))
738+ let fb = fa._1
739+ let fc = fa._2
740+ $Tuple2((fb :+ ScriptTransfer(eD.caller, fc, Q)), eL)
750741 }
751742 else throw("Strict value is not equal to itself.")
752743 }
753744
754745
755746
756-@Callable(eE)
757-func onStakeUnstakeLand (P) = if (if (if ((eE.caller != H))
758- then (eE.caller != I)
747+@Callable(eD)
748+func onStakeUnstakeLand (O) = if (if (if ((eD.caller != G))
749+ then (eD.caller != H)
759750 else false)
760- then (eE.caller != K)
751+ then (eD.caller != J)
761752 else false)
762753 then throw("Permission denied")
763754 else {
764- let fe = dQ(P)
765- let fc = fe._1
766- let fd = fe._2
767- $Tuple2(if ((fd > 0))
768- then (fc :+ ScriptTransfer(addressFromStringValue(P), fd, R))
769- else fc, fd)
755+ let fd = dP(O)
756+ let fb = fd._1
757+ let fc = fd._2
758+ $Tuple2(if ((fc > 0))
759+ then (fb :+ ScriptTransfer(addressFromStringValue(O), fc, Q))
760+ else fb, fc)
770761 }
771762
772763
773764
774-@Callable(eE)
775-func burnWlgold (eY) = if ((eE.caller != K))
765+@Callable(eD)
766+func burnWlgold (eX) = if ((eD.caller != J))
776767 then throw("Permission denied")
777768 else {
778- let dR = cG("", [J, K, L, M, N], k, 0)
779- if ((eY > dR[af]))
780- then throw(((("Only " + ax(dR[af], 8)) + " WLGOLD left on contract, can't burn ") + ax(eY, 8)))
769+ let dQ = cF("", [I, J, K, L, M], k, 0)
770+ if ((eX > dQ[ae]))
771+ then throw(((("Only " + aw(dQ[ae], 8)) + " WLGOLD left on contract, can't burn ") + aw(eX, 8)))
781772 else {
782- let ff = (dR[ae] - eY)
783- $Tuple2([Burn(R, eY), IntegerEntry(bi, ff)], ff)
773+ let fe = (dQ[ad] - eX)
774+ $Tuple2([Burn(Q, eX), IntegerEntry(bh, fe)], fe)
784775 }
785776 }
786777
787778
788779
789-@Callable(eE)
790-func betForTicket (fg) = {
791- let eM = dK()
792- if ((eM == eM))
793- then if ((size(eE.payments) != 0))
780+@Callable(eD)
781+func betForTicket (ff) = {
782+ let eL = dJ()
783+ if ((eL == eL))
784+ then if ((size(eD.payments) != 0))
794785 then throw("No payments required")
795786 else {
796- let P = toString(eE.caller)
797- let ek = ((height / i) - 1)
798- let en = valueOrElse(getInteger(T(P, ek)), 0)
799- let eo = valueOrElse(getInteger(V(ek)), 0)
800- if (if ((en > 0))
801- then (eo > 0)
787+ let O = toString(eD.caller)
788+ let ej = ((height / i) - 1)
789+ let em = valueOrElse(getInteger(S(O, ej)), 0)
790+ let en = valueOrElse(getInteger(U(ej)), 0)
791+ if (if ((em > 0))
792+ then (en > 0)
802793 else false)
803794 then throw("Please open the chest first")
804- else if (((fg / 4) != 0))
795+ else if (((ff / 4) != 0))
805796 then throw("Invalid bet: should be 0..3")
806797 else {
807- let fh = (height % g)
808- if ((fh > (g - 3)))
809- then throw((("Cannot bet: the day is almost ended, please wait " + toString((g - fh))) + " blocks"))
798+ let fg = (height % g)
799+ if ((fg > (g - 3)))
800+ then throw((("Cannot bet: the day is almost ended, please wait " + toString((g - fg))) + " blocks"))
810801 else {
811- let fi = valueOrElse(getInteger(K, bO(P)), 0)
812- if ((bY > fi))
813- then throw((("You need to stake at least " + ax(bY, 8)) + " ACRES to bet"))
802+ let fh = valueOrElse(getInteger(J, bN(O)), 0)
803+ if ((bX > fh))
804+ then throw((("You need to stake at least " + aw(bX, 8)) + " ACRES to bet"))
814805 else {
815- let fj = ((height / g) + 1)
816- let fk = S(P)
817- let fl = getString(fk)
818- let fm = StringEntry(fk, ((toString(fj) + "_") + toString(fg)))
819- if (isDefined(fl))
806+ let fi = ((height / g) + 1)
807+ let fj = R(O)
808+ let fk = getString(fj)
809+ let fl = StringEntry(fj, ((toString(fi) + "_") + toString(ff)))
810+ if (isDefined(fk))
820811 then {
821- let fn = value(fl)
822- if ((split(fn, "_")[0] == toString(fj)))
812+ let fm = value(fk)
813+ if ((split(fm, "_")[0] == toString(fi)))
823814 then throw("You already bet for tomorrow")
824815 else {
825- let fo = ev(P, fn)
826- $Tuple2((fo._1 :+ fm), fo._2)
816+ let fn = eu(O, fm)
817+ $Tuple2((fn._1 :+ fl), fn._2)
827818 }
828819 }
829- else $Tuple2([fm], 0)
820+ else $Tuple2([fl], 0)
830821 }
831822 }
832823 }
836827
837828
838829
839-@Callable(eE)
840-func takeWlgXp (P) = if ((eE.caller != H))
830+@Callable(eD)
831+func takeWlgXp (O) = if ((eD.caller != G))
841832 then throw("Permission denied")
842833 else {
843- let fp = ed(P, 0)
844- let fc = fp._1
845- let aR = fp._2
846- $Tuple2(fc, aR)
834+ let fo = ec(O, 0)
835+ let fb = fo._1
836+ let aQ = fo._2
837+ $Tuple2(fb, aQ)
847838 }
848839
849840
850841
851-@Callable(eE)
852-func checkWlgXpREADONLY (P) = {
853- let fq = ed(P, 0)
854- let fr = fq._1
855- let fs = fq._2
856- let aU = (valueOrElse(getInteger(H, aN(P)), 0) + fs)
857- let ft = aS(valueOrElse(getInteger(H, aO(P)), 0), aU)
858- $Tuple2(nil, (ft :+ aU))
842+@Callable(eD)
843+func checkWlgXpREADONLY (O) = {
844+ let fp = ec(O, 0)
845+ let fq = fp._1
846+ let fr = fp._2
847+ let aT = (valueOrElse(getInteger(G, aM(O)), 0) + fr)
848+ let fs = aR(valueOrElse(getInteger(G, aN(O)), 0), aT)
849+ $Tuple2(nil, (fs :+ aT))
859850 }
860851
861852
862853
863-@Callable(eE)
864-func setNumPrizes (el) = if ((eE.caller != this))
854+@Callable(eD)
855+func setNumPrizes (ek) = if ((eD.caller != this))
865856 then throw("Permission denied")
866857 else {
867- let U = (height / i)
868- $Tuple2([IntegerEntry(X(U), el)], el)
858+ let T = (height / i)
859+ $Tuple2([IntegerEntry(W(T), ek)], ek)
869860 }
870861
871862
872863
873-@Callable(eE)
874-func openChest () = if (!(n))
875- then throw("Temporarily disabled")
876- else {
877- let eM = dK()
878- if ((eM == eM))
879- then if ((size(eE.payments) != 0))
880- then throw("No payments required")
881- else {
882- let ek = ((height / i) - 1)
883- let P = toString(eE.caller)
884- let en = valueOrElse(getInteger(T(P, ek)), 0)
885- if ((0 >= en))
886- then throw("No gems to open the chest")
887- else ej(P)
888- }
889- else throw("Strict value is not equal to itself.")
890- }
864+@Callable(eD)
865+func openChest () = {
866+ let eL = dJ()
867+ if ((eL == eL))
868+ then if ((size(eD.payments) != 0))
869+ then throw("No payments required")
870+ else {
871+ let ej = ((height / i) - 1)
872+ let O = toString(eD.caller)
873+ let em = valueOrElse(getInteger(S(O, ej)), 0)
874+ if ((0 >= em))
875+ then throw("No gems to open the chest")
876+ else ei(O)
877+ }
878+ else throw("Strict value is not equal to itself.")
879+ }
891880
892881
893882
894-@Callable(eE)
895-func addGemsFor (P,eB) = if ((eE.caller != this))
883+@Callable(eD)
884+func addGemsFor (O,eA) = if ((eD.caller != this))
896885 then throw("Permission denied")
897886 else {
898- let U = (height / i)
899- let ex = T(P, U)
900- let ez = valueOrElse(getInteger(V(U)), 0)
901- let eA = valueOrElse(getInteger(ex), 0)
902- let eC = valueOrElse(getInteger(W(U)), 0)
903- let eD = if (if ((eA == 0))
904- then (eB == 1)
887+ let T = (height / i)
888+ let ew = S(O, T)
889+ let ey = valueOrElse(getInteger(U(T)), 0)
890+ let ez = valueOrElse(getInteger(ew), 0)
891+ let eB = valueOrElse(getInteger(V(T)), 0)
892+ let eC = if (if ((ez == 0))
893+ then (eA == 1)
905894 else false)
906- then [IntegerEntry(W(U), (eC + 1))]
895+ then [IntegerEntry(V(T), (eB + 1))]
907896 else nil
908- $Tuple2(((eD :+ IntegerEntry(ex, (eA + eB))) :+ IntegerEntry(V(U), (ez + eB))), eB)
897+ $Tuple2(((eC :+ IntegerEntry(ew, (ez + eA))) :+ IntegerEntry(U(T), (ey + eA))), eA)
909898 }
910899
911900
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
70-let n = {
71- let h = f
72- if ((base58'2W' == h))
73- then false
74- else if ((base58'2T' == h))
75- then true
76- else throw("Unknown chain")
77- }
78-
79-func o (p,q) = valueOrErrorMessage(getString(p, q), makeString(["mandatory ", toString(p), ".", q, " is not defined"], ""))
70+func n (o,p) = valueOrErrorMessage(getString(o, p), makeString(["mandatory ", toString(o), ".", p, " is not defined"], ""))
8071
8172
82-let r = 1
73+let q = 1
8374
84-let s = 2
75+let r = 2
8576
86-let t = 4
77+let s = 4
8778
88-let u = 5
79+let t = 5
8980
90-func v () = "%s__restConfig"
81+func u () = "%s__restConfig"
9182
9283
93-func w () = "%s__rest2Addr"
84+func v () = "%s__rest2Addr"
9485
9586
96-func x () = "%s__restAddr"
87+func w () = "%s__restAddr"
9788
9889
99-let y = addressFromStringValue(valueOrElse(getString(this, x()), m))
90+let x = addressFromStringValue(valueOrElse(getString(this, w()), m))
10091
101-func z (A) = split_4C(o(A, v()), a)
92+func y (z) = split_4C(n(z, u()), a)
10293
10394
104-func B (C,D) = valueOrErrorMessage(addressFromString(C[D]), ("Rest cfg doesn't contain address at index " + toString(D)))
95+func A (B,C) = valueOrErrorMessage(addressFromString(B[C]), ("Rest cfg doesn't contain address at index " + toString(C)))
10596
10697
107-let E = 1
98+let D = 1
10899
109-let F = 8
100+let E = 8
110101
111-let G = z(y)
102+let F = y(x)
112103
113-let H = B(G, E)
104+let G = A(F, D)
114105
115-let I = B(G, F)
106+let H = A(F, E)
116107
117-let J = addressFromStringValue(valueOrElse(getString(this, w()), l))
108+let I = addressFromStringValue(valueOrElse(getString(this, v()), l))
118109
119-let C = z(J)
110+let B = y(I)
120111
121-let K = B(C, r)
112+let J = A(B, q)
122113
123-let L = B(C, s)
114+let K = A(B, r)
124115
125-let M = B(C, t)
116+let L = A(B, s)
126117
127-let N = B(C, u)
118+let M = A(B, t)
128119
129-func O (P) = ("lastWeekTxIdByUser_" + P)
120+func N (O) = ("lastWeekTxIdByUser_" + O)
130121
131122
132-let Q = "wlg_assetId"
123+let P = "wlg_assetId"
133124
134-let R = valueOrErrorMessage(getBinary(L, Q), "WLGOLD is not issued yet")
125+let Q = valueOrErrorMessage(getBinary(K, P), "WLGOLD is not issued yet")
135126
136-func S (P) = ("userBet_" + P)
127+func R (O) = ("userBet_" + O)
137128
138129
139-func T (P,U) = ((("userWeekTickets_" + P) + "_") + toString(U))
130+func S (O,T) = ((("userWeekTickets_" + O) + "_") + toString(T))
140131
141132
142-func V (U) = ("totalWeekTickets_" + toString(U))
133+func U (T) = ("totalWeekTickets_" + toString(T))
143134
144135
145-func W (U) = ("totalWeekParticipants_" + toString(U))
136+func V (T) = ("totalWeekParticipants_" + toString(T))
146137
147138
148-func X (U) = ("numNFT2Draw_" + toString(U))
139+func W (T) = ("numNFT2Draw_" + toString(T))
149140
150141
151-func Y (U) = ("numNFTDrawn_" + toString(U))
142+func X (T) = ("numNFTDrawn_" + toString(T))
152143
153144
154-func Z (U) = ("weekWinners_" + toString(U))
145+func Y (T) = ("weekWinners_" + toString(T))
155146
156147
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(ad)).vrf)) % 4)
148+func Z (aa) = {
149+ let ab = (aa * g)
150+ let ac = if ((ab > j))
151+ then ab
152+ else (ab + j)
153+ (toInt(value(value(blockInfoByHeight(ac)).vrf)) % 4)
163154 }
164155
165156
166-let ae = 0
157+let ad = 0
167158
168-let af = 1
159+let ae = 1
169160
170-let ag = 2
161+let af = 2
171162
172-let ah = 8
163+let ag = 8
173164
174-let ai = 11
165+let ah = 11
175166
176-let aj = 12
167+let ai = 12
177168
178-let ak = 15
169+let aj = 15
179170
180-let al = 16
171+let ak = 16
181172
182-let am = 19
173+let al = 19
183174
184-let an = 23
175+let am = 23
185176
186-let ao = 24
177+let an = 24
187178
188-let ap = 25
179+let ao = 25
189180
190-let aq = 26
181+let ap = 26
191182
192-let ar = 27
183+let aq = 27
193184
194-let as = 28
185+let ar = 28
195186
196-let at = 29
187+let as = 29
197188
198-func au (av) = {
199- let h = av
189+func at (au) = {
190+ let h = au
200191 if ($isInstanceOf(h, "Int"))
201192 then {
202- let aw = h
203- aw
193+ let av = h
194+ av
204195 }
205196 else throw("fail to cast into Int")
206197 }
207198
208199
209-func ax (ay,az) = {
210- let aA = pow(10, 0, az, 0, 0, DOWN)
211- let aB = toString((ay % aA))
212- let aC = drop(toString(aA), (1 + size(aB)))
213- (((toString((ay / aA)) + ".") + aC) + aB)
200+func aw (ax,ay) = {
201+ let az = pow(10, 0, ay, 0, 0, DOWN)
202+ let aA = toString((ax % az))
203+ let aB = drop(toString(az), (1 + size(aA)))
204+ (((toString((ax / az)) + ".") + aB) + aA)
214205 }
215206
216207
217-func aD (aE,aF,aG) = if ((0 >= aE))
208+func aC (aD,aE,aF) = if ((0 >= aD))
218209 then throw("maxValue should be > 0")
219210 else {
220- let aH = sha256_16Kb((aF + aG))
221- (toInt(aH) % aE)
211+ let aG = sha256_16Kb((aE + aF))
212+ (toInt(aG) % aD)
222213 }
223214
224215
225-let aI = 100000000
216+let aH = 100000000
226217
227-let aJ = 3200
218+let aI = 3200
228219
229-let aK = 4000
220+let aJ = 4000
230221
231-let aL = 3
222+let aK = 3
232223
233-let aM = 100000000000
224+let aL = 100000000000
234225
235-func aN (P) = ("userXP_" + P)
226+func aM (O) = ("userXP_" + O)
236227
237228
238-func aO (P) = ("userLevel_" + P)
229+func aN (O) = ("userLevel_" + O)
239230
240231
241-let aP = 10000
232+let aO = 10000
242233
243-func aQ (aR) = fraction(aJ, pow(aR, 4, aK, 4, 4, DOWN), aI)
234+func aP (aQ) = fraction(aI, pow(aQ, 4, aJ, 4, 4, DOWN), aH)
244235
245236
246-func aS (aT,aU) = {
247- let aV = aQ(aU)
248-[aV, (aL * (aV - aT))]
237+func aR (aS,aT) = {
238+ let aU = aP(aT)
239+[aU, (aK * (aU - aS))]
249240 }
250241
251242
252-let aW = 100000000000000
243+let aV = 100000000000000
253244
254-let aX = 400000
245+let aW = 400000
255246
256-let aY = 86400000
247+let aX = 86400000
257248
258-let aZ = "teamAddr"
249+let aY = "teamAddr"
259250
260-let ba = "lastClaimedTime_team"
251+let aZ = "lastClaimedTime_team"
261252
262-let bb = "teamAmountLeft"
253+let ba = "teamAmountLeft"
263254
264-let bc = "lastClaimedTime_activities"
255+let bb = "lastClaimedTime_activities"
265256
266-let bd = "activitiesAmountLeft"
257+let bc = "activitiesAmountLeft"
267258
268-let be = "stakersAmountLeft"
259+let bd = "stakersAmountLeft"
269260
270-func bf (P) = ("lastArbTimeUser_" + P)
261+func be (O) = ("lastArbTimeUser_" + O)
271262
272263
273-func bg (P) = ("lastWlgLimitUser_" + P)
264+func bf (O) = ("lastWlgLimitUser_" + O)
274265
275266
276-let bh = "wlg_issueTime"
267+let bg = "wlg_issueTime"
277268
278-let bi = "wlg_issuedAmount"
269+let bh = "wlg_issuedAmount"
279270
280-func bj (P) = ("acresStakedAmountByUser_" + P)
271+func bi (O) = ("acresStakedAmountByUser_" + O)
281272
282273
283-func bk (P) = ("wlgStakedAmountByUser_" + P)
274+func bj (O) = ("wlgStakedAmountByUser_" + O)
284275
285276
286-let bl = "wlgStakedAmountTotal"
277+let bk = "wlgStakedAmountTotal"
287278
288-func bm (P) = ("wlgStakedTimeByUser_" + P)
279+func bl (O) = ("wlgStakedTimeByUser_" + O)
289280
290281
291-let bn = 1000000
282+let bm = 1000000
292283
293-let bo = 100000000
284+let bn = 100000000
294285
295-let bp = 200000
286+let bo = 200000
296287
297-let bq = 100000
288+let bp = 100000
298289
299-let br = 400000
290+let bq = 400000
300291
301-let bs = 31557600000
292+let br = 31557600000
302293
303-let bt = 86400000
294+let bs = 86400000
304295
305-let bu = 1000000000
296+let bt = 1000000000
306297
307-let bv = 800000
298+let bu = 800000
299+
300+let bv = 100000
308301
309302 let bw = 100000
310303
311-let bx = 100000
304+let bx = 1731279600000
312305
313-let by = 1731279600000
306+let by = "marketingAddr"
314307
315-let bz = "marketingAddr"
308+let bz = "teamAddr"
316309
317-let bA = "teamAddr"
310+let bA = "lastClaimedTime_team"
318311
319-let bB = "lastClaimedTime_team"
312+let bB = "teamAmountLeft"
320313
321-let bC = "teamAmountLeft"
314+let bC = "lastClaimedTime_activities"
322315
323-let bD = "lastClaimedTime_activities"
316+let bD = "activitiesAmountLeft"
324317
325-let bE = "activitiesAmountLeft"
318+let bE = "stakersAmountLeft"
326319
327-let bF = "stakersAmountLeft"
328-
329-func bG (P) = ("lastClaimedTimeUser_" + P)
320+func bF (O) = ("lastClaimedTimeUser_" + O)
330321
331322
332-func bH (bI,bJ) = fraction(bI, (br * (bJ + 1)), (6 * bn))
323+func bG (bH,bI) = fraction(bH, (bq * (bI + 1)), (6 * bm))
333324
334325
335-let bK = "wlg_issue10Time"
326+let bJ = "wlg_issue10Time"
336327
337-let bL = "wlg_issueTime"
328+let bK = "wlg_issueTime"
338329
339-let bM = "wlg_issuedAmount"
330+let bL = "wlg_issuedAmount"
340331
341-let bN = "zbill_issuedAmount"
332+let bM = "zbill_issuedAmount"
342333
343-func bO (P) = ("acresStakedAmountByUser_" + P)
334+func bN (O) = ("acresStakedAmountByUser_" + O)
344335
345336
346-let bP = "acresStakedAmountTotal"
337+let bO = "acresStakedAmountTotal"
347338
348-let bQ = "totalFarmingPower"
339+let bP = "totalFarmingPower"
349340
350-let bR = 0
341+let bQ = 0
351342
352-let bS = 1
343+let bR = 1
353344
354-let bT = 2
345+let bS = 2
355346
356-let bU = 3
347+let bT = 3
357348
358-let bV = 4
349+let bU = 4
359350
360-let bW = 1
351+let bV = 1
361352
362-let bX = 5
353+let bW = 5
363354
364-let bY = 100000000
355+let bX = 100000000
365356
366-let bZ = "nftTotalIssued"
357+let bY = "nftTotalIssued"
367358
368-let ca = "nftTotalBurned"
359+let bZ = "nftTotalBurned"
369360
370-let cb = "WlNftTotalStaked"
361+let ca = "WlNftTotalStaked"
371362
372-func cc (P) = ("userWlNftNumber_" + P)
363+func cb (O) = ("userWlNftNumber_" + O)
373364
374365
375-func cd (P) = ("userFullBonus_" + P)
366+func cc (O) = ("userFullBonus_" + O)
376367
377368
378-let ce = [0, 10, 20, 40, 80, 150, 250, 400, 700, 1000]
369+let cd = [0, 10, 20, 40, 80, 150, 250, 400, 700, 1000]
379370
380-func cf (cg) = {
381- let ch = ((cg + 99999999) / bo)
382- func ci (cj,ck) = if ((ck >= ch))
383- then cj
384- else (cj + 1)
371+func ce (cf) = {
372+ let cg = ((cf + 99999999) / bn)
373+ func ch (ci,cj) = if ((cj >= cg))
374+ then ci
375+ else (ci + 1)
385376
386- let cl = ce
387- let cm = size(cl)
388- let cn = 0
389- func co (cp,cq) = if ((cq >= cm))
390- then cp
391- else ci(cp, cl[cq])
377+ let ck = cd
378+ let cl = size(ck)
379+ let cm = 0
380+ func cn (co,cp) = if ((cp >= cl))
381+ then co
382+ else ch(co, ck[cp])
392383
393- func cr (cp,cq) = if ((cq >= cm))
394- then cp
384+ func cq (co,cp) = if ((cp >= cl))
385+ then co
395386 else throw("List size exceeds 10")
396387
397- cr(co(co(co(co(co(co(co(co(co(co(cn, 0), 1), 2), 3), 4), 5), 6), 7), 8), 9), 10)
388+ cq(cn(cn(cn(cn(cn(cn(cn(cn(cn(cn(cm, 0), 1), 2), 3), 4), 5), 6), 7), 8), 9), 10)
398389 }
399390
400391
401-func cs (cg) = ((cg * 20) * (cf(cg) + 4))
392+func cr (cf) = ((cf * 20) * (ce(cf) + 4))
402393
403394
404-func ct (cg,cu) = {
405- let cv = cs(cg)
406- $Tuple2(fraction(cv, (bn + cu), bn), cv)
395+func cs (cf,ct) = {
396+ let cu = cr(cf)
397+ $Tuple2(fraction(cu, (bm + ct), bm), cu)
407398 }
408399
409400
410-func cw (cx,K) = {
411- let cy = valueOrElse(getInteger(K, bQ), 0)
412- let cz = valueOrElse(getInteger(K, bO(cx)), 0)
413- let cA = valueOrElse(getInteger(K, cd(cx)), 0)
414- let cB = ct(cz, cA)
415- let cC = cB._1
416- let cD = cB._2
417-[cy, cC, cD, cA]
401+func cv (cw,J) = {
402+ let cx = valueOrElse(getInteger(J, bP), 0)
403+ let cy = valueOrElse(getInteger(J, bN(cw)), 0)
404+ let cz = valueOrElse(getInteger(J, cc(cw)), 0)
405+ let cA = cs(cy, cz)
406+ let cB = cA._1
407+ let cC = cA._2
408+[cx, cB, cC, cz]
418409 }
419410
420411
421-let cE = 0
412+let cD = 0
422413
423-let cF = 1
414+let cE = 1
424415
425-func cG (cH,cI,cJ,cK) = {
426- let bI = valueOrErrorMessage(getInteger(cI[bT], bM), "WLGOLD is not issued yet")
427- let cL = assetBalance(cI[bR], cJ)
428- let cM = (assetBalance(cI[bT], cJ) - cK)
429- let cN = assetBalance(cI[bU], cJ)
430- let cO = assetBalance(cI[bS], cJ)
431- let cP = cI[bV]
432- let cQ = (assetBalance(cP, cJ) + valueOrElse(getInteger(cP, bN), 0))
433- let cR = ((cO + cM) + cQ)
434- let cS = valueOrErrorMessage(getBinary(cI[bT], "wlg_assetId"), "Not initialized yet")
435- let cT = lastBlock.timestamp
436- let cU = valueOrErrorMessage(getInteger(cI[bT], bL), "Not initialized")
437- let cV = assetBalance(cI[bT], cS)
438- let cW = fraction(bI, bp, bn)
439- let cX = valueOrElse(getInteger(cI[bT], bC), cW)
440- let cY = valueOrElse(getInteger(cI[bT], bB), cU)
441- let cZ = addressFromStringValue(value(getString(cI[bT], bA)))
442- let da = min([fraction(cW, (cT - cY), (3 * bs)), cX])
443- let db = assetBalance(cZ, cS)
444- let dc = fraction(bI, bq, bn)
445- let dd = valueOrElse(getInteger(cI[bT], bE), dc)
446- let de = valueOrElse(getInteger(cI[bT], bD), cU)
447- let df = min([fraction(dc, (cT - de), (3 * bs)), dd])
448- let dg = assetBalance(cI[bR], cS)
449- let dh = valueOrElse(getInteger(cI[bT], bG(cH)), cU)
450- let di = ((dh - cU) / bs)
451- let dj = min([cT, (cU + (3 * bs))])
452- let dk = min([((cT - cU) / bs), 2])
453- let dl = cw(cH, cI[bS])
454- let dm = bH(bI, dk)
455- let dn = (cU + (bs * dk))
456- let do = (cU + (bs * (dk - 1)))
457- let dp = fraction(dm, (dj - dh), bs)
458- let dq = if ((di == dk))
459- then dp
460- else if ((di == (dk - 1)))
416+func cF (cG,cH,cI,cJ) = {
417+ let bH = valueOrErrorMessage(getInteger(cH[bS], bL), "WLGOLD is not issued yet")
418+ let cK = assetBalance(cH[bQ], cI)
419+ let cL = (assetBalance(cH[bS], cI) - cJ)
420+ let cM = assetBalance(cH[bT], cI)
421+ let cN = assetBalance(cH[bR], cI)
422+ let cO = cH[bU]
423+ let cP = (assetBalance(cO, cI) + valueOrElse(getInteger(cO, bM), 0))
424+ let cQ = ((cN + cL) + cP)
425+ let cR = valueOrErrorMessage(getBinary(cH[bS], "wlg_assetId"), "Not initialized yet")
426+ let cS = lastBlock.timestamp
427+ let cT = valueOrErrorMessage(getInteger(cH[bS], bK), "Not initialized")
428+ let cU = assetBalance(cH[bS], cR)
429+ let cV = fraction(bH, bo, bm)
430+ let cW = valueOrElse(getInteger(cH[bS], bB), cV)
431+ let cX = valueOrElse(getInteger(cH[bS], bA), cT)
432+ let cY = addressFromStringValue(value(getString(cH[bS], bz)))
433+ let cZ = min([fraction(cV, (cS - cX), (3 * br)), cW])
434+ let da = assetBalance(cY, cR)
435+ let db = fraction(bH, bp, bm)
436+ let dc = valueOrElse(getInteger(cH[bS], bD), db)
437+ let dd = valueOrElse(getInteger(cH[bS], bC), cT)
438+ let de = min([fraction(db, (cS - dd), (3 * br)), dc])
439+ let df = assetBalance(cH[bQ], cR)
440+ let dg = valueOrElse(getInteger(cH[bS], bF(cG)), cT)
441+ let dh = ((dg - cT) / br)
442+ let di = min([cS, (cT + (3 * br))])
443+ let dj = min([((cS - cT) / br), 2])
444+ let dk = cv(cG, cH[bR])
445+ let dl = bG(bH, dj)
446+ let dm = (cT + (br * dj))
447+ let dn = (cT + (br * (dj - 1)))
448+ let do = fraction(dl, (di - dg), br)
449+ let dp = if ((dh == dj))
450+ then do
451+ else if ((dh == (dj - 1)))
461452 then {
462- let dr = fraction(bH(bI, (dk - 1)), (dn - dh), bs)
463- (dr + dp)
453+ let dq = fraction(bG(bH, (dj - 1)), (dm - dg), br)
454+ (dq + do)
464455 }
465456 else {
466- let ds = fraction(bH(bI, (dk - 2)), (do - dh), bs)
467- let dr = bH(bI, (dk - 1))
468- ((ds + dr) + dp)
457+ let dr = fraction(bG(bH, (dj - 2)), (dn - dg), br)
458+ let dq = bG(bH, (dj - 1))
459+ ((dr + dq) + do)
469460 }
470- let dt = valueOrElse(getInteger(cI[bT], bF), 0)
471- let du = if ((dl[cE] != 0))
472- then fraction(dq, dl[cF], dl[cE])
461+ let ds = valueOrElse(getInteger(cH[bS], bE), 0)
462+ let dt = if ((dk[cD] != 0))
463+ then fraction(dp, dk[cE], dk[cD])
473464 else 0
474- let dv = valueOrElse(getInteger(cI[bT], bK), by)
475- let dw = fraction(bu, max([(cT - dv), 0]), bt)
476- let dx = fraction(dw, bw, bn)
477- let dy = fraction(dw, bx, bn)
478- let dz = max([(cT - max([by, dh])), 0])
479- let dA = if ((dl[cE] != 0))
480- then fraction(fraction(fraction(bu, dz, bt), dl[cF], dl[cE]), bv, bn)
465+ let du = valueOrElse(getInteger(cH[bS], bJ), bx)
466+ let dv = fraction(bt, max([(cS - du), 0]), bs)
467+ let dw = fraction(dv, bv, bm)
468+ let dx = fraction(dv, bw, bm)
469+ let dy = max([(cS - max([bx, dg])), 0])
470+ let dz = if ((dk[cD] != 0))
471+ then fraction(fraction(fraction(bt, dy, bs), dk[cE], dk[cD]), bu, bm)
481472 else 0
482- let dB = max([by, cT])
483- let dC = valueOrElse(getInteger(cI[bS], bP), 0)
484- let dD = valueOrElse(getInteger(cI[bS], bZ), 0)
485- let dE = valueOrElse(getInteger(cI[bS], ca), 0)
486- let dF = valueOrElse(getInteger(cI[bS], cb), 0)
487- let dG = valueOrElse(getInteger(cI[bS], cc(valueOrElse(cH, ""))), 0)
488-[bI, cV, fraction(cR, bo, bI), cR, cL, cO, cM, cN, cU, cY, cW, cX, da, db, dc, dd, df, dg, dk, dt, dm, dh, cQ, du, dj, dw, dx, dy, dA, dB, dl[cE], dC, dD, dE, dF, dG]
473+ let dA = max([bx, cS])
474+ let dB = valueOrElse(getInteger(cH[bR], bO), 0)
475+ let dC = valueOrElse(getInteger(cH[bR], bY), 0)
476+ let dD = valueOrElse(getInteger(cH[bR], bZ), 0)
477+ let dE = valueOrElse(getInteger(cH[bR], ca), 0)
478+ let dF = valueOrElse(getInteger(cH[bR], cb(valueOrElse(cG, ""))), 0)
479+[bH, cU, fraction(cQ, bn, bH), cQ, cK, cN, cL, cM, cT, cX, cV, cW, cZ, da, db, dc, de, df, dj, ds, dl, dg, cP, dt, di, dv, dw, dx, dz, dA, dk[cD], dB, dC, dD, dE, dF]
489480 }
490481
491482
492-let dH = "profitAddr"
483+let dG = "profitAddr"
493484
494-let dI = "stakersAmountPaidTotal"
485+let dH = "stakersAmountPaidTotal"
495486
496-func dJ (P) = ("stakersAmountPaidUser_" + P)
487+func dI (O) = ("stakersAmountPaidUser_" + O)
497488
498489
499-func dK () = au(reentrantInvoke(K, "saveLastTx", nil, nil))
490+func dJ () = at(reentrantInvoke(J, "saveLastTx", nil, nil))
500491
501492
502-func dL (P) = {
503- let dM = valueOrElse(getInteger(bf(P)), 0)
504- let dN = valueOrElse(getInteger(K, bj(P)), 0)
505- let dO = valueOrElse(getInteger(bg(P)), dN)
506- let dP = (dO + fraction(dN, (lastBlock.timestamp - dM), e))
507- min([dP, dN])
493+func dK (O) = {
494+ let dL = valueOrElse(getInteger(be(O)), 0)
495+ let dM = valueOrElse(getInteger(J, bi(O)), 0)
496+ let dN = valueOrElse(getInteger(bf(O)), dM)
497+ let dO = (dN + fraction(dM, (lastBlock.timestamp - dL), e))
498+ min([dO, dM])
508499 }
509500
510501
511-func dQ (P) = {
512- let dR = cG(P, [J, K, L, M, N], k, 0)
513- let dS = bG(P)
514- let dh = valueOrElse(getInteger(dS), 0)
515- let dT = dR[ao]
516- if ((dh == dT))
502+func dP (O) = {
503+ let dQ = cF(O, [I, J, K, L, M], k, 0)
504+ let dR = bF(O)
505+ let dg = valueOrElse(getInteger(dR), 0)
506+ let dS = dQ[an]
507+ if ((dg == dS))
517508 then $Tuple2(nil, 0)
518509 else {
519- let cT = lastBlock.timestamp
520- let cU = dR[ah]
521- let cX = dR[ai]
522- let dU = (dR[aj] + dR[ar])
523- let dV = if ((dU > 0))
524- then [ScriptTransfer(addressFromStringValue(value(getString(aZ))), dU, R)]
510+ let cS = lastBlock.timestamp
511+ let cT = dQ[ag]
512+ let cW = dQ[ah]
513+ let dT = (dQ[ai] + dQ[aq])
514+ let dU = if ((dT > 0))
515+ then [ScriptTransfer(addressFromStringValue(value(getString(aY))), dT, Q)]
525516 else nil
526- let dd = dR[ak]
527- let dW = dR[al]
528- let dX = if ((dW > 0))
529- then [ScriptTransfer(y, dW, R)]
517+ let dc = dQ[aj]
518+ let dV = dQ[ak]
519+ let dW = if ((dV > 0))
520+ then [ScriptTransfer(x, dV, Q)]
530521 else nil
531- let dY = dR[aq]
532- let dZ = if ((dY > 0))
533- then [ScriptTransfer(addressFromStringValue(value(getString(bz))), dY, R)]
522+ let dX = dQ[ap]
523+ let dY = if ((dX > 0))
524+ then [ScriptTransfer(addressFromStringValue(value(getString(by))), dX, Q)]
534525 else nil
535- let du = dR[an]
536- let ea = dJ(P)
537- let eb = (du + dR[as])
538- let ec = dR[ap]
539- $Tuple2(((([Reissue(R, ec, true), IntegerEntry(bi, (dR[ae] + ec)), IntegerEntry(bK, dR[at]), IntegerEntry(ea, (valueOrElse(getInteger(ea), 0) + du)), IntegerEntry(dI, (valueOrElse(getInteger(dI), 0) + du)), IntegerEntry(be, (dR[am] - du)), IntegerEntry(bb, ((cX - dU) + dR[ar])), IntegerEntry(ba, cT), IntegerEntry(bd, (dd - dW)), IntegerEntry(bc, cT), IntegerEntry(dS, dT)] ++ dV) ++ dX) ++ dZ), eb)
526+ let dt = dQ[am]
527+ let dZ = dI(O)
528+ let ea = (dt + dQ[ar])
529+ let eb = dQ[ao]
530+ $Tuple2(((([Reissue(Q, eb, true), IntegerEntry(bh, (dQ[ad] + eb)), IntegerEntry(bJ, dQ[as]), IntegerEntry(dZ, (valueOrElse(getInteger(dZ), 0) + dt)), IntegerEntry(dH, (valueOrElse(getInteger(dH), 0) + dt)), IntegerEntry(bd, (dQ[al] - dt)), IntegerEntry(ba, ((cW - dT) + dQ[aq])), IntegerEntry(aZ, cS), IntegerEntry(bc, (dc - dV)), IntegerEntry(bb, cS), IntegerEntry(dR, dS)] ++ dU) ++ dW) ++ dY), ea)
540531 }
541532 }
542533
543534
544-func ed (P,ee) = {
545- let cT = lastBlock.timestamp
546- let ef = bm(P)
547- let eg = bk(P)
548- let dM = valueOrElse(getInteger(ef), 0)
549- let eh = valueOrElse(getInteger(eg), 0)
550- let ei = valueOrElse(getInteger(bl), 0)
551- let aR = fraction(fraction(aP, eh, aM), (dM - cT), aY)
552- $Tuple3([IntegerEntry(ef, cT), IntegerEntry(eg, (eh + ee)), IntegerEntry(bl, (ei + ee))], aR, eh)
535+func ec (O,ed) = {
536+ let cS = lastBlock.timestamp
537+ let ee = bl(O)
538+ let ef = bj(O)
539+ let dL = valueOrElse(getInteger(ee), 0)
540+ let eg = valueOrElse(getInteger(ef), 0)
541+ let eh = valueOrElse(getInteger(bk), 0)
542+ let aQ = fraction(fraction(aO, eg, aL), (dL - cS), aX)
543+ $Tuple3([IntegerEntry(ee, cS), IntegerEntry(ef, (eg + ed)), IntegerEntry(bk, (eh + ed))], aQ, eg)
553544 }
554545
555546
556-func ej (P) = {
557- let U = (height / i)
558- let ek = (U - 1)
559- let el = valueOrElse(getInteger(X(ek)), bX)
560- let em = valueOrElse(getInteger(Y(ek)), 0)
561- let en = valueOrElse(getInteger(T(P, ek)), 0)
562- if ((0 >= en))
547+func ei (O) = {
548+ let T = (height / i)
549+ let ej = (T - 1)
550+ let ek = valueOrElse(getInteger(W(ej)), bW)
551+ let el = valueOrElse(getInteger(X(ej)), 0)
552+ let em = valueOrElse(getInteger(S(O, ej)), 0)
553+ if ((0 >= em))
563554 then $Tuple2(nil, unit)
564555 else {
565- let eo = valueOrElse(getInteger(V(ek)), 0)
566- if ((0 >= eo))
567- then $Tuple2([DeleteEntry(T(P, ek))], unit)
556+ let en = valueOrElse(getInteger(U(ej)), 0)
557+ if ((0 >= en))
558+ then $Tuple2([DeleteEntry(S(O, ej))], unit)
568559 else {
569- let aG = value(value(blockInfoByHeight((U * i))).vrf)
570- let aF = fromBase58String(split(valueOrElse(getString(O(P)), "42_DEFAULT"), "_")[1])
571- let ep = aD(eo, aF, aG)
572- if (((en * el) > ep))
560+ let aF = value(value(blockInfoByHeight((T * i))).vrf)
561+ let aE = fromBase58String(split(valueOrElse(getString(J, N(O)), "42_DEFAULT"), "_")[1])
562+ let eo = aC(en, aE, aF)
563+ if (((em * ek) > eo))
573564 then {
574- let eq = invoke(K, "issueNFT", [P, bW], nil)
575- let er = getString(Z(ek))
576- let es = if (isDefined(er))
577- then ((value(er) + "_") + P)
578- else P
579- $Tuple2([IntegerEntry(Y(ek), (em + 1)), DeleteEntry(T(P, ek)), StringEntry(Z(ek), es)], eq)
565+ let ep = invoke(J, "issueNFT", [O, bV], nil)
566+ let eq = getString(Y(ej))
567+ let er = if (isDefined(eq))
568+ then ((value(eq) + "_") + O)
569+ else O
570+ $Tuple2([IntegerEntry(X(ej), (el + 1)), DeleteEntry(S(O, ej)), StringEntry(Y(ej), er)], ep)
580571 }
581572 else {
582- let et = (aD(9, (base58'29' + aF), aG) + 1)
583- let eu = fraction(en, et, 10)
584- $Tuple2([DeleteEntry(T(P, ek)), IntegerEntry(T(P, U), eu)], eu)
573+ let es = (aC(9, (base58'29' + aE), aF) + 1)
574+ let et = fraction(em, es, 10)
575+ $Tuple2([DeleteEntry(S(O, ej)), IntegerEntry(S(O, T), et)], et)
585576 }
586577 }
587578 }
588579 }
589580
590581
591-func ev (P,ew) = {
592- let U = (height / i)
593- let ex = T(P, U)
594- let ey = split(ew, "_")
595- let ez = valueOrElse(getInteger(V(U)), 0)
596- let eA = valueOrElse(getInteger(ex), 0)
597- let eB = if ((aa(parseIntValue(ey[0])) == parseIntValue(ey[1])))
582+func eu (O,ev) = {
583+ let T = (height / i)
584+ let ew = S(O, T)
585+ let ex = split(ev, "_")
586+ let ey = valueOrElse(getInteger(U(T)), 0)
587+ let ez = valueOrElse(getInteger(ew), 0)
588+ let eA = if ((Z(parseIntValue(ex[0])) == parseIntValue(ex[1])))
598589 then 1
599590 else 0
600- let eC = valueOrElse(getInteger(W(U)), 0)
601- let eD = if (if ((eA == 0))
602- then (eB == 1)
591+ let eB = valueOrElse(getInteger(V(T)), 0)
592+ let eC = if (if ((ez == 0))
593+ then (eA == 1)
603594 else false)
604- then [IntegerEntry(W(U), (eC + 1))]
595+ then [IntegerEntry(V(T), (eB + 1))]
605596 else nil
606- $Tuple2(if ((eB == 0))
597+ $Tuple2(if ((eA == 0))
607598 then nil
608- else ((eD :+ IntegerEntry(ex, (eA + eB))) :+ IntegerEntry(V(U), (ez + eB))), eB)
599+ else ((eC :+ IntegerEntry(ew, (ez + eA))) :+ IntegerEntry(U(T), (ey + eA))), eA)
609600 }
610601
611602
612-@Callable(eE)
613-func constructorV1 (eF,eG,cZ,eH) = if ((eE.caller != this))
603+@Callable(eD)
604+func constructorV1 (eE,eF,cY,eG) = if ((eD.caller != this))
614605 then throw("Permission denied")
615- else if (isDefined(getBinary(Q)))
606+ else if (isDefined(getBinary(P)))
616607 then throw("Already initialized")
617608 else {
618- let bI = aW
619- let eI = Issue("WLGOLD", "WavesLands Gold investment token", bI, 8, true, unit, 0)
620- let eJ = calculateAssetId(eI)
621-[eI, IntegerEntry(bh, lastBlock.timestamp), IntegerEntry(bi, bI), IntegerEntry(dI, 0), IntegerEntry(be, fraction(aW, aX, b)), BinaryEntry(Q, eJ), StringEntry(x(), eF), StringEntry(bz, eG), StringEntry(aZ, cZ), StringEntry(dH, eH)]
609+ let bH = aV
610+ let eH = Issue("WLGOLD", "WavesLands Gold investment token", bH, 8, true, unit, 0)
611+ let eI = calculateAssetId(eH)
612+[eH, IntegerEntry(bg, lastBlock.timestamp), IntegerEntry(bh, bH), IntegerEntry(dH, 0), IntegerEntry(bd, fraction(aV, aW, b)), BinaryEntry(P, eI), StringEntry(w(), eE), StringEntry(by, eF), StringEntry(aY, cY), StringEntry(dG, eG)]
622613 }
623614
624615
625616
626-@Callable(eE)
627-func constructorV2 (eK) = if ((eE.caller != this))
617+@Callable(eD)
618+func constructorV2 (eJ) = if ((eD.caller != this))
628619 then throw("Permission denied")
629- else [StringEntry(w(), eK)]
620+ else [StringEntry(v(), eJ)]
630621
631622
632623
633-@Callable(eE)
634-func buyWlg (eL) = {
635- let eM = dK()
636- if ((eM == eM))
637- then if ((size(eE.payments) != 1))
624+@Callable(eD)
625+func buyWlg (eK) = {
626+ let eL = dJ()
627+ if ((eL == eL))
628+ then if ((size(eD.payments) != 1))
638629 then throw("exactly 1 payment must be attached")
639630 else {
640- let eN = eE.payments[0]
641- let eO = eN.amount
642- if (if (!(isDefined(eN.assetId)))
631+ let eM = eD.payments[0]
632+ let eN = eM.amount
633+ if (if (!(isDefined(eM.assetId)))
643634 then true
644- else (value(eN.assetId) != k))
635+ else (value(eM.assetId) != k))
645636 then throw("USDT payments only!")
646637 else {
647- let eP = eE.caller
648- let P = toString(eP)
649- if ((d > eO))
650- then throw((("You can trade min " + ax(d, 6)) + " USDT"))
638+ let eO = eD.caller
639+ let O = toString(eO)
640+ if ((d > eN))
641+ then throw((("You can trade min " + aw(d, 6)) + " USDT"))
651642 else {
652- let dR = cG("", [J, K, L, M, N], k, eO)
653- let eQ = dR[ae]
654- let eR = dR[ag]
655- let eS = fraction(eR, 6, 5, CEILING)
656- let eT = fraction(eO, c, eS)
657- let eU = dL(P)
658- if ((eT > eU))
659- then throw((("You can get max " + ax(eU, 8)) + " WLGOLD at the moment"))
660- else if ((eL > eT))
643+ let dQ = cF("", [I, J, K, L, M], k, eN)
644+ let eP = dQ[ad]
645+ let eQ = dQ[af]
646+ let eR = fraction(eQ, 6, 5, CEILING)
647+ let eS = fraction(eN, c, eR)
648+ let eT = dK(O)
649+ if ((eS > eT))
650+ then throw((("You can get max " + aw(eT, 8)) + " WLGOLD at the moment"))
651+ else if ((eK > eS))
661652 then throw("Price changed during operation, please try again")
662653 else {
663- let eV = (eO / 6)
664- $Tuple2([Reissue(R, eT, true), IntegerEntry(bi, (eQ + eT)), IntegerEntry(bf(P), lastBlock.timestamp), IntegerEntry(bg(P), (eU - eT)), ScriptTransfer(addressFromStringValue(value(getString(dH))), eV, k), ScriptTransfer(eP, eT, R)], eM)
654+ let eU = (eN / 6)
655+ $Tuple2([Reissue(Q, eS, true), IntegerEntry(bh, (eP + eS)), IntegerEntry(be(O), lastBlock.timestamp), IntegerEntry(bf(O), (eT - eS)), ScriptTransfer(addressFromStringValue(value(getString(dG))), eU, k), ScriptTransfer(eO, eS, Q)], eL)
665656 }
666657 }
667658 }
668659 }
669660 else throw("Strict value is not equal to itself.")
670661 }
671662
672663
673664
674-@Callable(eE)
675-func buyWlgREADONLY (p,eO) = {
676- let dR = cG("", [J, K, L, M, N], k, eO)
677- let eR = dR[ag]
678- let eS = fraction(eR, 6, 5, CEILING)
679- let eT = fraction(eO, c, eS)
680- let eU = dL(p)
681- let eW = fraction(eU, eS, c)
682- let eV = (eO / 6)
683- $Tuple2(nil, [eT, d, eW, eV])
665+@Callable(eD)
666+func buyWlgREADONLY (o,eN) = {
667+ let dQ = cF("", [I, J, K, L, M], k, eN)
668+ let eQ = dQ[af]
669+ let eR = fraction(eQ, 6, 5, CEILING)
670+ let eS = fraction(eN, c, eR)
671+ let eT = dK(o)
672+ let eV = fraction(eT, eR, c)
673+ let eU = (eN / 6)
674+ $Tuple2(nil, [eS, d, eV, eU])
684675 }
685676
686677
687678
688-@Callable(eE)
689-func sellWlg (eX) = {
690- let eM = dK()
691- if ((eM == eM))
692- then if ((size(eE.payments) != 1))
679+@Callable(eD)
680+func sellWlg (eW) = {
681+ let eL = dJ()
682+ if ((eL == eL))
683+ then if ((size(eD.payments) != 1))
693684 then throw("exactly 1 payment must be attached")
694685 else {
695- let eN = eE.payments[0]
696- let eY = eN.amount
697- let eP = eE.caller
698- let P = toString(eP)
699- let eU = dL(P)
700- if ((eY > eU))
701- then throw((("You can spend max " + ax(eU, 8)) + " WLGOLD at the moment"))
702- else if (if (!(isDefined(eN.assetId)))
686+ let eM = eD.payments[0]
687+ let eX = eM.amount
688+ let eO = eD.caller
689+ let O = toString(eO)
690+ let eT = dK(O)
691+ if ((eX > eT))
692+ then throw((("You can spend max " + aw(eT, 8)) + " WLGOLD at the moment"))
693+ else if (if (!(isDefined(eM.assetId)))
703694 then true
704- else (value(eN.assetId) != R))
695+ else (value(eM.assetId) != Q))
705696 then throw("WLGOLD payments only!")
706697 else {
707- let dR = cG("", [J, K, L, M, N], k, 0)
708- let eQ = dR[ae]
709- let eZ = (dR[ag] / 2)
710- let eO = fraction(eY, eZ, c)
711- if ((d > eO))
712- then throw((("You can trade min " + ax(d, 6)) + " USDT"))
713- else if ((eX > eO))
698+ let dQ = cF("", [I, J, K, L, M], k, 0)
699+ let eP = dQ[ad]
700+ let eY = (dQ[af] / 2)
701+ let eN = fraction(eX, eY, c)
702+ if ((d > eN))
703+ then throw((("You can trade min " + aw(d, 6)) + " USDT"))
704+ else if ((eW > eN))
714705 then throw("Price changed during operation, please try again")
715706 else {
716- let eV = (eO / 5)
717- $Tuple2([Burn(R, eY), IntegerEntry(bi, (eQ - eY)), IntegerEntry(bf(P), lastBlock.timestamp), IntegerEntry(bg(P), (eU - eY)), ScriptTransfer(addressFromStringValue(value(getString(dH))), eV, k), ScriptTransfer(eP, eO, k)], eM)
707+ let eU = (eN / 5)
708+ $Tuple2([Burn(Q, eX), IntegerEntry(bh, (eP - eX)), IntegerEntry(be(O), lastBlock.timestamp), IntegerEntry(bf(O), (eT - eX)), ScriptTransfer(addressFromStringValue(value(getString(dG))), eU, k), ScriptTransfer(eO, eN, k)], eL)
718709 }
719710 }
720711 }
721712 else throw("Strict value is not equal to itself.")
722713 }
723714
724715
725716
726-@Callable(eE)
727-func sellWlgREADONLY (p,eY) = {
728- let eU = dL(p)
729- let dR = cG("", [J, K, L, M, N], k, 0)
730- let eZ = (dR[ag] / 2)
731- let eO = fraction(eY, eZ, c)
732- let fa = fraction(d, c, eZ)
733- let eV = (eO / 5)
734- $Tuple2(nil, [eO, fa, eU, eV])
717+@Callable(eD)
718+func sellWlgREADONLY (o,eX) = {
719+ let eT = dK(o)
720+ let dQ = cF("", [I, J, K, L, M], k, 0)
721+ let eY = (dQ[af] / 2)
722+ let eN = fraction(eX, eY, c)
723+ let eZ = fraction(d, c, eY)
724+ let eU = (eN / 5)
725+ $Tuple2(nil, [eN, eZ, eT, eU])
735726 }
736727
737728
738729
739-@Callable(eE)
730+@Callable(eD)
740731 func claim () = {
741- let eM = dK()
742- if ((eM == eM))
743- then if ((size(eE.payments) != 0))
732+ let eL = dJ()
733+ if ((eL == eL))
734+ then if ((size(eD.payments) != 0))
744735 then throw("No payments required")
745736 else {
746- let fb = dQ(toString(eE.caller))
747- let fc = fb._1
748- let fd = fb._2
749- $Tuple2((fc :+ ScriptTransfer(eE.caller, fd, R)), eM)
737+ let fa = dP(toString(eD.caller))
738+ let fb = fa._1
739+ let fc = fa._2
740+ $Tuple2((fb :+ ScriptTransfer(eD.caller, fc, Q)), eL)
750741 }
751742 else throw("Strict value is not equal to itself.")
752743 }
753744
754745
755746
756-@Callable(eE)
757-func onStakeUnstakeLand (P) = if (if (if ((eE.caller != H))
758- then (eE.caller != I)
747+@Callable(eD)
748+func onStakeUnstakeLand (O) = if (if (if ((eD.caller != G))
749+ then (eD.caller != H)
759750 else false)
760- then (eE.caller != K)
751+ then (eD.caller != J)
761752 else false)
762753 then throw("Permission denied")
763754 else {
764- let fe = dQ(P)
765- let fc = fe._1
766- let fd = fe._2
767- $Tuple2(if ((fd > 0))
768- then (fc :+ ScriptTransfer(addressFromStringValue(P), fd, R))
769- else fc, fd)
755+ let fd = dP(O)
756+ let fb = fd._1
757+ let fc = fd._2
758+ $Tuple2(if ((fc > 0))
759+ then (fb :+ ScriptTransfer(addressFromStringValue(O), fc, Q))
760+ else fb, fc)
770761 }
771762
772763
773764
774-@Callable(eE)
775-func burnWlgold (eY) = if ((eE.caller != K))
765+@Callable(eD)
766+func burnWlgold (eX) = if ((eD.caller != J))
776767 then throw("Permission denied")
777768 else {
778- let dR = cG("", [J, K, L, M, N], k, 0)
779- if ((eY > dR[af]))
780- then throw(((("Only " + ax(dR[af], 8)) + " WLGOLD left on contract, can't burn ") + ax(eY, 8)))
769+ let dQ = cF("", [I, J, K, L, M], k, 0)
770+ if ((eX > dQ[ae]))
771+ then throw(((("Only " + aw(dQ[ae], 8)) + " WLGOLD left on contract, can't burn ") + aw(eX, 8)))
781772 else {
782- let ff = (dR[ae] - eY)
783- $Tuple2([Burn(R, eY), IntegerEntry(bi, ff)], ff)
773+ let fe = (dQ[ad] - eX)
774+ $Tuple2([Burn(Q, eX), IntegerEntry(bh, fe)], fe)
784775 }
785776 }
786777
787778
788779
789-@Callable(eE)
790-func betForTicket (fg) = {
791- let eM = dK()
792- if ((eM == eM))
793- then if ((size(eE.payments) != 0))
780+@Callable(eD)
781+func betForTicket (ff) = {
782+ let eL = dJ()
783+ if ((eL == eL))
784+ then if ((size(eD.payments) != 0))
794785 then throw("No payments required")
795786 else {
796- let P = toString(eE.caller)
797- let ek = ((height / i) - 1)
798- let en = valueOrElse(getInteger(T(P, ek)), 0)
799- let eo = valueOrElse(getInteger(V(ek)), 0)
800- if (if ((en > 0))
801- then (eo > 0)
787+ let O = toString(eD.caller)
788+ let ej = ((height / i) - 1)
789+ let em = valueOrElse(getInteger(S(O, ej)), 0)
790+ let en = valueOrElse(getInteger(U(ej)), 0)
791+ if (if ((em > 0))
792+ then (en > 0)
802793 else false)
803794 then throw("Please open the chest first")
804- else if (((fg / 4) != 0))
795+ else if (((ff / 4) != 0))
805796 then throw("Invalid bet: should be 0..3")
806797 else {
807- let fh = (height % g)
808- if ((fh > (g - 3)))
809- then throw((("Cannot bet: the day is almost ended, please wait " + toString((g - fh))) + " blocks"))
798+ let fg = (height % g)
799+ if ((fg > (g - 3)))
800+ then throw((("Cannot bet: the day is almost ended, please wait " + toString((g - fg))) + " blocks"))
810801 else {
811- let fi = valueOrElse(getInteger(K, bO(P)), 0)
812- if ((bY > fi))
813- then throw((("You need to stake at least " + ax(bY, 8)) + " ACRES to bet"))
802+ let fh = valueOrElse(getInteger(J, bN(O)), 0)
803+ if ((bX > fh))
804+ then throw((("You need to stake at least " + aw(bX, 8)) + " ACRES to bet"))
814805 else {
815- let fj = ((height / g) + 1)
816- let fk = S(P)
817- let fl = getString(fk)
818- let fm = StringEntry(fk, ((toString(fj) + "_") + toString(fg)))
819- if (isDefined(fl))
806+ let fi = ((height / g) + 1)
807+ let fj = R(O)
808+ let fk = getString(fj)
809+ let fl = StringEntry(fj, ((toString(fi) + "_") + toString(ff)))
810+ if (isDefined(fk))
820811 then {
821- let fn = value(fl)
822- if ((split(fn, "_")[0] == toString(fj)))
812+ let fm = value(fk)
813+ if ((split(fm, "_")[0] == toString(fi)))
823814 then throw("You already bet for tomorrow")
824815 else {
825- let fo = ev(P, fn)
826- $Tuple2((fo._1 :+ fm), fo._2)
816+ let fn = eu(O, fm)
817+ $Tuple2((fn._1 :+ fl), fn._2)
827818 }
828819 }
829- else $Tuple2([fm], 0)
820+ else $Tuple2([fl], 0)
830821 }
831822 }
832823 }
833824 }
834825 else throw("Strict value is not equal to itself.")
835826 }
836827
837828
838829
839-@Callable(eE)
840-func takeWlgXp (P) = if ((eE.caller != H))
830+@Callable(eD)
831+func takeWlgXp (O) = if ((eD.caller != G))
841832 then throw("Permission denied")
842833 else {
843- let fp = ed(P, 0)
844- let fc = fp._1
845- let aR = fp._2
846- $Tuple2(fc, aR)
834+ let fo = ec(O, 0)
835+ let fb = fo._1
836+ let aQ = fo._2
837+ $Tuple2(fb, aQ)
847838 }
848839
849840
850841
851-@Callable(eE)
852-func checkWlgXpREADONLY (P) = {
853- let fq = ed(P, 0)
854- let fr = fq._1
855- let fs = fq._2
856- let aU = (valueOrElse(getInteger(H, aN(P)), 0) + fs)
857- let ft = aS(valueOrElse(getInteger(H, aO(P)), 0), aU)
858- $Tuple2(nil, (ft :+ aU))
842+@Callable(eD)
843+func checkWlgXpREADONLY (O) = {
844+ let fp = ec(O, 0)
845+ let fq = fp._1
846+ let fr = fp._2
847+ let aT = (valueOrElse(getInteger(G, aM(O)), 0) + fr)
848+ let fs = aR(valueOrElse(getInteger(G, aN(O)), 0), aT)
849+ $Tuple2(nil, (fs :+ aT))
859850 }
860851
861852
862853
863-@Callable(eE)
864-func setNumPrizes (el) = if ((eE.caller != this))
854+@Callable(eD)
855+func setNumPrizes (ek) = if ((eD.caller != this))
865856 then throw("Permission denied")
866857 else {
867- let U = (height / i)
868- $Tuple2([IntegerEntry(X(U), el)], el)
858+ let T = (height / i)
859+ $Tuple2([IntegerEntry(W(T), ek)], ek)
869860 }
870861
871862
872863
873-@Callable(eE)
874-func openChest () = if (!(n))
875- then throw("Temporarily disabled")
876- else {
877- let eM = dK()
878- if ((eM == eM))
879- then if ((size(eE.payments) != 0))
880- then throw("No payments required")
881- else {
882- let ek = ((height / i) - 1)
883- let P = toString(eE.caller)
884- let en = valueOrElse(getInteger(T(P, ek)), 0)
885- if ((0 >= en))
886- then throw("No gems to open the chest")
887- else ej(P)
888- }
889- else throw("Strict value is not equal to itself.")
890- }
864+@Callable(eD)
865+func openChest () = {
866+ let eL = dJ()
867+ if ((eL == eL))
868+ then if ((size(eD.payments) != 0))
869+ then throw("No payments required")
870+ else {
871+ let ej = ((height / i) - 1)
872+ let O = toString(eD.caller)
873+ let em = valueOrElse(getInteger(S(O, ej)), 0)
874+ if ((0 >= em))
875+ then throw("No gems to open the chest")
876+ else ei(O)
877+ }
878+ else throw("Strict value is not equal to itself.")
879+ }
891880
892881
893882
894-@Callable(eE)
895-func addGemsFor (P,eB) = if ((eE.caller != this))
883+@Callable(eD)
884+func addGemsFor (O,eA) = if ((eD.caller != this))
896885 then throw("Permission denied")
897886 else {
898- let U = (height / i)
899- let ex = T(P, U)
900- let ez = valueOrElse(getInteger(V(U)), 0)
901- let eA = valueOrElse(getInteger(ex), 0)
902- let eC = valueOrElse(getInteger(W(U)), 0)
903- let eD = if (if ((eA == 0))
904- then (eB == 1)
887+ let T = (height / i)
888+ let ew = S(O, T)
889+ let ey = valueOrElse(getInteger(U(T)), 0)
890+ let ez = valueOrElse(getInteger(ew), 0)
891+ let eB = valueOrElse(getInteger(V(T)), 0)
892+ let eC = if (if ((ez == 0))
893+ then (eA == 1)
905894 else false)
906- then [IntegerEntry(W(U), (eC + 1))]
895+ then [IntegerEntry(V(T), (eB + 1))]
907896 else nil
908- $Tuple2(((eD :+ IntegerEntry(ex, (eA + eB))) :+ IntegerEntry(V(U), (ez + eB))), eB)
897+ $Tuple2(((eC :+ IntegerEntry(ew, (ez + eA))) :+ IntegerEntry(U(T), (ey + eA))), eA)
909898 }
910899
911900

github/deemru/w8io/026f985 
336.35 ms