tx · DoHc1sCR9mwjKWKa4NMcUSVMDhfN5d1xcFRqNTPSRamE

3MsXpzisJAwnzUr7XrEoW1BZo4U6rw4tsYK:  -0.14000000 Waves

2022.12.05 11:42 [2346839] smart account 3MsXpzisJAwnzUr7XrEoW1BZo4U6rw4tsYK > SELF 0.00000000 Waves

{ "type": 13, "id": "DoHc1sCR9mwjKWKa4NMcUSVMDhfN5d1xcFRqNTPSRamE", "fee": 14000000, "feeAssetId": null, "timestamp": 1670229762486, "version": 2, "chainId": 84, "sender": "3MsXpzisJAwnzUr7XrEoW1BZo4U6rw4tsYK", "senderPublicKey": "FFdBua5rzzMkZebvsvmN7sAdU7XhFK8QNJ3hiwwxAYRA", "proofs": [ "33rNQju4gAYcKPr9NicWh5DQuxgLtb62E42EzxP8LCc9EB21NqzGbC3xC8kXwJ3znUKjkg9avC8rgHjiMTqMEDJq", "39Ra5LVDWxf8ZmUrTJZXhZzVQQwW88NtbGieJtxKiiC1TRfUYrxFqKdBSdRiUHWT685vvDyhFY3fwyiEZE4TJLuo" ], "script": "base64:BgJcCAISAwoBCBIDCgEIEgMKAQgSBAoCCAESBQoDAggBEgUKAwgBARIECgIICBIECgIIARIFCgMCCAESAwoBCBIECgIIAhIDCgEIEgMKARgSAwoBGBIECgIICBIAEgBaAAdrQWN0aXZlAgZhY3RpdmUAC2tBY3RpdmVHbG9iAhRhY3RpdmVfYWxsX2NvbnRyYWN0cwAGa0NhdXNlAg5zaHV0ZG93bl9jYXVzZQAaa1Jld2FyZFBvb2xGcmFjdGlvbkN1cnJlbnQCHV9jdXJyZW50X3Bvb2xfZnJhY3Rpb25fcmV3YXJkABtrUmV3YXJkUG9vbEZyYWN0aW9uUHJldmlvdXMCHl9wcmV2aW91c19wb29sX2ZyYWN0aW9uX3Jld2FyZAATa0hlaWdodFBvb2xGcmFjdGlvbgIaX3Bvb2xfcmV3YXJkX3VwZGF0ZV9oZWlnaHQAG2tUb3RhbFJld2FyZFBlckJsb2NrQ3VycmVudAIedG90YWxfcmV3YXJkX3Blcl9ibG9ja19jdXJyZW50ABxrVG90YWxSZXdhcmRQZXJCbG9ja1ByZXZpb3VzAh90b3RhbF9yZXdhcmRfcGVyX2Jsb2NrX3ByZXZpb3VzABNrUmV3YXJkVXBkYXRlSGVpZ2h0AhRyZXdhcmRfdXBkYXRlX2hlaWdodAAWa1VzZXJTaGFyZVRva2Vuc1N0YWtlZAIUX3NoYXJlX3Rva2Vuc19sb2NrZWQAFmtVc2VyU2hhcmVUb2tlbnNMb2NrZWQCFV9zaGFyZV90b2tlbnNfYmxvY2tlZAAaa1VzZXJTaGFyZVRva2Vuc0xvY2tlZFR5cGUCGl9zaGFyZV90b2tlbnNfYmxvY2tlZF90eXBlABxrVXNlclNoYXJlVG9rZW5zTG9ja2VkSGVpZ2h0Ahxfc2hhcmVfdG9rZW5zX2Jsb2NrZWRfaGVpZ2h0ABdrVXNlclNoYXJlVG9rZW5zVmlydHVhbAIVX3NoYXJlX3Rva2Vuc192aXJ0dWFsABZrU2hhcmVUb3RhbFNoYXJlVG9rZW5zAhpfdG90YWxfc2hhcmVfdG9rZW5zX2xvY2tlZAATa1NoYXJlVG9rZW5zVmlydHVhbAIbX3RvdGFsX3NoYXJlX3Rva2Vuc192aXJ0dWFsAAtrTG9ja1BhcmFtcwIMX2xvY2tfcGFyYW1zAA1rTG9ja1dhdmVzRmVlAg5sb2NrX3dhdmVzX2ZlZQAOa1Bvb2xCb29zdENvZWYCC19ib29zdF9jb2VmABFrRmFybUxhc3RJbnRlcmVzdAIOX2xhc3RfaW50ZXJlc3QAFWtGYXJtVXNlckxhc3RJbnRlcmVzdAIOX2xhc3RfaW50ZXJlc3QAEmtCb29zdExhc3RJbnRlcmVzdAIQX2xhc3RfaW50ZXJlc3RfYgAWa0Jvb3N0VXNlckxhc3RJbnRlcmVzdAISX2xhc3RfaW50ZXJlc3RfdV9iABNrTGFzdEludGVyZXN0SGVpZ2h0AhVfbGFzdF9pbnRlcmVzdF9oZWlnaHQAB2tTV09QaWQCB1NXT1BfaWQADmtBdmFpbGFibGVTV09QAg9fYXZhaWxhYmxlX1NXT1AAEWtTd29wWWVhckVtaXNzaW9uAhJzd29wX3llYXJfZW1pc3Npb24AEGtIYXJ2ZXN0UG9vbFZvdGUCGF9oYXJ2ZXN0X3Bvb2xfdm90ZV9nU1dPUAAJa1Bvb2xWb3RlAhBfcG9vbF92b3RlX2dTV09QAA1rVXNlclBvb2xWb3RlAhBfdXNlcl92b3RlX2dTV09QAAprUG9vbFN0cnVjAgtfcG9vbF9zdHJ1YwAOa1VzZXJQb29sU3RydWMCEF91c2VyX3Bvb2xfc3RydWMAFGtIYXJ2ZXN0VXNlclBvb2xWb3RlAh1faGFydmVzdF91c2VyX3Bvb2xfdm90ZV9nU1dPUAATa0ZpcnN0SGFydmVzdEhlaWdodAIUZmlyc3RfaGFydmVzdF9oZWlnaHQADWtTaGFyZUxpbWl0RkgCHHNoYXJlX2xpbWl0X29uX2ZpcnN0X2hhcnZlc3QADWtDcG1tQ29udHJhY3QCDWNwbW1fY29udHJhY3QADWtBZG1pblB1YktleTECC2FkbWluX3B1Yl8xAA1rQWRtaW5QdWJLZXkyAgthZG1pbl9wdWJfMgANa0FkbWluUHViS2V5MwILYWRtaW5fcHViXzMAEmtBZG1pbkludm9rZVB1YktleQIQYWRtaW5faW52b2tlX3B1YgAQa01vbmV5Qm94QWRkcmVzcwIRbW9uZXlfYm94X2FkZHJlc3MADmtWb3RpbmdBZGRyZXNzAg52b3RpbmdfYWRkcmVzcwALa0dvdkFkZHJlc3MCEmdvdmVybmFuY2VfYWRkcmVzcwARa0xQRmFybWluZ0FkZHJlc3MCCmxwX2Zhcm1pbmcAFGtGYXJtaW5nVHJlYXN1cmVBZGRyAhBmYXJtaW5nX3RyZWFzdXJlAAZvcmFjbGUJAQdBZGRyZXNzAQEaAVRIE5cMwNMzzCUygLYp96dkaICr48x7S5kADnRvdGFsVm90ZVNoYXJlAIDIr6AlAAtzY2FsZVZhbHVlOACAwtcvABJsb2NrQm9vc3RDb2VmU2NhbGUA6AcAEGRlZlBvb2xCb29zdENvZWYA9AMBE2dldEJhc2U1OEZyb21PcmFjbGUBA2tleQQHJG1hdGNoMAkAnQgCBQZvcmFjbGUFA2tleQMJAAECBQckbWF0Y2gwAgZTdHJpbmcEBnN0cmluZwUHJG1hdGNoMAkA2QQBBQZzdHJpbmcEB25vdGhpbmcFByRtYXRjaDAJAAIBCQCsAgIFA2tleQIIaXMgZW1wdHkADGFkbWluUHViS2V5MQkBE2dldEJhc2U1OEZyb21PcmFjbGUBBQ1rQWRtaW5QdWJLZXkxAAxhZG1pblB1YktleTIJARNnZXRCYXNlNThGcm9tT3JhY2xlAQUNa0FkbWluUHViS2V5MgAMYWRtaW5QdWJLZXkzCQETZ2V0QmFzZTU4RnJvbU9yYWNsZQEFDWtBZG1pblB1YktleTMAD21vbmV5Qm94QWRkcmVzcwkBB0FkZHJlc3MBCQETZ2V0QmFzZTU4RnJvbU9yYWNsZQEFEGtNb25leUJveEFkZHJlc3MADXZvdGluZ0FkZHJlc3MJAQdBZGRyZXNzAQkBE2dldEJhc2U1OEZyb21PcmFjbGUBBQ5rVm90aW5nQWRkcmVzcwAKZ292QWRkcmVzcwkBB0FkZHJlc3MBCQETZ2V0QmFzZTU4RnJvbU9yYWNsZQEFC2tHb3ZBZGRyZXNzABFhZG1pbkludm9rZVB1YktleQkBE2dldEJhc2U1OEZyb21PcmFjbGUBBRJrQWRtaW5JbnZva2VQdWJLZXkAEGxwRmFybWluZ0FkZHJlc3MJAQdBZGRyZXNzAQkBE2dldEJhc2U1OEZyb21PcmFjbGUBBRFrTFBGYXJtaW5nQWRkcmVzcwATZmFybWluZ1RyZWFzdXJlQWRkcgkBB0FkZHJlc3MBCQETZ2V0QmFzZTU4RnJvbU9yYWNsZQEFFGtGYXJtaW5nVHJlYXN1cmVBZGRyAAxjcG1tQ29udHJhY3QJAQdBZGRyZXNzAQkBE2dldEJhc2U1OEZyb21PcmFjbGUBBQ1rQ3BtbUNvbnRyYWN0AAZhY3RpdmUJARFAZXh0ck5hdGl2ZSgxMDUxKQIFBHRoaXMFB2tBY3RpdmUACmFjdGl2ZUdsb2IJAQt2YWx1ZU9yRWxzZQIJAJsIAgUGb3JhY2xlBQtrQWN0aXZlR2xvYgYABFNXT1AJANkEAQkBEUBleHRyTmF0aXZlKDEwNTMpAgUEdGhpcwUHa1NXT1BpZAEVZ2V0SGVpZ2h0Rmlyc3RIYXJ2ZXN0AQRwb29sCQELdmFsdWVPckVsc2UCCQCaCAIJAQdBZGRyZXNzAQkA2QQBBQRwb29sBRNrRmlyc3RIYXJ2ZXN0SGVpZ2h0AAABFGdldEZIU2hhcmVMaW1pdFRva2VuAQRwb29sCQETdmFsdWVPckVycm9yTWVzc2FnZQIJAJoIAgUEcG9vbAUNa1NoYXJlTGltaXRGSAkArAICAhRObyBkYXRhIG9uIHRoZSBrZXk6IAUNa1NoYXJlTGltaXRGSAESZ2V0VG90YWxTaGFyZVRva2VuAQRwb29sCQETdmFsdWVPckVycm9yTWVzc2FnZQIJAJoIAgUEdGhpcwkArAICBQRwb29sBRZrU2hhcmVUb3RhbFNoYXJlVG9rZW5zCQCsAgIJAKwCAgIUTm8gZGF0YSBvbiB0aGUga2V5OiAFBHBvb2wFFmtTaGFyZVRvdGFsU2hhcmVUb2tlbnMBDGdldFBvb2xWb3RlZAEEcG9vbAkBC3ZhbHVlT3JFbHNlAgkAmggCBQ12b3RpbmdBZGRyZXNzCQCsAgIFBHBvb2wFCWtQb29sVm90ZQkBC3ZhbHVlT3JFbHNlAgkAtgkBCQCRAwIJALUJAgkBC3ZhbHVlT3JFbHNlAgkAnQgCBQ12b3RpbmdBZGRyZXNzCQCsAgIFBHBvb2wFCmtQb29sU3RydWMCAAIBXwAAAAABEGdldFVzZXJQb29sVm90ZWQCBHBvb2wEdXNlcgkBC3ZhbHVlT3JFbHNlAgkAmggCBQ12b3RpbmdBZGRyZXNzCQCsAgIJAKwCAgkArAICBQR1c2VyAgFfBQRwb29sBQ1rVXNlclBvb2xWb3RlCQELdmFsdWVPckVsc2UCCQC2CQEJAJEDAgkAtQkCCQELdmFsdWVPckVsc2UCCQCdCAIFDXZvdGluZ0FkZHJlc3MJAKwCAgkArAICCQCsAgIFBHVzZXICAV8FBHBvb2wFDmtVc2VyUG9vbFN0cnVjAgACAV8AAAAAAQ9nZXRTaGFyZUFzc2V0SWQBBHBvb2wJANkEAQkBEUBleHRyTmF0aXZlKDEwNTMpAgkBBXZhbHVlAQkApggBBQRwb29sAg5zaGFyZV9hc3NldF9pZAEOYWNjb3VudEJhbGFuY2UBB2Fzc2V0SWQEByRtYXRjaDAFB2Fzc2V0SWQDCQABAgUHJG1hdGNoMAIKQnl0ZVZlY3RvcgQCaWQFByRtYXRjaDAJAPAHAgUEdGhpcwUCaWQDCQABAgUHJG1hdGNoMAIEVW5pdAQFd2F2ZXMFByRtYXRjaDAICQDvBwEFBHRoaXMJYXZhaWxhYmxlCQACAQILTWF0Y2ggZXJyb3IBDmNhbGNTY2FsZVZhbHVlAghhc3NldElkMQhhc3NldElkMgQQYXNzZXRJZDFEZWNpbWFscwgJAQV2YWx1ZQEJAOwHAQUIYXNzZXRJZDEIZGVjaW1hbHMEEGFzc2V0SWQyRGVjaW1hbHMICQEFdmFsdWUBCQDsBwEFCGFzc2V0SWQyCGRlY2ltYWxzBAtzY2FsZURpZ2l0cwkAZAIJAGUCBRBhc3NldElkMkRlY2ltYWxzBRBhc3NldElkMURlY2ltYWxzAAgJAGwGAAoAAAULc2NhbGVEaWdpdHMAAAAABQRET1dOARF1c2VyQXZhaWxhYmxlU1dPUAIEcG9vbAR1c2VyCQELdmFsdWVPckVsc2UCCQCaCAIFBHRoaXMJAKwCAgkArAICCQCsAgIFBHBvb2wCAV8FBHVzZXIFDmtBdmFpbGFibGVTV09QAAABCnJld2FyZEluZm8BBHBvb2wEGnRvdGFsUmV3YXJkUGVyQmxvY2tDdXJyZW50CQETdmFsdWVPckVycm9yTWVzc2FnZQIJAJoIAgUKZ292QWRkcmVzcwUba1RvdGFsUmV3YXJkUGVyQmxvY2tDdXJyZW50CQCsAgIJAKwCAgkArAICAhRObyBkYXRhIG9uIHRoZSBrZXk6IAUba1RvdGFsUmV3YXJkUGVyQmxvY2tDdXJyZW50AgwgYXQgYWRkcmVzcyAJAKUIAQUKZ292QWRkcmVzcwQbdG90YWxSZXdhcmRQZXJCbG9ja1ByZXZpb3VzCQETdmFsdWVPckVycm9yTWVzc2FnZQIJAJoIAgUKZ292QWRkcmVzcwUca1RvdGFsUmV3YXJkUGVyQmxvY2tQcmV2aW91cwkArAICCQCsAgIJAKwCAgIUTm8gZGF0YSBvbiB0aGUga2V5OiAFHGtUb3RhbFJld2FyZFBlckJsb2NrUHJldmlvdXMCDCBhdCBhZGRyZXNzIAkApQgBBQpnb3ZBZGRyZXNzBBlyZXdhcmRQb29sRnJhY3Rpb25DdXJyZW50CQETdmFsdWVPckVycm9yTWVzc2FnZQIJAJoIAgUKZ292QWRkcmVzcwkArAICBQRwb29sBRprUmV3YXJkUG9vbEZyYWN0aW9uQ3VycmVudAkArAICCQCsAgIJAKwCAgkArAICAhRObyBkYXRhIG9uIHRoZSBrZXk6IAUEcG9vbAUaa1Jld2FyZFBvb2xGcmFjdGlvbkN1cnJlbnQCDCBhdCBhZGRyZXNzIAkApQgBBQpnb3ZBZGRyZXNzBBJyZXdhcmRVcGRhdGVIZWlnaHQJARN2YWx1ZU9yRXJyb3JNZXNzYWdlAgkAmggCBQpnb3ZBZGRyZXNzBRNrUmV3YXJkVXBkYXRlSGVpZ2h0CQCsAgIJAKwCAgkArAICAhRObyBkYXRhIG9uIHRoZSBrZXk6IAUTa1Jld2FyZFVwZGF0ZUhlaWdodAIMIGF0IGFkZHJlc3MgCQClCAEFCmdvdkFkZHJlc3MEFnBvb2xSZXdhcmRVcGRhdGVIZWlnaHQJAQt2YWx1ZU9yRWxzZQIJAJoIAgUKZ292QWRkcmVzcwkArAICBQRwb29sBRNrSGVpZ2h0UG9vbEZyYWN0aW9uBRJyZXdhcmRVcGRhdGVIZWlnaHQEGnJld2FyZFBvb2xGcmFjdGlvblByZXZpb3VzCQETdmFsdWVPckVycm9yTWVzc2FnZQIJAJoIAgUKZ292QWRkcmVzcwkArAICBQRwb29sBRtrUmV3YXJkUG9vbEZyYWN0aW9uUHJldmlvdXMJAKwCAgkArAICCQCsAgIJAKwCAgIUTm8gZGF0YSBvbiB0aGUga2V5OiAFBHBvb2wFG2tSZXdhcmRQb29sRnJhY3Rpb25QcmV2aW91cwIMIGF0IGFkZHJlc3MgCQClCAEFCmdvdkFkZHJlc3MEEXJld2FyZFBvb2xDdXJyZW50CQBrAwUadG90YWxSZXdhcmRQZXJCbG9ja0N1cnJlbnQFGXJld2FyZFBvb2xGcmFjdGlvbkN1cnJlbnQFDnRvdGFsVm90ZVNoYXJlBBJyZXdhcmRQb29sUHJldmlvdXMJAGsDBRp0b3RhbFJld2FyZFBlckJsb2NrQ3VycmVudAUacmV3YXJkUG9vbEZyYWN0aW9uUHJldmlvdXMFDnRvdGFsVm90ZVNoYXJlAwMJAGYCBRFyZXdhcmRQb29sQ3VycmVudAUadG90YWxSZXdhcmRQZXJCbG9ja0N1cnJlbnQGCQBmAgUScmV3YXJkUG9vbFByZXZpb3VzBRt0b3RhbFJld2FyZFBlckJsb2NrUHJldmlvdXMJAAIBAmJyZXdhcmRQb29sQ3VycmVudCA+IHRvdGFsUmV3YXJkUGVyQmxvY2tDdXJyZW50IG9yIHJld2FyZFBvb2xQcmV2aW91cyA+IHRvdGFsUmV3YXJkUGVyQmxvY2tQcmV2aW91cwkAlgoEBRFyZXdhcmRQb29sQ3VycmVudAUScmV3YXJkVXBkYXRlSGVpZ2h0BRJyZXdhcmRQb29sUHJldmlvdXMFFnBvb2xSZXdhcmRVcGRhdGVIZWlnaHQBE2dldExhc3RJbnRlcmVzdEluZm8BBHBvb2wEDGZhcm1JbnRlcmVzdAkBE3ZhbHVlT3JFcnJvck1lc3NhZ2UCCQCaCAIFBHRoaXMJAKwCAgUEcG9vbAURa0Zhcm1MYXN0SW50ZXJlc3QJAKwCAgkArAICAhRObyBkYXRhIG9uIHRoZSBrZXk6IAUEcG9vbAURa0Zhcm1MYXN0SW50ZXJlc3QEDWJvb3N0SW50ZXJlc3QJAQt2YWx1ZU9yRWxzZQIJAJoIAgUEdGhpcwkArAICBQRwb29sBRJrQm9vc3RMYXN0SW50ZXJlc3QAAAQSbGFzdEludGVyZXN0SGVpZ2h0CQELdmFsdWVPckVsc2UCCQCaCAIFBHRoaXMJAKwCAgUEcG9vbAUTa0xhc3RJbnRlcmVzdEhlaWdodAUGaGVpZ2h0CQCVCgMFEmxhc3RJbnRlcmVzdEhlaWdodAUMZmFybUludGVyZXN0BQ1ib29zdEludGVyZXN0AQtjYWxjRmFybVJ3ZAIEcG9vbA5jdXJUb3RhbFJld2FyZAQNcG9vbEJvb3N0Q29lZgkBC3ZhbHVlT3JFbHNlAgkAmggCBQR0aGlzCQCsAgIFBHBvb2wFDmtQb29sQm9vc3RDb2VmBRBkZWZQb29sQm9vc3RDb2VmCQBrAwUOY3VyVG90YWxSZXdhcmQFEmxvY2tCb29zdENvZWZTY2FsZQkAZAIFDXBvb2xCb29zdENvZWYFEmxvY2tCb29zdENvZWZTY2FsZQEMY2FsY0Jvb3N0UndkAgRwb29sDmN1clRvdGFsUmV3YXJkBA1wb29sQm9vc3RDb2VmCQELdmFsdWVPckVsc2UCCQCaCAIFBHRoaXMJAKwCAgUEcG9vbAUOa1Bvb2xCb29zdENvZWYFEGRlZlBvb2xCb29zdENvZWYJAGsDBQ5jdXJUb3RhbFJld2FyZAUNcG9vbEJvb3N0Q29lZgkAZAIFDXBvb2xCb29zdENvZWYFEmxvY2tCb29zdENvZWZTY2FsZQEMY2FsY0ludGVyZXN0CwRwb29sEmxhc3RJbnRlcmVzdEhlaWdodBJyZXdhcmRVcGRhdGVIZWlnaHQWcG9vbFJld2FyZFVwZGF0ZUhlaWdodAxmYXJtSW50ZXJlc3QNYm9vc3RJbnRlcmVzdAlwb29sVm90ZWQVY3VycmVudFJld2FyZFBlckJsb2NrEHNoYXJlVG9rZW5Mb2NrZWQWcHJldmlvdXNSZXdhcmRQZXJCbG9jawpzY2FsZVZhbHVlBAwkdDA5MzgzMTA1NTYDAwMJAGYCBRJyZXdhcmRVcGRhdGVIZWlnaHQFBmhlaWdodAkAAAIFEnJld2FyZFVwZGF0ZUhlaWdodAUWcG9vbFJld2FyZFVwZGF0ZUhlaWdodAcGAwkAZgIFBmhlaWdodAUScmV3YXJkVXBkYXRlSGVpZ2h0CQECIT0CBRJyZXdhcmRVcGRhdGVIZWlnaHQFFnBvb2xSZXdhcmRVcGRhdGVIZWlnaHQHBAFyCQBoAgUWcHJldmlvdXNSZXdhcmRQZXJCbG9jawkAZQIFBmhlaWdodAUSbGFzdEludGVyZXN0SGVpZ2h0CQCVCgMFAXIFDGZhcm1JbnRlcmVzdAUNYm9vc3RJbnRlcmVzdAMDAwkAZgIFBmhlaWdodAUScmV3YXJkVXBkYXRlSGVpZ2h0CQAAAgUScmV3YXJkVXBkYXRlSGVpZ2h0BRZwb29sUmV3YXJkVXBkYXRlSGVpZ2h0BwkAZgIFEmxhc3RJbnRlcmVzdEhlaWdodAUScmV3YXJkVXBkYXRlSGVpZ2h0BwQBcgkAaAIFFWN1cnJlbnRSZXdhcmRQZXJCbG9jawkAZQIFBmhlaWdodAUSbGFzdEludGVyZXN0SGVpZ2h0CQCVCgMFAXIFDGZhcm1JbnRlcmVzdAUNYm9vc3RJbnRlcmVzdAQJcndkQmZyVXBkCQBoAgUWcHJldmlvdXNSZXdhcmRQZXJCbG9jawkAZQIFEnJld2FyZFVwZGF0ZUhlaWdodAUSbGFzdEludGVyZXN0SGVpZ2h0BAZmQmZyVXAJAGQCBQxmYXJtSW50ZXJlc3QJAGsDCQELY2FsY0Zhcm1Sd2QCBQRwb29sBQlyd2RCZnJVcGQFCnNjYWxlVmFsdWUFEHNoYXJlVG9rZW5Mb2NrZWQEBmJCZnJVcAkAZAIFDWJvb3N0SW50ZXJlc3QDCQBmAgUJcG9vbFZvdGVkAAAJAGsDCQEMY2FsY0Jvb3N0UndkAgUEcG9vbAUJcndkQmZyVXBkBQtzY2FsZVZhbHVlOAUJcG9vbFZvdGVkAAAEA3J3ZAkAaAIFFWN1cnJlbnRSZXdhcmRQZXJCbG9jawkAZQIFBmhlaWdodAUScmV3YXJkVXBkYXRlSGVpZ2h0CQCVCgMFA3J3ZAUGZkJmclVwBQZiQmZyVXAEBnJld2FyZAgFDCR0MDkzODMxMDU1NgJfMQQOZmFybUludHJCZWZvcmUIBQwkdDA5MzgzMTA1NTYCXzIED2Jvb3N0SW50ckJlZm9yZQgFDCR0MDkzODMxMDU1NgJfMwQPbmV3RmFybUludGVyZXN0CQBkAgUOZmFybUludHJCZWZvcmUJAGsDCQELY2FsY0Zhcm1Sd2QCBQRwb29sBQZyZXdhcmQFCnNjYWxlVmFsdWUFEHNoYXJlVG9rZW5Mb2NrZWQEEG5ld0Jvb3N0SW50ZXJlc3QJAGQCBQ9ib29zdEludHJCZWZvcmUDCQBmAgUJcG9vbFZvdGVkAAAJAGsDCQEMY2FsY0Jvb3N0UndkAgUEcG9vbAUGcmV3YXJkBQtzY2FsZVZhbHVlOAUJcG9vbFZvdGVkAAAJAJUKAwUPbmV3RmFybUludGVyZXN0BRBuZXdCb29zdEludGVyZXN0BQZyZXdhcmQBCWNsYWltQ2FsYwIEcG9vbAR1c2VyBApzY2FsZVZhbHVlCQEOY2FsY1NjYWxlVmFsdWUCBQRTV09QCQEPZ2V0U2hhcmVBc3NldElkAQUEcG9vbAQJcG9vbFZvdGVkCQEMZ2V0UG9vbFZvdGVkAQUEcG9vbAQKdVBvb2xWb3RlZAkBEGdldFVzZXJQb29sVm90ZWQCBQRwb29sBQR1c2VyBApzaGFyZVRva2VuCQESZ2V0VG90YWxTaGFyZVRva2VuAQUEcG9vbAQRdG90YWxTaGFyZVZpcnR1YWwJAQt2YWx1ZU9yRWxzZQIJAJoIAgUEdGhpcwkArAICBQRwb29sBRNrU2hhcmVUb2tlbnNWaXJ0dWFsBQpzaGFyZVRva2VuBA0kdDAxMTMxNDExMzk1CQETZ2V0TGFzdEludGVyZXN0SW5mbwEFBHBvb2wEEmxhc3RJbnRlcmVzdEhlaWdodAgFDSR0MDExMzE0MTEzOTUCXzEEDGZhcm1JbnRlcmVzdAgFDSR0MDExMzE0MTEzOTUCXzIEDWJvb3N0SW50ZXJlc3QIBQ0kdDAxMTMxNDExMzk1Al8zBA0kdDAxMTQwMDExNTE0CQEKcmV3YXJkSW5mbwEFBHBvb2wEFWN1cnJlbnRSZXdhcmRQZXJCbG9jawgFDSR0MDExNDAwMTE1MTQCXzEEEnJld2FyZFVwZGF0ZUhlaWdodAgFDSR0MDExNDAwMTE1MTQCXzIEFnByZXZpb3VzUmV3YXJkUGVyQmxvY2sIBQ0kdDAxMTQwMDExNTE0Al8zBBZwb29sUmV3YXJkVXBkYXRlSGVpZ2h0CAUNJHQwMTE0MDAxMTUxNAJfNAQNdUZhcm1JbnRlcmVzdAkBC3ZhbHVlT3JFbHNlAgkAmggCBQR0aGlzCQCsAgIJAKwCAgkArAICBQRwb29sAgFfBQR1c2VyBRVrRmFybVVzZXJMYXN0SW50ZXJlc3QFDGZhcm1JbnRlcmVzdAQOdUJvb3N0SW50ZXJlc3QJAQt2YWx1ZU9yRWxzZQIJAJoIAgUEdGhpcwkArAICCQCsAgIJAKwCAgUEcG9vbAIBXwUEdXNlcgUWa0Jvb3N0VXNlckxhc3RJbnRlcmVzdAUNYm9vc3RJbnRlcmVzdAQSdVNoYXJlVG9rZW5zU3Rha2VkCQELdmFsdWVPckVsc2UCCQCaCAIFBHRoaXMJAKwCAgkArAICCQCsAgIFBHBvb2wCAV8FBHVzZXIFFmtVc2VyU2hhcmVUb2tlbnNTdGFrZWQAAAQQdVNoYXJlVG9rZW5zVmlydAkBC3ZhbHVlT3JFbHNlAgkAmggCBQR0aGlzCQCsAgIJAKwCAgkArAICBQRwb29sAgFfBQR1c2VyBRdrVXNlclNoYXJlVG9rZW5zVmlydHVhbAUSdVNoYXJlVG9rZW5zU3Rha2VkAwkAAAIFEXRvdGFsU2hhcmVWaXJ0dWFsAAAECnRvVHJlYXN1cnkDCQAAAgUMZmFybUludGVyZXN0AAAJAGgCBRVjdXJyZW50UmV3YXJkUGVyQmxvY2sJAGUCBQZoZWlnaHQFEmxhc3RJbnRlcmVzdEhlaWdodAAACQCWCgQFDGZhcm1JbnRlcmVzdAUNYm9vc3RJbnRlcmVzdAAABQp0b1RyZWFzdXJ5BA0kdDAxMjE3NTEyNTM1CQEMY2FsY0ludGVyZXN0CwUEcG9vbAUSbGFzdEludGVyZXN0SGVpZ2h0BRJyZXdhcmRVcGRhdGVIZWlnaHQFFnBvb2xSZXdhcmRVcGRhdGVIZWlnaHQFDGZhcm1JbnRlcmVzdAUNYm9vc3RJbnRlcmVzdAUJcG9vbFZvdGVkBRVjdXJyZW50UmV3YXJkUGVyQmxvY2sFEXRvdGFsU2hhcmVWaXJ0dWFsBRZwcmV2aW91c1Jld2FyZFBlckJsb2NrBQpzY2FsZVZhbHVlBA9uZXdGYXJtSW50ZXJlc3QIBQ0kdDAxMjE3NTEyNTM1Al8xBBBuZXdCb29zdEludGVyZXN0CAUNJHQwMTIxNzUxMjUzNQJfMgQKZnVsbFJld2FyZAgFDSR0MDEyMTc1MTI1MzUCXzMEB2Zhcm1Sd2QJAGsDBRB1U2hhcmVUb2tlbnNWaXJ0CQBlAgUPbmV3RmFybUludGVyZXN0BQ11RmFybUludGVyZXN0BQpzY2FsZVZhbHVlBA1wb29sQm9vc3RDb2VmCQELdmFsdWVPckVsc2UCCQCaCAIFBHRoaXMJAKwCAgUEcG9vbAUOa1Bvb2xCb29zdENvZWYFEGRlZlBvb2xCb29zdENvZWYEC2Jvb3N0UndkTWF4CQBrAwUHZmFybVJ3ZAUNcG9vbEJvb3N0Q29lZgUSbG9ja0Jvb3N0Q29lZlNjYWxlBAtjdXJCb29zdFJ3ZAkAawMJAGUCBRBuZXdCb29zdEludGVyZXN0BQ51Qm9vc3RJbnRlcmVzdAUKdVBvb2xWb3RlZAULc2NhbGVWYWx1ZTgECGJvb3N0UndkCQCXAwEJAMwIAgULYm9vc3RSd2RNYXgJAMwIAgULY3VyQm9vc3RSd2QFA25pbAQKdG9UcmVhc3VyeQkAZQIFC2Jvb3N0UndkTWF4BQhib29zdFJ3ZAMJAGYCAAAFCnRvVHJlYXN1cnkJAAIBAg50b1RyZWFzdXJ5IDwgMAkAlgoEBQ9uZXdGYXJtSW50ZXJlc3QFEG5ld0Jvb3N0SW50ZXJlc3QJAGQCBQdmYXJtUndkBQhib29zdFJ3ZAUKdG9UcmVhc3VyeQEbYXZhaWxhYmxlQ2xhaW1DYWxjQWxsQnlVc2VyAgVwb29scwR1c2VyCgENY2FsY0F2YWlsYWJsZQIDYWNjBHBvb2wEDSR0MDEzMjgyMTMzMTEFA2FjYwQIbmV3UG9vbHMIBQ0kdDAxMzI4MjEzMzExAl8xBAdhbW91bnRzCAUNJHQwMTMyODIxMzMxMQJfMgQNJHQwMTMzMjAxMzM3MwkBCWNsYWltQ2FsYwIFBHBvb2wFBHVzZXIEAmZpCAUNJHQwMTMzMjAxMzM3MwJfMQQCYmkIBQ0kdDAxMzMyMDEzMzczAl8yBAtjbGFpbUFtb3VudAgFDSR0MDEzMzIwMTMzNzMCXzMEAnR0CAUNJHQwMTMzMjAxMzM3MwJfNAQNYXZhaWxhYmxlRnVuZAkAZAIJARF1c2VyQXZhaWxhYmxlU1dPUAIFBHBvb2wFBHVzZXIFC2NsYWltQW1vdW50CQCUCgIJAM0IAgUIbmV3UG9vbHMFBHBvb2wJAM0IAgUHYW1vdW50cwUNYXZhaWxhYmxlRnVuZAoAAiRsBQVwb29scwoAAiRzCQCQAwEFAiRsCgAFJGFjYzAJAJQKAgUDbmlsBQNuaWwKAQUkZjBfMQICJGECJGkDCQBnAgUCJGkFAiRzBQIkYQkBDWNhbGNBdmFpbGFibGUCBQIkYQkAkQMCBQIkbAUCJGkKAQUkZjBfMgICJGECJGkDCQBnAgUCJGkFAiRzBQIkYQkAAgECFExpc3Qgc2l6ZSBleGNlZWRzIDYwCQEFJGYwXzICCQEFJGYwXzECCQEFJGYwXzECCQEFJGYwXzECCQEFJGYwXzECCQEFJGYwXzECCQEFJGYwXzECCQEFJGYwXzECCQEFJGYwXzECCQEFJGYwXzECCQEFJGYwXzECCQEFJGYwXzECCQEFJGYwXzECCQEFJGYwXzECCQEFJGYwXzECCQEFJGYwXzECCQEFJGYwXzECCQEFJGYwXzECCQEFJGYwXzECCQEFJGYwXzECCQEFJGYwXzECCQEFJGYwXzECCQEFJGYwXzECCQEFJGYwXzECCQEFJGYwXzECCQEFJGYwXzECCQEFJGYwXzECCQEFJGYwXzECCQEFJGYwXzECCQEFJGYwXzECCQEFJGYwXzECCQEFJGYwXzECCQEFJGYwXzECCQEFJGYwXzECCQEFJGYwXzECCQEFJGYwXzECCQEFJGYwXzECCQEFJGYwXzECCQEFJGYwXzECCQEFJGYwXzECCQEFJGYwXzECCQEFJGYwXzECCQEFJGYwXzECCQEFJGYwXzECCQEFJGYwXzECCQEFJGYwXzECCQEFJGYwXzECCQEFJGYwXzECCQEFJGYwXzECCQEFJGYwXzECCQEFJGYwXzECCQEFJGYwXzECCQEFJGYwXzECCQEFJGYwXzECCQEFJGYwXzECCQEFJGYwXzECCQEFJGYwXzECCQEFJGYwXzECCQEFJGYwXzECCQEFJGYwXzECCQEFJGYwXzECBQUkYWNjMAAAAAEAAgADAAQABQAGAAcACAAJAAoACwAMAA0ADgAPABAAEQASABMAFAAVABYAFwAYABkAGgAbABwAHQAeAB8AIAAhACIAIwAkACUAJgAnACgAKQAqACsALAAtAC4ALwAwADEAMgAzADQANQA2ADcAOAA5ADoAOwA8ARVjYW5Mb2NrSW5GaXJzdEhhcnZlc3QFBHBvb2wEdXNlchV1c2VyU2hhcmVUb2tlbnNTdGFrZWQJcG10QW1vdW50CGxvY2tUeXBlAwkAZgIJARVnZXRIZWlnaHRGaXJzdEhhcnZlc3QBBQRwb29sBQZoZWlnaHQED3RvdGFsVm90ZUFtb3VudAkBC3ZhbHVlT3JFbHNlAgkAmggCBQ12b3RpbmdBZGRyZXNzCQCsAgIFBHBvb2wFEGtIYXJ2ZXN0UG9vbFZvdGUAAAQOdXNlclZvdGVBbW91bnQJAQt2YWx1ZU9yRWxzZQIJAJoIAgUNdm90aW5nQWRkcmVzcwkArAICCQCsAgIJAKwCAgUEdXNlcgIBXwUEcG9vbAUUa0hhcnZlc3RVc2VyUG9vbFZvdGUAAAQRRkhTaGFyZVRva2VuTGltaXQJARRnZXRGSFNoYXJlTGltaXRUb2tlbgEJARFAZXh0ck5hdGl2ZSgxMDYyKQEFBHBvb2wEFUZIU2hhcmVUb2tlblVzZXJMaW1pdAkAZQIJAGsDBRFGSFNoYXJlVG9rZW5MaW1pdAUOdXNlclZvdGVBbW91bnQFD3RvdGFsVm90ZUFtb3VudAUVdXNlclNoYXJlVG9rZW5zU3Rha2VkAwkAZgIFCGxvY2tUeXBlAAAJAAIBAjJZb3UgY2FuJ3QgbG9jayBzaGFyZVRva2VucyB0aWxsIGZpcnN0IGhhcnZlc3QgZW5kLgMJAAACBQ51c2VyVm90ZUFtb3VudAAAAAADCQBnAgUJcG10QW1vdW50BRVGSFNoYXJlVG9rZW5Vc2VyTGltaXQJAGUCBQlwbXRBbW91bnQFFUZIU2hhcmVUb2tlblVzZXJMaW1pdAAAAAABDWdldExvY2tQYXJhbXMBBHR5cGUECmxvY2tQYXJhbXMJALUJAgkBE3ZhbHVlT3JFcnJvck1lc3NhZ2UCCQCdCAIFBHRoaXMJAKwCAgkApAMBBQR0eXBlBQtrTG9ja1BhcmFtcwkArAICAh5UaGVyZSBhcmUgbm8ga2V5IGZvciBsb2NrIHR5cGUJAKQDAQUEdHlwZQIBXwkAlAoCCQENcGFyc2VJbnRWYWx1ZQEJAJEDAgUKbG9ja1BhcmFtcwAACQENcGFyc2VJbnRWYWx1ZQEJAJEDAgUKbG9ja1BhcmFtcwABAQdzdXNwZW5kAQVjYXVzZQkAzAgCCQEMQm9vbGVhbkVudHJ5AgUHa0FjdGl2ZQcJAMwIAgkBC1N0cmluZ0VudHJ5AgUGa0NhdXNlBQVjYXVzZQUDbmlsAQhpc0FjdGl2ZQADAwUGYWN0aXZlBQphY3RpdmVHbG9iBwUEdW5pdAkAAgECH0RBcHAgaXMgaW5hY3RpdmUgYXQgdGhpcyBtb21lbnQBC2lzQWRtaW5DYWxsAQFpAwkBD2NvbnRhaW5zRWxlbWVudAIJAMwIAgUMYWRtaW5QdWJLZXkxCQDMCAIFDGFkbWluUHViS2V5MgkAzAgCBQxhZG1pblB1YktleTMFA25pbAgFAWkPY2FsbGVyUHVibGljS2V5BQR1bml0CQACAQIhT25seSBhZG1pbiBjYW4gY2FsbCB0aGlzIGZ1bmN0aW9uAQppc1Bvb2xDYWxsAgFpBHBvb2wDAwkAAAIJAKUIAQgFAWkGY2FsbGVyBQRwb29sBgkAAAIIBQFpBmNhbGxlcgUMY3BtbUNvbnRyYWN0BQR1bml0CQACAQIgT25seSBwb29sIGNhbiBjYWxsIHRoaXMgZnVuY3Rpb24BCmlzU2VsZkNhbGwBAWkDCQAAAggFAWkGY2FsbGVyBQR0aGlzBQR1bml0CQACAQIrT25seSBjb250cmFjdCBpdHNlbGYgY2FuIGNhbGwgdGhpcyBmdW5jdGlvbgETY2FsY0xvY2tTaGFyZVRva2VucwQBaQZjYWxsZXIEcG9vbAhsb2NrVHlwZQQMc2hhcmVBc3NldElkCQEPZ2V0U2hhcmVBc3NldElkAQUEcG9vbAQEdXNlcgkApQgBBQZjYWxsZXIECnRvdGFsU2hhcmUJARJnZXRUb3RhbFNoYXJlVG9rZW4BBQRwb29sBBF0b3RhbFNoYXJlVmlydHVhbAkBC3ZhbHVlT3JFbHNlAgkAmggCBQR0aGlzCQCsAgIFBHBvb2wFE2tTaGFyZVRva2Vuc1ZpcnR1YWwFCnRvdGFsU2hhcmUEEHVzZXJTdGFrZWRBbW91bnQJAQt2YWx1ZU9yRWxzZQIJAJoIAgUEdGhpcwkArAICCQCsAgIJAKwCAgUEcG9vbAIBXwUEdXNlcgUWa1VzZXJTaGFyZVRva2Vuc1N0YWtlZAAABA91c2VyTG9ja2VkSGVpZ3QJAQt2YWx1ZU9yRWxzZQIJAJoIAgUEdGhpcwkArAICCQCsAgIJAKwCAgUEcG9vbAIBXwUEdXNlcgUca1VzZXJTaGFyZVRva2Vuc0xvY2tlZEhlaWdodAAABBB1c2VyTG9ja2VkQW1vdW50CQELdmFsdWVPckVsc2UCCQCaCAIFBHRoaXMJAKwCAgkArAICCQCsAgIFBHBvb2wCAV8FBHVzZXIFFmtVc2VyU2hhcmVUb2tlbnNMb2NrZWQAAAQRdXNlckFtb3VudFZpcnR1YWwJAQt2YWx1ZU9yRWxzZQIJAJoIAgUEdGhpcwkArAICCQCsAgIJAKwCAgUEcG9vbAIBXwUEdXNlcgUXa1VzZXJTaGFyZVRva2Vuc1ZpcnR1YWwFEHVzZXJTdGFrZWRBbW91bnQEFHRvdGFsVXNlclNoYXJlVG9rZW5zCQBkAgkAZAIFEHVzZXJTdGFrZWRBbW91bnQFEHVzZXJMb2NrZWRBbW91bnQICQCRAwIIBQFpCHBheW1lbnRzAAAGYW1vdW50BA0kdDAxNjE3NDE2MjI2CQENZ2V0TG9ja1BhcmFtcwEFCGxvY2tUeXBlBApsb2NrUGVyaW9kCAUNJHQwMTYxNzQxNjIyNgJfMQQIbG9ja0NvZWYIBQ0kdDAxNjE3NDE2MjI2Al8yBAxsb2NrV2F2ZXNGZWUJARFAZXh0ck5hdGl2ZSgxMDUwKQIFBHRoaXMFDWtMb2NrV2F2ZXNGZWUDCQECIT0CCAkAkQMCCAUBaQhwYXltZW50cwAAB2Fzc2V0SWQFDHNoYXJlQXNzZXRJZAkAAgECG1dyb25nIHNoYXJldG9rZW4gaW4gcGF5bWVudAMJAGcCAAAICQCRAwIIBQFpCHBheW1lbnRzAAAGYW1vdW50CQACAQIlUGF5bWVudCBhbW91bnQgbXVzdCBiZSBncmVhdGVyIHRoYW4gMAMJAGYCAAAFCGxvY2tUeXBlCQACAQIVbG9ja1R5cGUgbXVzdCBiZSA+PSAwBBVzaGFyZVRva2Vuc0NoYW5nZU9uRkgJARVjYW5Mb2NrSW5GaXJzdEhhcnZlc3QFBQRwb29sBQR1c2VyBRB1c2VyU3Rha2VkQW1vdW50CAkAkQMCCAUBaQhwYXltZW50cwAABmFtb3VudAUIbG9ja1R5cGUDCQAAAgUVc2hhcmVUb2tlbnNDaGFuZ2VPbkZIBRVzaGFyZVRva2Vuc0NoYW5nZU9uRkgEDSR0MDE2NjUzMTg1ODcDCQAAAgUIbG9ja1R5cGUAAAQUdXNlckFtb3VudFZpcnR1YWxOZXcJAGUCCQBkAgURdXNlckFtb3VudFZpcnR1YWwICQCRAwIIBQFpCHBheW1lbnRzAAAGYW1vdW50BRVzaGFyZVRva2Vuc0NoYW5nZU9uRkgJAJQKAgkAzAgCCQEMSW50ZWdlckVudHJ5AgkArAICCQCsAgIJAKwCAgUEcG9vbAIBXwUEdXNlcgUWa1VzZXJTaGFyZVRva2Vuc1N0YWtlZAkAZQIJAGQCBRB1c2VyU3Rha2VkQW1vdW50CAkAkQMCCAUBaQhwYXltZW50cwAABmFtb3VudAUVc2hhcmVUb2tlbnNDaGFuZ2VPbkZICQDMCAIJAQxJbnRlZ2VyRW50cnkCCQCsAgIJAKwCAgkArAICBQRwb29sAgFfBQR1c2VyBRdrVXNlclNoYXJlVG9rZW5zVmlydHVhbAUUdXNlckFtb3VudFZpcnR1YWxOZXcJAMwIAgkBDEludGVnZXJFbnRyeQIJAKwCAgUEcG9vbAUTa1NoYXJlVG9rZW5zVmlydHVhbAkAZQIJAGQCBRF0b3RhbFNoYXJlVmlydHVhbAgJAJEDAggFAWkIcGF5bWVudHMAAAZhbW91bnQFFXNoYXJlVG9rZW5zQ2hhbmdlT25GSAkAzAgCCQEOU2NyaXB0VHJhbnNmZXIDBQZjYWxsZXIFFXNoYXJlVG9rZW5zQ2hhbmdlT25GSAgJAJEDAggFAWkIcGF5bWVudHMAAAdhc3NldElkBQNuaWwJAGUCCQBkAgUKdG90YWxTaGFyZQgJAJEDAggFAWkIcGF5bWVudHMAAAZhbW91bnQFFXNoYXJlVG9rZW5zQ2hhbmdlT25GSAMDCQAAAgUPdXNlckxvY2tlZEhlaWd0AAADAwkAZgIAAgkAkAMBCAUBaQhwYXltZW50cwYJAQIhPQIICQCRAwIIBQFpCHBheW1lbnRzAAEHYXNzZXRJZAUEdW5pdAYJAGYCBQxsb2NrV2F2ZXNGZWUICQCRAwIIBQFpCHBheW1lbnRzAAEGYW1vdW50BwkAAgEJAKwCAgkArAICAitZb3UgbmVlZCB0byBwYXkgYWRkaXRpb25hbCB3YXZlcyBjb21pc3Npb24gCQCkAwEFDGxvY2tXYXZlc0ZlZQIFV0FWRVMDCQBmAgUPdXNlckxvY2tlZEhlaWd0CQBkAgUGaGVpZ2h0BQpsb2NrUGVyaW9kCQACAQJPWW91IGNhbm5vdCBsb2NrIHNoYXJldG9rZW5zIGZvciBhIHBlcmlvZCBsZXNzIHRoYW4gd2hhdCB5b3UgaGF2ZSBhbHJlYWR5IGxvY2tlZAQTdXNlckxvY2tlZEFtb3VudE5ldwkAZAIFEHVzZXJMb2NrZWRBbW91bnQICQCRAwIIBQFpCHBheW1lbnRzAAAGYW1vdW50BBJ1c2VyTG9ja2VkSGVpZ3ROZXcJAGQCBQZoZWlnaHQFCmxvY2tQZXJpb2QEFHVzZXJBbW91bnRWaXJ0dWFsTmV3CQBkAgkAawMFE3VzZXJMb2NrZWRBbW91bnROZXcFCGxvY2tDb2VmBRJsb2NrQm9vc3RDb2VmU2NhbGUFEHVzZXJTdGFrZWRBbW91bnQJAJQKAgkAzAgCCQEMSW50ZWdlckVudHJ5AgkArAICCQCsAgIJAKwCAgUEcG9vbAIBXwUEdXNlcgUWa1VzZXJTaGFyZVRva2Vuc0xvY2tlZAUTdXNlckxvY2tlZEFtb3VudE5ldwkAzAgCCQEMSW50ZWdlckVudHJ5AgkArAICCQCsAgIJAKwCAgUEcG9vbAIBXwUEdXNlcgUca1VzZXJTaGFyZVRva2Vuc0xvY2tlZEhlaWdodAUSdXNlckxvY2tlZEhlaWd0TmV3CQDMCAIJAQxJbnRlZ2VyRW50cnkCCQCsAgIJAKwCAgkArAICBQRwb29sAgFfBQR1c2VyBRprVXNlclNoYXJlVG9rZW5zTG9ja2VkVHlwZQUIbG9ja1R5cGUJAMwIAgkBDEludGVnZXJFbnRyeQIJAKwCAgkArAICCQCsAgIFBHBvb2wCAV8FBHVzZXIFF2tVc2VyU2hhcmVUb2tlbnNWaXJ0dWFsBRR1c2VyQW1vdW50VmlydHVhbE5ldwkAzAgCCQEMSW50ZWdlckVudHJ5AgkArAICBQRwb29sBRNrU2hhcmVUb2tlbnNWaXJ0dWFsCQBkAgkAZQIFEXRvdGFsU2hhcmVWaXJ0dWFsBRF1c2VyQW1vdW50VmlydHVhbAUUdXNlckFtb3VudFZpcnR1YWxOZXcFA25pbAkAZAIFCnRvdGFsU2hhcmUICQCRAwIIBQFpCHBheW1lbnRzAAAGYW1vdW50BAtsb2NrRW50cmllcwgFDSR0MDE2NjUzMTg1ODcCXzEEDXRvdGFsU2hhcmVOZXcIBQ0kdDAxNjY1MzE4NTg3Al8yAwkAZgIJAQ5hY2NvdW50QmFsYW5jZQEFDHNoYXJlQXNzZXRJZAUNdG90YWxTaGFyZU5ldwkAAgECMEJhbGFuY2Ugb2Ygc2hhcmUtdG9rZW4gaXMgbG93ZXIgdGhhbiB0b3RhbEFtb3VudAQNJHQwMTg3MTIxODc5NAkBCWNsYWltQ2FsYwIFBHBvb2wFBHVzZXIEDGZhcm1JbnRlcmVzdAgFDSR0MDE4NzEyMTg3OTQCXzEEDWJvb3N0SW50ZXJlc3QIBQ0kdDAxODcxMjE4Nzk0Al8yBAtjbGFpbUFtb3VudAgFDSR0MDE4NzEyMTg3OTQCXzMECnRvVHJlYXN1cmUIBQ0kdDAxODcxMjE4Nzk0Al80BBFhdmFpbGFibGVGdW5kc05ldwkAZAIJARF1c2VyQXZhaWxhYmxlU1dPUAIFBHBvb2wFBHVzZXIFC2NsYWltQW1vdW50BAR1cGxwAwkAAAIJAJ0IAgkBB0FkZHJlc3MBCQDZBAEFBHBvb2wCB3ZlcnNpb24CBTMuMC4wCQD8BwQFEGxwRmFybWluZ0FkZHJlc3MCEnVwZGF0ZVVzZXJJbnRlcmVzdAkAzAgCBQR1c2VyCQDMCAIFBHBvb2wJAMwIAgUUdG90YWxVc2VyU2hhcmVUb2tlbnMFA25pbAUDbmlsAAADCQAAAgUEdXBscAUEdXBscAkAzggCCQDMCAIJAQxJbnRlZ2VyRW50cnkCCQCsAgIJAKwCAgkArAICBQRwb29sAgFfBQR1c2VyBRVrRmFybVVzZXJMYXN0SW50ZXJlc3QFDGZhcm1JbnRlcmVzdAkAzAgCCQEMSW50ZWdlckVudHJ5AgkArAICCQCsAgIJAKwCAgUEcG9vbAIBXwUEdXNlcgUWa0Jvb3N0VXNlckxhc3RJbnRlcmVzdAUNYm9vc3RJbnRlcmVzdAkAzAgCCQEMSW50ZWdlckVudHJ5AgkArAICBQRwb29sBRFrRmFybUxhc3RJbnRlcmVzdAUMZmFybUludGVyZXN0CQDMCAIJAQxJbnRlZ2VyRW50cnkCCQCsAgIFBHBvb2wFEmtCb29zdExhc3RJbnRlcmVzdAUNYm9vc3RJbnRlcmVzdAkAzAgCCQEMSW50ZWdlckVudHJ5AgkArAICBQRwb29sBRNrTGFzdEludGVyZXN0SGVpZ2h0BQZoZWlnaHQJAMwIAgkBDEludGVnZXJFbnRyeQIJAKwCAgUEcG9vbAUWa1NoYXJlVG90YWxTaGFyZVRva2VucwUNdG90YWxTaGFyZU5ldwkAzAgCCQEMSW50ZWdlckVudHJ5AgkArAICCQCsAgIJAKwCAgUEcG9vbAIBXwUEdXNlcgUOa0F2YWlsYWJsZVNXT1AFEWF2YWlsYWJsZUZ1bmRzTmV3CQDMCAIJAQdSZWlzc3VlAwUEU1dPUAUKdG9UcmVhc3VyZQYJAMwIAgkBDlNjcmlwdFRyYW5zZmVyAwUTZmFybWluZ1RyZWFzdXJlQWRkcgUKdG9UcmVhc3VyZQUEU1dPUAUDbmlsBQtsb2NrRW50cmllcwkAAgECJFN0cmljdCB2YWx1ZSBpcyBub3QgZXF1YWwgdG8gaXRzZWxmLgkAAgECJFN0cmljdCB2YWx1ZSBpcyBub3QgZXF1YWwgdG8gaXRzZWxmLgEXY2FsY1dpdGhkcmF3U2hhcmVUb2tlbnMEAWkGY2FsbGVyBHBvb2wZc2hhcmVUb2tlbnNXaXRoZHJhd0Ftb3VudAkBC3ZhbHVlT3JFbHNlAgkBCGlzQWN0aXZlAAQNc2hhcmVUb2tlbnNJZAkA2QQBCQERQGV4dHJOYXRpdmUoMTA1MykCCQEFdmFsdWUBCQCmCAEFBHBvb2wCDnNoYXJlX2Fzc2V0X2lkBAR1c2VyCQClCAEFBmNhbGxlcgQNJHQwMTk5ODYyMDA2OAkBCWNsYWltQ2FsYwIFBHBvb2wFBHVzZXIEDGZhcm1JbnRlcmVzdAgFDSR0MDE5OTg2MjAwNjgCXzEEDWJvb3N0SW50ZXJlc3QIBQ0kdDAxOTk4NjIwMDY4Al8yBAtjbGFpbUFtb3VudAgFDSR0MDE5OTg2MjAwNjgCXzMECnRvVHJlYXN1cmUIBQ0kdDAxOTk4NjIwMDY4Al80BBB1c2VyU3Rha2VkQW1vdW50CQELdmFsdWVPckVsc2UCCQCaCAIFBHRoaXMJAKwCAgkArAICCQCsAgIFBHBvb2wCAV8FBHVzZXIFFmtVc2VyU2hhcmVUb2tlbnNTdGFrZWQAAAQQdXNlckxvY2tlZEFtb3VudAkBC3ZhbHVlT3JFbHNlAgkAmggCBQR0aGlzCQCsAgIJAKwCAgkArAICBQRwb29sAgFfBQR1c2VyBRZrVXNlclNoYXJlVG9rZW5zTG9ja2VkAAAEEXVzZXJBbW91bnRWaXJ0dWFsCQELdmFsdWVPckVsc2UCCQCaCAIFBHRoaXMJAKwCAgkArAICCQCsAgIFBHBvb2wCAV8FBHVzZXIFF2tVc2VyU2hhcmVUb2tlbnNWaXJ0dWFsBRB1c2VyU3Rha2VkQW1vdW50BBN1c2VyU3Rha2VkQW1vdW50TmV3CQBlAgUQdXNlclN0YWtlZEFtb3VudAUZc2hhcmVUb2tlbnNXaXRoZHJhd0Ftb3VudAQRYXZhaWxhYmxlRnVuZHNOZXcJAGQCCQERdXNlckF2YWlsYWJsZVNXT1ACBQRwb29sBQR1c2VyBQtjbGFpbUFtb3VudAQQdG90YWxTaGFyZUFtb3VudAkBEmdldFRvdGFsU2hhcmVUb2tlbgEFBHBvb2wEEXRvdGFsU2hhcmVWaXJ0dWFsCQELdmFsdWVPckVsc2UCCQCaCAIFBHRoaXMJAKwCAgUEcG9vbAUTa1NoYXJlVG9rZW5zVmlydHVhbAUQdG90YWxTaGFyZUFtb3VudAQTdG90YWxTaGFyZUFtb3VudE5ldwkAZQIFEHRvdGFsU2hhcmVBbW91bnQFGXNoYXJlVG9rZW5zV2l0aGRyYXdBbW91bnQEFHRvdGFsU2hhcmVWaXJ0dWFsTmV3CQBlAgURdG90YWxTaGFyZVZpcnR1YWwFGXNoYXJlVG9rZW5zV2l0aGRyYXdBbW91bnQEFHVzZXJBbW91bnRWaXJ0dWFsTmV3CQBlAgURdXNlckFtb3VudFZpcnR1YWwFGXNoYXJlVG9rZW5zV2l0aGRyYXdBbW91bnQDCQBmAgUZc2hhcmVUb2tlbnNXaXRoZHJhd0Ftb3VudAUQdXNlclN0YWtlZEFtb3VudAkAAgECLFdpdGhkcmF3IGFtb3VudCBtb3JlIHRoZW4gdXNlciBsb2NrZWQgYW1vdW50AwkAZgIJAQ5hY2NvdW50QmFsYW5jZQEFDXNoYXJlVG9rZW5zSWQFEHRvdGFsU2hhcmVBbW91bnQJAAIBAjBCYWxhbmNlIG9mIHNoYXJlLXRva2VuIGlzIGxvd2VyIHRoYW4gdG90YWxBbW91bnQEBHVwbHADCQAAAgkAnQgCCQEHQWRkcmVzcwEJANkEAQUEcG9vbAIHdmVyc2lvbgIFMy4wLjAJAPwHBAUQbHBGYXJtaW5nQWRkcmVzcwISdXBkYXRlVXNlckludGVyZXN0CQDMCAIFBHVzZXIJAMwIAgUEcG9vbAkAzAgCCQBkAgUQdXNlclN0YWtlZEFtb3VudAUQdXNlckxvY2tlZEFtb3VudAUDbmlsBQNuaWwAAAMJAAACBQR1cGxwBQR1cGxwCQDMCAIJAQxJbnRlZ2VyRW50cnkCCQCsAgIJAKwCAgkArAICBQRwb29sAgFfBQR1c2VyBRVrRmFybVVzZXJMYXN0SW50ZXJlc3QFDGZhcm1JbnRlcmVzdAkAzAgCCQEMSW50ZWdlckVudHJ5AgkArAICCQCsAgIJAKwCAgUEcG9vbAIBXwUEdXNlcgUWa0Jvb3N0VXNlckxhc3RJbnRlcmVzdAUNYm9vc3RJbnRlcmVzdAkAzAgCCQEMSW50ZWdlckVudHJ5AgkArAICBQRwb29sBRFrRmFybUxhc3RJbnRlcmVzdAUMZmFybUludGVyZXN0CQDMCAIJAQxJbnRlZ2VyRW50cnkCCQCsAgIFBHBvb2wFEmtCb29zdExhc3RJbnRlcmVzdAUNYm9vc3RJbnRlcmVzdAkAzAgCCQEMSW50ZWdlckVudHJ5AgkArAICBQRwb29sBRNrTGFzdEludGVyZXN0SGVpZ2h0BQZoZWlnaHQJAMwIAgkBDEludGVnZXJFbnRyeQIJAKwCAgkArAICCQCsAgIFBHBvb2wCAV8FBHVzZXIFFmtVc2VyU2hhcmVUb2tlbnNTdGFrZWQFE3VzZXJTdGFrZWRBbW91bnROZXcJAMwIAgkBDEludGVnZXJFbnRyeQIJAKwCAgkArAICCQCsAgIFBHBvb2wCAV8FBHVzZXIFF2tVc2VyU2hhcmVUb2tlbnNWaXJ0dWFsBRR1c2VyQW1vdW50VmlydHVhbE5ldwkAzAgCCQEMSW50ZWdlckVudHJ5AgkArAICBQRwb29sBRZrU2hhcmVUb3RhbFNoYXJlVG9rZW5zBRN0b3RhbFNoYXJlQW1vdW50TmV3CQDMCAIJAQxJbnRlZ2VyRW50cnkCCQCsAgIFBHBvb2wFE2tTaGFyZVRva2Vuc1ZpcnR1YWwFFHRvdGFsU2hhcmVWaXJ0dWFsTmV3CQDMCAIJAQxJbnRlZ2VyRW50cnkCCQCsAgIJAKwCAgkArAICBQRwb29sAgFfBQR1c2VyBQ5rQXZhaWxhYmxlU1dPUAURYXZhaWxhYmxlRnVuZHNOZXcJAMwIAgkBB1JlaXNzdWUDBQRTV09QBQp0b1RyZWFzdXJlBgkAzAgCCQEOU2NyaXB0VHJhbnNmZXIDBRNmYXJtaW5nVHJlYXN1cmVBZGRyBQp0b1RyZWFzdXJlBQRTV09QCQDMCAIJAQ5TY3JpcHRUcmFuc2ZlcgMIBQFpBmNhbGxlcgUZc2hhcmVUb2tlbnNXaXRoZHJhd0Ftb3VudAUNc2hhcmVUb2tlbnNJZAUDbmlsCQACAQIkU3RyaWN0IHZhbHVlIGlzIG5vdCBlcXVhbCB0byBpdHNlbGYuAQljYWxjQ2xhaW0DAWkEcG9vbAZjYWxsZXIEDXNoYXJlVG9rZW5zSWQJANkEAQkBEUBleHRyTmF0aXZlKDEwNTMpAgkBBXZhbHVlAQkApggBBQRwb29sAg5zaGFyZV9hc3NldF9pZAQEdXNlcgkApQgBBQZjYWxsZXIEEHNoYXJlVG9rZW5Mb2NrZWQJARJnZXRUb3RhbFNoYXJlVG9rZW4BBQRwb29sBA0kdDAyMjU4MTIyNjYzCQEJY2xhaW1DYWxjAgUEcG9vbAUEdXNlcgQMZmFybUludGVyZXN0CAUNJHQwMjI1ODEyMjY2MwJfMQQNYm9vc3RJbnRlcmVzdAgFDSR0MDIyNTgxMjI2NjMCXzIEC2NsYWltQW1vdW50CAUNJHQwMjI1ODEyMjY2MwJfMwQKdG9UcmVhc3VyZQgFDSR0MDIyNTgxMjI2NjMCXzQEDWF2YWlsYWJsZUZ1bmQJAGQCCQERdXNlckF2YWlsYWJsZVNXT1ACBQRwb29sBQR1c2VyBQtjbGFpbUFtb3VudAMJAGYCCQEOYWNjb3VudEJhbGFuY2UBBQ1zaGFyZVRva2Vuc0lkBRBzaGFyZVRva2VuTG9ja2VkCQACAQIwQmFsYW5jZSBvZiBzaGFyZS10b2tlbiBpcyBsb3dlciB0aGFuIHRvdGFsQW1vdW50BAZ1VHJhbnMDCQECIT0CCAUBaQZjYWxsZXIFBHRoaXMJAMwIAgkBDlNjcmlwdFRyYW5zZmVyAwgFAWkGY2FsbGVyBQ1hdmFpbGFibGVGdW5kBQRTV09QBQNuaWwFA25pbAkAlAoCCQDOCAIJAMwIAgkBDEludGVnZXJFbnRyeQIJAKwCAgkArAICCQCsAgIFBHBvb2wCAV8FBHVzZXIFFWtGYXJtVXNlckxhc3RJbnRlcmVzdAUMZmFybUludGVyZXN0CQDMCAIJAQxJbnRlZ2VyRW50cnkCCQCsAgIJAKwCAgkArAICBQRwb29sAgFfBQR1c2VyBRZrQm9vc3RVc2VyTGFzdEludGVyZXN0BQ1ib29zdEludGVyZXN0CQDMCAIJAQxJbnRlZ2VyRW50cnkCCQCsAgIFBHBvb2wFEWtGYXJtTGFzdEludGVyZXN0BQxmYXJtSW50ZXJlc3QJAMwIAgkBDEludGVnZXJFbnRyeQIJAKwCAgUEcG9vbAUSa0Jvb3N0TGFzdEludGVyZXN0BQ1ib29zdEludGVyZXN0CQDMCAIJAQxJbnRlZ2VyRW50cnkCCQCsAgIFBHBvb2wFE2tMYXN0SW50ZXJlc3RIZWlnaHQFBmhlaWdodAkAzAgCCQEMSW50ZWdlckVudHJ5AgkArAICCQCsAgIJAKwCAgUEcG9vbAIBXwUEdXNlcgUOa0F2YWlsYWJsZVNXT1AAAAkAzAgCCQEHUmVpc3N1ZQMFBFNXT1AJAGQCBQp0b1RyZWFzdXJlBQ1hdmFpbGFibGVGdW5kBgkAzAgCCQEOU2NyaXB0VHJhbnNmZXIDBRNmYXJtaW5nVHJlYXN1cmVBZGRyBQp0b1RyZWFzdXJlBQRTV09QBQNuaWwFBnVUcmFucwUNYXZhaWxhYmxlRnVuZBEBaQEEaW5pdAEHZWFybHlMUAMJAQlpc0RlZmluZWQBCQCdCAIFBHRoaXMFB2tTV09QaWQJAAIBAhhTV09QIGFscmVhZHkgaW5pdGlhbGl6ZWQECmluaXRBbW91bnQAgIDpg7HeFgQJU1dPUGlzc3VlCQDCCAUCBFNXT1ACE1NXT1AgcHJvdG9jb2wgdG9rZW4FCmluaXRBbW91bnQACAYEBlNXT1BpZAkAuAgBBQlTV09QaXNzdWUJAMwIAgkBDEJvb2xlYW5FbnRyeQIFB2tBY3RpdmUGCQDMCAIJAMIIBQIEU1dPUAITU1dPUCBwcm90b2NvbCB0b2tlbgUKaW5pdEFtb3VudAAIBgkAzAgCCQELU3RyaW5nRW50cnkCBQdrU1dPUGlkCQDYBAEFBlNXT1BpZAUDbmlsAWkBFGluaXRQb29sU2hhcmVGYXJtaW5nAQRwb29sCQELdmFsdWVPckVsc2UCCQELaXNBZG1pbkNhbGwBBQFpCQDMCAIJAQxJbnRlZ2VyRW50cnkCCQCsAgIFBHBvb2wFFmtTaGFyZVRvdGFsU2hhcmVUb2tlbnMAAAkAzAgCCQEMSW50ZWdlckVudHJ5AgkArAICBQRwb29sBRFrRmFybUxhc3RJbnRlcmVzdAAACQDMCAIJAQxJbnRlZ2VyRW50cnkCCQCsAgIFBHBvb2wFEmtCb29zdExhc3RJbnRlcmVzdAAACQDMCAIJAQxJbnRlZ2VyRW50cnkCCQCsAgIFBHBvb2wFE2tMYXN0SW50ZXJlc3RIZWlnaHQFBmhlaWdodAUDbmlsAWkBEnVwZGF0ZVBvb2xJbnRlcmVzdAEEcG9vbAkBC3ZhbHVlT3JFbHNlAgkBCGlzQWN0aXZlAAMJAQIhPQIIBQFpBmNhbGxlcgUKZ292QWRkcmVzcwkAAgECJk9ubHkgR292ZXJuYW5jZSBjYW4gY2FsbCB0aGlzIGZ1bmN0aW9uBAR1c2VyCQClCAEJAKcIAQURYWRtaW5JbnZva2VQdWJLZXkEDSR0MDI0NTQwMjQ2MTQJAQljbGFpbUNhbGMCBQRwb29sBQR1c2VyBAxmYXJtSW50ZXJlc3QIBQ0kdDAyNDU0MDI0NjE0Al8xBA1ib29zdEludGVyZXN0CAUNJHQwMjQ1NDAyNDYxNAJfMgQPYm9vc3RMUGludGVyZXN0CAUNJHQwMjQ1NDAyNDYxNAJfMwkAzAgCCQEMSW50ZWdlckVudHJ5AgkArAICBQRwb29sBRFrRmFybUxhc3RJbnRlcmVzdAUMZmFybUludGVyZXN0CQDMCAIJAQxJbnRlZ2VyRW50cnkCCQCsAgIFBHBvb2wFEmtCb29zdExhc3RJbnRlcmVzdAUNYm9vc3RJbnRlcmVzdAkAzAgCCQEMSW50ZWdlckVudHJ5AgkArAICBQRwb29sBRNrTGFzdEludGVyZXN0SGVpZ2h0BQZoZWlnaHQFA25pbAFpAQ9sb2NrU2hhcmVUb2tlbnMCBHBvb2wIbG9ja1R5cGUJAQt2YWx1ZU9yRWxzZQIJAQhpc0FjdGl2ZQAJARNjYWxjTG9ja1NoYXJlVG9rZW5zBAUBaQgFAWkGY2FsbGVyBQRwb29sBQhsb2NrVHlwZQFpARdsb2NrU2hhcmVUb2tlbnNGcm9tUG9vbAMLY2FsbGVyQnl0ZXMEcG9vbAhsb2NrVHlwZQkBC3ZhbHVlT3JFbHNlAgkBCGlzQWN0aXZlAAkBC3ZhbHVlT3JFbHNlAgkBCmlzUG9vbENhbGwCBQFpBQRwb29sCQETY2FsY0xvY2tTaGFyZVRva2VucwQFAWkJAQdBZGRyZXNzAQULY2FsbGVyQnl0ZXMFBHBvb2wFCGxvY2tUeXBlAWkBFWxvY2tTdGFrZWRTaGFyZVRva2VucwMEcG9vbAhsb2NrVHlwZQpsb2NrQW1vdW50CQELdmFsdWVPckVsc2UCCQEIaXNBY3RpdmUABAxzaGFyZUFzc2V0SWQJAQ9nZXRTaGFyZUFzc2V0SWQBBQRwb29sBAR1c2VyCQClCAEIBQFpBmNhbGxlcgQKdG90YWxTaGFyZQkBEmdldFRvdGFsU2hhcmVUb2tlbgEFBHBvb2wEEXRvdGFsU2hhcmVWaXJ0dWFsCQELdmFsdWVPckVsc2UCCQCaCAIFBHRoaXMJAKwCAgUEcG9vbAUTa1NoYXJlVG9rZW5zVmlydHVhbAUKdG90YWxTaGFyZQQQdXNlclN0YWtlZEFtb3VudAkBC3ZhbHVlT3JFbHNlAgkAmggCBQR0aGlzCQCsAgIJAKwCAgkArAICBQRwb29sAgFfBQR1c2VyBRZrVXNlclNoYXJlVG9rZW5zU3Rha2VkAAAED3VzZXJMb2NrZWRIZWlndAkBC3ZhbHVlT3JFbHNlAgkAmggCBQR0aGlzCQCsAgIJAKwCAgkArAICBQRwb29sAgFfBQR1c2VyBRxrVXNlclNoYXJlVG9rZW5zTG9ja2VkSGVpZ2h0AAAEEHVzZXJMb2NrZWRBbW91bnQJAQt2YWx1ZU9yRWxzZQIJAJoIAgUEdGhpcwkArAICCQCsAgIJAKwCAgUEcG9vbAIBXwUEdXNlcgUWa1VzZXJTaGFyZVRva2Vuc0xvY2tlZAAABBF1c2VyQW1vdW50VmlydHVhbAkBC3ZhbHVlT3JFbHNlAgkAmggCBQR0aGlzCQCsAgIJAKwCAgkArAICBQRwb29sAgFfBQR1c2VyBRdrVXNlclNoYXJlVG9rZW5zVmlydHVhbAUQdXNlclN0YWtlZEFtb3VudAQUdG90YWxVc2VyU2hhcmVUb2tlbnMJAGQCBRB1c2VyU3Rha2VkQW1vdW50BRB1c2VyTG9ja2VkQW1vdW50BA0kdDAyNjAzMzI2MDg1CQENZ2V0TG9ja1BhcmFtcwEFCGxvY2tUeXBlBApsb2NrUGVyaW9kCAUNJHQwMjYwMzMyNjA4NQJfMQQIbG9ja0NvZWYIBQ0kdDAyNjAzMzI2MDg1Al8yBAxsb2NrV2F2ZXNGZWUJARFAZXh0ck5hdGl2ZSgxMDUwKQIFBHRoaXMFDWtMb2NrV2F2ZXNGZWUDCQBmAgkBFWdldEhlaWdodEZpcnN0SGFydmVzdAEFBHBvb2wFBmhlaWdodAkAAgECMllvdSBjYW4ndCBsb2NrIHNoYXJlVG9rZW5zIHRpbGwgZmlyc3QgaGFydmVzdCBlbmQuAwkAZwIAAAUIbG9ja1R5cGUJAAIBAhRsb2NrVHlwZSBtdXN0IGJlID4gMAMJAGYCBQpsb2NrQW1vdW50BRB1c2VyU3Rha2VkQW1vdW50CQACAQkArAICAhlZb3UgY2FuJ3QgbG9jayBtb3JlIHRoYW4gCQCkAwEFEHVzZXJTdGFrZWRBbW91bnQDCQBmAgkBDmFjY291bnRCYWxhbmNlAQUMc2hhcmVBc3NldElkBQp0b3RhbFNoYXJlCQACAQIwQmFsYW5jZSBvZiBzaGFyZS10b2tlbiBpcyBsb3dlciB0aGFuIHRvdGFsQW1vdW50AwMJAAACBQ91c2VyTG9ja2VkSGVpZ3QAAAMDCQBmAgABCQCQAwEIBQFpCHBheW1lbnRzBgkBAiE9AggJAJEDAggFAWkIcGF5bWVudHMAAAdhc3NldElkBQR1bml0BgkAZgIFDGxvY2tXYXZlc0ZlZQgJAJEDAggFAWkIcGF5bWVudHMAAAZhbW91bnQHCQACAQkArAICCQCsAgICK1lvdSBuZWVkIHRvIHBheSBhZGRpdGlvbmFsIHdhdmVzIGNvbWlzc2lvbiAJAKQDAQUMbG9ja1dhdmVzRmVlAgVXQVZFUwMDCQAAAgUPdXNlckxvY2tlZEhlaWd0AAAJAGcCAAAFCmxvY2tBbW91bnQHCQACAQIhbG9ja0Ftb3VudCBtdXN0IGJlIGdyZWF0ZXIgdGhhbiAwAwkAZgIAAAUKbG9ja0Ftb3VudAkAAgECG2xvY2tBbW91bnQgbXVzdCBiZSBwb3NpdGl2ZQMJAGYCBQ91c2VyTG9ja2VkSGVpZ3QJAGQCBQZoZWlnaHQFCmxvY2tQZXJpb2QJAAIBAk9Zb3UgY2Fubm90IGxvY2sgc2hhcmV0b2tlbnMgZm9yIGEgcGVyaW9kIGxlc3MgdGhhbiB3aGF0IHlvdSBoYXZlIGFscmVhZHkgbG9ja2VkBBN1c2VyTG9ja2VkQW1vdW50TmV3CQBkAgUQdXNlckxvY2tlZEFtb3VudAUKbG9ja0Ftb3VudAQTdXNlclN0YWtlZEFtb3VudE5ldwkAZQIFEHVzZXJTdGFrZWRBbW91bnQFCmxvY2tBbW91bnQEEnVzZXJMb2NrZWRIZWlndE5ldwkAZAIFBmhlaWdodAUKbG9ja1BlcmlvZAQUdXNlckFtb3VudFZpcnR1YWxOZXcJAGQCCQBrAwUTdXNlckxvY2tlZEFtb3VudE5ldwUIbG9ja0NvZWYFEmxvY2tCb29zdENvZWZTY2FsZQUTdXNlclN0YWtlZEFtb3VudE5ldwQNJHQwMjczNzUyNzQ1NwkBCWNsYWltQ2FsYwIFBHBvb2wFBHVzZXIEDGZhcm1JbnRlcmVzdAgFDSR0MDI3Mzc1Mjc0NTcCXzEEDWJvb3N0SW50ZXJlc3QIBQ0kdDAyNzM3NTI3NDU3Al8yBAtjbGFpbUFtb3VudAgFDSR0MDI3Mzc1Mjc0NTcCXzMECnRvVHJlYXN1cmUIBQ0kdDAyNzM3NTI3NDU3Al80BBFhdmFpbGFibGVGdW5kc05ldwkAZAIJARF1c2VyQXZhaWxhYmxlU1dPUAIFBHBvb2wFBHVzZXIFC2NsYWltQW1vdW50CQDMCAIJAQxJbnRlZ2VyRW50cnkCCQCsAgIJAKwCAgkArAICBQRwb29sAgFfBQR1c2VyBRZrVXNlclNoYXJlVG9rZW5zU3Rha2VkBRN1c2VyU3Rha2VkQW1vdW50TmV3CQDMCAIJAQxJbnRlZ2VyRW50cnkCCQCsAgIJAKwCAgkArAICBQRwb29sAgFfBQR1c2VyBRZrVXNlclNoYXJlVG9rZW5zTG9ja2VkBRN1c2VyTG9ja2VkQW1vdW50TmV3CQDMCAIJAQxJbnRlZ2VyRW50cnkCCQCsAgIJAKwCAgkArAICBQRwb29sAgFfBQR1c2VyBRxrVXNlclNoYXJlVG9rZW5zTG9ja2VkSGVpZ2h0BRJ1c2VyTG9ja2VkSGVpZ3ROZXcJAMwIAgkBDEludGVnZXJFbnRyeQIJAKwCAgkArAICCQCsAgIFBHBvb2wCAV8FBHVzZXIFGmtVc2VyU2hhcmVUb2tlbnNMb2NrZWRUeXBlBQhsb2NrVHlwZQkAzAgCCQEMSW50ZWdlckVudHJ5AgkArAICCQCsAgIJAKwCAgUEcG9vbAIBXwUEdXNlcgUXa1VzZXJTaGFyZVRva2Vuc1ZpcnR1YWwFFHVzZXJBbW91bnRWaXJ0dWFsTmV3CQDMCAIJAQxJbnRlZ2VyRW50cnkCCQCsAgIFBHBvb2wFE2tTaGFyZVRva2Vuc1ZpcnR1YWwJAGQCCQBlAgURdG90YWxTaGFyZVZpcnR1YWwFEXVzZXJBbW91bnRWaXJ0dWFsBRR1c2VyQW1vdW50VmlydHVhbE5ldwkAzAgCCQEMSW50ZWdlckVudHJ5AgkArAICCQCsAgIJAKwCAgUEcG9vbAIBXwUEdXNlcgUVa0Zhcm1Vc2VyTGFzdEludGVyZXN0BQxmYXJtSW50ZXJlc3QJAMwIAgkBDEludGVnZXJFbnRyeQIJAKwCAgkArAICCQCsAgIFBHBvb2wCAV8FBHVzZXIFFmtCb29zdFVzZXJMYXN0SW50ZXJlc3QFDWJvb3N0SW50ZXJlc3QJAMwIAgkBDEludGVnZXJFbnRyeQIJAKwCAgUEcG9vbAURa0Zhcm1MYXN0SW50ZXJlc3QFDGZhcm1JbnRlcmVzdAkAzAgCCQEMSW50ZWdlckVudHJ5AgkArAICBQRwb29sBRJrQm9vc3RMYXN0SW50ZXJlc3QFDWJvb3N0SW50ZXJlc3QJAMwIAgkBDEludGVnZXJFbnRyeQIJAKwCAgUEcG9vbAUTa0xhc3RJbnRlcmVzdEhlaWdodAUGaGVpZ2h0CQDMCAIJAQxJbnRlZ2VyRW50cnkCCQCsAgIJAKwCAgkArAICBQRwb29sAgFfBQR1c2VyBQ5rQXZhaWxhYmxlU1dPUAURYXZhaWxhYmxlRnVuZHNOZXcJAMwIAgkBB1JlaXNzdWUDBQRTV09QBQp0b1RyZWFzdXJlBgkAzAgCCQEOU2NyaXB0VHJhbnNmZXIDBRNmYXJtaW5nVHJlYXN1cmVBZGRyBQp0b1RyZWFzdXJlBQRTV09QBQNuaWwBaQEOdW5sb2NrVXNlckxvY2sCBHBvb2wEdXNlcgkBC3ZhbHVlT3JFbHNlAgkBCGlzQWN0aXZlAAQMbG9ja1dhdmVzRmVlCQERQGV4dHJOYXRpdmUoMTA1MCkCBQR0aGlzBQ1rTG9ja1dhdmVzRmVlBA91c2VyTG9ja2VkSGVpZ3QJARN2YWx1ZU9yRXJyb3JNZXNzYWdlAgkAmggCBQR0aGlzCQCsAgIJAKwCAgkArAICBQRwb29sAgFfBQR1c2VyBRxrVXNlclNoYXJlVG9rZW5zTG9ja2VkSGVpZ2h0CQCsAgIJAKwCAgkArAICCQCsAgICEVRoZXJlIGlzIG5vIHBvb2wgBQRwb29sAgkgb3IgdXNlciAFBHVzZXICCXdpdGggbG9jawQRdG90YWxTaGFyZVZpcnR1YWwJARFAZXh0ck5hdGl2ZSgxMDUwKQIFBHRoaXMJAKwCAgUEcG9vbAUTa1NoYXJlVG9rZW5zVmlydHVhbAQQdXNlclN0YWtlZEFtb3VudAkBC3ZhbHVlT3JFbHNlAgkAmggCBQR0aGlzCQCsAgIJAKwCAgkArAICBQRwb29sAgFfBQR1c2VyBRZrVXNlclNoYXJlVG9rZW5zU3Rha2VkAAAEEHVzZXJMb2NrZWRBbW91bnQJAQt2YWx1ZU9yRWxzZQIJAJoIAgUEdGhpcwkArAICCQCsAgIJAKwCAgUEcG9vbAIBXwUEdXNlcgUWa1VzZXJTaGFyZVRva2Vuc0xvY2tlZAAABBF1c2VyQW1vdW50VmlydHVhbAkBC3ZhbHVlT3JFbHNlAgkAmggCBQR0aGlzCQCsAgIJAKwCAgkArAICBQRwb29sAgFfBQR1c2VyBRdrVXNlclNoYXJlVG9rZW5zVmlydHVhbAUQdXNlclN0YWtlZEFtb3VudAMJAGYCBQ91c2VyTG9ja2VkSGVpZ3QFBmhlaWdodAkAAgEJAKwCAgIiWW91IGNhbid0IHVubG9jayBzaGFyZXRva2VucyB0aWxsIAkApAMBBQ91c2VyTG9ja2VkSGVpZ3QEE3VzZXJTdGFrZWRBbW91bnROZXcJAGQCBRB1c2VyU3Rha2VkQW1vdW50BRB1c2VyTG9ja2VkQW1vdW50BA0kdDAyOTUzNDI5NjE2CQEJY2xhaW1DYWxjAgUEcG9vbAUEdXNlcgQMZmFybUludGVyZXN0CAUNJHQwMjk1MzQyOTYxNgJfMQQNYm9vc3RJbnRlcmVzdAgFDSR0MDI5NTM0Mjk2MTYCXzIEC2NsYWltQW1vdW50CAUNJHQwMjk1MzQyOTYxNgJfMwQKdG9UcmVhc3VyZQgFDSR0MDI5NTM0Mjk2MTYCXzQEEWF2YWlsYWJsZUZ1bmRzTmV3CQBkAgkBEXVzZXJBdmFpbGFibGVTV09QAgUEcG9vbAUEdXNlcgULY2xhaW1BbW91bnQJAMwIAgkBDEludGVnZXJFbnRyeQIJAKwCAgkArAICCQCsAgIFBHBvb2wCAV8FBHVzZXIFFWtGYXJtVXNlckxhc3RJbnRlcmVzdAUMZmFybUludGVyZXN0CQDMCAIJAQxJbnRlZ2VyRW50cnkCCQCsAgIJAKwCAgkArAICBQRwb29sAgFfBQR1c2VyBRZrQm9vc3RVc2VyTGFzdEludGVyZXN0BQ1ib29zdEludGVyZXN0CQDMCAIJAQxJbnRlZ2VyRW50cnkCCQCsAgIFBHBvb2wFEWtGYXJtTGFzdEludGVyZXN0BQxmYXJtSW50ZXJlc3QJAMwIAgkBDEludGVnZXJFbnRyeQIJAKwCAgUEcG9vbAUSa0Jvb3N0TGFzdEludGVyZXN0BQ1ib29zdEludGVyZXN0CQDMCAIJAQxJbnRlZ2VyRW50cnkCCQCsAgIFBHBvb2wFE2tMYXN0SW50ZXJlc3RIZWlnaHQFBmhlaWdodAkAzAgCCQEMSW50ZWdlckVudHJ5AgkArAICCQCsAgIJAKwCAgUEcG9vbAIBXwUEdXNlcgUWa1VzZXJTaGFyZVRva2Vuc1N0YWtlZAUTdXNlclN0YWtlZEFtb3VudE5ldwkAzAgCCQEMSW50ZWdlckVudHJ5AgkArAICCQCsAgIJAKwCAgUEcG9vbAIBXwUEdXNlcgUXa1VzZXJTaGFyZVRva2Vuc1ZpcnR1YWwFE3VzZXJTdGFrZWRBbW91bnROZXcJAMwIAgkBDEludGVnZXJFbnRyeQIJAKwCAgUEcG9vbAUTa1NoYXJlVG9rZW5zVmlydHVhbAkAZAIJAGUCBRF0b3RhbFNoYXJlVmlydHVhbAURdXNlckFtb3VudFZpcnR1YWwFE3VzZXJTdGFrZWRBbW91bnROZXcJAMwIAgkBDEludGVnZXJFbnRyeQIJAKwCAgkArAICCQCsAgIFBHBvb2wCAV8FBHVzZXIFDmtBdmFpbGFibGVTV09QBRFhdmFpbGFibGVGdW5kc05ldwkAzAgCCQELRGVsZXRlRW50cnkBCQCsAgIJAKwCAgkArAICBQRwb29sAgFfBQR1c2VyBRZrVXNlclNoYXJlVG9rZW5zTG9ja2VkCQDMCAIJAQtEZWxldGVFbnRyeQEJAKwCAgkArAICCQCsAgIFBHBvb2wCAV8FBHVzZXIFHGtVc2VyU2hhcmVUb2tlbnNMb2NrZWRIZWlnaHQJAMwIAgkBC0RlbGV0ZUVudHJ5AQkArAICCQCsAgIJAKwCAgUEcG9vbAIBXwUEdXNlcgUaa1VzZXJTaGFyZVRva2Vuc0xvY2tlZFR5cGUJAMwIAgkBB1JlaXNzdWUDBQRTV09QBQp0b1RyZWFzdXJlBgkAzAgCCQEOU2NyaXB0VHJhbnNmZXIDBRNmYXJtaW5nVHJlYXN1cmVBZGRyBQp0b1RyZWFzdXJlBQRTV09QCQDMCAIJAQ5TY3JpcHRUcmFuc2ZlcgMIBQFpBmNhbGxlcgUMbG9ja1dhdmVzRmVlBQR1bml0BQNuaWwBaQETd2l0aGRyYXdTaGFyZVRva2VucwIEcG9vbBlzaGFyZVRva2Vuc1dpdGhkcmF3QW1vdW50CQELdmFsdWVPckVsc2UCCQEIaXNBY3RpdmUACQEXY2FsY1dpdGhkcmF3U2hhcmVUb2tlbnMEBQFpCAUBaQZjYWxsZXIFBHBvb2wFGXNoYXJlVG9rZW5zV2l0aGRyYXdBbW91bnQBaQEbd2l0aGRyYXdTaGFyZVRva2Vuc0Zyb21Qb29sAwtjYWxsZXJCeXRlcwRwb29sGXNoYXJlVG9rZW5zV2l0aGRyYXdBbW91bnQJAQt2YWx1ZU9yRWxzZQIJAQhpc0FjdGl2ZQAJAQt2YWx1ZU9yRWxzZQIJAQppc1Bvb2xDYWxsAgUBaQUEcG9vbAkBF2NhbGNXaXRoZHJhd1NoYXJlVG9rZW5zBAUBaQkBB0FkZHJlc3MBBQtjYWxsZXJCeXRlcwUEcG9vbAUZc2hhcmVUb2tlbnNXaXRoZHJhd0Ftb3VudAFpAQVjbGFpbQEEcG9vbAkBC3ZhbHVlT3JFbHNlAgkBCGlzQWN0aXZlAAQBcgkBCWNhbGNDbGFpbQMFAWkFBHBvb2wIBQFpBmNhbGxlcgMJAAACCAUBcgJfMgAACQACAQIZWW91IGhhdmUgMCBhdmFpbGFibGUgU1dPUAUBcgFpAQ1jbGFpbUludGVybmFsAgRwb29sBmNhbGxlcgkBC3ZhbHVlT3JFbHNlAgkBCGlzQWN0aXZlAAkBC3ZhbHVlT3JFbHNlAgkBCmlzU2VsZkNhbGwBBQFpCQEJY2FsY0NsYWltAwUBaQUEcG9vbAkBB0FkZHJlc3MBBQZjYWxsZXIBaQENY2xhaW1BbmRTdGFrZQEEcG9vbAkBC3ZhbHVlT3JFbHNlAgkBCGlzQWN0aXZlAAQLY2xhaW1BbW91bnQKAAFACQD8BwQFBHRoaXMCDWNsYWltSW50ZXJuYWwJAMwIAgUEcG9vbAkAzAgCCAgFAWkGY2FsbGVyBWJ5dGVzBQNuaWwFA25pbAMJAAECBQFAAgNJbnQFAUAJAAIBCQCsAgIJAAMBBQFAAhggY291bGRuJ3QgYmUgY2FzdCB0byBJbnQDCQAAAgULY2xhaW1BbW91bnQFC2NsYWltQW1vdW50AwkAAAIFC2NsYWltQW1vdW50AAAJAAIBAhlZb3UgaGF2ZSAwIGF2YWlsYWJsZSBTV09QBApzdGFrZVRvR292CQD8BwQFCmdvdkFkZHJlc3MCE2xvY2tTV09QRnJvbUZhcm1pbmcFA25pbAkAzAgCCQEPQXR0YWNoZWRQYXltZW50AgUEU1dPUAULY2xhaW1BbW91bnQFA25pbAMJAAACBQpzdGFrZVRvR292BQpzdGFrZVRvR292BQNuaWwJAAIBAiRTdHJpY3QgdmFsdWUgaXMgbm90IGVxdWFsIHRvIGl0c2VsZi4JAAIBAiRTdHJpY3QgdmFsdWUgaXMgbm90IGVxdWFsIHRvIGl0c2VsZi4BaQEIY2xhaW1BbGwBBXBvb2xzCQELdmFsdWVPckVsc2UCCQEIaXNBY3RpdmUACgEIY2xhaW1JbnYCCmNsYWltVG90YWwEcG9vbAQLY2xhaW1BbW91bnQKAAFACQD8BwQFBHRoaXMCDWNsYWltSW50ZXJuYWwJAMwIAgUEcG9vbAkAzAgCCAgFAWkGY2FsbGVyBWJ5dGVzBQNuaWwFA25pbAMJAAECBQFAAgNJbnQFAUAJAAIBCQCsAgIJAAMBBQFAAhggY291bGRuJ3QgYmUgY2FzdCB0byBJbnQDCQAAAgULY2xhaW1BbW91bnQFC2NsYWltQW1vdW50CQBkAgUKY2xhaW1Ub3RhbAULY2xhaW1BbW91bnQJAAIBAiRTdHJpY3QgdmFsdWUgaXMgbm90IGVxdWFsIHRvIGl0c2VsZi4ECmNsYWltVG90YWwKAAIkbAUFcG9vbHMKAAIkcwkAkAMBBQIkbAoABSRhY2MwAAAKAQUkZjBfMQICJGECJGkDCQBnAgUCJGkFAiRzBQIkYQkBCGNsYWltSW52AgUCJGEJAJEDAgUCJGwFAiRpCgEFJGYwXzICAiRhAiRpAwkAZwIFAiRpBQIkcwUCJGEJAAIBAhRMaXN0IHNpemUgZXhjZWVkcyA2MAkBBSRmMF8yAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgUFJGFjYzAAAAABAAIAAwAEAAUABgAHAAgACQAKAAsADAANAA4ADwAQABEAEgATABQAFQAWABcAGAAZABoAGwAcAB0AHgAfACAAIQAiACMAJAAlACYAJwAoACkAKgArACwALQAuAC8AMAAxADIAMwA0ADUANgA3ADgAOQA6ADsAPAMJAAACBQpjbGFpbVRvdGFsAAAJAAIBAhlZb3UgaGF2ZSAwIGF2YWlsYWJsZSBTV09QCQDMCAIJAQ5TY3JpcHRUcmFuc2ZlcgMIBQFpBmNhbGxlcgUKY2xhaW1Ub3RhbAUEU1dPUAUDbmlsAWkBEGNsYWltQWxsQW5kU3Rha2UBBXBvb2xzCQELdmFsdWVPckVsc2UCCQEIaXNBY3RpdmUACgEIY2xhaW1JbnYCCmNsYWltVG90YWwEcG9vbAQLY2xhaW1BbW91bnQKAAFACQD8BwQFBHRoaXMCDWNsYWltSW50ZXJuYWwJAMwIAgUEcG9vbAkAzAgCCAgFAWkGY2FsbGVyBWJ5dGVzBQNuaWwFA25pbAMJAAECBQFAAgNJbnQFAUAJAAIBCQCsAgIJAAMBBQFAAhggY291bGRuJ3QgYmUgY2FzdCB0byBJbnQDCQAAAgULY2xhaW1BbW91bnQFC2NsYWltQW1vdW50CQBkAgUKY2xhaW1Ub3RhbAULY2xhaW1BbW91bnQJAAIBAiRTdHJpY3QgdmFsdWUgaXMgbm90IGVxdWFsIHRvIGl0c2VsZi4ECmNsYWltVG90YWwKAAIkbAUFcG9vbHMKAAIkcwkAkAMBBQIkbAoABSRhY2MwAAAKAQUkZjBfMQICJGECJGkDCQBnAgUCJGkFAiRzBQIkYQkBCGNsYWltSW52AgUCJGEJAJEDAgUCJGwFAiRpCgEFJGYwXzICAiRhAiRpAwkAZwIFAiRpBQIkcwUCJGEJAAIBAhRMaXN0IHNpemUgZXhjZWVkcyA2MAkBBSRmMF8yAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgUFJGFjYzAAAAABAAIAAwAEAAUABgAHAAgACQAKAAsADAANAA4ADwAQABEAEgATABQAFQAWABcAGAAZABoAGwAcAB0AHgAfACAAIQAiACMAJAAlACYAJwAoACkAKgArACwALQAuAC8AMAAxADIAMwA0ADUANgA3ADgAOQA6ADsAPAMJAAACBQpjbGFpbVRvdGFsAAAJAAIBAhlZb3UgaGF2ZSAwIGF2YWlsYWJsZSBTV09QBApzdGFrZVRvR292CQD8BwQFCmdvdkFkZHJlc3MCE2xvY2tTV09QRnJvbUZhcm1pbmcFA25pbAkAzAgCCQEPQXR0YWNoZWRQYXltZW50AgUEU1dPUAUKY2xhaW1Ub3RhbAUDbmlsAwkAAAIFCnN0YWtlVG9Hb3YFCnN0YWtlVG9Hb3YFA25pbAkAAgECJFN0cmljdCB2YWx1ZSBpcyBub3QgZXF1YWwgdG8gaXRzZWxmLgFpARd1cGRhdGVVc2VyQm9vc3RJbnRlcmVzdAIEcG9vbAR1c2VyCQELdmFsdWVPckVsc2UCCQEIaXNBY3RpdmUAAwkBAiE9AggFAWkGY2FsbGVyBQ12b3RpbmdBZGRyZXNzCQACAQIjT25seSB2b2l0aW5nIGNhbiBjYWxsIHRoaXMgZnVuY3Rpb24EDSR0MDMzMDkwMzMxNzIJAQljbGFpbUNhbGMCBQRwb29sBQR1c2VyBAxmYXJtSW50ZXJlc3QIBQ0kdDAzMzA5MDMzMTcyAl8xBA1ib29zdEludGVyZXN0CAUNJHQwMzMwOTAzMzE3MgJfMgQLY2xhaW1BbW91bnQIBQ0kdDAzMzA5MDMzMTcyAl8zBAp0b1RyZWFzdXJlCAUNJHQwMzMwOTAzMzE3MgJfNAQRYXZhaWxhYmxlRnVuZHNOZXcJAGQCCQERdXNlckF2YWlsYWJsZVNXT1ACBQRwb29sBQR1c2VyBQtjbGFpbUFtb3VudAkAzAgCCQEMSW50ZWdlckVudHJ5AgkArAICCQCsAgIJAKwCAgUEcG9vbAIBXwUEdXNlcgUVa0Zhcm1Vc2VyTGFzdEludGVyZXN0BQxmYXJtSW50ZXJlc3QJAMwIAgkBDEludGVnZXJFbnRyeQIJAKwCAgkArAICCQCsAgIFBHBvb2wCAV8FBHVzZXIFFmtCb29zdFVzZXJMYXN0SW50ZXJlc3QFDWJvb3N0SW50ZXJlc3QJAMwIAgkBDEludGVnZXJFbnRyeQIJAKwCAgUEcG9vbAURa0Zhcm1MYXN0SW50ZXJlc3QFDGZhcm1JbnRlcmVzdAkAzAgCCQEMSW50ZWdlckVudHJ5AgkArAICBQRwb29sBRJrQm9vc3RMYXN0SW50ZXJlc3QFDWJvb3N0SW50ZXJlc3QJAMwIAgkBDEludGVnZXJFbnRyeQIJAKwCAgUEcG9vbAUTa0xhc3RJbnRlcmVzdEhlaWdodAUGaGVpZ2h0CQDMCAIJAQxJbnRlZ2VyRW50cnkCCQCsAgIJAKwCAgkArAICBQRwb29sAgFfBQR1c2VyBQ5rQXZhaWxhYmxlU1dPUAURYXZhaWxhYmxlRnVuZHNOZXcJAMwIAgkBB1JlaXNzdWUDBQRTV09QBQp0b1RyZWFzdXJlBgkAzAgCCQEOU2NyaXB0VHJhbnNmZXIDBRNmYXJtaW5nVHJlYXN1cmVBZGRyBQp0b1RyZWFzdXJlBQRTV09QBQNuaWwBaQEIc2h1dGRvd24ACQELdmFsdWVPckVsc2UCCQELaXNBZG1pbkNhbGwBBQFpAwkBASEBBQZhY3RpdmUJAAIBCQCsAgICIkRBcHAgaXMgYWxyZWFkeSBzdXNwZW5kZWQuIENhdXNlOiAJAQt2YWx1ZU9yRWxzZQIJAJ0IAgUEdGhpcwUGa0NhdXNlAhp0aGUgY2F1c2Ugd2Fzbid0IHNwZWNpZmllZAkBB3N1c3BlbmQBAg9QYXVzZWQgYnkgYWRtaW4BaQEIYWN0aXZhdGUACQELdmFsdWVPckVsc2UCCQELaXNBZG1pbkNhbGwBBQFpAwUGYWN0aXZlCQACAQIWREFwcCBpcyBhbHJlYWR5IGFjdGl2ZQkAzAgCCQEMQm9vbGVhbkVudHJ5AgUHa0FjdGl2ZQYJAMwIAgkBC0RlbGV0ZUVudHJ5AQUGa0NhdXNlBQNuaWwBAnR4AQZ2ZXJpZnkABAckbWF0Y2gwBQJ0eAQSYWRtaW5QdWJLZXkxU2lnbmVkAwkA9AMDCAUCdHgJYm9keUJ5dGVzCQCRAwIIBQJ0eAZwcm9vZnMAAAUMYWRtaW5QdWJLZXkxAAEAAAQSYWRtaW5QdWJLZXkyU2lnbmVkAwkA9AMDCAUCdHgJYm9keUJ5dGVzCQCRAwIIBQJ0eAZwcm9vZnMAAQUMYWRtaW5QdWJLZXkyAAEAAAQSYWRtaW5QdWJLZXkzU2lnbmVkAwkA9AMDCAUCdHgJYm9keUJ5dGVzCQCRAwIIBQJ0eAZwcm9vZnMAAgUMYWRtaW5QdWJLZXkzAAEAAAkAZwIJAGQCCQBkAgUSYWRtaW5QdWJLZXkxU2lnbmVkBRJhZG1pblB1YktleTJTaWduZWQFEmFkbWluUHViS2V5M1NpZ25lZAACBhFP3Q==", "height": 2346839, "applicationStatus": "succeeded", "spentComplexity": 0 } View: original | compacted Prev: 8twS7zvqugChLtVgFiBJ7SQcooSJNne1f97CvNwgjexG Next: 3S7KLXSCCPqraMyA6W4wGE5QsVR8g43RNVpoYtD9iTzf Diff:
OldNewDifferences
4747
4848 let w = "_last_interest_u_b"
4949
50-let x = "_last_interest_lpb"
50+let x = "_last_interest_height"
5151
52-let y = "_last_interest_u_lpb"
52+let y = "SWOP_id"
5353
54-let z = "_last_interest_height"
54+let z = "_available_SWOP"
5555
56-let A = "SWOP_id"
56+let A = "swop_year_emission"
5757
58-let B = "_available_SWOP"
58+let B = "_harvest_pool_vote_gSWOP"
5959
60-let C = "swop_year_emission"
60+let C = "_pool_vote_gSWOP"
6161
62-let D = "_harvest_pool_vote_gSWOP"
62+let D = "_user_vote_gSWOP"
6363
64-let E = "_pool_vote_gSWOP"
64+let E = "_pool_struc"
6565
66-let F = "_user_vote_gSWOP"
66+let F = "_user_pool_struc"
6767
68-let G = "_pool_struc"
68+let G = "_harvest_user_pool_vote_gSWOP"
6969
70-let H = "_user_pool_struc"
70+let H = "first_harvest_height"
7171
72-let I = "_harvest_user_pool_vote_gSWOP"
72+let I = "share_limit_on_first_harvest"
7373
74-let J = "first_harvest_height"
74+let J = "cpmm_contract"
7575
76-let K = "share_limit_on_first_harvest"
76+let K = "admin_pub_1"
7777
78-let L = "cpmm_contract"
78+let L = "admin_pub_2"
7979
80-let M = "admin_pub_1"
80+let M = "admin_pub_3"
8181
82-let N = "admin_pub_2"
82+let N = "admin_invoke_pub"
8383
84-let O = "admin_pub_3"
84+let O = "money_box_address"
8585
86-let P = "admin_invoke_pub"
86+let P = "voting_address"
8787
88-let Q = "money_box_address"
88+let Q = "governance_address"
8989
90-let R = "voting_address"
90+let R = "lp_farming"
9191
92-let S = "governance_address"
92+let S = "farming_treasure"
9393
94-let T = "lp_farming"
94+let T = Address(base58'3MvVBtsXroQpy1tsPw21TU2ET9A8WfmrNjz')
9595
96-let U = "farming_treasure"
96+let U = 10000000000
9797
98-let V = Address(base58'3MvVBtsXroQpy1tsPw21TU2ET9A8WfmrNjz')
98+let V = 100000000
9999
100-let W = 10000000000
100+let W = 1000
101101
102-let X = 100000000
102+let X = 500
103103
104-let Y = 1000
105-
106-let Z = 500
107-
108-func aa (ab) = {
109- let ac = getString(V, ab)
110- if ($isInstanceOf(ac, "String"))
104+func Y (Z) = {
105+ let aa = getString(T, Z)
106+ if ($isInstanceOf(aa, "String"))
111107 then {
112- let ad = ac
113- fromBase58String(ad)
108+ let ab = aa
109+ fromBase58String(ab)
114110 }
115111 else {
116- let ae = ac
117- throw((ab + "is empty"))
112+ let ac = aa
113+ throw((Z + "is empty"))
118114 }
119115 }
120116
121117
122-let af = aa(M)
118+let ad = Y(K)
123119
124-let ag = aa(N)
120+let ae = Y(L)
125121
126-let ah = aa(O)
122+let af = Y(M)
127123
128-let ai = Address(aa(Q))
124+let ag = Address(Y(O))
129125
130-let aj = Address(aa(R))
126+let ah = Address(Y(P))
131127
132-let ak = Address(aa(S))
128+let ai = Address(Y(Q))
133129
134-let al = aa(P)
130+let aj = Y(N)
135131
136-let am = Address(aa(T))
132+let ak = Address(Y(R))
137133
138-let an = Address(aa(U))
134+let al = Address(Y(S))
139135
140-let ao = Address(aa(L))
136+let am = Address(Y(J))
141137
142-let ap = getBooleanValue(this, a)
138+let an = getBooleanValue(this, a)
143139
144-let aq = valueOrElse(getBoolean(V, b), true)
140+let ao = valueOrElse(getBoolean(T, b), true)
145141
146-let ar = fromBase58String(getStringValue(this, A))
142+let ap = fromBase58String(getStringValue(this, y))
147143
148-func as (at) = valueOrElse(getInteger(Address(fromBase58String(at)), J), 0)
144+func aq (ar) = valueOrElse(getInteger(Address(fromBase58String(ar)), H), 0)
149145
150146
151-func au (at) = valueOrErrorMessage(getInteger(at, K), ("No data on the key: " + K))
147+func as (ar) = valueOrErrorMessage(getInteger(ar, I), ("No data on the key: " + I))
152148
153149
154-func av (at) = valueOrErrorMessage(getInteger(this, (at + o)), (("No data on the key: " + at) + o))
150+func at (ar) = valueOrErrorMessage(getInteger(this, (ar + o)), (("No data on the key: " + ar) + o))
155151
156152
157-func aw (at) = valueOrElse(getInteger(aj, (at + E)), valueOrElse(parseInt(split(valueOrElse(getString(aj, (at + G)), ""), "_")[0]), 0))
153+func au (ar) = valueOrElse(getInteger(ah, (ar + C)), valueOrElse(parseInt(split(valueOrElse(getString(ah, (ar + E)), ""), "_")[0]), 0))
158154
159155
160-func ax (at,ay) = valueOrElse(getInteger(aj, (((ay + "_") + at) + F)), valueOrElse(parseInt(split(valueOrElse(getString(aj, (((ay + "_") + at) + H)), ""), "_")[0]), 0))
156+func av (ar,aw) = valueOrElse(getInteger(ah, (((aw + "_") + ar) + D)), valueOrElse(parseInt(split(valueOrElse(getString(ah, (((aw + "_") + ar) + F)), ""), "_")[0]), 0))
161157
162158
163-func az (at) = fromBase58String(getStringValue(value(addressFromString(at)), "share_asset_id"))
159+func ax (ar) = fromBase58String(getStringValue(value(addressFromString(ar)), "share_asset_id"))
164160
165161
166-func aA (aB) = {
167- let ac = aB
168- if ($isInstanceOf(ac, "ByteVector"))
162+func ay (az) = {
163+ let aa = az
164+ if ($isInstanceOf(aa, "ByteVector"))
169165 then {
170- let aC = ac
171- assetBalance(this, aC)
166+ let aA = aa
167+ assetBalance(this, aA)
172168 }
173- else if ($isInstanceOf(ac, "Unit"))
169+ else if ($isInstanceOf(aa, "Unit"))
174170 then {
175- let aD = ac
171+ let aB = aa
176172 wavesBalance(this).available
177173 }
178174 else throw("Match error")
179175 }
180176
181177
182-func aE (aF,aG) = {
183- let aH = value(assetInfo(aF)).decimals
184- let aI = value(assetInfo(aG)).decimals
185- let aJ = ((aI - aH) + 8)
186- pow(10, 0, aJ, 0, 0, DOWN)
178+func aC (aD,aE) = {
179+ let aF = value(assetInfo(aD)).decimals
180+ let aG = value(assetInfo(aE)).decimals
181+ let aH = ((aG - aF) + 8)
182+ pow(10, 0, aH, 0, 0, DOWN)
187183 }
188184
189185
190-func aK (at,ay) = valueOrElse(getInteger(this, (((at + "_") + ay) + B)), 0)
186+func aI (ar,aw) = valueOrElse(getInteger(this, (((ar + "_") + aw) + z)), 0)
191187
192188
193-func aL (at) = {
194- let aM = valueOrErrorMessage(getInteger(ak, g), ((("No data on the key: " + g) + " at address ") + toString(ak)))
195- let aN = valueOrErrorMessage(getInteger(ak, h), ((("No data on the key: " + h) + " at address ") + toString(ak)))
196- let aO = valueOrErrorMessage(getInteger(ak, (at + d)), (((("No data on the key: " + at) + d) + " at address ") + toString(ak)))
197- let aP = valueOrErrorMessage(getInteger(ak, i), ((("No data on the key: " + i) + " at address ") + toString(ak)))
198- let aQ = valueOrElse(getInteger(ak, (at + f)), aP)
199- let aR = valueOrErrorMessage(getInteger(ak, (at + e)), (((("No data on the key: " + at) + e) + " at address ") + toString(ak)))
200- let aS = fraction(aM, aO, W)
201- let aT = fraction(aM, aR, W)
202- if (if ((aS > aM))
189+func aJ (ar) = {
190+ let aK = valueOrErrorMessage(getInteger(ai, g), ((("No data on the key: " + g) + " at address ") + toString(ai)))
191+ let aL = valueOrErrorMessage(getInteger(ai, h), ((("No data on the key: " + h) + " at address ") + toString(ai)))
192+ let aM = valueOrErrorMessage(getInteger(ai, (ar + d)), (((("No data on the key: " + ar) + d) + " at address ") + toString(ai)))
193+ let aN = valueOrErrorMessage(getInteger(ai, i), ((("No data on the key: " + i) + " at address ") + toString(ai)))
194+ let aO = valueOrElse(getInteger(ai, (ar + f)), aN)
195+ let aP = valueOrErrorMessage(getInteger(ai, (ar + e)), (((("No data on the key: " + ar) + e) + " at address ") + toString(ai)))
196+ let aQ = fraction(aK, aM, U)
197+ let aR = fraction(aK, aP, U)
198+ if (if ((aQ > aK))
203199 then true
204- else (aT > aN))
200+ else (aR > aL))
205201 then throw("rewardPoolCurrent > totalRewardPerBlockCurrent or rewardPoolPrevious > totalRewardPerBlockPrevious")
206- else $Tuple4(aS, aP, aT, aQ)
202+ else $Tuple4(aQ, aN, aR, aO)
207203 }
208204
209205
210-func aU (at) = {
211- let aV = valueOrErrorMessage(getInteger(this, (at + t)), (("No data on the key: " + at) + t))
212- let aW = valueOrElse(getInteger(this, (at + v)), 0)
213- let aX = valueOrElse(getInteger(this, (at + x)), 0)
214- let aY = valueOrElse(getInteger(this, (at + z)), height)
215- $Tuple4(aY, aV, aW, aX)
206+func aS (ar) = {
207+ let aT = valueOrErrorMessage(getInteger(this, (ar + t)), (("No data on the key: " + ar) + t))
208+ let aU = valueOrElse(getInteger(this, (ar + v)), 0)
209+ let aV = valueOrElse(getInteger(this, (ar + x)), height)
210+ $Tuple3(aV, aT, aU)
216211 }
217212
218213
219-func aZ (at,ba) = {
220- let bb = valueOrElse(getInteger(this, (at + s)), Z)
221- fraction(ba, Y, (bb + Y))
214+func aW (ar,aX) = {
215+ let aY = valueOrElse(getInteger(this, (ar + s)), X)
216+ fraction(aX, W, (aY + W))
222217 }
223218
224219
225-func bc (at,ba) = {
226- let bb = valueOrElse(getInteger(this, (at + s)), Z)
227- fraction(ba, bb, (bb + Y))
220+func aZ (ar,aX) = {
221+ let aY = valueOrElse(getInteger(this, (ar + s)), X)
222+ fraction(aX, aY, (aY + W))
228223 }
229224
230225
231-func bd (at,aY,aP,aQ,aV,aW,be,bf,bg,bh,bi,bj) = if ((bh == 0))
232- then $Tuple3(aV, aW, bf)
233- else {
234- let bk = if (if (if ((aP > height))
235- then (aP == aQ)
226+func ba (ar,aV,aN,aO,aT,aU,bb,bc,bd,be,bf) = {
227+ let bg = if (if (if ((aN > height))
228+ then (aN == aO)
229+ else false)
230+ then true
231+ else if ((height > aN))
232+ then (aN != aO)
236233 else false)
237- then true
238- else if ((height > aP))
239- then (aP != aQ)
240- else false)
234+ then {
235+ let bh = (be * (height - aV))
236+ $Tuple3(bh, aT, aU)
237+ }
238+ else if (if (if ((height > aN))
239+ then (aN == aO)
240+ else false)
241+ then (aV > aN)
242+ else false)
241243 then {
242- let bl = (bi * (height - aY))
243- $Tuple4(bl, aV, aW, bf)
244+ let bh = (bc * (height - aV))
245+ $Tuple3(bh, aT, aU)
244246 }
245- else if (if (if ((height > aP))
246- then (aP == aQ)
247- else false)
248- then (aY > aP)
249- else false)
250- then {
251- let bl = (bg * (height - aY))
252- $Tuple4(bl, aV, aW, bf)
253- }
254- else {
255- let bm = (bi * (aP - aY))
256- let bn = (aV + fraction(aZ(at, bm), bj, bh))
257- let bo = (aW + (if ((be > 0))
258- then fraction(bc(at, bm), X, be)
259- else 0))
260- let bp = (bf + (if ((be > 0))
261- then fraction(fraction(bc(at, bm), X, bh), X, be)
262- else 0))
263- let bq = (bg * (height - aP))
264- $Tuple4(bq, bn, bo, bp)
265- }
266- let br = bk._1
267- let bs = bk._2
268- let bt = bk._3
269- let bu = bk._4
270- let bv = (bs + fraction(aZ(at, br), bj, bh))
271- let bw = (bt + (if ((be > 0))
272- then fraction(bc(at, br), X, be)
273- else 0))
274- let bx = (bu + (if ((be > 0))
275- then fraction(fraction(bc(at, br), X, bh), X, be)
276- else 0))
277- $Tuple3(bv, bw, bx)
278- }
279-
280-
281-func by (at,ay) = {
282- let bj = aE(ar, az(at))
283- let be = aw(at)
284- let bz = ax(at, ay)
285- let bA = av(at)
286- let bB = valueOrElse(getInteger(this, (at + p)), bA)
287- let bC = aU(at)
288- let aY = bC._1
289- let aV = bC._2
290- let aW = bC._3
291- let aX = bC._4
292- let bD = aL(at)
293- let bg = bD._1
294- let aP = bD._2
295- let bi = bD._3
296- let aQ = bD._4
297- let bE = valueOrElse(getInteger(this, (((at + "_") + ay) + u)), aV)
298- let bF = valueOrElse(getInteger(this, (((at + "_") + ay) + w)), aW)
299- let bG = valueOrElse(getInteger(this, (((at + "_") + ay) + y)), aX)
300- let bH = valueOrElse(getInteger(this, (((at + "_") + ay) + j)), 0)
301- let bI = valueOrElse(getInteger(this, (((at + "_") + ay) + n)), bH)
302- let bJ = bd(at, aY, aP, aQ, aV, aW, be, aX, bg, bB, bi, bj)
303- let bv = bJ._1
304- let bw = bJ._2
305- let bx = bJ._3
306- let bK = fraction(bI, (bv - bE), bj)
307- let bL = if ((bz == 0))
308- then (bK / 2)
309- else fraction(bz, (bw - bF), X)
310- let bM = fraction(toBigInt(bI), toBigInt(bz), toBigInt(1))
311- let bN = toInt(fraction(fraction(bM, toBigInt((bx - bG)), toBigInt(X)), toBigInt(1), toBigInt(X)))
312- let bO = (bL - bN)
313- if ((0 > bO))
314- then throw("toTreasury < 0")
315- else $Tuple5(bv, bw, bx, (bK + bN), bO)
247+ else {
248+ let bi = (be * (aN - aV))
249+ let bj = (aT + fraction(aW(ar, bi), bf, bd))
250+ let bk = (aU + (if ((bb > 0))
251+ then fraction(aZ(ar, bi), V, bb)
252+ else 0))
253+ let bl = (bc * (height - aN))
254+ $Tuple3(bl, bj, bk)
255+ }
256+ let bm = bg._1
257+ let bn = bg._2
258+ let bo = bg._3
259+ let bp = (bn + fraction(aW(ar, bm), bf, bd))
260+ let bq = (bo + (if ((bb > 0))
261+ then fraction(aZ(ar, bm), V, bb)
262+ else 0))
263+ $Tuple3(bp, bq, bm)
316264 }
317265
318266
319-func bP (bQ,ay) = {
320- func bR (bS,at) = {
321- let bT = bS
322- let bU = bT._1
323- let bV = bT._2
324- let bW = by(at, ay)
325- let bX = bW._1
326- let bY = bW._2
327- let bZ = bW._3
328- let ca = bW._4
329- let cb = bW._5
330- let cc = (aK(at, ay) + ca)
331- $Tuple2((bU :+ at), (bV :+ cc))
332- }
333-
334- let cd = bQ
335- let ce = size(cd)
336- let cf = $Tuple2(nil, nil)
337- func cg (ch,ci) = if ((ci >= ce))
338- then ch
339- else bR(ch, cd[ci])
340-
341- func cj (ch,ci) = if ((ci >= ce))
342- then ch
343- else throw("List size exceeds 60")
344-
345- cj(cg(cg(cg(cg(cg(cg(cg(cg(cg(cg(cg(cg(cg(cg(cg(cg(cg(cg(cg(cg(cg(cg(cg(cg(cg(cg(cg(cg(cg(cg(cg(cg(cg(cg(cg(cg(cg(cg(cg(cg(cg(cg(cg(cg(cg(cg(cg(cg(cg(cg(cg(cg(cg(cg(cg(cg(cg(cg(cg(cg(cf, 0), 1), 2), 3), 4), 5), 6), 7), 8), 9), 10), 11), 12), 13), 14), 15), 16), 17), 18), 19), 20), 21), 22), 23), 24), 25), 26), 27), 28), 29), 30), 31), 32), 33), 34), 35), 36), 37), 38), 39), 40), 41), 42), 43), 44), 45), 46), 47), 48), 49), 50), 51), 52), 53), 54), 55), 56), 57), 58), 59), 60)
267+func br (ar,aw) = {
268+ let bf = aC(ap, ax(ar))
269+ let bb = au(ar)
270+ let bs = av(ar, aw)
271+ let bt = at(ar)
272+ let bu = valueOrElse(getInteger(this, (ar + p)), bt)
273+ let bv = aS(ar)
274+ let aV = bv._1
275+ let aT = bv._2
276+ let aU = bv._3
277+ let bw = aJ(ar)
278+ let bc = bw._1
279+ let aN = bw._2
280+ let be = bw._3
281+ let aO = bw._4
282+ let bx = valueOrElse(getInteger(this, (((ar + "_") + aw) + u)), aT)
283+ let by = valueOrElse(getInteger(this, (((ar + "_") + aw) + w)), aU)
284+ let bz = valueOrElse(getInteger(this, (((ar + "_") + aw) + j)), 0)
285+ let bA = valueOrElse(getInteger(this, (((ar + "_") + aw) + n)), bz)
286+ if ((bu == 0))
287+ then {
288+ let bB = if ((aT == 0))
289+ then (bc * (height - aV))
290+ else 0
291+ $Tuple4(aT, aU, 0, bB)
292+ }
293+ else {
294+ let bC = ba(ar, aV, aN, aO, aT, aU, bb, bc, bu, be, bf)
295+ let bp = bC._1
296+ let bq = bC._2
297+ let bD = bC._3
298+ let bE = fraction(bA, (bp - bx), bf)
299+ let aY = valueOrElse(getInteger(this, (ar + s)), X)
300+ let bF = fraction(bE, aY, W)
301+ let bG = fraction((bq - by), bs, V)
302+ let bH = min([bF, bG])
303+ let bB = (bF - bH)
304+ if ((0 > bB))
305+ then throw("toTreasury < 0")
306+ else $Tuple4(bp, bq, (bE + bH), bB)
307+ }
346308 }
347309
348310
349-func ck (at,ay,cl,cm,cn) = if ((as(at) > height))
311+func bI (bJ,aw) = {
312+ func bK (bL,ar) = {
313+ let bM = bL
314+ let bN = bM._1
315+ let bO = bM._2
316+ let bP = br(ar, aw)
317+ let bQ = bP._1
318+ let bR = bP._2
319+ let bS = bP._3
320+ let bT = bP._4
321+ let bU = (aI(ar, aw) + bS)
322+ $Tuple2((bN :+ ar), (bO :+ bU))
323+ }
324+
325+ let bV = bJ
326+ let bW = size(bV)
327+ let bX = $Tuple2(nil, nil)
328+ func bY (bZ,ca) = if ((ca >= bW))
329+ then bZ
330+ else bK(bZ, bV[ca])
331+
332+ func cb (bZ,ca) = if ((ca >= bW))
333+ then bZ
334+ else throw("List size exceeds 60")
335+
336+ cb(bY(bY(bY(bY(bY(bY(bY(bY(bY(bY(bY(bY(bY(bY(bY(bY(bY(bY(bY(bY(bY(bY(bY(bY(bY(bY(bY(bY(bY(bY(bY(bY(bY(bY(bY(bY(bY(bY(bY(bY(bY(bY(bY(bY(bY(bY(bY(bY(bY(bY(bY(bY(bY(bY(bY(bY(bY(bY(bY(bY(bX, 0), 1), 2), 3), 4), 5), 6), 7), 8), 9), 10), 11), 12), 13), 14), 15), 16), 17), 18), 19), 20), 21), 22), 23), 24), 25), 26), 27), 28), 29), 30), 31), 32), 33), 34), 35), 36), 37), 38), 39), 40), 41), 42), 43), 44), 45), 46), 47), 48), 49), 50), 51), 52), 53), 54), 55), 56), 57), 58), 59), 60)
337+ }
338+
339+
340+func cc (ar,aw,cd,ce,cf) = if ((aq(ar) > height))
350341 then {
351- let co = valueOrElse(getInteger(aj, (at + D)), 0)
352- let cp = valueOrElse(getInteger(aj, (((ay + "_") + at) + I)), 0)
353- let cq = au(addressFromStringValue(at))
354- let cr = (fraction(cq, cp, co) - cl)
355- if ((cn > 0))
342+ let cg = valueOrElse(getInteger(ah, (ar + B)), 0)
343+ let ch = valueOrElse(getInteger(ah, (((aw + "_") + ar) + G)), 0)
344+ let ci = as(addressFromStringValue(ar))
345+ let cj = (fraction(ci, ch, cg) - cd)
346+ if ((cf > 0))
356347 then throw("You can't lock shareTokens till first harvest end.")
357- else if ((cp == 0))
348+ else if ((ch == 0))
358349 then 0
359- else if ((cm >= cr))
360- then (cm - cr)
350+ else if ((ce >= cj))
351+ then (ce - cj)
361352 else 0
362353 }
363354 else 0
364355
365356
366-func cs (ct) = {
367- let cu = split(valueOrErrorMessage(getString(this, (toString(ct) + q)), ("There are no key for lock type" + toString(ct))), "_")
368- $Tuple2(parseIntValue(cu[0]), parseIntValue(cu[1]))
357+func ck (cl) = {
358+ let cm = split(valueOrErrorMessage(getString(this, (toString(cl) + q)), ("There are no key for lock type" + toString(cl))), "_")
359+ $Tuple2(parseIntValue(cm[0]), parseIntValue(cm[1]))
369360 }
370361
371362
372-func cv (cw) = [BooleanEntry(a, false), StringEntry(c, cw)]
363+func cn (co) = [BooleanEntry(a, false), StringEntry(c, co)]
373364
374365
375-func cx () = if (if (ap)
376- then aq
366+func cp () = if (if (an)
367+ then ao
377368 else false)
378369 then unit
379370 else throw("DApp is inactive at this moment")
380371
381372
382-func cy (cz) = if (containsElement([af, ag, ah], cz.callerPublicKey))
373+func cq (cr) = if (containsElement([ad, ae, af], cr.callerPublicKey))
383374 then unit
384375 else throw("Only admin can call this function")
385376
386377
387-func cA (cz,at) = if (if ((toString(cz.caller) == at))
378+func cs (cr,ar) = if (if ((toString(cr.caller) == ar))
388379 then true
389- else (cz.caller == ao))
380+ else (cr.caller == am))
390381 then unit
391382 else throw("Only pool can call this function")
392383
393384
394-func cB (cz) = if ((cz.caller == this))
385+func ct (cr) = if ((cr.caller == this))
395386 then unit
396387 else throw("Only contract itself can call this function")
397388
398389
399-func cC (cz,cD,at,cn) = {
400- let cE = az(at)
401- let ay = toString(cD)
402- let cF = av(at)
403- let bB = valueOrElse(getInteger(this, (at + p)), cF)
404- let cG = valueOrElse(getInteger(this, (((at + "_") + ay) + j)), 0)
405- let cH = valueOrElse(getInteger(this, (((at + "_") + ay) + m)), 0)
406- let cI = valueOrElse(getInteger(this, (((at + "_") + ay) + k)), 0)
407- let cJ = valueOrElse(getInteger(this, (((at + "_") + ay) + n)), cG)
408- let cK = ((cG + cI) + cz.payments[0].amount)
409- let cL = cs(cn)
410- let cM = cL._1
411- let cN = cL._2
412- let cO = getIntegerValue(this, r)
413- if ((cz.payments[0].assetId != cE))
390+func cu (cr,cv,ar,cf) = {
391+ let cw = ax(ar)
392+ let aw = toString(cv)
393+ let cx = at(ar)
394+ let bu = valueOrElse(getInteger(this, (ar + p)), cx)
395+ let cy = valueOrElse(getInteger(this, (((ar + "_") + aw) + j)), 0)
396+ let cz = valueOrElse(getInteger(this, (((ar + "_") + aw) + m)), 0)
397+ let cA = valueOrElse(getInteger(this, (((ar + "_") + aw) + k)), 0)
398+ let cB = valueOrElse(getInteger(this, (((ar + "_") + aw) + n)), cy)
399+ let cC = ((cy + cA) + cr.payments[0].amount)
400+ let cD = ck(cf)
401+ let cE = cD._1
402+ let cF = cD._2
403+ let cG = getIntegerValue(this, r)
404+ if ((cr.payments[0].assetId != cw))
414405 then throw("Wrong sharetoken in payment")
415- else if ((0 >= cz.payments[0].amount))
406+ else if ((0 >= cr.payments[0].amount))
416407 then throw("Payment amount must be greater than 0")
417- else if ((0 > cn))
408+ else if ((0 > cf))
418409 then throw("lockType must be >= 0")
419410 else {
420- let cP = ck(at, ay, cG, cz.payments[0].amount, cn)
421- if ((cP == cP))
411+ let cH = cc(ar, aw, cy, cr.payments[0].amount, cf)
412+ if ((cH == cH))
422413 then {
423- let cQ = if ((cn == 0))
414+ let cI = if ((cf == 0))
424415 then {
425- let cR = ((cJ + cz.payments[0].amount) - cP)
426- $Tuple2([IntegerEntry((((at + "_") + ay) + j), ((cG + cz.payments[0].amount) - cP)), IntegerEntry((((at + "_") + ay) + n), cR), IntegerEntry((at + p), ((bB + cz.payments[0].amount) - cP)), ScriptTransfer(cD, cP, cz.payments[0].assetId)], ((cF + cz.payments[0].amount) - cP))
416+ let cJ = ((cB + cr.payments[0].amount) - cH)
417+ $Tuple2([IntegerEntry((((ar + "_") + aw) + j), ((cy + cr.payments[0].amount) - cH)), IntegerEntry((((ar + "_") + aw) + n), cJ), IntegerEntry((ar + p), ((bu + cr.payments[0].amount) - cH)), ScriptTransfer(cv, cH, cr.payments[0].assetId)], ((cx + cr.payments[0].amount) - cH))
427418 }
428- else if (if ((cH == 0))
429- then if (if ((2 > size(cz.payments)))
419+ else if (if ((cz == 0))
420+ then if (if ((2 > size(cr.payments)))
430421 then true
431- else (cz.payments[1].assetId != unit))
422+ else (cr.payments[1].assetId != unit))
432423 then true
433- else (cO > cz.payments[1].amount)
424+ else (cG > cr.payments[1].amount)
434425 else false)
435- then throw((("You need to pay additional waves comission " + toString(cO)) + "WAVES"))
436- else if ((cH > (height + cM)))
426+ then throw((("You need to pay additional waves comission " + toString(cG)) + "WAVES"))
427+ else if ((cz > (height + cE)))
437428 then throw("You cannot lock sharetokens for a period less than what you have already locked")
438429 else {
439- let cS = (cI + cz.payments[0].amount)
440- let cT = (height + cM)
441- let cR = (fraction(cS, cN, Y) + cG)
442- $Tuple2([IntegerEntry((((at + "_") + ay) + k), cS), IntegerEntry((((at + "_") + ay) + m), cT), IntegerEntry((((at + "_") + ay) + l), cn), IntegerEntry((((at + "_") + ay) + n), cR), IntegerEntry((at + p), ((bB - cJ) + cR))], (cF + cz.payments[0].amount))
430+ let cK = (cA + cr.payments[0].amount)
431+ let cL = (height + cE)
432+ let cJ = (fraction(cK, cF, W) + cy)
433+ $Tuple2([IntegerEntry((((ar + "_") + aw) + k), cK), IntegerEntry((((ar + "_") + aw) + m), cL), IntegerEntry((((ar + "_") + aw) + l), cf), IntegerEntry((((ar + "_") + aw) + n), cJ), IntegerEntry((ar + p), ((bu - cB) + cJ))], (cx + cr.payments[0].amount))
443434 }
444- let cU = cQ._1
445- let cV = cQ._2
446- if ((aA(cE) > cV))
435+ let cM = cI._1
436+ let cN = cI._2
437+ if ((ay(cw) > cN))
447438 then throw("Balance of share-token is lower than totalAmount")
448439 else {
449- let cW = by(at, ay)
450- let aV = cW._1
451- let aW = cW._2
452- let cX = cW._3
453- let ca = cW._4
454- let cY = cW._5
455- let cZ = (aK(at, ay) + ca)
456- let da = if ((getString(Address(fromBase58String(at)), "version") == "3.0.0"))
457- then invoke(am, "updateUserInterest", [ay, at, cK], nil)
440+ let cO = br(ar, aw)
441+ let aT = cO._1
442+ let aU = cO._2
443+ let bS = cO._3
444+ let cP = cO._4
445+ let cQ = (aI(ar, aw) + bS)
446+ let cR = if ((getString(Address(fromBase58String(ar)), "version") == "3.0.0"))
447+ then invoke(ak, "updateUserInterest", [aw, ar, cC], nil)
458448 else 0
459- if ((da == da))
460- then ([IntegerEntry((((at + "_") + ay) + u), aV), IntegerEntry((((at + "_") + ay) + w), aW), IntegerEntry((((at + "_") + ay) + y), cX), IntegerEntry((at + t), aV), IntegerEntry((at + v), aW), IntegerEntry((at + x), cX), IntegerEntry((at + z), height), IntegerEntry((at + o), cV), IntegerEntry((((at + "_") + ay) + B), cZ), Reissue(ar, cY, true), ScriptTransfer(an, cY, ar)] ++ cU)
449+ if ((cR == cR))
450+ then ([IntegerEntry((((ar + "_") + aw) + u), aT), IntegerEntry((((ar + "_") + aw) + w), aU), IntegerEntry((ar + t), aT), IntegerEntry((ar + v), aU), IntegerEntry((ar + x), height), IntegerEntry((ar + o), cN), IntegerEntry((((ar + "_") + aw) + z), cQ), Reissue(ap, cP, true), ScriptTransfer(al, cP, ap)] ++ cM)
461451 else throw("Strict value is not equal to itself.")
462452 }
463453 }
466456 }
467457
468458
469-func db (cz,cD,at,dc) = valueOrElse(cx(), {
470- let dd = fromBase58String(getStringValue(value(addressFromString(at)), "share_asset_id"))
471- let ay = toString(cD)
472- let de = by(at, ay)
473- let aV = de._1
474- let aW = de._2
475- let cX = de._3
476- let ca = de._4
477- let cY = de._5
478- let cG = valueOrElse(getInteger(this, (((at + "_") + ay) + j)), 0)
479- let cI = valueOrElse(getInteger(this, (((at + "_") + ay) + k)), 0)
480- let cJ = valueOrElse(getInteger(this, (((at + "_") + ay) + n)), cG)
481- let df = (cG - dc)
482- let cZ = (aK(at, ay) + ca)
483- let dg = av(at)
484- let bB = valueOrElse(getInteger(this, (at + p)), dg)
485- let dh = (dg - dc)
486- let di = (bB - dc)
487- let cR = (cJ - dc)
488- if ((dc > cG))
459+func cS (cr,cv,ar,cT) = valueOrElse(cp(), {
460+ let cU = fromBase58String(getStringValue(value(addressFromString(ar)), "share_asset_id"))
461+ let aw = toString(cv)
462+ let cV = br(ar, aw)
463+ let aT = cV._1
464+ let aU = cV._2
465+ let bS = cV._3
466+ let cP = cV._4
467+ let cy = valueOrElse(getInteger(this, (((ar + "_") + aw) + j)), 0)
468+ let cA = valueOrElse(getInteger(this, (((ar + "_") + aw) + k)), 0)
469+ let cB = valueOrElse(getInteger(this, (((ar + "_") + aw) + n)), cy)
470+ let cW = (cy - cT)
471+ let cQ = (aI(ar, aw) + bS)
472+ let cX = at(ar)
473+ let bu = valueOrElse(getInteger(this, (ar + p)), cX)
474+ let cY = (cX - cT)
475+ let cZ = (bu - cT)
476+ let cJ = (cB - cT)
477+ if ((cT > cy))
489478 then throw("Withdraw amount more then user locked amount")
490- else if ((aA(dd) > dg))
479+ else if ((ay(cU) > cX))
491480 then throw("Balance of share-token is lower than totalAmount")
492481 else {
493- let da = if ((getString(Address(fromBase58String(at)), "version") == "3.0.0"))
494- then invoke(am, "updateUserInterest", [ay, at, (cG + cI)], nil)
482+ let cR = if ((getString(Address(fromBase58String(ar)), "version") == "3.0.0"))
483+ then invoke(ak, "updateUserInterest", [aw, ar, (cy + cA)], nil)
495484 else 0
496- if ((da == da))
497- then [IntegerEntry((((at + "_") + ay) + u), aV), IntegerEntry((((at + "_") + ay) + w), aW), IntegerEntry((((at + "_") + ay) + y), cX), IntegerEntry((at + t), aV), IntegerEntry((at + v), aW), IntegerEntry((at + x), cX), IntegerEntry((at + z), height), IntegerEntry((((at + "_") + ay) + j), df), IntegerEntry((((at + "_") + ay) + n), cR), IntegerEntry((at + o), dh), IntegerEntry((at + p), di), IntegerEntry((((at + "_") + ay) + B), cZ), Reissue(ar, cY, true), ScriptTransfer(an, cY, ar), ScriptTransfer(cz.caller, dc, dd)]
485+ if ((cR == cR))
486+ then [IntegerEntry((((ar + "_") + aw) + u), aT), IntegerEntry((((ar + "_") + aw) + w), aU), IntegerEntry((ar + t), aT), IntegerEntry((ar + v), aU), IntegerEntry((ar + x), height), IntegerEntry((((ar + "_") + aw) + j), cW), IntegerEntry((((ar + "_") + aw) + n), cJ), IntegerEntry((ar + o), cY), IntegerEntry((ar + p), cZ), IntegerEntry((((ar + "_") + aw) + z), cQ), Reissue(ap, cP, true), ScriptTransfer(al, cP, ap), ScriptTransfer(cr.caller, cT, cU)]
498487 else throw("Strict value is not equal to itself.")
499488 }
500489 })
501490
502491
503-func dj (cz,at,cD) = {
504- let dd = fromBase58String(getStringValue(value(addressFromString(at)), "share_asset_id"))
505- let ay = toString(cD)
506- let bh = av(at)
507- let dk = by(at, ay)
508- let aV = dk._1
509- let aW = dk._2
510- let cX = dk._3
511- let ca = dk._4
512- let cY = dk._5
513- let cc = (aK(at, ay) + ca)
514- if ((cc == 0))
515- then throw("You have 0 available SWOP")
516- else if ((aA(dd) > bh))
517- then throw("Balance of share-token is lower than totalAmount")
518- else {
519- let dl = if ((cz.caller != this))
520- then [ScriptTransfer(cz.caller, cc, ar)]
521- else nil
522- $Tuple2(([IntegerEntry((((at + "_") + ay) + u), aV), IntegerEntry((((at + "_") + ay) + w), aW), IntegerEntry((((at + "_") + ay) + y), cX), IntegerEntry((at + t), aV), IntegerEntry((at + v), aW), IntegerEntry((at + x), cX), IntegerEntry((at + z), height), IntegerEntry((((at + "_") + ay) + B), 0), Reissue(ar, (cY + cc), true), ScriptTransfer(an, cY, ar)] ++ dl), cc)
523- }
492+func da (cr,ar,cv) = {
493+ let cU = fromBase58String(getStringValue(value(addressFromString(ar)), "share_asset_id"))
494+ let aw = toString(cv)
495+ let bd = at(ar)
496+ let db = br(ar, aw)
497+ let aT = db._1
498+ let aU = db._2
499+ let bS = db._3
500+ let cP = db._4
501+ let bU = (aI(ar, aw) + bS)
502+ if ((ay(cU) > bd))
503+ then throw("Balance of share-token is lower than totalAmount")
504+ else {
505+ let dc = if ((cr.caller != this))
506+ then [ScriptTransfer(cr.caller, bU, ap)]
507+ else nil
508+ $Tuple2(([IntegerEntry((((ar + "_") + aw) + u), aT), IntegerEntry((((ar + "_") + aw) + w), aU), IntegerEntry((ar + t), aT), IntegerEntry((ar + v), aU), IntegerEntry((ar + x), height), IntegerEntry((((ar + "_") + aw) + z), 0), Reissue(ap, (cP + bU), true), ScriptTransfer(al, cP, ap)] ++ dc), bU)
509+ }
524510 }
525511
526512
527-@Callable(cz)
528-func init (dm) = if (isDefined(getString(this, A)))
513+@Callable(cr)
514+func init (dd) = if (isDefined(getString(this, y)))
529515 then throw("SWOP already initialized")
530516 else {
531- let dn = 100000000000000
532- let do = Issue("SWOP", "SWOP protocol token", dn, 8, true)
533- let dp = calculateAssetId(do)
534-[BooleanEntry(a, true), Issue("SWOP", "SWOP protocol token", dn, 8, true), StringEntry(A, toBase58String(dp))]
517+ let de = 100000000000000
518+ let df = Issue("SWOP", "SWOP protocol token", de, 8, true)
519+ let dg = calculateAssetId(df)
520+[BooleanEntry(a, true), Issue("SWOP", "SWOP protocol token", de, 8, true), StringEntry(y, toBase58String(dg))]
535521 }
536522
537523
538524
539-@Callable(cz)
540-func initPoolShareFarming (at) = valueOrElse(cy(cz), [IntegerEntry((at + o), 0), IntegerEntry((at + t), 0), IntegerEntry((at + v), 0), IntegerEntry((at + x), 0), IntegerEntry((at + z), height)])
525+@Callable(cr)
526+func initPoolShareFarming (ar) = valueOrElse(cq(cr), [IntegerEntry((ar + o), 0), IntegerEntry((ar + t), 0), IntegerEntry((ar + v), 0), IntegerEntry((ar + x), height)])
541527
542528
543529
544-@Callable(cz)
545-func updatePoolInterest (at) = valueOrElse(cx(), if ((cz.caller != ak))
530+@Callable(cr)
531+func updatePoolInterest (ar) = valueOrElse(cp(), if ((cr.caller != ai))
546532 then throw("Only Governance can call this function")
547533 else {
548- let ay = toString(addressFromPublicKey(al))
549- let dq = by(at, ay)
550- let aV = dq._1
551- let aW = dq._2
552- let cX = dq._3
553-[IntegerEntry((at + t), aV), IntegerEntry((at + v), aW), IntegerEntry((at + x), cX), IntegerEntry((at + z), height)]
534+ let aw = toString(addressFromPublicKey(aj))
535+ let dh = br(ar, aw)
536+ let aT = dh._1
537+ let aU = dh._2
538+ let di = dh._3
539+[IntegerEntry((ar + t), aT), IntegerEntry((ar + v), aU), IntegerEntry((ar + x), height)]
554540 })
555541
556542
557543
558-@Callable(cz)
559-func lockShareTokens (at,cn) = valueOrElse(cx(), cC(cz, cz.caller, at, cn))
544+@Callable(cr)
545+func lockShareTokens (ar,cf) = valueOrElse(cp(), cu(cr, cr.caller, ar, cf))
560546
561547
562548
563-@Callable(cz)
564-func lockShareTokensFromPool (dr,at,cn) = valueOrElse(cx(), valueOrElse(cA(cz, at), cC(cz, Address(dr), at, cn)))
549+@Callable(cr)
550+func lockShareTokensFromPool (dj,ar,cf) = valueOrElse(cp(), valueOrElse(cs(cr, ar), cu(cr, Address(dj), ar, cf)))
565551
566552
567553
568-@Callable(cz)
569-func lockStakedShareTokens (at,cn,ds) = valueOrElse(cx(), {
570- let cE = az(at)
571- let ay = toString(cz.caller)
572- let cF = av(at)
573- let bB = valueOrElse(getInteger(this, (at + p)), cF)
574- let cG = valueOrElse(getInteger(this, (((at + "_") + ay) + j)), 0)
575- let cH = valueOrElse(getInteger(this, (((at + "_") + ay) + m)), 0)
576- let cI = valueOrElse(getInteger(this, (((at + "_") + ay) + k)), 0)
577- let cJ = valueOrElse(getInteger(this, (((at + "_") + ay) + n)), cG)
578- let cK = (cG + cI)
579- let dt = cs(cn)
580- let cM = dt._1
581- let cN = dt._2
582- let cO = getIntegerValue(this, r)
583- if ((as(at) > height))
554+@Callable(cr)
555+func lockStakedShareTokens (ar,cf,dk) = valueOrElse(cp(), {
556+ let cw = ax(ar)
557+ let aw = toString(cr.caller)
558+ let cx = at(ar)
559+ let bu = valueOrElse(getInteger(this, (ar + p)), cx)
560+ let cy = valueOrElse(getInteger(this, (((ar + "_") + aw) + j)), 0)
561+ let cz = valueOrElse(getInteger(this, (((ar + "_") + aw) + m)), 0)
562+ let cA = valueOrElse(getInteger(this, (((ar + "_") + aw) + k)), 0)
563+ let cB = valueOrElse(getInteger(this, (((ar + "_") + aw) + n)), cy)
564+ let cC = (cy + cA)
565+ let dl = ck(cf)
566+ let cE = dl._1
567+ let cF = dl._2
568+ let cG = getIntegerValue(this, r)
569+ if ((aq(ar) > height))
584570 then throw("You can't lock shareTokens till first harvest end.")
585- else if ((0 >= cn))
571+ else if ((0 >= cf))
586572 then throw("lockType must be > 0")
587- else if ((ds > cG))
588- then throw(("You can't lock more than " + toString(cG)))
589- else if ((aA(cE) > cF))
573+ else if ((dk > cy))
574+ then throw(("You can't lock more than " + toString(cy)))
575+ else if ((ay(cw) > cx))
590576 then throw("Balance of share-token is lower than totalAmount")
591- else if (if ((cH == 0))
592- then if (if ((1 > size(cz.payments)))
577+ else if (if ((cz == 0))
578+ then if (if ((1 > size(cr.payments)))
593579 then true
594- else (cz.payments[0].assetId != unit))
580+ else (cr.payments[0].assetId != unit))
595581 then true
596- else (cO > cz.payments[0].amount)
582+ else (cG > cr.payments[0].amount)
597583 else false)
598- then throw((("You need to pay additional waves comission " + toString(cO)) + "WAVES"))
599- else if (if ((cH == 0))
600- then (0 >= ds)
584+ then throw((("You need to pay additional waves comission " + toString(cG)) + "WAVES"))
585+ else if (if ((cz == 0))
586+ then (0 >= dk)
601587 else false)
602588 then throw("lockAmount must be greater than 0")
603- else if ((0 > ds))
589+ else if ((0 > dk))
604590 then throw("lockAmount must be positive")
605- else if ((cH > (height + cM)))
591+ else if ((cz > (height + cE)))
606592 then throw("You cannot lock sharetokens for a period less than what you have already locked")
607593 else {
608- let cS = (cI + ds)
609- let df = (cG - ds)
610- let cT = (height + cM)
611- let cR = (fraction(cS, cN, Y) + df)
612- let du = by(at, ay)
613- let aV = du._1
614- let aW = du._2
615- let cX = du._3
616- let ca = du._4
617- let cY = du._5
618- let cZ = (aK(at, ay) + ca)
619-[IntegerEntry((((at + "_") + ay) + j), df), IntegerEntry((((at + "_") + ay) + k), cS), IntegerEntry((((at + "_") + ay) + m), cT), IntegerEntry((((at + "_") + ay) + l), cn), IntegerEntry((((at + "_") + ay) + n), cR), IntegerEntry((at + p), ((bB - cJ) + cR)), IntegerEntry((((at + "_") + ay) + u), aV), IntegerEntry((((at + "_") + ay) + w), aW), IntegerEntry((((at + "_") + ay) + y), cX), IntegerEntry((at + t), aV), IntegerEntry((at + v), aW), IntegerEntry((at + x), cX), IntegerEntry((at + z), height), IntegerEntry((((at + "_") + ay) + B), cZ), Reissue(ar, cY, true), ScriptTransfer(an, cY, ar)]
594+ let cK = (cA + dk)
595+ let cW = (cy - dk)
596+ let cL = (height + cE)
597+ let cJ = (fraction(cK, cF, W) + cW)
598+ let dm = br(ar, aw)
599+ let aT = dm._1
600+ let aU = dm._2
601+ let bS = dm._3
602+ let cP = dm._4
603+ let cQ = (aI(ar, aw) + bS)
604+[IntegerEntry((((ar + "_") + aw) + j), cW), IntegerEntry((((ar + "_") + aw) + k), cK), IntegerEntry((((ar + "_") + aw) + m), cL), IntegerEntry((((ar + "_") + aw) + l), cf), IntegerEntry((((ar + "_") + aw) + n), cJ), IntegerEntry((ar + p), ((bu - cB) + cJ)), IntegerEntry((((ar + "_") + aw) + u), aT), IntegerEntry((((ar + "_") + aw) + w), aU), IntegerEntry((ar + t), aT), IntegerEntry((ar + v), aU), IntegerEntry((ar + x), height), IntegerEntry((((ar + "_") + aw) + z), cQ), Reissue(ap, cP, true), ScriptTransfer(al, cP, ap)]
620605 }
621606 })
622607
623608
624609
625-@Callable(cz)
626-func unlockUserLock (at,ay) = valueOrElse(cx(), {
627- let cO = getIntegerValue(this, r)
628- let cH = valueOrErrorMessage(getInteger(this, (((at + "_") + ay) + m)), (((("There is no pool " + at) + " or user ") + ay) + "with lock"))
629- let bB = getIntegerValue(this, (at + p))
630- let cG = valueOrElse(getInteger(this, (((at + "_") + ay) + j)), 0)
631- let cI = valueOrElse(getInteger(this, (((at + "_") + ay) + k)), 0)
632- let cJ = valueOrElse(getInteger(this, (((at + "_") + ay) + n)), cG)
633- if ((cH > height))
634- then throw(("You can't unlock sharetokens till " + toString(cH)))
610+@Callable(cr)
611+func unlockUserLock (ar,aw) = valueOrElse(cp(), {
612+ let cG = getIntegerValue(this, r)
613+ let cz = valueOrErrorMessage(getInteger(this, (((ar + "_") + aw) + m)), (((("There is no pool " + ar) + " or user ") + aw) + "with lock"))
614+ let bu = getIntegerValue(this, (ar + p))
615+ let cy = valueOrElse(getInteger(this, (((ar + "_") + aw) + j)), 0)
616+ let cA = valueOrElse(getInteger(this, (((ar + "_") + aw) + k)), 0)
617+ let cB = valueOrElse(getInteger(this, (((ar + "_") + aw) + n)), cy)
618+ if ((cz > height))
619+ then throw(("You can't unlock sharetokens till " + toString(cz)))
635620 else {
636- let df = (cG + cI)
637- let dv = by(at, ay)
638- let aV = dv._1
639- let aW = dv._2
640- let cX = dv._3
641- let ca = dv._4
642- let cY = dv._5
643- let cZ = (aK(at, ay) + ca)
644-[IntegerEntry((((at + "_") + ay) + u), aV), IntegerEntry((((at + "_") + ay) + w), aW), IntegerEntry((((at + "_") + ay) + y), cX), IntegerEntry((at + t), aV), IntegerEntry((at + v), aW), IntegerEntry((at + x), cX), IntegerEntry((at + z), height), IntegerEntry((((at + "_") + ay) + j), df), IntegerEntry((((at + "_") + ay) + n), df), IntegerEntry((at + p), ((bB - cJ) + df)), IntegerEntry((((at + "_") + ay) + B), cZ), DeleteEntry((((at + "_") + ay) + k)), DeleteEntry((((at + "_") + ay) + m)), DeleteEntry((((at + "_") + ay) + l)), Reissue(ar, cY, true), ScriptTransfer(an, cY, ar), ScriptTransfer(cz.caller, cO, unit)]
621+ let cW = (cy + cA)
622+ let dn = br(ar, aw)
623+ let aT = dn._1
624+ let aU = dn._2
625+ let bS = dn._3
626+ let cP = dn._4
627+ let cQ = (aI(ar, aw) + bS)
628+[IntegerEntry((((ar + "_") + aw) + u), aT), IntegerEntry((((ar + "_") + aw) + w), aU), IntegerEntry((ar + t), aT), IntegerEntry((ar + v), aU), IntegerEntry((ar + x), height), IntegerEntry((((ar + "_") + aw) + j), cW), IntegerEntry((((ar + "_") + aw) + n), cW), IntegerEntry((ar + p), ((bu - cB) + cW)), IntegerEntry((((ar + "_") + aw) + z), cQ), DeleteEntry((((ar + "_") + aw) + k)), DeleteEntry((((ar + "_") + aw) + m)), DeleteEntry((((ar + "_") + aw) + l)), Reissue(ap, cP, true), ScriptTransfer(al, cP, ap), ScriptTransfer(cr.caller, cG, unit)]
645629 }
646630 })
647631
648632
649633
650-@Callable(cz)
651-func withdrawShareTokens (at,dc) = valueOrElse(cx(), db(cz, cz.caller, at, dc))
634+@Callable(cr)
635+func withdrawShareTokens (ar,cT) = valueOrElse(cp(), cS(cr, cr.caller, ar, cT))
652636
653637
654638
655-@Callable(cz)
656-func withdrawShareTokensFromPool (dr,at,dc) = valueOrElse(cx(), valueOrElse(cA(cz, at), db(cz, Address(dr), at, dc)))
639+@Callable(cr)
640+func withdrawShareTokensFromPool (dj,ar,cT) = valueOrElse(cp(), valueOrElse(cs(cr, ar), cS(cr, Address(dj), ar, cT)))
657641
658642
659643
660-@Callable(cz)
661-func claim (at) = valueOrElse(cx(), dj(cz, at, cz.caller))
644+@Callable(cr)
645+func claim (ar) = valueOrElse(cp(), {
646+ let bh = da(cr, ar, cr.caller)
647+ if ((bh._2 == 0))
648+ then throw("You have 0 available SWOP")
649+ else bh
650+ })
662651
663652
664653
665-@Callable(cz)
666-func claimInternal (at,cD) = valueOrElse(cx(), valueOrElse(cB(cz), dj(cz, at, Address(cD))))
654+@Callable(cr)
655+func claimInternal (ar,cv) = valueOrElse(cp(), valueOrElse(ct(cr), da(cr, ar, Address(cv))))
667656
668657
669658
670-@Callable(cz)
671-func claimAndStake (at) = valueOrElse(cx(), {
672- let ca = {
673- let dw = invoke(this, "claimInternal", [at, cz.caller.bytes], nil)
674- if ($isInstanceOf(dw, "Int"))
675- then dw
676- else throw(($getType(dw) + " couldn't be cast to Int"))
659+@Callable(cr)
660+func claimAndStake (ar) = valueOrElse(cp(), {
661+ let bS = {
662+ let do = invoke(this, "claimInternal", [ar, cr.caller.bytes], nil)
663+ if ($isInstanceOf(do, "Int"))
664+ then do
665+ else throw(($getType(do) + " couldn't be cast to Int"))
677666 }
678- if ((ca == ca))
679- then {
680- let dx = invoke(ak, "lockSWOPFromFarming", nil, [AttachedPayment(ar, ca)])
681- if ((dx == dx))
682- then nil
683- else throw("Strict value is not equal to itself.")
684- }
667+ if ((bS == bS))
668+ then if ((bS == 0))
669+ then throw("You have 0 available SWOP")
670+ else {
671+ let dp = invoke(ai, "lockSWOPFromFarming", nil, [AttachedPayment(ap, bS)])
672+ if ((dp == dp))
673+ then nil
674+ else throw("Strict value is not equal to itself.")
675+ }
685676 else throw("Strict value is not equal to itself.")
686677 })
687678
688679
689680
690-@Callable(cz)
691-func claimAll (bQ) = valueOrElse(cx(), {
692- func dy (dz,at) = {
693- let ca = {
694- let dw = invoke(this, "claimInternal", [at, cz.caller.bytes], nil)
695- if ($isInstanceOf(dw, "Int"))
696- then dw
697- else throw(($getType(dw) + " couldn't be cast to Int"))
681+@Callable(cr)
682+func claimAll (bJ) = valueOrElse(cp(), {
683+ func dq (dr,ar) = {
684+ let bS = {
685+ let do = invoke(this, "claimInternal", [ar, cr.caller.bytes], nil)
686+ if ($isInstanceOf(do, "Int"))
687+ then do
688+ else throw(($getType(do) + " couldn't be cast to Int"))
698689 }
699- if ((ca == ca))
700- then (dz + ca)
690+ if ((bS == bS))
691+ then (dr + bS)
701692 else throw("Strict value is not equal to itself.")
702693 }
703694
704- let dz = {
705- let cd = bQ
706- let ce = size(cd)
707- let cf = 0
708- func cg (ch,ci) = if ((ci >= ce))
709- then ch
710- else dy(ch, cd[ci])
695+ let dr = {
696+ let bV = bJ
697+ let bW = size(bV)
698+ let bX = 0
699+ func bY (bZ,ca) = if ((ca >= bW))
700+ then bZ
701+ else dq(bZ, bV[ca])
711702
712- func cj (ch,ci) = if ((ci >= ce))
713- then ch
703+ func cb (bZ,ca) = if ((ca >= bW))
704+ then bZ
714705 else throw("List size exceeds 60")
715706
716- cj(cg(cg(cg(cg(cg(cg(cg(cg(cg(cg(cg(cg(cg(cg(cg(cg(cg(cg(cg(cg(cg(cg(cg(cg(cg(cg(cg(cg(cg(cg(cg(cg(cg(cg(cg(cg(cg(cg(cg(cg(cg(cg(cg(cg(cg(cg(cg(cg(cg(cg(cg(cg(cg(cg(cg(cg(cg(cg(cg(cg(cf, 0), 1), 2), 3), 4), 5), 6), 7), 8), 9), 10), 11), 12), 13), 14), 15), 16), 17), 18), 19), 20), 21), 22), 23), 24), 25), 26), 27), 28), 29), 30), 31), 32), 33), 34), 35), 36), 37), 38), 39), 40), 41), 42), 43), 44), 45), 46), 47), 48), 49), 50), 51), 52), 53), 54), 55), 56), 57), 58), 59), 60)
707+ cb(bY(bY(bY(bY(bY(bY(bY(bY(bY(bY(bY(bY(bY(bY(bY(bY(bY(bY(bY(bY(bY(bY(bY(bY(bY(bY(bY(bY(bY(bY(bY(bY(bY(bY(bY(bY(bY(bY(bY(bY(bY(bY(bY(bY(bY(bY(bY(bY(bY(bY(bY(bY(bY(bY(bY(bY(bY(bY(bY(bY(bX, 0), 1), 2), 3), 4), 5), 6), 7), 8), 9), 10), 11), 12), 13), 14), 15), 16), 17), 18), 19), 20), 21), 22), 23), 24), 25), 26), 27), 28), 29), 30), 31), 32), 33), 34), 35), 36), 37), 38), 39), 40), 41), 42), 43), 44), 45), 46), 47), 48), 49), 50), 51), 52), 53), 54), 55), 56), 57), 58), 59), 60)
717708 }
718- if ((dz == 0))
709+ if ((dr == 0))
719710 then throw("You have 0 available SWOP")
720- else [ScriptTransfer(cz.caller, dz, ar)]
711+ else [ScriptTransfer(cr.caller, dr, ap)]
721712 })
722713
723714
724715
725-@Callable(cz)
726-func claimAllAndStake (bQ) = valueOrElse(cx(), {
727- func dy (dz,at) = {
728- let ca = {
729- let dw = invoke(this, "claimInternal", [at, cz.caller.bytes], nil)
730- if ($isInstanceOf(dw, "Int"))
731- then dw
732- else throw(($getType(dw) + " couldn't be cast to Int"))
716+@Callable(cr)
717+func claimAllAndStake (bJ) = valueOrElse(cp(), {
718+ func dq (dr,ar) = {
719+ let bS = {
720+ let do = invoke(this, "claimInternal", [ar, cr.caller.bytes], nil)
721+ if ($isInstanceOf(do, "Int"))
722+ then do
723+ else throw(($getType(do) + " couldn't be cast to Int"))
733724 }
734- if ((ca == ca))
735- then (dz + ca)
725+ if ((bS == bS))
726+ then (dr + bS)
736727 else throw("Strict value is not equal to itself.")
737728 }
738729
739- let dz = {
740- let cd = bQ
741- let ce = size(cd)
742- let cf = 0
743- func cg (ch,ci) = if ((ci >= ce))
744- then ch
745- else dy(ch, cd[ci])
730+ let dr = {
731+ let bV = bJ
732+ let bW = size(bV)
733+ let bX = 0
734+ func bY (bZ,ca) = if ((ca >= bW))
735+ then bZ
736+ else dq(bZ, bV[ca])
746737
747- func cj (ch,ci) = if ((ci >= ce))
748- then ch
738+ func cb (bZ,ca) = if ((ca >= bW))
739+ then bZ
749740 else throw("List size exceeds 60")
750741
751- cj(cg(cg(cg(cg(cg(cg(cg(cg(cg(cg(cg(cg(cg(cg(cg(cg(cg(cg(cg(cg(cg(cg(cg(cg(cg(cg(cg(cg(cg(cg(cg(cg(cg(cg(cg(cg(cg(cg(cg(cg(cg(cg(cg(cg(cg(cg(cg(cg(cg(cg(cg(cg(cg(cg(cg(cg(cg(cg(cg(cg(cf, 0), 1), 2), 3), 4), 5), 6), 7), 8), 9), 10), 11), 12), 13), 14), 15), 16), 17), 18), 19), 20), 21), 22), 23), 24), 25), 26), 27), 28), 29), 30), 31), 32), 33), 34), 35), 36), 37), 38), 39), 40), 41), 42), 43), 44), 45), 46), 47), 48), 49), 50), 51), 52), 53), 54), 55), 56), 57), 58), 59), 60)
742+ cb(bY(bY(bY(bY(bY(bY(bY(bY(bY(bY(bY(bY(bY(bY(bY(bY(bY(bY(bY(bY(bY(bY(bY(bY(bY(bY(bY(bY(bY(bY(bY(bY(bY(bY(bY(bY(bY(bY(bY(bY(bY(bY(bY(bY(bY(bY(bY(bY(bY(bY(bY(bY(bY(bY(bY(bY(bY(bY(bY(bY(bX, 0), 1), 2), 3), 4), 5), 6), 7), 8), 9), 10), 11), 12), 13), 14), 15), 16), 17), 18), 19), 20), 21), 22), 23), 24), 25), 26), 27), 28), 29), 30), 31), 32), 33), 34), 35), 36), 37), 38), 39), 40), 41), 42), 43), 44), 45), 46), 47), 48), 49), 50), 51), 52), 53), 54), 55), 56), 57), 58), 59), 60)
752743 }
753- if ((dz == 0))
744+ if ((dr == 0))
754745 then throw("You have 0 available SWOP")
755746 else {
756- let dx = invoke(ak, "lockSWOPFromFarming", nil, [AttachedPayment(ar, dz)])
757- if ((dx == dx))
747+ let dp = invoke(ai, "lockSWOPFromFarming", nil, [AttachedPayment(ap, dr)])
748+ if ((dp == dp))
758749 then nil
759750 else throw("Strict value is not equal to itself.")
760751 }
762753
763754
764755
765-@Callable(cz)
766-func updateUserBoostInterest (at,ay) = valueOrElse(cx(), if ((cz.caller != aj))
756+@Callable(cr)
757+func updateUserBoostInterest (ar,aw) = valueOrElse(cp(), if ((cr.caller != ah))
767758 then throw("Only voiting can call this function")
768759 else {
769- let dA = by(at, ay)
770- let aV = dA._1
771- let aW = dA._2
772- let cX = dA._3
773- let ca = dA._4
774- let cY = dA._5
775- let cZ = (aK(at, ay) + ca)
776-[IntegerEntry((((at + "_") + ay) + u), aV), IntegerEntry((((at + "_") + ay) + w), aW), IntegerEntry((((at + "_") + ay) + y), cX), IntegerEntry((at + t), aV), IntegerEntry((at + v), aW), IntegerEntry((at + x), cX), IntegerEntry((at + z), height), IntegerEntry((((at + "_") + ay) + B), cZ), Reissue(ar, cY, true), ScriptTransfer(an, cY, ar)]
760+ let ds = br(ar, aw)
761+ let aT = ds._1
762+ let aU = ds._2
763+ let bS = ds._3
764+ let cP = ds._4
765+ let cQ = (aI(ar, aw) + bS)
766+[IntegerEntry((((ar + "_") + aw) + u), aT), IntegerEntry((((ar + "_") + aw) + w), aU), IntegerEntry((ar + t), aT), IntegerEntry((ar + v), aU), IntegerEntry((ar + x), height), IntegerEntry((((ar + "_") + aw) + z), cQ), Reissue(ap, cP, true), ScriptTransfer(al, cP, ap)]
777767 })
778768
779769
780770
781-@Callable(cz)
782-func shutdown () = valueOrElse(cy(cz), if (!(ap))
771+@Callable(cr)
772+func shutdown () = valueOrElse(cq(cr), if (!(an))
783773 then throw(("DApp is already suspended. Cause: " + valueOrElse(getString(this, c), "the cause wasn't specified")))
784- else cv("Paused by admin"))
774+ else cn("Paused by admin"))
785775
786776
787777
788-@Callable(cz)
789-func activate () = valueOrElse(cy(cz), if (ap)
778+@Callable(cr)
779+func activate () = valueOrElse(cq(cr), if (an)
790780 then throw("DApp is already active")
791781 else [BooleanEntry(a, true), DeleteEntry(c)])
792782
793783
794-@Verifier(dB)
795-func dC () = {
796- let ac = dB
797- let dD = if (sigVerify(dB.bodyBytes, dB.proofs[0], af))
784+@Verifier(dt)
785+func du () = {
786+ let aa = dt
787+ let dv = if (sigVerify(dt.bodyBytes, dt.proofs[0], ad))
798788 then 1
799789 else 0
800- let dE = if (sigVerify(dB.bodyBytes, dB.proofs[1], ag))
790+ let dw = if (sigVerify(dt.bodyBytes, dt.proofs[1], ae))
801791 then 1
802792 else 0
803- let dF = if (sigVerify(dB.bodyBytes, dB.proofs[2], ah))
793+ let dx = if (sigVerify(dt.bodyBytes, dt.proofs[2], af))
804794 then 1
805795 else 0
806- (((dD + dE) + dF) >= 2)
796+ (((dv + dw) + dx) >= 2)
807797 }
808798
Full:
OldNewDifferences
11 {-# STDLIB_VERSION 6 #-}
22 {-# SCRIPT_TYPE ACCOUNT #-}
33 {-# CONTENT_TYPE DAPP #-}
44 let a = "active"
55
66 let b = "active_all_contracts"
77
88 let c = "shutdown_cause"
99
1010 let d = "_current_pool_fraction_reward"
1111
1212 let e = "_previous_pool_fraction_reward"
1313
1414 let f = "_pool_reward_update_height"
1515
1616 let g = "total_reward_per_block_current"
1717
1818 let h = "total_reward_per_block_previous"
1919
2020 let i = "reward_update_height"
2121
2222 let j = "_share_tokens_locked"
2323
2424 let k = "_share_tokens_blocked"
2525
2626 let l = "_share_tokens_blocked_type"
2727
2828 let m = "_share_tokens_blocked_height"
2929
3030 let n = "_share_tokens_virtual"
3131
3232 let o = "_total_share_tokens_locked"
3333
3434 let p = "_total_share_tokens_virtual"
3535
3636 let q = "_lock_params"
3737
3838 let r = "lock_waves_fee"
3939
4040 let s = "_boost_coef"
4141
4242 let t = "_last_interest"
4343
4444 let u = "_last_interest"
4545
4646 let v = "_last_interest_b"
4747
4848 let w = "_last_interest_u_b"
4949
50-let x = "_last_interest_lpb"
50+let x = "_last_interest_height"
5151
52-let y = "_last_interest_u_lpb"
52+let y = "SWOP_id"
5353
54-let z = "_last_interest_height"
54+let z = "_available_SWOP"
5555
56-let A = "SWOP_id"
56+let A = "swop_year_emission"
5757
58-let B = "_available_SWOP"
58+let B = "_harvest_pool_vote_gSWOP"
5959
60-let C = "swop_year_emission"
60+let C = "_pool_vote_gSWOP"
6161
62-let D = "_harvest_pool_vote_gSWOP"
62+let D = "_user_vote_gSWOP"
6363
64-let E = "_pool_vote_gSWOP"
64+let E = "_pool_struc"
6565
66-let F = "_user_vote_gSWOP"
66+let F = "_user_pool_struc"
6767
68-let G = "_pool_struc"
68+let G = "_harvest_user_pool_vote_gSWOP"
6969
70-let H = "_user_pool_struc"
70+let H = "first_harvest_height"
7171
72-let I = "_harvest_user_pool_vote_gSWOP"
72+let I = "share_limit_on_first_harvest"
7373
74-let J = "first_harvest_height"
74+let J = "cpmm_contract"
7575
76-let K = "share_limit_on_first_harvest"
76+let K = "admin_pub_1"
7777
78-let L = "cpmm_contract"
78+let L = "admin_pub_2"
7979
80-let M = "admin_pub_1"
80+let M = "admin_pub_3"
8181
82-let N = "admin_pub_2"
82+let N = "admin_invoke_pub"
8383
84-let O = "admin_pub_3"
84+let O = "money_box_address"
8585
86-let P = "admin_invoke_pub"
86+let P = "voting_address"
8787
88-let Q = "money_box_address"
88+let Q = "governance_address"
8989
90-let R = "voting_address"
90+let R = "lp_farming"
9191
92-let S = "governance_address"
92+let S = "farming_treasure"
9393
94-let T = "lp_farming"
94+let T = Address(base58'3MvVBtsXroQpy1tsPw21TU2ET9A8WfmrNjz')
9595
96-let U = "farming_treasure"
96+let U = 10000000000
9797
98-let V = Address(base58'3MvVBtsXroQpy1tsPw21TU2ET9A8WfmrNjz')
98+let V = 100000000
9999
100-let W = 10000000000
100+let W = 1000
101101
102-let X = 100000000
102+let X = 500
103103
104-let Y = 1000
105-
106-let Z = 500
107-
108-func aa (ab) = {
109- let ac = getString(V, ab)
110- if ($isInstanceOf(ac, "String"))
104+func Y (Z) = {
105+ let aa = getString(T, Z)
106+ if ($isInstanceOf(aa, "String"))
111107 then {
112- let ad = ac
113- fromBase58String(ad)
108+ let ab = aa
109+ fromBase58String(ab)
114110 }
115111 else {
116- let ae = ac
117- throw((ab + "is empty"))
112+ let ac = aa
113+ throw((Z + "is empty"))
118114 }
119115 }
120116
121117
122-let af = aa(M)
118+let ad = Y(K)
123119
124-let ag = aa(N)
120+let ae = Y(L)
125121
126-let ah = aa(O)
122+let af = Y(M)
127123
128-let ai = Address(aa(Q))
124+let ag = Address(Y(O))
129125
130-let aj = Address(aa(R))
126+let ah = Address(Y(P))
131127
132-let ak = Address(aa(S))
128+let ai = Address(Y(Q))
133129
134-let al = aa(P)
130+let aj = Y(N)
135131
136-let am = Address(aa(T))
132+let ak = Address(Y(R))
137133
138-let an = Address(aa(U))
134+let al = Address(Y(S))
139135
140-let ao = Address(aa(L))
136+let am = Address(Y(J))
141137
142-let ap = getBooleanValue(this, a)
138+let an = getBooleanValue(this, a)
143139
144-let aq = valueOrElse(getBoolean(V, b), true)
140+let ao = valueOrElse(getBoolean(T, b), true)
145141
146-let ar = fromBase58String(getStringValue(this, A))
142+let ap = fromBase58String(getStringValue(this, y))
147143
148-func as (at) = valueOrElse(getInteger(Address(fromBase58String(at)), J), 0)
144+func aq (ar) = valueOrElse(getInteger(Address(fromBase58String(ar)), H), 0)
149145
150146
151-func au (at) = valueOrErrorMessage(getInteger(at, K), ("No data on the key: " + K))
147+func as (ar) = valueOrErrorMessage(getInteger(ar, I), ("No data on the key: " + I))
152148
153149
154-func av (at) = valueOrErrorMessage(getInteger(this, (at + o)), (("No data on the key: " + at) + o))
150+func at (ar) = valueOrErrorMessage(getInteger(this, (ar + o)), (("No data on the key: " + ar) + o))
155151
156152
157-func aw (at) = valueOrElse(getInteger(aj, (at + E)), valueOrElse(parseInt(split(valueOrElse(getString(aj, (at + G)), ""), "_")[0]), 0))
153+func au (ar) = valueOrElse(getInteger(ah, (ar + C)), valueOrElse(parseInt(split(valueOrElse(getString(ah, (ar + E)), ""), "_")[0]), 0))
158154
159155
160-func ax (at,ay) = valueOrElse(getInteger(aj, (((ay + "_") + at) + F)), valueOrElse(parseInt(split(valueOrElse(getString(aj, (((ay + "_") + at) + H)), ""), "_")[0]), 0))
156+func av (ar,aw) = valueOrElse(getInteger(ah, (((aw + "_") + ar) + D)), valueOrElse(parseInt(split(valueOrElse(getString(ah, (((aw + "_") + ar) + F)), ""), "_")[0]), 0))
161157
162158
163-func az (at) = fromBase58String(getStringValue(value(addressFromString(at)), "share_asset_id"))
159+func ax (ar) = fromBase58String(getStringValue(value(addressFromString(ar)), "share_asset_id"))
164160
165161
166-func aA (aB) = {
167- let ac = aB
168- if ($isInstanceOf(ac, "ByteVector"))
162+func ay (az) = {
163+ let aa = az
164+ if ($isInstanceOf(aa, "ByteVector"))
169165 then {
170- let aC = ac
171- assetBalance(this, aC)
166+ let aA = aa
167+ assetBalance(this, aA)
172168 }
173- else if ($isInstanceOf(ac, "Unit"))
169+ else if ($isInstanceOf(aa, "Unit"))
174170 then {
175- let aD = ac
171+ let aB = aa
176172 wavesBalance(this).available
177173 }
178174 else throw("Match error")
179175 }
180176
181177
182-func aE (aF,aG) = {
183- let aH = value(assetInfo(aF)).decimals
184- let aI = value(assetInfo(aG)).decimals
185- let aJ = ((aI - aH) + 8)
186- pow(10, 0, aJ, 0, 0, DOWN)
178+func aC (aD,aE) = {
179+ let aF = value(assetInfo(aD)).decimals
180+ let aG = value(assetInfo(aE)).decimals
181+ let aH = ((aG - aF) + 8)
182+ pow(10, 0, aH, 0, 0, DOWN)
187183 }
188184
189185
190-func aK (at,ay) = valueOrElse(getInteger(this, (((at + "_") + ay) + B)), 0)
186+func aI (ar,aw) = valueOrElse(getInteger(this, (((ar + "_") + aw) + z)), 0)
191187
192188
193-func aL (at) = {
194- let aM = valueOrErrorMessage(getInteger(ak, g), ((("No data on the key: " + g) + " at address ") + toString(ak)))
195- let aN = valueOrErrorMessage(getInteger(ak, h), ((("No data on the key: " + h) + " at address ") + toString(ak)))
196- let aO = valueOrErrorMessage(getInteger(ak, (at + d)), (((("No data on the key: " + at) + d) + " at address ") + toString(ak)))
197- let aP = valueOrErrorMessage(getInteger(ak, i), ((("No data on the key: " + i) + " at address ") + toString(ak)))
198- let aQ = valueOrElse(getInteger(ak, (at + f)), aP)
199- let aR = valueOrErrorMessage(getInteger(ak, (at + e)), (((("No data on the key: " + at) + e) + " at address ") + toString(ak)))
200- let aS = fraction(aM, aO, W)
201- let aT = fraction(aM, aR, W)
202- if (if ((aS > aM))
189+func aJ (ar) = {
190+ let aK = valueOrErrorMessage(getInteger(ai, g), ((("No data on the key: " + g) + " at address ") + toString(ai)))
191+ let aL = valueOrErrorMessage(getInteger(ai, h), ((("No data on the key: " + h) + " at address ") + toString(ai)))
192+ let aM = valueOrErrorMessage(getInteger(ai, (ar + d)), (((("No data on the key: " + ar) + d) + " at address ") + toString(ai)))
193+ let aN = valueOrErrorMessage(getInteger(ai, i), ((("No data on the key: " + i) + " at address ") + toString(ai)))
194+ let aO = valueOrElse(getInteger(ai, (ar + f)), aN)
195+ let aP = valueOrErrorMessage(getInteger(ai, (ar + e)), (((("No data on the key: " + ar) + e) + " at address ") + toString(ai)))
196+ let aQ = fraction(aK, aM, U)
197+ let aR = fraction(aK, aP, U)
198+ if (if ((aQ > aK))
203199 then true
204- else (aT > aN))
200+ else (aR > aL))
205201 then throw("rewardPoolCurrent > totalRewardPerBlockCurrent or rewardPoolPrevious > totalRewardPerBlockPrevious")
206- else $Tuple4(aS, aP, aT, aQ)
202+ else $Tuple4(aQ, aN, aR, aO)
207203 }
208204
209205
210-func aU (at) = {
211- let aV = valueOrErrorMessage(getInteger(this, (at + t)), (("No data on the key: " + at) + t))
212- let aW = valueOrElse(getInteger(this, (at + v)), 0)
213- let aX = valueOrElse(getInteger(this, (at + x)), 0)
214- let aY = valueOrElse(getInteger(this, (at + z)), height)
215- $Tuple4(aY, aV, aW, aX)
206+func aS (ar) = {
207+ let aT = valueOrErrorMessage(getInteger(this, (ar + t)), (("No data on the key: " + ar) + t))
208+ let aU = valueOrElse(getInteger(this, (ar + v)), 0)
209+ let aV = valueOrElse(getInteger(this, (ar + x)), height)
210+ $Tuple3(aV, aT, aU)
216211 }
217212
218213
219-func aZ (at,ba) = {
220- let bb = valueOrElse(getInteger(this, (at + s)), Z)
221- fraction(ba, Y, (bb + Y))
214+func aW (ar,aX) = {
215+ let aY = valueOrElse(getInteger(this, (ar + s)), X)
216+ fraction(aX, W, (aY + W))
222217 }
223218
224219
225-func bc (at,ba) = {
226- let bb = valueOrElse(getInteger(this, (at + s)), Z)
227- fraction(ba, bb, (bb + Y))
220+func aZ (ar,aX) = {
221+ let aY = valueOrElse(getInteger(this, (ar + s)), X)
222+ fraction(aX, aY, (aY + W))
228223 }
229224
230225
231-func bd (at,aY,aP,aQ,aV,aW,be,bf,bg,bh,bi,bj) = if ((bh == 0))
232- then $Tuple3(aV, aW, bf)
233- else {
234- let bk = if (if (if ((aP > height))
235- then (aP == aQ)
226+func ba (ar,aV,aN,aO,aT,aU,bb,bc,bd,be,bf) = {
227+ let bg = if (if (if ((aN > height))
228+ then (aN == aO)
229+ else false)
230+ then true
231+ else if ((height > aN))
232+ then (aN != aO)
236233 else false)
237- then true
238- else if ((height > aP))
239- then (aP != aQ)
240- else false)
234+ then {
235+ let bh = (be * (height - aV))
236+ $Tuple3(bh, aT, aU)
237+ }
238+ else if (if (if ((height > aN))
239+ then (aN == aO)
240+ else false)
241+ then (aV > aN)
242+ else false)
241243 then {
242- let bl = (bi * (height - aY))
243- $Tuple4(bl, aV, aW, bf)
244+ let bh = (bc * (height - aV))
245+ $Tuple3(bh, aT, aU)
244246 }
245- else if (if (if ((height > aP))
246- then (aP == aQ)
247- else false)
248- then (aY > aP)
249- else false)
250- then {
251- let bl = (bg * (height - aY))
252- $Tuple4(bl, aV, aW, bf)
253- }
254- else {
255- let bm = (bi * (aP - aY))
256- let bn = (aV + fraction(aZ(at, bm), bj, bh))
257- let bo = (aW + (if ((be > 0))
258- then fraction(bc(at, bm), X, be)
259- else 0))
260- let bp = (bf + (if ((be > 0))
261- then fraction(fraction(bc(at, bm), X, bh), X, be)
262- else 0))
263- let bq = (bg * (height - aP))
264- $Tuple4(bq, bn, bo, bp)
265- }
266- let br = bk._1
267- let bs = bk._2
268- let bt = bk._3
269- let bu = bk._4
270- let bv = (bs + fraction(aZ(at, br), bj, bh))
271- let bw = (bt + (if ((be > 0))
272- then fraction(bc(at, br), X, be)
273- else 0))
274- let bx = (bu + (if ((be > 0))
275- then fraction(fraction(bc(at, br), X, bh), X, be)
276- else 0))
277- $Tuple3(bv, bw, bx)
278- }
279-
280-
281-func by (at,ay) = {
282- let bj = aE(ar, az(at))
283- let be = aw(at)
284- let bz = ax(at, ay)
285- let bA = av(at)
286- let bB = valueOrElse(getInteger(this, (at + p)), bA)
287- let bC = aU(at)
288- let aY = bC._1
289- let aV = bC._2
290- let aW = bC._3
291- let aX = bC._4
292- let bD = aL(at)
293- let bg = bD._1
294- let aP = bD._2
295- let bi = bD._3
296- let aQ = bD._4
297- let bE = valueOrElse(getInteger(this, (((at + "_") + ay) + u)), aV)
298- let bF = valueOrElse(getInteger(this, (((at + "_") + ay) + w)), aW)
299- let bG = valueOrElse(getInteger(this, (((at + "_") + ay) + y)), aX)
300- let bH = valueOrElse(getInteger(this, (((at + "_") + ay) + j)), 0)
301- let bI = valueOrElse(getInteger(this, (((at + "_") + ay) + n)), bH)
302- let bJ = bd(at, aY, aP, aQ, aV, aW, be, aX, bg, bB, bi, bj)
303- let bv = bJ._1
304- let bw = bJ._2
305- let bx = bJ._3
306- let bK = fraction(bI, (bv - bE), bj)
307- let bL = if ((bz == 0))
308- then (bK / 2)
309- else fraction(bz, (bw - bF), X)
310- let bM = fraction(toBigInt(bI), toBigInt(bz), toBigInt(1))
311- let bN = toInt(fraction(fraction(bM, toBigInt((bx - bG)), toBigInt(X)), toBigInt(1), toBigInt(X)))
312- let bO = (bL - bN)
313- if ((0 > bO))
314- then throw("toTreasury < 0")
315- else $Tuple5(bv, bw, bx, (bK + bN), bO)
247+ else {
248+ let bi = (be * (aN - aV))
249+ let bj = (aT + fraction(aW(ar, bi), bf, bd))
250+ let bk = (aU + (if ((bb > 0))
251+ then fraction(aZ(ar, bi), V, bb)
252+ else 0))
253+ let bl = (bc * (height - aN))
254+ $Tuple3(bl, bj, bk)
255+ }
256+ let bm = bg._1
257+ let bn = bg._2
258+ let bo = bg._3
259+ let bp = (bn + fraction(aW(ar, bm), bf, bd))
260+ let bq = (bo + (if ((bb > 0))
261+ then fraction(aZ(ar, bm), V, bb)
262+ else 0))
263+ $Tuple3(bp, bq, bm)
316264 }
317265
318266
319-func bP (bQ,ay) = {
320- func bR (bS,at) = {
321- let bT = bS
322- let bU = bT._1
323- let bV = bT._2
324- let bW = by(at, ay)
325- let bX = bW._1
326- let bY = bW._2
327- let bZ = bW._3
328- let ca = bW._4
329- let cb = bW._5
330- let cc = (aK(at, ay) + ca)
331- $Tuple2((bU :+ at), (bV :+ cc))
332- }
333-
334- let cd = bQ
335- let ce = size(cd)
336- let cf = $Tuple2(nil, nil)
337- func cg (ch,ci) = if ((ci >= ce))
338- then ch
339- else bR(ch, cd[ci])
340-
341- func cj (ch,ci) = if ((ci >= ce))
342- then ch
343- else throw("List size exceeds 60")
344-
345- cj(cg(cg(cg(cg(cg(cg(cg(cg(cg(cg(cg(cg(cg(cg(cg(cg(cg(cg(cg(cg(cg(cg(cg(cg(cg(cg(cg(cg(cg(cg(cg(cg(cg(cg(cg(cg(cg(cg(cg(cg(cg(cg(cg(cg(cg(cg(cg(cg(cg(cg(cg(cg(cg(cg(cg(cg(cg(cg(cg(cg(cf, 0), 1), 2), 3), 4), 5), 6), 7), 8), 9), 10), 11), 12), 13), 14), 15), 16), 17), 18), 19), 20), 21), 22), 23), 24), 25), 26), 27), 28), 29), 30), 31), 32), 33), 34), 35), 36), 37), 38), 39), 40), 41), 42), 43), 44), 45), 46), 47), 48), 49), 50), 51), 52), 53), 54), 55), 56), 57), 58), 59), 60)
267+func br (ar,aw) = {
268+ let bf = aC(ap, ax(ar))
269+ let bb = au(ar)
270+ let bs = av(ar, aw)
271+ let bt = at(ar)
272+ let bu = valueOrElse(getInteger(this, (ar + p)), bt)
273+ let bv = aS(ar)
274+ let aV = bv._1
275+ let aT = bv._2
276+ let aU = bv._3
277+ let bw = aJ(ar)
278+ let bc = bw._1
279+ let aN = bw._2
280+ let be = bw._3
281+ let aO = bw._4
282+ let bx = valueOrElse(getInteger(this, (((ar + "_") + aw) + u)), aT)
283+ let by = valueOrElse(getInteger(this, (((ar + "_") + aw) + w)), aU)
284+ let bz = valueOrElse(getInteger(this, (((ar + "_") + aw) + j)), 0)
285+ let bA = valueOrElse(getInteger(this, (((ar + "_") + aw) + n)), bz)
286+ if ((bu == 0))
287+ then {
288+ let bB = if ((aT == 0))
289+ then (bc * (height - aV))
290+ else 0
291+ $Tuple4(aT, aU, 0, bB)
292+ }
293+ else {
294+ let bC = ba(ar, aV, aN, aO, aT, aU, bb, bc, bu, be, bf)
295+ let bp = bC._1
296+ let bq = bC._2
297+ let bD = bC._3
298+ let bE = fraction(bA, (bp - bx), bf)
299+ let aY = valueOrElse(getInteger(this, (ar + s)), X)
300+ let bF = fraction(bE, aY, W)
301+ let bG = fraction((bq - by), bs, V)
302+ let bH = min([bF, bG])
303+ let bB = (bF - bH)
304+ if ((0 > bB))
305+ then throw("toTreasury < 0")
306+ else $Tuple4(bp, bq, (bE + bH), bB)
307+ }
346308 }
347309
348310
349-func ck (at,ay,cl,cm,cn) = if ((as(at) > height))
311+func bI (bJ,aw) = {
312+ func bK (bL,ar) = {
313+ let bM = bL
314+ let bN = bM._1
315+ let bO = bM._2
316+ let bP = br(ar, aw)
317+ let bQ = bP._1
318+ let bR = bP._2
319+ let bS = bP._3
320+ let bT = bP._4
321+ let bU = (aI(ar, aw) + bS)
322+ $Tuple2((bN :+ ar), (bO :+ bU))
323+ }
324+
325+ let bV = bJ
326+ let bW = size(bV)
327+ let bX = $Tuple2(nil, nil)
328+ func bY (bZ,ca) = if ((ca >= bW))
329+ then bZ
330+ else bK(bZ, bV[ca])
331+
332+ func cb (bZ,ca) = if ((ca >= bW))
333+ then bZ
334+ else throw("List size exceeds 60")
335+
336+ cb(bY(bY(bY(bY(bY(bY(bY(bY(bY(bY(bY(bY(bY(bY(bY(bY(bY(bY(bY(bY(bY(bY(bY(bY(bY(bY(bY(bY(bY(bY(bY(bY(bY(bY(bY(bY(bY(bY(bY(bY(bY(bY(bY(bY(bY(bY(bY(bY(bY(bY(bY(bY(bY(bY(bY(bY(bY(bY(bY(bY(bX, 0), 1), 2), 3), 4), 5), 6), 7), 8), 9), 10), 11), 12), 13), 14), 15), 16), 17), 18), 19), 20), 21), 22), 23), 24), 25), 26), 27), 28), 29), 30), 31), 32), 33), 34), 35), 36), 37), 38), 39), 40), 41), 42), 43), 44), 45), 46), 47), 48), 49), 50), 51), 52), 53), 54), 55), 56), 57), 58), 59), 60)
337+ }
338+
339+
340+func cc (ar,aw,cd,ce,cf) = if ((aq(ar) > height))
350341 then {
351- let co = valueOrElse(getInteger(aj, (at + D)), 0)
352- let cp = valueOrElse(getInteger(aj, (((ay + "_") + at) + I)), 0)
353- let cq = au(addressFromStringValue(at))
354- let cr = (fraction(cq, cp, co) - cl)
355- if ((cn > 0))
342+ let cg = valueOrElse(getInteger(ah, (ar + B)), 0)
343+ let ch = valueOrElse(getInteger(ah, (((aw + "_") + ar) + G)), 0)
344+ let ci = as(addressFromStringValue(ar))
345+ let cj = (fraction(ci, ch, cg) - cd)
346+ if ((cf > 0))
356347 then throw("You can't lock shareTokens till first harvest end.")
357- else if ((cp == 0))
348+ else if ((ch == 0))
358349 then 0
359- else if ((cm >= cr))
360- then (cm - cr)
350+ else if ((ce >= cj))
351+ then (ce - cj)
361352 else 0
362353 }
363354 else 0
364355
365356
366-func cs (ct) = {
367- let cu = split(valueOrErrorMessage(getString(this, (toString(ct) + q)), ("There are no key for lock type" + toString(ct))), "_")
368- $Tuple2(parseIntValue(cu[0]), parseIntValue(cu[1]))
357+func ck (cl) = {
358+ let cm = split(valueOrErrorMessage(getString(this, (toString(cl) + q)), ("There are no key for lock type" + toString(cl))), "_")
359+ $Tuple2(parseIntValue(cm[0]), parseIntValue(cm[1]))
369360 }
370361
371362
372-func cv (cw) = [BooleanEntry(a, false), StringEntry(c, cw)]
363+func cn (co) = [BooleanEntry(a, false), StringEntry(c, co)]
373364
374365
375-func cx () = if (if (ap)
376- then aq
366+func cp () = if (if (an)
367+ then ao
377368 else false)
378369 then unit
379370 else throw("DApp is inactive at this moment")
380371
381372
382-func cy (cz) = if (containsElement([af, ag, ah], cz.callerPublicKey))
373+func cq (cr) = if (containsElement([ad, ae, af], cr.callerPublicKey))
383374 then unit
384375 else throw("Only admin can call this function")
385376
386377
387-func cA (cz,at) = if (if ((toString(cz.caller) == at))
378+func cs (cr,ar) = if (if ((toString(cr.caller) == ar))
388379 then true
389- else (cz.caller == ao))
380+ else (cr.caller == am))
390381 then unit
391382 else throw("Only pool can call this function")
392383
393384
394-func cB (cz) = if ((cz.caller == this))
385+func ct (cr) = if ((cr.caller == this))
395386 then unit
396387 else throw("Only contract itself can call this function")
397388
398389
399-func cC (cz,cD,at,cn) = {
400- let cE = az(at)
401- let ay = toString(cD)
402- let cF = av(at)
403- let bB = valueOrElse(getInteger(this, (at + p)), cF)
404- let cG = valueOrElse(getInteger(this, (((at + "_") + ay) + j)), 0)
405- let cH = valueOrElse(getInteger(this, (((at + "_") + ay) + m)), 0)
406- let cI = valueOrElse(getInteger(this, (((at + "_") + ay) + k)), 0)
407- let cJ = valueOrElse(getInteger(this, (((at + "_") + ay) + n)), cG)
408- let cK = ((cG + cI) + cz.payments[0].amount)
409- let cL = cs(cn)
410- let cM = cL._1
411- let cN = cL._2
412- let cO = getIntegerValue(this, r)
413- if ((cz.payments[0].assetId != cE))
390+func cu (cr,cv,ar,cf) = {
391+ let cw = ax(ar)
392+ let aw = toString(cv)
393+ let cx = at(ar)
394+ let bu = valueOrElse(getInteger(this, (ar + p)), cx)
395+ let cy = valueOrElse(getInteger(this, (((ar + "_") + aw) + j)), 0)
396+ let cz = valueOrElse(getInteger(this, (((ar + "_") + aw) + m)), 0)
397+ let cA = valueOrElse(getInteger(this, (((ar + "_") + aw) + k)), 0)
398+ let cB = valueOrElse(getInteger(this, (((ar + "_") + aw) + n)), cy)
399+ let cC = ((cy + cA) + cr.payments[0].amount)
400+ let cD = ck(cf)
401+ let cE = cD._1
402+ let cF = cD._2
403+ let cG = getIntegerValue(this, r)
404+ if ((cr.payments[0].assetId != cw))
414405 then throw("Wrong sharetoken in payment")
415- else if ((0 >= cz.payments[0].amount))
406+ else if ((0 >= cr.payments[0].amount))
416407 then throw("Payment amount must be greater than 0")
417- else if ((0 > cn))
408+ else if ((0 > cf))
418409 then throw("lockType must be >= 0")
419410 else {
420- let cP = ck(at, ay, cG, cz.payments[0].amount, cn)
421- if ((cP == cP))
411+ let cH = cc(ar, aw, cy, cr.payments[0].amount, cf)
412+ if ((cH == cH))
422413 then {
423- let cQ = if ((cn == 0))
414+ let cI = if ((cf == 0))
424415 then {
425- let cR = ((cJ + cz.payments[0].amount) - cP)
426- $Tuple2([IntegerEntry((((at + "_") + ay) + j), ((cG + cz.payments[0].amount) - cP)), IntegerEntry((((at + "_") + ay) + n), cR), IntegerEntry((at + p), ((bB + cz.payments[0].amount) - cP)), ScriptTransfer(cD, cP, cz.payments[0].assetId)], ((cF + cz.payments[0].amount) - cP))
416+ let cJ = ((cB + cr.payments[0].amount) - cH)
417+ $Tuple2([IntegerEntry((((ar + "_") + aw) + j), ((cy + cr.payments[0].amount) - cH)), IntegerEntry((((ar + "_") + aw) + n), cJ), IntegerEntry((ar + p), ((bu + cr.payments[0].amount) - cH)), ScriptTransfer(cv, cH, cr.payments[0].assetId)], ((cx + cr.payments[0].amount) - cH))
427418 }
428- else if (if ((cH == 0))
429- then if (if ((2 > size(cz.payments)))
419+ else if (if ((cz == 0))
420+ then if (if ((2 > size(cr.payments)))
430421 then true
431- else (cz.payments[1].assetId != unit))
422+ else (cr.payments[1].assetId != unit))
432423 then true
433- else (cO > cz.payments[1].amount)
424+ else (cG > cr.payments[1].amount)
434425 else false)
435- then throw((("You need to pay additional waves comission " + toString(cO)) + "WAVES"))
436- else if ((cH > (height + cM)))
426+ then throw((("You need to pay additional waves comission " + toString(cG)) + "WAVES"))
427+ else if ((cz > (height + cE)))
437428 then throw("You cannot lock sharetokens for a period less than what you have already locked")
438429 else {
439- let cS = (cI + cz.payments[0].amount)
440- let cT = (height + cM)
441- let cR = (fraction(cS, cN, Y) + cG)
442- $Tuple2([IntegerEntry((((at + "_") + ay) + k), cS), IntegerEntry((((at + "_") + ay) + m), cT), IntegerEntry((((at + "_") + ay) + l), cn), IntegerEntry((((at + "_") + ay) + n), cR), IntegerEntry((at + p), ((bB - cJ) + cR))], (cF + cz.payments[0].amount))
430+ let cK = (cA + cr.payments[0].amount)
431+ let cL = (height + cE)
432+ let cJ = (fraction(cK, cF, W) + cy)
433+ $Tuple2([IntegerEntry((((ar + "_") + aw) + k), cK), IntegerEntry((((ar + "_") + aw) + m), cL), IntegerEntry((((ar + "_") + aw) + l), cf), IntegerEntry((((ar + "_") + aw) + n), cJ), IntegerEntry((ar + p), ((bu - cB) + cJ))], (cx + cr.payments[0].amount))
443434 }
444- let cU = cQ._1
445- let cV = cQ._2
446- if ((aA(cE) > cV))
435+ let cM = cI._1
436+ let cN = cI._2
437+ if ((ay(cw) > cN))
447438 then throw("Balance of share-token is lower than totalAmount")
448439 else {
449- let cW = by(at, ay)
450- let aV = cW._1
451- let aW = cW._2
452- let cX = cW._3
453- let ca = cW._4
454- let cY = cW._5
455- let cZ = (aK(at, ay) + ca)
456- let da = if ((getString(Address(fromBase58String(at)), "version") == "3.0.0"))
457- then invoke(am, "updateUserInterest", [ay, at, cK], nil)
440+ let cO = br(ar, aw)
441+ let aT = cO._1
442+ let aU = cO._2
443+ let bS = cO._3
444+ let cP = cO._4
445+ let cQ = (aI(ar, aw) + bS)
446+ let cR = if ((getString(Address(fromBase58String(ar)), "version") == "3.0.0"))
447+ then invoke(ak, "updateUserInterest", [aw, ar, cC], nil)
458448 else 0
459- if ((da == da))
460- then ([IntegerEntry((((at + "_") + ay) + u), aV), IntegerEntry((((at + "_") + ay) + w), aW), IntegerEntry((((at + "_") + ay) + y), cX), IntegerEntry((at + t), aV), IntegerEntry((at + v), aW), IntegerEntry((at + x), cX), IntegerEntry((at + z), height), IntegerEntry((at + o), cV), IntegerEntry((((at + "_") + ay) + B), cZ), Reissue(ar, cY, true), ScriptTransfer(an, cY, ar)] ++ cU)
449+ if ((cR == cR))
450+ then ([IntegerEntry((((ar + "_") + aw) + u), aT), IntegerEntry((((ar + "_") + aw) + w), aU), IntegerEntry((ar + t), aT), IntegerEntry((ar + v), aU), IntegerEntry((ar + x), height), IntegerEntry((ar + o), cN), IntegerEntry((((ar + "_") + aw) + z), cQ), Reissue(ap, cP, true), ScriptTransfer(al, cP, ap)] ++ cM)
461451 else throw("Strict value is not equal to itself.")
462452 }
463453 }
464454 else throw("Strict value is not equal to itself.")
465455 }
466456 }
467457
468458
469-func db (cz,cD,at,dc) = valueOrElse(cx(), {
470- let dd = fromBase58String(getStringValue(value(addressFromString(at)), "share_asset_id"))
471- let ay = toString(cD)
472- let de = by(at, ay)
473- let aV = de._1
474- let aW = de._2
475- let cX = de._3
476- let ca = de._4
477- let cY = de._5
478- let cG = valueOrElse(getInteger(this, (((at + "_") + ay) + j)), 0)
479- let cI = valueOrElse(getInteger(this, (((at + "_") + ay) + k)), 0)
480- let cJ = valueOrElse(getInteger(this, (((at + "_") + ay) + n)), cG)
481- let df = (cG - dc)
482- let cZ = (aK(at, ay) + ca)
483- let dg = av(at)
484- let bB = valueOrElse(getInteger(this, (at + p)), dg)
485- let dh = (dg - dc)
486- let di = (bB - dc)
487- let cR = (cJ - dc)
488- if ((dc > cG))
459+func cS (cr,cv,ar,cT) = valueOrElse(cp(), {
460+ let cU = fromBase58String(getStringValue(value(addressFromString(ar)), "share_asset_id"))
461+ let aw = toString(cv)
462+ let cV = br(ar, aw)
463+ let aT = cV._1
464+ let aU = cV._2
465+ let bS = cV._3
466+ let cP = cV._4
467+ let cy = valueOrElse(getInteger(this, (((ar + "_") + aw) + j)), 0)
468+ let cA = valueOrElse(getInteger(this, (((ar + "_") + aw) + k)), 0)
469+ let cB = valueOrElse(getInteger(this, (((ar + "_") + aw) + n)), cy)
470+ let cW = (cy - cT)
471+ let cQ = (aI(ar, aw) + bS)
472+ let cX = at(ar)
473+ let bu = valueOrElse(getInteger(this, (ar + p)), cX)
474+ let cY = (cX - cT)
475+ let cZ = (bu - cT)
476+ let cJ = (cB - cT)
477+ if ((cT > cy))
489478 then throw("Withdraw amount more then user locked amount")
490- else if ((aA(dd) > dg))
479+ else if ((ay(cU) > cX))
491480 then throw("Balance of share-token is lower than totalAmount")
492481 else {
493- let da = if ((getString(Address(fromBase58String(at)), "version") == "3.0.0"))
494- then invoke(am, "updateUserInterest", [ay, at, (cG + cI)], nil)
482+ let cR = if ((getString(Address(fromBase58String(ar)), "version") == "3.0.0"))
483+ then invoke(ak, "updateUserInterest", [aw, ar, (cy + cA)], nil)
495484 else 0
496- if ((da == da))
497- then [IntegerEntry((((at + "_") + ay) + u), aV), IntegerEntry((((at + "_") + ay) + w), aW), IntegerEntry((((at + "_") + ay) + y), cX), IntegerEntry((at + t), aV), IntegerEntry((at + v), aW), IntegerEntry((at + x), cX), IntegerEntry((at + z), height), IntegerEntry((((at + "_") + ay) + j), df), IntegerEntry((((at + "_") + ay) + n), cR), IntegerEntry((at + o), dh), IntegerEntry((at + p), di), IntegerEntry((((at + "_") + ay) + B), cZ), Reissue(ar, cY, true), ScriptTransfer(an, cY, ar), ScriptTransfer(cz.caller, dc, dd)]
485+ if ((cR == cR))
486+ then [IntegerEntry((((ar + "_") + aw) + u), aT), IntegerEntry((((ar + "_") + aw) + w), aU), IntegerEntry((ar + t), aT), IntegerEntry((ar + v), aU), IntegerEntry((ar + x), height), IntegerEntry((((ar + "_") + aw) + j), cW), IntegerEntry((((ar + "_") + aw) + n), cJ), IntegerEntry((ar + o), cY), IntegerEntry((ar + p), cZ), IntegerEntry((((ar + "_") + aw) + z), cQ), Reissue(ap, cP, true), ScriptTransfer(al, cP, ap), ScriptTransfer(cr.caller, cT, cU)]
498487 else throw("Strict value is not equal to itself.")
499488 }
500489 })
501490
502491
503-func dj (cz,at,cD) = {
504- let dd = fromBase58String(getStringValue(value(addressFromString(at)), "share_asset_id"))
505- let ay = toString(cD)
506- let bh = av(at)
507- let dk = by(at, ay)
508- let aV = dk._1
509- let aW = dk._2
510- let cX = dk._3
511- let ca = dk._4
512- let cY = dk._5
513- let cc = (aK(at, ay) + ca)
514- if ((cc == 0))
515- then throw("You have 0 available SWOP")
516- else if ((aA(dd) > bh))
517- then throw("Balance of share-token is lower than totalAmount")
518- else {
519- let dl = if ((cz.caller != this))
520- then [ScriptTransfer(cz.caller, cc, ar)]
521- else nil
522- $Tuple2(([IntegerEntry((((at + "_") + ay) + u), aV), IntegerEntry((((at + "_") + ay) + w), aW), IntegerEntry((((at + "_") + ay) + y), cX), IntegerEntry((at + t), aV), IntegerEntry((at + v), aW), IntegerEntry((at + x), cX), IntegerEntry((at + z), height), IntegerEntry((((at + "_") + ay) + B), 0), Reissue(ar, (cY + cc), true), ScriptTransfer(an, cY, ar)] ++ dl), cc)
523- }
492+func da (cr,ar,cv) = {
493+ let cU = fromBase58String(getStringValue(value(addressFromString(ar)), "share_asset_id"))
494+ let aw = toString(cv)
495+ let bd = at(ar)
496+ let db = br(ar, aw)
497+ let aT = db._1
498+ let aU = db._2
499+ let bS = db._3
500+ let cP = db._4
501+ let bU = (aI(ar, aw) + bS)
502+ if ((ay(cU) > bd))
503+ then throw("Balance of share-token is lower than totalAmount")
504+ else {
505+ let dc = if ((cr.caller != this))
506+ then [ScriptTransfer(cr.caller, bU, ap)]
507+ else nil
508+ $Tuple2(([IntegerEntry((((ar + "_") + aw) + u), aT), IntegerEntry((((ar + "_") + aw) + w), aU), IntegerEntry((ar + t), aT), IntegerEntry((ar + v), aU), IntegerEntry((ar + x), height), IntegerEntry((((ar + "_") + aw) + z), 0), Reissue(ap, (cP + bU), true), ScriptTransfer(al, cP, ap)] ++ dc), bU)
509+ }
524510 }
525511
526512
527-@Callable(cz)
528-func init (dm) = if (isDefined(getString(this, A)))
513+@Callable(cr)
514+func init (dd) = if (isDefined(getString(this, y)))
529515 then throw("SWOP already initialized")
530516 else {
531- let dn = 100000000000000
532- let do = Issue("SWOP", "SWOP protocol token", dn, 8, true)
533- let dp = calculateAssetId(do)
534-[BooleanEntry(a, true), Issue("SWOP", "SWOP protocol token", dn, 8, true), StringEntry(A, toBase58String(dp))]
517+ let de = 100000000000000
518+ let df = Issue("SWOP", "SWOP protocol token", de, 8, true)
519+ let dg = calculateAssetId(df)
520+[BooleanEntry(a, true), Issue("SWOP", "SWOP protocol token", de, 8, true), StringEntry(y, toBase58String(dg))]
535521 }
536522
537523
538524
539-@Callable(cz)
540-func initPoolShareFarming (at) = valueOrElse(cy(cz), [IntegerEntry((at + o), 0), IntegerEntry((at + t), 0), IntegerEntry((at + v), 0), IntegerEntry((at + x), 0), IntegerEntry((at + z), height)])
525+@Callable(cr)
526+func initPoolShareFarming (ar) = valueOrElse(cq(cr), [IntegerEntry((ar + o), 0), IntegerEntry((ar + t), 0), IntegerEntry((ar + v), 0), IntegerEntry((ar + x), height)])
541527
542528
543529
544-@Callable(cz)
545-func updatePoolInterest (at) = valueOrElse(cx(), if ((cz.caller != ak))
530+@Callable(cr)
531+func updatePoolInterest (ar) = valueOrElse(cp(), if ((cr.caller != ai))
546532 then throw("Only Governance can call this function")
547533 else {
548- let ay = toString(addressFromPublicKey(al))
549- let dq = by(at, ay)
550- let aV = dq._1
551- let aW = dq._2
552- let cX = dq._3
553-[IntegerEntry((at + t), aV), IntegerEntry((at + v), aW), IntegerEntry((at + x), cX), IntegerEntry((at + z), height)]
534+ let aw = toString(addressFromPublicKey(aj))
535+ let dh = br(ar, aw)
536+ let aT = dh._1
537+ let aU = dh._2
538+ let di = dh._3
539+[IntegerEntry((ar + t), aT), IntegerEntry((ar + v), aU), IntegerEntry((ar + x), height)]
554540 })
555541
556542
557543
558-@Callable(cz)
559-func lockShareTokens (at,cn) = valueOrElse(cx(), cC(cz, cz.caller, at, cn))
544+@Callable(cr)
545+func lockShareTokens (ar,cf) = valueOrElse(cp(), cu(cr, cr.caller, ar, cf))
560546
561547
562548
563-@Callable(cz)
564-func lockShareTokensFromPool (dr,at,cn) = valueOrElse(cx(), valueOrElse(cA(cz, at), cC(cz, Address(dr), at, cn)))
549+@Callable(cr)
550+func lockShareTokensFromPool (dj,ar,cf) = valueOrElse(cp(), valueOrElse(cs(cr, ar), cu(cr, Address(dj), ar, cf)))
565551
566552
567553
568-@Callable(cz)
569-func lockStakedShareTokens (at,cn,ds) = valueOrElse(cx(), {
570- let cE = az(at)
571- let ay = toString(cz.caller)
572- let cF = av(at)
573- let bB = valueOrElse(getInteger(this, (at + p)), cF)
574- let cG = valueOrElse(getInteger(this, (((at + "_") + ay) + j)), 0)
575- let cH = valueOrElse(getInteger(this, (((at + "_") + ay) + m)), 0)
576- let cI = valueOrElse(getInteger(this, (((at + "_") + ay) + k)), 0)
577- let cJ = valueOrElse(getInteger(this, (((at + "_") + ay) + n)), cG)
578- let cK = (cG + cI)
579- let dt = cs(cn)
580- let cM = dt._1
581- let cN = dt._2
582- let cO = getIntegerValue(this, r)
583- if ((as(at) > height))
554+@Callable(cr)
555+func lockStakedShareTokens (ar,cf,dk) = valueOrElse(cp(), {
556+ let cw = ax(ar)
557+ let aw = toString(cr.caller)
558+ let cx = at(ar)
559+ let bu = valueOrElse(getInteger(this, (ar + p)), cx)
560+ let cy = valueOrElse(getInteger(this, (((ar + "_") + aw) + j)), 0)
561+ let cz = valueOrElse(getInteger(this, (((ar + "_") + aw) + m)), 0)
562+ let cA = valueOrElse(getInteger(this, (((ar + "_") + aw) + k)), 0)
563+ let cB = valueOrElse(getInteger(this, (((ar + "_") + aw) + n)), cy)
564+ let cC = (cy + cA)
565+ let dl = ck(cf)
566+ let cE = dl._1
567+ let cF = dl._2
568+ let cG = getIntegerValue(this, r)
569+ if ((aq(ar) > height))
584570 then throw("You can't lock shareTokens till first harvest end.")
585- else if ((0 >= cn))
571+ else if ((0 >= cf))
586572 then throw("lockType must be > 0")
587- else if ((ds > cG))
588- then throw(("You can't lock more than " + toString(cG)))
589- else if ((aA(cE) > cF))
573+ else if ((dk > cy))
574+ then throw(("You can't lock more than " + toString(cy)))
575+ else if ((ay(cw) > cx))
590576 then throw("Balance of share-token is lower than totalAmount")
591- else if (if ((cH == 0))
592- then if (if ((1 > size(cz.payments)))
577+ else if (if ((cz == 0))
578+ then if (if ((1 > size(cr.payments)))
593579 then true
594- else (cz.payments[0].assetId != unit))
580+ else (cr.payments[0].assetId != unit))
595581 then true
596- else (cO > cz.payments[0].amount)
582+ else (cG > cr.payments[0].amount)
597583 else false)
598- then throw((("You need to pay additional waves comission " + toString(cO)) + "WAVES"))
599- else if (if ((cH == 0))
600- then (0 >= ds)
584+ then throw((("You need to pay additional waves comission " + toString(cG)) + "WAVES"))
585+ else if (if ((cz == 0))
586+ then (0 >= dk)
601587 else false)
602588 then throw("lockAmount must be greater than 0")
603- else if ((0 > ds))
589+ else if ((0 > dk))
604590 then throw("lockAmount must be positive")
605- else if ((cH > (height + cM)))
591+ else if ((cz > (height + cE)))
606592 then throw("You cannot lock sharetokens for a period less than what you have already locked")
607593 else {
608- let cS = (cI + ds)
609- let df = (cG - ds)
610- let cT = (height + cM)
611- let cR = (fraction(cS, cN, Y) + df)
612- let du = by(at, ay)
613- let aV = du._1
614- let aW = du._2
615- let cX = du._3
616- let ca = du._4
617- let cY = du._5
618- let cZ = (aK(at, ay) + ca)
619-[IntegerEntry((((at + "_") + ay) + j), df), IntegerEntry((((at + "_") + ay) + k), cS), IntegerEntry((((at + "_") + ay) + m), cT), IntegerEntry((((at + "_") + ay) + l), cn), IntegerEntry((((at + "_") + ay) + n), cR), IntegerEntry((at + p), ((bB - cJ) + cR)), IntegerEntry((((at + "_") + ay) + u), aV), IntegerEntry((((at + "_") + ay) + w), aW), IntegerEntry((((at + "_") + ay) + y), cX), IntegerEntry((at + t), aV), IntegerEntry((at + v), aW), IntegerEntry((at + x), cX), IntegerEntry((at + z), height), IntegerEntry((((at + "_") + ay) + B), cZ), Reissue(ar, cY, true), ScriptTransfer(an, cY, ar)]
594+ let cK = (cA + dk)
595+ let cW = (cy - dk)
596+ let cL = (height + cE)
597+ let cJ = (fraction(cK, cF, W) + cW)
598+ let dm = br(ar, aw)
599+ let aT = dm._1
600+ let aU = dm._2
601+ let bS = dm._3
602+ let cP = dm._4
603+ let cQ = (aI(ar, aw) + bS)
604+[IntegerEntry((((ar + "_") + aw) + j), cW), IntegerEntry((((ar + "_") + aw) + k), cK), IntegerEntry((((ar + "_") + aw) + m), cL), IntegerEntry((((ar + "_") + aw) + l), cf), IntegerEntry((((ar + "_") + aw) + n), cJ), IntegerEntry((ar + p), ((bu - cB) + cJ)), IntegerEntry((((ar + "_") + aw) + u), aT), IntegerEntry((((ar + "_") + aw) + w), aU), IntegerEntry((ar + t), aT), IntegerEntry((ar + v), aU), IntegerEntry((ar + x), height), IntegerEntry((((ar + "_") + aw) + z), cQ), Reissue(ap, cP, true), ScriptTransfer(al, cP, ap)]
620605 }
621606 })
622607
623608
624609
625-@Callable(cz)
626-func unlockUserLock (at,ay) = valueOrElse(cx(), {
627- let cO = getIntegerValue(this, r)
628- let cH = valueOrErrorMessage(getInteger(this, (((at + "_") + ay) + m)), (((("There is no pool " + at) + " or user ") + ay) + "with lock"))
629- let bB = getIntegerValue(this, (at + p))
630- let cG = valueOrElse(getInteger(this, (((at + "_") + ay) + j)), 0)
631- let cI = valueOrElse(getInteger(this, (((at + "_") + ay) + k)), 0)
632- let cJ = valueOrElse(getInteger(this, (((at + "_") + ay) + n)), cG)
633- if ((cH > height))
634- then throw(("You can't unlock sharetokens till " + toString(cH)))
610+@Callable(cr)
611+func unlockUserLock (ar,aw) = valueOrElse(cp(), {
612+ let cG = getIntegerValue(this, r)
613+ let cz = valueOrErrorMessage(getInteger(this, (((ar + "_") + aw) + m)), (((("There is no pool " + ar) + " or user ") + aw) + "with lock"))
614+ let bu = getIntegerValue(this, (ar + p))
615+ let cy = valueOrElse(getInteger(this, (((ar + "_") + aw) + j)), 0)
616+ let cA = valueOrElse(getInteger(this, (((ar + "_") + aw) + k)), 0)
617+ let cB = valueOrElse(getInteger(this, (((ar + "_") + aw) + n)), cy)
618+ if ((cz > height))
619+ then throw(("You can't unlock sharetokens till " + toString(cz)))
635620 else {
636- let df = (cG + cI)
637- let dv = by(at, ay)
638- let aV = dv._1
639- let aW = dv._2
640- let cX = dv._3
641- let ca = dv._4
642- let cY = dv._5
643- let cZ = (aK(at, ay) + ca)
644-[IntegerEntry((((at + "_") + ay) + u), aV), IntegerEntry((((at + "_") + ay) + w), aW), IntegerEntry((((at + "_") + ay) + y), cX), IntegerEntry((at + t), aV), IntegerEntry((at + v), aW), IntegerEntry((at + x), cX), IntegerEntry((at + z), height), IntegerEntry((((at + "_") + ay) + j), df), IntegerEntry((((at + "_") + ay) + n), df), IntegerEntry((at + p), ((bB - cJ) + df)), IntegerEntry((((at + "_") + ay) + B), cZ), DeleteEntry((((at + "_") + ay) + k)), DeleteEntry((((at + "_") + ay) + m)), DeleteEntry((((at + "_") + ay) + l)), Reissue(ar, cY, true), ScriptTransfer(an, cY, ar), ScriptTransfer(cz.caller, cO, unit)]
621+ let cW = (cy + cA)
622+ let dn = br(ar, aw)
623+ let aT = dn._1
624+ let aU = dn._2
625+ let bS = dn._3
626+ let cP = dn._4
627+ let cQ = (aI(ar, aw) + bS)
628+[IntegerEntry((((ar + "_") + aw) + u), aT), IntegerEntry((((ar + "_") + aw) + w), aU), IntegerEntry((ar + t), aT), IntegerEntry((ar + v), aU), IntegerEntry((ar + x), height), IntegerEntry((((ar + "_") + aw) + j), cW), IntegerEntry((((ar + "_") + aw) + n), cW), IntegerEntry((ar + p), ((bu - cB) + cW)), IntegerEntry((((ar + "_") + aw) + z), cQ), DeleteEntry((((ar + "_") + aw) + k)), DeleteEntry((((ar + "_") + aw) + m)), DeleteEntry((((ar + "_") + aw) + l)), Reissue(ap, cP, true), ScriptTransfer(al, cP, ap), ScriptTransfer(cr.caller, cG, unit)]
645629 }
646630 })
647631
648632
649633
650-@Callable(cz)
651-func withdrawShareTokens (at,dc) = valueOrElse(cx(), db(cz, cz.caller, at, dc))
634+@Callable(cr)
635+func withdrawShareTokens (ar,cT) = valueOrElse(cp(), cS(cr, cr.caller, ar, cT))
652636
653637
654638
655-@Callable(cz)
656-func withdrawShareTokensFromPool (dr,at,dc) = valueOrElse(cx(), valueOrElse(cA(cz, at), db(cz, Address(dr), at, dc)))
639+@Callable(cr)
640+func withdrawShareTokensFromPool (dj,ar,cT) = valueOrElse(cp(), valueOrElse(cs(cr, ar), cS(cr, Address(dj), ar, cT)))
657641
658642
659643
660-@Callable(cz)
661-func claim (at) = valueOrElse(cx(), dj(cz, at, cz.caller))
644+@Callable(cr)
645+func claim (ar) = valueOrElse(cp(), {
646+ let bh = da(cr, ar, cr.caller)
647+ if ((bh._2 == 0))
648+ then throw("You have 0 available SWOP")
649+ else bh
650+ })
662651
663652
664653
665-@Callable(cz)
666-func claimInternal (at,cD) = valueOrElse(cx(), valueOrElse(cB(cz), dj(cz, at, Address(cD))))
654+@Callable(cr)
655+func claimInternal (ar,cv) = valueOrElse(cp(), valueOrElse(ct(cr), da(cr, ar, Address(cv))))
667656
668657
669658
670-@Callable(cz)
671-func claimAndStake (at) = valueOrElse(cx(), {
672- let ca = {
673- let dw = invoke(this, "claimInternal", [at, cz.caller.bytes], nil)
674- if ($isInstanceOf(dw, "Int"))
675- then dw
676- else throw(($getType(dw) + " couldn't be cast to Int"))
659+@Callable(cr)
660+func claimAndStake (ar) = valueOrElse(cp(), {
661+ let bS = {
662+ let do = invoke(this, "claimInternal", [ar, cr.caller.bytes], nil)
663+ if ($isInstanceOf(do, "Int"))
664+ then do
665+ else throw(($getType(do) + " couldn't be cast to Int"))
677666 }
678- if ((ca == ca))
679- then {
680- let dx = invoke(ak, "lockSWOPFromFarming", nil, [AttachedPayment(ar, ca)])
681- if ((dx == dx))
682- then nil
683- else throw("Strict value is not equal to itself.")
684- }
667+ if ((bS == bS))
668+ then if ((bS == 0))
669+ then throw("You have 0 available SWOP")
670+ else {
671+ let dp = invoke(ai, "lockSWOPFromFarming", nil, [AttachedPayment(ap, bS)])
672+ if ((dp == dp))
673+ then nil
674+ else throw("Strict value is not equal to itself.")
675+ }
685676 else throw("Strict value is not equal to itself.")
686677 })
687678
688679
689680
690-@Callable(cz)
691-func claimAll (bQ) = valueOrElse(cx(), {
692- func dy (dz,at) = {
693- let ca = {
694- let dw = invoke(this, "claimInternal", [at, cz.caller.bytes], nil)
695- if ($isInstanceOf(dw, "Int"))
696- then dw
697- else throw(($getType(dw) + " couldn't be cast to Int"))
681+@Callable(cr)
682+func claimAll (bJ) = valueOrElse(cp(), {
683+ func dq (dr,ar) = {
684+ let bS = {
685+ let do = invoke(this, "claimInternal", [ar, cr.caller.bytes], nil)
686+ if ($isInstanceOf(do, "Int"))
687+ then do
688+ else throw(($getType(do) + " couldn't be cast to Int"))
698689 }
699- if ((ca == ca))
700- then (dz + ca)
690+ if ((bS == bS))
691+ then (dr + bS)
701692 else throw("Strict value is not equal to itself.")
702693 }
703694
704- let dz = {
705- let cd = bQ
706- let ce = size(cd)
707- let cf = 0
708- func cg (ch,ci) = if ((ci >= ce))
709- then ch
710- else dy(ch, cd[ci])
695+ let dr = {
696+ let bV = bJ
697+ let bW = size(bV)
698+ let bX = 0
699+ func bY (bZ,ca) = if ((ca >= bW))
700+ then bZ
701+ else dq(bZ, bV[ca])
711702
712- func cj (ch,ci) = if ((ci >= ce))
713- then ch
703+ func cb (bZ,ca) = if ((ca >= bW))
704+ then bZ
714705 else throw("List size exceeds 60")
715706
716- cj(cg(cg(cg(cg(cg(cg(cg(cg(cg(cg(cg(cg(cg(cg(cg(cg(cg(cg(cg(cg(cg(cg(cg(cg(cg(cg(cg(cg(cg(cg(cg(cg(cg(cg(cg(cg(cg(cg(cg(cg(cg(cg(cg(cg(cg(cg(cg(cg(cg(cg(cg(cg(cg(cg(cg(cg(cg(cg(cg(cg(cf, 0), 1), 2), 3), 4), 5), 6), 7), 8), 9), 10), 11), 12), 13), 14), 15), 16), 17), 18), 19), 20), 21), 22), 23), 24), 25), 26), 27), 28), 29), 30), 31), 32), 33), 34), 35), 36), 37), 38), 39), 40), 41), 42), 43), 44), 45), 46), 47), 48), 49), 50), 51), 52), 53), 54), 55), 56), 57), 58), 59), 60)
707+ cb(bY(bY(bY(bY(bY(bY(bY(bY(bY(bY(bY(bY(bY(bY(bY(bY(bY(bY(bY(bY(bY(bY(bY(bY(bY(bY(bY(bY(bY(bY(bY(bY(bY(bY(bY(bY(bY(bY(bY(bY(bY(bY(bY(bY(bY(bY(bY(bY(bY(bY(bY(bY(bY(bY(bY(bY(bY(bY(bY(bY(bX, 0), 1), 2), 3), 4), 5), 6), 7), 8), 9), 10), 11), 12), 13), 14), 15), 16), 17), 18), 19), 20), 21), 22), 23), 24), 25), 26), 27), 28), 29), 30), 31), 32), 33), 34), 35), 36), 37), 38), 39), 40), 41), 42), 43), 44), 45), 46), 47), 48), 49), 50), 51), 52), 53), 54), 55), 56), 57), 58), 59), 60)
717708 }
718- if ((dz == 0))
709+ if ((dr == 0))
719710 then throw("You have 0 available SWOP")
720- else [ScriptTransfer(cz.caller, dz, ar)]
711+ else [ScriptTransfer(cr.caller, dr, ap)]
721712 })
722713
723714
724715
725-@Callable(cz)
726-func claimAllAndStake (bQ) = valueOrElse(cx(), {
727- func dy (dz,at) = {
728- let ca = {
729- let dw = invoke(this, "claimInternal", [at, cz.caller.bytes], nil)
730- if ($isInstanceOf(dw, "Int"))
731- then dw
732- else throw(($getType(dw) + " couldn't be cast to Int"))
716+@Callable(cr)
717+func claimAllAndStake (bJ) = valueOrElse(cp(), {
718+ func dq (dr,ar) = {
719+ let bS = {
720+ let do = invoke(this, "claimInternal", [ar, cr.caller.bytes], nil)
721+ if ($isInstanceOf(do, "Int"))
722+ then do
723+ else throw(($getType(do) + " couldn't be cast to Int"))
733724 }
734- if ((ca == ca))
735- then (dz + ca)
725+ if ((bS == bS))
726+ then (dr + bS)
736727 else throw("Strict value is not equal to itself.")
737728 }
738729
739- let dz = {
740- let cd = bQ
741- let ce = size(cd)
742- let cf = 0
743- func cg (ch,ci) = if ((ci >= ce))
744- then ch
745- else dy(ch, cd[ci])
730+ let dr = {
731+ let bV = bJ
732+ let bW = size(bV)
733+ let bX = 0
734+ func bY (bZ,ca) = if ((ca >= bW))
735+ then bZ
736+ else dq(bZ, bV[ca])
746737
747- func cj (ch,ci) = if ((ci >= ce))
748- then ch
738+ func cb (bZ,ca) = if ((ca >= bW))
739+ then bZ
749740 else throw("List size exceeds 60")
750741
751- cj(cg(cg(cg(cg(cg(cg(cg(cg(cg(cg(cg(cg(cg(cg(cg(cg(cg(cg(cg(cg(cg(cg(cg(cg(cg(cg(cg(cg(cg(cg(cg(cg(cg(cg(cg(cg(cg(cg(cg(cg(cg(cg(cg(cg(cg(cg(cg(cg(cg(cg(cg(cg(cg(cg(cg(cg(cg(cg(cg(cg(cf, 0), 1), 2), 3), 4), 5), 6), 7), 8), 9), 10), 11), 12), 13), 14), 15), 16), 17), 18), 19), 20), 21), 22), 23), 24), 25), 26), 27), 28), 29), 30), 31), 32), 33), 34), 35), 36), 37), 38), 39), 40), 41), 42), 43), 44), 45), 46), 47), 48), 49), 50), 51), 52), 53), 54), 55), 56), 57), 58), 59), 60)
742+ cb(bY(bY(bY(bY(bY(bY(bY(bY(bY(bY(bY(bY(bY(bY(bY(bY(bY(bY(bY(bY(bY(bY(bY(bY(bY(bY(bY(bY(bY(bY(bY(bY(bY(bY(bY(bY(bY(bY(bY(bY(bY(bY(bY(bY(bY(bY(bY(bY(bY(bY(bY(bY(bY(bY(bY(bY(bY(bY(bY(bY(bX, 0), 1), 2), 3), 4), 5), 6), 7), 8), 9), 10), 11), 12), 13), 14), 15), 16), 17), 18), 19), 20), 21), 22), 23), 24), 25), 26), 27), 28), 29), 30), 31), 32), 33), 34), 35), 36), 37), 38), 39), 40), 41), 42), 43), 44), 45), 46), 47), 48), 49), 50), 51), 52), 53), 54), 55), 56), 57), 58), 59), 60)
752743 }
753- if ((dz == 0))
744+ if ((dr == 0))
754745 then throw("You have 0 available SWOP")
755746 else {
756- let dx = invoke(ak, "lockSWOPFromFarming", nil, [AttachedPayment(ar, dz)])
757- if ((dx == dx))
747+ let dp = invoke(ai, "lockSWOPFromFarming", nil, [AttachedPayment(ap, dr)])
748+ if ((dp == dp))
758749 then nil
759750 else throw("Strict value is not equal to itself.")
760751 }
761752 })
762753
763754
764755
765-@Callable(cz)
766-func updateUserBoostInterest (at,ay) = valueOrElse(cx(), if ((cz.caller != aj))
756+@Callable(cr)
757+func updateUserBoostInterest (ar,aw) = valueOrElse(cp(), if ((cr.caller != ah))
767758 then throw("Only voiting can call this function")
768759 else {
769- let dA = by(at, ay)
770- let aV = dA._1
771- let aW = dA._2
772- let cX = dA._3
773- let ca = dA._4
774- let cY = dA._5
775- let cZ = (aK(at, ay) + ca)
776-[IntegerEntry((((at + "_") + ay) + u), aV), IntegerEntry((((at + "_") + ay) + w), aW), IntegerEntry((((at + "_") + ay) + y), cX), IntegerEntry((at + t), aV), IntegerEntry((at + v), aW), IntegerEntry((at + x), cX), IntegerEntry((at + z), height), IntegerEntry((((at + "_") + ay) + B), cZ), Reissue(ar, cY, true), ScriptTransfer(an, cY, ar)]
760+ let ds = br(ar, aw)
761+ let aT = ds._1
762+ let aU = ds._2
763+ let bS = ds._3
764+ let cP = ds._4
765+ let cQ = (aI(ar, aw) + bS)
766+[IntegerEntry((((ar + "_") + aw) + u), aT), IntegerEntry((((ar + "_") + aw) + w), aU), IntegerEntry((ar + t), aT), IntegerEntry((ar + v), aU), IntegerEntry((ar + x), height), IntegerEntry((((ar + "_") + aw) + z), cQ), Reissue(ap, cP, true), ScriptTransfer(al, cP, ap)]
777767 })
778768
779769
780770
781-@Callable(cz)
782-func shutdown () = valueOrElse(cy(cz), if (!(ap))
771+@Callable(cr)
772+func shutdown () = valueOrElse(cq(cr), if (!(an))
783773 then throw(("DApp is already suspended. Cause: " + valueOrElse(getString(this, c), "the cause wasn't specified")))
784- else cv("Paused by admin"))
774+ else cn("Paused by admin"))
785775
786776
787777
788-@Callable(cz)
789-func activate () = valueOrElse(cy(cz), if (ap)
778+@Callable(cr)
779+func activate () = valueOrElse(cq(cr), if (an)
790780 then throw("DApp is already active")
791781 else [BooleanEntry(a, true), DeleteEntry(c)])
792782
793783
794-@Verifier(dB)
795-func dC () = {
796- let ac = dB
797- let dD = if (sigVerify(dB.bodyBytes, dB.proofs[0], af))
784+@Verifier(dt)
785+func du () = {
786+ let aa = dt
787+ let dv = if (sigVerify(dt.bodyBytes, dt.proofs[0], ad))
798788 then 1
799789 else 0
800- let dE = if (sigVerify(dB.bodyBytes, dB.proofs[1], ag))
790+ let dw = if (sigVerify(dt.bodyBytes, dt.proofs[1], ae))
801791 then 1
802792 else 0
803- let dF = if (sigVerify(dB.bodyBytes, dB.proofs[2], ah))
793+ let dx = if (sigVerify(dt.bodyBytes, dt.proofs[2], af))
804794 then 1
805795 else 0
806- (((dD + dE) + dF) >= 2)
796+ (((dv + dw) + dx) >= 2)
807797 }
808798

github/deemru/w8io/03bedc9 
311.02 ms