tx · DQqrz3F1MFERcBBP4qE4pmMMFWgBioPqLwMQbdK5fEyE

3MzKSdTH2jFbypLsoNfrH7QgkzSbx3EYwCA:  -0.02900000 Waves

2022.09.14 15:48 [2228790] smart account 3MzKSdTH2jFbypLsoNfrH7QgkzSbx3EYwCA > SELF 0.00000000 Waves

{ "type": 13, "id": "DQqrz3F1MFERcBBP4qE4pmMMFWgBioPqLwMQbdK5fEyE", "fee": 2900000, "feeAssetId": null, "timestamp": 1663159730500, "version": 1, "sender": "3MzKSdTH2jFbypLsoNfrH7QgkzSbx3EYwCA", "senderPublicKey": "35yd3qw1gxKDxKwGAykHN9fANbXNWwseaUwbWDj24o3x", "proofs": [ "iYt3mGq7wbQxbetqRxmBgLfcPMXcPNMWzi8MMXCcWNwfwxxF7NWdJeS9AE6DMGbZoL8UWKSZsEzwuABU7hC2tux" ], "script": "base64:BgJ/CAISAwoBCBIDCgEIEgASBAoCAQQSBwoFAQEBAQQSAwoBARIAEgcKBQEBAQgBEgQKAgEBEgMKAQESBAoCCAgSBAoCCAgSBAoCCAESABIDCgEIEgUKAwEBARIECgIIARIECgIBARIECgIICBILCgkIAQECAQIIBAQSBgoECAgBCFIABnNjYWxlOACAwtcvAAxzY2FsZThCaWdJbnQJALYCAQCAwtcvAAdzY2FsZTE4CQC2AgEAgICQu7rWrfANAAh0aG91c2FuZADoBwAKemVyb0JpZ0ludAkAtgIBAAAACW9uZUJpZ0ludAkAtgIBAAEACnNsaXBwYWdlNEQJALYCAQkAZQIFBnNjYWxlOAkAaQIJAGgCBQZzY2FsZTgAAQUGc2NhbGU4AAVBbXVsdAIDMTAwAAVEY29udgIBMQADU0VQAgJfXwAFRU1QVFkCAAAKUG9vbEFjdGl2ZQABAApQb29sUHV0RGlzAAIADlBvb2xNYXRjaGVyRGlzAAMADFBvb2xTaHV0ZG93bgAEAA5pZHhQb29sQWRkcmVzcwABAAlpZHhQb29sU3QAAgAJaWR4TFBBc0lkAAMACWlkeEFtQXNJZAAEAAlpZHhQckFzSWQABQALaWR4QW10QXNEY20ABgANaWR4UHJpY2VBc0RjbQAHAAtpZHhJQW10QXNJZAAIAA1pZHhJUHJpY2VBc0lkAAkAD2lkeEZhY3RTdGFrQ250cgABABBpZHhGYWN0U2xpcHBDbnRyAAcAEWlkeEZhY3RHd3hSZXdDbnRyAAoAEmZlZVBlcm1pbGxlRGVmYXVsdAAAAQJ0MQIHb3JpZ1ZhbA1vcmlnU2NhbGVNdWx0CQC8AgMJALYCAQUHb3JpZ1ZhbAUHc2NhbGUxOAkAtgIBBQ1vcmlnU2NhbGVNdWx0AQJmMQIDdmFsD3Jlc3VsdFNjYWxlTXVsdAkAoAMBCQC8AgMFA3ZhbAkAtgIBBQ9yZXN1bHRTY2FsZU11bHQFB3NjYWxlMTgBAnRzAwNhbXQIcmVzU2NhbGUIY3VyU2NhbGUJAGsDBQNhbXQFCHJlc1NjYWxlBQhjdXJTY2FsZQEDYWJzAQN2YWwDCQC/AgIFCnplcm9CaWdJbnQFA3ZhbAkAvgIBBQN2YWwFA3ZhbAECZmMAAhMlc19fZmFjdG9yeUNvbnRyYWN0AQNtcGsAAhQlc19fbWFuYWdlclB1YmxpY0tleQEEcG1wawACGyVzX19wZW5kaW5nTWFuYWdlclB1YmxpY0tleQECcGwAAhElcyVzX19wcmljZV9fbGFzdAECcGgCAWgBdAkAuQkCCQDMCAICGCVzJXMlZCVkX19wcmljZV9faGlzdG9yeQkAzAgCCQCkAwEFAWgJAMwIAgkApAMBBQF0BQNuaWwFA1NFUAEDcGF1AgJ1YQR0eElkCQCsAgIJAKwCAgkArAICAgslcyVzJXNfX1BfXwUCdWECAl9fBQR0eElkAQNnYXUCAnVhBHR4SWQJAKwCAgkArAICCQCsAgICCyVzJXMlc19fR19fBQJ1YQICX18FBHR4SWQBAmFhAAIPJXNfX2Ftb3VudEFzc2V0AQJwYQACDiVzX19wcmljZUFzc2V0AQNhbXAAAgclc19fYW1wAQNhZGEAAg0lc19fYWRkb25BZGRyAA5rZXlGZWVQZXJtaWxsZQIPJXNfX2ZlZVBlcm1pbGxlAAtmZWVQZXJtaWxsZQkBC3ZhbHVlT3JFbHNlAgkAmggCBQR0aGlzBQ5rZXlGZWVQZXJtaWxsZQUSZmVlUGVybWlsbGVEZWZhdWx0AQRmY2ZnAAIRJXNfX2ZhY3RvcnlDb25maWcBBG10cGsAAhglcyVzX19tYXRjaGVyX19wdWJsaWNLZXkBAnBjAgZpQW10QXMFaVByQXMJAKwCAgkArAICCQCsAgIJAKwCAgIIJWQlZCVzX18FBmlBbXRBcwICX18FBWlQckFzAghfX2NvbmZpZwEDbWJhAQViQVN0cgkArAICAiglcyVzJXNfX21hcHBpbmdzX19iYXNlQXNzZXQyaW50ZXJuYWxJZF9fBQViQVN0cgEDYXBzAAIMJXNfX3NodXRkb3duARxrZXlBbGxvd2VkTHBTdGFibGVTY3JpcHRIYXNoAAIdJXNfX2FsbG93ZWRMcFN0YWJsZVNjcmlwdEhhc2gBFmtleUZlZUNvbGxlY3RvckFkZHJlc3MAAhclc19fZmVlQ29sbGVjdG9yQWRkcmVzcwEDdG9lAwNvclYGc2VuZHJWBm1hdGNoVgkAAgEJAKwCAgkArAICCQCsAgIJAKwCAgkArAICAhFGYWlsZWQ6IG9yZFZhbGlkPQkApQMBBQNvclYCCyBzbmRyVmFsaWQ9CQClAwEFBnNlbmRyVgIMIG10Y2hyVmFsaWQ9CQClAwEFBm1hdGNoVgEDc3RyAQN2YWwEByRtYXRjaDAFA3ZhbAMJAAECBQckbWF0Y2gwAgZTdHJpbmcEBnZhbFN0cgUHJG1hdGNoMAUGdmFsU3RyCQACAQITZmFpbCBjYXN0IHRvIFN0cmluZwEEc3RyZgIEYWRkcgNrZXkJARN2YWx1ZU9yRXJyb3JNZXNzYWdlAgkAnQgCBQRhZGRyBQNrZXkJALkJAgkAzAgCAgptYW5kYXRvcnkgCQDMCAIJAKUIAQUEYWRkcgkAzAgCAgEuCQDMCAIFA2tleQkAzAgCAgwgbm90IGRlZmluZWQFA25pbAIAAQRpbnRmAgRhZGRyA2tleQkBE3ZhbHVlT3JFcnJvck1lc3NhZ2UCCQCaCAIFBGFkZHIFA2tleQkAuQkCCQDMCAICCm1hbmRhdG9yeSAJAMwIAgkApQgBBQRhZGRyCQDMCAICAS4JAMwIAgUDa2V5CQDMCAICDCBub3QgZGVmaW5lZAUDbmlsAgAAA2ZjYQkBEUBleHRyTmF0aXZlKDEwNjIpAQkBBHN0cmYCBQR0aGlzCQECZmMAAAFBCQEEc3RyZgIFBHRoaXMJAQNhbXAAAQNpZ3MACQELdmFsdWVPckVsc2UCCQCbCAIFA2ZjYQkBA2FwcwAHAQJtcAAJANkEAQkBBHN0cmYCBQNmY2EJAQRtdHBrAAATZmVlQ29sbGVjdG9yQWRkcmVzcwkBEUBleHRyTmF0aXZlKDEwNjIpAQkBBHN0cmYCBQNmY2EJARZrZXlGZWVDb2xsZWN0b3JBZGRyZXNzAAEDZ3BjAAQFYW10QXMJAQRzdHJmAgUEdGhpcwkBAmFhAAQHcHJpY2VBcwkBBHN0cmYCBQR0aGlzCQECcGEABAhpUHJpY2VBcwkBBGludGYCBQNmY2EJAQNtYmEBBQdwcmljZUFzBAZpQW10QXMJAQRpbnRmAgUDZmNhCQEDbWJhAQUFYW10QXMJALUJAgkBBHN0cmYCBQNmY2EJAQJwYwIJAKQDAQUGaUFtdEFzCQCkAwEFCGlQcmljZUFzBQNTRVABA2dmYwAJALUJAgkBBHN0cmYCBQNmY2EJAQRmY2ZnAAUDU0VQARFkYXRhUHV0QWN0aW9uSW5mbwoNaW5BbXRBc3NldEFtdA9pblByaWNlQXNzZXRBbXQIb3V0THBBbXQFcHJpY2UKc2xpcEJ5VXNlcgxzbGlwcGFnZVJlYWwIdHhIZWlnaHQLdHhUaW1lc3RhbXAMc2xpcGFnZUFtQW10DHNsaXBhZ2VQckFtdAkAuQkCCQDMCAICFCVkJWQlZCVkJWQlZCVkJWQlZCVkCQDMCAIJAKQDAQUNaW5BbXRBc3NldEFtdAkAzAgCCQCkAwEFD2luUHJpY2VBc3NldEFtdAkAzAgCCQCkAwEFCG91dExwQW10CQDMCAIJAKQDAQUFcHJpY2UJAMwIAgkApAMBBQpzbGlwQnlVc2VyCQDMCAIJAKQDAQUMc2xpcHBhZ2VSZWFsCQDMCAIJAKQDAQUIdHhIZWlnaHQJAMwIAgkApAMBBQt0eFRpbWVzdGFtcAkAzAgCCQCkAwEFDHNsaXBhZ2VBbUFtdAkAzAgCCQCkAwEFDHNsaXBhZ2VQckFtdAUDbmlsBQNTRVABEWRhdGFHZXRBY3Rpb25JbmZvBg5vdXRBbXRBc3NldEFtdBBvdXRQcmljZUFzc2V0QW10B2luTHBBbXQFcHJpY2UIdHhIZWlnaHQLdHhUaW1lc3RhbXAJALkJAgkAzAgCAgwlZCVkJWQlZCVkJWQJAMwIAgkApAMBBQ5vdXRBbXRBc3NldEFtdAkAzAgCCQCkAwEFEG91dFByaWNlQXNzZXRBbXQJAMwIAgkApAMBBQdpbkxwQW10CQDMCAIJAKQDAQUFcHJpY2UJAMwIAgkApAMBBQh0eEhlaWdodAkAzAgCCQCkAwEFC3R4VGltZXN0YW1wBQNuaWwFA1NFUAENZ2V0QWNjQmFsYW5jZQEHYXNzZXRJZAMJAAACBQdhc3NldElkAgVXQVZFUwgJAO8HAQUEdGhpcwlhdmFpbGFibGUJAPAHAgUEdGhpcwkA2QQBBQdhc3NldElkAQRjcGJpAghwckFtdFgxOAhhbUFtdFgxOAkAvAIDBQhwckFtdFgxOAUHc2NhbGUxOAUIYW1BbXRYMTgBA3ZhZAMCQTECQTIIc2xpcHBhZ2UEBGRpZmYJALwCAwkAuAICBQJBMQUCQTIFDHNjYWxlOEJpZ0ludAUCQTIEBHBhc3MJAL8CAgkAuAICBQhzbGlwcGFnZQkBA2FicwEFBGRpZmYFCnplcm9CaWdJbnQDCQEBIQEFBHBhc3MJAAIBCQCsAgICCkJpZyBzbHBnOiAJAKYDAQUEZGlmZgkAlAoCBQRwYXNzCQCZAwEJAMwIAgUCQTEJAMwIAgUCQTIFA25pbAECdmQDAkQxAkQwBHNscGcEBGRpZmYJALwCAwUCRDAFDHNjYWxlOEJpZ0ludAUCRDEEBGZhaWwJAL8CAgUEc2xwZwUEZGlmZgMDBQRmYWlsBgkAvwICBQJEMAUCRDEJAAIBCQCsAgIJAKwCAgkArAICCQCsAgIJAKwCAgkArAICCQCmAwEFAkQwAgEgCQCmAwEFAkQxAgEgCQCmAwEFBGRpZmYCASAJAKYDAQUEc2xwZwUEZmFpbAEDcGNwBAphbUFzc2V0RGNtCnByQXNzZXREY20FYW1BbXQFcHJBbXQEC2FtdEFzQW10WDE4CQECdDECBQVhbUFtdAUKYW1Bc3NldERjbQQKcHJBc0FtdFgxOAkBAnQxAgUFcHJBbXQFCnByQXNzZXREY20JAQRjcGJpAgUKcHJBc0FtdFgxOAULYW10QXNBbXRYMTgBCmNhbGNQcmljZXMDBWFtQW10BXByQW10BWxwQW10BANjZmcJAQNncGMABAhhbXRBc0RjbQkBDXBhcnNlSW50VmFsdWUBCQCRAwIFA2NmZwULaWR4QW10QXNEY20EB3ByQXNEY20JAQ1wYXJzZUludFZhbHVlAQkAkQMCBQNjZmcFDWlkeFByaWNlQXNEY20ECHByaWNlWDE4CQEDcGNwBAUIYW10QXNEY20FB3ByQXNEY20FBWFtQW10BQVwckFtdAQIYW1BbXRYMTgJAQJ0MQIFBWFtQW10BQhhbXRBc0RjbQQIcHJBbXRYMTgJAQJ0MQIFBXByQW10BQdwckFzRGNtBAhscEFtdFgxOAkBAnQxAgUFbHBBbXQFBnNjYWxlOAQNbHBQckluQW1Bc1gxOAkBBGNwYmkCBQhhbUFtdFgxOAUIbHBBbXRYMTgEDWxwUHJJblByQXNYMTgJAQRjcGJpAgUIcHJBbXRYMTgFCGxwQW10WDE4CQDMCAIFCHByaWNlWDE4CQDMCAIFDWxwUHJJbkFtQXNYMTgJAMwIAgUNbHBQckluUHJBc1gxOAUDbmlsAQ9jYWxjdWxhdGVQcmljZXMDBWFtQW10BXByQW10BWxwQW10BAFwCQEKY2FsY1ByaWNlcwMFBWFtQW10BQVwckFtdAUFbHBBbXQJAMwIAgkBAmYxAgkAkQMCBQFwAAAFBnNjYWxlOAkAzAgCCQECZjECCQCRAwIFAXAAAQUGc2NhbGU4CQDMCAIJAQJmMQIJAJEDAgUBcAACBQZzY2FsZTgFA25pbAEDZWdvBAZ0eElkNTgKcG10QXNzZXRJZAhwbXRMcEFtdAt1c2VyQWRkcmVzcwQDY2ZnCQEDZ3BjAAQEbHBJZAkAkQMCBQNjZmcFCWlkeExQQXNJZAQEYW1JZAkAkQMCBQNjZmcFCWlkeEFtQXNJZAQEcHJJZAkAkQMCBQNjZmcFCWlkeFByQXNJZAQFYW1EY20JAQ1wYXJzZUludFZhbHVlAQkAkQMCBQNjZmcFC2lkeEFtdEFzRGNtBAVwckRjbQkBDXBhcnNlSW50VmFsdWUBCQCRAwIFA2NmZwUNaWR4UHJpY2VBc0RjbQQDc3RzCQCRAwIFA2NmZwUJaWR4UG9vbFN0BAdscEVtaXNzCAkBE3ZhbHVlT3JFcnJvck1lc3NhZ2UCCQDsBwEJANkEAQUEbHBJZAILV3JvbmcgTFAgaWQIcXVhbnRpdHkDCQECIT0CBQRscElkBQpwbXRBc3NldElkCQACAQIPV3JvbmcgcG10IGFzc2V0BAlhbUJhbGFuY2UJAQ1nZXRBY2NCYWxhbmNlAQUEYW1JZAQMYW1CYWxhbmNlWDE4CQECdDECBQlhbUJhbGFuY2UFBWFtRGNtBAlwckJhbGFuY2UJAQ1nZXRBY2NCYWxhbmNlAQUEcHJJZAQMcHJCYWxhbmNlWDE4CQECdDECBQlwckJhbGFuY2UFBXByRGNtBAtjdXJQcmljZVgxOAkBBGNwYmkCBQxwckJhbGFuY2VYMTgFDGFtQmFsYW5jZVgxOAQIY3VyUHJpY2UJAQJmMQIFC2N1clByaWNlWDE4BQZzY2FsZTgEC3BtdExwQW10WDE4CQECdDECBQhwbXRMcEFtdAUGc2NhbGU4BApscEVtaXNzWDE4CQECdDECBQdscEVtaXNzBQZzY2FsZTgEC291dEFtQW10WDE4CQC8AgMFDGFtQmFsYW5jZVgxOAULcG10THBBbXRYMTgFCmxwRW1pc3NYMTgEC291dFByQW10WDE4CQC8AgMFDHByQmFsYW5jZVgxOAULcG10THBBbXRYMTgFCmxwRW1pc3NYMTgECG91dEFtQW10CQECZjECBQtvdXRBbUFtdFgxOAUFYW1EY20ECG91dFByQW10CQECZjECBQtvdXRQckFtdFgxOAUFcHJEY20EBXN0YXRlAwkAAAIFBnR4SWQ1OAIABQNuaWwJAMwIAgkBDlNjcmlwdFRyYW5zZmVyAwULdXNlckFkZHJlc3MFCG91dEFtQW10AwkAAAIFBGFtSWQCBVdBVkVTBQR1bml0CQDZBAEFBGFtSWQJAMwIAgkBDlNjcmlwdFRyYW5zZmVyAwULdXNlckFkZHJlc3MFCG91dFByQW10AwkAAAIFBHBySWQCBVdBVkVTBQR1bml0CQDZBAEFBHBySWQJAMwIAgkBC1N0cmluZ0VudHJ5AgkBA2dhdQIJAKUIAQULdXNlckFkZHJlc3MFBnR4SWQ1OAkBEWRhdGFHZXRBY3Rpb25JbmZvBgUIb3V0QW1BbXQFCG91dFByQW10BQhwbXRMcEFtdAUIY3VyUHJpY2UFBmhlaWdodAgFCWxhc3RCbG9jawl0aW1lc3RhbXAJAMwIAgkBDEludGVnZXJFbnRyeQIJAQJwbAAFCGN1clByaWNlCQDMCAIJAQxJbnRlZ2VyRW50cnkCCQECcGgCBQZoZWlnaHQIBQlsYXN0QmxvY2sJdGltZXN0YW1wBQhjdXJQcmljZQUDbmlsCQCcCgoFCG91dEFtQW10BQhvdXRQckFtdAUEYW1JZAUEcHJJZAUJYW1CYWxhbmNlBQlwckJhbGFuY2UFB2xwRW1pc3MFC2N1clByaWNlWDE4BQNzdHMFBXN0YXRlAQNlcG8MBnR4SWQ1OAhzbGlwcGFnZQdpbkFtQW10BmluQW1JZAdpblByQW10BmluUHJJZAt1c2VyQWRkcmVzcwZpc0V2YWwGZW1pdExwCmlzT25lQXNzZXQGcG10QW10BXBtdElkBANjZmcJAQNncGMABARscElkCQDZBAEJAJEDAgUDY2ZnBQlpZHhMUEFzSWQEB2FtSWRTdHIJAJEDAgUDY2ZnBQlpZHhBbUFzSWQEB3BySWRTdHIJAJEDAgUDY2ZnBQlpZHhQckFzSWQECWluQW1JZFN0cgkAkQMCBQNjZmcFC2lkeElBbXRBc0lkBAlpblBySWRTdHIJAJEDAgUDY2ZnBQ1pZHhJUHJpY2VBc0lkBAZhbXREY20JAQ1wYXJzZUludFZhbHVlAQkAkQMCBQNjZmcFC2lkeEFtdEFzRGNtBAhwcmljZURjbQkBDXBhcnNlSW50VmFsdWUBCQCRAwIFA2NmZwUNaWR4UHJpY2VBc0RjbQQDc3RzCQCRAwIFA2NmZwUJaWR4UG9vbFN0BARscEVtCAkBE3ZhbHVlT3JFcnJvck1lc3NhZ2UCCQDsBwEFBGxwSWQCCFdyIGxwIGFzCHF1YW50aXR5BAlhbUJhbGFuY2UDBQZpc0V2YWwJAQ1nZXRBY2NCYWxhbmNlAQUHYW1JZFN0cgMDBQppc09uZUFzc2V0CQAAAgUFcG10SWQFB2FtSWRTdHIHCQBlAgkBDWdldEFjY0JhbGFuY2UBBQdhbUlkU3RyBQZwbXRBbXQDBQppc09uZUFzc2V0CQENZ2V0QWNjQmFsYW5jZQEFB2FtSWRTdHIJAGUCCQENZ2V0QWNjQmFsYW5jZQEFB2FtSWRTdHIFB2luQW1BbXQECXByQmFsYW5jZQMFBmlzRXZhbAkBDWdldEFjY0JhbGFuY2UBBQdwcklkU3RyAwMFCmlzT25lQXNzZXQJAAACBQVwbXRJZAUHcHJJZFN0cgcJAGUCCQENZ2V0QWNjQmFsYW5jZQEFB3BySWRTdHIFBnBtdEFtdAMFCmlzT25lQXNzZXQJAQ1nZXRBY2NCYWxhbmNlAQUHcHJJZFN0cgkAZQIJAQ1nZXRBY2NCYWxhbmNlAQUHcHJJZFN0cgUHaW5QckFtdAQPaW5BbUFzc2V0QW10WDE4CQECdDECBQdpbkFtQW10BQZhbXREY20ED2luUHJBc3NldEFtdFgxOAkBAnQxAgUHaW5QckFtdAUIcHJpY2VEY20EDHVzZXJQcmljZVgxOAkBBGNwYmkCBQ9pblByQXNzZXRBbXRYMTgFD2luQW1Bc3NldEFtdFgxOAQMYW1CYWxhbmNlWDE4CQECdDECBQlhbUJhbGFuY2UFBmFtdERjbQQMcHJCYWxhbmNlWDE4CQECdDECBQlwckJhbGFuY2UFCHByaWNlRGNtBAFyAwkAAAIFBGxwRW0AAAQLY3VyUHJpY2VYMTgFCnplcm9CaWdJbnQEC3NsaXBwYWdlWDE4BQp6ZXJvQmlnSW50BAhscEFtdFgxOAkAdgYJALkCAgUPaW5BbUFzc2V0QW10WDE4BQ9pblByQXNzZXRBbXRYMTgAAAkAtgIBAAUAAQAABQRET1dOCQCXCgUJAQJmMQIFCGxwQW10WDE4BQZzY2FsZTgJAQJmMQIFD2luQW1Bc3NldEFtdFgxOAUGYW10RGNtCQECZjECBQ9pblByQXNzZXRBbXRYMTgFCHByaWNlRGNtCQEEY3BiaQIJALcCAgUMcHJCYWxhbmNlWDE4BQ9pblByQXNzZXRBbXRYMTgJALcCAgUMYW1CYWxhbmNlWDE4BQ9pbkFtQXNzZXRBbXRYMTgFC3NsaXBwYWdlWDE4BAtjdXJQcmljZVgxOAkBBGNwYmkCBQxwckJhbGFuY2VYMTgFDGFtQmFsYW5jZVgxOAQPc2xpcHBhZ2VSZWFsWDE4CQC8AgMJAQNhYnMBCQC4AgIFC2N1clByaWNlWDE4BQx1c2VyUHJpY2VYMTgFB3NjYWxlMTgFC2N1clByaWNlWDE4BAtzbGlwcGFnZVgxOAkBAnQxAgUIc2xpcHBhZ2UFBnNjYWxlOAMDCQECIT0CBQtjdXJQcmljZVgxOAUKemVyb0JpZ0ludAkAvwICBQ9zbGlwcGFnZVJlYWxYMTgFC3NsaXBwYWdlWDE4BwkAAgEJAKwCAgkArAICCQCsAgICD1ByaWNlIHNsaXBwYWdlIAkApgMBBQ9zbGlwcGFnZVJlYWxYMTgCAyA+IAkApgMBBQtzbGlwcGFnZVgxOAQNbHBFbWlzc2lvblgxOAkBAnQxAgUEbHBFbQUGc2NhbGU4BApwclZpYUFtWDE4CQC8AgMFD2luQW1Bc3NldEFtdFgxOAULY3VyUHJpY2VYMTgFB3NjYWxlMTgECmFtVmlhUHJYMTgJALwCAwUPaW5QckFzc2V0QW10WDE4BQdzY2FsZTE4BQtjdXJQcmljZVgxOAQMZXhwZWN0ZWRBbXRzAwkAvwICBQpwclZpYUFtWDE4BQ9pblByQXNzZXRBbXRYMTgJAJQKAgUKYW1WaWFQclgxOAUPaW5QckFzc2V0QW10WDE4CQCUCgIFD2luQW1Bc3NldEFtdFgxOAUKcHJWaWFBbVgxOAQRZXhwQW10QXNzZXRBbXRYMTgIBQxleHBlY3RlZEFtdHMCXzEEE2V4cFByaWNlQXNzZXRBbXRYMTgIBQxleHBlY3RlZEFtdHMCXzIECGxwQW10WDE4CQC8AgMFDWxwRW1pc3Npb25YMTgFE2V4cFByaWNlQXNzZXRBbXRYMTgFDHByQmFsYW5jZVgxOAkAlwoFCQECZjECBQhscEFtdFgxOAUGc2NhbGU4CQECZjECBRFleHBBbXRBc3NldEFtdFgxOAUGYW10RGNtCQECZjECBRNleHBQcmljZUFzc2V0QW10WDE4BQhwcmljZURjbQULY3VyUHJpY2VYMTgFC3NsaXBwYWdlWDE4BAljYWxjTHBBbXQIBQFyAl8xBA5jYWxjQW1Bc3NldFBtdAgFAXICXzIEDmNhbGNQckFzc2V0UG10CAUBcgJfMwQIY3VyUHJpY2UJAQJmMQIIBQFyAl80BQZzY2FsZTgEDHNsaXBwYWdlQ2FsYwkBAmYxAggFAXICXzUFBnNjYWxlOAMJAGcCAAAFCWNhbGNMcEFtdAkAAgECB0xQIDw9IDAECWVtaXRMcEFtdAMJAQEhAQUGZW1pdExwAAAFCWNhbGNMcEFtdAQGYW1EaWZmCQBlAgUHaW5BbUFtdAUOY2FsY0FtQXNzZXRQbXQEBnByRGlmZgkAZQIFB2luUHJBbXQFDmNhbGNQckFzc2V0UG10BA0kdDAxNTY4MjE2MDI3AwMFCmlzT25lQXNzZXQJAAACBQVwbXRJZAUHYW1JZFN0cgcJAJQKAgUGcG10QW10AAADAwUKaXNPbmVBc3NldAkAAAIFBXBtdElkBQdwcklkU3RyBwkAlAoCAAAFBnBtdEFtdAkAlAoCBQ5jYWxjQW1Bc3NldFBtdAUOY2FsY1ByQXNzZXRQbXQECndyaXRlQW1BbXQIBQ0kdDAxNTY4MjE2MDI3Al8xBAp3cml0ZVByQW10CAUNJHQwMTU2ODIxNjAyNwJfMgQLY29tbW9uU3RhdGUJAMwIAgkBDEludGVnZXJFbnRyeQIJAQJwbAAFCGN1clByaWNlCQDMCAIJAQxJbnRlZ2VyRW50cnkCCQECcGgCBQZoZWlnaHQIBQlsYXN0QmxvY2sJdGltZXN0YW1wBQhjdXJQcmljZQkAzAgCCQELU3RyaW5nRW50cnkCCQEDcGF1AgULdXNlckFkZHJlc3MFBnR4SWQ1OAkBEWRhdGFQdXRBY3Rpb25JbmZvCgUKd3JpdGVBbUFtdAUKd3JpdGVQckFtdAUJZW1pdExwQW10BQhjdXJQcmljZQUIc2xpcHBhZ2UFDHNsaXBwYWdlQ2FsYwUGaGVpZ2h0CAUJbGFzdEJsb2NrCXRpbWVzdGFtcAUGYW1EaWZmBQZwckRpZmYFA25pbAkAnwoNBQljYWxjTHBBbXQFCWVtaXRMcEFtdAUIY3VyUHJpY2UFCWFtQmFsYW5jZQUJcHJCYWxhbmNlBQRscEVtBQRscElkBQNzdHMFC2NvbW1vblN0YXRlBQZhbURpZmYFBnByRGlmZgUGaW5BbUlkBQZpblBySWQBA21vYQEFb3JkZXIEA2NmZwkBA2dwYwAEB2FtdEFzSWQJAJEDAgUDY2ZnBQlpZHhBbUFzSWQEBnByQXNJZAkAkQMCBQNjZmcFCWlkeFByQXNJZAQDc3RzCQENcGFyc2VJbnRWYWx1ZQEJAJEDAgUDY2ZnBQlpZHhQb29sU3QECGFtdEFzRGNtCQENcGFyc2VJbnRWYWx1ZQEJAJEDAgUDY2ZnBQtpZHhBbXRBc0RjbQQHcHJBc0RjbQkBDXBhcnNlSW50VmFsdWUBCQCRAwIFA2NmZwUNaWR4UHJpY2VBc0RjbQQPYWNjQW10QXNCYWxhbmNlCQENZ2V0QWNjQmFsYW5jZQEFB2FtdEFzSWQEDmFjY1ByQXNCYWxhbmNlCQENZ2V0QWNjQmFsYW5jZQEFBnByQXNJZAQLY3VyUHJpY2VYMTgDCQAAAggFBW9yZGVyCW9yZGVyVHlwZQUDQnV5CQEDcGNwBAUIYW10QXNEY20FB3ByQXNEY20JAGQCBQ9hY2NBbXRBc0JhbGFuY2UIBQVvcmRlcgZhbW91bnQFDmFjY1ByQXNCYWxhbmNlCQEDcGNwBAUIYW10QXNEY20FB3ByQXNEY20JAGUCBQ9hY2NBbXRBc0JhbGFuY2UIBQVvcmRlcgZhbW91bnQFDmFjY1ByQXNCYWxhbmNlBAhjdXJQcmljZQkBAmYxAgULY3VyUHJpY2VYMTgFBnNjYWxlOAMDAwkBA2lncwAGCQAAAgUDc3RzBQ5Qb29sTWF0Y2hlckRpcwYJAAACBQNzdHMFDFBvb2xTaHV0ZG93bgkAAgECDUFkbWluIGJsb2NrZWQECm9yQW10QXNzZXQICAUFb3JkZXIJYXNzZXRQYWlyC2Ftb3VudEFzc2V0BApvckFtdEFzU3RyAwkAAAIFCm9yQW10QXNzZXQFBHVuaXQCBVdBVkVTCQDYBAEJAQV2YWx1ZQEFCm9yQW10QXNzZXQECW9yUHJBc3NldAgIBQVvcmRlcglhc3NldFBhaXIKcHJpY2VBc3NldAQJb3JQckFzU3RyAwkAAAIFCW9yUHJBc3NldAUEdW5pdAIFV0FWRVMJANgEAQkBBXZhbHVlAQUJb3JQckFzc2V0AwMJAQIhPQIFCm9yQW10QXNTdHIFB2FtdEFzSWQGCQECIT0CBQlvclByQXNTdHIFBnByQXNJZAkAAgECCVdyIGFzc2V0cwQKb3JkZXJQcmljZQgFBW9yZGVyBXByaWNlBAhwcmljZURjbQkAawMFBnNjYWxlOAUHcHJBc0RjbQUIYW10QXNEY20EDmNhc3RPcmRlclByaWNlCQECdHMDBQpvcmRlclByaWNlBQZzY2FsZTgFCHByaWNlRGNtBBFpc09yZGVyUHJpY2VWYWxpZAMJAAACCAUFb3JkZXIJb3JkZXJUeXBlBQNCdXkJAGcCBQhjdXJQcmljZQUOY2FzdE9yZGVyUHJpY2UJAGcCBQ5jYXN0T3JkZXJQcmljZQUIY3VyUHJpY2UGAQJjZwEBaQMJAQIhPQIJAJADAQgFAWkIcGF5bWVudHMAAQkAAgECCjEgcG1udCBleHAEA3BtdAkBBXZhbHVlAQkAkQMCCAUBaQhwYXltZW50cwAABApwbXRBc3NldElkCQEFdmFsdWUBCAUDcG10B2Fzc2V0SWQEBnBtdEFtdAgFA3BtdAZhbW91bnQEAXIJAQNlZ28ECQDYBAEIBQFpDXRyYW5zYWN0aW9uSWQJANgEAQUKcG10QXNzZXRJZAUGcG10QW10CAUBaQZjYWxsZXIECG91dEFtQW10CAUBcgJfMQQIb3V0UHJBbXQIBQFyAl8yBANzdHMJAQ1wYXJzZUludFZhbHVlAQgFAXICXzkEBXN0YXRlCAUBcgNfMTADAwkBA2lncwAGCQAAAgUDc3RzBQxQb29sU2h1dGRvd24JAAIBCQCsAgICD0FkbWluIGJsb2NrZWQ6IAkApAMBBQNzdHMJAJcKBQUIb3V0QW1BbXQFCG91dFByQW10BQZwbXRBbXQFCnBtdEFzc2V0SWQFBXN0YXRlAQJjcAkGY2FsbGVyBHR4SWQHYW1Bc1BtdAdwckFzUG10CHNsaXBwYWdlBmVtaXRMcAppc09uZUFzc2V0BnBtdEFtdAVwbXRJZAQBcgkBA2VwbwwFBHR4SWQFCHNsaXBwYWdlCAkBBXZhbHVlAQUHYW1Bc1BtdAZhbW91bnQICQEFdmFsdWUBBQdhbUFzUG10B2Fzc2V0SWQICQEFdmFsdWUBBQdwckFzUG10BmFtb3VudAgJAQV2YWx1ZQEFB3ByQXNQbXQHYXNzZXRJZAUGY2FsbGVyBwUGZW1pdExwBQppc09uZUFzc2V0BQZwbXRBbXQFBXBtdElkBANzdHMJAQ1wYXJzZUludFZhbHVlAQgFAXICXzgDAwMJAQNpZ3MABgkAAAIFA3N0cwUKUG9vbFB1dERpcwYJAAACBQNzdHMFDFBvb2xTaHV0ZG93bgkAAgEJAKwCAgIIQmxvY2tlZDoJAKQDAQUDc3RzBQFyAQd0YWtlRmVlAQZhbW91bnQEA2ZlZQkAawMFBmFtb3VudAULZmVlUGVybWlsbGUFCHRob3VzYW5kCQCUCgIJAGUCBQZhbW91bnQFA2ZlZQUDZmVlAQFtAAQHJG1hdGNoMAkAoggBCQEDbXBrAAMJAAECBQckbWF0Y2gwAgZTdHJpbmcEAXMFByRtYXRjaDAJANkEAQUBcwMJAAECBQckbWF0Y2gwAgRVbml0BQR1bml0CQACAQILTWF0Y2ggZXJyb3IBAnBtAAQHJG1hdGNoMAkAoggBCQEEcG1wawADCQABAgUHJG1hdGNoMAIGU3RyaW5nBAFzBQckbWF0Y2gwCQDZBAEFAXMDCQABAgUHJG1hdGNoMAIEVW5pdAUEdW5pdAkAAgECC01hdGNoIGVycm9yAAJwZAkAAgECEVBlcm1pc3Npb24gZGVuaWVkAQJtbQEBaQQHJG1hdGNoMAkBAW0AAwkAAQIFByRtYXRjaDACCkJ5dGVWZWN0b3IEAnBrBQckbWF0Y2gwAwkAAAIIBQFpD2NhbGxlclB1YmxpY0tleQUCcGsGBQJwZAMJAAECBQckbWF0Y2gwAgRVbml0AwkAAAIIBQFpBmNhbGxlcgUEdGhpcwYFAnBkCQACAQILTWF0Y2ggZXJyb3IVAWkBC2NvbnN0cnVjdG9yAQJmYwQBYwkBAm1tAQUBaQMJAAACBQFjBQFjCQDMCAIJAQtTdHJpbmdFbnRyeQIJAQJmYwAFAmZjBQNuaWwJAAIBAiRTdHJpY3QgdmFsdWUgaXMgbm90IGVxdWFsIHRvIGl0c2VsZi4BaQEKc2V0TWFuYWdlcgEXcGVuZGluZ01hbmFnZXJQdWJsaWNLZXkEAWMJAQJtbQEFAWkDCQAAAgUBYwUBYwQCY20JANkEAQUXcGVuZGluZ01hbmFnZXJQdWJsaWNLZXkDCQAAAgUCY20FAmNtCQDMCAIJAQtTdHJpbmdFbnRyeQIJAQRwbXBrAAUXcGVuZGluZ01hbmFnZXJQdWJsaWNLZXkFA25pbAkAAgECJFN0cmljdCB2YWx1ZSBpcyBub3QgZXF1YWwgdG8gaXRzZWxmLgkAAgECJFN0cmljdCB2YWx1ZSBpcyBub3QgZXF1YWwgdG8gaXRzZWxmLgFpAQ5jb25maXJtTWFuYWdlcgAEAXAJAQJwbQAEA2hwbQMJAQlpc0RlZmluZWQBBQFwBgkAAgECEk5vIHBlbmRpbmcgbWFuYWdlcgMJAAACBQNocG0FA2hwbQQDY3BtAwkAAAIIBQFpD2NhbGxlclB1YmxpY0tleQkBBXZhbHVlAQUBcAYJAAIBAhtZb3UgYXJlIG5vdCBwZW5kaW5nIG1hbmFnZXIDCQAAAgUDY3BtBQNjcG0JAMwIAgkBC1N0cmluZ0VudHJ5AgkBA21wawAJANgEAQkBBXZhbHVlAQUBcAkAzAgCCQELRGVsZXRlRW50cnkBCQEEcG1wawAFA25pbAkAAgECJFN0cmljdCB2YWx1ZSBpcyBub3QgZXF1YWwgdG8gaXRzZWxmLgkAAgECJFN0cmljdCB2YWx1ZSBpcyBub3QgZXF1YWwgdG8gaXRzZWxmLgFpAQNwdXQCBHNsaXAJYXV0b1N0YWtlBAdmYWN0Q2ZnCQEDZ2ZjAAQLc3Rha2luZ0NudHIJARN2YWx1ZU9yRXJyb3JNZXNzYWdlAgkApggBCQCRAwIFB2ZhY3RDZmcFD2lkeEZhY3RTdGFrQ250cgIKV3Igc3QgYWRkcgQIc2xpcENudHIJARN2YWx1ZU9yRXJyb3JNZXNzYWdlAgkApggBCQCRAwIFB2ZhY3RDZmcFEGlkeEZhY3RTbGlwcENudHICCldyIHNsIGFkZHIDCQBmAgAABQRzbGlwCQACAQIOV3Jvbmcgc2xpcHBhZ2UDCQECIT0CCQCQAwEIBQFpCHBheW1lbnRzAAIJAAIBAgwyIHBtbnRzIGV4cGQEAWUJAQJjcAkJAKUIAQgFAWkGY2FsbGVyCQDYBAEIBQFpDXRyYW5zYWN0aW9uSWQJAQ9BdHRhY2hlZFBheW1lbnQCCAkBBXZhbHVlAQkAkQMCCAUBaQhwYXltZW50cwAAB2Fzc2V0SWQICQEFdmFsdWUBCQCRAwIIBQFpCHBheW1lbnRzAAAGYW1vdW50CQCRAwIIBQFpCHBheW1lbnRzAAEFBHNsaXAGBwAAAgAECWVtaXRMcEFtdAgFAWUCXzIECWxwQXNzZXRJZAgFAWUCXzcEBXN0YXRlCAUBZQJfOQQGYW1EaWZmCAUBZQNfMTAEBnByRGlmZggFAWUDXzExBARhbUlkCAUBZQNfMTIEBHBySWQIBQFlA18xMwQBcgkA/AcEBQNmY2ECBGVtaXQJAMwIAgUJZW1pdExwQW10BQNuaWwFA25pbAMJAAACBQFyBQFyBAJlbAQHJG1hdGNoMAUBcgMJAAECBQckbWF0Y2gwAgdBZGRyZXNzBAZsZWdhY3kFByRtYXRjaDAJAPwHBAUGbGVnYWN5AgRlbWl0CQDMCAIFCWVtaXRMcEFtdAUDbmlsBQNuaWwFBHVuaXQDCQAAAgUCZWwFAmVsBAJzYQMJAGYCBQZhbURpZmYAAAkA/AcEBQhzbGlwQ250cgIDcHV0BQNuaWwJAMwIAgkBD0F0dGFjaGVkUGF5bWVudAIFBGFtSWQFBmFtRGlmZgUDbmlsBQNuaWwDCQAAAgUCc2EFAnNhBAJzcAMJAGYCBQZwckRpZmYAAAkA/AcEBQhzbGlwQ250cgIDcHV0BQNuaWwJAMwIAgkBD0F0dGFjaGVkUGF5bWVudAIFBHBySWQFBnByRGlmZgUDbmlsBQNuaWwDCQAAAgUCc3AFAnNwBAhscFRybnNmcgMFCWF1dG9TdGFrZQQCc3MJAPwHBAULc3Rha2luZ0NudHICBXN0YWtlBQNuaWwJAMwIAgkBD0F0dGFjaGVkUGF5bWVudAIFCWxwQXNzZXRJZAUJZW1pdExwQW10BQNuaWwDCQAAAgUCc3MFAnNzBQNuaWwJAAIBAiRTdHJpY3QgdmFsdWUgaXMgbm90IGVxdWFsIHRvIGl0c2VsZi4JAMwIAgkBDlNjcmlwdFRyYW5zZmVyAwgFAWkGY2FsbGVyBQllbWl0THBBbXQFCWxwQXNzZXRJZAUDbmlsCQDOCAIFBXN0YXRlBQhscFRybnNmcgkAAgECJFN0cmljdCB2YWx1ZSBpcyBub3QgZXF1YWwgdG8gaXRzZWxmLgkAAgECJFN0cmljdCB2YWx1ZSBpcyBub3QgZXF1YWwgdG8gaXRzZWxmLgkAAgECJFN0cmljdCB2YWx1ZSBpcyBub3QgZXF1YWwgdG8gaXRzZWxmLgkAAgECJFN0cmljdCB2YWx1ZSBpcyBub3QgZXF1YWwgdG8gaXRzZWxmLgFpAQlwdXRPbmVUa24FC2FtQXNzZXRQYXJ0C3ByQXNzZXRQYXJ0BW91dExwCHNsaXBwYWdlCWF1dG9TdGFrZQQDY2ZnCQEDZ2ZjAAQLc3Rha2luZ0NudHIJARN2YWx1ZU9yRXJyb3JNZXNzYWdlAgkApggBCQCRAwIFA2NmZwUPaWR4RmFjdFN0YWtDbnRyAgpXciBzdCBhZGRyBAhzbGlwQ250cgkBE3ZhbHVlT3JFcnJvck1lc3NhZ2UCCQCmCAEJAJEDAgUDY2ZnBRBpZHhGYWN0U2xpcHBDbnRyAgpXciBzbCBhZGRyBAdnd3hDbnRyCQETdmFsdWVPckVycm9yTWVzc2FnZQIJAKYIAQkAkQMCBQNjZmcFEWlkeEZhY3RHd3hSZXdDbnRyAgtXciBnd3ggYWRkcgQHcG9vbENmZwkBA2dwYwAEBGFtSWQJAJEDAgUHcG9vbENmZwUJaWR4QW1Bc0lkBARwcklkCQCRAwIFB3Bvb2xDZmcFCWlkeFByQXNJZAQFYW1EY20JAQ1wYXJzZUludFZhbHVlAQkAkQMCBQdwb29sQ2ZnBQtpZHhBbXRBc0RjbQQFcHJEY20JAQ1wYXJzZUludFZhbHVlAQkAkQMCBQdwb29sQ2ZnBQ1pZHhQcmljZUFzRGNtBAVhZGRvbgkBC3ZhbHVlT3JFbHNlAgkAnQgCBQR0aGlzCQEDYWRhAAIABAt1c2VyQWRkcmVzcwMJAAACBQVhZGRvbgkApQgBCAUBaQZjYWxsZXIIBQFpDG9yaWdpbkNhbGxlcggFAWkGY2FsbGVyAwMDAwkAZwIAAAUIc2xpcHBhZ2UGCQBnAgAABQthbUFzc2V0UGFydAYJAGcCAAAFC3ByQXNzZXRQYXJ0BgkAZwIAAAUFb3V0THAJAAIBAgxXcm9uZyBwYXJhbXMDCQECIT0CCQCQAwEIBQFpCHBheW1lbnRzAAEJAAIBAgsxIHBtbnQgZXhwZAQDcG10CQEFdmFsdWUBCQCRAwIIBQFpCHBheW1lbnRzAAAECnBtdEFzc2V0SWQJANgEAQkBBXZhbHVlAQgFA3BtdAdhc3NldElkBBBwYXltZW50QW1vdW50UmF3CAUDcG10BmFtb3VudAQNJHQwMjQ2NDQyNDY5NgkBB3Rha2VGZWUBBRBwYXltZW50QW1vdW50UmF3BAZwbXRBbXQIBQ0kdDAyNDY0NDI0Njk2Al8xBAlmZWVBbW91bnQIBQ0kdDAyNDY0NDI0Njk2Al8yAwkAZgIAgK3iBAUQcGF5bWVudEFtb3VudFJhdwkAAgECDVdyb25nIHBtdCBhbXQECWFtQmFsYW5jZQkBDWdldEFjY0JhbGFuY2UBBQRhbUlkBAlwckJhbGFuY2UJAQ1nZXRBY2NCYWxhbmNlAQUEcHJJZAQNJHQwMjQ4NTYyNTQ3MgMJAAACBQpwbXRBc3NldElkBQRhbUlkAwMJAGYCBRBwYXltZW50QW1vdW50UmF3BQlhbUJhbGFuY2UGCQBmAgULYW1Bc3NldFBhcnQFBnBtdEFtdAkAAgECFmludmFsaWQgcGF5bWVudCBhbW91bnQJAJgKBgkAZQIFCWFtQmFsYW5jZQUQcGF5bWVudEFtb3VudFJhdwUJcHJCYWxhbmNlCQBlAgUGcG10QW10BQthbUFzc2V0UGFydAULcHJBc3NldFBhcnQAAAAAAwkAAAIFCnBtdEFzc2V0SWQFBHBySWQDAwkAZgIFEHBheW1lbnRBbW91bnRSYXcFCXByQmFsYW5jZQYJAGYCBQtwckFzc2V0UGFydAUGcG10QW10CQACAQIWaW52YWxpZCBwYXltZW50IGFtb3VudAkAmAoGBQlhbUJhbGFuY2UJAGUCBQlwckJhbGFuY2UFEHBheW1lbnRBbW91bnRSYXcAAAAACQBlAgUGcG10QW10BQtwckFzc2V0UGFydAULYW1Bc3NldFBhcnQJAAIBAhB3cm9uZyBwbXRBc3NldElkBAxhbUJhbGFuY2VOb3cIBQ0kdDAyNDg1NjI1NDcyAl8xBAxwckJhbGFuY2VOb3cIBQ0kdDAyNDg1NjI1NDcyAl8yBAx2aXJ0U3dhcEluQW0IBQ0kdDAyNDg1NjI1NDcyAl8zBA12aXJ0U3dhcE91dFByCAUNJHQwMjQ4NTYyNTQ3MgJfNAQMdmlydFN3YXBJblByCAUNJHQwMjQ4NTYyNTQ3MgJfNQQNdmlydFN3YXBPdXRBbQgFDSR0MDI0ODU2MjU0NzICXzYEAkQwCQD8BwQFB2d3eENudHICBWNhbGNECQDMCAIJAKQDAQUMYW1CYWxhbmNlTm93CQDMCAIJAKQDAQUMcHJCYWxhbmNlTm93CQDMCAIFAUEJAMwIAgUFQW11bHQJAMwIAgUFRGNvbnYFA25pbAUDbmlsBAJEMQkA/AcEBQdnd3hDbnRyAgVjYWxjRAkAzAgCCQCmAwEJALYCAQkAZQIJAGQCBQxhbUJhbGFuY2VOb3cFDHZpcnRTd2FwSW5BbQUNdmlydFN3YXBPdXRBbQkAzAgCCQCmAwEJALYCAQkAZQIJAGQCBQxwckJhbGFuY2VOb3cFDHZpcnRTd2FwSW5QcgUNdmlydFN3YXBPdXRQcgkAzAgCBQFBCQDMCAIFBUFtdWx0CQDMCAIFBURjb252BQNuaWwFA25pbAQGRDB2c0QxCQECdmQDCQCnAwEJAQNzdHIBBQJEMQkApwMBCQEDc3RyAQUCRDAFCnNsaXBwYWdlNEQDCQAAAgUGRDB2c0QxBQZEMHZzRDEEBmVzdFB1dAkBAmNwCQkApQgBCAUBaQZjYWxsZXIJANgEAQgFAWkNdHJhbnNhY3Rpb25JZAkBD0F0dGFjaGVkUGF5bWVudAIJANkEAQUEYW1JZAULYW1Bc3NldFBhcnQJAQ9BdHRhY2hlZFBheW1lbnQCCQDZBAEFBHBySWQFC3ByQXNzZXRQYXJ0BQhzbGlwcGFnZQYGBQZwbXRBbXQFCnBtdEFzc2V0SWQEB2VzdGltTFAIBQZlc3RQdXQCXzIECWxwQXNzZXRJZAgFBmVzdFB1dAJfNwQFc3RhdGUIBQZlc3RQdXQCXzkEBmFtRGlmZggFBmVzdFB1dANfMTAEBnByRGlmZggFBmVzdFB1dANfMTEECWxwQ2FsY1JlcwkBA3ZhZAMJALYCAQUHZXN0aW1MUAkAtgIBBQVvdXRMcAkAtgIBBQhzbGlwcGFnZQQJZW1pdExwQW10CQCgAwEIBQlscENhbGNSZXMCXzIEAWUJAPwHBAUDZmNhAgRlbWl0CQDMCAIFCWVtaXRMcEFtdAUDbmlsBQNuaWwDCQAAAgUBZQUBZQQCZWwEByRtYXRjaDAFAWUDCQABAgUHJG1hdGNoMAIHQWRkcmVzcwQGbGVnYWN5BQckbWF0Y2gwCQD8BwQFBmxlZ2FjeQIEZW1pdAkAzAgCBQllbWl0THBBbXQFA25pbAUDbmlsBQR1bml0AwkAAAIFAmVsBQJlbAQCc2EDCQBmAgUGYW1EaWZmAAAJAPwHBAUIc2xpcENudHICA3B1dAUDbmlsCQDMCAIJAQ9BdHRhY2hlZFBheW1lbnQCCQDZBAEFBGFtSWQFBmFtRGlmZgUDbmlsBQNuaWwDCQAAAgUCc2EFAnNhBAJzcAMJAGYCBQZwckRpZmYAAAkA/AcEBQhzbGlwQ250cgIDcHV0BQNuaWwJAMwIAgkBD0F0dGFjaGVkUGF5bWVudAIJANkEAQUEcHJJZAUGcHJEaWZmBQNuaWwFA25pbAMJAAACBQJzcAUCc3AECGxwVHJuc2ZyAwUJYXV0b1N0YWtlBAJzcwkA/AcEBQtzdGFraW5nQ250cgIFc3Rha2UFA25pbAkAzAgCCQEPQXR0YWNoZWRQYXltZW50AgUJbHBBc3NldElkBQllbWl0THBBbXQFA25pbAMJAAACBQJzcwUCc3MFA25pbAkAAgECJFN0cmljdCB2YWx1ZSBpcyBub3QgZXF1YWwgdG8gaXRzZWxmLgkAzAgCCQEOU2NyaXB0VHJhbnNmZXIDCAUBaQZjYWxsZXIFCWVtaXRMcEFtdAUJbHBBc3NldElkBQNuaWwEEHNlbmRGZWVUb01hdGNoZXIDCQBmAgUJZmVlQW1vdW50AAAJAMwIAgkBDlNjcmlwdFRyYW5zZmVyAwUTZmVlQ29sbGVjdG9yQWRkcmVzcwUJZmVlQW1vdW50CQDZBAEFCnBtdEFzc2V0SWQFA25pbAUDbmlsCQDOCAIJAM4IAgUFc3RhdGUFCGxwVHJuc2ZyBRBzZW5kRmVlVG9NYXRjaGVyCQACAQIkU3RyaWN0IHZhbHVlIGlzIG5vdCBlcXVhbCB0byBpdHNlbGYuCQACAQIkU3RyaWN0IHZhbHVlIGlzIG5vdCBlcXVhbCB0byBpdHNlbGYuCQACAQIkU3RyaWN0IHZhbHVlIGlzIG5vdCBlcXVhbCB0byBpdHNlbGYuCQACAQIkU3RyaWN0IHZhbHVlIGlzIG5vdCBlcXVhbCB0byBpdHNlbGYuCQACAQIkU3RyaWN0IHZhbHVlIGlzIG5vdCBlcXVhbCB0byBpdHNlbGYuAWkBCnB1dEZvckZyZWUBB21heFNscGcDCQBmAgAABQdtYXhTbHBnCQACAQIKV3Jvbmcgc2xwZwMJAQIhPQIJAJADAQgFAWkIcGF5bWVudHMAAgkAAgECDDIgcG1udHMgZXhwZAQGZXN0UHV0CQECY3AJCQClCAEIBQFpBmNhbGxlcgkA2AQBCAUBaQ10cmFuc2FjdGlvbklkCQEPQXR0YWNoZWRQYXltZW50AggJAQV2YWx1ZQEJAJEDAggFAWkIcGF5bWVudHMAAAdhc3NldElkCAkBBXZhbHVlAQkAkQMCCAUBaQhwYXltZW50cwAABmFtb3VudAkAkQMCCAUBaQhwYXltZW50cwABBQdtYXhTbHBnBwcAAAIACAUGZXN0UHV0Al85AWkBA2dldAAEAXIJAQJjZwEFAWkECW91dEFtdEFtdAgFAXICXzEECG91dFByQW10CAUBcgJfMgQGcG10QW10CAUBcgJfMwQKcG10QXNzZXRJZAgFAXICXzQEBXN0YXRlCAUBcgJfNQQBYgkA/AcEBQNmY2ECBGJ1cm4JAMwIAgUGcG10QW10BQNuaWwJAMwIAgkBD0F0dGFjaGVkUGF5bWVudAIFCnBtdEFzc2V0SWQFBnBtdEFtdAUDbmlsAwkAAAIFAWIFAWIFBXN0YXRlCQACAQIkU3RyaWN0IHZhbHVlIGlzIG5vdCBlcXVhbCB0byBpdHNlbGYuAWkBCWdldE9uZVRrbgUKZXhjaFJlc3VsdAdub3RVc2VkCW91dEFtb3VudApvdXRBc3NldElkCHNsaXBwYWdlAwkBAiE9AgkAkAMBCAUBaQhwYXltZW50cwABCQACAQILMSBwbW50IGV4cGQEA2NmZwkBA2dwYwAEBGxwSWQJAJEDAgUDY2ZnBQlpZHhMUEFzSWQEBGFtSWQJAJEDAgUDY2ZnBQlpZHhBbUFzSWQEBHBySWQJAJEDAgUDY2ZnBQlpZHhQckFzSWQEBWFtRGNtCQENcGFyc2VJbnRWYWx1ZQEJAJEDAgUDY2ZnBQtpZHhBbXRBc0RjbQQFcHJEY20JAQ1wYXJzZUludFZhbHVlAQkAkQMCBQNjZmcFDWlkeFByaWNlQXNEY20EA3N0cwkAkQMCBQNjZmcFCWlkeFBvb2xTdAQHZmFjdENmZwkBA2dmYwAEB2d3eENudHIJARN2YWx1ZU9yRXJyb3JNZXNzYWdlAgkApggBCQCRAwIFB2ZhY3RDZmcFEWlkeEZhY3RHd3hSZXdDbnRyAgpXciBzbCBhZGRyBANwbXQJAQV2YWx1ZQEJAJEDAggFAWkIcGF5bWVudHMAAAQFYWRkb24JAQt2YWx1ZU9yRWxzZQIJAJ0IAgUEdGhpcwkBA2FkYQACAAQLdXNlckFkZHJlc3MDCQAAAgUFYWRkb24JAKUIAQgFAWkGY2FsbGVyCAUBaQxvcmlnaW5DYWxsZXIIBQFpBmNhbGxlcgQGdHhJZDU4CQDYBAEIBQFpDXRyYW5zYWN0aW9uSWQECnBtdEFzc2V0SWQJAQV2YWx1ZQEIBQNwbXQHYXNzZXRJZAQGcG10QW10CAUDcG10BmFtb3VudAMJAGYCAICU69wDBQZwbXRBbXQJAAIBAg1NaW4gcG10IDEwIExQAwMDCQBmAgAABQhzbGlwcGFnZQYJAGYCAAAFCmV4Y2hSZXN1bHQGCQBmAgAABQlvdXRBbW91bnQJAAIBAgxXcm9uZyBwYXJhbXMDCQECIT0CBQRscElkCQDYBAEFCnBtdEFzc2V0SWQJAAIBAghXcm9uZyBMUAQBcgkBA2VnbwQJANgEAQgFAWkNdHJhbnNhY3Rpb25JZAkA2AQBBQpwbXRBc3NldElkBQZwbXRBbXQIBQFpBmNhbGxlcgQKZXN0aW1BbUFtdAgFAXICXzEECmVzdGltUHJBbXQIBQFyAl8yBAlhbUJhbGFuY2UJAQ1nZXRBY2NCYWxhbmNlAQUEYW1JZAQJcHJCYWxhbmNlCQENZ2V0QWNjQmFsYW5jZQEFBHBySWQEDSR0MDMwNDE1MzA4NzUDCQAAAgUKb3V0QXNzZXRJZAUEYW1JZAkAmQoHCQBlAgUJYW1CYWxhbmNlBQplc3RpbUFtQW10CQBlAgUJcHJCYWxhbmNlBQplc3RpbVByQW10BQpleGNoUmVzdWx0BQplc3RpbVByQW10AAAAAAkAZAIFCmVzdGltQW1BbXQFCmV4Y2hSZXN1bHQDCQAAAgUKb3V0QXNzZXRJZAUEcHJJZAkAmQoHCQBlAgUJYW1CYWxhbmNlBQplc3RpbUFtQW10CQBlAgUJcHJCYWxhbmNlBQplc3RpbVByQW10AAAAAAUKZXhjaFJlc3VsdAUKZXN0aW1BbUFtdAkAZAIFCmVzdGltUHJBbXQFCmV4Y2hSZXN1bHQJAAIBAhB3cm9uZyBvdXRBc3NldElkBAxhbUJhbGFuY2VOb3cIBQ0kdDAzMDQxNTMwODc1Al8xBAxwckJhbGFuY2VOb3cIBQ0kdDAzMDQxNTMwODc1Al8yBAx2aXJ0U3dhcEluQW0IBQ0kdDAzMDQxNTMwODc1Al8zBA12aXJ0U3dhcE91dFByCAUNJHQwMzA0MTUzMDg3NQJfNAQMdmlydFN3YXBJblByCAUNJHQwMzA0MTUzMDg3NQJfNQQNdmlydFN3YXBPdXRBbQgFDSR0MDMwNDE1MzA4NzUCXzYEC3RvdGFsR2V0UmF3CAUNJHQwMzA0MTUzMDg3NQJfNwMDCQBmAgAABQx2aXJ0U3dhcEluQW0GCQBmAgAABQx2aXJ0U3dhcEluUHIJAAIBAgpXcm9uZyBjYWxjBAJEMAkA/AcEBQdnd3hDbnRyAgVjYWxjRAkAzAgCCQCkAwEFDGFtQmFsYW5jZU5vdwkAzAgCCQCkAwEFDHByQmFsYW5jZU5vdwkAzAgCBQFBCQDMCAIFBUFtdWx0CQDMCAIFBURjb252BQNuaWwFA25pbAQCRDEJAPwHBAUHZ3d4Q250cgIFY2FsY0QJAMwIAgkApAMBCQBkAgkAZQIFDGFtQmFsYW5jZU5vdwUMdmlydFN3YXBJbkFtBQ12aXJ0U3dhcE91dEFtCQDMCAIJAKQDAQkAZQIJAGQCBQxwckJhbGFuY2VOb3cFDXZpcnRTd2FwT3V0UHIFDHZpcnRTd2FwSW5QcgkAzAgCBQFBCQDMCAIFBUFtdWx0CQDMCAIFBURjb252BQNuaWwFA25pbAQGRDB2c0QxCQECdmQDCQCnAwEJAQNzdHIBBQJEMQkApwMBCQEDc3RyAQUCRDAFCnNsaXBwYWdlNEQDCQAAAgUGRDB2c0QxBQZEMHZzRDEECHRvdGFsR2V0CAkBB3Rha2VGZWUBBQt0b3RhbEdldFJhdwJfMQQIZmluYWxSZXMJAQN2YWQDCQC2AgEFCHRvdGFsR2V0CQC2AgEFCW91dEFtb3VudAkAtgIBBQhzbGlwcGFnZQMJAAACBQhmaW5hbFJlcwUIZmluYWxSZXMEDSR0MDMxNjIyMzE3MjYDCQAAAgUKb3V0QXNzZXRJZAUEYW1JZAkAlAoCCQCgAwEIBQhmaW5hbFJlcwJfMgAACQCUCgIAAAkAoAMBCAUIZmluYWxSZXMCXzIEBW91dEFtCAUNJHQwMzE2MjIzMTcyNgJfMQQFb3V0UHIIBQ0kdDAzMTYyMjMxNzI2Al8yBAt0b3RhbEFtb3VudAkAZAIFBW91dEFtBQVvdXRQcgQJZmVlQW1vdW50CQBlAgULdG90YWxHZXRSYXcFCHRvdGFsR2V0BBFvdXRBc3NldElkT3JXYXZlcwMJAAACBQpvdXRBc3NldElkAgVXQVZFUwUEdW5pdAkA2QQBBQpvdXRBc3NldElkBBBzZW5kRmVlVG9NYXRjaGVyAwkAZgIFCWZlZUFtb3VudAAACQDMCAIJAQ5TY3JpcHRUcmFuc2ZlcgMFE2ZlZUNvbGxlY3RvckFkZHJlc3MFCWZlZUFtb3VudAURb3V0QXNzZXRJZE9yV2F2ZXMFA25pbAUDbmlsBAhjdXJQclgxOAkBBGNwYmkCCQECdDECBQlwckJhbGFuY2UFBXByRGNtCQECdDECBQlhbUJhbGFuY2UFBWFtRGNtBAVjdXJQcgkBAmYxAgUIY3VyUHJYMTgFBnNjYWxlOAQFc3RhdGUJAMwIAgkBDlNjcmlwdFRyYW5zZmVyAwULdXNlckFkZHJlc3MFC3RvdGFsQW1vdW50BRFvdXRBc3NldElkT3JXYXZlcwkAzAgCCQELU3RyaW5nRW50cnkCCQEDZ2F1AgkApQgBBQt1c2VyQWRkcmVzcwUGdHhJZDU4CQERZGF0YUdldEFjdGlvbkluZm8GBQVvdXRBbQUFb3V0UHIFBnBtdEFtdAUFY3VyUHIFBmhlaWdodAgFCWxhc3RCbG9jawl0aW1lc3RhbXAJAMwIAgkBDEludGVnZXJFbnRyeQIJAQJwbAAFBWN1clByCQDMCAIJAQxJbnRlZ2VyRW50cnkCCQECcGgCBQZoZWlnaHQIBQlsYXN0QmxvY2sJdGltZXN0YW1wBQVjdXJQcgUDbmlsAwkAAAIFBXN0YXRlBQVzdGF0ZQQEYnVybgkA/AcEBQNmY2ECBGJ1cm4JAMwIAgUGcG10QW10BQNuaWwJAMwIAgkBD0F0dGFjaGVkUGF5bWVudAIFCnBtdEFzc2V0SWQFBnBtdEFtdAUDbmlsAwkAAAIFBGJ1cm4FBGJ1cm4JAM4IAgUFc3RhdGUFEHNlbmRGZWVUb01hdGNoZXIJAAIBAiRTdHJpY3QgdmFsdWUgaXMgbm90IGVxdWFsIHRvIGl0c2VsZi4JAAIBAiRTdHJpY3QgdmFsdWUgaXMgbm90IGVxdWFsIHRvIGl0c2VsZi4JAAIBAiRTdHJpY3QgdmFsdWUgaXMgbm90IGVxdWFsIHRvIGl0c2VsZi4JAAIBAiRTdHJpY3QgdmFsdWUgaXMgbm90IGVxdWFsIHRvIGl0c2VsZi4BaQEJZ2V0Tm9MZXNzAhJub0xlc3NUaGVuQW10QXNzZXQUbm9MZXNzVGhlblByaWNlQXNzZXQEAXIJAQJjZwEFAWkECG91dEFtQW10CAUBcgJfMQQIb3V0UHJBbXQIBQFyAl8yBAZwbXRBbXQIBQFyAl8zBApwbXRBc3NldElkCAUBcgJfNAQFc3RhdGUIBQFyAl81AwkAZgIFEm5vTGVzc1RoZW5BbXRBc3NldAUIb3V0QW1BbXQJAAIBCQCsAgIJAKwCAgkArAICAglGYWlsZWQ6ICAJAKQDAQUIb3V0QW1BbXQCAyA8IAkApAMBBRJub0xlc3NUaGVuQW10QXNzZXQDCQBmAgUUbm9MZXNzVGhlblByaWNlQXNzZXQFCG91dFByQW10CQACAQkArAICCQCsAgIJAKwCAgIIRmFpbGVkOiAJAKQDAQUIb3V0UHJBbXQCAyA8IAkApAMBBRRub0xlc3NUaGVuUHJpY2VBc3NldAQUYnVybkxQQXNzZXRPbkZhY3RvcnkJAPwHBAUDZmNhAgRidXJuCQDMCAIFBnBtdEFtdAUDbmlsCQDMCAIJAQ9BdHRhY2hlZFBheW1lbnQCBQpwbXRBc3NldElkBQZwbXRBbXQFA25pbAMJAAACBRRidXJuTFBBc3NldE9uRmFjdG9yeQUUYnVybkxQQXNzZXRPbkZhY3RvcnkFBXN0YXRlCQACAQIkU3RyaWN0IHZhbHVlIGlzIG5vdCBlcXVhbCB0byBpdHNlbGYuAWkBDXVuc3Rha2VBbmRHZXQBBmFtb3VudAQNY2hlY2tQYXltZW50cwMJAQIhPQIJAJADAQgFAWkIcGF5bWVudHMAAAkAAgECDU5vIHBtbnRzIGV4cGQGAwkAAAIFDWNoZWNrUGF5bWVudHMFDWNoZWNrUGF5bWVudHMEA2NmZwkBA2dwYwAECmZhY3RvcnlDZmcJAQNnZmMABAlscEFzc2V0SWQJANkEAQkAkQMCBQNjZmcFCWlkeExQQXNJZAQHc3Rha2luZwkBE3ZhbHVlT3JFcnJvck1lc3NhZ2UCCQCmCAEJAJEDAgUKZmFjdG9yeUNmZwUPaWR4RmFjdFN0YWtDbnRyAgpXciBzdCBhZGRyBAp1bnN0YWtlSW52CQD8BwQFB3N0YWtpbmcCB3Vuc3Rha2UJAMwIAgkA2AQBBQlscEFzc2V0SWQJAMwIAgUGYW1vdW50BQNuaWwFA25pbAMJAAACBQp1bnN0YWtlSW52BQp1bnN0YWtlSW52BAFyCQEDZWdvBAkA2AQBCAUBaQ10cmFuc2FjdGlvbklkCQDYBAEFCWxwQXNzZXRJZAUGYW1vdW50CAUBaQZjYWxsZXIEA3N0cwkBDXBhcnNlSW50VmFsdWUBCAUBcgJfOQQFc3RhdGUIBQFyA18xMAQBdgMDCQEDaWdzAAYJAAACBQNzdHMFDFBvb2xTaHV0ZG93bgkAAgEJAKwCAgIJQmxvY2tlZDogCQCkAwEFA3N0cwYDCQAAAgUBdgUBdgQFYnVybkEJAPwHBAUDZmNhAgRidXJuCQDMCAIFBmFtb3VudAUDbmlsCQDMCAIJAQ9BdHRhY2hlZFBheW1lbnQCBQlscEFzc2V0SWQFBmFtb3VudAUDbmlsAwkAAAIFBWJ1cm5BBQVidXJuQQUFc3RhdGUJAAIBAiRTdHJpY3QgdmFsdWUgaXMgbm90IGVxdWFsIHRvIGl0c2VsZi4JAAIBAiRTdHJpY3QgdmFsdWUgaXMgbm90IGVxdWFsIHRvIGl0c2VsZi4JAAIBAiRTdHJpY3QgdmFsdWUgaXMgbm90IGVxdWFsIHRvIGl0c2VsZi4JAAIBAiRTdHJpY3QgdmFsdWUgaXMgbm90IGVxdWFsIHRvIGl0c2VsZi4BaQEIYWN0aXZhdGUCCGFtdEFzU3RyB3ByQXNTdHIDCQECIT0CCQClCAEIBQFpBmNhbGxlcgkApQgBBQNmY2EJAAIBAgZkZW5pZWQJAJQKAgkAzAgCCQELU3RyaW5nRW50cnkCCQECYWEABQhhbXRBc1N0cgkAzAgCCQELU3RyaW5nRW50cnkCCQECcGEABQdwckFzU3RyBQNuaWwCB3N1Y2Nlc3MBaQEEc2V0UwIBawF2AwkBAiE9AgkApQgBCAUBaQZjYWxsZXIJAQRzdHJmAgUEdGhpcwkBA2FkYQAFAnBkCQDMCAIJAQtTdHJpbmdFbnRyeQIFAWsFAXYFA25pbAFpAQRzZXRJAgFrAXYDCQECIT0CCQClCAEIBQFpBmNhbGxlcgkBBHN0cmYCBQR0aGlzCQEDYWRhAAUCcGQJAMwIAgkBDEludGVnZXJFbnRyeQIFAWsFAXYFA25pbAFpARxnZXRQb29sQ29uZmlnV3JhcHBlclJFQURPTkxZAAkAlAoCBQNuaWwJAQNncGMAAWkBHGdldEFjY0JhbGFuY2VXcmFwcGVyUkVBRE9OTFkBB2Fzc2V0SWQJAJQKAgUDbmlsCQENZ2V0QWNjQmFsYW5jZQEFB2Fzc2V0SWQBaQEZY2FsY1ByaWNlc1dyYXBwZXJSRUFET05MWQMFYW1BbXQFcHJBbXQFbHBBbXQEAnByCQEKY2FsY1ByaWNlcwMFBWFtQW10BQVwckFtdAUFbHBBbXQJAJQKAgUDbmlsCQDMCAIJAKYDAQkAkQMCBQJwcgAACQDMCAIJAKYDAQkAkQMCBQJwcgABCQDMCAIJAKYDAQkAkQMCBQJwcgACBQNuaWwBaQEWZnJvbVgxOFdyYXBwZXJSRUFET05MWQIDdmFsDHJlc1NjYWxlTXVsdAkAlAoCBQNuaWwJAQJmMQIJAKcDAQUDdmFsBQxyZXNTY2FsZU11bHQBaQEUdG9YMThXcmFwcGVyUkVBRE9OTFkCB29yaWdWYWwNb3JpZ1NjYWxlTXVsdAkAlAoCBQNuaWwJAKYDAQkBAnQxAgUHb3JpZ1ZhbAUNb3JpZ1NjYWxlTXVsdAFpAR5jYWxjUHJpY2VCaWdJbnRXcmFwcGVyUkVBRE9OTFkCCHByQW10WDE4CGFtQW10WDE4CQCUCgIFA25pbAkApgMBCQEEY3BiaQIJAKcDAQUIcHJBbXRYMTgJAKcDAQUIYW1BbXRYMTgBaQEjZXN0aW1hdGVQdXRPcGVyYXRpb25XcmFwcGVyUkVBRE9OTFkJBnR4SWQ1OAhzbGlwcGFnZQdpbkFtQW10BmluQW1JZAdpblByQW10BmluUHJJZAd1c3JBZGRyBmlzRXZhbAZlbWl0THAJAJQKAgUDbmlsCQEDZXBvDAUGdHhJZDU4BQhzbGlwcGFnZQUHaW5BbUFtdAUGaW5BbUlkBQdpblByQW10BQZpblBySWQFB3VzckFkZHIFBmlzRXZhbAUGZW1pdExwBwAAAgABaQEjZXN0aW1hdGVHZXRPcGVyYXRpb25XcmFwcGVyUkVBRE9OTFkEBnR4SWQ1OAdwbXRBc0lkCHBtdExwQW10B3VzckFkZHIEAXIJAQNlZ28EBQZ0eElkNTgFB3BtdEFzSWQFCHBtdExwQW10CQERQGV4dHJOYXRpdmUoMTA2MikBBQd1c3JBZGRyCQCUCgIFA25pbAkAnAoKCAUBcgJfMQgFAXICXzIIBQFyAl8zCAUBcgJfNAgFAXICXzUIBQFyAl82CAUBcgJfNwkApgMBCAUBcgJfOAgFAXICXzkIBQFyA18xMAECdHgBBnZlcmlmeQAED3RhcmdldFB1YmxpY0tleQQHJG1hdGNoMAkBAW0AAwkAAQIFByRtYXRjaDACCkJ5dGVWZWN0b3IEAnBrBQckbWF0Y2gwBQJwawMJAAECBQckbWF0Y2gwAgRVbml0CAUCdHgPc2VuZGVyUHVibGljS2V5CQACAQILTWF0Y2ggZXJyb3IEByRtYXRjaDAFAnR4AwkAAQIFByRtYXRjaDACBU9yZGVyBAVvcmRlcgUHJG1hdGNoMAQKbWF0Y2hlclB1YgkBAm1wAAQKb3JkZXJWYWxpZAkBA21vYQEFBW9yZGVyBAtzZW5kZXJWYWxpZAkA9AMDCAUFb3JkZXIJYm9keUJ5dGVzCQCRAwIIBQVvcmRlcgZwcm9vZnMAAAgFBW9yZGVyD3NlbmRlclB1YmxpY0tleQQMbWF0Y2hlclZhbGlkCQD0AwMIBQVvcmRlcglib2R5Qnl0ZXMJAJEDAggFBW9yZGVyBnByb29mcwABBQptYXRjaGVyUHViAwMDBQpvcmRlclZhbGlkBQtzZW5kZXJWYWxpZAcFDG1hdGNoZXJWYWxpZAcGCQEDdG9lAwUKb3JkZXJWYWxpZAULc2VuZGVyVmFsaWQFDG1hdGNoZXJWYWxpZAMJAAECBQckbWF0Y2gwAhRTZXRTY3JpcHRUcmFuc2FjdGlvbgQBcwUHJG1hdGNoMAQHbmV3SGFzaAkA9gMBCQEFdmFsdWUBCAUBcwZzY3JpcHQEC2FsbG93ZWRIYXNoCQDbBAEJAQV2YWx1ZQEJAJ0IAgUDZmNhCQEca2V5QWxsb3dlZExwU3RhYmxlU2NyaXB0SGFzaAAEC2N1cnJlbnRIYXNoCQDxBwEFBHRoaXMDAwkAAAIFC2FsbG93ZWRIYXNoBQduZXdIYXNoCQECIT0CBQtjdXJyZW50SGFzaAUHbmV3SGFzaAcGCQD0AwMIBQJ0eAlib2R5Qnl0ZXMJAJEDAggFAnR4BnByb29mcwAABQ90YXJnZXRQdWJsaWNLZXkJAPQDAwgFAnR4CWJvZHlCeXRlcwkAkQMCCAUCdHgGcHJvb2ZzAAAFD3RhcmdldFB1YmxpY0tleei8Leo=", "chainId": 84, "height": 2228790, "applicationStatus": "succeeded", "spentComplexity": 0 } View: original | compacted Prev: 5obmnocF7rafTFHbeJ4dvFwQ11FXKjq6AzjzkPj1WHF6 Next: 43WEka1CrkCccKrAkVzm6Zj3AzHQhpHa67ZS9E9pUjsJ Diff:
OldNewDifferences
77
88 let c = toBigInt(1000000000000000000)
99
10-let d = toBigInt(0)
10+let d = 1000
1111
12-let e = toBigInt(1)
12+let e = toBigInt(0)
1313
14-let f = toBigInt((a - ((a * 1) / a)))
14+let f = toBigInt(1)
1515
16-let g = "100"
16+let g = toBigInt((a - ((a * 1) / a)))
1717
18-let h = "1"
18+let h = "100"
1919
20-let i = "__"
20+let i = "1"
2121
22-let j = ""
22+let j = "__"
2323
24-let k = 1
24+let k = ""
2525
26-let l = 2
26+let l = 1
2727
28-let m = 3
28+let m = 2
2929
30-let n = 4
30+let n = 3
3131
32-let o = 1
32+let o = 4
3333
34-let p = 2
34+let p = 1
3535
36-let q = 3
36+let q = 2
3737
38-let r = 4
38+let r = 3
3939
40-let s = 5
40+let s = 4
4141
42-let t = 6
42+let t = 5
4343
44-let u = 7
44+let u = 6
4545
46-let v = 8
46+let v = 7
4747
48-let w = 9
48+let w = 8
4949
50-let x = 1
50+let x = 9
5151
52-let y = 7
52+let y = 1
5353
54-let z = 10
54+let z = 7
5555
56-let A = "%s__delay"
56+let A = 10
5757
58-func B (C,D) = fraction(toBigInt(C), c, toBigInt(D))
58+let B = 0
59+
60+func C (D,E) = fraction(toBigInt(D), c, toBigInt(E))
5961
6062
61-func E (F,G) = toInt(fraction(F, toBigInt(G), c))
63+func F (G,H) = toInt(fraction(G, toBigInt(H), c))
6264
6365
64-func H (I,J,K) = fraction(I, J, K)
66+func I (J,K,L) = fraction(J, K, L)
6567
6668
67-func L (F) = if ((d > F))
68- then -(F)
69- else F
69+func M (G) = if ((e > G))
70+ then -(G)
71+ else G
7072
7173
72-func M () = "%s__factoryContract"
74+func N () = "%s__factoryContract"
7375
7476
75-func N () = "%s__managerPublicKey"
77+func O () = "%s__managerPublicKey"
7678
7779
78-func O () = "%s__pendingManagerPublicKey"
80+func P () = "%s__pendingManagerPublicKey"
7981
8082
81-func P () = "%s%s__price__last"
83+func Q () = "%s%s__price__last"
8284
8385
84-func Q (R,S) = makeString(["%s%s%d%d__price__history", toString(R), toString(S)], i)
86+func R (S,T) = makeString(["%s%s%d%d__price__history", toString(S), toString(T)], j)
8587
8688
87-func T (U,V) = ((("%s%s%s__P__" + U) + "__") + V)
89+func U (V,W) = ((("%s%s%s__P__" + V) + "__") + W)
8890
8991
90-func W (U,V) = ((("%s%s%s__G__" + U) + "__") + V)
92+func X (V,W) = ((("%s%s%s__G__" + V) + "__") + W)
9193
9294
93-func X () = "%s__amountAsset"
95+func Y () = "%s__amountAsset"
9496
9597
96-func Y () = "%s__priceAsset"
98+func Z () = "%s__priceAsset"
9799
98100
99-func Z () = "%s__amp"
101+func aa () = "%s__amp"
100102
101103
102-func aa () = "%s__addonAddr"
104+func ab () = "%s__addonAddr"
103105
104106
105-func ab (ac) = makeString(["%s%s__lastGetOneTknCall", ac], i)
107+let ac = "%s__feePermille"
106108
107-
108-func ad (ac) = makeString(["%s%s__lastPutOneTknCall", ac], i)
109-
109+let ad = valueOrElse(getInteger(this, ac), B)
110110
111111 func ae () = "%s__factoryConfig"
112112
126126 func am () = "%s__allowedLpStableScriptHash"
127127
128128
129-func an (ao,ap,aq) = throw(((((("Failed: ordValid=" + toString(ao)) + " sndrValid=") + toString(ap)) + " mtchrValid=") + toString(aq)))
129+func an () = "%s__feeCollectorAddress"
130130
131131
132-func ar (F) = {
133- let as = F
134- if ($isInstanceOf(as, "String"))
132+func ao (ap,aq,ar) = throw(((((("Failed: ordValid=" + toString(ap)) + " sndrValid=") + toString(aq)) + " mtchrValid=") + toString(ar)))
133+
134+
135+func as (G) = {
136+ let at = G
137+ if ($isInstanceOf(at, "String"))
135138 then {
136- let at = as
137- at
139+ let au = at
140+ au
138141 }
139142 else throw("fail cast to String")
140143 }
141144
142145
143-func au (av,aw) = valueOrErrorMessage(getString(av, aw), makeString(["mandatory ", toString(av), ".", aw, " not defined"], ""))
146+func av (aw,ax) = valueOrErrorMessage(getString(aw, ax), makeString(["mandatory ", toString(aw), ".", ax, " not defined"], ""))
144147
145148
146-func ax (av,aw) = valueOrErrorMessage(getInteger(av, aw), makeString(["mandatory ", toString(av), ".", aw, " not defined"], ""))
149+func ay (aw,ax) = valueOrErrorMessage(getInteger(aw, ax), makeString(["mandatory ", toString(aw), ".", ax, " not defined"], ""))
147150
148151
149-let ay = addressFromStringValue(au(this, M()))
152+let az = addressFromStringValue(av(this, N()))
150153
151-let az = au(this, Z())
154+let aA = av(this, aa())
152155
153-func aA () = valueOrElse(getBoolean(ay, al()), false)
156+func aB () = valueOrElse(getBoolean(az, al()), false)
154157
155158
156-func aB () = fromBase58String(au(ay, af()))
159+func aC () = fromBase58String(av(az, af()))
157160
158161
159-func aC () = {
160- let aD = au(this, X())
161- let aE = au(this, Y())
162- let aF = ax(ay, aj(aE))
163- let ah = ax(ay, aj(aD))
164- split(au(ay, ag(toString(ah), toString(aF))), i)
162+let aD = addressFromStringValue(av(az, an()))
163+
164+func aE () = {
165+ let aF = av(this, Y())
166+ let aG = av(this, Z())
167+ let aH = ay(az, aj(aG))
168+ let ah = ay(az, aj(aF))
169+ split(av(az, ag(toString(ah), toString(aH))), j)
165170 }
166171
167172
168-func aG () = split(au(ay, ae()), i)
173+func aI () = split(av(az, ae()), j)
169174
170175
171-let aH = aG()
172-
173-let aI = valueOrErrorMessage(addressFromString(aH[x]), "Invalid staking contract address")
174-
175-let aJ = valueOrErrorMessage(addressFromString(aH[y]), "Invalid slipage contract address")
176-
177-let aK = valueOrErrorMessage(addressFromString(aH[z]), "Invalid gwx contract address")
178-
179-func aL (aM,aN,aO,aP,aQ,aR,aS,aT,aU,aV) = makeString(["%d%d%d%d%d%d%d%d%d%d", toString(aM), toString(aN), toString(aO), toString(aP), toString(aQ), toString(aR), toString(aS), toString(aT), toString(aU), toString(aV)], i)
176+func aJ (aK,aL,aM,aN,aO,aP,aQ,aR,aS,aT) = makeString(["%d%d%d%d%d%d%d%d%d%d", toString(aK), toString(aL), toString(aM), toString(aN), toString(aO), toString(aP), toString(aQ), toString(aR), toString(aS), toString(aT)], j)
180177
181178
182-func aW (aX,aY,aZ,aP,aS,aT) = makeString(["%d%d%d%d%d%d", toString(aX), toString(aY), toString(aZ), toString(aP), toString(aS), toString(aT)], i)
179+func aU (aV,aW,aX,aN,aQ,aR) = makeString(["%d%d%d%d%d%d", toString(aV), toString(aW), toString(aX), toString(aN), toString(aQ), toString(aR)], j)
183180
184181
185-func ba (bb) = if ((bb == "WAVES"))
182+func aY (aZ) = if ((aZ == "WAVES"))
186183 then wavesBalance(this).available
187- else assetBalance(this, fromBase58String(bb))
184+ else assetBalance(this, fromBase58String(aZ))
188185
189186
190-func bc (bd,be) = fraction(bd, c, be)
187+func ba (bb,bc) = fraction(bb, c, bc)
191188
192189
193-func bf (bg,bh,bi) = {
194- let bj = fraction((bg - bh), b, bh)
195- let bk = ((bi - L(bj)) > d)
196- if (!(bk))
197- then throw(("Big slpg: " + toString(bj)))
198- else $Tuple2(bk, min([bg, bh]))
190+func bd (be,bf,bg) = {
191+ let bh = fraction((be - bf), b, bf)
192+ let bi = ((bg - M(bh)) > e)
193+ if (!(bi))
194+ then throw(("Big slpg: " + toString(bh)))
195+ else $Tuple2(bi, min([be, bf]))
199196 }
200197
201198
202-func bl (bm,bn,bo) = {
203- let bj = fraction(bn, b, bm)
204- let bp = (bo > bj)
205- if (if (bp)
199+func bj (bk,bl,bm) = {
200+ let bh = fraction(bl, b, bk)
201+ let bn = (bm > bh)
202+ if (if (bn)
206203 then true
207- else (bn > bm))
208- then throw(((((((toString(bn) + " ") + toString(bm)) + " ") + toString(bj)) + " ") + toString(bo)))
209- else bp
204+ else (bl > bk))
205+ then throw(((((((toString(bl) + " ") + toString(bk)) + " ") + toString(bh)) + " ") + toString(bm)))
206+ else bn
210207 }
211208
212209
213-func bq (br,bs,bt,bu) = {
214- let bv = B(bt, br)
215- let bw = B(bu, bs)
216- bc(bw, bv)
210+func bo (bp,bq,br,bs) = {
211+ let bt = C(br, bp)
212+ let bu = C(bs, bq)
213+ ba(bu, bt)
217214 }
218215
219216
220-func bx (bt,bu,by) = {
221- let bz = aC()
222- let bA = parseIntValue(bz[t])
223- let bB = parseIntValue(bz[u])
224- let bC = bq(bA, bB, bt, bu)
225- let be = B(bt, bA)
226- let bd = B(bu, bB)
227- let bD = B(by, a)
228- let bE = bc(be, bD)
229- let bF = bc(bd, bD)
230-[bC, bE, bF]
217+func bv (br,bs,bw) = {
218+ let bx = aE()
219+ let by = parseIntValue(bx[u])
220+ let bz = parseIntValue(bx[v])
221+ let bA = bo(by, bz, br, bs)
222+ let bc = C(br, by)
223+ let bb = C(bs, bz)
224+ let bB = C(bw, a)
225+ let bC = ba(bc, bB)
226+ let bD = ba(bb, bB)
227+[bA, bC, bD]
231228 }
232229
233230
234-func bG (bt,bu,by) = {
235- let bH = bx(bt, bu, by)
236-[E(bH[0], a), E(bH[1], a), E(bH[2], a)]
231+func bE (br,bs,bw) = {
232+ let bF = bv(br, bs, bw)
233+[F(bF[0], a), F(bF[1], a), F(bF[2], a)]
237234 }
238235
239236
240-func bI (bJ,bK,bL,bM) = {
241- let bz = aC()
242- let bN = bz[q]
243- let bO = bz[r]
244- let bP = bz[s]
245- let bQ = parseIntValue(bz[t])
246- let bR = parseIntValue(bz[u])
247- let bS = bz[p]
248- let bT = valueOrErrorMessage(assetInfo(fromBase58String(bN)), "Wrong LP id").quantity
249- if ((bN != bK))
237+func bG (bH,bI,bJ,bK) = {
238+ let bx = aE()
239+ let bL = bx[r]
240+ let bM = bx[s]
241+ let bN = bx[t]
242+ let bO = parseIntValue(bx[u])
243+ let bP = parseIntValue(bx[v])
244+ let bQ = bx[q]
245+ let bR = valueOrErrorMessage(assetInfo(fromBase58String(bL)), "Wrong LP id").quantity
246+ if ((bL != bI))
250247 then throw("Wrong pmt asset")
251248 else {
252- let bU = ba(bO)
253- let bV = B(bU, bQ)
254- let bW = ba(bP)
255- let bX = B(bW, bR)
256- let bY = bc(bX, bV)
257- let bZ = E(bY, a)
258- let ca = B(bL, a)
259- let cb = B(bT, a)
260- let cc = fraction(bV, ca, cb)
261- let cd = fraction(bX, ca, cb)
262- let ce = E(cc, bQ)
263- let cf = E(cd, bR)
264- let cg = if ((bJ == ""))
249+ let bS = aY(bM)
250+ let bT = C(bS, bO)
251+ let bU = aY(bN)
252+ let bV = C(bU, bP)
253+ let bW = ba(bV, bT)
254+ let bX = F(bW, a)
255+ let bY = C(bJ, a)
256+ let bZ = C(bR, a)
257+ let ca = fraction(bT, bY, bZ)
258+ let cb = fraction(bV, bY, bZ)
259+ let cc = F(ca, bO)
260+ let cd = F(cb, bP)
261+ let ce = if ((bH == ""))
265262 then nil
266- else [ScriptTransfer(bM, ce, if ((bO == "WAVES"))
263+ else [ScriptTransfer(bK, cc, if ((bM == "WAVES"))
267264 then unit
268- else fromBase58String(bO)), ScriptTransfer(bM, cf, if ((bP == "WAVES"))
265+ else fromBase58String(bM)), ScriptTransfer(bK, cd, if ((bN == "WAVES"))
269266 then unit
270- else fromBase58String(bP)), StringEntry(W(toString(bM), bJ), aW(ce, cf, bL, bZ, height, lastBlock.timestamp)), IntegerEntry(P(), bZ), IntegerEntry(Q(height, lastBlock.timestamp), bZ)]
271- $Tuple10(ce, cf, bO, bP, bU, bW, bT, bY, bS, cg)
267+ else fromBase58String(bN)), StringEntry(X(toString(bK), bH), aU(cc, cd, bJ, bX, height, lastBlock.timestamp)), IntegerEntry(Q(), bX), IntegerEntry(R(height, lastBlock.timestamp), bX)]
268+ $Tuple10(cc, cd, bM, bN, bS, bU, bR, bW, bQ, ce)
272269 }
273270 }
274271
275272
276-func ch (bJ,bi,ci,cj,ck,cl,bM,cm,cn,co,cp,cq,cr) = {
277- let bz = aC()
278- let bN = fromBase58String(bz[q])
279- let cs = bz[r]
280- let ct = bz[s]
281- let cu = bz[v]
282- let cv = bz[w]
283- let cw = parseIntValue(bz[t])
284- let cx = parseIntValue(bz[u])
285- let bS = bz[p]
286- let cy = valueOrErrorMessage(assetInfo(bN), "Wr lp as").quantity
287- let bU = if (cm)
288- then ba(cs)
289- else if (if (co)
290- then (cr == cs)
273+func cf (bH,bg,cg,ch,ci,cj,bK,ck,cl,cm,cn,co) = {
274+ let bx = aE()
275+ let bL = fromBase58String(bx[r])
276+ let cp = bx[s]
277+ let cq = bx[t]
278+ let cr = bx[w]
279+ let cs = bx[x]
280+ let ct = parseIntValue(bx[u])
281+ let cu = parseIntValue(bx[v])
282+ let bQ = bx[q]
283+ let cv = valueOrErrorMessage(assetInfo(bL), "Wr lp as").quantity
284+ let bS = if (ck)
285+ then aY(cp)
286+ else if (if (cm)
287+ then (co == cp)
291288 else false)
292- then (ba(cs) - cq)
293- else if (co)
294- then ba(cs)
295- else (ba(cs) - ci)
296- let bW = if (cm)
297- then ba(ct)
298- else if (if (co)
299- then (cr == ct)
289+ then (aY(cp) - cn)
290+ else if (cm)
291+ then aY(cp)
292+ else (aY(cp) - cg)
293+ let bU = if (ck)
294+ then aY(cq)
295+ else if (if (cm)
296+ then (co == cq)
300297 else false)
301- then (ba(ct) - cq)
302- else if (co)
303- then ba(ct)
304- else (ba(ct) - ck)
305- let cz = B(ci, cw)
306- let cA = B(ck, cx)
307- let cB = bc(cA, cz)
308- let bV = B(bU, cw)
309- let bX = B(bW, cx)
310- let cC = if ((cy == 0))
298+ then (aY(cq) - cn)
299+ else if (cm)
300+ then aY(cq)
301+ else (aY(cq) - ci)
302+ let cw = C(cg, ct)
303+ let cx = C(ci, cu)
304+ let cy = ba(cx, cw)
305+ let bT = C(bS, ct)
306+ let bV = C(bU, cu)
307+ let cz = if ((cv == 0))
311308 then {
312- let bY = d
313- let cD = d
314- let bD = pow((cz * cA), 0, toBigInt(5), 1, 0, DOWN)
315- $Tuple5(E(bD, a), E(cz, cw), E(cA, cx), bc((bX + cA), (bV + cz)), cD)
309+ let bW = e
310+ let cA = e
311+ let bB = pow((cw * cx), 0, toBigInt(5), 1, 0, DOWN)
312+ $Tuple5(F(bB, a), F(cw, ct), F(cx, cu), ba((bV + cx), (bT + cw)), cA)
316313 }
317314 else {
318- let bY = bc(bX, bV)
319- let cE = fraction(L((bY - cB)), c, bY)
320- let cD = B(bi, a)
321- if (if (if (cp)
322- then (bY != d)
315+ let bW = ba(bV, bT)
316+ let cB = fraction(M((bW - cy)), c, bW)
317+ let cA = C(bg, a)
318+ if (if ((bW != e))
319+ then (cB > cA)
323320 else false)
324- then (cE > cD)
325- else false)
326- then throw(((("Price slippage " + toString(cE)) + " > ") + toString(cD)))
321+ then throw(((("Price slippage " + toString(cB)) + " > ") + toString(cA)))
327322 else {
328- let cF = B(cy, a)
329- let cG = fraction(cz, bY, c)
330- let cH = fraction(cA, c, bY)
331- let cI = if ((cG > cA))
332- then $Tuple2(cH, cA)
333- else $Tuple2(cz, cG)
334- let cJ = cI._1
335- let cK = cI._2
336- let bD = fraction(cF, cK, bX)
337- $Tuple5(E(bD, a), E(cJ, cw), E(cK, cx), bY, cD)
323+ let cC = C(cv, a)
324+ let cD = fraction(cw, bW, c)
325+ let cE = fraction(cx, c, bW)
326+ let cF = if ((cD > cx))
327+ then $Tuple2(cE, cx)
328+ else $Tuple2(cw, cD)
329+ let cG = cF._1
330+ let cH = cF._2
331+ let bB = fraction(cC, cH, bV)
332+ $Tuple5(F(bB, a), F(cG, ct), F(cH, cu), bW, cA)
338333 }
339334 }
340- let cL = cC._1
341- let cM = cC._2
342- let cN = cC._3
343- let bZ = E(cC._4, a)
344- let cO = E(cC._5, a)
345- if ((0 >= cL))
335+ let cI = cz._1
336+ let cJ = cz._2
337+ let cK = cz._3
338+ let bX = F(cz._4, a)
339+ let cL = F(cz._5, a)
340+ if ((0 >= cI))
346341 then throw("LP <= 0")
347342 else {
348- let cP = if (!(cn))
343+ let cM = if (!(cl))
349344 then 0
350- else cL
351- let cQ = (ci - cM)
352- let cR = (ck - cN)
353- let cS = if (if (co)
354- then (cr == cs)
345+ else cI
346+ let cN = (cg - cJ)
347+ let cO = (ci - cK)
348+ let cP = if (if (cm)
349+ then (co == cp)
355350 else false)
356- then $Tuple2(cq, 0)
357- else if (if (co)
358- then (cr == ct)
351+ then $Tuple2(cn, 0)
352+ else if (if (cm)
353+ then (co == cq)
359354 else false)
360- then $Tuple2(0, cq)
361- else $Tuple2(cM, cN)
362- let cT = cS._1
363- let cU = cS._2
364- let cV = [IntegerEntry(P(), bZ), IntegerEntry(Q(height, lastBlock.timestamp), bZ), StringEntry(T(bM, bJ), aL(cT, cU, cP, bZ, bi, cO, height, lastBlock.timestamp, cQ, cR))]
365- $Tuple13(cL, cP, bZ, bU, bW, cy, bN, bS, cV, cQ, cR, cj, cl)
355+ then $Tuple2(0, cn)
356+ else $Tuple2(cJ, cK)
357+ let cQ = cP._1
358+ let cR = cP._2
359+ let cS = [IntegerEntry(Q(), bX), IntegerEntry(R(height, lastBlock.timestamp), bX), StringEntry(U(bK, bH), aJ(cQ, cR, cM, bX, bg, cL, height, lastBlock.timestamp, cN, cO))]
360+ $Tuple13(cI, cM, bX, bS, bU, cv, bL, bQ, cS, cN, cO, ch, cj)
366361 }
367362 }
368363
369364
370-func cW (cX) = {
371- let bz = aC()
372- let cY = bz[r]
373- let cZ = bz[s]
374- let bS = parseIntValue(bz[p])
375- let bA = parseIntValue(bz[t])
376- let bB = parseIntValue(bz[u])
377- let da = ba(cY)
378- let db = ba(cZ)
379- let bY = if ((cX.orderType == Buy))
380- then bq(bA, bB, (da + cX.amount), db)
381- else bq(bA, bB, (da - cX.amount), db)
382- let bZ = E(bY, a)
383- if (if (if (aA())
365+func cT (cU) = {
366+ let bx = aE()
367+ let cV = bx[s]
368+ let cW = bx[t]
369+ let bQ = parseIntValue(bx[q])
370+ let by = parseIntValue(bx[u])
371+ let bz = parseIntValue(bx[v])
372+ let cX = aY(cV)
373+ let cY = aY(cW)
374+ let bW = if ((cU.orderType == Buy))
375+ then bo(by, bz, (cX + cU.amount), cY)
376+ else bo(by, bz, (cX - cU.amount), cY)
377+ let bX = F(bW, a)
378+ if (if (if (aB())
384379 then true
385- else (bS == m))
380+ else (bQ == n))
386381 then true
387- else (bS == n))
382+ else (bQ == o))
388383 then throw("Admin blocked")
389384 else {
390- let dc = cX.assetPair.amountAsset
391- let dd = if ((dc == unit))
385+ let cZ = cU.assetPair.amountAsset
386+ let da = if ((cZ == unit))
392387 then "WAVES"
393- else toBase58String(value(dc))
394- let de = cX.assetPair.priceAsset
395- let df = if ((de == unit))
388+ else toBase58String(value(cZ))
389+ let db = cU.assetPair.priceAsset
390+ let dc = if ((db == unit))
396391 then "WAVES"
397- else toBase58String(value(de))
398- if (if ((dd != cY))
392+ else toBase58String(value(db))
393+ if (if ((da != cV))
399394 then true
400- else (df != cZ))
395+ else (dc != cW))
401396 then throw("Wr assets")
402397 else {
403- let dg = cX.price
404- let cx = fraction(a, bB, bA)
405- let dh = H(dg, a, cx)
406- let di = if ((cX.orderType == Buy))
407- then (bZ >= dh)
408- else (dh >= bZ)
398+ let dd = cU.price
399+ let cu = fraction(a, bz, by)
400+ let de = I(dd, a, cu)
401+ let df = if ((cU.orderType == Buy))
402+ then (bX >= de)
403+ else (de >= bX)
409404 true
410405 }
411406 }
412407 }
413408
414409
415-func dj (dk) = if ((size(dk.payments) != 1))
410+func dg (dh) = if ((size(dh.payments) != 1))
416411 then throw("1 pmnt exp")
417412 else {
418- let dl = value(dk.payments[0])
419- let bK = value(dl.assetId)
420- let cq = dl.amount
421- let cC = bI(toBase58String(dk.transactionId), toBase58String(bK), cq, dk.caller)
422- let ce = cC._1
423- let cf = cC._2
424- let bS = parseIntValue(cC._9)
425- let cg = cC._10
426- if (if (aA())
413+ let di = value(dh.payments[0])
414+ let bI = value(di.assetId)
415+ let cn = di.amount
416+ let cz = bG(toBase58String(dh.transactionId), toBase58String(bI), cn, dh.caller)
417+ let cc = cz._1
418+ let cd = cz._2
419+ let bQ = parseIntValue(cz._9)
420+ let ce = cz._10
421+ if (if (aB())
427422 then true
428- else (bS == n))
429- then throw(("Admin blocked: " + toString(bS)))
430- else $Tuple5(ce, cf, cq, bK, cg)
423+ else (bQ == o))
424+ then throw(("Admin blocked: " + toString(bQ)))
425+ else $Tuple5(cc, cd, cn, bI, ce)
431426 }
432427
433428
434-func dm (ac,V,dn,do,bi,cn,co,cp,cq,cr) = {
435- let cC = ch(V, bi, value(dn).amount, value(dn).assetId, value(do).amount, value(do).assetId, ac, false, cn, co, cp, cq, cr)
436- let bS = parseIntValue(cC._8)
437- if (if (if (aA())
429+func dj (dk,W,dl,dm,bg,cl,cm,cn,co) = {
430+ let cz = cf(W, bg, value(dl).amount, value(dl).assetId, value(dm).amount, value(dm).assetId, dk, false, cl, cm, cn, co)
431+ let bQ = parseIntValue(cz._8)
432+ if (if (if (aB())
438433 then true
439- else (bS == l))
434+ else (bQ == m))
440435 then true
441- else (bS == n))
442- then throw(("Blocked:" + toString(bS)))
443- else cC
436+ else (bQ == o))
437+ then throw(("Blocked:" + toString(bQ)))
438+ else cz
444439 }
445440
446441
447-func dp (cq,bK,bM,V) = {
448- let dq = aC()
449- let bO = dq[r]
450- let bP = dq[s]
451- let bU = ba(bO)
452- let bW = ba(bP)
453- let dr = if ((V == ""))
454- then $Tuple2(bU, bW)
455- else if ((bK == bO))
456- then if ((cq > bU))
457- then throw("invalid payment amount")
458- else $Tuple2((bU - cq), bW)
459- else if ((bK == bP))
460- then if ((cq > bW))
461- then throw("invalid payment amount")
462- else $Tuple2(bU, (bW - cq))
463- else throw("wrong pmtAssetId")
464- let ds = dr._1
465- let dt = dr._2
466- let du = if ((bK == bO))
467- then $Tuple2(ds, dt)
468- else $Tuple2(dt, ds)
469- let dv = du._1
470- let dw = du._2
471- let dx = 1
472- let dy = {
473- let dz = invoke(aK, "calcPutXOnly", [toString(cq), toString(dv), toString(dw), "", az, g, toString(dx), h], nil)
474- if ($isInstanceOf(dz, "(Int, Int)"))
475- then dz
476- else throw(($getType(invoke(aK, "calcPutXOnly", [toString(cq), toString(dv), toString(dw), "", az, g, toString(dx), h], nil)) + " couldn't be cast to (Int, Int)"))
477- }
478- let dA = if ((bK == bO))
479- then dy
480- else $Tuple2(dy._2, dy._1)
481- let dB = dA._1
482- let dC = dA._2
483- let dD = dm(bM, V, AttachedPayment(fromBase58String(bO), dB), AttachedPayment(fromBase58String(bP), dC), 0, true, true, false, cq, bK)
484- let dE = dD._2
485- let dF = dD._7
486- let cg = dD._9
487- let cQ = dD._10
488- let cR = dD._11
489- $Tuple5(dE, dF, cg, cQ, cR)
442+func dn (do) = {
443+ let dp = fraction(do, ad, d)
444+ $Tuple2((do - dp), dp)
490445 }
491446
492447
493-func dG () = {
494- let as = getString(N())
495- if ($isInstanceOf(as, "String"))
448+func dq () = {
449+ let at = getString(O())
450+ if ($isInstanceOf(at, "String"))
496451 then {
497- let dH = as
498- fromBase58String(dH)
452+ let dr = at
453+ fromBase58String(dr)
499454 }
500- else if ($isInstanceOf(as, "Unit"))
455+ else if ($isInstanceOf(at, "Unit"))
501456 then unit
502457 else throw("Match error")
503458 }
504459
505460
506-func dI () = {
507- let as = getString(O())
508- if ($isInstanceOf(as, "String"))
461+func ds () = {
462+ let at = getString(P())
463+ if ($isInstanceOf(at, "String"))
509464 then {
510- let dH = as
511- fromBase58String(dH)
465+ let dr = at
466+ fromBase58String(dr)
512467 }
513- else if ($isInstanceOf(as, "Unit"))
468+ else if ($isInstanceOf(at, "Unit"))
514469 then unit
515470 else throw("Match error")
516471 }
517472
518473
519-let dJ = throw("Permission denied")
474+let dt = throw("Permission denied")
520475
521-func dK (dk) = {
522- let as = dG()
523- if ($isInstanceOf(as, "ByteVector"))
476+func du (dh) = {
477+ let at = dq()
478+ if ($isInstanceOf(at, "ByteVector"))
524479 then {
525- let dL = as
526- if ((dk.callerPublicKey == dL))
480+ let dv = at
481+ if ((dh.callerPublicKey == dv))
527482 then true
528- else dJ
483+ else dt
529484 }
530- else if ($isInstanceOf(as, "Unit"))
531- then if ((dk.caller == this))
485+ else if ($isInstanceOf(at, "Unit"))
486+ then if ((dh.caller == this))
532487 then true
533- else dJ
488+ else dt
534489 else throw("Match error")
535490 }
536491
537492
538-@Callable(dk)
539-func constructor (M) = {
540- let dM = dK(dk)
541- if ((dM == dM))
542- then [StringEntry(M(), M)]
493+@Callable(dh)
494+func constructor (N) = {
495+ let dw = du(dh)
496+ if ((dw == dw))
497+ then [StringEntry(N(), N)]
543498 else throw("Strict value is not equal to itself.")
544499 }
545500
546501
547502
548-@Callable(dk)
549-func setManager (dN) = {
550- let dM = dK(dk)
551- if ((dM == dM))
503+@Callable(dh)
504+func setManager (dx) = {
505+ let dw = du(dh)
506+ if ((dw == dw))
552507 then {
553- let dO = fromBase58String(dN)
554- if ((dO == dO))
555- then [StringEntry(O(), dN)]
508+ let dy = fromBase58String(dx)
509+ if ((dy == dy))
510+ then [StringEntry(P(), dx)]
556511 else throw("Strict value is not equal to itself.")
557512 }
558513 else throw("Strict value is not equal to itself.")
560515
561516
562517
563-@Callable(dk)
518+@Callable(dh)
564519 func confirmManager () = {
565- let bH = dI()
566- let dP = if (isDefined(bH))
520+ let bF = ds()
521+ let dz = if (isDefined(bF))
567522 then true
568523 else throw("No pending manager")
569- if ((dP == dP))
524+ if ((dz == dz))
570525 then {
571- let dQ = if ((dk.callerPublicKey == value(bH)))
526+ let dA = if ((dh.callerPublicKey == value(bF)))
572527 then true
573528 else throw("You are not pending manager")
574- if ((dQ == dQ))
575- then [StringEntry(N(), toBase58String(value(bH))), DeleteEntry(O())]
529+ if ((dA == dA))
530+ then [StringEntry(O(), toBase58String(value(bF))), DeleteEntry(P())]
576531 else throw("Strict value is not equal to itself.")
577532 }
578533 else throw("Strict value is not equal to itself.")
580535
581536
582537
583-@Callable(dk)
584-func put (dR,dS) = {
585- let dT = aG()
586- let dU = valueOrErrorMessage(addressFromString(dT[x]), "Wr st addr")
587- let dV = valueOrErrorMessage(addressFromString(dT[y]), "Wr sl addr")
588- if ((0 > dR))
538+@Callable(dh)
539+func put (dB,dC) = {
540+ let dD = aI()
541+ let dE = valueOrErrorMessage(addressFromString(dD[y]), "Wr st addr")
542+ let dF = valueOrErrorMessage(addressFromString(dD[z]), "Wr sl addr")
543+ if ((0 > dB))
589544 then throw("Wrong slippage")
590- else if ((size(dk.payments) != 2))
545+ else if ((size(dh.payments) != 2))
591546 then throw("2 pmnts expd")
592547 else {
593- let dW = dm(toString(dk.caller), toBase58String(dk.transactionId), AttachedPayment(value(dk.payments[0]).assetId, value(dk.payments[0]).amount), dk.payments[1], dR, true, false, true, 0, "")
594- let cP = dW._2
595- let dF = dW._7
596- let cg = dW._9
597- let cQ = dW._10
598- let cR = dW._11
599- let bO = dW._12
600- let bP = dW._13
601- let cC = invoke(ay, "emit", [cP], nil)
602- if ((cC == cC))
548+ let dG = dj(toString(dh.caller), toBase58String(dh.transactionId), AttachedPayment(value(dh.payments[0]).assetId, value(dh.payments[0]).amount), dh.payments[1], dB, true, false, 0, "")
549+ let cM = dG._2
550+ let dH = dG._7
551+ let ce = dG._9
552+ let cN = dG._10
553+ let cO = dG._11
554+ let bM = dG._12
555+ let bN = dG._13
556+ let cz = invoke(az, "emit", [cM], nil)
557+ if ((cz == cz))
603558 then {
604- let dX = {
605- let as = cC
606- if ($isInstanceOf(as, "Address"))
559+ let dI = {
560+ let at = cz
561+ if ($isInstanceOf(at, "Address"))
607562 then {
608- let dY = as
609- invoke(dY, "emit", [cP], nil)
563+ let dJ = at
564+ invoke(dJ, "emit", [cM], nil)
610565 }
611566 else unit
612567 }
613- if ((dX == dX))
568+ if ((dI == dI))
614569 then {
615- let dZ = if ((cQ > 0))
616- then invoke(dV, "put", nil, [AttachedPayment(bO, cQ)])
570+ let dK = if ((cN > 0))
571+ then invoke(dF, "put", nil, [AttachedPayment(bM, cN)])
617572 else nil
618- if ((dZ == dZ))
573+ if ((dK == dK))
619574 then {
620- let ea = if ((cR > 0))
621- then invoke(dV, "put", nil, [AttachedPayment(bP, cR)])
575+ let dL = if ((cO > 0))
576+ then invoke(dF, "put", nil, [AttachedPayment(bN, cO)])
622577 else nil
623- if ((ea == ea))
578+ if ((dL == dL))
624579 then {
625- let eb = if (dS)
580+ let dM = if (dC)
626581 then {
627- let ec = invoke(dU, "stake", nil, [AttachedPayment(dF, cP)])
628- if ((ec == ec))
582+ let dN = invoke(dE, "stake", nil, [AttachedPayment(dH, cM)])
583+ if ((dN == dN))
629584 then nil
630585 else throw("Strict value is not equal to itself.")
631586 }
632- else [ScriptTransfer(dk.caller, cP, dF)]
633- (cg ++ eb)
587+ else [ScriptTransfer(dh.caller, cM, dH)]
588+ (ce ++ dM)
634589 }
635590 else throw("Strict value is not equal to itself.")
636591 }
644599
645600
646601
647-@Callable(dk)
648-func putOneTkn (dB,dC,ed,bi,dS) = {
649- let bz = aG()
650- let dU = valueOrErrorMessage(addressFromString(bz[x]), "Wr st addr")
651- let dV = valueOrErrorMessage(addressFromString(bz[y]), "Wr sl addr")
652- let ee = valueOrErrorMessage(addressFromString(bz[z]), "Wr gwx addr")
653- let ef = aC()
654- let bO = ef[r]
655- let bP = ef[s]
656- let bQ = parseIntValue(ef[t])
657- let bR = parseIntValue(ef[u])
658- let eg = valueOrElse(getString(this, aa()), "")
659- let bM = if ((eg == toString(dk.caller)))
660- then dk.originCaller
661- else dk.caller
662- let eh = valueOrErrorMessage(addressFromString(valueOrErrorMessage(getString(aa()), "no addons")), "addon address in not valid")
663- let ei = reentrantInvoke(eh, "ensureCanPutOneTkn", [toString(bM)], nil)
664- if ((ei == ei))
665- then if (if (if (if ((0 >= bi))
666- then true
667- else (0 >= dB))
668- then true
669- else (0 >= dC))
670- then true
671- else (0 >= ed))
672- then throw("Wrong params")
673- else if ((size(dk.payments) != 1))
674- then throw("1 pmnt expd")
675- else {
676- let dl = value(dk.payments[0])
677- let bK = toBase58String(value(dl.assetId))
678- let cq = dl.amount
679- if ((10000000 > cq))
680- then throw("Wrong pmt amt")
681- else {
682- let bU = ba(bO)
683- let bW = ba(bP)
684- let ej = if ((bK == bO))
685- then if (if ((cq > bU))
602+@Callable(dh)
603+func putOneTkn (dO,dP,dQ,bg,dC) = {
604+ let bx = aI()
605+ let dE = valueOrErrorMessage(addressFromString(bx[y]), "Wr st addr")
606+ let dF = valueOrErrorMessage(addressFromString(bx[z]), "Wr sl addr")
607+ let dR = valueOrErrorMessage(addressFromString(bx[A]), "Wr gwx addr")
608+ let dS = aE()
609+ let bM = dS[s]
610+ let bN = dS[t]
611+ let bO = parseIntValue(dS[u])
612+ let bP = parseIntValue(dS[v])
613+ let dT = valueOrElse(getString(this, ab()), "")
614+ let bK = if ((dT == toString(dh.caller)))
615+ then dh.originCaller
616+ else dh.caller
617+ if (if (if (if ((0 >= bg))
618+ then true
619+ else (0 >= dO))
620+ then true
621+ else (0 >= dP))
622+ then true
623+ else (0 >= dQ))
624+ then throw("Wrong params")
625+ else if ((size(dh.payments) != 1))
626+ then throw("1 pmnt expd")
627+ else {
628+ let di = value(dh.payments[0])
629+ let bI = toBase58String(value(di.assetId))
630+ let dU = di.amount
631+ let dV = dn(dU)
632+ let cn = dV._1
633+ let dW = dV._2
634+ if ((10000000 > dU))
635+ then throw("Wrong pmt amt")
636+ else {
637+ let bS = aY(bM)
638+ let bU = aY(bN)
639+ let dX = if ((bI == bM))
640+ then if (if ((dU > bS))
641+ then true
642+ else (dO > cn))
643+ then throw("invalid payment amount")
644+ else $Tuple6((bS - dU), bU, (cn - dO), dP, 0, 0)
645+ else if ((bI == bN))
646+ then if (if ((dU > bU))
686647 then true
687- else (dB > cq))
648+ else (dP > cn))
688649 then throw("invalid payment amount")
689- else $Tuple6((bU - cq), bW, (cq - dB), dC, 0, 0)
690- else if ((bK == bP))
691- then if (if ((cq > bW))
692- then true
693- else (dC > cq))
694- then throw("invalid payment amount")
695- else $Tuple6(bU, (bW - cq), 0, 0, (cq - dC), dB)
696- else throw("wrong pmtAssetId")
697- let ds = ej._1
698- let dt = ej._2
699- let ek = ej._3
700- let el = ej._4
701- let em = ej._5
702- let en = ej._6
703- let bn = invoke(ee, "calcD", [toString(ds), toString(dt), az, g, h], nil)
704- let bm = invoke(ee, "calcD", [toString(toBigInt(((ds + ek) - en))), toString(toBigInt(((dt + em) - el))), az, g, h], nil)
705- let eo = bl(parseBigIntValue(ar(bm)), parseBigIntValue(ar(bn)), f)
706- if ((eo == eo))
707- then {
708- let dD = dm(toString(dk.caller), toBase58String(dk.transactionId), AttachedPayment(fromBase58String(bO), dB), AttachedPayment(fromBase58String(bP), dC), bi, true, true, true, cq, bK)
709- let dE = dD._2
710- let dF = dD._7
711- let cg = dD._9
712- let cQ = dD._10
713- let cR = dD._11
714- let ep = bf(toBigInt(dE), toBigInt(ed), toBigInt(bi))
715- let cP = toInt(ep._2)
716- let dW = invoke(ay, "emit", [cP], nil)
717- if ((dW == dW))
718- then {
719- let dX = {
720- let as = dW
721- if ($isInstanceOf(as, "Address"))
650+ else $Tuple6(bS, (bU - dU), 0, 0, (cn - dP), dO)
651+ else throw("wrong pmtAssetId")
652+ let dY = dX._1
653+ let dZ = dX._2
654+ let ea = dX._3
655+ let eb = dX._4
656+ let ec = dX._5
657+ let ed = dX._6
658+ let bl = invoke(dR, "calcD", [toString(dY), toString(dZ), aA, h, i], nil)
659+ let bk = invoke(dR, "calcD", [toString(toBigInt(((dY + ea) - ed))), toString(toBigInt(((dZ + ec) - eb))), aA, h, i], nil)
660+ let ee = bj(parseBigIntValue(as(bk)), parseBigIntValue(as(bl)), g)
661+ if ((ee == ee))
662+ then {
663+ let ef = dj(toString(dh.caller), toBase58String(dh.transactionId), AttachedPayment(fromBase58String(bM), dO), AttachedPayment(fromBase58String(bN), dP), bg, true, true, cn, bI)
664+ let eg = ef._2
665+ let dH = ef._7
666+ let ce = ef._9
667+ let cN = ef._10
668+ let cO = ef._11
669+ let eh = bd(toBigInt(eg), toBigInt(dQ), toBigInt(bg))
670+ let cM = toInt(eh._2)
671+ let dG = invoke(az, "emit", [cM], nil)
672+ if ((dG == dG))
673+ then {
674+ let dI = {
675+ let at = dG
676+ if ($isInstanceOf(at, "Address"))
677+ then {
678+ let dJ = at
679+ invoke(dJ, "emit", [cM], nil)
680+ }
681+ else unit
682+ }
683+ if ((dI == dI))
684+ then {
685+ let dK = if ((cN > 0))
686+ then invoke(dF, "put", nil, [AttachedPayment(fromBase58String(bM), cN)])
687+ else nil
688+ if ((dK == dK))
722689 then {
723- let dY = as
724- invoke(dY, "emit", [cP], nil)
725- }
726- else unit
727- }
728- if ((dX == dX))
729- then {
730- let dZ = if ((cQ > 0))
731- then invoke(dV, "put", nil, [AttachedPayment(fromBase58String(bO), cQ)])
732- else nil
733- if ((dZ == dZ))
734- then {
735- let ea = if ((cR > 0))
736- then invoke(dV, "put", nil, [AttachedPayment(fromBase58String(bP), cR)])
737- else nil
738- if ((ea == ea))
739- then {
740- let eb = if (dS)
741- then {
742- let ec = invoke(dU, "stake", nil, [AttachedPayment(dF, cP)])
743- if ((ec == ec))
744- then nil
745- else throw("Strict value is not equal to itself.")
746- }
747- else [ScriptTransfer(dk.caller, cP, dF)]
748- (cg ++ eb)
749- }
750- else throw("Strict value is not equal to itself.")
751- }
752- else throw("Strict value is not equal to itself.")
753- }
754- else throw("Strict value is not equal to itself.")
755- }
756- else throw("Strict value is not equal to itself.")
757- }
758- else throw("Strict value is not equal to itself.")
759- }
760- }
761- else throw("Strict value is not equal to itself.")
762- }
763-
764-
765-
766-@Callable(dk)
767-func putOneTknV2 (eq,dS) = if ((size(dk.payments) != 1))
768- then throw("1 pmnt expd")
769- else {
770- let dq = aC()
771- let bO = dq[r]
772- let bP = dq[s]
773- let er = parseIntValue(dq[t])
774- let es = parseIntValue(dq[u])
775- let bM = if ((dk.caller == this))
776- then dk.originCaller
777- else dk.caller
778- let dl = value(dk.payments[0])
779- let bK = toBase58String(value(dl.assetId))
780- let cq = dl.amount
781- if ((10000000 > cq))
782- then throw("Wrong pmt amt")
783- else {
784- let et = dp(cq, bK, toString(bM), toBase58String(dk.transactionId))
785- let dE = et._1
786- let dF = et._2
787- let cg = et._3
788- let cQ = et._4
789- let cR = et._5
790- let cP = if (if ((eq > 0))
791- then (eq > dE)
792- else false)
793- then throw(makeString(["amount to receive is less than ", toString(eq)], ""))
794- else dE
795- let dW = invoke(ay, "emit", [cP], nil)
796- if ((dW == dW))
797- then {
798- let dX = {
799- let as = dW
800- if ($isInstanceOf(as, "Address"))
801- then {
802- let dY = as
803- invoke(dY, "emit", [cP], nil)
804- }
805- else unit
806- }
807- if ((dX == dX))
808- then {
809- let dZ = if ((cQ > 0))
810- then invoke(aJ, "put", nil, [AttachedPayment(fromBase58String(bO), cQ)])
811- else nil
812- if ((dZ == dZ))
813- then {
814- let ea = if ((cR > 0))
815- then invoke(aJ, "put", nil, [AttachedPayment(fromBase58String(bP), cR)])
816- else nil
817- if ((ea == ea))
818- then {
819- let eb = if (dS)
820- then {
821- let ec = invoke(aI, "stake", nil, [AttachedPayment(dF, cP)])
822- if ((ec == ec))
823- then nil
690+ let dL = if ((cO > 0))
691+ then invoke(dF, "put", nil, [AttachedPayment(fromBase58String(bN), cO)])
692+ else nil
693+ if ((dL == dL))
694+ then {
695+ let dM = if (dC)
696+ then {
697+ let dN = invoke(dE, "stake", nil, [AttachedPayment(dH, cM)])
698+ if ((dN == dN))
699+ then nil
700+ else throw("Strict value is not equal to itself.")
701+ }
702+ else [ScriptTransfer(dh.caller, cM, dH)]
703+ let ei = if ((dW > 0))
704+ then [ScriptTransfer(aD, dW, fromBase58String(bI))]
705+ else nil
706+ ((ce ++ dM) ++ ei)
707+ }
824708 else throw("Strict value is not equal to itself.")
825709 }
826- else [ScriptTransfer(dk.caller, cP, dF)]
827- $Tuple2((cg ++ eb), cP)
710+ else throw("Strict value is not equal to itself.")
828711 }
829712 else throw("Strict value is not equal to itself.")
830713 }
832715 }
833716 else throw("Strict value is not equal to itself.")
834717 }
835- else throw("Strict value is not equal to itself.")
836718 }
837- }
838-
839-
840-
841-@Callable(dk)
842-func putOneTknV2READONLY (eu,ev) = {
843- let ew = dp(eu, ev, "", "")
844- let dE = ew._1
845- let dF = ew._2
846- let cg = ew._3
847- let cQ = ew._4
848- let cR = ew._5
849- $Tuple2(nil, dE)
850719 }
851720
852721
853722
854-@Callable(dk)
855-func putForFree (ex) = if ((0 > ex))
723+@Callable(dh)
724+func putForFree (ej) = if ((0 > ej))
856725 then throw("Wrong slpg")
857- else if ((size(dk.payments) != 2))
726+ else if ((size(dh.payments) != 2))
858727 then throw("2 pmnts expd")
859728 else {
860- let dD = dm(toString(dk.caller), toBase58String(dk.transactionId), AttachedPayment(value(dk.payments[0]).assetId, value(dk.payments[0]).amount), dk.payments[1], ex, false, false, true, 0, "")
861- dD._9
729+ let ef = dj(toString(dh.caller), toBase58String(dh.transactionId), AttachedPayment(value(dh.payments[0]).assetId, value(dh.payments[0]).amount), dh.payments[1], ej, false, false, 0, "")
730+ ef._9
862731 }
863732
864733
865734
866-@Callable(dk)
735+@Callable(dh)
867736 func get () = {
868- let cC = dj(dk)
869- let ey = cC._1
870- let cf = cC._2
871- let cq = cC._3
872- let bK = cC._4
873- let cg = cC._5
874- let ez = invoke(ay, "burn", [cq], [AttachedPayment(bK, cq)])
875- if ((ez == ez))
876- then cg
737+ let cz = dg(dh)
738+ let ek = cz._1
739+ let cd = cz._2
740+ let cn = cz._3
741+ let bI = cz._4
742+ let ce = cz._5
743+ let el = invoke(az, "burn", [cn], [AttachedPayment(bI, cn)])
744+ if ((el == el))
745+ then ce
877746 else throw("Strict value is not equal to itself.")
878747 }
879748
880749
881750
882-@Callable(dk)
883-func getOneTkn (eA,eB,eC,eD,bi) = if ((size(dk.payments) != 1))
751+@Callable(dh)
752+func getOneTkn (em,en,eo,ep,bg) = if ((size(dh.payments) != 1))
884753 then throw("1 pmnt expd")
885754 else {
886- let bz = aC()
887- let bN = bz[q]
888- let bO = bz[r]
889- let bP = bz[s]
890- let bQ = parseIntValue(bz[t])
891- let bR = parseIntValue(bz[u])
892- let bS = bz[p]
893- let dT = aG()
894- let ee = valueOrErrorMessage(addressFromString(dT[z]), "Wr sl addr")
895- let dl = value(dk.payments[0])
896- let eg = valueOrElse(getString(this, aa()), "")
897- let bM = if ((eg == toString(dk.caller)))
898- then dk.originCaller
899- else dk.caller
900- let bJ = toBase58String(dk.transactionId)
901- let bK = value(dl.assetId)
902- let cq = dl.amount
903- let eh = valueOrErrorMessage(addressFromString(valueOrErrorMessage(getString(aa()), "no addons")), "addon address in not valid")
904- let ei = reentrantInvoke(eh, "ensureCanGetOneTkn", [toString(bM)], nil)
905- if ((ei == ei))
906- then if ((1000000000 > cq))
907- then throw("Min pmt 10 LP")
908- else if (if (if ((0 > bi))
909- then true
910- else (0 > eA))
911- then true
912- else (0 > eC))
913- then throw("Wrong params")
914- else if ((bN != toBase58String(bK)))
915- then throw("Wrong LP")
916- else {
917- let cC = bI(toBase58String(dk.transactionId), toBase58String(bK), cq, dk.caller)
918- let eE = cC._1
919- let eF = cC._2
920- let bU = ba(bO)
921- let bW = ba(bP)
922- let eG = if ((eD == bO))
923- then $Tuple7((bU - eE), (bW - eF), eA, eF, 0, 0, (eE + eA))
924- else if ((eD == bP))
925- then $Tuple7((bU - eE), (bW - eF), 0, 0, eA, eE, (eF + eA))
926- else throw("wrong outAssetId")
927- let ds = eG._1
928- let dt = eG._2
929- let ek = eG._3
930- let el = eG._4
931- let em = eG._5
932- let en = eG._6
933- let eH = eG._7
934- if (if ((0 > ek))
935- then true
936- else (0 > em))
937- then throw("Wrong calc")
938- else {
939- let bn = invoke(ee, "calcD", [toString(ds), toString(dt), az, g, h], nil)
940- let bm = invoke(ee, "calcD", [toString(((ds - ek) + en)), toString(((dt + el) - em)), az, g, h], nil)
941- let eo = bl(parseBigIntValue(ar(bm)), parseBigIntValue(ar(bn)), f)
942- if ((eo == eo))
943- then {
944- let eI = bf(toBigInt(eH), toBigInt(eC), toBigInt(bi))
945- if ((eI == eI))
946- then {
947- let eJ = if ((eD == bO))
948- then $Tuple2(toInt(eI._2), 0)
949- else $Tuple2(0, toInt(eI._2))
950- let eK = eJ._1
951- let eL = eJ._2
952- let eM = bc(B(bW, bR), B(bU, bQ))
953- let eN = E(eM, a)
954- let cg = [ScriptTransfer(bM, (eK + eL), if ((eD == "WAVES"))
955- then unit
956- else fromBase58String(eD)), StringEntry(W(toString(bM), bJ), aW(eK, eL, cq, eN, height, lastBlock.timestamp)), IntegerEntry(P(), eN), IntegerEntry(Q(height, lastBlock.timestamp), eN)]
957- if ((cg == cg))
958- then {
959- let eO = invoke(ay, "burn", [cq], [AttachedPayment(bK, cq)])
960- if ((eO == eO))
961- then cg
962- else throw("Strict value is not equal to itself.")
963- }
964- else throw("Strict value is not equal to itself.")
965- }
966- else throw("Strict value is not equal to itself.")
967- }
968- else throw("Strict value is not equal to itself.")
969- }
970- }
971- else throw("Strict value is not equal to itself.")
755+ let bx = aE()
756+ let bL = bx[r]
757+ let bM = bx[s]
758+ let bN = bx[t]
759+ let bO = parseIntValue(bx[u])
760+ let bP = parseIntValue(bx[v])
761+ let bQ = bx[q]
762+ let dD = aI()
763+ let dR = valueOrErrorMessage(addressFromString(dD[A]), "Wr sl addr")
764+ let di = value(dh.payments[0])
765+ let dT = valueOrElse(getString(this, ab()), "")
766+ let bK = if ((dT == toString(dh.caller)))
767+ then dh.originCaller
768+ else dh.caller
769+ let bH = toBase58String(dh.transactionId)
770+ let bI = value(di.assetId)
771+ let cn = di.amount
772+ if ((1000000000 > cn))
773+ then throw("Min pmt 10 LP")
774+ else if (if (if ((0 > bg))
775+ then true
776+ else (0 > em))
777+ then true
778+ else (0 > eo))
779+ then throw("Wrong params")
780+ else if ((bL != toBase58String(bI)))
781+ then throw("Wrong LP")
782+ else {
783+ let cz = bG(toBase58String(dh.transactionId), toBase58String(bI), cn, dh.caller)
784+ let eq = cz._1
785+ let er = cz._2
786+ let bS = aY(bM)
787+ let bU = aY(bN)
788+ let es = if ((ep == bM))
789+ then $Tuple7((bS - eq), (bU - er), em, er, 0, 0, (eq + em))
790+ else if ((ep == bN))
791+ then $Tuple7((bS - eq), (bU - er), 0, 0, em, eq, (er + em))
792+ else throw("wrong outAssetId")
793+ let dY = es._1
794+ let dZ = es._2
795+ let ea = es._3
796+ let eb = es._4
797+ let ec = es._5
798+ let ed = es._6
799+ let et = es._7
800+ if (if ((0 > ea))
801+ then true
802+ else (0 > ec))
803+ then throw("Wrong calc")
804+ else {
805+ let bl = invoke(dR, "calcD", [toString(dY), toString(dZ), aA, h, i], nil)
806+ let bk = invoke(dR, "calcD", [toString(((dY - ea) + ed)), toString(((dZ + eb) - ec)), aA, h, i], nil)
807+ let ee = bj(parseBigIntValue(as(bk)), parseBigIntValue(as(bl)), g)
808+ if ((ee == ee))
809+ then {
810+ let eu = dn(et)._1
811+ let ev = bd(toBigInt(eu), toBigInt(eo), toBigInt(bg))
812+ if ((ev == ev))
813+ then {
814+ let ew = if ((ep == bM))
815+ then $Tuple2(toInt(ev._2), 0)
816+ else $Tuple2(0, toInt(ev._2))
817+ let ex = ew._1
818+ let ey = ew._2
819+ let ez = (ex + ey)
820+ let dW = (et - eu)
821+ let eA = if ((ep == "WAVES"))
822+ then unit
823+ else fromBase58String(ep)
824+ let ei = if ((dW > 0))
825+ then [ScriptTransfer(aD, dW, eA)]
826+ else nil
827+ let eB = ba(C(bU, bP), C(bS, bO))
828+ let eC = F(eB, a)
829+ let ce = [ScriptTransfer(bK, ez, eA), StringEntry(X(toString(bK), bH), aU(ex, ey, cn, eC, height, lastBlock.timestamp)), IntegerEntry(Q(), eC), IntegerEntry(R(height, lastBlock.timestamp), eC)]
830+ if ((ce == ce))
831+ then {
832+ let eD = invoke(az, "burn", [cn], [AttachedPayment(bI, cn)])
833+ if ((eD == eD))
834+ then (ce ++ ei)
835+ else throw("Strict value is not equal to itself.")
836+ }
837+ else throw("Strict value is not equal to itself.")
838+ }
839+ else throw("Strict value is not equal to itself.")
840+ }
841+ else throw("Strict value is not equal to itself.")
842+ }
843+ }
972844 }
973845
974846
975847
976-@Callable(dk)
977-func getOneTknV2 (eD,eq) = if ((size(dk.payments) != 1))
978- then throw("1 pmnt expd")
979- else {
980- let dq = aC()
981- let bN = dq[q]
982- let bO = dq[r]
983- let bP = dq[s]
984- let er = parseIntValue(dq[t])
985- let es = parseIntValue(dq[u])
986- let eP = dq[p]
987- let bM = if ((dk.caller == this))
988- then dk.originCaller
989- else dk.caller
990- let dl = value(dk.payments[0])
991- let bK = value(dl.assetId)
992- let cq = dl.amount
993- if ((1000000000 > cq))
994- then throw("Min pmt 10 LP")
848+@Callable(dh)
849+func getNoLess (eE,eF) = {
850+ let cz = dg(dh)
851+ let cc = cz._1
852+ let cd = cz._2
853+ let cn = cz._3
854+ let bI = cz._4
855+ let ce = cz._5
856+ if ((eE > cc))
857+ then throw(((("Failed: " + toString(cc)) + " < ") + toString(eE)))
858+ else if ((eF > cd))
859+ then throw(((("Failed: " + toString(cd)) + " < ") + toString(eF)))
995860 else {
996- let bJ = toBase58String(dk.transactionId)
997- if ((bN != toBase58String(bK)))
998- then throw("Wrong LP")
999- else {
1000- let cC = bI(bJ, toBase58String(bK), cq, dk.caller)
1001- let eE = cC._1
1002- let eF = cC._2
1003- let bU = ba(bO)
1004- let bW = ba(bP)
1005- let eH = {
1006- let dz = invoke(this, "getOneTknV2READONLY", [eD, cq], nil)
1007- if ($isInstanceOf(dz, "Int"))
1008- then dz
1009- else throw(($getType(invoke(this, "getOneTknV2READONLY", [eD, cq], nil)) + " couldn't be cast to Int"))
1010- }
1011- let eQ = if (if ((eq > 0))
1012- then (eq > eH)
1013- else false)
1014- then throw(makeString(["amount to receive is less than ", toString(eq)], ""))
1015- else eH
1016- let eR = if ((eD == bO))
1017- then $Tuple2(eQ, 0)
1018- else $Tuple2(0, eQ)
1019- let eK = eR._1
1020- let eL = eR._2
1021- let eM = bc(B(bW, es), B(bU, er))
1022- let eN = E(eM, a)
1023- let cg = [ScriptTransfer(bM, eQ, if ((eD == "WAVES"))
1024- then unit
1025- else fromBase58String(eD)), StringEntry(W(toString(bM), bJ), aW(eK, eL, cq, eN, height, lastBlock.timestamp)), IntegerEntry(P(), eN), IntegerEntry(Q(height, lastBlock.timestamp), eN)]
1026- if ((cg == cg))
1027- then {
1028- let eO = invoke(ay, "burn", [cq], [AttachedPayment(bK, cq)])
1029- if ((eO == eO))
1030- then $Tuple2(cg, eQ)
1031- else throw("Strict value is not equal to itself.")
1032- }
1033- else throw("Strict value is not equal to itself.")
1034- }
1035- }
1036- }
1037-
1038-
1039-
1040-@Callable(dk)
1041-func getOneTknV2READONLY (eD,eS) = {
1042- let dq = aC()
1043- let bN = dq[q]
1044- let bO = dq[r]
1045- let bP = dq[s]
1046- let cC = bI("", bN, eS, this)
1047- let eE = cC._1
1048- let eF = cC._2
1049- let bU = ba(bO)
1050- let bW = ba(bP)
1051- let ds = (bU - eE)
1052- let dt = (bW - eF)
1053- let eT = if ((eD == bO))
1054- then $Tuple3(dt, ds, eF)
1055- else if ((eD == bP))
1056- then $Tuple3(ds, dt, eE)
1057- else throw("wrong outAssetId")
1058- let eU = eT._1
1059- let eV = eT._2
1060- let eW = eT._3
1061- let eX = 1
1062- let eA = {
1063- let dz = invoke(aK, "calcSwapXToY", [toString(eW), toString(eU), toString(eV), "", az, g, toString(eX), h], nil)
1064- if ($isInstanceOf(dz, "Int"))
1065- then dz
1066- else throw(($getType(invoke(aK, "calcSwapXToY", [toString(eW), toString(eU), toString(eV), "", az, g, toString(eX), h], nil)) + " couldn't be cast to Int"))
1067- }
1068- let eH = (eA + (if ((eD == bO))
1069- then eE
1070- else eF))
1071- $Tuple2(nil, eH)
1072- }
1073-
1074-
1075-
1076-@Callable(dk)
1077-func getNoLess (eY,eZ) = {
1078- let cC = dj(dk)
1079- let ce = cC._1
1080- let cf = cC._2
1081- let cq = cC._3
1082- let bK = cC._4
1083- let cg = cC._5
1084- if ((eY > ce))
1085- then throw(((("Failed: " + toString(ce)) + " < ") + toString(eY)))
1086- else if ((eZ > cf))
1087- then throw(((("Failed: " + toString(cf)) + " < ") + toString(eZ)))
1088- else {
1089- let fa = invoke(ay, "burn", [cq], [AttachedPayment(bK, cq)])
1090- if ((fa == fa))
1091- then cg
861+ let eG = invoke(az, "burn", [cn], [AttachedPayment(bI, cn)])
862+ if ((eG == eG))
863+ then ce
1092864 else throw("Strict value is not equal to itself.")
1093865 }
1094866 }
1095867
1096868
1097869
1098-@Callable(dk)
1099-func unstakeAndGet (fb) = {
1100- let fc = if ((size(dk.payments) != 0))
870+@Callable(dh)
871+func unstakeAndGet (do) = {
872+ let eH = if ((size(dh.payments) != 0))
1101873 then throw("No pmnts expd")
1102874 else true
1103- if ((fc == fc))
875+ if ((eH == eH))
1104876 then {
1105- let bz = aC()
1106- let fd = aG()
1107- let dF = fromBase58String(bz[q])
1108- let fe = valueOrErrorMessage(addressFromString(fd[x]), "Wr st addr")
1109- let ff = invoke(fe, "unstake", [toBase58String(dF), fb], nil)
1110- if ((ff == ff))
877+ let bx = aE()
878+ let eI = aI()
879+ let dH = fromBase58String(bx[r])
880+ let eJ = valueOrErrorMessage(addressFromString(eI[y]), "Wr st addr")
881+ let eK = invoke(eJ, "unstake", [toBase58String(dH), do], nil)
882+ if ((eK == eK))
1111883 then {
1112- let cC = bI(toBase58String(dk.transactionId), toBase58String(dF), fb, dk.caller)
1113- let bS = parseIntValue(cC._9)
1114- let cg = cC._10
1115- let fg = if (if (aA())
884+ let cz = bG(toBase58String(dh.transactionId), toBase58String(dH), do, dh.caller)
885+ let bQ = parseIntValue(cz._9)
886+ let ce = cz._10
887+ let eL = if (if (aB())
1116888 then true
1117- else (bS == n))
1118- then throw(("Blocked: " + toString(bS)))
889+ else (bQ == o))
890+ then throw(("Blocked: " + toString(bQ)))
1119891 else true
1120- if ((fg == fg))
892+ if ((eL == eL))
1121893 then {
1122- let fh = invoke(ay, "burn", [fb], [AttachedPayment(dF, fb)])
1123- if ((fh == fh))
1124- then cg
894+ let eM = invoke(az, "burn", [do], [AttachedPayment(dH, do)])
895+ if ((eM == eM))
896+ then ce
1125897 else throw("Strict value is not equal to itself.")
1126898 }
1127899 else throw("Strict value is not equal to itself.")
1133905
1134906
1135907
1136-@Callable(dk)
1137-func unstakeAndGetOneTkn (fb,eC,eD,bi) = {
1138- let fc = if ((size(dk.payments) != 0))
1139- then throw("No pmnts expd")
1140- else true
1141- if ((fc == fc))
1142- then {
1143- let bz = aC()
1144- let fd = aG()
1145- let dF = fromBase58String(bz[q])
1146- let fe = valueOrErrorMessage(addressFromString(fd[x]), "Wr st addr")
1147- let ff = invoke(fe, "unstake", [toBase58String(dF), fb], nil)
1148- if ((ff == ff))
1149- then {
1150- let fi = {
1151- let dz = invoke(this, "getOneTknV2", [eC, eD, bi], [AttachedPayment(dF, fb)])
1152- if ($isInstanceOf(dz, "Int"))
1153- then dz
1154- else unit
1155- }
1156- if ((fi == fi))
1157- then $Tuple2(nil, fi)
1158- else throw("Strict value is not equal to itself.")
1159- }
1160- else throw("Strict value is not equal to itself.")
1161- }
1162- else throw("Strict value is not equal to itself.")
908+@Callable(dh)
909+func activate (eN,eO) = if ((toString(dh.caller) != toString(az)))
910+ then throw("denied")
911+ else $Tuple2([StringEntry(Y(), eN), StringEntry(Z(), eO)], "success")
912+
913+
914+
915+@Callable(dh)
916+func setS (eP,eL) = if ((toString(dh.caller) != av(this, ab())))
917+ then dt
918+ else [StringEntry(eP, eL)]
919+
920+
921+
922+@Callable(dh)
923+func setI (eP,eL) = if ((toString(dh.caller) != av(this, ab())))
924+ then dt
925+ else [IntegerEntry(eP, eL)]
926+
927+
928+
929+@Callable(dh)
930+func getPoolConfigWrapperREADONLY () = $Tuple2(nil, aE())
931+
932+
933+
934+@Callable(dh)
935+func getAccBalanceWrapperREADONLY (aZ) = $Tuple2(nil, aY(aZ))
936+
937+
938+
939+@Callable(dh)
940+func calcPricesWrapperREADONLY (br,bs,bw) = {
941+ let eQ = bv(br, bs, bw)
942+ $Tuple2(nil, [toString(eQ[0]), toString(eQ[1]), toString(eQ[2])])
1163943 }
1164944
1165945
1166946
1167-@Callable(dk)
1168-func activate (fj,fk) = if ((toString(dk.caller) != toString(ay)))
1169- then throw("denied")
1170- else $Tuple2([StringEntry(X(), fj), StringEntry(Y(), fk)], "success")
947+@Callable(dh)
948+func fromX18WrapperREADONLY (G,eR) = $Tuple2(nil, F(parseBigIntValue(G), eR))
1171949
1172950
1173951
1174-@Callable(dk)
1175-func setS (fl,fg) = if ((toString(dk.caller) != au(this, aa())))
1176- then dJ
1177- else [StringEntry(fl, fg)]
952+@Callable(dh)
953+func toX18WrapperREADONLY (D,E) = $Tuple2(nil, toString(C(D, E)))
1178954
1179955
1180956
1181-@Callable(dk)
1182-func setI (fl,fg) = if ((toString(dk.caller) != au(this, aa())))
1183- then dJ
1184- else [IntegerEntry(fl, fg)]
957+@Callable(dh)
958+func calcPriceBigIntWrapperREADONLY (bb,bc) = $Tuple2(nil, toString(ba(parseBigIntValue(bb), parseBigIntValue(bc))))
1185959
1186960
1187961
1188-@Callable(dk)
1189-func getPoolConfigWrapperREADONLY () = $Tuple2(nil, aC())
962+@Callable(dh)
963+func estimatePutOperationWrapperREADONLY (bH,bg,cg,ch,ci,cj,eS,ck,cl) = $Tuple2(nil, cf(bH, bg, cg, ch, ci, cj, eS, ck, cl, false, 0, ""))
1190964
1191965
1192966
1193-@Callable(dk)
1194-func getAccBalanceWrapperREADONLY (bb) = $Tuple2(nil, ba(bb))
1195-
1196-
1197-
1198-@Callable(dk)
1199-func calcPricesWrapperREADONLY (bt,bu,by) = {
1200- let fm = bx(bt, bu, by)
1201- $Tuple2(nil, [toString(fm[0]), toString(fm[1]), toString(fm[2])])
967+@Callable(dh)
968+func estimateGetOperationWrapperREADONLY (bH,eT,bJ,eS) = {
969+ let cz = bG(bH, eT, bJ, addressFromStringValue(eS))
970+ $Tuple2(nil, $Tuple10(cz._1, cz._2, cz._3, cz._4, cz._5, cz._6, cz._7, toString(cz._8), cz._9, cz._10))
1202971 }
1203972
1204973
1205-
1206-@Callable(dk)
1207-func fromX18WrapperREADONLY (F,fn) = $Tuple2(nil, E(parseBigIntValue(F), fn))
1208-
1209-
1210-
1211-@Callable(dk)
1212-func toX18WrapperREADONLY (C,D) = $Tuple2(nil, toString(B(C, D)))
1213-
1214-
1215-
1216-@Callable(dk)
1217-func calcPriceBigIntWrapperREADONLY (bd,be) = $Tuple2(nil, toString(bc(parseBigIntValue(bd), parseBigIntValue(be))))
1218-
1219-
1220-
1221-@Callable(dk)
1222-func estimatePutOperationWrapperREADONLY (bJ,bi,ci,cj,ck,cl,fo,cm,cn) = $Tuple2(nil, ch(bJ, bi, ci, cj, ck, cl, fo, cm, cn, true, false, 0, ""))
1223-
1224-
1225-
1226-@Callable(dk)
1227-func estimateGetOperationWrapperREADONLY (bJ,fp,bL,fo) = {
1228- let cC = bI(bJ, fp, bL, addressFromStringValue(fo))
1229- $Tuple2(nil, $Tuple10(cC._1, cC._2, cC._3, cC._4, cC._5, cC._6, cC._7, toString(cC._8), cC._9, cC._10))
1230- }
1231-
1232-
1233-@Verifier(fq)
1234-func fr () = {
1235- let fs = {
1236- let as = dG()
1237- if ($isInstanceOf(as, "ByteVector"))
974+@Verifier(eU)
975+func eV () = {
976+ let eW = {
977+ let at = dq()
978+ if ($isInstanceOf(at, "ByteVector"))
1238979 then {
1239- let dL = as
1240- dL
980+ let dv = at
981+ dv
1241982 }
1242- else if ($isInstanceOf(as, "Unit"))
1243- then fq.senderPublicKey
983+ else if ($isInstanceOf(at, "Unit"))
984+ then eU.senderPublicKey
1244985 else throw("Match error")
1245986 }
1246- let as = fq
1247- if ($isInstanceOf(as, "Order"))
987+ let at = eU
988+ if ($isInstanceOf(at, "Order"))
1248989 then {
1249- let cX = as
1250- let ft = aB()
1251- let fu = cW(cX)
1252- let fv = sigVerify(cX.bodyBytes, cX.proofs[0], cX.senderPublicKey)
1253- let fw = sigVerify(cX.bodyBytes, cX.proofs[1], ft)
1254- if (if (if (fu)
1255- then fv
990+ let cU = at
991+ let eX = aC()
992+ let eY = cT(cU)
993+ let eZ = sigVerify(cU.bodyBytes, cU.proofs[0], cU.senderPublicKey)
994+ let fa = sigVerify(cU.bodyBytes, cU.proofs[1], eX)
995+ if (if (if (eY)
996+ then eZ
1256997 else false)
1257- then fw
998+ then fa
1258999 else false)
12591000 then true
1260- else an(fu, fv, fw)
1001+ else ao(eY, eZ, fa)
12611002 }
1262- else if ($isInstanceOf(as, "SetScriptTransaction"))
1003+ else if ($isInstanceOf(at, "SetScriptTransaction"))
12631004 then {
1264- let dH = as
1265- let fx = blake2b256(value(dH.script))
1266- let fy = fromBase64String(value(getString(ay, am())))
1267- let fz = scriptHash(this)
1268- if (if ((fy == fx))
1269- then (fz != fx)
1005+ let dr = at
1006+ let fb = blake2b256(value(dr.script))
1007+ let fc = fromBase64String(value(getString(az, am())))
1008+ let fd = scriptHash(this)
1009+ if (if ((fc == fb))
1010+ then (fd != fb)
12701011 else false)
12711012 then true
1272- else sigVerify(fq.bodyBytes, fq.proofs[0], fs)
1013+ else sigVerify(eU.bodyBytes, eU.proofs[0], eW)
12731014 }
1274- else sigVerify(fq.bodyBytes, fq.proofs[0], fs)
1015+ else sigVerify(eU.bodyBytes, eU.proofs[0], eW)
12751016 }
12761017
Full:
OldNewDifferences
11 {-# STDLIB_VERSION 6 #-}
22 {-# SCRIPT_TYPE ACCOUNT #-}
33 {-# CONTENT_TYPE DAPP #-}
44 let a = 100000000
55
66 let b = toBigInt(100000000)
77
88 let c = toBigInt(1000000000000000000)
99
10-let d = toBigInt(0)
10+let d = 1000
1111
12-let e = toBigInt(1)
12+let e = toBigInt(0)
1313
14-let f = toBigInt((a - ((a * 1) / a)))
14+let f = toBigInt(1)
1515
16-let g = "100"
16+let g = toBigInt((a - ((a * 1) / a)))
1717
18-let h = "1"
18+let h = "100"
1919
20-let i = "__"
20+let i = "1"
2121
22-let j = ""
22+let j = "__"
2323
24-let k = 1
24+let k = ""
2525
26-let l = 2
26+let l = 1
2727
28-let m = 3
28+let m = 2
2929
30-let n = 4
30+let n = 3
3131
32-let o = 1
32+let o = 4
3333
34-let p = 2
34+let p = 1
3535
36-let q = 3
36+let q = 2
3737
38-let r = 4
38+let r = 3
3939
40-let s = 5
40+let s = 4
4141
42-let t = 6
42+let t = 5
4343
44-let u = 7
44+let u = 6
4545
46-let v = 8
46+let v = 7
4747
48-let w = 9
48+let w = 8
4949
50-let x = 1
50+let x = 9
5151
52-let y = 7
52+let y = 1
5353
54-let z = 10
54+let z = 7
5555
56-let A = "%s__delay"
56+let A = 10
5757
58-func B (C,D) = fraction(toBigInt(C), c, toBigInt(D))
58+let B = 0
59+
60+func C (D,E) = fraction(toBigInt(D), c, toBigInt(E))
5961
6062
61-func E (F,G) = toInt(fraction(F, toBigInt(G), c))
63+func F (G,H) = toInt(fraction(G, toBigInt(H), c))
6264
6365
64-func H (I,J,K) = fraction(I, J, K)
66+func I (J,K,L) = fraction(J, K, L)
6567
6668
67-func L (F) = if ((d > F))
68- then -(F)
69- else F
69+func M (G) = if ((e > G))
70+ then -(G)
71+ else G
7072
7173
72-func M () = "%s__factoryContract"
74+func N () = "%s__factoryContract"
7375
7476
75-func N () = "%s__managerPublicKey"
77+func O () = "%s__managerPublicKey"
7678
7779
78-func O () = "%s__pendingManagerPublicKey"
80+func P () = "%s__pendingManagerPublicKey"
7981
8082
81-func P () = "%s%s__price__last"
83+func Q () = "%s%s__price__last"
8284
8385
84-func Q (R,S) = makeString(["%s%s%d%d__price__history", toString(R), toString(S)], i)
86+func R (S,T) = makeString(["%s%s%d%d__price__history", toString(S), toString(T)], j)
8587
8688
87-func T (U,V) = ((("%s%s%s__P__" + U) + "__") + V)
89+func U (V,W) = ((("%s%s%s__P__" + V) + "__") + W)
8890
8991
90-func W (U,V) = ((("%s%s%s__G__" + U) + "__") + V)
92+func X (V,W) = ((("%s%s%s__G__" + V) + "__") + W)
9193
9294
93-func X () = "%s__amountAsset"
95+func Y () = "%s__amountAsset"
9496
9597
96-func Y () = "%s__priceAsset"
98+func Z () = "%s__priceAsset"
9799
98100
99-func Z () = "%s__amp"
101+func aa () = "%s__amp"
100102
101103
102-func aa () = "%s__addonAddr"
104+func ab () = "%s__addonAddr"
103105
104106
105-func ab (ac) = makeString(["%s%s__lastGetOneTknCall", ac], i)
107+let ac = "%s__feePermille"
106108
107-
108-func ad (ac) = makeString(["%s%s__lastPutOneTknCall", ac], i)
109-
109+let ad = valueOrElse(getInteger(this, ac), B)
110110
111111 func ae () = "%s__factoryConfig"
112112
113113
114114 func af () = "%s%s__matcher__publicKey"
115115
116116
117117 func ag (ah,ai) = (((("%d%d%s__" + ah) + "__") + ai) + "__config")
118118
119119
120120 func aj (ak) = ("%s%s%s__mappings__baseAsset2internalId__" + ak)
121121
122122
123123 func al () = "%s__shutdown"
124124
125125
126126 func am () = "%s__allowedLpStableScriptHash"
127127
128128
129-func an (ao,ap,aq) = throw(((((("Failed: ordValid=" + toString(ao)) + " sndrValid=") + toString(ap)) + " mtchrValid=") + toString(aq)))
129+func an () = "%s__feeCollectorAddress"
130130
131131
132-func ar (F) = {
133- let as = F
134- if ($isInstanceOf(as, "String"))
132+func ao (ap,aq,ar) = throw(((((("Failed: ordValid=" + toString(ap)) + " sndrValid=") + toString(aq)) + " mtchrValid=") + toString(ar)))
133+
134+
135+func as (G) = {
136+ let at = G
137+ if ($isInstanceOf(at, "String"))
135138 then {
136- let at = as
137- at
139+ let au = at
140+ au
138141 }
139142 else throw("fail cast to String")
140143 }
141144
142145
143-func au (av,aw) = valueOrErrorMessage(getString(av, aw), makeString(["mandatory ", toString(av), ".", aw, " not defined"], ""))
146+func av (aw,ax) = valueOrErrorMessage(getString(aw, ax), makeString(["mandatory ", toString(aw), ".", ax, " not defined"], ""))
144147
145148
146-func ax (av,aw) = valueOrErrorMessage(getInteger(av, aw), makeString(["mandatory ", toString(av), ".", aw, " not defined"], ""))
149+func ay (aw,ax) = valueOrErrorMessage(getInteger(aw, ax), makeString(["mandatory ", toString(aw), ".", ax, " not defined"], ""))
147150
148151
149-let ay = addressFromStringValue(au(this, M()))
152+let az = addressFromStringValue(av(this, N()))
150153
151-let az = au(this, Z())
154+let aA = av(this, aa())
152155
153-func aA () = valueOrElse(getBoolean(ay, al()), false)
156+func aB () = valueOrElse(getBoolean(az, al()), false)
154157
155158
156-func aB () = fromBase58String(au(ay, af()))
159+func aC () = fromBase58String(av(az, af()))
157160
158161
159-func aC () = {
160- let aD = au(this, X())
161- let aE = au(this, Y())
162- let aF = ax(ay, aj(aE))
163- let ah = ax(ay, aj(aD))
164- split(au(ay, ag(toString(ah), toString(aF))), i)
162+let aD = addressFromStringValue(av(az, an()))
163+
164+func aE () = {
165+ let aF = av(this, Y())
166+ let aG = av(this, Z())
167+ let aH = ay(az, aj(aG))
168+ let ah = ay(az, aj(aF))
169+ split(av(az, ag(toString(ah), toString(aH))), j)
165170 }
166171
167172
168-func aG () = split(au(ay, ae()), i)
173+func aI () = split(av(az, ae()), j)
169174
170175
171-let aH = aG()
172-
173-let aI = valueOrErrorMessage(addressFromString(aH[x]), "Invalid staking contract address")
174-
175-let aJ = valueOrErrorMessage(addressFromString(aH[y]), "Invalid slipage contract address")
176-
177-let aK = valueOrErrorMessage(addressFromString(aH[z]), "Invalid gwx contract address")
178-
179-func aL (aM,aN,aO,aP,aQ,aR,aS,aT,aU,aV) = makeString(["%d%d%d%d%d%d%d%d%d%d", toString(aM), toString(aN), toString(aO), toString(aP), toString(aQ), toString(aR), toString(aS), toString(aT), toString(aU), toString(aV)], i)
176+func aJ (aK,aL,aM,aN,aO,aP,aQ,aR,aS,aT) = makeString(["%d%d%d%d%d%d%d%d%d%d", toString(aK), toString(aL), toString(aM), toString(aN), toString(aO), toString(aP), toString(aQ), toString(aR), toString(aS), toString(aT)], j)
180177
181178
182-func aW (aX,aY,aZ,aP,aS,aT) = makeString(["%d%d%d%d%d%d", toString(aX), toString(aY), toString(aZ), toString(aP), toString(aS), toString(aT)], i)
179+func aU (aV,aW,aX,aN,aQ,aR) = makeString(["%d%d%d%d%d%d", toString(aV), toString(aW), toString(aX), toString(aN), toString(aQ), toString(aR)], j)
183180
184181
185-func ba (bb) = if ((bb == "WAVES"))
182+func aY (aZ) = if ((aZ == "WAVES"))
186183 then wavesBalance(this).available
187- else assetBalance(this, fromBase58String(bb))
184+ else assetBalance(this, fromBase58String(aZ))
188185
189186
190-func bc (bd,be) = fraction(bd, c, be)
187+func ba (bb,bc) = fraction(bb, c, bc)
191188
192189
193-func bf (bg,bh,bi) = {
194- let bj = fraction((bg - bh), b, bh)
195- let bk = ((bi - L(bj)) > d)
196- if (!(bk))
197- then throw(("Big slpg: " + toString(bj)))
198- else $Tuple2(bk, min([bg, bh]))
190+func bd (be,bf,bg) = {
191+ let bh = fraction((be - bf), b, bf)
192+ let bi = ((bg - M(bh)) > e)
193+ if (!(bi))
194+ then throw(("Big slpg: " + toString(bh)))
195+ else $Tuple2(bi, min([be, bf]))
199196 }
200197
201198
202-func bl (bm,bn,bo) = {
203- let bj = fraction(bn, b, bm)
204- let bp = (bo > bj)
205- if (if (bp)
199+func bj (bk,bl,bm) = {
200+ let bh = fraction(bl, b, bk)
201+ let bn = (bm > bh)
202+ if (if (bn)
206203 then true
207- else (bn > bm))
208- then throw(((((((toString(bn) + " ") + toString(bm)) + " ") + toString(bj)) + " ") + toString(bo)))
209- else bp
204+ else (bl > bk))
205+ then throw(((((((toString(bl) + " ") + toString(bk)) + " ") + toString(bh)) + " ") + toString(bm)))
206+ else bn
210207 }
211208
212209
213-func bq (br,bs,bt,bu) = {
214- let bv = B(bt, br)
215- let bw = B(bu, bs)
216- bc(bw, bv)
210+func bo (bp,bq,br,bs) = {
211+ let bt = C(br, bp)
212+ let bu = C(bs, bq)
213+ ba(bu, bt)
217214 }
218215
219216
220-func bx (bt,bu,by) = {
221- let bz = aC()
222- let bA = parseIntValue(bz[t])
223- let bB = parseIntValue(bz[u])
224- let bC = bq(bA, bB, bt, bu)
225- let be = B(bt, bA)
226- let bd = B(bu, bB)
227- let bD = B(by, a)
228- let bE = bc(be, bD)
229- let bF = bc(bd, bD)
230-[bC, bE, bF]
217+func bv (br,bs,bw) = {
218+ let bx = aE()
219+ let by = parseIntValue(bx[u])
220+ let bz = parseIntValue(bx[v])
221+ let bA = bo(by, bz, br, bs)
222+ let bc = C(br, by)
223+ let bb = C(bs, bz)
224+ let bB = C(bw, a)
225+ let bC = ba(bc, bB)
226+ let bD = ba(bb, bB)
227+[bA, bC, bD]
231228 }
232229
233230
234-func bG (bt,bu,by) = {
235- let bH = bx(bt, bu, by)
236-[E(bH[0], a), E(bH[1], a), E(bH[2], a)]
231+func bE (br,bs,bw) = {
232+ let bF = bv(br, bs, bw)
233+[F(bF[0], a), F(bF[1], a), F(bF[2], a)]
237234 }
238235
239236
240-func bI (bJ,bK,bL,bM) = {
241- let bz = aC()
242- let bN = bz[q]
243- let bO = bz[r]
244- let bP = bz[s]
245- let bQ = parseIntValue(bz[t])
246- let bR = parseIntValue(bz[u])
247- let bS = bz[p]
248- let bT = valueOrErrorMessage(assetInfo(fromBase58String(bN)), "Wrong LP id").quantity
249- if ((bN != bK))
237+func bG (bH,bI,bJ,bK) = {
238+ let bx = aE()
239+ let bL = bx[r]
240+ let bM = bx[s]
241+ let bN = bx[t]
242+ let bO = parseIntValue(bx[u])
243+ let bP = parseIntValue(bx[v])
244+ let bQ = bx[q]
245+ let bR = valueOrErrorMessage(assetInfo(fromBase58String(bL)), "Wrong LP id").quantity
246+ if ((bL != bI))
250247 then throw("Wrong pmt asset")
251248 else {
252- let bU = ba(bO)
253- let bV = B(bU, bQ)
254- let bW = ba(bP)
255- let bX = B(bW, bR)
256- let bY = bc(bX, bV)
257- let bZ = E(bY, a)
258- let ca = B(bL, a)
259- let cb = B(bT, a)
260- let cc = fraction(bV, ca, cb)
261- let cd = fraction(bX, ca, cb)
262- let ce = E(cc, bQ)
263- let cf = E(cd, bR)
264- let cg = if ((bJ == ""))
249+ let bS = aY(bM)
250+ let bT = C(bS, bO)
251+ let bU = aY(bN)
252+ let bV = C(bU, bP)
253+ let bW = ba(bV, bT)
254+ let bX = F(bW, a)
255+ let bY = C(bJ, a)
256+ let bZ = C(bR, a)
257+ let ca = fraction(bT, bY, bZ)
258+ let cb = fraction(bV, bY, bZ)
259+ let cc = F(ca, bO)
260+ let cd = F(cb, bP)
261+ let ce = if ((bH == ""))
265262 then nil
266- else [ScriptTransfer(bM, ce, if ((bO == "WAVES"))
263+ else [ScriptTransfer(bK, cc, if ((bM == "WAVES"))
267264 then unit
268- else fromBase58String(bO)), ScriptTransfer(bM, cf, if ((bP == "WAVES"))
265+ else fromBase58String(bM)), ScriptTransfer(bK, cd, if ((bN == "WAVES"))
269266 then unit
270- else fromBase58String(bP)), StringEntry(W(toString(bM), bJ), aW(ce, cf, bL, bZ, height, lastBlock.timestamp)), IntegerEntry(P(), bZ), IntegerEntry(Q(height, lastBlock.timestamp), bZ)]
271- $Tuple10(ce, cf, bO, bP, bU, bW, bT, bY, bS, cg)
267+ else fromBase58String(bN)), StringEntry(X(toString(bK), bH), aU(cc, cd, bJ, bX, height, lastBlock.timestamp)), IntegerEntry(Q(), bX), IntegerEntry(R(height, lastBlock.timestamp), bX)]
268+ $Tuple10(cc, cd, bM, bN, bS, bU, bR, bW, bQ, ce)
272269 }
273270 }
274271
275272
276-func ch (bJ,bi,ci,cj,ck,cl,bM,cm,cn,co,cp,cq,cr) = {
277- let bz = aC()
278- let bN = fromBase58String(bz[q])
279- let cs = bz[r]
280- let ct = bz[s]
281- let cu = bz[v]
282- let cv = bz[w]
283- let cw = parseIntValue(bz[t])
284- let cx = parseIntValue(bz[u])
285- let bS = bz[p]
286- let cy = valueOrErrorMessage(assetInfo(bN), "Wr lp as").quantity
287- let bU = if (cm)
288- then ba(cs)
289- else if (if (co)
290- then (cr == cs)
273+func cf (bH,bg,cg,ch,ci,cj,bK,ck,cl,cm,cn,co) = {
274+ let bx = aE()
275+ let bL = fromBase58String(bx[r])
276+ let cp = bx[s]
277+ let cq = bx[t]
278+ let cr = bx[w]
279+ let cs = bx[x]
280+ let ct = parseIntValue(bx[u])
281+ let cu = parseIntValue(bx[v])
282+ let bQ = bx[q]
283+ let cv = valueOrErrorMessage(assetInfo(bL), "Wr lp as").quantity
284+ let bS = if (ck)
285+ then aY(cp)
286+ else if (if (cm)
287+ then (co == cp)
291288 else false)
292- then (ba(cs) - cq)
293- else if (co)
294- then ba(cs)
295- else (ba(cs) - ci)
296- let bW = if (cm)
297- then ba(ct)
298- else if (if (co)
299- then (cr == ct)
289+ then (aY(cp) - cn)
290+ else if (cm)
291+ then aY(cp)
292+ else (aY(cp) - cg)
293+ let bU = if (ck)
294+ then aY(cq)
295+ else if (if (cm)
296+ then (co == cq)
300297 else false)
301- then (ba(ct) - cq)
302- else if (co)
303- then ba(ct)
304- else (ba(ct) - ck)
305- let cz = B(ci, cw)
306- let cA = B(ck, cx)
307- let cB = bc(cA, cz)
308- let bV = B(bU, cw)
309- let bX = B(bW, cx)
310- let cC = if ((cy == 0))
298+ then (aY(cq) - cn)
299+ else if (cm)
300+ then aY(cq)
301+ else (aY(cq) - ci)
302+ let cw = C(cg, ct)
303+ let cx = C(ci, cu)
304+ let cy = ba(cx, cw)
305+ let bT = C(bS, ct)
306+ let bV = C(bU, cu)
307+ let cz = if ((cv == 0))
311308 then {
312- let bY = d
313- let cD = d
314- let bD = pow((cz * cA), 0, toBigInt(5), 1, 0, DOWN)
315- $Tuple5(E(bD, a), E(cz, cw), E(cA, cx), bc((bX + cA), (bV + cz)), cD)
309+ let bW = e
310+ let cA = e
311+ let bB = pow((cw * cx), 0, toBigInt(5), 1, 0, DOWN)
312+ $Tuple5(F(bB, a), F(cw, ct), F(cx, cu), ba((bV + cx), (bT + cw)), cA)
316313 }
317314 else {
318- let bY = bc(bX, bV)
319- let cE = fraction(L((bY - cB)), c, bY)
320- let cD = B(bi, a)
321- if (if (if (cp)
322- then (bY != d)
315+ let bW = ba(bV, bT)
316+ let cB = fraction(M((bW - cy)), c, bW)
317+ let cA = C(bg, a)
318+ if (if ((bW != e))
319+ then (cB > cA)
323320 else false)
324- then (cE > cD)
325- else false)
326- then throw(((("Price slippage " + toString(cE)) + " > ") + toString(cD)))
321+ then throw(((("Price slippage " + toString(cB)) + " > ") + toString(cA)))
327322 else {
328- let cF = B(cy, a)
329- let cG = fraction(cz, bY, c)
330- let cH = fraction(cA, c, bY)
331- let cI = if ((cG > cA))
332- then $Tuple2(cH, cA)
333- else $Tuple2(cz, cG)
334- let cJ = cI._1
335- let cK = cI._2
336- let bD = fraction(cF, cK, bX)
337- $Tuple5(E(bD, a), E(cJ, cw), E(cK, cx), bY, cD)
323+ let cC = C(cv, a)
324+ let cD = fraction(cw, bW, c)
325+ let cE = fraction(cx, c, bW)
326+ let cF = if ((cD > cx))
327+ then $Tuple2(cE, cx)
328+ else $Tuple2(cw, cD)
329+ let cG = cF._1
330+ let cH = cF._2
331+ let bB = fraction(cC, cH, bV)
332+ $Tuple5(F(bB, a), F(cG, ct), F(cH, cu), bW, cA)
338333 }
339334 }
340- let cL = cC._1
341- let cM = cC._2
342- let cN = cC._3
343- let bZ = E(cC._4, a)
344- let cO = E(cC._5, a)
345- if ((0 >= cL))
335+ let cI = cz._1
336+ let cJ = cz._2
337+ let cK = cz._3
338+ let bX = F(cz._4, a)
339+ let cL = F(cz._5, a)
340+ if ((0 >= cI))
346341 then throw("LP <= 0")
347342 else {
348- let cP = if (!(cn))
343+ let cM = if (!(cl))
349344 then 0
350- else cL
351- let cQ = (ci - cM)
352- let cR = (ck - cN)
353- let cS = if (if (co)
354- then (cr == cs)
345+ else cI
346+ let cN = (cg - cJ)
347+ let cO = (ci - cK)
348+ let cP = if (if (cm)
349+ then (co == cp)
355350 else false)
356- then $Tuple2(cq, 0)
357- else if (if (co)
358- then (cr == ct)
351+ then $Tuple2(cn, 0)
352+ else if (if (cm)
353+ then (co == cq)
359354 else false)
360- then $Tuple2(0, cq)
361- else $Tuple2(cM, cN)
362- let cT = cS._1
363- let cU = cS._2
364- let cV = [IntegerEntry(P(), bZ), IntegerEntry(Q(height, lastBlock.timestamp), bZ), StringEntry(T(bM, bJ), aL(cT, cU, cP, bZ, bi, cO, height, lastBlock.timestamp, cQ, cR))]
365- $Tuple13(cL, cP, bZ, bU, bW, cy, bN, bS, cV, cQ, cR, cj, cl)
355+ then $Tuple2(0, cn)
356+ else $Tuple2(cJ, cK)
357+ let cQ = cP._1
358+ let cR = cP._2
359+ let cS = [IntegerEntry(Q(), bX), IntegerEntry(R(height, lastBlock.timestamp), bX), StringEntry(U(bK, bH), aJ(cQ, cR, cM, bX, bg, cL, height, lastBlock.timestamp, cN, cO))]
360+ $Tuple13(cI, cM, bX, bS, bU, cv, bL, bQ, cS, cN, cO, ch, cj)
366361 }
367362 }
368363
369364
370-func cW (cX) = {
371- let bz = aC()
372- let cY = bz[r]
373- let cZ = bz[s]
374- let bS = parseIntValue(bz[p])
375- let bA = parseIntValue(bz[t])
376- let bB = parseIntValue(bz[u])
377- let da = ba(cY)
378- let db = ba(cZ)
379- let bY = if ((cX.orderType == Buy))
380- then bq(bA, bB, (da + cX.amount), db)
381- else bq(bA, bB, (da - cX.amount), db)
382- let bZ = E(bY, a)
383- if (if (if (aA())
365+func cT (cU) = {
366+ let bx = aE()
367+ let cV = bx[s]
368+ let cW = bx[t]
369+ let bQ = parseIntValue(bx[q])
370+ let by = parseIntValue(bx[u])
371+ let bz = parseIntValue(bx[v])
372+ let cX = aY(cV)
373+ let cY = aY(cW)
374+ let bW = if ((cU.orderType == Buy))
375+ then bo(by, bz, (cX + cU.amount), cY)
376+ else bo(by, bz, (cX - cU.amount), cY)
377+ let bX = F(bW, a)
378+ if (if (if (aB())
384379 then true
385- else (bS == m))
380+ else (bQ == n))
386381 then true
387- else (bS == n))
382+ else (bQ == o))
388383 then throw("Admin blocked")
389384 else {
390- let dc = cX.assetPair.amountAsset
391- let dd = if ((dc == unit))
385+ let cZ = cU.assetPair.amountAsset
386+ let da = if ((cZ == unit))
392387 then "WAVES"
393- else toBase58String(value(dc))
394- let de = cX.assetPair.priceAsset
395- let df = if ((de == unit))
388+ else toBase58String(value(cZ))
389+ let db = cU.assetPair.priceAsset
390+ let dc = if ((db == unit))
396391 then "WAVES"
397- else toBase58String(value(de))
398- if (if ((dd != cY))
392+ else toBase58String(value(db))
393+ if (if ((da != cV))
399394 then true
400- else (df != cZ))
395+ else (dc != cW))
401396 then throw("Wr assets")
402397 else {
403- let dg = cX.price
404- let cx = fraction(a, bB, bA)
405- let dh = H(dg, a, cx)
406- let di = if ((cX.orderType == Buy))
407- then (bZ >= dh)
408- else (dh >= bZ)
398+ let dd = cU.price
399+ let cu = fraction(a, bz, by)
400+ let de = I(dd, a, cu)
401+ let df = if ((cU.orderType == Buy))
402+ then (bX >= de)
403+ else (de >= bX)
409404 true
410405 }
411406 }
412407 }
413408
414409
415-func dj (dk) = if ((size(dk.payments) != 1))
410+func dg (dh) = if ((size(dh.payments) != 1))
416411 then throw("1 pmnt exp")
417412 else {
418- let dl = value(dk.payments[0])
419- let bK = value(dl.assetId)
420- let cq = dl.amount
421- let cC = bI(toBase58String(dk.transactionId), toBase58String(bK), cq, dk.caller)
422- let ce = cC._1
423- let cf = cC._2
424- let bS = parseIntValue(cC._9)
425- let cg = cC._10
426- if (if (aA())
413+ let di = value(dh.payments[0])
414+ let bI = value(di.assetId)
415+ let cn = di.amount
416+ let cz = bG(toBase58String(dh.transactionId), toBase58String(bI), cn, dh.caller)
417+ let cc = cz._1
418+ let cd = cz._2
419+ let bQ = parseIntValue(cz._9)
420+ let ce = cz._10
421+ if (if (aB())
427422 then true
428- else (bS == n))
429- then throw(("Admin blocked: " + toString(bS)))
430- else $Tuple5(ce, cf, cq, bK, cg)
423+ else (bQ == o))
424+ then throw(("Admin blocked: " + toString(bQ)))
425+ else $Tuple5(cc, cd, cn, bI, ce)
431426 }
432427
433428
434-func dm (ac,V,dn,do,bi,cn,co,cp,cq,cr) = {
435- let cC = ch(V, bi, value(dn).amount, value(dn).assetId, value(do).amount, value(do).assetId, ac, false, cn, co, cp, cq, cr)
436- let bS = parseIntValue(cC._8)
437- if (if (if (aA())
429+func dj (dk,W,dl,dm,bg,cl,cm,cn,co) = {
430+ let cz = cf(W, bg, value(dl).amount, value(dl).assetId, value(dm).amount, value(dm).assetId, dk, false, cl, cm, cn, co)
431+ let bQ = parseIntValue(cz._8)
432+ if (if (if (aB())
438433 then true
439- else (bS == l))
434+ else (bQ == m))
440435 then true
441- else (bS == n))
442- then throw(("Blocked:" + toString(bS)))
443- else cC
436+ else (bQ == o))
437+ then throw(("Blocked:" + toString(bQ)))
438+ else cz
444439 }
445440
446441
447-func dp (cq,bK,bM,V) = {
448- let dq = aC()
449- let bO = dq[r]
450- let bP = dq[s]
451- let bU = ba(bO)
452- let bW = ba(bP)
453- let dr = if ((V == ""))
454- then $Tuple2(bU, bW)
455- else if ((bK == bO))
456- then if ((cq > bU))
457- then throw("invalid payment amount")
458- else $Tuple2((bU - cq), bW)
459- else if ((bK == bP))
460- then if ((cq > bW))
461- then throw("invalid payment amount")
462- else $Tuple2(bU, (bW - cq))
463- else throw("wrong pmtAssetId")
464- let ds = dr._1
465- let dt = dr._2
466- let du = if ((bK == bO))
467- then $Tuple2(ds, dt)
468- else $Tuple2(dt, ds)
469- let dv = du._1
470- let dw = du._2
471- let dx = 1
472- let dy = {
473- let dz = invoke(aK, "calcPutXOnly", [toString(cq), toString(dv), toString(dw), "", az, g, toString(dx), h], nil)
474- if ($isInstanceOf(dz, "(Int, Int)"))
475- then dz
476- else throw(($getType(invoke(aK, "calcPutXOnly", [toString(cq), toString(dv), toString(dw), "", az, g, toString(dx), h], nil)) + " couldn't be cast to (Int, Int)"))
477- }
478- let dA = if ((bK == bO))
479- then dy
480- else $Tuple2(dy._2, dy._1)
481- let dB = dA._1
482- let dC = dA._2
483- let dD = dm(bM, V, AttachedPayment(fromBase58String(bO), dB), AttachedPayment(fromBase58String(bP), dC), 0, true, true, false, cq, bK)
484- let dE = dD._2
485- let dF = dD._7
486- let cg = dD._9
487- let cQ = dD._10
488- let cR = dD._11
489- $Tuple5(dE, dF, cg, cQ, cR)
442+func dn (do) = {
443+ let dp = fraction(do, ad, d)
444+ $Tuple2((do - dp), dp)
490445 }
491446
492447
493-func dG () = {
494- let as = getString(N())
495- if ($isInstanceOf(as, "String"))
448+func dq () = {
449+ let at = getString(O())
450+ if ($isInstanceOf(at, "String"))
496451 then {
497- let dH = as
498- fromBase58String(dH)
452+ let dr = at
453+ fromBase58String(dr)
499454 }
500- else if ($isInstanceOf(as, "Unit"))
455+ else if ($isInstanceOf(at, "Unit"))
501456 then unit
502457 else throw("Match error")
503458 }
504459
505460
506-func dI () = {
507- let as = getString(O())
508- if ($isInstanceOf(as, "String"))
461+func ds () = {
462+ let at = getString(P())
463+ if ($isInstanceOf(at, "String"))
509464 then {
510- let dH = as
511- fromBase58String(dH)
465+ let dr = at
466+ fromBase58String(dr)
512467 }
513- else if ($isInstanceOf(as, "Unit"))
468+ else if ($isInstanceOf(at, "Unit"))
514469 then unit
515470 else throw("Match error")
516471 }
517472
518473
519-let dJ = throw("Permission denied")
474+let dt = throw("Permission denied")
520475
521-func dK (dk) = {
522- let as = dG()
523- if ($isInstanceOf(as, "ByteVector"))
476+func du (dh) = {
477+ let at = dq()
478+ if ($isInstanceOf(at, "ByteVector"))
524479 then {
525- let dL = as
526- if ((dk.callerPublicKey == dL))
480+ let dv = at
481+ if ((dh.callerPublicKey == dv))
527482 then true
528- else dJ
483+ else dt
529484 }
530- else if ($isInstanceOf(as, "Unit"))
531- then if ((dk.caller == this))
485+ else if ($isInstanceOf(at, "Unit"))
486+ then if ((dh.caller == this))
532487 then true
533- else dJ
488+ else dt
534489 else throw("Match error")
535490 }
536491
537492
538-@Callable(dk)
539-func constructor (M) = {
540- let dM = dK(dk)
541- if ((dM == dM))
542- then [StringEntry(M(), M)]
493+@Callable(dh)
494+func constructor (N) = {
495+ let dw = du(dh)
496+ if ((dw == dw))
497+ then [StringEntry(N(), N)]
543498 else throw("Strict value is not equal to itself.")
544499 }
545500
546501
547502
548-@Callable(dk)
549-func setManager (dN) = {
550- let dM = dK(dk)
551- if ((dM == dM))
503+@Callable(dh)
504+func setManager (dx) = {
505+ let dw = du(dh)
506+ if ((dw == dw))
552507 then {
553- let dO = fromBase58String(dN)
554- if ((dO == dO))
555- then [StringEntry(O(), dN)]
508+ let dy = fromBase58String(dx)
509+ if ((dy == dy))
510+ then [StringEntry(P(), dx)]
556511 else throw("Strict value is not equal to itself.")
557512 }
558513 else throw("Strict value is not equal to itself.")
559514 }
560515
561516
562517
563-@Callable(dk)
518+@Callable(dh)
564519 func confirmManager () = {
565- let bH = dI()
566- let dP = if (isDefined(bH))
520+ let bF = ds()
521+ let dz = if (isDefined(bF))
567522 then true
568523 else throw("No pending manager")
569- if ((dP == dP))
524+ if ((dz == dz))
570525 then {
571- let dQ = if ((dk.callerPublicKey == value(bH)))
526+ let dA = if ((dh.callerPublicKey == value(bF)))
572527 then true
573528 else throw("You are not pending manager")
574- if ((dQ == dQ))
575- then [StringEntry(N(), toBase58String(value(bH))), DeleteEntry(O())]
529+ if ((dA == dA))
530+ then [StringEntry(O(), toBase58String(value(bF))), DeleteEntry(P())]
576531 else throw("Strict value is not equal to itself.")
577532 }
578533 else throw("Strict value is not equal to itself.")
579534 }
580535
581536
582537
583-@Callable(dk)
584-func put (dR,dS) = {
585- let dT = aG()
586- let dU = valueOrErrorMessage(addressFromString(dT[x]), "Wr st addr")
587- let dV = valueOrErrorMessage(addressFromString(dT[y]), "Wr sl addr")
588- if ((0 > dR))
538+@Callable(dh)
539+func put (dB,dC) = {
540+ let dD = aI()
541+ let dE = valueOrErrorMessage(addressFromString(dD[y]), "Wr st addr")
542+ let dF = valueOrErrorMessage(addressFromString(dD[z]), "Wr sl addr")
543+ if ((0 > dB))
589544 then throw("Wrong slippage")
590- else if ((size(dk.payments) != 2))
545+ else if ((size(dh.payments) != 2))
591546 then throw("2 pmnts expd")
592547 else {
593- let dW = dm(toString(dk.caller), toBase58String(dk.transactionId), AttachedPayment(value(dk.payments[0]).assetId, value(dk.payments[0]).amount), dk.payments[1], dR, true, false, true, 0, "")
594- let cP = dW._2
595- let dF = dW._7
596- let cg = dW._9
597- let cQ = dW._10
598- let cR = dW._11
599- let bO = dW._12
600- let bP = dW._13
601- let cC = invoke(ay, "emit", [cP], nil)
602- if ((cC == cC))
548+ let dG = dj(toString(dh.caller), toBase58String(dh.transactionId), AttachedPayment(value(dh.payments[0]).assetId, value(dh.payments[0]).amount), dh.payments[1], dB, true, false, 0, "")
549+ let cM = dG._2
550+ let dH = dG._7
551+ let ce = dG._9
552+ let cN = dG._10
553+ let cO = dG._11
554+ let bM = dG._12
555+ let bN = dG._13
556+ let cz = invoke(az, "emit", [cM], nil)
557+ if ((cz == cz))
603558 then {
604- let dX = {
605- let as = cC
606- if ($isInstanceOf(as, "Address"))
559+ let dI = {
560+ let at = cz
561+ if ($isInstanceOf(at, "Address"))
607562 then {
608- let dY = as
609- invoke(dY, "emit", [cP], nil)
563+ let dJ = at
564+ invoke(dJ, "emit", [cM], nil)
610565 }
611566 else unit
612567 }
613- if ((dX == dX))
568+ if ((dI == dI))
614569 then {
615- let dZ = if ((cQ > 0))
616- then invoke(dV, "put", nil, [AttachedPayment(bO, cQ)])
570+ let dK = if ((cN > 0))
571+ then invoke(dF, "put", nil, [AttachedPayment(bM, cN)])
617572 else nil
618- if ((dZ == dZ))
573+ if ((dK == dK))
619574 then {
620- let ea = if ((cR > 0))
621- then invoke(dV, "put", nil, [AttachedPayment(bP, cR)])
575+ let dL = if ((cO > 0))
576+ then invoke(dF, "put", nil, [AttachedPayment(bN, cO)])
622577 else nil
623- if ((ea == ea))
578+ if ((dL == dL))
624579 then {
625- let eb = if (dS)
580+ let dM = if (dC)
626581 then {
627- let ec = invoke(dU, "stake", nil, [AttachedPayment(dF, cP)])
628- if ((ec == ec))
582+ let dN = invoke(dE, "stake", nil, [AttachedPayment(dH, cM)])
583+ if ((dN == dN))
629584 then nil
630585 else throw("Strict value is not equal to itself.")
631586 }
632- else [ScriptTransfer(dk.caller, cP, dF)]
633- (cg ++ eb)
587+ else [ScriptTransfer(dh.caller, cM, dH)]
588+ (ce ++ dM)
634589 }
635590 else throw("Strict value is not equal to itself.")
636591 }
637592 else throw("Strict value is not equal to itself.")
638593 }
639594 else throw("Strict value is not equal to itself.")
640595 }
641596 else throw("Strict value is not equal to itself.")
642597 }
643598 }
644599
645600
646601
647-@Callable(dk)
648-func putOneTkn (dB,dC,ed,bi,dS) = {
649- let bz = aG()
650- let dU = valueOrErrorMessage(addressFromString(bz[x]), "Wr st addr")
651- let dV = valueOrErrorMessage(addressFromString(bz[y]), "Wr sl addr")
652- let ee = valueOrErrorMessage(addressFromString(bz[z]), "Wr gwx addr")
653- let ef = aC()
654- let bO = ef[r]
655- let bP = ef[s]
656- let bQ = parseIntValue(ef[t])
657- let bR = parseIntValue(ef[u])
658- let eg = valueOrElse(getString(this, aa()), "")
659- let bM = if ((eg == toString(dk.caller)))
660- then dk.originCaller
661- else dk.caller
662- let eh = valueOrErrorMessage(addressFromString(valueOrErrorMessage(getString(aa()), "no addons")), "addon address in not valid")
663- let ei = reentrantInvoke(eh, "ensureCanPutOneTkn", [toString(bM)], nil)
664- if ((ei == ei))
665- then if (if (if (if ((0 >= bi))
666- then true
667- else (0 >= dB))
668- then true
669- else (0 >= dC))
670- then true
671- else (0 >= ed))
672- then throw("Wrong params")
673- else if ((size(dk.payments) != 1))
674- then throw("1 pmnt expd")
675- else {
676- let dl = value(dk.payments[0])
677- let bK = toBase58String(value(dl.assetId))
678- let cq = dl.amount
679- if ((10000000 > cq))
680- then throw("Wrong pmt amt")
681- else {
682- let bU = ba(bO)
683- let bW = ba(bP)
684- let ej = if ((bK == bO))
685- then if (if ((cq > bU))
602+@Callable(dh)
603+func putOneTkn (dO,dP,dQ,bg,dC) = {
604+ let bx = aI()
605+ let dE = valueOrErrorMessage(addressFromString(bx[y]), "Wr st addr")
606+ let dF = valueOrErrorMessage(addressFromString(bx[z]), "Wr sl addr")
607+ let dR = valueOrErrorMessage(addressFromString(bx[A]), "Wr gwx addr")
608+ let dS = aE()
609+ let bM = dS[s]
610+ let bN = dS[t]
611+ let bO = parseIntValue(dS[u])
612+ let bP = parseIntValue(dS[v])
613+ let dT = valueOrElse(getString(this, ab()), "")
614+ let bK = if ((dT == toString(dh.caller)))
615+ then dh.originCaller
616+ else dh.caller
617+ if (if (if (if ((0 >= bg))
618+ then true
619+ else (0 >= dO))
620+ then true
621+ else (0 >= dP))
622+ then true
623+ else (0 >= dQ))
624+ then throw("Wrong params")
625+ else if ((size(dh.payments) != 1))
626+ then throw("1 pmnt expd")
627+ else {
628+ let di = value(dh.payments[0])
629+ let bI = toBase58String(value(di.assetId))
630+ let dU = di.amount
631+ let dV = dn(dU)
632+ let cn = dV._1
633+ let dW = dV._2
634+ if ((10000000 > dU))
635+ then throw("Wrong pmt amt")
636+ else {
637+ let bS = aY(bM)
638+ let bU = aY(bN)
639+ let dX = if ((bI == bM))
640+ then if (if ((dU > bS))
641+ then true
642+ else (dO > cn))
643+ then throw("invalid payment amount")
644+ else $Tuple6((bS - dU), bU, (cn - dO), dP, 0, 0)
645+ else if ((bI == bN))
646+ then if (if ((dU > bU))
686647 then true
687- else (dB > cq))
648+ else (dP > cn))
688649 then throw("invalid payment amount")
689- else $Tuple6((bU - cq), bW, (cq - dB), dC, 0, 0)
690- else if ((bK == bP))
691- then if (if ((cq > bW))
692- then true
693- else (dC > cq))
694- then throw("invalid payment amount")
695- else $Tuple6(bU, (bW - cq), 0, 0, (cq - dC), dB)
696- else throw("wrong pmtAssetId")
697- let ds = ej._1
698- let dt = ej._2
699- let ek = ej._3
700- let el = ej._4
701- let em = ej._5
702- let en = ej._6
703- let bn = invoke(ee, "calcD", [toString(ds), toString(dt), az, g, h], nil)
704- let bm = invoke(ee, "calcD", [toString(toBigInt(((ds + ek) - en))), toString(toBigInt(((dt + em) - el))), az, g, h], nil)
705- let eo = bl(parseBigIntValue(ar(bm)), parseBigIntValue(ar(bn)), f)
706- if ((eo == eo))
707- then {
708- let dD = dm(toString(dk.caller), toBase58String(dk.transactionId), AttachedPayment(fromBase58String(bO), dB), AttachedPayment(fromBase58String(bP), dC), bi, true, true, true, cq, bK)
709- let dE = dD._2
710- let dF = dD._7
711- let cg = dD._9
712- let cQ = dD._10
713- let cR = dD._11
714- let ep = bf(toBigInt(dE), toBigInt(ed), toBigInt(bi))
715- let cP = toInt(ep._2)
716- let dW = invoke(ay, "emit", [cP], nil)
717- if ((dW == dW))
718- then {
719- let dX = {
720- let as = dW
721- if ($isInstanceOf(as, "Address"))
650+ else $Tuple6(bS, (bU - dU), 0, 0, (cn - dP), dO)
651+ else throw("wrong pmtAssetId")
652+ let dY = dX._1
653+ let dZ = dX._2
654+ let ea = dX._3
655+ let eb = dX._4
656+ let ec = dX._5
657+ let ed = dX._6
658+ let bl = invoke(dR, "calcD", [toString(dY), toString(dZ), aA, h, i], nil)
659+ let bk = invoke(dR, "calcD", [toString(toBigInt(((dY + ea) - ed))), toString(toBigInt(((dZ + ec) - eb))), aA, h, i], nil)
660+ let ee = bj(parseBigIntValue(as(bk)), parseBigIntValue(as(bl)), g)
661+ if ((ee == ee))
662+ then {
663+ let ef = dj(toString(dh.caller), toBase58String(dh.transactionId), AttachedPayment(fromBase58String(bM), dO), AttachedPayment(fromBase58String(bN), dP), bg, true, true, cn, bI)
664+ let eg = ef._2
665+ let dH = ef._7
666+ let ce = ef._9
667+ let cN = ef._10
668+ let cO = ef._11
669+ let eh = bd(toBigInt(eg), toBigInt(dQ), toBigInt(bg))
670+ let cM = toInt(eh._2)
671+ let dG = invoke(az, "emit", [cM], nil)
672+ if ((dG == dG))
673+ then {
674+ let dI = {
675+ let at = dG
676+ if ($isInstanceOf(at, "Address"))
677+ then {
678+ let dJ = at
679+ invoke(dJ, "emit", [cM], nil)
680+ }
681+ else unit
682+ }
683+ if ((dI == dI))
684+ then {
685+ let dK = if ((cN > 0))
686+ then invoke(dF, "put", nil, [AttachedPayment(fromBase58String(bM), cN)])
687+ else nil
688+ if ((dK == dK))
722689 then {
723- let dY = as
724- invoke(dY, "emit", [cP], nil)
725- }
726- else unit
727- }
728- if ((dX == dX))
729- then {
730- let dZ = if ((cQ > 0))
731- then invoke(dV, "put", nil, [AttachedPayment(fromBase58String(bO), cQ)])
732- else nil
733- if ((dZ == dZ))
734- then {
735- let ea = if ((cR > 0))
736- then invoke(dV, "put", nil, [AttachedPayment(fromBase58String(bP), cR)])
737- else nil
738- if ((ea == ea))
739- then {
740- let eb = if (dS)
741- then {
742- let ec = invoke(dU, "stake", nil, [AttachedPayment(dF, cP)])
743- if ((ec == ec))
744- then nil
745- else throw("Strict value is not equal to itself.")
746- }
747- else [ScriptTransfer(dk.caller, cP, dF)]
748- (cg ++ eb)
749- }
750- else throw("Strict value is not equal to itself.")
751- }
752- else throw("Strict value is not equal to itself.")
753- }
754- else throw("Strict value is not equal to itself.")
755- }
756- else throw("Strict value is not equal to itself.")
757- }
758- else throw("Strict value is not equal to itself.")
759- }
760- }
761- else throw("Strict value is not equal to itself.")
762- }
763-
764-
765-
766-@Callable(dk)
767-func putOneTknV2 (eq,dS) = if ((size(dk.payments) != 1))
768- then throw("1 pmnt expd")
769- else {
770- let dq = aC()
771- let bO = dq[r]
772- let bP = dq[s]
773- let er = parseIntValue(dq[t])
774- let es = parseIntValue(dq[u])
775- let bM = if ((dk.caller == this))
776- then dk.originCaller
777- else dk.caller
778- let dl = value(dk.payments[0])
779- let bK = toBase58String(value(dl.assetId))
780- let cq = dl.amount
781- if ((10000000 > cq))
782- then throw("Wrong pmt amt")
783- else {
784- let et = dp(cq, bK, toString(bM), toBase58String(dk.transactionId))
785- let dE = et._1
786- let dF = et._2
787- let cg = et._3
788- let cQ = et._4
789- let cR = et._5
790- let cP = if (if ((eq > 0))
791- then (eq > dE)
792- else false)
793- then throw(makeString(["amount to receive is less than ", toString(eq)], ""))
794- else dE
795- let dW = invoke(ay, "emit", [cP], nil)
796- if ((dW == dW))
797- then {
798- let dX = {
799- let as = dW
800- if ($isInstanceOf(as, "Address"))
801- then {
802- let dY = as
803- invoke(dY, "emit", [cP], nil)
804- }
805- else unit
806- }
807- if ((dX == dX))
808- then {
809- let dZ = if ((cQ > 0))
810- then invoke(aJ, "put", nil, [AttachedPayment(fromBase58String(bO), cQ)])
811- else nil
812- if ((dZ == dZ))
813- then {
814- let ea = if ((cR > 0))
815- then invoke(aJ, "put", nil, [AttachedPayment(fromBase58String(bP), cR)])
816- else nil
817- if ((ea == ea))
818- then {
819- let eb = if (dS)
820- then {
821- let ec = invoke(aI, "stake", nil, [AttachedPayment(dF, cP)])
822- if ((ec == ec))
823- then nil
690+ let dL = if ((cO > 0))
691+ then invoke(dF, "put", nil, [AttachedPayment(fromBase58String(bN), cO)])
692+ else nil
693+ if ((dL == dL))
694+ then {
695+ let dM = if (dC)
696+ then {
697+ let dN = invoke(dE, "stake", nil, [AttachedPayment(dH, cM)])
698+ if ((dN == dN))
699+ then nil
700+ else throw("Strict value is not equal to itself.")
701+ }
702+ else [ScriptTransfer(dh.caller, cM, dH)]
703+ let ei = if ((dW > 0))
704+ then [ScriptTransfer(aD, dW, fromBase58String(bI))]
705+ else nil
706+ ((ce ++ dM) ++ ei)
707+ }
824708 else throw("Strict value is not equal to itself.")
825709 }
826- else [ScriptTransfer(dk.caller, cP, dF)]
827- $Tuple2((cg ++ eb), cP)
710+ else throw("Strict value is not equal to itself.")
828711 }
829712 else throw("Strict value is not equal to itself.")
830713 }
831714 else throw("Strict value is not equal to itself.")
832715 }
833716 else throw("Strict value is not equal to itself.")
834717 }
835- else throw("Strict value is not equal to itself.")
836718 }
837- }
838-
839-
840-
841-@Callable(dk)
842-func putOneTknV2READONLY (eu,ev) = {
843- let ew = dp(eu, ev, "", "")
844- let dE = ew._1
845- let dF = ew._2
846- let cg = ew._3
847- let cQ = ew._4
848- let cR = ew._5
849- $Tuple2(nil, dE)
850719 }
851720
852721
853722
854-@Callable(dk)
855-func putForFree (ex) = if ((0 > ex))
723+@Callable(dh)
724+func putForFree (ej) = if ((0 > ej))
856725 then throw("Wrong slpg")
857- else if ((size(dk.payments) != 2))
726+ else if ((size(dh.payments) != 2))
858727 then throw("2 pmnts expd")
859728 else {
860- let dD = dm(toString(dk.caller), toBase58String(dk.transactionId), AttachedPayment(value(dk.payments[0]).assetId, value(dk.payments[0]).amount), dk.payments[1], ex, false, false, true, 0, "")
861- dD._9
729+ let ef = dj(toString(dh.caller), toBase58String(dh.transactionId), AttachedPayment(value(dh.payments[0]).assetId, value(dh.payments[0]).amount), dh.payments[1], ej, false, false, 0, "")
730+ ef._9
862731 }
863732
864733
865734
866-@Callable(dk)
735+@Callable(dh)
867736 func get () = {
868- let cC = dj(dk)
869- let ey = cC._1
870- let cf = cC._2
871- let cq = cC._3
872- let bK = cC._4
873- let cg = cC._5
874- let ez = invoke(ay, "burn", [cq], [AttachedPayment(bK, cq)])
875- if ((ez == ez))
876- then cg
737+ let cz = dg(dh)
738+ let ek = cz._1
739+ let cd = cz._2
740+ let cn = cz._3
741+ let bI = cz._4
742+ let ce = cz._5
743+ let el = invoke(az, "burn", [cn], [AttachedPayment(bI, cn)])
744+ if ((el == el))
745+ then ce
877746 else throw("Strict value is not equal to itself.")
878747 }
879748
880749
881750
882-@Callable(dk)
883-func getOneTkn (eA,eB,eC,eD,bi) = if ((size(dk.payments) != 1))
751+@Callable(dh)
752+func getOneTkn (em,en,eo,ep,bg) = if ((size(dh.payments) != 1))
884753 then throw("1 pmnt expd")
885754 else {
886- let bz = aC()
887- let bN = bz[q]
888- let bO = bz[r]
889- let bP = bz[s]
890- let bQ = parseIntValue(bz[t])
891- let bR = parseIntValue(bz[u])
892- let bS = bz[p]
893- let dT = aG()
894- let ee = valueOrErrorMessage(addressFromString(dT[z]), "Wr sl addr")
895- let dl = value(dk.payments[0])
896- let eg = valueOrElse(getString(this, aa()), "")
897- let bM = if ((eg == toString(dk.caller)))
898- then dk.originCaller
899- else dk.caller
900- let bJ = toBase58String(dk.transactionId)
901- let bK = value(dl.assetId)
902- let cq = dl.amount
903- let eh = valueOrErrorMessage(addressFromString(valueOrErrorMessage(getString(aa()), "no addons")), "addon address in not valid")
904- let ei = reentrantInvoke(eh, "ensureCanGetOneTkn", [toString(bM)], nil)
905- if ((ei == ei))
906- then if ((1000000000 > cq))
907- then throw("Min pmt 10 LP")
908- else if (if (if ((0 > bi))
909- then true
910- else (0 > eA))
911- then true
912- else (0 > eC))
913- then throw("Wrong params")
914- else if ((bN != toBase58String(bK)))
915- then throw("Wrong LP")
916- else {
917- let cC = bI(toBase58String(dk.transactionId), toBase58String(bK), cq, dk.caller)
918- let eE = cC._1
919- let eF = cC._2
920- let bU = ba(bO)
921- let bW = ba(bP)
922- let eG = if ((eD == bO))
923- then $Tuple7((bU - eE), (bW - eF), eA, eF, 0, 0, (eE + eA))
924- else if ((eD == bP))
925- then $Tuple7((bU - eE), (bW - eF), 0, 0, eA, eE, (eF + eA))
926- else throw("wrong outAssetId")
927- let ds = eG._1
928- let dt = eG._2
929- let ek = eG._3
930- let el = eG._4
931- let em = eG._5
932- let en = eG._6
933- let eH = eG._7
934- if (if ((0 > ek))
935- then true
936- else (0 > em))
937- then throw("Wrong calc")
938- else {
939- let bn = invoke(ee, "calcD", [toString(ds), toString(dt), az, g, h], nil)
940- let bm = invoke(ee, "calcD", [toString(((ds - ek) + en)), toString(((dt + el) - em)), az, g, h], nil)
941- let eo = bl(parseBigIntValue(ar(bm)), parseBigIntValue(ar(bn)), f)
942- if ((eo == eo))
943- then {
944- let eI = bf(toBigInt(eH), toBigInt(eC), toBigInt(bi))
945- if ((eI == eI))
946- then {
947- let eJ = if ((eD == bO))
948- then $Tuple2(toInt(eI._2), 0)
949- else $Tuple2(0, toInt(eI._2))
950- let eK = eJ._1
951- let eL = eJ._2
952- let eM = bc(B(bW, bR), B(bU, bQ))
953- let eN = E(eM, a)
954- let cg = [ScriptTransfer(bM, (eK + eL), if ((eD == "WAVES"))
955- then unit
956- else fromBase58String(eD)), StringEntry(W(toString(bM), bJ), aW(eK, eL, cq, eN, height, lastBlock.timestamp)), IntegerEntry(P(), eN), IntegerEntry(Q(height, lastBlock.timestamp), eN)]
957- if ((cg == cg))
958- then {
959- let eO = invoke(ay, "burn", [cq], [AttachedPayment(bK, cq)])
960- if ((eO == eO))
961- then cg
962- else throw("Strict value is not equal to itself.")
963- }
964- else throw("Strict value is not equal to itself.")
965- }
966- else throw("Strict value is not equal to itself.")
967- }
968- else throw("Strict value is not equal to itself.")
969- }
970- }
971- else throw("Strict value is not equal to itself.")
755+ let bx = aE()
756+ let bL = bx[r]
757+ let bM = bx[s]
758+ let bN = bx[t]
759+ let bO = parseIntValue(bx[u])
760+ let bP = parseIntValue(bx[v])
761+ let bQ = bx[q]
762+ let dD = aI()
763+ let dR = valueOrErrorMessage(addressFromString(dD[A]), "Wr sl addr")
764+ let di = value(dh.payments[0])
765+ let dT = valueOrElse(getString(this, ab()), "")
766+ let bK = if ((dT == toString(dh.caller)))
767+ then dh.originCaller
768+ else dh.caller
769+ let bH = toBase58String(dh.transactionId)
770+ let bI = value(di.assetId)
771+ let cn = di.amount
772+ if ((1000000000 > cn))
773+ then throw("Min pmt 10 LP")
774+ else if (if (if ((0 > bg))
775+ then true
776+ else (0 > em))
777+ then true
778+ else (0 > eo))
779+ then throw("Wrong params")
780+ else if ((bL != toBase58String(bI)))
781+ then throw("Wrong LP")
782+ else {
783+ let cz = bG(toBase58String(dh.transactionId), toBase58String(bI), cn, dh.caller)
784+ let eq = cz._1
785+ let er = cz._2
786+ let bS = aY(bM)
787+ let bU = aY(bN)
788+ let es = if ((ep == bM))
789+ then $Tuple7((bS - eq), (bU - er), em, er, 0, 0, (eq + em))
790+ else if ((ep == bN))
791+ then $Tuple7((bS - eq), (bU - er), 0, 0, em, eq, (er + em))
792+ else throw("wrong outAssetId")
793+ let dY = es._1
794+ let dZ = es._2
795+ let ea = es._3
796+ let eb = es._4
797+ let ec = es._5
798+ let ed = es._6
799+ let et = es._7
800+ if (if ((0 > ea))
801+ then true
802+ else (0 > ec))
803+ then throw("Wrong calc")
804+ else {
805+ let bl = invoke(dR, "calcD", [toString(dY), toString(dZ), aA, h, i], nil)
806+ let bk = invoke(dR, "calcD", [toString(((dY - ea) + ed)), toString(((dZ + eb) - ec)), aA, h, i], nil)
807+ let ee = bj(parseBigIntValue(as(bk)), parseBigIntValue(as(bl)), g)
808+ if ((ee == ee))
809+ then {
810+ let eu = dn(et)._1
811+ let ev = bd(toBigInt(eu), toBigInt(eo), toBigInt(bg))
812+ if ((ev == ev))
813+ then {
814+ let ew = if ((ep == bM))
815+ then $Tuple2(toInt(ev._2), 0)
816+ else $Tuple2(0, toInt(ev._2))
817+ let ex = ew._1
818+ let ey = ew._2
819+ let ez = (ex + ey)
820+ let dW = (et - eu)
821+ let eA = if ((ep == "WAVES"))
822+ then unit
823+ else fromBase58String(ep)
824+ let ei = if ((dW > 0))
825+ then [ScriptTransfer(aD, dW, eA)]
826+ else nil
827+ let eB = ba(C(bU, bP), C(bS, bO))
828+ let eC = F(eB, a)
829+ let ce = [ScriptTransfer(bK, ez, eA), StringEntry(X(toString(bK), bH), aU(ex, ey, cn, eC, height, lastBlock.timestamp)), IntegerEntry(Q(), eC), IntegerEntry(R(height, lastBlock.timestamp), eC)]
830+ if ((ce == ce))
831+ then {
832+ let eD = invoke(az, "burn", [cn], [AttachedPayment(bI, cn)])
833+ if ((eD == eD))
834+ then (ce ++ ei)
835+ else throw("Strict value is not equal to itself.")
836+ }
837+ else throw("Strict value is not equal to itself.")
838+ }
839+ else throw("Strict value is not equal to itself.")
840+ }
841+ else throw("Strict value is not equal to itself.")
842+ }
843+ }
972844 }
973845
974846
975847
976-@Callable(dk)
977-func getOneTknV2 (eD,eq) = if ((size(dk.payments) != 1))
978- then throw("1 pmnt expd")
979- else {
980- let dq = aC()
981- let bN = dq[q]
982- let bO = dq[r]
983- let bP = dq[s]
984- let er = parseIntValue(dq[t])
985- let es = parseIntValue(dq[u])
986- let eP = dq[p]
987- let bM = if ((dk.caller == this))
988- then dk.originCaller
989- else dk.caller
990- let dl = value(dk.payments[0])
991- let bK = value(dl.assetId)
992- let cq = dl.amount
993- if ((1000000000 > cq))
994- then throw("Min pmt 10 LP")
848+@Callable(dh)
849+func getNoLess (eE,eF) = {
850+ let cz = dg(dh)
851+ let cc = cz._1
852+ let cd = cz._2
853+ let cn = cz._3
854+ let bI = cz._4
855+ let ce = cz._5
856+ if ((eE > cc))
857+ then throw(((("Failed: " + toString(cc)) + " < ") + toString(eE)))
858+ else if ((eF > cd))
859+ then throw(((("Failed: " + toString(cd)) + " < ") + toString(eF)))
995860 else {
996- let bJ = toBase58String(dk.transactionId)
997- if ((bN != toBase58String(bK)))
998- then throw("Wrong LP")
999- else {
1000- let cC = bI(bJ, toBase58String(bK), cq, dk.caller)
1001- let eE = cC._1
1002- let eF = cC._2
1003- let bU = ba(bO)
1004- let bW = ba(bP)
1005- let eH = {
1006- let dz = invoke(this, "getOneTknV2READONLY", [eD, cq], nil)
1007- if ($isInstanceOf(dz, "Int"))
1008- then dz
1009- else throw(($getType(invoke(this, "getOneTknV2READONLY", [eD, cq], nil)) + " couldn't be cast to Int"))
1010- }
1011- let eQ = if (if ((eq > 0))
1012- then (eq > eH)
1013- else false)
1014- then throw(makeString(["amount to receive is less than ", toString(eq)], ""))
1015- else eH
1016- let eR = if ((eD == bO))
1017- then $Tuple2(eQ, 0)
1018- else $Tuple2(0, eQ)
1019- let eK = eR._1
1020- let eL = eR._2
1021- let eM = bc(B(bW, es), B(bU, er))
1022- let eN = E(eM, a)
1023- let cg = [ScriptTransfer(bM, eQ, if ((eD == "WAVES"))
1024- then unit
1025- else fromBase58String(eD)), StringEntry(W(toString(bM), bJ), aW(eK, eL, cq, eN, height, lastBlock.timestamp)), IntegerEntry(P(), eN), IntegerEntry(Q(height, lastBlock.timestamp), eN)]
1026- if ((cg == cg))
1027- then {
1028- let eO = invoke(ay, "burn", [cq], [AttachedPayment(bK, cq)])
1029- if ((eO == eO))
1030- then $Tuple2(cg, eQ)
1031- else throw("Strict value is not equal to itself.")
1032- }
1033- else throw("Strict value is not equal to itself.")
1034- }
1035- }
1036- }
1037-
1038-
1039-
1040-@Callable(dk)
1041-func getOneTknV2READONLY (eD,eS) = {
1042- let dq = aC()
1043- let bN = dq[q]
1044- let bO = dq[r]
1045- let bP = dq[s]
1046- let cC = bI("", bN, eS, this)
1047- let eE = cC._1
1048- let eF = cC._2
1049- let bU = ba(bO)
1050- let bW = ba(bP)
1051- let ds = (bU - eE)
1052- let dt = (bW - eF)
1053- let eT = if ((eD == bO))
1054- then $Tuple3(dt, ds, eF)
1055- else if ((eD == bP))
1056- then $Tuple3(ds, dt, eE)
1057- else throw("wrong outAssetId")
1058- let eU = eT._1
1059- let eV = eT._2
1060- let eW = eT._3
1061- let eX = 1
1062- let eA = {
1063- let dz = invoke(aK, "calcSwapXToY", [toString(eW), toString(eU), toString(eV), "", az, g, toString(eX), h], nil)
1064- if ($isInstanceOf(dz, "Int"))
1065- then dz
1066- else throw(($getType(invoke(aK, "calcSwapXToY", [toString(eW), toString(eU), toString(eV), "", az, g, toString(eX), h], nil)) + " couldn't be cast to Int"))
1067- }
1068- let eH = (eA + (if ((eD == bO))
1069- then eE
1070- else eF))
1071- $Tuple2(nil, eH)
1072- }
1073-
1074-
1075-
1076-@Callable(dk)
1077-func getNoLess (eY,eZ) = {
1078- let cC = dj(dk)
1079- let ce = cC._1
1080- let cf = cC._2
1081- let cq = cC._3
1082- let bK = cC._4
1083- let cg = cC._5
1084- if ((eY > ce))
1085- then throw(((("Failed: " + toString(ce)) + " < ") + toString(eY)))
1086- else if ((eZ > cf))
1087- then throw(((("Failed: " + toString(cf)) + " < ") + toString(eZ)))
1088- else {
1089- let fa = invoke(ay, "burn", [cq], [AttachedPayment(bK, cq)])
1090- if ((fa == fa))
1091- then cg
861+ let eG = invoke(az, "burn", [cn], [AttachedPayment(bI, cn)])
862+ if ((eG == eG))
863+ then ce
1092864 else throw("Strict value is not equal to itself.")
1093865 }
1094866 }
1095867
1096868
1097869
1098-@Callable(dk)
1099-func unstakeAndGet (fb) = {
1100- let fc = if ((size(dk.payments) != 0))
870+@Callable(dh)
871+func unstakeAndGet (do) = {
872+ let eH = if ((size(dh.payments) != 0))
1101873 then throw("No pmnts expd")
1102874 else true
1103- if ((fc == fc))
875+ if ((eH == eH))
1104876 then {
1105- let bz = aC()
1106- let fd = aG()
1107- let dF = fromBase58String(bz[q])
1108- let fe = valueOrErrorMessage(addressFromString(fd[x]), "Wr st addr")
1109- let ff = invoke(fe, "unstake", [toBase58String(dF), fb], nil)
1110- if ((ff == ff))
877+ let bx = aE()
878+ let eI = aI()
879+ let dH = fromBase58String(bx[r])
880+ let eJ = valueOrErrorMessage(addressFromString(eI[y]), "Wr st addr")
881+ let eK = invoke(eJ, "unstake", [toBase58String(dH), do], nil)
882+ if ((eK == eK))
1111883 then {
1112- let cC = bI(toBase58String(dk.transactionId), toBase58String(dF), fb, dk.caller)
1113- let bS = parseIntValue(cC._9)
1114- let cg = cC._10
1115- let fg = if (if (aA())
884+ let cz = bG(toBase58String(dh.transactionId), toBase58String(dH), do, dh.caller)
885+ let bQ = parseIntValue(cz._9)
886+ let ce = cz._10
887+ let eL = if (if (aB())
1116888 then true
1117- else (bS == n))
1118- then throw(("Blocked: " + toString(bS)))
889+ else (bQ == o))
890+ then throw(("Blocked: " + toString(bQ)))
1119891 else true
1120- if ((fg == fg))
892+ if ((eL == eL))
1121893 then {
1122- let fh = invoke(ay, "burn", [fb], [AttachedPayment(dF, fb)])
1123- if ((fh == fh))
1124- then cg
894+ let eM = invoke(az, "burn", [do], [AttachedPayment(dH, do)])
895+ if ((eM == eM))
896+ then ce
1125897 else throw("Strict value is not equal to itself.")
1126898 }
1127899 else throw("Strict value is not equal to itself.")
1128900 }
1129901 else throw("Strict value is not equal to itself.")
1130902 }
1131903 else throw("Strict value is not equal to itself.")
1132904 }
1133905
1134906
1135907
1136-@Callable(dk)
1137-func unstakeAndGetOneTkn (fb,eC,eD,bi) = {
1138- let fc = if ((size(dk.payments) != 0))
1139- then throw("No pmnts expd")
1140- else true
1141- if ((fc == fc))
1142- then {
1143- let bz = aC()
1144- let fd = aG()
1145- let dF = fromBase58String(bz[q])
1146- let fe = valueOrErrorMessage(addressFromString(fd[x]), "Wr st addr")
1147- let ff = invoke(fe, "unstake", [toBase58String(dF), fb], nil)
1148- if ((ff == ff))
1149- then {
1150- let fi = {
1151- let dz = invoke(this, "getOneTknV2", [eC, eD, bi], [AttachedPayment(dF, fb)])
1152- if ($isInstanceOf(dz, "Int"))
1153- then dz
1154- else unit
1155- }
1156- if ((fi == fi))
1157- then $Tuple2(nil, fi)
1158- else throw("Strict value is not equal to itself.")
1159- }
1160- else throw("Strict value is not equal to itself.")
1161- }
1162- else throw("Strict value is not equal to itself.")
908+@Callable(dh)
909+func activate (eN,eO) = if ((toString(dh.caller) != toString(az)))
910+ then throw("denied")
911+ else $Tuple2([StringEntry(Y(), eN), StringEntry(Z(), eO)], "success")
912+
913+
914+
915+@Callable(dh)
916+func setS (eP,eL) = if ((toString(dh.caller) != av(this, ab())))
917+ then dt
918+ else [StringEntry(eP, eL)]
919+
920+
921+
922+@Callable(dh)
923+func setI (eP,eL) = if ((toString(dh.caller) != av(this, ab())))
924+ then dt
925+ else [IntegerEntry(eP, eL)]
926+
927+
928+
929+@Callable(dh)
930+func getPoolConfigWrapperREADONLY () = $Tuple2(nil, aE())
931+
932+
933+
934+@Callable(dh)
935+func getAccBalanceWrapperREADONLY (aZ) = $Tuple2(nil, aY(aZ))
936+
937+
938+
939+@Callable(dh)
940+func calcPricesWrapperREADONLY (br,bs,bw) = {
941+ let eQ = bv(br, bs, bw)
942+ $Tuple2(nil, [toString(eQ[0]), toString(eQ[1]), toString(eQ[2])])
1163943 }
1164944
1165945
1166946
1167-@Callable(dk)
1168-func activate (fj,fk) = if ((toString(dk.caller) != toString(ay)))
1169- then throw("denied")
1170- else $Tuple2([StringEntry(X(), fj), StringEntry(Y(), fk)], "success")
947+@Callable(dh)
948+func fromX18WrapperREADONLY (G,eR) = $Tuple2(nil, F(parseBigIntValue(G), eR))
1171949
1172950
1173951
1174-@Callable(dk)
1175-func setS (fl,fg) = if ((toString(dk.caller) != au(this, aa())))
1176- then dJ
1177- else [StringEntry(fl, fg)]
952+@Callable(dh)
953+func toX18WrapperREADONLY (D,E) = $Tuple2(nil, toString(C(D, E)))
1178954
1179955
1180956
1181-@Callable(dk)
1182-func setI (fl,fg) = if ((toString(dk.caller) != au(this, aa())))
1183- then dJ
1184- else [IntegerEntry(fl, fg)]
957+@Callable(dh)
958+func calcPriceBigIntWrapperREADONLY (bb,bc) = $Tuple2(nil, toString(ba(parseBigIntValue(bb), parseBigIntValue(bc))))
1185959
1186960
1187961
1188-@Callable(dk)
1189-func getPoolConfigWrapperREADONLY () = $Tuple2(nil, aC())
962+@Callable(dh)
963+func estimatePutOperationWrapperREADONLY (bH,bg,cg,ch,ci,cj,eS,ck,cl) = $Tuple2(nil, cf(bH, bg, cg, ch, ci, cj, eS, ck, cl, false, 0, ""))
1190964
1191965
1192966
1193-@Callable(dk)
1194-func getAccBalanceWrapperREADONLY (bb) = $Tuple2(nil, ba(bb))
1195-
1196-
1197-
1198-@Callable(dk)
1199-func calcPricesWrapperREADONLY (bt,bu,by) = {
1200- let fm = bx(bt, bu, by)
1201- $Tuple2(nil, [toString(fm[0]), toString(fm[1]), toString(fm[2])])
967+@Callable(dh)
968+func estimateGetOperationWrapperREADONLY (bH,eT,bJ,eS) = {
969+ let cz = bG(bH, eT, bJ, addressFromStringValue(eS))
970+ $Tuple2(nil, $Tuple10(cz._1, cz._2, cz._3, cz._4, cz._5, cz._6, cz._7, toString(cz._8), cz._9, cz._10))
1202971 }
1203972
1204973
1205-
1206-@Callable(dk)
1207-func fromX18WrapperREADONLY (F,fn) = $Tuple2(nil, E(parseBigIntValue(F), fn))
1208-
1209-
1210-
1211-@Callable(dk)
1212-func toX18WrapperREADONLY (C,D) = $Tuple2(nil, toString(B(C, D)))
1213-
1214-
1215-
1216-@Callable(dk)
1217-func calcPriceBigIntWrapperREADONLY (bd,be) = $Tuple2(nil, toString(bc(parseBigIntValue(bd), parseBigIntValue(be))))
1218-
1219-
1220-
1221-@Callable(dk)
1222-func estimatePutOperationWrapperREADONLY (bJ,bi,ci,cj,ck,cl,fo,cm,cn) = $Tuple2(nil, ch(bJ, bi, ci, cj, ck, cl, fo, cm, cn, true, false, 0, ""))
1223-
1224-
1225-
1226-@Callable(dk)
1227-func estimateGetOperationWrapperREADONLY (bJ,fp,bL,fo) = {
1228- let cC = bI(bJ, fp, bL, addressFromStringValue(fo))
1229- $Tuple2(nil, $Tuple10(cC._1, cC._2, cC._3, cC._4, cC._5, cC._6, cC._7, toString(cC._8), cC._9, cC._10))
1230- }
1231-
1232-
1233-@Verifier(fq)
1234-func fr () = {
1235- let fs = {
1236- let as = dG()
1237- if ($isInstanceOf(as, "ByteVector"))
974+@Verifier(eU)
975+func eV () = {
976+ let eW = {
977+ let at = dq()
978+ if ($isInstanceOf(at, "ByteVector"))
1238979 then {
1239- let dL = as
1240- dL
980+ let dv = at
981+ dv
1241982 }
1242- else if ($isInstanceOf(as, "Unit"))
1243- then fq.senderPublicKey
983+ else if ($isInstanceOf(at, "Unit"))
984+ then eU.senderPublicKey
1244985 else throw("Match error")
1245986 }
1246- let as = fq
1247- if ($isInstanceOf(as, "Order"))
987+ let at = eU
988+ if ($isInstanceOf(at, "Order"))
1248989 then {
1249- let cX = as
1250- let ft = aB()
1251- let fu = cW(cX)
1252- let fv = sigVerify(cX.bodyBytes, cX.proofs[0], cX.senderPublicKey)
1253- let fw = sigVerify(cX.bodyBytes, cX.proofs[1], ft)
1254- if (if (if (fu)
1255- then fv
990+ let cU = at
991+ let eX = aC()
992+ let eY = cT(cU)
993+ let eZ = sigVerify(cU.bodyBytes, cU.proofs[0], cU.senderPublicKey)
994+ let fa = sigVerify(cU.bodyBytes, cU.proofs[1], eX)
995+ if (if (if (eY)
996+ then eZ
1256997 else false)
1257- then fw
998+ then fa
1258999 else false)
12591000 then true
1260- else an(fu, fv, fw)
1001+ else ao(eY, eZ, fa)
12611002 }
1262- else if ($isInstanceOf(as, "SetScriptTransaction"))
1003+ else if ($isInstanceOf(at, "SetScriptTransaction"))
12631004 then {
1264- let dH = as
1265- let fx = blake2b256(value(dH.script))
1266- let fy = fromBase64String(value(getString(ay, am())))
1267- let fz = scriptHash(this)
1268- if (if ((fy == fx))
1269- then (fz != fx)
1005+ let dr = at
1006+ let fb = blake2b256(value(dr.script))
1007+ let fc = fromBase64String(value(getString(az, am())))
1008+ let fd = scriptHash(this)
1009+ if (if ((fc == fb))
1010+ then (fd != fb)
12701011 else false)
12711012 then true
1272- else sigVerify(fq.bodyBytes, fq.proofs[0], fs)
1013+ else sigVerify(eU.bodyBytes, eU.proofs[0], eW)
12731014 }
1274- else sigVerify(fq.bodyBytes, fq.proofs[0], fs)
1015+ else sigVerify(eU.bodyBytes, eU.proofs[0], eW)
12751016 }
12761017

github/deemru/w8io/873ac7e 
328.97 ms