tx · 2aHiTM93eoXBAJnpwC9aJS21Cd9ADmT53cs6neZdKAT7

3NCWFHDzdPHZC6636ZkMLNDup9mjpbTLs7h:  -0.02100000 Waves

2024.09.17 11:07 [3287404] smart account 3NCWFHDzdPHZC6636ZkMLNDup9mjpbTLs7h > SELF 0.00000000 Waves

{ "type": 13, "id": "2aHiTM93eoXBAJnpwC9aJS21Cd9ADmT53cs6neZdKAT7", "fee": 2100000, "feeAssetId": null, "timestamp": 1726560436624, "version": 2, "chainId": 84, "sender": "3NCWFHDzdPHZC6636ZkMLNDup9mjpbTLs7h", "senderPublicKey": "3z8Q6Zu3KppVmn6fJJvrLc1Wo3krVHSvfaNcerm82md2", "proofs": [ "4pecaPdCWvHq1AcbteKCDwcPK9prPtpBcLu8dshKgBbGuK9qLNb6indmWBBgNWk8T2PG8EgrCnZsWcB5bfbhGgsg" ], "script": "base64:BgI/CAISAwoBARIDCgEEEgMKAQgSBAoCCAgSAwoBCBIECgIICBIDCgEIEgQKAggBEgQKAggBEgMKAQESABIDCgEINgAMY29udHJhY3RGaWxlAhFsMm1wX2xlYXNpbmcucmlkZQADU0VQAgJfXwEIdGhyb3dFcnIBA21zZwkAAgEJAKwCAgkArAICBQxjb250cmFjdEZpbGUCAjogBQNtc2cACmtleUFzc2V0SWQJALkJAgkAzAgCAgIlcwkAzAgCAgdhc3NldElkBQNuaWwFA1NFUAAMa2V5Rm9yY2VTdG9wCQC5CQIJAMwIAgICJXMJAMwIAgIJZm9yY2VTdG9wBQNuaWwFA1NFUAARa2V5UGVyaW9kT2Zmc2V0SWQJALkJAgkAzAgCAgIlcwkAzAgCAghvZmZzZXRJZAUDbmlsBQNTRVAAFWtleVBlcmlvZE9mZnNldEhlaWdodAkAuQkCCQDMCAICAiVzCQDMCAICDG9mZnNldEhlaWdodAUDbmlsBQNTRVAAD2tleVBlcmlvZExlbmd0aAkAuQkCCQDMCAICAiVzCQDMCAICDHBlcmlvZExlbmd0aAUDbmlsBQNTRVAADnBlcmlvZE9mZnNldElkCQELdmFsdWVPckVsc2UCCQCaCAIFBHRoaXMFEWtleVBlcmlvZE9mZnNldElkAAAADHBlcmlvZExlbmd0aAkBC3ZhbHVlT3JFbHNlAgkAmggCBQR0aGlzBQ9rZXlQZXJpb2RMZW5ndGgAkE4AEnBlcmlvZE9mZnNldEhlaWdodAkBC3ZhbHVlT3JFbHNlAgkAmggCBQR0aGlzBRVrZXlQZXJpb2RPZmZzZXRIZWlnaHQA////////////AQAPY3VycmVudFBlcmlvZElkAwMJAGYCBQZoZWlnaHQFEnBlcmlvZE9mZnNldEhlaWdodAkBAiE9AgUScGVyaW9kT2Zmc2V0SGVpZ2h0AP///////////wEHCQBkAgkAaQIJAGUCBQZoZWlnaHQFEnBlcmlvZE9mZnNldEhlaWdodAUMcGVyaW9kTGVuZ3RoBQ5wZXJpb2RPZmZzZXRJZAkAlgMBCQDMCAIAAAkAzAgCCQBlAgUOcGVyaW9kT2Zmc2V0SWQAAQUDbmlsABNjdXJyZW50UGVyaW9kSGVpZ2h0AwMJAAACBRJwZXJpb2RPZmZzZXRIZWlnaHQA////////////AQYDCQAAAgUPY3VycmVudFBlcmlvZElkAAAJAGYCBRJwZXJpb2RPZmZzZXRIZWlnaHQFBmhlaWdodAcAAAkAZAIFEnBlcmlvZE9mZnNldEhlaWdodAkAaAIJAGUCBQ9jdXJyZW50UGVyaW9kSWQFDnBlcmlvZE9mZnNldElkBQxwZXJpb2RMZW5ndGgAEG5leHRQZXJpb2RIZWlnaHQDAwkAAAIFEnBlcmlvZE9mZnNldEhlaWdodAD///////////8BBgMJAAACBQ9jdXJyZW50UGVyaW9kSWQAAAkAZgIFEnBlcmlvZE9mZnNldEhlaWdodAUGaGVpZ2h0BwAACQBkAgUTY3VycmVudFBlcmlvZEhlaWdodAUMcGVyaW9kTGVuZ3RoARJrZXlMZWFzaW5nTm9kZURhdGEBC25vZGVBZGRyZXNzCQC5CQIJAMwIAgICJXMJAMwIAgULbm9kZUFkZHJlc3MFA25pbAUDU0VQARZrZXlVc2VyTGVhc2luZ05vZGVEYXRhAgt1c2VyQWRkcmVzcwtub2RlQWRkcmVzcwkAuQkCCQDMCAICBCVzJXMJAMwIAgULbm9kZUFkZHJlc3MJAMwIAgULdXNlckFkZHJlc3MFA25pbAUDU0VQAQ5rZXlVc2VyVG9DbGFpbQELdXNlckFkZHJlc3MJALkJAgkAzAgCAgQlcyVzCQDMCAICB3RvQ2xhaW0JAMwIAgULdXNlckFkZHJlc3MFA25pbAUDU0VQARJrZXlVc2VyVG90YWxMb2NrZWQBC3VzZXJBZGRyZXNzCQC5CQIJAMwIAgIEJXMlcwkAzAgCAg91c2VyVG90YWxMb2NrZWQJAMwIAgULdXNlckFkZHJlc3MFA25pbAUDU0VQARZrZXlOb2RlTGVhc2luZ0J5SGVpZ2h0AQtub2RlQWRkcmVzcwQBaAMJAAACBRJwZXJpb2RPZmZzZXRIZWlnaHQA////////////AQAABQZoZWlnaHQJALkJAgkAzAgCAgQlcyVkCQDMCAIFC25vZGVBZGRyZXNzCQDMCAIJAKQDAQUBaAUDbmlsBQNTRVABFmtleVVzZXJMZWFzaW5nQnlIZWlnaHQCC25vZGVBZGRyZXNzC3VzZXJBZGRyZXNzBAFoAwkAAAIFEnBlcmlvZE9mZnNldEhlaWdodAD///////////8BAAAFBmhlaWdodAkAuQkCCQDMCAICBiVzJXMlZAkAzAgCBQtub2RlQWRkcmVzcwkAzAgCBQt1c2VyQWRkcmVzcwkAzAgCCQCkAwEFAWgFA25pbAUDU0VQAA1hc3NldElkU3RyaW5nCQELdmFsdWVPckVsc2UCCQCdCAIFBHRoaXMFCmtleUFzc2V0SWQCBVdBVkVTAAxhc3NldElkQnl0ZXMDCQAAAgUNYXNzZXRJZFN0cmluZwIFV0FWRVMFBHVuaXQJANkEAQUNYXNzZXRJZFN0cmluZwALaXNGb3JjZVN0b3AJAQt2YWx1ZU9yRWxzZQIJAJsIAgUEdGhpcwUMa2V5Rm9yY2VTdG9wBwEOaXNWYWxpZEFkZHJlc3MBB2FkZHJlc3MEByRtYXRjaDAJAKYIAQUHYWRkcmVzcwMJAAECBQckbWF0Y2gwAgdBZGRyZXNzBAFhBQckbWF0Y2gwBgcAD0FETUlOX0xJU1RfU0laRQAFAAZRVU9SVU0AAwARVFhJRF9CWVRFU19MRU5HVEgAIAEYa2V5QWxsb3dlZFR4SWRWb3RlUHJlZml4AQR0eElkCQC5CQIJAMwIAgIGJXMlcyVzCQDMCAICCWFsbG93VHhJZAkAzAgCBQR0eElkBQNuaWwFA1NFUAEQa2V5RnVsbEFkbWluVm90ZQIGcHJlZml4DGFkbWluQWRkcmVzcwkAuQkCCQDMCAIFBnByZWZpeAkAzAgCBQxhZG1pbkFkZHJlc3MFA25pbAUDU0VQARNrZXlBZG1pbkFkZHJlc3NMaXN0AAkAuQkCCQDMCAICAiVzCQDMCAICEGFkbWluQWRkcmVzc0xpc3QFA25pbAUDU0VQAQ5rZXlBbGxvd2VkVHhJZAAJALkJAgkAzAgCAgIlcwkAzAgCAgR0eElkBQNuaWwFA1NFUAEMZ2V0QWRtaW5Wb3RlAgZwcmVmaXgFYWRtaW4EB3ZvdGVLZXkJARBrZXlGdWxsQWRtaW5Wb3RlAgUGcHJlZml4BQVhZG1pbgkBC3ZhbHVlT3JFbHNlAgkAnwgBBQd2b3RlS2V5AAABDWdldEFkbWluc0xpc3QABAckbWF0Y2gwCQCdCAIFBHRoaXMJARNrZXlBZG1pbkFkZHJlc3NMaXN0AAMJAAECBQckbWF0Y2gwAgZTdHJpbmcEAXMFByRtYXRjaDAJALUJAgUBcwUDU0VQBQNuaWwBDWlzSW5BZG1pbkxpc3QBB2FkZHJlc3MJAQ9jb250YWluc0VsZW1lbnQCCQENZ2V0QWRtaW5zTGlzdAAFB2FkZHJlc3MBEmdlblZvdGVzS2V5c0hlbHBlcgIBYQxhZG1pbkFkZHJlc3MECyR0MDM1NjIzNTg2BQFhBAZyZXN1bHQIBQskdDAzNTYyMzU4NgJfMQQGcHJlZml4CAULJHQwMzU2MjM1ODYCXzIJAJQKAgkAzQgCBQZyZXN1bHQJARBrZXlGdWxsQWRtaW5Wb3RlAgUGcHJlZml4BQxhZG1pbkFkZHJlc3MFBnByZWZpeAEMZ2VuVm90ZXNLZXlzAQlrZXlQcmVmaXgECWFkbWluTGlzdAkBE2tleUFkbWluQWRkcmVzc0xpc3QABAskdDAzNzMzMzgxNwoAAiRsCQENZ2V0QWRtaW5zTGlzdAAKAAIkcwkAkAMBBQIkbAoABSRhY2MwCQCUCgIFA25pbAUJa2V5UHJlZml4CgEFJGYwXzECAiRhAiRpAwkAZwIFAiRpBQIkcwUCJGEJARJnZW5Wb3Rlc0tleXNIZWxwZXICBQIkYQkAkQMCBQIkbAUCJGkKAQUkZjBfMgICJGECJGkDCQBnAgUCJGkFAiRzBQIkYQkAAgECE0xpc3Qgc2l6ZSBleGNlZWRzIDUJAQUkZjBfMgIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIFBSRhY2MwAAAAAQACAAMABAAFBAZyZXN1bHQIBQskdDAzNzMzMzgxNwJfMQQGcHJlZml4CAULJHQwMzczMzM4MTcCXzIFBnJlc3VsdAEQY291bnRWb3Rlc0hlbHBlcgIGcmVzdWx0B3ZvdGVLZXkJAGQCBQZyZXN1bHQJAQt2YWx1ZU9yRWxzZQIJAJ8IAQUHdm90ZUtleQAAAQpjb3VudFZvdGVzAQZwcmVmaXgEBXZvdGVzCQEMZ2VuVm90ZXNLZXlzAQUGcHJlZml4CgACJGwFBXZvdGVzCgACJHMJAJADAQUCJGwKAAUkYWNjMAAACgEFJGYwXzECAiRhAiRpAwkAZwIFAiRpBQIkcwUCJGEJARBjb3VudFZvdGVzSGVscGVyAgUCJGEJAJEDAgUCJGwFAiRpCgEFJGYwXzICAiRhAiRpAwkAZwIFAiRpBQIkcwUCJGEJAAIBAhNMaXN0IHNpemUgZXhjZWVkcyA1CQEFJGYwXzICCQEFJGYwXzECCQEFJGYwXzECCQEFJGYwXzECCQEFJGYwXzECCQEFJGYwXzECBQUkYWNjMAAAAAEAAgADAAQABQEQY2xlYXJWb3Rlc0hlbHBlcgIGcmVzdWx0A2tleQkAzQgCBQZyZXN1bHQJAQtEZWxldGVFbnRyeQEFA2tleQETZ2V0Q2xlYXJWb3RlRW50cmllcwEGcHJlZml4BAV2b3RlcwkBDGdlblZvdGVzS2V5cwEFBnByZWZpeAoAAiRsBQV2b3RlcwoAAiRzCQCQAwEFAiRsCgAFJGFjYzAFA25pbAoBBSRmMF8xAgIkYQIkaQMJAGcCBQIkaQUCJHMFAiRhCQEQY2xlYXJWb3Rlc0hlbHBlcgIFAiRhCQCRAwIFAiRsBQIkaQoBBSRmMF8yAgIkYQIkaQMJAGcCBQIkaQUCJHMFAiRhCQACAQITTGlzdCBzaXplIGV4Y2VlZHMgNQkBBSRmMF8yAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgUFJGFjYzAAAAABAAIAAwAEAAUBDHZvdGVJTlRFUk5BTAQTY2FsbGVyQWRkcmVzc1N0cmluZwlrZXlQcmVmaXgIbWluVm90ZXMKdm90ZVJlc3VsdAQHdm90ZUtleQkBEGtleUZ1bGxBZG1pblZvdGUCBQlrZXlQcmVmaXgFE2NhbGxlckFkZHJlc3NTdHJpbmcEEGFkbWluQ3VycmVudFZvdGUJAQxnZXRBZG1pblZvdGUCBQlrZXlQcmVmaXgFE2NhbGxlckFkZHJlc3NTdHJpbmcEA2VycgMJAQEhAQkBDWlzSW5BZG1pbkxpc3QBBRNjYWxsZXJBZGRyZXNzU3RyaW5nCQEIdGhyb3dFcnIBCQCsAgIJAKwCAgIJQWRkcmVzczogBRNjYWxsZXJBZGRyZXNzU3RyaW5nAhIgbm90IGluIEFkbWluIGxpc3QDCQAAAgUQYWRtaW5DdXJyZW50Vm90ZQABCQEIdGhyb3dFcnIBCQCsAgIFB3ZvdGVLZXkCEiB5b3UgYWxyZWFkeSB2b3RlZAUEdW5pdAMJAAACBQNlcnIFA2VycgQFdm90ZXMJAQpjb3VudFZvdGVzAQUJa2V5UHJlZml4AwkAZwIJAGQCBQV2b3RlcwABBQhtaW5Wb3RlcwQQY2xlYXJWb3RlRW50cmllcwkBE2dldENsZWFyVm90ZUVudHJpZXMBBQlrZXlQcmVmaXgJAM4IAgUQY2xlYXJWb3RlRW50cmllcwUKdm90ZVJlc3VsdAkAzAgCCQEMSW50ZWdlckVudHJ5AgUHdm90ZUtleQABBQNuaWwJAAIBAiRTdHJpY3QgdmFsdWUgaXMgbm90IGVxdWFsIHRvIGl0c2VsZi4BE2dldExlYXNpbmdOb2RlRW50cnkDC25vZGVBZGRyZXNzDWN1cnJlbnRMZWFzZWQKbmV4dExlYXNlZAQLdmFsdWVTdHJpbmcJALkJAgkAzAgCAgglZCVkJWQlZAkAzAgCCQCkAwEFE2N1cnJlbnRQZXJpb2RIZWlnaHQJAMwIAgkApAMBBQ1jdXJyZW50TGVhc2VkCQDMCAIJAKQDAQUQbmV4dFBlcmlvZEhlaWdodAkAzAgCCQCkAwEFCm5leHRMZWFzZWQFA25pbAUDU0VQCQELU3RyaW5nRW50cnkCCQESa2V5TGVhc2luZ05vZGVEYXRhAQULbm9kZUFkZHJlc3MFC3ZhbHVlU3RyaW5nARJnZXRMZWFzaW5nTm9kZURhdGEBC25vZGVBZGRyZXNzBBhsZWFzaW5nTm9kZURhdGFTdHJpbmdSYXcJAJ0IAgUEdGhpcwkBEmtleUxlYXNpbmdOb2RlRGF0YQEFC25vZGVBZGRyZXNzBAckbWF0Y2gwBRhsZWFzaW5nTm9kZURhdGFTdHJpbmdSYXcDCQABAgUHJG1hdGNoMAIGU3RyaW5nBAJkcwUHJG1hdGNoMAQIZGF0YUxpc3QJALUJAgUCZHMFA1NFUAQRbm9kZUN1cnJlbnRQZXJpb2QJAQ1wYXJzZUludFZhbHVlAQkAkQMCBQhkYXRhTGlzdAABBBFub2RlQ3VycmVudExlYXNlZAkBDXBhcnNlSW50VmFsdWUBCQCRAwIFCGRhdGFMaXN0AAIEDm5vZGVOZXh0UGVyaW9kCQENcGFyc2VJbnRWYWx1ZQEJAJEDAgUIZGF0YUxpc3QAAwQObm9kZU5leHRMZWFzZWQJAQ1wYXJzZUludFZhbHVlAQkAkQMCBQhkYXRhTGlzdAAEAwMJAGYCBQ5ub2RlTmV4dFBlcmlvZAUGaGVpZ2h0BgkAAAIFEnBlcmlvZE9mZnNldEhlaWdodAD///////////8BCQCUCgIFEW5vZGVDdXJyZW50TGVhc2VkBQ5ub2RlTmV4dExlYXNlZAkAlAoCBQ5ub2RlTmV4dExlYXNlZAUObm9kZU5leHRMZWFzZWQJAJQKAgAAAAABE2dldFVzZXJMZWFzaW5nRW50cnkEC25vZGVBZGRyZXNzC3VzZXJBZGRyZXNzEXVzZXJDdXJyZW50TGVhc2VkDnVzZXJOZXh0TGVhc2VkBAt2YWx1ZVN0cmluZwkAuQkCCQDMCAICCCVkJWQlZCVkCQDMCAIJAKQDAQUTY3VycmVudFBlcmlvZEhlaWdodAkAzAgCCQCkAwEFEXVzZXJDdXJyZW50TGVhc2VkCQDMCAIJAKQDAQUQbmV4dFBlcmlvZEhlaWdodAkAzAgCCQCkAwEFDnVzZXJOZXh0TGVhc2VkBQNuaWwFA1NFUAkBC1N0cmluZ0VudHJ5AgkBFmtleVVzZXJMZWFzaW5nTm9kZURhdGECBQt1c2VyQWRkcmVzcwULbm9kZUFkZHJlc3MFC3ZhbHVlU3RyaW5nARJnZXRVc2VyTGVhc2luZ0RhdGECC25vZGVBZGRyZXNzC3VzZXJBZGRyZXNzBBhsZWFzaW5nVXNlckRhdGFTdHJpbmdSYXcJAJ0IAgUEdGhpcwkBFmtleVVzZXJMZWFzaW5nTm9kZURhdGECBQt1c2VyQWRkcmVzcwULbm9kZUFkZHJlc3MEByRtYXRjaDAFGGxlYXNpbmdVc2VyRGF0YVN0cmluZ1JhdwMJAAECBQckbWF0Y2gwAgZTdHJpbmcEAmRzBQckbWF0Y2gwBAhkYXRhTGlzdAkAtQkCBQJkcwUDU0VQBBF1c2VyQ3VycmVudFBlcmlvZAkBDXBhcnNlSW50VmFsdWUBCQCRAwIFCGRhdGFMaXN0AAEEEXVzZXJDdXJyZW50TGVhc2VkCQENcGFyc2VJbnRWYWx1ZQEJAJEDAgUIZGF0YUxpc3QAAgQOdXNlck5leHRQZXJpb2QJAQ1wYXJzZUludFZhbHVlAQkAkQMCBQhkYXRhTGlzdAADBA51c2VyTmV4dExlYXNlZAkBDXBhcnNlSW50VmFsdWUBCQCRAwIFCGRhdGFMaXN0AAQDAwkAZgIFDnVzZXJOZXh0UGVyaW9kBQZoZWlnaHQGCQAAAgUScGVyaW9kT2Zmc2V0SGVpZ2h0AP///////////wEJAJQKAgURdXNlckN1cnJlbnRMZWFzZWQFDnVzZXJOZXh0TGVhc2VkCQCUCgIFDnVzZXJOZXh0TGVhc2VkBQ51c2VyTmV4dExlYXNlZAkAlAoCAAAAAAETZ2V0VXNlclRvQ2xhaW1FbnRyeQMLdXNlckFkZHJlc3MHdG9DbGFpbQh0b1VubG9jawQLdmFsdWVTdHJpbmcJALkJAgkAzAgCAgglZCVkJWQlZAkAzAgCCQCkAwEFE2N1cnJlbnRQZXJpb2RIZWlnaHQJAMwIAgkApAMBBQd0b0NsYWltCQDMCAIJAKQDAQUQbmV4dFBlcmlvZEhlaWdodAkAzAgCCQCkAwEFCHRvVW5sb2NrBQNuaWwFA1NFUAkBC1N0cmluZ0VudHJ5AgkBDmtleVVzZXJUb0NsYWltAQULdXNlckFkZHJlc3MFC3ZhbHVlU3RyaW5nARVnZXRVc2VyVG9DbGFpbUJhbGFuY2UBC3VzZXJBZGRyZXNzBBh1c2VyVG9DbGFpbURhdGFTdHJpbmdSYXcJAJ0IAgUEdGhpcwkBDmtleVVzZXJUb0NsYWltAQULdXNlckFkZHJlc3MEByRtYXRjaDAFGHVzZXJUb0NsYWltRGF0YVN0cmluZ1JhdwMJAAECBQckbWF0Y2gwAgZTdHJpbmcEAmRzBQckbWF0Y2gwBAhkYXRhTGlzdAkAtQkCBQJkcwUDU0VQBA1jdXJyZW50UGVyaW9kCQENcGFyc2VJbnRWYWx1ZQEJAJEDAgUIZGF0YUxpc3QAAQQHdG9DbGFpbQkBDXBhcnNlSW50VmFsdWUBCQCRAwIFCGRhdGFMaXN0AAIECm5leHRQZXJpb2QJAQ1wYXJzZUludFZhbHVlAQkAkQMCBQhkYXRhTGlzdAADBAh0b1VubG9jawkBDXBhcnNlSW50VmFsdWUBCQCRAwIFCGRhdGFMaXN0AAQDAwkAZgIFCm5leHRQZXJpb2QFBmhlaWdodAYJAAACBQ9jdXJyZW50UGVyaW9kSWQAAAkAlAoCBQd0b0NsYWltBQh0b1VubG9jawkAlAoCCQBkAgUHdG9DbGFpbQUIdG9VbmxvY2sAAAkAlAoCAAAAAAEXZ2V0VXNlclRvdGFsTG9ja2VkRW50cnkCC3VzZXJBZGRyZXNzD3VzZXJUb3RhbExvY2tlZAkBDEludGVnZXJFbnRyeQIJARJrZXlVc2VyVG90YWxMb2NrZWQBBQt1c2VyQWRkcmVzcwUPdXNlclRvdGFsTG9ja2VkARJnZXRVc2VyVG90YWxMb2NrZWQBC3VzZXJBZGRyZXNzCQELdmFsdWVPckVsc2UCCQCaCAIFBHRoaXMJARJrZXlVc2VyVG90YWxMb2NrZWQBBQt1c2VyQWRkcmVzcwAAARFnZXRVbnN0YWtlQWN0aW9ucwMLbm9kZUFkZHJlc3MLdXNlckFkZHJlc3MNdW5zdGFrZUFtb3VudAQLJHQwODg1Nzg5MzAJARJnZXRMZWFzaW5nTm9kZURhdGEBBQtub2RlQWRkcmVzcwQRbm9kZUN1cnJlbnRMZWFzZWQIBQskdDA4ODU3ODkzMAJfMQQObm9kZU5leHRMZWFzZWQIBQskdDA4ODU3ODkzMAJfMgQLJHQwODkzNTkwMjEJARJnZXRVc2VyTGVhc2luZ0RhdGECBQtub2RlQWRkcmVzcwULdXNlckFkZHJlc3MEEXVzZXJDdXJyZW50TGVhc2VkCAULJHQwODkzNTkwMjECXzEEDnVzZXJOZXh0TGVhc2VkCAULJHQwODkzNTkwMjECXzIEBmNoZWNrcwkAzAgCAwkBASEBBQtpc0ZvcmNlU3RvcAYJAQh0aHJvd0VycgECHWNvbnRyYWN0IGlzIHRlbXBvcmFyeSBzdG9wcGVkCQDMCAIDCQBmAgUNdW5zdGFrZUFtb3VudAAABgkBCHRocm93RXJyAQIndW5zdGFrZSBhbW91bnQgc2hvdWxkIGJlIGdyZWF0ZXIgdGhhbiAwCQDMCAIDCQBnAgUOdXNlck5leHRMZWFzZWQFDXVuc3Rha2VBbW91bnQGCQEIdGhyb3dFcnIBAjl1bnN0YWtlIGFtb3VudCBzaG91bGQgYmUgbGVzcyBvciBlcXVhbCB1c2VyIHN0YWtlZCBhbW91bnQJAMwIAgMJAGcCBQ5ub2RlTmV4dExlYXNlZAUNdW5zdGFrZUFtb3VudAYJAQh0aHJvd0VycgECOXVuc3Rha2UgYW1vdW50IHNob3VsZCBiZSBsZXNzIG9yIGVxdWFsIG5vZGUgc3Rha2VkIGFtb3VudAkAzAgCAwkBDmlzVmFsaWRBZGRyZXNzAQULbm9kZUFkZHJlc3MGCQEIdGhyb3dFcnIBCQC5CQIJAMwIAgIabm9kZSBhZGRyZXNzIGlzIG5vdCB2YWxpZDoJAMwIAgULbm9kZUFkZHJlc3MFA25pbAIBIAkAzAgCAwkBDmlzVmFsaWRBZGRyZXNzAQULdXNlckFkZHJlc3MGCQEIdGhyb3dFcnIBCQC5CQIJAMwIAgIadXNlciBhZGRyZXNzIGlzIG5vdCB2YWxpZDoJAMwIAgULdXNlckFkZHJlc3MFA25pbAIBIAUDbmlsAwkAAAIFBmNoZWNrcwUGY2hlY2tzBBBuZXdOb2RlTmV4dExlYXNlCQBlAgUObm9kZU5leHRMZWFzZWQFDXVuc3Rha2VBbW91bnQEEW5ld1VzZXJOZXh0TGVhc2VkCQBlAgUOdXNlck5leHRMZWFzZWQFDXVuc3Rha2VBbW91bnQECyR0MDk4MzQ5ODk0CQEVZ2V0VXNlclRvQ2xhaW1CYWxhbmNlAQULdXNlckFkZHJlc3MEB3RvQ2xhaW0IBQskdDA5ODM0OTg5NAJfMQQIdG9VbmxvY2sIBQskdDA5ODM0OTg5NAJfMgQLbmV3VG9VbmxvY2sJAGQCBQh0b1VubG9jawUNdW5zdGFrZUFtb3VudAQPdXNlclRvdGFsTG9ja2VkCQESZ2V0VXNlclRvdGFsTG9ja2VkAQULdXNlckFkZHJlc3MEEm5ld1VzZXJUb3RhbExvY2tlZAkAZQIFD3VzZXJUb3RhbExvY2tlZAUNdW5zdGFrZUFtb3VudAkAzAgCCQETZ2V0TGVhc2luZ05vZGVFbnRyeQMFC25vZGVBZGRyZXNzBRFub2RlQ3VycmVudExlYXNlZAUQbmV3Tm9kZU5leHRMZWFzZQkAzAgCCQETZ2V0VXNlckxlYXNpbmdFbnRyeQQFC25vZGVBZGRyZXNzBQt1c2VyQWRkcmVzcwURdXNlckN1cnJlbnRMZWFzZWQFEW5ld1VzZXJOZXh0TGVhc2VkCQDMCAIJARNnZXRVc2VyVG9DbGFpbUVudHJ5AwULdXNlckFkZHJlc3MFB3RvQ2xhaW0FC25ld1RvVW5sb2NrCQDMCAIJARdnZXRVc2VyVG90YWxMb2NrZWRFbnRyeQIFC3VzZXJBZGRyZXNzBRJuZXdVc2VyVG90YWxMb2NrZWQJAMwIAgkBDEludGVnZXJFbnRyeQIJARZrZXlOb2RlTGVhc2luZ0J5SGVpZ2h0AQULbm9kZUFkZHJlc3MFEG5ld05vZGVOZXh0TGVhc2UJAMwIAgkBDEludGVnZXJFbnRyeQIJARZrZXlVc2VyTGVhc2luZ0J5SGVpZ2h0AgULbm9kZUFkZHJlc3MFC3VzZXJBZGRyZXNzBRFuZXdVc2VyTmV4dExlYXNlZAUDbmlsCQACAQIkU3RyaWN0IHZhbHVlIGlzIG5vdCBlcXVhbCB0byBpdHNlbGYuARdnZXRDbGFpbVVubG9ja2VkQWN0aW9ucwILdXNlckFkZHJlc3MLY2xhaW1BbW91bnQEDSR0MDEwNjIzMTA2ODMJARVnZXRVc2VyVG9DbGFpbUJhbGFuY2UBBQt1c2VyQWRkcmVzcwQHdG9DbGFpbQgFDSR0MDEwNjIzMTA2ODMCXzEECHRvVW5sb2NrCAUNJHQwMTA2MjMxMDY4MwJfMgQGY2hlY2tzCQDMCAIDCQEBIQEFC2lzRm9yY2VTdG9wBgkBCHRocm93RXJyAQIdY29udHJhY3QgaXMgdGVtcG9yYXJ5IHN0b3BwZWQJAMwIAgMJAGYCBQtjbGFpbUFtb3VudAAABgkBCHRocm93RXJyAQIlY2xhaW0gYW1vdW50IHNob3VsZCBiZSBncmVhdGVyIHRoYW4gMAkAzAgCAwkAZwIFB3RvQ2xhaW0FC2NsYWltQW1vdW50BgkBCHRocm93RXJyAQI0Y2xhaW0gYW1vdW50IHNob3VsZCBiZSBsZXNzIG9yIGVxdWFsIHVubG9ja2VkIGFtb3VudAkAzAgCAwkBDmlzVmFsaWRBZGRyZXNzAQULdXNlckFkZHJlc3MGCQEIdGhyb3dFcnIBCQC5CQIJAMwIAgIadXNlciBhZGRyZXNzIGlzIG5vdCB2YWxpZDoJAMwIAgULdXNlckFkZHJlc3MFA25pbAIBIAUDbmlsAwkAAAIFBmNoZWNrcwUGY2hlY2tzBApuZXdUb0NsYWltCQBlAgUHdG9DbGFpbQULY2xhaW1BbW91bnQJAMwIAgkBE2dldFVzZXJUb0NsYWltRW50cnkDBQt1c2VyQWRkcmVzcwUKbmV3VG9DbGFpbQUIdG9VbmxvY2sJAMwIAgkBDlNjcmlwdFRyYW5zZmVyAwkBEUBleHRyTmF0aXZlKDEwNjIpAQULdXNlckFkZHJlc3MFC2NsYWltQW1vdW50BQxhc3NldElkQnl0ZXMFA25pbAkAAgECJFN0cmljdCB2YWx1ZSBpcyBub3QgZXF1YWwgdG8gaXRzZWxmLgEPZ2V0U3Rha2VBY3Rpb25zBAtub2RlQWRkcmVzcwt1c2VyQWRkcmVzcxF1c2VyTGVhc2luZ0Ftb3VudAFpBA0kdDAxMTQ0NDExNTA0CQEVZ2V0VXNlclRvQ2xhaW1CYWxhbmNlAQULdXNlckFkZHJlc3MEB3RvQ2xhaW0IBQ0kdDAxMTQ0NDExNTA0Al8xBAh0b1VubG9jawgFDSR0MDExNDQ0MTE1MDQCXzIEDXBheW1lbnRBbW91bnQDCQAAAgkAkAMBCAUBaQhwYXltZW50cwAAAAAICQCRAwIIBQFpCHBheW1lbnRzAAAGYW1vdW50BAlhdmFpbGFibGUJAGQCCQBkAgUIdG9VbmxvY2sFB3RvQ2xhaW0FDXBheW1lbnRBbW91bnQEBmNoZWNrcwkAzAgCAwkBASEBBQtpc0ZvcmNlU3RvcAYJAQh0aHJvd0VycgECHWNvbnRyYWN0IGlzIHRlbXBvcmFyeSBzdG9wcGVkCQDMCAIDCQBnAgABCQCQAwEIBQFpCHBheW1lbnRzBgkBCHRocm93RXJyAQIRbWF4aW11bSAxIHBheW1lbnQJAMwIAgMDCQAAAgkAkAMBCAUBaQhwYXltZW50cwAABgkAAAIICQCRAwIIBQFpCHBheW1lbnRzAAAHYXNzZXRJZAUMYXNzZXRJZEJ5dGVzBgkBCHRocm93RXJyAQkAuQkCCQDMCAICGnBheW1lbnQgYXNzZXRJZCBzaG91bGQgYmU6CQDMCAIFDWFzc2V0SWRTdHJpbmcFA25pbAIBIAkAzAgCAwkAZgIFEXVzZXJMZWFzaW5nQW1vdW50AAAGCQEIdGhyb3dFcnIBAh9hbW91bnQgc2hvdWxkIGJlIGdyZWF0ZXIgdGhhbiAwCQDMCAIDCQBnAgUJYXZhaWxhYmxlBRF1c2VyTGVhc2luZ0Ftb3VudAYJAQh0aHJvd0VycgECO2Ftb3VudCBzaG91bGQgYmUgbGVzcyBvciBlcXVhbCAocGF5bWVudCArIGF2YWlsYWJsZSkgYW1vdW50CQDMCAIDCQBnAgURdXNlckxlYXNpbmdBbW91bnQFDXBheW1lbnRBbW91bnQGCQACAQIwYW1vdW50IHNob3VsZCBiZSBncmVhdGVyIG9yIGVxdWFsIHBheW1lbnQgYW1vdW50CQDMCAIDCQEOaXNWYWxpZEFkZHJlc3MBBQtub2RlQWRkcmVzcwYJAQh0aHJvd0VycgEJALkJAgkAzAgCAhpub2RlIGFkZHJlc3MgaXMgbm90IHZhbGlkOgkAzAgCBQtub2RlQWRkcmVzcwUDbmlsAgEgCQDMCAIDCQEOaXNWYWxpZEFkZHJlc3MBBQt1c2VyQWRkcmVzcwYJAQh0aHJvd0VycgEJALkJAgkAzAgCAhp1c2VyIGFkZHJlc3MgaXMgbm90IHZhbGlkOgkAzAgCBQt1c2VyQWRkcmVzcwUDbmlsAgEgBQNuaWwDCQAAAgUGY2hlY2tzBQZjaGVja3MEDSR0MDEyNTc1MTI2NDgJARJnZXRMZWFzaW5nTm9kZURhdGEBBQtub2RlQWRkcmVzcwQRbm9kZUN1cnJlbnRMZWFzZWQIBQ0kdDAxMjU3NTEyNjQ4Al8xBA5ub2RlTmV4dExlYXNlZAgFDSR0MDEyNTc1MTI2NDgCXzIEEG5ld05vZGVOZXh0TGVhc2UJAGQCBQ5ub2RlTmV4dExlYXNlZAURdXNlckxlYXNpbmdBbW91bnQEDSR0MDEyNzE2MTI4MDIJARJnZXRVc2VyTGVhc2luZ0RhdGECBQtub2RlQWRkcmVzcwULdXNlckFkZHJlc3MEEXVzZXJDdXJyZW50TGVhc2VkCAUNJHQwMTI3MTYxMjgwMgJfMQQOdXNlck5leHRMZWFzZWQIBQ0kdDAxMjcxNjEyODAyAl8yBBFuZXdVc2VyTmV4dExlYXNlZAkAZAIFDnVzZXJOZXh0TGVhc2VkBRF1c2VyTGVhc2luZ0Ftb3VudAQSZnJvbVVubG9ja2VkQW1vdW50CQBlAgURdXNlckxlYXNpbmdBbW91bnQFDXBheW1lbnRBbW91bnQEC25ld1RvVW5sb2NrCQCWAwEJAMwIAgAACQDMCAIJAGUCBQh0b1VubG9jawUSZnJvbVVubG9ja2VkQW1vdW50BQNuaWwECm5ld1RvQ2xhaW0JAJcDAQkAzAgCBQd0b0NsYWltCQDMCAIJAGQCBQd0b0NsYWltCQBlAgUIdG9VbmxvY2sFEmZyb21VbmxvY2tlZEFtb3VudAUDbmlsBA91c2VyVG90YWxMb2NrZWQJARJnZXRVc2VyVG90YWxMb2NrZWQBBQt1c2VyQWRkcmVzcwQSbmV3VXNlclRvdGFsTG9ja2VkCQBkAgUPdXNlclRvdGFsTG9ja2VkBRF1c2VyTGVhc2luZ0Ftb3VudAkAzAgCCQETZ2V0TGVhc2luZ05vZGVFbnRyeQMFC25vZGVBZGRyZXNzBRFub2RlQ3VycmVudExlYXNlZAUQbmV3Tm9kZU5leHRMZWFzZQkAzAgCCQETZ2V0VXNlckxlYXNpbmdFbnRyeQQFC25vZGVBZGRyZXNzBQt1c2VyQWRkcmVzcwURdXNlckN1cnJlbnRMZWFzZWQFEW5ld1VzZXJOZXh0TGVhc2VkCQDMCAIJARNnZXRVc2VyVG9DbGFpbUVudHJ5AwULdXNlckFkZHJlc3MFCm5ld1RvQ2xhaW0FC25ld1RvVW5sb2NrCQDMCAIJARdnZXRVc2VyVG90YWxMb2NrZWRFbnRyeQIFC3VzZXJBZGRyZXNzBRJuZXdVc2VyVG90YWxMb2NrZWQJAMwIAgkBDEludGVnZXJFbnRyeQIJARZrZXlOb2RlTGVhc2luZ0J5SGVpZ2h0AQULbm9kZUFkZHJlc3MFEG5ld05vZGVOZXh0TGVhc2UJAMwIAgkBDEludGVnZXJFbnRyeQIJARZrZXlVc2VyTGVhc2luZ0J5SGVpZ2h0AgULbm9kZUFkZHJlc3MFC3VzZXJBZGRyZXNzBRFuZXdVc2VyTmV4dExlYXNlZAUDbmlsCQACAQIkU3RyaWN0IHZhbHVlIGlzIG5vdCBlcXVhbCB0byBpdHNlbGYuARpnZXRTdGFrZUZyb21QYXltZW50QWN0aW9ucwMLbm9kZUFkZHJlc3MLdXNlckFkZHJlc3MBaQQGY2hlY2tzCQDMCAIDCQAAAgkAkAMBCAUBaQhwYXltZW50cwABBgkBCHRocm93RXJyAQIgcGF5bWVudCBzaXplIHNob3VsZCBiZSBleGFjdGx5IDEFA25pbAMJAAACBQZjaGVja3MFBmNoZWNrcwkBD2dldFN0YWtlQWN0aW9ucwQFC25vZGVBZGRyZXNzBQt1c2VyQWRkcmVzcwgJAJEDAggFAWkIcGF5bWVudHMAAAZhbW91bnQFAWkJAAIBAiRTdHJpY3QgdmFsdWUgaXMgbm90IGVxdWFsIHRvIGl0c2VsZi4BHGdldFNldE5ld1BlcmlvZExlbmd0aEFjdGlvbnMBD25ld1BlcmlvZExlbmd0aAQFY2hlY2sJAMwIAgMJAGYCBQ9uZXdQZXJpb2RMZW5ndGgAAAYJAQh0aHJvd0VycgECJnBlcmlvZCBsZW5ndGggc2hvdWxkIGJlIGdyZWF0ZXIgdGhhbiAwBQNuaWwDCQAAAgUFY2hlY2sFBWNoZWNrAwkAAAIFEnBlcmlvZE9mZnNldEhlaWdodAD///////////8BCQDMCAIJAQxJbnRlZ2VyRW50cnkCBQ9rZXlQZXJpb2RMZW5ndGgFD25ld1BlcmlvZExlbmd0aAkAzAgCCQEMSW50ZWdlckVudHJ5AgUVa2V5UGVyaW9kT2Zmc2V0SGVpZ2h0BQZoZWlnaHQFA25pbAkAzAgCCQEMSW50ZWdlckVudHJ5AgURa2V5UGVyaW9kT2Zmc2V0SWQJAGQCBQ9jdXJyZW50UGVyaW9kSWQAAQkAzAgCCQEMSW50ZWdlckVudHJ5AgUVa2V5UGVyaW9kT2Zmc2V0SGVpZ2h0BRBuZXh0UGVyaW9kSGVpZ2h0CQDMCAIJAQxJbnRlZ2VyRW50cnkCBQ9rZXlQZXJpb2RMZW5ndGgFD25ld1BlcmlvZExlbmd0aAUDbmlsCQACAQIkU3RyaWN0IHZhbHVlIGlzIG5vdCBlcXVhbCB0byBpdHNlbGYuDAFpARJzZXROZXdQZXJpb2RMZW5ndGgBD25ld1BlcmlvZExlbmd0aAQGY2hlY2tzCQDMCAIDCQENaXNJbkFkbWluTGlzdAEJAKUIAQgFAWkGY2FsbGVyBgkBCHRocm93RXJyAQIaY2FsbGVyIGlzIG5vdCBpbiBhZG1pbkxpc3QFA25pbAMJAAACBQZjaGVja3MFBmNoZWNrcwkBHGdldFNldE5ld1BlcmlvZExlbmd0aEFjdGlvbnMBBQ9uZXdQZXJpb2RMZW5ndGgJAAIBAiRTdHJpY3QgdmFsdWUgaXMgbm90IGVxdWFsIHRvIGl0c2VsZi4BaQEQc2V0Rm9yY2VTdG9wRmxhZwEEc3RvcAQFY2hlY2sJAMwIAgMJAQ1pc0luQWRtaW5MaXN0AQkApQgBCAUBaQZjYWxsZXIGCQEIdGhyb3dFcnIBAhpjYWxsZXIgaXMgbm90IGluIGFkbWluTGlzdAUDbmlsAwkAAAIFBWNoZWNrBQVjaGVjawkAzAgCCQEMQm9vbGVhbkVudHJ5AgUMa2V5Rm9yY2VTdG9wBQRzdG9wBQNuaWwJAAIBAiRTdHJpY3QgdmFsdWUgaXMgbm90IGVxdWFsIHRvIGl0c2VsZi4BaQETZ2V0Tm9kZURhdGFSRUFET05MWQELbm9kZUFkZHJlc3MEDSR0MDE1MjQ1MTUzMDkJARJnZXRMZWFzaW5nTm9kZURhdGEBBQtub2RlQWRkcmVzcwQMY3VycmVudExlYXNlCAUNJHQwMTUyNDUxNTMwOQJfMQQKbmV4dExlYXNlZAgFDSR0MDE1MjQ1MTUzMDkCXzIJAJQKAgUDbmlsCQCXCgUFE2N1cnJlbnRQZXJpb2RIZWlnaHQFDGN1cnJlbnRMZWFzZQUQbmV4dFBlcmlvZEhlaWdodAUKbmV4dExlYXNlZAUGaGVpZ2h0AWkBGmdldFVzZXJMZWFzaW5nRGF0YVJFQURPTkxZAgtub2RlQWRkcmVzcwt1c2VyQWRkcmVzcwQNJHQwMTU2NzkxNTc1NgkBEmdldFVzZXJMZWFzaW5nRGF0YQIFC25vZGVBZGRyZXNzBQt1c2VyQWRkcmVzcwQMY3VycmVudExlYXNlCAUNJHQwMTU2NzkxNTc1NgJfMQQKbmV4dExlYXNlZAgFDSR0MDE1Njc5MTU3NTYCXzIJAJQKAgUDbmlsCQCXCgUFE2N1cnJlbnRQZXJpb2RIZWlnaHQFDGN1cnJlbnRMZWFzZQUQbmV4dFBlcmlvZEhlaWdodAUKbmV4dExlYXNlZAUGaGVpZ2h0AWkBE2dldFVzZXJEYXRhUkVBRE9OTFkBC3VzZXJBZGRyZXNzBA0kdDAxNjExOTE2MTc5CQEVZ2V0VXNlclRvQ2xhaW1CYWxhbmNlAQULdXNlckFkZHJlc3MEB3RvQ2xhaW0IBQ0kdDAxNjExOTE2MTc5Al8xBAh0b1VubG9jawgFDSR0MDE2MTE5MTYxNzkCXzIED3VzZXJUb3RhbExvY2tlZAkBEmdldFVzZXJUb3RhbExvY2tlZAEFC3VzZXJBZGRyZXNzCQCUCgIFA25pbAkAmAoGBRNjdXJyZW50UGVyaW9kSGVpZ2h0BQd0b0NsYWltBRBuZXh0UGVyaW9kSGVpZ2h0BQh0b1VubG9jawUPdXNlclRvdGFsTG9ja2VkBQZoZWlnaHQBaQEObGVhc2VCeUFkZHJlc3MCC25vZGVBZGRyZXNzC3VzZXJBZGRyZXNzCQEaZ2V0U3Rha2VGcm9tUGF5bWVudEFjdGlvbnMDBQtub2RlQWRkcmVzcwULdXNlckFkZHJlc3MFAWkBaQEFbGVhc2UBC25vZGVBZGRyZXNzBAt1c2VyQWRkcmVzcwkApQgBCAUBaQZjYWxsZXIJARpnZXRTdGFrZUZyb21QYXltZW50QWN0aW9ucwMFC25vZGVBZGRyZXNzBQt1c2VyQWRkcmVzcwUBaQFpAQ9sZWFzZUZyb21Mb2NrZWQCC25vZGVBZGRyZXNzBmFtb3VudAQLdXNlckFkZHJlc3MJAKUIAQgFAWkGY2FsbGVyCQEPZ2V0U3Rha2VBY3Rpb25zBAULbm9kZUFkZHJlc3MFC3VzZXJBZGRyZXNzBQZhbW91bnQFAWkBaQELY2FuY2VsTGVhc2UCC25vZGVBZGRyZXNzBmFtb3VudAQLdXNlckFkZHJlc3MJAKUIAQgFAWkGY2FsbGVyCQERZ2V0VW5zdGFrZUFjdGlvbnMDBQtub2RlQWRkcmVzcwULdXNlckFkZHJlc3MFBmFtb3VudAFpAQVjbGFpbQEGYW1vdW50BAt1c2VyQWRkcmVzcwkApQgBCAUBaQZjYWxsZXIJARdnZXRDbGFpbVVubG9ja2VkQWN0aW9ucwIFC3VzZXJBZGRyZXNzBQZhbW91bnQBaQEIY2xhaW1BbGwABAt1c2VyQWRkcmVzcwkApQgBCAUBaQZjYWxsZXIEDSR0MDE3MTkzMTcyNTMJARVnZXRVc2VyVG9DbGFpbUJhbGFuY2UBBQt1c2VyQWRkcmVzcwQHdG9DbGFpbQgFDSR0MDE3MTkzMTcyNTMCXzEECHRvVW5sb2NrCAUNJHQwMTcxOTMxNzI1MwJfMgQGY2hlY2tzCQDMCAIDCQBmAgUHdG9DbGFpbQAABgkBCHRocm93RXJyAQIQbm90aGluZyB0byBjbGFpbQUDbmlsAwkAAAIFBmNoZWNrcwUGY2hlY2tzCQEXZ2V0Q2xhaW1VbmxvY2tlZEFjdGlvbnMCBQt1c2VyQWRkcmVzcwUHdG9DbGFpbQkAAgECJFN0cmljdCB2YWx1ZSBpcyBub3QgZXF1YWwgdG8gaXRzZWxmLgFpAQt2b3RlRm9yVHhJZAEEdHhJZAQTY2FsbGVyQWRkcmVzc1N0cmluZwkA2AQBCAgFAWkGY2FsbGVyBWJ5dGVzBAlrZXlQcmVmaXgJARhrZXlBbGxvd2VkVHhJZFZvdGVQcmVmaXgBBQR0eElkBAZyZXN1bHQJAMwIAgkBC1N0cmluZ0VudHJ5AgkBDmtleUFsbG93ZWRUeElkAAUEdHhJZAUDbmlsBBFhbGxvd2VkVHhJZE9wdGlvbgkAnQgCBQR0aGlzCQEOa2V5QWxsb3dlZFR4SWQABANlcnIJAMwIAgMJAAACCQDIAQEJANkEAQUEdHhJZAURVFhJRF9CWVRFU19MRU5HVEgGCQEIdGhyb3dFcnIBCQCsAgIFBHR4SWQCEiBpcyBub3QgdmFsaWQgdHhJZAkAzAgCAwMJAAACBRFhbGxvd2VkVHhJZE9wdGlvbgUEdW5pdAYJAQIhPQIJAQV2YWx1ZQEFEWFsbG93ZWRUeElkT3B0aW9uBQR0eElkBgkBCHRocm93RXJyAQkArAICBQR0eElkAhMgaXMgYWxyZWFkeSBhbGxvd2VkBQNuaWwDCQAAAgUDZXJyBQNlcnIJAQx2b3RlSU5URVJOQUwEBRNjYWxsZXJBZGRyZXNzU3RyaW5nBQlrZXlQcmVmaXgFBlFVT1JVTQUGcmVzdWx0CQACAQIkU3RyaWN0IHZhbHVlIGlzIG5vdCBlcXVhbCB0byBpdHNlbGYuAQJ0eAEGdmVyaWZ5AAQIYnlBZG1pbnMJAAACCAUCdHgCaWQJANkEAQkBC3ZhbHVlT3JFbHNlAgkAnQgCBQR0aGlzCQEOa2V5QWxsb3dlZFR4SWQAAgAEB2J5T3duZXIDCQBnAgkAkAMBCQENZ2V0QWRtaW5zTGlzdAAFBlFVT1JVTQcJAPQDAwgFAnR4CWJvZHlCeXRlcwkAkQMCCAUCdHgGcHJvb2ZzAAAIBQJ0eA9zZW5kZXJQdWJsaWNLZXkDBQhieUFkbWlucwYFB2J5T3duZXJHASw9", "height": 3287404, "applicationStatus": "succeeded", "spentComplexity": 0 } View: original | compacted Prev: 5xUjWKDszSkm11CKLqrnpLNkHBYLMDJQEGhwgH9AXmQg Next: FoDgahN94S9LP76DLx2JtwEovakdu2j9T8RJbqA5BtK7 Diff:
OldNewDifferences
1212
1313 let f = makeString(["%s", "forceStop"], b)
1414
15-let g = makeString(["%s", "forceOutStop"], b)
15+let g = makeString(["%s", "offsetId"], b)
1616
17-let h = makeString(["%s", "offsetId"], b)
17+let h = makeString(["%s", "offsetHeight"], b)
1818
19-let i = makeString(["%s", "offsetHeight"], b)
19+let i = makeString(["%s", "periodLength"], b)
2020
21-let j = makeString(["%s", "periodLength"], b)
21+let j = valueOrElse(getInteger(this, g), 0)
2222
23-let k = valueOrElse(getInteger(this, h), 0)
23+let k = valueOrElse(getInteger(this, i), 10000)
2424
25-let l = valueOrElse(getInteger(this, j), 10000)
25+let l = valueOrElse(getInteger(this, h), -1)
2626
27-let m = valueOrElse(getInteger(this, i), -1)
27+let m = if (if ((height > l))
28+ then (l != -1)
29+ else false)
30+ then (((height - l) / k) + j)
31+ else max([0, (j - 1)])
2832
29-let n = if (if ((height > m))
30- then (m != -1)
31- else false)
32- then (((height - m) / l) + k)
33- else max([0, (k - 1)])
34-
35-let o = if (if ((m == -1))
33+let n = if (if ((l == -1))
3634 then true
37- else if ((n == 0))
38- then (m > height)
35+ else if ((m == 0))
36+ then (l > height)
3937 else false)
4038 then 0
41- else (m + ((n - k) * l))
39+ else (l + ((m - j) * k))
4240
43-let p = if (if ((m == -1))
41+let o = if (if ((l == -1))
4442 then true
45- else if ((n == 0))
46- then (m > height)
43+ else if ((m == 0))
44+ then (l > height)
4745 else false)
4846 then 0
49- else (o + l)
47+ else (n + k)
5048
51-func q (r) = makeString(["%s", r], b)
49+func p (q) = makeString(["%s", q], b)
5250
5351
54-func s (t,r) = makeString(["%s%s", r, t], b)
52+func r (s,q) = makeString(["%s%s", q, s], b)
5553
5654
57-func u (t) = makeString(["%s%s", "toClaim", t], b)
55+func t (s) = makeString(["%s%s", "toClaim", s], b)
5856
5957
60-func v (t) = makeString(["%s%s", "userTotalLocked", t], b)
58+func u (s) = makeString(["%s%s", "userTotalLocked", s], b)
6159
6260
63-func w (r) = {
64- let x = if ((m == -1))
61+func v (q) = {
62+ let w = if ((l == -1))
6563 then 0
6664 else height
67- makeString(["%s%d", r, toString(x)], b)
65+ makeString(["%s%d", q, toString(w)], b)
6866 }
6967
7068
71-func y (r,t) = {
72- let x = if ((m == -1))
69+func x (q,s) = {
70+ let w = if ((l == -1))
7371 then 0
7472 else height
75- makeString(["%s%s%d", r, t, toString(x)], b)
73+ makeString(["%s%s%d", q, s, toString(w)], b)
7674 }
7775
7876
79-let z = valueOrElse(getString(this, e), "WAVES")
77+let y = valueOrElse(getString(this, e), "WAVES")
8078
81-let A = if ((z == "WAVES"))
79+let z = if ((y == "WAVES"))
8280 then unit
83- else fromBase58String(z)
81+ else fromBase58String(y)
8482
85-let B = valueOrElse(getBoolean(this, f), false)
83+let A = valueOrElse(getBoolean(this, f), false)
8684
87-let C = valueOrElse(getBoolean(this, g), false)
88-
89-func D (E) = {
90- let F = addressFromString(E)
91- if ($isInstanceOf(F, "Address"))
85+func B (C) = {
86+ let D = addressFromString(C)
87+ if ($isInstanceOf(D, "Address"))
9288 then {
93- let G = F
89+ let E = D
9490 true
9591 }
9692 else false
9793 }
9894
9995
100-let H = 5
96+let F = 5
10197
102-let I = 3
98+let G = 3
10399
104-let J = 32
100+let H = 32
105101
106-func K (L) = makeString(["%s%s%s", "allowTxId", L], b)
102+func I (J) = makeString(["%s%s%s", "allowTxId", J], b)
107103
108104
109-func M (N,O) = makeString([N, O], b)
105+func K (L,M) = makeString([L, M], b)
110106
111107
112-func P () = makeString(["%s", "adminAddressList"], b)
108+func N () = makeString(["%s", "adminAddressList"], b)
113109
114110
115-func Q () = makeString(["%s", "txId"], b)
111+func O () = makeString(["%s", "txId"], b)
116112
117113
118-func R (N,S) = {
119- let T = M(N, S)
120- valueOrElse(getInteger(T), 0)
114+func P (L,Q) = {
115+ let R = K(L, Q)
116+ valueOrElse(getInteger(R), 0)
121117 }
122118
123119
124-func U () = {
125- let F = getString(this, P())
126- if ($isInstanceOf(F, "String"))
120+func S () = {
121+ let D = getString(this, N())
122+ if ($isInstanceOf(D, "String"))
127123 then {
128- let V = F
129- split(V, b)
124+ let T = D
125+ split(T, b)
130126 }
131127 else nil
132128 }
133129
134130
135-func W (E) = containsElement(U(), E)
131+func U (C) = containsElement(S(), C)
136132
137133
138-func X (G,O) = {
139- let Y = G
140- let Z = Y._1
141- let N = Y._2
142- $Tuple2((Z :+ M(N, O)), N)
134+func V (E,M) = {
135+ let W = E
136+ let X = W._1
137+ let L = W._2
138+ $Tuple2((X :+ K(L, M)), L)
143139 }
144140
145141
146-func aa (ab) = {
147- let ac = P()
148- let ad = {
149- let ae = U()
150- let af = size(ae)
151- let ag = $Tuple2(nil, ab)
152- func ah (ai,aj) = if ((aj >= af))
153- then ai
154- else X(ai, ae[aj])
142+func Y (Z) = {
143+ let aa = N()
144+ let ab = {
145+ let ac = S()
146+ let ad = size(ac)
147+ let ae = $Tuple2(nil, Z)
148+ func af (ag,ah) = if ((ah >= ad))
149+ then ag
150+ else V(ag, ac[ah])
155151
156- func ak (ai,aj) = if ((aj >= af))
157- then ai
152+ func ai (ag,ah) = if ((ah >= ad))
153+ then ag
158154 else throw("List size exceeds 5")
159155
160- ak(ah(ah(ah(ah(ah(ag, 0), 1), 2), 3), 4), 5)
156+ ai(af(af(af(af(af(ae, 0), 1), 2), 3), 4), 5)
161157 }
162- let Z = ad._1
163- let N = ad._2
164- Z
158+ let X = ab._1
159+ let L = ab._2
160+ X
165161 }
166162
167163
168-func al (Z,T) = (Z + valueOrElse(getInteger(T), 0))
164+func aj (X,R) = (X + valueOrElse(getInteger(R), 0))
169165
170166
171-func am (N) = {
172- let an = aa(N)
173- let ae = an
174- let af = size(ae)
175- let ag = 0
176- func ah (ai,aj) = if ((aj >= af))
177- then ai
178- else al(ai, ae[aj])
167+func ak (L) = {
168+ let al = Y(L)
169+ let ac = al
170+ let ad = size(ac)
171+ let ae = 0
172+ func af (ag,ah) = if ((ah >= ad))
173+ then ag
174+ else aj(ag, ac[ah])
179175
180- func ak (ai,aj) = if ((aj >= af))
181- then ai
176+ func ai (ag,ah) = if ((ah >= ad))
177+ then ag
182178 else throw("List size exceeds 5")
183179
184- ak(ah(ah(ah(ah(ah(ag, 0), 1), 2), 3), 4), 5)
180+ ai(af(af(af(af(af(ae, 0), 1), 2), 3), 4), 5)
185181 }
186182
187183
188-func ao (Z,ap) = (Z :+ DeleteEntry(ap))
184+func am (X,an) = (X :+ DeleteEntry(an))
189185
190186
191-func aq (N) = {
192- let an = aa(N)
193- let ae = an
194- let af = size(ae)
195- let ag = nil
196- func ah (ai,aj) = if ((aj >= af))
197- then ai
198- else ao(ai, ae[aj])
187+func ao (L) = {
188+ let al = Y(L)
189+ let ac = al
190+ let ad = size(ac)
191+ let ae = nil
192+ func af (ag,ah) = if ((ah >= ad))
193+ then ag
194+ else am(ag, ac[ah])
199195
200- func ak (ai,aj) = if ((aj >= af))
201- then ai
196+ func ai (ag,ah) = if ((ah >= ad))
197+ then ag
202198 else throw("List size exceeds 5")
203199
204- ak(ah(ah(ah(ah(ah(ag, 0), 1), 2), 3), 4), 5)
200+ ai(af(af(af(af(af(ae, 0), 1), 2), 3), 4), 5)
205201 }
206202
207203
208-func ar (as,ab,at,au) = {
209- let T = M(ab, as)
210- let av = R(ab, as)
211- let aw = if (!(W(as)))
212- then c((("Address: " + as) + " not in Admin list"))
213- else if ((av == 1))
214- then c((T + " you already voted"))
204+func ap (aq,Z,ar,as) = {
205+ let R = K(Z, aq)
206+ let at = P(Z, aq)
207+ let au = if (!(U(aq)))
208+ then c((("Address: " + aq) + " not in Admin list"))
209+ else if ((at == 1))
210+ then c((R + " you already voted"))
215211 else unit
216- if ((aw == aw))
212+ if ((au == au))
217213 then {
218- let an = am(ab)
219- if (((an + 1) >= at))
214+ let al = ak(Z)
215+ if (((al + 1) >= ar))
220216 then {
221- let ax = aq(ab)
222- (ax ++ au)
217+ let av = ao(Z)
218+ (av ++ as)
223219 }
224- else [IntegerEntry(T, 1)]
220+ else [IntegerEntry(R, 1)]
225221 }
226222 else throw("Strict value is not equal to itself.")
227223 }
228224
229225
230-func ay (r,az,aA) = {
231- let aB = makeString(["%d%d%d%d", toString(o), toString(az), toString(p), toString(aA)], b)
232- StringEntry(q(r), aB)
226+func aw (q,ax,ay) = {
227+ let az = makeString(["%d%d%d%d", toString(n), toString(ax), toString(o), toString(ay)], b)
228+ StringEntry(p(q), az)
233229 }
234230
235231
236-func aC (r) = {
237- let aD = getString(this, q(r))
238- let F = aD
239- if ($isInstanceOf(F, "String"))
232+func aA (q) = {
233+ let aB = getString(this, p(q))
234+ let D = aB
235+ if ($isInstanceOf(D, "String"))
240236 then {
241- let aE = F
242- let aF = split(aE, b)
243- let aG = parseIntValue(aF[1])
244- let aH = parseIntValue(aF[2])
245- let aI = parseIntValue(aF[3])
246- let aJ = parseIntValue(aF[4])
247- if (if ((aI > height))
237+ let aC = D
238+ let aD = split(aC, b)
239+ let aE = parseIntValue(aD[1])
240+ let aF = parseIntValue(aD[2])
241+ let aG = parseIntValue(aD[3])
242+ let aH = parseIntValue(aD[4])
243+ if (if ((aG > height))
248244 then true
249- else (m == -1))
250- then $Tuple2(aH, aJ)
251- else $Tuple2(aJ, aJ)
245+ else (l == -1))
246+ then $Tuple2(aF, aH)
247+ else $Tuple2(aH, aH)
252248 }
253249 else $Tuple2(0, 0)
254250 }
255251
256252
257-func aK (r,t,aL,aM) = {
258- let aB = makeString(["%d%d%d%d", toString(o), toString(aL), toString(p), toString(aM)], b)
259- StringEntry(s(t, r), aB)
253+func aI (q,s,aJ,aK) = {
254+ let az = makeString(["%d%d%d%d", toString(n), toString(aJ), toString(o), toString(aK)], b)
255+ StringEntry(r(s, q), az)
260256 }
261257
262258
263-func aN (r,t) = {
264- let aO = getString(this, s(t, r))
265- let F = aO
266- if ($isInstanceOf(F, "String"))
259+func aL (q,s) = {
260+ let aM = getString(this, r(s, q))
261+ let D = aM
262+ if ($isInstanceOf(D, "String"))
267263 then {
268- let aE = F
269- let aF = split(aE, b)
270- let aP = parseIntValue(aF[1])
271- let aL = parseIntValue(aF[2])
272- let aQ = parseIntValue(aF[3])
273- let aM = parseIntValue(aF[4])
274- if (if ((aQ > height))
264+ let aC = D
265+ let aD = split(aC, b)
266+ let aN = parseIntValue(aD[1])
267+ let aJ = parseIntValue(aD[2])
268+ let aO = parseIntValue(aD[3])
269+ let aK = parseIntValue(aD[4])
270+ if (if ((aO > height))
275271 then true
276- else (m == -1))
277- then $Tuple2(aL, aM)
278- else $Tuple2(aM, aM)
272+ else (l == -1))
273+ then $Tuple2(aJ, aK)
274+ else $Tuple2(aK, aK)
279275 }
280276 else $Tuple2(0, 0)
281277 }
282278
283279
284-func aR (t,aS,aT) = {
285- let aB = makeString(["%d%d%d%d", toString(o), toString(aS), toString(p), toString(aT)], b)
286- StringEntry(u(t), aB)
280+func aP (s,aQ,aR) = {
281+ let az = makeString(["%d%d%d%d", toString(n), toString(aQ), toString(o), toString(aR)], b)
282+ StringEntry(t(s), az)
287283 }
288284
289285
290-func aU (t) = {
291- let aV = getString(this, u(t))
292- let F = aV
293- if ($isInstanceOf(F, "String"))
286+func aS (s) = {
287+ let aT = getString(this, t(s))
288+ let D = aT
289+ if ($isInstanceOf(D, "String"))
294290 then {
295- let aE = F
296- let aF = split(aE, b)
297- let aW = parseIntValue(aF[1])
298- let aS = parseIntValue(aF[2])
299- let aX = parseIntValue(aF[3])
300- let aT = parseIntValue(aF[4])
301- if (if ((aX > height))
291+ let aC = D
292+ let aD = split(aC, b)
293+ let aU = parseIntValue(aD[1])
294+ let aQ = parseIntValue(aD[2])
295+ let aV = parseIntValue(aD[3])
296+ let aR = parseIntValue(aD[4])
297+ if (if ((aV > height))
302298 then true
303- else (n == 0))
304- then $Tuple2(aS, aT)
305- else $Tuple2((aS + aT), 0)
299+ else (m == 0))
300+ then $Tuple2(aQ, aR)
301+ else $Tuple2((aQ + aR), 0)
306302 }
307303 else $Tuple2(0, 0)
308304 }
309305
310306
311-func aY (t,aZ) = IntegerEntry(v(t), aZ)
307+func aW (s,aX) = IntegerEntry(u(s), aX)
312308
313309
314-func ba (t) = valueOrElse(getInteger(this, v(t)), 0)
310+func aY (s) = valueOrElse(getInteger(this, u(s)), 0)
315311
316312
317-func bb (r,t,bc) = {
318- let bd = aC(r)
319- let aH = bd._1
320- let aJ = bd._2
321- let be = aN(r, t)
322- let aL = be._1
323- let aM = be._2
324- let bf = [if (!(B))
313+func aZ (q,s,ba) = {
314+ let bb = aA(q)
315+ let aF = bb._1
316+ let aH = bb._2
317+ let bc = aL(q, s)
318+ let aJ = bc._1
319+ let aK = bc._2
320+ let bd = [if (!(A))
325321 then true
326- else c("contract is temporary stopped"), if (!(C))
322+ else c("contract is temporary stopped"), if ((ba > 0))
327323 then true
328- else c("unstake is temporary disabled"), if ((bc > 0))
324+ else c("unstake amount should be greater than 0"), if ((aK >= ba))
329325 then true
330- else c("unstake amount should be greater than 0"), if ((aM >= bc))
326+ else c("unstake amount should be less or equal user staked amount"), if ((aH >= ba))
331327 then true
332- else c("unstake amount should be less or equal user staked amount"), if ((aJ >= bc))
328+ else c("unstake amount should be less or equal node staked amount"), if (B(q))
333329 then true
334- else c("unstake amount should be less or equal node staked amount"), if (D(r))
330+ else c(makeString(["node address is not valid:", q], " ")), if (B(s))
335331 then true
336- else c(makeString(["node address is not valid:", r], " ")), if (D(t))
337- then true
338- else c(makeString(["user address is not valid:", t], " "))]
339- if ((bf == bf))
332+ else c(makeString(["user address is not valid:", s], " "))]
333+ if ((bd == bd))
340334 then {
341- let bg = (aJ - bc)
342- let bh = (aM - bc)
343- let bi = aU(t)
344- let aS = bi._1
345- let aT = bi._2
346- let bj = (aT + bc)
347- let aZ = ba(t)
348- let bk = (aZ - bc)
349-[ay(r, aH, bg), aK(r, t, aL, bh), aR(t, aS, bj), aY(t, bk), IntegerEntry(w(r), bg), IntegerEntry(y(r, t), bh)]
335+ let be = (aH - ba)
336+ let bf = (aK - ba)
337+ let bg = aS(s)
338+ let aQ = bg._1
339+ let aR = bg._2
340+ let bh = (aR + ba)
341+ let aX = aY(s)
342+ let bi = (aX - ba)
343+[aw(q, aF, be), aI(q, s, aJ, bf), aP(s, aQ, bh), aW(s, bi), IntegerEntry(v(q), be), IntegerEntry(x(q, s), bf)]
350344 }
351345 else throw("Strict value is not equal to itself.")
352346 }
353347
354348
355-func bl (t,bm) = {
356- let bn = aU(t)
357- let aS = bn._1
358- let aT = bn._2
359- let bf = [if (!(B))
349+func bj (s,bk) = {
350+ let bl = aS(s)
351+ let aQ = bl._1
352+ let aR = bl._2
353+ let bd = [if (!(A))
360354 then true
361- else c("contract is temporary stopped"), if (!(C))
355+ else c("contract is temporary stopped"), if ((bk > 0))
362356 then true
363- else c("claim is temporary disabled"), if ((bm > 0))
357+ else c("claim amount should be greater than 0"), if ((aQ >= bk))
364358 then true
365- else c("claim amount should be greater than 0"), if ((aS >= bm))
359+ else c("claim amount should be less or equal unlocked amount"), if (B(s))
366360 then true
367- else c("claim amount should be less or equal unlocked amount"), if (D(t))
368- then true
369- else c(makeString(["user address is not valid:", t], " "))]
370- if ((bf == bf))
361+ else c(makeString(["user address is not valid:", s], " "))]
362+ if ((bd == bd))
371363 then {
372- let bo = (aS - bm)
373-[aR(t, bo, aT), ScriptTransfer(addressFromStringValue(t), bm, A)]
364+ let bm = (aQ - bk)
365+[aP(s, bm, aR), ScriptTransfer(addressFromStringValue(s), bk, z)]
374366 }
375367 else throw("Strict value is not equal to itself.")
376368 }
377369
378370
379-func bp (r,t,bq,br) = {
380- let bs = aU(t)
381- let aS = bs._1
382- let aT = bs._2
383- let bt = if ((size(br.payments) == 0))
371+func bn (q,s,bo,bp) = {
372+ let bq = aS(s)
373+ let aQ = bq._1
374+ let aR = bq._2
375+ let br = if ((size(bp.payments) == 0))
384376 then 0
385- else br.payments[0].amount
386- let bu = ((aT + aS) + bt)
387- let bf = [if (!(B))
377+ else bp.payments[0].amount
378+ let bs = ((aR + aQ) + br)
379+ let bd = [if (!(A))
388380 then true
389- else c("contract is temporary stopped"), if ((1 >= size(br.payments)))
381+ else c("contract is temporary stopped"), if ((1 >= size(bp.payments)))
390382 then true
391- else c("maximum 1 payment"), if (if ((size(br.payments) == 0))
383+ else c("maximum 1 payment"), if (if ((size(bp.payments) == 0))
392384 then true
393- else (br.payments[0].assetId == A))
385+ else (bp.payments[0].assetId == z))
394386 then true
395- else c(makeString(["payment assetId should be:", z], " ")), if ((bq > 0))
387+ else c(makeString(["payment assetId should be:", y], " ")), if ((bo > 0))
396388 then true
397- else c("amount should be greater than 0"), if ((bu >= bq))
389+ else c("amount should be greater than 0"), if ((bs >= bo))
398390 then true
399- else c("amount should be less or equal (payment + available) amount"), if ((bq >= bt))
391+ else c("amount should be less or equal (payment + available) amount"), if ((bo >= br))
400392 then true
401- else throw("amount should be greater or equal payment amount"), if (D(r))
393+ else throw("amount should be greater or equal payment amount"), if (B(q))
402394 then true
403- else c(makeString(["node address is not valid:", r], " ")), if (D(t))
395+ else c(makeString(["node address is not valid:", q], " ")), if (B(s))
404396 then true
405- else c(makeString(["user address is not valid:", t], " "))]
406- if ((bf == bf))
397+ else c(makeString(["user address is not valid:", s], " "))]
398+ if ((bd == bd))
407399 then {
408- let bv = aC(r)
409- let aH = bv._1
410- let aJ = bv._2
411- let bg = (aJ + bq)
412- let bw = aN(r, t)
413- let aL = bw._1
414- let aM = bw._2
415- let bh = (aM + bq)
416- let bx = (bq - bt)
417- let bj = max([0, (aT - bx)])
418- let bo = min([aS, (aS + (aT - bx))])
419- let aZ = ba(t)
420- let bk = (aZ + bq)
421-[ay(r, aH, bg), aK(r, t, aL, bh), aR(t, bo, bj), aY(t, bk), IntegerEntry(w(r), bg), IntegerEntry(y(r, t), bh)]
400+ let bt = aA(q)
401+ let aF = bt._1
402+ let aH = bt._2
403+ let be = (aH + bo)
404+ let bu = aL(q, s)
405+ let aJ = bu._1
406+ let aK = bu._2
407+ let bf = (aK + bo)
408+ let bv = (bo - br)
409+ let bh = max([0, (aR - bv)])
410+ let bm = min([aQ, (aQ + (aR - bv))])
411+ let aX = aY(s)
412+ let bi = (aX + bo)
413+[aw(q, aF, be), aI(q, s, aJ, bf), aP(s, bm, bh), aW(s, bi), IntegerEntry(v(q), be), IntegerEntry(x(q, s), bf)]
422414 }
423415 else throw("Strict value is not equal to itself.")
424416 }
425417
426418
427-func by (r,t,br) = {
428- let bf = [if ((size(br.payments) == 1))
419+func bw (q,s,bp) = {
420+ let bd = [if ((size(bp.payments) == 1))
429421 then true
430422 else c("payment size should be exactly 1")]
431- if ((bf == bf))
432- then bp(r, t, br.payments[0].amount, br)
423+ if ((bd == bd))
424+ then bn(q, s, bp.payments[0].amount, bp)
433425 else throw("Strict value is not equal to itself.")
434426 }
435427
436428
437-func bz (bA) = {
438- let bB = [if ((bA > 0))
429+func bx (by) = {
430+ let bz = [if ((by > 0))
439431 then true
440432 else c("period length should be greater than 0")]
441- if ((bB == bB))
442- then if ((m == -1))
443- then [IntegerEntry(j, bA), IntegerEntry(i, height)]
444- else [IntegerEntry(h, (n + 1)), IntegerEntry(i, p), IntegerEntry(j, bA)]
433+ if ((bz == bz))
434+ then if ((l == -1))
435+ then [IntegerEntry(i, by), IntegerEntry(h, height)]
436+ else [IntegerEntry(g, (m + 1)), IntegerEntry(h, o), IntegerEntry(i, by)]
445437 else throw("Strict value is not equal to itself.")
446438 }
447439
448440
449-@Callable(br)
450-func setNewPeriodLength (bA) = {
451- let bf = [if (W(toString(br.caller)))
441+@Callable(bp)
442+func setNewPeriodLength (by) = {
443+ let bd = [if (U(toString(bp.caller)))
452444 then true
453445 else c("caller is not in adminList")]
454- if ((bf == bf))
455- then bz(bA)
446+ if ((bd == bd))
447+ then bx(by)
456448 else throw("Strict value is not equal to itself.")
457449 }
458450
459451
460452
461-@Callable(br)
462-func setForceStopFlag (bC) = {
463- let bB = [if (W(toString(br.caller)))
453+@Callable(bp)
454+func setForceStopFlag (bA) = {
455+ let bz = [if (U(toString(bp.caller)))
464456 then true
465457 else c("caller is not in adminList")]
466- if ((bB == bB))
467- then [BooleanEntry(f, bC)]
458+ if ((bz == bz))
459+ then [BooleanEntry(f, bA)]
468460 else throw("Strict value is not equal to itself.")
469461 }
470462
471463
472464
473-@Callable(br)
474-func setForceOutStopFlag (bC) = {
475- let bB = [if (W(toString(br.caller)))
465+@Callable(bp)
466+func getNodeDataREADONLY (q) = {
467+ let bB = aA(q)
468+ let bC = bB._1
469+ let ay = bB._2
470+ $Tuple2(nil, $Tuple5(n, bC, o, ay, height))
471+ }
472+
473+
474+
475+@Callable(bp)
476+func getUserLeasingDataREADONLY (q,s) = {
477+ let bD = aL(q, s)
478+ let bC = bD._1
479+ let ay = bD._2
480+ $Tuple2(nil, $Tuple5(n, bC, o, ay, height))
481+ }
482+
483+
484+
485+@Callable(bp)
486+func getUserDataREADONLY (s) = {
487+ let bE = aS(s)
488+ let aQ = bE._1
489+ let aR = bE._2
490+ let aX = aY(s)
491+ $Tuple2(nil, $Tuple6(n, aQ, o, aR, aX, height))
492+ }
493+
494+
495+
496+@Callable(bp)
497+func leaseByAddress (q,s) = bw(q, s, bp)
498+
499+
500+
501+@Callable(bp)
502+func lease (q) = {
503+ let s = toString(bp.caller)
504+ bw(q, s, bp)
505+ }
506+
507+
508+
509+@Callable(bp)
510+func leaseFromLocked (q,bF) = {
511+ let s = toString(bp.caller)
512+ bn(q, s, bF, bp)
513+ }
514+
515+
516+
517+@Callable(bp)
518+func cancelLease (q,bF) = {
519+ let s = toString(bp.caller)
520+ aZ(q, s, bF)
521+ }
522+
523+
524+
525+@Callable(bp)
526+func claim (bF) = {
527+ let s = toString(bp.caller)
528+ bj(s, bF)
529+ }
530+
531+
532+
533+@Callable(bp)
534+func claimAll () = {
535+ let s = toString(bp.caller)
536+ let bG = aS(s)
537+ let aQ = bG._1
538+ let aR = bG._2
539+ let bd = [if ((aQ > 0))
476540 then true
477- else c("caller is not in adminList")]
478- if ((bB == bB))
479- then [BooleanEntry(g, bC)]
541+ else c("nothing to claim")]
542+ if ((bd == bd))
543+ then bj(s, aQ)
480544 else throw("Strict value is not equal to itself.")
481545 }
482546
483547
484548
485-@Callable(br)
486-func getNodeDataREADONLY (r) = {
487- let bD = aC(r)
488- let bE = bD._1
489- let aA = bD._2
490- $Tuple2(nil, $Tuple5(o, bE, p, aA, height))
491- }
492-
493-
494-
495-@Callable(br)
496-func getUserLeasingDataREADONLY (r,t) = {
497- let bF = aN(r, t)
498- let bE = bF._1
499- let aA = bF._2
500- $Tuple2(nil, $Tuple5(o, bE, p, aA, height))
501- }
502-
503-
504-
505-@Callable(br)
506-func getUserDataREADONLY (t) = {
507- let bG = aU(t)
508- let aS = bG._1
509- let aT = bG._2
510- let aZ = ba(t)
511- $Tuple2(nil, $Tuple6(o, aS, p, aT, aZ, height))
512- }
513-
514-
515-
516-@Callable(br)
517-func leaseByAddress (r,t) = by(r, t, br)
518-
519-
520-
521-@Callable(br)
522-func lease (r) = {
523- let t = toString(br.caller)
524- by(r, t, br)
525- }
526-
527-
528-
529-@Callable(br)
530-func leaseFromLocked (r,bH) = {
531- let t = toString(br.caller)
532- bp(r, t, bH, br)
533- }
534-
535-
536-
537-@Callable(br)
538-func cancelLease (r,bH) = {
539- let t = toString(br.caller)
540- bb(r, t, bH)
541- }
542-
543-
544-
545-@Callable(br)
546-func claim (bH) = {
547- let t = toString(br.caller)
548- bl(t, bH)
549- }
550-
551-
552-
553-@Callable(br)
554-func claimAll () = {
555- let t = toString(br.caller)
556- let bI = aU(t)
557- let aS = bI._1
558- let aT = bI._2
559- let bf = [if ((aS > 0))
549+@Callable(bp)
550+func voteForTxId (J) = {
551+ let aq = toBase58String(bp.caller.bytes)
552+ let Z = I(J)
553+ let X = [StringEntry(O(), J)]
554+ let bH = getString(this, O())
555+ let au = [if ((size(fromBase58String(J)) == H))
560556 then true
561- else c("nothing to claim")]
562- if ((bf == bf))
563- then bl(t, aS)
557+ else c((J + " is not valid txId")), if (if ((bH == unit))
558+ then true
559+ else (value(bH) != J))
560+ then true
561+ else c((J + " is already allowed"))]
562+ if ((au == au))
563+ then ap(aq, Z, G, X)
564564 else throw("Strict value is not equal to itself.")
565565 }
566566
567567
568-
569-@Callable(br)
570-func voteForTxId (L) = {
571- let as = toBase58String(br.caller.bytes)
572- let ab = K(L)
573- let Z = [StringEntry(Q(), L)]
574- let bJ = getString(this, Q())
575- let aw = [if ((size(fromBase58String(L)) == J))
568+@Verifier(bI)
569+func bJ () = {
570+ let bK = (bI.id == fromBase58String(valueOrElse(getString(this, O()), "")))
571+ let bL = if ((size(S()) >= G))
572+ then false
573+ else sigVerify(bI.bodyBytes, bI.proofs[0], bI.senderPublicKey)
574+ if (bK)
576575 then true
577- else c((L + " is not valid txId")), if (if ((bJ == unit))
578- then true
579- else (value(bJ) != L))
580- then true
581- else c((L + " is already allowed"))]
582- if ((aw == aw))
583- then ar(as, ab, I, Z)
584- else throw("Strict value is not equal to itself.")
585- }
586-
587-
588-@Verifier(bK)
589-func bL () = {
590- let bM = (bK.id == fromBase58String(valueOrElse(getString(this, Q()), "")))
591- let bN = if ((size(U()) >= I))
592- then false
593- else sigVerify(bK.bodyBytes, bK.proofs[0], bK.senderPublicKey)
594- if (bM)
595- then true
596- else bN
576+ else bL
597577 }
598578
Full:
OldNewDifferences
11 {-# STDLIB_VERSION 6 #-}
22 {-# SCRIPT_TYPE ACCOUNT #-}
33 {-# CONTENT_TYPE DAPP #-}
44 let a = "l2mp_leasing.ride"
55
66 let b = "__"
77
88 func c (d) = throw(((a + ": ") + d))
99
1010
1111 let e = makeString(["%s", "assetId"], b)
1212
1313 let f = makeString(["%s", "forceStop"], b)
1414
15-let g = makeString(["%s", "forceOutStop"], b)
15+let g = makeString(["%s", "offsetId"], b)
1616
17-let h = makeString(["%s", "offsetId"], b)
17+let h = makeString(["%s", "offsetHeight"], b)
1818
19-let i = makeString(["%s", "offsetHeight"], b)
19+let i = makeString(["%s", "periodLength"], b)
2020
21-let j = makeString(["%s", "periodLength"], b)
21+let j = valueOrElse(getInteger(this, g), 0)
2222
23-let k = valueOrElse(getInteger(this, h), 0)
23+let k = valueOrElse(getInteger(this, i), 10000)
2424
25-let l = valueOrElse(getInteger(this, j), 10000)
25+let l = valueOrElse(getInteger(this, h), -1)
2626
27-let m = valueOrElse(getInteger(this, i), -1)
27+let m = if (if ((height > l))
28+ then (l != -1)
29+ else false)
30+ then (((height - l) / k) + j)
31+ else max([0, (j - 1)])
2832
29-let n = if (if ((height > m))
30- then (m != -1)
31- else false)
32- then (((height - m) / l) + k)
33- else max([0, (k - 1)])
34-
35-let o = if (if ((m == -1))
33+let n = if (if ((l == -1))
3634 then true
37- else if ((n == 0))
38- then (m > height)
35+ else if ((m == 0))
36+ then (l > height)
3937 else false)
4038 then 0
41- else (m + ((n - k) * l))
39+ else (l + ((m - j) * k))
4240
43-let p = if (if ((m == -1))
41+let o = if (if ((l == -1))
4442 then true
45- else if ((n == 0))
46- then (m > height)
43+ else if ((m == 0))
44+ then (l > height)
4745 else false)
4846 then 0
49- else (o + l)
47+ else (n + k)
5048
51-func q (r) = makeString(["%s", r], b)
49+func p (q) = makeString(["%s", q], b)
5250
5351
54-func s (t,r) = makeString(["%s%s", r, t], b)
52+func r (s,q) = makeString(["%s%s", q, s], b)
5553
5654
57-func u (t) = makeString(["%s%s", "toClaim", t], b)
55+func t (s) = makeString(["%s%s", "toClaim", s], b)
5856
5957
60-func v (t) = makeString(["%s%s", "userTotalLocked", t], b)
58+func u (s) = makeString(["%s%s", "userTotalLocked", s], b)
6159
6260
63-func w (r) = {
64- let x = if ((m == -1))
61+func v (q) = {
62+ let w = if ((l == -1))
6563 then 0
6664 else height
67- makeString(["%s%d", r, toString(x)], b)
65+ makeString(["%s%d", q, toString(w)], b)
6866 }
6967
7068
71-func y (r,t) = {
72- let x = if ((m == -1))
69+func x (q,s) = {
70+ let w = if ((l == -1))
7371 then 0
7472 else height
75- makeString(["%s%s%d", r, t, toString(x)], b)
73+ makeString(["%s%s%d", q, s, toString(w)], b)
7674 }
7775
7876
79-let z = valueOrElse(getString(this, e), "WAVES")
77+let y = valueOrElse(getString(this, e), "WAVES")
8078
81-let A = if ((z == "WAVES"))
79+let z = if ((y == "WAVES"))
8280 then unit
83- else fromBase58String(z)
81+ else fromBase58String(y)
8482
85-let B = valueOrElse(getBoolean(this, f), false)
83+let A = valueOrElse(getBoolean(this, f), false)
8684
87-let C = valueOrElse(getBoolean(this, g), false)
88-
89-func D (E) = {
90- let F = addressFromString(E)
91- if ($isInstanceOf(F, "Address"))
85+func B (C) = {
86+ let D = addressFromString(C)
87+ if ($isInstanceOf(D, "Address"))
9288 then {
93- let G = F
89+ let E = D
9490 true
9591 }
9692 else false
9793 }
9894
9995
100-let H = 5
96+let F = 5
10197
102-let I = 3
98+let G = 3
10399
104-let J = 32
100+let H = 32
105101
106-func K (L) = makeString(["%s%s%s", "allowTxId", L], b)
102+func I (J) = makeString(["%s%s%s", "allowTxId", J], b)
107103
108104
109-func M (N,O) = makeString([N, O], b)
105+func K (L,M) = makeString([L, M], b)
110106
111107
112-func P () = makeString(["%s", "adminAddressList"], b)
108+func N () = makeString(["%s", "adminAddressList"], b)
113109
114110
115-func Q () = makeString(["%s", "txId"], b)
111+func O () = makeString(["%s", "txId"], b)
116112
117113
118-func R (N,S) = {
119- let T = M(N, S)
120- valueOrElse(getInteger(T), 0)
114+func P (L,Q) = {
115+ let R = K(L, Q)
116+ valueOrElse(getInteger(R), 0)
121117 }
122118
123119
124-func U () = {
125- let F = getString(this, P())
126- if ($isInstanceOf(F, "String"))
120+func S () = {
121+ let D = getString(this, N())
122+ if ($isInstanceOf(D, "String"))
127123 then {
128- let V = F
129- split(V, b)
124+ let T = D
125+ split(T, b)
130126 }
131127 else nil
132128 }
133129
134130
135-func W (E) = containsElement(U(), E)
131+func U (C) = containsElement(S(), C)
136132
137133
138-func X (G,O) = {
139- let Y = G
140- let Z = Y._1
141- let N = Y._2
142- $Tuple2((Z :+ M(N, O)), N)
134+func V (E,M) = {
135+ let W = E
136+ let X = W._1
137+ let L = W._2
138+ $Tuple2((X :+ K(L, M)), L)
143139 }
144140
145141
146-func aa (ab) = {
147- let ac = P()
148- let ad = {
149- let ae = U()
150- let af = size(ae)
151- let ag = $Tuple2(nil, ab)
152- func ah (ai,aj) = if ((aj >= af))
153- then ai
154- else X(ai, ae[aj])
142+func Y (Z) = {
143+ let aa = N()
144+ let ab = {
145+ let ac = S()
146+ let ad = size(ac)
147+ let ae = $Tuple2(nil, Z)
148+ func af (ag,ah) = if ((ah >= ad))
149+ then ag
150+ else V(ag, ac[ah])
155151
156- func ak (ai,aj) = if ((aj >= af))
157- then ai
152+ func ai (ag,ah) = if ((ah >= ad))
153+ then ag
158154 else throw("List size exceeds 5")
159155
160- ak(ah(ah(ah(ah(ah(ag, 0), 1), 2), 3), 4), 5)
156+ ai(af(af(af(af(af(ae, 0), 1), 2), 3), 4), 5)
161157 }
162- let Z = ad._1
163- let N = ad._2
164- Z
158+ let X = ab._1
159+ let L = ab._2
160+ X
165161 }
166162
167163
168-func al (Z,T) = (Z + valueOrElse(getInteger(T), 0))
164+func aj (X,R) = (X + valueOrElse(getInteger(R), 0))
169165
170166
171-func am (N) = {
172- let an = aa(N)
173- let ae = an
174- let af = size(ae)
175- let ag = 0
176- func ah (ai,aj) = if ((aj >= af))
177- then ai
178- else al(ai, ae[aj])
167+func ak (L) = {
168+ let al = Y(L)
169+ let ac = al
170+ let ad = size(ac)
171+ let ae = 0
172+ func af (ag,ah) = if ((ah >= ad))
173+ then ag
174+ else aj(ag, ac[ah])
179175
180- func ak (ai,aj) = if ((aj >= af))
181- then ai
176+ func ai (ag,ah) = if ((ah >= ad))
177+ then ag
182178 else throw("List size exceeds 5")
183179
184- ak(ah(ah(ah(ah(ah(ag, 0), 1), 2), 3), 4), 5)
180+ ai(af(af(af(af(af(ae, 0), 1), 2), 3), 4), 5)
185181 }
186182
187183
188-func ao (Z,ap) = (Z :+ DeleteEntry(ap))
184+func am (X,an) = (X :+ DeleteEntry(an))
189185
190186
191-func aq (N) = {
192- let an = aa(N)
193- let ae = an
194- let af = size(ae)
195- let ag = nil
196- func ah (ai,aj) = if ((aj >= af))
197- then ai
198- else ao(ai, ae[aj])
187+func ao (L) = {
188+ let al = Y(L)
189+ let ac = al
190+ let ad = size(ac)
191+ let ae = nil
192+ func af (ag,ah) = if ((ah >= ad))
193+ then ag
194+ else am(ag, ac[ah])
199195
200- func ak (ai,aj) = if ((aj >= af))
201- then ai
196+ func ai (ag,ah) = if ((ah >= ad))
197+ then ag
202198 else throw("List size exceeds 5")
203199
204- ak(ah(ah(ah(ah(ah(ag, 0), 1), 2), 3), 4), 5)
200+ ai(af(af(af(af(af(ae, 0), 1), 2), 3), 4), 5)
205201 }
206202
207203
208-func ar (as,ab,at,au) = {
209- let T = M(ab, as)
210- let av = R(ab, as)
211- let aw = if (!(W(as)))
212- then c((("Address: " + as) + " not in Admin list"))
213- else if ((av == 1))
214- then c((T + " you already voted"))
204+func ap (aq,Z,ar,as) = {
205+ let R = K(Z, aq)
206+ let at = P(Z, aq)
207+ let au = if (!(U(aq)))
208+ then c((("Address: " + aq) + " not in Admin list"))
209+ else if ((at == 1))
210+ then c((R + " you already voted"))
215211 else unit
216- if ((aw == aw))
212+ if ((au == au))
217213 then {
218- let an = am(ab)
219- if (((an + 1) >= at))
214+ let al = ak(Z)
215+ if (((al + 1) >= ar))
220216 then {
221- let ax = aq(ab)
222- (ax ++ au)
217+ let av = ao(Z)
218+ (av ++ as)
223219 }
224- else [IntegerEntry(T, 1)]
220+ else [IntegerEntry(R, 1)]
225221 }
226222 else throw("Strict value is not equal to itself.")
227223 }
228224
229225
230-func ay (r,az,aA) = {
231- let aB = makeString(["%d%d%d%d", toString(o), toString(az), toString(p), toString(aA)], b)
232- StringEntry(q(r), aB)
226+func aw (q,ax,ay) = {
227+ let az = makeString(["%d%d%d%d", toString(n), toString(ax), toString(o), toString(ay)], b)
228+ StringEntry(p(q), az)
233229 }
234230
235231
236-func aC (r) = {
237- let aD = getString(this, q(r))
238- let F = aD
239- if ($isInstanceOf(F, "String"))
232+func aA (q) = {
233+ let aB = getString(this, p(q))
234+ let D = aB
235+ if ($isInstanceOf(D, "String"))
240236 then {
241- let aE = F
242- let aF = split(aE, b)
243- let aG = parseIntValue(aF[1])
244- let aH = parseIntValue(aF[2])
245- let aI = parseIntValue(aF[3])
246- let aJ = parseIntValue(aF[4])
247- if (if ((aI > height))
237+ let aC = D
238+ let aD = split(aC, b)
239+ let aE = parseIntValue(aD[1])
240+ let aF = parseIntValue(aD[2])
241+ let aG = parseIntValue(aD[3])
242+ let aH = parseIntValue(aD[4])
243+ if (if ((aG > height))
248244 then true
249- else (m == -1))
250- then $Tuple2(aH, aJ)
251- else $Tuple2(aJ, aJ)
245+ else (l == -1))
246+ then $Tuple2(aF, aH)
247+ else $Tuple2(aH, aH)
252248 }
253249 else $Tuple2(0, 0)
254250 }
255251
256252
257-func aK (r,t,aL,aM) = {
258- let aB = makeString(["%d%d%d%d", toString(o), toString(aL), toString(p), toString(aM)], b)
259- StringEntry(s(t, r), aB)
253+func aI (q,s,aJ,aK) = {
254+ let az = makeString(["%d%d%d%d", toString(n), toString(aJ), toString(o), toString(aK)], b)
255+ StringEntry(r(s, q), az)
260256 }
261257
262258
263-func aN (r,t) = {
264- let aO = getString(this, s(t, r))
265- let F = aO
266- if ($isInstanceOf(F, "String"))
259+func aL (q,s) = {
260+ let aM = getString(this, r(s, q))
261+ let D = aM
262+ if ($isInstanceOf(D, "String"))
267263 then {
268- let aE = F
269- let aF = split(aE, b)
270- let aP = parseIntValue(aF[1])
271- let aL = parseIntValue(aF[2])
272- let aQ = parseIntValue(aF[3])
273- let aM = parseIntValue(aF[4])
274- if (if ((aQ > height))
264+ let aC = D
265+ let aD = split(aC, b)
266+ let aN = parseIntValue(aD[1])
267+ let aJ = parseIntValue(aD[2])
268+ let aO = parseIntValue(aD[3])
269+ let aK = parseIntValue(aD[4])
270+ if (if ((aO > height))
275271 then true
276- else (m == -1))
277- then $Tuple2(aL, aM)
278- else $Tuple2(aM, aM)
272+ else (l == -1))
273+ then $Tuple2(aJ, aK)
274+ else $Tuple2(aK, aK)
279275 }
280276 else $Tuple2(0, 0)
281277 }
282278
283279
284-func aR (t,aS,aT) = {
285- let aB = makeString(["%d%d%d%d", toString(o), toString(aS), toString(p), toString(aT)], b)
286- StringEntry(u(t), aB)
280+func aP (s,aQ,aR) = {
281+ let az = makeString(["%d%d%d%d", toString(n), toString(aQ), toString(o), toString(aR)], b)
282+ StringEntry(t(s), az)
287283 }
288284
289285
290-func aU (t) = {
291- let aV = getString(this, u(t))
292- let F = aV
293- if ($isInstanceOf(F, "String"))
286+func aS (s) = {
287+ let aT = getString(this, t(s))
288+ let D = aT
289+ if ($isInstanceOf(D, "String"))
294290 then {
295- let aE = F
296- let aF = split(aE, b)
297- let aW = parseIntValue(aF[1])
298- let aS = parseIntValue(aF[2])
299- let aX = parseIntValue(aF[3])
300- let aT = parseIntValue(aF[4])
301- if (if ((aX > height))
291+ let aC = D
292+ let aD = split(aC, b)
293+ let aU = parseIntValue(aD[1])
294+ let aQ = parseIntValue(aD[2])
295+ let aV = parseIntValue(aD[3])
296+ let aR = parseIntValue(aD[4])
297+ if (if ((aV > height))
302298 then true
303- else (n == 0))
304- then $Tuple2(aS, aT)
305- else $Tuple2((aS + aT), 0)
299+ else (m == 0))
300+ then $Tuple2(aQ, aR)
301+ else $Tuple2((aQ + aR), 0)
306302 }
307303 else $Tuple2(0, 0)
308304 }
309305
310306
311-func aY (t,aZ) = IntegerEntry(v(t), aZ)
307+func aW (s,aX) = IntegerEntry(u(s), aX)
312308
313309
314-func ba (t) = valueOrElse(getInteger(this, v(t)), 0)
310+func aY (s) = valueOrElse(getInteger(this, u(s)), 0)
315311
316312
317-func bb (r,t,bc) = {
318- let bd = aC(r)
319- let aH = bd._1
320- let aJ = bd._2
321- let be = aN(r, t)
322- let aL = be._1
323- let aM = be._2
324- let bf = [if (!(B))
313+func aZ (q,s,ba) = {
314+ let bb = aA(q)
315+ let aF = bb._1
316+ let aH = bb._2
317+ let bc = aL(q, s)
318+ let aJ = bc._1
319+ let aK = bc._2
320+ let bd = [if (!(A))
325321 then true
326- else c("contract is temporary stopped"), if (!(C))
322+ else c("contract is temporary stopped"), if ((ba > 0))
327323 then true
328- else c("unstake is temporary disabled"), if ((bc > 0))
324+ else c("unstake amount should be greater than 0"), if ((aK >= ba))
329325 then true
330- else c("unstake amount should be greater than 0"), if ((aM >= bc))
326+ else c("unstake amount should be less or equal user staked amount"), if ((aH >= ba))
331327 then true
332- else c("unstake amount should be less or equal user staked amount"), if ((aJ >= bc))
328+ else c("unstake amount should be less or equal node staked amount"), if (B(q))
333329 then true
334- else c("unstake amount should be less or equal node staked amount"), if (D(r))
330+ else c(makeString(["node address is not valid:", q], " ")), if (B(s))
335331 then true
336- else c(makeString(["node address is not valid:", r], " ")), if (D(t))
337- then true
338- else c(makeString(["user address is not valid:", t], " "))]
339- if ((bf == bf))
332+ else c(makeString(["user address is not valid:", s], " "))]
333+ if ((bd == bd))
340334 then {
341- let bg = (aJ - bc)
342- let bh = (aM - bc)
343- let bi = aU(t)
344- let aS = bi._1
345- let aT = bi._2
346- let bj = (aT + bc)
347- let aZ = ba(t)
348- let bk = (aZ - bc)
349-[ay(r, aH, bg), aK(r, t, aL, bh), aR(t, aS, bj), aY(t, bk), IntegerEntry(w(r), bg), IntegerEntry(y(r, t), bh)]
335+ let be = (aH - ba)
336+ let bf = (aK - ba)
337+ let bg = aS(s)
338+ let aQ = bg._1
339+ let aR = bg._2
340+ let bh = (aR + ba)
341+ let aX = aY(s)
342+ let bi = (aX - ba)
343+[aw(q, aF, be), aI(q, s, aJ, bf), aP(s, aQ, bh), aW(s, bi), IntegerEntry(v(q), be), IntegerEntry(x(q, s), bf)]
350344 }
351345 else throw("Strict value is not equal to itself.")
352346 }
353347
354348
355-func bl (t,bm) = {
356- let bn = aU(t)
357- let aS = bn._1
358- let aT = bn._2
359- let bf = [if (!(B))
349+func bj (s,bk) = {
350+ let bl = aS(s)
351+ let aQ = bl._1
352+ let aR = bl._2
353+ let bd = [if (!(A))
360354 then true
361- else c("contract is temporary stopped"), if (!(C))
355+ else c("contract is temporary stopped"), if ((bk > 0))
362356 then true
363- else c("claim is temporary disabled"), if ((bm > 0))
357+ else c("claim amount should be greater than 0"), if ((aQ >= bk))
364358 then true
365- else c("claim amount should be greater than 0"), if ((aS >= bm))
359+ else c("claim amount should be less or equal unlocked amount"), if (B(s))
366360 then true
367- else c("claim amount should be less or equal unlocked amount"), if (D(t))
368- then true
369- else c(makeString(["user address is not valid:", t], " "))]
370- if ((bf == bf))
361+ else c(makeString(["user address is not valid:", s], " "))]
362+ if ((bd == bd))
371363 then {
372- let bo = (aS - bm)
373-[aR(t, bo, aT), ScriptTransfer(addressFromStringValue(t), bm, A)]
364+ let bm = (aQ - bk)
365+[aP(s, bm, aR), ScriptTransfer(addressFromStringValue(s), bk, z)]
374366 }
375367 else throw("Strict value is not equal to itself.")
376368 }
377369
378370
379-func bp (r,t,bq,br) = {
380- let bs = aU(t)
381- let aS = bs._1
382- let aT = bs._2
383- let bt = if ((size(br.payments) == 0))
371+func bn (q,s,bo,bp) = {
372+ let bq = aS(s)
373+ let aQ = bq._1
374+ let aR = bq._2
375+ let br = if ((size(bp.payments) == 0))
384376 then 0
385- else br.payments[0].amount
386- let bu = ((aT + aS) + bt)
387- let bf = [if (!(B))
377+ else bp.payments[0].amount
378+ let bs = ((aR + aQ) + br)
379+ let bd = [if (!(A))
388380 then true
389- else c("contract is temporary stopped"), if ((1 >= size(br.payments)))
381+ else c("contract is temporary stopped"), if ((1 >= size(bp.payments)))
390382 then true
391- else c("maximum 1 payment"), if (if ((size(br.payments) == 0))
383+ else c("maximum 1 payment"), if (if ((size(bp.payments) == 0))
392384 then true
393- else (br.payments[0].assetId == A))
385+ else (bp.payments[0].assetId == z))
394386 then true
395- else c(makeString(["payment assetId should be:", z], " ")), if ((bq > 0))
387+ else c(makeString(["payment assetId should be:", y], " ")), if ((bo > 0))
396388 then true
397- else c("amount should be greater than 0"), if ((bu >= bq))
389+ else c("amount should be greater than 0"), if ((bs >= bo))
398390 then true
399- else c("amount should be less or equal (payment + available) amount"), if ((bq >= bt))
391+ else c("amount should be less or equal (payment + available) amount"), if ((bo >= br))
400392 then true
401- else throw("amount should be greater or equal payment amount"), if (D(r))
393+ else throw("amount should be greater or equal payment amount"), if (B(q))
402394 then true
403- else c(makeString(["node address is not valid:", r], " ")), if (D(t))
395+ else c(makeString(["node address is not valid:", q], " ")), if (B(s))
404396 then true
405- else c(makeString(["user address is not valid:", t], " "))]
406- if ((bf == bf))
397+ else c(makeString(["user address is not valid:", s], " "))]
398+ if ((bd == bd))
407399 then {
408- let bv = aC(r)
409- let aH = bv._1
410- let aJ = bv._2
411- let bg = (aJ + bq)
412- let bw = aN(r, t)
413- let aL = bw._1
414- let aM = bw._2
415- let bh = (aM + bq)
416- let bx = (bq - bt)
417- let bj = max([0, (aT - bx)])
418- let bo = min([aS, (aS + (aT - bx))])
419- let aZ = ba(t)
420- let bk = (aZ + bq)
421-[ay(r, aH, bg), aK(r, t, aL, bh), aR(t, bo, bj), aY(t, bk), IntegerEntry(w(r), bg), IntegerEntry(y(r, t), bh)]
400+ let bt = aA(q)
401+ let aF = bt._1
402+ let aH = bt._2
403+ let be = (aH + bo)
404+ let bu = aL(q, s)
405+ let aJ = bu._1
406+ let aK = bu._2
407+ let bf = (aK + bo)
408+ let bv = (bo - br)
409+ let bh = max([0, (aR - bv)])
410+ let bm = min([aQ, (aQ + (aR - bv))])
411+ let aX = aY(s)
412+ let bi = (aX + bo)
413+[aw(q, aF, be), aI(q, s, aJ, bf), aP(s, bm, bh), aW(s, bi), IntegerEntry(v(q), be), IntegerEntry(x(q, s), bf)]
422414 }
423415 else throw("Strict value is not equal to itself.")
424416 }
425417
426418
427-func by (r,t,br) = {
428- let bf = [if ((size(br.payments) == 1))
419+func bw (q,s,bp) = {
420+ let bd = [if ((size(bp.payments) == 1))
429421 then true
430422 else c("payment size should be exactly 1")]
431- if ((bf == bf))
432- then bp(r, t, br.payments[0].amount, br)
423+ if ((bd == bd))
424+ then bn(q, s, bp.payments[0].amount, bp)
433425 else throw("Strict value is not equal to itself.")
434426 }
435427
436428
437-func bz (bA) = {
438- let bB = [if ((bA > 0))
429+func bx (by) = {
430+ let bz = [if ((by > 0))
439431 then true
440432 else c("period length should be greater than 0")]
441- if ((bB == bB))
442- then if ((m == -1))
443- then [IntegerEntry(j, bA), IntegerEntry(i, height)]
444- else [IntegerEntry(h, (n + 1)), IntegerEntry(i, p), IntegerEntry(j, bA)]
433+ if ((bz == bz))
434+ then if ((l == -1))
435+ then [IntegerEntry(i, by), IntegerEntry(h, height)]
436+ else [IntegerEntry(g, (m + 1)), IntegerEntry(h, o), IntegerEntry(i, by)]
445437 else throw("Strict value is not equal to itself.")
446438 }
447439
448440
449-@Callable(br)
450-func setNewPeriodLength (bA) = {
451- let bf = [if (W(toString(br.caller)))
441+@Callable(bp)
442+func setNewPeriodLength (by) = {
443+ let bd = [if (U(toString(bp.caller)))
452444 then true
453445 else c("caller is not in adminList")]
454- if ((bf == bf))
455- then bz(bA)
446+ if ((bd == bd))
447+ then bx(by)
456448 else throw("Strict value is not equal to itself.")
457449 }
458450
459451
460452
461-@Callable(br)
462-func setForceStopFlag (bC) = {
463- let bB = [if (W(toString(br.caller)))
453+@Callable(bp)
454+func setForceStopFlag (bA) = {
455+ let bz = [if (U(toString(bp.caller)))
464456 then true
465457 else c("caller is not in adminList")]
466- if ((bB == bB))
467- then [BooleanEntry(f, bC)]
458+ if ((bz == bz))
459+ then [BooleanEntry(f, bA)]
468460 else throw("Strict value is not equal to itself.")
469461 }
470462
471463
472464
473-@Callable(br)
474-func setForceOutStopFlag (bC) = {
475- let bB = [if (W(toString(br.caller)))
465+@Callable(bp)
466+func getNodeDataREADONLY (q) = {
467+ let bB = aA(q)
468+ let bC = bB._1
469+ let ay = bB._2
470+ $Tuple2(nil, $Tuple5(n, bC, o, ay, height))
471+ }
472+
473+
474+
475+@Callable(bp)
476+func getUserLeasingDataREADONLY (q,s) = {
477+ let bD = aL(q, s)
478+ let bC = bD._1
479+ let ay = bD._2
480+ $Tuple2(nil, $Tuple5(n, bC, o, ay, height))
481+ }
482+
483+
484+
485+@Callable(bp)
486+func getUserDataREADONLY (s) = {
487+ let bE = aS(s)
488+ let aQ = bE._1
489+ let aR = bE._2
490+ let aX = aY(s)
491+ $Tuple2(nil, $Tuple6(n, aQ, o, aR, aX, height))
492+ }
493+
494+
495+
496+@Callable(bp)
497+func leaseByAddress (q,s) = bw(q, s, bp)
498+
499+
500+
501+@Callable(bp)
502+func lease (q) = {
503+ let s = toString(bp.caller)
504+ bw(q, s, bp)
505+ }
506+
507+
508+
509+@Callable(bp)
510+func leaseFromLocked (q,bF) = {
511+ let s = toString(bp.caller)
512+ bn(q, s, bF, bp)
513+ }
514+
515+
516+
517+@Callable(bp)
518+func cancelLease (q,bF) = {
519+ let s = toString(bp.caller)
520+ aZ(q, s, bF)
521+ }
522+
523+
524+
525+@Callable(bp)
526+func claim (bF) = {
527+ let s = toString(bp.caller)
528+ bj(s, bF)
529+ }
530+
531+
532+
533+@Callable(bp)
534+func claimAll () = {
535+ let s = toString(bp.caller)
536+ let bG = aS(s)
537+ let aQ = bG._1
538+ let aR = bG._2
539+ let bd = [if ((aQ > 0))
476540 then true
477- else c("caller is not in adminList")]
478- if ((bB == bB))
479- then [BooleanEntry(g, bC)]
541+ else c("nothing to claim")]
542+ if ((bd == bd))
543+ then bj(s, aQ)
480544 else throw("Strict value is not equal to itself.")
481545 }
482546
483547
484548
485-@Callable(br)
486-func getNodeDataREADONLY (r) = {
487- let bD = aC(r)
488- let bE = bD._1
489- let aA = bD._2
490- $Tuple2(nil, $Tuple5(o, bE, p, aA, height))
491- }
492-
493-
494-
495-@Callable(br)
496-func getUserLeasingDataREADONLY (r,t) = {
497- let bF = aN(r, t)
498- let bE = bF._1
499- let aA = bF._2
500- $Tuple2(nil, $Tuple5(o, bE, p, aA, height))
501- }
502-
503-
504-
505-@Callable(br)
506-func getUserDataREADONLY (t) = {
507- let bG = aU(t)
508- let aS = bG._1
509- let aT = bG._2
510- let aZ = ba(t)
511- $Tuple2(nil, $Tuple6(o, aS, p, aT, aZ, height))
512- }
513-
514-
515-
516-@Callable(br)
517-func leaseByAddress (r,t) = by(r, t, br)
518-
519-
520-
521-@Callable(br)
522-func lease (r) = {
523- let t = toString(br.caller)
524- by(r, t, br)
525- }
526-
527-
528-
529-@Callable(br)
530-func leaseFromLocked (r,bH) = {
531- let t = toString(br.caller)
532- bp(r, t, bH, br)
533- }
534-
535-
536-
537-@Callable(br)
538-func cancelLease (r,bH) = {
539- let t = toString(br.caller)
540- bb(r, t, bH)
541- }
542-
543-
544-
545-@Callable(br)
546-func claim (bH) = {
547- let t = toString(br.caller)
548- bl(t, bH)
549- }
550-
551-
552-
553-@Callable(br)
554-func claimAll () = {
555- let t = toString(br.caller)
556- let bI = aU(t)
557- let aS = bI._1
558- let aT = bI._2
559- let bf = [if ((aS > 0))
549+@Callable(bp)
550+func voteForTxId (J) = {
551+ let aq = toBase58String(bp.caller.bytes)
552+ let Z = I(J)
553+ let X = [StringEntry(O(), J)]
554+ let bH = getString(this, O())
555+ let au = [if ((size(fromBase58String(J)) == H))
560556 then true
561- else c("nothing to claim")]
562- if ((bf == bf))
563- then bl(t, aS)
557+ else c((J + " is not valid txId")), if (if ((bH == unit))
558+ then true
559+ else (value(bH) != J))
560+ then true
561+ else c((J + " is already allowed"))]
562+ if ((au == au))
563+ then ap(aq, Z, G, X)
564564 else throw("Strict value is not equal to itself.")
565565 }
566566
567567
568-
569-@Callable(br)
570-func voteForTxId (L) = {
571- let as = toBase58String(br.caller.bytes)
572- let ab = K(L)
573- let Z = [StringEntry(Q(), L)]
574- let bJ = getString(this, Q())
575- let aw = [if ((size(fromBase58String(L)) == J))
568+@Verifier(bI)
569+func bJ () = {
570+ let bK = (bI.id == fromBase58String(valueOrElse(getString(this, O()), "")))
571+ let bL = if ((size(S()) >= G))
572+ then false
573+ else sigVerify(bI.bodyBytes, bI.proofs[0], bI.senderPublicKey)
574+ if (bK)
576575 then true
577- else c((L + " is not valid txId")), if (if ((bJ == unit))
578- then true
579- else (value(bJ) != L))
580- then true
581- else c((L + " is already allowed"))]
582- if ((aw == aw))
583- then ar(as, ab, I, Z)
584- else throw("Strict value is not equal to itself.")
585- }
586-
587-
588-@Verifier(bK)
589-func bL () = {
590- let bM = (bK.id == fromBase58String(valueOrElse(getString(this, Q()), "")))
591- let bN = if ((size(U()) >= I))
592- then false
593- else sigVerify(bK.bodyBytes, bK.proofs[0], bK.senderPublicKey)
594- if (bM)
595- then true
596- else bN
576+ else bL
597577 }
598578

github/deemru/w8io/169f3d6 
299.23 ms