tx · J5Lh9MkQ91t9KECkv7tAdt17itVkLFbzdZMGejJ2G3RB

3MzKSdTH2jFbypLsoNfrH7QgkzSbx3EYwCA:  -0.02900000 Waves

2022.09.12 17:24 [2226003] smart account 3MzKSdTH2jFbypLsoNfrH7QgkzSbx3EYwCA > SELF 0.00000000 Waves

{ "type": 13, "id": "J5Lh9MkQ91t9KECkv7tAdt17itVkLFbzdZMGejJ2G3RB", "fee": 2900000, "feeAssetId": null, "timestamp": 1662992756587, "version": 1, "sender": "3MzKSdTH2jFbypLsoNfrH7QgkzSbx3EYwCA", "senderPublicKey": "35yd3qw1gxKDxKwGAykHN9fANbXNWwseaUwbWDj24o3x", "proofs": [ "2mCyJRU8eUmxJzfXbFvsqyVHASyNERrZpJvc3SrfARmjE6qA5RbADyXkM5d5PTkpCq3YozsA7nngTDPzwoApb9oM" ], "script": "base64:BgJ/CAISAwoBCBIDCgEIEgASBAoCAQQSBwoFAQEBAQQSAwoBARIAEgcKBQEBAQgBEgQKAgEBEgMKAQESBAoCCAgSBAoCCAgSBAoCCAESABIDCgEIEgUKAwEBARIECgIIARIECgIBARIECgIICBILCgkIAQECAQIIBAQSBgoECAgBCFIABnNjYWxlOACAwtcvAAxzY2FsZThCaWdJbnQJALYCAQCAwtcvAAdzY2FsZTE4CQC2AgEAgICQu7rWrfANAAh0aG91c2FuZADoBwAKemVyb0JpZ0ludAkAtgIBAAAACW9uZUJpZ0ludAkAtgIBAAEACnNsaXBwYWdlNEQJALYCAQkAZQIFBnNjYWxlOAkAaQIJAGgCBQZzY2FsZTgAAQUGc2NhbGU4AAVBbXVsdAIDMTAwAAVEY29udgIBMQADU0VQAgJfXwAFRU1QVFkCAAAKUG9vbEFjdGl2ZQABAApQb29sUHV0RGlzAAIADlBvb2xNYXRjaGVyRGlzAAMADFBvb2xTaHV0ZG93bgAEAA5pZHhQb29sQWRkcmVzcwABAAlpZHhQb29sU3QAAgAJaWR4TFBBc0lkAAMACWlkeEFtQXNJZAAEAAlpZHhQckFzSWQABQALaWR4QW10QXNEY20ABgANaWR4UHJpY2VBc0RjbQAHAAtpZHhJQW10QXNJZAAIAA1pZHhJUHJpY2VBc0lkAAkAD2lkeEZhY3RTdGFrQ250cgABABBpZHhGYWN0U2xpcHBDbnRyAAcAEWlkeEZhY3RHd3hSZXdDbnRyAAoAEmZlZVBlcm1pbGxlRGVmYXVsdAAAAQJ0MQIHb3JpZ1ZhbA1vcmlnU2NhbGVNdWx0CQC8AgMJALYCAQUHb3JpZ1ZhbAUHc2NhbGUxOAkAtgIBBQ1vcmlnU2NhbGVNdWx0AQJmMQIDdmFsD3Jlc3VsdFNjYWxlTXVsdAkAoAMBCQC8AgMFA3ZhbAkAtgIBBQ9yZXN1bHRTY2FsZU11bHQFB3NjYWxlMTgBAnRzAwNhbXQIcmVzU2NhbGUIY3VyU2NhbGUJAGsDBQNhbXQFCHJlc1NjYWxlBQhjdXJTY2FsZQEDYWJzAQN2YWwDCQC/AgIFCnplcm9CaWdJbnQFA3ZhbAkAvgIBBQN2YWwFA3ZhbAECZmMAAhMlc19fZmFjdG9yeUNvbnRyYWN0AQNtcGsAAhQlc19fbWFuYWdlclB1YmxpY0tleQEEcG1wawACGyVzX19wZW5kaW5nTWFuYWdlclB1YmxpY0tleQECcGwAAhElcyVzX19wcmljZV9fbGFzdAECcGgCAWgBdAkAuQkCCQDMCAICGCVzJXMlZCVkX19wcmljZV9faGlzdG9yeQkAzAgCCQCkAwEFAWgJAMwIAgkApAMBBQF0BQNuaWwFA1NFUAEDcGF1AgJ1YQR0eElkCQCsAgIJAKwCAgkArAICAgslcyVzJXNfX1BfXwUCdWECAl9fBQR0eElkAQNnYXUCAnVhBHR4SWQJAKwCAgkArAICCQCsAgICCyVzJXMlc19fR19fBQJ1YQICX18FBHR4SWQBAmFhAAIPJXNfX2Ftb3VudEFzc2V0AQJwYQACDiVzX19wcmljZUFzc2V0AQNhbXAAAgclc19fYW1wAQNhZGEAAg0lc19fYWRkb25BZGRyAA5rZXlGZWVQZXJtaWxsZQIPJXNfX2ZlZVBlcm1pbGxlAAtmZWVQZXJtaWxsZQkBC3ZhbHVlT3JFbHNlAgkAmggCBQR0aGlzBQ5rZXlGZWVQZXJtaWxsZQUSZmVlUGVybWlsbGVEZWZhdWx0AQRmY2ZnAAIRJXNfX2ZhY3RvcnlDb25maWcBBG10cGsAAhglcyVzX19tYXRjaGVyX19wdWJsaWNLZXkBAnBjAgZpQW10QXMFaVByQXMJAKwCAgkArAICCQCsAgIJAKwCAgIIJWQlZCVzX18FBmlBbXRBcwICX18FBWlQckFzAghfX2NvbmZpZwEDbWJhAQViQVN0cgkArAICAiglcyVzJXNfX21hcHBpbmdzX19iYXNlQXNzZXQyaW50ZXJuYWxJZF9fBQViQVN0cgEDYXBzAAIMJXNfX3NodXRkb3duARxrZXlBbGxvd2VkTHBTdGFibGVTY3JpcHRIYXNoAAIdJXNfX2FsbG93ZWRMcFN0YWJsZVNjcmlwdEhhc2gBFmtleUZlZUNvbGxlY3RvckFkZHJlc3MAAhclc19fZmVlQ29sbGVjdG9yQWRkcmVzcwEDdG9lAwNvclYGc2VuZHJWBm1hdGNoVgkAAgEJAKwCAgkArAICCQCsAgIJAKwCAgkArAICAhFGYWlsZWQ6IG9yZFZhbGlkPQkApQMBBQNvclYCCyBzbmRyVmFsaWQ9CQClAwEFBnNlbmRyVgIMIG10Y2hyVmFsaWQ9CQClAwEFBm1hdGNoVgEDc3RyAQN2YWwEByRtYXRjaDAFA3ZhbAMJAAECBQckbWF0Y2gwAgZTdHJpbmcEBnZhbFN0cgUHJG1hdGNoMAUGdmFsU3RyCQACAQITZmFpbCBjYXN0IHRvIFN0cmluZwEEc3RyZgIEYWRkcgNrZXkJARN2YWx1ZU9yRXJyb3JNZXNzYWdlAgkAnQgCBQRhZGRyBQNrZXkJALkJAgkAzAgCAgptYW5kYXRvcnkgCQDMCAIJAKUIAQUEYWRkcgkAzAgCAgEuCQDMCAIFA2tleQkAzAgCAgwgbm90IGRlZmluZWQFA25pbAIAAQRpbnRmAgRhZGRyA2tleQkBE3ZhbHVlT3JFcnJvck1lc3NhZ2UCCQCaCAIFBGFkZHIFA2tleQkAuQkCCQDMCAICCm1hbmRhdG9yeSAJAMwIAgkApQgBBQRhZGRyCQDMCAICAS4JAMwIAgUDa2V5CQDMCAICDCBub3QgZGVmaW5lZAUDbmlsAgAAA2ZjYQkBEUBleHRyTmF0aXZlKDEwNjIpAQkBBHN0cmYCBQR0aGlzCQECZmMAAAFBCQEEc3RyZgIFBHRoaXMJAQNhbXAAAQNpZ3MACQELdmFsdWVPckVsc2UCCQCbCAIFA2ZjYQkBA2FwcwAHAQJtcAAJANkEAQkBBHN0cmYCBQNmY2EJAQRtdHBrAAATZmVlQ29sbGVjdG9yQWRkcmVzcwkBEUBleHRyTmF0aXZlKDEwNjIpAQkBBHN0cmYCBQNmY2EJARZrZXlGZWVDb2xsZWN0b3JBZGRyZXNzAAEDZ3BjAAQFYW10QXMJAQRzdHJmAgUEdGhpcwkBAmFhAAQHcHJpY2VBcwkBBHN0cmYCBQR0aGlzCQECcGEABAhpUHJpY2VBcwkBBGludGYCBQNmY2EJAQNtYmEBBQdwcmljZUFzBAZpQW10QXMJAQRpbnRmAgUDZmNhCQEDbWJhAQUFYW10QXMJALUJAgkBBHN0cmYCBQNmY2EJAQJwYwIJAKQDAQUGaUFtdEFzCQCkAwEFCGlQcmljZUFzBQNTRVABA2dmYwAJALUJAgkBBHN0cmYCBQNmY2EJAQRmY2ZnAAUDU0VQARFkYXRhUHV0QWN0aW9uSW5mbwoNaW5BbXRBc3NldEFtdA9pblByaWNlQXNzZXRBbXQIb3V0THBBbXQFcHJpY2UKc2xpcEJ5VXNlcgxzbGlwcGFnZVJlYWwIdHhIZWlnaHQLdHhUaW1lc3RhbXAMc2xpcGFnZUFtQW10DHNsaXBhZ2VQckFtdAkAuQkCCQDMCAICFCVkJWQlZCVkJWQlZCVkJWQlZCVkCQDMCAIJAKQDAQUNaW5BbXRBc3NldEFtdAkAzAgCCQCkAwEFD2luUHJpY2VBc3NldEFtdAkAzAgCCQCkAwEFCG91dExwQW10CQDMCAIJAKQDAQUFcHJpY2UJAMwIAgkApAMBBQpzbGlwQnlVc2VyCQDMCAIJAKQDAQUMc2xpcHBhZ2VSZWFsCQDMCAIJAKQDAQUIdHhIZWlnaHQJAMwIAgkApAMBBQt0eFRpbWVzdGFtcAkAzAgCCQCkAwEFDHNsaXBhZ2VBbUFtdAkAzAgCCQCkAwEFDHNsaXBhZ2VQckFtdAUDbmlsBQNTRVABEWRhdGFHZXRBY3Rpb25JbmZvBg5vdXRBbXRBc3NldEFtdBBvdXRQcmljZUFzc2V0QW10B2luTHBBbXQFcHJpY2UIdHhIZWlnaHQLdHhUaW1lc3RhbXAJALkJAgkAzAgCAgwlZCVkJWQlZCVkJWQJAMwIAgkApAMBBQ5vdXRBbXRBc3NldEFtdAkAzAgCCQCkAwEFEG91dFByaWNlQXNzZXRBbXQJAMwIAgkApAMBBQdpbkxwQW10CQDMCAIJAKQDAQUFcHJpY2UJAMwIAgkApAMBBQh0eEhlaWdodAkAzAgCCQCkAwEFC3R4VGltZXN0YW1wBQNuaWwFA1NFUAENZ2V0QWNjQmFsYW5jZQEHYXNzZXRJZAMJAAACBQdhc3NldElkAgVXQVZFUwgJAO8HAQUEdGhpcwlhdmFpbGFibGUJAPAHAgUEdGhpcwkA2QQBBQdhc3NldElkAQRjcGJpAghwckFtdFgxOAhhbUFtdFgxOAkAvAIDBQhwckFtdFgxOAUHc2NhbGUxOAUIYW1BbXRYMTgBA3ZhZAMCQTECQTIIc2xpcHBhZ2UEBGRpZmYJALwCAwkAuAICBQJBMQUCQTIFDHNjYWxlOEJpZ0ludAUCQTIEBHBhc3MJAL8CAgkAuAICBQhzbGlwcGFnZQkBA2FicwEFBGRpZmYFCnplcm9CaWdJbnQDCQEBIQEFBHBhc3MJAAIBCQCsAgICCkJpZyBzbHBnOiAJAKYDAQUEZGlmZgkAlAoCBQRwYXNzCQCZAwEJAMwIAgUCQTEJAMwIAgUCQTIFA25pbAECdmQDAkQxAkQwBHNscGcEBGRpZmYJALwCAwUCRDAFDHNjYWxlOEJpZ0ludAUCRDEEBGZhaWwJAL8CAgUEc2xwZwUEZGlmZgMDBQRmYWlsBgkAvwICBQJEMAUCRDEJAAIBCQCsAgIJAKwCAgkArAICCQCsAgIJAKwCAgkArAICCQCmAwEFAkQwAgEgCQCmAwEFAkQxAgEgCQCmAwEFBGRpZmYCASAJAKYDAQUEc2xwZwUEZmFpbAEDcGNwBAphbUFzc2V0RGNtCnByQXNzZXREY20FYW1BbXQFcHJBbXQEC2FtdEFzQW10WDE4CQECdDECBQVhbUFtdAUKYW1Bc3NldERjbQQKcHJBc0FtdFgxOAkBAnQxAgUFcHJBbXQFCnByQXNzZXREY20JAQRjcGJpAgUKcHJBc0FtdFgxOAULYW10QXNBbXRYMTgBCmNhbGNQcmljZXMDBWFtQW10BXByQW10BWxwQW10BANjZmcJAQNncGMABAhhbXRBc0RjbQkBDXBhcnNlSW50VmFsdWUBCQCRAwIFA2NmZwULaWR4QW10QXNEY20EB3ByQXNEY20JAQ1wYXJzZUludFZhbHVlAQkAkQMCBQNjZmcFDWlkeFByaWNlQXNEY20ECHByaWNlWDE4CQEDcGNwBAUIYW10QXNEY20FB3ByQXNEY20FBWFtQW10BQVwckFtdAQIYW1BbXRYMTgJAQJ0MQIFBWFtQW10BQhhbXRBc0RjbQQIcHJBbXRYMTgJAQJ0MQIFBXByQW10BQdwckFzRGNtBAhscEFtdFgxOAkBAnQxAgUFbHBBbXQFBnNjYWxlOAQNbHBQckluQW1Bc1gxOAkBBGNwYmkCBQhhbUFtdFgxOAUIbHBBbXRYMTgEDWxwUHJJblByQXNYMTgJAQRjcGJpAgUIcHJBbXRYMTgFCGxwQW10WDE4CQDMCAIFCHByaWNlWDE4CQDMCAIFDWxwUHJJbkFtQXNYMTgJAMwIAgUNbHBQckluUHJBc1gxOAUDbmlsAQ9jYWxjdWxhdGVQcmljZXMDBWFtQW10BXByQW10BWxwQW10BAFwCQEKY2FsY1ByaWNlcwMFBWFtQW10BQVwckFtdAUFbHBBbXQJAMwIAgkBAmYxAgkAkQMCBQFwAAAFBnNjYWxlOAkAzAgCCQECZjECCQCRAwIFAXAAAQUGc2NhbGU4CQDMCAIJAQJmMQIJAJEDAgUBcAACBQZzY2FsZTgFA25pbAEDZWdvBAZ0eElkNTgKcG10QXNzZXRJZAhwbXRMcEFtdAt1c2VyQWRkcmVzcwQDY2ZnCQEDZ3BjAAQEbHBJZAkAkQMCBQNjZmcFCWlkeExQQXNJZAQEYW1JZAkAkQMCBQNjZmcFCWlkeEFtQXNJZAQEcHJJZAkAkQMCBQNjZmcFCWlkeFByQXNJZAQFYW1EY20JAQ1wYXJzZUludFZhbHVlAQkAkQMCBQNjZmcFC2lkeEFtdEFzRGNtBAVwckRjbQkBDXBhcnNlSW50VmFsdWUBCQCRAwIFA2NmZwUNaWR4UHJpY2VBc0RjbQQDc3RzCQCRAwIFA2NmZwUJaWR4UG9vbFN0BAdscEVtaXNzCAkBE3ZhbHVlT3JFcnJvck1lc3NhZ2UCCQDsBwEJANkEAQUEbHBJZAILV3JvbmcgTFAgaWQIcXVhbnRpdHkDCQECIT0CBQRscElkBQpwbXRBc3NldElkCQACAQIPV3JvbmcgcG10IGFzc2V0BAlhbUJhbGFuY2UJAQ1nZXRBY2NCYWxhbmNlAQUEYW1JZAQMYW1CYWxhbmNlWDE4CQECdDECBQlhbUJhbGFuY2UFBWFtRGNtBAlwckJhbGFuY2UJAQ1nZXRBY2NCYWxhbmNlAQUEcHJJZAQMcHJCYWxhbmNlWDE4CQECdDECBQlwckJhbGFuY2UFBXByRGNtBAtjdXJQcmljZVgxOAkBBGNwYmkCBQxwckJhbGFuY2VYMTgFDGFtQmFsYW5jZVgxOAQIY3VyUHJpY2UJAQJmMQIFC2N1clByaWNlWDE4BQZzY2FsZTgEC3BtdExwQW10WDE4CQECdDECBQhwbXRMcEFtdAUGc2NhbGU4BApscEVtaXNzWDE4CQECdDECBQdscEVtaXNzBQZzY2FsZTgEC291dEFtQW10WDE4CQC8AgMFDGFtQmFsYW5jZVgxOAULcG10THBBbXRYMTgFCmxwRW1pc3NYMTgEC291dFByQW10WDE4CQC8AgMFDHByQmFsYW5jZVgxOAULcG10THBBbXRYMTgFCmxwRW1pc3NYMTgECG91dEFtQW10CQECZjECBQtvdXRBbUFtdFgxOAUFYW1EY20ECG91dFByQW10CQECZjECBQtvdXRQckFtdFgxOAUFcHJEY20EBXN0YXRlAwkAAAIFBnR4SWQ1OAIABQNuaWwJAMwIAgkBDlNjcmlwdFRyYW5zZmVyAwULdXNlckFkZHJlc3MFCG91dEFtQW10AwkAAAIFBGFtSWQCBVdBVkVTBQR1bml0CQDZBAEFBGFtSWQJAMwIAgkBDlNjcmlwdFRyYW5zZmVyAwULdXNlckFkZHJlc3MFCG91dFByQW10AwkAAAIFBHBySWQCBVdBVkVTBQR1bml0CQDZBAEFBHBySWQJAMwIAgkBC1N0cmluZ0VudHJ5AgkBA2dhdQIJAKUIAQULdXNlckFkZHJlc3MFBnR4SWQ1OAkBEWRhdGFHZXRBY3Rpb25JbmZvBgUIb3V0QW1BbXQFCG91dFByQW10BQhwbXRMcEFtdAUIY3VyUHJpY2UFBmhlaWdodAgFCWxhc3RCbG9jawl0aW1lc3RhbXAJAMwIAgkBDEludGVnZXJFbnRyeQIJAQJwbAAFCGN1clByaWNlCQDMCAIJAQxJbnRlZ2VyRW50cnkCCQECcGgCBQZoZWlnaHQIBQlsYXN0QmxvY2sJdGltZXN0YW1wBQhjdXJQcmljZQUDbmlsCQCcCgoFCG91dEFtQW10BQhvdXRQckFtdAUEYW1JZAUEcHJJZAUJYW1CYWxhbmNlBQlwckJhbGFuY2UFB2xwRW1pc3MFC2N1clByaWNlWDE4BQNzdHMFBXN0YXRlAQNlcG8MBnR4SWQ1OAhzbGlwcGFnZQdpbkFtQW10BmluQW1JZAdpblByQW10BmluUHJJZAt1c2VyQWRkcmVzcwZpc0V2YWwGZW1pdExwCmlzT25lQXNzZXQGcG10QW10BXBtdElkBANjZmcJAQNncGMABARscElkCQDZBAEJAJEDAgUDY2ZnBQlpZHhMUEFzSWQEB2FtSWRTdHIJAJEDAgUDY2ZnBQlpZHhBbUFzSWQEB3BySWRTdHIJAJEDAgUDY2ZnBQlpZHhQckFzSWQECWluQW1JZFN0cgkAkQMCBQNjZmcFC2lkeElBbXRBc0lkBAlpblBySWRTdHIJAJEDAgUDY2ZnBQ1pZHhJUHJpY2VBc0lkBAZhbXREY20JAQ1wYXJzZUludFZhbHVlAQkAkQMCBQNjZmcFC2lkeEFtdEFzRGNtBAhwcmljZURjbQkBDXBhcnNlSW50VmFsdWUBCQCRAwIFA2NmZwUNaWR4UHJpY2VBc0RjbQQDc3RzCQCRAwIFA2NmZwUJaWR4UG9vbFN0BARscEVtCAkBE3ZhbHVlT3JFcnJvck1lc3NhZ2UCCQDsBwEFBGxwSWQCCFdyIGxwIGFzCHF1YW50aXR5BAlhbUJhbGFuY2UDBQZpc0V2YWwJAQ1nZXRBY2NCYWxhbmNlAQUHYW1JZFN0cgMDBQppc09uZUFzc2V0CQAAAgUFcG10SWQFB2FtSWRTdHIHCQBlAgkBDWdldEFjY0JhbGFuY2UBBQdhbUlkU3RyBQZwbXRBbXQDBQppc09uZUFzc2V0CQENZ2V0QWNjQmFsYW5jZQEFB2FtSWRTdHIJAGUCCQENZ2V0QWNjQmFsYW5jZQEFB2FtSWRTdHIFB2luQW1BbXQECXByQmFsYW5jZQMFBmlzRXZhbAkBDWdldEFjY0JhbGFuY2UBBQdwcklkU3RyAwMFCmlzT25lQXNzZXQJAAACBQVwbXRJZAUHcHJJZFN0cgcJAGUCCQENZ2V0QWNjQmFsYW5jZQEFB3BySWRTdHIFBnBtdEFtdAMFCmlzT25lQXNzZXQJAQ1nZXRBY2NCYWxhbmNlAQUHcHJJZFN0cgkAZQIJAQ1nZXRBY2NCYWxhbmNlAQUHcHJJZFN0cgUHaW5QckFtdAQPaW5BbUFzc2V0QW10WDE4CQECdDECBQdpbkFtQW10BQZhbXREY20ED2luUHJBc3NldEFtdFgxOAkBAnQxAgUHaW5QckFtdAUIcHJpY2VEY20EDHVzZXJQcmljZVgxOAkBBGNwYmkCBQ9pblByQXNzZXRBbXRYMTgFD2luQW1Bc3NldEFtdFgxOAQMYW1CYWxhbmNlWDE4CQECdDECBQlhbUJhbGFuY2UFBmFtdERjbQQMcHJCYWxhbmNlWDE4CQECdDECBQlwckJhbGFuY2UFCHByaWNlRGNtBAFyAwkAAAIFBGxwRW0AAAQLY3VyUHJpY2VYMTgFCnplcm9CaWdJbnQEC3NsaXBwYWdlWDE4BQp6ZXJvQmlnSW50BAhscEFtdFgxOAkAdgYJALkCAgUPaW5BbUFzc2V0QW10WDE4BQ9pblByQXNzZXRBbXRYMTgAAAkAtgIBAAUAAQAABQRET1dOCQCXCgUJAQJmMQIFCGxwQW10WDE4BQZzY2FsZTgJAQJmMQIFD2luQW1Bc3NldEFtdFgxOAUGYW10RGNtCQECZjECBQ9pblByQXNzZXRBbXRYMTgFCHByaWNlRGNtCQEEY3BiaQIJALcCAgUMcHJCYWxhbmNlWDE4BQ9pblByQXNzZXRBbXRYMTgJALcCAgUMYW1CYWxhbmNlWDE4BQ9pbkFtQXNzZXRBbXRYMTgFC3NsaXBwYWdlWDE4BAtjdXJQcmljZVgxOAkBBGNwYmkCBQxwckJhbGFuY2VYMTgFDGFtQmFsYW5jZVgxOAQPc2xpcHBhZ2VSZWFsWDE4CQC8AgMJAQNhYnMBCQC4AgIFC2N1clByaWNlWDE4BQx1c2VyUHJpY2VYMTgFB3NjYWxlMTgFC2N1clByaWNlWDE4BAtzbGlwcGFnZVgxOAkBAnQxAgUIc2xpcHBhZ2UFBnNjYWxlOAMDCQECIT0CBQtjdXJQcmljZVgxOAUKemVyb0JpZ0ludAkAvwICBQ9zbGlwcGFnZVJlYWxYMTgFC3NsaXBwYWdlWDE4BwkAAgEJAKwCAgkArAICCQCsAgICD1ByaWNlIHNsaXBwYWdlIAkApgMBBQ9zbGlwcGFnZVJlYWxYMTgCAyA+IAkApgMBBQtzbGlwcGFnZVgxOAQNbHBFbWlzc2lvblgxOAkBAnQxAgUEbHBFbQUGc2NhbGU4BApwclZpYUFtWDE4CQC8AgMFD2luQW1Bc3NldEFtdFgxOAULY3VyUHJpY2VYMTgFB3NjYWxlMTgECmFtVmlhUHJYMTgJALwCAwUPaW5QckFzc2V0QW10WDE4BQdzY2FsZTE4BQtjdXJQcmljZVgxOAQMZXhwZWN0ZWRBbXRzAwkAvwICBQpwclZpYUFtWDE4BQ9pblByQXNzZXRBbXRYMTgJAJQKAgUKYW1WaWFQclgxOAUPaW5QckFzc2V0QW10WDE4CQCUCgIFD2luQW1Bc3NldEFtdFgxOAUKcHJWaWFBbVgxOAQRZXhwQW10QXNzZXRBbXRYMTgIBQxleHBlY3RlZEFtdHMCXzEEE2V4cFByaWNlQXNzZXRBbXRYMTgIBQxleHBlY3RlZEFtdHMCXzIECGxwQW10WDE4CQC8AgMFDWxwRW1pc3Npb25YMTgFE2V4cFByaWNlQXNzZXRBbXRYMTgFDHByQmFsYW5jZVgxOAkAlwoFCQECZjECBQhscEFtdFgxOAUGc2NhbGU4CQECZjECBRFleHBBbXRBc3NldEFtdFgxOAUGYW10RGNtCQECZjECBRNleHBQcmljZUFzc2V0QW10WDE4BQhwcmljZURjbQULY3VyUHJpY2VYMTgFC3NsaXBwYWdlWDE4BAljYWxjTHBBbXQIBQFyAl8xBA5jYWxjQW1Bc3NldFBtdAgFAXICXzIEDmNhbGNQckFzc2V0UG10CAUBcgJfMwQIY3VyUHJpY2UJAQJmMQIIBQFyAl80BQZzY2FsZTgEDHNsaXBwYWdlQ2FsYwkBAmYxAggFAXICXzUFBnNjYWxlOAMJAGcCAAAFCWNhbGNMcEFtdAkAAgECB0xQIDw9IDAECWVtaXRMcEFtdAMJAQEhAQUGZW1pdExwAAAFCWNhbGNMcEFtdAQGYW1EaWZmCQBlAgUHaW5BbUFtdAUOY2FsY0FtQXNzZXRQbXQEBnByRGlmZgkAZQIFB2luUHJBbXQFDmNhbGNQckFzc2V0UG10BA0kdDAxNTY4MjE2MDI3AwMFCmlzT25lQXNzZXQJAAACBQVwbXRJZAUHYW1JZFN0cgcJAJQKAgUGcG10QW10AAADAwUKaXNPbmVBc3NldAkAAAIFBXBtdElkBQdwcklkU3RyBwkAlAoCAAAFBnBtdEFtdAkAlAoCBQ5jYWxjQW1Bc3NldFBtdAUOY2FsY1ByQXNzZXRQbXQECndyaXRlQW1BbXQIBQ0kdDAxNTY4MjE2MDI3Al8xBAp3cml0ZVByQW10CAUNJHQwMTU2ODIxNjAyNwJfMgQLY29tbW9uU3RhdGUJAMwIAgkBDEludGVnZXJFbnRyeQIJAQJwbAAFCGN1clByaWNlCQDMCAIJAQxJbnRlZ2VyRW50cnkCCQECcGgCBQZoZWlnaHQIBQlsYXN0QmxvY2sJdGltZXN0YW1wBQhjdXJQcmljZQkAzAgCCQELU3RyaW5nRW50cnkCCQEDcGF1AgULdXNlckFkZHJlc3MFBnR4SWQ1OAkBEWRhdGFQdXRBY3Rpb25JbmZvCgUKd3JpdGVBbUFtdAUKd3JpdGVQckFtdAUJZW1pdExwQW10BQhjdXJQcmljZQUIc2xpcHBhZ2UFDHNsaXBwYWdlQ2FsYwUGaGVpZ2h0CAUJbGFzdEJsb2NrCXRpbWVzdGFtcAUGYW1EaWZmBQZwckRpZmYFA25pbAkAnwoNBQljYWxjTHBBbXQFCWVtaXRMcEFtdAUIY3VyUHJpY2UFCWFtQmFsYW5jZQUJcHJCYWxhbmNlBQRscEVtBQRscElkBQNzdHMFC2NvbW1vblN0YXRlBQZhbURpZmYFBnByRGlmZgUGaW5BbUlkBQZpblBySWQBA21vYQEFb3JkZXIEA2NmZwkBA2dwYwAEB2FtdEFzSWQJAJEDAgUDY2ZnBQlpZHhBbUFzSWQEBnByQXNJZAkAkQMCBQNjZmcFCWlkeFByQXNJZAQDc3RzCQENcGFyc2VJbnRWYWx1ZQEJAJEDAgUDY2ZnBQlpZHhQb29sU3QECGFtdEFzRGNtCQENcGFyc2VJbnRWYWx1ZQEJAJEDAgUDY2ZnBQtpZHhBbXRBc0RjbQQHcHJBc0RjbQkBDXBhcnNlSW50VmFsdWUBCQCRAwIFA2NmZwUNaWR4UHJpY2VBc0RjbQQPYWNjQW10QXNCYWxhbmNlCQENZ2V0QWNjQmFsYW5jZQEFB2FtdEFzSWQEDmFjY1ByQXNCYWxhbmNlCQENZ2V0QWNjQmFsYW5jZQEFBnByQXNJZAQLY3VyUHJpY2VYMTgDCQAAAggFBW9yZGVyCW9yZGVyVHlwZQUDQnV5CQEDcGNwBAUIYW10QXNEY20FB3ByQXNEY20JAGQCBQ9hY2NBbXRBc0JhbGFuY2UIBQVvcmRlcgZhbW91bnQFDmFjY1ByQXNCYWxhbmNlCQEDcGNwBAUIYW10QXNEY20FB3ByQXNEY20JAGUCBQ9hY2NBbXRBc0JhbGFuY2UIBQVvcmRlcgZhbW91bnQFDmFjY1ByQXNCYWxhbmNlBAhjdXJQcmljZQkBAmYxAgULY3VyUHJpY2VYMTgFBnNjYWxlOAMDAwkBA2lncwAGCQAAAgUDc3RzBQ5Qb29sTWF0Y2hlckRpcwYJAAACBQNzdHMFDFBvb2xTaHV0ZG93bgkAAgECDUFkbWluIGJsb2NrZWQECm9yQW10QXNzZXQICAUFb3JkZXIJYXNzZXRQYWlyC2Ftb3VudEFzc2V0BApvckFtdEFzU3RyAwkAAAIFCm9yQW10QXNzZXQFBHVuaXQCBVdBVkVTCQDYBAEJAQV2YWx1ZQEFCm9yQW10QXNzZXQECW9yUHJBc3NldAgIBQVvcmRlcglhc3NldFBhaXIKcHJpY2VBc3NldAQJb3JQckFzU3RyAwkAAAIFCW9yUHJBc3NldAUEdW5pdAIFV0FWRVMJANgEAQkBBXZhbHVlAQUJb3JQckFzc2V0AwMJAQIhPQIFCm9yQW10QXNTdHIFB2FtdEFzSWQGCQECIT0CBQlvclByQXNTdHIFBnByQXNJZAkAAgECCVdyIGFzc2V0cwQKb3JkZXJQcmljZQgFBW9yZGVyBXByaWNlBAhwcmljZURjbQkAawMFBnNjYWxlOAUHcHJBc0RjbQUIYW10QXNEY20EDmNhc3RPcmRlclByaWNlCQECdHMDBQpvcmRlclByaWNlBQZzY2FsZTgFCHByaWNlRGNtBBFpc09yZGVyUHJpY2VWYWxpZAMJAAACCAUFb3JkZXIJb3JkZXJUeXBlBQNCdXkJAGcCBQhjdXJQcmljZQUOY2FzdE9yZGVyUHJpY2UJAGcCBQ5jYXN0T3JkZXJQcmljZQUIY3VyUHJpY2UGAQJjZwEBaQMJAQIhPQIJAJADAQgFAWkIcGF5bWVudHMAAQkAAgECCjEgcG1udCBleHAEA3BtdAkBBXZhbHVlAQkAkQMCCAUBaQhwYXltZW50cwAABApwbXRBc3NldElkCQEFdmFsdWUBCAUDcG10B2Fzc2V0SWQEBnBtdEFtdAgFA3BtdAZhbW91bnQEAXIJAQNlZ28ECQDYBAEIBQFpDXRyYW5zYWN0aW9uSWQJANgEAQUKcG10QXNzZXRJZAUGcG10QW10CAUBaQZjYWxsZXIECG91dEFtQW10CAUBcgJfMQQIb3V0UHJBbXQIBQFyAl8yBANzdHMJAQ1wYXJzZUludFZhbHVlAQgFAXICXzkEBXN0YXRlCAUBcgNfMTADAwkBA2lncwAGCQAAAgUDc3RzBQxQb29sU2h1dGRvd24JAAIBCQCsAgICD0FkbWluIGJsb2NrZWQ6IAkApAMBBQNzdHMJAJcKBQUIb3V0QW1BbXQFCG91dFByQW10BQZwbXRBbXQFCnBtdEFzc2V0SWQFBXN0YXRlAQJjcAkGY2FsbGVyBHR4SWQHYW1Bc1BtdAdwckFzUG10CHNsaXBwYWdlBmVtaXRMcAppc09uZUFzc2V0BnBtdEFtdAVwbXRJZAQBcgkBA2VwbwwFBHR4SWQFCHNsaXBwYWdlCAkBBXZhbHVlAQUHYW1Bc1BtdAZhbW91bnQICQEFdmFsdWUBBQdhbUFzUG10B2Fzc2V0SWQICQEFdmFsdWUBBQdwckFzUG10BmFtb3VudAgJAQV2YWx1ZQEFB3ByQXNQbXQHYXNzZXRJZAUGY2FsbGVyBwUGZW1pdExwBQppc09uZUFzc2V0BQZwbXRBbXQFBXBtdElkBANzdHMJAQ1wYXJzZUludFZhbHVlAQgFAXICXzgDAwMJAQNpZ3MABgkAAAIFA3N0cwUKUG9vbFB1dERpcwYJAAACBQNzdHMFDFBvb2xTaHV0ZG93bgkAAgEJAKwCAgIIQmxvY2tlZDoJAKQDAQUDc3RzBQFyAQd0YWtlRmVlAQZhbW91bnQEA2ZlZQkAawMFBmFtb3VudAULZmVlUGVybWlsbGUFCHRob3VzYW5kCQCUCgIJAGUCBQZhbW91bnQFA2ZlZQUDZmVlAQFtAAQHJG1hdGNoMAkAoggBCQEDbXBrAAMJAAECBQckbWF0Y2gwAgZTdHJpbmcEAXMFByRtYXRjaDAJANkEAQUBcwMJAAECBQckbWF0Y2gwAgRVbml0BQR1bml0CQACAQILTWF0Y2ggZXJyb3IBAnBtAAQHJG1hdGNoMAkAoggBCQEEcG1wawADCQABAgUHJG1hdGNoMAIGU3RyaW5nBAFzBQckbWF0Y2gwCQDZBAEFAXMDCQABAgUHJG1hdGNoMAIEVW5pdAUEdW5pdAkAAgECC01hdGNoIGVycm9yAAJwZAkAAgECEVBlcm1pc3Npb24gZGVuaWVkAQJtbQEBaQQHJG1hdGNoMAkBAW0AAwkAAQIFByRtYXRjaDACCkJ5dGVWZWN0b3IEAnBrBQckbWF0Y2gwAwkAAAIIBQFpD2NhbGxlclB1YmxpY0tleQUCcGsGBQJwZAMJAAECBQckbWF0Y2gwAgRVbml0AwkAAAIIBQFpBmNhbGxlcgUEdGhpcwYFAnBkCQACAQILTWF0Y2ggZXJyb3IVAWkBC2NvbnN0cnVjdG9yAQJmYwQBYwkBAm1tAQUBaQMJAAACBQFjBQFjCQDMCAIJAQtTdHJpbmdFbnRyeQIJAQJmYwAFAmZjBQNuaWwJAAIBAiRTdHJpY3QgdmFsdWUgaXMgbm90IGVxdWFsIHRvIGl0c2VsZi4BaQEKc2V0TWFuYWdlcgEXcGVuZGluZ01hbmFnZXJQdWJsaWNLZXkEAWMJAQJtbQEFAWkDCQAAAgUBYwUBYwQCY20JANkEAQUXcGVuZGluZ01hbmFnZXJQdWJsaWNLZXkDCQAAAgUCY20FAmNtCQDMCAIJAQtTdHJpbmdFbnRyeQIJAQRwbXBrAAUXcGVuZGluZ01hbmFnZXJQdWJsaWNLZXkFA25pbAkAAgECJFN0cmljdCB2YWx1ZSBpcyBub3QgZXF1YWwgdG8gaXRzZWxmLgkAAgECJFN0cmljdCB2YWx1ZSBpcyBub3QgZXF1YWwgdG8gaXRzZWxmLgFpAQ5jb25maXJtTWFuYWdlcgAEAXAJAQJwbQAEA2hwbQMJAQlpc0RlZmluZWQBBQFwBgkAAgECEk5vIHBlbmRpbmcgbWFuYWdlcgMJAAACBQNocG0FA2hwbQQDY3BtAwkAAAIIBQFpD2NhbGxlclB1YmxpY0tleQkBBXZhbHVlAQUBcAYJAAIBAhtZb3UgYXJlIG5vdCBwZW5kaW5nIG1hbmFnZXIDCQAAAgUDY3BtBQNjcG0JAMwIAgkBC1N0cmluZ0VudHJ5AgkBA21wawAJANgEAQkBBXZhbHVlAQUBcAkAzAgCCQELRGVsZXRlRW50cnkBCQEEcG1wawAFA25pbAkAAgECJFN0cmljdCB2YWx1ZSBpcyBub3QgZXF1YWwgdG8gaXRzZWxmLgkAAgECJFN0cmljdCB2YWx1ZSBpcyBub3QgZXF1YWwgdG8gaXRzZWxmLgFpAQNwdXQCBHNsaXAJYXV0b1N0YWtlBAdmYWN0Q2ZnCQEDZ2ZjAAQLc3Rha2luZ0NudHIJARN2YWx1ZU9yRXJyb3JNZXNzYWdlAgkApggBCQCRAwIFB2ZhY3RDZmcFD2lkeEZhY3RTdGFrQ250cgIKV3Igc3QgYWRkcgQIc2xpcENudHIJARN2YWx1ZU9yRXJyb3JNZXNzYWdlAgkApggBCQCRAwIFB2ZhY3RDZmcFEGlkeEZhY3RTbGlwcENudHICCldyIHNsIGFkZHIDCQBmAgAABQRzbGlwCQACAQIOV3Jvbmcgc2xpcHBhZ2UDCQECIT0CCQCQAwEIBQFpCHBheW1lbnRzAAIJAAIBAgwyIHBtbnRzIGV4cGQEAWUJAQJjcAkJAKUIAQgFAWkGY2FsbGVyCQDYBAEIBQFpDXRyYW5zYWN0aW9uSWQJAQ9BdHRhY2hlZFBheW1lbnQCCAkBBXZhbHVlAQkAkQMCCAUBaQhwYXltZW50cwAAB2Fzc2V0SWQICQEFdmFsdWUBCQCRAwIIBQFpCHBheW1lbnRzAAAGYW1vdW50CQCRAwIIBQFpCHBheW1lbnRzAAEFBHNsaXAGBwAAAgAECWVtaXRMcEFtdAgFAWUCXzIECWxwQXNzZXRJZAgFAWUCXzcEBXN0YXRlCAUBZQJfOQQGYW1EaWZmCAUBZQNfMTAEBnByRGlmZggFAWUDXzExBARhbUlkCAUBZQNfMTIEBHBySWQIBQFlA18xMwQBcgkA/AcEBQNmY2ECBGVtaXQJAMwIAgUJZW1pdExwQW10BQNuaWwFA25pbAMJAAACBQFyBQFyBAJlbAQHJG1hdGNoMAUBcgMJAAECBQckbWF0Y2gwAgdBZGRyZXNzBAZsZWdhY3kFByRtYXRjaDAJAPwHBAUGbGVnYWN5AgRlbWl0CQDMCAIFCWVtaXRMcEFtdAUDbmlsBQNuaWwFBHVuaXQDCQAAAgUCZWwFAmVsBAJzYQMJAGYCBQZhbURpZmYAAAkA/AcEBQhzbGlwQ250cgIDcHV0BQNuaWwJAMwIAgkBD0F0dGFjaGVkUGF5bWVudAIFBGFtSWQFBmFtRGlmZgUDbmlsBQNuaWwDCQAAAgUCc2EFAnNhBAJzcAMJAGYCBQZwckRpZmYAAAkA/AcEBQhzbGlwQ250cgIDcHV0BQNuaWwJAMwIAgkBD0F0dGFjaGVkUGF5bWVudAIFBHBySWQFBnByRGlmZgUDbmlsBQNuaWwDCQAAAgUCc3AFAnNwBAhscFRybnNmcgMFCWF1dG9TdGFrZQQCc3MJAPwHBAULc3Rha2luZ0NudHICBXN0YWtlBQNuaWwJAMwIAgkBD0F0dGFjaGVkUGF5bWVudAIFCWxwQXNzZXRJZAUJZW1pdExwQW10BQNuaWwDCQAAAgUCc3MFAnNzBQNuaWwJAAIBAiRTdHJpY3QgdmFsdWUgaXMgbm90IGVxdWFsIHRvIGl0c2VsZi4JAMwIAgkBDlNjcmlwdFRyYW5zZmVyAwgFAWkGY2FsbGVyBQllbWl0THBBbXQFCWxwQXNzZXRJZAUDbmlsCQDOCAIFBXN0YXRlBQhscFRybnNmcgkAAgECJFN0cmljdCB2YWx1ZSBpcyBub3QgZXF1YWwgdG8gaXRzZWxmLgkAAgECJFN0cmljdCB2YWx1ZSBpcyBub3QgZXF1YWwgdG8gaXRzZWxmLgkAAgECJFN0cmljdCB2YWx1ZSBpcyBub3QgZXF1YWwgdG8gaXRzZWxmLgkAAgECJFN0cmljdCB2YWx1ZSBpcyBub3QgZXF1YWwgdG8gaXRzZWxmLgFpAQlwdXRPbmVUa24FC2FtQXNzZXRQYXJ0C3ByQXNzZXRQYXJ0BW91dExwCHNsaXBwYWdlCWF1dG9TdGFrZQQDY2ZnCQEDZ2ZjAAQLc3Rha2luZ0NudHIJARN2YWx1ZU9yRXJyb3JNZXNzYWdlAgkApggBCQCRAwIFA2NmZwUPaWR4RmFjdFN0YWtDbnRyAgpXciBzdCBhZGRyBAhzbGlwQ250cgkBE3ZhbHVlT3JFcnJvck1lc3NhZ2UCCQCmCAEJAJEDAgUDY2ZnBRBpZHhGYWN0U2xpcHBDbnRyAgpXciBzbCBhZGRyBAdnd3hDbnRyCQETdmFsdWVPckVycm9yTWVzc2FnZQIJAKYIAQkAkQMCBQNjZmcFEWlkeEZhY3RHd3hSZXdDbnRyAgtXciBnd3ggYWRkcgQHcG9vbENmZwkBA2dwYwAEBGFtSWQJAJEDAgUHcG9vbENmZwUJaWR4QW1Bc0lkBARwcklkCQCRAwIFB3Bvb2xDZmcFCWlkeFByQXNJZAQFYW1EY20JAQ1wYXJzZUludFZhbHVlAQkAkQMCBQdwb29sQ2ZnBQtpZHhBbXRBc0RjbQQFcHJEY20JAQ1wYXJzZUludFZhbHVlAQkAkQMCBQdwb29sQ2ZnBQ1pZHhQcmljZUFzRGNtBAVhZGRvbgkBC3ZhbHVlT3JFbHNlAgkAnQgCBQR0aGlzCQEDYWRhAAIABAt1c2VyQWRkcmVzcwMJAAACBQVhZGRvbgkApQgBCAUBaQZjYWxsZXIIBQFpDG9yaWdpbkNhbGxlcggFAWkGY2FsbGVyAwMDAwkAZwIAAAUIc2xpcHBhZ2UGCQBnAgAABQthbUFzc2V0UGFydAYJAGcCAAAFC3ByQXNzZXRQYXJ0BgkAZwIAAAUFb3V0THAJAAIBAgxXcm9uZyBwYXJhbXMDCQECIT0CCQCQAwEIBQFpCHBheW1lbnRzAAEJAAIBAgsxIHBtbnQgZXhwZAQDcG10CQEFdmFsdWUBCQCRAwIIBQFpCHBheW1lbnRzAAAECnBtdEFzc2V0SWQJANgEAQkBBXZhbHVlAQgFA3BtdAdhc3NldElkBBBwYXltZW50QW1vdW50UmF3CAUDcG10BmFtb3VudAQNJHQwMjQ2NDQyNDY5NgkBB3Rha2VGZWUBBRBwYXltZW50QW1vdW50UmF3BAZwbXRBbXQIBQ0kdDAyNDY0NDI0Njk2Al8xBAlmZWVBbW91bnQIBQ0kdDAyNDY0NDI0Njk2Al8yAwkAZgIAgK3iBAUQcGF5bWVudEFtb3VudFJhdwkAAgECDVdyb25nIHBtdCBhbXQECWFtQmFsYW5jZQkBDWdldEFjY0JhbGFuY2UBBQRhbUlkBAlwckJhbGFuY2UJAQ1nZXRBY2NCYWxhbmNlAQUEcHJJZAQNJHQwMjQ4NTYyNTQ3MgMJAAACBQpwbXRBc3NldElkBQRhbUlkAwMJAGYCBRBwYXltZW50QW1vdW50UmF3BQlhbUJhbGFuY2UGCQBmAgULYW1Bc3NldFBhcnQFBnBtdEFtdAkAAgECFmludmFsaWQgcGF5bWVudCBhbW91bnQJAJgKBgkAZQIFCWFtQmFsYW5jZQUQcGF5bWVudEFtb3VudFJhdwUJcHJCYWxhbmNlCQBlAgUGcG10QW10BQthbUFzc2V0UGFydAULcHJBc3NldFBhcnQAAAAAAwkAAAIFCnBtdEFzc2V0SWQFBHBySWQDAwkAZgIFEHBheW1lbnRBbW91bnRSYXcFCXByQmFsYW5jZQYJAGYCBQtwckFzc2V0UGFydAUGcG10QW10CQACAQIWaW52YWxpZCBwYXltZW50IGFtb3VudAkAmAoGBQlhbUJhbGFuY2UJAGUCBQlwckJhbGFuY2UFEHBheW1lbnRBbW91bnRSYXcAAAAACQBlAgUGcG10QW10BQtwckFzc2V0UGFydAULYW1Bc3NldFBhcnQJAAIBAhB3cm9uZyBwbXRBc3NldElkBAxhbUJhbGFuY2VOb3cIBQ0kdDAyNDg1NjI1NDcyAl8xBAxwckJhbGFuY2VOb3cIBQ0kdDAyNDg1NjI1NDcyAl8yBAx2aXJ0U3dhcEluQW0IBQ0kdDAyNDg1NjI1NDcyAl8zBA12aXJ0U3dhcE91dFByCAUNJHQwMjQ4NTYyNTQ3MgJfNAQMdmlydFN3YXBJblByCAUNJHQwMjQ4NTYyNTQ3MgJfNQQNdmlydFN3YXBPdXRBbQgFDSR0MDI0ODU2MjU0NzICXzYEAkQwCQD8BwQFB2d3eENudHICBWNhbGNECQDMCAIJAKQDAQUMYW1CYWxhbmNlTm93CQDMCAIJAKQDAQUMcHJCYWxhbmNlTm93CQDMCAIFAUEJAMwIAgUFQW11bHQJAMwIAgUFRGNvbnYFA25pbAUDbmlsBAJEMQkA/AcEBQdnd3hDbnRyAgVjYWxjRAkAzAgCCQCmAwEJALYCAQkAZQIJAGQCBQxhbUJhbGFuY2VOb3cFDHZpcnRTd2FwSW5BbQUNdmlydFN3YXBPdXRBbQkAzAgCCQCmAwEJALYCAQkAZQIJAGQCBQxwckJhbGFuY2VOb3cFDHZpcnRTd2FwSW5QcgUNdmlydFN3YXBPdXRQcgkAzAgCBQFBCQDMCAIFBUFtdWx0CQDMCAIFBURjb252BQNuaWwFA25pbAQGRDB2c0QxCQECdmQDCQCnAwEJAQNzdHIBBQJEMQkApwMBCQEDc3RyAQUCRDAFCnNsaXBwYWdlNEQDCQAAAgUGRDB2c0QxBQZEMHZzRDEEBmVzdFB1dAkBAmNwCQkApQgBCAUBaQZjYWxsZXIJANgEAQgFAWkNdHJhbnNhY3Rpb25JZAkBD0F0dGFjaGVkUGF5bWVudAIJANkEAQUEYW1JZAULYW1Bc3NldFBhcnQJAQ9BdHRhY2hlZFBheW1lbnQCCQDZBAEFBHBySWQFC3ByQXNzZXRQYXJ0BQhzbGlwcGFnZQYGBQZwbXRBbXQFCnBtdEFzc2V0SWQEB2VzdGltTFAIBQZlc3RQdXQCXzIECWxwQXNzZXRJZAgFBmVzdFB1dAJfNwQFc3RhdGUIBQZlc3RQdXQCXzkEBmFtRGlmZggFBmVzdFB1dANfMTAEBnByRGlmZggFBmVzdFB1dANfMTEECWxwQ2FsY1JlcwkBA3ZhZAMJALYCAQUHZXN0aW1MUAkAtgIBBQVvdXRMcAkAtgIBBQhzbGlwcGFnZQQJZW1pdExwQW10CQCgAwEIBQlscENhbGNSZXMCXzIEAWUJAPwHBAUDZmNhAgRlbWl0CQDMCAIFCWVtaXRMcEFtdAUDbmlsBQNuaWwDCQAAAgUBZQUBZQQCZWwEByRtYXRjaDAFAWUDCQABAgUHJG1hdGNoMAIHQWRkcmVzcwQGbGVnYWN5BQckbWF0Y2gwCQD8BwQFBmxlZ2FjeQIEZW1pdAkAzAgCBQllbWl0THBBbXQFA25pbAUDbmlsBQR1bml0AwkAAAIFAmVsBQJlbAQCc2EDCQBmAgUGYW1EaWZmAAAJAPwHBAUIc2xpcENudHICA3B1dAUDbmlsCQDMCAIJAQ9BdHRhY2hlZFBheW1lbnQCCQDZBAEFBGFtSWQFBmFtRGlmZgUDbmlsBQNuaWwDCQAAAgUCc2EFAnNhBAJzcAMJAGYCBQZwckRpZmYAAAkA/AcEBQhzbGlwQ250cgIDcHV0BQNuaWwJAMwIAgkBD0F0dGFjaGVkUGF5bWVudAIJANkEAQUEcHJJZAUGcHJEaWZmBQNuaWwFA25pbAMJAAACBQJzcAUCc3AECGxwVHJuc2ZyAwUJYXV0b1N0YWtlBAJzcwkA/AcEBQtzdGFraW5nQ250cgIFc3Rha2UFA25pbAkAzAgCCQEPQXR0YWNoZWRQYXltZW50AgUJbHBBc3NldElkBQllbWl0THBBbXQFA25pbAMJAAACBQJzcwUCc3MFA25pbAkAAgECJFN0cmljdCB2YWx1ZSBpcyBub3QgZXF1YWwgdG8gaXRzZWxmLgkAzAgCCQEOU2NyaXB0VHJhbnNmZXIDCAUBaQZjYWxsZXIFCWVtaXRMcEFtdAUJbHBBc3NldElkBQNuaWwEEHNlbmRGZWVUb01hdGNoZXIDCQBmAgUJZmVlQW1vdW50AAAJAMwIAgkBDlNjcmlwdFRyYW5zZmVyAwUTZmVlQ29sbGVjdG9yQWRkcmVzcwUJZmVlQW1vdW50CQDZBAEFCnBtdEFzc2V0SWQFA25pbAUDbmlsCQDOCAIJAM4IAgUFc3RhdGUFCGxwVHJuc2ZyBRBzZW5kRmVlVG9NYXRjaGVyCQACAQIkU3RyaWN0IHZhbHVlIGlzIG5vdCBlcXVhbCB0byBpdHNlbGYuCQACAQIkU3RyaWN0IHZhbHVlIGlzIG5vdCBlcXVhbCB0byBpdHNlbGYuCQACAQIkU3RyaWN0IHZhbHVlIGlzIG5vdCBlcXVhbCB0byBpdHNlbGYuCQACAQIkU3RyaWN0IHZhbHVlIGlzIG5vdCBlcXVhbCB0byBpdHNlbGYuCQACAQIkU3RyaWN0IHZhbHVlIGlzIG5vdCBlcXVhbCB0byBpdHNlbGYuAWkBCnB1dEZvckZyZWUBB21heFNscGcDCQBmAgAABQdtYXhTbHBnCQACAQIKV3Jvbmcgc2xwZwMJAQIhPQIJAJADAQgFAWkIcGF5bWVudHMAAgkAAgECDDIgcG1udHMgZXhwZAQGZXN0UHV0CQECY3AJCQClCAEIBQFpBmNhbGxlcgkA2AQBCAUBaQ10cmFuc2FjdGlvbklkCQEPQXR0YWNoZWRQYXltZW50AggJAQV2YWx1ZQEJAJEDAggFAWkIcGF5bWVudHMAAAdhc3NldElkCAkBBXZhbHVlAQkAkQMCCAUBaQhwYXltZW50cwAABmFtb3VudAkAkQMCCAUBaQhwYXltZW50cwABBQdtYXhTbHBnBwcAAAIACAUGZXN0UHV0Al85AWkBA2dldAAEAXIJAQJjZwEFAWkECW91dEFtdEFtdAgFAXICXzEECG91dFByQW10CAUBcgJfMgQGcG10QW10CAUBcgJfMwQKcG10QXNzZXRJZAgFAXICXzQEBXN0YXRlCAUBcgJfNQQBYgkA/AcEBQNmY2ECBGJ1cm4JAMwIAgUGcG10QW10BQNuaWwJAMwIAgkBD0F0dGFjaGVkUGF5bWVudAIFCnBtdEFzc2V0SWQFBnBtdEFtdAUDbmlsAwkAAAIFAWIFAWIFBXN0YXRlCQACAQIkU3RyaWN0IHZhbHVlIGlzIG5vdCBlcXVhbCB0byBpdHNlbGYuAWkBCWdldE9uZVRrbgUKZXhjaFJlc3VsdAdub3RVc2VkCW91dEFtb3VudApvdXRBc3NldElkCHNsaXBwYWdlAwkBAiE9AgkAkAMBCAUBaQhwYXltZW50cwABCQACAQILMSBwbW50IGV4cGQEA2NmZwkBA2dwYwAEBGxwSWQJAJEDAgUDY2ZnBQlpZHhMUEFzSWQEBGFtSWQJAJEDAgUDY2ZnBQlpZHhBbUFzSWQEBHBySWQJAJEDAgUDY2ZnBQlpZHhQckFzSWQEBWFtRGNtCQENcGFyc2VJbnRWYWx1ZQEJAJEDAgUDY2ZnBQtpZHhBbXRBc0RjbQQFcHJEY20JAQ1wYXJzZUludFZhbHVlAQkAkQMCBQNjZmcFDWlkeFByaWNlQXNEY20EA3N0cwkAkQMCBQNjZmcFCWlkeFBvb2xTdAQHZmFjdENmZwkBA2dmYwAEB2d3eENudHIJARN2YWx1ZU9yRXJyb3JNZXNzYWdlAgkApggBCQCRAwIFB2ZhY3RDZmcFEWlkeEZhY3RHd3hSZXdDbnRyAgpXciBzbCBhZGRyBANwbXQJAQV2YWx1ZQEJAJEDAggFAWkIcGF5bWVudHMAAAQFYWRkb24JAQt2YWx1ZU9yRWxzZQIJAJ0IAgUEdGhpcwkBA2FkYQACAAQLdXNlckFkZHJlc3MDCQAAAgUFYWRkb24JAKUIAQgFAWkGY2FsbGVyCAUBaQxvcmlnaW5DYWxsZXIIBQFpBmNhbGxlcgQGdHhJZDU4CQDYBAEIBQFpDXRyYW5zYWN0aW9uSWQECnBtdEFzc2V0SWQJAQV2YWx1ZQEIBQNwbXQHYXNzZXRJZAQGcG10QW10CAUDcG10BmFtb3VudAMJAGYCAICU69wDBQZwbXRBbXQJAAIBAg1NaW4gcG10IDEwIExQAwMDCQBmAgAABQhzbGlwcGFnZQYJAGYCAAAFCmV4Y2hSZXN1bHQGCQBmAgAABQlvdXRBbW91bnQJAAIBAgxXcm9uZyBwYXJhbXMDCQECIT0CBQRscElkCQDYBAEFCnBtdEFzc2V0SWQJAAIBAghXcm9uZyBMUAQBcgkBA2VnbwQJANgEAQgFAWkNdHJhbnNhY3Rpb25JZAkA2AQBBQpwbXRBc3NldElkBQZwbXRBbXQIBQFpBmNhbGxlcgQKZXN0aW1BbUFtdAgFAXICXzEECmVzdGltUHJBbXQIBQFyAl8yBAlhbUJhbGFuY2UJAQ1nZXRBY2NCYWxhbmNlAQUEYW1JZAQJcHJCYWxhbmNlCQENZ2V0QWNjQmFsYW5jZQEFBHBySWQEDSR0MDMwNDE1MzA4NzUDCQAAAgUKb3V0QXNzZXRJZAUEYW1JZAkAmQoHCQBlAgUJYW1CYWxhbmNlBQplc3RpbUFtQW10CQBlAgUJcHJCYWxhbmNlBQplc3RpbVByQW10BQpleGNoUmVzdWx0BQplc3RpbVByQW10AAAAAAkAZAIFCmVzdGltQW1BbXQFCmV4Y2hSZXN1bHQDCQAAAgUKb3V0QXNzZXRJZAUEcHJJZAkAmQoHCQBlAgUJYW1CYWxhbmNlBQplc3RpbUFtQW10CQBlAgUJcHJCYWxhbmNlBQplc3RpbVByQW10AAAAAAUKZXhjaFJlc3VsdAUKZXN0aW1BbUFtdAkAZAIFCmVzdGltUHJBbXQFCmV4Y2hSZXN1bHQJAAIBAhB3cm9uZyBvdXRBc3NldElkBAxhbUJhbGFuY2VOb3cIBQ0kdDAzMDQxNTMwODc1Al8xBAxwckJhbGFuY2VOb3cIBQ0kdDAzMDQxNTMwODc1Al8yBAx2aXJ0U3dhcEluQW0IBQ0kdDAzMDQxNTMwODc1Al8zBA12aXJ0U3dhcE91dFByCAUNJHQwMzA0MTUzMDg3NQJfNAQMdmlydFN3YXBJblByCAUNJHQwMzA0MTUzMDg3NQJfNQQNdmlydFN3YXBPdXRBbQgFDSR0MDMwNDE1MzA4NzUCXzYEC3RvdGFsR2V0UmF3CAUNJHQwMzA0MTUzMDg3NQJfNwMDCQBmAgAABQx2aXJ0U3dhcEluQW0GCQBmAgAABQx2aXJ0U3dhcEluUHIJAAIBAgpXcm9uZyBjYWxjBAJEMAkA/AcEBQdnd3hDbnRyAgVjYWxjRAkAzAgCCQCkAwEFDGFtQmFsYW5jZU5vdwkAzAgCCQCkAwEFDHByQmFsYW5jZU5vdwkAzAgCBQFBCQDMCAIFBUFtdWx0CQDMCAIFBURjb252BQNuaWwFA25pbAQCRDEJAPwHBAUHZ3d4Q250cgIFY2FsY0QJAMwIAgkApAMBCQBkAgkAZQIFDGFtQmFsYW5jZU5vdwUMdmlydFN3YXBJbkFtBQ12aXJ0U3dhcE91dEFtCQDMCAIJAKQDAQkAZQIJAGQCBQxwckJhbGFuY2VOb3cFDXZpcnRTd2FwT3V0UHIFDHZpcnRTd2FwSW5QcgkAzAgCBQFBCQDMCAIFBUFtdWx0CQDMCAIFBURjb252BQNuaWwFA25pbAQGRDB2c0QxCQECdmQDCQCnAwEJAQNzdHIBBQJEMQkApwMBCQEDc3RyAQUCRDAFCnNsaXBwYWdlNEQDCQAAAgUGRDB2c0QxBQZEMHZzRDEECHRvdGFsR2V0CAkBB3Rha2VGZWUBBQt0b3RhbEdldFJhdwJfMQQIZmluYWxSZXMJAQN2YWQDCQC2AgEFCHRvdGFsR2V0CQC2AgEFCW91dEFtb3VudAkAtgIBBQhzbGlwcGFnZQMJAAACBQhmaW5hbFJlcwUIZmluYWxSZXMEDSR0MDMxNjIyMzE3MjYDCQAAAgUKb3V0QXNzZXRJZAUEYW1JZAkAlAoCCQCgAwEIBQhmaW5hbFJlcwJfMgAACQCUCgIAAAkAoAMBCAUIZmluYWxSZXMCXzIEBW91dEFtCAUNJHQwMzE2MjIzMTcyNgJfMQQFb3V0UHIIBQ0kdDAzMTYyMjMxNzI2Al8yBAt0b3RhbEFtb3VudAkAZAIFBW91dEFtBQVvdXRQcgQJZmVlQW1vdW50CQBlAgULdG90YWxHZXRSYXcFCHRvdGFsR2V0BBFvdXRBc3NldElkT3JXYXZlcwMJAAACBQpvdXRBc3NldElkAgVXQVZFUwUEdW5pdAkA2QQBBQpvdXRBc3NldElkBBBzZW5kRmVlVG9NYXRjaGVyAwkAZgIFCWZlZUFtb3VudAAACQDMCAIJAQ5TY3JpcHRUcmFuc2ZlcgMFE2ZlZUNvbGxlY3RvckFkZHJlc3MFCWZlZUFtb3VudAURb3V0QXNzZXRJZE9yV2F2ZXMFA25pbAUDbmlsBAhjdXJQclgxOAkBBGNwYmkCCQECdDECBQlwckJhbGFuY2UFBXByRGNtCQECdDECBQlhbUJhbGFuY2UFBWFtRGNtBAVjdXJQcgkBAmYxAgUIY3VyUHJYMTgFBnNjYWxlOAQFc3RhdGUJAMwIAgkBDlNjcmlwdFRyYW5zZmVyAwULdXNlckFkZHJlc3MFC3RvdGFsQW1vdW50BRFvdXRBc3NldElkT3JXYXZlcwkAzAgCCQELU3RyaW5nRW50cnkCCQEDZ2F1AgkApQgBBQt1c2VyQWRkcmVzcwUGdHhJZDU4CQERZGF0YUdldEFjdGlvbkluZm8GBQVvdXRBbQUFb3V0UHIFBnBtdEFtdAUFY3VyUHIFBmhlaWdodAgFCWxhc3RCbG9jawl0aW1lc3RhbXAJAMwIAgkBDEludGVnZXJFbnRyeQIJAQJwbAAFBWN1clByCQDMCAIJAQxJbnRlZ2VyRW50cnkCCQECcGgCBQZoZWlnaHQIBQlsYXN0QmxvY2sJdGltZXN0YW1wBQVjdXJQcgUDbmlsAwkAAAIFBXN0YXRlBQVzdGF0ZQQEYnVybgkA/AcEBQNmY2ECBGJ1cm4JAMwIAgUGcG10QW10BQNuaWwJAMwIAgkBD0F0dGFjaGVkUGF5bWVudAIFCnBtdEFzc2V0SWQFBnBtdEFtdAUDbmlsAwkAAAIFBGJ1cm4FBGJ1cm4JAM4IAgUFc3RhdGUFEHNlbmRGZWVUb01hdGNoZXIJAAIBAiRTdHJpY3QgdmFsdWUgaXMgbm90IGVxdWFsIHRvIGl0c2VsZi4JAAIBAiRTdHJpY3QgdmFsdWUgaXMgbm90IGVxdWFsIHRvIGl0c2VsZi4JAAIBAiRTdHJpY3QgdmFsdWUgaXMgbm90IGVxdWFsIHRvIGl0c2VsZi4JAAIBAiRTdHJpY3QgdmFsdWUgaXMgbm90IGVxdWFsIHRvIGl0c2VsZi4BaQEJZ2V0Tm9MZXNzAhJub0xlc3NUaGVuQW10QXNzZXQUbm9MZXNzVGhlblByaWNlQXNzZXQEAXIJAQJjZwEFAWkECG91dEFtQW10CAUBcgJfMQQIb3V0UHJBbXQIBQFyAl8yBAZwbXRBbXQIBQFyAl8zBApwbXRBc3NldElkCAUBcgJfNAQFc3RhdGUIBQFyAl81AwkAZgIFEm5vTGVzc1RoZW5BbXRBc3NldAUIb3V0QW1BbXQJAAIBCQCsAgIJAKwCAgkArAICAglGYWlsZWQ6ICAJAKQDAQUIb3V0QW1BbXQCAyA8IAkApAMBBRJub0xlc3NUaGVuQW10QXNzZXQDCQBmAgUUbm9MZXNzVGhlblByaWNlQXNzZXQFCG91dFByQW10CQACAQkArAICCQCsAgIJAKwCAgIIRmFpbGVkOiAJAKQDAQUIb3V0UHJBbXQCAyA8IAkApAMBBRRub0xlc3NUaGVuUHJpY2VBc3NldAQUYnVybkxQQXNzZXRPbkZhY3RvcnkJAPwHBAUDZmNhAgRidXJuCQDMCAIFBnBtdEFtdAUDbmlsCQDMCAIJAQ9BdHRhY2hlZFBheW1lbnQCBQpwbXRBc3NldElkBQZwbXRBbXQFA25pbAMJAAACBRRidXJuTFBBc3NldE9uRmFjdG9yeQUUYnVybkxQQXNzZXRPbkZhY3RvcnkFBXN0YXRlCQACAQIkU3RyaWN0IHZhbHVlIGlzIG5vdCBlcXVhbCB0byBpdHNlbGYuAWkBDXVuc3Rha2VBbmRHZXQBBmFtb3VudAQNY2hlY2tQYXltZW50cwMJAQIhPQIJAJADAQgFAWkIcGF5bWVudHMAAAkAAgECDU5vIHBtbnRzIGV4cGQGAwkAAAIFDWNoZWNrUGF5bWVudHMFDWNoZWNrUGF5bWVudHMEA2NmZwkBA2dwYwAECmZhY3RvcnlDZmcJAQNnZmMABAlscEFzc2V0SWQJANkEAQkAkQMCBQNjZmcFCWlkeExQQXNJZAQHc3Rha2luZwkBE3ZhbHVlT3JFcnJvck1lc3NhZ2UCCQCmCAEJAJEDAgUKZmFjdG9yeUNmZwUPaWR4RmFjdFN0YWtDbnRyAgpXciBzdCBhZGRyBAp1bnN0YWtlSW52CQD8BwQFB3N0YWtpbmcCB3Vuc3Rha2UJAMwIAgkA2AQBBQlscEFzc2V0SWQJAMwIAgUGYW1vdW50BQNuaWwFA25pbAMJAAACBQp1bnN0YWtlSW52BQp1bnN0YWtlSW52BAFyCQEDZWdvBAkA2AQBCAUBaQ10cmFuc2FjdGlvbklkCQDYBAEFCWxwQXNzZXRJZAUGYW1vdW50CAUBaQZjYWxsZXIEA3N0cwkBDXBhcnNlSW50VmFsdWUBCAUBcgJfOQQFc3RhdGUIBQFyA18xMAQBdgMDCQEDaWdzAAYJAAACBQNzdHMFDFBvb2xTaHV0ZG93bgkAAgEJAKwCAgIJQmxvY2tlZDogCQCkAwEFA3N0cwYDCQAAAgUBdgUBdgQFYnVybkEJAPwHBAUDZmNhAgRidXJuCQDMCAIFBmFtb3VudAUDbmlsCQDMCAIJAQ9BdHRhY2hlZFBheW1lbnQCBQlscEFzc2V0SWQFBmFtb3VudAUDbmlsAwkAAAIFBWJ1cm5BBQVidXJuQQUFc3RhdGUJAAIBAiRTdHJpY3QgdmFsdWUgaXMgbm90IGVxdWFsIHRvIGl0c2VsZi4JAAIBAiRTdHJpY3QgdmFsdWUgaXMgbm90IGVxdWFsIHRvIGl0c2VsZi4JAAIBAiRTdHJpY3QgdmFsdWUgaXMgbm90IGVxdWFsIHRvIGl0c2VsZi4JAAIBAiRTdHJpY3QgdmFsdWUgaXMgbm90IGVxdWFsIHRvIGl0c2VsZi4BaQEIYWN0aXZhdGUCCGFtdEFzU3RyB3ByQXNTdHIDCQECIT0CCQClCAEIBQFpBmNhbGxlcgkApQgBBQNmY2EJAAIBAgZkZW5pZWQJAJQKAgkAzAgCCQELU3RyaW5nRW50cnkCCQECYWEABQhhbXRBc1N0cgkAzAgCCQELU3RyaW5nRW50cnkCCQECcGEABQdwckFzU3RyBQNuaWwCB3N1Y2Nlc3MBaQEEc2V0UwIBawF2AwkBAiE9AgkApQgBCAUBaQZjYWxsZXIJAQRzdHJmAgUEdGhpcwkBA2FkYQAFAnBkCQDMCAIJAQtTdHJpbmdFbnRyeQIFAWsFAXYFA25pbAFpAQRzZXRJAgFrAXYDCQECIT0CCQClCAEIBQFpBmNhbGxlcgkBBHN0cmYCBQR0aGlzCQEDYWRhAAUCcGQJAMwIAgkBDEludGVnZXJFbnRyeQIFAWsFAXYFA25pbAFpARxnZXRQb29sQ29uZmlnV3JhcHBlclJFQURPTkxZAAkAlAoCBQNuaWwJAQNncGMAAWkBHGdldEFjY0JhbGFuY2VXcmFwcGVyUkVBRE9OTFkBB2Fzc2V0SWQJAJQKAgUDbmlsCQENZ2V0QWNjQmFsYW5jZQEFB2Fzc2V0SWQBaQEZY2FsY1ByaWNlc1dyYXBwZXJSRUFET05MWQMFYW1BbXQFcHJBbXQFbHBBbXQEAnByCQEKY2FsY1ByaWNlcwMFBWFtQW10BQVwckFtdAUFbHBBbXQJAJQKAgUDbmlsCQDMCAIJAKYDAQkAkQMCBQJwcgAACQDMCAIJAKYDAQkAkQMCBQJwcgABCQDMCAIJAKYDAQkAkQMCBQJwcgACBQNuaWwBaQEWZnJvbVgxOFdyYXBwZXJSRUFET05MWQIDdmFsDHJlc1NjYWxlTXVsdAkAlAoCBQNuaWwJAQJmMQIJAKcDAQUDdmFsBQxyZXNTY2FsZU11bHQBaQEUdG9YMThXcmFwcGVyUkVBRE9OTFkCB29yaWdWYWwNb3JpZ1NjYWxlTXVsdAkAlAoCBQNuaWwJAKYDAQkBAnQxAgUHb3JpZ1ZhbAUNb3JpZ1NjYWxlTXVsdAFpAR5jYWxjUHJpY2VCaWdJbnRXcmFwcGVyUkVBRE9OTFkCCHByQW10WDE4CGFtQW10WDE4CQCUCgIFA25pbAkApgMBCQEEY3BiaQIJAKcDAQUIcHJBbXRYMTgJAKcDAQUIYW1BbXRYMTgBaQEjZXN0aW1hdGVQdXRPcGVyYXRpb25XcmFwcGVyUkVBRE9OTFkJBnR4SWQ1OAhzbGlwcGFnZQdpbkFtQW10BmluQW1JZAdpblByQW10BmluUHJJZAd1c3JBZGRyBmlzRXZhbAZlbWl0THAJAJQKAgUDbmlsCQEDZXBvDAUGdHhJZDU4BQhzbGlwcGFnZQUHaW5BbUFtdAUGaW5BbUlkBQdpblByQW10BQZpblBySWQFB3VzckFkZHIFBmlzRXZhbAUGZW1pdExwBwAAAgABaQEjZXN0aW1hdGVHZXRPcGVyYXRpb25XcmFwcGVyUkVBRE9OTFkEBnR4SWQ1OAdwbXRBc0lkCHBtdExwQW10B3VzckFkZHIEAXIJAQNlZ28EBQZ0eElkNTgFB3BtdEFzSWQFCHBtdExwQW10CQERQGV4dHJOYXRpdmUoMTA2MikBBQd1c3JBZGRyCQCUCgIFA25pbAkAnAoKCAUBcgJfMQgFAXICXzIIBQFyAl8zCAUBcgJfNAgFAXICXzUIBQFyAl82CAUBcgJfNwkApgMBCAUBcgJfOAgFAXICXzkIBQFyA18xMAECdHgBBnZlcmlmeQAED3RhcmdldFB1YmxpY0tleQQHJG1hdGNoMAkBAW0AAwkAAQIFByRtYXRjaDACCkJ5dGVWZWN0b3IEAnBrBQckbWF0Y2gwBQJwawMJAAECBQckbWF0Y2gwAgRVbml0CAUCdHgPc2VuZGVyUHVibGljS2V5CQACAQILTWF0Y2ggZXJyb3IEByRtYXRjaDAFAnR4AwkAAQIFByRtYXRjaDACBU9yZGVyBAVvcmRlcgUHJG1hdGNoMAQKbWF0Y2hlclB1YgkBAm1wAAQKb3JkZXJWYWxpZAkBA21vYQEFBW9yZGVyBAtzZW5kZXJWYWxpZAkA9AMDCAUFb3JkZXIJYm9keUJ5dGVzCQCRAwIIBQVvcmRlcgZwcm9vZnMAAAgFBW9yZGVyD3NlbmRlclB1YmxpY0tleQQMbWF0Y2hlclZhbGlkCQD0AwMIBQVvcmRlcglib2R5Qnl0ZXMJAJEDAggFBW9yZGVyBnByb29mcwABBQptYXRjaGVyUHViAwMDBQpvcmRlclZhbGlkBQtzZW5kZXJWYWxpZAcFDG1hdGNoZXJWYWxpZAcGCQEDdG9lAwUKb3JkZXJWYWxpZAULc2VuZGVyVmFsaWQFDG1hdGNoZXJWYWxpZAMJAAECBQckbWF0Y2gwAhRTZXRTY3JpcHRUcmFuc2FjdGlvbgQBcwUHJG1hdGNoMAQHbmV3SGFzaAkA9gMBCQEFdmFsdWUBCAUBcwZzY3JpcHQEC2FsbG93ZWRIYXNoCQDbBAEJAQV2YWx1ZQEJAJ0IAgUDZmNhCQEca2V5QWxsb3dlZExwU3RhYmxlU2NyaXB0SGFzaAAEC2N1cnJlbnRIYXNoCQDxBwEFBHRoaXMDAwkAAAIFC2FsbG93ZWRIYXNoBQduZXdIYXNoCQECIT0CBQtjdXJyZW50SGFzaAUHbmV3SGFzaAcGCQD0AwMIBQJ0eAlib2R5Qnl0ZXMJAJEDAggFAnR4BnByb29mcwAABQ90YXJnZXRQdWJsaWNLZXkJAPQDAwgFAnR4CWJvZHlCeXRlcwkAkQMCCAUCdHgGcHJvb2ZzAAAFD3RhcmdldFB1YmxpY0tleei8Leo=", "chainId": 84, "height": 2226003, "applicationStatus": "succeeded", "spentComplexity": 0 } View: original | compacted Prev: Hmt2U1HBWakXvid12118nvFqEyxFqneteFfGBCYMEsos Next: 5kH5x73nCt9s9dRMZ7VFN2GWQ6AyeAiCMReMkWsNFbdw Diff:
OldNewDifferences
77
88 let c = toBigInt(1000000000000000000)
99
10-let d = toBigInt(0)
10+let d = 1000
1111
12-let e = toBigInt(1)
12+let e = toBigInt(0)
1313
14-let f = toBigInt((a - ((a * 1) / a)))
14+let f = toBigInt(1)
1515
16-let g = "100"
16+let g = toBigInt((a - ((a * 1) / a)))
1717
18-let h = "1"
18+let h = "100"
1919
20-let i = "__"
20+let i = "1"
2121
22-let j = ""
22+let j = "__"
2323
24-let k = 1
24+let k = ""
2525
26-let l = 2
26+let l = 1
2727
28-let m = 3
28+let m = 2
2929
30-let n = 4
30+let n = 3
3131
32-let o = 1
32+let o = 4
3333
34-let p = 2
34+let p = 1
3535
36-let q = 3
36+let q = 2
3737
38-let r = 4
38+let r = 3
3939
40-let s = 5
40+let s = 4
4141
42-let t = 6
42+let t = 5
4343
44-let u = 7
44+let u = 6
4545
46-let v = 8
46+let v = 7
4747
48-let w = 9
48+let w = 8
4949
50-let x = 1
50+let x = 9
5151
52-let y = 7
52+let y = 1
5353
54-let z = 10
54+let z = 7
5555
56-let A = "%s__delay"
56+let A = 10
5757
58-func B (C,D) = fraction(toBigInt(C), c, toBigInt(D))
58+let B = 0
59+
60+func C (D,E) = fraction(toBigInt(D), c, toBigInt(E))
5961
6062
61-func E (F,G) = toInt(fraction(F, toBigInt(G), c))
63+func F (G,H) = toInt(fraction(G, toBigInt(H), c))
6264
6365
64-func H (I,J,K) = fraction(I, J, K)
66+func I (J,K,L) = fraction(J, K, L)
6567
6668
67-func L (F) = if ((d > F))
68- then -(F)
69- else F
69+func M (G) = if ((e > G))
70+ then -(G)
71+ else G
7072
7173
72-func M () = "%s__factoryContract"
74+func N () = "%s__factoryContract"
7375
7476
75-func N () = "%s__managerPublicKey"
77+func O () = "%s__managerPublicKey"
7678
7779
78-func O () = "%s__pendingManagerPublicKey"
80+func P () = "%s__pendingManagerPublicKey"
7981
8082
81-func P () = "%s%s__price__last"
83+func Q () = "%s%s__price__last"
8284
8385
84-func Q (R,S) = makeString(["%s%s%d%d__price__history", toString(R), toString(S)], i)
86+func R (S,T) = makeString(["%s%s%d%d__price__history", toString(S), toString(T)], j)
8587
8688
87-func T (U,V) = ((("%s%s%s__P__" + U) + "__") + V)
89+func U (V,W) = ((("%s%s%s__P__" + V) + "__") + W)
8890
8991
90-func W (U,V) = ((("%s%s%s__G__" + U) + "__") + V)
92+func X (V,W) = ((("%s%s%s__G__" + V) + "__") + W)
9193
9294
93-func X () = "%s__amountAsset"
95+func Y () = "%s__amountAsset"
9496
9597
96-func Y () = "%s__priceAsset"
98+func Z () = "%s__priceAsset"
9799
98100
99-func Z () = "%s__amp"
101+func aa () = "%s__amp"
100102
101103
102-func aa () = "%s__addonAddr"
104+func ab () = "%s__addonAddr"
103105
104106
105-func ab (ac) = makeString(["%s%s__lastGetOneTknCall", ac], i)
107+let ac = "%s__feePermille"
106108
107-
108-func ad (ac) = makeString(["%s%s__lastPutOneTknCall", ac], i)
109-
109+let ad = valueOrElse(getInteger(this, ac), B)
110110
111111 func ae () = "%s__factoryConfig"
112112
126126 func am () = "%s__allowedLpStableScriptHash"
127127
128128
129-func an (ao,ap,aq) = throw(((((("Failed: ordValid=" + toString(ao)) + " sndrValid=") + toString(ap)) + " mtchrValid=") + toString(aq)))
129+func an () = "%s__feeCollectorAddress"
130130
131131
132-func ar (F) = {
133- let as = F
134- if ($isInstanceOf(as, "String"))
132+func ao (ap,aq,ar) = throw(((((("Failed: ordValid=" + toString(ap)) + " sndrValid=") + toString(aq)) + " mtchrValid=") + toString(ar)))
133+
134+
135+func as (G) = {
136+ let at = G
137+ if ($isInstanceOf(at, "String"))
135138 then {
136- let at = as
137- at
139+ let au = at
140+ au
138141 }
139142 else throw("fail cast to String")
140143 }
141144
142145
143-func au (av,aw) = valueOrErrorMessage(getString(av, aw), makeString(["mandatory ", toString(av), ".", aw, " not defined"], ""))
146+func av (aw,ax) = valueOrErrorMessage(getString(aw, ax), makeString(["mandatory ", toString(aw), ".", ax, " not defined"], ""))
144147
145148
146-func ax (av,aw) = valueOrErrorMessage(getInteger(av, aw), makeString(["mandatory ", toString(av), ".", aw, " not defined"], ""))
149+func ay (aw,ax) = valueOrErrorMessage(getInteger(aw, ax), makeString(["mandatory ", toString(aw), ".", ax, " not defined"], ""))
147150
148151
149-let ay = addressFromStringValue(au(this, M()))
152+let az = addressFromStringValue(av(this, N()))
150153
151-let az = au(this, Z())
154+let aA = av(this, aa())
152155
153-func aA () = valueOrElse(getBoolean(ay, al()), false)
156+func aB () = valueOrElse(getBoolean(az, al()), false)
154157
155158
156-func aB () = fromBase58String(au(ay, af()))
159+func aC () = fromBase58String(av(az, af()))
157160
158161
159-func aC () = {
160- let aD = au(this, X())
161- let aE = au(this, Y())
162- let aF = ax(ay, aj(aE))
163- let ah = ax(ay, aj(aD))
164- split(au(ay, ag(toString(ah), toString(aF))), i)
162+let aD = addressFromStringValue(av(az, an()))
163+
164+func aE () = {
165+ let aF = av(this, Y())
166+ let aG = av(this, Z())
167+ let aH = ay(az, aj(aG))
168+ let ah = ay(az, aj(aF))
169+ split(av(az, ag(toString(ah), toString(aH))), j)
165170 }
166171
167172
168-func aG () = split(au(ay, ae()), i)
173+func aI () = split(av(az, ae()), j)
169174
170175
171-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)
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)
172177
173178
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)
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)
175180
176181
177-func aW (aX) = if ((aX == "WAVES"))
182+func aY (aZ) = if ((aZ == "WAVES"))
178183 then wavesBalance(this).available
179- else assetBalance(this, fromBase58String(aX))
184+ else assetBalance(this, fromBase58String(aZ))
180185
181186
182-func aY (aZ,ba) = fraction(aZ, c, ba)
187+func ba (bb,bc) = fraction(bb, c, bc)
183188
184189
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]))
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]))
191196 }
192197
193198
194-func bh (bi,bj,bk) = {
195- let bf = fraction(bj, b, bi)
196- let bl = (bk > bf)
197- if (if (bl)
199+func bj (bk,bl,bm) = {
200+ let bh = fraction(bl, b, bk)
201+ let bn = (bm > bh)
202+ if (if (bn)
198203 then true
199- else (bj > bi))
200- then throw(((((((toString(bj) + " ") + toString(bi)) + " ") + toString(bf)) + " ") + toString(bk)))
201- else bl
204+ else (bl > bk))
205+ then throw(((((((toString(bl) + " ") + toString(bk)) + " ") + toString(bh)) + " ") + toString(bm)))
206+ else bn
202207 }
203208
204209
205-func bm (bn,bo,bp,bq) = {
206- let br = B(bp, bn)
207- let bs = B(bq, bo)
208- aY(bs, br)
210+func bo (bp,bq,br,bs) = {
211+ let bt = C(br, bp)
212+ let bu = C(bs, bq)
213+ ba(bu, bt)
209214 }
210215
211216
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]
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]
223228 }
224229
225230
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)]
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)]
229234 }
230235
231236
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))
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))
242247 then throw("Wrong pmt asset")
243248 else {
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 == ""))
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 == ""))
257262 then nil
258- else [ScriptTransfer(bI, ca, if ((bK == "WAVES"))
263+ else [ScriptTransfer(bK, cc, if ((bM == "WAVES"))
259264 then unit
260- else fromBase58String(bK)), ScriptTransfer(bI, cb, if ((bL == "WAVES"))
265+ else fromBase58String(bM)), ScriptTransfer(bK, cd, if ((bN == "WAVES"))
261266 then unit
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)
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)
264269 }
265270 }
266271
267272
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)
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)
283288 else false)
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)
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)
292297 else false)
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))
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))
303308 then {
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)
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)
308313 }
309314 else {
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)
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)
315320 else false)
316- then throw(((("Price slippage " + toString(cz)) + " > ") + toString(cy)))
321+ then throw(((("Price slippage " + toString(cB)) + " > ") + toString(cA)))
317322 else {
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)
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)
328333 }
329334 }
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))
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))
336341 then throw("LP <= 0")
337342 else {
338- let cK = if (!(cj))
343+ let cM = if (!(cl))
339344 then 0
340- else cG
341- let cL = (ce - cH)
342- let cM = (cg - cI)
343- let cN = if (if (ck)
344- then (cm == cn)
345+ else cI
346+ let cN = (cg - cJ)
347+ let cO = (ci - cK)
348+ let cP = if (if (cm)
349+ then (co == cp)
345350 else false)
346- then $Tuple2(cl, 0)
347- else if (if (ck)
348- then (cm == co)
351+ then $Tuple2(cn, 0)
352+ else if (if (cm)
353+ then (co == cq)
349354 else false)
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)
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)
356361 }
357362 }
358363
359364
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())
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())
374379 then true
375- else (bO == m))
380+ else (bQ == n))
376381 then true
377- else (bO == n))
382+ else (bQ == o))
378383 then throw("Admin blocked")
379384 else {
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
385+ let cZ = cU.assetPair.amountAsset
385386 let da = if ((cZ == unit))
386387 then "WAVES"
387388 else toBase58String(value(cZ))
388- if (if ((cY != cT))
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))
389394 then true
390- else (da != cU))
395+ else (dc != cW))
391396 then throw("Wr assets")
392397 else {
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)
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)
399404 true
400405 }
401406 }
402407 }
403408
404409
405-func de (df) = if ((size(df.payments) != 1))
410+func dg (dh) = if ((size(dh.payments) != 1))
406411 then throw("1 pmnt exp")
407412 else {
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())
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())
417422 then true
418- else (bO == n))
419- then throw(("Admin blocked: " + toString(bO)))
420- else $Tuple5(ca, cb, cl, bG, cc)
423+ else (bQ == o))
424+ then throw(("Admin blocked: " + toString(bQ)))
425+ else $Tuple5(cc, cd, cn, bI, ce)
421426 }
422427
423428
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())
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())
428433 then true
429- else (bO == l))
434+ else (bQ == m))
430435 then true
431- else (bO == n))
432- then throw(("Blocked:" + toString(bO)))
433- else cx
436+ else (bQ == o))
437+ then throw(("Blocked:" + toString(bQ)))
438+ else cz
434439 }
435440
436441
437-func dk () = {
438- let as = getString(N())
439- if ($isInstanceOf(as, "String"))
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"))
440451 then {
441- let dl = as
442- fromBase58String(dl)
452+ let dr = at
453+ fromBase58String(dr)
443454 }
444- else if ($isInstanceOf(as, "Unit"))
455+ else if ($isInstanceOf(at, "Unit"))
445456 then unit
446457 else throw("Match error")
447458 }
448459
449460
450-func dm () = {
451- let as = getString(O())
452- if ($isInstanceOf(as, "String"))
461+func ds () = {
462+ let at = getString(P())
463+ if ($isInstanceOf(at, "String"))
453464 then {
454- let dl = as
455- fromBase58String(dl)
465+ let dr = at
466+ fromBase58String(dr)
456467 }
457- else if ($isInstanceOf(as, "Unit"))
468+ else if ($isInstanceOf(at, "Unit"))
458469 then unit
459470 else throw("Match error")
460471 }
461472
462473
463-let dn = throw("Permission denied")
474+let dt = throw("Permission denied")
464475
465-func do (df) = {
466- let as = dk()
467- if ($isInstanceOf(as, "ByteVector"))
476+func du (dh) = {
477+ let at = dq()
478+ if ($isInstanceOf(at, "ByteVector"))
468479 then {
469- let dp = as
470- if ((df.callerPublicKey == dp))
480+ let dv = at
481+ if ((dh.callerPublicKey == dv))
471482 then true
472- else dn
483+ else dt
473484 }
474- else if ($isInstanceOf(as, "Unit"))
475- then if ((df.caller == this))
485+ else if ($isInstanceOf(at, "Unit"))
486+ then if ((dh.caller == this))
476487 then true
477- else dn
488+ else dt
478489 else throw("Match error")
479490 }
480491
481492
482-@Callable(df)
483-func constructor (M) = {
484- let dq = do(df)
485- if ((dq == dq))
486- then [StringEntry(M(), M)]
493+@Callable(dh)
494+func constructor (N) = {
495+ let dw = du(dh)
496+ if ((dw == dw))
497+ then [StringEntry(N(), N)]
487498 else throw("Strict value is not equal to itself.")
488499 }
489500
490501
491502
492-@Callable(df)
493-func setManager (dr) = {
494- let dq = do(df)
495- if ((dq == dq))
503+@Callable(dh)
504+func setManager (dx) = {
505+ let dw = du(dh)
506+ if ((dw == dw))
496507 then {
497- let ds = fromBase58String(dr)
498- if ((ds == ds))
499- then [StringEntry(O(), dr)]
508+ let dy = fromBase58String(dx)
509+ if ((dy == dy))
510+ then [StringEntry(P(), dx)]
500511 else throw("Strict value is not equal to itself.")
501512 }
502513 else throw("Strict value is not equal to itself.")
504515
505516
506517
507-@Callable(df)
518+@Callable(dh)
508519 func confirmManager () = {
509- let bD = dm()
510- let dt = if (isDefined(bD))
520+ let bF = ds()
521+ let dz = if (isDefined(bF))
511522 then true
512523 else throw("No pending manager")
513- if ((dt == dt))
524+ if ((dz == dz))
514525 then {
515- let du = if ((df.callerPublicKey == value(bD)))
526+ let dA = if ((dh.callerPublicKey == value(bF)))
516527 then true
517528 else throw("You are not pending manager")
518- if ((du == du))
519- then [StringEntry(N(), toBase58String(value(bD))), DeleteEntry(O())]
529+ if ((dA == dA))
530+ then [StringEntry(O(), toBase58String(value(bF))), DeleteEntry(P())]
520531 else throw("Strict value is not equal to itself.")
521532 }
522533 else throw("Strict value is not equal to itself.")
524535
525536
526537
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))
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))
533544 then throw("Wrong slippage")
534- else if ((size(df.payments) != 2))
545+ else if ((size(dh.payments) != 2))
535546 then throw("2 pmnts expd")
536547 else {
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))
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))
547558 then {
548- let dC = {
549- let as = cx
550- if ($isInstanceOf(as, "Address"))
559+ let dI = {
560+ let at = cz
561+ if ($isInstanceOf(at, "Address"))
551562 then {
552- let dD = as
553- invoke(dD, "emit", [cK], nil)
563+ let dJ = at
564+ invoke(dJ, "emit", [cM], nil)
554565 }
555566 else unit
556567 }
557- if ((dC == dC))
568+ if ((dI == dI))
558569 then {
559- let dE = if ((cL > 0))
560- then invoke(dz, "put", nil, [AttachedPayment(bK, cL)])
570+ let dK = if ((cN > 0))
571+ then invoke(dF, "put", nil, [AttachedPayment(bM, cN)])
561572 else nil
562- if ((dE == dE))
573+ if ((dK == dK))
563574 then {
564- let dF = if ((cM > 0))
565- then invoke(dz, "put", nil, [AttachedPayment(bL, cM)])
575+ let dL = if ((cO > 0))
576+ then invoke(dF, "put", nil, [AttachedPayment(bN, cO)])
566577 else nil
567- if ((dF == dF))
578+ if ((dL == dL))
568579 then {
569- let dG = if (dw)
580+ let dM = if (dC)
570581 then {
571- let dH = invoke(dy, "stake", nil, [AttachedPayment(dB, cK)])
572- if ((dH == dH))
582+ let dN = invoke(dE, "stake", nil, [AttachedPayment(dH, cM)])
583+ if ((dN == dN))
573584 then nil
574585 else throw("Strict value is not equal to itself.")
575586 }
576- else [ScriptTransfer(df.caller, cK, dB)]
577- (cc ++ dG)
587+ else [ScriptTransfer(dh.caller, cM, dH)]
588+ (ce ++ dM)
578589 }
579590 else throw("Strict value is not equal to itself.")
580591 }
588599
589600
590601
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))
602+@Callable(dh)
603+func putOneTkn (dO,dP,dQ,bg,dC) = {
604+ let bx = aI()
605+ let dE = valueOrErrorMessage(addressFromString(bx[y]), "Wr st addr")
606+ let dF = valueOrErrorMessage(addressFromString(bx[z]), "Wr sl addr")
607+ let dR = valueOrErrorMessage(addressFromString(bx[A]), "Wr gwx addr")
608+ let dS = aE()
609+ let bM = dS[s]
610+ let bN = dS[t]
611+ let bO = parseIntValue(dS[u])
612+ let bP = parseIntValue(dS[v])
613+ let dT = valueOrElse(getString(this, ab()), "")
614+ let bK = if ((dT == toString(dh.caller)))
615+ then dh.originCaller
616+ else dh.caller
617+ if (if (if (if ((0 >= bg))
618+ then true
619+ else (0 >= dO))
620+ then true
621+ else (0 >= dP))
622+ then true
623+ else (0 >= dQ))
624+ then throw("Wrong params")
625+ else if ((size(dh.payments) != 1))
626+ then throw("1 pmnt expd")
627+ else {
628+ let di = value(dh.payments[0])
629+ let bI = toBase58String(value(di.assetId))
630+ let dU = di.amount
631+ let dV = dn(dU)
632+ let cn = dV._1
633+ let dW = dV._2
634+ if ((10000000 > dU))
635+ then throw("Wrong pmt amt")
636+ else {
637+ let bS = aY(bM)
638+ let bU = aY(bN)
639+ let dX = if ((bI == bM))
640+ then if (if ((dU > bS))
641+ then true
642+ else (dO > cn))
643+ then throw("invalid payment amount")
644+ else $Tuple6((bS - dU), bU, (cn - dO), dP, 0, 0)
645+ else if ((bI == bN))
646+ then if (if ((dU > bU))
630647 then true
631- else (dI > cl))
648+ else (dP > cn))
632649 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"))
650+ else $Tuple6(bS, (bU - dU), 0, 0, (cn - dP), dO)
651+ else throw("wrong pmtAssetId")
652+ let dY = dX._1
653+ let dZ = dX._2
654+ let ea = dX._3
655+ let eb = dX._4
656+ let ec = dX._5
657+ let ed = dX._6
658+ let bl = invoke(dR, "calcD", [toString(dY), toString(dZ), aA, h, i], nil)
659+ let bk = invoke(dR, "calcD", [toString(toBigInt(((dY + ea) - ed))), toString(toBigInt(((dZ + ec) - eb))), aA, h, i], nil)
660+ let ee = bj(parseBigIntValue(as(bk)), parseBigIntValue(as(bl)), g)
661+ if ((ee == ee))
662+ then {
663+ let ef = dj(toString(dh.caller), toBase58String(dh.transactionId), AttachedPayment(fromBase58String(bM), dO), AttachedPayment(fromBase58String(bN), dP), bg, true, true, cn, bI)
664+ let eg = ef._2
665+ let dH = ef._7
666+ let ce = ef._9
667+ let cN = ef._10
668+ let cO = ef._11
669+ let eh = bd(toBigInt(eg), toBigInt(dQ), toBigInt(bg))
670+ let cM = toInt(eh._2)
671+ let dG = invoke(az, "emit", [cM], nil)
672+ if ((dG == dG))
673+ then {
674+ let dI = {
675+ let at = dG
676+ if ($isInstanceOf(at, "Address"))
677+ then {
678+ let dJ = at
679+ invoke(dJ, "emit", [cM], nil)
680+ }
681+ else unit
682+ }
683+ if ((dI == dI))
684+ then {
685+ let dK = if ((cN > 0))
686+ then invoke(dF, "put", nil, [AttachedPayment(fromBase58String(bM), cN)])
687+ else nil
688+ if ((dK == dK))
666689 then {
667- let dD = as
668- invoke(dD, "emit", [cK], nil)
690+ let dL = if ((cO > 0))
691+ then invoke(dF, "put", nil, [AttachedPayment(fromBase58String(bN), cO)])
692+ else nil
693+ if ((dL == dL))
694+ then {
695+ let dM = if (dC)
696+ then {
697+ let dN = invoke(dE, "stake", nil, [AttachedPayment(dH, cM)])
698+ if ((dN == dN))
699+ then nil
700+ else throw("Strict value is not equal to itself.")
701+ }
702+ else [ScriptTransfer(dh.caller, cM, dH)]
703+ let ei = if ((dW > 0))
704+ then [ScriptTransfer(aD, dW, fromBase58String(bI))]
705+ else nil
706+ ((ce ++ dM) ++ ei)
707+ }
708+ else throw("Strict value is not equal to itself.")
669709 }
670- else unit
710+ else throw("Strict value is not equal to itself.")
671711 }
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- }
712+ else throw("Strict value is not equal to itself.")
713+ }
714+ else throw("Strict value is not equal to itself.")
715+ }
716+ else throw("Strict value is not equal to itself.")
717+ }
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
705746 else throw("Strict value is not equal to itself.")
706747 }
707748
708749
709750
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- let dO = valueOrErrorMessage(addressFromString(valueOrErrorMessage(getString(aa()), "no addons")), "addon address in not valid")
726- if ((size(df.payments) != 1))
727- then throw("1 pmnt expd")
728- else {
729- let dg = value(df.payments[0])
730- let bG = toBase58String(value(dg.assetId))
731- let cl = dg.amount
732- if ((10000000 > cl))
733- then throw("Wrong pmt amt")
734- else {
735- let bQ = aW(bK)
736- let bS = aW(bL)
737- let eb = if ((bG == bK))
738- then if ((cl > bQ))
739- then throw("invalid payment amount")
740- else $Tuple2((bQ - cl), bS)
741- else if ((bG == bL))
742- then if ((cl > bS))
743- then throw("invalid payment amount")
744- else $Tuple2(bQ, (bS - cl))
745- else throw("wrong pmtAssetId")
746- let dR = eb._1
747- let dS = eb._2
748- let ec = if ((bG == bK))
749- then $Tuple2(dR, dS)
750- else $Tuple2(dS, dR)
751- let ed = ec._1
752- let ee = ec._2
753- let ef = 1
754- let eg = {
755- let eh = invoke(dL, "calcPutXOnly", [toString(cl), toString(ed), toString(ee), "", az, g, toString(ef), h], nil)
756- if ($isInstanceOf(eh, "(Int, Int)"))
757- then eh
758- 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)"))
759- }
760- let ei = if ((bG == bK))
761- then eg
762- else $Tuple2(eg._2, eg._1)
763- let dI = ei._1
764- let dJ = ei._2
765- let dY = dh(toString(df.caller), toBase58String(df.transactionId), AttachedPayment(fromBase58String(bK), dI), AttachedPayment(fromBase58String(bL), dJ), be, true, true, cl, bG)
766- let dZ = dY._2
767- let dB = dY._7
768- let cc = dY._9
769- let cL = dY._10
770- let cM = dY._11
771- let cK = if ((dK > 0))
772- then {
773- let ea = bb(toBigInt(dZ), toBigInt(dK), toBigInt(be))
774- toInt(ea._2)
775- }
776- else dZ
777- let dA = invoke(ay, "emit", [cK], nil)
778- if ((dA == dA))
779- then {
780- let dC = {
781- let as = dA
782- if ($isInstanceOf(as, "Address"))
783- then {
784- let dD = as
785- invoke(dD, "emit", [cK], nil)
786- }
787- else unit
788- }
789- if ((dC == dC))
790- then {
791- let dE = if ((cL > 0))
792- then invoke(dz, "put", nil, [AttachedPayment(fromBase58String(bK), cL)])
793- else nil
794- if ((dE == dE))
795- then {
796- let dF = if ((cM > 0))
797- then invoke(dz, "put", nil, [AttachedPayment(fromBase58String(bL), cM)])
798- else nil
799- if ((dF == dF))
800- then {
801- let dG = if (dw)
802- then {
803- let dH = invoke(dy, "stake", nil, [AttachedPayment(dB, cK)])
804- if ((dH == dH))
805- then nil
806- else throw("Strict value is not equal to itself.")
807- }
808- else [ScriptTransfer(df.caller, cK, dB)]
809- (cc ++ dG)
810- }
811- else throw("Strict value is not equal to itself.")
812- }
813- else throw("Strict value is not equal to itself.")
814- }
815- else throw("Strict value is not equal to itself.")
816- }
817- else throw("Strict value is not equal to itself.")
818- }
819- }
820- }
821-
822-
823-
824-@Callable(df)
825-func putForFree (ej) = if ((0 > ej))
826- then throw("Wrong slpg")
827- else if ((size(df.payments) != 2))
828- then throw("2 pmnts expd")
829- else {
830- 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, "")
831- dY._9
832- }
833-
834-
835-
836-@Callable(df)
837-func get () = {
838- let cx = de(df)
839- let ek = cx._1
840- let cb = cx._2
841- let cl = cx._3
842- let bG = cx._4
843- let cc = cx._5
844- let el = invoke(ay, "burn", [cl], [AttachedPayment(bG, cl)])
845- if ((el == el))
846- then cc
847- else throw("Strict value is not equal to itself.")
848- }
849-
850-
851-
852-@Callable(df)
853-func getOneTkn (em,en,eo,ep,be) = if ((size(df.payments) != 1))
751+@Callable(dh)
752+func getOneTkn (em,en,eo,ep,bg) = if ((size(dh.payments) != 1))
854753 then throw("1 pmnt expd")
855754 else {
856- let bv = aC()
857- let bJ = bv[q]
858- let bK = bv[r]
859- let bL = bv[s]
860- let bM = parseIntValue(bv[t])
861- let bN = parseIntValue(bv[u])
862- let bO = bv[p]
863- let dx = aG()
864- let dL = valueOrErrorMessage(addressFromString(dx[z]), "Wr sl addr")
865- let dg = value(df.payments[0])
866- let dN = valueOrElse(getString(this, aa()), "")
867- let bI = if ((dN == toString(df.caller)))
868- then df.originCaller
869- else df.caller
870- let bF = toBase58String(df.transactionId)
871- let bG = value(dg.assetId)
872- let cl = dg.amount
873- let dO = valueOrErrorMessage(addressFromString(valueOrErrorMessage(getString(aa()), "no addons")), "addon address in not valid")
874- let dP = reentrantInvoke(dO, "ensureCanGetOneTkn", [toString(bI)], nil)
875- if ((dP == dP))
876- then if ((1000000000 > cl))
877- then throw("Min pmt 10 LP")
878- else if (if (if ((0 > be))
879- then true
880- else (0 > em))
881- then true
882- else (0 > eo))
883- then throw("Wrong params")
884- else if ((bJ != toBase58String(bG)))
885- then throw("Wrong LP")
886- else {
887- let cx = bE(toBase58String(df.transactionId), toBase58String(bG), cl, df.caller)
888- let eq = cx._1
889- let er = cx._2
890- let bQ = aW(bK)
891- let bS = aW(bL)
892- let es = if ((ep == bK))
893- then $Tuple7((bQ - eq), (bS - er), em, er, 0, 0, (eq + em))
894- else if ((ep == bL))
895- then $Tuple7((bQ - eq), (bS - er), 0, 0, em, eq, (er + em))
896- else throw("wrong outAssetId")
897- let dR = es._1
898- let dS = es._2
899- let dT = es._3
900- let dU = es._4
901- let dV = es._5
902- let dW = es._6
903- let et = es._7
904- if (if ((0 > dT))
905- then true
906- else (0 > dV))
907- then throw("Wrong calc")
908- else {
909- let bj = invoke(dL, "calcD", [toString(dR), toString(dS), az, g, h], nil)
910- let bi = invoke(dL, "calcD", [toString(((dR - dT) + dW)), toString(((dS + dU) - dV)), az, g, h], nil)
911- let dX = bh(parseBigIntValue(ar(bi)), parseBigIntValue(ar(bj)), f)
912- if ((dX == dX))
913- then {
914- let eu = bb(toBigInt(et), toBigInt(eo), toBigInt(be))
915- if ((eu == eu))
916- then {
917- let ev = if ((ep == bK))
918- then $Tuple2(toInt(eu._2), 0)
919- else $Tuple2(0, toInt(eu._2))
920- let ew = ev._1
921- let ex = ev._2
922- let ey = aY(B(bS, bN), B(bQ, bM))
923- let ez = E(ey, a)
924- let cc = [ScriptTransfer(bI, (ew + ex), if ((ep == "WAVES"))
925- then unit
926- 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)]
927- if ((cc == cc))
928- then {
929- let eA = invoke(ay, "burn", [cl], [AttachedPayment(bG, cl)])
930- if ((eA == eA))
931- then cc
932- else throw("Strict value is not equal to itself.")
933- }
934- else throw("Strict value is not equal to itself.")
935- }
936- else throw("Strict value is not equal to itself.")
937- }
938- else throw("Strict value is not equal to itself.")
939- }
940- }
941- else throw("Strict value is not equal to itself.")
755+ let bx = aE()
756+ let bL = bx[r]
757+ let bM = bx[s]
758+ let bN = bx[t]
759+ let bO = parseIntValue(bx[u])
760+ let bP = parseIntValue(bx[v])
761+ let bQ = bx[q]
762+ let dD = aI()
763+ let dR = valueOrErrorMessage(addressFromString(dD[A]), "Wr sl addr")
764+ let di = value(dh.payments[0])
765+ let dT = valueOrElse(getString(this, ab()), "")
766+ let bK = if ((dT == toString(dh.caller)))
767+ then dh.originCaller
768+ else dh.caller
769+ let bH = toBase58String(dh.transactionId)
770+ let bI = value(di.assetId)
771+ let cn = di.amount
772+ if ((1000000000 > cn))
773+ then throw("Min pmt 10 LP")
774+ else if (if (if ((0 > bg))
775+ then true
776+ else (0 > em))
777+ then true
778+ else (0 > eo))
779+ then throw("Wrong params")
780+ else if ((bL != toBase58String(bI)))
781+ then throw("Wrong LP")
782+ else {
783+ let cz = bG(toBase58String(dh.transactionId), toBase58String(bI), cn, dh.caller)
784+ let eq = cz._1
785+ let er = cz._2
786+ let bS = aY(bM)
787+ let bU = aY(bN)
788+ let es = if ((ep == bM))
789+ then $Tuple7((bS - eq), (bU - er), em, er, 0, 0, (eq + em))
790+ else if ((ep == bN))
791+ then $Tuple7((bS - eq), (bU - er), 0, 0, em, eq, (er + em))
792+ else throw("wrong outAssetId")
793+ let dY = es._1
794+ let dZ = es._2
795+ let ea = es._3
796+ let eb = es._4
797+ let ec = es._5
798+ let ed = es._6
799+ let et = es._7
800+ if (if ((0 > ea))
801+ then true
802+ else (0 > ec))
803+ then throw("Wrong calc")
804+ else {
805+ let bl = invoke(dR, "calcD", [toString(dY), toString(dZ), aA, h, i], nil)
806+ let bk = invoke(dR, "calcD", [toString(((dY - ea) + ed)), toString(((dZ + eb) - ec)), aA, h, i], nil)
807+ let ee = bj(parseBigIntValue(as(bk)), parseBigIntValue(as(bl)), g)
808+ if ((ee == ee))
809+ then {
810+ let eu = dn(et)._1
811+ let ev = bd(toBigInt(eu), toBigInt(eo), toBigInt(bg))
812+ if ((ev == ev))
813+ then {
814+ let ew = if ((ep == bM))
815+ then $Tuple2(toInt(ev._2), 0)
816+ else $Tuple2(0, toInt(ev._2))
817+ let ex = ew._1
818+ let ey = ew._2
819+ let ez = (ex + ey)
820+ let dW = (et - eu)
821+ let eA = if ((ep == "WAVES"))
822+ then unit
823+ else fromBase58String(ep)
824+ let ei = if ((dW > 0))
825+ then [ScriptTransfer(aD, dW, eA)]
826+ else nil
827+ let eB = ba(C(bU, bP), C(bS, bO))
828+ let eC = F(eB, a)
829+ let ce = [ScriptTransfer(bK, ez, eA), StringEntry(X(toString(bK), bH), aU(ex, ey, cn, eC, height, lastBlock.timestamp)), IntegerEntry(Q(), eC), IntegerEntry(R(height, lastBlock.timestamp), eC)]
830+ if ((ce == ce))
831+ then {
832+ let eD = invoke(az, "burn", [cn], [AttachedPayment(bI, cn)])
833+ if ((eD == eD))
834+ then (ce ++ ei)
835+ else throw("Strict value is not equal to itself.")
836+ }
837+ else throw("Strict value is not equal to itself.")
838+ }
839+ else throw("Strict value is not equal to itself.")
840+ }
841+ else throw("Strict value is not equal to itself.")
842+ }
843+ }
942844 }
943845
944846
945847
946-@Callable(df)
947-func getNoLess (eB,eC) = {
948- let cx = de(df)
949- let ca = cx._1
950- let cb = cx._2
951- let cl = cx._3
952- let bG = cx._4
953- let cc = cx._5
954- if ((eB > ca))
955- then throw(((("Failed: " + toString(ca)) + " < ") + toString(eB)))
956- else if ((eC > cb))
957- then throw(((("Failed: " + toString(cb)) + " < ") + toString(eC)))
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)))
958860 else {
959- let eD = invoke(ay, "burn", [cl], [AttachedPayment(bG, cl)])
960- if ((eD == eD))
961- then cc
861+ let eG = invoke(az, "burn", [cn], [AttachedPayment(bI, cn)])
862+ if ((eG == eG))
863+ then ce
962864 else throw("Strict value is not equal to itself.")
963865 }
964866 }
965867
966868
967869
968-@Callable(df)
969-func unstakeAndGet (eE) = {
970- let eF = if ((size(df.payments) != 0))
870+@Callable(dh)
871+func unstakeAndGet (do) = {
872+ let eH = if ((size(dh.payments) != 0))
971873 then throw("No pmnts expd")
972874 else true
973- if ((eF == eF))
875+ if ((eH == eH))
974876 then {
975- let bv = aC()
976- let eG = aG()
977- let dB = fromBase58String(bv[q])
978- let eH = valueOrErrorMessage(addressFromString(eG[x]), "Wr st addr")
979- let eI = invoke(eH, "unstake", [toBase58String(dB), eE], nil)
980- if ((eI == eI))
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))
981883 then {
982- let cx = bE(toBase58String(df.transactionId), toBase58String(dB), eE, df.caller)
983- let bO = parseIntValue(cx._9)
984- let cc = cx._10
985- let eJ = if (if (aA())
884+ let cz = bG(toBase58String(dh.transactionId), toBase58String(dH), do, dh.caller)
885+ let bQ = parseIntValue(cz._9)
886+ let ce = cz._10
887+ let eL = if (if (aB())
986888 then true
987- else (bO == n))
988- then throw(("Blocked: " + toString(bO)))
889+ else (bQ == o))
890+ then throw(("Blocked: " + toString(bQ)))
989891 else true
990- if ((eJ == eJ))
892+ if ((eL == eL))
991893 then {
992- let eK = invoke(ay, "burn", [eE], [AttachedPayment(dB, eE)])
993- if ((eK == eK))
994- then cc
894+ let eM = invoke(az, "burn", [do], [AttachedPayment(dH, do)])
895+ if ((eM == eM))
896+ then ce
995897 else throw("Strict value is not equal to itself.")
996898 }
997899 else throw("Strict value is not equal to itself.")
1003905
1004906
1005907
1006-@Callable(df)
1007-func activate (eL,eM) = if ((toString(df.caller) != toString(ay)))
908+@Callable(dh)
909+func activate (eN,eO) = if ((toString(dh.caller) != toString(az)))
1008910 then throw("denied")
1009- else $Tuple2([StringEntry(X(), eL), StringEntry(Y(), eM)], "success")
911+ else $Tuple2([StringEntry(Y(), eN), StringEntry(Z(), eO)], "success")
1010912
1011913
1012914
1013-@Callable(df)
1014-func setS (eN,eJ) = if ((toString(df.caller) != au(this, aa())))
1015- then dn
1016- else [StringEntry(eN, eJ)]
915+@Callable(dh)
916+func setS (eP,eL) = if ((toString(dh.caller) != av(this, ab())))
917+ then dt
918+ else [StringEntry(eP, eL)]
1017919
1018920
1019921
1020-@Callable(df)
1021-func setI (eN,eJ) = if ((toString(df.caller) != au(this, aa())))
1022- then dn
1023- else [IntegerEntry(eN, eJ)]
922+@Callable(dh)
923+func setI (eP,eL) = if ((toString(dh.caller) != av(this, ab())))
924+ then dt
925+ else [IntegerEntry(eP, eL)]
1024926
1025927
1026928
1027-@Callable(df)
1028-func getPoolConfigWrapperREADONLY () = $Tuple2(nil, aC())
929+@Callable(dh)
930+func getPoolConfigWrapperREADONLY () = $Tuple2(nil, aE())
1029931
1030932
1031933
1032-@Callable(df)
1033-func getAccBalanceWrapperREADONLY (aX) = $Tuple2(nil, aW(aX))
934+@Callable(dh)
935+func getAccBalanceWrapperREADONLY (aZ) = $Tuple2(nil, aY(aZ))
1034936
1035937
1036938
1037-@Callable(df)
1038-func calcPricesWrapperREADONLY (bp,bq,bu) = {
1039- let eO = bt(bp, bq, bu)
1040- $Tuple2(nil, [toString(eO[0]), toString(eO[1]), toString(eO[2])])
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])])
1041943 }
1042944
1043945
1044946
1045-@Callable(df)
1046-func fromX18WrapperREADONLY (F,eP) = $Tuple2(nil, E(parseBigIntValue(F), eP))
947+@Callable(dh)
948+func fromX18WrapperREADONLY (G,eR) = $Tuple2(nil, F(parseBigIntValue(G), eR))
1047949
1048950
1049951
1050-@Callable(df)
1051-func toX18WrapperREADONLY (C,D) = $Tuple2(nil, toString(B(C, D)))
952+@Callable(dh)
953+func toX18WrapperREADONLY (D,E) = $Tuple2(nil, toString(C(D, E)))
1052954
1053955
1054956
1055-@Callable(df)
1056-func calcPriceBigIntWrapperREADONLY (aZ,ba) = $Tuple2(nil, toString(aY(parseBigIntValue(aZ), parseBigIntValue(ba))))
957+@Callable(dh)
958+func calcPriceBigIntWrapperREADONLY (bb,bc) = $Tuple2(nil, toString(ba(parseBigIntValue(bb), parseBigIntValue(bc))))
1057959
1058960
1059961
1060-@Callable(df)
1061-func estimatePutOperationWrapperREADONLY (bF,be,ce,cf,cg,ch,eQ,ci,cj) = $Tuple2(nil, cd(bF, be, ce, cf, cg, ch, eQ, ci, cj, false, 0, ""))
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, ""))
1062964
1063965
1064966
1065-@Callable(df)
1066-func estimateGetOperationWrapperREADONLY (bF,eR,bH,eQ) = {
1067- let cx = bE(bF, eR, bH, addressFromStringValue(eQ))
1068- $Tuple2(nil, $Tuple10(cx._1, cx._2, cx._3, cx._4, cx._5, cx._6, cx._7, toString(cx._8), cx._9, cx._10))
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))
1069971 }
1070972
1071973
1072-@Verifier(eS)
1073-func eT () = {
1074- let eU = {
1075- let as = dk()
1076- if ($isInstanceOf(as, "ByteVector"))
974+@Verifier(eU)
975+func eV () = {
976+ let eW = {
977+ let at = dq()
978+ if ($isInstanceOf(at, "ByteVector"))
1077979 then {
1078- let dp = as
1079- dp
980+ let dv = at
981+ dv
1080982 }
1081- else if ($isInstanceOf(as, "Unit"))
1082- then eS.senderPublicKey
983+ else if ($isInstanceOf(at, "Unit"))
984+ then eU.senderPublicKey
1083985 else throw("Match error")
1084986 }
1085- let as = eS
1086- if ($isInstanceOf(as, "Order"))
987+ let at = eU
988+ if ($isInstanceOf(at, "Order"))
1087989 then {
1088- let cS = as
1089- let eV = aB()
1090- let eW = cR(cS)
1091- let eX = sigVerify(cS.bodyBytes, cS.proofs[0], cS.senderPublicKey)
1092- let eY = sigVerify(cS.bodyBytes, cS.proofs[1], eV)
1093- if (if (if (eW)
1094- then eX
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
1095997 else false)
1096- then eY
998+ then fa
1097999 else false)
10981000 then true
1099- else an(eW, eX, eY)
1001+ else ao(eY, eZ, fa)
11001002 }
1101- else if ($isInstanceOf(as, "SetScriptTransaction"))
1003+ else if ($isInstanceOf(at, "SetScriptTransaction"))
11021004 then {
1103- let dl = as
1104- let eZ = blake2b256(value(dl.script))
1105- let fa = fromBase64String(value(getString(ay, am())))
1106- let fb = scriptHash(this)
1107- if (if ((fa == eZ))
1108- then (fb != eZ)
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)
11091011 else false)
11101012 then true
1111- else sigVerify(eS.bodyBytes, eS.proofs[0], eU)
1013+ else sigVerify(eU.bodyBytes, eU.proofs[0], eW)
11121014 }
1113- else sigVerify(eS.bodyBytes, eS.proofs[0], eU)
1015+ else sigVerify(eU.bodyBytes, eU.proofs[0], eW)
11141016 }
11151017
Full:
OldNewDifferences
11 {-# STDLIB_VERSION 6 #-}
22 {-# SCRIPT_TYPE ACCOUNT #-}
33 {-# CONTENT_TYPE DAPP #-}
44 let a = 100000000
55
66 let b = toBigInt(100000000)
77
88 let c = toBigInt(1000000000000000000)
99
10-let d = toBigInt(0)
10+let d = 1000
1111
12-let e = toBigInt(1)
12+let e = toBigInt(0)
1313
14-let f = toBigInt((a - ((a * 1) / a)))
14+let f = toBigInt(1)
1515
16-let g = "100"
16+let g = toBigInt((a - ((a * 1) / a)))
1717
18-let h = "1"
18+let h = "100"
1919
20-let i = "__"
20+let i = "1"
2121
22-let j = ""
22+let j = "__"
2323
24-let k = 1
24+let k = ""
2525
26-let l = 2
26+let l = 1
2727
28-let m = 3
28+let m = 2
2929
30-let n = 4
30+let n = 3
3131
32-let o = 1
32+let o = 4
3333
34-let p = 2
34+let p = 1
3535
36-let q = 3
36+let q = 2
3737
38-let r = 4
38+let r = 3
3939
40-let s = 5
40+let s = 4
4141
42-let t = 6
42+let t = 5
4343
44-let u = 7
44+let u = 6
4545
46-let v = 8
46+let v = 7
4747
48-let w = 9
48+let w = 8
4949
50-let x = 1
50+let x = 9
5151
52-let y = 7
52+let y = 1
5353
54-let z = 10
54+let z = 7
5555
56-let A = "%s__delay"
56+let A = 10
5757
58-func B (C,D) = fraction(toBigInt(C), c, toBigInt(D))
58+let B = 0
59+
60+func C (D,E) = fraction(toBigInt(D), c, toBigInt(E))
5961
6062
61-func E (F,G) = toInt(fraction(F, toBigInt(G), c))
63+func F (G,H) = toInt(fraction(G, toBigInt(H), c))
6264
6365
64-func H (I,J,K) = fraction(I, J, K)
66+func I (J,K,L) = fraction(J, K, L)
6567
6668
67-func L (F) = if ((d > F))
68- then -(F)
69- else F
69+func M (G) = if ((e > G))
70+ then -(G)
71+ else G
7072
7173
72-func M () = "%s__factoryContract"
74+func N () = "%s__factoryContract"
7375
7476
75-func N () = "%s__managerPublicKey"
77+func O () = "%s__managerPublicKey"
7678
7779
78-func O () = "%s__pendingManagerPublicKey"
80+func P () = "%s__pendingManagerPublicKey"
7981
8082
81-func P () = "%s%s__price__last"
83+func Q () = "%s%s__price__last"
8284
8385
84-func Q (R,S) = makeString(["%s%s%d%d__price__history", toString(R), toString(S)], i)
86+func R (S,T) = makeString(["%s%s%d%d__price__history", toString(S), toString(T)], j)
8587
8688
87-func T (U,V) = ((("%s%s%s__P__" + U) + "__") + V)
89+func U (V,W) = ((("%s%s%s__P__" + V) + "__") + W)
8890
8991
90-func W (U,V) = ((("%s%s%s__G__" + U) + "__") + V)
92+func X (V,W) = ((("%s%s%s__G__" + V) + "__") + W)
9193
9294
93-func X () = "%s__amountAsset"
95+func Y () = "%s__amountAsset"
9496
9597
96-func Y () = "%s__priceAsset"
98+func Z () = "%s__priceAsset"
9799
98100
99-func Z () = "%s__amp"
101+func aa () = "%s__amp"
100102
101103
102-func aa () = "%s__addonAddr"
104+func ab () = "%s__addonAddr"
103105
104106
105-func ab (ac) = makeString(["%s%s__lastGetOneTknCall", ac], i)
107+let ac = "%s__feePermille"
106108
107-
108-func ad (ac) = makeString(["%s%s__lastPutOneTknCall", ac], i)
109-
109+let ad = valueOrElse(getInteger(this, ac), B)
110110
111111 func ae () = "%s__factoryConfig"
112112
113113
114114 func af () = "%s%s__matcher__publicKey"
115115
116116
117117 func ag (ah,ai) = (((("%d%d%s__" + ah) + "__") + ai) + "__config")
118118
119119
120120 func aj (ak) = ("%s%s%s__mappings__baseAsset2internalId__" + ak)
121121
122122
123123 func al () = "%s__shutdown"
124124
125125
126126 func am () = "%s__allowedLpStableScriptHash"
127127
128128
129-func an (ao,ap,aq) = throw(((((("Failed: ordValid=" + toString(ao)) + " sndrValid=") + toString(ap)) + " mtchrValid=") + toString(aq)))
129+func an () = "%s__feeCollectorAddress"
130130
131131
132-func ar (F) = {
133- let as = F
134- if ($isInstanceOf(as, "String"))
132+func ao (ap,aq,ar) = throw(((((("Failed: ordValid=" + toString(ap)) + " sndrValid=") + toString(aq)) + " mtchrValid=") + toString(ar)))
133+
134+
135+func as (G) = {
136+ let at = G
137+ if ($isInstanceOf(at, "String"))
135138 then {
136- let at = as
137- at
139+ let au = at
140+ au
138141 }
139142 else throw("fail cast to String")
140143 }
141144
142145
143-func au (av,aw) = valueOrErrorMessage(getString(av, aw), makeString(["mandatory ", toString(av), ".", aw, " not defined"], ""))
146+func av (aw,ax) = valueOrErrorMessage(getString(aw, ax), makeString(["mandatory ", toString(aw), ".", ax, " not defined"], ""))
144147
145148
146-func ax (av,aw) = valueOrErrorMessage(getInteger(av, aw), makeString(["mandatory ", toString(av), ".", aw, " not defined"], ""))
149+func ay (aw,ax) = valueOrErrorMessage(getInteger(aw, ax), makeString(["mandatory ", toString(aw), ".", ax, " not defined"], ""))
147150
148151
149-let ay = addressFromStringValue(au(this, M()))
152+let az = addressFromStringValue(av(this, N()))
150153
151-let az = au(this, Z())
154+let aA = av(this, aa())
152155
153-func aA () = valueOrElse(getBoolean(ay, al()), false)
156+func aB () = valueOrElse(getBoolean(az, al()), false)
154157
155158
156-func aB () = fromBase58String(au(ay, af()))
159+func aC () = fromBase58String(av(az, af()))
157160
158161
159-func aC () = {
160- let aD = au(this, X())
161- let aE = au(this, Y())
162- let aF = ax(ay, aj(aE))
163- let ah = ax(ay, aj(aD))
164- split(au(ay, ag(toString(ah), toString(aF))), i)
162+let aD = addressFromStringValue(av(az, an()))
163+
164+func aE () = {
165+ let aF = av(this, Y())
166+ let aG = av(this, Z())
167+ let aH = ay(az, aj(aG))
168+ let ah = ay(az, aj(aF))
169+ split(av(az, ag(toString(ah), toString(aH))), j)
165170 }
166171
167172
168-func aG () = split(au(ay, ae()), i)
173+func aI () = split(av(az, ae()), j)
169174
170175
171-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)
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)
172177
173178
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)
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)
175180
176181
177-func aW (aX) = if ((aX == "WAVES"))
182+func aY (aZ) = if ((aZ == "WAVES"))
178183 then wavesBalance(this).available
179- else assetBalance(this, fromBase58String(aX))
184+ else assetBalance(this, fromBase58String(aZ))
180185
181186
182-func aY (aZ,ba) = fraction(aZ, c, ba)
187+func ba (bb,bc) = fraction(bb, c, bc)
183188
184189
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]))
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]))
191196 }
192197
193198
194-func bh (bi,bj,bk) = {
195- let bf = fraction(bj, b, bi)
196- let bl = (bk > bf)
197- if (if (bl)
199+func bj (bk,bl,bm) = {
200+ let bh = fraction(bl, b, bk)
201+ let bn = (bm > bh)
202+ if (if (bn)
198203 then true
199- else (bj > bi))
200- then throw(((((((toString(bj) + " ") + toString(bi)) + " ") + toString(bf)) + " ") + toString(bk)))
201- else bl
204+ else (bl > bk))
205+ then throw(((((((toString(bl) + " ") + toString(bk)) + " ") + toString(bh)) + " ") + toString(bm)))
206+ else bn
202207 }
203208
204209
205-func bm (bn,bo,bp,bq) = {
206- let br = B(bp, bn)
207- let bs = B(bq, bo)
208- aY(bs, br)
210+func bo (bp,bq,br,bs) = {
211+ let bt = C(br, bp)
212+ let bu = C(bs, bq)
213+ ba(bu, bt)
209214 }
210215
211216
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]
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]
223228 }
224229
225230
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)]
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)]
229234 }
230235
231236
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))
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))
242247 then throw("Wrong pmt asset")
243248 else {
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 == ""))
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 == ""))
257262 then nil
258- else [ScriptTransfer(bI, ca, if ((bK == "WAVES"))
263+ else [ScriptTransfer(bK, cc, if ((bM == "WAVES"))
259264 then unit
260- else fromBase58String(bK)), ScriptTransfer(bI, cb, if ((bL == "WAVES"))
265+ else fromBase58String(bM)), ScriptTransfer(bK, cd, if ((bN == "WAVES"))
261266 then unit
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)
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)
264269 }
265270 }
266271
267272
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)
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)
283288 else false)
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)
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)
292297 else false)
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))
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))
303308 then {
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)
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)
308313 }
309314 else {
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)
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)
315320 else false)
316- then throw(((("Price slippage " + toString(cz)) + " > ") + toString(cy)))
321+ then throw(((("Price slippage " + toString(cB)) + " > ") + toString(cA)))
317322 else {
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)
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)
328333 }
329334 }
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))
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))
336341 then throw("LP <= 0")
337342 else {
338- let cK = if (!(cj))
343+ let cM = if (!(cl))
339344 then 0
340- else cG
341- let cL = (ce - cH)
342- let cM = (cg - cI)
343- let cN = if (if (ck)
344- then (cm == cn)
345+ else cI
346+ let cN = (cg - cJ)
347+ let cO = (ci - cK)
348+ let cP = if (if (cm)
349+ then (co == cp)
345350 else false)
346- then $Tuple2(cl, 0)
347- else if (if (ck)
348- then (cm == co)
351+ then $Tuple2(cn, 0)
352+ else if (if (cm)
353+ then (co == cq)
349354 else false)
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)
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)
356361 }
357362 }
358363
359364
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())
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())
374379 then true
375- else (bO == m))
380+ else (bQ == n))
376381 then true
377- else (bO == n))
382+ else (bQ == o))
378383 then throw("Admin blocked")
379384 else {
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
385+ let cZ = cU.assetPair.amountAsset
385386 let da = if ((cZ == unit))
386387 then "WAVES"
387388 else toBase58String(value(cZ))
388- if (if ((cY != cT))
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))
389394 then true
390- else (da != cU))
395+ else (dc != cW))
391396 then throw("Wr assets")
392397 else {
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)
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)
399404 true
400405 }
401406 }
402407 }
403408
404409
405-func de (df) = if ((size(df.payments) != 1))
410+func dg (dh) = if ((size(dh.payments) != 1))
406411 then throw("1 pmnt exp")
407412 else {
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())
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())
417422 then true
418- else (bO == n))
419- then throw(("Admin blocked: " + toString(bO)))
420- else $Tuple5(ca, cb, cl, bG, cc)
423+ else (bQ == o))
424+ then throw(("Admin blocked: " + toString(bQ)))
425+ else $Tuple5(cc, cd, cn, bI, ce)
421426 }
422427
423428
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())
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())
428433 then true
429- else (bO == l))
434+ else (bQ == m))
430435 then true
431- else (bO == n))
432- then throw(("Blocked:" + toString(bO)))
433- else cx
436+ else (bQ == o))
437+ then throw(("Blocked:" + toString(bQ)))
438+ else cz
434439 }
435440
436441
437-func dk () = {
438- let as = getString(N())
439- if ($isInstanceOf(as, "String"))
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"))
440451 then {
441- let dl = as
442- fromBase58String(dl)
452+ let dr = at
453+ fromBase58String(dr)
443454 }
444- else if ($isInstanceOf(as, "Unit"))
455+ else if ($isInstanceOf(at, "Unit"))
445456 then unit
446457 else throw("Match error")
447458 }
448459
449460
450-func dm () = {
451- let as = getString(O())
452- if ($isInstanceOf(as, "String"))
461+func ds () = {
462+ let at = getString(P())
463+ if ($isInstanceOf(at, "String"))
453464 then {
454- let dl = as
455- fromBase58String(dl)
465+ let dr = at
466+ fromBase58String(dr)
456467 }
457- else if ($isInstanceOf(as, "Unit"))
468+ else if ($isInstanceOf(at, "Unit"))
458469 then unit
459470 else throw("Match error")
460471 }
461472
462473
463-let dn = throw("Permission denied")
474+let dt = throw("Permission denied")
464475
465-func do (df) = {
466- let as = dk()
467- if ($isInstanceOf(as, "ByteVector"))
476+func du (dh) = {
477+ let at = dq()
478+ if ($isInstanceOf(at, "ByteVector"))
468479 then {
469- let dp = as
470- if ((df.callerPublicKey == dp))
480+ let dv = at
481+ if ((dh.callerPublicKey == dv))
471482 then true
472- else dn
483+ else dt
473484 }
474- else if ($isInstanceOf(as, "Unit"))
475- then if ((df.caller == this))
485+ else if ($isInstanceOf(at, "Unit"))
486+ then if ((dh.caller == this))
476487 then true
477- else dn
488+ else dt
478489 else throw("Match error")
479490 }
480491
481492
482-@Callable(df)
483-func constructor (M) = {
484- let dq = do(df)
485- if ((dq == dq))
486- then [StringEntry(M(), M)]
493+@Callable(dh)
494+func constructor (N) = {
495+ let dw = du(dh)
496+ if ((dw == dw))
497+ then [StringEntry(N(), N)]
487498 else throw("Strict value is not equal to itself.")
488499 }
489500
490501
491502
492-@Callable(df)
493-func setManager (dr) = {
494- let dq = do(df)
495- if ((dq == dq))
503+@Callable(dh)
504+func setManager (dx) = {
505+ let dw = du(dh)
506+ if ((dw == dw))
496507 then {
497- let ds = fromBase58String(dr)
498- if ((ds == ds))
499- then [StringEntry(O(), dr)]
508+ let dy = fromBase58String(dx)
509+ if ((dy == dy))
510+ then [StringEntry(P(), dx)]
500511 else throw("Strict value is not equal to itself.")
501512 }
502513 else throw("Strict value is not equal to itself.")
503514 }
504515
505516
506517
507-@Callable(df)
518+@Callable(dh)
508519 func confirmManager () = {
509- let bD = dm()
510- let dt = if (isDefined(bD))
520+ let bF = ds()
521+ let dz = if (isDefined(bF))
511522 then true
512523 else throw("No pending manager")
513- if ((dt == dt))
524+ if ((dz == dz))
514525 then {
515- let du = if ((df.callerPublicKey == value(bD)))
526+ let dA = if ((dh.callerPublicKey == value(bF)))
516527 then true
517528 else throw("You are not pending manager")
518- if ((du == du))
519- then [StringEntry(N(), toBase58String(value(bD))), DeleteEntry(O())]
529+ if ((dA == dA))
530+ then [StringEntry(O(), toBase58String(value(bF))), DeleteEntry(P())]
520531 else throw("Strict value is not equal to itself.")
521532 }
522533 else throw("Strict value is not equal to itself.")
523534 }
524535
525536
526537
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))
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))
533544 then throw("Wrong slippage")
534- else if ((size(df.payments) != 2))
545+ else if ((size(dh.payments) != 2))
535546 then throw("2 pmnts expd")
536547 else {
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))
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))
547558 then {
548- let dC = {
549- let as = cx
550- if ($isInstanceOf(as, "Address"))
559+ let dI = {
560+ let at = cz
561+ if ($isInstanceOf(at, "Address"))
551562 then {
552- let dD = as
553- invoke(dD, "emit", [cK], nil)
563+ let dJ = at
564+ invoke(dJ, "emit", [cM], nil)
554565 }
555566 else unit
556567 }
557- if ((dC == dC))
568+ if ((dI == dI))
558569 then {
559- let dE = if ((cL > 0))
560- then invoke(dz, "put", nil, [AttachedPayment(bK, cL)])
570+ let dK = if ((cN > 0))
571+ then invoke(dF, "put", nil, [AttachedPayment(bM, cN)])
561572 else nil
562- if ((dE == dE))
573+ if ((dK == dK))
563574 then {
564- let dF = if ((cM > 0))
565- then invoke(dz, "put", nil, [AttachedPayment(bL, cM)])
575+ let dL = if ((cO > 0))
576+ then invoke(dF, "put", nil, [AttachedPayment(bN, cO)])
566577 else nil
567- if ((dF == dF))
578+ if ((dL == dL))
568579 then {
569- let dG = if (dw)
580+ let dM = if (dC)
570581 then {
571- let dH = invoke(dy, "stake", nil, [AttachedPayment(dB, cK)])
572- if ((dH == dH))
582+ let dN = invoke(dE, "stake", nil, [AttachedPayment(dH, cM)])
583+ if ((dN == dN))
573584 then nil
574585 else throw("Strict value is not equal to itself.")
575586 }
576- else [ScriptTransfer(df.caller, cK, dB)]
577- (cc ++ dG)
587+ else [ScriptTransfer(dh.caller, cM, dH)]
588+ (ce ++ dM)
578589 }
579590 else throw("Strict value is not equal to itself.")
580591 }
581592 else throw("Strict value is not equal to itself.")
582593 }
583594 else throw("Strict value is not equal to itself.")
584595 }
585596 else throw("Strict value is not equal to itself.")
586597 }
587598 }
588599
589600
590601
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))
602+@Callable(dh)
603+func putOneTkn (dO,dP,dQ,bg,dC) = {
604+ let bx = aI()
605+ let dE = valueOrErrorMessage(addressFromString(bx[y]), "Wr st addr")
606+ let dF = valueOrErrorMessage(addressFromString(bx[z]), "Wr sl addr")
607+ let dR = valueOrErrorMessage(addressFromString(bx[A]), "Wr gwx addr")
608+ let dS = aE()
609+ let bM = dS[s]
610+ let bN = dS[t]
611+ let bO = parseIntValue(dS[u])
612+ let bP = parseIntValue(dS[v])
613+ let dT = valueOrElse(getString(this, ab()), "")
614+ let bK = if ((dT == toString(dh.caller)))
615+ then dh.originCaller
616+ else dh.caller
617+ if (if (if (if ((0 >= bg))
618+ then true
619+ else (0 >= dO))
620+ then true
621+ else (0 >= dP))
622+ then true
623+ else (0 >= dQ))
624+ then throw("Wrong params")
625+ else if ((size(dh.payments) != 1))
626+ then throw("1 pmnt expd")
627+ else {
628+ let di = value(dh.payments[0])
629+ let bI = toBase58String(value(di.assetId))
630+ let dU = di.amount
631+ let dV = dn(dU)
632+ let cn = dV._1
633+ let dW = dV._2
634+ if ((10000000 > dU))
635+ then throw("Wrong pmt amt")
636+ else {
637+ let bS = aY(bM)
638+ let bU = aY(bN)
639+ let dX = if ((bI == bM))
640+ then if (if ((dU > bS))
641+ then true
642+ else (dO > cn))
643+ then throw("invalid payment amount")
644+ else $Tuple6((bS - dU), bU, (cn - dO), dP, 0, 0)
645+ else if ((bI == bN))
646+ then if (if ((dU > bU))
630647 then true
631- else (dI > cl))
648+ else (dP > cn))
632649 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"))
650+ else $Tuple6(bS, (bU - dU), 0, 0, (cn - dP), dO)
651+ else throw("wrong pmtAssetId")
652+ let dY = dX._1
653+ let dZ = dX._2
654+ let ea = dX._3
655+ let eb = dX._4
656+ let ec = dX._5
657+ let ed = dX._6
658+ let bl = invoke(dR, "calcD", [toString(dY), toString(dZ), aA, h, i], nil)
659+ let bk = invoke(dR, "calcD", [toString(toBigInt(((dY + ea) - ed))), toString(toBigInt(((dZ + ec) - eb))), aA, h, i], nil)
660+ let ee = bj(parseBigIntValue(as(bk)), parseBigIntValue(as(bl)), g)
661+ if ((ee == ee))
662+ then {
663+ let ef = dj(toString(dh.caller), toBase58String(dh.transactionId), AttachedPayment(fromBase58String(bM), dO), AttachedPayment(fromBase58String(bN), dP), bg, true, true, cn, bI)
664+ let eg = ef._2
665+ let dH = ef._7
666+ let ce = ef._9
667+ let cN = ef._10
668+ let cO = ef._11
669+ let eh = bd(toBigInt(eg), toBigInt(dQ), toBigInt(bg))
670+ let cM = toInt(eh._2)
671+ let dG = invoke(az, "emit", [cM], nil)
672+ if ((dG == dG))
673+ then {
674+ let dI = {
675+ let at = dG
676+ if ($isInstanceOf(at, "Address"))
677+ then {
678+ let dJ = at
679+ invoke(dJ, "emit", [cM], nil)
680+ }
681+ else unit
682+ }
683+ if ((dI == dI))
684+ then {
685+ let dK = if ((cN > 0))
686+ then invoke(dF, "put", nil, [AttachedPayment(fromBase58String(bM), cN)])
687+ else nil
688+ if ((dK == dK))
666689 then {
667- let dD = as
668- invoke(dD, "emit", [cK], nil)
690+ let dL = if ((cO > 0))
691+ then invoke(dF, "put", nil, [AttachedPayment(fromBase58String(bN), cO)])
692+ else nil
693+ if ((dL == dL))
694+ then {
695+ let dM = if (dC)
696+ then {
697+ let dN = invoke(dE, "stake", nil, [AttachedPayment(dH, cM)])
698+ if ((dN == dN))
699+ then nil
700+ else throw("Strict value is not equal to itself.")
701+ }
702+ else [ScriptTransfer(dh.caller, cM, dH)]
703+ let ei = if ((dW > 0))
704+ then [ScriptTransfer(aD, dW, fromBase58String(bI))]
705+ else nil
706+ ((ce ++ dM) ++ ei)
707+ }
708+ else throw("Strict value is not equal to itself.")
669709 }
670- else unit
710+ else throw("Strict value is not equal to itself.")
671711 }
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- }
712+ else throw("Strict value is not equal to itself.")
713+ }
714+ else throw("Strict value is not equal to itself.")
715+ }
716+ else throw("Strict value is not equal to itself.")
717+ }
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
705746 else throw("Strict value is not equal to itself.")
706747 }
707748
708749
709750
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- let dO = valueOrErrorMessage(addressFromString(valueOrErrorMessage(getString(aa()), "no addons")), "addon address in not valid")
726- if ((size(df.payments) != 1))
727- then throw("1 pmnt expd")
728- else {
729- let dg = value(df.payments[0])
730- let bG = toBase58String(value(dg.assetId))
731- let cl = dg.amount
732- if ((10000000 > cl))
733- then throw("Wrong pmt amt")
734- else {
735- let bQ = aW(bK)
736- let bS = aW(bL)
737- let eb = if ((bG == bK))
738- then if ((cl > bQ))
739- then throw("invalid payment amount")
740- else $Tuple2((bQ - cl), bS)
741- else if ((bG == bL))
742- then if ((cl > bS))
743- then throw("invalid payment amount")
744- else $Tuple2(bQ, (bS - cl))
745- else throw("wrong pmtAssetId")
746- let dR = eb._1
747- let dS = eb._2
748- let ec = if ((bG == bK))
749- then $Tuple2(dR, dS)
750- else $Tuple2(dS, dR)
751- let ed = ec._1
752- let ee = ec._2
753- let ef = 1
754- let eg = {
755- let eh = invoke(dL, "calcPutXOnly", [toString(cl), toString(ed), toString(ee), "", az, g, toString(ef), h], nil)
756- if ($isInstanceOf(eh, "(Int, Int)"))
757- then eh
758- 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)"))
759- }
760- let ei = if ((bG == bK))
761- then eg
762- else $Tuple2(eg._2, eg._1)
763- let dI = ei._1
764- let dJ = ei._2
765- let dY = dh(toString(df.caller), toBase58String(df.transactionId), AttachedPayment(fromBase58String(bK), dI), AttachedPayment(fromBase58String(bL), dJ), be, true, true, cl, bG)
766- let dZ = dY._2
767- let dB = dY._7
768- let cc = dY._9
769- let cL = dY._10
770- let cM = dY._11
771- let cK = if ((dK > 0))
772- then {
773- let ea = bb(toBigInt(dZ), toBigInt(dK), toBigInt(be))
774- toInt(ea._2)
775- }
776- else dZ
777- let dA = invoke(ay, "emit", [cK], nil)
778- if ((dA == dA))
779- then {
780- let dC = {
781- let as = dA
782- if ($isInstanceOf(as, "Address"))
783- then {
784- let dD = as
785- invoke(dD, "emit", [cK], nil)
786- }
787- else unit
788- }
789- if ((dC == dC))
790- then {
791- let dE = if ((cL > 0))
792- then invoke(dz, "put", nil, [AttachedPayment(fromBase58String(bK), cL)])
793- else nil
794- if ((dE == dE))
795- then {
796- let dF = if ((cM > 0))
797- then invoke(dz, "put", nil, [AttachedPayment(fromBase58String(bL), cM)])
798- else nil
799- if ((dF == dF))
800- then {
801- let dG = if (dw)
802- then {
803- let dH = invoke(dy, "stake", nil, [AttachedPayment(dB, cK)])
804- if ((dH == dH))
805- then nil
806- else throw("Strict value is not equal to itself.")
807- }
808- else [ScriptTransfer(df.caller, cK, dB)]
809- (cc ++ dG)
810- }
811- else throw("Strict value is not equal to itself.")
812- }
813- else throw("Strict value is not equal to itself.")
814- }
815- else throw("Strict value is not equal to itself.")
816- }
817- else throw("Strict value is not equal to itself.")
818- }
819- }
820- }
821-
822-
823-
824-@Callable(df)
825-func putForFree (ej) = if ((0 > ej))
826- then throw("Wrong slpg")
827- else if ((size(df.payments) != 2))
828- then throw("2 pmnts expd")
829- else {
830- 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, "")
831- dY._9
832- }
833-
834-
835-
836-@Callable(df)
837-func get () = {
838- let cx = de(df)
839- let ek = cx._1
840- let cb = cx._2
841- let cl = cx._3
842- let bG = cx._4
843- let cc = cx._5
844- let el = invoke(ay, "burn", [cl], [AttachedPayment(bG, cl)])
845- if ((el == el))
846- then cc
847- else throw("Strict value is not equal to itself.")
848- }
849-
850-
851-
852-@Callable(df)
853-func getOneTkn (em,en,eo,ep,be) = if ((size(df.payments) != 1))
751+@Callable(dh)
752+func getOneTkn (em,en,eo,ep,bg) = if ((size(dh.payments) != 1))
854753 then throw("1 pmnt expd")
855754 else {
856- let bv = aC()
857- let bJ = bv[q]
858- let bK = bv[r]
859- let bL = bv[s]
860- let bM = parseIntValue(bv[t])
861- let bN = parseIntValue(bv[u])
862- let bO = bv[p]
863- let dx = aG()
864- let dL = valueOrErrorMessage(addressFromString(dx[z]), "Wr sl addr")
865- let dg = value(df.payments[0])
866- let dN = valueOrElse(getString(this, aa()), "")
867- let bI = if ((dN == toString(df.caller)))
868- then df.originCaller
869- else df.caller
870- let bF = toBase58String(df.transactionId)
871- let bG = value(dg.assetId)
872- let cl = dg.amount
873- let dO = valueOrErrorMessage(addressFromString(valueOrErrorMessage(getString(aa()), "no addons")), "addon address in not valid")
874- let dP = reentrantInvoke(dO, "ensureCanGetOneTkn", [toString(bI)], nil)
875- if ((dP == dP))
876- then if ((1000000000 > cl))
877- then throw("Min pmt 10 LP")
878- else if (if (if ((0 > be))
879- then true
880- else (0 > em))
881- then true
882- else (0 > eo))
883- then throw("Wrong params")
884- else if ((bJ != toBase58String(bG)))
885- then throw("Wrong LP")
886- else {
887- let cx = bE(toBase58String(df.transactionId), toBase58String(bG), cl, df.caller)
888- let eq = cx._1
889- let er = cx._2
890- let bQ = aW(bK)
891- let bS = aW(bL)
892- let es = if ((ep == bK))
893- then $Tuple7((bQ - eq), (bS - er), em, er, 0, 0, (eq + em))
894- else if ((ep == bL))
895- then $Tuple7((bQ - eq), (bS - er), 0, 0, em, eq, (er + em))
896- else throw("wrong outAssetId")
897- let dR = es._1
898- let dS = es._2
899- let dT = es._3
900- let dU = es._4
901- let dV = es._5
902- let dW = es._6
903- let et = es._7
904- if (if ((0 > dT))
905- then true
906- else (0 > dV))
907- then throw("Wrong calc")
908- else {
909- let bj = invoke(dL, "calcD", [toString(dR), toString(dS), az, g, h], nil)
910- let bi = invoke(dL, "calcD", [toString(((dR - dT) + dW)), toString(((dS + dU) - dV)), az, g, h], nil)
911- let dX = bh(parseBigIntValue(ar(bi)), parseBigIntValue(ar(bj)), f)
912- if ((dX == dX))
913- then {
914- let eu = bb(toBigInt(et), toBigInt(eo), toBigInt(be))
915- if ((eu == eu))
916- then {
917- let ev = if ((ep == bK))
918- then $Tuple2(toInt(eu._2), 0)
919- else $Tuple2(0, toInt(eu._2))
920- let ew = ev._1
921- let ex = ev._2
922- let ey = aY(B(bS, bN), B(bQ, bM))
923- let ez = E(ey, a)
924- let cc = [ScriptTransfer(bI, (ew + ex), if ((ep == "WAVES"))
925- then unit
926- 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)]
927- if ((cc == cc))
928- then {
929- let eA = invoke(ay, "burn", [cl], [AttachedPayment(bG, cl)])
930- if ((eA == eA))
931- then cc
932- else throw("Strict value is not equal to itself.")
933- }
934- else throw("Strict value is not equal to itself.")
935- }
936- else throw("Strict value is not equal to itself.")
937- }
938- else throw("Strict value is not equal to itself.")
939- }
940- }
941- else throw("Strict value is not equal to itself.")
755+ let bx = aE()
756+ let bL = bx[r]
757+ let bM = bx[s]
758+ let bN = bx[t]
759+ let bO = parseIntValue(bx[u])
760+ let bP = parseIntValue(bx[v])
761+ let bQ = bx[q]
762+ let dD = aI()
763+ let dR = valueOrErrorMessage(addressFromString(dD[A]), "Wr sl addr")
764+ let di = value(dh.payments[0])
765+ let dT = valueOrElse(getString(this, ab()), "")
766+ let bK = if ((dT == toString(dh.caller)))
767+ then dh.originCaller
768+ else dh.caller
769+ let bH = toBase58String(dh.transactionId)
770+ let bI = value(di.assetId)
771+ let cn = di.amount
772+ if ((1000000000 > cn))
773+ then throw("Min pmt 10 LP")
774+ else if (if (if ((0 > bg))
775+ then true
776+ else (0 > em))
777+ then true
778+ else (0 > eo))
779+ then throw("Wrong params")
780+ else if ((bL != toBase58String(bI)))
781+ then throw("Wrong LP")
782+ else {
783+ let cz = bG(toBase58String(dh.transactionId), toBase58String(bI), cn, dh.caller)
784+ let eq = cz._1
785+ let er = cz._2
786+ let bS = aY(bM)
787+ let bU = aY(bN)
788+ let es = if ((ep == bM))
789+ then $Tuple7((bS - eq), (bU - er), em, er, 0, 0, (eq + em))
790+ else if ((ep == bN))
791+ then $Tuple7((bS - eq), (bU - er), 0, 0, em, eq, (er + em))
792+ else throw("wrong outAssetId")
793+ let dY = es._1
794+ let dZ = es._2
795+ let ea = es._3
796+ let eb = es._4
797+ let ec = es._5
798+ let ed = es._6
799+ let et = es._7
800+ if (if ((0 > ea))
801+ then true
802+ else (0 > ec))
803+ then throw("Wrong calc")
804+ else {
805+ let bl = invoke(dR, "calcD", [toString(dY), toString(dZ), aA, h, i], nil)
806+ let bk = invoke(dR, "calcD", [toString(((dY - ea) + ed)), toString(((dZ + eb) - ec)), aA, h, i], nil)
807+ let ee = bj(parseBigIntValue(as(bk)), parseBigIntValue(as(bl)), g)
808+ if ((ee == ee))
809+ then {
810+ let eu = dn(et)._1
811+ let ev = bd(toBigInt(eu), toBigInt(eo), toBigInt(bg))
812+ if ((ev == ev))
813+ then {
814+ let ew = if ((ep == bM))
815+ then $Tuple2(toInt(ev._2), 0)
816+ else $Tuple2(0, toInt(ev._2))
817+ let ex = ew._1
818+ let ey = ew._2
819+ let ez = (ex + ey)
820+ let dW = (et - eu)
821+ let eA = if ((ep == "WAVES"))
822+ then unit
823+ else fromBase58String(ep)
824+ let ei = if ((dW > 0))
825+ then [ScriptTransfer(aD, dW, eA)]
826+ else nil
827+ let eB = ba(C(bU, bP), C(bS, bO))
828+ let eC = F(eB, a)
829+ let ce = [ScriptTransfer(bK, ez, eA), StringEntry(X(toString(bK), bH), aU(ex, ey, cn, eC, height, lastBlock.timestamp)), IntegerEntry(Q(), eC), IntegerEntry(R(height, lastBlock.timestamp), eC)]
830+ if ((ce == ce))
831+ then {
832+ let eD = invoke(az, "burn", [cn], [AttachedPayment(bI, cn)])
833+ if ((eD == eD))
834+ then (ce ++ ei)
835+ else throw("Strict value is not equal to itself.")
836+ }
837+ else throw("Strict value is not equal to itself.")
838+ }
839+ else throw("Strict value is not equal to itself.")
840+ }
841+ else throw("Strict value is not equal to itself.")
842+ }
843+ }
942844 }
943845
944846
945847
946-@Callable(df)
947-func getNoLess (eB,eC) = {
948- let cx = de(df)
949- let ca = cx._1
950- let cb = cx._2
951- let cl = cx._3
952- let bG = cx._4
953- let cc = cx._5
954- if ((eB > ca))
955- then throw(((("Failed: " + toString(ca)) + " < ") + toString(eB)))
956- else if ((eC > cb))
957- then throw(((("Failed: " + toString(cb)) + " < ") + toString(eC)))
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)))
958860 else {
959- let eD = invoke(ay, "burn", [cl], [AttachedPayment(bG, cl)])
960- if ((eD == eD))
961- then cc
861+ let eG = invoke(az, "burn", [cn], [AttachedPayment(bI, cn)])
862+ if ((eG == eG))
863+ then ce
962864 else throw("Strict value is not equal to itself.")
963865 }
964866 }
965867
966868
967869
968-@Callable(df)
969-func unstakeAndGet (eE) = {
970- let eF = if ((size(df.payments) != 0))
870+@Callable(dh)
871+func unstakeAndGet (do) = {
872+ let eH = if ((size(dh.payments) != 0))
971873 then throw("No pmnts expd")
972874 else true
973- if ((eF == eF))
875+ if ((eH == eH))
974876 then {
975- let bv = aC()
976- let eG = aG()
977- let dB = fromBase58String(bv[q])
978- let eH = valueOrErrorMessage(addressFromString(eG[x]), "Wr st addr")
979- let eI = invoke(eH, "unstake", [toBase58String(dB), eE], nil)
980- if ((eI == eI))
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))
981883 then {
982- let cx = bE(toBase58String(df.transactionId), toBase58String(dB), eE, df.caller)
983- let bO = parseIntValue(cx._9)
984- let cc = cx._10
985- let eJ = if (if (aA())
884+ let cz = bG(toBase58String(dh.transactionId), toBase58String(dH), do, dh.caller)
885+ let bQ = parseIntValue(cz._9)
886+ let ce = cz._10
887+ let eL = if (if (aB())
986888 then true
987- else (bO == n))
988- then throw(("Blocked: " + toString(bO)))
889+ else (bQ == o))
890+ then throw(("Blocked: " + toString(bQ)))
989891 else true
990- if ((eJ == eJ))
892+ if ((eL == eL))
991893 then {
992- let eK = invoke(ay, "burn", [eE], [AttachedPayment(dB, eE)])
993- if ((eK == eK))
994- then cc
894+ let eM = invoke(az, "burn", [do], [AttachedPayment(dH, do)])
895+ if ((eM == eM))
896+ then ce
995897 else throw("Strict value is not equal to itself.")
996898 }
997899 else throw("Strict value is not equal to itself.")
998900 }
999901 else throw("Strict value is not equal to itself.")
1000902 }
1001903 else throw("Strict value is not equal to itself.")
1002904 }
1003905
1004906
1005907
1006-@Callable(df)
1007-func activate (eL,eM) = if ((toString(df.caller) != toString(ay)))
908+@Callable(dh)
909+func activate (eN,eO) = if ((toString(dh.caller) != toString(az)))
1008910 then throw("denied")
1009- else $Tuple2([StringEntry(X(), eL), StringEntry(Y(), eM)], "success")
911+ else $Tuple2([StringEntry(Y(), eN), StringEntry(Z(), eO)], "success")
1010912
1011913
1012914
1013-@Callable(df)
1014-func setS (eN,eJ) = if ((toString(df.caller) != au(this, aa())))
1015- then dn
1016- else [StringEntry(eN, eJ)]
915+@Callable(dh)
916+func setS (eP,eL) = if ((toString(dh.caller) != av(this, ab())))
917+ then dt
918+ else [StringEntry(eP, eL)]
1017919
1018920
1019921
1020-@Callable(df)
1021-func setI (eN,eJ) = if ((toString(df.caller) != au(this, aa())))
1022- then dn
1023- else [IntegerEntry(eN, eJ)]
922+@Callable(dh)
923+func setI (eP,eL) = if ((toString(dh.caller) != av(this, ab())))
924+ then dt
925+ else [IntegerEntry(eP, eL)]
1024926
1025927
1026928
1027-@Callable(df)
1028-func getPoolConfigWrapperREADONLY () = $Tuple2(nil, aC())
929+@Callable(dh)
930+func getPoolConfigWrapperREADONLY () = $Tuple2(nil, aE())
1029931
1030932
1031933
1032-@Callable(df)
1033-func getAccBalanceWrapperREADONLY (aX) = $Tuple2(nil, aW(aX))
934+@Callable(dh)
935+func getAccBalanceWrapperREADONLY (aZ) = $Tuple2(nil, aY(aZ))
1034936
1035937
1036938
1037-@Callable(df)
1038-func calcPricesWrapperREADONLY (bp,bq,bu) = {
1039- let eO = bt(bp, bq, bu)
1040- $Tuple2(nil, [toString(eO[0]), toString(eO[1]), toString(eO[2])])
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])])
1041943 }
1042944
1043945
1044946
1045-@Callable(df)
1046-func fromX18WrapperREADONLY (F,eP) = $Tuple2(nil, E(parseBigIntValue(F), eP))
947+@Callable(dh)
948+func fromX18WrapperREADONLY (G,eR) = $Tuple2(nil, F(parseBigIntValue(G), eR))
1047949
1048950
1049951
1050-@Callable(df)
1051-func toX18WrapperREADONLY (C,D) = $Tuple2(nil, toString(B(C, D)))
952+@Callable(dh)
953+func toX18WrapperREADONLY (D,E) = $Tuple2(nil, toString(C(D, E)))
1052954
1053955
1054956
1055-@Callable(df)
1056-func calcPriceBigIntWrapperREADONLY (aZ,ba) = $Tuple2(nil, toString(aY(parseBigIntValue(aZ), parseBigIntValue(ba))))
957+@Callable(dh)
958+func calcPriceBigIntWrapperREADONLY (bb,bc) = $Tuple2(nil, toString(ba(parseBigIntValue(bb), parseBigIntValue(bc))))
1057959
1058960
1059961
1060-@Callable(df)
1061-func estimatePutOperationWrapperREADONLY (bF,be,ce,cf,cg,ch,eQ,ci,cj) = $Tuple2(nil, cd(bF, be, ce, cf, cg, ch, eQ, ci, cj, false, 0, ""))
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, ""))
1062964
1063965
1064966
1065-@Callable(df)
1066-func estimateGetOperationWrapperREADONLY (bF,eR,bH,eQ) = {
1067- let cx = bE(bF, eR, bH, addressFromStringValue(eQ))
1068- $Tuple2(nil, $Tuple10(cx._1, cx._2, cx._3, cx._4, cx._5, cx._6, cx._7, toString(cx._8), cx._9, cx._10))
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))
1069971 }
1070972
1071973
1072-@Verifier(eS)
1073-func eT () = {
1074- let eU = {
1075- let as = dk()
1076- if ($isInstanceOf(as, "ByteVector"))
974+@Verifier(eU)
975+func eV () = {
976+ let eW = {
977+ let at = dq()
978+ if ($isInstanceOf(at, "ByteVector"))
1077979 then {
1078- let dp = as
1079- dp
980+ let dv = at
981+ dv
1080982 }
1081- else if ($isInstanceOf(as, "Unit"))
1082- then eS.senderPublicKey
983+ else if ($isInstanceOf(at, "Unit"))
984+ then eU.senderPublicKey
1083985 else throw("Match error")
1084986 }
1085- let as = eS
1086- if ($isInstanceOf(as, "Order"))
987+ let at = eU
988+ if ($isInstanceOf(at, "Order"))
1087989 then {
1088- let cS = as
1089- let eV = aB()
1090- let eW = cR(cS)
1091- let eX = sigVerify(cS.bodyBytes, cS.proofs[0], cS.senderPublicKey)
1092- let eY = sigVerify(cS.bodyBytes, cS.proofs[1], eV)
1093- if (if (if (eW)
1094- then eX
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
1095997 else false)
1096- then eY
998+ then fa
1097999 else false)
10981000 then true
1099- else an(eW, eX, eY)
1001+ else ao(eY, eZ, fa)
11001002 }
1101- else if ($isInstanceOf(as, "SetScriptTransaction"))
1003+ else if ($isInstanceOf(at, "SetScriptTransaction"))
11021004 then {
1103- let dl = as
1104- let eZ = blake2b256(value(dl.script))
1105- let fa = fromBase64String(value(getString(ay, am())))
1106- let fb = scriptHash(this)
1107- if (if ((fa == eZ))
1108- then (fb != eZ)
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)
11091011 else false)
11101012 then true
1111- else sigVerify(eS.bodyBytes, eS.proofs[0], eU)
1013+ else sigVerify(eU.bodyBytes, eU.proofs[0], eW)
11121014 }
1113- else sigVerify(eS.bodyBytes, eS.proofs[0], eU)
1015+ else sigVerify(eU.bodyBytes, eU.proofs[0], eW)
11141016 }
11151017

github/deemru/w8io/169f3d6 
309.79 ms