tx · CJiJrXDdFYXgKdqoRYvnyCtSfbmXB6dBxURCHn1RUuFF

3MsXpzisJAwnzUr7XrEoW1BZo4U6rw4tsYK:  -0.04200000 Waves

2023.08.17 13:53 [2714503] smart account 3MsXpzisJAwnzUr7XrEoW1BZo4U6rw4tsYK > SELF 0.00000000 Waves

{ "type": 13, "id": "CJiJrXDdFYXgKdqoRYvnyCtSfbmXB6dBxURCHn1RUuFF", "fee": 4200000, "feeAssetId": null, "timestamp": 1692269700893, "version": 2, "chainId": 84, "sender": "3MsXpzisJAwnzUr7XrEoW1BZo4U6rw4tsYK", "senderPublicKey": "FFdBua5rzzMkZebvsvmN7sAdU7XhFK8QNJ3hiwwxAYRA", "proofs": [ "4BHbHauboSGcq3AtpbCAM68FG6PFKtc7F79j3EFrdNYnAPda36h2A9MbD7Lyw1futiZa2cPXqZRReuBmXYNCKr6Z", "4idwa6B9b9ZevuiZ3X5t6Pt3NthTRQmeLd1f1eUPwvp6ySYHrG8ARGDwVbN19ryPuX7noTvxTXzNq7voE1KKBoYL" ], "script": "base64:BgJiCAISAwoBCBIDCgEIEgMKAQgSBAoCCAESBQoDAggBEgUKAwgBARIECgIICBIECgIICBIECgIIARIFCgMCCAESAwoBCBIECgIIAhIDCgEIEgMKARgSAwoBGBIECgIICBIAEgBpAAdrQWN0aXZlAgZhY3RpdmUAC2tBY3RpdmVHbG9iAhRhY3RpdmVfYWxsX2NvbnRyYWN0cwAPa0RlcHJlY2F0ZWRQb29sAgtkZXByZWNhdGVkXwAGa0NhdXNlAg5zaHV0ZG93bl9jYXVzZQAaa1Jld2FyZFBvb2xGcmFjdGlvbkN1cnJlbnQCHV9jdXJyZW50X3Bvb2xfZnJhY3Rpb25fcmV3YXJkABtrUmV3YXJkUG9vbEZyYWN0aW9uUHJldmlvdXMCHl9wcmV2aW91c19wb29sX2ZyYWN0aW9uX3Jld2FyZAATa0hlaWdodFBvb2xGcmFjdGlvbgIaX3Bvb2xfcmV3YXJkX3VwZGF0ZV9oZWlnaHQAE2tSZXdhcmRVcGRhdGVIZWlnaHQCFHJld2FyZF91cGRhdGVfaGVpZ2h0ABZrVXNlclNoYXJlVG9rZW5zU3Rha2VkAhRfc2hhcmVfdG9rZW5zX2xvY2tlZAAWa1VzZXJTaGFyZVRva2Vuc0xvY2tlZAIVX3NoYXJlX3Rva2Vuc19ibG9ja2VkABprVXNlclNoYXJlVG9rZW5zTG9ja2VkVHlwZQIaX3NoYXJlX3Rva2Vuc19ibG9ja2VkX3R5cGUAHGtVc2VyU2hhcmVUb2tlbnNMb2NrZWRIZWlnaHQCHF9zaGFyZV90b2tlbnNfYmxvY2tlZF9oZWlnaHQAF2tVc2VyU2hhcmVUb2tlbnNWaXJ0dWFsAhVfc2hhcmVfdG9rZW5zX3ZpcnR1YWwAFmtTaGFyZVRvdGFsU2hhcmVUb2tlbnMCGl90b3RhbF9zaGFyZV90b2tlbnNfbG9ja2VkABNrU2hhcmVUb2tlbnNWaXJ0dWFsAhtfdG90YWxfc2hhcmVfdG9rZW5zX3ZpcnR1YWwAC2tMb2NrUGFyYW1zAgxfbG9ja19wYXJhbXMADWtMb2NrV2F2ZXNGZWUCDmxvY2tfd2F2ZXNfZmVlAA5rUG9vbEJvb3N0Q29lZgILX2Jvb3N0X2NvZWYAEWtGYXJtTGFzdEludGVyZXN0Ag5fbGFzdF9pbnRlcmVzdAAVa0Zhcm1Vc2VyTGFzdEludGVyZXN0Ag5fbGFzdF9pbnRlcmVzdAASa0Jvb3N0TGFzdEludGVyZXN0AhBfbGFzdF9pbnRlcmVzdF9iABZrQm9vc3RVc2VyTGFzdEludGVyZXN0AhJfbGFzdF9pbnRlcmVzdF91X2IAE2tMYXN0SW50ZXJlc3RIZWlnaHQCFV9sYXN0X2ludGVyZXN0X2hlaWdodAAHa1NXT1BpZAIHU1dPUF9pZAAOa0F2YWlsYWJsZVNXT1ACD19hdmFpbGFibGVfU1dPUAAQa0hhcnZlc3RQb29sVm90ZQIYX2hhcnZlc3RfcG9vbF92b3RlX2dTV09QAAlrUG9vbFZvdGUCEF9wb29sX3ZvdGVfZ1NXT1AADWtVc2VyUG9vbFZvdGUCEF91c2VyX3ZvdGVfZ1NXT1AACmtQb29sU3RydWMCC19wb29sX3N0cnVjAA5rVXNlclBvb2xTdHJ1YwIQX3VzZXJfcG9vbF9zdHJ1YwAUa0hhcnZlc3RVc2VyUG9vbFZvdGUCHV9oYXJ2ZXN0X3VzZXJfcG9vbF92b3RlX2dTV09QABNrRmlyc3RIYXJ2ZXN0SGVpZ2h0AhRmaXJzdF9oYXJ2ZXN0X2hlaWdodAANa1NoYXJlTGltaXRGSAIcc2hhcmVfbGltaXRfb25fZmlyc3RfaGFydmVzdAATa1N0cmF0QkZhcm1JbnRlcmVzdAIWX3N0cmF0X2JfZmFybV9pbnRlcmVzdAANa1Bvb2xJbk9yYWNsZQIFcG9vbF8ADWtDcG1tQ29udHJhY3QCDWNwbW1fY29udHJhY3QADWtBZG1pblB1YktleTECC2FkbWluX3B1Yl8xAA1rQWRtaW5QdWJLZXkyAgthZG1pbl9wdWJfMgANa0FkbWluUHViS2V5MwILYWRtaW5fcHViXzMAEmtBZG1pbkludm9rZVB1YktleQIQYWRtaW5faW52b2tlX3B1YgAQa01vbmV5Qm94QWRkcmVzcwIRbW9uZXlfYm94X2FkZHJlc3MAD2tUZWFtQm94QWRkcmVzcwIQdGVhbV9ib3hfYWRkcmVzcwAOa1ZvdGluZ0FkZHJlc3MCDnZvdGluZ19hZGRyZXNzAAtrR292QWRkcmVzcwISZ292ZXJuYW5jZV9hZGRyZXNzABFrTFBGYXJtaW5nQWRkcmVzcwIKbHBfZmFybWluZwAUa0Zhcm1pbmdUcmVhc3VyZUFkZHICEGZhcm1pbmdfdHJlYXN1cmUADGtBeGx5RmFybWluZwIMYXhseV9mYXJtaW5nAAlrQXhseUxwSWQCCmF4bHlfbHBfaWQABm9yYWNsZQkBB0FkZHJlc3MBARoBVEgTlwzA0zPMJTKAtin3p2RogKvjzHtLmQAOdG90YWxWb3RlU2hhcmUAgMivoCUAC3NjYWxlVmFsdWU4AIDC1y8AC3NjYWxlVmFsdWU2AMCEPQASbG9ja0Jvb3N0Q29lZlNjYWxlAOgHABBkZWZQb29sQm9vc3RDb2VmAPQDAA5zdGFydEVtaXNzaW9uSADQ2LUBABBzd29wWWVhckVtaXNzaW9uAICA6YOx3hYADWJsb2Nrc1BlclllYXIA+o8gAAd0ZWFtRmVlABkBE2dldEJhc2U1OEZyb21PcmFjbGUBA2tleQQHJG1hdGNoMAkAnQgCBQZvcmFjbGUFA2tleQMJAAECBQckbWF0Y2gwAgZTdHJpbmcEBnN0cmluZwUHJG1hdGNoMAkA2QQBBQZzdHJpbmcEB25vdGhpbmcFByRtYXRjaDAJAAIBCQCsAgIFA2tleQIIaXMgZW1wdHkADGFkbWluUHViS2V5MQkBE2dldEJhc2U1OEZyb21PcmFjbGUBBQ1rQWRtaW5QdWJLZXkxAAxhZG1pblB1YktleTIJARNnZXRCYXNlNThGcm9tT3JhY2xlAQUNa0FkbWluUHViS2V5MgAMYWRtaW5QdWJLZXkzCQETZ2V0QmFzZTU4RnJvbU9yYWNsZQEFDWtBZG1pblB1YktleTMAD21vbmV5Qm94QWRkcmVzcwkBB0FkZHJlc3MBCQETZ2V0QmFzZTU4RnJvbU9yYWNsZQEFEGtNb25leUJveEFkZHJlc3MADnRlYW1Cb3hBZGRyZXNzCQEHQWRkcmVzcwEJARNnZXRCYXNlNThGcm9tT3JhY2xlAQUPa1RlYW1Cb3hBZGRyZXNzAA12b3RpbmdBZGRyZXNzCQEHQWRkcmVzcwEJARNnZXRCYXNlNThGcm9tT3JhY2xlAQUOa1ZvdGluZ0FkZHJlc3MACmdvdkFkZHJlc3MJAQdBZGRyZXNzAQkBE2dldEJhc2U1OEZyb21PcmFjbGUBBQtrR292QWRkcmVzcwARYWRtaW5JbnZva2VQdWJLZXkJARNnZXRCYXNlNThGcm9tT3JhY2xlAQUSa0FkbWluSW52b2tlUHViS2V5ABBscEZhcm1pbmdBZGRyZXNzCQEHQWRkcmVzcwEJARNnZXRCYXNlNThGcm9tT3JhY2xlAQURa0xQRmFybWluZ0FkZHJlc3MAE2Zhcm1pbmdUcmVhc3VyZUFkZHIJAQdBZGRyZXNzAQkBE2dldEJhc2U1OEZyb21PcmFjbGUBBRRrRmFybWluZ1RyZWFzdXJlQWRkcgAMY3BtbUNvbnRyYWN0CQEHQWRkcmVzcwEJARNnZXRCYXNlNThGcm9tT3JhY2xlAQUNa0NwbW1Db250cmFjdAAMYXhseUZhcm1BZGRyCQEHQWRkcmVzcwEJARNnZXRCYXNlNThGcm9tT3JhY2xlAQUMa0F4bHlGYXJtaW5nAAhheGx5THBJZAkBE2dldEJhc2U1OEZyb21PcmFjbGUBBQlrQXhseUxwSWQABmFjdGl2ZQkBEUBleHRyTmF0aXZlKDEwNTEpAgUEdGhpcwUHa0FjdGl2ZQAKYWN0aXZlR2xvYgkBC3ZhbHVlT3JFbHNlAgkAmwgCBQZvcmFjbGUFC2tBY3RpdmVHbG9iBgAEU1dPUAkA2QQBCQERQGV4dHJOYXRpdmUoMTA1MykCBQR0aGlzBQdrU1dPUGlkARZnZXRSZXdhcmRzUGVyQmxvY2tJbmZvAAQPZW1pc3Npb25QZXJpb2RzCQBpAgkAZQIFBmhlaWdodAUOc3RhcnRFbWlzc2lvbkgFDWJsb2Nrc1BlclllYXIKAQxjYWxjRW1pc3Npb24CA2FjYwFpBAskdDA1MTI3NTE2NAUDYWNjBAtjdXJFbWlzc2lvbggFCyR0MDUxMjc1MTY0Al8xBAxwcmV2RW1pc3Npb24IBQskdDA1MTI3NTE2NAJfMgMJAGYCBQ9lbWlzc2lvblBlcmlvZHMFAWkJAJQKAgkAawMFC2N1ckVtaXNzaW9uAEsAZAULY3VyRW1pc3Npb24JAJQKAgULY3VyRW1pc3Npb24FDHByZXZFbWlzc2lvbgQLJHQwNTMyMjU0ODgKAAIkbAkAzAgCAAAJAMwIAgABCQDMCAIAAgkAzAgCAAMJAMwIAgAECQDMCAIABQkAzAgCAAYJAMwIAgAHCQDMCAIACAkAzAgCAAkJAMwIAgAKCQDMCAIACwkAzAgCAAwJAMwIAgANCQDMCAIADgkAzAgCAA8JAMwIAgAQCQDMCAIAEQkAzAgCABIJAMwIAgATBQNuaWwKAAIkcwkAkAMBBQIkbAoABSRhY2MwCQCUCgIFEHN3b3BZZWFyRW1pc3Npb24FEHN3b3BZZWFyRW1pc3Npb24KAQUkZjBfMQICJGECJGkDCQBnAgUCJGkFAiRzBQIkYQkBDGNhbGNFbWlzc2lvbgIFAiRhCQCRAwIFAiRsBQIkaQoBBSRmMF8yAgIkYQIkaQMJAGcCBQIkaQUCJHMFAiRhCQACAQIUTGlzdCBzaXplIGV4Y2VlZHMgMjAJAQUkZjBfMgIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIFBSRhY2MwAAAAAQACAAMABAAFAAYABwAIAAkACgALAAwADQAOAA8AEAARABIAEwAUBAtjdXJFbWlzc2lvbggFCyR0MDUzMjI1NDg4Al8xBAxwcmV2RW1pc3Npb24IBQskdDA1MzIyNTQ4OAJfMgkAlQoDCQBpAgULY3VyRW1pc3Npb24FDWJsb2Nrc1BlclllYXIJAGkCBQxwcmV2RW1pc3Npb24FDWJsb2Nrc1BlclllYXIJAGQCBQ5zdGFydEVtaXNzaW9uSAkAaAIFDWJsb2Nrc1BlclllYXIFD2VtaXNzaW9uUGVyaW9kcwEVZ2V0SGVpZ2h0Rmlyc3RIYXJ2ZXN0AQRwb29sCQELdmFsdWVPckVsc2UCCQCaCAIJAQdBZGRyZXNzAQkA2QQBBQRwb29sBRNrRmlyc3RIYXJ2ZXN0SGVpZ2h0AAABFGdldEZIU2hhcmVMaW1pdFRva2VuAQRwb29sCQETdmFsdWVPckVycm9yTWVzc2FnZQIJAJoIAgUEcG9vbAUNa1NoYXJlTGltaXRGSAkArAICAhRObyBkYXRhIG9uIHRoZSBrZXk6IAUNa1NoYXJlTGltaXRGSAESZ2V0VG90YWxTaGFyZVRva2VuAQRwb29sCQETdmFsdWVPckVycm9yTWVzc2FnZQIJAJoIAgUEdGhpcwkArAICBQRwb29sBRZrU2hhcmVUb3RhbFNoYXJlVG9rZW5zCQCsAgIJAKwCAgIUTm8gZGF0YSBvbiB0aGUga2V5OiAFBHBvb2wFFmtTaGFyZVRvdGFsU2hhcmVUb2tlbnMBDGdldFBvb2xWb3RlZAEEcG9vbAkBC3ZhbHVlT3JFbHNlAgkAmggCBQ12b3RpbmdBZGRyZXNzCQCsAgIFBHBvb2wFCWtQb29sVm90ZQkBC3ZhbHVlT3JFbHNlAgkAtgkBCQCRAwIJALUJAgkBC3ZhbHVlT3JFbHNlAgkAnQgCBQ12b3RpbmdBZGRyZXNzCQCsAgIFBHBvb2wFCmtQb29sU3RydWMCAAIBXwAAAAABEGdldFVzZXJQb29sVm90ZWQCBHBvb2wEdXNlcgkBC3ZhbHVlT3JFbHNlAgkAmggCBQ12b3RpbmdBZGRyZXNzCQCsAgIJAKwCAgkArAICBQR1c2VyAgFfBQRwb29sBQ1rVXNlclBvb2xWb3RlCQELdmFsdWVPckVsc2UCCQC2CQEJAJEDAgkAtQkCCQELdmFsdWVPckVsc2UCCQCdCAIFDXZvdGluZ0FkZHJlc3MJAKwCAgkArAICCQCsAgIFBHVzZXICAV8FBHBvb2wFDmtVc2VyUG9vbFN0cnVjAgACAV8AAAAAAQ9nZXRTaGFyZUFzc2V0SWQBBHBvb2wJANkEAQkBEUBleHRyTmF0aXZlKDEwNTMpAgkBBXZhbHVlAQkApggBBQRwb29sAg5zaGFyZV9hc3NldF9pZAEOYWNjb3VudEJhbGFuY2UBB2Fzc2V0SWQEByRtYXRjaDAFB2Fzc2V0SWQDCQABAgUHJG1hdGNoMAIKQnl0ZVZlY3RvcgQCaWQFByRtYXRjaDAJAPAHAgUEdGhpcwUCaWQDCQABAgUHJG1hdGNoMAIEVW5pdAQFd2F2ZXMFByRtYXRjaDAICQDvBwEFBHRoaXMJYXZhaWxhYmxlCQACAQILTWF0Y2ggZXJyb3IBDmNhbGNTY2FsZVZhbHVlAghhc3NldElkMQhhc3NldElkMgQQYXNzZXRJZDFEZWNpbWFscwgJAQV2YWx1ZQEJAOwHAQUIYXNzZXRJZDEIZGVjaW1hbHMEEGFzc2V0SWQyRGVjaW1hbHMICQEFdmFsdWUBCQDsBwEFCGFzc2V0SWQyCGRlY2ltYWxzBAtzY2FsZURpZ2l0cwkAZAIJAGUCBRBhc3NldElkMkRlY2ltYWxzBRBhc3NldElkMURlY2ltYWxzAAgJAGwGAAoAAAULc2NhbGVEaWdpdHMAAAAABQRET1dOARF1c2VyQXZhaWxhYmxlU1dPUAIEcG9vbAR1c2VyCQELdmFsdWVPckVsc2UCCQCaCAIFBHRoaXMJAKwCAgkArAICCQCsAgIFBHBvb2wCAV8FBHVzZXIFDmtBdmFpbGFibGVTV09QAAABCnJld2FyZEluZm8BBHBvb2wECyR0MDczMDM3NDE4CQEWZ2V0UmV3YXJkc1BlckJsb2NrSW5mbwAEGnRvdGFsUmV3YXJkUGVyQmxvY2tDdXJyZW50CAULJHQwNzMwMzc0MTgCXzEEG3RvdGFsUmV3YXJkUGVyQmxvY2tQcmV2aW91cwgFCyR0MDczMDM3NDE4Al8yBBhsYXN0RW1pc3Npb25VcGRhdGVIZWlnaHQIBQskdDA3MzAzNzQxOAJfMwQZcmV3YXJkUG9vbEZyYWN0aW9uQ3VycmVudAkBE3ZhbHVlT3JFcnJvck1lc3NhZ2UCCQCaCAIFCmdvdkFkZHJlc3MJAKwCAgUEcG9vbAUaa1Jld2FyZFBvb2xGcmFjdGlvbkN1cnJlbnQJAKwCAgkArAICCQCsAgIJAKwCAgIUTm8gZGF0YSBvbiB0aGUga2V5OiAFBHBvb2wFGmtSZXdhcmRQb29sRnJhY3Rpb25DdXJyZW50AgwgYXQgYWRkcmVzcyAJAKUIAQUKZ292QWRkcmVzcwQScmV3YXJkVXBkYXRlSGVpZ2h0CQETdmFsdWVPckVycm9yTWVzc2FnZQIJAJoIAgUKZ292QWRkcmVzcwUTa1Jld2FyZFVwZGF0ZUhlaWdodAkArAICCQCsAgIJAKwCAgIUTm8gZGF0YSBvbiB0aGUga2V5OiAFE2tSZXdhcmRVcGRhdGVIZWlnaHQCDCBhdCBhZGRyZXNzIAkApQgBBQpnb3ZBZGRyZXNzBBZwb29sUmV3YXJkVXBkYXRlSGVpZ2h0CQELdmFsdWVPckVsc2UCCQCaCAIFCmdvdkFkZHJlc3MJAKwCAgUEcG9vbAUTa0hlaWdodFBvb2xGcmFjdGlvbgUScmV3YXJkVXBkYXRlSGVpZ2h0BBpyZXdhcmRQb29sRnJhY3Rpb25QcmV2aW91cwkBE3ZhbHVlT3JFcnJvck1lc3NhZ2UCCQCaCAIFCmdvdkFkZHJlc3MJAKwCAgUEcG9vbAUba1Jld2FyZFBvb2xGcmFjdGlvblByZXZpb3VzCQCsAgIJAKwCAgkArAICCQCsAgICFE5vIGRhdGEgb24gdGhlIGtleTogBQRwb29sBRtrUmV3YXJkUG9vbEZyYWN0aW9uUHJldmlvdXMCDCBhdCBhZGRyZXNzIAkApQgBBQpnb3ZBZGRyZXNzBBFyZXdhcmRQb29sQ3VycmVudAkAawMFGnRvdGFsUmV3YXJkUGVyQmxvY2tDdXJyZW50BRlyZXdhcmRQb29sRnJhY3Rpb25DdXJyZW50BQ50b3RhbFZvdGVTaGFyZQQScmV3YXJkUG9vbFByZXZpb3VzCQBrAwUadG90YWxSZXdhcmRQZXJCbG9ja0N1cnJlbnQFGnJld2FyZFBvb2xGcmFjdGlvblByZXZpb3VzBQ50b3RhbFZvdGVTaGFyZQQVcmV3YXJkUG9vbFByZXZDdXJyZW50CQBrAwUbdG90YWxSZXdhcmRQZXJCbG9ja1ByZXZpb3VzBRlyZXdhcmRQb29sRnJhY3Rpb25DdXJyZW50BQ50b3RhbFZvdGVTaGFyZQQWcmV3YXJkUG9vbFByZXZQcmV2aW91cwkAawMFG3RvdGFsUmV3YXJkUGVyQmxvY2tQcmV2aW91cwUacmV3YXJkUG9vbEZyYWN0aW9uUHJldmlvdXMFDnRvdGFsVm90ZVNoYXJlAwMJAGYCBRFyZXdhcmRQb29sQ3VycmVudAUadG90YWxSZXdhcmRQZXJCbG9ja0N1cnJlbnQGCQBmAgUScmV3YXJkUG9vbFByZXZpb3VzBRt0b3RhbFJld2FyZFBlckJsb2NrUHJldmlvdXMJAAIBAmJyZXdhcmRQb29sQ3VycmVudCA+IHRvdGFsUmV3YXJkUGVyQmxvY2tDdXJyZW50IG9yIHJld2FyZFBvb2xQcmV2aW91cyA+IHRvdGFsUmV3YXJkUGVyQmxvY2tQcmV2aW91cwkAmQoHBRFyZXdhcmRQb29sQ3VycmVudAUScmV3YXJkVXBkYXRlSGVpZ2h0BRJyZXdhcmRQb29sUHJldmlvdXMFFnBvb2xSZXdhcmRVcGRhdGVIZWlnaHQFGGxhc3RFbWlzc2lvblVwZGF0ZUhlaWdodAUVcmV3YXJkUG9vbFByZXZDdXJyZW50BRZyZXdhcmRQb29sUHJldlByZXZpb3VzARNnZXRMYXN0SW50ZXJlc3RJbmZvAQRwb29sBAxmYXJtSW50ZXJlc3QJARN2YWx1ZU9yRXJyb3JNZXNzYWdlAgkAmggCBQR0aGlzCQCsAgIFBHBvb2wFEWtGYXJtTGFzdEludGVyZXN0CQCsAgIJAKwCAgIUTm8gZGF0YSBvbiB0aGUga2V5OiAFBHBvb2wFEWtGYXJtTGFzdEludGVyZXN0BA1ib29zdEludGVyZXN0CQELdmFsdWVPckVsc2UCCQCaCAIFBHRoaXMJAKwCAgUEcG9vbAUSa0Jvb3N0TGFzdEludGVyZXN0AAAEEmxhc3RJbnRlcmVzdEhlaWdodAkBC3ZhbHVlT3JFbHNlAgkAmggCBQR0aGlzCQCsAgIFBHBvb2wFE2tMYXN0SW50ZXJlc3RIZWlnaHQFBmhlaWdodAkAlQoDBRJsYXN0SW50ZXJlc3RIZWlnaHQFDGZhcm1JbnRlcmVzdAUNYm9vc3RJbnRlcmVzdAELY2FsY0Zhcm1Sd2QCBHBvb2wOY3VyVG90YWxSZXdhcmQEDXBvb2xCb29zdENvZWYJAQt2YWx1ZU9yRWxzZQIJAJoIAgUEdGhpcwkArAICBQRwb29sBQ5rUG9vbEJvb3N0Q29lZgUQZGVmUG9vbEJvb3N0Q29lZgkAawMFDmN1clRvdGFsUmV3YXJkBRJsb2NrQm9vc3RDb2VmU2NhbGUJAGQCBQ1wb29sQm9vc3RDb2VmBRJsb2NrQm9vc3RDb2VmU2NhbGUBDGNhbGNCb29zdFJ3ZAIEcG9vbA5jdXJUb3RhbFJld2FyZAQNcG9vbEJvb3N0Q29lZgkBC3ZhbHVlT3JFbHNlAgkAmggCBQR0aGlzCQCsAgIFBHBvb2wFDmtQb29sQm9vc3RDb2VmBRBkZWZQb29sQm9vc3RDb2VmCQBrAwUOY3VyVG90YWxSZXdhcmQFDXBvb2xCb29zdENvZWYJAGQCBQ1wb29sQm9vc3RDb2VmBRJsb2NrQm9vc3RDb2VmU2NhbGUBDGNhbGNJbnRlcmVzdAwEcG9vbBJsYXN0SW50ZXJlc3RIZWlnaHQScmV3YXJkVXBkYXRlSGVpZ2h0FnBvb2xSZXdhcmRVcGRhdGVIZWlnaHQMZmFybUludGVyZXN0DWJvb3N0SW50ZXJlc3QJcG9vbFZvdGVkFWN1cnJlbnRSZXdhcmRQZXJCbG9jaxBzaGFyZVRva2VuTG9ja2VkFnByZXZpb3VzUmV3YXJkUGVyQmxvY2sKc2NhbGVWYWx1ZQh0b0hlaWdodAQNJHQwMTA0MzIxMTYxNwMDAwkAZgIFEnJld2FyZFVwZGF0ZUhlaWdodAUIdG9IZWlnaHQJAAACBRJyZXdhcmRVcGRhdGVIZWlnaHQFFnBvb2xSZXdhcmRVcGRhdGVIZWlnaHQHBgMJAGYCBQh0b0hlaWdodAUScmV3YXJkVXBkYXRlSGVpZ2h0CQECIT0CBRJyZXdhcmRVcGRhdGVIZWlnaHQFFnBvb2xSZXdhcmRVcGRhdGVIZWlnaHQHBAFyCQBoAgUWcHJldmlvdXNSZXdhcmRQZXJCbG9jawkAZQIFCHRvSGVpZ2h0BRJsYXN0SW50ZXJlc3RIZWlnaHQJAJUKAwUBcgUMZmFybUludGVyZXN0BQ1ib29zdEludGVyZXN0AwMDCQBmAgUIdG9IZWlnaHQFEnJld2FyZFVwZGF0ZUhlaWdodAkAAAIFEnJld2FyZFVwZGF0ZUhlaWdodAUWcG9vbFJld2FyZFVwZGF0ZUhlaWdodAcJAGYCBRJsYXN0SW50ZXJlc3RIZWlnaHQFEnJld2FyZFVwZGF0ZUhlaWdodAcEAXIJAGgCBRVjdXJyZW50UmV3YXJkUGVyQmxvY2sJAGUCBQh0b0hlaWdodAUSbGFzdEludGVyZXN0SGVpZ2h0CQCVCgMFAXIFDGZhcm1JbnRlcmVzdAUNYm9vc3RJbnRlcmVzdAQJcndkQmZyVXBkCQBoAgUWcHJldmlvdXNSZXdhcmRQZXJCbG9jawkAZQIFEnJld2FyZFVwZGF0ZUhlaWdodAUSbGFzdEludGVyZXN0SGVpZ2h0BAZmQmZyVXAJAGQCBQxmYXJtSW50ZXJlc3QJAGsDCQELY2FsY0Zhcm1Sd2QCBQRwb29sBQlyd2RCZnJVcGQFCnNjYWxlVmFsdWUFEHNoYXJlVG9rZW5Mb2NrZWQEBmJCZnJVcAkAZAIFDWJvb3N0SW50ZXJlc3QDCQBmAgUJcG9vbFZvdGVkAAAJAGsDCQEMY2FsY0Jvb3N0UndkAgUEcG9vbAUJcndkQmZyVXBkBQtzY2FsZVZhbHVlOAUJcG9vbFZvdGVkAAAEA3J3ZAkAaAIFFWN1cnJlbnRSZXdhcmRQZXJCbG9jawkAZQIFCHRvSGVpZ2h0BRJyZXdhcmRVcGRhdGVIZWlnaHQJAJUKAwUDcndkBQZmQmZyVXAFBmJCZnJVcAQGcmV3YXJkCAUNJHQwMTA0MzIxMTYxNwJfMQQOZmFybUludHJCZWZvcmUIBQ0kdDAxMDQzMjExNjE3Al8yBA9ib29zdEludHJCZWZvcmUIBQ0kdDAxMDQzMjExNjE3Al8zBA9uZXdGYXJtSW50ZXJlc3QJAGQCBQ5mYXJtSW50ckJlZm9yZQkAawMJAQtjYWxjRmFybVJ3ZAIFBHBvb2wFBnJld2FyZAUKc2NhbGVWYWx1ZQUQc2hhcmVUb2tlbkxvY2tlZAQQbmV3Qm9vc3RJbnRlcmVzdAkAZAIFD2Jvb3N0SW50ckJlZm9yZQMJAGYCBQlwb29sVm90ZWQAAAkAawMJAQxjYWxjQm9vc3RSd2QCBQRwb29sBQZyZXdhcmQFC3NjYWxlVmFsdWU4BQlwb29sVm90ZWQAAAkAlAoCBQ9uZXdGYXJtSW50ZXJlc3QFEG5ld0Jvb3N0SW50ZXJlc3QBCWNsYWltQ2FsYwIEcG9vbAR1c2VyBApzY2FsZVZhbHVlCQEOY2FsY1NjYWxlVmFsdWUCBQRTV09QCQEPZ2V0U2hhcmVBc3NldElkAQUEcG9vbAQJcG9vbFZvdGVkCQEMZ2V0UG9vbFZvdGVkAQUEcG9vbAQKdVBvb2xWb3RlZAkBEGdldFVzZXJQb29sVm90ZWQCBQRwb29sBQR1c2VyBApzaGFyZVRva2VuCQESZ2V0VG90YWxTaGFyZVRva2VuAQUEcG9vbAQRdG90YWxTaGFyZVZpcnR1YWwJAQt2YWx1ZU9yRWxzZQIJAJoIAgUEdGhpcwkArAICBQRwb29sBRNrU2hhcmVUb2tlbnNWaXJ0dWFsBQpzaGFyZVRva2VuBBJzdHJhdEJGYXJtSW50ZXJlc3QJAQt2YWx1ZU9yRWxzZQIJAJoIAgUEdGhpcwkArAICBQRwb29sBRNrU3RyYXRCRmFybUludGVyZXN0AAAEDSR0MDEyNDU1MTI1MzYJARNnZXRMYXN0SW50ZXJlc3RJbmZvAQUEcG9vbAQSbGFzdEludGVyZXN0SGVpZ2h0CAUNJHQwMTI0NTUxMjUzNgJfMQQMZmFybUludGVyZXN0CAUNJHQwMTI0NTUxMjUzNgJfMgQNYm9vc3RJbnRlcmVzdAgFDSR0MDEyNDU1MTI1MzYCXzMEDSR0MDEyNTQxMTI3OTgJAQpyZXdhcmRJbmZvAQUEcG9vbAQVY3VycmVudFJld2FyZFBlckJsb2NrCAUNJHQwMTI1NDExMjc5OAJfMQQScmV3YXJkVXBkYXRlSGVpZ2h0CAUNJHQwMTI1NDExMjc5OAJfMgQWcHJldmlvdXNSZXdhcmRQZXJCbG9jawgFDSR0MDEyNTQxMTI3OTgCXzMEFnBvb2xSZXdhcmRVcGRhdGVIZWlnaHQIBQ0kdDAxMjU0MTEyNzk4Al80BBRlbWlzc2lvblVwZGF0ZUhlaWdodAgFDSR0MDEyNTQxMTI3OTgCXzUEGXByZXZDdXJyZW50UmV3YXJkUGVyQmxvY2sIBQ0kdDAxMjU0MTEyNzk4Al82BBpwcmV2UHJldmlvdXNSZXdhcmRQZXJCbG9jawgFDSR0MDEyNTQxMTI3OTgCXzcEDXVGYXJtSW50ZXJlc3QJAQt2YWx1ZU9yRWxzZQIJAJoIAgUEdGhpcwkArAICCQCsAgIJAKwCAgUEcG9vbAIBXwUEdXNlcgUVa0Zhcm1Vc2VyTGFzdEludGVyZXN0BQxmYXJtSW50ZXJlc3QEDnVCb29zdEludGVyZXN0CQELdmFsdWVPckVsc2UCCQCaCAIFBHRoaXMJAKwCAgkArAICCQCsAgIFBHBvb2wCAV8FBHVzZXIFFmtCb29zdFVzZXJMYXN0SW50ZXJlc3QDAwkAZgIFEnN0cmF0QkZhcm1JbnRlcmVzdAUNdUZhcm1JbnRlcmVzdAkAZgIFCnVQb29sVm90ZWQAAAcAAAUNYm9vc3RJbnRlcmVzdAQSdVNoYXJlVG9rZW5zU3Rha2VkCQELdmFsdWVPckVsc2UCCQCaCAIFBHRoaXMJAKwCAgkArAICCQCsAgIFBHBvb2wCAV8FBHVzZXIFFmtVc2VyU2hhcmVUb2tlbnNTdGFrZWQAAAQQdVNoYXJlVG9rZW5zVmlydAkBC3ZhbHVlT3JFbHNlAgkAmggCBQR0aGlzCQCsAgIJAKwCAgkArAICBQRwb29sAgFfBQR1c2VyBRdrVXNlclNoYXJlVG9rZW5zVmlydHVhbAUSdVNoYXJlVG9rZW5zU3Rha2VkAwkAAAIFEXRvdGFsU2hhcmVWaXJ0dWFsAAAECnRvVHJlYXN1cnkDCQBmAgUUZW1pc3Npb25VcGRhdGVIZWlnaHQFEmxhc3RJbnRlcmVzdEhlaWdodAkAZAIJAGgCBRlwcmV2Q3VycmVudFJld2FyZFBlckJsb2NrCQBlAgUUZW1pc3Npb25VcGRhdGVIZWlnaHQFEmxhc3RJbnRlcmVzdEhlaWdodAkAaAIFFWN1cnJlbnRSZXdhcmRQZXJCbG9jawkAZQIFBmhlaWdodAUUZW1pc3Npb25VcGRhdGVIZWlnaHQJAGgCBRVjdXJyZW50UmV3YXJkUGVyQmxvY2sJAGUCBQZoZWlnaHQFEmxhc3RJbnRlcmVzdEhlaWdodAQKdGVhbVJld2FyZAkAawMFCnRvVHJlYXN1cnkFB3RlYW1GZWUAZAkAlwoFBQxmYXJtSW50ZXJlc3QFDWJvb3N0SW50ZXJlc3QAAAkAZQIFCnRvVHJlYXN1cnkFCnRlYW1SZXdhcmQFCnRlYW1SZXdhcmQEDSR0MDEzODQxMTQ5NzgDCQBmAgUUZW1pc3Npb25VcGRhdGVIZWlnaHQFEmxhc3RJbnRlcmVzdEhlaWdodAQNJHQwMTQyNTQxNDgxMwkBDGNhbGNJbnRlcmVzdAwFBHBvb2wFEmxhc3RJbnRlcmVzdEhlaWdodAUScmV3YXJkVXBkYXRlSGVpZ2h0BRZwb29sUmV3YXJkVXBkYXRlSGVpZ2h0BQxmYXJtSW50ZXJlc3QFDWJvb3N0SW50ZXJlc3QFCXBvb2xWb3RlZAUZcHJldkN1cnJlbnRSZXdhcmRQZXJCbG9jawURdG90YWxTaGFyZVZpcnR1YWwFGnByZXZQcmV2aW91c1Jld2FyZFBlckJsb2NrBQpzY2FsZVZhbHVlBRRlbWlzc2lvblVwZGF0ZUhlaWdodAQTcHJldk5ld0Zhcm1JbnRlcmVzdAgFDSR0MDE0MjU0MTQ4MTMCXzEEFHByZXZOZXdCb29zdEludGVyZXN0CAUNJHQwMTQyNTQxNDgxMwJfMgkAlQoDBRNwcmV2TmV3RmFybUludGVyZXN0BRRwcmV2TmV3Qm9vc3RJbnRlcmVzdAUUZW1pc3Npb25VcGRhdGVIZWlnaHQJAJUKAwUMZmFybUludGVyZXN0BQ1ib29zdEludGVyZXN0BRJsYXN0SW50ZXJlc3RIZWlnaHQEEHByZXZGYXJtSW50ZXJlc3QIBQ0kdDAxMzg0MTE0OTc4Al8xBBFwcmV2Qm9vc3RJbnRlcmVzdAgFDSR0MDEzODQxMTQ5NzgCXzIECExJSGVpZ2h0CAUNJHQwMTM4NDExNDk3OAJfMwQNJHQwMTQ5ODcxNTQxMAkBDGNhbGNJbnRlcmVzdAwFBHBvb2wFCExJSGVpZ2h0BRJyZXdhcmRVcGRhdGVIZWlnaHQFFnBvb2xSZXdhcmRVcGRhdGVIZWlnaHQFEHByZXZGYXJtSW50ZXJlc3QFEXByZXZCb29zdEludGVyZXN0BQlwb29sVm90ZWQFFWN1cnJlbnRSZXdhcmRQZXJCbG9jawURdG90YWxTaGFyZVZpcnR1YWwFFnByZXZpb3VzUmV3YXJkUGVyQmxvY2sFCnNjYWxlVmFsdWUFBmhlaWdodAQPbmV3RmFybUludGVyZXN0CAUNJHQwMTQ5ODcxNTQxMAJfMQQQbmV3Qm9vc3RJbnRlcmVzdAgFDSR0MDE0OTg3MTU0MTACXzIEB2Zhcm1Sd2QJAGsDBRB1U2hhcmVUb2tlbnNWaXJ0CQBlAgUPbmV3RmFybUludGVyZXN0BQ11RmFybUludGVyZXN0BQpzY2FsZVZhbHVlBA1wb29sQm9vc3RDb2VmCQELdmFsdWVPckVsc2UCCQCaCAIFBHRoaXMJAKwCAgUEcG9vbAUOa1Bvb2xCb29zdENvZWYFEGRlZlBvb2xCb29zdENvZWYEC2Jvb3N0UndkTWF4CQBrAwkAawMFEHVTaGFyZVRva2Vuc1ZpcnQJAGUCBQ9uZXdGYXJtSW50ZXJlc3QJAJYDAQkAzAgCBQ11RmFybUludGVyZXN0CQDMCAIFEnN0cmF0QkZhcm1JbnRlcmVzdAUDbmlsBQpzY2FsZVZhbHVlBQ1wb29sQm9vc3RDb2VmBRJsb2NrQm9vc3RDb2VmU2NhbGUEC2N1ckJvb3N0UndkCQBrAwkAZQIFEG5ld0Jvb3N0SW50ZXJlc3QFDnVCb29zdEludGVyZXN0BQp1UG9vbFZvdGVkBQtzY2FsZVZhbHVlOAQIYm9vc3RSd2QJAJcDAQkAzAgCBQtib29zdFJ3ZE1heAkAzAgCBQtjdXJCb29zdFJ3ZAUDbmlsBAp0b1RyZWFzdXJ5CQBlAgULYm9vc3RSd2RNYXgFCGJvb3N0UndkBAp0ZWFtUmV3YXJkCQBrAwUKdG9UcmVhc3VyeQUHdGVhbUZlZQBkAwkAZgIAAAUKdG9UcmVhc3VyeQkAAgECDnRvVHJlYXN1cnkgPCAwCQCXCgUFD25ld0Zhcm1JbnRlcmVzdAUQbmV3Qm9vc3RJbnRlcmVzdAkAZAIFB2Zhcm1Sd2QFCGJvb3N0UndkCQBlAgUKdG9UcmVhc3VyeQUKdGVhbVJld2FyZAUKdGVhbVJld2FyZAEbYXZhaWxhYmxlQ2xhaW1DYWxjQWxsQnlVc2VyAgVwb29scwR1c2VyCgENY2FsY0F2YWlsYWJsZQIDYWNjBHBvb2wEDSR0MDE2MzY0MTYzOTMFA2FjYwQIbmV3UG9vbHMIBQ0kdDAxNjM2NDE2MzkzAl8xBAdhbW91bnRzCAUNJHQwMTYzNjQxNjM5MwJfMgQNJHQwMTY0MDIxNjQ1NQkBCWNsYWltQ2FsYwIFBHBvb2wFBHVzZXIEAmZpCAUNJHQwMTY0MDIxNjQ1NQJfMQQCYmkIBQ0kdDAxNjQwMjE2NDU1Al8yBAtjbGFpbUFtb3VudAgFDSR0MDE2NDAyMTY0NTUCXzMEAnR0CAUNJHQwMTY0MDIxNjQ1NQJfNAQNYXZhaWxhYmxlRnVuZAkAZAIJARF1c2VyQXZhaWxhYmxlU1dPUAIFBHBvb2wFBHVzZXIFC2NsYWltQW1vdW50CQCUCgIJAM0IAgUIbmV3UG9vbHMFBHBvb2wJAM0IAgUHYW1vdW50cwUNYXZhaWxhYmxlRnVuZAoAAiRsBQVwb29scwoAAiRzCQCQAwEFAiRsCgAFJGFjYzAJAJQKAgUDbmlsBQNuaWwKAQUkZjBfMQICJGECJGkDCQBnAgUCJGkFAiRzBQIkYQkBDWNhbGNBdmFpbGFibGUCBQIkYQkAkQMCBQIkbAUCJGkKAQUkZjBfMgICJGECJGkDCQBnAgUCJGkFAiRzBQIkYQkAAgECFExpc3Qgc2l6ZSBleGNlZWRzIDYwCQEFJGYwXzICCQEFJGYwXzECCQEFJGYwXzECCQEFJGYwXzECCQEFJGYwXzECCQEFJGYwXzECCQEFJGYwXzECCQEFJGYwXzECCQEFJGYwXzECCQEFJGYwXzECCQEFJGYwXzECCQEFJGYwXzECCQEFJGYwXzECCQEFJGYwXzECCQEFJGYwXzECCQEFJGYwXzECCQEFJGYwXzECCQEFJGYwXzECCQEFJGYwXzECCQEFJGYwXzECCQEFJGYwXzECCQEFJGYwXzECCQEFJGYwXzECCQEFJGYwXzECCQEFJGYwXzECCQEFJGYwXzECCQEFJGYwXzECCQEFJGYwXzECCQEFJGYwXzECCQEFJGYwXzECCQEFJGYwXzECCQEFJGYwXzECCQEFJGYwXzECCQEFJGYwXzECCQEFJGYwXzECCQEFJGYwXzECCQEFJGYwXzECCQEFJGYwXzECCQEFJGYwXzECCQEFJGYwXzECCQEFJGYwXzECCQEFJGYwXzECCQEFJGYwXzECCQEFJGYwXzECCQEFJGYwXzECCQEFJGYwXzECCQEFJGYwXzECCQEFJGYwXzECCQEFJGYwXzECCQEFJGYwXzECCQEFJGYwXzECCQEFJGYwXzECCQEFJGYwXzECCQEFJGYwXzECCQEFJGYwXzECCQEFJGYwXzECCQEFJGYwXzECCQEFJGYwXzECCQEFJGYwXzECCQEFJGYwXzECCQEFJGYwXzECBQUkYWNjMAAAAAEAAgADAAQABQAGAAcACAAJAAoACwAMAA0ADgAPABAAEQASABMAFAAVABYAFwAYABkAGgAbABwAHQAeAB8AIAAhACIAIwAkACUAJgAnACgAKQAqACsALAAtAC4ALwAwADEAMgAzADQANQA2ADcAOAA5ADoAOwA8ARVjYW5Mb2NrSW5GaXJzdEhhcnZlc3QFBHBvb2wEdXNlchV1c2VyU2hhcmVUb2tlbnNTdGFrZWQJcG10QW1vdW50CGxvY2tUeXBlAwkAZgIJARVnZXRIZWlnaHRGaXJzdEhhcnZlc3QBBQRwb29sBQZoZWlnaHQED3RvdGFsVm90ZUFtb3VudAkBC3ZhbHVlT3JFbHNlAgkAmggCBQ12b3RpbmdBZGRyZXNzCQCsAgIFBHBvb2wFEGtIYXJ2ZXN0UG9vbFZvdGUAAAQOdXNlclZvdGVBbW91bnQJAQt2YWx1ZU9yRWxzZQIJAJoIAgUNdm90aW5nQWRkcmVzcwkArAICCQCsAgIJAKwCAgUEdXNlcgIBXwUEcG9vbAUUa0hhcnZlc3RVc2VyUG9vbFZvdGUAAAQRRkhTaGFyZVRva2VuTGltaXQJARRnZXRGSFNoYXJlTGltaXRUb2tlbgEJARFAZXh0ck5hdGl2ZSgxMDYyKQEFBHBvb2wEFUZIU2hhcmVUb2tlblVzZXJMaW1pdAkAZQIJAGsDBRFGSFNoYXJlVG9rZW5MaW1pdAUOdXNlclZvdGVBbW91bnQFD3RvdGFsVm90ZUFtb3VudAUVdXNlclNoYXJlVG9rZW5zU3Rha2VkAwkAZgIFCGxvY2tUeXBlAAAJAAIBAjJZb3UgY2FuJ3QgbG9jayBzaGFyZVRva2VucyB0aWxsIGZpcnN0IGhhcnZlc3QgZW5kLgMJAAACBQ51c2VyVm90ZUFtb3VudAAACQACAQJDWW91IGNhbid0IGxvY2sgc2hhcmVUb2tlbnMuIFlvdSBkaWRuJ3Qgdm90ZSBmb3IgcG9vbCBpbiBmaXJzdCB3ZWVrLgMJAGcCBQlwbXRBbW91bnQFFUZIU2hhcmVUb2tlblVzZXJMaW1pdAkAZQIFCXBtdEFtb3VudAUVRkhTaGFyZVRva2VuVXNlckxpbWl0AAAAAAENZ2V0TG9ja1BhcmFtcwEEdHlwZQQKbG9ja1BhcmFtcwkAtQkCCQETdmFsdWVPckVycm9yTWVzc2FnZQIJAJ0IAgUEdGhpcwkArAICCQCkAwEFBHR5cGUFC2tMb2NrUGFyYW1zCQCsAgICHlRoZXJlIGFyZSBubyBrZXkgZm9yIGxvY2sgdHlwZQkApAMBBQR0eXBlAgFfCQCUCgIJAQ1wYXJzZUludFZhbHVlAQkAkQMCBQpsb2NrUGFyYW1zAAAJAQ1wYXJzZUludFZhbHVlAQkAkQMCBQpsb2NrUGFyYW1zAAEBB3N1c3BlbmQBBWNhdXNlCQDMCAIJAQxCb29sZWFuRW50cnkCBQdrQWN0aXZlBwkAzAgCCQELU3RyaW5nRW50cnkCBQZrQ2F1c2UFBWNhdXNlBQNuaWwBCGlzQWN0aXZlAAMDBQZhY3RpdmUFCmFjdGl2ZUdsb2IHBQR1bml0CQACAQIfREFwcCBpcyBpbmFjdGl2ZSBhdCB0aGlzIG1vbWVudAELaXNBZG1pbkNhbGwBAWkDCQEPY29udGFpbnNFbGVtZW50AgkAzAgCBQxhZG1pblB1YktleTEJAMwIAgUMYWRtaW5QdWJLZXkyCQDMCAIFDGFkbWluUHViS2V5MwUDbmlsCAUBaQ9jYWxsZXJQdWJsaWNLZXkFBHVuaXQJAAIBAiFPbmx5IGFkbWluIGNhbiBjYWxsIHRoaXMgZnVuY3Rpb24BCmlzUG9vbENhbGwCAWkEcG9vbAMDCQAAAgkApQgBCAUBaQZjYWxsZXIFBHBvb2wGCQAAAggFAWkGY2FsbGVyBQxjcG1tQ29udHJhY3QFBHVuaXQJAAIBAiBPbmx5IHBvb2wgY2FuIGNhbGwgdGhpcyBmdW5jdGlvbgERZ2V0RGVwcmVjYXRlZFBvb2wBBHBvb2wJAQt2YWx1ZU9yRWxzZQIJAJsIAgUGb3JhY2xlCQCsAgIFD2tEZXByZWNhdGVkUG9vbAUEcG9vbAcBEGlzRGVwcmVjYXRlZFBvb2wBBHBvb2wDCQEBIQEJARFnZXREZXByZWNhdGVkUG9vbAEFBHBvb2wFBHVuaXQJAAIBAi9Qb29sIGlzIGRlcHJlY2F0ZWQuIE9ubHkgdW5sb2NrIGFjdGlvbiBhbGxvd2VkLgEKaXNTZWxmQ2FsbAEBaQMJAAACCAUBaQZjYWxsZXIFBHRoaXMFBHVuaXQJAAIBAitPbmx5IGNvbnRyYWN0IGl0c2VsZiBjYW4gY2FsbCB0aGlzIGZ1bmN0aW9uARNjYWxjTG9ja1NoYXJlVG9rZW5zBAFpBmNhbGxlcgRwb29sCGxvY2tUeXBlBANpbnYDCQAAAggJAJEDAggFAWkIcGF5bWVudHMAAAdhc3NldElkBQhheGx5THBJZAkA/AcEBQxheGx5RmFybUFkZHICCGxwQWN0aW9uBQNuaWwFA25pbAUDbmlsBAxzaGFyZUFzc2V0SWQJAQ9nZXRTaGFyZUFzc2V0SWQBBQRwb29sBAR1c2VyCQClCAEFBmNhbGxlcgQKdG90YWxTaGFyZQkBEmdldFRvdGFsU2hhcmVUb2tlbgEFBHBvb2wEEXRvdGFsU2hhcmVWaXJ0dWFsCQELdmFsdWVPckVsc2UCCQCaCAIFBHRoaXMJAKwCAgUEcG9vbAUTa1NoYXJlVG9rZW5zVmlydHVhbAUKdG90YWxTaGFyZQQQdXNlclN0YWtlZEFtb3VudAkBC3ZhbHVlT3JFbHNlAgkAmggCBQR0aGlzCQCsAgIJAKwCAgkArAICBQRwb29sAgFfBQR1c2VyBRZrVXNlclNoYXJlVG9rZW5zU3Rha2VkAAAED3VzZXJMb2NrZWRIZWlndAkBC3ZhbHVlT3JFbHNlAgkAmggCBQR0aGlzCQCsAgIJAKwCAgkArAICBQRwb29sAgFfBQR1c2VyBRxrVXNlclNoYXJlVG9rZW5zTG9ja2VkSGVpZ2h0AAAEEHVzZXJMb2NrZWRBbW91bnQJAQt2YWx1ZU9yRWxzZQIJAJoIAgUEdGhpcwkArAICCQCsAgIJAKwCAgUEcG9vbAIBXwUEdXNlcgUWa1VzZXJTaGFyZVRva2Vuc0xvY2tlZAAABBF1c2VyQW1vdW50VmlydHVhbAkBC3ZhbHVlT3JFbHNlAgkAmggCBQR0aGlzCQCsAgIJAKwCAgkArAICBQRwb29sAgFfBQR1c2VyBRdrVXNlclNoYXJlVG9rZW5zVmlydHVhbAUQdXNlclN0YWtlZEFtb3VudAQUdG90YWxVc2VyU2hhcmVUb2tlbnMJAGQCCQBkAgUQdXNlclN0YWtlZEFtb3VudAUQdXNlckxvY2tlZEFtb3VudAgJAJEDAggFAWkIcGF5bWVudHMAAAZhbW91bnQEDSR0MDE5Njg0MTk3MzYJAQ1nZXRMb2NrUGFyYW1zAQUIbG9ja1R5cGUECmxvY2tQZXJpb2QIBQ0kdDAxOTY4NDE5NzM2Al8xBAhsb2NrQ29lZggFDSR0MDE5Njg0MTk3MzYCXzIEDGxvY2tXYXZlc0ZlZQkBEUBleHRyTmF0aXZlKDEwNTApAgUEdGhpcwUNa0xvY2tXYXZlc0ZlZQMJAQIhPQIICQCRAwIIBQFpCHBheW1lbnRzAAAHYXNzZXRJZAUMc2hhcmVBc3NldElkCQACAQIbV3Jvbmcgc2hhcmV0b2tlbiBpbiBwYXltZW50AwkAZwIAAAgJAJEDAggFAWkIcGF5bWVudHMAAAZhbW91bnQJAAIBAiVQYXltZW50IGFtb3VudCBtdXN0IGJlIGdyZWF0ZXIgdGhhbiAwAwkAZgIAAAUIbG9ja1R5cGUJAAIBAhVsb2NrVHlwZSBtdXN0IGJlID49IDAEFXNoYXJlVG9rZW5zQ2hhbmdlT25GSAkBFWNhbkxvY2tJbkZpcnN0SGFydmVzdAUFBHBvb2wFBHVzZXIFEHVzZXJTdGFrZWRBbW91bnQICQCRAwIIBQFpCHBheW1lbnRzAAAGYW1vdW50BQhsb2NrVHlwZQMJAAACBRVzaGFyZVRva2Vuc0NoYW5nZU9uRkgFFXNoYXJlVG9rZW5zQ2hhbmdlT25GSAQNJHQwMjAxNjMyMjA5NwMJAAACBQhsb2NrVHlwZQAABBR1c2VyQW1vdW50VmlydHVhbE5ldwkAZQIJAGQCBRF1c2VyQW1vdW50VmlydHVhbAgJAJEDAggFAWkIcGF5bWVudHMAAAZhbW91bnQFFXNoYXJlVG9rZW5zQ2hhbmdlT25GSAkAlAoCCQDMCAIJAQxJbnRlZ2VyRW50cnkCCQCsAgIJAKwCAgkArAICBQRwb29sAgFfBQR1c2VyBRZrVXNlclNoYXJlVG9rZW5zU3Rha2VkCQBlAgkAZAIFEHVzZXJTdGFrZWRBbW91bnQICQCRAwIIBQFpCHBheW1lbnRzAAAGYW1vdW50BRVzaGFyZVRva2Vuc0NoYW5nZU9uRkgJAMwIAgkBDEludGVnZXJFbnRyeQIJAKwCAgkArAICCQCsAgIFBHBvb2wCAV8FBHVzZXIFF2tVc2VyU2hhcmVUb2tlbnNWaXJ0dWFsBRR1c2VyQW1vdW50VmlydHVhbE5ldwkAzAgCCQEMSW50ZWdlckVudHJ5AgkArAICBQRwb29sBRNrU2hhcmVUb2tlbnNWaXJ0dWFsCQBlAgkAZAIFEXRvdGFsU2hhcmVWaXJ0dWFsCAkAkQMCCAUBaQhwYXltZW50cwAABmFtb3VudAUVc2hhcmVUb2tlbnNDaGFuZ2VPbkZICQDMCAIJAQ5TY3JpcHRUcmFuc2ZlcgMFBmNhbGxlcgUVc2hhcmVUb2tlbnNDaGFuZ2VPbkZICAkAkQMCCAUBaQhwYXltZW50cwAAB2Fzc2V0SWQFA25pbAkAZQIJAGQCBQp0b3RhbFNoYXJlCAkAkQMCCAUBaQhwYXltZW50cwAABmFtb3VudAUVc2hhcmVUb2tlbnNDaGFuZ2VPbkZIAwMJAAACBQ91c2VyTG9ja2VkSGVpZ3QAAAMDCQBmAgACCQCQAwEIBQFpCHBheW1lbnRzBgkBAiE9AggJAJEDAggFAWkIcGF5bWVudHMAAQdhc3NldElkBQR1bml0BgkAZgIFDGxvY2tXYXZlc0ZlZQgJAJEDAggFAWkIcGF5bWVudHMAAQZhbW91bnQHCQACAQkArAICCQCsAgICK1lvdSBuZWVkIHRvIHBheSBhZGRpdGlvbmFsIHdhdmVzIGNvbWlzc2lvbiAJAKQDAQUMbG9ja1dhdmVzRmVlAgVXQVZFUwMJAGYCBQ91c2VyTG9ja2VkSGVpZ3QJAGQCBQZoZWlnaHQFCmxvY2tQZXJpb2QJAAIBAk9Zb3UgY2Fubm90IGxvY2sgc2hhcmV0b2tlbnMgZm9yIGEgcGVyaW9kIGxlc3MgdGhhbiB3aGF0IHlvdSBoYXZlIGFscmVhZHkgbG9ja2VkBBN1c2VyTG9ja2VkQW1vdW50TmV3CQBkAgUQdXNlckxvY2tlZEFtb3VudAgJAJEDAggFAWkIcGF5bWVudHMAAAZhbW91bnQEEnVzZXJMb2NrZWRIZWlndE5ldwkAZAIFBmhlaWdodAUKbG9ja1BlcmlvZAQUdXNlckFtb3VudFZpcnR1YWxOZXcJAGQCCQBrAwUTdXNlckxvY2tlZEFtb3VudE5ldwUIbG9ja0NvZWYFEmxvY2tCb29zdENvZWZTY2FsZQUQdXNlclN0YWtlZEFtb3VudAkAlAoCCQDMCAIJAQxJbnRlZ2VyRW50cnkCCQCsAgIJAKwCAgkArAICBQRwb29sAgFfBQR1c2VyBRZrVXNlclNoYXJlVG9rZW5zTG9ja2VkBRN1c2VyTG9ja2VkQW1vdW50TmV3CQDMCAIJAQxJbnRlZ2VyRW50cnkCCQCsAgIJAKwCAgkArAICBQRwb29sAgFfBQR1c2VyBRxrVXNlclNoYXJlVG9rZW5zTG9ja2VkSGVpZ2h0BRJ1c2VyTG9ja2VkSGVpZ3ROZXcJAMwIAgkBDEludGVnZXJFbnRyeQIJAKwCAgkArAICCQCsAgIFBHBvb2wCAV8FBHVzZXIFGmtVc2VyU2hhcmVUb2tlbnNMb2NrZWRUeXBlBQhsb2NrVHlwZQkAzAgCCQEMSW50ZWdlckVudHJ5AgkArAICCQCsAgIJAKwCAgUEcG9vbAIBXwUEdXNlcgUXa1VzZXJTaGFyZVRva2Vuc1ZpcnR1YWwFFHVzZXJBbW91bnRWaXJ0dWFsTmV3CQDMCAIJAQxJbnRlZ2VyRW50cnkCCQCsAgIFBHBvb2wFE2tTaGFyZVRva2Vuc1ZpcnR1YWwJAGQCCQBlAgURdG90YWxTaGFyZVZpcnR1YWwFEXVzZXJBbW91bnRWaXJ0dWFsBRR1c2VyQW1vdW50VmlydHVhbE5ldwUDbmlsCQBkAgUKdG90YWxTaGFyZQgJAJEDAggFAWkIcGF5bWVudHMAAAZhbW91bnQEC2xvY2tFbnRyaWVzCAUNJHQwMjAxNjMyMjA5NwJfMQQNdG90YWxTaGFyZU5ldwgFDSR0MDIwMTYzMjIwOTcCXzIDCQBmAgUNdG90YWxTaGFyZU5ldwkBDmFjY291bnRCYWxhbmNlAQUMc2hhcmVBc3NldElkCQACAQIwQmFsYW5jZSBvZiBzaGFyZS10b2tlbiBpcyBsb3dlciB0aGFuIHRvdGFsQW1vdW50BA0kdDAyMjIyMjIyMzE2CQEJY2xhaW1DYWxjAgUEcG9vbAUEdXNlcgQMZmFybUludGVyZXN0CAUNJHQwMjIyMjIyMjMxNgJfMQQNYm9vc3RJbnRlcmVzdAgFDSR0MDIyMjIyMjIzMTYCXzIEC2NsYWltQW1vdW50CAUNJHQwMjIyMjIyMjMxNgJfMwQKdG9UcmVhc3VyZQgFDSR0MDIyMjIyMjIzMTYCXzQECnRlYW1SZXdhcmQIBQ0kdDAyMjIyMjIyMzE2Al81BBFhdmFpbGFibGVGdW5kc05ldwkAZAIJARF1c2VyQXZhaWxhYmxlU1dPUAIFBHBvb2wFBHVzZXIFC2NsYWltQW1vdW50BAR1cGxwAwkAAAIJAJ0IAgkBB0FkZHJlc3MBCQDZBAEFBHBvb2wCB3ZlcnNpb24CBTMuMC4wCQD8BwQFEGxwRmFybWluZ0FkZHJlc3MCEnVwZGF0ZVVzZXJJbnRlcmVzdAkAzAgCBQR1c2VyCQDMCAIFBHBvb2wJAMwIAgUUdG90YWxVc2VyU2hhcmVUb2tlbnMFA25pbAUDbmlsAAADCQAAAgUEdXBscAUEdXBscAkAzggCCQDMCAIJAQxJbnRlZ2VyRW50cnkCCQCsAgIJAKwCAgkArAICBQRwb29sAgFfBQR1c2VyBRVrRmFybVVzZXJMYXN0SW50ZXJlc3QFDGZhcm1JbnRlcmVzdAkAzAgCCQEMSW50ZWdlckVudHJ5AgkArAICCQCsAgIJAKwCAgUEcG9vbAIBXwUEdXNlcgUWa0Jvb3N0VXNlckxhc3RJbnRlcmVzdAUNYm9vc3RJbnRlcmVzdAkAzAgCCQEMSW50ZWdlckVudHJ5AgkArAICBQRwb29sBRFrRmFybUxhc3RJbnRlcmVzdAUMZmFybUludGVyZXN0CQDMCAIJAQxJbnRlZ2VyRW50cnkCCQCsAgIFBHBvb2wFEmtCb29zdExhc3RJbnRlcmVzdAUNYm9vc3RJbnRlcmVzdAkAzAgCCQEMSW50ZWdlckVudHJ5AgkArAICBQRwb29sBRNrTGFzdEludGVyZXN0SGVpZ2h0BQZoZWlnaHQJAMwIAgkBDEludGVnZXJFbnRyeQIJAKwCAgUEcG9vbAUWa1NoYXJlVG90YWxTaGFyZVRva2VucwUNdG90YWxTaGFyZU5ldwkAzAgCCQEMSW50ZWdlckVudHJ5AgkArAICCQCsAgIJAKwCAgUEcG9vbAIBXwUEdXNlcgUOa0F2YWlsYWJsZVNXT1AFEWF2YWlsYWJsZUZ1bmRzTmV3CQDMCAIJAQdSZWlzc3VlAwUEU1dPUAkAZAIFCnRvVHJlYXN1cmUFCnRlYW1SZXdhcmQGCQDMCAIJAQ5TY3JpcHRUcmFuc2ZlcgMFE2Zhcm1pbmdUcmVhc3VyZUFkZHIFCnRvVHJlYXN1cmUFBFNXT1AJAMwIAgkBDlNjcmlwdFRyYW5zZmVyAwUOdGVhbUJveEFkZHJlc3MFCnRlYW1SZXdhcmQFBFNXT1AFA25pbAULbG9ja0VudHJpZXMJAAIBAiRTdHJpY3QgdmFsdWUgaXMgbm90IGVxdWFsIHRvIGl0c2VsZi4JAAIBAiRTdHJpY3QgdmFsdWUgaXMgbm90IGVxdWFsIHRvIGl0c2VsZi4BF2NhbGNXaXRoZHJhd1NoYXJlVG9rZW5zBAFpBmNhbGxlcgRwb29sGXNoYXJlVG9rZW5zV2l0aGRyYXdBbW91bnQEA2ludgMJARFnZXREZXByZWNhdGVkUG9vbAEFBHBvb2wJAPwHBAUEdGhpcwIYdW5sb2NrVXNlckxvY2tEZXByZWNhdGVkCQDMCAIFBHBvb2wJAMwIAgkApQgBBQZjYWxsZXIFA25pbAUDbmlsAAADCQAAAgUDaW52BQNpbnYEDXNoYXJlVG9rZW5zSWQJANkEAQkBEUBleHRyTmF0aXZlKDEwNTMpAgkBBXZhbHVlAQkApggBBQRwb29sAg5zaGFyZV9hc3NldF9pZAQEaW52MQMJAAACBQ1zaGFyZVRva2Vuc0lkBQhheGx5THBJZAkA/AcEBQxheGx5RmFybUFkZHICCGxwQWN0aW9uBQNuaWwFA25pbAUDbmlsBAR1c2VyCQClCAEFBmNhbGxlcgQNJHQwMjM3ODIyMzg3NgkBCWNsYWltQ2FsYwIFBHBvb2wFBHVzZXIEDGZhcm1JbnRlcmVzdAgFDSR0MDIzNzgyMjM4NzYCXzEEDWJvb3N0SW50ZXJlc3QIBQ0kdDAyMzc4MjIzODc2Al8yBAtjbGFpbUFtb3VudAgFDSR0MDIzNzgyMjM4NzYCXzMECnRvVHJlYXN1cmUIBQ0kdDAyMzc4MjIzODc2Al80BAp0ZWFtUmV3YXJkCAUNJHQwMjM3ODIyMzg3NgJfNQQQdXNlclN0YWtlZEFtb3VudAkBC3ZhbHVlT3JFbHNlAgkAmggCBQR0aGlzCQCsAgIJAKwCAgkArAICBQRwb29sAgFfBQR1c2VyBRZrVXNlclNoYXJlVG9rZW5zU3Rha2VkAAAEEHVzZXJMb2NrZWRBbW91bnQJAQt2YWx1ZU9yRWxzZQIJAJoIAgUEdGhpcwkArAICCQCsAgIJAKwCAgUEcG9vbAIBXwUEdXNlcgUWa1VzZXJTaGFyZVRva2Vuc0xvY2tlZAAABBF1c2VyQW1vdW50VmlydHVhbAkBC3ZhbHVlT3JFbHNlAgkAmggCBQR0aGlzCQCsAgIJAKwCAgkArAICBQRwb29sAgFfBQR1c2VyBRdrVXNlclNoYXJlVG9rZW5zVmlydHVhbAUQdXNlclN0YWtlZEFtb3VudAQTdXNlclN0YWtlZEFtb3VudE5ldwkAZQIFEHVzZXJTdGFrZWRBbW91bnQFGXNoYXJlVG9rZW5zV2l0aGRyYXdBbW91bnQEEWF2YWlsYWJsZUZ1bmRzTmV3CQBkAgkBEXVzZXJBdmFpbGFibGVTV09QAgUEcG9vbAUEdXNlcgULY2xhaW1BbW91bnQEEHRvdGFsU2hhcmVBbW91bnQJARJnZXRUb3RhbFNoYXJlVG9rZW4BBQRwb29sBBF0b3RhbFNoYXJlVmlydHVhbAkBC3ZhbHVlT3JFbHNlAgkAmggCBQR0aGlzCQCsAgIFBHBvb2wFE2tTaGFyZVRva2Vuc1ZpcnR1YWwFEHRvdGFsU2hhcmVBbW91bnQEE3RvdGFsU2hhcmVBbW91bnROZXcJAGUCBRB0b3RhbFNoYXJlQW1vdW50BRlzaGFyZVRva2Vuc1dpdGhkcmF3QW1vdW50BBR0b3RhbFNoYXJlVmlydHVhbE5ldwkAZQIFEXRvdGFsU2hhcmVWaXJ0dWFsBRlzaGFyZVRva2Vuc1dpdGhkcmF3QW1vdW50BBR1c2VyQW1vdW50VmlydHVhbE5ldwkAZQIFEXVzZXJBbW91bnRWaXJ0dWFsBRlzaGFyZVRva2Vuc1dpdGhkcmF3QW1vdW50AwkAZgIFGXNoYXJlVG9rZW5zV2l0aGRyYXdBbW91bnQFEHVzZXJTdGFrZWRBbW91bnQJAAIBAixXaXRoZHJhdyBhbW91bnQgbW9yZSB0aGVuIHVzZXIgbG9ja2VkIGFtb3VudAMJAGYCCQEOYWNjb3VudEJhbGFuY2UBBQ1zaGFyZVRva2Vuc0lkBRB0b3RhbFNoYXJlQW1vdW50CQACAQIwQmFsYW5jZSBvZiBzaGFyZS10b2tlbiBpcyBsb3dlciB0aGFuIHRvdGFsQW1vdW50BAR1cGxwAwkAAAIJAJ0IAgkBB0FkZHJlc3MBCQDZBAEFBHBvb2wCB3ZlcnNpb24CBTMuMC4wCQD8BwQFEGxwRmFybWluZ0FkZHJlc3MCEnVwZGF0ZVVzZXJJbnRlcmVzdAkAzAgCBQR1c2VyCQDMCAIFBHBvb2wJAMwIAgkAZAIFEHVzZXJTdGFrZWRBbW91bnQFEHVzZXJMb2NrZWRBbW91bnQFA25pbAUDbmlsAAADCQAAAgUEdXBscAUEdXBscAkAzAgCCQEMSW50ZWdlckVudHJ5AgkArAICCQCsAgIJAKwCAgUEcG9vbAIBXwUEdXNlcgUVa0Zhcm1Vc2VyTGFzdEludGVyZXN0BQxmYXJtSW50ZXJlc3QJAMwIAgkBDEludGVnZXJFbnRyeQIJAKwCAgkArAICCQCsAgIFBHBvb2wCAV8FBHVzZXIFFmtCb29zdFVzZXJMYXN0SW50ZXJlc3QFDWJvb3N0SW50ZXJlc3QJAMwIAgkBDEludGVnZXJFbnRyeQIJAKwCAgUEcG9vbAURa0Zhcm1MYXN0SW50ZXJlc3QFDGZhcm1JbnRlcmVzdAkAzAgCCQEMSW50ZWdlckVudHJ5AgkArAICBQRwb29sBRJrQm9vc3RMYXN0SW50ZXJlc3QFDWJvb3N0SW50ZXJlc3QJAMwIAgkBDEludGVnZXJFbnRyeQIJAKwCAgUEcG9vbAUTa0xhc3RJbnRlcmVzdEhlaWdodAUGaGVpZ2h0CQDMCAIJAQxJbnRlZ2VyRW50cnkCCQCsAgIJAKwCAgkArAICBQRwb29sAgFfBQR1c2VyBRZrVXNlclNoYXJlVG9rZW5zU3Rha2VkBRN1c2VyU3Rha2VkQW1vdW50TmV3CQDMCAIJAQxJbnRlZ2VyRW50cnkCCQCsAgIJAKwCAgkArAICBQRwb29sAgFfBQR1c2VyBRdrVXNlclNoYXJlVG9rZW5zVmlydHVhbAUUdXNlckFtb3VudFZpcnR1YWxOZXcJAMwIAgkBDEludGVnZXJFbnRyeQIJAKwCAgUEcG9vbAUWa1NoYXJlVG90YWxTaGFyZVRva2VucwUTdG90YWxTaGFyZUFtb3VudE5ldwkAzAgCCQEMSW50ZWdlckVudHJ5AgkArAICBQRwb29sBRNrU2hhcmVUb2tlbnNWaXJ0dWFsBRR0b3RhbFNoYXJlVmlydHVhbE5ldwkAzAgCCQEMSW50ZWdlckVudHJ5AgkArAICCQCsAgIJAKwCAgUEcG9vbAIBXwUEdXNlcgUOa0F2YWlsYWJsZVNXT1AFEWF2YWlsYWJsZUZ1bmRzTmV3CQDMCAIJAQdSZWlzc3VlAwUEU1dPUAUKdG9UcmVhc3VyZQYJAMwIAgkBDlNjcmlwdFRyYW5zZmVyAwUTZmFybWluZ1RyZWFzdXJlQWRkcgUKdG9UcmVhc3VyZQUEU1dPUAkAzAgCCQEOU2NyaXB0VHJhbnNmZXIDBQ50ZWFtQm94QWRkcmVzcwUKdGVhbVJld2FyZAUEU1dPUAkAzAgCCQEOU2NyaXB0VHJhbnNmZXIDCAUBaQZjYWxsZXIFGXNoYXJlVG9rZW5zV2l0aGRyYXdBbW91bnQFDXNoYXJlVG9rZW5zSWQFA25pbAkAAgECJFN0cmljdCB2YWx1ZSBpcyBub3QgZXF1YWwgdG8gaXRzZWxmLgkAAgECJFN0cmljdCB2YWx1ZSBpcyBub3QgZXF1YWwgdG8gaXRzZWxmLgEJY2FsY0NsYWltAwFpBHBvb2wGY2FsbGVyBA1zaGFyZVRva2Vuc0lkCQDZBAEJARFAZXh0ck5hdGl2ZSgxMDUzKQIJAQV2YWx1ZQEJAKYIAQUEcG9vbAIOc2hhcmVfYXNzZXRfaWQEBHVzZXIJAKUIAQUGY2FsbGVyBBBzaGFyZVRva2VuTG9ja2VkCQESZ2V0VG90YWxTaGFyZVRva2VuAQUEcG9vbAQNJHQwMjY0NDYyNjU0MAkBCWNsYWltQ2FsYwIFBHBvb2wFBHVzZXIEDGZhcm1JbnRlcmVzdAgFDSR0MDI2NDQ2MjY1NDACXzEEDWJvb3N0SW50ZXJlc3QIBQ0kdDAyNjQ0NjI2NTQwAl8yBAtjbGFpbUFtb3VudAgFDSR0MDI2NDQ2MjY1NDACXzMECnRvVHJlYXN1cmUIBQ0kdDAyNjQ0NjI2NTQwAl80BAp0ZWFtUmV3YXJkCAUNJHQwMjY0NDYyNjU0MAJfNQQNYXZhaWxhYmxlRnVuZAkAZAIJARF1c2VyQXZhaWxhYmxlU1dPUAIFBHBvb2wFBHVzZXIFC2NsYWltQW1vdW50AwkAZgIJAQ5hY2NvdW50QmFsYW5jZQEFDXNoYXJlVG9rZW5zSWQFEHNoYXJlVG9rZW5Mb2NrZWQJAAIBAjBCYWxhbmNlIG9mIHNoYXJlLXRva2VuIGlzIGxvd2VyIHRoYW4gdG90YWxBbW91bnQEBnVUcmFucwMJAQIhPQIIBQFpBmNhbGxlcgUEdGhpcwkAzAgCCQEOU2NyaXB0VHJhbnNmZXIDCAUBaQZjYWxsZXIFDWF2YWlsYWJsZUZ1bmQFBFNXT1AFA25pbAUDbmlsCQCUCgIJAM4IAgkAzAgCCQEMSW50ZWdlckVudHJ5AgkArAICCQCsAgIJAKwCAgUEcG9vbAIBXwUEdXNlcgUVa0Zhcm1Vc2VyTGFzdEludGVyZXN0BQxmYXJtSW50ZXJlc3QJAMwIAgkBDEludGVnZXJFbnRyeQIJAKwCAgkArAICCQCsAgIFBHBvb2wCAV8FBHVzZXIFFmtCb29zdFVzZXJMYXN0SW50ZXJlc3QFDWJvb3N0SW50ZXJlc3QJAMwIAgkBDEludGVnZXJFbnRyeQIJAKwCAgUEcG9vbAURa0Zhcm1MYXN0SW50ZXJlc3QFDGZhcm1JbnRlcmVzdAkAzAgCCQEMSW50ZWdlckVudHJ5AgkArAICBQRwb29sBRJrQm9vc3RMYXN0SW50ZXJlc3QFDWJvb3N0SW50ZXJlc3QJAMwIAgkBDEludGVnZXJFbnRyeQIJAKwCAgUEcG9vbAUTa0xhc3RJbnRlcmVzdEhlaWdodAUGaGVpZ2h0CQDMCAIJAQxJbnRlZ2VyRW50cnkCCQCsAgIJAKwCAgkArAICBQRwb29sAgFfBQR1c2VyBQ5rQXZhaWxhYmxlU1dPUAAACQDMCAIJAQdSZWlzc3VlAwUEU1dPUAkAZAIJAGQCBQp0b1RyZWFzdXJlBQ1hdmFpbGFibGVGdW5kBQp0ZWFtUmV3YXJkBgkAzAgCCQEOU2NyaXB0VHJhbnNmZXIDBRNmYXJtaW5nVHJlYXN1cmVBZGRyBQp0b1RyZWFzdXJlBQRTV09QCQDMCAIJAQ5TY3JpcHRUcmFuc2ZlcgMFDnRlYW1Cb3hBZGRyZXNzBQp0ZWFtUmV3YXJkBQRTV09QBQNuaWwFBnVUcmFucwUNYXZhaWxhYmxlRnVuZAESdW5sb2NrVXNlckxvY2tDYWxjAwFpBHBvb2wEdXNlcgQRdG90YWxTaGFyZVZpcnR1YWwJARFAZXh0ck5hdGl2ZSgxMDUwKQIFBHRoaXMJAKwCAgUEcG9vbAUTa1NoYXJlVG9rZW5zVmlydHVhbAQQdXNlclN0YWtlZEFtb3VudAkBC3ZhbHVlT3JFbHNlAgkAmggCBQR0aGlzCQCsAgIJAKwCAgkArAICBQRwb29sAgFfBQR1c2VyBRZrVXNlclNoYXJlVG9rZW5zU3Rha2VkAAAEEHVzZXJMb2NrZWRBbW91bnQJAQt2YWx1ZU9yRWxzZQIJAJoIAgUEdGhpcwkArAICCQCsAgIJAKwCAgUEcG9vbAIBXwUEdXNlcgUWa1VzZXJTaGFyZVRva2Vuc0xvY2tlZAAABBF1c2VyQW1vdW50VmlydHVhbAkBC3ZhbHVlT3JFbHNlAgkAmggCBQR0aGlzCQCsAgIJAKwCAgkArAICBQRwb29sAgFfBQR1c2VyBRdrVXNlclNoYXJlVG9rZW5zVmlydHVhbAUQdXNlclN0YWtlZEFtb3VudAQTdXNlclN0YWtlZEFtb3VudE5ldwkAZAIFEHVzZXJTdGFrZWRBbW91bnQFEHVzZXJMb2NrZWRBbW91bnQEDSR0MDI4MDE0MjgxMDgJAQljbGFpbUNhbGMCBQRwb29sBQR1c2VyBAxmYXJtSW50ZXJlc3QIBQ0kdDAyODAxNDI4MTA4Al8xBA1ib29zdEludGVyZXN0CAUNJHQwMjgwMTQyODEwOAJfMgQLY2xhaW1BbW91bnQIBQ0kdDAyODAxNDI4MTA4Al8zBAp0b1RyZWFzdXJlCAUNJHQwMjgwMTQyODEwOAJfNAQKdGVhbVJld2FyZAgFDSR0MDI4MDE0MjgxMDgCXzUEEWF2YWlsYWJsZUZ1bmRzTmV3CQBkAgkBEXVzZXJBdmFpbGFibGVTV09QAgUEcG9vbAUEdXNlcgULY2xhaW1BbW91bnQJAMwIAgkBDEludGVnZXJFbnRyeQIJAKwCAgkArAICCQCsAgIFBHBvb2wCAV8FBHVzZXIFFWtGYXJtVXNlckxhc3RJbnRlcmVzdAUMZmFybUludGVyZXN0CQDMCAIJAQxJbnRlZ2VyRW50cnkCCQCsAgIJAKwCAgkArAICBQRwb29sAgFfBQR1c2VyBRZrQm9vc3RVc2VyTGFzdEludGVyZXN0BQ1ib29zdEludGVyZXN0CQDMCAIJAQxJbnRlZ2VyRW50cnkCCQCsAgIFBHBvb2wFEWtGYXJtTGFzdEludGVyZXN0BQxmYXJtSW50ZXJlc3QJAMwIAgkBDEludGVnZXJFbnRyeQIJAKwCAgUEcG9vbAUSa0Jvb3N0TGFzdEludGVyZXN0BQ1ib29zdEludGVyZXN0CQDMCAIJAQxJbnRlZ2VyRW50cnkCCQCsAgIFBHBvb2wFE2tMYXN0SW50ZXJlc3RIZWlnaHQFBmhlaWdodAkAzAgCCQEMSW50ZWdlckVudHJ5AgkArAICCQCsAgIJAKwCAgUEcG9vbAIBXwUEdXNlcgUWa1VzZXJTaGFyZVRva2Vuc1N0YWtlZAUTdXNlclN0YWtlZEFtb3VudE5ldwkAzAgCCQEMSW50ZWdlckVudHJ5AgkArAICCQCsAgIJAKwCAgUEcG9vbAIBXwUEdXNlcgUXa1VzZXJTaGFyZVRva2Vuc1ZpcnR1YWwFE3VzZXJTdGFrZWRBbW91bnROZXcJAMwIAgkBDEludGVnZXJFbnRyeQIJAKwCAgUEcG9vbAUTa1NoYXJlVG9rZW5zVmlydHVhbAkAZAIJAGUCBRF0b3RhbFNoYXJlVmlydHVhbAURdXNlckFtb3VudFZpcnR1YWwFE3VzZXJTdGFrZWRBbW91bnROZXcJAMwIAgkBDEludGVnZXJFbnRyeQIJAKwCAgkArAICCQCsAgIFBHBvb2wCAV8FBHVzZXIFDmtBdmFpbGFibGVTV09QBRFhdmFpbGFibGVGdW5kc05ldwkAzAgCCQELRGVsZXRlRW50cnkBCQCsAgIJAKwCAgkArAICBQRwb29sAgFfBQR1c2VyBRZrVXNlclNoYXJlVG9rZW5zTG9ja2VkCQDMCAIJAQtEZWxldGVFbnRyeQEJAKwCAgkArAICCQCsAgIFBHBvb2wCAV8FBHVzZXIFHGtVc2VyU2hhcmVUb2tlbnNMb2NrZWRIZWlnaHQJAMwIAgkBC0RlbGV0ZUVudHJ5AQkArAICCQCsAgIJAKwCAgUEcG9vbAIBXwUEdXNlcgUaa1VzZXJTaGFyZVRva2Vuc0xvY2tlZFR5cGUJAMwIAgkBB1JlaXNzdWUDBQRTV09QCQBkAgUKdG9UcmVhc3VyZQUKdGVhbVJld2FyZAYJAMwIAgkBDlNjcmlwdFRyYW5zZmVyAwUTZmFybWluZ1RyZWFzdXJlQWRkcgUKdG9UcmVhc3VyZQUEU1dPUAkAzAgCCQEOU2NyaXB0VHJhbnNmZXIDBQ50ZWFtQm94QWRkcmVzcwUKdGVhbVJld2FyZAUEU1dPUAUDbmlsEgFpAQRpbml0AQdlYXJseUxQAwkBCWlzRGVmaW5lZAEJAJ0IAgUEdGhpcwUHa1NXT1BpZAkAAgECGFNXT1AgYWxyZWFkeSBpbml0aWFsaXplZAQKaW5pdEFtb3VudACAgOmDsd4WBAlTV09QaXNzdWUJAMIIBQIEU1dPUAITU1dPUCBwcm90b2NvbCB0b2tlbgUKaW5pdEFtb3VudAAIBgQGU1dPUGlkCQC4CAEFCVNXT1Bpc3N1ZQkAzAgCCQEMQm9vbGVhbkVudHJ5AgUHa0FjdGl2ZQYJAMwIAgkAwggFAgRTV09QAhNTV09QIHByb3RvY29sIHRva2VuBQppbml0QW1vdW50AAgGCQDMCAIJAQtTdHJpbmdFbnRyeQIFB2tTV09QaWQJANgEAQUGU1dPUGlkBQNuaWwBaQEUaW5pdFBvb2xTaGFyZUZhcm1pbmcBBHBvb2wJAQt2YWx1ZU9yRWxzZQIJAQtpc0FkbWluQ2FsbAEFAWkDCQEBIQEJAQlpc0RlZmluZWQBCQCdCAIFBm9yYWNsZQkArAICBQ1rUG9vbEluT3JhY2xlBQRwb29sCQACAQIVUG9vbCBpcyBub3QgaW4gb3JhY2xlAwkBCWlzRGVmaW5lZAEJAJoIAgUEdGhpcwkArAICBQRwb29sBRZrU2hhcmVUb3RhbFNoYXJlVG9rZW5zCQACAQITUG9vbCBhbHJlYWR5IGluaXRlZAkAzAgCCQEMSW50ZWdlckVudHJ5AgkArAICBQRwb29sBRZrU2hhcmVUb3RhbFNoYXJlVG9rZW5zAAAJAMwIAgkBDEludGVnZXJFbnRyeQIJAKwCAgUEcG9vbAURa0Zhcm1MYXN0SW50ZXJlc3QAAAkAzAgCCQEMSW50ZWdlckVudHJ5AgkArAICBQRwb29sBRJrQm9vc3RMYXN0SW50ZXJlc3QAAAkAzAgCCQEMSW50ZWdlckVudHJ5AgkArAICBQRwb29sBRNrTGFzdEludGVyZXN0SGVpZ2h0BQZoZWlnaHQFA25pbAFpARJ1cGRhdGVQb29sSW50ZXJlc3QBBHBvb2wJAQt2YWx1ZU9yRWxzZQIJAQhpc0FjdGl2ZQADCQECIT0CCAUBaQZjYWxsZXIFCmdvdkFkZHJlc3MJAAIBAiZPbmx5IEdvdmVybmFuY2UgY2FuIGNhbGwgdGhpcyBmdW5jdGlvbgQEdXNlcgkApQgBCQCnCAEFEWFkbWluSW52b2tlUHViS2V5BA0kdDAzMDU1ODMwNjMyCQEJY2xhaW1DYWxjAgUEcG9vbAUEdXNlcgQMZmFybUludGVyZXN0CAUNJHQwMzA1NTgzMDYzMgJfMQQNYm9vc3RJbnRlcmVzdAgFDSR0MDMwNTU4MzA2MzICXzIED2Jvb3N0TFBpbnRlcmVzdAgFDSR0MDMwNTU4MzA2MzICXzMJAMwIAgkBDEludGVnZXJFbnRyeQIJAKwCAgUEcG9vbAURa0Zhcm1MYXN0SW50ZXJlc3QFDGZhcm1JbnRlcmVzdAkAzAgCCQEMSW50ZWdlckVudHJ5AgkArAICBQRwb29sBRJrQm9vc3RMYXN0SW50ZXJlc3QFDWJvb3N0SW50ZXJlc3QJAMwIAgkBDEludGVnZXJFbnRyeQIJAKwCAgUEcG9vbAUTa0xhc3RJbnRlcmVzdEhlaWdodAUGaGVpZ2h0BQNuaWwBaQEPbG9ja1NoYXJlVG9rZW5zAgRwb29sCGxvY2tUeXBlCQELdmFsdWVPckVsc2UCCQEQaXNEZXByZWNhdGVkUG9vbAEFBHBvb2wJAQt2YWx1ZU9yRWxzZQIJAQhpc0FjdGl2ZQAJARNjYWxjTG9ja1NoYXJlVG9rZW5zBAUBaQgFAWkGY2FsbGVyBQRwb29sBQhsb2NrVHlwZQFpARdsb2NrU2hhcmVUb2tlbnNGcm9tUG9vbAMLY2FsbGVyQnl0ZXMEcG9vbAhsb2NrVHlwZQkBC3ZhbHVlT3JFbHNlAgkBEGlzRGVwcmVjYXRlZFBvb2wBBQRwb29sCQELdmFsdWVPckVsc2UCCQEIaXNBY3RpdmUACQELdmFsdWVPckVsc2UCCQEKaXNQb29sQ2FsbAIFAWkFBHBvb2wJARNjYWxjTG9ja1NoYXJlVG9rZW5zBAUBaQkBB0FkZHJlc3MBBQtjYWxsZXJCeXRlcwUEcG9vbAUIbG9ja1R5cGUBaQEVbG9ja1N0YWtlZFNoYXJlVG9rZW5zAwRwb29sCGxvY2tUeXBlCmxvY2tBbW91bnQJAQt2YWx1ZU9yRWxzZQIJARBpc0RlcHJlY2F0ZWRQb29sAQUEcG9vbAkBC3ZhbHVlT3JFbHNlAgkBCGlzQWN0aXZlAAQMc2hhcmVBc3NldElkCQEPZ2V0U2hhcmVBc3NldElkAQUEcG9vbAQEdXNlcgkApQgBCAUBaQZjYWxsZXIECnRvdGFsU2hhcmUJARJnZXRUb3RhbFNoYXJlVG9rZW4BBQRwb29sBBF0b3RhbFNoYXJlVmlydHVhbAkBC3ZhbHVlT3JFbHNlAgkAmggCBQR0aGlzCQCsAgIFBHBvb2wFE2tTaGFyZVRva2Vuc1ZpcnR1YWwFCnRvdGFsU2hhcmUEEHVzZXJTdGFrZWRBbW91bnQJAQt2YWx1ZU9yRWxzZQIJAJoIAgUEdGhpcwkArAICCQCsAgIJAKwCAgUEcG9vbAIBXwUEdXNlcgUWa1VzZXJTaGFyZVRva2Vuc1N0YWtlZAAABA91c2VyTG9ja2VkSGVpZ3QJAQt2YWx1ZU9yRWxzZQIJAJoIAgUEdGhpcwkArAICCQCsAgIJAKwCAgUEcG9vbAIBXwUEdXNlcgUca1VzZXJTaGFyZVRva2Vuc0xvY2tlZEhlaWdodAAABBB1c2VyTG9ja2VkQW1vdW50CQELdmFsdWVPckVsc2UCCQCaCAIFBHRoaXMJAKwCAgkArAICCQCsAgIFBHBvb2wCAV8FBHVzZXIFFmtVc2VyU2hhcmVUb2tlbnNMb2NrZWQAAAQRdXNlckFtb3VudFZpcnR1YWwJAQt2YWx1ZU9yRWxzZQIJAJoIAgUEdGhpcwkArAICCQCsAgIJAKwCAgUEcG9vbAIBXwUEdXNlcgUXa1VzZXJTaGFyZVRva2Vuc1ZpcnR1YWwFEHVzZXJTdGFrZWRBbW91bnQEFHRvdGFsVXNlclNoYXJlVG9rZW5zCQBkAgUQdXNlclN0YWtlZEFtb3VudAUQdXNlckxvY2tlZEFtb3VudAQNJHQwMzIyNjEzMjMxMwkBDWdldExvY2tQYXJhbXMBBQhsb2NrVHlwZQQKbG9ja1BlcmlvZAgFDSR0MDMyMjYxMzIzMTMCXzEECGxvY2tDb2VmCAUNJHQwMzIyNjEzMjMxMwJfMgQMbG9ja1dhdmVzRmVlCQERQGV4dHJOYXRpdmUoMTA1MCkCBQR0aGlzBQ1rTG9ja1dhdmVzRmVlAwkAZgIJARVnZXRIZWlnaHRGaXJzdEhhcnZlc3QBBQRwb29sBQZoZWlnaHQJAAIBAjJZb3UgY2FuJ3QgbG9jayBzaGFyZVRva2VucyB0aWxsIGZpcnN0IGhhcnZlc3QgZW5kLgMJAGcCAAAFCGxvY2tUeXBlCQACAQIUbG9ja1R5cGUgbXVzdCBiZSA+IDADCQBmAgUKbG9ja0Ftb3VudAUQdXNlclN0YWtlZEFtb3VudAkAAgEJAKwCAgIZWW91IGNhbid0IGxvY2sgbW9yZSB0aGFuIAkApAMBBRB1c2VyU3Rha2VkQW1vdW50AwkAZgIJAQ5hY2NvdW50QmFsYW5jZQEFDHNoYXJlQXNzZXRJZAUKdG90YWxTaGFyZQkAAgECMEJhbGFuY2Ugb2Ygc2hhcmUtdG9rZW4gaXMgbG93ZXIgdGhhbiB0b3RhbEFtb3VudAMDCQAAAgUPdXNlckxvY2tlZEhlaWd0AAADAwkAZgIAAQkAkAMBCAUBaQhwYXltZW50cwYJAQIhPQIICQCRAwIIBQFpCHBheW1lbnRzAAAHYXNzZXRJZAUEdW5pdAYJAGYCBQxsb2NrV2F2ZXNGZWUICQCRAwIIBQFpCHBheW1lbnRzAAAGYW1vdW50BwkAAgEJAKwCAgkArAICAitZb3UgbmVlZCB0byBwYXkgYWRkaXRpb25hbCB3YXZlcyBjb21pc3Npb24gCQCkAwEFDGxvY2tXYXZlc0ZlZQIFV0FWRVMDAwkAAAIFD3VzZXJMb2NrZWRIZWlndAAACQBnAgAABQpsb2NrQW1vdW50BwkAAgECIWxvY2tBbW91bnQgbXVzdCBiZSBncmVhdGVyIHRoYW4gMAMJAGYCAAAFCmxvY2tBbW91bnQJAAIBAhtsb2NrQW1vdW50IG11c3QgYmUgcG9zaXRpdmUDCQBmAgUPdXNlckxvY2tlZEhlaWd0CQBkAgUGaGVpZ2h0BQpsb2NrUGVyaW9kCQACAQJPWW91IGNhbm5vdCBsb2NrIHNoYXJldG9rZW5zIGZvciBhIHBlcmlvZCBsZXNzIHRoYW4gd2hhdCB5b3UgaGF2ZSBhbHJlYWR5IGxvY2tlZAQTdXNlckxvY2tlZEFtb3VudE5ldwkAZAIFEHVzZXJMb2NrZWRBbW91bnQFCmxvY2tBbW91bnQEE3VzZXJTdGFrZWRBbW91bnROZXcJAGUCBRB1c2VyU3Rha2VkQW1vdW50BQpsb2NrQW1vdW50BBJ1c2VyTG9ja2VkSGVpZ3ROZXcJAGQCBQZoZWlnaHQFCmxvY2tQZXJpb2QEFHVzZXJBbW91bnRWaXJ0dWFsTmV3CQBkAgkAawMFE3VzZXJMb2NrZWRBbW91bnROZXcFCGxvY2tDb2VmBRJsb2NrQm9vc3RDb2VmU2NhbGUFE3VzZXJTdGFrZWRBbW91bnROZXcEDSR0MDMzNjU5MzM3NTMJAQljbGFpbUNhbGMCBQRwb29sBQR1c2VyBAxmYXJtSW50ZXJlc3QIBQ0kdDAzMzY1OTMzNzUzAl8xBA1ib29zdEludGVyZXN0CAUNJHQwMzM2NTkzMzc1MwJfMgQLY2xhaW1BbW91bnQIBQ0kdDAzMzY1OTMzNzUzAl8zBAp0b1RyZWFzdXJlCAUNJHQwMzM2NTkzMzc1MwJfNAQKdGVhbVJld2FyZAgFDSR0MDMzNjU5MzM3NTMCXzUEEWF2YWlsYWJsZUZ1bmRzTmV3CQBkAgkBEXVzZXJBdmFpbGFibGVTV09QAgUEcG9vbAUEdXNlcgULY2xhaW1BbW91bnQJAMwIAgkBDEludGVnZXJFbnRyeQIJAKwCAgkArAICCQCsAgIFBHBvb2wCAV8FBHVzZXIFFmtVc2VyU2hhcmVUb2tlbnNTdGFrZWQFE3VzZXJTdGFrZWRBbW91bnROZXcJAMwIAgkBDEludGVnZXJFbnRyeQIJAKwCAgkArAICCQCsAgIFBHBvb2wCAV8FBHVzZXIFFmtVc2VyU2hhcmVUb2tlbnNMb2NrZWQFE3VzZXJMb2NrZWRBbW91bnROZXcJAMwIAgkBDEludGVnZXJFbnRyeQIJAKwCAgkArAICCQCsAgIFBHBvb2wCAV8FBHVzZXIFHGtVc2VyU2hhcmVUb2tlbnNMb2NrZWRIZWlnaHQFEnVzZXJMb2NrZWRIZWlndE5ldwkAzAgCCQEMSW50ZWdlckVudHJ5AgkArAICCQCsAgIJAKwCAgUEcG9vbAIBXwUEdXNlcgUaa1VzZXJTaGFyZVRva2Vuc0xvY2tlZFR5cGUFCGxvY2tUeXBlCQDMCAIJAQxJbnRlZ2VyRW50cnkCCQCsAgIJAKwCAgkArAICBQRwb29sAgFfBQR1c2VyBRdrVXNlclNoYXJlVG9rZW5zVmlydHVhbAUUdXNlckFtb3VudFZpcnR1YWxOZXcJAMwIAgkBDEludGVnZXJFbnRyeQIJAKwCAgUEcG9vbAUTa1NoYXJlVG9rZW5zVmlydHVhbAkAZAIJAGUCBRF0b3RhbFNoYXJlVmlydHVhbAURdXNlckFtb3VudFZpcnR1YWwFFHVzZXJBbW91bnRWaXJ0dWFsTmV3CQDMCAIJAQxJbnRlZ2VyRW50cnkCCQCsAgIJAKwCAgkArAICBQRwb29sAgFfBQR1c2VyBRVrRmFybVVzZXJMYXN0SW50ZXJlc3QFDGZhcm1JbnRlcmVzdAkAzAgCCQEMSW50ZWdlckVudHJ5AgkArAICCQCsAgIJAKwCAgUEcG9vbAIBXwUEdXNlcgUWa0Jvb3N0VXNlckxhc3RJbnRlcmVzdAUNYm9vc3RJbnRlcmVzdAkAzAgCCQEMSW50ZWdlckVudHJ5AgkArAICBQRwb29sBRFrRmFybUxhc3RJbnRlcmVzdAUMZmFybUludGVyZXN0CQDMCAIJAQxJbnRlZ2VyRW50cnkCCQCsAgIFBHBvb2wFEmtCb29zdExhc3RJbnRlcmVzdAUNYm9vc3RJbnRlcmVzdAkAzAgCCQEMSW50ZWdlckVudHJ5AgkArAICBQRwb29sBRNrTGFzdEludGVyZXN0SGVpZ2h0BQZoZWlnaHQJAMwIAgkBDEludGVnZXJFbnRyeQIJAKwCAgkArAICCQCsAgIFBHBvb2wCAV8FBHVzZXIFDmtBdmFpbGFibGVTV09QBRFhdmFpbGFibGVGdW5kc05ldwkAzAgCCQEHUmVpc3N1ZQMFBFNXT1AJAGQCBQp0b1RyZWFzdXJlBQp0ZWFtUmV3YXJkBgkAzAgCCQEOU2NyaXB0VHJhbnNmZXIDBRNmYXJtaW5nVHJlYXN1cmVBZGRyBQp0b1RyZWFzdXJlBQRTV09QCQDMCAIJAQ5TY3JpcHRUcmFuc2ZlcgMFDnRlYW1Cb3hBZGRyZXNzBQp0ZWFtUmV3YXJkBQRTV09QBQNuaWwBaQEOdW5sb2NrVXNlckxvY2sCBHBvb2wEdXNlcgkBC3ZhbHVlT3JFbHNlAgkBCGlzQWN0aXZlAAQPdXNlckxvY2tlZEhlaWd0CQETdmFsdWVPckVycm9yTWVzc2FnZQIJAJoIAgUEdGhpcwkArAICCQCsAgIJAKwCAgUEcG9vbAIBXwUEdXNlcgUca1VzZXJTaGFyZVRva2Vuc0xvY2tlZEhlaWdodAkArAICCQCsAgIJAKwCAgkArAICAhFUaGVyZSBpcyBubyBwb29sIAUEcG9vbAIJIG9yIHVzZXIgBQR1c2VyAgl3aXRoIGxvY2sDCQBmAgUPdXNlckxvY2tlZEhlaWd0BQZoZWlnaHQJAAIBCQCsAgICIllvdSBjYW4ndCB1bmxvY2sgc2hhcmV0b2tlbnMgdGlsbCAJAKQDAQUPdXNlckxvY2tlZEhlaWd0CQDOCAIJARJ1bmxvY2tVc2VyTG9ja0NhbGMDBQFpBQRwb29sBQR1c2VyCQDMCAIJAQ5TY3JpcHRUcmFuc2ZlcgMIBQFpBmNhbGxlcgkBEUBleHRyTmF0aXZlKDEwNTApAgUEdGhpcwUNa0xvY2tXYXZlc0ZlZQUEdW5pdAUDbmlsAWkBGHVubG9ja1VzZXJMb2NrRGVwcmVjYXRlZAIEcG9vbAR1c2VyCQELdmFsdWVPckVsc2UCCQEIaXNBY3RpdmUACQELdmFsdWVPckVsc2UCCQEKaXNTZWxmQ2FsbAEFAWkDCQEBIQEJARFnZXREZXByZWNhdGVkUG9vbAEFBHBvb2wJAAIBAhdQb29sIG11c3QgYmUgZGVwcmVjYXRlZAMJAQlpc0RlZmluZWQBCQCaCAIFBHRoaXMJAKwCAgkArAICCQCsAgIFBHBvb2wCAV8FBHVzZXIFHGtVc2VyU2hhcmVUb2tlbnNMb2NrZWRIZWlnaHQJAM4IAgkBEnVubG9ja1VzZXJMb2NrQ2FsYwMFAWkFBHBvb2wFBHVzZXIJAMwIAgkBDlNjcmlwdFRyYW5zZmVyAwUPbW9uZXlCb3hBZGRyZXNzCQERQGV4dHJOYXRpdmUoMTA1MCkCBQR0aGlzBQ1rTG9ja1dhdmVzRmVlBQR1bml0BQNuaWwFA25pbAFpARN3aXRoZHJhd1NoYXJlVG9rZW5zAgRwb29sGXNoYXJlVG9rZW5zV2l0aGRyYXdBbW91bnQJAQt2YWx1ZU9yRWxzZQIJAQhpc0FjdGl2ZQAJARdjYWxjV2l0aGRyYXdTaGFyZVRva2VucwQFAWkIBQFpBmNhbGxlcgUEcG9vbAUZc2hhcmVUb2tlbnNXaXRoZHJhd0Ftb3VudAFpARt3aXRoZHJhd1NoYXJlVG9rZW5zRnJvbVBvb2wDC2NhbGxlckJ5dGVzBHBvb2wZc2hhcmVUb2tlbnNXaXRoZHJhd0Ftb3VudAkBC3ZhbHVlT3JFbHNlAgkBCGlzQWN0aXZlAAkBC3ZhbHVlT3JFbHNlAgkBCmlzUG9vbENhbGwCBQFpBQRwb29sCQEXY2FsY1dpdGhkcmF3U2hhcmVUb2tlbnMEBQFpCQEHQWRkcmVzcwEFC2NhbGxlckJ5dGVzBQRwb29sBRlzaGFyZVRva2Vuc1dpdGhkcmF3QW1vdW50AWkBBWNsYWltAQRwb29sCQELdmFsdWVPckVsc2UCCQEIaXNBY3RpdmUABAFyCQEJY2FsY0NsYWltAwUBaQUEcG9vbAgFAWkGY2FsbGVyAwkAAAIIBQFyAl8yAAAJAAIBAhlZb3UgaGF2ZSAwIGF2YWlsYWJsZSBTV09QBQFyAWkBDWNsYWltSW50ZXJuYWwCBHBvb2wGY2FsbGVyCQELdmFsdWVPckVsc2UCCQEIaXNBY3RpdmUACQELdmFsdWVPckVsc2UCCQEKaXNTZWxmQ2FsbAEFAWkJAQljYWxjQ2xhaW0DBQFpBQRwb29sCQEHQWRkcmVzcwEFBmNhbGxlcgFpAQ1jbGFpbUFuZFN0YWtlAQRwb29sCQELdmFsdWVPckVsc2UCCQEIaXNBY3RpdmUABAtjbGFpbUFtb3VudAoAAUAJAPwHBAUEdGhpcwINY2xhaW1JbnRlcm5hbAkAzAgCBQRwb29sCQDMCAIICAUBaQZjYWxsZXIFYnl0ZXMFA25pbAUDbmlsAwkAAQIFAUACA0ludAUBQAkAAgEJAKwCAgkAAwEFAUACGCBjb3VsZG4ndCBiZSBjYXN0IHRvIEludAMJAAACBQtjbGFpbUFtb3VudAULY2xhaW1BbW91bnQDCQAAAgULY2xhaW1BbW91bnQAAAkAAgECGVlvdSBoYXZlIDAgYXZhaWxhYmxlIFNXT1AECnN0YWtlVG9Hb3YJAPwHBAUKZ292QWRkcmVzcwITbG9ja1NXT1BGcm9tRmFybWluZwUDbmlsCQDMCAIJAQ9BdHRhY2hlZFBheW1lbnQCBQRTV09QBQtjbGFpbUFtb3VudAUDbmlsAwkAAAIFCnN0YWtlVG9Hb3YFCnN0YWtlVG9Hb3YFA25pbAkAAgECJFN0cmljdCB2YWx1ZSBpcyBub3QgZXF1YWwgdG8gaXRzZWxmLgkAAgECJFN0cmljdCB2YWx1ZSBpcyBub3QgZXF1YWwgdG8gaXRzZWxmLgFpAQhjbGFpbUFsbAEFcG9vbHMJAQt2YWx1ZU9yRWxzZQIJAQhpc0FjdGl2ZQAKAQhjbGFpbUludgIKY2xhaW1Ub3RhbARwb29sBAtjbGFpbUFtb3VudAoAAUAJAPwHBAUEdGhpcwINY2xhaW1JbnRlcm5hbAkAzAgCBQRwb29sCQDMCAIICAUBaQZjYWxsZXIFYnl0ZXMFA25pbAUDbmlsAwkAAQIFAUACA0ludAUBQAkAAgEJAKwCAgkAAwEFAUACGCBjb3VsZG4ndCBiZSBjYXN0IHRvIEludAMJAAACBQtjbGFpbUFtb3VudAULY2xhaW1BbW91bnQJAGQCBQpjbGFpbVRvdGFsBQtjbGFpbUFtb3VudAkAAgECJFN0cmljdCB2YWx1ZSBpcyBub3QgZXF1YWwgdG8gaXRzZWxmLgQKY2xhaW1Ub3RhbAoAAiRsBQVwb29scwoAAiRzCQCQAwEFAiRsCgAFJGFjYzAAAAoBBSRmMF8xAgIkYQIkaQMJAGcCBQIkaQUCJHMFAiRhCQEIY2xhaW1JbnYCBQIkYQkAkQMCBQIkbAUCJGkKAQUkZjBfMgICJGECJGkDCQBnAgUCJGkFAiRzBQIkYQkAAgECFExpc3Qgc2l6ZSBleGNlZWRzIDYwCQEFJGYwXzICCQEFJGYwXzECCQEFJGYwXzECCQEFJGYwXzECCQEFJGYwXzECCQEFJGYwXzECCQEFJGYwXzECCQEFJGYwXzECCQEFJGYwXzECCQEFJGYwXzECCQEFJGYwXzECCQEFJGYwXzECCQEFJGYwXzECCQEFJGYwXzECCQEFJGYwXzECCQEFJGYwXzECCQEFJGYwXzECCQEFJGYwXzECCQEFJGYwXzECCQEFJGYwXzECCQEFJGYwXzECCQEFJGYwXzECCQEFJGYwXzECCQEFJGYwXzECCQEFJGYwXzECCQEFJGYwXzECCQEFJGYwXzECCQEFJGYwXzECCQEFJGYwXzECCQEFJGYwXzECCQEFJGYwXzECCQEFJGYwXzECCQEFJGYwXzECCQEFJGYwXzECCQEFJGYwXzECCQEFJGYwXzECCQEFJGYwXzECCQEFJGYwXzECCQEFJGYwXzECCQEFJGYwXzECCQEFJGYwXzECCQEFJGYwXzECCQEFJGYwXzECCQEFJGYwXzECCQEFJGYwXzECCQEFJGYwXzECCQEFJGYwXzECCQEFJGYwXzECCQEFJGYwXzECCQEFJGYwXzECCQEFJGYwXzECCQEFJGYwXzECCQEFJGYwXzECCQEFJGYwXzECCQEFJGYwXzECCQEFJGYwXzECCQEFJGYwXzECCQEFJGYwXzECCQEFJGYwXzECCQEFJGYwXzECCQEFJGYwXzECBQUkYWNjMAAAAAEAAgADAAQABQAGAAcACAAJAAoACwAMAA0ADgAPABAAEQASABMAFAAVABYAFwAYABkAGgAbABwAHQAeAB8AIAAhACIAIwAkACUAJgAnACgAKQAqACsALAAtAC4ALwAwADEAMgAzADQANQA2ADcAOAA5ADoAOwA8AwkAAAIFCmNsYWltVG90YWwAAAkAAgECGVlvdSBoYXZlIDAgYXZhaWxhYmxlIFNXT1AJAMwIAgkBDlNjcmlwdFRyYW5zZmVyAwgFAWkGY2FsbGVyBQpjbGFpbVRvdGFsBQRTV09QBQNuaWwBaQEQY2xhaW1BbGxBbmRTdGFrZQEFcG9vbHMJAQt2YWx1ZU9yRWxzZQIJAQhpc0FjdGl2ZQAKAQhjbGFpbUludgIKY2xhaW1Ub3RhbARwb29sBAtjbGFpbUFtb3VudAoAAUAJAPwHBAUEdGhpcwINY2xhaW1JbnRlcm5hbAkAzAgCBQRwb29sCQDMCAIICAUBaQZjYWxsZXIFYnl0ZXMFA25pbAUDbmlsAwkAAQIFAUACA0ludAUBQAkAAgEJAKwCAgkAAwEFAUACGCBjb3VsZG4ndCBiZSBjYXN0IHRvIEludAMJAAACBQtjbGFpbUFtb3VudAULY2xhaW1BbW91bnQJAGQCBQpjbGFpbVRvdGFsBQtjbGFpbUFtb3VudAkAAgECJFN0cmljdCB2YWx1ZSBpcyBub3QgZXF1YWwgdG8gaXRzZWxmLgQKY2xhaW1Ub3RhbAoAAiRsBQVwb29scwoAAiRzCQCQAwEFAiRsCgAFJGFjYzAAAAoBBSRmMF8xAgIkYQIkaQMJAGcCBQIkaQUCJHMFAiRhCQEIY2xhaW1JbnYCBQIkYQkAkQMCBQIkbAUCJGkKAQUkZjBfMgICJGECJGkDCQBnAgUCJGkFAiRzBQIkYQkAAgECFExpc3Qgc2l6ZSBleGNlZWRzIDYwCQEFJGYwXzICCQEFJGYwXzECCQEFJGYwXzECCQEFJGYwXzECCQEFJGYwXzECCQEFJGYwXzECCQEFJGYwXzECCQEFJGYwXzECCQEFJGYwXzECCQEFJGYwXzECCQEFJGYwXzECCQEFJGYwXzECCQEFJGYwXzECCQEFJGYwXzECCQEFJGYwXzECCQEFJGYwXzECCQEFJGYwXzECCQEFJGYwXzECCQEFJGYwXzECCQEFJGYwXzECCQEFJGYwXzECCQEFJGYwXzECCQEFJGYwXzECCQEFJGYwXzECCQEFJGYwXzECCQEFJGYwXzECCQEFJGYwXzECCQEFJGYwXzECCQEFJGYwXzECCQEFJGYwXzECCQEFJGYwXzECCQEFJGYwXzECCQEFJGYwXzECCQEFJGYwXzECCQEFJGYwXzECCQEFJGYwXzECCQEFJGYwXzECCQEFJGYwXzECCQEFJGYwXzECCQEFJGYwXzECCQEFJGYwXzECCQEFJGYwXzECCQEFJGYwXzECCQEFJGYwXzECCQEFJGYwXzECCQEFJGYwXzECCQEFJGYwXzECCQEFJGYwXzECCQEFJGYwXzECCQEFJGYwXzECCQEFJGYwXzECCQEFJGYwXzECCQEFJGYwXzECCQEFJGYwXzECCQEFJGYwXzECCQEFJGYwXzECCQEFJGYwXzECCQEFJGYwXzECCQEFJGYwXzECCQEFJGYwXzECCQEFJGYwXzECBQUkYWNjMAAAAAEAAgADAAQABQAGAAcACAAJAAoACwAMAA0ADgAPABAAEQASABMAFAAVABYAFwAYABkAGgAbABwAHQAeAB8AIAAhACIAIwAkACUAJgAnACgAKQAqACsALAAtAC4ALwAwADEAMgAzADQANQA2ADcAOAA5ADoAOwA8AwkAAAIFCmNsYWltVG90YWwAAAkAAgECGVlvdSBoYXZlIDAgYXZhaWxhYmxlIFNXT1AECnN0YWtlVG9Hb3YJAPwHBAUKZ292QWRkcmVzcwITbG9ja1NXT1BGcm9tRmFybWluZwUDbmlsCQDMCAIJAQ9BdHRhY2hlZFBheW1lbnQCBQRTV09QBQpjbGFpbVRvdGFsBQNuaWwDCQAAAgUKc3Rha2VUb0dvdgUKc3Rha2VUb0dvdgUDbmlsCQACAQIkU3RyaWN0IHZhbHVlIGlzIG5vdCBlcXVhbCB0byBpdHNlbGYuAWkBF3VwZGF0ZVVzZXJCb29zdEludGVyZXN0AgRwb29sBHVzZXIJAQt2YWx1ZU9yRWxzZQIJAQhpc0FjdGl2ZQADCQECIT0CCAUBaQZjYWxsZXIFDXZvdGluZ0FkZHJlc3MJAAIBAiNPbmx5IHZvaXRpbmcgY2FuIGNhbGwgdGhpcyBmdW5jdGlvbgQNJHQwMzg1NzczODY3MQkBCWNsYWltQ2FsYwIFBHBvb2wFBHVzZXIEDGZhcm1JbnRlcmVzdAgFDSR0MDM4NTc3Mzg2NzECXzEEDWJvb3N0SW50ZXJlc3QIBQ0kdDAzODU3NzM4NjcxAl8yBAtjbGFpbUFtb3VudAgFDSR0MDM4NTc3Mzg2NzECXzMECnRvVHJlYXN1cmUIBQ0kdDAzODU3NzM4NjcxAl80BAp0ZWFtUmV3YXJkCAUNJHQwMzg1NzczODY3MQJfNQQRYXZhaWxhYmxlRnVuZHNOZXcJAGQCCQERdXNlckF2YWlsYWJsZVNXT1ACBQRwb29sBQR1c2VyBQtjbGFpbUFtb3VudAkAzAgCCQEMSW50ZWdlckVudHJ5AgkArAICCQCsAgIJAKwCAgUEcG9vbAIBXwUEdXNlcgUVa0Zhcm1Vc2VyTGFzdEludGVyZXN0BQxmYXJtSW50ZXJlc3QJAMwIAgkBDEludGVnZXJFbnRyeQIJAKwCAgkArAICCQCsAgIFBHBvb2wCAV8FBHVzZXIFFmtCb29zdFVzZXJMYXN0SW50ZXJlc3QFDWJvb3N0SW50ZXJlc3QJAMwIAgkBDEludGVnZXJFbnRyeQIJAKwCAgUEcG9vbAURa0Zhcm1MYXN0SW50ZXJlc3QFDGZhcm1JbnRlcmVzdAkAzAgCCQEMSW50ZWdlckVudHJ5AgkArAICBQRwb29sBRJrQm9vc3RMYXN0SW50ZXJlc3QFDWJvb3N0SW50ZXJlc3QJAMwIAgkBDEludGVnZXJFbnRyeQIJAKwCAgUEcG9vbAUTa0xhc3RJbnRlcmVzdEhlaWdodAUGaGVpZ2h0CQDMCAIJAQxJbnRlZ2VyRW50cnkCCQCsAgIJAKwCAgkArAICBQRwb29sAgFfBQR1c2VyBQ5rQXZhaWxhYmxlU1dPUAURYXZhaWxhYmxlRnVuZHNOZXcJAMwIAgkBB1JlaXNzdWUDBQRTV09QCQBkAgUKdG9UcmVhc3VyZQUKdGVhbVJld2FyZAYJAMwIAgkBDlNjcmlwdFRyYW5zZmVyAwUTZmFybWluZ1RyZWFzdXJlQWRkcgUKdG9UcmVhc3VyZQUEU1dPUAkAzAgCCQEOU2NyaXB0VHJhbnNmZXIDBQ50ZWFtQm94QWRkcmVzcwUKdGVhbVJld2FyZAUEU1dPUAUDbmlsAWkBCHNodXRkb3duAAkBC3ZhbHVlT3JFbHNlAgkBC2lzQWRtaW5DYWxsAQUBaQMJAQEhAQUGYWN0aXZlCQACAQkArAICAiJEQXBwIGlzIGFscmVhZHkgc3VzcGVuZGVkLiBDYXVzZTogCQELdmFsdWVPckVsc2UCCQCdCAIFBHRoaXMFBmtDYXVzZQIadGhlIGNhdXNlIHdhc24ndCBzcGVjaWZpZWQJAQdzdXNwZW5kAQIPUGF1c2VkIGJ5IGFkbWluAWkBCGFjdGl2YXRlAAkBC3ZhbHVlT3JFbHNlAgkBC2lzQWRtaW5DYWxsAQUBaQMFBmFjdGl2ZQkAAgECFkRBcHAgaXMgYWxyZWFkeSBhY3RpdmUJAMwIAgkBDEJvb2xlYW5FbnRyeQIFB2tBY3RpdmUGCQDMCAIJAQtEZWxldGVFbnRyeQEFBmtDYXVzZQUDbmlsAQJ0eAEGdmVyaWZ5AAQHJG1hdGNoMAUCdHgEEmFkbWluUHViS2V5MVNpZ25lZAMJAPQDAwgFAnR4CWJvZHlCeXRlcwkAkQMCCAUCdHgGcHJvb2ZzAAAFDGFkbWluUHViS2V5MQABAAAEEmFkbWluUHViS2V5MlNpZ25lZAMJAPQDAwgFAnR4CWJvZHlCeXRlcwkAkQMCCAUCdHgGcHJvb2ZzAAEFDGFkbWluUHViS2V5MgABAAAEEmFkbWluUHViS2V5M1NpZ25lZAMJAPQDAwgFAnR4CWJvZHlCeXRlcwkAkQMCCAUCdHgGcHJvb2ZzAAIFDGFkbWluUHViS2V5MwABAAAJAGcCCQBkAgkAZAIFEmFkbWluUHViS2V5MVNpZ25lZAUSYWRtaW5QdWJLZXkyU2lnbmVkBRJhZG1pblB1YktleTNTaWduZWQAAl7Za14=", "height": 2714503, "applicationStatus": "succeeded", "spentComplexity": 0 } View: original | compacted Prev: 5uVntR9kpZ69bPn5GWmWVsVgFkoycLi1R5wH4UdgpUvv Next: 3hHUTTcJbRMnH3YvGipvoZgsiKJW4T6gZW8vks7fbrpw Diff:
OldNewDifferences
9393
9494 let T = "farming_treasure"
9595
96-let U = Address(base58'3MvVBtsXroQpy1tsPw21TU2ET9A8WfmrNjz')
96+let U = "axly_farming"
9797
98-let V = 10000000000
98+let V = "axly_lp_id"
9999
100-let W = 100000000
100+let W = Address(base58'3MvVBtsXroQpy1tsPw21TU2ET9A8WfmrNjz')
101101
102-let X = 1000000
102+let X = 10000000000
103103
104-let Y = 1000
104+let Y = 100000000
105105
106-let Z = 500
106+let Z = 1000000
107107
108-let aa = 2976848
108+let aa = 1000
109109
110-let ab = 100000000000000
110+let ab = 500
111111
112-let ac = 526330
112+let ac = 2976848
113113
114-let ad = 25
114+let ad = 100000000000000
115115
116-func ae (af) = {
117- let ag = getString(U, af)
118- if ($isInstanceOf(ag, "String"))
116+let ae = 526330
117+
118+let af = 25
119+
120+func ag (ah) = {
121+ let ai = getString(W, ah)
122+ if ($isInstanceOf(ai, "String"))
119123 then {
120- let ah = ag
121- fromBase58String(ah)
124+ let aj = ai
125+ fromBase58String(aj)
122126 }
123127 else {
124- let ai = ag
125- throw((af + "is empty"))
128+ let ak = ai
129+ throw((ah + "is empty"))
126130 }
127131 }
128132
129133
130-let aj = ae(K)
134+let al = ag(K)
131135
132-let ak = ae(L)
136+let am = ag(L)
133137
134-let al = ae(M)
138+let an = ag(M)
135139
136-let am = Address(ae(O))
140+let ao = Address(ag(O))
137141
138-let an = Address(ae(P))
142+let ap = Address(ag(P))
139143
140-let ao = Address(ae(Q))
144+let aq = Address(ag(Q))
141145
142-let ap = Address(ae(R))
146+let ar = Address(ag(R))
143147
144-let aq = ae(N)
148+let as = ag(N)
145149
146-let ar = Address(ae(S))
150+let at = Address(ag(S))
147151
148-let as = Address(ae(T))
152+let au = Address(ag(T))
149153
150-let at = Address(ae(J))
154+let av = Address(ag(J))
151155
152-let au = getBooleanValue(this, a)
156+let aw = Address(ag(U))
153157
154-let av = valueOrElse(getBoolean(U, b), true)
158+let ax = ag(V)
155159
156-let aw = fromBase58String(getStringValue(this, x))
160+let ay = getBooleanValue(this, a)
157161
158-func ax () = {
159- let ay = ((height - aa) / ac)
160- func az (aA,aB) = {
161- let aC = aA
162- let aD = aC._1
163- let aE = aC._2
164- if ((ay > aB))
165- then $Tuple2(fraction(aD, 75, 100), aD)
166- else $Tuple2(aD, aE)
162+let az = valueOrElse(getBoolean(W, b), true)
163+
164+let aA = fromBase58String(getStringValue(this, x))
165+
166+func aB () = {
167+ let aC = ((height - ac) / ae)
168+ func aD (aE,aF) = {
169+ let aG = aE
170+ let aH = aG._1
171+ let aI = aG._2
172+ if ((aC > aF))
173+ then $Tuple2(fraction(aH, 75, 100), aH)
174+ else $Tuple2(aH, aI)
167175 }
168176
169- let aF = {
170- let aG = [0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19]
171- let aH = size(aG)
172- let aI = $Tuple2(ab, ab)
173- func aJ (aK,aL) = if ((aL >= aH))
174- then aK
175- else az(aK, aG[aL])
177+ let aJ = {
178+ let aK = [0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19]
179+ let aL = size(aK)
180+ let aM = $Tuple2(ad, ad)
181+ func aN (aO,aP) = if ((aP >= aL))
182+ then aO
183+ else aD(aO, aK[aP])
176184
177- func aM (aK,aL) = if ((aL >= aH))
178- then aK
185+ func aQ (aO,aP) = if ((aP >= aL))
186+ then aO
179187 else throw("List size exceeds 20")
180188
181- aM(aJ(aJ(aJ(aJ(aJ(aJ(aJ(aJ(aJ(aJ(aJ(aJ(aJ(aJ(aJ(aJ(aJ(aJ(aJ(aJ(aI, 0), 1), 2), 3), 4), 5), 6), 7), 8), 9), 10), 11), 12), 13), 14), 15), 16), 17), 18), 19), 20)
189+ aQ(aN(aN(aN(aN(aN(aN(aN(aN(aN(aN(aN(aN(aN(aN(aN(aN(aN(aN(aN(aN(aM, 0), 1), 2), 3), 4), 5), 6), 7), 8), 9), 10), 11), 12), 13), 14), 15), 16), 17), 18), 19), 20)
182190 }
183- let aD = aF._1
184- let aE = aF._2
185- $Tuple3((aD / ac), (aE / ac), (aa + (ac * ay)))
191+ let aH = aJ._1
192+ let aI = aJ._2
193+ $Tuple3((aH / ae), (aI / ae), (ac + (ae * aC)))
186194 }
187195
188196
189-func aN (aO) = valueOrElse(getInteger(Address(fromBase58String(aO)), F), 0)
197+func aR (aS) = valueOrElse(getInteger(Address(fromBase58String(aS)), F), 0)
190198
191199
192-func aP (aO) = valueOrErrorMessage(getInteger(aO, G), ("No data on the key: " + G))
200+func aT (aS) = valueOrErrorMessage(getInteger(aS, G), ("No data on the key: " + G))
193201
194202
195-func aQ (aO) = valueOrErrorMessage(getInteger(this, (aO + n)), (("No data on the key: " + aO) + n))
203+func aU (aS) = valueOrErrorMessage(getInteger(this, (aS + n)), (("No data on the key: " + aS) + n))
196204
197205
198-func aR (aO) = valueOrElse(getInteger(ao, (aO + A)), valueOrElse(parseInt(split(valueOrElse(getString(ao, (aO + C)), ""), "_")[0]), 0))
206+func aV (aS) = valueOrElse(getInteger(aq, (aS + A)), valueOrElse(parseInt(split(valueOrElse(getString(aq, (aS + C)), ""), "_")[0]), 0))
199207
200208
201-func aS (aO,aT) = valueOrElse(getInteger(ao, (((aT + "_") + aO) + B)), valueOrElse(parseInt(split(valueOrElse(getString(ao, (((aT + "_") + aO) + D)), ""), "_")[0]), 0))
209+func aW (aS,aX) = valueOrElse(getInteger(aq, (((aX + "_") + aS) + B)), valueOrElse(parseInt(split(valueOrElse(getString(aq, (((aX + "_") + aS) + D)), ""), "_")[0]), 0))
202210
203211
204-func aU (aO) = fromBase58String(getStringValue(value(addressFromString(aO)), "share_asset_id"))
212+func aY (aS) = fromBase58String(getStringValue(value(addressFromString(aS)), "share_asset_id"))
205213
206214
207-func aV (aW) = {
208- let ag = aW
209- if ($isInstanceOf(ag, "ByteVector"))
215+func aZ (ba) = {
216+ let ai = ba
217+ if ($isInstanceOf(ai, "ByteVector"))
210218 then {
211- let aX = ag
212- assetBalance(this, aX)
219+ let bb = ai
220+ assetBalance(this, bb)
213221 }
214- else if ($isInstanceOf(ag, "Unit"))
222+ else if ($isInstanceOf(ai, "Unit"))
215223 then {
216- let aY = ag
224+ let bc = ai
217225 wavesBalance(this).available
218226 }
219227 else throw("Match error")
220228 }
221229
222230
223-func aZ (ba,bb) = {
224- let bc = value(assetInfo(ba)).decimals
225- let bd = value(assetInfo(bb)).decimals
226- let be = ((bd - bc) + 8)
227- pow(10, 0, be, 0, 0, DOWN)
231+func bd (be,bf) = {
232+ let bg = value(assetInfo(be)).decimals
233+ let bh = value(assetInfo(bf)).decimals
234+ let bi = ((bh - bg) + 8)
235+ pow(10, 0, bi, 0, 0, DOWN)
228236 }
229237
230238
231-func bf (aO,aT) = valueOrElse(getInteger(this, (((aO + "_") + aT) + y)), 0)
239+func bj (aS,aX) = valueOrElse(getInteger(this, (((aS + "_") + aX) + y)), 0)
232240
233241
234-func bg (aO) = {
235- let bh = ax()
236- let bi = bh._1
237- let bj = bh._2
238- let bk = bh._3
239- let bl = valueOrErrorMessage(getInteger(ap, (aO + e)), (((("No data on the key: " + aO) + e) + " at address ") + toString(ap)))
240- let bm = valueOrErrorMessage(getInteger(ap, h), ((("No data on the key: " + h) + " at address ") + toString(ap)))
241- let bn = valueOrElse(getInteger(ap, (aO + g)), bm)
242- let bo = valueOrErrorMessage(getInteger(ap, (aO + f)), (((("No data on the key: " + aO) + f) + " at address ") + toString(ap)))
243- let bp = fraction(bi, bl, V)
244- let bq = fraction(bi, bo, V)
245- let br = fraction(bj, bl, V)
246- let bs = fraction(bj, bo, V)
247- if (if ((bp > bi))
242+func bk (aS) = {
243+ let bl = aB()
244+ let bm = bl._1
245+ let bn = bl._2
246+ let bo = bl._3
247+ let bp = valueOrErrorMessage(getInteger(ar, (aS + e)), (((("No data on the key: " + aS) + e) + " at address ") + toString(ar)))
248+ let bq = valueOrErrorMessage(getInteger(ar, h), ((("No data on the key: " + h) + " at address ") + toString(ar)))
249+ let br = valueOrElse(getInteger(ar, (aS + g)), bq)
250+ let bs = valueOrErrorMessage(getInteger(ar, (aS + f)), (((("No data on the key: " + aS) + f) + " at address ") + toString(ar)))
251+ let bt = fraction(bm, bp, X)
252+ let bu = fraction(bm, bs, X)
253+ let bv = fraction(bn, bp, X)
254+ let bw = fraction(bn, bs, X)
255+ if (if ((bt > bm))
248256 then true
249- else (bq > bj))
257+ else (bu > bn))
250258 then throw("rewardPoolCurrent > totalRewardPerBlockCurrent or rewardPoolPrevious > totalRewardPerBlockPrevious")
251- else $Tuple7(bp, bm, bq, bn, bk, br, bs)
259+ else $Tuple7(bt, bq, bu, br, bo, bv, bw)
252260 }
253261
254262
255-func bt (aO) = {
256- let bu = valueOrErrorMessage(getInteger(this, (aO + s)), (("No data on the key: " + aO) + s))
257- let bv = valueOrElse(getInteger(this, (aO + u)), 0)
258- let bw = valueOrElse(getInteger(this, (aO + w)), height)
259- $Tuple3(bw, bu, bv)
263+func bx (aS) = {
264+ let by = valueOrErrorMessage(getInteger(this, (aS + s)), (("No data on the key: " + aS) + s))
265+ let bz = valueOrElse(getInteger(this, (aS + u)), 0)
266+ let bA = valueOrElse(getInteger(this, (aS + w)), height)
267+ $Tuple3(bA, by, bz)
260268 }
261269
262270
263-func bx (aO,by) = {
264- let bz = valueOrElse(getInteger(this, (aO + r)), Z)
265- fraction(by, Y, (bz + Y))
271+func bB (aS,bC) = {
272+ let bD = valueOrElse(getInteger(this, (aS + r)), ab)
273+ fraction(bC, aa, (bD + aa))
266274 }
267275
268276
269-func bA (aO,by) = {
270- let bz = valueOrElse(getInteger(this, (aO + r)), Z)
271- fraction(by, bz, (bz + Y))
277+func bE (aS,bC) = {
278+ let bD = valueOrElse(getInteger(this, (aS + r)), ab)
279+ fraction(bC, bD, (bD + aa))
272280 }
273281
274282
275-func bB (aO,bw,bm,bn,bu,bv,bC,bD,bE,bF,bG,bH) = {
276- let bI = if (if (if ((bm > bH))
277- then (bm == bn)
283+func bF (aS,bA,bq,br,by,bz,bG,bH,bI,bJ,bK,bL) = {
284+ let bM = if (if (if ((bq > bL))
285+ then (bq == br)
278286 else false)
279287 then true
280- else if ((bH > bm))
281- then (bm != bn)
288+ else if ((bL > bq))
289+ then (bq != br)
282290 else false)
283291 then {
284- let bJ = (bF * (bH - bw))
285- $Tuple3(bJ, bu, bv)
292+ let bN = (bJ * (bL - bA))
293+ $Tuple3(bN, by, bz)
286294 }
287- else if (if (if ((bH > bm))
288- then (bm == bn)
295+ else if (if (if ((bL > bq))
296+ then (bq == br)
289297 else false)
290- then (bw > bm)
298+ then (bA > bq)
291299 else false)
292300 then {
293- let bJ = (bD * (bH - bw))
294- $Tuple3(bJ, bu, bv)
301+ let bN = (bH * (bL - bA))
302+ $Tuple3(bN, by, bz)
295303 }
296304 else {
297- let bK = (bF * (bm - bw))
298- let bL = (bu + fraction(bx(aO, bK), bG, bE))
299- let bM = (bv + (if ((bC > 0))
300- then fraction(bA(aO, bK), W, bC)
305+ let bO = (bJ * (bq - bA))
306+ let bP = (by + fraction(bB(aS, bO), bK, bI))
307+ let bQ = (bz + (if ((bG > 0))
308+ then fraction(bE(aS, bO), Y, bG)
301309 else 0))
302- let bN = (bD * (bH - bm))
303- $Tuple3(bN, bL, bM)
310+ let bR = (bH * (bL - bq))
311+ $Tuple3(bR, bP, bQ)
304312 }
305- let bO = bI._1
306- let bP = bI._2
307- let bQ = bI._3
308- let bR = (bP + fraction(bx(aO, bO), bG, bE))
309- let bS = (bQ + (if ((bC > 0))
310- then fraction(bA(aO, bO), W, bC)
313+ let bS = bM._1
314+ let bT = bM._2
315+ let bU = bM._3
316+ let bV = (bT + fraction(bB(aS, bS), bK, bI))
317+ let bW = (bU + (if ((bG > 0))
318+ then fraction(bE(aS, bS), Y, bG)
311319 else 0))
312- $Tuple2(bR, bS)
320+ $Tuple2(bV, bW)
313321 }
314322
315323
316-func bT (aO,aT) = {
317- let bG = aZ(aw, aU(aO))
318- let bC = aR(aO)
319- let bU = aS(aO, aT)
320- let bV = aQ(aO)
321- let bW = valueOrElse(getInteger(this, (aO + o)), bV)
322- let bX = valueOrElse(getInteger(this, (aO + H)), 0)
323- let bY = bt(aO)
324- let bw = bY._1
325- let bu = bY._2
326- let bv = bY._3
327- let bZ = bg(aO)
328- let bD = bZ._1
329- let bm = bZ._2
330- let bF = bZ._3
331- let bn = bZ._4
332- let ca = bZ._5
333- let cb = bZ._6
334- let cc = bZ._7
335- let cd = valueOrElse(getInteger(this, (((aO + "_") + aT) + t)), bu)
336- let ce = valueOrElse(getInteger(this, (((aO + "_") + aT) + v)), if (if ((bX > cd))
337- then (bU > 0)
324+func bX (aS,aX) = {
325+ let bK = bd(aA, aY(aS))
326+ let bG = aV(aS)
327+ let bY = aW(aS, aX)
328+ let bZ = aU(aS)
329+ let ca = valueOrElse(getInteger(this, (aS + o)), bZ)
330+ let cb = valueOrElse(getInteger(this, (aS + H)), 0)
331+ let cc = bx(aS)
332+ let bA = cc._1
333+ let by = cc._2
334+ let bz = cc._3
335+ let cd = bk(aS)
336+ let bH = cd._1
337+ let bq = cd._2
338+ let bJ = cd._3
339+ let br = cd._4
340+ let ce = cd._5
341+ let cf = cd._6
342+ let cg = cd._7
343+ let ch = valueOrElse(getInteger(this, (((aS + "_") + aX) + t)), by)
344+ let ci = valueOrElse(getInteger(this, (((aS + "_") + aX) + v)), if (if ((cb > ch))
345+ then (bY > 0)
338346 else false)
339347 then 0
340- else bv)
341- let cf = valueOrElse(getInteger(this, (((aO + "_") + aT) + i)), 0)
342- let cg = valueOrElse(getInteger(this, (((aO + "_") + aT) + m)), cf)
343- if ((bW == 0))
348+ else bz)
349+ let cj = valueOrElse(getInteger(this, (((aS + "_") + aX) + i)), 0)
350+ let ck = valueOrElse(getInteger(this, (((aS + "_") + aX) + m)), cj)
351+ if ((ca == 0))
344352 then {
345- let ch = if ((ca > bw))
346- then ((cb * (ca - bw)) + (bD * (height - ca)))
347- else (bD * (height - bw))
348- let ci = fraction(ch, ad, 100)
349- $Tuple5(bu, bv, 0, (ch - ci), ci)
353+ let cl = if ((ce > bA))
354+ then ((cf * (ce - bA)) + (bH * (height - ce)))
355+ else (bH * (height - bA))
356+ let cm = fraction(cl, af, 100)
357+ $Tuple5(by, bz, 0, (cl - cm), cm)
350358 }
351359 else {
352- let cj = if ((ca > bw))
360+ let cn = if ((ce > bA))
353361 then {
354- let ck = bB(aO, bw, bm, bn, bu, bv, bC, cb, bW, cc, bG, ca)
355- let cl = ck._1
356- let cm = ck._2
357- $Tuple3(cl, cm, ca)
362+ let co = bF(aS, bA, bq, br, by, bz, bG, cf, ca, cg, bK, ce)
363+ let cp = co._1
364+ let cq = co._2
365+ $Tuple3(cp, cq, ce)
358366 }
359- else $Tuple3(bu, bv, bw)
360- let cn = cj._1
361- let co = cj._2
362- let cp = cj._3
363- let cq = bB(aO, cp, bm, bn, cn, co, bC, bD, bW, bF, bG, height)
364- let bR = cq._1
365- let bS = cq._2
366- let cr = fraction(cg, (bR - cd), bG)
367- let bz = valueOrElse(getInteger(this, (aO + r)), Z)
368- let cs = fraction(fraction(cg, (bR - max([cd, bX])), bG), bz, Y)
369- let ct = fraction((bS - ce), bU, W)
370- let cu = min([cs, ct])
371- let ch = (cs - cu)
372- let ci = fraction(ch, ad, 100)
373- if ((0 > ch))
367+ else $Tuple3(by, bz, bA)
368+ let cr = cn._1
369+ let cs = cn._2
370+ let ct = cn._3
371+ let cu = bF(aS, ct, bq, br, cr, cs, bG, bH, ca, bJ, bK, height)
372+ let bV = cu._1
373+ let bW = cu._2
374+ let cv = fraction(ck, (bV - ch), bK)
375+ let bD = valueOrElse(getInteger(this, (aS + r)), ab)
376+ let cw = fraction(fraction(ck, (bV - max([ch, cb])), bK), bD, aa)
377+ let cx = fraction((bW - ci), bY, Y)
378+ let cy = min([cw, cx])
379+ let cl = (cw - cy)
380+ let cm = fraction(cl, af, 100)
381+ if ((0 > cl))
374382 then throw("toTreasury < 0")
375- else $Tuple5(bR, bS, (cr + cu), (ch - ci), ci)
383+ else $Tuple5(bV, bW, (cv + cy), (cl - cm), cm)
376384 }
377385 }
378386
379387
380-func cv (cw,aT) = {
381- func cx (aA,aO) = {
382- let cy = aA
383- let cz = cy._1
384- let cA = cy._2
385- let cB = bT(aO, aT)
386- let cC = cB._1
387- let cD = cB._2
388- let cE = cB._3
389- let cF = cB._4
390- let cG = (bf(aO, aT) + cE)
391- $Tuple2((cz :+ aO), (cA :+ cG))
388+func cz (cA,aX) = {
389+ func cB (aE,aS) = {
390+ let cC = aE
391+ let cD = cC._1
392+ let cE = cC._2
393+ let cF = bX(aS, aX)
394+ let cG = cF._1
395+ let cH = cF._2
396+ let cI = cF._3
397+ let cJ = cF._4
398+ let cK = (bj(aS, aX) + cI)
399+ $Tuple2((cD :+ aS), (cE :+ cK))
392400 }
393401
394- let aG = cw
395- let aH = size(aG)
396- let aI = $Tuple2(nil, nil)
397- func aJ (aK,aL) = if ((aL >= aH))
398- then aK
399- else cx(aK, aG[aL])
402+ let aK = cA
403+ let aL = size(aK)
404+ let aM = $Tuple2(nil, nil)
405+ func aN (aO,aP) = if ((aP >= aL))
406+ then aO
407+ else cB(aO, aK[aP])
400408
401- func aM (aK,aL) = if ((aL >= aH))
402- then aK
409+ func aQ (aO,aP) = if ((aP >= aL))
410+ then aO
403411 else throw("List size exceeds 60")
404412
405- aM(aJ(aJ(aJ(aJ(aJ(aJ(aJ(aJ(aJ(aJ(aJ(aJ(aJ(aJ(aJ(aJ(aJ(aJ(aJ(aJ(aJ(aJ(aJ(aJ(aJ(aJ(aJ(aJ(aJ(aJ(aJ(aJ(aJ(aJ(aJ(aJ(aJ(aJ(aJ(aJ(aJ(aJ(aJ(aJ(aJ(aJ(aJ(aJ(aJ(aJ(aJ(aJ(aJ(aJ(aJ(aJ(aJ(aJ(aJ(aJ(aI, 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)
413+ aQ(aN(aN(aN(aN(aN(aN(aN(aN(aN(aN(aN(aN(aN(aN(aN(aN(aN(aN(aN(aN(aN(aN(aN(aN(aN(aN(aN(aN(aN(aN(aN(aN(aN(aN(aN(aN(aN(aN(aN(aN(aN(aN(aN(aN(aN(aN(aN(aN(aN(aN(aN(aN(aN(aN(aN(aN(aN(aN(aN(aN(aM, 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)
406414 }
407415
408416
409-func cH (aO,aT,cI,cJ,cK) = if ((aN(aO) > height))
417+func cL (aS,aX,cM,cN,cO) = if ((aR(aS) > height))
410418 then {
411- let cL = valueOrElse(getInteger(ao, (aO + z)), 0)
412- let cM = valueOrElse(getInteger(ao, (((aT + "_") + aO) + E)), 0)
413- let cN = aP(addressFromStringValue(aO))
414- let cO = (fraction(cN, cM, cL) - cI)
415- if ((cK > 0))
419+ let cP = valueOrElse(getInteger(aq, (aS + z)), 0)
420+ let cQ = valueOrElse(getInteger(aq, (((aX + "_") + aS) + E)), 0)
421+ let cR = aT(addressFromStringValue(aS))
422+ let cS = (fraction(cR, cQ, cP) - cM)
423+ if ((cO > 0))
416424 then throw("You can't lock shareTokens till first harvest end.")
417- else if ((cM == 0))
425+ else if ((cQ == 0))
418426 then throw("You can't lock shareTokens. You didn't vote for pool in first week.")
419- else if ((cJ >= cO))
420- then (cJ - cO)
427+ else if ((cN >= cS))
428+ then (cN - cS)
421429 else 0
422430 }
423431 else 0
424432
425433
426-func cP (cQ) = {
427- let cR = split(valueOrErrorMessage(getString(this, (toString(cQ) + p)), ("There are no key for lock type" + toString(cQ))), "_")
428- $Tuple2(parseIntValue(cR[0]), parseIntValue(cR[1]))
434+func cT (cU) = {
435+ let cV = split(valueOrErrorMessage(getString(this, (toString(cU) + p)), ("There are no key for lock type" + toString(cU))), "_")
436+ $Tuple2(parseIntValue(cV[0]), parseIntValue(cV[1]))
429437 }
430438
431439
432-func cS (cT) = [BooleanEntry(a, false), StringEntry(d, cT)]
440+func cW (cX) = [BooleanEntry(a, false), StringEntry(d, cX)]
433441
434442
435-func cU () = if (if (au)
436- then av
443+func cY () = if (if (ay)
444+ then az
437445 else false)
438446 then unit
439447 else throw("DApp is inactive at this moment")
440448
441449
442-func cV (aB) = if (containsElement([aj, ak, al], aB.callerPublicKey))
450+func cZ (aF) = if (containsElement([al, am, an], aF.callerPublicKey))
443451 then unit
444452 else throw("Only admin can call this function")
445453
446454
447-func cW (aB,aO) = if (if ((toString(aB.caller) == aO))
455+func da (aF,aS) = if (if ((toString(aF.caller) == aS))
448456 then true
449- else (aB.caller == at))
457+ else (aF.caller == av))
450458 then unit
451459 else throw("Only pool can call this function")
452460
453461
454-func cX (aO) = valueOrElse(getBoolean(U, (c + aO)), false)
462+func db (aS) = valueOrElse(getBoolean(W, (c + aS)), false)
455463
456464
457-func cY (aO) = if (!(cX(aO)))
465+func dc (aS) = if (!(db(aS)))
458466 then unit
459467 else throw("Pool is deprecated. Only unlock action allowed.")
460468
461469
462-func cZ (aB) = if ((aB.caller == this))
470+func dd (aF) = if ((aF.caller == this))
463471 then unit
464472 else throw("Only contract itself can call this function")
465473
466474
467-func da (aB,db,aO,cK) = {
468- let dc = aU(aO)
469- let aT = toString(db)
470- let dd = aQ(aO)
471- let bW = valueOrElse(getInteger(this, (aO + o)), dd)
472- let de = valueOrElse(getInteger(this, (((aO + "_") + aT) + i)), 0)
473- let df = valueOrElse(getInteger(this, (((aO + "_") + aT) + l)), 0)
474- let dg = valueOrElse(getInteger(this, (((aO + "_") + aT) + j)), 0)
475- let dh = valueOrElse(getInteger(this, (((aO + "_") + aT) + m)), de)
476- let di = ((de + dg) + aB.payments[0].amount)
477- let dj = cP(cK)
478- let dk = dj._1
479- let dl = dj._2
480- let dm = getIntegerValue(this, q)
481- if ((aB.payments[0].assetId != dc))
475+func de (aF,df,aS,cO) = {
476+ let dg = if ((aF.payments[0].assetId == ax))
477+ then invoke(aw, "lpAction", nil, nil)
478+ else nil
479+ let dh = aY(aS)
480+ let aX = toString(df)
481+ let di = aU(aS)
482+ let ca = valueOrElse(getInteger(this, (aS + o)), di)
483+ let dj = valueOrElse(getInteger(this, (((aS + "_") + aX) + i)), 0)
484+ let dk = valueOrElse(getInteger(this, (((aS + "_") + aX) + l)), 0)
485+ let dl = valueOrElse(getInteger(this, (((aS + "_") + aX) + j)), 0)
486+ let dm = valueOrElse(getInteger(this, (((aS + "_") + aX) + m)), dj)
487+ let dn = ((dj + dl) + aF.payments[0].amount)
488+ let do = cT(cO)
489+ let dp = do._1
490+ let dq = do._2
491+ let dr = getIntegerValue(this, q)
492+ if ((aF.payments[0].assetId != dh))
482493 then throw("Wrong sharetoken in payment")
483- else if ((0 >= aB.payments[0].amount))
494+ else if ((0 >= aF.payments[0].amount))
484495 then throw("Payment amount must be greater than 0")
485- else if ((0 > cK))
496+ else if ((0 > cO))
486497 then throw("lockType must be >= 0")
487498 else {
488- let dn = cH(aO, aT, de, aB.payments[0].amount, cK)
489- if ((dn == dn))
499+ let ds = cL(aS, aX, dj, aF.payments[0].amount, cO)
500+ if ((ds == ds))
490501 then {
491- let do = if ((cK == 0))
502+ let dt = if ((cO == 0))
492503 then {
493- let dp = ((dh + aB.payments[0].amount) - dn)
494- $Tuple2([IntegerEntry((((aO + "_") + aT) + i), ((de + aB.payments[0].amount) - dn)), IntegerEntry((((aO + "_") + aT) + m), dp), IntegerEntry((aO + o), ((bW + aB.payments[0].amount) - dn)), ScriptTransfer(db, dn, aB.payments[0].assetId)], ((dd + aB.payments[0].amount) - dn))
504+ let du = ((dm + aF.payments[0].amount) - ds)
505+ $Tuple2([IntegerEntry((((aS + "_") + aX) + i), ((dj + aF.payments[0].amount) - ds)), IntegerEntry((((aS + "_") + aX) + m), du), IntegerEntry((aS + o), ((ca + aF.payments[0].amount) - ds)), ScriptTransfer(df, ds, aF.payments[0].assetId)], ((di + aF.payments[0].amount) - ds))
495506 }
496- else if (if ((df == 0))
497- then if (if ((2 > size(aB.payments)))
507+ else if (if ((dk == 0))
508+ then if (if ((2 > size(aF.payments)))
498509 then true
499- else (aB.payments[1].assetId != unit))
510+ else (aF.payments[1].assetId != unit))
500511 then true
501- else (dm > aB.payments[1].amount)
512+ else (dr > aF.payments[1].amount)
502513 else false)
503- then throw((("You need to pay additional waves comission " + toString(dm)) + "WAVES"))
504- else if ((df > (height + dk)))
514+ then throw((("You need to pay additional waves comission " + toString(dr)) + "WAVES"))
515+ else if ((dk > (height + dp)))
505516 then throw("You cannot lock sharetokens for a period less than what you have already locked")
506517 else {
507- let dq = (dg + aB.payments[0].amount)
508- let dr = (height + dk)
509- let dp = (fraction(dq, dl, Y) + de)
510- $Tuple2([IntegerEntry((((aO + "_") + aT) + j), dq), IntegerEntry((((aO + "_") + aT) + l), dr), IntegerEntry((((aO + "_") + aT) + k), cK), IntegerEntry((((aO + "_") + aT) + m), dp), IntegerEntry((aO + o), ((bW - dh) + dp))], (dd + aB.payments[0].amount))
518+ let dv = (dl + aF.payments[0].amount)
519+ let dw = (height + dp)
520+ let du = (fraction(dv, dq, aa) + dj)
521+ $Tuple2([IntegerEntry((((aS + "_") + aX) + j), dv), IntegerEntry((((aS + "_") + aX) + l), dw), IntegerEntry((((aS + "_") + aX) + k), cO), IntegerEntry((((aS + "_") + aX) + m), du), IntegerEntry((aS + o), ((ca - dm) + du))], (di + aF.payments[0].amount))
511522 }
512- let ds = do._1
513- let dt = do._2
514- if ((dt > aV(dc)))
523+ let dx = dt._1
524+ let dy = dt._2
525+ if ((dy > aZ(dh)))
515526 then throw("Balance of share-token is lower than totalAmount")
516527 else {
517- let du = bT(aO, aT)
518- let bu = du._1
519- let bv = du._2
520- let cE = du._3
521- let dv = du._4
522- let ci = du._5
523- let dw = (bf(aO, aT) + cE)
524- let dx = if ((getString(Address(fromBase58String(aO)), "version") == "3.0.0"))
525- then invoke(ar, "updateUserInterest", [aT, aO, di], nil)
528+ let dz = bX(aS, aX)
529+ let by = dz._1
530+ let bz = dz._2
531+ let cI = dz._3
532+ let dA = dz._4
533+ let cm = dz._5
534+ let dB = (bj(aS, aX) + cI)
535+ let dC = if ((getString(Address(fromBase58String(aS)), "version") == "3.0.0"))
536+ then invoke(at, "updateUserInterest", [aX, aS, dn], nil)
526537 else 0
527- if ((dx == dx))
528- then ([IntegerEntry((((aO + "_") + aT) + t), bu), IntegerEntry((((aO + "_") + aT) + v), bv), IntegerEntry((aO + s), bu), IntegerEntry((aO + u), bv), IntegerEntry((aO + w), height), IntegerEntry((aO + n), dt), IntegerEntry((((aO + "_") + aT) + y), dw), Reissue(aw, (dv + ci), true), ScriptTransfer(as, dv, aw), ScriptTransfer(an, ci, aw)] ++ ds)
538+ if ((dC == dC))
539+ then ([IntegerEntry((((aS + "_") + aX) + t), by), IntegerEntry((((aS + "_") + aX) + v), bz), IntegerEntry((aS + s), by), IntegerEntry((aS + u), bz), IntegerEntry((aS + w), height), IntegerEntry((aS + n), dy), IntegerEntry((((aS + "_") + aX) + y), dB), Reissue(aA, (dA + cm), true), ScriptTransfer(au, dA, aA), ScriptTransfer(ap, cm, aA)] ++ dx)
529540 else throw("Strict value is not equal to itself.")
530541 }
531542 }
534545 }
535546
536547
537-func dy (aB,db,aO,dz) = {
538- let dA = if (cX(aO))
539- then invoke(this, "unlockUserLockDeprecated", [aO, toString(db)], nil)
548+func dD (aF,df,aS,dE) = {
549+ let dg = if (db(aS))
550+ then invoke(this, "unlockUserLockDeprecated", [aS, toString(df)], nil)
540551 else 0
541- if ((dA == dA))
552+ if ((dg == dg))
542553 then {
543- let dB = fromBase58String(getStringValue(value(addressFromString(aO)), "share_asset_id"))
544- let aT = toString(db)
545- let dC = bT(aO, aT)
546- let bu = dC._1
547- let bv = dC._2
548- let cE = dC._3
549- let dv = dC._4
550- let ci = dC._5
551- let de = valueOrElse(getInteger(this, (((aO + "_") + aT) + i)), 0)
552- let dg = valueOrElse(getInteger(this, (((aO + "_") + aT) + j)), 0)
553- let dh = valueOrElse(getInteger(this, (((aO + "_") + aT) + m)), de)
554- let dD = (de - dz)
555- let dw = (bf(aO, aT) + cE)
556- let dE = aQ(aO)
557- let bW = valueOrElse(getInteger(this, (aO + o)), dE)
558- let dF = (dE - dz)
559- let dG = (bW - dz)
560- let dp = (dh - dz)
561- if ((dz > de))
554+ let dF = fromBase58String(getStringValue(value(addressFromString(aS)), "share_asset_id"))
555+ let dG = if ((dF == ax))
556+ then invoke(aw, "lpAction", nil, nil)
557+ else nil
558+ let aX = toString(df)
559+ let dH = bX(aS, aX)
560+ let by = dH._1
561+ let bz = dH._2
562+ let cI = dH._3
563+ let dA = dH._4
564+ let cm = dH._5
565+ let dj = valueOrElse(getInteger(this, (((aS + "_") + aX) + i)), 0)
566+ let dl = valueOrElse(getInteger(this, (((aS + "_") + aX) + j)), 0)
567+ let dm = valueOrElse(getInteger(this, (((aS + "_") + aX) + m)), dj)
568+ let dI = (dj - dE)
569+ let dB = (bj(aS, aX) + cI)
570+ let dJ = aU(aS)
571+ let ca = valueOrElse(getInteger(this, (aS + o)), dJ)
572+ let dK = (dJ - dE)
573+ let dL = (ca - dE)
574+ let du = (dm - dE)
575+ if ((dE > dj))
562576 then throw("Withdraw amount more then user locked amount")
563- else if ((aV(dB) > dE))
577+ else if ((aZ(dF) > dJ))
564578 then throw("Balance of share-token is lower than totalAmount")
565579 else {
566- let dx = if ((getString(Address(fromBase58String(aO)), "version") == "3.0.0"))
567- then invoke(ar, "updateUserInterest", [aT, aO, (de + dg)], nil)
580+ let dC = if ((getString(Address(fromBase58String(aS)), "version") == "3.0.0"))
581+ then invoke(at, "updateUserInterest", [aX, aS, (dj + dl)], nil)
568582 else 0
569- if ((dx == dx))
570- then [IntegerEntry((((aO + "_") + aT) + t), bu), IntegerEntry((((aO + "_") + aT) + v), bv), IntegerEntry((aO + s), bu), IntegerEntry((aO + u), bv), IntegerEntry((aO + w), height), IntegerEntry((((aO + "_") + aT) + i), dD), IntegerEntry((((aO + "_") + aT) + m), dp), IntegerEntry((aO + n), dF), IntegerEntry((aO + o), dG), IntegerEntry((((aO + "_") + aT) + y), dw), Reissue(aw, (dv + ci), true), ScriptTransfer(as, dv, aw), ScriptTransfer(an, ci, aw), ScriptTransfer(aB.caller, dz, dB)]
583+ if ((dC == dC))
584+ then [IntegerEntry((((aS + "_") + aX) + t), by), IntegerEntry((((aS + "_") + aX) + v), bz), IntegerEntry((aS + s), by), IntegerEntry((aS + u), bz), IntegerEntry((aS + w), height), IntegerEntry((((aS + "_") + aX) + i), dI), IntegerEntry((((aS + "_") + aX) + m), du), IntegerEntry((aS + n), dK), IntegerEntry((aS + o), dL), IntegerEntry((((aS + "_") + aX) + y), dB), Reissue(aA, dA, true), ScriptTransfer(au, dA, aA), ScriptTransfer(ap, cm, aA), ScriptTransfer(aF.caller, dE, dF)]
571585 else throw("Strict value is not equal to itself.")
572586 }
573587 }
575589 }
576590
577591
578-func dH (aB,aO,db) = {
579- let dB = fromBase58String(getStringValue(value(addressFromString(aO)), "share_asset_id"))
580- let aT = toString(db)
581- let bE = aQ(aO)
582- let dI = bT(aO, aT)
583- let bu = dI._1
584- let bv = dI._2
585- let cE = dI._3
586- let dv = dI._4
587- let ci = dI._5
588- let cG = (bf(aO, aT) + cE)
589- if ((aV(dB) > bE))
592+func dM (aF,aS,df) = {
593+ let dF = fromBase58String(getStringValue(value(addressFromString(aS)), "share_asset_id"))
594+ let aX = toString(df)
595+ let bI = aU(aS)
596+ let dN = bX(aS, aX)
597+ let by = dN._1
598+ let bz = dN._2
599+ let cI = dN._3
600+ let dA = dN._4
601+ let cm = dN._5
602+ let cK = (bj(aS, aX) + cI)
603+ if ((aZ(dF) > bI))
590604 then throw("Balance of share-token is lower than totalAmount")
591605 else {
592- let dJ = if ((aB.caller != this))
593- then [ScriptTransfer(aB.caller, cG, aw)]
606+ let dO = if ((aF.caller != this))
607+ then [ScriptTransfer(aF.caller, cK, aA)]
594608 else nil
595- $Tuple2(([IntegerEntry((((aO + "_") + aT) + t), bu), IntegerEntry((((aO + "_") + aT) + v), bv), IntegerEntry((aO + s), bu), IntegerEntry((aO + u), bv), IntegerEntry((aO + w), height), IntegerEntry((((aO + "_") + aT) + y), 0), Reissue(aw, ((dv + cG) + ci), true), ScriptTransfer(as, dv, aw), ScriptTransfer(an, ci, aw)] ++ dJ), cG)
609+ $Tuple2(([IntegerEntry((((aS + "_") + aX) + t), by), IntegerEntry((((aS + "_") + aX) + v), bz), IntegerEntry((aS + s), by), IntegerEntry((aS + u), bz), IntegerEntry((aS + w), height), IntegerEntry((((aS + "_") + aX) + y), 0), Reissue(aA, ((dA + cK) + cm), true), ScriptTransfer(au, dA, aA), ScriptTransfer(ap, cm, aA)] ++ dO), cK)
596610 }
597611 }
598612
599613
600-func dK (aB,aO,aT) = {
601- let bW = getIntegerValue(this, (aO + o))
602- let de = valueOrElse(getInteger(this, (((aO + "_") + aT) + i)), 0)
603- let dg = valueOrElse(getInteger(this, (((aO + "_") + aT) + j)), 0)
604- let dh = valueOrElse(getInteger(this, (((aO + "_") + aT) + m)), de)
605- let dD = (de + dg)
606- let dL = bT(aO, aT)
607- let bu = dL._1
608- let bv = dL._2
609- let cE = dL._3
610- let dv = dL._4
611- let ci = dL._5
612- let dw = (bf(aO, aT) + cE)
613-[IntegerEntry((((aO + "_") + aT) + t), bu), IntegerEntry((((aO + "_") + aT) + v), bv), IntegerEntry((aO + s), bu), IntegerEntry((aO + u), bv), IntegerEntry((aO + w), height), IntegerEntry((((aO + "_") + aT) + i), dD), IntegerEntry((((aO + "_") + aT) + m), dD), IntegerEntry((aO + o), ((bW - dh) + dD)), IntegerEntry((((aO + "_") + aT) + y), dw), DeleteEntry((((aO + "_") + aT) + j)), DeleteEntry((((aO + "_") + aT) + l)), DeleteEntry((((aO + "_") + aT) + k)), Reissue(aw, (dv + ci), true), ScriptTransfer(as, dv, aw), ScriptTransfer(an, ci, aw)]
614+func dP (aF,aS,aX) = {
615+ let ca = getIntegerValue(this, (aS + o))
616+ let dj = valueOrElse(getInteger(this, (((aS + "_") + aX) + i)), 0)
617+ let dl = valueOrElse(getInteger(this, (((aS + "_") + aX) + j)), 0)
618+ let dm = valueOrElse(getInteger(this, (((aS + "_") + aX) + m)), dj)
619+ let dI = (dj + dl)
620+ let dQ = bX(aS, aX)
621+ let by = dQ._1
622+ let bz = dQ._2
623+ let cI = dQ._3
624+ let dA = dQ._4
625+ let cm = dQ._5
626+ let dB = (bj(aS, aX) + cI)
627+[IntegerEntry((((aS + "_") + aX) + t), by), IntegerEntry((((aS + "_") + aX) + v), bz), IntegerEntry((aS + s), by), IntegerEntry((aS + u), bz), IntegerEntry((aS + w), height), IntegerEntry((((aS + "_") + aX) + i), dI), IntegerEntry((((aS + "_") + aX) + m), dI), IntegerEntry((aS + o), ((ca - dm) + dI)), IntegerEntry((((aS + "_") + aX) + y), dB), DeleteEntry((((aS + "_") + aX) + j)), DeleteEntry((((aS + "_") + aX) + l)), DeleteEntry((((aS + "_") + aX) + k)), Reissue(aA, (dA + cm), true), ScriptTransfer(au, dA, aA), ScriptTransfer(ap, cm, aA)]
614628 }
615629
616630
617-@Callable(aB)
618-func init (dM) = if (isDefined(getString(this, x)))
631+@Callable(aF)
632+func init (dR) = if (isDefined(getString(this, x)))
619633 then throw("SWOP already initialized")
620634 else {
621- let dN = 100000000000000
622- let dO = Issue("SWOP", "SWOP protocol token", dN, 8, true)
623- let dP = calculateAssetId(dO)
624-[BooleanEntry(a, true), Issue("SWOP", "SWOP protocol token", dN, 8, true), StringEntry(x, toBase58String(dP))]
635+ let dS = 100000000000000
636+ let dT = Issue("SWOP", "SWOP protocol token", dS, 8, true)
637+ let dU = calculateAssetId(dT)
638+[BooleanEntry(a, true), Issue("SWOP", "SWOP protocol token", dS, 8, true), StringEntry(x, toBase58String(dU))]
625639 }
626640
627641
628642
629-@Callable(aB)
630-func initPoolShareFarming (aO) = valueOrElse(cV(aB), if (!(isDefined(getString(U, (I + aO)))))
643+@Callable(aF)
644+func initPoolShareFarming (aS) = valueOrElse(cZ(aF), if (!(isDefined(getString(W, (I + aS)))))
631645 then throw("Pool is not in oracle")
632- else if (isDefined(getInteger(this, (aO + n))))
646+ else if (isDefined(getInteger(this, (aS + n))))
633647 then throw("Pool already inited")
634- else [IntegerEntry((aO + n), 0), IntegerEntry((aO + s), 0), IntegerEntry((aO + u), 0), IntegerEntry((aO + w), height)])
648+ else [IntegerEntry((aS + n), 0), IntegerEntry((aS + s), 0), IntegerEntry((aS + u), 0), IntegerEntry((aS + w), height)])
635649
636650
637651
638-@Callable(aB)
639-func updatePoolInterest (aO) = valueOrElse(cU(), if ((aB.caller != ap))
652+@Callable(aF)
653+func updatePoolInterest (aS) = valueOrElse(cY(), if ((aF.caller != ar))
640654 then throw("Only Governance can call this function")
641655 else {
642- let aT = toString(addressFromPublicKey(aq))
643- let dQ = bT(aO, aT)
644- let bu = dQ._1
645- let bv = dQ._2
646- let dR = dQ._3
647-[IntegerEntry((aO + s), bu), IntegerEntry((aO + u), bv), IntegerEntry((aO + w), height)]
656+ let aX = toString(addressFromPublicKey(as))
657+ let dV = bX(aS, aX)
658+ let by = dV._1
659+ let bz = dV._2
660+ let dW = dV._3
661+[IntegerEntry((aS + s), by), IntegerEntry((aS + u), bz), IntegerEntry((aS + w), height)]
648662 })
649663
650664
651665
652-@Callable(aB)
653-func lockShareTokens (aO,cK) = valueOrElse(cY(aO), valueOrElse(cU(), da(aB, aB.caller, aO, cK)))
666+@Callable(aF)
667+func lockShareTokens (aS,cO) = valueOrElse(dc(aS), valueOrElse(cY(), de(aF, aF.caller, aS, cO)))
654668
655669
656670
657-@Callable(aB)
658-func lockShareTokensFromPool (dS,aO,cK) = valueOrElse(cY(aO), valueOrElse(cU(), valueOrElse(cW(aB, aO), da(aB, Address(dS), aO, cK))))
671+@Callable(aF)
672+func lockShareTokensFromPool (dX,aS,cO) = valueOrElse(dc(aS), valueOrElse(cY(), valueOrElse(da(aF, aS), de(aF, Address(dX), aS, cO))))
659673
660674
661675
662-@Callable(aB)
663-func lockStakedShareTokens (aO,cK,dT) = valueOrElse(cY(aO), valueOrElse(cU(), {
664- let dc = aU(aO)
665- let aT = toString(aB.caller)
666- let dd = aQ(aO)
667- let bW = valueOrElse(getInteger(this, (aO + o)), dd)
668- let de = valueOrElse(getInteger(this, (((aO + "_") + aT) + i)), 0)
669- let df = valueOrElse(getInteger(this, (((aO + "_") + aT) + l)), 0)
670- let dg = valueOrElse(getInteger(this, (((aO + "_") + aT) + j)), 0)
671- let dh = valueOrElse(getInteger(this, (((aO + "_") + aT) + m)), de)
672- let di = (de + dg)
673- let dU = cP(cK)
674- let dk = dU._1
675- let dl = dU._2
676- let dm = getIntegerValue(this, q)
677- if ((aN(aO) > height))
676+@Callable(aF)
677+func lockStakedShareTokens (aS,cO,dY) = valueOrElse(dc(aS), valueOrElse(cY(), {
678+ let dh = aY(aS)
679+ let aX = toString(aF.caller)
680+ let di = aU(aS)
681+ let ca = valueOrElse(getInteger(this, (aS + o)), di)
682+ let dj = valueOrElse(getInteger(this, (((aS + "_") + aX) + i)), 0)
683+ let dk = valueOrElse(getInteger(this, (((aS + "_") + aX) + l)), 0)
684+ let dl = valueOrElse(getInteger(this, (((aS + "_") + aX) + j)), 0)
685+ let dm = valueOrElse(getInteger(this, (((aS + "_") + aX) + m)), dj)
686+ let dn = (dj + dl)
687+ let dZ = cT(cO)
688+ let dp = dZ._1
689+ let dq = dZ._2
690+ let dr = getIntegerValue(this, q)
691+ if ((aR(aS) > height))
678692 then throw("You can't lock shareTokens till first harvest end.")
679- else if ((0 >= cK))
693+ else if ((0 >= cO))
680694 then throw("lockType must be > 0")
681- else if ((dT > de))
682- then throw(("You can't lock more than " + toString(de)))
683- else if ((aV(dc) > dd))
695+ else if ((dY > dj))
696+ then throw(("You can't lock more than " + toString(dj)))
697+ else if ((aZ(dh) > di))
684698 then throw("Balance of share-token is lower than totalAmount")
685- else if (if ((df == 0))
686- then if (if ((1 > size(aB.payments)))
699+ else if (if ((dk == 0))
700+ then if (if ((1 > size(aF.payments)))
687701 then true
688- else (aB.payments[0].assetId != unit))
702+ else (aF.payments[0].assetId != unit))
689703 then true
690- else (dm > aB.payments[0].amount)
704+ else (dr > aF.payments[0].amount)
691705 else false)
692- then throw((("You need to pay additional waves comission " + toString(dm)) + "WAVES"))
693- else if (if ((df == 0))
694- then (0 >= dT)
706+ then throw((("You need to pay additional waves comission " + toString(dr)) + "WAVES"))
707+ else if (if ((dk == 0))
708+ then (0 >= dY)
695709 else false)
696710 then throw("lockAmount must be greater than 0")
697- else if ((0 > dT))
711+ else if ((0 > dY))
698712 then throw("lockAmount must be positive")
699- else if ((df > (height + dk)))
713+ else if ((dk > (height + dp)))
700714 then throw("You cannot lock sharetokens for a period less than what you have already locked")
701715 else {
702- let dq = (dg + dT)
703- let dD = (de - dT)
704- let dr = (height + dk)
705- let dp = (fraction(dq, dl, Y) + dD)
706- let dV = bT(aO, aT)
707- let bu = dV._1
708- let bv = dV._2
709- let cE = dV._3
710- let dv = dV._4
711- let ci = dV._5
712- let dw = (bf(aO, aT) + cE)
713-[IntegerEntry((((aO + "_") + aT) + i), dD), IntegerEntry((((aO + "_") + aT) + j), dq), IntegerEntry((((aO + "_") + aT) + l), dr), IntegerEntry((((aO + "_") + aT) + k), cK), IntegerEntry((((aO + "_") + aT) + m), dp), IntegerEntry((aO + o), ((bW - dh) + dp)), IntegerEntry((((aO + "_") + aT) + t), bu), IntegerEntry((((aO + "_") + aT) + v), bv), IntegerEntry((aO + s), bu), IntegerEntry((aO + u), bv), IntegerEntry((aO + w), height), IntegerEntry((((aO + "_") + aT) + y), dw), Reissue(aw, (dv + ci), true), ScriptTransfer(as, dv, aw), ScriptTransfer(an, ci, aw)]
716+ let dv = (dl + dY)
717+ let dI = (dj - dY)
718+ let dw = (height + dp)
719+ let du = (fraction(dv, dq, aa) + dI)
720+ let ea = bX(aS, aX)
721+ let by = ea._1
722+ let bz = ea._2
723+ let cI = ea._3
724+ let dA = ea._4
725+ let cm = ea._5
726+ let dB = (bj(aS, aX) + cI)
727+[IntegerEntry((((aS + "_") + aX) + i), dI), IntegerEntry((((aS + "_") + aX) + j), dv), IntegerEntry((((aS + "_") + aX) + l), dw), IntegerEntry((((aS + "_") + aX) + k), cO), IntegerEntry((((aS + "_") + aX) + m), du), IntegerEntry((aS + o), ((ca - dm) + du)), IntegerEntry((((aS + "_") + aX) + t), by), IntegerEntry((((aS + "_") + aX) + v), bz), IntegerEntry((aS + s), by), IntegerEntry((aS + u), bz), IntegerEntry((aS + w), height), IntegerEntry((((aS + "_") + aX) + y), dB), Reissue(aA, (dA + cm), true), ScriptTransfer(au, dA, aA), ScriptTransfer(ap, cm, aA)]
714728 }
715729 }))
716730
717731
718732
719-@Callable(aB)
720-func unlockUserLock (aO,aT) = valueOrElse(cU(), {
721- let df = valueOrErrorMessage(getInteger(this, (((aO + "_") + aT) + l)), (((("There is no pool " + aO) + " or user ") + aT) + "with lock"))
722- if ((df > height))
723- then throw(("You can't unlock sharetokens till " + toString(df)))
724- else (dK(aB, aO, aT) ++ [ScriptTransfer(aB.caller, getIntegerValue(this, q), unit)])
733+@Callable(aF)
734+func unlockUserLock (aS,aX) = valueOrElse(cY(), {
735+ let dk = valueOrErrorMessage(getInteger(this, (((aS + "_") + aX) + l)), (((("There is no pool " + aS) + " or user ") + aX) + "with lock"))
736+ if ((dk > height))
737+ then throw(("You can't unlock sharetokens till " + toString(dk)))
738+ else (dP(aF, aS, aX) ++ [ScriptTransfer(aF.caller, getIntegerValue(this, q), unit)])
725739 })
726740
727741
728742
729-@Callable(aB)
730-func unlockUserLockDeprecated (aO,aT) = valueOrElse(cU(), valueOrElse(cZ(aB), if (!(cX(aO)))
743+@Callable(aF)
744+func unlockUserLockDeprecated (aS,aX) = valueOrElse(cY(), valueOrElse(dd(aF), if (!(db(aS)))
731745 then throw("Pool must be deprecated")
732- else if (isDefined(getInteger(this, (((aO + "_") + aT) + l))))
733- then (dK(aB, aO, aT) ++ [ScriptTransfer(am, getIntegerValue(this, q), unit)])
746+ else if (isDefined(getInteger(this, (((aS + "_") + aX) + l))))
747+ then (dP(aF, aS, aX) ++ [ScriptTransfer(ao, getIntegerValue(this, q), unit)])
734748 else nil))
735749
736750
737751
738-@Callable(aB)
739-func withdrawShareTokens (aO,dz) = valueOrElse(cU(), dy(aB, aB.caller, aO, dz))
752+@Callable(aF)
753+func withdrawShareTokens (aS,dE) = valueOrElse(cY(), dD(aF, aF.caller, aS, dE))
740754
741755
742756
743-@Callable(aB)
744-func withdrawShareTokensFromPool (dS,aO,dz) = valueOrElse(cU(), valueOrElse(cW(aB, aO), dy(aB, Address(dS), aO, dz)))
757+@Callable(aF)
758+func withdrawShareTokensFromPool (dX,aS,dE) = valueOrElse(cY(), valueOrElse(da(aF, aS), dD(aF, Address(dX), aS, dE)))
745759
746760
747761
748-@Callable(aB)
749-func claim (aO) = valueOrElse(cU(), {
750- let bJ = dH(aB, aO, aB.caller)
751- if ((bJ._2 == 0))
762+@Callable(aF)
763+func claim (aS) = valueOrElse(cY(), {
764+ let bN = dM(aF, aS, aF.caller)
765+ if ((bN._2 == 0))
752766 then throw("You have 0 available SWOP")
753- else bJ
767+ else bN
754768 })
755769
756770
757771
758-@Callable(aB)
759-func claimInternal (aO,db) = valueOrElse(cU(), valueOrElse(cZ(aB), dH(aB, aO, Address(db))))
772+@Callable(aF)
773+func claimInternal (aS,df) = valueOrElse(cY(), valueOrElse(dd(aF), dM(aF, aS, Address(df))))
760774
761775
762776
763-@Callable(aB)
764-func claimAndStake (aO) = valueOrElse(cU(), {
765- let cE = {
766- let dW = invoke(this, "claimInternal", [aO, aB.caller.bytes], nil)
767- if ($isInstanceOf(dW, "Int"))
768- then dW
769- else throw(($getType(dW) + " couldn't be cast to Int"))
777+@Callable(aF)
778+func claimAndStake (aS) = valueOrElse(cY(), {
779+ let cI = {
780+ let eb = invoke(this, "claimInternal", [aS, aF.caller.bytes], nil)
781+ if ($isInstanceOf(eb, "Int"))
782+ then eb
783+ else throw(($getType(eb) + " couldn't be cast to Int"))
770784 }
771- if ((cE == cE))
772- then if ((cE == 0))
785+ if ((cI == cI))
786+ then if ((cI == 0))
773787 then throw("You have 0 available SWOP")
774788 else {
775- let dX = invoke(ap, "lockSWOPFromFarming", nil, [AttachedPayment(aw, cE)])
776- if ((dX == dX))
789+ let ec = invoke(ar, "lockSWOPFromFarming", nil, [AttachedPayment(aA, cI)])
790+ if ((ec == ec))
777791 then nil
778792 else throw("Strict value is not equal to itself.")
779793 }
782796
783797
784798
785-@Callable(aB)
786-func claimAll (cw) = valueOrElse(cU(), {
787- func dY (dZ,aO) = {
788- let cE = {
789- let dW = invoke(this, "claimInternal", [aO, aB.caller.bytes], nil)
790- if ($isInstanceOf(dW, "Int"))
791- then dW
792- else throw(($getType(dW) + " couldn't be cast to Int"))
799+@Callable(aF)
800+func claimAll (cA) = valueOrElse(cY(), {
801+ func ed (ee,aS) = {
802+ let cI = {
803+ let eb = invoke(this, "claimInternal", [aS, aF.caller.bytes], nil)
804+ if ($isInstanceOf(eb, "Int"))
805+ then eb
806+ else throw(($getType(eb) + " couldn't be cast to Int"))
793807 }
794- if ((cE == cE))
795- then (dZ + cE)
808+ if ((cI == cI))
809+ then (ee + cI)
796810 else throw("Strict value is not equal to itself.")
797811 }
798812
799- let dZ = {
800- let aG = cw
801- let aH = size(aG)
802- let aI = 0
803- func aJ (aK,aL) = if ((aL >= aH))
804- then aK
805- else dY(aK, aG[aL])
813+ let ee = {
814+ let aK = cA
815+ let aL = size(aK)
816+ let aM = 0
817+ func aN (aO,aP) = if ((aP >= aL))
818+ then aO
819+ else ed(aO, aK[aP])
806820
807- func aM (aK,aL) = if ((aL >= aH))
808- then aK
821+ func aQ (aO,aP) = if ((aP >= aL))
822+ then aO
809823 else throw("List size exceeds 60")
810824
811- aM(aJ(aJ(aJ(aJ(aJ(aJ(aJ(aJ(aJ(aJ(aJ(aJ(aJ(aJ(aJ(aJ(aJ(aJ(aJ(aJ(aJ(aJ(aJ(aJ(aJ(aJ(aJ(aJ(aJ(aJ(aJ(aJ(aJ(aJ(aJ(aJ(aJ(aJ(aJ(aJ(aJ(aJ(aJ(aJ(aJ(aJ(aJ(aJ(aJ(aJ(aJ(aJ(aJ(aJ(aJ(aJ(aJ(aJ(aJ(aJ(aI, 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)
825+ aQ(aN(aN(aN(aN(aN(aN(aN(aN(aN(aN(aN(aN(aN(aN(aN(aN(aN(aN(aN(aN(aN(aN(aN(aN(aN(aN(aN(aN(aN(aN(aN(aN(aN(aN(aN(aN(aN(aN(aN(aN(aN(aN(aN(aN(aN(aN(aN(aN(aN(aN(aN(aN(aN(aN(aN(aN(aN(aN(aN(aN(aM, 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)
812826 }
813- if ((dZ == 0))
827+ if ((ee == 0))
814828 then throw("You have 0 available SWOP")
815- else [ScriptTransfer(aB.caller, dZ, aw)]
829+ else [ScriptTransfer(aF.caller, ee, aA)]
816830 })
817831
818832
819833
820-@Callable(aB)
821-func claimAllAndStake (cw) = valueOrElse(cU(), {
822- func dY (dZ,aO) = {
823- let cE = {
824- let dW = invoke(this, "claimInternal", [aO, aB.caller.bytes], nil)
825- if ($isInstanceOf(dW, "Int"))
826- then dW
827- else throw(($getType(dW) + " couldn't be cast to Int"))
834+@Callable(aF)
835+func claimAllAndStake (cA) = valueOrElse(cY(), {
836+ func ed (ee,aS) = {
837+ let cI = {
838+ let eb = invoke(this, "claimInternal", [aS, aF.caller.bytes], nil)
839+ if ($isInstanceOf(eb, "Int"))
840+ then eb
841+ else throw(($getType(eb) + " couldn't be cast to Int"))
828842 }
829- if ((cE == cE))
830- then (dZ + cE)
843+ if ((cI == cI))
844+ then (ee + cI)
831845 else throw("Strict value is not equal to itself.")
832846 }
833847
834- let dZ = {
835- let aG = cw
836- let aH = size(aG)
837- let aI = 0
838- func aJ (aK,aL) = if ((aL >= aH))
839- then aK
840- else dY(aK, aG[aL])
848+ let ee = {
849+ let aK = cA
850+ let aL = size(aK)
851+ let aM = 0
852+ func aN (aO,aP) = if ((aP >= aL))
853+ then aO
854+ else ed(aO, aK[aP])
841855
842- func aM (aK,aL) = if ((aL >= aH))
843- then aK
856+ func aQ (aO,aP) = if ((aP >= aL))
857+ then aO
844858 else throw("List size exceeds 60")
845859
846- aM(aJ(aJ(aJ(aJ(aJ(aJ(aJ(aJ(aJ(aJ(aJ(aJ(aJ(aJ(aJ(aJ(aJ(aJ(aJ(aJ(aJ(aJ(aJ(aJ(aJ(aJ(aJ(aJ(aJ(aJ(aJ(aJ(aJ(aJ(aJ(aJ(aJ(aJ(aJ(aJ(aJ(aJ(aJ(aJ(aJ(aJ(aJ(aJ(aJ(aJ(aJ(aJ(aJ(aJ(aJ(aJ(aJ(aJ(aJ(aJ(aI, 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)
860+ aQ(aN(aN(aN(aN(aN(aN(aN(aN(aN(aN(aN(aN(aN(aN(aN(aN(aN(aN(aN(aN(aN(aN(aN(aN(aN(aN(aN(aN(aN(aN(aN(aN(aN(aN(aN(aN(aN(aN(aN(aN(aN(aN(aN(aN(aN(aN(aN(aN(aN(aN(aN(aN(aN(aN(aN(aN(aN(aN(aN(aN(aM, 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)
847861 }
848- if ((dZ == 0))
862+ if ((ee == 0))
849863 then throw("You have 0 available SWOP")
850864 else {
851- let dX = invoke(ap, "lockSWOPFromFarming", nil, [AttachedPayment(aw, dZ)])
852- if ((dX == dX))
865+ let ec = invoke(ar, "lockSWOPFromFarming", nil, [AttachedPayment(aA, ee)])
866+ if ((ec == ec))
853867 then nil
854868 else throw("Strict value is not equal to itself.")
855869 }
857871
858872
859873
860-@Callable(aB)
861-func updateUserBoostInterest (aO,aT) = valueOrElse(cU(), if ((aB.caller != ao))
874+@Callable(aF)
875+func updateUserBoostInterest (aS,aX) = valueOrElse(cY(), if ((aF.caller != aq))
862876 then throw("Only voiting can call this function")
863877 else {
864- let ea = bT(aO, aT)
865- let bu = ea._1
866- let bv = ea._2
867- let cE = ea._3
868- let dv = ea._4
869- let ci = ea._5
870- let dw = (bf(aO, aT) + cE)
871-[IntegerEntry((((aO + "_") + aT) + t), bu), IntegerEntry((((aO + "_") + aT) + v), bv), IntegerEntry((aO + s), bu), IntegerEntry((aO + u), bv), IntegerEntry((aO + w), height), IntegerEntry((((aO + "_") + aT) + y), dw), Reissue(aw, (dv + ci), true), ScriptTransfer(as, dv, aw), ScriptTransfer(an, ci, aw)]
878+ let ef = bX(aS, aX)
879+ let by = ef._1
880+ let bz = ef._2
881+ let cI = ef._3
882+ let dA = ef._4
883+ let cm = ef._5
884+ let dB = (bj(aS, aX) + cI)
885+[IntegerEntry((((aS + "_") + aX) + t), by), IntegerEntry((((aS + "_") + aX) + v), bz), IntegerEntry((aS + s), by), IntegerEntry((aS + u), bz), IntegerEntry((aS + w), height), IntegerEntry((((aS + "_") + aX) + y), dB), Reissue(aA, (dA + cm), true), ScriptTransfer(au, dA, aA), ScriptTransfer(ap, cm, aA)]
872886 })
873887
874888
875889
876-@Callable(aB)
877-func shutdown () = valueOrElse(cV(aB), if (!(au))
890+@Callable(aF)
891+func shutdown () = valueOrElse(cZ(aF), if (!(ay))
878892 then throw(("DApp is already suspended. Cause: " + valueOrElse(getString(this, d), "the cause wasn't specified")))
879- else cS("Paused by admin"))
893+ else cW("Paused by admin"))
880894
881895
882896
883-@Callable(aB)
884-func activate () = valueOrElse(cV(aB), if (au)
897+@Callable(aF)
898+func activate () = valueOrElse(cZ(aF), if (ay)
885899 then throw("DApp is already active")
886900 else [BooleanEntry(a, true), DeleteEntry(d)])
887901
888902
889-@Verifier(eb)
890-func ec () = {
891- let ag = eb
892- let ed = if (sigVerify(eb.bodyBytes, eb.proofs[0], aj))
903+@Verifier(eg)
904+func eh () = {
905+ let ai = eg
906+ let ei = if (sigVerify(eg.bodyBytes, eg.proofs[0], al))
893907 then 1
894908 else 0
895- let ee = if (sigVerify(eb.bodyBytes, eb.proofs[1], ak))
909+ let ej = if (sigVerify(eg.bodyBytes, eg.proofs[1], am))
896910 then 1
897911 else 0
898- let ef = if (sigVerify(eb.bodyBytes, eb.proofs[2], al))
912+ let ek = if (sigVerify(eg.bodyBytes, eg.proofs[2], an))
899913 then 1
900914 else 0
901- (((ed + ee) + ef) >= 2)
915+ (((ei + ej) + ek) >= 2)
902916 }
903917
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 = "deprecated_"
99
1010 let d = "shutdown_cause"
1111
1212 let e = "_current_pool_fraction_reward"
1313
1414 let f = "_previous_pool_fraction_reward"
1515
1616 let g = "_pool_reward_update_height"
1717
1818 let h = "reward_update_height"
1919
2020 let i = "_share_tokens_locked"
2121
2222 let j = "_share_tokens_blocked"
2323
2424 let k = "_share_tokens_blocked_type"
2525
2626 let l = "_share_tokens_blocked_height"
2727
2828 let m = "_share_tokens_virtual"
2929
3030 let n = "_total_share_tokens_locked"
3131
3232 let o = "_total_share_tokens_virtual"
3333
3434 let p = "_lock_params"
3535
3636 let q = "lock_waves_fee"
3737
3838 let r = "_boost_coef"
3939
4040 let s = "_last_interest"
4141
4242 let t = "_last_interest"
4343
4444 let u = "_last_interest_b"
4545
4646 let v = "_last_interest_u_b"
4747
4848 let w = "_last_interest_height"
4949
5050 let x = "SWOP_id"
5151
5252 let y = "_available_SWOP"
5353
5454 let z = "_harvest_pool_vote_gSWOP"
5555
5656 let A = "_pool_vote_gSWOP"
5757
5858 let B = "_user_vote_gSWOP"
5959
6060 let C = "_pool_struc"
6161
6262 let D = "_user_pool_struc"
6363
6464 let E = "_harvest_user_pool_vote_gSWOP"
6565
6666 let F = "first_harvest_height"
6767
6868 let G = "share_limit_on_first_harvest"
6969
7070 let H = "_strat_b_farm_interest"
7171
7272 let I = "pool_"
7373
7474 let J = "cpmm_contract"
7575
7676 let K = "admin_pub_1"
7777
7878 let L = "admin_pub_2"
7979
8080 let M = "admin_pub_3"
8181
8282 let N = "admin_invoke_pub"
8383
8484 let O = "money_box_address"
8585
8686 let P = "team_box_address"
8787
8888 let Q = "voting_address"
8989
9090 let R = "governance_address"
9191
9292 let S = "lp_farming"
9393
9494 let T = "farming_treasure"
9595
96-let U = Address(base58'3MvVBtsXroQpy1tsPw21TU2ET9A8WfmrNjz')
96+let U = "axly_farming"
9797
98-let V = 10000000000
98+let V = "axly_lp_id"
9999
100-let W = 100000000
100+let W = Address(base58'3MvVBtsXroQpy1tsPw21TU2ET9A8WfmrNjz')
101101
102-let X = 1000000
102+let X = 10000000000
103103
104-let Y = 1000
104+let Y = 100000000
105105
106-let Z = 500
106+let Z = 1000000
107107
108-let aa = 2976848
108+let aa = 1000
109109
110-let ab = 100000000000000
110+let ab = 500
111111
112-let ac = 526330
112+let ac = 2976848
113113
114-let ad = 25
114+let ad = 100000000000000
115115
116-func ae (af) = {
117- let ag = getString(U, af)
118- if ($isInstanceOf(ag, "String"))
116+let ae = 526330
117+
118+let af = 25
119+
120+func ag (ah) = {
121+ let ai = getString(W, ah)
122+ if ($isInstanceOf(ai, "String"))
119123 then {
120- let ah = ag
121- fromBase58String(ah)
124+ let aj = ai
125+ fromBase58String(aj)
122126 }
123127 else {
124- let ai = ag
125- throw((af + "is empty"))
128+ let ak = ai
129+ throw((ah + "is empty"))
126130 }
127131 }
128132
129133
130-let aj = ae(K)
134+let al = ag(K)
131135
132-let ak = ae(L)
136+let am = ag(L)
133137
134-let al = ae(M)
138+let an = ag(M)
135139
136-let am = Address(ae(O))
140+let ao = Address(ag(O))
137141
138-let an = Address(ae(P))
142+let ap = Address(ag(P))
139143
140-let ao = Address(ae(Q))
144+let aq = Address(ag(Q))
141145
142-let ap = Address(ae(R))
146+let ar = Address(ag(R))
143147
144-let aq = ae(N)
148+let as = ag(N)
145149
146-let ar = Address(ae(S))
150+let at = Address(ag(S))
147151
148-let as = Address(ae(T))
152+let au = Address(ag(T))
149153
150-let at = Address(ae(J))
154+let av = Address(ag(J))
151155
152-let au = getBooleanValue(this, a)
156+let aw = Address(ag(U))
153157
154-let av = valueOrElse(getBoolean(U, b), true)
158+let ax = ag(V)
155159
156-let aw = fromBase58String(getStringValue(this, x))
160+let ay = getBooleanValue(this, a)
157161
158-func ax () = {
159- let ay = ((height - aa) / ac)
160- func az (aA,aB) = {
161- let aC = aA
162- let aD = aC._1
163- let aE = aC._2
164- if ((ay > aB))
165- then $Tuple2(fraction(aD, 75, 100), aD)
166- else $Tuple2(aD, aE)
162+let az = valueOrElse(getBoolean(W, b), true)
163+
164+let aA = fromBase58String(getStringValue(this, x))
165+
166+func aB () = {
167+ let aC = ((height - ac) / ae)
168+ func aD (aE,aF) = {
169+ let aG = aE
170+ let aH = aG._1
171+ let aI = aG._2
172+ if ((aC > aF))
173+ then $Tuple2(fraction(aH, 75, 100), aH)
174+ else $Tuple2(aH, aI)
167175 }
168176
169- let aF = {
170- let aG = [0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19]
171- let aH = size(aG)
172- let aI = $Tuple2(ab, ab)
173- func aJ (aK,aL) = if ((aL >= aH))
174- then aK
175- else az(aK, aG[aL])
177+ let aJ = {
178+ let aK = [0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19]
179+ let aL = size(aK)
180+ let aM = $Tuple2(ad, ad)
181+ func aN (aO,aP) = if ((aP >= aL))
182+ then aO
183+ else aD(aO, aK[aP])
176184
177- func aM (aK,aL) = if ((aL >= aH))
178- then aK
185+ func aQ (aO,aP) = if ((aP >= aL))
186+ then aO
179187 else throw("List size exceeds 20")
180188
181- aM(aJ(aJ(aJ(aJ(aJ(aJ(aJ(aJ(aJ(aJ(aJ(aJ(aJ(aJ(aJ(aJ(aJ(aJ(aJ(aJ(aI, 0), 1), 2), 3), 4), 5), 6), 7), 8), 9), 10), 11), 12), 13), 14), 15), 16), 17), 18), 19), 20)
189+ aQ(aN(aN(aN(aN(aN(aN(aN(aN(aN(aN(aN(aN(aN(aN(aN(aN(aN(aN(aN(aN(aM, 0), 1), 2), 3), 4), 5), 6), 7), 8), 9), 10), 11), 12), 13), 14), 15), 16), 17), 18), 19), 20)
182190 }
183- let aD = aF._1
184- let aE = aF._2
185- $Tuple3((aD / ac), (aE / ac), (aa + (ac * ay)))
191+ let aH = aJ._1
192+ let aI = aJ._2
193+ $Tuple3((aH / ae), (aI / ae), (ac + (ae * aC)))
186194 }
187195
188196
189-func aN (aO) = valueOrElse(getInteger(Address(fromBase58String(aO)), F), 0)
197+func aR (aS) = valueOrElse(getInteger(Address(fromBase58String(aS)), F), 0)
190198
191199
192-func aP (aO) = valueOrErrorMessage(getInteger(aO, G), ("No data on the key: " + G))
200+func aT (aS) = valueOrErrorMessage(getInteger(aS, G), ("No data on the key: " + G))
193201
194202
195-func aQ (aO) = valueOrErrorMessage(getInteger(this, (aO + n)), (("No data on the key: " + aO) + n))
203+func aU (aS) = valueOrErrorMessage(getInteger(this, (aS + n)), (("No data on the key: " + aS) + n))
196204
197205
198-func aR (aO) = valueOrElse(getInteger(ao, (aO + A)), valueOrElse(parseInt(split(valueOrElse(getString(ao, (aO + C)), ""), "_")[0]), 0))
206+func aV (aS) = valueOrElse(getInteger(aq, (aS + A)), valueOrElse(parseInt(split(valueOrElse(getString(aq, (aS + C)), ""), "_")[0]), 0))
199207
200208
201-func aS (aO,aT) = valueOrElse(getInteger(ao, (((aT + "_") + aO) + B)), valueOrElse(parseInt(split(valueOrElse(getString(ao, (((aT + "_") + aO) + D)), ""), "_")[0]), 0))
209+func aW (aS,aX) = valueOrElse(getInteger(aq, (((aX + "_") + aS) + B)), valueOrElse(parseInt(split(valueOrElse(getString(aq, (((aX + "_") + aS) + D)), ""), "_")[0]), 0))
202210
203211
204-func aU (aO) = fromBase58String(getStringValue(value(addressFromString(aO)), "share_asset_id"))
212+func aY (aS) = fromBase58String(getStringValue(value(addressFromString(aS)), "share_asset_id"))
205213
206214
207-func aV (aW) = {
208- let ag = aW
209- if ($isInstanceOf(ag, "ByteVector"))
215+func aZ (ba) = {
216+ let ai = ba
217+ if ($isInstanceOf(ai, "ByteVector"))
210218 then {
211- let aX = ag
212- assetBalance(this, aX)
219+ let bb = ai
220+ assetBalance(this, bb)
213221 }
214- else if ($isInstanceOf(ag, "Unit"))
222+ else if ($isInstanceOf(ai, "Unit"))
215223 then {
216- let aY = ag
224+ let bc = ai
217225 wavesBalance(this).available
218226 }
219227 else throw("Match error")
220228 }
221229
222230
223-func aZ (ba,bb) = {
224- let bc = value(assetInfo(ba)).decimals
225- let bd = value(assetInfo(bb)).decimals
226- let be = ((bd - bc) + 8)
227- pow(10, 0, be, 0, 0, DOWN)
231+func bd (be,bf) = {
232+ let bg = value(assetInfo(be)).decimals
233+ let bh = value(assetInfo(bf)).decimals
234+ let bi = ((bh - bg) + 8)
235+ pow(10, 0, bi, 0, 0, DOWN)
228236 }
229237
230238
231-func bf (aO,aT) = valueOrElse(getInteger(this, (((aO + "_") + aT) + y)), 0)
239+func bj (aS,aX) = valueOrElse(getInteger(this, (((aS + "_") + aX) + y)), 0)
232240
233241
234-func bg (aO) = {
235- let bh = ax()
236- let bi = bh._1
237- let bj = bh._2
238- let bk = bh._3
239- let bl = valueOrErrorMessage(getInteger(ap, (aO + e)), (((("No data on the key: " + aO) + e) + " at address ") + toString(ap)))
240- let bm = valueOrErrorMessage(getInteger(ap, h), ((("No data on the key: " + h) + " at address ") + toString(ap)))
241- let bn = valueOrElse(getInteger(ap, (aO + g)), bm)
242- let bo = valueOrErrorMessage(getInteger(ap, (aO + f)), (((("No data on the key: " + aO) + f) + " at address ") + toString(ap)))
243- let bp = fraction(bi, bl, V)
244- let bq = fraction(bi, bo, V)
245- let br = fraction(bj, bl, V)
246- let bs = fraction(bj, bo, V)
247- if (if ((bp > bi))
242+func bk (aS) = {
243+ let bl = aB()
244+ let bm = bl._1
245+ let bn = bl._2
246+ let bo = bl._3
247+ let bp = valueOrErrorMessage(getInteger(ar, (aS + e)), (((("No data on the key: " + aS) + e) + " at address ") + toString(ar)))
248+ let bq = valueOrErrorMessage(getInteger(ar, h), ((("No data on the key: " + h) + " at address ") + toString(ar)))
249+ let br = valueOrElse(getInteger(ar, (aS + g)), bq)
250+ let bs = valueOrErrorMessage(getInteger(ar, (aS + f)), (((("No data on the key: " + aS) + f) + " at address ") + toString(ar)))
251+ let bt = fraction(bm, bp, X)
252+ let bu = fraction(bm, bs, X)
253+ let bv = fraction(bn, bp, X)
254+ let bw = fraction(bn, bs, X)
255+ if (if ((bt > bm))
248256 then true
249- else (bq > bj))
257+ else (bu > bn))
250258 then throw("rewardPoolCurrent > totalRewardPerBlockCurrent or rewardPoolPrevious > totalRewardPerBlockPrevious")
251- else $Tuple7(bp, bm, bq, bn, bk, br, bs)
259+ else $Tuple7(bt, bq, bu, br, bo, bv, bw)
252260 }
253261
254262
255-func bt (aO) = {
256- let bu = valueOrErrorMessage(getInteger(this, (aO + s)), (("No data on the key: " + aO) + s))
257- let bv = valueOrElse(getInteger(this, (aO + u)), 0)
258- let bw = valueOrElse(getInteger(this, (aO + w)), height)
259- $Tuple3(bw, bu, bv)
263+func bx (aS) = {
264+ let by = valueOrErrorMessage(getInteger(this, (aS + s)), (("No data on the key: " + aS) + s))
265+ let bz = valueOrElse(getInteger(this, (aS + u)), 0)
266+ let bA = valueOrElse(getInteger(this, (aS + w)), height)
267+ $Tuple3(bA, by, bz)
260268 }
261269
262270
263-func bx (aO,by) = {
264- let bz = valueOrElse(getInteger(this, (aO + r)), Z)
265- fraction(by, Y, (bz + Y))
271+func bB (aS,bC) = {
272+ let bD = valueOrElse(getInteger(this, (aS + r)), ab)
273+ fraction(bC, aa, (bD + aa))
266274 }
267275
268276
269-func bA (aO,by) = {
270- let bz = valueOrElse(getInteger(this, (aO + r)), Z)
271- fraction(by, bz, (bz + Y))
277+func bE (aS,bC) = {
278+ let bD = valueOrElse(getInteger(this, (aS + r)), ab)
279+ fraction(bC, bD, (bD + aa))
272280 }
273281
274282
275-func bB (aO,bw,bm,bn,bu,bv,bC,bD,bE,bF,bG,bH) = {
276- let bI = if (if (if ((bm > bH))
277- then (bm == bn)
283+func bF (aS,bA,bq,br,by,bz,bG,bH,bI,bJ,bK,bL) = {
284+ let bM = if (if (if ((bq > bL))
285+ then (bq == br)
278286 else false)
279287 then true
280- else if ((bH > bm))
281- then (bm != bn)
288+ else if ((bL > bq))
289+ then (bq != br)
282290 else false)
283291 then {
284- let bJ = (bF * (bH - bw))
285- $Tuple3(bJ, bu, bv)
292+ let bN = (bJ * (bL - bA))
293+ $Tuple3(bN, by, bz)
286294 }
287- else if (if (if ((bH > bm))
288- then (bm == bn)
295+ else if (if (if ((bL > bq))
296+ then (bq == br)
289297 else false)
290- then (bw > bm)
298+ then (bA > bq)
291299 else false)
292300 then {
293- let bJ = (bD * (bH - bw))
294- $Tuple3(bJ, bu, bv)
301+ let bN = (bH * (bL - bA))
302+ $Tuple3(bN, by, bz)
295303 }
296304 else {
297- let bK = (bF * (bm - bw))
298- let bL = (bu + fraction(bx(aO, bK), bG, bE))
299- let bM = (bv + (if ((bC > 0))
300- then fraction(bA(aO, bK), W, bC)
305+ let bO = (bJ * (bq - bA))
306+ let bP = (by + fraction(bB(aS, bO), bK, bI))
307+ let bQ = (bz + (if ((bG > 0))
308+ then fraction(bE(aS, bO), Y, bG)
301309 else 0))
302- let bN = (bD * (bH - bm))
303- $Tuple3(bN, bL, bM)
310+ let bR = (bH * (bL - bq))
311+ $Tuple3(bR, bP, bQ)
304312 }
305- let bO = bI._1
306- let bP = bI._2
307- let bQ = bI._3
308- let bR = (bP + fraction(bx(aO, bO), bG, bE))
309- let bS = (bQ + (if ((bC > 0))
310- then fraction(bA(aO, bO), W, bC)
313+ let bS = bM._1
314+ let bT = bM._2
315+ let bU = bM._3
316+ let bV = (bT + fraction(bB(aS, bS), bK, bI))
317+ let bW = (bU + (if ((bG > 0))
318+ then fraction(bE(aS, bS), Y, bG)
311319 else 0))
312- $Tuple2(bR, bS)
320+ $Tuple2(bV, bW)
313321 }
314322
315323
316-func bT (aO,aT) = {
317- let bG = aZ(aw, aU(aO))
318- let bC = aR(aO)
319- let bU = aS(aO, aT)
320- let bV = aQ(aO)
321- let bW = valueOrElse(getInteger(this, (aO + o)), bV)
322- let bX = valueOrElse(getInteger(this, (aO + H)), 0)
323- let bY = bt(aO)
324- let bw = bY._1
325- let bu = bY._2
326- let bv = bY._3
327- let bZ = bg(aO)
328- let bD = bZ._1
329- let bm = bZ._2
330- let bF = bZ._3
331- let bn = bZ._4
332- let ca = bZ._5
333- let cb = bZ._6
334- let cc = bZ._7
335- let cd = valueOrElse(getInteger(this, (((aO + "_") + aT) + t)), bu)
336- let ce = valueOrElse(getInteger(this, (((aO + "_") + aT) + v)), if (if ((bX > cd))
337- then (bU > 0)
324+func bX (aS,aX) = {
325+ let bK = bd(aA, aY(aS))
326+ let bG = aV(aS)
327+ let bY = aW(aS, aX)
328+ let bZ = aU(aS)
329+ let ca = valueOrElse(getInteger(this, (aS + o)), bZ)
330+ let cb = valueOrElse(getInteger(this, (aS + H)), 0)
331+ let cc = bx(aS)
332+ let bA = cc._1
333+ let by = cc._2
334+ let bz = cc._3
335+ let cd = bk(aS)
336+ let bH = cd._1
337+ let bq = cd._2
338+ let bJ = cd._3
339+ let br = cd._4
340+ let ce = cd._5
341+ let cf = cd._6
342+ let cg = cd._7
343+ let ch = valueOrElse(getInteger(this, (((aS + "_") + aX) + t)), by)
344+ let ci = valueOrElse(getInteger(this, (((aS + "_") + aX) + v)), if (if ((cb > ch))
345+ then (bY > 0)
338346 else false)
339347 then 0
340- else bv)
341- let cf = valueOrElse(getInteger(this, (((aO + "_") + aT) + i)), 0)
342- let cg = valueOrElse(getInteger(this, (((aO + "_") + aT) + m)), cf)
343- if ((bW == 0))
348+ else bz)
349+ let cj = valueOrElse(getInteger(this, (((aS + "_") + aX) + i)), 0)
350+ let ck = valueOrElse(getInteger(this, (((aS + "_") + aX) + m)), cj)
351+ if ((ca == 0))
344352 then {
345- let ch = if ((ca > bw))
346- then ((cb * (ca - bw)) + (bD * (height - ca)))
347- else (bD * (height - bw))
348- let ci = fraction(ch, ad, 100)
349- $Tuple5(bu, bv, 0, (ch - ci), ci)
353+ let cl = if ((ce > bA))
354+ then ((cf * (ce - bA)) + (bH * (height - ce)))
355+ else (bH * (height - bA))
356+ let cm = fraction(cl, af, 100)
357+ $Tuple5(by, bz, 0, (cl - cm), cm)
350358 }
351359 else {
352- let cj = if ((ca > bw))
360+ let cn = if ((ce > bA))
353361 then {
354- let ck = bB(aO, bw, bm, bn, bu, bv, bC, cb, bW, cc, bG, ca)
355- let cl = ck._1
356- let cm = ck._2
357- $Tuple3(cl, cm, ca)
362+ let co = bF(aS, bA, bq, br, by, bz, bG, cf, ca, cg, bK, ce)
363+ let cp = co._1
364+ let cq = co._2
365+ $Tuple3(cp, cq, ce)
358366 }
359- else $Tuple3(bu, bv, bw)
360- let cn = cj._1
361- let co = cj._2
362- let cp = cj._3
363- let cq = bB(aO, cp, bm, bn, cn, co, bC, bD, bW, bF, bG, height)
364- let bR = cq._1
365- let bS = cq._2
366- let cr = fraction(cg, (bR - cd), bG)
367- let bz = valueOrElse(getInteger(this, (aO + r)), Z)
368- let cs = fraction(fraction(cg, (bR - max([cd, bX])), bG), bz, Y)
369- let ct = fraction((bS - ce), bU, W)
370- let cu = min([cs, ct])
371- let ch = (cs - cu)
372- let ci = fraction(ch, ad, 100)
373- if ((0 > ch))
367+ else $Tuple3(by, bz, bA)
368+ let cr = cn._1
369+ let cs = cn._2
370+ let ct = cn._3
371+ let cu = bF(aS, ct, bq, br, cr, cs, bG, bH, ca, bJ, bK, height)
372+ let bV = cu._1
373+ let bW = cu._2
374+ let cv = fraction(ck, (bV - ch), bK)
375+ let bD = valueOrElse(getInteger(this, (aS + r)), ab)
376+ let cw = fraction(fraction(ck, (bV - max([ch, cb])), bK), bD, aa)
377+ let cx = fraction((bW - ci), bY, Y)
378+ let cy = min([cw, cx])
379+ let cl = (cw - cy)
380+ let cm = fraction(cl, af, 100)
381+ if ((0 > cl))
374382 then throw("toTreasury < 0")
375- else $Tuple5(bR, bS, (cr + cu), (ch - ci), ci)
383+ else $Tuple5(bV, bW, (cv + cy), (cl - cm), cm)
376384 }
377385 }
378386
379387
380-func cv (cw,aT) = {
381- func cx (aA,aO) = {
382- let cy = aA
383- let cz = cy._1
384- let cA = cy._2
385- let cB = bT(aO, aT)
386- let cC = cB._1
387- let cD = cB._2
388- let cE = cB._3
389- let cF = cB._4
390- let cG = (bf(aO, aT) + cE)
391- $Tuple2((cz :+ aO), (cA :+ cG))
388+func cz (cA,aX) = {
389+ func cB (aE,aS) = {
390+ let cC = aE
391+ let cD = cC._1
392+ let cE = cC._2
393+ let cF = bX(aS, aX)
394+ let cG = cF._1
395+ let cH = cF._2
396+ let cI = cF._3
397+ let cJ = cF._4
398+ let cK = (bj(aS, aX) + cI)
399+ $Tuple2((cD :+ aS), (cE :+ cK))
392400 }
393401
394- let aG = cw
395- let aH = size(aG)
396- let aI = $Tuple2(nil, nil)
397- func aJ (aK,aL) = if ((aL >= aH))
398- then aK
399- else cx(aK, aG[aL])
402+ let aK = cA
403+ let aL = size(aK)
404+ let aM = $Tuple2(nil, nil)
405+ func aN (aO,aP) = if ((aP >= aL))
406+ then aO
407+ else cB(aO, aK[aP])
400408
401- func aM (aK,aL) = if ((aL >= aH))
402- then aK
409+ func aQ (aO,aP) = if ((aP >= aL))
410+ then aO
403411 else throw("List size exceeds 60")
404412
405- aM(aJ(aJ(aJ(aJ(aJ(aJ(aJ(aJ(aJ(aJ(aJ(aJ(aJ(aJ(aJ(aJ(aJ(aJ(aJ(aJ(aJ(aJ(aJ(aJ(aJ(aJ(aJ(aJ(aJ(aJ(aJ(aJ(aJ(aJ(aJ(aJ(aJ(aJ(aJ(aJ(aJ(aJ(aJ(aJ(aJ(aJ(aJ(aJ(aJ(aJ(aJ(aJ(aJ(aJ(aJ(aJ(aJ(aJ(aJ(aJ(aI, 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)
413+ aQ(aN(aN(aN(aN(aN(aN(aN(aN(aN(aN(aN(aN(aN(aN(aN(aN(aN(aN(aN(aN(aN(aN(aN(aN(aN(aN(aN(aN(aN(aN(aN(aN(aN(aN(aN(aN(aN(aN(aN(aN(aN(aN(aN(aN(aN(aN(aN(aN(aN(aN(aN(aN(aN(aN(aN(aN(aN(aN(aN(aN(aM, 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)
406414 }
407415
408416
409-func cH (aO,aT,cI,cJ,cK) = if ((aN(aO) > height))
417+func cL (aS,aX,cM,cN,cO) = if ((aR(aS) > height))
410418 then {
411- let cL = valueOrElse(getInteger(ao, (aO + z)), 0)
412- let cM = valueOrElse(getInteger(ao, (((aT + "_") + aO) + E)), 0)
413- let cN = aP(addressFromStringValue(aO))
414- let cO = (fraction(cN, cM, cL) - cI)
415- if ((cK > 0))
419+ let cP = valueOrElse(getInteger(aq, (aS + z)), 0)
420+ let cQ = valueOrElse(getInteger(aq, (((aX + "_") + aS) + E)), 0)
421+ let cR = aT(addressFromStringValue(aS))
422+ let cS = (fraction(cR, cQ, cP) - cM)
423+ if ((cO > 0))
416424 then throw("You can't lock shareTokens till first harvest end.")
417- else if ((cM == 0))
425+ else if ((cQ == 0))
418426 then throw("You can't lock shareTokens. You didn't vote for pool in first week.")
419- else if ((cJ >= cO))
420- then (cJ - cO)
427+ else if ((cN >= cS))
428+ then (cN - cS)
421429 else 0
422430 }
423431 else 0
424432
425433
426-func cP (cQ) = {
427- let cR = split(valueOrErrorMessage(getString(this, (toString(cQ) + p)), ("There are no key for lock type" + toString(cQ))), "_")
428- $Tuple2(parseIntValue(cR[0]), parseIntValue(cR[1]))
434+func cT (cU) = {
435+ let cV = split(valueOrErrorMessage(getString(this, (toString(cU) + p)), ("There are no key for lock type" + toString(cU))), "_")
436+ $Tuple2(parseIntValue(cV[0]), parseIntValue(cV[1]))
429437 }
430438
431439
432-func cS (cT) = [BooleanEntry(a, false), StringEntry(d, cT)]
440+func cW (cX) = [BooleanEntry(a, false), StringEntry(d, cX)]
433441
434442
435-func cU () = if (if (au)
436- then av
443+func cY () = if (if (ay)
444+ then az
437445 else false)
438446 then unit
439447 else throw("DApp is inactive at this moment")
440448
441449
442-func cV (aB) = if (containsElement([aj, ak, al], aB.callerPublicKey))
450+func cZ (aF) = if (containsElement([al, am, an], aF.callerPublicKey))
443451 then unit
444452 else throw("Only admin can call this function")
445453
446454
447-func cW (aB,aO) = if (if ((toString(aB.caller) == aO))
455+func da (aF,aS) = if (if ((toString(aF.caller) == aS))
448456 then true
449- else (aB.caller == at))
457+ else (aF.caller == av))
450458 then unit
451459 else throw("Only pool can call this function")
452460
453461
454-func cX (aO) = valueOrElse(getBoolean(U, (c + aO)), false)
462+func db (aS) = valueOrElse(getBoolean(W, (c + aS)), false)
455463
456464
457-func cY (aO) = if (!(cX(aO)))
465+func dc (aS) = if (!(db(aS)))
458466 then unit
459467 else throw("Pool is deprecated. Only unlock action allowed.")
460468
461469
462-func cZ (aB) = if ((aB.caller == this))
470+func dd (aF) = if ((aF.caller == this))
463471 then unit
464472 else throw("Only contract itself can call this function")
465473
466474
467-func da (aB,db,aO,cK) = {
468- let dc = aU(aO)
469- let aT = toString(db)
470- let dd = aQ(aO)
471- let bW = valueOrElse(getInteger(this, (aO + o)), dd)
472- let de = valueOrElse(getInteger(this, (((aO + "_") + aT) + i)), 0)
473- let df = valueOrElse(getInteger(this, (((aO + "_") + aT) + l)), 0)
474- let dg = valueOrElse(getInteger(this, (((aO + "_") + aT) + j)), 0)
475- let dh = valueOrElse(getInteger(this, (((aO + "_") + aT) + m)), de)
476- let di = ((de + dg) + aB.payments[0].amount)
477- let dj = cP(cK)
478- let dk = dj._1
479- let dl = dj._2
480- let dm = getIntegerValue(this, q)
481- if ((aB.payments[0].assetId != dc))
475+func de (aF,df,aS,cO) = {
476+ let dg = if ((aF.payments[0].assetId == ax))
477+ then invoke(aw, "lpAction", nil, nil)
478+ else nil
479+ let dh = aY(aS)
480+ let aX = toString(df)
481+ let di = aU(aS)
482+ let ca = valueOrElse(getInteger(this, (aS + o)), di)
483+ let dj = valueOrElse(getInteger(this, (((aS + "_") + aX) + i)), 0)
484+ let dk = valueOrElse(getInteger(this, (((aS + "_") + aX) + l)), 0)
485+ let dl = valueOrElse(getInteger(this, (((aS + "_") + aX) + j)), 0)
486+ let dm = valueOrElse(getInteger(this, (((aS + "_") + aX) + m)), dj)
487+ let dn = ((dj + dl) + aF.payments[0].amount)
488+ let do = cT(cO)
489+ let dp = do._1
490+ let dq = do._2
491+ let dr = getIntegerValue(this, q)
492+ if ((aF.payments[0].assetId != dh))
482493 then throw("Wrong sharetoken in payment")
483- else if ((0 >= aB.payments[0].amount))
494+ else if ((0 >= aF.payments[0].amount))
484495 then throw("Payment amount must be greater than 0")
485- else if ((0 > cK))
496+ else if ((0 > cO))
486497 then throw("lockType must be >= 0")
487498 else {
488- let dn = cH(aO, aT, de, aB.payments[0].amount, cK)
489- if ((dn == dn))
499+ let ds = cL(aS, aX, dj, aF.payments[0].amount, cO)
500+ if ((ds == ds))
490501 then {
491- let do = if ((cK == 0))
502+ let dt = if ((cO == 0))
492503 then {
493- let dp = ((dh + aB.payments[0].amount) - dn)
494- $Tuple2([IntegerEntry((((aO + "_") + aT) + i), ((de + aB.payments[0].amount) - dn)), IntegerEntry((((aO + "_") + aT) + m), dp), IntegerEntry((aO + o), ((bW + aB.payments[0].amount) - dn)), ScriptTransfer(db, dn, aB.payments[0].assetId)], ((dd + aB.payments[0].amount) - dn))
504+ let du = ((dm + aF.payments[0].amount) - ds)
505+ $Tuple2([IntegerEntry((((aS + "_") + aX) + i), ((dj + aF.payments[0].amount) - ds)), IntegerEntry((((aS + "_") + aX) + m), du), IntegerEntry((aS + o), ((ca + aF.payments[0].amount) - ds)), ScriptTransfer(df, ds, aF.payments[0].assetId)], ((di + aF.payments[0].amount) - ds))
495506 }
496- else if (if ((df == 0))
497- then if (if ((2 > size(aB.payments)))
507+ else if (if ((dk == 0))
508+ then if (if ((2 > size(aF.payments)))
498509 then true
499- else (aB.payments[1].assetId != unit))
510+ else (aF.payments[1].assetId != unit))
500511 then true
501- else (dm > aB.payments[1].amount)
512+ else (dr > aF.payments[1].amount)
502513 else false)
503- then throw((("You need to pay additional waves comission " + toString(dm)) + "WAVES"))
504- else if ((df > (height + dk)))
514+ then throw((("You need to pay additional waves comission " + toString(dr)) + "WAVES"))
515+ else if ((dk > (height + dp)))
505516 then throw("You cannot lock sharetokens for a period less than what you have already locked")
506517 else {
507- let dq = (dg + aB.payments[0].amount)
508- let dr = (height + dk)
509- let dp = (fraction(dq, dl, Y) + de)
510- $Tuple2([IntegerEntry((((aO + "_") + aT) + j), dq), IntegerEntry((((aO + "_") + aT) + l), dr), IntegerEntry((((aO + "_") + aT) + k), cK), IntegerEntry((((aO + "_") + aT) + m), dp), IntegerEntry((aO + o), ((bW - dh) + dp))], (dd + aB.payments[0].amount))
518+ let dv = (dl + aF.payments[0].amount)
519+ let dw = (height + dp)
520+ let du = (fraction(dv, dq, aa) + dj)
521+ $Tuple2([IntegerEntry((((aS + "_") + aX) + j), dv), IntegerEntry((((aS + "_") + aX) + l), dw), IntegerEntry((((aS + "_") + aX) + k), cO), IntegerEntry((((aS + "_") + aX) + m), du), IntegerEntry((aS + o), ((ca - dm) + du))], (di + aF.payments[0].amount))
511522 }
512- let ds = do._1
513- let dt = do._2
514- if ((dt > aV(dc)))
523+ let dx = dt._1
524+ let dy = dt._2
525+ if ((dy > aZ(dh)))
515526 then throw("Balance of share-token is lower than totalAmount")
516527 else {
517- let du = bT(aO, aT)
518- let bu = du._1
519- let bv = du._2
520- let cE = du._3
521- let dv = du._4
522- let ci = du._5
523- let dw = (bf(aO, aT) + cE)
524- let dx = if ((getString(Address(fromBase58String(aO)), "version") == "3.0.0"))
525- then invoke(ar, "updateUserInterest", [aT, aO, di], nil)
528+ let dz = bX(aS, aX)
529+ let by = dz._1
530+ let bz = dz._2
531+ let cI = dz._3
532+ let dA = dz._4
533+ let cm = dz._5
534+ let dB = (bj(aS, aX) + cI)
535+ let dC = if ((getString(Address(fromBase58String(aS)), "version") == "3.0.0"))
536+ then invoke(at, "updateUserInterest", [aX, aS, dn], nil)
526537 else 0
527- if ((dx == dx))
528- then ([IntegerEntry((((aO + "_") + aT) + t), bu), IntegerEntry((((aO + "_") + aT) + v), bv), IntegerEntry((aO + s), bu), IntegerEntry((aO + u), bv), IntegerEntry((aO + w), height), IntegerEntry((aO + n), dt), IntegerEntry((((aO + "_") + aT) + y), dw), Reissue(aw, (dv + ci), true), ScriptTransfer(as, dv, aw), ScriptTransfer(an, ci, aw)] ++ ds)
538+ if ((dC == dC))
539+ then ([IntegerEntry((((aS + "_") + aX) + t), by), IntegerEntry((((aS + "_") + aX) + v), bz), IntegerEntry((aS + s), by), IntegerEntry((aS + u), bz), IntegerEntry((aS + w), height), IntegerEntry((aS + n), dy), IntegerEntry((((aS + "_") + aX) + y), dB), Reissue(aA, (dA + cm), true), ScriptTransfer(au, dA, aA), ScriptTransfer(ap, cm, aA)] ++ dx)
529540 else throw("Strict value is not equal to itself.")
530541 }
531542 }
532543 else throw("Strict value is not equal to itself.")
533544 }
534545 }
535546
536547
537-func dy (aB,db,aO,dz) = {
538- let dA = if (cX(aO))
539- then invoke(this, "unlockUserLockDeprecated", [aO, toString(db)], nil)
548+func dD (aF,df,aS,dE) = {
549+ let dg = if (db(aS))
550+ then invoke(this, "unlockUserLockDeprecated", [aS, toString(df)], nil)
540551 else 0
541- if ((dA == dA))
552+ if ((dg == dg))
542553 then {
543- let dB = fromBase58String(getStringValue(value(addressFromString(aO)), "share_asset_id"))
544- let aT = toString(db)
545- let dC = bT(aO, aT)
546- let bu = dC._1
547- let bv = dC._2
548- let cE = dC._3
549- let dv = dC._4
550- let ci = dC._5
551- let de = valueOrElse(getInteger(this, (((aO + "_") + aT) + i)), 0)
552- let dg = valueOrElse(getInteger(this, (((aO + "_") + aT) + j)), 0)
553- let dh = valueOrElse(getInteger(this, (((aO + "_") + aT) + m)), de)
554- let dD = (de - dz)
555- let dw = (bf(aO, aT) + cE)
556- let dE = aQ(aO)
557- let bW = valueOrElse(getInteger(this, (aO + o)), dE)
558- let dF = (dE - dz)
559- let dG = (bW - dz)
560- let dp = (dh - dz)
561- if ((dz > de))
554+ let dF = fromBase58String(getStringValue(value(addressFromString(aS)), "share_asset_id"))
555+ let dG = if ((dF == ax))
556+ then invoke(aw, "lpAction", nil, nil)
557+ else nil
558+ let aX = toString(df)
559+ let dH = bX(aS, aX)
560+ let by = dH._1
561+ let bz = dH._2
562+ let cI = dH._3
563+ let dA = dH._4
564+ let cm = dH._5
565+ let dj = valueOrElse(getInteger(this, (((aS + "_") + aX) + i)), 0)
566+ let dl = valueOrElse(getInteger(this, (((aS + "_") + aX) + j)), 0)
567+ let dm = valueOrElse(getInteger(this, (((aS + "_") + aX) + m)), dj)
568+ let dI = (dj - dE)
569+ let dB = (bj(aS, aX) + cI)
570+ let dJ = aU(aS)
571+ let ca = valueOrElse(getInteger(this, (aS + o)), dJ)
572+ let dK = (dJ - dE)
573+ let dL = (ca - dE)
574+ let du = (dm - dE)
575+ if ((dE > dj))
562576 then throw("Withdraw amount more then user locked amount")
563- else if ((aV(dB) > dE))
577+ else if ((aZ(dF) > dJ))
564578 then throw("Balance of share-token is lower than totalAmount")
565579 else {
566- let dx = if ((getString(Address(fromBase58String(aO)), "version") == "3.0.0"))
567- then invoke(ar, "updateUserInterest", [aT, aO, (de + dg)], nil)
580+ let dC = if ((getString(Address(fromBase58String(aS)), "version") == "3.0.0"))
581+ then invoke(at, "updateUserInterest", [aX, aS, (dj + dl)], nil)
568582 else 0
569- if ((dx == dx))
570- then [IntegerEntry((((aO + "_") + aT) + t), bu), IntegerEntry((((aO + "_") + aT) + v), bv), IntegerEntry((aO + s), bu), IntegerEntry((aO + u), bv), IntegerEntry((aO + w), height), IntegerEntry((((aO + "_") + aT) + i), dD), IntegerEntry((((aO + "_") + aT) + m), dp), IntegerEntry((aO + n), dF), IntegerEntry((aO + o), dG), IntegerEntry((((aO + "_") + aT) + y), dw), Reissue(aw, (dv + ci), true), ScriptTransfer(as, dv, aw), ScriptTransfer(an, ci, aw), ScriptTransfer(aB.caller, dz, dB)]
583+ if ((dC == dC))
584+ then [IntegerEntry((((aS + "_") + aX) + t), by), IntegerEntry((((aS + "_") + aX) + v), bz), IntegerEntry((aS + s), by), IntegerEntry((aS + u), bz), IntegerEntry((aS + w), height), IntegerEntry((((aS + "_") + aX) + i), dI), IntegerEntry((((aS + "_") + aX) + m), du), IntegerEntry((aS + n), dK), IntegerEntry((aS + o), dL), IntegerEntry((((aS + "_") + aX) + y), dB), Reissue(aA, dA, true), ScriptTransfer(au, dA, aA), ScriptTransfer(ap, cm, aA), ScriptTransfer(aF.caller, dE, dF)]
571585 else throw("Strict value is not equal to itself.")
572586 }
573587 }
574588 else throw("Strict value is not equal to itself.")
575589 }
576590
577591
578-func dH (aB,aO,db) = {
579- let dB = fromBase58String(getStringValue(value(addressFromString(aO)), "share_asset_id"))
580- let aT = toString(db)
581- let bE = aQ(aO)
582- let dI = bT(aO, aT)
583- let bu = dI._1
584- let bv = dI._2
585- let cE = dI._3
586- let dv = dI._4
587- let ci = dI._5
588- let cG = (bf(aO, aT) + cE)
589- if ((aV(dB) > bE))
592+func dM (aF,aS,df) = {
593+ let dF = fromBase58String(getStringValue(value(addressFromString(aS)), "share_asset_id"))
594+ let aX = toString(df)
595+ let bI = aU(aS)
596+ let dN = bX(aS, aX)
597+ let by = dN._1
598+ let bz = dN._2
599+ let cI = dN._3
600+ let dA = dN._4
601+ let cm = dN._5
602+ let cK = (bj(aS, aX) + cI)
603+ if ((aZ(dF) > bI))
590604 then throw("Balance of share-token is lower than totalAmount")
591605 else {
592- let dJ = if ((aB.caller != this))
593- then [ScriptTransfer(aB.caller, cG, aw)]
606+ let dO = if ((aF.caller != this))
607+ then [ScriptTransfer(aF.caller, cK, aA)]
594608 else nil
595- $Tuple2(([IntegerEntry((((aO + "_") + aT) + t), bu), IntegerEntry((((aO + "_") + aT) + v), bv), IntegerEntry((aO + s), bu), IntegerEntry((aO + u), bv), IntegerEntry((aO + w), height), IntegerEntry((((aO + "_") + aT) + y), 0), Reissue(aw, ((dv + cG) + ci), true), ScriptTransfer(as, dv, aw), ScriptTransfer(an, ci, aw)] ++ dJ), cG)
609+ $Tuple2(([IntegerEntry((((aS + "_") + aX) + t), by), IntegerEntry((((aS + "_") + aX) + v), bz), IntegerEntry((aS + s), by), IntegerEntry((aS + u), bz), IntegerEntry((aS + w), height), IntegerEntry((((aS + "_") + aX) + y), 0), Reissue(aA, ((dA + cK) + cm), true), ScriptTransfer(au, dA, aA), ScriptTransfer(ap, cm, aA)] ++ dO), cK)
596610 }
597611 }
598612
599613
600-func dK (aB,aO,aT) = {
601- let bW = getIntegerValue(this, (aO + o))
602- let de = valueOrElse(getInteger(this, (((aO + "_") + aT) + i)), 0)
603- let dg = valueOrElse(getInteger(this, (((aO + "_") + aT) + j)), 0)
604- let dh = valueOrElse(getInteger(this, (((aO + "_") + aT) + m)), de)
605- let dD = (de + dg)
606- let dL = bT(aO, aT)
607- let bu = dL._1
608- let bv = dL._2
609- let cE = dL._3
610- let dv = dL._4
611- let ci = dL._5
612- let dw = (bf(aO, aT) + cE)
613-[IntegerEntry((((aO + "_") + aT) + t), bu), IntegerEntry((((aO + "_") + aT) + v), bv), IntegerEntry((aO + s), bu), IntegerEntry((aO + u), bv), IntegerEntry((aO + w), height), IntegerEntry((((aO + "_") + aT) + i), dD), IntegerEntry((((aO + "_") + aT) + m), dD), IntegerEntry((aO + o), ((bW - dh) + dD)), IntegerEntry((((aO + "_") + aT) + y), dw), DeleteEntry((((aO + "_") + aT) + j)), DeleteEntry((((aO + "_") + aT) + l)), DeleteEntry((((aO + "_") + aT) + k)), Reissue(aw, (dv + ci), true), ScriptTransfer(as, dv, aw), ScriptTransfer(an, ci, aw)]
614+func dP (aF,aS,aX) = {
615+ let ca = getIntegerValue(this, (aS + o))
616+ let dj = valueOrElse(getInteger(this, (((aS + "_") + aX) + i)), 0)
617+ let dl = valueOrElse(getInteger(this, (((aS + "_") + aX) + j)), 0)
618+ let dm = valueOrElse(getInteger(this, (((aS + "_") + aX) + m)), dj)
619+ let dI = (dj + dl)
620+ let dQ = bX(aS, aX)
621+ let by = dQ._1
622+ let bz = dQ._2
623+ let cI = dQ._3
624+ let dA = dQ._4
625+ let cm = dQ._5
626+ let dB = (bj(aS, aX) + cI)
627+[IntegerEntry((((aS + "_") + aX) + t), by), IntegerEntry((((aS + "_") + aX) + v), bz), IntegerEntry((aS + s), by), IntegerEntry((aS + u), bz), IntegerEntry((aS + w), height), IntegerEntry((((aS + "_") + aX) + i), dI), IntegerEntry((((aS + "_") + aX) + m), dI), IntegerEntry((aS + o), ((ca - dm) + dI)), IntegerEntry((((aS + "_") + aX) + y), dB), DeleteEntry((((aS + "_") + aX) + j)), DeleteEntry((((aS + "_") + aX) + l)), DeleteEntry((((aS + "_") + aX) + k)), Reissue(aA, (dA + cm), true), ScriptTransfer(au, dA, aA), ScriptTransfer(ap, cm, aA)]
614628 }
615629
616630
617-@Callable(aB)
618-func init (dM) = if (isDefined(getString(this, x)))
631+@Callable(aF)
632+func init (dR) = if (isDefined(getString(this, x)))
619633 then throw("SWOP already initialized")
620634 else {
621- let dN = 100000000000000
622- let dO = Issue("SWOP", "SWOP protocol token", dN, 8, true)
623- let dP = calculateAssetId(dO)
624-[BooleanEntry(a, true), Issue("SWOP", "SWOP protocol token", dN, 8, true), StringEntry(x, toBase58String(dP))]
635+ let dS = 100000000000000
636+ let dT = Issue("SWOP", "SWOP protocol token", dS, 8, true)
637+ let dU = calculateAssetId(dT)
638+[BooleanEntry(a, true), Issue("SWOP", "SWOP protocol token", dS, 8, true), StringEntry(x, toBase58String(dU))]
625639 }
626640
627641
628642
629-@Callable(aB)
630-func initPoolShareFarming (aO) = valueOrElse(cV(aB), if (!(isDefined(getString(U, (I + aO)))))
643+@Callable(aF)
644+func initPoolShareFarming (aS) = valueOrElse(cZ(aF), if (!(isDefined(getString(W, (I + aS)))))
631645 then throw("Pool is not in oracle")
632- else if (isDefined(getInteger(this, (aO + n))))
646+ else if (isDefined(getInteger(this, (aS + n))))
633647 then throw("Pool already inited")
634- else [IntegerEntry((aO + n), 0), IntegerEntry((aO + s), 0), IntegerEntry((aO + u), 0), IntegerEntry((aO + w), height)])
648+ else [IntegerEntry((aS + n), 0), IntegerEntry((aS + s), 0), IntegerEntry((aS + u), 0), IntegerEntry((aS + w), height)])
635649
636650
637651
638-@Callable(aB)
639-func updatePoolInterest (aO) = valueOrElse(cU(), if ((aB.caller != ap))
652+@Callable(aF)
653+func updatePoolInterest (aS) = valueOrElse(cY(), if ((aF.caller != ar))
640654 then throw("Only Governance can call this function")
641655 else {
642- let aT = toString(addressFromPublicKey(aq))
643- let dQ = bT(aO, aT)
644- let bu = dQ._1
645- let bv = dQ._2
646- let dR = dQ._3
647-[IntegerEntry((aO + s), bu), IntegerEntry((aO + u), bv), IntegerEntry((aO + w), height)]
656+ let aX = toString(addressFromPublicKey(as))
657+ let dV = bX(aS, aX)
658+ let by = dV._1
659+ let bz = dV._2
660+ let dW = dV._3
661+[IntegerEntry((aS + s), by), IntegerEntry((aS + u), bz), IntegerEntry((aS + w), height)]
648662 })
649663
650664
651665
652-@Callable(aB)
653-func lockShareTokens (aO,cK) = valueOrElse(cY(aO), valueOrElse(cU(), da(aB, aB.caller, aO, cK)))
666+@Callable(aF)
667+func lockShareTokens (aS,cO) = valueOrElse(dc(aS), valueOrElse(cY(), de(aF, aF.caller, aS, cO)))
654668
655669
656670
657-@Callable(aB)
658-func lockShareTokensFromPool (dS,aO,cK) = valueOrElse(cY(aO), valueOrElse(cU(), valueOrElse(cW(aB, aO), da(aB, Address(dS), aO, cK))))
671+@Callable(aF)
672+func lockShareTokensFromPool (dX,aS,cO) = valueOrElse(dc(aS), valueOrElse(cY(), valueOrElse(da(aF, aS), de(aF, Address(dX), aS, cO))))
659673
660674
661675
662-@Callable(aB)
663-func lockStakedShareTokens (aO,cK,dT) = valueOrElse(cY(aO), valueOrElse(cU(), {
664- let dc = aU(aO)
665- let aT = toString(aB.caller)
666- let dd = aQ(aO)
667- let bW = valueOrElse(getInteger(this, (aO + o)), dd)
668- let de = valueOrElse(getInteger(this, (((aO + "_") + aT) + i)), 0)
669- let df = valueOrElse(getInteger(this, (((aO + "_") + aT) + l)), 0)
670- let dg = valueOrElse(getInteger(this, (((aO + "_") + aT) + j)), 0)
671- let dh = valueOrElse(getInteger(this, (((aO + "_") + aT) + m)), de)
672- let di = (de + dg)
673- let dU = cP(cK)
674- let dk = dU._1
675- let dl = dU._2
676- let dm = getIntegerValue(this, q)
677- if ((aN(aO) > height))
676+@Callable(aF)
677+func lockStakedShareTokens (aS,cO,dY) = valueOrElse(dc(aS), valueOrElse(cY(), {
678+ let dh = aY(aS)
679+ let aX = toString(aF.caller)
680+ let di = aU(aS)
681+ let ca = valueOrElse(getInteger(this, (aS + o)), di)
682+ let dj = valueOrElse(getInteger(this, (((aS + "_") + aX) + i)), 0)
683+ let dk = valueOrElse(getInteger(this, (((aS + "_") + aX) + l)), 0)
684+ let dl = valueOrElse(getInteger(this, (((aS + "_") + aX) + j)), 0)
685+ let dm = valueOrElse(getInteger(this, (((aS + "_") + aX) + m)), dj)
686+ let dn = (dj + dl)
687+ let dZ = cT(cO)
688+ let dp = dZ._1
689+ let dq = dZ._2
690+ let dr = getIntegerValue(this, q)
691+ if ((aR(aS) > height))
678692 then throw("You can't lock shareTokens till first harvest end.")
679- else if ((0 >= cK))
693+ else if ((0 >= cO))
680694 then throw("lockType must be > 0")
681- else if ((dT > de))
682- then throw(("You can't lock more than " + toString(de)))
683- else if ((aV(dc) > dd))
695+ else if ((dY > dj))
696+ then throw(("You can't lock more than " + toString(dj)))
697+ else if ((aZ(dh) > di))
684698 then throw("Balance of share-token is lower than totalAmount")
685- else if (if ((df == 0))
686- then if (if ((1 > size(aB.payments)))
699+ else if (if ((dk == 0))
700+ then if (if ((1 > size(aF.payments)))
687701 then true
688- else (aB.payments[0].assetId != unit))
702+ else (aF.payments[0].assetId != unit))
689703 then true
690- else (dm > aB.payments[0].amount)
704+ else (dr > aF.payments[0].amount)
691705 else false)
692- then throw((("You need to pay additional waves comission " + toString(dm)) + "WAVES"))
693- else if (if ((df == 0))
694- then (0 >= dT)
706+ then throw((("You need to pay additional waves comission " + toString(dr)) + "WAVES"))
707+ else if (if ((dk == 0))
708+ then (0 >= dY)
695709 else false)
696710 then throw("lockAmount must be greater than 0")
697- else if ((0 > dT))
711+ else if ((0 > dY))
698712 then throw("lockAmount must be positive")
699- else if ((df > (height + dk)))
713+ else if ((dk > (height + dp)))
700714 then throw("You cannot lock sharetokens for a period less than what you have already locked")
701715 else {
702- let dq = (dg + dT)
703- let dD = (de - dT)
704- let dr = (height + dk)
705- let dp = (fraction(dq, dl, Y) + dD)
706- let dV = bT(aO, aT)
707- let bu = dV._1
708- let bv = dV._2
709- let cE = dV._3
710- let dv = dV._4
711- let ci = dV._5
712- let dw = (bf(aO, aT) + cE)
713-[IntegerEntry((((aO + "_") + aT) + i), dD), IntegerEntry((((aO + "_") + aT) + j), dq), IntegerEntry((((aO + "_") + aT) + l), dr), IntegerEntry((((aO + "_") + aT) + k), cK), IntegerEntry((((aO + "_") + aT) + m), dp), IntegerEntry((aO + o), ((bW - dh) + dp)), IntegerEntry((((aO + "_") + aT) + t), bu), IntegerEntry((((aO + "_") + aT) + v), bv), IntegerEntry((aO + s), bu), IntegerEntry((aO + u), bv), IntegerEntry((aO + w), height), IntegerEntry((((aO + "_") + aT) + y), dw), Reissue(aw, (dv + ci), true), ScriptTransfer(as, dv, aw), ScriptTransfer(an, ci, aw)]
716+ let dv = (dl + dY)
717+ let dI = (dj - dY)
718+ let dw = (height + dp)
719+ let du = (fraction(dv, dq, aa) + dI)
720+ let ea = bX(aS, aX)
721+ let by = ea._1
722+ let bz = ea._2
723+ let cI = ea._3
724+ let dA = ea._4
725+ let cm = ea._5
726+ let dB = (bj(aS, aX) + cI)
727+[IntegerEntry((((aS + "_") + aX) + i), dI), IntegerEntry((((aS + "_") + aX) + j), dv), IntegerEntry((((aS + "_") + aX) + l), dw), IntegerEntry((((aS + "_") + aX) + k), cO), IntegerEntry((((aS + "_") + aX) + m), du), IntegerEntry((aS + o), ((ca - dm) + du)), IntegerEntry((((aS + "_") + aX) + t), by), IntegerEntry((((aS + "_") + aX) + v), bz), IntegerEntry((aS + s), by), IntegerEntry((aS + u), bz), IntegerEntry((aS + w), height), IntegerEntry((((aS + "_") + aX) + y), dB), Reissue(aA, (dA + cm), true), ScriptTransfer(au, dA, aA), ScriptTransfer(ap, cm, aA)]
714728 }
715729 }))
716730
717731
718732
719-@Callable(aB)
720-func unlockUserLock (aO,aT) = valueOrElse(cU(), {
721- let df = valueOrErrorMessage(getInteger(this, (((aO + "_") + aT) + l)), (((("There is no pool " + aO) + " or user ") + aT) + "with lock"))
722- if ((df > height))
723- then throw(("You can't unlock sharetokens till " + toString(df)))
724- else (dK(aB, aO, aT) ++ [ScriptTransfer(aB.caller, getIntegerValue(this, q), unit)])
733+@Callable(aF)
734+func unlockUserLock (aS,aX) = valueOrElse(cY(), {
735+ let dk = valueOrErrorMessage(getInteger(this, (((aS + "_") + aX) + l)), (((("There is no pool " + aS) + " or user ") + aX) + "with lock"))
736+ if ((dk > height))
737+ then throw(("You can't unlock sharetokens till " + toString(dk)))
738+ else (dP(aF, aS, aX) ++ [ScriptTransfer(aF.caller, getIntegerValue(this, q), unit)])
725739 })
726740
727741
728742
729-@Callable(aB)
730-func unlockUserLockDeprecated (aO,aT) = valueOrElse(cU(), valueOrElse(cZ(aB), if (!(cX(aO)))
743+@Callable(aF)
744+func unlockUserLockDeprecated (aS,aX) = valueOrElse(cY(), valueOrElse(dd(aF), if (!(db(aS)))
731745 then throw("Pool must be deprecated")
732- else if (isDefined(getInteger(this, (((aO + "_") + aT) + l))))
733- then (dK(aB, aO, aT) ++ [ScriptTransfer(am, getIntegerValue(this, q), unit)])
746+ else if (isDefined(getInteger(this, (((aS + "_") + aX) + l))))
747+ then (dP(aF, aS, aX) ++ [ScriptTransfer(ao, getIntegerValue(this, q), unit)])
734748 else nil))
735749
736750
737751
738-@Callable(aB)
739-func withdrawShareTokens (aO,dz) = valueOrElse(cU(), dy(aB, aB.caller, aO, dz))
752+@Callable(aF)
753+func withdrawShareTokens (aS,dE) = valueOrElse(cY(), dD(aF, aF.caller, aS, dE))
740754
741755
742756
743-@Callable(aB)
744-func withdrawShareTokensFromPool (dS,aO,dz) = valueOrElse(cU(), valueOrElse(cW(aB, aO), dy(aB, Address(dS), aO, dz)))
757+@Callable(aF)
758+func withdrawShareTokensFromPool (dX,aS,dE) = valueOrElse(cY(), valueOrElse(da(aF, aS), dD(aF, Address(dX), aS, dE)))
745759
746760
747761
748-@Callable(aB)
749-func claim (aO) = valueOrElse(cU(), {
750- let bJ = dH(aB, aO, aB.caller)
751- if ((bJ._2 == 0))
762+@Callable(aF)
763+func claim (aS) = valueOrElse(cY(), {
764+ let bN = dM(aF, aS, aF.caller)
765+ if ((bN._2 == 0))
752766 then throw("You have 0 available SWOP")
753- else bJ
767+ else bN
754768 })
755769
756770
757771
758-@Callable(aB)
759-func claimInternal (aO,db) = valueOrElse(cU(), valueOrElse(cZ(aB), dH(aB, aO, Address(db))))
772+@Callable(aF)
773+func claimInternal (aS,df) = valueOrElse(cY(), valueOrElse(dd(aF), dM(aF, aS, Address(df))))
760774
761775
762776
763-@Callable(aB)
764-func claimAndStake (aO) = valueOrElse(cU(), {
765- let cE = {
766- let dW = invoke(this, "claimInternal", [aO, aB.caller.bytes], nil)
767- if ($isInstanceOf(dW, "Int"))
768- then dW
769- else throw(($getType(dW) + " couldn't be cast to Int"))
777+@Callable(aF)
778+func claimAndStake (aS) = valueOrElse(cY(), {
779+ let cI = {
780+ let eb = invoke(this, "claimInternal", [aS, aF.caller.bytes], nil)
781+ if ($isInstanceOf(eb, "Int"))
782+ then eb
783+ else throw(($getType(eb) + " couldn't be cast to Int"))
770784 }
771- if ((cE == cE))
772- then if ((cE == 0))
785+ if ((cI == cI))
786+ then if ((cI == 0))
773787 then throw("You have 0 available SWOP")
774788 else {
775- let dX = invoke(ap, "lockSWOPFromFarming", nil, [AttachedPayment(aw, cE)])
776- if ((dX == dX))
789+ let ec = invoke(ar, "lockSWOPFromFarming", nil, [AttachedPayment(aA, cI)])
790+ if ((ec == ec))
777791 then nil
778792 else throw("Strict value is not equal to itself.")
779793 }
780794 else throw("Strict value is not equal to itself.")
781795 })
782796
783797
784798
785-@Callable(aB)
786-func claimAll (cw) = valueOrElse(cU(), {
787- func dY (dZ,aO) = {
788- let cE = {
789- let dW = invoke(this, "claimInternal", [aO, aB.caller.bytes], nil)
790- if ($isInstanceOf(dW, "Int"))
791- then dW
792- else throw(($getType(dW) + " couldn't be cast to Int"))
799+@Callable(aF)
800+func claimAll (cA) = valueOrElse(cY(), {
801+ func ed (ee,aS) = {
802+ let cI = {
803+ let eb = invoke(this, "claimInternal", [aS, aF.caller.bytes], nil)
804+ if ($isInstanceOf(eb, "Int"))
805+ then eb
806+ else throw(($getType(eb) + " couldn't be cast to Int"))
793807 }
794- if ((cE == cE))
795- then (dZ + cE)
808+ if ((cI == cI))
809+ then (ee + cI)
796810 else throw("Strict value is not equal to itself.")
797811 }
798812
799- let dZ = {
800- let aG = cw
801- let aH = size(aG)
802- let aI = 0
803- func aJ (aK,aL) = if ((aL >= aH))
804- then aK
805- else dY(aK, aG[aL])
813+ let ee = {
814+ let aK = cA
815+ let aL = size(aK)
816+ let aM = 0
817+ func aN (aO,aP) = if ((aP >= aL))
818+ then aO
819+ else ed(aO, aK[aP])
806820
807- func aM (aK,aL) = if ((aL >= aH))
808- then aK
821+ func aQ (aO,aP) = if ((aP >= aL))
822+ then aO
809823 else throw("List size exceeds 60")
810824
811- aM(aJ(aJ(aJ(aJ(aJ(aJ(aJ(aJ(aJ(aJ(aJ(aJ(aJ(aJ(aJ(aJ(aJ(aJ(aJ(aJ(aJ(aJ(aJ(aJ(aJ(aJ(aJ(aJ(aJ(aJ(aJ(aJ(aJ(aJ(aJ(aJ(aJ(aJ(aJ(aJ(aJ(aJ(aJ(aJ(aJ(aJ(aJ(aJ(aJ(aJ(aJ(aJ(aJ(aJ(aJ(aJ(aJ(aJ(aJ(aJ(aI, 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)
825+ aQ(aN(aN(aN(aN(aN(aN(aN(aN(aN(aN(aN(aN(aN(aN(aN(aN(aN(aN(aN(aN(aN(aN(aN(aN(aN(aN(aN(aN(aN(aN(aN(aN(aN(aN(aN(aN(aN(aN(aN(aN(aN(aN(aN(aN(aN(aN(aN(aN(aN(aN(aN(aN(aN(aN(aN(aN(aN(aN(aN(aN(aM, 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)
812826 }
813- if ((dZ == 0))
827+ if ((ee == 0))
814828 then throw("You have 0 available SWOP")
815- else [ScriptTransfer(aB.caller, dZ, aw)]
829+ else [ScriptTransfer(aF.caller, ee, aA)]
816830 })
817831
818832
819833
820-@Callable(aB)
821-func claimAllAndStake (cw) = valueOrElse(cU(), {
822- func dY (dZ,aO) = {
823- let cE = {
824- let dW = invoke(this, "claimInternal", [aO, aB.caller.bytes], nil)
825- if ($isInstanceOf(dW, "Int"))
826- then dW
827- else throw(($getType(dW) + " couldn't be cast to Int"))
834+@Callable(aF)
835+func claimAllAndStake (cA) = valueOrElse(cY(), {
836+ func ed (ee,aS) = {
837+ let cI = {
838+ let eb = invoke(this, "claimInternal", [aS, aF.caller.bytes], nil)
839+ if ($isInstanceOf(eb, "Int"))
840+ then eb
841+ else throw(($getType(eb) + " couldn't be cast to Int"))
828842 }
829- if ((cE == cE))
830- then (dZ + cE)
843+ if ((cI == cI))
844+ then (ee + cI)
831845 else throw("Strict value is not equal to itself.")
832846 }
833847
834- let dZ = {
835- let aG = cw
836- let aH = size(aG)
837- let aI = 0
838- func aJ (aK,aL) = if ((aL >= aH))
839- then aK
840- else dY(aK, aG[aL])
848+ let ee = {
849+ let aK = cA
850+ let aL = size(aK)
851+ let aM = 0
852+ func aN (aO,aP) = if ((aP >= aL))
853+ then aO
854+ else ed(aO, aK[aP])
841855
842- func aM (aK,aL) = if ((aL >= aH))
843- then aK
856+ func aQ (aO,aP) = if ((aP >= aL))
857+ then aO
844858 else throw("List size exceeds 60")
845859
846- aM(aJ(aJ(aJ(aJ(aJ(aJ(aJ(aJ(aJ(aJ(aJ(aJ(aJ(aJ(aJ(aJ(aJ(aJ(aJ(aJ(aJ(aJ(aJ(aJ(aJ(aJ(aJ(aJ(aJ(aJ(aJ(aJ(aJ(aJ(aJ(aJ(aJ(aJ(aJ(aJ(aJ(aJ(aJ(aJ(aJ(aJ(aJ(aJ(aJ(aJ(aJ(aJ(aJ(aJ(aJ(aJ(aJ(aJ(aJ(aJ(aI, 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)
860+ aQ(aN(aN(aN(aN(aN(aN(aN(aN(aN(aN(aN(aN(aN(aN(aN(aN(aN(aN(aN(aN(aN(aN(aN(aN(aN(aN(aN(aN(aN(aN(aN(aN(aN(aN(aN(aN(aN(aN(aN(aN(aN(aN(aN(aN(aN(aN(aN(aN(aN(aN(aN(aN(aN(aN(aN(aN(aN(aN(aN(aN(aM, 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)
847861 }
848- if ((dZ == 0))
862+ if ((ee == 0))
849863 then throw("You have 0 available SWOP")
850864 else {
851- let dX = invoke(ap, "lockSWOPFromFarming", nil, [AttachedPayment(aw, dZ)])
852- if ((dX == dX))
865+ let ec = invoke(ar, "lockSWOPFromFarming", nil, [AttachedPayment(aA, ee)])
866+ if ((ec == ec))
853867 then nil
854868 else throw("Strict value is not equal to itself.")
855869 }
856870 })
857871
858872
859873
860-@Callable(aB)
861-func updateUserBoostInterest (aO,aT) = valueOrElse(cU(), if ((aB.caller != ao))
874+@Callable(aF)
875+func updateUserBoostInterest (aS,aX) = valueOrElse(cY(), if ((aF.caller != aq))
862876 then throw("Only voiting can call this function")
863877 else {
864- let ea = bT(aO, aT)
865- let bu = ea._1
866- let bv = ea._2
867- let cE = ea._3
868- let dv = ea._4
869- let ci = ea._5
870- let dw = (bf(aO, aT) + cE)
871-[IntegerEntry((((aO + "_") + aT) + t), bu), IntegerEntry((((aO + "_") + aT) + v), bv), IntegerEntry((aO + s), bu), IntegerEntry((aO + u), bv), IntegerEntry((aO + w), height), IntegerEntry((((aO + "_") + aT) + y), dw), Reissue(aw, (dv + ci), true), ScriptTransfer(as, dv, aw), ScriptTransfer(an, ci, aw)]
878+ let ef = bX(aS, aX)
879+ let by = ef._1
880+ let bz = ef._2
881+ let cI = ef._3
882+ let dA = ef._4
883+ let cm = ef._5
884+ let dB = (bj(aS, aX) + cI)
885+[IntegerEntry((((aS + "_") + aX) + t), by), IntegerEntry((((aS + "_") + aX) + v), bz), IntegerEntry((aS + s), by), IntegerEntry((aS + u), bz), IntegerEntry((aS + w), height), IntegerEntry((((aS + "_") + aX) + y), dB), Reissue(aA, (dA + cm), true), ScriptTransfer(au, dA, aA), ScriptTransfer(ap, cm, aA)]
872886 })
873887
874888
875889
876-@Callable(aB)
877-func shutdown () = valueOrElse(cV(aB), if (!(au))
890+@Callable(aF)
891+func shutdown () = valueOrElse(cZ(aF), if (!(ay))
878892 then throw(("DApp is already suspended. Cause: " + valueOrElse(getString(this, d), "the cause wasn't specified")))
879- else cS("Paused by admin"))
893+ else cW("Paused by admin"))
880894
881895
882896
883-@Callable(aB)
884-func activate () = valueOrElse(cV(aB), if (au)
897+@Callable(aF)
898+func activate () = valueOrElse(cZ(aF), if (ay)
885899 then throw("DApp is already active")
886900 else [BooleanEntry(a, true), DeleteEntry(d)])
887901
888902
889-@Verifier(eb)
890-func ec () = {
891- let ag = eb
892- let ed = if (sigVerify(eb.bodyBytes, eb.proofs[0], aj))
903+@Verifier(eg)
904+func eh () = {
905+ let ai = eg
906+ let ei = if (sigVerify(eg.bodyBytes, eg.proofs[0], al))
893907 then 1
894908 else 0
895- let ee = if (sigVerify(eb.bodyBytes, eb.proofs[1], ak))
909+ let ej = if (sigVerify(eg.bodyBytes, eg.proofs[1], am))
896910 then 1
897911 else 0
898- let ef = if (sigVerify(eb.bodyBytes, eb.proofs[2], al))
912+ let ek = if (sigVerify(eg.bodyBytes, eg.proofs[2], an))
899913 then 1
900914 else 0
901- (((ed + ee) + ef) >= 2)
915+ (((ei + ej) + ek) >= 2)
902916 }
903917

github/deemru/w8io/169f3d6 
430.24 ms