tx · 5kH5x73nCt9s9dRMZ7VFN2GWQ6AyeAiCMReMkWsNFbdw

3MzKSdTH2jFbypLsoNfrH7QgkzSbx3EYwCA:  -0.03400000 Waves

2022.09.12 19:28 [2226128] smart account 3MzKSdTH2jFbypLsoNfrH7QgkzSbx3EYwCA > SELF 0.00000000 Waves

{ "type": 13, "id": "5kH5x73nCt9s9dRMZ7VFN2GWQ6AyeAiCMReMkWsNFbdw", "fee": 3400000, "feeAssetId": null, "timestamp": 1663000050047, "version": 2, "chainId": 84, "sender": "3MzKSdTH2jFbypLsoNfrH7QgkzSbx3EYwCA", "senderPublicKey": "35yd3qw1gxKDxKwGAykHN9fANbXNWwseaUwbWDj24o3x", "proofs": [ "3gRv1ACmJici9wxWo5VCB4aqc4yPruGaRZQXD5ZYqoP7vtU8ryd8zCLgG1UJPUVCiUQLYztNyX7WHHAJBJqQU1zy" ], "script": "base64:BgKNAQgCEgMKAQgSAwoBCBIAEgQKAgEEEgcKBQEBAQEEEgUKAwEBBBIDCgEBEgASBwoFAQEBCAESBQoDAQgBEgQKAgEBEgMKAQESBAoCCAgSBAoCCAgSBAoCCAESABIDCgEIEgUKAwEBARIECgIIARIECgIBARIECgIICBILCgkIAQECAQIIBAQSBgoECAgBCE4ABnNjYWxlOACAwtcvAAxzY2FsZThCaWdJbnQJALYCAQCAwtcvAAdzY2FsZTE4CQC2AgEAgICQu7rWrfANAAp6ZXJvQmlnSW50CQC2AgEAAAAJb25lQmlnSW50CQC2AgEAAQAKc2xpcHBhZ2U0RAkAtgIBCQBlAgUGc2NhbGU4CQBpAgkAaAIFBnNjYWxlOAABBQZzY2FsZTgABUFtdWx0AgMxMDAABURjb252AgExAANTRVACAl9fAAVFTVBUWQIAAApQb29sQWN0aXZlAAEAClBvb2xQdXREaXMAAgAOUG9vbE1hdGNoZXJEaXMAAwAMUG9vbFNodXRkb3duAAQADmlkeFBvb2xBZGRyZXNzAAEACWlkeFBvb2xTdAACAAlpZHhMUEFzSWQAAwAJaWR4QW1Bc0lkAAQACWlkeFByQXNJZAAFAAtpZHhBbXRBc0RjbQAGAA1pZHhQcmljZUFzRGNtAAcAC2lkeElBbXRBc0lkAAgADWlkeElQcmljZUFzSWQACQAPaWR4RmFjdFN0YWtDbnRyAAEAEGlkeEZhY3RTbGlwcENudHIABwARaWR4RmFjdEd3eFJld0NudHIACgAFZGVsYXkCCSVzX19kZWxheQECdDECB29yaWdWYWwNb3JpZ1NjYWxlTXVsdAkAvAIDCQC2AgEFB29yaWdWYWwFB3NjYWxlMTgJALYCAQUNb3JpZ1NjYWxlTXVsdAECZjECA3ZhbA9yZXN1bHRTY2FsZU11bHQJAKADAQkAvAIDBQN2YWwJALYCAQUPcmVzdWx0U2NhbGVNdWx0BQdzY2FsZTE4AQJ0cwMDYW10CHJlc1NjYWxlCGN1clNjYWxlCQBrAwUDYW10BQhyZXNTY2FsZQUIY3VyU2NhbGUBA2FicwEDdmFsAwkAvwICBQp6ZXJvQmlnSW50BQN2YWwJAL4CAQUDdmFsBQN2YWwBAmZjAAITJXNfX2ZhY3RvcnlDb250cmFjdAEDbXBrAAIUJXNfX21hbmFnZXJQdWJsaWNLZXkBBHBtcGsAAhslc19fcGVuZGluZ01hbmFnZXJQdWJsaWNLZXkBAnBsAAIRJXMlc19fcHJpY2VfX2xhc3QBAnBoAgFoAXQJALkJAgkAzAgCAhglcyVzJWQlZF9fcHJpY2VfX2hpc3RvcnkJAMwIAgkApAMBBQFoCQDMCAIJAKQDAQUBdAUDbmlsBQNTRVABA3BhdQICdWEEdHhJZAkArAICCQCsAgIJAKwCAgILJXMlcyVzX19QX18FAnVhAgJfXwUEdHhJZAEDZ2F1AgJ1YQR0eElkCQCsAgIJAKwCAgkArAICAgslcyVzJXNfX0dfXwUCdWECAl9fBQR0eElkAQJhYQACDyVzX19hbW91bnRBc3NldAECcGEAAg4lc19fcHJpY2VBc3NldAEDYW1wAAIHJXNfX2FtcAEDYWRhAAINJXNfX2FkZG9uQWRkcgEFbGdvdGMBBmNhbGxlcgkAuQkCCQDMCAICFyVzJXNfX2xhc3RHZXRPbmVUa25DYWxsCQDMCAIFBmNhbGxlcgUDbmlsBQNTRVABBWxzb3RjAQZjYWxsZXIJALkJAgkAzAgCAhclcyVzX19sYXN0UHV0T25lVGtuQ2FsbAkAzAgCBQZjYWxsZXIFA25pbAUDU0VQAQRmY2ZnAAIRJXNfX2ZhY3RvcnlDb25maWcBBG10cGsAAhglcyVzX19tYXRjaGVyX19wdWJsaWNLZXkBAnBjAgZpQW10QXMFaVByQXMJAKwCAgkArAICCQCsAgIJAKwCAgIIJWQlZCVzX18FBmlBbXRBcwICX18FBWlQckFzAghfX2NvbmZpZwEDbWJhAQViQVN0cgkArAICAiglcyVzJXNfX21hcHBpbmdzX19iYXNlQXNzZXQyaW50ZXJuYWxJZF9fBQViQVN0cgEDYXBzAAIMJXNfX3NodXRkb3duARxrZXlBbGxvd2VkTHBTdGFibGVTY3JpcHRIYXNoAAIdJXNfX2FsbG93ZWRMcFN0YWJsZVNjcmlwdEhhc2gBA3RvZQMDb3JWBnNlbmRyVgZtYXRjaFYJAAIBCQCsAgIJAKwCAgkArAICCQCsAgIJAKwCAgIRRmFpbGVkOiBvcmRWYWxpZD0JAKUDAQUDb3JWAgsgc25kclZhbGlkPQkApQMBBQZzZW5kclYCDCBtdGNoclZhbGlkPQkApQMBBQZtYXRjaFYBA3N0cgEDdmFsBAckbWF0Y2gwBQN2YWwDCQABAgUHJG1hdGNoMAIGU3RyaW5nBAZ2YWxTdHIFByRtYXRjaDAFBnZhbFN0cgkAAgECE2ZhaWwgY2FzdCB0byBTdHJpbmcBBHN0cmYCBGFkZHIDa2V5CQETdmFsdWVPckVycm9yTWVzc2FnZQIJAJ0IAgUEYWRkcgUDa2V5CQC5CQIJAMwIAgIKbWFuZGF0b3J5IAkAzAgCCQClCAEFBGFkZHIJAMwIAgIBLgkAzAgCBQNrZXkJAMwIAgIMIG5vdCBkZWZpbmVkBQNuaWwCAAEEaW50ZgIEYWRkcgNrZXkJARN2YWx1ZU9yRXJyb3JNZXNzYWdlAgkAmggCBQRhZGRyBQNrZXkJALkJAgkAzAgCAgptYW5kYXRvcnkgCQDMCAIJAKUIAQUEYWRkcgkAzAgCAgEuCQDMCAIFA2tleQkAzAgCAgwgbm90IGRlZmluZWQFA25pbAIAAANmY2EJARFAZXh0ck5hdGl2ZSgxMDYyKQEJAQRzdHJmAgUEdGhpcwkBAmZjAAABQQkBBHN0cmYCBQR0aGlzCQEDYW1wAAEDaWdzAAkBC3ZhbHVlT3JFbHNlAgkAmwgCBQNmY2EJAQNhcHMABwECbXAACQDZBAEJAQRzdHJmAgUDZmNhCQEEbXRwawABA2dwYwAEBWFtdEFzCQEEc3RyZgIFBHRoaXMJAQJhYQAEB3ByaWNlQXMJAQRzdHJmAgUEdGhpcwkBAnBhAAQIaVByaWNlQXMJAQRpbnRmAgUDZmNhCQEDbWJhAQUHcHJpY2VBcwQGaUFtdEFzCQEEaW50ZgIFA2ZjYQkBA21iYQEFBWFtdEFzCQC1CQIJAQRzdHJmAgUDZmNhCQECcGMCCQCkAwEFBmlBbXRBcwkApAMBBQhpUHJpY2VBcwUDU0VQAQNnZmMACQC1CQIJAQRzdHJmAgUDZmNhCQEEZmNmZwAFA1NFUAERZGF0YVB1dEFjdGlvbkluZm8KDWluQW10QXNzZXRBbXQPaW5QcmljZUFzc2V0QW10CG91dExwQW10BXByaWNlCnNsaXBCeVVzZXIMc2xpcHBhZ2VSZWFsCHR4SGVpZ2h0C3R4VGltZXN0YW1wDHNsaXBhZ2VBbUFtdAxzbGlwYWdlUHJBbXQJALkJAgkAzAgCAhQlZCVkJWQlZCVkJWQlZCVkJWQlZAkAzAgCCQCkAwEFDWluQW10QXNzZXRBbXQJAMwIAgkApAMBBQ9pblByaWNlQXNzZXRBbXQJAMwIAgkApAMBBQhvdXRMcEFtdAkAzAgCCQCkAwEFBXByaWNlCQDMCAIJAKQDAQUKc2xpcEJ5VXNlcgkAzAgCCQCkAwEFDHNsaXBwYWdlUmVhbAkAzAgCCQCkAwEFCHR4SGVpZ2h0CQDMCAIJAKQDAQULdHhUaW1lc3RhbXAJAMwIAgkApAMBBQxzbGlwYWdlQW1BbXQJAMwIAgkApAMBBQxzbGlwYWdlUHJBbXQFA25pbAUDU0VQARFkYXRhR2V0QWN0aW9uSW5mbwYOb3V0QW10QXNzZXRBbXQQb3V0UHJpY2VBc3NldEFtdAdpbkxwQW10BXByaWNlCHR4SGVpZ2h0C3R4VGltZXN0YW1wCQC5CQIJAMwIAgIMJWQlZCVkJWQlZCVkCQDMCAIJAKQDAQUOb3V0QW10QXNzZXRBbXQJAMwIAgkApAMBBRBvdXRQcmljZUFzc2V0QW10CQDMCAIJAKQDAQUHaW5McEFtdAkAzAgCCQCkAwEFBXByaWNlCQDMCAIJAKQDAQUIdHhIZWlnaHQJAMwIAgkApAMBBQt0eFRpbWVzdGFtcAUDbmlsBQNTRVABDWdldEFjY0JhbGFuY2UBB2Fzc2V0SWQDCQAAAgUHYXNzZXRJZAIFV0FWRVMICQDvBwEFBHRoaXMJYXZhaWxhYmxlCQDwBwIFBHRoaXMJANkEAQUHYXNzZXRJZAEEY3BiaQIIcHJBbXRYMTgIYW1BbXRYMTgJALwCAwUIcHJBbXRYMTgFB3NjYWxlMTgFCGFtQW10WDE4AQN2YWQDAkExAkEyCHNsaXBwYWdlBARkaWZmCQC8AgMJALgCAgUCQTEFAkEyBQxzY2FsZThCaWdJbnQFAkEyBARwYXNzCQC/AgIJALgCAgUIc2xpcHBhZ2UJAQNhYnMBBQRkaWZmBQp6ZXJvQmlnSW50AwkBASEBBQRwYXNzCQACAQkArAICAgpCaWcgc2xwZzogCQCmAwEFBGRpZmYJAJQKAgUEcGFzcwkAmQMBCQDMCAIFAkExCQDMCAIFAkEyBQNuaWwBAnZkAwJEMQJEMARzbHBnBARkaWZmCQC8AgMFAkQwBQxzY2FsZThCaWdJbnQFAkQxBARmYWlsCQC/AgIFBHNscGcFBGRpZmYDAwUEZmFpbAYJAL8CAgUCRDAFAkQxCQACAQkArAICCQCsAgIJAKwCAgkArAICCQCsAgIJAKwCAgkApgMBBQJEMAIBIAkApgMBBQJEMQIBIAkApgMBBQRkaWZmAgEgCQCmAwEFBHNscGcFBGZhaWwBA3BjcAQKYW1Bc3NldERjbQpwckFzc2V0RGNtBWFtQW10BXByQW10BAthbXRBc0FtdFgxOAkBAnQxAgUFYW1BbXQFCmFtQXNzZXREY20ECnByQXNBbXRYMTgJAQJ0MQIFBXByQW10BQpwckFzc2V0RGNtCQEEY3BiaQIFCnByQXNBbXRYMTgFC2FtdEFzQW10WDE4AQpjYWxjUHJpY2VzAwVhbUFtdAVwckFtdAVscEFtdAQDY2ZnCQEDZ3BjAAQIYW10QXNEY20JAQ1wYXJzZUludFZhbHVlAQkAkQMCBQNjZmcFC2lkeEFtdEFzRGNtBAdwckFzRGNtCQENcGFyc2VJbnRWYWx1ZQEJAJEDAgUDY2ZnBQ1pZHhQcmljZUFzRGNtBAhwcmljZVgxOAkBA3BjcAQFCGFtdEFzRGNtBQdwckFzRGNtBQVhbUFtdAUFcHJBbXQECGFtQW10WDE4CQECdDECBQVhbUFtdAUIYW10QXNEY20ECHByQW10WDE4CQECdDECBQVwckFtdAUHcHJBc0RjbQQIbHBBbXRYMTgJAQJ0MQIFBWxwQW10BQZzY2FsZTgEDWxwUHJJbkFtQXNYMTgJAQRjcGJpAgUIYW1BbXRYMTgFCGxwQW10WDE4BA1scFBySW5QckFzWDE4CQEEY3BiaQIFCHByQW10WDE4BQhscEFtdFgxOAkAzAgCBQhwcmljZVgxOAkAzAgCBQ1scFBySW5BbUFzWDE4CQDMCAIFDWxwUHJJblByQXNYMTgFA25pbAEPY2FsY3VsYXRlUHJpY2VzAwVhbUFtdAVwckFtdAVscEFtdAQBcAkBCmNhbGNQcmljZXMDBQVhbUFtdAUFcHJBbXQFBWxwQW10CQDMCAIJAQJmMQIJAJEDAgUBcAAABQZzY2FsZTgJAMwIAgkBAmYxAgkAkQMCBQFwAAEFBnNjYWxlOAkAzAgCCQECZjECCQCRAwIFAXAAAgUGc2NhbGU4BQNuaWwBA2VnbwQGdHhJZDU4CnBtdEFzc2V0SWQIcG10THBBbXQLdXNlckFkZHJlc3MEA2NmZwkBA2dwYwAEBGxwSWQJAJEDAgUDY2ZnBQlpZHhMUEFzSWQEBGFtSWQJAJEDAgUDY2ZnBQlpZHhBbUFzSWQEBHBySWQJAJEDAgUDY2ZnBQlpZHhQckFzSWQEBWFtRGNtCQENcGFyc2VJbnRWYWx1ZQEJAJEDAgUDY2ZnBQtpZHhBbXRBc0RjbQQFcHJEY20JAQ1wYXJzZUludFZhbHVlAQkAkQMCBQNjZmcFDWlkeFByaWNlQXNEY20EA3N0cwkAkQMCBQNjZmcFCWlkeFBvb2xTdAQHbHBFbWlzcwgJARN2YWx1ZU9yRXJyb3JNZXNzYWdlAgkA7AcBCQDZBAEFBGxwSWQCC1dyb25nIExQIGlkCHF1YW50aXR5AwkBAiE9AgUEbHBJZAUKcG10QXNzZXRJZAkAAgECD1dyb25nIHBtdCBhc3NldAQJYW1CYWxhbmNlCQENZ2V0QWNjQmFsYW5jZQEFBGFtSWQEDGFtQmFsYW5jZVgxOAkBAnQxAgUJYW1CYWxhbmNlBQVhbURjbQQJcHJCYWxhbmNlCQENZ2V0QWNjQmFsYW5jZQEFBHBySWQEDHByQmFsYW5jZVgxOAkBAnQxAgUJcHJCYWxhbmNlBQVwckRjbQQLY3VyUHJpY2VYMTgJAQRjcGJpAgUMcHJCYWxhbmNlWDE4BQxhbUJhbGFuY2VYMTgECGN1clByaWNlCQECZjECBQtjdXJQcmljZVgxOAUGc2NhbGU4BAtwbXRMcEFtdFgxOAkBAnQxAgUIcG10THBBbXQFBnNjYWxlOAQKbHBFbWlzc1gxOAkBAnQxAgUHbHBFbWlzcwUGc2NhbGU4BAtvdXRBbUFtdFgxOAkAvAIDBQxhbUJhbGFuY2VYMTgFC3BtdExwQW10WDE4BQpscEVtaXNzWDE4BAtvdXRQckFtdFgxOAkAvAIDBQxwckJhbGFuY2VYMTgFC3BtdExwQW10WDE4BQpscEVtaXNzWDE4BAhvdXRBbUFtdAkBAmYxAgULb3V0QW1BbXRYMTgFBWFtRGNtBAhvdXRQckFtdAkBAmYxAgULb3V0UHJBbXRYMTgFBXByRGNtBAVzdGF0ZQMJAAACBQZ0eElkNTgCAAUDbmlsCQDMCAIJAQ5TY3JpcHRUcmFuc2ZlcgMFC3VzZXJBZGRyZXNzBQhvdXRBbUFtdAMJAAACBQRhbUlkAgVXQVZFUwUEdW5pdAkA2QQBBQRhbUlkCQDMCAIJAQ5TY3JpcHRUcmFuc2ZlcgMFC3VzZXJBZGRyZXNzBQhvdXRQckFtdAMJAAACBQRwcklkAgVXQVZFUwUEdW5pdAkA2QQBBQRwcklkCQDMCAIJAQtTdHJpbmdFbnRyeQIJAQNnYXUCCQClCAEFC3VzZXJBZGRyZXNzBQZ0eElkNTgJARFkYXRhR2V0QWN0aW9uSW5mbwYFCG91dEFtQW10BQhvdXRQckFtdAUIcG10THBBbXQFCGN1clByaWNlBQZoZWlnaHQIBQlsYXN0QmxvY2sJdGltZXN0YW1wCQDMCAIJAQxJbnRlZ2VyRW50cnkCCQECcGwABQhjdXJQcmljZQkAzAgCCQEMSW50ZWdlckVudHJ5AgkBAnBoAgUGaGVpZ2h0CAUJbGFzdEJsb2NrCXRpbWVzdGFtcAUIY3VyUHJpY2UFA25pbAkAnAoKBQhvdXRBbUFtdAUIb3V0UHJBbXQFBGFtSWQFBHBySWQFCWFtQmFsYW5jZQUJcHJCYWxhbmNlBQdscEVtaXNzBQtjdXJQcmljZVgxOAUDc3RzBQVzdGF0ZQEDZXBvDAZ0eElkNTgIc2xpcHBhZ2UHaW5BbUFtdAZpbkFtSWQHaW5QckFtdAZpblBySWQLdXNlckFkZHJlc3MGaXNFdmFsBmVtaXRMcAppc09uZUFzc2V0BnBtdEFtdAVwbXRJZAQDY2ZnCQEDZ3BjAAQEbHBJZAkA2QQBCQCRAwIFA2NmZwUJaWR4TFBBc0lkBAdhbUlkU3RyCQCRAwIFA2NmZwUJaWR4QW1Bc0lkBAdwcklkU3RyCQCRAwIFA2NmZwUJaWR4UHJBc0lkBAlpbkFtSWRTdHIJAJEDAgUDY2ZnBQtpZHhJQW10QXNJZAQJaW5QcklkU3RyCQCRAwIFA2NmZwUNaWR4SVByaWNlQXNJZAQGYW10RGNtCQENcGFyc2VJbnRWYWx1ZQEJAJEDAgUDY2ZnBQtpZHhBbXRBc0RjbQQIcHJpY2VEY20JAQ1wYXJzZUludFZhbHVlAQkAkQMCBQNjZmcFDWlkeFByaWNlQXNEY20EA3N0cwkAkQMCBQNjZmcFCWlkeFBvb2xTdAQEbHBFbQgJARN2YWx1ZU9yRXJyb3JNZXNzYWdlAgkA7AcBBQRscElkAghXciBscCBhcwhxdWFudGl0eQQJYW1CYWxhbmNlAwUGaXNFdmFsCQENZ2V0QWNjQmFsYW5jZQEFB2FtSWRTdHIDAwUKaXNPbmVBc3NldAkAAAIFBXBtdElkBQdhbUlkU3RyBwkAZQIJAQ1nZXRBY2NCYWxhbmNlAQUHYW1JZFN0cgUGcG10QW10AwUKaXNPbmVBc3NldAkBDWdldEFjY0JhbGFuY2UBBQdhbUlkU3RyCQBlAgkBDWdldEFjY0JhbGFuY2UBBQdhbUlkU3RyBQdpbkFtQW10BAlwckJhbGFuY2UDBQZpc0V2YWwJAQ1nZXRBY2NCYWxhbmNlAQUHcHJJZFN0cgMDBQppc09uZUFzc2V0CQAAAgUFcG10SWQFB3BySWRTdHIHCQBlAgkBDWdldEFjY0JhbGFuY2UBBQdwcklkU3RyBQZwbXRBbXQDBQppc09uZUFzc2V0CQENZ2V0QWNjQmFsYW5jZQEFB3BySWRTdHIJAGUCCQENZ2V0QWNjQmFsYW5jZQEFB3BySWRTdHIFB2luUHJBbXQED2luQW1Bc3NldEFtdFgxOAkBAnQxAgUHaW5BbUFtdAUGYW10RGNtBA9pblByQXNzZXRBbXRYMTgJAQJ0MQIFB2luUHJBbXQFCHByaWNlRGNtBAx1c2VyUHJpY2VYMTgJAQRjcGJpAgUPaW5QckFzc2V0QW10WDE4BQ9pbkFtQXNzZXRBbXRYMTgEDGFtQmFsYW5jZVgxOAkBAnQxAgUJYW1CYWxhbmNlBQZhbXREY20EDHByQmFsYW5jZVgxOAkBAnQxAgUJcHJCYWxhbmNlBQhwcmljZURjbQQBcgMJAAACBQRscEVtAAAEC2N1clByaWNlWDE4BQp6ZXJvQmlnSW50BAtzbGlwcGFnZVgxOAUKemVyb0JpZ0ludAQIbHBBbXRYMTgJAHYGCQC5AgIFD2luQW1Bc3NldEFtdFgxOAUPaW5QckFzc2V0QW10WDE4AAAJALYCAQAFAAEAAAUERE9XTgkAlwoFCQECZjECBQhscEFtdFgxOAUGc2NhbGU4CQECZjECBQ9pbkFtQXNzZXRBbXRYMTgFBmFtdERjbQkBAmYxAgUPaW5QckFzc2V0QW10WDE4BQhwcmljZURjbQkBBGNwYmkCCQC3AgIFDHByQmFsYW5jZVgxOAUPaW5QckFzc2V0QW10WDE4CQC3AgIFDGFtQmFsYW5jZVgxOAUPaW5BbUFzc2V0QW10WDE4BQtzbGlwcGFnZVgxOAQLY3VyUHJpY2VYMTgJAQRjcGJpAgUMcHJCYWxhbmNlWDE4BQxhbUJhbGFuY2VYMTgED3NsaXBwYWdlUmVhbFgxOAkAvAIDCQEDYWJzAQkAuAICBQtjdXJQcmljZVgxOAUMdXNlclByaWNlWDE4BQdzY2FsZTE4BQtjdXJQcmljZVgxOAQLc2xpcHBhZ2VYMTgJAQJ0MQIFCHNsaXBwYWdlBQZzY2FsZTgDAwkBAiE9AgULY3VyUHJpY2VYMTgFCnplcm9CaWdJbnQJAL8CAgUPc2xpcHBhZ2VSZWFsWDE4BQtzbGlwcGFnZVgxOAcJAAIBCQCsAgIJAKwCAgkArAICAg9QcmljZSBzbGlwcGFnZSAJAKYDAQUPc2xpcHBhZ2VSZWFsWDE4AgMgPiAJAKYDAQULc2xpcHBhZ2VYMTgEDWxwRW1pc3Npb25YMTgJAQJ0MQIFBGxwRW0FBnNjYWxlOAQKcHJWaWFBbVgxOAkAvAIDBQ9pbkFtQXNzZXRBbXRYMTgFC2N1clByaWNlWDE4BQdzY2FsZTE4BAphbVZpYVByWDE4CQC8AgMFD2luUHJBc3NldEFtdFgxOAUHc2NhbGUxOAULY3VyUHJpY2VYMTgEDGV4cGVjdGVkQW10cwMJAL8CAgUKcHJWaWFBbVgxOAUPaW5QckFzc2V0QW10WDE4CQCUCgIFCmFtVmlhUHJYMTgFD2luUHJBc3NldEFtdFgxOAkAlAoCBQ9pbkFtQXNzZXRBbXRYMTgFCnByVmlhQW1YMTgEEWV4cEFtdEFzc2V0QW10WDE4CAUMZXhwZWN0ZWRBbXRzAl8xBBNleHBQcmljZUFzc2V0QW10WDE4CAUMZXhwZWN0ZWRBbXRzAl8yBAhscEFtdFgxOAkAvAIDBQ1scEVtaXNzaW9uWDE4BRNleHBQcmljZUFzc2V0QW10WDE4BQxwckJhbGFuY2VYMTgJAJcKBQkBAmYxAgUIbHBBbXRYMTgFBnNjYWxlOAkBAmYxAgURZXhwQW10QXNzZXRBbXRYMTgFBmFtdERjbQkBAmYxAgUTZXhwUHJpY2VBc3NldEFtdFgxOAUIcHJpY2VEY20FC2N1clByaWNlWDE4BQtzbGlwcGFnZVgxOAQJY2FsY0xwQW10CAUBcgJfMQQOY2FsY0FtQXNzZXRQbXQIBQFyAl8yBA5jYWxjUHJBc3NldFBtdAgFAXICXzMECGN1clByaWNlCQECZjECCAUBcgJfNAUGc2NhbGU4BAxzbGlwcGFnZUNhbGMJAQJmMQIIBQFyAl81BQZzY2FsZTgDCQBnAgAABQljYWxjTHBBbXQJAAIBAgdMUCA8PSAwBAllbWl0THBBbXQDCQEBIQEFBmVtaXRMcAAABQljYWxjTHBBbXQEBmFtRGlmZgkAZQIFB2luQW1BbXQFDmNhbGNBbUFzc2V0UG10BAZwckRpZmYJAGUCBQdpblByQW10BQ5jYWxjUHJBc3NldFBtdAQNJHQwMTU2MDExNTk0NgMDBQppc09uZUFzc2V0CQAAAgUFcG10SWQFB2FtSWRTdHIHCQCUCgIFBnBtdEFtdAAAAwMFCmlzT25lQXNzZXQJAAACBQVwbXRJZAUHcHJJZFN0cgcJAJQKAgAABQZwbXRBbXQJAJQKAgUOY2FsY0FtQXNzZXRQbXQFDmNhbGNQckFzc2V0UG10BAp3cml0ZUFtQW10CAUNJHQwMTU2MDExNTk0NgJfMQQKd3JpdGVQckFtdAgFDSR0MDE1NjAxMTU5NDYCXzIEC2NvbW1vblN0YXRlCQDMCAIJAQxJbnRlZ2VyRW50cnkCCQECcGwABQhjdXJQcmljZQkAzAgCCQEMSW50ZWdlckVudHJ5AgkBAnBoAgUGaGVpZ2h0CAUJbGFzdEJsb2NrCXRpbWVzdGFtcAUIY3VyUHJpY2UJAMwIAgkBC1N0cmluZ0VudHJ5AgkBA3BhdQIFC3VzZXJBZGRyZXNzBQZ0eElkNTgJARFkYXRhUHV0QWN0aW9uSW5mbwoFCndyaXRlQW1BbXQFCndyaXRlUHJBbXQFCWVtaXRMcEFtdAUIY3VyUHJpY2UFCHNsaXBwYWdlBQxzbGlwcGFnZUNhbGMFBmhlaWdodAgFCWxhc3RCbG9jawl0aW1lc3RhbXAFBmFtRGlmZgUGcHJEaWZmBQNuaWwJAJ8KDQUJY2FsY0xwQW10BQllbWl0THBBbXQFCGN1clByaWNlBQlhbUJhbGFuY2UFCXByQmFsYW5jZQUEbHBFbQUEbHBJZAUDc3RzBQtjb21tb25TdGF0ZQUGYW1EaWZmBQZwckRpZmYFBmluQW1JZAUGaW5QcklkAQNtb2EBBW9yZGVyBANjZmcJAQNncGMABAdhbXRBc0lkCQCRAwIFA2NmZwUJaWR4QW1Bc0lkBAZwckFzSWQJAJEDAgUDY2ZnBQlpZHhQckFzSWQEA3N0cwkBDXBhcnNlSW50VmFsdWUBCQCRAwIFA2NmZwUJaWR4UG9vbFN0BAhhbXRBc0RjbQkBDXBhcnNlSW50VmFsdWUBCQCRAwIFA2NmZwULaWR4QW10QXNEY20EB3ByQXNEY20JAQ1wYXJzZUludFZhbHVlAQkAkQMCBQNjZmcFDWlkeFByaWNlQXNEY20ED2FjY0FtdEFzQmFsYW5jZQkBDWdldEFjY0JhbGFuY2UBBQdhbXRBc0lkBA5hY2NQckFzQmFsYW5jZQkBDWdldEFjY0JhbGFuY2UBBQZwckFzSWQEC2N1clByaWNlWDE4AwkAAAIIBQVvcmRlcglvcmRlclR5cGUFA0J1eQkBA3BjcAQFCGFtdEFzRGNtBQdwckFzRGNtCQBkAgUPYWNjQW10QXNCYWxhbmNlCAUFb3JkZXIGYW1vdW50BQ5hY2NQckFzQmFsYW5jZQkBA3BjcAQFCGFtdEFzRGNtBQdwckFzRGNtCQBlAgUPYWNjQW10QXNCYWxhbmNlCAUFb3JkZXIGYW1vdW50BQ5hY2NQckFzQmFsYW5jZQQIY3VyUHJpY2UJAQJmMQIFC2N1clByaWNlWDE4BQZzY2FsZTgDAwMJAQNpZ3MABgkAAAIFA3N0cwUOUG9vbE1hdGNoZXJEaXMGCQAAAgUDc3RzBQxQb29sU2h1dGRvd24JAAIBAg1BZG1pbiBibG9ja2VkBApvckFtdEFzc2V0CAgFBW9yZGVyCWFzc2V0UGFpcgthbW91bnRBc3NldAQKb3JBbXRBc1N0cgMJAAACBQpvckFtdEFzc2V0BQR1bml0AgVXQVZFUwkA2AQBCQEFdmFsdWUBBQpvckFtdEFzc2V0BAlvclByQXNzZXQICAUFb3JkZXIJYXNzZXRQYWlyCnByaWNlQXNzZXQECW9yUHJBc1N0cgMJAAACBQlvclByQXNzZXQFBHVuaXQCBVdBVkVTCQDYBAEJAQV2YWx1ZQEFCW9yUHJBc3NldAMDCQECIT0CBQpvckFtdEFzU3RyBQdhbXRBc0lkBgkBAiE9AgUJb3JQckFzU3RyBQZwckFzSWQJAAIBAglXciBhc3NldHMECm9yZGVyUHJpY2UIBQVvcmRlcgVwcmljZQQIcHJpY2VEY20JAGsDBQZzY2FsZTgFB3ByQXNEY20FCGFtdEFzRGNtBA5jYXN0T3JkZXJQcmljZQkBAnRzAwUKb3JkZXJQcmljZQUGc2NhbGU4BQhwcmljZURjbQQRaXNPcmRlclByaWNlVmFsaWQDCQAAAggFBW9yZGVyCW9yZGVyVHlwZQUDQnV5CQBnAgUIY3VyUHJpY2UFDmNhc3RPcmRlclByaWNlCQBnAgUOY2FzdE9yZGVyUHJpY2UFCGN1clByaWNlBgECY2cBAWkDCQECIT0CCQCQAwEIBQFpCHBheW1lbnRzAAEJAAIBAgoxIHBtbnQgZXhwBANwbXQJAQV2YWx1ZQEJAJEDAggFAWkIcGF5bWVudHMAAAQKcG10QXNzZXRJZAkBBXZhbHVlAQgFA3BtdAdhc3NldElkBAZwbXRBbXQIBQNwbXQGYW1vdW50BAFyCQEDZWdvBAkA2AQBCAUBaQ10cmFuc2FjdGlvbklkCQDYBAEFCnBtdEFzc2V0SWQFBnBtdEFtdAgFAWkGY2FsbGVyBAhvdXRBbUFtdAgFAXICXzEECG91dFByQW10CAUBcgJfMgQDc3RzCQENcGFyc2VJbnRWYWx1ZQEIBQFyAl85BAVzdGF0ZQgFAXIDXzEwAwMJAQNpZ3MABgkAAAIFA3N0cwUMUG9vbFNodXRkb3duCQACAQkArAICAg9BZG1pbiBibG9ja2VkOiAJAKQDAQUDc3RzCQCXCgUFCG91dEFtQW10BQhvdXRQckFtdAUGcG10QW10BQpwbXRBc3NldElkBQVzdGF0ZQECY3AJBmNhbGxlcgR0eElkB2FtQXNQbXQHcHJBc1BtdAhzbGlwcGFnZQZlbWl0THAKaXNPbmVBc3NldAZwbXRBbXQFcG10SWQEAXIJAQNlcG8MBQR0eElkBQhzbGlwcGFnZQgJAQV2YWx1ZQEFB2FtQXNQbXQGYW1vdW50CAkBBXZhbHVlAQUHYW1Bc1BtdAdhc3NldElkCAkBBXZhbHVlAQUHcHJBc1BtdAZhbW91bnQICQEFdmFsdWUBBQdwckFzUG10B2Fzc2V0SWQFBmNhbGxlcgcFBmVtaXRMcAUKaXNPbmVBc3NldAUGcG10QW10BQVwbXRJZAQDc3RzCQENcGFyc2VJbnRWYWx1ZQEIBQFyAl84AwMDCQEDaWdzAAYJAAACBQNzdHMFClBvb2xQdXREaXMGCQAAAgUDc3RzBQxQb29sU2h1dGRvd24JAAIBCQCsAgICCEJsb2NrZWQ6CQCkAwEFA3N0cwUBcgEBbQAEByRtYXRjaDAJAKIIAQkBA21wawADCQABAgUHJG1hdGNoMAIGU3RyaW5nBAFzBQckbWF0Y2gwCQDZBAEFAXMDCQABAgUHJG1hdGNoMAIEVW5pdAUEdW5pdAkAAgECC01hdGNoIGVycm9yAQJwbQAEByRtYXRjaDAJAKIIAQkBBHBtcGsAAwkAAQIFByRtYXRjaDACBlN0cmluZwQBcwUHJG1hdGNoMAkA2QQBBQFzAwkAAQIFByRtYXRjaDACBFVuaXQFBHVuaXQJAAIBAgtNYXRjaCBlcnJvcgACcGQJAAIBAhFQZXJtaXNzaW9uIGRlbmllZAECbW0BAWkEByRtYXRjaDAJAQFtAAMJAAECBQckbWF0Y2gwAgpCeXRlVmVjdG9yBAJwawUHJG1hdGNoMAMJAAACCAUBaQ9jYWxsZXJQdWJsaWNLZXkFAnBrBgUCcGQDCQABAgUHJG1hdGNoMAIEVW5pdAMJAAACCAUBaQZjYWxsZXIFBHRoaXMGBQJwZAkAAgECC01hdGNoIGVycm9yFwFpAQtjb25zdHJ1Y3RvcgECZmMEAWMJAQJtbQEFAWkDCQAAAgUBYwUBYwkAzAgCCQELU3RyaW5nRW50cnkCCQECZmMABQJmYwUDbmlsCQACAQIkU3RyaWN0IHZhbHVlIGlzIG5vdCBlcXVhbCB0byBpdHNlbGYuAWkBCnNldE1hbmFnZXIBF3BlbmRpbmdNYW5hZ2VyUHVibGljS2V5BAFjCQECbW0BBQFpAwkAAAIFAWMFAWMEAmNtCQDZBAEFF3BlbmRpbmdNYW5hZ2VyUHVibGljS2V5AwkAAAIFAmNtBQJjbQkAzAgCCQELU3RyaW5nRW50cnkCCQEEcG1wawAFF3BlbmRpbmdNYW5hZ2VyUHVibGljS2V5BQNuaWwJAAIBAiRTdHJpY3QgdmFsdWUgaXMgbm90IGVxdWFsIHRvIGl0c2VsZi4JAAIBAiRTdHJpY3QgdmFsdWUgaXMgbm90IGVxdWFsIHRvIGl0c2VsZi4BaQEOY29uZmlybU1hbmFnZXIABAFwCQECcG0ABANocG0DCQEJaXNEZWZpbmVkAQUBcAYJAAIBAhJObyBwZW5kaW5nIG1hbmFnZXIDCQAAAgUDaHBtBQNocG0EA2NwbQMJAAACCAUBaQ9jYWxsZXJQdWJsaWNLZXkJAQV2YWx1ZQEFAXAGCQACAQIbWW91IGFyZSBub3QgcGVuZGluZyBtYW5hZ2VyAwkAAAIFA2NwbQUDY3BtCQDMCAIJAQtTdHJpbmdFbnRyeQIJAQNtcGsACQDYBAEJAQV2YWx1ZQEFAXAJAMwIAgkBC0RlbGV0ZUVudHJ5AQkBBHBtcGsABQNuaWwJAAIBAiRTdHJpY3QgdmFsdWUgaXMgbm90IGVxdWFsIHRvIGl0c2VsZi4JAAIBAiRTdHJpY3QgdmFsdWUgaXMgbm90IGVxdWFsIHRvIGl0c2VsZi4BaQEDcHV0AgRzbGlwCWF1dG9TdGFrZQQHZmFjdENmZwkBA2dmYwAEC3N0YWtpbmdDbnRyCQETdmFsdWVPckVycm9yTWVzc2FnZQIJAKYIAQkAkQMCBQdmYWN0Q2ZnBQ9pZHhGYWN0U3Rha0NudHICCldyIHN0IGFkZHIECHNsaXBDbnRyCQETdmFsdWVPckVycm9yTWVzc2FnZQIJAKYIAQkAkQMCBQdmYWN0Q2ZnBRBpZHhGYWN0U2xpcHBDbnRyAgpXciBzbCBhZGRyAwkAZgIAAAUEc2xpcAkAAgECDldyb25nIHNsaXBwYWdlAwkBAiE9AgkAkAMBCAUBaQhwYXltZW50cwACCQACAQIMMiBwbW50cyBleHBkBAFlCQECY3AJCQClCAEIBQFpBmNhbGxlcgkA2AQBCAUBaQ10cmFuc2FjdGlvbklkCQEPQXR0YWNoZWRQYXltZW50AggJAQV2YWx1ZQEJAJEDAggFAWkIcGF5bWVudHMAAAdhc3NldElkCAkBBXZhbHVlAQkAkQMCCAUBaQhwYXltZW50cwAABmFtb3VudAkAkQMCCAUBaQhwYXltZW50cwABBQRzbGlwBgcAAAIABAllbWl0THBBbXQIBQFlAl8yBAlscEFzc2V0SWQIBQFlAl83BAVzdGF0ZQgFAWUCXzkEBmFtRGlmZggFAWUDXzEwBAZwckRpZmYIBQFlA18xMQQEYW1JZAgFAWUDXzEyBARwcklkCAUBZQNfMTMEAXIJAPwHBAUDZmNhAgRlbWl0CQDMCAIFCWVtaXRMcEFtdAUDbmlsBQNuaWwDCQAAAgUBcgUBcgQCZWwEByRtYXRjaDAFAXIDCQABAgUHJG1hdGNoMAIHQWRkcmVzcwQGbGVnYWN5BQckbWF0Y2gwCQD8BwQFBmxlZ2FjeQIEZW1pdAkAzAgCBQllbWl0THBBbXQFA25pbAUDbmlsBQR1bml0AwkAAAIFAmVsBQJlbAQCc2EDCQBmAgUGYW1EaWZmAAAJAPwHBAUIc2xpcENudHICA3B1dAUDbmlsCQDMCAIJAQ9BdHRhY2hlZFBheW1lbnQCBQRhbUlkBQZhbURpZmYFA25pbAUDbmlsAwkAAAIFAnNhBQJzYQQCc3ADCQBmAgUGcHJEaWZmAAAJAPwHBAUIc2xpcENudHICA3B1dAUDbmlsCQDMCAIJAQ9BdHRhY2hlZFBheW1lbnQCBQRwcklkBQZwckRpZmYFA25pbAUDbmlsAwkAAAIFAnNwBQJzcAQIbHBUcm5zZnIDBQlhdXRvU3Rha2UEAnNzCQD8BwQFC3N0YWtpbmdDbnRyAgVzdGFrZQUDbmlsCQDMCAIJAQ9BdHRhY2hlZFBheW1lbnQCBQlscEFzc2V0SWQFCWVtaXRMcEFtdAUDbmlsAwkAAAIFAnNzBQJzcwUDbmlsCQACAQIkU3RyaWN0IHZhbHVlIGlzIG5vdCBlcXVhbCB0byBpdHNlbGYuCQDMCAIJAQ5TY3JpcHRUcmFuc2ZlcgMIBQFpBmNhbGxlcgUJZW1pdExwQW10BQlscEFzc2V0SWQFA25pbAkAzggCBQVzdGF0ZQUIbHBUcm5zZnIJAAIBAiRTdHJpY3QgdmFsdWUgaXMgbm90IGVxdWFsIHRvIGl0c2VsZi4JAAIBAiRTdHJpY3QgdmFsdWUgaXMgbm90IGVxdWFsIHRvIGl0c2VsZi4JAAIBAiRTdHJpY3QgdmFsdWUgaXMgbm90IGVxdWFsIHRvIGl0c2VsZi4JAAIBAiRTdHJpY3QgdmFsdWUgaXMgbm90IGVxdWFsIHRvIGl0c2VsZi4BaQEJcHV0T25lVGtuBQthbUFzc2V0UGFydAtwckFzc2V0UGFydAVvdXRMcAhzbGlwcGFnZQlhdXRvU3Rha2UEA2NmZwkBA2dmYwAEC3N0YWtpbmdDbnRyCQETdmFsdWVPckVycm9yTWVzc2FnZQIJAKYIAQkAkQMCBQNjZmcFD2lkeEZhY3RTdGFrQ250cgIKV3Igc3QgYWRkcgQIc2xpcENudHIJARN2YWx1ZU9yRXJyb3JNZXNzYWdlAgkApggBCQCRAwIFA2NmZwUQaWR4RmFjdFNsaXBwQ250cgIKV3Igc2wgYWRkcgQHZ3d4Q250cgkBE3ZhbHVlT3JFcnJvck1lc3NhZ2UCCQCmCAEJAJEDAgUDY2ZnBRFpZHhGYWN0R3d4UmV3Q250cgILV3IgZ3d4IGFkZHIEB3Bvb2xDZmcJAQNncGMABARhbUlkCQCRAwIFB3Bvb2xDZmcFCWlkeEFtQXNJZAQEcHJJZAkAkQMCBQdwb29sQ2ZnBQlpZHhQckFzSWQEBWFtRGNtCQENcGFyc2VJbnRWYWx1ZQEJAJEDAgUHcG9vbENmZwULaWR4QW10QXNEY20EBXByRGNtCQENcGFyc2VJbnRWYWx1ZQEJAJEDAgUHcG9vbENmZwUNaWR4UHJpY2VBc0RjbQQFYWRkb24JAQt2YWx1ZU9yRWxzZQIJAJ0IAgUEdGhpcwkBA2FkYQACAAQLdXNlckFkZHJlc3MDCQAAAgUFYWRkb24JAKUIAQgFAWkGY2FsbGVyCAUBaQxvcmlnaW5DYWxsZXIIBQFpBmNhbGxlcgQNYWRkb25Db250cmFjdAkBE3ZhbHVlT3JFcnJvck1lc3NhZ2UCCQCmCAEJARN2YWx1ZU9yRXJyb3JNZXNzYWdlAgkAoggBCQEDYWRhAAIJbm8gYWRkb25zAhphZGRvbiBhZGRyZXNzIGluIG5vdCB2YWxpZAQFY2hlY2sJAP0HBAUNYWRkb25Db250cmFjdAISZW5zdXJlQ2FuUHV0T25lVGtuCQDMCAIJAKUIAQULdXNlckFkZHJlc3MFA25pbAUDbmlsAwkAAAIFBWNoZWNrBQVjaGVjawMDAwMJAGcCAAAFCHNsaXBwYWdlBgkAZwIAAAULYW1Bc3NldFBhcnQGCQBnAgAABQtwckFzc2V0UGFydAYJAGcCAAAFBW91dExwCQACAQIMV3JvbmcgcGFyYW1zAwkBAiE9AgkAkAMBCAUBaQhwYXltZW50cwABCQACAQILMSBwbW50IGV4cGQEA3BtdAkBBXZhbHVlAQkAkQMCCAUBaQhwYXltZW50cwAABApwbXRBc3NldElkCQDYBAEJAQV2YWx1ZQEIBQNwbXQHYXNzZXRJZAQGcG10QW10CAUDcG10BmFtb3VudAMJAGYCAICt4gQFBnBtdEFtdAkAAgECDVdyb25nIHBtdCBhbXQECWFtQmFsYW5jZQkBDWdldEFjY0JhbGFuY2UBBQRhbUlkBAlwckJhbGFuY2UJAQ1nZXRBY2NCYWxhbmNlAQUEcHJJZAQNJHQwMjQ4NTkyNTQzNQMJAAACBQpwbXRBc3NldElkBQRhbUlkAwMJAGYCBQZwbXRBbXQFCWFtQmFsYW5jZQYJAGYCBQthbUFzc2V0UGFydAUGcG10QW10CQACAQIWaW52YWxpZCBwYXltZW50IGFtb3VudAkAmAoGCQBlAgUJYW1CYWxhbmNlBQZwbXRBbXQFCXByQmFsYW5jZQkAZQIFBnBtdEFtdAULYW1Bc3NldFBhcnQFC3ByQXNzZXRQYXJ0AAAAAAMJAAACBQpwbXRBc3NldElkBQRwcklkAwMJAGYCBQZwbXRBbXQFCXByQmFsYW5jZQYJAGYCBQtwckFzc2V0UGFydAUGcG10QW10CQACAQIWaW52YWxpZCBwYXltZW50IGFtb3VudAkAmAoGBQlhbUJhbGFuY2UJAGUCBQlwckJhbGFuY2UFBnBtdEFtdAAAAAAJAGUCBQZwbXRBbXQFC3ByQXNzZXRQYXJ0BQthbUFzc2V0UGFydAkAAgECEHdyb25nIHBtdEFzc2V0SWQEDGFtQmFsYW5jZU5vdwgFDSR0MDI0ODU5MjU0MzUCXzEEDHByQmFsYW5jZU5vdwgFDSR0MDI0ODU5MjU0MzUCXzIEDHZpcnRTd2FwSW5BbQgFDSR0MDI0ODU5MjU0MzUCXzMEDXZpcnRTd2FwT3V0UHIIBQ0kdDAyNDg1OTI1NDM1Al80BAx2aXJ0U3dhcEluUHIIBQ0kdDAyNDg1OTI1NDM1Al81BA12aXJ0U3dhcE91dEFtCAUNJHQwMjQ4NTkyNTQzNQJfNgQCRDAJAPwHBAUHZ3d4Q250cgIFY2FsY0QJAMwIAgkApAMBBQxhbUJhbGFuY2VOb3cJAMwIAgkApAMBBQxwckJhbGFuY2VOb3cJAMwIAgUBQQkAzAgCBQVBbXVsdAkAzAgCBQVEY29udgUDbmlsBQNuaWwEAkQxCQD8BwQFB2d3eENudHICBWNhbGNECQDMCAIJAKYDAQkAtgIBCQBlAgkAZAIFDGFtQmFsYW5jZU5vdwUMdmlydFN3YXBJbkFtBQ12aXJ0U3dhcE91dEFtCQDMCAIJAKYDAQkAtgIBCQBlAgkAZAIFDHByQmFsYW5jZU5vdwUMdmlydFN3YXBJblByBQ12aXJ0U3dhcE91dFByCQDMCAIFAUEJAMwIAgUFQW11bHQJAMwIAgUFRGNvbnYFA25pbAUDbmlsBAZEMHZzRDEJAQJ2ZAMJAKcDAQkBA3N0cgEFAkQxCQCnAwEJAQNzdHIBBQJEMAUKc2xpcHBhZ2U0RAMJAAACBQZEMHZzRDEFBkQwdnNEMQQGZXN0UHV0CQECY3AJCQClCAEIBQFpBmNhbGxlcgkA2AQBCAUBaQ10cmFuc2FjdGlvbklkCQEPQXR0YWNoZWRQYXltZW50AgkA2QQBBQRhbUlkBQthbUFzc2V0UGFydAkBD0F0dGFjaGVkUGF5bWVudAIJANkEAQUEcHJJZAULcHJBc3NldFBhcnQFCHNsaXBwYWdlBgYFBnBtdEFtdAUKcG10QXNzZXRJZAQHZXN0aW1MUAgFBmVzdFB1dAJfMgQJbHBBc3NldElkCAUGZXN0UHV0Al83BAVzdGF0ZQgFBmVzdFB1dAJfOQQGYW1EaWZmCAUGZXN0UHV0A18xMAQGcHJEaWZmCAUGZXN0UHV0A18xMQQJbHBDYWxjUmVzCQEDdmFkAwkAtgIBBQdlc3RpbUxQCQC2AgEFBW91dExwCQC2AgEFCHNsaXBwYWdlBAllbWl0THBBbXQJAKADAQgFCWxwQ2FsY1JlcwJfMgQBZQkA/AcEBQNmY2ECBGVtaXQJAMwIAgUJZW1pdExwQW10BQNuaWwFA25pbAMJAAACBQFlBQFlBAJlbAQHJG1hdGNoMAUBZQMJAAECBQckbWF0Y2gwAgdBZGRyZXNzBAZsZWdhY3kFByRtYXRjaDAJAPwHBAUGbGVnYWN5AgRlbWl0CQDMCAIFCWVtaXRMcEFtdAUDbmlsBQNuaWwFBHVuaXQDCQAAAgUCZWwFAmVsBAJzYQMJAGYCBQZhbURpZmYAAAkA/AcEBQhzbGlwQ250cgIDcHV0BQNuaWwJAMwIAgkBD0F0dGFjaGVkUGF5bWVudAIJANkEAQUEYW1JZAUGYW1EaWZmBQNuaWwFA25pbAMJAAACBQJzYQUCc2EEAnNwAwkAZgIFBnByRGlmZgAACQD8BwQFCHNsaXBDbnRyAgNwdXQFA25pbAkAzAgCCQEPQXR0YWNoZWRQYXltZW50AgkA2QQBBQRwcklkBQZwckRpZmYFA25pbAUDbmlsAwkAAAIFAnNwBQJzcAQIbHBUcm5zZnIDBQlhdXRvU3Rha2UEAnNzCQD8BwQFC3N0YWtpbmdDbnRyAgVzdGFrZQUDbmlsCQDMCAIJAQ9BdHRhY2hlZFBheW1lbnQCBQlscEFzc2V0SWQFCWVtaXRMcEFtdAUDbmlsAwkAAAIFAnNzBQJzcwUDbmlsCQACAQIkU3RyaWN0IHZhbHVlIGlzIG5vdCBlcXVhbCB0byBpdHNlbGYuCQDMCAIJAQ5TY3JpcHRUcmFuc2ZlcgMIBQFpBmNhbGxlcgUJZW1pdExwQW10BQlscEFzc2V0SWQFA25pbAkAzggCBQVzdGF0ZQUIbHBUcm5zZnIJAAIBAiRTdHJpY3QgdmFsdWUgaXMgbm90IGVxdWFsIHRvIGl0c2VsZi4JAAIBAiRTdHJpY3QgdmFsdWUgaXMgbm90IGVxdWFsIHRvIGl0c2VsZi4JAAIBAiRTdHJpY3QgdmFsdWUgaXMgbm90IGVxdWFsIHRvIGl0c2VsZi4JAAIBAiRTdHJpY3QgdmFsdWUgaXMgbm90IGVxdWFsIHRvIGl0c2VsZi4JAAIBAiRTdHJpY3QgdmFsdWUgaXMgbm90IGVxdWFsIHRvIGl0c2VsZi4JAAIBAiRTdHJpY3QgdmFsdWUgaXMgbm90IGVxdWFsIHRvIGl0c2VsZi4BaQELcHV0T25lVGtuVjIDBW91dExwCHNsaXBwYWdlCWF1dG9TdGFrZQQDY2ZnCQEDZ2ZjAAQLc3Rha2luZ0NudHIJARN2YWx1ZU9yRXJyb3JNZXNzYWdlAgkApggBCQCRAwIFA2NmZwUPaWR4RmFjdFN0YWtDbnRyAgpXciBzdCBhZGRyBAhzbGlwQ250cgkBE3ZhbHVlT3JFcnJvck1lc3NhZ2UCCQCmCAEJAJEDAgUDY2ZnBRBpZHhGYWN0U2xpcHBDbnRyAgpXciBzbCBhZGRyBAdnd3hDbnRyCQETdmFsdWVPckVycm9yTWVzc2FnZQIJAKYIAQkAkQMCBQNjZmcFEWlkeEZhY3RHd3hSZXdDbnRyAgtXciBnd3ggYWRkcgQHcG9vbENmZwkBA2dwYwAEBGFtSWQJAJEDAgUHcG9vbENmZwUJaWR4QW1Bc0lkBARwcklkCQCRAwIFB3Bvb2xDZmcFCWlkeFByQXNJZAQFYW1EY20JAQ1wYXJzZUludFZhbHVlAQkAkQMCBQdwb29sQ2ZnBQtpZHhBbXRBc0RjbQQFcHJEY20JAQ1wYXJzZUludFZhbHVlAQkAkQMCBQdwb29sQ2ZnBQ1pZHhQcmljZUFzRGNtBAVhZGRvbgkBC3ZhbHVlT3JFbHNlAgkAnQgCBQR0aGlzCQEDYWRhAAIABAt1c2VyQWRkcmVzcwMJAAACBQVhZGRvbgkApQgBCAUBaQZjYWxsZXIIBQFpDG9yaWdpbkNhbGxlcggFAWkGY2FsbGVyAwkBAiE9AgkAkAMBCAUBaQhwYXltZW50cwABCQACAQILMSBwbW50IGV4cGQEA3BtdAkBBXZhbHVlAQkAkQMCCAUBaQhwYXltZW50cwAABApwbXRBc3NldElkCQDYBAEJAQV2YWx1ZQEIBQNwbXQHYXNzZXRJZAQGcG10QW10CAUDcG10BmFtb3VudAMJAGYCAICt4gQFBnBtdEFtdAkAAgECDVdyb25nIHBtdCBhbXQECWFtQmFsYW5jZQkBDWdldEFjY0JhbGFuY2UBBQRhbUlkBAlwckJhbGFuY2UJAQ1nZXRBY2NCYWxhbmNlAQUEcHJJZAQNJHQwMjg2MjgyOTAxNgMJAAACBQpwbXRBc3NldElkBQRhbUlkAwkAZgIFBnBtdEFtdAUJYW1CYWxhbmNlCQACAQIWaW52YWxpZCBwYXltZW50IGFtb3VudAkAlAoCCQBlAgUJYW1CYWxhbmNlBQZwbXRBbXQFCXByQmFsYW5jZQMJAAACBQpwbXRBc3NldElkBQRwcklkAwkAZgIFBnBtdEFtdAUJcHJCYWxhbmNlCQACAQIWaW52YWxpZCBwYXltZW50IGFtb3VudAkAlAoCBQlhbUJhbGFuY2UJAGUCBQlwckJhbGFuY2UFBnBtdEFtdAkAAgECEHdyb25nIHBtdEFzc2V0SWQEDGFtQmFsYW5jZU5vdwgFDSR0MDI4NjI4MjkwMTYCXzEEDHByQmFsYW5jZU5vdwgFDSR0MDI4NjI4MjkwMTYCXzIEDSR0MDI5MDIyMjkxNTYDCQAAAgUKcG10QXNzZXRJZAUEYW1JZAkAlAoCBQxhbUJhbGFuY2VOb3cFDHByQmFsYW5jZU5vdwkAlAoCBQxwckJhbGFuY2VOb3cFDGFtQmFsYW5jZU5vdwQQYW1CYWxhbmNlRm9yQ2FsYwgFDSR0MDI5MDIyMjkxNTYCXzEEEHByQmFsYW5jZUZvckNhbGMIBQ0kdDAyOTAyMjI5MTU2Al8yBAp4UHJlY2lzaW9uAAEEBnJlc3VsdAoAAUAJAPwHBAUHZ3d4Q250cgIMY2FsY1B1dFhPbmx5CQDMCAIJAKQDAQUGcG10QW10CQDMCAIJAKQDAQUQYW1CYWxhbmNlRm9yQ2FsYwkAzAgCCQCkAwEFEHByQmFsYW5jZUZvckNhbGMJAMwIAgIACQDMCAIFAUEJAMwIAgUFQW11bHQJAMwIAgkApAMBBQp4UHJlY2lzaW9uCQDMCAIFBURjb252BQNuaWwFA25pbAMJAAECBQFAAgooSW50LCBJbnQpBQFACQACAQkArAICCQADAQkA/AcEBQdnd3hDbnRyAgxjYWxjUHV0WE9ubHkJAMwIAgkApAMBBQZwbXRBbXQJAMwIAgkApAMBBRBhbUJhbGFuY2VGb3JDYWxjCQDMCAIJAKQDAQUQcHJCYWxhbmNlRm9yQ2FsYwkAzAgCAgAJAMwIAgUBQQkAzAgCBQVBbXVsdAkAzAgCCQCkAwEFCnhQcmVjaXNpb24JAMwIAgUFRGNvbnYFA25pbAUDbmlsAh8gY291bGRuJ3QgYmUgY2FzdCB0byAoSW50LCBJbnQpBA0kdDAyOTY0NTI5NzQxAwkAAAIFCnBtdEFzc2V0SWQFBGFtSWQFBnJlc3VsdAkAlAoCCAUGcmVzdWx0Al8yCAUGcmVzdWx0Al8xBAthbUFzc2V0UGFydAgFDSR0MDI5NjQ1Mjk3NDECXzEEC3ByQXNzZXRQYXJ0CAUNJHQwMjk2NDUyOTc0MQJfMgQGZXN0UHV0CQECY3AJCQClCAEIBQFpBmNhbGxlcgkA2AQBCAUBaQ10cmFuc2FjdGlvbklkCQEPQXR0YWNoZWRQYXltZW50AgkA2QQBBQRhbUlkBQthbUFzc2V0UGFydAkBD0F0dGFjaGVkUGF5bWVudAIJANkEAQUEcHJJZAULcHJBc3NldFBhcnQFCHNsaXBwYWdlBgYFBnBtdEFtdAUKcG10QXNzZXRJZAQHZXN0aW1MUAgFBmVzdFB1dAJfMgQJbHBBc3NldElkCAUGZXN0UHV0Al83BAVzdGF0ZQgFBmVzdFB1dAJfOQQGYW1EaWZmCAUGZXN0UHV0A18xMAQGcHJEaWZmCAUGZXN0UHV0A18xMQQJZW1pdExwQW10AwkAZgIFBW91dExwAAAECWxwQ2FsY1JlcwkBA3ZhZAMJALYCAQUHZXN0aW1MUAkAtgIBBQVvdXRMcAkAtgIBBQhzbGlwcGFnZQkAoAMBCAUJbHBDYWxjUmVzAl8yBQdlc3RpbUxQBAFlCQD8BwQFA2ZjYQIEZW1pdAkAzAgCBQllbWl0THBBbXQFA25pbAUDbmlsAwkAAAIFAWUFAWUEAmVsBAckbWF0Y2gwBQFlAwkAAQIFByRtYXRjaDACB0FkZHJlc3MEBmxlZ2FjeQUHJG1hdGNoMAkA/AcEBQZsZWdhY3kCBGVtaXQJAMwIAgUJZW1pdExwQW10BQNuaWwFA25pbAUEdW5pdAMJAAACBQJlbAUCZWwEAnNhAwkAZgIFBmFtRGlmZgAACQD8BwQFCHNsaXBDbnRyAgNwdXQFA25pbAkAzAgCCQEPQXR0YWNoZWRQYXltZW50AgkA2QQBBQRhbUlkBQZhbURpZmYFA25pbAUDbmlsAwkAAAIFAnNhBQJzYQQCc3ADCQBmAgUGcHJEaWZmAAAJAPwHBAUIc2xpcENudHICA3B1dAUDbmlsCQDMCAIJAQ9BdHRhY2hlZFBheW1lbnQCCQDZBAEFBHBySWQFBnByRGlmZgUDbmlsBQNuaWwDCQAAAgUCc3AFAnNwBAhscFRybnNmcgMFCWF1dG9TdGFrZQQCc3MJAPwHBAULc3Rha2luZ0NudHICBXN0YWtlBQNuaWwJAMwIAgkBD0F0dGFjaGVkUGF5bWVudAIFCWxwQXNzZXRJZAUJZW1pdExwQW10BQNuaWwDCQAAAgUCc3MFAnNzBQNuaWwJAAIBAiRTdHJpY3QgdmFsdWUgaXMgbm90IGVxdWFsIHRvIGl0c2VsZi4JAMwIAgkBDlNjcmlwdFRyYW5zZmVyAwgFAWkGY2FsbGVyBQllbWl0THBBbXQFCWxwQXNzZXRJZAUDbmlsCQDOCAIFBXN0YXRlBQhscFRybnNmcgkAAgECJFN0cmljdCB2YWx1ZSBpcyBub3QgZXF1YWwgdG8gaXRzZWxmLgkAAgECJFN0cmljdCB2YWx1ZSBpcyBub3QgZXF1YWwgdG8gaXRzZWxmLgkAAgECJFN0cmljdCB2YWx1ZSBpcyBub3QgZXF1YWwgdG8gaXRzZWxmLgkAAgECJFN0cmljdCB2YWx1ZSBpcyBub3QgZXF1YWwgdG8gaXRzZWxmLgFpAQpwdXRGb3JGcmVlAQdtYXhTbHBnAwkAZgIAAAUHbWF4U2xwZwkAAgECCldyb25nIHNscGcDCQECIT0CCQCQAwEIBQFpCHBheW1lbnRzAAIJAAIBAgwyIHBtbnRzIGV4cGQEBmVzdFB1dAkBAmNwCQkApQgBCAUBaQZjYWxsZXIJANgEAQgFAWkNdHJhbnNhY3Rpb25JZAkBD0F0dGFjaGVkUGF5bWVudAIICQEFdmFsdWUBCQCRAwIIBQFpCHBheW1lbnRzAAAHYXNzZXRJZAgJAQV2YWx1ZQEJAJEDAggFAWkIcGF5bWVudHMAAAZhbW91bnQJAJEDAggFAWkIcGF5bWVudHMAAQUHbWF4U2xwZwcHAAACAAgFBmVzdFB1dAJfOQFpAQNnZXQABAFyCQECY2cBBQFpBAlvdXRBbXRBbXQIBQFyAl8xBAhvdXRQckFtdAgFAXICXzIEBnBtdEFtdAgFAXICXzMECnBtdEFzc2V0SWQIBQFyAl80BAVzdGF0ZQgFAXICXzUEAWIJAPwHBAUDZmNhAgRidXJuCQDMCAIFBnBtdEFtdAUDbmlsCQDMCAIJAQ9BdHRhY2hlZFBheW1lbnQCBQpwbXRBc3NldElkBQZwbXRBbXQFA25pbAMJAAACBQFiBQFiBQVzdGF0ZQkAAgECJFN0cmljdCB2YWx1ZSBpcyBub3QgZXF1YWwgdG8gaXRzZWxmLgFpAQlnZXRPbmVUa24FCmV4Y2hSZXN1bHQHbm90VXNlZAlvdXRBbW91bnQKb3V0QXNzZXRJZAhzbGlwcGFnZQMJAQIhPQIJAJADAQgFAWkIcGF5bWVudHMAAQkAAgECCzEgcG1udCBleHBkBANjZmcJAQNncGMABARscElkCQCRAwIFA2NmZwUJaWR4TFBBc0lkBARhbUlkCQCRAwIFA2NmZwUJaWR4QW1Bc0lkBARwcklkCQCRAwIFA2NmZwUJaWR4UHJBc0lkBAVhbURjbQkBDXBhcnNlSW50VmFsdWUBCQCRAwIFA2NmZwULaWR4QW10QXNEY20EBXByRGNtCQENcGFyc2VJbnRWYWx1ZQEJAJEDAgUDY2ZnBQ1pZHhQcmljZUFzRGNtBANzdHMJAJEDAgUDY2ZnBQlpZHhQb29sU3QEB2ZhY3RDZmcJAQNnZmMABAdnd3hDbnRyCQETdmFsdWVPckVycm9yTWVzc2FnZQIJAKYIAQkAkQMCBQdmYWN0Q2ZnBRFpZHhGYWN0R3d4UmV3Q250cgIKV3Igc2wgYWRkcgQDcG10CQEFdmFsdWUBCQCRAwIIBQFpCHBheW1lbnRzAAAEBWFkZG9uCQELdmFsdWVPckVsc2UCCQCdCAIFBHRoaXMJAQNhZGEAAgAEC3VzZXJBZGRyZXNzAwkAAAIFBWFkZG9uCQClCAEIBQFpBmNhbGxlcggFAWkMb3JpZ2luQ2FsbGVyCAUBaQZjYWxsZXIEBnR4SWQ1OAkA2AQBCAUBaQ10cmFuc2FjdGlvbklkBApwbXRBc3NldElkCQEFdmFsdWUBCAUDcG10B2Fzc2V0SWQEBnBtdEFtdAgFA3BtdAZhbW91bnQEDWFkZG9uQ29udHJhY3QJARN2YWx1ZU9yRXJyb3JNZXNzYWdlAgkApggBCQETdmFsdWVPckVycm9yTWVzc2FnZQIJAKIIAQkBA2FkYQACCW5vIGFkZG9ucwIaYWRkb24gYWRkcmVzcyBpbiBub3QgdmFsaWQEBWNoZWNrCQD9BwQFDWFkZG9uQ29udHJhY3QCEmVuc3VyZUNhbkdldE9uZVRrbgkAzAgCCQClCAEFC3VzZXJBZGRyZXNzBQNuaWwFA25pbAMJAAACBQVjaGVjawUFY2hlY2sDCQBmAgCAlOvcAwUGcG10QW10CQACAQINTWluIHBtdCAxMCBMUAMDAwkAZgIAAAUIc2xpcHBhZ2UGCQBmAgAABQpleGNoUmVzdWx0BgkAZgIAAAUJb3V0QW1vdW50CQACAQIMV3JvbmcgcGFyYW1zAwkBAiE9AgUEbHBJZAkA2AQBBQpwbXRBc3NldElkCQACAQIIV3JvbmcgTFAEAXIJAQNlZ28ECQDYBAEIBQFpDXRyYW5zYWN0aW9uSWQJANgEAQUKcG10QXNzZXRJZAUGcG10QW10CAUBaQZjYWxsZXIECmVzdGltQW1BbXQIBQFyAl8xBAplc3RpbVByQW10CAUBcgJfMgQJYW1CYWxhbmNlCQENZ2V0QWNjQmFsYW5jZQEFBGFtSWQECXByQmFsYW5jZQkBDWdldEFjY0JhbGFuY2UBBQRwcklkBA0kdDAzNDE1NTM0NjEyAwkAAAIFCm91dEFzc2V0SWQFBGFtSWQJAJkKBwkAZQIFCWFtQmFsYW5jZQUKZXN0aW1BbUFtdAkAZQIFCXByQmFsYW5jZQUKZXN0aW1QckFtdAUKZXhjaFJlc3VsdAUKZXN0aW1QckFtdAAAAAAJAGQCBQplc3RpbUFtQW10BQpleGNoUmVzdWx0AwkAAAIFCm91dEFzc2V0SWQFBHBySWQJAJkKBwkAZQIFCWFtQmFsYW5jZQUKZXN0aW1BbUFtdAkAZQIFCXByQmFsYW5jZQUKZXN0aW1QckFtdAAAAAAFCmV4Y2hSZXN1bHQFCmVzdGltQW1BbXQJAGQCBQplc3RpbVByQW10BQpleGNoUmVzdWx0CQACAQIQd3Jvbmcgb3V0QXNzZXRJZAQMYW1CYWxhbmNlTm93CAUNJHQwMzQxNTUzNDYxMgJfMQQMcHJCYWxhbmNlTm93CAUNJHQwMzQxNTUzNDYxMgJfMgQMdmlydFN3YXBJbkFtCAUNJHQwMzQxNTUzNDYxMgJfMwQNdmlydFN3YXBPdXRQcggFDSR0MDM0MTU1MzQ2MTICXzQEDHZpcnRTd2FwSW5QcggFDSR0MDM0MTU1MzQ2MTICXzUEDXZpcnRTd2FwT3V0QW0IBQ0kdDAzNDE1NTM0NjEyAl82BAh0b3RhbEdldAgFDSR0MDM0MTU1MzQ2MTICXzcDAwkAZgIAAAUMdmlydFN3YXBJbkFtBgkAZgIAAAUMdmlydFN3YXBJblByCQACAQIKV3JvbmcgY2FsYwQCRDAJAPwHBAUHZ3d4Q250cgIFY2FsY0QJAMwIAgkApAMBBQxhbUJhbGFuY2VOb3cJAMwIAgkApAMBBQxwckJhbGFuY2VOb3cJAMwIAgUBQQkAzAgCBQVBbXVsdAkAzAgCBQVEY29udgUDbmlsBQNuaWwEAkQxCQD8BwQFB2d3eENudHICBWNhbGNECQDMCAIJAKQDAQkAZAIJAGUCBQxhbUJhbGFuY2VOb3cFDHZpcnRTd2FwSW5BbQUNdmlydFN3YXBPdXRBbQkAzAgCCQCkAwEJAGUCCQBkAgUMcHJCYWxhbmNlTm93BQ12aXJ0U3dhcE91dFByBQx2aXJ0U3dhcEluUHIJAMwIAgUBQQkAzAgCBQVBbXVsdAkAzAgCBQVEY29udgUDbmlsBQNuaWwEBkQwdnNEMQkBAnZkAwkApwMBCQEDc3RyAQUCRDEJAKcDAQkBA3N0cgEFAkQwBQpzbGlwcGFnZTREAwkAAAIFBkQwdnNEMQUGRDB2c0QxBAhmaW5hbFJlcwkBA3ZhZAMJALYCAQUIdG90YWxHZXQJALYCAQUJb3V0QW1vdW50CQC2AgEFCHNsaXBwYWdlAwkAAAIFCGZpbmFsUmVzBQhmaW5hbFJlcwQNJHQwMzUzMTczNTQyMQMJAAACBQpvdXRBc3NldElkBQRhbUlkCQCUCgIJAKADAQgFCGZpbmFsUmVzAl8yAAAJAJQKAgAACQCgAwEIBQhmaW5hbFJlcwJfMgQFb3V0QW0IBQ0kdDAzNTMxNzM1NDIxAl8xBAVvdXRQcggFDSR0MDM1MzE3MzU0MjECXzIECGN1clByWDE4CQEEY3BiaQIJAQJ0MQIFCXByQmFsYW5jZQUFcHJEY20JAQJ0MQIFCWFtQmFsYW5jZQUFYW1EY20EBWN1clByCQECZjECBQhjdXJQclgxOAUGc2NhbGU4BAVzdGF0ZQkAzAgCCQEOU2NyaXB0VHJhbnNmZXIDBQt1c2VyQWRkcmVzcwkAZAIFBW91dEFtBQVvdXRQcgMJAAACBQpvdXRBc3NldElkAgVXQVZFUwUEdW5pdAkA2QQBBQpvdXRBc3NldElkCQDMCAIJAQtTdHJpbmdFbnRyeQIJAQNnYXUCCQClCAEFC3VzZXJBZGRyZXNzBQZ0eElkNTgJARFkYXRhR2V0QWN0aW9uSW5mbwYFBW91dEFtBQVvdXRQcgUGcG10QW10BQVjdXJQcgUGaGVpZ2h0CAUJbGFzdEJsb2NrCXRpbWVzdGFtcAkAzAgCCQEMSW50ZWdlckVudHJ5AgkBAnBsAAUFY3VyUHIJAMwIAgkBDEludGVnZXJFbnRyeQIJAQJwaAIFBmhlaWdodAgFCWxhc3RCbG9jawl0aW1lc3RhbXAFBWN1clByBQNuaWwDCQAAAgUFc3RhdGUFBXN0YXRlBARidXJuCQD8BwQFA2ZjYQIEYnVybgkAzAgCBQZwbXRBbXQFA25pbAkAzAgCCQEPQXR0YWNoZWRQYXltZW50AgUKcG10QXNzZXRJZAUGcG10QW10BQNuaWwDCQAAAgUEYnVybgUEYnVybgUFc3RhdGUJAAIBAiRTdHJpY3QgdmFsdWUgaXMgbm90IGVxdWFsIHRvIGl0c2VsZi4JAAIBAiRTdHJpY3QgdmFsdWUgaXMgbm90IGVxdWFsIHRvIGl0c2VsZi4JAAIBAiRTdHJpY3QgdmFsdWUgaXMgbm90IGVxdWFsIHRvIGl0c2VsZi4JAAIBAiRTdHJpY3QgdmFsdWUgaXMgbm90IGVxdWFsIHRvIGl0c2VsZi4JAAIBAiRTdHJpY3QgdmFsdWUgaXMgbm90IGVxdWFsIHRvIGl0c2VsZi4BaQELZ2V0T25lVGtuVjIDCW91dEFtb3VudApvdXRBc3NldElkCHNsaXBwYWdlAwkBAiE9AgkAkAMBCAUBaQhwYXltZW50cwABCQACAQILMSBwbW50IGV4cGQEA2NmZwkBA2dwYwAEBGxwSWQJAJEDAgUDY2ZnBQlpZHhMUEFzSWQEBGFtSWQJAJEDAgUDY2ZnBQlpZHhBbUFzSWQEBHBySWQJAJEDAgUDY2ZnBQlpZHhQckFzSWQEBWFtRGNtCQENcGFyc2VJbnRWYWx1ZQEJAJEDAgUDY2ZnBQtpZHhBbXRBc0RjbQQFcHJEY20JAQ1wYXJzZUludFZhbHVlAQkAkQMCBQNjZmcFDWlkeFByaWNlQXNEY20EA3N0cwkAkQMCBQNjZmcFCWlkeFBvb2xTdAQHZmFjdENmZwkBA2dmYwAEB2d3eENudHIJARN2YWx1ZU9yRXJyb3JNZXNzYWdlAgkApggBCQCRAwIFB2ZhY3RDZmcFEWlkeEZhY3RHd3hSZXdDbnRyAgpXciBzbCBhZGRyBANwbXQJAQV2YWx1ZQEJAJEDAggFAWkIcGF5bWVudHMAAAQFYWRkb24JAQt2YWx1ZU9yRWxzZQIJAJ0IAgUEdGhpcwkBA2FkYQACAAQLdXNlckFkZHJlc3MDCQAAAgUFYWRkb24JAKUIAQgFAWkGY2FsbGVyCAUBaQxvcmlnaW5DYWxsZXIIBQFpBmNhbGxlcgQGdHhJZDU4CQDYBAEIBQFpDXRyYW5zYWN0aW9uSWQECnBtdEFzc2V0SWQJAQV2YWx1ZQEIBQNwbXQHYXNzZXRJZAQGcG10QW10CAUDcG10BmFtb3VudAMJAGYCAICU69wDBQZwbXRBbXQJAAIBAg1NaW4gcG10IDEwIExQAwMJAGYCAAAFCHNsaXBwYWdlBgkAZgIAAAUJb3V0QW1vdW50CQACAQIMV3JvbmcgcGFyYW1zAwkBAiE9AgUEbHBJZAkA2AQBBQpwbXRBc3NldElkCQACAQIIV3JvbmcgTFAEAXIJAQNlZ28ECQDYBAEIBQFpDXRyYW5zYWN0aW9uSWQJANgEAQUKcG10QXNzZXRJZAUGcG10QW10CAUBaQZjYWxsZXIECmVzdGltQW1BbXQIBQFyAl8xBAplc3RpbVByQW10CAUBcgJfMgQJYW1CYWxhbmNlCQENZ2V0QWNjQmFsYW5jZQEFBGFtSWQECXByQmFsYW5jZQkBDWdldEFjY0JhbGFuY2UBBQRwcklkBAxhbUJhbGFuY2VOb3cJAGUCBQlhbUJhbGFuY2UFCmVzdGltQW1BbXQEDHByQmFsYW5jZU5vdwkAZQIFCXByQmFsYW5jZQUKZXN0aW1QckFtdAQNJHQwMzc2NzAzNzk0MQMJAAACBQpvdXRBc3NldElkBQRhbUlkCQCVCgMFDHByQmFsYW5jZU5vdwUMYW1CYWxhbmNlTm93BQplc3RpbVByQW10AwkAAAIFCm91dEFzc2V0SWQFBHBySWQJAJUKAwUMYW1CYWxhbmNlTm93BQxwckJhbGFuY2VOb3cFCmVzdGltQW1BbXQJAAIBAhB3cm9uZyBvdXRBc3NldElkBBRhbW91bnRCYWxhbmNlRm9yU3dhcAgFDSR0MDM3NjcwMzc5NDECXzEEE3ByaWNlQmFsYW5jZUZvclN3YXAIBQ0kdDAzNzY3MDM3OTQxAl8yBAxhbW91bnRUb1N3YXAIBQ0kdDAzNzY3MDM3OTQxAl8zBAp5UHJlY2lzaW9uAAEECmV4Y2hSZXN1bHQKAAFACQD8BwQFB2d3eENudHICDGNhbGNTd2FwWFRvWQkAzAgCCQCkAwEFDGFtb3VudFRvU3dhcAkAzAgCCQCkAwEFFGFtb3VudEJhbGFuY2VGb3JTd2FwCQDMCAIJAKQDAQUTcHJpY2VCYWxhbmNlRm9yU3dhcAkAzAgCAgAJAMwIAgUBQQkAzAgCBQVBbXVsdAkAzAgCCQCkAwEFCnlQcmVjaXNpb24JAMwIAgUFRGNvbnYFA25pbAUDbmlsAwkAAQIFAUACA0ludAUBQAkAAgEJAKwCAgkAAwEJAPwHBAUHZ3d4Q250cgIMY2FsY1N3YXBYVG9ZCQDMCAIJAKQDAQUMYW1vdW50VG9Td2FwCQDMCAIJAKQDAQUUYW1vdW50QmFsYW5jZUZvclN3YXAJAMwIAgkApAMBBRNwcmljZUJhbGFuY2VGb3JTd2FwCQDMCAICAAkAzAgCBQFBCQDMCAIFBUFtdWx0CQDMCAIJAKQDAQUKeVByZWNpc2lvbgkAzAgCBQVEY29udgUDbmlsBQNuaWwCGCBjb3VsZG4ndCBiZSBjYXN0IHRvIEludAQIdG90YWxHZXQDCQAAAgUKb3V0QXNzZXRJZAUEYW1JZAkAZAIFCmVzdGltQW1BbXQFCmV4Y2hSZXN1bHQJAGQCBQplc3RpbVByQW10BQpleGNoUmVzdWx0BAhmaW5hbFJlcwkBA3ZhZAMJALYCAQUIdG90YWxHZXQJALYCAQUJb3V0QW1vdW50CQC2AgEFCHNsaXBwYWdlAwkAAAIFCGZpbmFsUmVzBQhmaW5hbFJlcwQNJHQwMzg2MDkzODcxMwMJAAACBQpvdXRBc3NldElkBQRhbUlkCQCUCgIJAKADAQgFCGZpbmFsUmVzAl8yAAAJAJQKAgAACQCgAwEIBQhmaW5hbFJlcwJfMgQFb3V0QW0IBQ0kdDAzODYwOTM4NzEzAl8xBAVvdXRQcggFDSR0MDM4NjA5Mzg3MTMCXzIECGN1clByWDE4CQEEY3BiaQIJAQJ0MQIFCXByQmFsYW5jZQUFcHJEY20JAQJ0MQIFCWFtQmFsYW5jZQUFYW1EY20EBWN1clByCQECZjECBQhjdXJQclgxOAUGc2NhbGU4BAVzdGF0ZQkAzAgCCQEOU2NyaXB0VHJhbnNmZXIDBQt1c2VyQWRkcmVzcwkAZAIFBW91dEFtBQVvdXRQcgMJAAACBQpvdXRBc3NldElkAgVXQVZFUwUEdW5pdAkA2QQBBQpvdXRBc3NldElkCQDMCAIJAQtTdHJpbmdFbnRyeQIJAQNnYXUCCQClCAEFC3VzZXJBZGRyZXNzBQZ0eElkNTgJARFkYXRhR2V0QWN0aW9uSW5mbwYFBW91dEFtBQVvdXRQcgUGcG10QW10BQVjdXJQcgUGaGVpZ2h0CAUJbGFzdEJsb2NrCXRpbWVzdGFtcAkAzAgCCQEMSW50ZWdlckVudHJ5AgkBAnBsAAUFY3VyUHIJAMwIAgkBDEludGVnZXJFbnRyeQIJAQJwaAIFBmhlaWdodAgFCWxhc3RCbG9jawl0aW1lc3RhbXAFBWN1clByBQNuaWwDCQAAAgUFc3RhdGUFBXN0YXRlBARidXJuCQD8BwQFA2ZjYQIEYnVybgkAzAgCBQZwbXRBbXQFA25pbAkAzAgCCQEPQXR0YWNoZWRQYXltZW50AgUKcG10QXNzZXRJZAUGcG10QW10BQNuaWwDCQAAAgUEYnVybgUEYnVybgUFc3RhdGUJAAIBAiRTdHJpY3QgdmFsdWUgaXMgbm90IGVxdWFsIHRvIGl0c2VsZi4JAAIBAiRTdHJpY3QgdmFsdWUgaXMgbm90IGVxdWFsIHRvIGl0c2VsZi4JAAIBAiRTdHJpY3QgdmFsdWUgaXMgbm90IGVxdWFsIHRvIGl0c2VsZi4BaQEJZ2V0Tm9MZXNzAhJub0xlc3NUaGVuQW10QXNzZXQUbm9MZXNzVGhlblByaWNlQXNzZXQEAXIJAQJjZwEFAWkECG91dEFtQW10CAUBcgJfMQQIb3V0UHJBbXQIBQFyAl8yBAZwbXRBbXQIBQFyAl8zBApwbXRBc3NldElkCAUBcgJfNAQFc3RhdGUIBQFyAl81AwkAZgIFEm5vTGVzc1RoZW5BbXRBc3NldAUIb3V0QW1BbXQJAAIBCQCsAgIJAKwCAgkArAICAglGYWlsZWQ6ICAJAKQDAQUIb3V0QW1BbXQCAyA8IAkApAMBBRJub0xlc3NUaGVuQW10QXNzZXQDCQBmAgUUbm9MZXNzVGhlblByaWNlQXNzZXQFCG91dFByQW10CQACAQkArAICCQCsAgIJAKwCAgIIRmFpbGVkOiAJAKQDAQUIb3V0UHJBbXQCAyA8IAkApAMBBRRub0xlc3NUaGVuUHJpY2VBc3NldAQUYnVybkxQQXNzZXRPbkZhY3RvcnkJAPwHBAUDZmNhAgRidXJuCQDMCAIFBnBtdEFtdAUDbmlsCQDMCAIJAQ9BdHRhY2hlZFBheW1lbnQCBQpwbXRBc3NldElkBQZwbXRBbXQFA25pbAMJAAACBRRidXJuTFBBc3NldE9uRmFjdG9yeQUUYnVybkxQQXNzZXRPbkZhY3RvcnkFBXN0YXRlCQACAQIkU3RyaWN0IHZhbHVlIGlzIG5vdCBlcXVhbCB0byBpdHNlbGYuAWkBDXVuc3Rha2VBbmRHZXQBBmFtb3VudAQNY2hlY2tQYXltZW50cwMJAQIhPQIJAJADAQgFAWkIcGF5bWVudHMAAAkAAgECDU5vIHBtbnRzIGV4cGQGAwkAAAIFDWNoZWNrUGF5bWVudHMFDWNoZWNrUGF5bWVudHMEA2NmZwkBA2dwYwAECmZhY3RvcnlDZmcJAQNnZmMABAlscEFzc2V0SWQJANkEAQkAkQMCBQNjZmcFCWlkeExQQXNJZAQHc3Rha2luZwkBE3ZhbHVlT3JFcnJvck1lc3NhZ2UCCQCmCAEJAJEDAgUKZmFjdG9yeUNmZwUPaWR4RmFjdFN0YWtDbnRyAgpXciBzdCBhZGRyBAp1bnN0YWtlSW52CQD8BwQFB3N0YWtpbmcCB3Vuc3Rha2UJAMwIAgkA2AQBBQlscEFzc2V0SWQJAMwIAgUGYW1vdW50BQNuaWwFA25pbAMJAAACBQp1bnN0YWtlSW52BQp1bnN0YWtlSW52BAFyCQEDZWdvBAkA2AQBCAUBaQ10cmFuc2FjdGlvbklkCQDYBAEFCWxwQXNzZXRJZAUGYW1vdW50CAUBaQZjYWxsZXIEA3N0cwkBDXBhcnNlSW50VmFsdWUBCAUBcgJfOQQFc3RhdGUIBQFyA18xMAQBdgMDCQEDaWdzAAYJAAACBQNzdHMFDFBvb2xTaHV0ZG93bgkAAgEJAKwCAgIJQmxvY2tlZDogCQCkAwEFA3N0cwYDCQAAAgUBdgUBdgQFYnVybkEJAPwHBAUDZmNhAgRidXJuCQDMCAIFBmFtb3VudAUDbmlsCQDMCAIJAQ9BdHRhY2hlZFBheW1lbnQCBQlscEFzc2V0SWQFBmFtb3VudAUDbmlsAwkAAAIFBWJ1cm5BBQVidXJuQQUFc3RhdGUJAAIBAiRTdHJpY3QgdmFsdWUgaXMgbm90IGVxdWFsIHRvIGl0c2VsZi4JAAIBAiRTdHJpY3QgdmFsdWUgaXMgbm90IGVxdWFsIHRvIGl0c2VsZi4JAAIBAiRTdHJpY3QgdmFsdWUgaXMgbm90IGVxdWFsIHRvIGl0c2VsZi4JAAIBAiRTdHJpY3QgdmFsdWUgaXMgbm90IGVxdWFsIHRvIGl0c2VsZi4BaQEIYWN0aXZhdGUCCGFtdEFzU3RyB3ByQXNTdHIDCQECIT0CCQClCAEIBQFpBmNhbGxlcgkApQgBBQNmY2EJAAIBAgZkZW5pZWQJAJQKAgkAzAgCCQELU3RyaW5nRW50cnkCCQECYWEABQhhbXRBc1N0cgkAzAgCCQELU3RyaW5nRW50cnkCCQECcGEABQdwckFzU3RyBQNuaWwCB3N1Y2Nlc3MBaQEEc2V0UwIBawF2AwkBAiE9AgkApQgBCAUBaQZjYWxsZXIJAQRzdHJmAgUEdGhpcwkBA2FkYQAFAnBkCQDMCAIJAQtTdHJpbmdFbnRyeQIFAWsFAXYFA25pbAFpAQRzZXRJAgFrAXYDCQECIT0CCQClCAEIBQFpBmNhbGxlcgkBBHN0cmYCBQR0aGlzCQEDYWRhAAUCcGQJAMwIAgkBDEludGVnZXJFbnRyeQIFAWsFAXYFA25pbAFpARxnZXRQb29sQ29uZmlnV3JhcHBlclJFQURPTkxZAAkAlAoCBQNuaWwJAQNncGMAAWkBHGdldEFjY0JhbGFuY2VXcmFwcGVyUkVBRE9OTFkBB2Fzc2V0SWQJAJQKAgUDbmlsCQENZ2V0QWNjQmFsYW5jZQEFB2Fzc2V0SWQBaQEZY2FsY1ByaWNlc1dyYXBwZXJSRUFET05MWQMFYW1BbXQFcHJBbXQFbHBBbXQEAnByCQEKY2FsY1ByaWNlcwMFBWFtQW10BQVwckFtdAUFbHBBbXQJAJQKAgUDbmlsCQDMCAIJAKYDAQkAkQMCBQJwcgAACQDMCAIJAKYDAQkAkQMCBQJwcgABCQDMCAIJAKYDAQkAkQMCBQJwcgACBQNuaWwBaQEWZnJvbVgxOFdyYXBwZXJSRUFET05MWQIDdmFsDHJlc1NjYWxlTXVsdAkAlAoCBQNuaWwJAQJmMQIJAKcDAQUDdmFsBQxyZXNTY2FsZU11bHQBaQEUdG9YMThXcmFwcGVyUkVBRE9OTFkCB29yaWdWYWwNb3JpZ1NjYWxlTXVsdAkAlAoCBQNuaWwJAKYDAQkBAnQxAgUHb3JpZ1ZhbAUNb3JpZ1NjYWxlTXVsdAFpAR5jYWxjUHJpY2VCaWdJbnRXcmFwcGVyUkVBRE9OTFkCCHByQW10WDE4CGFtQW10WDE4CQCUCgIFA25pbAkApgMBCQEEY3BiaQIJAKcDAQUIcHJBbXRYMTgJAKcDAQUIYW1BbXRYMTgBaQEjZXN0aW1hdGVQdXRPcGVyYXRpb25XcmFwcGVyUkVBRE9OTFkJBnR4SWQ1OAhzbGlwcGFnZQdpbkFtQW10BmluQW1JZAdpblByQW10BmluUHJJZAd1c3JBZGRyBmlzRXZhbAZlbWl0THAJAJQKAgUDbmlsCQEDZXBvDAUGdHhJZDU4BQhzbGlwcGFnZQUHaW5BbUFtdAUGaW5BbUlkBQdpblByQW10BQZpblBySWQFB3VzckFkZHIFBmlzRXZhbAUGZW1pdExwBwAAAgABaQEjZXN0aW1hdGVHZXRPcGVyYXRpb25XcmFwcGVyUkVBRE9OTFkEBnR4SWQ1OAdwbXRBc0lkCHBtdExwQW10B3VzckFkZHIEAXIJAQNlZ28EBQZ0eElkNTgFB3BtdEFzSWQFCHBtdExwQW10CQERQGV4dHJOYXRpdmUoMTA2MikBBQd1c3JBZGRyCQCUCgIFA25pbAkAnAoKCAUBcgJfMQgFAXICXzIIBQFyAl8zCAUBcgJfNAgFAXICXzUIBQFyAl82CAUBcgJfNwkApgMBCAUBcgJfOAgFAXICXzkIBQFyA18xMAECdHgBBnZlcmlmeQAED3RhcmdldFB1YmxpY0tleQQHJG1hdGNoMAkBAW0AAwkAAQIFByRtYXRjaDACCkJ5dGVWZWN0b3IEAnBrBQckbWF0Y2gwBQJwawMJAAECBQckbWF0Y2gwAgRVbml0CAUCdHgPc2VuZGVyUHVibGljS2V5CQACAQILTWF0Y2ggZXJyb3IEByRtYXRjaDAFAnR4AwkAAQIFByRtYXRjaDACBU9yZGVyBAVvcmRlcgUHJG1hdGNoMAQKbWF0Y2hlclB1YgkBAm1wAAQKb3JkZXJWYWxpZAkBA21vYQEFBW9yZGVyBAtzZW5kZXJWYWxpZAkA9AMDCAUFb3JkZXIJYm9keUJ5dGVzCQCRAwIIBQVvcmRlcgZwcm9vZnMAAAgFBW9yZGVyD3NlbmRlclB1YmxpY0tleQQMbWF0Y2hlclZhbGlkCQD0AwMIBQVvcmRlcglib2R5Qnl0ZXMJAJEDAggFBW9yZGVyBnByb29mcwABBQptYXRjaGVyUHViAwMDBQpvcmRlclZhbGlkBQtzZW5kZXJWYWxpZAcFDG1hdGNoZXJWYWxpZAcGCQEDdG9lAwUKb3JkZXJWYWxpZAULc2VuZGVyVmFsaWQFDG1hdGNoZXJWYWxpZAMJAAECBQckbWF0Y2gwAhRTZXRTY3JpcHRUcmFuc2FjdGlvbgQBcwUHJG1hdGNoMAQHbmV3SGFzaAkA9gMBCQEFdmFsdWUBCAUBcwZzY3JpcHQEC2FsbG93ZWRIYXNoCQDbBAEJAQV2YWx1ZQEJAJ0IAgUDZmNhCQEca2V5QWxsb3dlZExwU3RhYmxlU2NyaXB0SGFzaAAEC2N1cnJlbnRIYXNoCQDxBwEFBHRoaXMDAwkAAAIFC2FsbG93ZWRIYXNoBQduZXdIYXNoCQECIT0CBQtjdXJyZW50SGFzaAUHbmV3SGFzaAcGCQD0AwMIBQJ0eAlib2R5Qnl0ZXMJAJEDAggFAnR4BnByb29mcwAABQ90YXJnZXRQdWJsaWNLZXkJAPQDAwgFAnR4CWJvZHlCeXRlcwkAkQMCCAUCdHgGcHJvb2ZzAAAFD3RhcmdldFB1YmxpY0tleaNSB1Q=", "height": 2226128, "applicationStatus": "succeeded", "spentComplexity": 0 } View: original | compacted Prev: J5Lh9MkQ91t9KECkv7tAdt17itVkLFbzdZMGejJ2G3RB Next: 3FHVSoK2YzRUsJoZnyKVb1Driz7hdpVUEgbC8LDBsFqe Diff:
OldNewDifferences
77
88 let c = toBigInt(1000000000000000000)
99
10-let d = 1000
10+let d = toBigInt(0)
1111
12-let e = toBigInt(0)
12+let e = toBigInt(1)
1313
14-let f = toBigInt(1)
14+let f = toBigInt((a - ((a * 1) / a)))
1515
16-let g = toBigInt((a - ((a * 1) / a)))
16+let g = "100"
1717
18-let h = "100"
18+let h = "1"
1919
20-let i = "1"
20+let i = "__"
2121
22-let j = "__"
22+let j = ""
2323
24-let k = ""
24+let k = 1
2525
26-let l = 1
26+let l = 2
2727
28-let m = 2
28+let m = 3
2929
30-let n = 3
30+let n = 4
3131
32-let o = 4
32+let o = 1
3333
34-let p = 1
34+let p = 2
3535
36-let q = 2
36+let q = 3
3737
38-let r = 3
38+let r = 4
3939
40-let s = 4
40+let s = 5
4141
42-let t = 5
42+let t = 6
4343
44-let u = 6
44+let u = 7
4545
46-let v = 7
46+let v = 8
4747
48-let w = 8
48+let w = 9
4949
50-let x = 9
50+let x = 1
5151
52-let y = 1
52+let y = 7
5353
54-let z = 7
54+let z = 10
5555
56-let A = 10
56+let A = "%s__delay"
5757
58-let B = 0
59-
60-func C (D,E) = fraction(toBigInt(D), c, toBigInt(E))
58+func B (C,D) = fraction(toBigInt(C), c, toBigInt(D))
6159
6260
63-func F (G,H) = toInt(fraction(G, toBigInt(H), c))
61+func E (F,G) = toInt(fraction(F, toBigInt(G), c))
6462
6563
66-func I (J,K,L) = fraction(J, K, L)
64+func H (I,J,K) = fraction(I, J, K)
6765
6866
69-func M (G) = if ((e > G))
70- then -(G)
71- else G
67+func L (F) = if ((d > F))
68+ then -(F)
69+ else F
7270
7371
74-func N () = "%s__factoryContract"
72+func M () = "%s__factoryContract"
7573
7674
77-func O () = "%s__managerPublicKey"
75+func N () = "%s__managerPublicKey"
7876
7977
80-func P () = "%s__pendingManagerPublicKey"
78+func O () = "%s__pendingManagerPublicKey"
8179
8280
83-func Q () = "%s%s__price__last"
81+func P () = "%s%s__price__last"
8482
8583
86-func R (S,T) = makeString(["%s%s%d%d__price__history", toString(S), toString(T)], j)
84+func Q (R,S) = makeString(["%s%s%d%d__price__history", toString(R), toString(S)], i)
8785
8886
89-func U (V,W) = ((("%s%s%s__P__" + V) + "__") + W)
87+func T (U,V) = ((("%s%s%s__P__" + U) + "__") + V)
9088
9189
92-func X (V,W) = ((("%s%s%s__G__" + V) + "__") + W)
90+func W (U,V) = ((("%s%s%s__G__" + U) + "__") + V)
9391
9492
95-func Y () = "%s__amountAsset"
93+func X () = "%s__amountAsset"
9694
9795
98-func Z () = "%s__priceAsset"
96+func Y () = "%s__priceAsset"
9997
10098
101-func aa () = "%s__amp"
99+func Z () = "%s__amp"
102100
103101
104-func ab () = "%s__addonAddr"
102+func aa () = "%s__addonAddr"
105103
106104
107-let ac = "%s__feePermille"
105+func ab (ac) = makeString(["%s%s__lastGetOneTknCall", ac], i)
108106
109-let ad = valueOrElse(getInteger(this, ac), B)
107+
108+func ad (ac) = makeString(["%s%s__lastPutOneTknCall", ac], i)
109+
110110
111111 func ae () = "%s__factoryConfig"
112112
126126 func am () = "%s__allowedLpStableScriptHash"
127127
128128
129-func an () = "%s__feeCollectorAddress"
129+func an (ao,ap,aq) = throw(((((("Failed: ordValid=" + toString(ao)) + " sndrValid=") + toString(ap)) + " mtchrValid=") + toString(aq)))
130130
131131
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"))
132+func ar (F) = {
133+ let as = F
134+ if ($isInstanceOf(as, "String"))
138135 then {
139- let au = at
140- au
136+ let at = as
137+ at
141138 }
142139 else throw("fail cast to String")
143140 }
144141
145142
146-func av (aw,ax) = valueOrErrorMessage(getString(aw, ax), makeString(["mandatory ", toString(aw), ".", ax, " not defined"], ""))
143+func au (av,aw) = valueOrErrorMessage(getString(av, aw), makeString(["mandatory ", toString(av), ".", aw, " not defined"], ""))
147144
148145
149-func ay (aw,ax) = valueOrErrorMessage(getInteger(aw, ax), makeString(["mandatory ", toString(aw), ".", ax, " not defined"], ""))
146+func ax (av,aw) = valueOrErrorMessage(getInteger(av, aw), makeString(["mandatory ", toString(av), ".", aw, " not defined"], ""))
150147
151148
152-let az = addressFromStringValue(av(this, N()))
149+let ay = addressFromStringValue(au(this, M()))
153150
154-let aA = av(this, aa())
151+let az = au(this, Z())
155152
156-func aB () = valueOrElse(getBoolean(az, al()), false)
153+func aA () = valueOrElse(getBoolean(ay, al()), false)
157154
158155
159-func aC () = fromBase58String(av(az, af()))
156+func aB () = fromBase58String(au(ay, af()))
160157
161158
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)
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)
170165 }
171166
172167
173-func aI () = split(av(az, ae()), j)
168+func aG () = split(au(ay, ae()), i)
174169
175170
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)
171+func aH (aI,aJ,aK,aL,aM,aN,aO,aP,aQ,aR) = makeString(["%d%d%d%d%d%d%d%d%d%d", toString(aI), toString(aJ), toString(aK), toString(aL), toString(aM), toString(aN), toString(aO), toString(aP), toString(aQ), toString(aR)], i)
177172
178173
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)
174+func aS (aT,aU,aV,aL,aO,aP) = makeString(["%d%d%d%d%d%d", toString(aT), toString(aU), toString(aV), toString(aL), toString(aO), toString(aP)], i)
180175
181176
182-func aY (aZ) = if ((aZ == "WAVES"))
177+func aW (aX) = if ((aX == "WAVES"))
183178 then wavesBalance(this).available
184- else assetBalance(this, fromBase58String(aZ))
179+ else assetBalance(this, fromBase58String(aX))
185180
186181
187-func ba (bb,bc) = fraction(bb, c, bc)
182+func aY (aZ,ba) = fraction(aZ, c, ba)
188183
189184
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]))
185+func bb (bc,bd,be) = {
186+ let bf = fraction((bc - bd), b, bd)
187+ let bg = ((be - L(bf)) > d)
188+ if (!(bg))
189+ then throw(("Big slpg: " + toString(bf)))
190+ else $Tuple2(bg, min([bc, bd]))
196191 }
197192
198193
199-func bj (bk,bl,bm) = {
200- let bh = fraction(bl, b, bk)
201- let bn = (bm > bh)
202- if (if (bn)
194+func bh (bi,bj,bk) = {
195+ let bf = fraction(bj, b, bi)
196+ let bl = (bk > bf)
197+ if (if (bl)
203198 then true
204- else (bl > bk))
205- then throw(((((((toString(bl) + " ") + toString(bk)) + " ") + toString(bh)) + " ") + toString(bm)))
206- else bn
199+ else (bj > bi))
200+ then throw(((((((toString(bj) + " ") + toString(bi)) + " ") + toString(bf)) + " ") + toString(bk)))
201+ else bl
207202 }
208203
209204
210-func bo (bp,bq,br,bs) = {
211- let bt = C(br, bp)
212- let bu = C(bs, bq)
213- ba(bu, bt)
205+func bm (bn,bo,bp,bq) = {
206+ let br = B(bp, bn)
207+ let bs = B(bq, bo)
208+ aY(bs, br)
214209 }
215210
216211
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]
212+func bt (bp,bq,bu) = {
213+ let bv = aC()
214+ let bw = parseIntValue(bv[t])
215+ let bx = parseIntValue(bv[u])
216+ let by = bm(bw, bx, bp, bq)
217+ let ba = B(bp, bw)
218+ let aZ = B(bq, bx)
219+ let bz = B(bu, a)
220+ let bA = aY(ba, bz)
221+ let bB = aY(aZ, bz)
222+[by, bA, bB]
228223 }
229224
230225
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)]
226+func bC (bp,bq,bu) = {
227+ let bD = bt(bp, bq, bu)
228+[E(bD[0], a), E(bD[1], a), E(bD[2], a)]
234229 }
235230
236231
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))
232+func bE (bF,bG,bH,bI) = {
233+ let bv = aC()
234+ let bJ = bv[q]
235+ let bK = bv[r]
236+ let bL = bv[s]
237+ let bM = parseIntValue(bv[t])
238+ let bN = parseIntValue(bv[u])
239+ let bO = bv[p]
240+ let bP = valueOrErrorMessage(assetInfo(fromBase58String(bJ)), "Wrong LP id").quantity
241+ if ((bJ != bG))
247242 then throw("Wrong pmt asset")
248243 else {
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 == ""))
244+ let bQ = aW(bK)
245+ let bR = B(bQ, bM)
246+ let bS = aW(bL)
247+ let bT = B(bS, bN)
248+ let bU = aY(bT, bR)
249+ let bV = E(bU, a)
250+ let bW = B(bH, a)
251+ let bX = B(bP, a)
252+ let bY = fraction(bR, bW, bX)
253+ let bZ = fraction(bT, bW, bX)
254+ let ca = E(bY, bM)
255+ let cb = E(bZ, bN)
256+ let cc = if ((bF == ""))
262257 then nil
263- else [ScriptTransfer(bK, cc, if ((bM == "WAVES"))
258+ else [ScriptTransfer(bI, ca, if ((bK == "WAVES"))
264259 then unit
265- else fromBase58String(bM)), ScriptTransfer(bK, cd, if ((bN == "WAVES"))
260+ else fromBase58String(bK)), ScriptTransfer(bI, cb, if ((bL == "WAVES"))
266261 then unit
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)
262+ else fromBase58String(bL)), StringEntry(W(toString(bI), bF), aS(ca, cb, bH, bV, height, lastBlock.timestamp)), IntegerEntry(P(), bV), IntegerEntry(Q(height, lastBlock.timestamp), bV)]
263+ $Tuple10(ca, cb, bK, bL, bQ, bS, bP, bU, bO, cc)
269264 }
270265 }
271266
272267
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)
268+func cd (bF,be,ce,cf,cg,ch,bI,ci,cj,ck,cl,cm) = {
269+ let bv = aC()
270+ let bJ = fromBase58String(bv[q])
271+ let cn = bv[r]
272+ let co = bv[s]
273+ let cp = bv[v]
274+ let cq = bv[w]
275+ let cr = parseIntValue(bv[t])
276+ let cs = parseIntValue(bv[u])
277+ let bO = bv[p]
278+ let ct = valueOrErrorMessage(assetInfo(bJ), "Wr lp as").quantity
279+ let bQ = if (ci)
280+ then aW(cn)
281+ else if (if (ck)
282+ then (cm == cn)
288283 else false)
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)
284+ then (aW(cn) - cl)
285+ else if (ck)
286+ then aW(cn)
287+ else (aW(cn) - ce)
288+ let bS = if (ci)
289+ then aW(co)
290+ else if (if (ck)
291+ then (cm == co)
297292 else false)
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))
293+ then (aW(co) - cl)
294+ else if (ck)
295+ then aW(co)
296+ else (aW(co) - cg)
297+ let cu = B(ce, cr)
298+ let cv = B(cg, cs)
299+ let cw = aY(cv, cu)
300+ let bR = B(bQ, cr)
301+ let bT = B(bS, cs)
302+ let cx = if ((ct == 0))
308303 then {
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)
304+ let bU = d
305+ let cy = d
306+ let bz = pow((cu * cv), 0, toBigInt(5), 1, 0, DOWN)
307+ $Tuple5(E(bz, a), E(cu, cr), E(cv, cs), aY((bT + cv), (bR + cu)), cy)
313308 }
314309 else {
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)
310+ let bU = aY(bT, bR)
311+ let cz = fraction(L((bU - cw)), c, bU)
312+ let cy = B(be, a)
313+ if (if ((bU != d))
314+ then (cz > cy)
320315 else false)
321- then throw(((("Price slippage " + toString(cB)) + " > ") + toString(cA)))
316+ then throw(((("Price slippage " + toString(cz)) + " > ") + toString(cy)))
322317 else {
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)
318+ let cA = B(ct, a)
319+ let cB = fraction(cu, bU, c)
320+ let cC = fraction(cv, c, bU)
321+ let cD = if ((cB > cv))
322+ then $Tuple2(cC, cv)
323+ else $Tuple2(cu, cB)
324+ let cE = cD._1
325+ let cF = cD._2
326+ let bz = fraction(cA, cF, bT)
327+ $Tuple5(E(bz, a), E(cE, cr), E(cF, cs), bU, cy)
333328 }
334329 }
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))
330+ let cG = cx._1
331+ let cH = cx._2
332+ let cI = cx._3
333+ let bV = E(cx._4, a)
334+ let cJ = E(cx._5, a)
335+ if ((0 >= cG))
341336 then throw("LP <= 0")
342337 else {
343- let cM = if (!(cl))
338+ let cK = if (!(cj))
344339 then 0
345- else cI
346- let cN = (cg - cJ)
347- let cO = (ci - cK)
348- let cP = if (if (cm)
349- then (co == cp)
340+ else cG
341+ let cL = (ce - cH)
342+ let cM = (cg - cI)
343+ let cN = if (if (ck)
344+ then (cm == cn)
350345 else false)
351- then $Tuple2(cn, 0)
352- else if (if (cm)
353- then (co == cq)
346+ then $Tuple2(cl, 0)
347+ else if (if (ck)
348+ then (cm == co)
354349 else false)
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)
350+ then $Tuple2(0, cl)
351+ else $Tuple2(cH, cI)
352+ let cO = cN._1
353+ let cP = cN._2
354+ let cQ = [IntegerEntry(P(), bV), IntegerEntry(Q(height, lastBlock.timestamp), bV), StringEntry(T(bI, bF), aH(cO, cP, cK, bV, be, cJ, height, lastBlock.timestamp, cL, cM))]
355+ $Tuple13(cG, cK, bV, bQ, bS, ct, bJ, bO, cQ, cL, cM, cf, ch)
361356 }
362357 }
363358
364359
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())
360+func cR (cS) = {
361+ let bv = aC()
362+ let cT = bv[r]
363+ let cU = bv[s]
364+ let bO = parseIntValue(bv[p])
365+ let bw = parseIntValue(bv[t])
366+ let bx = parseIntValue(bv[u])
367+ let cV = aW(cT)
368+ let cW = aW(cU)
369+ let bU = if ((cS.orderType == Buy))
370+ then bm(bw, bx, (cV + cS.amount), cW)
371+ else bm(bw, bx, (cV - cS.amount), cW)
372+ let bV = E(bU, a)
373+ if (if (if (aA())
379374 then true
380- else (bQ == n))
375+ else (bO == m))
381376 then true
382- else (bQ == o))
377+ else (bO == n))
383378 then throw("Admin blocked")
384379 else {
385- let cZ = cU.assetPair.amountAsset
380+ let cX = cS.assetPair.amountAsset
381+ let cY = if ((cX == unit))
382+ then "WAVES"
383+ else toBase58String(value(cX))
384+ let cZ = cS.assetPair.priceAsset
386385 let da = if ((cZ == unit))
387386 then "WAVES"
388387 else toBase58String(value(cZ))
389- let db = cU.assetPair.priceAsset
390- let dc = if ((db == unit))
391- then "WAVES"
392- else toBase58String(value(db))
393- if (if ((da != cV))
388+ if (if ((cY != cT))
394389 then true
395- else (dc != cW))
390+ else (da != cU))
396391 then throw("Wr assets")
397392 else {
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)
393+ let db = cS.price
394+ let cs = fraction(a, bx, bw)
395+ let dc = H(db, a, cs)
396+ let dd = if ((cS.orderType == Buy))
397+ then (bV >= dc)
398+ else (dc >= bV)
404399 true
405400 }
406401 }
407402 }
408403
409404
410-func dg (dh) = if ((size(dh.payments) != 1))
405+func de (df) = if ((size(df.payments) != 1))
411406 then throw("1 pmnt exp")
412407 else {
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())
408+ let dg = value(df.payments[0])
409+ let bG = value(dg.assetId)
410+ let cl = dg.amount
411+ let cx = bE(toBase58String(df.transactionId), toBase58String(bG), cl, df.caller)
412+ let ca = cx._1
413+ let cb = cx._2
414+ let bO = parseIntValue(cx._9)
415+ let cc = cx._10
416+ if (if (aA())
422417 then true
423- else (bQ == o))
424- then throw(("Admin blocked: " + toString(bQ)))
425- else $Tuple5(cc, cd, cn, bI, ce)
418+ else (bO == n))
419+ then throw(("Admin blocked: " + toString(bO)))
420+ else $Tuple5(ca, cb, cl, bG, cc)
426421 }
427422
428423
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())
424+func dh (ac,V,di,dj,be,cj,ck,cl,cm) = {
425+ let cx = cd(V, be, value(di).amount, value(di).assetId, value(dj).amount, value(dj).assetId, ac, false, cj, ck, cl, cm)
426+ let bO = parseIntValue(cx._8)
427+ if (if (if (aA())
433428 then true
434- else (bQ == m))
429+ else (bO == l))
435430 then true
436- else (bQ == o))
437- then throw(("Blocked:" + toString(bQ)))
438- else cz
431+ else (bO == n))
432+ then throw(("Blocked:" + toString(bO)))
433+ else cx
439434 }
440435
441436
442-func dn (do) = {
443- let dp = fraction(do, ad, d)
444- $Tuple2((do - dp), dp)
445- }
446-
447-
448-func dq () = {
449- let at = getString(O())
450- if ($isInstanceOf(at, "String"))
437+func dk () = {
438+ let as = getString(N())
439+ if ($isInstanceOf(as, "String"))
451440 then {
452- let dr = at
453- fromBase58String(dr)
441+ let dl = as
442+ fromBase58String(dl)
454443 }
455- else if ($isInstanceOf(at, "Unit"))
444+ else if ($isInstanceOf(as, "Unit"))
456445 then unit
457446 else throw("Match error")
458447 }
459448
460449
461-func ds () = {
462- let at = getString(P())
463- if ($isInstanceOf(at, "String"))
450+func dm () = {
451+ let as = getString(O())
452+ if ($isInstanceOf(as, "String"))
464453 then {
465- let dr = at
466- fromBase58String(dr)
454+ let dl = as
455+ fromBase58String(dl)
467456 }
468- else if ($isInstanceOf(at, "Unit"))
457+ else if ($isInstanceOf(as, "Unit"))
469458 then unit
470459 else throw("Match error")
471460 }
472461
473462
474-let dt = throw("Permission denied")
463+let dn = throw("Permission denied")
475464
476-func du (dh) = {
477- let at = dq()
478- if ($isInstanceOf(at, "ByteVector"))
465+func do (df) = {
466+ let as = dk()
467+ if ($isInstanceOf(as, "ByteVector"))
479468 then {
480- let dv = at
481- if ((dh.callerPublicKey == dv))
469+ let dp = as
470+ if ((df.callerPublicKey == dp))
482471 then true
483- else dt
472+ else dn
484473 }
485- else if ($isInstanceOf(at, "Unit"))
486- then if ((dh.caller == this))
474+ else if ($isInstanceOf(as, "Unit"))
475+ then if ((df.caller == this))
487476 then true
488- else dt
477+ else dn
489478 else throw("Match error")
490479 }
491480
492481
493-@Callable(dh)
494-func constructor (N) = {
495- let dw = du(dh)
496- if ((dw == dw))
497- then [StringEntry(N(), N)]
482+@Callable(df)
483+func constructor (M) = {
484+ let dq = do(df)
485+ if ((dq == dq))
486+ then [StringEntry(M(), M)]
498487 else throw("Strict value is not equal to itself.")
499488 }
500489
501490
502491
503-@Callable(dh)
504-func setManager (dx) = {
505- let dw = du(dh)
506- if ((dw == dw))
492+@Callable(df)
493+func setManager (dr) = {
494+ let dq = do(df)
495+ if ((dq == dq))
507496 then {
508- let dy = fromBase58String(dx)
509- if ((dy == dy))
510- then [StringEntry(P(), dx)]
497+ let ds = fromBase58String(dr)
498+ if ((ds == ds))
499+ then [StringEntry(O(), dr)]
511500 else throw("Strict value is not equal to itself.")
512501 }
513502 else throw("Strict value is not equal to itself.")
515504
516505
517506
518-@Callable(dh)
507+@Callable(df)
519508 func confirmManager () = {
520- let bF = ds()
521- let dz = if (isDefined(bF))
509+ let bD = dm()
510+ let dt = if (isDefined(bD))
522511 then true
523512 else throw("No pending manager")
524- if ((dz == dz))
513+ if ((dt == dt))
525514 then {
526- let dA = if ((dh.callerPublicKey == value(bF)))
515+ let du = if ((df.callerPublicKey == value(bD)))
527516 then true
528517 else throw("You are not pending manager")
529- if ((dA == dA))
530- then [StringEntry(O(), toBase58String(value(bF))), DeleteEntry(P())]
518+ if ((du == du))
519+ then [StringEntry(N(), toBase58String(value(bD))), DeleteEntry(O())]
531520 else throw("Strict value is not equal to itself.")
532521 }
533522 else throw("Strict value is not equal to itself.")
535524
536525
537526
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))
527+@Callable(df)
528+func put (dv,dw) = {
529+ let dx = aG()
530+ let dy = valueOrErrorMessage(addressFromString(dx[x]), "Wr st addr")
531+ let dz = valueOrErrorMessage(addressFromString(dx[y]), "Wr sl addr")
532+ if ((0 > dv))
544533 then throw("Wrong slippage")
545- else if ((size(dh.payments) != 2))
534+ else if ((size(df.payments) != 2))
546535 then throw("2 pmnts expd")
547536 else {
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))
537+ let dA = dh(toString(df.caller), toBase58String(df.transactionId), AttachedPayment(value(df.payments[0]).assetId, value(df.payments[0]).amount), df.payments[1], dv, true, false, 0, "")
538+ let cK = dA._2
539+ let dB = dA._7
540+ let cc = dA._9
541+ let cL = dA._10
542+ let cM = dA._11
543+ let bK = dA._12
544+ let bL = dA._13
545+ let cx = invoke(ay, "emit", [cK], nil)
546+ if ((cx == cx))
558547 then {
559- let dI = {
560- let at = cz
561- if ($isInstanceOf(at, "Address"))
548+ let dC = {
549+ let as = cx
550+ if ($isInstanceOf(as, "Address"))
562551 then {
563- let dJ = at
564- invoke(dJ, "emit", [cM], nil)
552+ let dD = as
553+ invoke(dD, "emit", [cK], nil)
565554 }
566555 else unit
567556 }
568- if ((dI == dI))
557+ if ((dC == dC))
569558 then {
570- let dK = if ((cN > 0))
571- then invoke(dF, "put", nil, [AttachedPayment(bM, cN)])
559+ let dE = if ((cL > 0))
560+ then invoke(dz, "put", nil, [AttachedPayment(bK, cL)])
572561 else nil
573- if ((dK == dK))
562+ if ((dE == dE))
574563 then {
575- let dL = if ((cO > 0))
576- then invoke(dF, "put", nil, [AttachedPayment(bN, cO)])
564+ let dF = if ((cM > 0))
565+ then invoke(dz, "put", nil, [AttachedPayment(bL, cM)])
577566 else nil
578- if ((dL == dL))
567+ if ((dF == dF))
579568 then {
580- let dM = if (dC)
569+ let dG = if (dw)
581570 then {
582- let dN = invoke(dE, "stake", nil, [AttachedPayment(dH, cM)])
583- if ((dN == dN))
571+ let dH = invoke(dy, "stake", nil, [AttachedPayment(dB, cK)])
572+ if ((dH == dH))
584573 then nil
585574 else throw("Strict value is not equal to itself.")
586575 }
587- else [ScriptTransfer(dh.caller, cM, dH)]
588- (ce ++ dM)
576+ else [ScriptTransfer(df.caller, cK, dB)]
577+ (cc ++ dG)
589578 }
590579 else throw("Strict value is not equal to itself.")
591580 }
599588
600589
601590
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")
591+@Callable(df)
592+func putOneTkn (dI,dJ,dK,be,dw) = {
593+ let bv = aG()
594+ let dy = valueOrErrorMessage(addressFromString(bv[x]), "Wr st addr")
595+ let dz = valueOrErrorMessage(addressFromString(bv[y]), "Wr sl addr")
596+ let dL = valueOrErrorMessage(addressFromString(bv[z]), "Wr gwx addr")
597+ let dM = aC()
598+ let bK = dM[r]
599+ let bL = dM[s]
600+ let bM = parseIntValue(dM[t])
601+ let bN = parseIntValue(dM[u])
602+ let dN = valueOrElse(getString(this, aa()), "")
603+ let bI = if ((dN == toString(df.caller)))
604+ then df.originCaller
605+ else df.caller
606+ let dO = valueOrErrorMessage(addressFromString(valueOrErrorMessage(getString(aa()), "no addons")), "addon address in not valid")
607+ let dP = reentrantInvoke(dO, "ensureCanPutOneTkn", [toString(bI)], nil)
608+ if ((dP == dP))
609+ then if (if (if (if ((0 >= be))
610+ then true
611+ else (0 >= dI))
612+ then true
613+ else (0 >= dJ))
614+ then true
615+ else (0 >= dK))
616+ then throw("Wrong params")
617+ else if ((size(df.payments) != 1))
618+ then throw("1 pmnt expd")
619+ else {
620+ let dg = value(df.payments[0])
621+ let bG = toBase58String(value(dg.assetId))
622+ let cl = dg.amount
623+ if ((10000000 > cl))
624+ then throw("Wrong pmt amt")
625+ else {
626+ let bQ = aW(bK)
627+ let bS = aW(bL)
628+ let dQ = if ((bG == bK))
629+ then if (if ((cl > bQ))
630+ then true
631+ else (dI > cl))
632+ then throw("invalid payment amount")
633+ else $Tuple6((bQ - cl), bS, (cl - dI), dJ, 0, 0)
634+ else if ((bG == bL))
635+ then if (if ((cl > bS))
636+ then true
637+ else (dJ > cl))
638+ then throw("invalid payment amount")
639+ else $Tuple6(bQ, (bS - cl), 0, 0, (cl - dJ), dI)
640+ else throw("wrong pmtAssetId")
641+ let dR = dQ._1
642+ let dS = dQ._2
643+ let dT = dQ._3
644+ let dU = dQ._4
645+ let dV = dQ._5
646+ let dW = dQ._6
647+ let bj = invoke(dL, "calcD", [toString(dR), toString(dS), az, g, h], nil)
648+ let bi = invoke(dL, "calcD", [toString(toBigInt(((dR + dT) - dW))), toString(toBigInt(((dS + dV) - dU))), az, g, h], nil)
649+ let dX = bh(parseBigIntValue(ar(bi)), parseBigIntValue(ar(bj)), f)
650+ if ((dX == dX))
651+ then {
652+ let dY = dh(toString(df.caller), toBase58String(df.transactionId), AttachedPayment(fromBase58String(bK), dI), AttachedPayment(fromBase58String(bL), dJ), be, true, true, cl, bG)
653+ let dZ = dY._2
654+ let dB = dY._7
655+ let cc = dY._9
656+ let cL = dY._10
657+ let cM = dY._11
658+ let ea = bb(toBigInt(dZ), toBigInt(dK), toBigInt(be))
659+ let cK = toInt(ea._2)
660+ let dA = invoke(ay, "emit", [cK], nil)
661+ if ((dA == dA))
662+ then {
663+ let dC = {
664+ let as = dA
665+ if ($isInstanceOf(as, "Address"))
666+ then {
667+ let dD = as
668+ invoke(dD, "emit", [cK], nil)
669+ }
670+ else unit
671+ }
672+ if ((dC == dC))
673+ then {
674+ let dE = if ((cL > 0))
675+ then invoke(dz, "put", nil, [AttachedPayment(fromBase58String(bK), cL)])
676+ else nil
677+ if ((dE == dE))
678+ then {
679+ let dF = if ((cM > 0))
680+ then invoke(dz, "put", nil, [AttachedPayment(fromBase58String(bL), cM)])
681+ else nil
682+ if ((dF == dF))
683+ then {
684+ let dG = if (dw)
685+ then {
686+ let dH = invoke(dy, "stake", nil, [AttachedPayment(dB, cK)])
687+ if ((dH == dH))
688+ then nil
689+ else throw("Strict value is not equal to itself.")
690+ }
691+ else [ScriptTransfer(df.caller, cK, dB)]
692+ (cc ++ dG)
693+ }
694+ else throw("Strict value is not equal to itself.")
695+ }
696+ else throw("Strict value is not equal to itself.")
697+ }
698+ else throw("Strict value is not equal to itself.")
699+ }
700+ else throw("Strict value is not equal to itself.")
701+ }
702+ else throw("Strict value is not equal to itself.")
703+ }
704+ }
705+ else throw("Strict value is not equal to itself.")
706+ }
707+
708+
709+
710+@Callable(df)
711+func putOneTknV2 (dK,be,dw) = {
712+ let bv = aG()
713+ let dy = valueOrErrorMessage(addressFromString(bv[x]), "Wr st addr")
714+ let dz = valueOrErrorMessage(addressFromString(bv[y]), "Wr sl addr")
715+ let dL = valueOrErrorMessage(addressFromString(bv[z]), "Wr gwx addr")
716+ let dM = aC()
717+ let bK = dM[r]
718+ let bL = dM[s]
719+ let bM = parseIntValue(dM[t])
720+ let bN = parseIntValue(dM[u])
721+ let dN = valueOrElse(getString(this, aa()), "")
722+ let bI = if ((dN == toString(df.caller)))
723+ then df.originCaller
724+ else df.caller
725+ if ((size(df.payments) != 1))
726+ then throw("1 pmnt expd")
727+ else {
728+ let dg = value(df.payments[0])
729+ let bG = toBase58String(value(dg.assetId))
730+ let cl = dg.amount
731+ if ((10000000 > cl))
732+ then throw("Wrong pmt amt")
733+ else {
734+ let bQ = aW(bK)
735+ let bS = aW(bL)
736+ let eb = if ((bG == bK))
737+ then if ((cl > bQ))
738+ then throw("invalid payment amount")
739+ else $Tuple2((bQ - cl), bS)
740+ else if ((bG == bL))
741+ then if ((cl > bS))
742+ then throw("invalid payment amount")
743+ else $Tuple2(bQ, (bS - cl))
744+ else throw("wrong pmtAssetId")
745+ let dR = eb._1
746+ let dS = eb._2
747+ let ec = if ((bG == bK))
748+ then $Tuple2(dR, dS)
749+ else $Tuple2(dS, dR)
750+ let ed = ec._1
751+ let ee = ec._2
752+ let ef = 1
753+ let eg = {
754+ let eh = invoke(dL, "calcPutXOnly", [toString(cl), toString(ed), toString(ee), "", az, g, toString(ef), h], nil)
755+ if ($isInstanceOf(eh, "(Int, Int)"))
756+ then eh
757+ else throw(($getType(invoke(dL, "calcPutXOnly", [toString(cl), toString(ed), toString(ee), "", az, g, toString(ef), h], nil)) + " couldn't be cast to (Int, Int)"))
758+ }
759+ let ei = if ((bG == bK))
760+ then eg
761+ else $Tuple2(eg._2, eg._1)
762+ let dI = ei._1
763+ let dJ = ei._2
764+ let dY = dh(toString(df.caller), toBase58String(df.transactionId), AttachedPayment(fromBase58String(bK), dI), AttachedPayment(fromBase58String(bL), dJ), be, true, true, cl, bG)
765+ let dZ = dY._2
766+ let dB = dY._7
767+ let cc = dY._9
768+ let cL = dY._10
769+ let cM = dY._11
770+ let cK = if ((dK > 0))
771+ then {
772+ let ea = bb(toBigInt(dZ), toBigInt(dK), toBigInt(be))
773+ toInt(ea._2)
774+ }
775+ else dZ
776+ let dA = invoke(ay, "emit", [cK], nil)
777+ if ((dA == dA))
778+ then {
779+ let dC = {
780+ let as = dA
781+ if ($isInstanceOf(as, "Address"))
782+ then {
783+ let dD = as
784+ invoke(dD, "emit", [cK], nil)
785+ }
786+ else unit
787+ }
788+ if ((dC == dC))
789+ then {
790+ let dE = if ((cL > 0))
791+ then invoke(dz, "put", nil, [AttachedPayment(fromBase58String(bK), cL)])
792+ else nil
793+ if ((dE == dE))
794+ then {
795+ let dF = if ((cM > 0))
796+ then invoke(dz, "put", nil, [AttachedPayment(fromBase58String(bL), cM)])
797+ else nil
798+ if ((dF == dF))
799+ then {
800+ let dG = if (dw)
801+ then {
802+ let dH = invoke(dy, "stake", nil, [AttachedPayment(dB, cK)])
803+ if ((dH == dH))
804+ then nil
805+ else throw("Strict value is not equal to itself.")
806+ }
807+ else [ScriptTransfer(df.caller, cK, dB)]
808+ (cc ++ dG)
809+ }
810+ else throw("Strict value is not equal to itself.")
811+ }
812+ else throw("Strict value is not equal to itself.")
813+ }
814+ else throw("Strict value is not equal to itself.")
815+ }
816+ else throw("Strict value is not equal to itself.")
817+ }
818+ }
819+ }
820+
821+
822+
823+@Callable(df)
824+func putForFree (ej) = if ((0 > ej))
825+ then throw("Wrong slpg")
826+ else if ((size(df.payments) != 2))
827+ then throw("2 pmnts expd")
828+ else {
829+ let dY = dh(toString(df.caller), toBase58String(df.transactionId), AttachedPayment(value(df.payments[0]).assetId, value(df.payments[0]).amount), df.payments[1], ej, false, false, 0, "")
830+ dY._9
831+ }
832+
833+
834+
835+@Callable(df)
836+func get () = {
837+ let cx = de(df)
838+ let ek = cx._1
839+ let cb = cx._2
840+ let cl = cx._3
841+ let bG = cx._4
842+ let cc = cx._5
843+ let el = invoke(ay, "burn", [cl], [AttachedPayment(bG, cl)])
844+ if ((el == el))
845+ then cc
846+ else throw("Strict value is not equal to itself.")
847+ }
848+
849+
850+
851+@Callable(df)
852+func getOneTkn (em,en,eo,ep,be) = if ((size(df.payments) != 1))
853+ then throw("1 pmnt expd")
854+ else {
855+ let bv = aC()
856+ let bJ = bv[q]
857+ let bK = bv[r]
858+ let bL = bv[s]
859+ let bM = parseIntValue(bv[t])
860+ let bN = parseIntValue(bv[u])
861+ let bO = bv[p]
862+ let dx = aG()
863+ let dL = valueOrErrorMessage(addressFromString(dx[z]), "Wr sl addr")
864+ let dg = value(df.payments[0])
865+ let dN = valueOrElse(getString(this, aa()), "")
866+ let bI = if ((dN == toString(df.caller)))
867+ then df.originCaller
868+ else df.caller
869+ let bF = toBase58String(df.transactionId)
870+ let bG = value(dg.assetId)
871+ let cl = dg.amount
872+ let dO = valueOrErrorMessage(addressFromString(valueOrErrorMessage(getString(aa()), "no addons")), "addon address in not valid")
873+ let dP = reentrantInvoke(dO, "ensureCanGetOneTkn", [toString(bI)], nil)
874+ if ((dP == dP))
875+ then if ((1000000000 > cl))
876+ then throw("Min pmt 10 LP")
877+ else if (if (if ((0 > be))
878+ then true
879+ else (0 > em))
880+ then true
881+ else (0 > eo))
882+ then throw("Wrong params")
883+ else if ((bJ != toBase58String(bG)))
884+ then throw("Wrong LP")
885+ else {
886+ let cx = bE(toBase58String(df.transactionId), toBase58String(bG), cl, df.caller)
887+ let eq = cx._1
888+ let er = cx._2
889+ let bQ = aW(bK)
890+ let bS = aW(bL)
891+ let es = if ((ep == bK))
892+ then $Tuple7((bQ - eq), (bS - er), em, er, 0, 0, (eq + em))
893+ else if ((ep == bL))
894+ then $Tuple7((bQ - eq), (bS - er), 0, 0, em, eq, (er + em))
895+ else throw("wrong outAssetId")
896+ let dR = es._1
897+ let dS = es._2
898+ let dT = es._3
899+ let dU = es._4
900+ let dV = es._5
901+ let dW = es._6
902+ let et = es._7
903+ if (if ((0 > dT))
904+ then true
905+ else (0 > dV))
906+ then throw("Wrong calc")
907+ else {
908+ let bj = invoke(dL, "calcD", [toString(dR), toString(dS), az, g, h], nil)
909+ let bi = invoke(dL, "calcD", [toString(((dR - dT) + dW)), toString(((dS + dU) - dV)), az, g, h], nil)
910+ let dX = bh(parseBigIntValue(ar(bi)), parseBigIntValue(ar(bj)), f)
911+ if ((dX == dX))
912+ then {
913+ let eu = bb(toBigInt(et), toBigInt(eo), toBigInt(be))
914+ if ((eu == eu))
915+ then {
916+ let ev = if ((ep == bK))
917+ then $Tuple2(toInt(eu._2), 0)
918+ else $Tuple2(0, toInt(eu._2))
919+ let ew = ev._1
920+ let ex = ev._2
921+ let ey = aY(B(bS, bN), B(bQ, bM))
922+ let ez = E(ey, a)
923+ let cc = [ScriptTransfer(bI, (ew + ex), if ((ep == "WAVES"))
924+ then unit
925+ else fromBase58String(ep)), StringEntry(W(toString(bI), bF), aS(ew, ex, cl, ez, height, lastBlock.timestamp)), IntegerEntry(P(), ez), IntegerEntry(Q(height, lastBlock.timestamp), ez)]
926+ if ((cc == cc))
927+ then {
928+ let eA = invoke(ay, "burn", [cl], [AttachedPayment(bG, cl)])
929+ if ((eA == eA))
930+ then cc
931+ else throw("Strict value is not equal to itself.")
932+ }
933+ else throw("Strict value is not equal to itself.")
934+ }
935+ else throw("Strict value is not equal to itself.")
936+ }
937+ else throw("Strict value is not equal to itself.")
938+ }
939+ }
940+ else throw("Strict value is not equal to itself.")
941+ }
942+
943+
944+
945+@Callable(df)
946+func getOneTknV2 (eo,ep,be) = if ((size(df.payments) != 1))
947+ then throw("1 pmnt expd")
948+ else {
949+ let bv = aC()
950+ let bJ = bv[q]
951+ let bK = bv[r]
952+ let bL = bv[s]
953+ let bM = parseIntValue(bv[t])
954+ let bN = parseIntValue(bv[u])
955+ let bO = bv[p]
956+ let dx = aG()
957+ let dL = valueOrErrorMessage(addressFromString(dx[z]), "Wr sl addr")
958+ let dg = value(df.payments[0])
959+ let dN = valueOrElse(getString(this, aa()), "")
960+ let bI = if ((dN == toString(df.caller)))
961+ then df.originCaller
962+ else df.caller
963+ let bF = toBase58String(df.transactionId)
964+ let bG = value(dg.assetId)
965+ let cl = dg.amount
966+ if ((1000000000 > cl))
967+ then throw("Min pmt 10 LP")
968+ else if (if ((0 > be))
969+ then true
970+ else (0 > eo))
971+ then throw("Wrong params")
972+ else if ((bJ != toBase58String(bG)))
973+ then throw("Wrong LP")
636974 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))
647- then true
648- else (dP > cn))
649- then throw("invalid payment amount")
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))
975+ let cx = bE(toBase58String(df.transactionId), toBase58String(bG), cl, df.caller)
976+ let eq = cx._1
977+ let er = cx._2
978+ let bQ = aW(bK)
979+ let bS = aW(bL)
980+ let dR = (bQ - eq)
981+ let dS = (bS - er)
982+ let eB = if ((ep == bK))
983+ then $Tuple3(dS, dR, er)
984+ else if ((ep == bL))
985+ then $Tuple3(dR, dS, eq)
986+ else throw("wrong outAssetId")
987+ let eC = eB._1
988+ let eD = eB._2
989+ let eE = eB._3
990+ let eF = 1
991+ let em = {
992+ let eh = invoke(dL, "calcSwapXToY", [toString(eE), toString(eC), toString(eD), "", az, g, toString(eF), h], nil)
993+ if ($isInstanceOf(eh, "Int"))
994+ then eh
995+ else throw(($getType(invoke(dL, "calcSwapXToY", [toString(eE), toString(eC), toString(eD), "", az, g, toString(eF), h], nil)) + " couldn't be cast to Int"))
996+ }
997+ let et = if ((ep == bK))
998+ then (eq + em)
999+ else (er + em)
1000+ let eu = bb(toBigInt(et), toBigInt(eo), toBigInt(be))
1001+ if ((eu == eu))
6621002 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))
1003+ let eG = if ((ep == bK))
1004+ then $Tuple2(toInt(eu._2), 0)
1005+ else $Tuple2(0, toInt(eu._2))
1006+ let ew = eG._1
1007+ let ex = eG._2
1008+ let ey = aY(B(bS, bN), B(bQ, bM))
1009+ let ez = E(ey, a)
1010+ let cc = [ScriptTransfer(bI, (ew + ex), if ((ep == "WAVES"))
1011+ then unit
1012+ else fromBase58String(ep)), StringEntry(W(toString(bI), bF), aS(ew, ex, cl, ez, height, lastBlock.timestamp)), IntegerEntry(P(), ez), IntegerEntry(Q(height, lastBlock.timestamp), ez)]
1013+ if ((cc == cc))
6731014 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))
689- then {
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- }
708- else throw("Strict value is not equal to itself.")
709- }
710- else throw("Strict value is not equal to itself.")
711- }
1015+ let eA = invoke(ay, "burn", [cl], [AttachedPayment(bG, cl)])
1016+ if ((eA == eA))
1017+ then cc
7121018 else throw("Strict value is not equal to itself.")
7131019 }
7141020 else throw("Strict value is not equal to itself.")
7151021 }
7161022 else throw("Strict value is not equal to itself.")
7171023 }
718- }
719- }
720-
721-
722-
723-@Callable(dh)
724-func putForFree (ej) = if ((0 > ej))
725- then throw("Wrong slpg")
726- else if ((size(dh.payments) != 2))
727- then throw("2 pmnts expd")
728- else {
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
731- }
732-
733-
734-
735-@Callable(dh)
736-func get () = {
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
746- else throw("Strict value is not equal to itself.")
747- }
748-
749-
750-
751-@Callable(dh)
752-func getOneTkn (em,en,eo,ep,bg) = if ((size(dh.payments) != 1))
753- then throw("1 pmnt expd")
754- else {
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- }
8441024 }
8451025
8461026
8471027
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)))
1028+@Callable(df)
1029+func getNoLess (eH,eI) = {
1030+ let cx = de(df)
1031+ let ca = cx._1
1032+ let cb = cx._2
1033+ let cl = cx._3
1034+ let bG = cx._4
1035+ let cc = cx._5
1036+ if ((eH > ca))
1037+ then throw(((("Failed: " + toString(ca)) + " < ") + toString(eH)))
1038+ else if ((eI > cb))
1039+ then throw(((("Failed: " + toString(cb)) + " < ") + toString(eI)))
8601040 else {
861- let eG = invoke(az, "burn", [cn], [AttachedPayment(bI, cn)])
862- if ((eG == eG))
863- then ce
1041+ let eJ = invoke(ay, "burn", [cl], [AttachedPayment(bG, cl)])
1042+ if ((eJ == eJ))
1043+ then cc
8641044 else throw("Strict value is not equal to itself.")
8651045 }
8661046 }
8671047
8681048
8691049
870-@Callable(dh)
871-func unstakeAndGet (do) = {
872- let eH = if ((size(dh.payments) != 0))
1050+@Callable(df)
1051+func unstakeAndGet (eK) = {
1052+ let eL = if ((size(df.payments) != 0))
8731053 then throw("No pmnts expd")
8741054 else true
875- if ((eH == eH))
1055+ if ((eL == eL))
8761056 then {
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))
1057+ let bv = aC()
1058+ let eM = aG()
1059+ let dB = fromBase58String(bv[q])
1060+ let eN = valueOrErrorMessage(addressFromString(eM[x]), "Wr st addr")
1061+ let eO = invoke(eN, "unstake", [toBase58String(dB), eK], nil)
1062+ if ((eO == eO))
8831063 then {
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())
1064+ let cx = bE(toBase58String(df.transactionId), toBase58String(dB), eK, df.caller)
1065+ let bO = parseIntValue(cx._9)
1066+ let cc = cx._10
1067+ let eP = if (if (aA())
8881068 then true
889- else (bQ == o))
890- then throw(("Blocked: " + toString(bQ)))
1069+ else (bO == n))
1070+ then throw(("Blocked: " + toString(bO)))
8911071 else true
892- if ((eL == eL))
1072+ if ((eP == eP))
8931073 then {
894- let eM = invoke(az, "burn", [do], [AttachedPayment(dH, do)])
895- if ((eM == eM))
896- then ce
1074+ let eQ = invoke(ay, "burn", [eK], [AttachedPayment(dB, eK)])
1075+ if ((eQ == eQ))
1076+ then cc
8971077 else throw("Strict value is not equal to itself.")
8981078 }
8991079 else throw("Strict value is not equal to itself.")
9051085
9061086
9071087
908-@Callable(dh)
909-func activate (eN,eO) = if ((toString(dh.caller) != toString(az)))
1088+@Callable(df)
1089+func activate (eR,eS) = if ((toString(df.caller) != toString(ay)))
9101090 then throw("denied")
911- else $Tuple2([StringEntry(Y(), eN), StringEntry(Z(), eO)], "success")
1091+ else $Tuple2([StringEntry(X(), eR), StringEntry(Y(), eS)], "success")
9121092
9131093
9141094
915-@Callable(dh)
916-func setS (eP,eL) = if ((toString(dh.caller) != av(this, ab())))
917- then dt
918- else [StringEntry(eP, eL)]
1095+@Callable(df)
1096+func setS (eT,eP) = if ((toString(df.caller) != au(this, aa())))
1097+ then dn
1098+ else [StringEntry(eT, eP)]
9191099
9201100
9211101
922-@Callable(dh)
923-func setI (eP,eL) = if ((toString(dh.caller) != av(this, ab())))
924- then dt
925- else [IntegerEntry(eP, eL)]
1102+@Callable(df)
1103+func setI (eT,eP) = if ((toString(df.caller) != au(this, aa())))
1104+ then dn
1105+ else [IntegerEntry(eT, eP)]
9261106
9271107
9281108
929-@Callable(dh)
930-func getPoolConfigWrapperREADONLY () = $Tuple2(nil, aE())
1109+@Callable(df)
1110+func getPoolConfigWrapperREADONLY () = $Tuple2(nil, aC())
9311111
9321112
9331113
934-@Callable(dh)
935-func getAccBalanceWrapperREADONLY (aZ) = $Tuple2(nil, aY(aZ))
1114+@Callable(df)
1115+func getAccBalanceWrapperREADONLY (aX) = $Tuple2(nil, aW(aX))
9361116
9371117
9381118
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])])
1119+@Callable(df)
1120+func calcPricesWrapperREADONLY (bp,bq,bu) = {
1121+ let eU = bt(bp, bq, bu)
1122+ $Tuple2(nil, [toString(eU[0]), toString(eU[1]), toString(eU[2])])
9431123 }
9441124
9451125
9461126
947-@Callable(dh)
948-func fromX18WrapperREADONLY (G,eR) = $Tuple2(nil, F(parseBigIntValue(G), eR))
1127+@Callable(df)
1128+func fromX18WrapperREADONLY (F,eV) = $Tuple2(nil, E(parseBigIntValue(F), eV))
9491129
9501130
9511131
952-@Callable(dh)
953-func toX18WrapperREADONLY (D,E) = $Tuple2(nil, toString(C(D, E)))
1132+@Callable(df)
1133+func toX18WrapperREADONLY (C,D) = $Tuple2(nil, toString(B(C, D)))
9541134
9551135
9561136
957-@Callable(dh)
958-func calcPriceBigIntWrapperREADONLY (bb,bc) = $Tuple2(nil, toString(ba(parseBigIntValue(bb), parseBigIntValue(bc))))
1137+@Callable(df)
1138+func calcPriceBigIntWrapperREADONLY (aZ,ba) = $Tuple2(nil, toString(aY(parseBigIntValue(aZ), parseBigIntValue(ba))))
9591139
9601140
9611141
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, ""))
1142+@Callable(df)
1143+func estimatePutOperationWrapperREADONLY (bF,be,ce,cf,cg,ch,eW,ci,cj) = $Tuple2(nil, cd(bF, be, ce, cf, cg, ch, eW, ci, cj, false, 0, ""))
9641144
9651145
9661146
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))
1147+@Callable(df)
1148+func estimateGetOperationWrapperREADONLY (bF,eX,bH,eW) = {
1149+ let cx = bE(bF, eX, bH, addressFromStringValue(eW))
1150+ $Tuple2(nil, $Tuple10(cx._1, cx._2, cx._3, cx._4, cx._5, cx._6, cx._7, toString(cx._8), cx._9, cx._10))
9711151 }
9721152
9731153
974-@Verifier(eU)
975-func eV () = {
976- let eW = {
977- let at = dq()
978- if ($isInstanceOf(at, "ByteVector"))
1154+@Verifier(eY)
1155+func eZ () = {
1156+ let fa = {
1157+ let as = dk()
1158+ if ($isInstanceOf(as, "ByteVector"))
9791159 then {
980- let dv = at
981- dv
1160+ let dp = as
1161+ dp
9821162 }
983- else if ($isInstanceOf(at, "Unit"))
984- then eU.senderPublicKey
1163+ else if ($isInstanceOf(as, "Unit"))
1164+ then eY.senderPublicKey
9851165 else throw("Match error")
9861166 }
987- let at = eU
988- if ($isInstanceOf(at, "Order"))
1167+ let as = eY
1168+ if ($isInstanceOf(as, "Order"))
9891169 then {
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
1170+ let cS = as
1171+ let fb = aB()
1172+ let fc = cR(cS)
1173+ let fd = sigVerify(cS.bodyBytes, cS.proofs[0], cS.senderPublicKey)
1174+ let fe = sigVerify(cS.bodyBytes, cS.proofs[1], fb)
1175+ if (if (if (fc)
1176+ then fd
9971177 else false)
998- then fa
1178+ then fe
9991179 else false)
10001180 then true
1001- else ao(eY, eZ, fa)
1181+ else an(fc, fd, fe)
10021182 }
1003- else if ($isInstanceOf(at, "SetScriptTransaction"))
1183+ else if ($isInstanceOf(as, "SetScriptTransaction"))
10041184 then {
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)
1185+ let dl = as
1186+ let ff = blake2b256(value(dl.script))
1187+ let fg = fromBase64String(value(getString(ay, am())))
1188+ let fh = scriptHash(this)
1189+ if (if ((fg == ff))
1190+ then (fh != ff)
10111191 else false)
10121192 then true
1013- else sigVerify(eU.bodyBytes, eU.proofs[0], eW)
1193+ else sigVerify(eY.bodyBytes, eY.proofs[0], fa)
10141194 }
1015- else sigVerify(eU.bodyBytes, eU.proofs[0], eW)
1195+ else sigVerify(eY.bodyBytes, eY.proofs[0], fa)
10161196 }
10171197
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 = 1000
10+let d = toBigInt(0)
1111
12-let e = toBigInt(0)
12+let e = toBigInt(1)
1313
14-let f = toBigInt(1)
14+let f = toBigInt((a - ((a * 1) / a)))
1515
16-let g = toBigInt((a - ((a * 1) / a)))
16+let g = "100"
1717
18-let h = "100"
18+let h = "1"
1919
20-let i = "1"
20+let i = "__"
2121
22-let j = "__"
22+let j = ""
2323
24-let k = ""
24+let k = 1
2525
26-let l = 1
26+let l = 2
2727
28-let m = 2
28+let m = 3
2929
30-let n = 3
30+let n = 4
3131
32-let o = 4
32+let o = 1
3333
34-let p = 1
34+let p = 2
3535
36-let q = 2
36+let q = 3
3737
38-let r = 3
38+let r = 4
3939
40-let s = 4
40+let s = 5
4141
42-let t = 5
42+let t = 6
4343
44-let u = 6
44+let u = 7
4545
46-let v = 7
46+let v = 8
4747
48-let w = 8
48+let w = 9
4949
50-let x = 9
50+let x = 1
5151
52-let y = 1
52+let y = 7
5353
54-let z = 7
54+let z = 10
5555
56-let A = 10
56+let A = "%s__delay"
5757
58-let B = 0
59-
60-func C (D,E) = fraction(toBigInt(D), c, toBigInt(E))
58+func B (C,D) = fraction(toBigInt(C), c, toBigInt(D))
6159
6260
63-func F (G,H) = toInt(fraction(G, toBigInt(H), c))
61+func E (F,G) = toInt(fraction(F, toBigInt(G), c))
6462
6563
66-func I (J,K,L) = fraction(J, K, L)
64+func H (I,J,K) = fraction(I, J, K)
6765
6866
69-func M (G) = if ((e > G))
70- then -(G)
71- else G
67+func L (F) = if ((d > F))
68+ then -(F)
69+ else F
7270
7371
74-func N () = "%s__factoryContract"
72+func M () = "%s__factoryContract"
7573
7674
77-func O () = "%s__managerPublicKey"
75+func N () = "%s__managerPublicKey"
7876
7977
80-func P () = "%s__pendingManagerPublicKey"
78+func O () = "%s__pendingManagerPublicKey"
8179
8280
83-func Q () = "%s%s__price__last"
81+func P () = "%s%s__price__last"
8482
8583
86-func R (S,T) = makeString(["%s%s%d%d__price__history", toString(S), toString(T)], j)
84+func Q (R,S) = makeString(["%s%s%d%d__price__history", toString(R), toString(S)], i)
8785
8886
89-func U (V,W) = ((("%s%s%s__P__" + V) + "__") + W)
87+func T (U,V) = ((("%s%s%s__P__" + U) + "__") + V)
9088
9189
92-func X (V,W) = ((("%s%s%s__G__" + V) + "__") + W)
90+func W (U,V) = ((("%s%s%s__G__" + U) + "__") + V)
9391
9492
95-func Y () = "%s__amountAsset"
93+func X () = "%s__amountAsset"
9694
9795
98-func Z () = "%s__priceAsset"
96+func Y () = "%s__priceAsset"
9997
10098
101-func aa () = "%s__amp"
99+func Z () = "%s__amp"
102100
103101
104-func ab () = "%s__addonAddr"
102+func aa () = "%s__addonAddr"
105103
106104
107-let ac = "%s__feePermille"
105+func ab (ac) = makeString(["%s%s__lastGetOneTknCall", ac], i)
108106
109-let ad = valueOrElse(getInteger(this, ac), B)
107+
108+func ad (ac) = makeString(["%s%s__lastPutOneTknCall", ac], i)
109+
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 () = "%s__feeCollectorAddress"
129+func an (ao,ap,aq) = throw(((((("Failed: ordValid=" + toString(ao)) + " sndrValid=") + toString(ap)) + " mtchrValid=") + toString(aq)))
130130
131131
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"))
132+func ar (F) = {
133+ let as = F
134+ if ($isInstanceOf(as, "String"))
138135 then {
139- let au = at
140- au
136+ let at = as
137+ at
141138 }
142139 else throw("fail cast to String")
143140 }
144141
145142
146-func av (aw,ax) = valueOrErrorMessage(getString(aw, ax), makeString(["mandatory ", toString(aw), ".", ax, " not defined"], ""))
143+func au (av,aw) = valueOrErrorMessage(getString(av, aw), makeString(["mandatory ", toString(av), ".", aw, " not defined"], ""))
147144
148145
149-func ay (aw,ax) = valueOrErrorMessage(getInteger(aw, ax), makeString(["mandatory ", toString(aw), ".", ax, " not defined"], ""))
146+func ax (av,aw) = valueOrErrorMessage(getInteger(av, aw), makeString(["mandatory ", toString(av), ".", aw, " not defined"], ""))
150147
151148
152-let az = addressFromStringValue(av(this, N()))
149+let ay = addressFromStringValue(au(this, M()))
153150
154-let aA = av(this, aa())
151+let az = au(this, Z())
155152
156-func aB () = valueOrElse(getBoolean(az, al()), false)
153+func aA () = valueOrElse(getBoolean(ay, al()), false)
157154
158155
159-func aC () = fromBase58String(av(az, af()))
156+func aB () = fromBase58String(au(ay, af()))
160157
161158
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)
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)
170165 }
171166
172167
173-func aI () = split(av(az, ae()), j)
168+func aG () = split(au(ay, ae()), i)
174169
175170
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)
171+func aH (aI,aJ,aK,aL,aM,aN,aO,aP,aQ,aR) = makeString(["%d%d%d%d%d%d%d%d%d%d", toString(aI), toString(aJ), toString(aK), toString(aL), toString(aM), toString(aN), toString(aO), toString(aP), toString(aQ), toString(aR)], i)
177172
178173
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)
174+func aS (aT,aU,aV,aL,aO,aP) = makeString(["%d%d%d%d%d%d", toString(aT), toString(aU), toString(aV), toString(aL), toString(aO), toString(aP)], i)
180175
181176
182-func aY (aZ) = if ((aZ == "WAVES"))
177+func aW (aX) = if ((aX == "WAVES"))
183178 then wavesBalance(this).available
184- else assetBalance(this, fromBase58String(aZ))
179+ else assetBalance(this, fromBase58String(aX))
185180
186181
187-func ba (bb,bc) = fraction(bb, c, bc)
182+func aY (aZ,ba) = fraction(aZ, c, ba)
188183
189184
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]))
185+func bb (bc,bd,be) = {
186+ let bf = fraction((bc - bd), b, bd)
187+ let bg = ((be - L(bf)) > d)
188+ if (!(bg))
189+ then throw(("Big slpg: " + toString(bf)))
190+ else $Tuple2(bg, min([bc, bd]))
196191 }
197192
198193
199-func bj (bk,bl,bm) = {
200- let bh = fraction(bl, b, bk)
201- let bn = (bm > bh)
202- if (if (bn)
194+func bh (bi,bj,bk) = {
195+ let bf = fraction(bj, b, bi)
196+ let bl = (bk > bf)
197+ if (if (bl)
203198 then true
204- else (bl > bk))
205- then throw(((((((toString(bl) + " ") + toString(bk)) + " ") + toString(bh)) + " ") + toString(bm)))
206- else bn
199+ else (bj > bi))
200+ then throw(((((((toString(bj) + " ") + toString(bi)) + " ") + toString(bf)) + " ") + toString(bk)))
201+ else bl
207202 }
208203
209204
210-func bo (bp,bq,br,bs) = {
211- let bt = C(br, bp)
212- let bu = C(bs, bq)
213- ba(bu, bt)
205+func bm (bn,bo,bp,bq) = {
206+ let br = B(bp, bn)
207+ let bs = B(bq, bo)
208+ aY(bs, br)
214209 }
215210
216211
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]
212+func bt (bp,bq,bu) = {
213+ let bv = aC()
214+ let bw = parseIntValue(bv[t])
215+ let bx = parseIntValue(bv[u])
216+ let by = bm(bw, bx, bp, bq)
217+ let ba = B(bp, bw)
218+ let aZ = B(bq, bx)
219+ let bz = B(bu, a)
220+ let bA = aY(ba, bz)
221+ let bB = aY(aZ, bz)
222+[by, bA, bB]
228223 }
229224
230225
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)]
226+func bC (bp,bq,bu) = {
227+ let bD = bt(bp, bq, bu)
228+[E(bD[0], a), E(bD[1], a), E(bD[2], a)]
234229 }
235230
236231
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))
232+func bE (bF,bG,bH,bI) = {
233+ let bv = aC()
234+ let bJ = bv[q]
235+ let bK = bv[r]
236+ let bL = bv[s]
237+ let bM = parseIntValue(bv[t])
238+ let bN = parseIntValue(bv[u])
239+ let bO = bv[p]
240+ let bP = valueOrErrorMessage(assetInfo(fromBase58String(bJ)), "Wrong LP id").quantity
241+ if ((bJ != bG))
247242 then throw("Wrong pmt asset")
248243 else {
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 == ""))
244+ let bQ = aW(bK)
245+ let bR = B(bQ, bM)
246+ let bS = aW(bL)
247+ let bT = B(bS, bN)
248+ let bU = aY(bT, bR)
249+ let bV = E(bU, a)
250+ let bW = B(bH, a)
251+ let bX = B(bP, a)
252+ let bY = fraction(bR, bW, bX)
253+ let bZ = fraction(bT, bW, bX)
254+ let ca = E(bY, bM)
255+ let cb = E(bZ, bN)
256+ let cc = if ((bF == ""))
262257 then nil
263- else [ScriptTransfer(bK, cc, if ((bM == "WAVES"))
258+ else [ScriptTransfer(bI, ca, if ((bK == "WAVES"))
264259 then unit
265- else fromBase58String(bM)), ScriptTransfer(bK, cd, if ((bN == "WAVES"))
260+ else fromBase58String(bK)), ScriptTransfer(bI, cb, if ((bL == "WAVES"))
266261 then unit
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)
262+ else fromBase58String(bL)), StringEntry(W(toString(bI), bF), aS(ca, cb, bH, bV, height, lastBlock.timestamp)), IntegerEntry(P(), bV), IntegerEntry(Q(height, lastBlock.timestamp), bV)]
263+ $Tuple10(ca, cb, bK, bL, bQ, bS, bP, bU, bO, cc)
269264 }
270265 }
271266
272267
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)
268+func cd (bF,be,ce,cf,cg,ch,bI,ci,cj,ck,cl,cm) = {
269+ let bv = aC()
270+ let bJ = fromBase58String(bv[q])
271+ let cn = bv[r]
272+ let co = bv[s]
273+ let cp = bv[v]
274+ let cq = bv[w]
275+ let cr = parseIntValue(bv[t])
276+ let cs = parseIntValue(bv[u])
277+ let bO = bv[p]
278+ let ct = valueOrErrorMessage(assetInfo(bJ), "Wr lp as").quantity
279+ let bQ = if (ci)
280+ then aW(cn)
281+ else if (if (ck)
282+ then (cm == cn)
288283 else false)
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)
284+ then (aW(cn) - cl)
285+ else if (ck)
286+ then aW(cn)
287+ else (aW(cn) - ce)
288+ let bS = if (ci)
289+ then aW(co)
290+ else if (if (ck)
291+ then (cm == co)
297292 else false)
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))
293+ then (aW(co) - cl)
294+ else if (ck)
295+ then aW(co)
296+ else (aW(co) - cg)
297+ let cu = B(ce, cr)
298+ let cv = B(cg, cs)
299+ let cw = aY(cv, cu)
300+ let bR = B(bQ, cr)
301+ let bT = B(bS, cs)
302+ let cx = if ((ct == 0))
308303 then {
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)
304+ let bU = d
305+ let cy = d
306+ let bz = pow((cu * cv), 0, toBigInt(5), 1, 0, DOWN)
307+ $Tuple5(E(bz, a), E(cu, cr), E(cv, cs), aY((bT + cv), (bR + cu)), cy)
313308 }
314309 else {
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)
310+ let bU = aY(bT, bR)
311+ let cz = fraction(L((bU - cw)), c, bU)
312+ let cy = B(be, a)
313+ if (if ((bU != d))
314+ then (cz > cy)
320315 else false)
321- then throw(((("Price slippage " + toString(cB)) + " > ") + toString(cA)))
316+ then throw(((("Price slippage " + toString(cz)) + " > ") + toString(cy)))
322317 else {
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)
318+ let cA = B(ct, a)
319+ let cB = fraction(cu, bU, c)
320+ let cC = fraction(cv, c, bU)
321+ let cD = if ((cB > cv))
322+ then $Tuple2(cC, cv)
323+ else $Tuple2(cu, cB)
324+ let cE = cD._1
325+ let cF = cD._2
326+ let bz = fraction(cA, cF, bT)
327+ $Tuple5(E(bz, a), E(cE, cr), E(cF, cs), bU, cy)
333328 }
334329 }
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))
330+ let cG = cx._1
331+ let cH = cx._2
332+ let cI = cx._3
333+ let bV = E(cx._4, a)
334+ let cJ = E(cx._5, a)
335+ if ((0 >= cG))
341336 then throw("LP <= 0")
342337 else {
343- let cM = if (!(cl))
338+ let cK = if (!(cj))
344339 then 0
345- else cI
346- let cN = (cg - cJ)
347- let cO = (ci - cK)
348- let cP = if (if (cm)
349- then (co == cp)
340+ else cG
341+ let cL = (ce - cH)
342+ let cM = (cg - cI)
343+ let cN = if (if (ck)
344+ then (cm == cn)
350345 else false)
351- then $Tuple2(cn, 0)
352- else if (if (cm)
353- then (co == cq)
346+ then $Tuple2(cl, 0)
347+ else if (if (ck)
348+ then (cm == co)
354349 else false)
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)
350+ then $Tuple2(0, cl)
351+ else $Tuple2(cH, cI)
352+ let cO = cN._1
353+ let cP = cN._2
354+ let cQ = [IntegerEntry(P(), bV), IntegerEntry(Q(height, lastBlock.timestamp), bV), StringEntry(T(bI, bF), aH(cO, cP, cK, bV, be, cJ, height, lastBlock.timestamp, cL, cM))]
355+ $Tuple13(cG, cK, bV, bQ, bS, ct, bJ, bO, cQ, cL, cM, cf, ch)
361356 }
362357 }
363358
364359
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())
360+func cR (cS) = {
361+ let bv = aC()
362+ let cT = bv[r]
363+ let cU = bv[s]
364+ let bO = parseIntValue(bv[p])
365+ let bw = parseIntValue(bv[t])
366+ let bx = parseIntValue(bv[u])
367+ let cV = aW(cT)
368+ let cW = aW(cU)
369+ let bU = if ((cS.orderType == Buy))
370+ then bm(bw, bx, (cV + cS.amount), cW)
371+ else bm(bw, bx, (cV - cS.amount), cW)
372+ let bV = E(bU, a)
373+ if (if (if (aA())
379374 then true
380- else (bQ == n))
375+ else (bO == m))
381376 then true
382- else (bQ == o))
377+ else (bO == n))
383378 then throw("Admin blocked")
384379 else {
385- let cZ = cU.assetPair.amountAsset
380+ let cX = cS.assetPair.amountAsset
381+ let cY = if ((cX == unit))
382+ then "WAVES"
383+ else toBase58String(value(cX))
384+ let cZ = cS.assetPair.priceAsset
386385 let da = if ((cZ == unit))
387386 then "WAVES"
388387 else toBase58String(value(cZ))
389- let db = cU.assetPair.priceAsset
390- let dc = if ((db == unit))
391- then "WAVES"
392- else toBase58String(value(db))
393- if (if ((da != cV))
388+ if (if ((cY != cT))
394389 then true
395- else (dc != cW))
390+ else (da != cU))
396391 then throw("Wr assets")
397392 else {
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)
393+ let db = cS.price
394+ let cs = fraction(a, bx, bw)
395+ let dc = H(db, a, cs)
396+ let dd = if ((cS.orderType == Buy))
397+ then (bV >= dc)
398+ else (dc >= bV)
404399 true
405400 }
406401 }
407402 }
408403
409404
410-func dg (dh) = if ((size(dh.payments) != 1))
405+func de (df) = if ((size(df.payments) != 1))
411406 then throw("1 pmnt exp")
412407 else {
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())
408+ let dg = value(df.payments[0])
409+ let bG = value(dg.assetId)
410+ let cl = dg.amount
411+ let cx = bE(toBase58String(df.transactionId), toBase58String(bG), cl, df.caller)
412+ let ca = cx._1
413+ let cb = cx._2
414+ let bO = parseIntValue(cx._9)
415+ let cc = cx._10
416+ if (if (aA())
422417 then true
423- else (bQ == o))
424- then throw(("Admin blocked: " + toString(bQ)))
425- else $Tuple5(cc, cd, cn, bI, ce)
418+ else (bO == n))
419+ then throw(("Admin blocked: " + toString(bO)))
420+ else $Tuple5(ca, cb, cl, bG, cc)
426421 }
427422
428423
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())
424+func dh (ac,V,di,dj,be,cj,ck,cl,cm) = {
425+ let cx = cd(V, be, value(di).amount, value(di).assetId, value(dj).amount, value(dj).assetId, ac, false, cj, ck, cl, cm)
426+ let bO = parseIntValue(cx._8)
427+ if (if (if (aA())
433428 then true
434- else (bQ == m))
429+ else (bO == l))
435430 then true
436- else (bQ == o))
437- then throw(("Blocked:" + toString(bQ)))
438- else cz
431+ else (bO == n))
432+ then throw(("Blocked:" + toString(bO)))
433+ else cx
439434 }
440435
441436
442-func dn (do) = {
443- let dp = fraction(do, ad, d)
444- $Tuple2((do - dp), dp)
445- }
446-
447-
448-func dq () = {
449- let at = getString(O())
450- if ($isInstanceOf(at, "String"))
437+func dk () = {
438+ let as = getString(N())
439+ if ($isInstanceOf(as, "String"))
451440 then {
452- let dr = at
453- fromBase58String(dr)
441+ let dl = as
442+ fromBase58String(dl)
454443 }
455- else if ($isInstanceOf(at, "Unit"))
444+ else if ($isInstanceOf(as, "Unit"))
456445 then unit
457446 else throw("Match error")
458447 }
459448
460449
461-func ds () = {
462- let at = getString(P())
463- if ($isInstanceOf(at, "String"))
450+func dm () = {
451+ let as = getString(O())
452+ if ($isInstanceOf(as, "String"))
464453 then {
465- let dr = at
466- fromBase58String(dr)
454+ let dl = as
455+ fromBase58String(dl)
467456 }
468- else if ($isInstanceOf(at, "Unit"))
457+ else if ($isInstanceOf(as, "Unit"))
469458 then unit
470459 else throw("Match error")
471460 }
472461
473462
474-let dt = throw("Permission denied")
463+let dn = throw("Permission denied")
475464
476-func du (dh) = {
477- let at = dq()
478- if ($isInstanceOf(at, "ByteVector"))
465+func do (df) = {
466+ let as = dk()
467+ if ($isInstanceOf(as, "ByteVector"))
479468 then {
480- let dv = at
481- if ((dh.callerPublicKey == dv))
469+ let dp = as
470+ if ((df.callerPublicKey == dp))
482471 then true
483- else dt
472+ else dn
484473 }
485- else if ($isInstanceOf(at, "Unit"))
486- then if ((dh.caller == this))
474+ else if ($isInstanceOf(as, "Unit"))
475+ then if ((df.caller == this))
487476 then true
488- else dt
477+ else dn
489478 else throw("Match error")
490479 }
491480
492481
493-@Callable(dh)
494-func constructor (N) = {
495- let dw = du(dh)
496- if ((dw == dw))
497- then [StringEntry(N(), N)]
482+@Callable(df)
483+func constructor (M) = {
484+ let dq = do(df)
485+ if ((dq == dq))
486+ then [StringEntry(M(), M)]
498487 else throw("Strict value is not equal to itself.")
499488 }
500489
501490
502491
503-@Callable(dh)
504-func setManager (dx) = {
505- let dw = du(dh)
506- if ((dw == dw))
492+@Callable(df)
493+func setManager (dr) = {
494+ let dq = do(df)
495+ if ((dq == dq))
507496 then {
508- let dy = fromBase58String(dx)
509- if ((dy == dy))
510- then [StringEntry(P(), dx)]
497+ let ds = fromBase58String(dr)
498+ if ((ds == ds))
499+ then [StringEntry(O(), dr)]
511500 else throw("Strict value is not equal to itself.")
512501 }
513502 else throw("Strict value is not equal to itself.")
514503 }
515504
516505
517506
518-@Callable(dh)
507+@Callable(df)
519508 func confirmManager () = {
520- let bF = ds()
521- let dz = if (isDefined(bF))
509+ let bD = dm()
510+ let dt = if (isDefined(bD))
522511 then true
523512 else throw("No pending manager")
524- if ((dz == dz))
513+ if ((dt == dt))
525514 then {
526- let dA = if ((dh.callerPublicKey == value(bF)))
515+ let du = if ((df.callerPublicKey == value(bD)))
527516 then true
528517 else throw("You are not pending manager")
529- if ((dA == dA))
530- then [StringEntry(O(), toBase58String(value(bF))), DeleteEntry(P())]
518+ if ((du == du))
519+ then [StringEntry(N(), toBase58String(value(bD))), DeleteEntry(O())]
531520 else throw("Strict value is not equal to itself.")
532521 }
533522 else throw("Strict value is not equal to itself.")
534523 }
535524
536525
537526
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))
527+@Callable(df)
528+func put (dv,dw) = {
529+ let dx = aG()
530+ let dy = valueOrErrorMessage(addressFromString(dx[x]), "Wr st addr")
531+ let dz = valueOrErrorMessage(addressFromString(dx[y]), "Wr sl addr")
532+ if ((0 > dv))
544533 then throw("Wrong slippage")
545- else if ((size(dh.payments) != 2))
534+ else if ((size(df.payments) != 2))
546535 then throw("2 pmnts expd")
547536 else {
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))
537+ let dA = dh(toString(df.caller), toBase58String(df.transactionId), AttachedPayment(value(df.payments[0]).assetId, value(df.payments[0]).amount), df.payments[1], dv, true, false, 0, "")
538+ let cK = dA._2
539+ let dB = dA._7
540+ let cc = dA._9
541+ let cL = dA._10
542+ let cM = dA._11
543+ let bK = dA._12
544+ let bL = dA._13
545+ let cx = invoke(ay, "emit", [cK], nil)
546+ if ((cx == cx))
558547 then {
559- let dI = {
560- let at = cz
561- if ($isInstanceOf(at, "Address"))
548+ let dC = {
549+ let as = cx
550+ if ($isInstanceOf(as, "Address"))
562551 then {
563- let dJ = at
564- invoke(dJ, "emit", [cM], nil)
552+ let dD = as
553+ invoke(dD, "emit", [cK], nil)
565554 }
566555 else unit
567556 }
568- if ((dI == dI))
557+ if ((dC == dC))
569558 then {
570- let dK = if ((cN > 0))
571- then invoke(dF, "put", nil, [AttachedPayment(bM, cN)])
559+ let dE = if ((cL > 0))
560+ then invoke(dz, "put", nil, [AttachedPayment(bK, cL)])
572561 else nil
573- if ((dK == dK))
562+ if ((dE == dE))
574563 then {
575- let dL = if ((cO > 0))
576- then invoke(dF, "put", nil, [AttachedPayment(bN, cO)])
564+ let dF = if ((cM > 0))
565+ then invoke(dz, "put", nil, [AttachedPayment(bL, cM)])
577566 else nil
578- if ((dL == dL))
567+ if ((dF == dF))
579568 then {
580- let dM = if (dC)
569+ let dG = if (dw)
581570 then {
582- let dN = invoke(dE, "stake", nil, [AttachedPayment(dH, cM)])
583- if ((dN == dN))
571+ let dH = invoke(dy, "stake", nil, [AttachedPayment(dB, cK)])
572+ if ((dH == dH))
584573 then nil
585574 else throw("Strict value is not equal to itself.")
586575 }
587- else [ScriptTransfer(dh.caller, cM, dH)]
588- (ce ++ dM)
576+ else [ScriptTransfer(df.caller, cK, dB)]
577+ (cc ++ dG)
589578 }
590579 else throw("Strict value is not equal to itself.")
591580 }
592581 else throw("Strict value is not equal to itself.")
593582 }
594583 else throw("Strict value is not equal to itself.")
595584 }
596585 else throw("Strict value is not equal to itself.")
597586 }
598587 }
599588
600589
601590
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")
591+@Callable(df)
592+func putOneTkn (dI,dJ,dK,be,dw) = {
593+ let bv = aG()
594+ let dy = valueOrErrorMessage(addressFromString(bv[x]), "Wr st addr")
595+ let dz = valueOrErrorMessage(addressFromString(bv[y]), "Wr sl addr")
596+ let dL = valueOrErrorMessage(addressFromString(bv[z]), "Wr gwx addr")
597+ let dM = aC()
598+ let bK = dM[r]
599+ let bL = dM[s]
600+ let bM = parseIntValue(dM[t])
601+ let bN = parseIntValue(dM[u])
602+ let dN = valueOrElse(getString(this, aa()), "")
603+ let bI = if ((dN == toString(df.caller)))
604+ then df.originCaller
605+ else df.caller
606+ let dO = valueOrErrorMessage(addressFromString(valueOrErrorMessage(getString(aa()), "no addons")), "addon address in not valid")
607+ let dP = reentrantInvoke(dO, "ensureCanPutOneTkn", [toString(bI)], nil)
608+ if ((dP == dP))
609+ then if (if (if (if ((0 >= be))
610+ then true
611+ else (0 >= dI))
612+ then true
613+ else (0 >= dJ))
614+ then true
615+ else (0 >= dK))
616+ then throw("Wrong params")
617+ else if ((size(df.payments) != 1))
618+ then throw("1 pmnt expd")
619+ else {
620+ let dg = value(df.payments[0])
621+ let bG = toBase58String(value(dg.assetId))
622+ let cl = dg.amount
623+ if ((10000000 > cl))
624+ then throw("Wrong pmt amt")
625+ else {
626+ let bQ = aW(bK)
627+ let bS = aW(bL)
628+ let dQ = if ((bG == bK))
629+ then if (if ((cl > bQ))
630+ then true
631+ else (dI > cl))
632+ then throw("invalid payment amount")
633+ else $Tuple6((bQ - cl), bS, (cl - dI), dJ, 0, 0)
634+ else if ((bG == bL))
635+ then if (if ((cl > bS))
636+ then true
637+ else (dJ > cl))
638+ then throw("invalid payment amount")
639+ else $Tuple6(bQ, (bS - cl), 0, 0, (cl - dJ), dI)
640+ else throw("wrong pmtAssetId")
641+ let dR = dQ._1
642+ let dS = dQ._2
643+ let dT = dQ._3
644+ let dU = dQ._4
645+ let dV = dQ._5
646+ let dW = dQ._6
647+ let bj = invoke(dL, "calcD", [toString(dR), toString(dS), az, g, h], nil)
648+ let bi = invoke(dL, "calcD", [toString(toBigInt(((dR + dT) - dW))), toString(toBigInt(((dS + dV) - dU))), az, g, h], nil)
649+ let dX = bh(parseBigIntValue(ar(bi)), parseBigIntValue(ar(bj)), f)
650+ if ((dX == dX))
651+ then {
652+ let dY = dh(toString(df.caller), toBase58String(df.transactionId), AttachedPayment(fromBase58String(bK), dI), AttachedPayment(fromBase58String(bL), dJ), be, true, true, cl, bG)
653+ let dZ = dY._2
654+ let dB = dY._7
655+ let cc = dY._9
656+ let cL = dY._10
657+ let cM = dY._11
658+ let ea = bb(toBigInt(dZ), toBigInt(dK), toBigInt(be))
659+ let cK = toInt(ea._2)
660+ let dA = invoke(ay, "emit", [cK], nil)
661+ if ((dA == dA))
662+ then {
663+ let dC = {
664+ let as = dA
665+ if ($isInstanceOf(as, "Address"))
666+ then {
667+ let dD = as
668+ invoke(dD, "emit", [cK], nil)
669+ }
670+ else unit
671+ }
672+ if ((dC == dC))
673+ then {
674+ let dE = if ((cL > 0))
675+ then invoke(dz, "put", nil, [AttachedPayment(fromBase58String(bK), cL)])
676+ else nil
677+ if ((dE == dE))
678+ then {
679+ let dF = if ((cM > 0))
680+ then invoke(dz, "put", nil, [AttachedPayment(fromBase58String(bL), cM)])
681+ else nil
682+ if ((dF == dF))
683+ then {
684+ let dG = if (dw)
685+ then {
686+ let dH = invoke(dy, "stake", nil, [AttachedPayment(dB, cK)])
687+ if ((dH == dH))
688+ then nil
689+ else throw("Strict value is not equal to itself.")
690+ }
691+ else [ScriptTransfer(df.caller, cK, dB)]
692+ (cc ++ dG)
693+ }
694+ else throw("Strict value is not equal to itself.")
695+ }
696+ else throw("Strict value is not equal to itself.")
697+ }
698+ else throw("Strict value is not equal to itself.")
699+ }
700+ else throw("Strict value is not equal to itself.")
701+ }
702+ else throw("Strict value is not equal to itself.")
703+ }
704+ }
705+ else throw("Strict value is not equal to itself.")
706+ }
707+
708+
709+
710+@Callable(df)
711+func putOneTknV2 (dK,be,dw) = {
712+ let bv = aG()
713+ let dy = valueOrErrorMessage(addressFromString(bv[x]), "Wr st addr")
714+ let dz = valueOrErrorMessage(addressFromString(bv[y]), "Wr sl addr")
715+ let dL = valueOrErrorMessage(addressFromString(bv[z]), "Wr gwx addr")
716+ let dM = aC()
717+ let bK = dM[r]
718+ let bL = dM[s]
719+ let bM = parseIntValue(dM[t])
720+ let bN = parseIntValue(dM[u])
721+ let dN = valueOrElse(getString(this, aa()), "")
722+ let bI = if ((dN == toString(df.caller)))
723+ then df.originCaller
724+ else df.caller
725+ if ((size(df.payments) != 1))
726+ then throw("1 pmnt expd")
727+ else {
728+ let dg = value(df.payments[0])
729+ let bG = toBase58String(value(dg.assetId))
730+ let cl = dg.amount
731+ if ((10000000 > cl))
732+ then throw("Wrong pmt amt")
733+ else {
734+ let bQ = aW(bK)
735+ let bS = aW(bL)
736+ let eb = if ((bG == bK))
737+ then if ((cl > bQ))
738+ then throw("invalid payment amount")
739+ else $Tuple2((bQ - cl), bS)
740+ else if ((bG == bL))
741+ then if ((cl > bS))
742+ then throw("invalid payment amount")
743+ else $Tuple2(bQ, (bS - cl))
744+ else throw("wrong pmtAssetId")
745+ let dR = eb._1
746+ let dS = eb._2
747+ let ec = if ((bG == bK))
748+ then $Tuple2(dR, dS)
749+ else $Tuple2(dS, dR)
750+ let ed = ec._1
751+ let ee = ec._2
752+ let ef = 1
753+ let eg = {
754+ let eh = invoke(dL, "calcPutXOnly", [toString(cl), toString(ed), toString(ee), "", az, g, toString(ef), h], nil)
755+ if ($isInstanceOf(eh, "(Int, Int)"))
756+ then eh
757+ else throw(($getType(invoke(dL, "calcPutXOnly", [toString(cl), toString(ed), toString(ee), "", az, g, toString(ef), h], nil)) + " couldn't be cast to (Int, Int)"))
758+ }
759+ let ei = if ((bG == bK))
760+ then eg
761+ else $Tuple2(eg._2, eg._1)
762+ let dI = ei._1
763+ let dJ = ei._2
764+ let dY = dh(toString(df.caller), toBase58String(df.transactionId), AttachedPayment(fromBase58String(bK), dI), AttachedPayment(fromBase58String(bL), dJ), be, true, true, cl, bG)
765+ let dZ = dY._2
766+ let dB = dY._7
767+ let cc = dY._9
768+ let cL = dY._10
769+ let cM = dY._11
770+ let cK = if ((dK > 0))
771+ then {
772+ let ea = bb(toBigInt(dZ), toBigInt(dK), toBigInt(be))
773+ toInt(ea._2)
774+ }
775+ else dZ
776+ let dA = invoke(ay, "emit", [cK], nil)
777+ if ((dA == dA))
778+ then {
779+ let dC = {
780+ let as = dA
781+ if ($isInstanceOf(as, "Address"))
782+ then {
783+ let dD = as
784+ invoke(dD, "emit", [cK], nil)
785+ }
786+ else unit
787+ }
788+ if ((dC == dC))
789+ then {
790+ let dE = if ((cL > 0))
791+ then invoke(dz, "put", nil, [AttachedPayment(fromBase58String(bK), cL)])
792+ else nil
793+ if ((dE == dE))
794+ then {
795+ let dF = if ((cM > 0))
796+ then invoke(dz, "put", nil, [AttachedPayment(fromBase58String(bL), cM)])
797+ else nil
798+ if ((dF == dF))
799+ then {
800+ let dG = if (dw)
801+ then {
802+ let dH = invoke(dy, "stake", nil, [AttachedPayment(dB, cK)])
803+ if ((dH == dH))
804+ then nil
805+ else throw("Strict value is not equal to itself.")
806+ }
807+ else [ScriptTransfer(df.caller, cK, dB)]
808+ (cc ++ dG)
809+ }
810+ else throw("Strict value is not equal to itself.")
811+ }
812+ else throw("Strict value is not equal to itself.")
813+ }
814+ else throw("Strict value is not equal to itself.")
815+ }
816+ else throw("Strict value is not equal to itself.")
817+ }
818+ }
819+ }
820+
821+
822+
823+@Callable(df)
824+func putForFree (ej) = if ((0 > ej))
825+ then throw("Wrong slpg")
826+ else if ((size(df.payments) != 2))
827+ then throw("2 pmnts expd")
828+ else {
829+ let dY = dh(toString(df.caller), toBase58String(df.transactionId), AttachedPayment(value(df.payments[0]).assetId, value(df.payments[0]).amount), df.payments[1], ej, false, false, 0, "")
830+ dY._9
831+ }
832+
833+
834+
835+@Callable(df)
836+func get () = {
837+ let cx = de(df)
838+ let ek = cx._1
839+ let cb = cx._2
840+ let cl = cx._3
841+ let bG = cx._4
842+ let cc = cx._5
843+ let el = invoke(ay, "burn", [cl], [AttachedPayment(bG, cl)])
844+ if ((el == el))
845+ then cc
846+ else throw("Strict value is not equal to itself.")
847+ }
848+
849+
850+
851+@Callable(df)
852+func getOneTkn (em,en,eo,ep,be) = if ((size(df.payments) != 1))
853+ then throw("1 pmnt expd")
854+ else {
855+ let bv = aC()
856+ let bJ = bv[q]
857+ let bK = bv[r]
858+ let bL = bv[s]
859+ let bM = parseIntValue(bv[t])
860+ let bN = parseIntValue(bv[u])
861+ let bO = bv[p]
862+ let dx = aG()
863+ let dL = valueOrErrorMessage(addressFromString(dx[z]), "Wr sl addr")
864+ let dg = value(df.payments[0])
865+ let dN = valueOrElse(getString(this, aa()), "")
866+ let bI = if ((dN == toString(df.caller)))
867+ then df.originCaller
868+ else df.caller
869+ let bF = toBase58String(df.transactionId)
870+ let bG = value(dg.assetId)
871+ let cl = dg.amount
872+ let dO = valueOrErrorMessage(addressFromString(valueOrErrorMessage(getString(aa()), "no addons")), "addon address in not valid")
873+ let dP = reentrantInvoke(dO, "ensureCanGetOneTkn", [toString(bI)], nil)
874+ if ((dP == dP))
875+ then if ((1000000000 > cl))
876+ then throw("Min pmt 10 LP")
877+ else if (if (if ((0 > be))
878+ then true
879+ else (0 > em))
880+ then true
881+ else (0 > eo))
882+ then throw("Wrong params")
883+ else if ((bJ != toBase58String(bG)))
884+ then throw("Wrong LP")
885+ else {
886+ let cx = bE(toBase58String(df.transactionId), toBase58String(bG), cl, df.caller)
887+ let eq = cx._1
888+ let er = cx._2
889+ let bQ = aW(bK)
890+ let bS = aW(bL)
891+ let es = if ((ep == bK))
892+ then $Tuple7((bQ - eq), (bS - er), em, er, 0, 0, (eq + em))
893+ else if ((ep == bL))
894+ then $Tuple7((bQ - eq), (bS - er), 0, 0, em, eq, (er + em))
895+ else throw("wrong outAssetId")
896+ let dR = es._1
897+ let dS = es._2
898+ let dT = es._3
899+ let dU = es._4
900+ let dV = es._5
901+ let dW = es._6
902+ let et = es._7
903+ if (if ((0 > dT))
904+ then true
905+ else (0 > dV))
906+ then throw("Wrong calc")
907+ else {
908+ let bj = invoke(dL, "calcD", [toString(dR), toString(dS), az, g, h], nil)
909+ let bi = invoke(dL, "calcD", [toString(((dR - dT) + dW)), toString(((dS + dU) - dV)), az, g, h], nil)
910+ let dX = bh(parseBigIntValue(ar(bi)), parseBigIntValue(ar(bj)), f)
911+ if ((dX == dX))
912+ then {
913+ let eu = bb(toBigInt(et), toBigInt(eo), toBigInt(be))
914+ if ((eu == eu))
915+ then {
916+ let ev = if ((ep == bK))
917+ then $Tuple2(toInt(eu._2), 0)
918+ else $Tuple2(0, toInt(eu._2))
919+ let ew = ev._1
920+ let ex = ev._2
921+ let ey = aY(B(bS, bN), B(bQ, bM))
922+ let ez = E(ey, a)
923+ let cc = [ScriptTransfer(bI, (ew + ex), if ((ep == "WAVES"))
924+ then unit
925+ else fromBase58String(ep)), StringEntry(W(toString(bI), bF), aS(ew, ex, cl, ez, height, lastBlock.timestamp)), IntegerEntry(P(), ez), IntegerEntry(Q(height, lastBlock.timestamp), ez)]
926+ if ((cc == cc))
927+ then {
928+ let eA = invoke(ay, "burn", [cl], [AttachedPayment(bG, cl)])
929+ if ((eA == eA))
930+ then cc
931+ else throw("Strict value is not equal to itself.")
932+ }
933+ else throw("Strict value is not equal to itself.")
934+ }
935+ else throw("Strict value is not equal to itself.")
936+ }
937+ else throw("Strict value is not equal to itself.")
938+ }
939+ }
940+ else throw("Strict value is not equal to itself.")
941+ }
942+
943+
944+
945+@Callable(df)
946+func getOneTknV2 (eo,ep,be) = if ((size(df.payments) != 1))
947+ then throw("1 pmnt expd")
948+ else {
949+ let bv = aC()
950+ let bJ = bv[q]
951+ let bK = bv[r]
952+ let bL = bv[s]
953+ let bM = parseIntValue(bv[t])
954+ let bN = parseIntValue(bv[u])
955+ let bO = bv[p]
956+ let dx = aG()
957+ let dL = valueOrErrorMessage(addressFromString(dx[z]), "Wr sl addr")
958+ let dg = value(df.payments[0])
959+ let dN = valueOrElse(getString(this, aa()), "")
960+ let bI = if ((dN == toString(df.caller)))
961+ then df.originCaller
962+ else df.caller
963+ let bF = toBase58String(df.transactionId)
964+ let bG = value(dg.assetId)
965+ let cl = dg.amount
966+ if ((1000000000 > cl))
967+ then throw("Min pmt 10 LP")
968+ else if (if ((0 > be))
969+ then true
970+ else (0 > eo))
971+ then throw("Wrong params")
972+ else if ((bJ != toBase58String(bG)))
973+ then throw("Wrong LP")
636974 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))
647- then true
648- else (dP > cn))
649- then throw("invalid payment amount")
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))
975+ let cx = bE(toBase58String(df.transactionId), toBase58String(bG), cl, df.caller)
976+ let eq = cx._1
977+ let er = cx._2
978+ let bQ = aW(bK)
979+ let bS = aW(bL)
980+ let dR = (bQ - eq)
981+ let dS = (bS - er)
982+ let eB = if ((ep == bK))
983+ then $Tuple3(dS, dR, er)
984+ else if ((ep == bL))
985+ then $Tuple3(dR, dS, eq)
986+ else throw("wrong outAssetId")
987+ let eC = eB._1
988+ let eD = eB._2
989+ let eE = eB._3
990+ let eF = 1
991+ let em = {
992+ let eh = invoke(dL, "calcSwapXToY", [toString(eE), toString(eC), toString(eD), "", az, g, toString(eF), h], nil)
993+ if ($isInstanceOf(eh, "Int"))
994+ then eh
995+ else throw(($getType(invoke(dL, "calcSwapXToY", [toString(eE), toString(eC), toString(eD), "", az, g, toString(eF), h], nil)) + " couldn't be cast to Int"))
996+ }
997+ let et = if ((ep == bK))
998+ then (eq + em)
999+ else (er + em)
1000+ let eu = bb(toBigInt(et), toBigInt(eo), toBigInt(be))
1001+ if ((eu == eu))
6621002 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))
1003+ let eG = if ((ep == bK))
1004+ then $Tuple2(toInt(eu._2), 0)
1005+ else $Tuple2(0, toInt(eu._2))
1006+ let ew = eG._1
1007+ let ex = eG._2
1008+ let ey = aY(B(bS, bN), B(bQ, bM))
1009+ let ez = E(ey, a)
1010+ let cc = [ScriptTransfer(bI, (ew + ex), if ((ep == "WAVES"))
1011+ then unit
1012+ else fromBase58String(ep)), StringEntry(W(toString(bI), bF), aS(ew, ex, cl, ez, height, lastBlock.timestamp)), IntegerEntry(P(), ez), IntegerEntry(Q(height, lastBlock.timestamp), ez)]
1013+ if ((cc == cc))
6731014 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))
689- then {
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- }
708- else throw("Strict value is not equal to itself.")
709- }
710- else throw("Strict value is not equal to itself.")
711- }
1015+ let eA = invoke(ay, "burn", [cl], [AttachedPayment(bG, cl)])
1016+ if ((eA == eA))
1017+ then cc
7121018 else throw("Strict value is not equal to itself.")
7131019 }
7141020 else throw("Strict value is not equal to itself.")
7151021 }
7161022 else throw("Strict value is not equal to itself.")
7171023 }
718- }
719- }
720-
721-
722-
723-@Callable(dh)
724-func putForFree (ej) = if ((0 > ej))
725- then throw("Wrong slpg")
726- else if ((size(dh.payments) != 2))
727- then throw("2 pmnts expd")
728- else {
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
731- }
732-
733-
734-
735-@Callable(dh)
736-func get () = {
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
746- else throw("Strict value is not equal to itself.")
747- }
748-
749-
750-
751-@Callable(dh)
752-func getOneTkn (em,en,eo,ep,bg) = if ((size(dh.payments) != 1))
753- then throw("1 pmnt expd")
754- else {
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- }
8441024 }
8451025
8461026
8471027
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)))
1028+@Callable(df)
1029+func getNoLess (eH,eI) = {
1030+ let cx = de(df)
1031+ let ca = cx._1
1032+ let cb = cx._2
1033+ let cl = cx._3
1034+ let bG = cx._4
1035+ let cc = cx._5
1036+ if ((eH > ca))
1037+ then throw(((("Failed: " + toString(ca)) + " < ") + toString(eH)))
1038+ else if ((eI > cb))
1039+ then throw(((("Failed: " + toString(cb)) + " < ") + toString(eI)))
8601040 else {
861- let eG = invoke(az, "burn", [cn], [AttachedPayment(bI, cn)])
862- if ((eG == eG))
863- then ce
1041+ let eJ = invoke(ay, "burn", [cl], [AttachedPayment(bG, cl)])
1042+ if ((eJ == eJ))
1043+ then cc
8641044 else throw("Strict value is not equal to itself.")
8651045 }
8661046 }
8671047
8681048
8691049
870-@Callable(dh)
871-func unstakeAndGet (do) = {
872- let eH = if ((size(dh.payments) != 0))
1050+@Callable(df)
1051+func unstakeAndGet (eK) = {
1052+ let eL = if ((size(df.payments) != 0))
8731053 then throw("No pmnts expd")
8741054 else true
875- if ((eH == eH))
1055+ if ((eL == eL))
8761056 then {
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))
1057+ let bv = aC()
1058+ let eM = aG()
1059+ let dB = fromBase58String(bv[q])
1060+ let eN = valueOrErrorMessage(addressFromString(eM[x]), "Wr st addr")
1061+ let eO = invoke(eN, "unstake", [toBase58String(dB), eK], nil)
1062+ if ((eO == eO))
8831063 then {
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())
1064+ let cx = bE(toBase58String(df.transactionId), toBase58String(dB), eK, df.caller)
1065+ let bO = parseIntValue(cx._9)
1066+ let cc = cx._10
1067+ let eP = if (if (aA())
8881068 then true
889- else (bQ == o))
890- then throw(("Blocked: " + toString(bQ)))
1069+ else (bO == n))
1070+ then throw(("Blocked: " + toString(bO)))
8911071 else true
892- if ((eL == eL))
1072+ if ((eP == eP))
8931073 then {
894- let eM = invoke(az, "burn", [do], [AttachedPayment(dH, do)])
895- if ((eM == eM))
896- then ce
1074+ let eQ = invoke(ay, "burn", [eK], [AttachedPayment(dB, eK)])
1075+ if ((eQ == eQ))
1076+ then cc
8971077 else throw("Strict value is not equal to itself.")
8981078 }
8991079 else throw("Strict value is not equal to itself.")
9001080 }
9011081 else throw("Strict value is not equal to itself.")
9021082 }
9031083 else throw("Strict value is not equal to itself.")
9041084 }
9051085
9061086
9071087
908-@Callable(dh)
909-func activate (eN,eO) = if ((toString(dh.caller) != toString(az)))
1088+@Callable(df)
1089+func activate (eR,eS) = if ((toString(df.caller) != toString(ay)))
9101090 then throw("denied")
911- else $Tuple2([StringEntry(Y(), eN), StringEntry(Z(), eO)], "success")
1091+ else $Tuple2([StringEntry(X(), eR), StringEntry(Y(), eS)], "success")
9121092
9131093
9141094
915-@Callable(dh)
916-func setS (eP,eL) = if ((toString(dh.caller) != av(this, ab())))
917- then dt
918- else [StringEntry(eP, eL)]
1095+@Callable(df)
1096+func setS (eT,eP) = if ((toString(df.caller) != au(this, aa())))
1097+ then dn
1098+ else [StringEntry(eT, eP)]
9191099
9201100
9211101
922-@Callable(dh)
923-func setI (eP,eL) = if ((toString(dh.caller) != av(this, ab())))
924- then dt
925- else [IntegerEntry(eP, eL)]
1102+@Callable(df)
1103+func setI (eT,eP) = if ((toString(df.caller) != au(this, aa())))
1104+ then dn
1105+ else [IntegerEntry(eT, eP)]
9261106
9271107
9281108
929-@Callable(dh)
930-func getPoolConfigWrapperREADONLY () = $Tuple2(nil, aE())
1109+@Callable(df)
1110+func getPoolConfigWrapperREADONLY () = $Tuple2(nil, aC())
9311111
9321112
9331113
934-@Callable(dh)
935-func getAccBalanceWrapperREADONLY (aZ) = $Tuple2(nil, aY(aZ))
1114+@Callable(df)
1115+func getAccBalanceWrapperREADONLY (aX) = $Tuple2(nil, aW(aX))
9361116
9371117
9381118
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])])
1119+@Callable(df)
1120+func calcPricesWrapperREADONLY (bp,bq,bu) = {
1121+ let eU = bt(bp, bq, bu)
1122+ $Tuple2(nil, [toString(eU[0]), toString(eU[1]), toString(eU[2])])
9431123 }
9441124
9451125
9461126
947-@Callable(dh)
948-func fromX18WrapperREADONLY (G,eR) = $Tuple2(nil, F(parseBigIntValue(G), eR))
1127+@Callable(df)
1128+func fromX18WrapperREADONLY (F,eV) = $Tuple2(nil, E(parseBigIntValue(F), eV))
9491129
9501130
9511131
952-@Callable(dh)
953-func toX18WrapperREADONLY (D,E) = $Tuple2(nil, toString(C(D, E)))
1132+@Callable(df)
1133+func toX18WrapperREADONLY (C,D) = $Tuple2(nil, toString(B(C, D)))
9541134
9551135
9561136
957-@Callable(dh)
958-func calcPriceBigIntWrapperREADONLY (bb,bc) = $Tuple2(nil, toString(ba(parseBigIntValue(bb), parseBigIntValue(bc))))
1137+@Callable(df)
1138+func calcPriceBigIntWrapperREADONLY (aZ,ba) = $Tuple2(nil, toString(aY(parseBigIntValue(aZ), parseBigIntValue(ba))))
9591139
9601140
9611141
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, ""))
1142+@Callable(df)
1143+func estimatePutOperationWrapperREADONLY (bF,be,ce,cf,cg,ch,eW,ci,cj) = $Tuple2(nil, cd(bF, be, ce, cf, cg, ch, eW, ci, cj, false, 0, ""))
9641144
9651145
9661146
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))
1147+@Callable(df)
1148+func estimateGetOperationWrapperREADONLY (bF,eX,bH,eW) = {
1149+ let cx = bE(bF, eX, bH, addressFromStringValue(eW))
1150+ $Tuple2(nil, $Tuple10(cx._1, cx._2, cx._3, cx._4, cx._5, cx._6, cx._7, toString(cx._8), cx._9, cx._10))
9711151 }
9721152
9731153
974-@Verifier(eU)
975-func eV () = {
976- let eW = {
977- let at = dq()
978- if ($isInstanceOf(at, "ByteVector"))
1154+@Verifier(eY)
1155+func eZ () = {
1156+ let fa = {
1157+ let as = dk()
1158+ if ($isInstanceOf(as, "ByteVector"))
9791159 then {
980- let dv = at
981- dv
1160+ let dp = as
1161+ dp
9821162 }
983- else if ($isInstanceOf(at, "Unit"))
984- then eU.senderPublicKey
1163+ else if ($isInstanceOf(as, "Unit"))
1164+ then eY.senderPublicKey
9851165 else throw("Match error")
9861166 }
987- let at = eU
988- if ($isInstanceOf(at, "Order"))
1167+ let as = eY
1168+ if ($isInstanceOf(as, "Order"))
9891169 then {
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
1170+ let cS = as
1171+ let fb = aB()
1172+ let fc = cR(cS)
1173+ let fd = sigVerify(cS.bodyBytes, cS.proofs[0], cS.senderPublicKey)
1174+ let fe = sigVerify(cS.bodyBytes, cS.proofs[1], fb)
1175+ if (if (if (fc)
1176+ then fd
9971177 else false)
998- then fa
1178+ then fe
9991179 else false)
10001180 then true
1001- else ao(eY, eZ, fa)
1181+ else an(fc, fd, fe)
10021182 }
1003- else if ($isInstanceOf(at, "SetScriptTransaction"))
1183+ else if ($isInstanceOf(as, "SetScriptTransaction"))
10041184 then {
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)
1185+ let dl = as
1186+ let ff = blake2b256(value(dl.script))
1187+ let fg = fromBase64String(value(getString(ay, am())))
1188+ let fh = scriptHash(this)
1189+ if (if ((fg == ff))
1190+ then (fh != ff)
10111191 else false)
10121192 then true
1013- else sigVerify(eU.bodyBytes, eU.proofs[0], eW)
1193+ else sigVerify(eY.bodyBytes, eY.proofs[0], fa)
10141194 }
1015- else sigVerify(eU.bodyBytes, eU.proofs[0], eW)
1195+ else sigVerify(eY.bodyBytes, eY.proofs[0], fa)
10161196 }
10171197

github/deemru/w8io/169f3d6 
786.41 ms