tx · it5oTgQEutT9ZGq9fAUmFPnZFUeVmsghAAVYhF4nDm9

3NAefciWv6f9fWvEXdGgpHfanJFG8HqfjuT:  -0.03600000 Waves

2023.01.20 14:24 [2413226] smart account 3NAefciWv6f9fWvEXdGgpHfanJFG8HqfjuT > SELF 0.00000000 Waves

{ "type": 13, "id": "it5oTgQEutT9ZGq9fAUmFPnZFUeVmsghAAVYhF4nDm9", "fee": 3600000, "feeAssetId": null, "timestamp": 1674213927655, "version": 1, "sender": "3NAefciWv6f9fWvEXdGgpHfanJFG8HqfjuT", "senderPublicKey": "D1BL65meykxFZTCuq7jq9HSGLLnWvQamQPUNrguW5w39", "proofs": [ "3rZ1m2gsqJKbRt4woJmzkSUY6fitFxAvTYVw2mwEyimjk3MpvoumrWvHdpK77P3GXjQLUArx9EpUKf21m4gWBeLB" ], "script": "base64:BgKJKQgCEgMKAQgSAwoBCBIAEgQKAgEEEgQKAgEEEgMKAQESABIECgIIARIAEgQKAggBEgQKAggBEgQKAgEBEgMKAQESBQoDAQEBEgUKAwEIARIECgIBCBIECgIBCBIECgIICBIECgIICBIECgIIARIAEgMKAQgSBQoDAQEBEgQKAggBEgQKAgEBEgQKAggIEgsKCQgBAQIBAggEBBIGCgQICAEIIgZzY2FsZTgiDHNjYWxlOEJpZ0ludCIHc2NhbGUxOCIKemVyb0JpZ0ludCIEYmlnMCIEYmlnMSIEYmlnMiIEYmlnMyIEYmlnNCIKc2xpcHBhZ2U0RCILd2F2ZXNTdHJpbmciBUFtdWx0IgVEY29udiIDU0VQIgVFTVBUWSIKUG9vbEFjdGl2ZSIKUG9vbFB1dERpcyIOUG9vbE1hdGNoZXJEaXMiDFBvb2xTaHV0ZG93biIOaWR4UG9vbEFkZHJlc3MiCWlkeFBvb2xTdCIJaWR4TFBBc0lkIglpZHhBbUFzSWQiCWlkeFByQXNJZCILaWR4QW10QXNEY20iDWlkeFByaWNlQXNEY20iC2lkeElBbXRBc0lkIg1pZHhJUHJpY2VBc0lkIg9pZHhGYWN0U3Rha0NudHIiEmlkeEZhY3RvcnlSZXN0Q250ciIQaWR4RmFjdFNsaXBwQ250ciIRaWR4RmFjdEd3eFJld0NudHIiCmZlZURlZmF1bHQiAnQxIgdvcmlnVmFsIg1vcmlnU2NhbGVNdWx0Igh0MUJpZ0ludCICZjEiA3ZhbCIPcmVzdWx0U2NhbGVNdWx0Igxmcm9tWDE4Um91bmQiBXJvdW5kIgJ0MiICZjIiAnRzIgNhbXQiCHJlc1NjYWxlIghjdXJTY2FsZSIDYWJzIglhYnNCaWdJbnQiAmZjIgNtcGsiBHBtcGsiAnBsIgJwaCIBaCIBdCIDcGF1IgJ1YSIEdHhJZCIDZ2F1IgJhYSICcGEiA2FtcCIDYWRhIgZrZXlGZWUiA2ZlZSIGa2V5RExwIhVrZXlETHBSZWZyZXNoZWRIZWlnaHQiEmtleURMcFJlZnJlc2hEZWxheSIWZExwUmVmcmVzaERlbGF5RGVmYXVsdCIPZExwUmVmcmVzaERlbGF5IgRmY2ZnIgRtdHBrIgJwYyIGaUFtdEFzIgVpUHJBcyIDbWJhIgViQVN0ciIDYXBzIhxrZXlBbGxvd2VkTHBTdGFibGVTY3JpcHRIYXNoIhZrZXlGZWVDb2xsZWN0b3JBZGRyZXNzIg90aHJvd09yZGVyRXJyb3IiCm9yZGVyVmFsaWQiDm9yZGVyVmFsaWRJbmZvIgtzZW5kZXJWYWxpZCIMbWF0Y2hlclZhbGlkIgRzdHJmIgRhZGRyIgNrZXkiBGludGYiCHRocm93RXJyIgNtc2ciBmZtdEVyciIDZmNhIgVpbkZlZSIBQCIGb3V0RmVlIgFBIgNpZ3MiAm1wIhNmZWVDb2xsZWN0b3JBZGRyZXNzIgNncGMiBWFtdEFzIgdwcmljZUFzIghpUHJpY2VBcyIMcGFyc2VBc3NldElkIgVpbnB1dCIPYXNzZXRJZFRvU3RyaW5nIg9wYXJzZVBvb2xDb25maWciCnBvb2xDb25maWciEHBvb2xDb25maWdQYXJzZWQiCyR0MDc5NjQ4MTkzIg5jZmdQb29sQWRkcmVzcyINY2ZnUG9vbFN0YXR1cyIMY2ZnTHBBc3NldElkIhBjZmdBbW91bnRBc3NldElkIg9jZmdQcmljZUFzc2V0SWQiFmNmZ0Ftb3VudEFzc2V0RGVjaW1hbHMiFWNmZ1ByaWNlQXNzZXREZWNpbWFscyISY2ZnSW5BbW91bnRBc3NlZElkIhFjZmdJblByaWNlQXNzZXRJZCIDZ2ZjIg1mYWN0b3J5Q29uZmlnIg9zdGFraW5nQ29udHJhY3QiD3NsaXBhZ2VDb250cmFjdCILZ3d4Q29udHJhY3QiDHJlc3RDb250cmFjdCIRZGF0YVB1dEFjdGlvbkluZm8iDWluQW10QXNzZXRBbXQiD2luUHJpY2VBc3NldEFtdCIIb3V0THBBbXQiBXByaWNlIgpzbGlwQnlVc2VyIgxzbGlwcGFnZVJlYWwiCHR4SGVpZ2h0Igt0eFRpbWVzdGFtcCIMc2xpcGFnZUFtQW10IgxzbGlwYWdlUHJBbXQiEWRhdGFHZXRBY3Rpb25JbmZvIg5vdXRBbXRBc3NldEFtdCIQb3V0UHJpY2VBc3NldEFtdCIHaW5McEFtdCINZ2V0QWNjQmFsYW5jZSIHYXNzZXRJZCIEY3BiaSIIcHJBbXRYMTgiCGFtQW10WDE4IgVjcGJpciIDdmFkIgJBMSICQTIiCHNsaXBwYWdlIgRkaWZmIgRwYXNzIgJ2ZCICRDEiAkQwIgRzbHBnIgRmYWlsIgNwY3AiCmFtQXNzZXREY20iCnByQXNzZXREY20iBWFtQW10IgVwckFtdCILYW10QXNBbXRYMTgiCnByQXNBbXRYMTgiCmNhbGNQcmljZXMiBWxwQW10IghhbXRBc0RjbSIHcHJBc0RjbSIIcHJpY2VYMTgiCGxwQW10WDE4Ig1scFBySW5BbUFzWDE4Ig1scFBySW5QckFzWDE4Ig9jYWxjdWxhdGVQcmljZXMiAXAiB3Rha2VGZWUiBmFtb3VudCIJZmVlQW1vdW50IgRnZXREIgJ4cCIDeHAwIgN4cDEiAXMiAWEiA2FubiILeHAwX3hwMV9uX24iBWFubl9zIgVhbm5fMSIJY2FsY0ROZXh0IgFkIgJkZCIDZGRkIgJkcCIEY2FsYyIDYWNjIgFpIgVkTmV4dCIIZERpZmZSYXciBWREaWZmIgNhcnIiDSR0MDEyNjkwMTI3MzgiAiRsIgIkcyIFJGFjYzAiBSRmMF8xIgIkYSICJGkiBSRmMF8yIgVmb3VuZCIDZWdvIgZ0eElkNTgiCnBtdEFzc2V0SWQiCHBtdExwQW10Igt1c2VyQWRkcmVzcyIEbHBJZCIEYW1JZCIEcHJJZCIFYW1EY20iBXByRGNtIgNzdHMiB2xwRW1pc3MiCWFtQmFsYW5jZSIMYW1CYWxhbmNlWDE4IglwckJhbGFuY2UiDHByQmFsYW5jZVgxOCILY3VyUHJpY2VYMTgiCGN1clByaWNlIgtwbXRMcEFtdFgxOCIKbHBFbWlzc1gxOCILb3V0QW1BbXRYMTgiC291dFByQW10WDE4IghvdXRBbUFtdCIIb3V0UHJBbXQiBXN0YXRlIgNlcG8iB2luQW1BbXQiBmluQW1JZCIHaW5QckFtdCIGaW5QcklkIgZpc0V2YWwiBmVtaXRMcCIKaXNPbmVBc3NldCIQdmFsaWRhdGVTbGlwcGFnZSIGcG10QW10IgVwbXRJZCIHYW1JZFN0ciIHcHJJZFN0ciIJaW5BbUlkU3RyIglpblBySWRTdHIiBmFtdERjbSIIcHJpY2VEY20iBGxwRW0iD2luQW1Bc3NldEFtdFgxOCIPaW5QckFzc2V0QW10WDE4Igx1c2VyUHJpY2VYMTgiAXIiBmNoZWNrRCILc2xpcHBhZ2VYMTgiD3NsaXBwYWdlUmVhbFgxOCINbHBFbWlzc2lvblgxOCIKcHJWaWFBbVgxOCIKYW1WaWFQclgxOCIMZXhwZWN0ZWRBbXRzIhFleHBBbXRBc3NldEFtdFgxOCITZXhwUHJpY2VBc3NldEFtdFgxOCIJY2FsY0xwQW10Ig5jYWxjQW1Bc3NldFBtdCIOY2FsY1ByQXNzZXRQbXQiDHNsaXBwYWdlQ2FsYyIJZW1pdExwQW10IgZhbURpZmYiBnByRGlmZiINJHQwMjA1NzcyMDkyMiIKd3JpdGVBbUFtdCIKd3JpdGVQckFtdCILY29tbW9uU3RhdGUiBWdldFlEIgFEIgFuIgF4IgphUHJlY2lzaW9uIgFjIgFiIgNjdXIiDSR0MDIyMTE3MjIxMzciAXkiBXlOZXh0IgV5RGlmZiINJHQwMjI0NDQyMjQ5MSIHY2FsY0RMcCINYW1vdW50QmFsYW5jZSIMcHJpY2VCYWxhbmNlIgpscEVtaXNzaW9uIgp1cGRhdGVkRExwIg5jYWxjQ3VycmVudERMcCIQYW1vdW50QXNzZXREZWx0YSIPcHJpY2VBc3NldERlbHRhIhRscEFzc2V0RW1pc3Npb25EZWx0YSISYW1vdW50QXNzZXRCYWxhbmNlIhFwcmljZUFzc2V0QmFsYW5jZSIPbHBBc3NldEVtaXNzaW9uIgpjdXJyZW50RExwIhJyZWZyZXNoRExwSW50ZXJuYWwiF2Ftb3VudEFzc2V0QmFsYW5jZURlbHRhIhZwcmljZUFzc2V0QmFsYW5jZURlbHRhIgdhY3Rpb25zIhJ2YWxpZGF0ZVVwZGF0ZWRETHAiBm9sZERMcCIbdmFsaWRhdGVNYXRjaGVyT3JkZXJBbGxvd2VkIgVvcmRlciIRYW1vdW50QXNzZXRBbW91bnQiEHByaWNlQXNzZXRBbW91bnQiDSR0MDI0NTM1MjQ3NDciA2RMcCINJHQwMjUwNzcyNTE3NyINdW51c2VkQWN0aW9ucyIGZExwTmV3Igxpc09yZGVyVmFsaWQiBGluZm8iAmNnIgNwbXQiAmNwIgZjYWxsZXIiB2FtQXNQbXQiB3ByQXNQbXQiDWNhbGNQdXRPbmVUa24iCXBtdEFtdFJhdyILd2l0aFRha2VGZWUiDWNoZWNoRW1pc3Npb24iDSR0MDI3NTI5Mjc5OTEiDGFtQmFsYW5jZU9sZCIMcHJCYWxhbmNlT2xkIg0kdDAyNzk5NzI4MTczIgthbUFtb3VudFJhdyILcHJBbW91bnRSYXciDSR0MDI4MTc3Mjg0MzEiCGFtQW1vdW50IghwckFtb3VudCIMYW1CYWxhbmNlTmV3IgxwckJhbGFuY2VOZXciCGxwQW1vdW50Ig5wb29sUHJvcG9ydGlvbiIPYW1vdW50QXNzZXRQYXJ0Ig5wcmljZUFzc2V0UGFydCIJbHBBbXRCb3RoIgVib251cyITZ2V0T25lVGtuVjJJbnRlcm5hbCIKb3V0QXNzZXRJZCIMbWluT3V0QW1vdW50IghwYXltZW50cyIMb3JpZ2luQ2FsbGVyIg10cmFuc2FjdGlvbklkIgphbURlY2ltYWxzIgpwckRlY2ltYWxzIgpwb29sU3RhdHVzIg0kdDAzMDU0MzMwNjU0Igh0b3RhbEdldCILdG90YWxBbW91bnQiDSR0MDMwODQ0MzExNTEiBW91dEFtIgVvdXRQciIIY3VyUHJYMTgiBWN1clByIhFvdXRBc3NldElkT3JXYXZlcyIQc2VuZEZlZVRvTWF0Y2hlciIEYnVybiINJHQwMzE5MzYzMjI4NiIQZmVlQW1vdW50Rm9yQ2FsYyIQb3V0SW5BbW91bnRBc3NldCINJHQwMzIyODkzMjM5NyIRcmVmcmVzaERMcEFjdGlvbnMiEWlzVXBkYXRlZERMcFZhbGlkIgFtIgckbWF0Y2gwIgJwbSICcGQiCWlzTWFuYWdlciICcGsiAm1tIhdwZW5kaW5nTWFuYWdlclB1YmxpY0tleSICY20iA2hwbSIDY3BtIgRzbGlwIglhdXRvU3Rha2UiB2ZhY3RDZmciC3N0YWtpbmdDbnRyIghzbGlwQ250ciIKYW1Bc3NldFBtdCIKcHJBc3NldFBtdCIBZSIJbHBBc3NldElkIgJlbCIGbGVnYWN5IgJzYSICc3AiCGxwVHJuc2ZyIgJzcyINJHQwMzY1NDYzNjY4OCIFY2hlY2siFGxwQXNzZXRFbWlzc2lvbkFmdGVyIiBpc1Bvb2xPbmVUb2tlbk9wZXJhdGlvbnNEaXNhYmxlZCINaXNQdXREaXNhYmxlZCIGY2hlY2tzIg0kdDAzODMyOTM4NDg3Igdlc3RpbUxQIg0kdDAzOTMwMjM5NjUxIhRwYXltZW50SW5BbW91bnRBc3NldCINJHQwMzk2NTQzOTc2MiIHbWF4U2xwZyIGZXN0UHV0Ig0kdDA0MDc5MjQwODU3IglvdXRBbXRBbXQiDSR0MDQyMDMwNDIxMTIiDWlzR2V0RGlzYWJsZWQiDSR0MDQyNzMwNDI4ODUiGGxhc3RSZWZyZXNoZWRCbG9ja0hlaWdodCIdY2hlY2tMYXN0UmVmcmVzaGVkQmxvY2tIZWlnaHQiDSR0MDQzNDA5NDM0NzMiEGRMcFVwZGF0ZUFjdGlvbnMiDWxwQXNzZXRBbW91bnQiBWluZGV4IgRuZXdZIgJkeSILdG90YWxHZXRSYXciDSR0MDQ0NDAzNDQ0NTgiDSR0MDQ0ODMzNDQ5NDgiDnN1bU9mR2V0QXNzZXRzIhJub0xlc3NUaGVuQW10QXNzZXQiFG5vTGVzc1RoZW5QcmljZUFzc2V0IhRidXJuTFBBc3NldE9uRmFjdG9yeSINJHQwNDYxMTQ0NjE5NSINY2hlY2tQYXltZW50cyIKZmFjdG9yeUNmZyIHc3Rha2luZyIKdW5zdGFrZUludiIBdiIFYnVybkEiDSR0MDQ3MjIyNDczMDMiDXVuc3Rha2VBbW91bnQiFW5vTGVzc1RoZW5BbW91bnRBc3NldCIDcmVzIgxjaGVja0Ftb3VudHMiDSR0MDQ4NTU0NDg2MzUiDSR0MDQ5NTMwNDk3MTgiEHBheW1lbnRBbW91bnRSYXciDnBheW1lbnRBc3NldElkIg0kdDA0OTg0NjQ5OTQ5Ig0kdDA1MDA5NzUwMjAxIghhbXRBc1N0ciIHcHJBc1N0ciIBayICcHIiDHJlc1NjYWxlTXVsdCIHdXNyQWRkciIHcG10QXNJZCICdHgiBnZlcmlmeSIPdGFyZ2V0UHVibGljS2V5IgptYXRjaGVyUHViIg0kdDA1Mjk5MzUzMDYyIgduZXdIYXNoIgthbGxvd2VkSGFzaCILY3VycmVudEhhc2iBAQABYQCAwtcvAAFiCQC2AgEAgMLXLwABYwkAtgIBAICAkLu61q3wDQABZAkAtgIBAAAAAWUJALYCAQAAAAFmCQC2AgEAAQABZwkAtgIBAAIAAWgJALYCAQADAAFpCQC2AgEABAABagkAtgIBCQBlAgUBYQkAaQIJAGgCBQFhAAEFAWEAAWsCBVdBVkVTAAFsAgMxMDAAAW0CATEAAW4CAl9fAAFvAgAAAXAAAQABcQACAAFyAAMAAXMABAABdAABAAF1AAIAAXYAAwABdwAEAAF4AAUAAXkABgABegAHAAFBAAgAAUIACQABQwABAAFEAAYAAUUABwABRgAKAAFHCQBrAwAKBQFhAJBOAQFIAgFJAUoJALwCAwkAtgIBBQFJBQFjCQC2AgEFAUoBAUsCAUkBSgkAvAIDBQFJBQFjBQFKAQFMAgFNAU4JAKADAQkAvAIDBQFNCQC2AgEFAU4FAWMBAU8DAU0BTgFQCQCgAwEJAL0CBAUBTQkAtgIBBQFOBQFjBQFQAQFRAgFJAUoJALwCAwUBSQUBYwkAtgIBBQFKAQFSAgFNAU4JALwCAwUBTQkAtgIBBQFOBQFjAQFTAwFUAVUBVgkAawMFAVQFAVUFAVYBAVcBAU0DCQC/AgIFAWQFAU0JAL4CAQUBTQUBTQEBWAEBTQMJAL8CAgUBZAUBTQkAvgIBBQFNBQFNAQFZAAITJXNfX2ZhY3RvcnlDb250cmFjdAEBWgACFCVzX19tYW5hZ2VyUHVibGljS2V5AQJhYQACGyVzX19wZW5kaW5nTWFuYWdlclB1YmxpY0tleQECYWIAAhElcyVzX19wcmljZV9fbGFzdAECYWMCAmFkAmFlCQC5CQIJAMwIAgIYJXMlcyVkJWRfX3ByaWNlX19oaXN0b3J5CQDMCAIJAKQDAQUCYWQJAMwIAgkApAMBBQJhZQUDbmlsBQFuAQJhZgICYWcCYWgJAKwCAgkArAICCQCsAgICCyVzJXMlc19fUF9fBQJhZwICX18FAmFoAQJhaQICYWcCYWgJAKwCAgkArAICCQCsAgICCyVzJXMlc19fR19fBQJhZwICX18FAmFoAQJhagACDyVzX19hbW91bnRBc3NldAECYWsAAg4lc19fcHJpY2VBc3NldAECYWwAAgclc19fYW1wAQJhbQACDSVzX19hZGRvbkFkZHIAAmFuAgclc19fZmVlAAJhbwkBC3ZhbHVlT3JFbHNlAgkAmggCBQR0aGlzBQJhbgUBRwACYXAJALkJAgkAzAgCAgIlcwkAzAgCAgNkTHAFA25pbAUBbgACYXEJALkJAgkAzAgCAgIlcwkAzAgCAhJkTHBSZWZyZXNoZWRIZWlnaHQFA25pbAUBbgACYXIJALkJAgkAzAgCAgIlcwkAzAgCAg9yZWZyZXNoRExwRGVsYXkFA25pbAUBbgACYXMAAQACYXQJAQt2YWx1ZU9yRWxzZQIJAJoIAgUEdGhpcwUCYXIFAmFzAQJhdQACESVzX19mYWN0b3J5Q29uZmlnAQJhdgACGCVzJXNfX21hdGNoZXJfX3B1YmxpY0tleQECYXcCAmF4AmF5CQCsAgIJAKwCAgkArAICCQCsAgICCCVkJWQlc19fBQJheAICX18FAmF5AghfX2NvbmZpZwECYXoBAmFBCQCsAgICKCVzJXMlc19fbWFwcGluZ3NfX2Jhc2VBc3NldDJpbnRlcm5hbElkX18FAmFBAQJhQgACDCVzX19zaHV0ZG93bgECYUMAAh0lc19fYWxsb3dlZExwU3RhYmxlU2NyaXB0SGFzaAECYUQAAhclc19fZmVlQ29sbGVjdG9yQWRkcmVzcwECYUUEAmFGAmFHAmFIAmFJCQACAQkArAICCQCsAgIJAKwCAgkArAICCQCsAgIJAKwCAgkArAICCQCsAgICJG9yZGVyIHZhbGlkYXRpb24gZmFpbGVkOiBvcmRlclZhbGlkPQkApQMBBQJhRgICICgFAmFHAgEpAg0gc2VuZGVyVmFsaWQ9CQClAwEFAmFIAg4gbWF0Y2hlclZhbGlkPQkApQMBBQJhSQECYUoCAmFLAmFMCQETdmFsdWVPckVycm9yTWVzc2FnZQIJAJ0IAgUCYUsFAmFMCQC5CQIJAMwIAgIKbWFuZGF0b3J5IAkAzAgCCQClCAEFAmFLCQDMCAICAS4JAMwIAgUCYUwJAMwIAgIMIG5vdCBkZWZpbmVkBQNuaWwCAAECYU0CAmFLAmFMCQETdmFsdWVPckVycm9yTWVzc2FnZQIJAJoIAgUCYUsFAmFMCQC5CQIJAMwIAgIKbWFuZGF0b3J5IAkAzAgCCQClCAEFAmFLCQDMCAICAS4JAMwIAgUCYUwJAMwIAgIMIG5vdCBkZWZpbmVkBQNuaWwCAAECYU4BAmFPCQACAQkAuQkCCQDMCAICD2xwX3N0YWJsZS5yaWRlOgkAzAgCBQJhTwUDbmlsAgEgAQJhUAECYU8JALkJAgkAzAgCAg9scF9zdGFibGUucmlkZToJAMwIAgUCYU8FA25pbAIBIAACYVEJARFAZXh0ck5hdGl2ZSgxMDYyKQEJAQJhSgIFBHRoaXMJAQFZAAACYVIKAAJhUwkA/AcEBQJhUQIQZ2V0SW5GZWVSRUFET05MWQkAzAgCCQClCAEFBHRoaXMFA25pbAUDbmlsAwkAAQIFAmFTAgNJbnQFAmFTCQACAQkArAICCQADAQUCYVMCGCBjb3VsZG4ndCBiZSBjYXN0IHRvIEludAACYVQKAAJhUwkA/AcEBQJhUQIRZ2V0T3V0RmVlUkVBRE9OTFkJAMwIAgkApQgBBQR0aGlzBQNuaWwFA25pbAMJAAECBQJhUwIDSW50BQJhUwkAAgEJAKwCAgkAAwEFAmFTAhggY291bGRuJ3QgYmUgY2FzdCB0byBJbnQAAmFVCQECYUoCBQR0aGlzCQECYWwAAQJhVgAJAQt2YWx1ZU9yRWxzZQIJAJsIAgUCYVEJAQJhQgAHAQJhVwAJANkEAQkBAmFKAgUCYVEJAQJhdgAAAmFYCQERQGV4dHJOYXRpdmUoMTA2MikBCQECYUoCBQJhUQkBAmFEAAECYVkABAJhWgkBAmFKAgUEdGhpcwkBAmFqAAQCYmEJAQJhSgIFBHRoaXMJAQJhawAEAmJiCQECYU0CBQJhUQkBAmF6AQUCYmEEAmF4CQECYU0CBQJhUQkBAmF6AQUCYVoJALUJAgkBAmFKAgUCYVEJAQJhdwIJAKQDAQUCYXgJAKQDAQUCYmIFAW4BAmJjAQJiZAMJAAACBQJiZAUBawUEdW5pdAkA2QQBBQJiZAECYmUBAmJkAwkAAAIFAmJkBQR1bml0BQFrCQDYBAEJAQV2YWx1ZQEFAmJkAQJiZgECYmcJAJsKCQkBEUBleHRyTmF0aXZlKDEwNjIpAQkAkQMCBQJiZwUBdAkBDXBhcnNlSW50VmFsdWUBCQCRAwIFAmJnBQF1CQDZBAEJAJEDAgUCYmcFAXYJAQJiYwEJAJEDAgUCYmcFAXcJAQJiYwEJAJEDAgUCYmcFAXgJAQ1wYXJzZUludFZhbHVlAQkAkQMCBQJiZwUBeQkBDXBhcnNlSW50VmFsdWUBCQCRAwIFAmJnBQF6CQDZBAEJAJEDAgUCYmcFAUEJANkEAQkAkQMCBQJiZwUBQgACYmgJAQJiZgEJAQJhWQAAAmJpBQJiaAACYmoIBQJiaQJfMQACYmsIBQJiaQJfMgACYmwIBQJiaQJfMwACYm0IBQJiaQJfNAACYm4IBQJiaQJfNQACYm8IBQJiaQJfNgACYnAIBQJiaQJfNwACYnEIBQJiaQJfOAACYnIIBQJiaQJfOQECYnMACQC1CQIJAQJhSgIFAmFRCQECYXUABQFuAAJidAkBAmJzAAACYnUJARN2YWx1ZU9yRXJyb3JNZXNzYWdlAgkApggBCQCRAwIFAmJ0BQFDAiBJbnZhbGlkIHN0YWtpbmcgY29udHJhY3QgYWRkcmVzcwACYnYJARN2YWx1ZU9yRXJyb3JNZXNzYWdlAgkApggBCQCRAwIFAmJ0BQFFAiBJbnZhbGlkIHNsaXBhZ2UgY29udHJhY3QgYWRkcmVzcwACYncJARN2YWx1ZU9yRXJyb3JNZXNzYWdlAgkApggBCQCRAwIFAmJ0BQFGAhxJbnZhbGlkIGd3eCBjb250cmFjdCBhZGRyZXNzAAJieAkBE3ZhbHVlT3JFcnJvck1lc3NhZ2UCCQCmCAEJAJEDAgUCYnQFAUQCHEludmFsaWQgZ3d4IGNvbnRyYWN0IGFkZHJlc3MBAmJ5CgJiegJiQQJiQgJiQwJiRAJiRQJiRgJiRwJiSAJiSQkAuQkCCQDMCAICFCVkJWQlZCVkJWQlZCVkJWQlZCVkCQDMCAIJAKQDAQUCYnoJAMwIAgkApAMBBQJiQQkAzAgCCQCkAwEFAmJCCQDMCAIJAKQDAQUCYkMJAMwIAgkApAMBBQJiRAkAzAgCCQCkAwEFAmJFCQDMCAIJAKQDAQUCYkYJAMwIAgkApAMBBQJiRwkAzAgCCQCkAwEFAmJICQDMCAIJAKQDAQUCYkkFA25pbAUBbgECYkoGAmJLAmJMAmJNAmJDAmJGAmJHCQC5CQIJAMwIAgIMJWQlZCVkJWQlZCVkCQDMCAIJAKQDAQUCYksJAMwIAgkApAMBBQJiTAkAzAgCCQCkAwEFAmJNCQDMCAIJAKQDAQUCYkMJAMwIAgkApAMBBQJiRgkAzAgCCQCkAwEFAmJHBQNuaWwFAW4BAmJOAQJiTwMJAAACBQJiTwIFV0FWRVMICQDvBwEFBHRoaXMJYXZhaWxhYmxlCQDwBwIFBHRoaXMJANkEAQUCYk8BAmJQAgJiUQJiUgkAvAIDBQJiUQUBYwUCYlIBAmJTAwJiUQJiUgFQCQC9AgQFAmJRBQFjBQJiUgUBUAECYlQDAmJVAmJWAmJXBAJiWAkAvAIDCQC4AgIFAmJVBQJiVgUBYgUCYlYEAmJZCQC/AgIJALgCAgUCYlcJAQFXAQUCYlgFAWQDCQEBIQEFAmJZCQACAQkArAICAgpCaWcgc2xwZzogCQCmAwEFAmJYCQCUCgIFAmJZCQCZAwEJAMwIAgUCYlUJAMwIAgUCYlYFA25pbAECYloDAmNhAmNiAmNjBAJiWAkAvAIDBQJjYgUBYgUCY2EEAmNkCQC/AgIFAmNjBQJiWAMDBQJjZAYJAL8CAgUCY2IFAmNhCQACAQkArAICCQCsAgIJAKwCAgkArAICCQCsAgIJAKwCAgkApgMBBQJjYgIBIAkApgMBBQJjYQIBIAkApgMBBQJiWAIBIAkApgMBBQJjYwUCY2QBAmNlBAJjZgJjZwJjaAJjaQQCY2oJAQFIAgUCY2gFAmNmBAJjawkBAUgCBQJjaQUCY2cJAQJiUAIFAmNrBQJjagECY2wDAmNoAmNpAmNtBAJjbgUCYm8EAmNvBQJicAQCY3AJAQJjZQQFAmNuBQJjbwUCY2gFAmNpBAJiUgkBAUgCBQJjaAUCY24EAmJRCQEBSAIFAmNpBQJjbwQCY3EJAQFIAgUCY20FAWEEAmNyCQECYlACBQJiUgUCY3EEAmNzCQECYlACBQJiUQUCY3EJAMwIAgUCY3AJAMwIAgUCY3IJAMwIAgUCY3MFA25pbAECY3QDAmNoAmNpAmNtBAJjdQkBAmNsAwUCY2gFAmNpBQJjbQkAzAgCCQEBTAIJAJEDAgUCY3UAAAUBYQkAzAgCCQEBTAIJAJEDAgUCY3UAAQUBYQkAzAgCCQEBTAIJAJEDAgUCY3UAAgUBYQUDbmlsAQJjdgICY3cCYW8EAmN4AwkAAAIFAmFvAAAAAAkAawMFAmN3BQJhbwUBYQkAlAoCCQBlAgUCY3cFAmN4BQJjeAECY3kBAmN6BAJjQQkAkQMCBQJjegAABAJjQgkAkQMCBQJjegABBAJjQwkAtwICBQJjQQUCY0IDCQAAAgUCY0MFAWUFAWUEAmNECQENcGFyc2VJbnRWYWx1ZQEFAmFVBAJjRQkAaAIFAmNEAAIEAmN1CQC8AgMFAmNBBQJjQgUBZgQCY0YJALwCAwUCY3UFAWkFAWYEAmNHCQC8AgMJALYCAQUCY0UFAmNDBQFmBAJjSAkAtgIBCQBlAgUCY0UAAQoBAmNJAQJjSgQCY0sJALwCAwUCY0oFAmNKBQFmBAJjTAkAvAIDBQJjSwUCY0oFAWYEAmNNCQC8AgMFAmNMBQFmBQJjRgkAvAIDCQC3AgIFAmNHCQC8AgMFAmNNBQFnBQFmBQJjSgkAtwICCQC8AgMFAmNIBQJjSgUBZgkAvAIDBQFoBQJjTQUBZgoBAmNOAgJjTwJjUAMIBQJjTwJfMgUCY08EAmNKCAUCY08CXzEEAmNRCQECY0kBBQJjSgQCY1IJALgCAgUCY1EJAQV2YWx1ZQEFAmNKBAJjUwMJAL8CAgUBZQUCY1IJAL4CAQUCY1IFAmNSAwkAwAICBQFmBQJjUwkAlAoCBQJjUQYJAJQKAgUCY1EHBAJjVAkAzAgCAAAJAMwIAgABCQDMCAIAAgkAzAgCAAMJAMwIAgAECQDMCAIABQkAzAgCAAYJAMwIAgAHCQDMCAIACAkAzAgCAAkJAMwIAgAKCQDMCAIACwkAzAgCAAwJAMwIAgANCQDMCAIADgUDbmlsBAJjVQoAAmNWBQJjVAoAAmNXCQCQAwEFAmNWCgACY1gJAJQKAgUCY0MHCgECY1kCAmNaAmRhAwkAZwIFAmRhBQJjVwUCY1oJAQJjTgIFAmNaCQCRAwIFAmNWBQJkYQoBAmRiAgJjWgJkYQMJAGcCBQJkYQUCY1cFAmNaCQACAQIUTGlzdCBzaXplIGV4Y2VlZHMgMTUJAQJkYgIJAQJjWQIJAQJjWQIJAQJjWQIJAQJjWQIJAQJjWQIJAQJjWQIJAQJjWQIJAQJjWQIJAQJjWQIJAQJjWQIJAQJjWQIJAQJjWQIJAQJjWQIJAQJjWQIJAQJjWQIFAmNYAAAAAQACAAMABAAFAAYABwAIAAkACgALAAwADQAOAA8EAmNKCAUCY1UCXzEEAmRjCAUCY1UCXzIDBQJkYwUCY0oJAAIBCQCsAgICGUQgY2FsY3VsYXRpb24gZXJyb3IsIEQgPSAJAKYDAQUCY0oBAmRkBAJkZQJkZgJkZwJkaAQCZGkFAmJsBAJkagkA2AQBCQEFdmFsdWUBBQJibQQCZGsJANgEAQkBBXZhbHVlAQUCYm4EAmRsBQJibwQCZG0FAmJwBAJkbgkApAMBBQJiawQCZG8ICQETdmFsdWVPckVycm9yTWVzc2FnZQIJAOwHAQUCZGkCC1dyb25nIExQIGlkCHF1YW50aXR5AwkBAiE9AgkA2AQBBQJkaQUCZGYJAAIBAg9Xcm9uZyBwbXQgYXNzZXQEAmRwCQECYk4BBQJkagQCZHEJAQFIAgUCZHAFAmRsBAJkcgkBAmJOAQUCZGsEAmRzCQEBSAIFAmRyBQJkbQQCZHQJAQJiUAIFAmRzBQJkcQQCZHUJAQFMAgUCZHQFAWEEAmR2CQEBSAIFAmRnBQFhBAJkdwkBAUgCBQJkbwUBYQQCZHgJALwCAwUCZHEFAmR2BQJkdwQCZHkJALwCAwUCZHMFAmR2BQJkdwQCZHoJAQFPAwUCZHgFAmRsBQVGTE9PUgQCZEEJAQFPAwUCZHkFAmRtBQVGTE9PUgQCZEIDCQAAAgUCZGUCAAUDbmlsCQDMCAIJAQ5TY3JpcHRUcmFuc2ZlcgMFAmRoBQJkegMJAAACBQJkagIFV0FWRVMFBHVuaXQJANkEAQUCZGoJAMwIAgkBDlNjcmlwdFRyYW5zZmVyAwUCZGgFAmRBAwkAAAIFAmRrAgVXQVZFUwUEdW5pdAkA2QQBBQJkawkAzAgCCQELU3RyaW5nRW50cnkCCQECYWkCCQClCAEFAmRoBQJkZQkBAmJKBgUCZHoFAmRBBQJkZwUCZHUFBmhlaWdodAgFCWxhc3RCbG9jawl0aW1lc3RhbXAJAMwIAgkBDEludGVnZXJFbnRyeQIJAQJhYgAFAmR1CQDMCAIJAQxJbnRlZ2VyRW50cnkCCQECYWMCBQZoZWlnaHQIBQlsYXN0QmxvY2sJdGltZXN0YW1wBQJkdQUDbmlsCQCcCgoFAmR6BQJkQQUCZGoFAmRrBQJkcAUCZHIFAmRvBQJkdAUCZG4FAmRCAQJkQw0CZGUCYlcCZEQCZEUCZEYCZEcCZGgCZEgCZEkCZEoCZEsCZEwCZE0EAmRpBQJibAQCZE4JANgEAQkBBXZhbHVlAQUCYm0EAmRPCQDYBAEJAQV2YWx1ZQEFAmJuBAJkUAUCYnEEAmRRBQJicgQCZFIFAmJvBAJkUwUCYnAEAmRuCQCkAwEFAmJrBAJkVAgJARN2YWx1ZU9yRXJyb3JNZXNzYWdlAgkA7AcBBQJkaQIIV3IgbHAgYXMIcXVhbnRpdHkEAmRwAwUCZEgJAQJiTgEFAmROAwMFAmRKCQAAAgUCZE0FAmROBwkAZQIJAQJiTgEFAmROBQJkTAMFAmRKCQECYk4BBQJkTgkAZQIJAQJiTgEFAmROBQJkRAQCZHIDBQJkSAkBAmJOAQUCZE8DAwUCZEoJAAACBQJkTQUCZE8HCQBlAgkBAmJOAQUCZE8FAmRMAwUCZEoJAQJiTgEFAmRPCQBlAgkBAmJOAQUCZE8FAmRGBAJkVQkBAUgCBQJkRAUCZFIEAmRWCQEBSAIFAmRGBQJkUwQCZFcJAQJiUAIFAmRWBQJkVQQCZHEJAQFIAgUCZHAFAmRSBAJkcwkBAUgCBQJkcgUCZFMEAmNiCQECY3kBCQDMCAIFAmRxCQDMCAIFAmRzBQNuaWwEAmRYAwkAAAIFAmRUAAAEAmNhCQECY3kBCQDMCAIJALcCAgUCZHEFAmRVCQDMCAIJALcCAgUCZHMFAmRWBQNuaWwEAmRZAwkAvwICBQJjYQUCY2IGCQACAQIcRDEgc2hvdWxkIGJlIGdyZWF0ZXIgdGhhbiBEMAMJAAACBQJkWQUCZFkEAmR0BQFkBAJkWgUBZAQCY3EFAmNhCQCXCgUJAQFMAgUCY3EFAWEJAQFMAgUCZFUFAmRSCQEBTAIFAmRWBQJkUwkBAmJQAgkAtwICBQJkcwUCZFYJALcCAgUCZHEFAmRVBQJkWgkAAgECJFN0cmljdCB2YWx1ZSBpcyBub3QgZXF1YWwgdG8gaXRzZWxmLgQCZHQJAQJiUAIFAmRzBQJkcQQCZWEJALwCAwkBAVcBCQC4AgIFAmR0BQJkVwUBYwUCZHQEAmRaCQEBSAIFAmJXBQFhAwMDBQJkSwkBAiE9AgUCZHQFAWQHCQC/AgIFAmVhBQJkWgcJAAIBCQCsAgIJAKwCAgkArAICAg9QcmljZSBzbGlwcGFnZSAJAKYDAQUCZWECAyA+IAkApgMBBQJkWgQCZWIJAQFIAgUCZFQFAWEEAmVjCQC9AgQFAmRVCQECYlMDBQJkcwUCZHEFB0NFSUxJTkcFAWMFB0NFSUxJTkcEAmVkCQC9AgQFAmRWBQFjCQECYlMDBQJkcwUCZHEFBUZMT09SBQdDRUlMSU5HBAJlZQMJAL8CAgUCZWMFAmRWCQCUCgIFAmVkBQJkVgkAlAoCBQJkVQUCZWMEAmVmCAUCZWUCXzEEAmVnCAUCZWUCXzIEAmNhCQECY3kBCQDMCAIJALcCAgUCZHEFAmVmCQDMCAIJALcCAgUCZHMFAmVnBQNuaWwEAmRZAwkAvwICBQJjYQUCY2IGCQACAQIcRDEgc2hvdWxkIGJlIGdyZWF0ZXIgdGhhbiBEMAMJAAACBQJkWQUCZFkEAmNxCQC8AgMFAmViCQC4AgIFAmNhBQJjYgUCY2IJAJcKBQkBAU8DBQJjcQUBYQUFRkxPT1IJAQFPAwUCZWYFAmRSBQdDRUlMSU5HCQEBTwMFAmVnBQJkUwUHQ0VJTElORwUCZHQFAmRaCQACAQIkU3RyaWN0IHZhbHVlIGlzIG5vdCBlcXVhbCB0byBpdHNlbGYuBAJlaAgFAmRYAl8xBAJlaQgFAmRYAl8yBAJlaggFAmRYAl8zBAJkdQkBAUwCCAUCZFgCXzQFAWEEAmVrCQEBTAIIBQJkWAJfNQUBYQMJAGcCAAAFAmVoCQACAQIHTFAgPD0gMAQCZWwDCQEBIQEFAmRJAAAFAmVoBAJlbQkAZQIFAmREBQJlaQQCZW4JAGUCBQJkRgUCZWoEAmVvAwMFAmRKCQAAAgUCZE0FAmROBwkAlAoCBQJkTAAAAwMFAmRKCQAAAgUCZE0FAmRPBwkAlAoCAAAFAmRMCQCUCgIFAmVpBQJlagQCZXAIBQJlbwJfMQQCZXEIBQJlbwJfMgQCZXIJAMwIAgkBDEludGVnZXJFbnRyeQIJAQJhYgAFAmR1CQDMCAIJAQxJbnRlZ2VyRW50cnkCCQECYWMCBQZoZWlnaHQIBQlsYXN0QmxvY2sJdGltZXN0YW1wBQJkdQkAzAgCCQELU3RyaW5nRW50cnkCCQECYWYCBQJkaAUCZGUJAQJieQoFAmVwBQJlcQUCZWwFAmR1BQJiVwUCZWsFBmhlaWdodAgFCWxhc3RCbG9jawl0aW1lc3RhbXAFAmVtBQJlbgUDbmlsCQCfCg0FAmVoBQJlbAUCZHUFAmRwBQJkcgUCZFQFAmRpBQJkbgUCZXIFAmVtBQJlbgUCZEUFAmRHAQJlcwMCY3oCY1ACZXQEAmV1BQFnBAJldgkAkQMCBQJjegMJAAACBQJjUAAAAAEAAAQCZXcJAKcDAQUBbAQCY0QJALkCAgkApwMBBQJhVQUCZXcEAmNDBQJldgQCY0UJALkCAgUCY0QFAmV1BAJleAkAugICCQC5AgIJALkCAgkAugICCQC5AgIFAmV0BQJldAkAuQICBQJldgUCZXUFAmV0BQJldwkAuQICBQJjRQUCZXUEAmV5CQC4AgIJALcCAgUCY0MJALoCAgkAuQICBQJldAUCZXcFAmNFBQJldAoBAmNOAgJjTwJlegQCZUEFAmNPBAJlQggFAmVBAl8xBAJkYwgFAmVBAl8yAwkBAiE9AgUCZGMFBHVuaXQFAmNPBAJlQwkAugICCQC3AgIJALkCAgUCZUIFAmVCBQJleAkAtwICCQC5AgIFAWcFAmVCBQJleQQCZUQJAQFYAQkAuAICBQJlQwkBBXZhbHVlAQUCZUIDCQDAAgIFAWYFAmVECQCUCgIFAmVDBQJlegkAlAoCBQJlQwUEdW5pdAQCY1QJAMwIAgAACQDMCAIAAQkAzAgCAAIJAMwIAgADCQDMCAIABAkAzAgCAAUJAMwIAgAGCQDMCAIABwkAzAgCAAgJAMwIAgAJCQDMCAIACgkAzAgCAAsJAMwIAgAMCQDMCAIADQkAzAgCAA4FA25pbAQCZUUKAAJjVgUCY1QKAAJjVwkAkAMBBQJjVgoAAmNYCQCUCgIFAmV0BQR1bml0CgECY1kCAmNaAmRhAwkAZwIFAmRhBQJjVwUCY1oJAQJjTgIFAmNaCQCRAwIFAmNWBQJkYQoBAmRiAgJjWgJkYQMJAGcCBQJkYQUCY1cFAmNaCQACAQIUTGlzdCBzaXplIGV4Y2VlZHMgMTUJAQJkYgIJAQJjWQIJAQJjWQIJAQJjWQIJAQJjWQIJAQJjWQIJAQJjWQIJAQJjWQIJAQJjWQIJAQJjWQIJAQJjWQIJAQJjWQIJAQJjWQIJAQJjWQIJAQJjWQIJAQJjWQIFAmNYAAAAAQACAAMABAAFAAYABwAIAAkACgALAAwADQAOAA8EAmVCCAUCZUUCXzEEAmRjCAUCZUUCXzIDCQECIT0CBQJkYwUEdW5pdAUCZUIJAAIBCQCsAgICGVkgY2FsY3VsYXRpb24gZXJyb3IsIFkgPSAJAKYDAQUCZUIBAmVGAwJlRwJlSAJlSQQCZUoJALwCAwkBAmN5AQkAzAgCCQEBSwIFAmVHCQC2AgEFAmJvCQDMCAIJAQFLAgUCZUgJALYCAQUCYnAFA25pbAUBYwUCZUkDCQAAAgUCZUkFAWUFAWUFAmVKAQJlSwMCZUwCZU0CZU4EAmVPCQC4AgIJALYCAQkBAmJOAQkBAmJlAQUCYm0FAmVMBAJlUAkAuAICCQC2AgEJAQJiTgEJAQJiZQEFAmJuBQJlTQQCZVEJALgCAgkAtgIBCAkBBXZhbHVlAQkA7AcBBQJibAhxdWFudGl0eQUCZU4EAmVSCQECZUYDBQJlTwUCZVAFAmVRBQJlUgECZVMDAmVUAmVVAmVOBAJlTwkAZAIJAQJiTgEJAQJiZQEFAmJtBQJlVAQCZVAJAGQCCQECYk4BCQECYmUBBQJibgUCZVUEAmVRCQBkAggJAQV2YWx1ZQEJAOwHAQUCYmwIcXVhbnRpdHkFAmVOBAJlSgkBAmVGAwkAtgIBBQJlTwkAtgIBBQJlUAkAtgIBBQJlUQQCZVYJAMwIAgkBDEludGVnZXJFbnRyeQIFAmFxBQZoZWlnaHQJAMwIAgkBC1N0cmluZ0VudHJ5AgUCYXAJAKYDAQUCZUoFA25pbAkAlAoCBQJlVgUCZUoBAmVXAgJlWAJlSgMJAMACAgUCZUoFAmVYBgkBAmFOAQIidXBkYXRlZCBETHAgbG93ZXIgdGhhbiBjdXJyZW50IERMcAECZVkBAmVaBAJmYQgFAmVaBmFtb3VudAQCZmIJAG4ECAUCZVoGYW1vdW50CAUCZVoFcHJpY2UFAWEFBUZMT09SBAJmYwMJAAACCAUCZVoJb3JkZXJUeXBlBQNCdXkJAJQKAgUCZmEJAQEtAQUCZmIJAJQKAgkBAS0BBQJmYQUCZmIEAmVUCAUCZmMCXzEEAmVVCAUCZmMCXzIDAwMJAQJhVgAGCQAAAgUCYmsFAXIGCQAAAgUCYmsFAXMJAAIBAg1BZG1pbiBibG9ja2VkAwMJAQIhPQIICAUCZVoJYXNzZXRQYWlyC2Ftb3VudEFzc2V0BQJibQYJAQIhPQIICAUCZVoJYXNzZXRQYWlyCnByaWNlQXNzZXQFAmJuCQACAQIJV3IgYXNzZXRzBAJmZAkApwMBCQERQGV4dHJOYXRpdmUoMTA1MykCBQR0aGlzBQJhcAQCZmUJAQJlUwMFAmVUBQJlVQAABAJmZggFAmZlAl8xBAJmZwgFAmZlAl8yBAJmaAkAwAICBQJmZwUCZmQEAmZpCQC5CQIJAMwIAgkApgMBBQJmZAkAzAgCCQCmAwEFAmZnBQNuaWwCASAJAJQKAgUCZmgFAmZpAQJmagECY1ADCQECIT0CCQCQAwEIBQJjUAhwYXltZW50cwABCQACAQIKMSBwbW50IGV4cAQCZmsJAQV2YWx1ZQEJAJEDAggFAmNQCHBheW1lbnRzAAAEAmRmCQEFdmFsdWUBCAUCZmsHYXNzZXRJZAQCZEwIBQJmawZhbW91bnQEAmRYCQECZGQECQDYBAEIBQJjUA10cmFuc2FjdGlvbklkCQDYBAEFAmRmBQJkTAgFAmNQBmNhbGxlcgQCZHoIBQJkWAJfMQQCZEEIBQJkWAJfMgQCZG4JAQ1wYXJzZUludFZhbHVlAQgFAmRYAl85BAJkQggFAmRYA18xMAMDCQECYVYABgkAAAIFAmRuBQFzCQACAQkArAICAg9BZG1pbiBibG9ja2VkOiAJAKQDAQUCZG4JAJcKBQUCZHoFAmRBBQJkTAUCZGYFAmRCAQJmbAoCZm0CYWgCZm4CZm8CYlcCZEkCZEoCZEsCZEwCZE0EAmRYCQECZEMNBQJhaAUCYlcICQEFdmFsdWUBBQJmbgZhbW91bnQICQEFdmFsdWUBBQJmbgdhc3NldElkCAkBBXZhbHVlAQUCZm8GYW1vdW50CAkBBXZhbHVlAQUCZm8HYXNzZXRJZAUCZm0JAAACBQJhaAIABQJkSQUCZEoFAmRLBQJkTAUCZE0EAmRuCQENcGFyc2VJbnRWYWx1ZQEIBQJkWAJfOAMDAwkBAmFWAAYJAAACBQJkbgUBcQYJAAACBQJkbgUBcwkAAgEJAKwCAgIIQmxvY2tlZDoJAKQDAQUCZG4FAmRYAQJmcAUCZnECZGYCZGgCYWgCZnIEAmRqCQDYBAEJAQV2YWx1ZQEFAmJtBAJkawkA2AQBCQEFdmFsdWUBBQJibgQCZGkFAmJsBAJkUgUCYm8EAmRTBQJicAQCZVEJALYCAQgJARN2YWx1ZU9yRXJyb3JNZXNzYWdlAgkA7AcBBQJkaQIQaW52YWxpZCBscCBhc3NldAhxdWFudGl0eQQCZnMDCQC/AgIFAmVRBQFlBgkAAgECImluaXRpYWwgZGVwb3NpdCByZXF1aXJlcyBhbGwgY29pbnMDCQAAAgUCZnMFAmZzBAJkcAkBAmJOAQUCZGoEAmRyCQECYk4BBQJkawQCZnQDCQAAAgUCYWgCAAkAlAoCBQJkcAUCZHIDCQAAAgUCZGYFAmRqAwkAZgIFAmZxBQJkcAkAAgECFmludmFsaWQgcGF5bWVudCBhbW91bnQJAJQKAgkAZQIFAmRwBQJmcQUCZHIDCQAAAgUCZGYFAmRrAwkAZgIFAmZxBQJkcgkAAgECFmludmFsaWQgcGF5bWVudCBhbW91bnQJAJQKAgUCZHAJAGUCBQJkcgUCZnEJAAIBAhB3cm9uZyBwbXRBc3NldElkBAJmdQgFAmZ0Al8xBAJmdggFAmZ0Al8yBAJmdwMJAAACBQJkZgUCZGoJAJQKAgUCZnEAAAMJAAACBQJkZgUCZGsJAJQKAgAABQJmcQkAAgECD2ludmFsaWQgcGF5bWVudAQCZngIBQJmdwJfMQQCZnkIBQJmdwJfMgQCZnoDBQJmcgkAlQoDCAkBAmN2AgUCZngFAmFSAl8xCAkBAmN2AgUCZnkFAmFSAl8xCAkBAmN2AgUCZnEFAmFSAl8yCQCVCgMFAmZ4BQJmeQAABAJmQQgFAmZ6Al8xBAJmQggFAmZ6Al8yBAJjeAgFAmZ6Al8zBAJmQwkAZAIFAmZ1BQJmQQQCZkQJAGQCBQJmdgUCZkIEAmNiCQECY3kBCQDMCAIJAQFIAgUCZnUFAmJvCQDMCAIJAQFIAgUCZnYFAmJwBQNuaWwEAmNhCQECY3kBCQDMCAIJAQFIAgUCZkMFAmJvCQDMCAIJAQFIAgUCZkQFAmJwBQNuaWwEAmRZAwkAvwICBQJjYQUCY2IGCQEFdGhyb3cAAwkAAAIFAmRZBQJkWQQCZkUJAL0CBAUCZVEJALgCAgUCY2EFAmNiBQJjYgUFRkxPT1IEAmR1CQEBTAIJAQJiUAIJAQFIAgUCZkQFAmRTCQEBSAIFAmZDBQJkUgUBYQQCZXIJAMwIAgkBDEludGVnZXJFbnRyeQIJAQJhYgAFAmR1CQDMCAIJAQxJbnRlZ2VyRW50cnkCCQECYWMCBQZoZWlnaHQIBQlsYXN0QmxvY2sJdGltZXN0YW1wBQJkdQkAzAgCCQELU3RyaW5nRW50cnkCCQECYWYCBQJkaAUCYWgJAQJieQoFAmZ4BQJmeQkAoAMBBQJmRQUCZHUAAAAABQZoZWlnaHQIBQlsYXN0QmxvY2sJdGltZXN0YW1wAAAAAAUDbmlsBAJmRgkAawMFAmZ2BQFhBQJmdQQCZkcJAGsDBQJmcQUBYQkAZAIFAmZGBQFhBAJmSAkAZQIFAmZxBQJmRwQCZkkJALwCAwUCZVEJALYCAQUCZkgJALYCAQUCZnYEAmZKCQCgAwEJALwCAwkAuAICBQJmRQUCZkkFAWIFAmZJCQCWCgQJAKADAQUCZkUFAmVyBQJjeAUCZkoJAAIBAiRTdHJpY3QgdmFsdWUgaXMgbm90IGVxdWFsIHRvIGl0c2VsZi4JAAIBAiRTdHJpY3QgdmFsdWUgaXMgbm90IGVxdWFsIHRvIGl0c2VsZi4BAmZLBgJmTAJmTQJmTgJmbQJmTwJmUAQCZGkJANgEAQkBBXZhbHVlAQUCYmwEAmRqCQDYBAEJAQV2YWx1ZQEFAmJtBAJkawkA2AQBCQEFdmFsdWUBBQJibgQCZlEFAmJvBAJmUgUCYnAEAmZTBQJiawQCZGgDCQAAAgUCZm0FAmJ4BQJmTwUCZm0EAmZrCQEFdmFsdWUBCQCRAwIFAmZOAAAEAmRmCQEFdmFsdWUBCAUCZmsHYXNzZXRJZAQCZEwIBQJmawZhbW91bnQEAmVSCQECZUsDBQFlBQFlBQFlAwkAAAIFAmVSBQJlUgQCZGUJANgEAQUCZlADCQECIT0CBQJkaQkA2AQBBQJkZgkAAgECCFdyb25nIExQBAJkcAkBAmJOAQUCZGoEAmRyCQECYk4BBQJkawQCZlQKAAJhUwkA/AcEBQR0aGlzAhNnZXRPbmVUa25WMlJFQURPTkxZCQDMCAIFAmZMCQDMCAIFAmRMBQNuaWwFA25pbAMJAAECBQJhUwIKKEludCwgSW50KQUCYVMJAAIBCQCsAgIJAAMBBQJhUwIfIGNvdWxkbid0IGJlIGNhc3QgdG8gKEludCwgSW50KQMJAAACBQJmVAUCZlQEAmN4CAUCZlQCXzIEAmZVCAUCZlQCXzEEAmZWAwMJAGYCBQJmTQAACQBmAgUCZk0FAmZVBwkBAmFOAQkAuQkCCQDMCAICH2Ftb3VudCB0byByZWNlaXZlIGlzIGxlc3MgdGhhbiAJAMwIAgkApAMBBQJmTQUDbmlsAgAFAmZVBAJmVwMJAAACBQJmTAUCZGoJAJYKBAUCZlYAAAkAZQIJAGUCBQJkcAUCZlYFAmN4BQJkcgMJAAACBQJmTAUCZGsJAJYKBAAABQJmVgUCZHAJAGUCCQBlAgUCZHIFAmZWBQJjeAkAAgECFGludmFsaWQgb3V0IGFzc2V0IGlkBAJmWAgFAmZXAl8xBAJmWQgFAmZXAl8yBAJmQwgFAmZXAl8zBAJmRAgFAmZXAl80BAJmWgkBAmJQAgkBAUgCBQJmRAUCZlIJAQFIAgUCZkMFAmZRBAJnYQkBAUwCBQJmWgUBYQQCZ2IDCQAAAgUCZkwCBVdBVkVTBQR1bml0CQDZBAEFAmZMBAJnYwMJAGYCBQJjeAAACQDMCAIJAQ5TY3JpcHRUcmFuc2ZlcgMFAmFYBQJjeAUCZ2IFA25pbAUDbmlsBAJkQgkAzggCCQDMCAIJAQ5TY3JpcHRUcmFuc2ZlcgMFAmRoBQJmVgUCZ2IJAMwIAgkBC1N0cmluZ0VudHJ5AgkBAmFpAgkApQgBBQJkaAUCZGUJAQJiSgYFAmZYBQJmWQUCZEwFAmdhBQZoZWlnaHQIBQlsYXN0QmxvY2sJdGltZXN0YW1wCQDMCAIJAQxJbnRlZ2VyRW50cnkCCQECYWIABQJnYQkAzAgCCQEMSW50ZWdlckVudHJ5AgkBAmFjAgUGaGVpZ2h0CAUJbGFzdEJsb2NrCXRpbWVzdGFtcAUCZ2EFA25pbAUCZ2MDCQAAAgUCZEIFAmRCBAJnZAkA/AcEBQJhUQIEYnVybgkAzAgCBQJkTAUDbmlsCQDMCAIJAQ9BdHRhY2hlZFBheW1lbnQCBQJkZgUCZEwFA25pbAMJAAACBQJnZAUCZ2QEAmdlBAJnZgMJAAACBQR0aGlzBQJhWAAABQJjeAQCZ2cDCQAAAgkBAmJjAQUCZkwFAmJtBgcDBQJnZwkAlAoCCQEBLQEJAGQCBQJmVQUCZ2YAAAkAlAoCAAAJAQEtAQkAZAIFAmZVBQJnZgQCZVQIBQJnZQJfMQQCZVUIBQJnZQJfMgQCZ2gJAQJlUwMFAmVUBQJlVQAABAJnaQgFAmdoAl8xBAJlSggFAmdoAl8yBAJnagkBAmVXAgUCZVIFAmVKAwkAAAIFAmdqBQJnagkAlAoCCQDOCAIFAmRCBQJnaQUCZlYJAAIBAiRTdHJpY3QgdmFsdWUgaXMgbm90IGVxdWFsIHRvIGl0c2VsZi4JAAIBAiRTdHJpY3QgdmFsdWUgaXMgbm90IGVxdWFsIHRvIGl0c2VsZi4JAAIBAiRTdHJpY3QgdmFsdWUgaXMgbm90IGVxdWFsIHRvIGl0c2VsZi4JAAIBAiRTdHJpY3QgdmFsdWUgaXMgbm90IGVxdWFsIHRvIGl0c2VsZi4JAAIBAiRTdHJpY3QgdmFsdWUgaXMgbm90IGVxdWFsIHRvIGl0c2VsZi4BAmdrAAQCZ2wJAKIIAQkBAVoAAwkAAQIFAmdsAgZTdHJpbmcEAmNDBQJnbAkA2QQBBQJjQwMJAAECBQJnbAIEVW5pdAUEdW5pdAkAAgECC01hdGNoIGVycm9yAQJnbQAEAmdsCQCiCAEJAQJhYQADCQABAgUCZ2wCBlN0cmluZwQCY0MFAmdsCQDZBAEFAmNDAwkAAQIFAmdsAgRVbml0BQR1bml0CQACAQILTWF0Y2ggZXJyb3IAAmduCQACAQIRUGVybWlzc2lvbiBkZW5pZWQBAmdvAQJjUAQCZ2wJAQJnawADCQABAgUCZ2wCCkJ5dGVWZWN0b3IEAmdwBQJnbAkAAAIIBQJjUA9jYWxsZXJQdWJsaWNLZXkFAmdwAwkAAQIFAmdsAgRVbml0CQAAAggFAmNQBmNhbGxlcgUEdGhpcwkAAgECC01hdGNoIGVycm9yAQJncQECY1AEAmdsCQECZ2sAAwkAAQIFAmdsAgpCeXRlVmVjdG9yBAJncAUCZ2wDCQAAAggFAmNQD2NhbGxlclB1YmxpY0tleQUCZ3AGBQJnbgMJAAECBQJnbAIEVW5pdAMJAAACCAUCY1AGY2FsbGVyBQR0aGlzBgUCZ24JAAIBAgtNYXRjaCBlcnJvchwCY1ABC2NvbnN0cnVjdG9yAQFZBAJleAkBAmdxAQUCY1ADCQAAAgUCZXgFAmV4CQDMCAIJAQtTdHJpbmdFbnRyeQIJAQFZAAUBWQUDbmlsCQACAQIkU3RyaWN0IHZhbHVlIGlzIG5vdCBlcXVhbCB0byBpdHNlbGYuAmNQAQpzZXRNYW5hZ2VyAQJncgQCZXgJAQJncQEFAmNQAwkAAAIFAmV4BQJleAQCZ3MJANkEAQUCZ3IDCQAAAgUCZ3MFAmdzCQDMCAIJAQtTdHJpbmdFbnRyeQIJAQJhYQAFAmdyBQNuaWwJAAIBAiRTdHJpY3QgdmFsdWUgaXMgbm90IGVxdWFsIHRvIGl0c2VsZi4JAAIBAiRTdHJpY3QgdmFsdWUgaXMgbm90IGVxdWFsIHRvIGl0c2VsZi4CY1ABDmNvbmZpcm1NYW5hZ2VyAAQCY3UJAQJnbQAEAmd0AwkBCWlzRGVmaW5lZAEFAmN1BgkAAgECEk5vIHBlbmRpbmcgbWFuYWdlcgMJAAACBQJndAUCZ3QEAmd1AwkAAAIIBQJjUA9jYWxsZXJQdWJsaWNLZXkJAQV2YWx1ZQEFAmN1BgkAAgECG1lvdSBhcmUgbm90IHBlbmRpbmcgbWFuYWdlcgMJAAACBQJndQUCZ3UJAMwIAgkBC1N0cmluZ0VudHJ5AgkBAVoACQDYBAEJAQV2YWx1ZQEFAmN1CQDMCAIJAQtEZWxldGVFbnRyeQEJAQJhYQAFA25pbAkAAgECJFN0cmljdCB2YWx1ZSBpcyBub3QgZXF1YWwgdG8gaXRzZWxmLgkAAgECJFN0cmljdCB2YWx1ZSBpcyBub3QgZXF1YWwgdG8gaXRzZWxmLgJjUAEDcHV0AgJndgJndwQCZ3gJAQJicwAEAmd5CQETdmFsdWVPckVycm9yTWVzc2FnZQIJAKYIAQkAkQMCBQJneAUBQwIKV3Igc3QgYWRkcgQCZ3oJARN2YWx1ZU9yRXJyb3JNZXNzYWdlAgkApggBCQCRAwIFAmd4BQFFAgpXciBzbCBhZGRyAwkAZgIAAAUCZ3YJAAIBAg5Xcm9uZyBzbGlwcGFnZQMJAQIhPQIJAJADAQgFAmNQCHBheW1lbnRzAAIJAAIBAgwyIHBtbnRzIGV4cGQEAmdBCQC2AgEICQEFdmFsdWUBCQCRAwIIBQJjUAhwYXltZW50cwAABmFtb3VudAQCZ0IJALYCAQgJAQV2YWx1ZQEJAJEDAggFAmNQCHBheW1lbnRzAAEGYW1vdW50BAJlTwkAuAICCQC2AgEJAQJiTgEJAQJiZQEFAmJtBQJnQQMJAAACBQJlTwUCZU8EAmVQCQC4AgIJALYCAQkBAmJOAQkBAmJlAQUCYm4FAmdCAwkAAAIFAmVQBQJlUAQCZVEJALYCAQgJAQV2YWx1ZQEJAOwHAQUCYmwIcXVhbnRpdHkDCQAAAgUCZVEFAmVRBAJlUgkBAmVLAwUCZ0EFAmdCCQC2AgEAAAMJAAACBQJlUgUCZVIEAmdDCQECZmwKCQClCAEIBQJjUAZjYWxsZXIJANgEAQgFAmNQDXRyYW5zYWN0aW9uSWQJAQ9BdHRhY2hlZFBheW1lbnQCCAkBBXZhbHVlAQkAkQMCCAUCY1AIcGF5bWVudHMAAAdhc3NldElkCAkBBXZhbHVlAQkAkQMCCAUCY1AIcGF5bWVudHMAAAZhbW91bnQJAJEDAggFAmNQCHBheW1lbnRzAAEFAmd2BgcGAAACAAQCZWwIBQJnQwJfMgQCZ0QIBQJnQwJfNwQCZEIIBQJnQwJfOQQCZW0IBQJnQwNfMTAEAmVuCAUCZ0MDXzExBAJkaggFAmdDA18xMgQCZGsIBQJnQwNfMTMEAmRYCQD8BwQFAmFRAgRlbWl0CQDMCAIFAmVsBQNuaWwFA25pbAMJAAACBQJkWAUCZFgEAmdFBAJnbAUCZFgDCQABAgUCZ2wCB0FkZHJlc3MEAmdGBQJnbAkA/AcEBQJnRgIEZW1pdAkAzAgCBQJlbAUDbmlsBQNuaWwFBHVuaXQDCQAAAgUCZ0UFAmdFBAJnRwMJAGYCBQJlbQAACQD8BwQFAmd6AgNwdXQFA25pbAkAzAgCCQEPQXR0YWNoZWRQYXltZW50AgUCZGoFAmVtBQNuaWwFA25pbAMJAAACBQJnRwUCZ0cEAmdIAwkAZgIFAmVuAAAJAPwHBAUCZ3oCA3B1dAUDbmlsCQDMCAIJAQ9BdHRhY2hlZFBheW1lbnQCBQJkawUCZW4FA25pbAUDbmlsAwkAAAIFAmdIBQJnSAQCZ0kDBQJndwQCZ0oJAPwHBAUCZ3kCBXN0YWtlBQNuaWwJAMwIAgkBD0F0dGFjaGVkUGF5bWVudAIFAmdEBQJlbAUDbmlsAwkAAAIFAmdKBQJnSgUDbmlsCQACAQIkU3RyaWN0IHZhbHVlIGlzIG5vdCBlcXVhbCB0byBpdHNlbGYuCQDMCAIJAQ5TY3JpcHRUcmFuc2ZlcgMIBQJjUAZjYWxsZXIFAmVsBQJnRAUDbmlsBAJnSwkBAmVTAwAAAAAAAAQCZ2kIBQJnSwJfMQQCZUoIBQJnSwJfMgQCZ0wDCQDAAgIFAmVKBQJlUgYJAQJhTgEJALkJAgkAzAgCAiJ1cGRhdGVkIERMcCBsb3dlciB0aGFuIGN1cnJlbnQgRExwCQDMCAIJAKYDAQUCZU8JAMwIAgkApgMBBQJlUAkAzAgCCQCmAwEFAmVRCQDMCAIJAKYDAQUCZVIJAMwIAgkApgMBBQJlSgkAzAgCCQCkAwEFAmVtCQDMCAIJAKQDAQUCZW4FA25pbAIBIAMJAAACBQJnTAUCZ0wEAmdNCAkBBXZhbHVlAQkA7AcBBQJibAhxdWFudGl0eQMJAAACBQJnTQUCZ00JAM4IAgkAzggCBQJkQgUCZ0kFAmdpCQACAQIkU3RyaWN0IHZhbHVlIGlzIG5vdCBlcXVhbCB0byBpdHNlbGYuCQACAQIkU3RyaWN0IHZhbHVlIGlzIG5vdCBlcXVhbCB0byBpdHNlbGYuCQACAQIkU3RyaWN0IHZhbHVlIGlzIG5vdCBlcXVhbCB0byBpdHNlbGYuCQACAQIkU3RyaWN0IHZhbHVlIGlzIG5vdCBlcXVhbCB0byBpdHNlbGYuCQACAQIkU3RyaWN0IHZhbHVlIGlzIG5vdCBlcXVhbCB0byBpdHNlbGYuCQACAQIkU3RyaWN0IHZhbHVlIGlzIG5vdCBlcXVhbCB0byBpdHNlbGYuCQACAQIkU3RyaWN0IHZhbHVlIGlzIG5vdCBlcXVhbCB0byBpdHNlbGYuCQACAQIkU3RyaWN0IHZhbHVlIGlzIG5vdCBlcXVhbCB0byBpdHNlbGYuCQACAQIkU3RyaWN0IHZhbHVlIGlzIG5vdCBlcXVhbCB0byBpdHNlbGYuCQACAQIkU3RyaWN0IHZhbHVlIGlzIG5vdCBlcXVhbCB0byBpdHNlbGYuAmNQAQtwdXRPbmVUa25WMgICZk0CZ3cEAmdOCgACYVMJAPwHBAUCYVECKGlzUG9vbE9uZVRva2VuT3BlcmF0aW9uc0Rpc2FibGVkUkVBRE9OTFkJAMwIAgkApQgBBQR0aGlzBQNuaWwFA25pbAMJAAECBQJhUwIHQm9vbGVhbgUCYVMJAAIBCQCsAgIJAAMBBQJhUwIcIGNvdWxkbid0IGJlIGNhc3QgdG8gQm9vbGVhbgQCZ08DAwMJAQJhVgAGCQAAAgUCYmsFAXEGCQAAAgUCYmsFAXMGBQJnTgQCZ1AJAMwIAgMDCQEBIQEFAmdPBgkBAmdvAQUCY1AGCQECYU4BAiFwdXQgb3BlcmF0aW9uIGlzIGJsb2NrZWQgYnkgYWRtaW4JAMwIAgMJAAACCQCQAwEIBQJjUAhwYXltZW50cwABBgkBAmFOAQIeZXhhY3RseSAxIHBheW1lbnQgYXJlIGV4cGVjdGVkBQNuaWwDCQAAAgUCZ1AFAmdQBAJkagkA2AQBCQEFdmFsdWUBBQJibQQCZGsJANgEAQkBBXZhbHVlAQUCYm4EAmRpBQJibAQCZlEFAmJvBAJmUgUCYnAEAmRoAwkAAAIIBQJjUAZjYWxsZXIFBHRoaXMIBQJjUAxvcmlnaW5DYWxsZXIIBQJjUAZjYWxsZXIEAmZrCQEFdmFsdWUBCQCRAwIIBQJjUAhwYXltZW50cwAABAJkZgkA2AQBCQEFdmFsdWUBCAUCZmsHYXNzZXRJZAQCZEwIBQJmawZhbW91bnQEAmVSAwkAAAIIBQJmawdhc3NldElkBQJibQkBAmVLAwkAtgIBBQJkTAkAtgIBAAAJALYCAQAACQECZUsDCQC2AgEAAAkAtgIBBQJkTAkAtgIBAAADCQAAAgUCZVIFAmVSBAJnUQkBAmZwBQUCZEwFAmRmCQClCAEFAmRoCQDYBAEIBQJjUA10cmFuc2FjdGlvbklkBgMJAAACBQJnUQUCZ1EEAmN4CAUCZ1ECXzMEAmRCCAUCZ1ECXzIEAmdSCAUCZ1ECXzEEAmVsAwMJAGYCBQJmTQAACQBmAgUCZk0FAmdSBwkBAmFOAQkAuQkCCQDMCAICH2Ftb3VudCB0byByZWNlaXZlIGlzIGxlc3MgdGhhbiAJAMwIAgkApAMBBQJmTQUDbmlsAgAFAmdSBAJnQwkA/AcEBQJhUQIEZW1pdAkAzAgCBQJlbAUDbmlsBQNuaWwDCQAAAgUCZ0MFAmdDBAJnRQQCZ2wFAmdDAwkAAQIFAmdsAgdBZGRyZXNzBAJnRgUCZ2wJAPwHBAUCZ0YCBGVtaXQJAMwIAgUCZWwFA25pbAUDbmlsBQR1bml0AwkAAAIFAmdFBQJnRQQCZ0kDBQJndwQCZ0oJAPwHBAUCYnUCBXN0YWtlBQNuaWwJAMwIAgkBD0F0dGFjaGVkUGF5bWVudAIFAmRpBQJlbAUDbmlsAwkAAAIFAmdKBQJnSgUDbmlsCQACAQIkU3RyaWN0IHZhbHVlIGlzIG5vdCBlcXVhbCB0byBpdHNlbGYuCQDMCAIJAQ5TY3JpcHRUcmFuc2ZlcgMIBQJjUAZjYWxsZXIFAmVsBQJkaQUDbmlsBAJnYwMJAGYCBQJjeAAACQDMCAIJAQ5TY3JpcHRUcmFuc2ZlcgMFAmFYBQJjeAkA2QQBBQJkZgUDbmlsBQNuaWwEAmdTAwkAAAIFBHRoaXMFAmFYCQCUCgIAAAAABAJnVAMJAAACCAUCZmsHYXNzZXRJZAUCYm0GBwMFAmdUCQCUCgIJAQEtAQUCY3gAAAkAlAoCAAAJAQEtAQUCY3gEAmVUCAUCZ1MCXzEEAmVVCAUCZ1MCXzIEAmdVCQECZVMDBQJlVAUCZVUAAAQCZ2kIBQJnVQJfMQQCZUoIBQJnVQJfMgQCZ2oJAQJlVwIFAmVSBQJlSgMJAAACBQJnagUCZ2oJAJQKAgkAzggCCQDOCAIJAM4IAgUCZEIFAmdJBQJnYwUCZ2kFAmVsCQACAQIkU3RyaWN0IHZhbHVlIGlzIG5vdCBlcXVhbCB0byBpdHNlbGYuCQACAQIkU3RyaWN0IHZhbHVlIGlzIG5vdCBlcXVhbCB0byBpdHNlbGYuCQACAQIkU3RyaWN0IHZhbHVlIGlzIG5vdCBlcXVhbCB0byBpdHNlbGYuCQACAQIkU3RyaWN0IHZhbHVlIGlzIG5vdCBlcXVhbCB0byBpdHNlbGYuCQACAQIkU3RyaWN0IHZhbHVlIGlzIG5vdCBlcXVhbCB0byBpdHNlbGYuCQACAQIkU3RyaWN0IHZhbHVlIGlzIG5vdCBlcXVhbCB0byBpdHNlbGYuAmNQAQpwdXRGb3JGcmVlAQJnVgMJAGYCAAAFAmdWCQACAQIKV3Jvbmcgc2xwZwMJAQIhPQIJAJADAQgFAmNQCHBheW1lbnRzAAIJAAIBAgwyIHBtbnRzIGV4cGQEAmdXCQECZmwKCQClCAEIBQJjUAZjYWxsZXIJANgEAQgFAmNQDXRyYW5zYWN0aW9uSWQJAQ9BdHRhY2hlZFBheW1lbnQCCAkBBXZhbHVlAQkAkQMCCAUCY1AIcGF5bWVudHMAAAdhc3NldElkCAkBBXZhbHVlAQkAkQMCCAUCY1AIcGF5bWVudHMAAAZhbW91bnQJAJEDAggFAmNQCHBheW1lbnRzAAEFAmdWBwcGAAACAAQCZEIIBQJnVwJfOQQCZ0EJALYCAQgJAQV2YWx1ZQEJAJEDAggFAmNQCHBheW1lbnRzAAAGYW1vdW50BAJnQgkAtgIBCAkBBXZhbHVlAQkAkQMCCAUCY1AIcGF5bWVudHMAAQZhbW91bnQEAmVSCQECZUsDBQJnQQUCZ0IJALYCAQAAAwkAAAIFAmVSBQJlUgQCZ1gJAQJlUwMAAAAAAAAEAmdpCAUCZ1gCXzEEAmVKCAUCZ1gCXzIEAmdqCQECZVcCBQJlUgUCZUoDCQAAAgUCZ2oFAmdqCQDOCAIFAmRCBQJnaQkAAgECJFN0cmljdCB2YWx1ZSBpcyBub3QgZXF1YWwgdG8gaXRzZWxmLgkAAgECJFN0cmljdCB2YWx1ZSBpcyBub3QgZXF1YWwgdG8gaXRzZWxmLgJjUAEDZ2V0AAQCZVIJAQJlSwMJALYCAQAACQC2AgEAAAkAtgIBAAADCQAAAgUCZVIFAmVSBAJkWAkBAmZqAQUCY1AEAmdZCAUCZFgCXzEEAmRBCAUCZFgCXzIEAmRMCAUCZFgCXzMEAmRmCAUCZFgCXzQEAmRCCAUCZFgCXzUEAmV5CQD8BwQFAmFRAgRidXJuCQDMCAIFAmRMBQNuaWwJAMwIAgkBD0F0dGFjaGVkUGF5bWVudAIFAmRmBQJkTAUDbmlsAwkAAAIFAmV5BQJleQQCZ1oJAQJlUwMJAQEtAQUCZ1kJAQEtAQUCZEEAAAQCZ2kIBQJnWgJfMQQCZUoIBQJnWgJfMgQCZ2oJAQJlVwIFAmVSBQJlSgMJAAACBQJnagUCZ2oJAM4IAgUCZEIFAmdpCQACAQIkU3RyaWN0IHZhbHVlIGlzIG5vdCBlcXVhbCB0byBpdHNlbGYuCQACAQIkU3RyaWN0IHZhbHVlIGlzIG5vdCBlcXVhbCB0byBpdHNlbGYuCQACAQIkU3RyaWN0IHZhbHVlIGlzIG5vdCBlcXVhbCB0byBpdHNlbGYuAmNQAQtnZXRPbmVUa25WMgICZkwCZk0EAmdOCgACYVMJAPwHBAUCYVECKGlzUG9vbE9uZVRva2VuT3BlcmF0aW9uc0Rpc2FibGVkUkVBRE9OTFkJAMwIAgkApQgBBQR0aGlzBQNuaWwFA25pbAMJAAECBQJhUwIHQm9vbGVhbgUCYVMJAAIBCQCsAgIJAAMBBQJhUwIcIGNvdWxkbid0IGJlIGNhc3QgdG8gQm9vbGVhbgQCaGEDAwkBAmFWAAYJAAACBQJiawUBcwYFAmdOBAJnUAkAzAgCAwMJAQEhAQUCaGEGCQECZ28BBQJjUAYJAQJhTgECIWdldCBvcGVyYXRpb24gaXMgYmxvY2tlZCBieSBhZG1pbgkAzAgCAwkAAAIJAJADAQgFAmNQCHBheW1lbnRzAAEGCQECYU4BAh5leGFjdGx5IDEgcGF5bWVudCBhcmUgZXhwZWN0ZWQFA25pbAMJAAACBQJnUAUCZ1AEAmhiCQECZksGBQJmTAUCZk0IBQJjUAhwYXltZW50cwgFAmNQBmNhbGxlcggFAmNQDG9yaWdpbkNhbGxlcggFAmNQDXRyYW5zYWN0aW9uSWQEAmRCCAUCaGICXzEEAmZWCAUCaGICXzIJAJQKAgUCZEIFAmZWCQACAQIkU3RyaWN0IHZhbHVlIGlzIG5vdCBlcXVhbCB0byBpdHNlbGYuAmNQAQpyZWZyZXNoRExwAAQCaGMJAQt2YWx1ZU9yRWxzZQIJAJ8IAQUCYXEAAAQCaGQDCQBnAgkAZQIFBmhlaWdodAUCaGMFAmF0BQR1bml0CQECYU4BCQC5CQIJAMwIAgkApAMBBQJhdAkAzAgCAi8gYmxvY2tzIGhhdmUgbm90IHBhc3NlZCBzaW5jZSB0aGUgcHJldmlvdXMgY2FsbAUDbmlsAgADCQAAAgUCaGQFAmhkBAJmZAkBE3ZhbHVlT3JFcnJvck1lc3NhZ2UCCQCoAwEJAQt2YWx1ZU9yRWxzZQIJAJ0IAgUEdGhpcwUCYXACATAJAQJhUAECC2ludmFsaWQgZExwBAJoZQkBAmVTAwAAAAAAAAQCaGYIBQJoZQJfMQQCZUoIBQJoZQJfMgQCZVYDCQECIT0CBQJmZAUCZUoFAmhmCQECYU4BAhJub3RoaW5nIHRvIHJlZnJlc2gJAJQKAgUCZVYJAKYDAQUCZUoJAAIBAiRTdHJpY3QgdmFsdWUgaXMgbm90IGVxdWFsIHRvIGl0c2VsZi4CY1ABE2dldE9uZVRrblYyUkVBRE9OTFkCAmZMAmhnBAJkagkA2AQBCQEFdmFsdWUBBQJibQQCZGsJANgEAQkBBXZhbHVlAQUCYm4EAmRpCQDYBAEJAQV2YWx1ZQEFAmJsBAJjegkAzAgCCQC2AgEJAQJiTgEFAmRqCQDMCAIJALYCAQkBAmJOAQUCZGsFA25pbAQCZUkJALYCAQgJARN2YWx1ZU9yRXJyb3JNZXNzYWdlAgkA7AcBCQDZBAEFAmRpAhBpbnZhbGlkIGxwIGFzc2V0CHF1YW50aXR5BAJjYgkBAmN5AQUCY3oEAmNhCQC4AgIFAmNiCQC8AgMJALYCAQUCaGcFAmNiBQJlSQQCaGgDCQAAAgUCZkwFAmRqAAADCQAAAgUCZkwFAmRrAAEJAAIBAhRpbnZhbGlkIG91dCBhc3NldCBpZAQCaGkJAQJlcwMFAmN6BQJoaAUCY2EEAmhqCQC4AgIJAJEDAgUCY3oFAmhoBQJoaQQCaGsJAJYDAQkAzAgCAAAJAMwIAgkAoAMBCQC4AgIFAmhqBQFmBQNuaWwEAmhsCQECY3YCBQJoawUCYVQEAmZVCAUCaGwCXzEEAmN4CAUCaGwCXzIJAJQKAgUDbmlsCQCUCgIFAmZVBQJjeAJjUAEcZ2V0T25lVGtuVjJXaXRoQm9udXNSRUFET05MWQICZkwCaGcEAmRqCQDYBAEJAQV2YWx1ZQEFAmJtBAJkawkA2AQBCQEFdmFsdWUBBQJibgQCZGkJANgEAQkBBXZhbHVlAQUCYmwEAmRwCQECYk4BBQJkagQCZHIJAQJiTgEFAmRrBAJobQoAAmFTCQD8BwQFBHRoaXMCE2dldE9uZVRrblYyUkVBRE9OTFkJAMwIAgUCZkwJAMwIAgUCaGcFA25pbAUDbmlsAwkAAQIFAmFTAgooSW50LCBJbnQpBQJhUwkAAgEJAKwCAgkAAwEFAmFTAh8gY291bGRuJ3QgYmUgY2FzdCB0byAoSW50LCBJbnQpBAJmVQgFAmhtAl8xBAJjeAgFAmhtAl8yBAJkWAkBAmRkBAIABQJkaQUCaGcFBHRoaXMEAmR6CAUCZFgCXzEEAmRBCAUCZFgCXzIEAmhuCQBkAgUCZHoFAmRBBAJmSgMJAAACBQJobgAAAwkAAAIFAmZVAAAAAAkAAgECF2JvbnVzIGNhbGN1bGF0aW9uIGVycm9yCQBrAwkAZQIFAmZVBQJobgUBYQUCaG4JAJQKAgUDbmlsCQCVCgMFAmZVBQJjeAUCZkoCY1ABCWdldE5vTGVzcwICaG8CaHAEAmRYCQECZmoBBQJjUAQCZHoIBQJkWAJfMQQCZEEIBQJkWAJfMgQCZEwIBQJkWAJfMwQCZGYIBQJkWAJfNAQCZEIIBQJkWAJfNQMJAGYCBQJobwUCZHoJAAIBCQCsAgIJAKwCAgkArAICAglGYWlsZWQ6ICAJAKQDAQUCZHoCAyA8IAkApAMBBQJobwMJAGYCBQJocAUCZEEJAAIBCQCsAgIJAKwCAgkArAICAghGYWlsZWQ6IAkApAMBBQJkQQIDIDwgCQCkAwEFAmhwBAJlUgkBAmVLAwkAtgIBAAAJALYCAQAACQC2AgEAAAMJAAACBQJlUgUCZVIEAmhxCQD8BwQFAmFRAgRidXJuCQDMCAIFAmRMBQNuaWwJAMwIAgkBD0F0dGFjaGVkUGF5bWVudAIFAmRmBQJkTAUDbmlsAwkAAAIFAmhxBQJocQQCaHIJAQJlUwMJAQEtAQUCZHoJAQEtAQUCZEEAAAQCZ2kIBQJocgJfMQQCZUoIBQJocgJfMgQCZ2oJAQJlVwIFAmVSBQJlSgMJAAACBQJnagUCZ2oJAM4IAgUCZEIFAmdpCQACAQIkU3RyaWN0IHZhbHVlIGlzIG5vdCBlcXVhbCB0byBpdHNlbGYuCQACAQIkU3RyaWN0IHZhbHVlIGlzIG5vdCBlcXVhbCB0byBpdHNlbGYuCQACAQIkU3RyaWN0IHZhbHVlIGlzIG5vdCBlcXVhbCB0byBpdHNlbGYuAmNQAQ11bnN0YWtlQW5kR2V0AQJjdwQCaHMDCQECIT0CCQCQAwEIBQJjUAhwYXltZW50cwAACQACAQINTm8gcG1udHMgZXhwZAYDCQAAAgUCaHMFAmhzBAJodAkBAmJzAAQCZ0QFAmJsBAJodQkBE3ZhbHVlT3JFcnJvck1lc3NhZ2UCCQCmCAEJAJEDAgUCaHQFAUMCCldyIHN0IGFkZHIEAmVSCQECZUsDCQC2AgEAAAkAtgIBAAAJALYCAQAAAwkAAAIFAmVSBQJlUgQCaHYJAPwHBAUCaHUCB3Vuc3Rha2UJAMwIAgkA2AQBBQJnRAkAzAgCBQJjdwUDbmlsBQNuaWwDCQAAAgUCaHYFAmh2BAJkWAkBAmRkBAkA2AQBCAUCY1ANdHJhbnNhY3Rpb25JZAkA2AQBBQJnRAUCY3cIBQJjUAZjYWxsZXIEAmR6CAUCZFgCXzEEAmRBCAUCZFgCXzIEAmRuCQENcGFyc2VJbnRWYWx1ZQEIBQJkWAJfOQQCZEIIBQJkWANfMTAEAmh3AwMJAQJhVgAGCQAAAgUCZG4FAXMJAAIBCQCsAgICCUJsb2NrZWQ6IAkApAMBBQJkbgYDCQAAAgUCaHcFAmh3BAJoeAkA/AcEBQJhUQIEYnVybgkAzAgCBQJjdwUDbmlsCQDMCAIJAQ9BdHRhY2hlZFBheW1lbnQCBQJnRAUCY3cFA25pbAMJAAACBQJoeAUCaHgEAmh5CQECZVMDCQEBLQEFAmR6CQEBLQEFAmRBAAAEAmdpCAUCaHkCXzEEAmVKCAUCaHkCXzIEAmdqCQECZVcCBQJlUgUCZUoDCQAAAgUCZ2oFAmdqCQDOCAIFAmRCBQJnaQkAAgECJFN0cmljdCB2YWx1ZSBpcyBub3QgZXF1YWwgdG8gaXRzZWxmLgkAAgECJFN0cmljdCB2YWx1ZSBpcyBub3QgZXF1YWwgdG8gaXRzZWxmLgkAAgECJFN0cmljdCB2YWx1ZSBpcyBub3QgZXF1YWwgdG8gaXRzZWxmLgkAAgECJFN0cmljdCB2YWx1ZSBpcyBub3QgZXF1YWwgdG8gaXRzZWxmLgkAAgECJFN0cmljdCB2YWx1ZSBpcyBub3QgZXF1YWwgdG8gaXRzZWxmLgkAAgECJFN0cmljdCB2YWx1ZSBpcyBub3QgZXF1YWwgdG8gaXRzZWxmLgJjUAETdW5zdGFrZUFuZEdldE5vTGVzcwMCaHoCaEECaHAEAmhhAwkBAmFWAAYJAAACBQJiawUBcwQCZ1AJAMwIAgMJAQEhAQUCaGEGCQACAQIhZ2V0IG9wZXJhdGlvbiBpcyBibG9ja2VkIGJ5IGFkbWluCQDMCAIDCQAAAgkAkAMBCAUCY1AIcGF5bWVudHMAAAYJAAIBAhhubyBwYXltZW50cyBhcmUgZXhwZWN0ZWQFA25pbAMJAAACBQJnUAUCZ1AEAmVSCQECZUsDCQC2AgEAAAkAtgIBAAAJALYCAQAAAwkAAAIFAmVSBQJlUgQCaHYJAPwHBAUCYnUCB3Vuc3Rha2UJAMwIAgkA2AQBBQJibAkAzAgCBQJoegUDbmlsBQNuaWwDCQAAAgUCaHYFAmh2BAJoQgkBAmRkBAkA2AQBCAUCY1ANdHJhbnNhY3Rpb25JZAkA2AQBBQJibAUCaHoIBQJjUAZjYWxsZXIEAmR6CAUCaEICXzEEAmRBCAUCaEICXzIEAmRCCAUCaEIDXzEwBAJoQwkAzAgCAwkAZwIFAmR6BQJoQQYJAAIBCQC5CQIJAMwIAgIsYW1vdW50IGFzc2V0IGFtb3VudCB0byByZWNlaXZlIGlzIGxlc3MgdGhhbiAJAMwIAgkApAMBBQJoQQUDbmlsAgAJAMwIAgMJAGcCBQJkQQUCaHAGCQACAQkAuQkCCQDMCAICK3ByaWNlIGFzc2V0IGFtb3VudCB0byByZWNlaXZlIGlzIGxlc3MgdGhhbiAJAMwIAgkApAMBBQJocAUDbmlsAgAFA25pbAMJAAACBQJoQwUCaEMEAmhxCQD8BwQFAmFRAgRidXJuCQDMCAIFAmh6BQNuaWwJAMwIAgkBD0F0dGFjaGVkUGF5bWVudAIFAmJsBQJoegUDbmlsAwkAAAIFAmhxBQJocQQCaEQJAQJlUwMJAQEtAQUCZHoJAQEtAQUCZEEAAAQCZ2kIBQJoRAJfMQQCZUoIBQJoRAJfMgQCZ2oJAQJlVwIFAmVSBQJlSgMJAAACBQJnagUCZ2oJAM4IAgUCZEIFAmdpCQACAQIkU3RyaWN0IHZhbHVlIGlzIG5vdCBlcXVhbCB0byBpdHNlbGYuCQACAQIkU3RyaWN0IHZhbHVlIGlzIG5vdCBlcXVhbCB0byBpdHNlbGYuCQACAQIkU3RyaWN0IHZhbHVlIGlzIG5vdCBlcXVhbCB0byBpdHNlbGYuCQACAQIkU3RyaWN0IHZhbHVlIGlzIG5vdCBlcXVhbCB0byBpdHNlbGYuCQACAQIkU3RyaWN0IHZhbHVlIGlzIG5vdCBlcXVhbCB0byBpdHNlbGYuCQACAQIkU3RyaWN0IHZhbHVlIGlzIG5vdCBlcXVhbCB0byBpdHNlbGYuAmNQARV1bnN0YWtlQW5kR2V0T25lVGtuVjIDAmh6AmZMAmZNBAJnTgoAAmFTCQD8BwQFAmFRAihpc1Bvb2xPbmVUb2tlbk9wZXJhdGlvbnNEaXNhYmxlZFJFQURPTkxZCQDMCAIJAKUIAQUEdGhpcwUDbmlsBQNuaWwDCQABAgUCYVMCB0Jvb2xlYW4FAmFTCQACAQkArAICCQADAQUCYVMCHCBjb3VsZG4ndCBiZSBjYXN0IHRvIEJvb2xlYW4EAmhhAwMJAQJhVgAGCQAAAgUCYmsFAXMGBQJnTgQCZ1AJAMwIAgMDCQEBIQEFAmhhBgkBAmdvAQUCY1AGCQECYU4BAiFnZXQgb3BlcmF0aW9uIGlzIGJsb2NrZWQgYnkgYWRtaW4JAMwIAgMJAAACCQCQAwEIBQJjUAhwYXltZW50cwAABgkBAmFOAQIYbm8gcGF5bWVudHMgYXJlIGV4cGVjdGVkBQNuaWwDCQAAAgUCZ1AFAmdQBAJodAkBAmJzAAQCZ0QFAmJsBAJodQkBE3ZhbHVlT3JFcnJvck1lc3NhZ2UCCQCmCAEJAJEDAgUCaHQFAUMCCldyIHN0IGFkZHIEAmh2CQD8BwQFAmh1Agd1bnN0YWtlCQDMCAIJANgEAQUCZ0QJAMwIAgUCaHoFA25pbAUDbmlsAwkAAAIFAmh2BQJodgQCaEUJAQJmSwYFAmZMBQJmTQkAzAgCCQEPQXR0YWNoZWRQYXltZW50AgUCZ0QFAmh6BQNuaWwIBQJjUAZjYWxsZXIIBQJjUAxvcmlnaW5DYWxsZXIIBQJjUA10cmFuc2FjdGlvbklkBAJkQggFAmhFAl8xBAJmVggFAmhFAl8yCQCUCgIFAmRCBQJmVgkAAgECJFN0cmljdCB2YWx1ZSBpcyBub3QgZXF1YWwgdG8gaXRzZWxmLgkAAgECJFN0cmljdCB2YWx1ZSBpcyBub3QgZXF1YWwgdG8gaXRzZWxmLgJjUAEccHV0T25lVGtuVjJXaXRoQm9udXNSRUFET05MWQICaEYCaEcEAmhICQECZnAFBQJoRgUCaEcCAAIABgQCZkUIBQJoSAJfMQQCZEIIBQJoSAJfMgQCY3gIBQJoSAJfMwQCZkoIBQJoSAJfNAkAlAoCBQNuaWwJAJUKAwUCZkUFAmN4BQJmSgJjUAEhcHV0T25lVGtuVjJXaXRob3V0VGFrZUZlZVJFQURPTkxZAgJoRgJoRwQCaEkJAQJmcAUFAmhGBQJoRwIAAgAHBAJmRQgFAmhJAl8xBAJkQggFAmhJAl8yBAJjeAgFAmhJAl8zBAJmSggFAmhJAl80CQCUCgIFA25pbAkAlQoDBQJmRQUCY3gFAmZKAmNQAQhhY3RpdmF0ZQICaEoCaEsDCQECIT0CCQClCAEIBQJjUAZjYWxsZXIJAKUIAQUCYVEJAAIBAgZkZW5pZWQJAJQKAgkAzAgCCQELU3RyaW5nRW50cnkCCQECYWoABQJoSgkAzAgCCQELU3RyaW5nRW50cnkCCQECYWsABQJoSwUDbmlsAgdzdWNjZXNzAmNQAQRzZXRTAgJoTAJodwMJAQIhPQIJAKUIAQgFAmNQBmNhbGxlcgkBAmFKAgUEdGhpcwkBAmFtAAUCZ24JAMwIAgkBC1N0cmluZ0VudHJ5AgUCaEwFAmh3BQNuaWwCY1ABBHNldEkCAmhMAmh3AwkBAiE9AgkApQgBCAUCY1AGY2FsbGVyCQECYUoCBQR0aGlzCQECYW0ABQJnbgkAzAgCCQEMSW50ZWdlckVudHJ5AgUCaEwFAmh3BQNuaWwCY1ABHGdldFBvb2xDb25maWdXcmFwcGVyUkVBRE9OTFkACQCUCgIFA25pbAkBAmFZAAJjUAEcZ2V0QWNjQmFsYW5jZVdyYXBwZXJSRUFET05MWQECYk8JAJQKAgUDbmlsCQECYk4BBQJiTwJjUAEZY2FsY1ByaWNlc1dyYXBwZXJSRUFET05MWQMCY2gCY2kCY20EAmhNCQECY2wDBQJjaAUCY2kFAmNtCQCUCgIFA25pbAkAzAgCCQCmAwEJAJEDAgUCaE0AAAkAzAgCCQCmAwEJAJEDAgUCaE0AAQkAzAgCCQCmAwEJAJEDAgUCaE0AAgUDbmlsAmNQARZmcm9tWDE4V3JhcHBlclJFQURPTkxZAgFNAmhOCQCUCgIFA25pbAkBAUwCCQCnAwEFAU0FAmhOAmNQARR0b1gxOFdyYXBwZXJSRUFET05MWQIBSQFKCQCUCgIFA25pbAkApgMBCQEBSAIFAUkFAUoCY1ABHmNhbGNQcmljZUJpZ0ludFdyYXBwZXJSRUFET05MWQICYlECYlIJAJQKAgUDbmlsCQCmAwEJAQJiUAIJAKcDAQUCYlEJAKcDAQUCYlICY1ABI2VzdGltYXRlUHV0T3BlcmF0aW9uV3JhcHBlclJFQURPTkxZCQJkZQJiVwJkRAJkRQJkRgJkRwJoTwJkSAJkSQkAlAoCBQNuaWwJAQJkQw0FAmRlBQJiVwUCZEQFAmRFBQJkRgUCZEcFAmhPBQJkSAUCZEkGBwAAAgACY1ABI2VzdGltYXRlR2V0T3BlcmF0aW9uV3JhcHBlclJFQURPTkxZBAJkZQJoUAJkZwJoTwQCZFgJAQJkZAQFAmRlBQJoUAUCZGcJARFAZXh0ck5hdGl2ZSgxMDYyKQEFAmhPCQCUCgIFA25pbAkAnAoKCAUCZFgCXzEIBQJkWAJfMggFAmRYAl8zCAUCZFgCXzQIBQJkWAJfNQgFAmRYAl82CAUCZFgCXzcJAKYDAQgFAmRYAl84CAUCZFgCXzkIBQJkWANfMTABAmhRAQJoUgAEAmhTBAJnbAkBAmdrAAMJAAECBQJnbAIKQnl0ZVZlY3RvcgQCZ3AFAmdsBQJncAMJAAECBQJnbAIEVW5pdAgFAmhRD3NlbmRlclB1YmxpY0tleQkAAgECC01hdGNoIGVycm9yBAJnbAUCaFEDCQABAgUCZ2wCBU9yZGVyBAJlWgUCZ2wEAmhUCQECYVcABAJoVQkBAmVZAQUCZVoEAmFGCAUCaFUCXzEEAmFHCAUCaFUCXzIEAmFICQD0AwMIBQJlWglib2R5Qnl0ZXMJAJEDAggFAmVaBnByb29mcwAACAUCZVoPc2VuZGVyUHVibGljS2V5BAJhSQkA9AMDCAUCZVoJYm9keUJ5dGVzCQCRAwIIBQJlWgZwcm9vZnMAAQUCaFQDAwMFAmFGBQJhSAcFAmFJBwYJAQJhRQQFAmFGBQJhRwUCYUgFAmFJAwkAAQIFAmdsAhRTZXRTY3JpcHRUcmFuc2FjdGlvbgQCY0MFAmdsAwkA9AMDCAUCaFEJYm9keUJ5dGVzCQCRAwIIBQJoUQZwcm9vZnMAAAUCaFMGBAJoVgkA9gMBCQEFdmFsdWUBCAUCY0MGc2NyaXB0BAJoVwkA2wQBCQEFdmFsdWUBCQCdCAIFAmFRCQECYUMABAJoWAkA8QcBBQR0aGlzAwkAAAIFAmhXBQJoVgkBAiE9AgUCaFgFAmhWBwkA9AMDCAUCaFEJYm9keUJ5dGVzCQCRAwIIBQJoUQZwcm9vZnMAAAUCaFNP7bKc", "chainId": 84, "height": 2413226, "applicationStatus": "succeeded", "spentComplexity": 0 } View: original | compacted Prev: 7BhDE2surYHbLxh547JLzvT966Zb4mQCRu7aQ8DRXpnp Next: 77BT9vVreeZ8VNhTRJ15Ck1Y3AHBpZa6CkVd3qZoaJkH Diff:
OldNewDifferences
166166 func aD () = "%s__feeCollectorAddress"
167167
168168
169-func aE (aF,aG,aH) = throw(((((("Failed: ordValid=" + toString(aF)) + " sndrValid=") + toString(aG)) + " mtchrValid=") + toString(aH)))
169+func aE (aF,aG,aH,aI) = throw((((((((("order validation failed: orderValid=" + toString(aF)) + " (") + aG) + ")") + " senderValid=") + toString(aH)) + " matcherValid=") + toString(aI)))
170170
171171
172-func aI (aJ,aK) = valueOrErrorMessage(getString(aJ, aK), makeString(["mandatory ", toString(aJ), ".", aK, " not defined"], ""))
172+func aJ (aK,aL) = valueOrErrorMessage(getString(aK, aL), makeString(["mandatory ", toString(aK), ".", aL, " not defined"], ""))
173173
174174
175-func aL (aJ,aK) = valueOrErrorMessage(getInteger(aJ, aK), makeString(["mandatory ", toString(aJ), ".", aK, " not defined"], ""))
175+func aM (aK,aL) = valueOrErrorMessage(getInteger(aK, aL), makeString(["mandatory ", toString(aK), ".", aL, " not defined"], ""))
176176
177177
178-func aM (aN) = throw(makeString(["lp_stable.ride:", aN], " "))
178+func aN (aO) = throw(makeString(["lp_stable.ride:", aO], " "))
179179
180180
181-func aO (aN) = makeString(["lp_stable.ride:", aN], " ")
181+func aP (aO) = makeString(["lp_stable.ride:", aO], " ")
182182
183183
184-let aP = addressFromStringValue(aI(this, Y()))
184+let aQ = addressFromStringValue(aJ(this, Y()))
185185
186-let aQ = {
187- let aR = invoke(aP, "getInFeeREADONLY", [toString(this)], nil)
188- if ($isInstanceOf(aR, "Int"))
189- then aR
190- else throw(($getType(aR) + " couldn't be cast to Int"))
186+let aR = {
187+ let aS = invoke(aQ, "getInFeeREADONLY", [toString(this)], nil)
188+ if ($isInstanceOf(aS, "Int"))
189+ then aS
190+ else throw(($getType(aS) + " couldn't be cast to Int"))
191191 }
192192
193-let aS = {
194- let aR = invoke(aP, "getOutFeeREADONLY", [toString(this)], nil)
195- if ($isInstanceOf(aR, "Int"))
196- then aR
197- else throw(($getType(aR) + " couldn't be cast to Int"))
193+let aT = {
194+ let aS = invoke(aQ, "getOutFeeREADONLY", [toString(this)], nil)
195+ if ($isInstanceOf(aS, "Int"))
196+ then aS
197+ else throw(($getType(aS) + " couldn't be cast to Int"))
198198 }
199199
200-let aT = aI(this, al())
200+let aU = aJ(this, al())
201201
202-func aU () = valueOrElse(getBoolean(aP, aB()), false)
202+func aV () = valueOrElse(getBoolean(aQ, aB()), false)
203203
204204
205-func aV () = fromBase58String(aI(aP, av()))
205+func aW () = fromBase58String(aJ(aQ, av()))
206206
207207
208-let aW = addressFromStringValue(aI(aP, aD()))
208+let aX = addressFromStringValue(aJ(aQ, aD()))
209209
210-func aX () = {
211- let aY = aI(this, aj())
212- let aZ = aI(this, ak())
213- let ba = aL(aP, az(aZ))
214- let ax = aL(aP, az(aY))
215- split(aI(aP, aw(toString(ax), toString(ba))), n)
210+func aY () = {
211+ let aZ = aJ(this, aj())
212+ let ba = aJ(this, ak())
213+ let bb = aM(aQ, az(ba))
214+ let ax = aM(aQ, az(aZ))
215+ split(aJ(aQ, aw(toString(ax), toString(bb))), n)
216216 }
217217
218218
219-func bb (bc) = if ((bc == k))
219+func bc (bd) = if ((bd == k))
220220 then unit
221- else fromBase58String(bc)
221+ else fromBase58String(bd)
222222
223223
224-func bd (bc) = if ((bc == unit))
224+func be (bd) = if ((bd == unit))
225225 then k
226- else toBase58String(value(bc))
226+ else toBase58String(value(bd))
227227
228228
229-func be (bf) = $Tuple9(addressFromStringValue(bf[t]), parseIntValue(bf[u]), fromBase58String(bf[v]), bb(bf[w]), bb(bf[x]), parseIntValue(bf[y]), parseIntValue(bf[z]), fromBase58String(bf[A]), fromBase58String(bf[B]))
229+func bf (bg) = $Tuple9(addressFromStringValue(bg[t]), parseIntValue(bg[u]), fromBase58String(bg[v]), bc(bg[w]), bc(bg[x]), parseIntValue(bg[y]), parseIntValue(bg[z]), fromBase58String(bg[A]), fromBase58String(bg[B]))
230230
231231
232-let bg = be(aX())
232+let bh = bf(aY())
233233
234-let bh = bg
234+let bi = bh
235235
236-let bi = bh._1
236+let bj = bi._1
237237
238-let bj = bh._2
238+let bk = bi._2
239239
240-let bk = bh._3
240+let bl = bi._3
241241
242-let bl = bh._4
242+let bm = bi._4
243243
244-let bm = bh._5
244+let bn = bi._5
245245
246-let bn = bh._6
246+let bo = bi._6
247247
248-let bo = bh._7
248+let bp = bi._7
249249
250-let bp = bh._8
250+let bq = bi._8
251251
252-let bq = bh._9
252+let br = bi._9
253253
254-func br () = split(aI(aP, au()), n)
254+func bs () = split(aJ(aQ, au()), n)
255255
256256
257-let bs = br()
257+let bt = bs()
258258
259-let bt = valueOrErrorMessage(addressFromString(bs[C]), "Invalid staking contract address")
259+let bu = valueOrErrorMessage(addressFromString(bt[C]), "Invalid staking contract address")
260260
261-let bu = valueOrErrorMessage(addressFromString(bs[E]), "Invalid slipage contract address")
261+let bv = valueOrErrorMessage(addressFromString(bt[E]), "Invalid slipage contract address")
262262
263-let bv = valueOrErrorMessage(addressFromString(bs[F]), "Invalid gwx contract address")
263+let bw = valueOrErrorMessage(addressFromString(bt[F]), "Invalid gwx contract address")
264264
265-let bw = valueOrErrorMessage(addressFromString(bs[D]), "Invalid gwx contract address")
265+let bx = valueOrErrorMessage(addressFromString(bt[D]), "Invalid gwx contract address")
266266
267-func bx (by,bz,bA,bB,bC,bD,bE,bF,bG,bH) = makeString(["%d%d%d%d%d%d%d%d%d%d", toString(by), toString(bz), toString(bA), toString(bB), toString(bC), toString(bD), toString(bE), toString(bF), toString(bG), toString(bH)], n)
267+func by (bz,bA,bB,bC,bD,bE,bF,bG,bH,bI) = makeString(["%d%d%d%d%d%d%d%d%d%d", toString(bz), toString(bA), toString(bB), toString(bC), toString(bD), toString(bE), toString(bF), toString(bG), toString(bH), toString(bI)], n)
268268
269269
270-func bI (bJ,bK,bL,bB,bE,bF) = makeString(["%d%d%d%d%d%d", toString(bJ), toString(bK), toString(bL), toString(bB), toString(bE), toString(bF)], n)
270+func bJ (bK,bL,bM,bC,bF,bG) = makeString(["%d%d%d%d%d%d", toString(bK), toString(bL), toString(bM), toString(bC), toString(bF), toString(bG)], n)
271271
272272
273-func bM (bN) = if ((bN == "WAVES"))
273+func bN (bO) = if ((bO == "WAVES"))
274274 then wavesBalance(this).available
275- else assetBalance(this, fromBase58String(bN))
275+ else assetBalance(this, fromBase58String(bO))
276276
277277
278-func bO (bP,bQ) = fraction(bP, c, bQ)
278+func bP (bQ,bR) = fraction(bQ, c, bR)
279279
280280
281-func bR (bP,bQ,P) = fraction(bP, c, bQ, P)
281+func bS (bQ,bR,P) = fraction(bQ, c, bR, P)
282282
283283
284-func bS (bT,bU,bV) = {
285- let bW = fraction((bT - bU), b, bU)
286- let bX = ((bV - W(bW)) > d)
287- if (!(bX))
288- then throw(("Big slpg: " + toString(bW)))
289- else $Tuple2(bX, min([bT, bU]))
284+func bT (bU,bV,bW) = {
285+ let bX = fraction((bU - bV), b, bV)
286+ let bY = ((bW - W(bX)) > d)
287+ if (!(bY))
288+ then throw(("Big slpg: " + toString(bX)))
289+ else $Tuple2(bY, min([bU, bV]))
290290 }
291291
292292
293-func bY (bZ,ca,cb) = {
294- let bW = fraction(ca, b, bZ)
295- let cc = (cb > bW)
296- if (if (cc)
293+func bZ (ca,cb,cc) = {
294+ let bX = fraction(cb, b, ca)
295+ let cd = (cc > bX)
296+ if (if (cd)
297297 then true
298- else (ca > bZ))
299- then throw(((((((toString(ca) + " ") + toString(bZ)) + " ") + toString(bW)) + " ") + toString(cb)))
300- else cc
298+ else (cb > ca))
299+ then throw(((((((toString(cb) + " ") + toString(ca)) + " ") + toString(bX)) + " ") + toString(cc)))
300+ else cd
301301 }
302302
303303
304-func cd (ce,cf,cg,ch) = {
305- let ci = H(cg, ce)
304+func ce (cf,cg,ch,ci) = {
306305 let cj = H(ch, cf)
307- bO(cj, ci)
306+ let ck = H(ci, cg)
307+ bP(ck, cj)
308308 }
309309
310310
311-func ck (cg,ch,cl) = {
312- let cm = bn
311+func cl (ch,ci,cm) = {
313312 let cn = bo
314- let co = cd(cm, cn, cg, ch)
315- let bQ = H(cg, cm)
316- let bP = H(ch, cn)
317- let cp = H(cl, a)
318- let cq = bO(bQ, cp)
319- let cr = bO(bP, cp)
320-[co, cq, cr]
313+ let co = bp
314+ let cp = ce(cn, co, ch, ci)
315+ let bR = H(ch, cn)
316+ let bQ = H(ci, co)
317+ let cq = H(cm, a)
318+ let cr = bP(bR, cq)
319+ let cs = bP(bQ, cq)
320+[cp, cr, cs]
321321 }
322322
323323
324-func cs (cg,ch,cl) = {
325- let ct = ck(cg, ch, cl)
326-[L(ct[0], a), L(ct[1], a), L(ct[2], a)]
324+func ct (ch,ci,cm) = {
325+ let cu = cl(ch, ci, cm)
326+[L(cu[0], a), L(cu[1], a), L(cu[2], a)]
327327 }
328328
329329
330-func cu (cv,ao) = {
331- let cw = if ((ao == 0))
330+func cv (cw,ao) = {
331+ let cx = if ((ao == 0))
332332 then 0
333- else fraction(cv, ao, a)
334- $Tuple2((cv - cw), cw)
333+ else fraction(cw, ao, a)
334+ $Tuple2((cw - cx), cx)
335335 }
336336
337337
338-func cx (cy) = {
339- let cz = cy[0]
340- let cA = cy[1]
341- let cB = (cz + cA)
342- if ((cB == e))
338+func cy (cz) = {
339+ let cA = cz[0]
340+ let cB = cz[1]
341+ let cC = (cA + cB)
342+ if ((cC == e))
343343 then e
344344 else {
345- let cC = parseIntValue(aT)
346- let cD = (cC * 2)
347- let ct = fraction(cz, cA, f)
348- let cE = fraction(ct, i, f)
349- let cF = fraction(toBigInt(cD), cB, f)
350- let cG = toBigInt((cD - 1))
351- func cH (cI) = {
352- let cJ = fraction(cI, cI, f)
353- let cK = fraction(cJ, cI, f)
354- let cL = fraction(cK, f, cE)
355- fraction((cF + fraction(cL, g, f)), cI, (fraction(cG, cI, f) + fraction(h, cL, f)))
345+ let cD = parseIntValue(aU)
346+ let cE = (cD * 2)
347+ let cu = fraction(cA, cB, f)
348+ let cF = fraction(cu, i, f)
349+ let cG = fraction(toBigInt(cE), cC, f)
350+ let cH = toBigInt((cE - 1))
351+ func cI (cJ) = {
352+ let cK = fraction(cJ, cJ, f)
353+ let cL = fraction(cK, cJ, f)
354+ let cM = fraction(cL, f, cF)
355+ fraction((cG + fraction(cM, g, f)), cJ, (fraction(cH, cJ, f) + fraction(h, cM, f)))
356356 }
357357
358- func cM (cN,cO) = if (cN._2)
359- then cN
358+ func cN (cO,cP) = if (cO._2)
359+ then cO
360360 else {
361- let cI = cN._1
362- let cP = cH(cI)
363- let cQ = (cP - value(cI))
364- let cR = if ((e > cQ))
365- then -(cQ)
366- else cQ
367- if ((f >= cR))
368- then $Tuple2(cP, true)
369- else $Tuple2(cP, false)
361+ let cJ = cO._1
362+ let cQ = cI(cJ)
363+ let cR = (cQ - value(cJ))
364+ let cS = if ((e > cR))
365+ then -(cR)
366+ else cR
367+ if ((f >= cS))
368+ then $Tuple2(cQ, true)
369+ else $Tuple2(cQ, false)
370370 }
371371
372- let cS = [0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14]
373- let cT = {
374- let cU = cS
375- let cV = size(cU)
376- let cW = $Tuple2(cB, false)
377- func cX (cY,cZ) = if ((cZ >= cV))
378- then cY
379- else cM(cY, cU[cZ])
372+ let cT = [0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14]
373+ let cU = {
374+ let cV = cT
375+ let cW = size(cV)
376+ let cX = $Tuple2(cC, false)
377+ func cY (cZ,da) = if ((da >= cW))
378+ then cZ
379+ else cN(cZ, cV[da])
380380
381- func da (cY,cZ) = if ((cZ >= cV))
382- then cY
381+ func db (cZ,da) = if ((da >= cW))
382+ then cZ
383383 else throw("List size exceeds 15")
384384
385- da(cX(cX(cX(cX(cX(cX(cX(cX(cX(cX(cX(cX(cX(cX(cX(cW, 0), 1), 2), 3), 4), 5), 6), 7), 8), 9), 10), 11), 12), 13), 14), 15)
385+ db(cY(cY(cY(cY(cY(cY(cY(cY(cY(cY(cY(cY(cY(cY(cY(cX, 0), 1), 2), 3), 4), 5), 6), 7), 8), 9), 10), 11), 12), 13), 14), 15)
386386 }
387- let cI = cT._1
388- let db = cT._2
389- if (db)
390- then cI
391- else throw(("D calculation error, D = " + toString(cI)))
387+ let cJ = cU._1
388+ let dc = cU._2
389+ if (dc)
390+ then cJ
391+ else throw(("D calculation error, D = " + toString(cJ)))
392392 }
393393 }
394394
395395
396-func dc (dd,de,df,dg) = {
397- let dh = bk
398- let di = toBase58String(value(bl))
396+func dd (de,df,dg,dh) = {
397+ let di = bl
399398 let dj = toBase58String(value(bm))
400- let dk = bn
399+ let dk = toBase58String(value(bn))
401400 let dl = bo
402- let dm = toString(bj)
403- let dn = valueOrErrorMessage(assetInfo(dh), "Wrong LP id").quantity
404- if ((toBase58String(dh) != de))
401+ let dm = bp
402+ let dn = toString(bk)
403+ let do = valueOrErrorMessage(assetInfo(di), "Wrong LP id").quantity
404+ if ((toBase58String(di) != df))
405405 then throw("Wrong pmt asset")
406406 else {
407- let do = bM(di)
408- let dp = H(do, dk)
409- let dq = bM(dj)
410- let dr = H(dq, dl)
411- let ds = bO(dr, dp)
412- let dt = L(ds, a)
413- let du = H(df, a)
414- let dv = H(dn, a)
415- let dw = fraction(dp, du, dv)
416- let dx = fraction(dr, du, dv)
417- let dy = O(dw, dk, FLOOR)
407+ let dp = bN(dj)
408+ let dq = H(dp, dl)
409+ let dr = bN(dk)
410+ let ds = H(dr, dm)
411+ let dt = bP(ds, dq)
412+ let du = L(dt, a)
413+ let dv = H(dg, a)
414+ let dw = H(do, a)
415+ let dx = fraction(dq, dv, dw)
416+ let dy = fraction(ds, dv, dw)
418417 let dz = O(dx, dl, FLOOR)
419- let dA = if ((dd == ""))
418+ let dA = O(dy, dm, FLOOR)
419+ let dB = if ((de == ""))
420420 then nil
421- else [ScriptTransfer(dg, dy, if ((di == "WAVES"))
421+ else [ScriptTransfer(dh, dz, if ((dj == "WAVES"))
422422 then unit
423- else fromBase58String(di)), ScriptTransfer(dg, dz, if ((dj == "WAVES"))
423+ else fromBase58String(dj)), ScriptTransfer(dh, dA, if ((dk == "WAVES"))
424424 then unit
425- else fromBase58String(dj)), StringEntry(ai(toString(dg), dd), bI(dy, dz, df, dt, height, lastBlock.timestamp)), IntegerEntry(ab(), dt), IntegerEntry(ac(height, lastBlock.timestamp), dt)]
426- $Tuple10(dy, dz, di, dj, do, dq, dn, ds, dm, dA)
425+ else fromBase58String(dk)), StringEntry(ai(toString(dh), de), bJ(dz, dA, dg, du, height, lastBlock.timestamp)), IntegerEntry(ab(), du), IntegerEntry(ac(height, lastBlock.timestamp), du)]
426+ $Tuple10(dz, dA, dj, dk, dp, dr, do, dt, dn, dB)
427427 }
428428 }
429429
430430
431-func dB (dd,bV,dC,dD,dE,dF,dg,dG,dH,dI,dJ,dK,dL) = {
432- let dh = bk
433- let dM = toBase58String(value(bl))
431+func dC (de,bW,dD,dE,dF,dG,dh,dH,dI,dJ,dK,dL,dM) = {
432+ let di = bl
434433 let dN = toBase58String(value(bm))
435- let dO = bp
434+ let dO = toBase58String(value(bn))
436435 let dP = bq
437- let dQ = bn
436+ let dQ = br
438437 let dR = bo
439- let dm = toString(bj)
440- let dS = valueOrErrorMessage(assetInfo(dh), "Wr lp as").quantity
441- let do = if (dG)
442- then bM(dM)
443- else if (if (dI)
444- then (dL == dM)
438+ let dS = bp
439+ let dn = toString(bk)
440+ let dT = valueOrErrorMessage(assetInfo(di), "Wr lp as").quantity
441+ let dp = if (dH)
442+ then bN(dN)
443+ else if (if (dJ)
444+ then (dM == dN)
445445 else false)
446- then (bM(dM) - dK)
447- else if (dI)
448- then bM(dM)
449- else (bM(dM) - dC)
450- let dq = if (dG)
451- then bM(dN)
452- else if (if (dI)
453- then (dL == dN)
446+ then (bN(dN) - dL)
447+ else if (dJ)
448+ then bN(dN)
449+ else (bN(dN) - dD)
450+ let dr = if (dH)
451+ then bN(dO)
452+ else if (if (dJ)
453+ then (dM == dO)
454454 else false)
455- then (bM(dN) - dK)
456- else if (dI)
457- then bM(dN)
458- else (bM(dN) - dE)
459- let dT = H(dC, dQ)
460- let dU = H(dE, dR)
461- let dV = bO(dU, dT)
462- let dp = H(do, dQ)
463- let dr = H(dq, dR)
464- let ca = cx([dp, dr])
465- let dW = if ((dS == 0))
455+ then (bN(dO) - dL)
456+ else if (dJ)
457+ then bN(dO)
458+ else (bN(dO) - dF)
459+ let dU = H(dD, dR)
460+ let dV = H(dF, dS)
461+ let dW = bP(dV, dU)
462+ let dq = H(dp, dR)
463+ let ds = H(dr, dS)
464+ let cb = cy([dq, ds])
465+ let dX = if ((dT == 0))
466466 then {
467- let bZ = cx([(dp + dT), (dr + dU)])
468- let dX = if ((bZ > ca))
467+ let ca = cy([(dq + dU), (ds + dV)])
468+ let dY = if ((ca > cb))
469469 then true
470470 else throw("D1 should be greater than D0")
471- if ((dX == dX))
471+ if ((dY == dY))
472472 then {
473- let ds = d
474- let dY = d
475- let cp = bZ
476- $Tuple5(L(cp, a), L(dT, dQ), L(dU, dR), bO((dr + dU), (dp + dT)), dY)
473+ let dt = d
474+ let dZ = d
475+ let cq = ca
476+ $Tuple5(L(cq, a), L(dU, dR), L(dV, dS), bP((ds + dV), (dq + dU)), dZ)
477477 }
478478 else throw("Strict value is not equal to itself.")
479479 }
480480 else {
481- let ds = bO(dr, dp)
482- let dZ = fraction(W((ds - dV)), c, ds)
483- let dY = H(bV, a)
484- if (if (if (dJ)
485- then (ds != d)
481+ let dt = bP(ds, dq)
482+ let ea = fraction(W((dt - dW)), c, dt)
483+ let dZ = H(bW, a)
484+ if (if (if (dK)
485+ then (dt != d)
486486 else false)
487- then (dZ > dY)
487+ then (ea > dZ)
488488 else false)
489- then throw(((("Price slippage " + toString(dZ)) + " > ") + toString(dY)))
489+ then throw(((("Price slippage " + toString(ea)) + " > ") + toString(dZ)))
490490 else {
491- let ea = H(dS, a)
492- let eb = fraction(dT, bR(dr, dp, CEILING), c, CEILING)
493- let ec = fraction(dU, c, bR(dr, dp, FLOOR), CEILING)
494- let ed = if ((eb > dU))
495- then $Tuple2(ec, dU)
496- else $Tuple2(dT, eb)
497- let ee = ed._1
498- let ef = ed._2
499- let bZ = cx([(dp + ee), (dr + ef)])
500- let dX = if ((bZ > ca))
491+ let eb = H(dT, a)
492+ let ec = fraction(dU, bS(ds, dq, CEILING), c, CEILING)
493+ let ed = fraction(dV, c, bS(ds, dq, FLOOR), CEILING)
494+ let ee = if ((ec > dV))
495+ then $Tuple2(ed, dV)
496+ else $Tuple2(dU, ec)
497+ let ef = ee._1
498+ let eg = ee._2
499+ let ca = cy([(dq + ef), (ds + eg)])
500+ let dY = if ((ca > cb))
501501 then true
502502 else throw("D1 should be greater than D0")
503- if ((dX == dX))
503+ if ((dY == dY))
504504 then {
505- let cp = fraction(ea, (bZ - ca), ca)
506- $Tuple5(O(cp, a, FLOOR), O(ee, dQ, CEILING), O(ef, dR, CEILING), ds, dY)
505+ let cq = fraction(eb, (ca - cb), cb)
506+ $Tuple5(O(cq, a, FLOOR), O(ef, dR, CEILING), O(eg, dS, CEILING), dt, dZ)
507507 }
508508 else throw("Strict value is not equal to itself.")
509509 }
510510 }
511- let eg = dW._1
512- let eh = dW._2
513- let ei = dW._3
514- let dt = L(dW._4, a)
515- let ej = L(dW._5, a)
516- if ((0 >= eg))
511+ let eh = dX._1
512+ let ei = dX._2
513+ let ej = dX._3
514+ let du = L(dX._4, a)
515+ let ek = L(dX._5, a)
516+ if ((0 >= eh))
517517 then throw("LP <= 0")
518518 else {
519- let ek = if (!(dH))
519+ let el = if (!(dI))
520520 then 0
521- else eg
522- let el = (dC - eh)
523- let em = (dE - ei)
524- let en = if (if (dI)
525- then (dL == dM)
521+ else eh
522+ let em = (dD - ei)
523+ let en = (dF - ej)
524+ let eo = if (if (dJ)
525+ then (dM == dN)
526526 else false)
527- then $Tuple2(dK, 0)
528- else if (if (dI)
529- then (dL == dN)
527+ then $Tuple2(dL, 0)
528+ else if (if (dJ)
529+ then (dM == dO)
530530 else false)
531- then $Tuple2(0, dK)
532- else $Tuple2(eh, ei)
533- let eo = en._1
534- let ep = en._2
535- let eq = [IntegerEntry(ab(), dt), IntegerEntry(ac(height, lastBlock.timestamp), dt), StringEntry(af(dg, dd), bx(eo, ep, ek, dt, bV, ej, height, lastBlock.timestamp, el, em))]
536- $Tuple13(eg, ek, dt, do, dq, dS, dh, dm, eq, el, em, dD, dF)
531+ then $Tuple2(0, dL)
532+ else $Tuple2(ei, ej)
533+ let ep = eo._1
534+ let eq = eo._2
535+ let er = [IntegerEntry(ab(), du), IntegerEntry(ac(height, lastBlock.timestamp), du), StringEntry(af(dh, de), by(ep, eq, el, du, bW, ek, height, lastBlock.timestamp, em, en))]
536+ $Tuple13(eh, el, du, dp, dr, dT, di, dn, er, em, en, dE, dG)
537537 }
538538 }
539539
540540
541-func er (cy,cO,es) = {
542- let et = g
543- let eu = cy[if ((cO == 0))
541+func es (cz,cP,et) = {
542+ let eu = g
543+ let ev = cz[if ((cP == 0))
544544 then 1
545545 else 0]
546- let ev = parseBigIntValue(l)
547- let cC = (parseBigIntValue(aT) * ev)
548- let cB = eu
549- let cD = (cC * et)
550- let ew = (((((es * es) / (eu * et)) * es) * ev) / (cD * et))
551- let ex = ((cB + ((es * ev) / cD)) - es)
552- func cM (cN,ey) = {
553- let ez = cN
554- let eA = ez._1
555- let db = ez._2
556- if ((db != unit))
557- then cN
546+ let ew = parseBigIntValue(l)
547+ let cD = (parseBigIntValue(aU) * ew)
548+ let cC = ev
549+ let cE = (cD * eu)
550+ let ex = (((((et * et) / (ev * eu)) * et) * ew) / (cE * eu))
551+ let ey = ((cC + ((et * ew) / cE)) - et)
552+ func cN (cO,ez) = {
553+ let eA = cO
554+ let eB = eA._1
555+ let dc = eA._2
556+ if ((dc != unit))
557+ then cO
558558 else {
559- let eB = (((eA * eA) + ew) / ((g * eA) + ex))
560- let eC = X((eB - value(eA)))
561- if ((f >= eC))
562- then $Tuple2(eB, ey)
563- else $Tuple2(eB, unit)
559+ let eC = (((eB * eB) + ex) / ((g * eB) + ey))
560+ let eD = X((eC - value(eB)))
561+ if ((f >= eD))
562+ then $Tuple2(eC, ez)
563+ else $Tuple2(eC, unit)
564564 }
565565 }
566566
567- let cS = [0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14]
568- let eD = {
569- let cU = cS
570- let cV = size(cU)
571- let cW = $Tuple2(es, unit)
572- func cX (cY,cZ) = if ((cZ >= cV))
573- then cY
574- else cM(cY, cU[cZ])
567+ let cT = [0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14]
568+ let eE = {
569+ let cV = cT
570+ let cW = size(cV)
571+ let cX = $Tuple2(et, unit)
572+ func cY (cZ,da) = if ((da >= cW))
573+ then cZ
574+ else cN(cZ, cV[da])
575575
576- func da (cY,cZ) = if ((cZ >= cV))
577- then cY
576+ func db (cZ,da) = if ((da >= cW))
577+ then cZ
578578 else throw("List size exceeds 15")
579579
580- da(cX(cX(cX(cX(cX(cX(cX(cX(cX(cX(cX(cX(cX(cX(cX(cW, 0), 1), 2), 3), 4), 5), 6), 7), 8), 9), 10), 11), 12), 13), 14), 15)
580+ db(cY(cY(cY(cY(cY(cY(cY(cY(cY(cY(cY(cY(cY(cY(cY(cX, 0), 1), 2), 3), 4), 5), 6), 7), 8), 9), 10), 11), 12), 13), 14), 15)
581581 }
582- let eA = eD._1
583- let db = eD._2
584- if ((db != unit))
585- then eA
586- else throw(("Y calculation error, Y = " + toString(eA)))
582+ let eB = eE._1
583+ let dc = eE._2
584+ if ((dc != unit))
585+ then eB
586+ else throw(("Y calculation error, Y = " + toString(eB)))
587587 }
588588
589589
590-func eE (eF,eG,eH) = {
591- let eI = fraction(cx([K(eF, toBigInt(bn)), K(eG, toBigInt(bo))]), c, eH)
592- if ((eH == e))
590+func eF (eG,eH,eI) = {
591+ let eJ = fraction(cy([K(eG, toBigInt(bo)), K(eH, toBigInt(bp))]), c, eI)
592+ if ((eI == e))
593593 then e
594- else eI
594+ else eJ
595595 }
596596
597597
598-func eJ (eK,eL,eM) = {
599- let eN = (toBigInt(bM(bd(bl))) - eK)
600- let eO = (toBigInt(bM(bd(bm))) - eL)
601- let eP = (toBigInt(value(assetInfo(bk)).quantity) - eM)
602- let eQ = eE(eN, eO, eP)
603- eQ
598+func eK (eL,eM,eN) = {
599+ let eO = (toBigInt(bN(be(bm))) - eL)
600+ let eP = (toBigInt(bN(be(bn))) - eM)
601+ let eQ = (toBigInt(value(assetInfo(bl)).quantity) - eN)
602+ let eR = eF(eO, eP, eQ)
603+ eR
604604 }
605605
606606
607-func eR (eS,eT,eM) = {
608- let eN = (bM(bd(bl)) + eS)
609- let eO = (bM(bd(bm)) + eT)
610- let eP = (value(assetInfo(bk)).quantity + eM)
611- let eI = eE(toBigInt(eN), toBigInt(eO), toBigInt(eP))
612- let eU = [IntegerEntry(aq, height), StringEntry(ap, toString(eI))]
613- $Tuple2(eU, eI)
607+func eS (eT,eU,eN) = {
608+ let eO = (bN(be(bm)) + eT)
609+ let eP = (bN(be(bn)) + eU)
610+ let eQ = (value(assetInfo(bl)).quantity + eN)
611+ let eJ = eF(toBigInt(eO), toBigInt(eP), toBigInt(eQ))
612+ let eV = [IntegerEntry(aq, height), StringEntry(ap, toString(eJ))]
613+ $Tuple2(eV, eJ)
614614 }
615615
616616
617-func eV (eW,eI) = if ((eI >= eW))
617+func eW (eX,eJ) = if ((eJ >= eX))
618618 then true
619- else aM("updated DLp lower than current DLp")
619+ else aN("updated DLp lower than current DLp")
620620
621621
622-func eX (eY) = {
623- let eZ = eY.amount
624- let fa = fraction(eY.amount, eY.price, a, FLOOR)
625- let fb = if ((eY.orderType == Buy))
626- then $Tuple2(eZ, -(fa))
627- else $Tuple2(-(eZ), fa)
628- let eS = fb._1
629- let eT = fb._2
630- if (if (if (aU())
622+func eY (eZ) = {
623+ let fa = eZ.amount
624+ let fb = fraction(eZ.amount, eZ.price, a, FLOOR)
625+ let fc = if ((eZ.orderType == Buy))
626+ then $Tuple2(fa, -(fb))
627+ else $Tuple2(-(fa), fb)
628+ let eT = fc._1
629+ let eU = fc._2
630+ if (if (if (aV())
631631 then true
632- else (bj == r))
632+ else (bk == r))
633633 then true
634- else (bj == s))
634+ else (bk == s))
635635 then throw("Admin blocked")
636- else if (if ((eY.assetPair.amountAsset != bl))
636+ else if (if ((eZ.assetPair.amountAsset != bm))
637637 then true
638- else (eY.assetPair.priceAsset != bm))
638+ else (eZ.assetPair.priceAsset != bn))
639639 then throw("Wr assets")
640640 else {
641- let fc = parseBigIntValue(getStringValue(this, ap))
642- let fd = eR(eS, eT, 0)
643- let fe = fd._1
644- let ff = fd._2
645- let fg = (ff >= fc)
646- fg
641+ let fd = parseBigIntValue(getStringValue(this, ap))
642+ let fe = eS(eT, eU, 0)
643+ let ff = fe._1
644+ let fg = fe._2
645+ let fh = (fg >= fd)
646+ let fi = makeString([toString(fd), toString(fg)], " ")
647+ $Tuple2(fh, fi)
647648 }
648649 }
649650
650651
651-func fh (cO) = if ((size(cO.payments) != 1))
652+func fj (cP) = if ((size(cP.payments) != 1))
652653 then throw("1 pmnt exp")
653654 else {
654- let fi = value(cO.payments[0])
655- let de = value(fi.assetId)
656- let dK = fi.amount
657- let dW = dc(toBase58String(cO.transactionId), toBase58String(de), dK, cO.caller)
658- let dy = dW._1
659- let dz = dW._2
660- let dm = parseIntValue(dW._9)
661- let dA = dW._10
662- if (if (aU())
655+ let fk = value(cP.payments[0])
656+ let df = value(fk.assetId)
657+ let dL = fk.amount
658+ let dX = dd(toBase58String(cP.transactionId), toBase58String(df), dL, cP.caller)
659+ let dz = dX._1
660+ let dA = dX._2
661+ let dn = parseIntValue(dX._9)
662+ let dB = dX._10
663+ if (if (aV())
663664 then true
664- else (dm == s))
665- then throw(("Admin blocked: " + toString(dm)))
666- else $Tuple5(dy, dz, dK, de, dA)
665+ else (dn == s))
666+ then throw(("Admin blocked: " + toString(dn)))
667+ else $Tuple5(dz, dA, dL, df, dB)
667668 }
668669
669670
670-func fj (fk,ah,fl,fm,bV,dH,dI,dJ,dK,dL) = {
671- let dW = dB(ah, bV, value(fl).amount, value(fl).assetId, value(fm).amount, value(fm).assetId, fk, (ah == ""), dH, dI, dJ, dK, dL)
672- let dm = parseIntValue(dW._8)
673- if (if (if (aU())
671+func fl (fm,ah,fn,fo,bW,dI,dJ,dK,dL,dM) = {
672+ let dX = dC(ah, bW, value(fn).amount, value(fn).assetId, value(fo).amount, value(fo).assetId, fm, (ah == ""), dI, dJ, dK, dL, dM)
673+ let dn = parseIntValue(dX._8)
674+ if (if (if (aV())
674675 then true
675- else (dm == q))
676+ else (dn == q))
676677 then true
677- else (dm == s))
678- then throw(("Blocked:" + toString(dm)))
679- else dW
678+ else (dn == s))
679+ then throw(("Blocked:" + toString(dn)))
680+ else dX
680681 }
681682
682683
683-func fn (fo,de,dg,ah,fp) = {
684- let di = toBase58String(value(bl))
684+func fp (fq,df,dh,ah,fr) = {
685685 let dj = toBase58String(value(bm))
686- let dh = bk
687- let dQ = bn
686+ let dk = toBase58String(value(bn))
687+ let di = bl
688688 let dR = bo
689- let eP = toBigInt(valueOrErrorMessage(assetInfo(dh), "invalid lp asset").quantity)
690- let fq = if ((eP > e))
689+ let dS = bp
690+ let eQ = toBigInt(valueOrErrorMessage(assetInfo(di), "invalid lp asset").quantity)
691+ let fs = if ((eQ > e))
691692 then true
692693 else throw("initial deposit requires all coins")
693- if ((fq == fq))
694+ if ((fs == fs))
694695 then {
695- let do = bM(di)
696- let dq = bM(dj)
697- let fr = if ((ah == ""))
698- then $Tuple2(do, dq)
699- else if ((de == di))
700- then if ((fo > do))
696+ let dp = bN(dj)
697+ let dr = bN(dk)
698+ let ft = if ((ah == ""))
699+ then $Tuple2(dp, dr)
700+ else if ((df == dj))
701+ then if ((fq > dp))
701702 then throw("invalid payment amount")
702- else $Tuple2((do - fo), dq)
703- else if ((de == dj))
704- then if ((fo > dq))
703+ else $Tuple2((dp - fq), dr)
704+ else if ((df == dk))
705+ then if ((fq > dr))
705706 then throw("invalid payment amount")
706- else $Tuple2(do, (dq - fo))
707+ else $Tuple2(dp, (dr - fq))
707708 else throw("wrong pmtAssetId")
708- let fs = fr._1
709- let ft = fr._2
710- let fu = if ((de == di))
711- then $Tuple2(fo, 0)
712- else if ((de == dj))
713- then $Tuple2(0, fo)
709+ let fu = ft._1
710+ let fv = ft._2
711+ let fw = if ((df == dj))
712+ then $Tuple2(fq, 0)
713+ else if ((df == dk))
714+ then $Tuple2(0, fq)
714715 else throw("invalid payment")
715- let fv = fu._1
716- let fw = fu._2
717- let fx = if (fp)
718- then $Tuple3(cu(fv, aQ)._1, cu(fw, aQ)._1, cu(fo, aQ)._2)
719- else $Tuple3(fv, fw, 0)
720- let fy = fx._1
721- let fz = fx._2
722- let cw = fx._3
723- let fA = (fs + fy)
724- let fB = (ft + fz)
725- let ca = cx([H(fs, bn), H(ft, bo)])
726- let bZ = cx([H(fA, bn), H(fB, bo)])
727- let dX = if ((bZ > ca))
716+ let fx = fw._1
717+ let fy = fw._2
718+ let fz = if (fr)
719+ then $Tuple3(cv(fx, aR)._1, cv(fy, aR)._1, cv(fq, aR)._2)
720+ else $Tuple3(fx, fy, 0)
721+ let fA = fz._1
722+ let fB = fz._2
723+ let cx = fz._3
724+ let fC = (fu + fA)
725+ let fD = (fv + fB)
726+ let cb = cy([H(fu, bo), H(fv, bp)])
727+ let ca = cy([H(fC, bo), H(fD, bp)])
728+ let dY = if ((ca > cb))
728729 then true
729730 else throw()
730- if ((dX == dX))
731+ if ((dY == dY))
731732 then {
732- let fC = fraction(eP, (bZ - ca), ca, FLOOR)
733- let dt = L(bO(H(fB, dR), H(fA, dQ)), a)
734- let eq = [IntegerEntry(ab(), dt), IntegerEntry(ac(height, lastBlock.timestamp), dt), StringEntry(af(dg, ah), bx(fv, fw, toInt(fC), dt, 0, 0, height, lastBlock.timestamp, 0, 0))]
735- let fD = fraction(ft, a, fs)
736- let fE = fraction(fo, a, (fD + a))
737- let fF = (fo - fE)
738- let fG = fraction(eP, toBigInt(fF), toBigInt(ft))
739- let fH = toInt(fraction((fC - fG), b, fG))
740- $Tuple4(toInt(fC), eq, cw, fH)
733+ let fE = fraction(eQ, (ca - cb), cb, FLOOR)
734+ let du = L(bP(H(fD, dS), H(fC, dR)), a)
735+ let er = [IntegerEntry(ab(), du), IntegerEntry(ac(height, lastBlock.timestamp), du), StringEntry(af(dh, ah), by(fx, fy, toInt(fE), du, 0, 0, height, lastBlock.timestamp, 0, 0))]
736+ let fF = fraction(fv, a, fu)
737+ let fG = fraction(fq, a, (fF + a))
738+ let fH = (fq - fG)
739+ let fI = fraction(eQ, toBigInt(fH), toBigInt(fv))
740+ let fJ = toInt(fraction((fE - fI), b, fI))
741+ $Tuple4(toInt(fE), er, cx, fJ)
741742 }
742743 else throw("Strict value is not equal to itself.")
743744 }
745746 }
746747
747748
748-func fI (fJ,fK,fL,fk,fM,fN) = {
749- let dh = toBase58String(value(bk))
749+func fK (fL,fM,fN,fm,fO,fP) = {
750750 let di = toBase58String(value(bl))
751751 let dj = toBase58String(value(bm))
752- let fO = bn
753- let fP = bo
754- let fQ = bj
755- let dg = if ((fk == bw))
756- then fM
757- else fk
758- let fi = value(fL[0])
759- let de = value(fi.assetId)
760- let dK = fi.amount
761- let eQ = eJ(e, e, e)
762- if ((eQ == eQ))
752+ let dk = toBase58String(value(bn))
753+ let fQ = bo
754+ let fR = bp
755+ let fS = bk
756+ let dh = if ((fm == bx))
757+ then fO
758+ else fm
759+ let fk = value(fN[0])
760+ let df = value(fk.assetId)
761+ let dL = fk.amount
762+ let eR = eK(e, e, e)
763+ if ((eR == eR))
763764 then {
764- let dd = toBase58String(fN)
765- if ((dh != toBase58String(de)))
765+ let de = toBase58String(fP)
766+ if ((di != toBase58String(df)))
766767 then throw("Wrong LP")
767768 else {
768- let do = bM(di)
769- let dq = bM(dj)
770- let fR = {
771- let aR = invoke(this, "getOneTknV2READONLY", [fJ, dK], nil)
772- if ($isInstanceOf(aR, "(Int, Int)"))
773- then aR
774- else throw(($getType(aR) + " couldn't be cast to (Int, Int)"))
769+ let dp = bN(dj)
770+ let dr = bN(dk)
771+ let fT = {
772+ let aS = invoke(this, "getOneTknV2READONLY", [fL, dL], nil)
773+ if ($isInstanceOf(aS, "(Int, Int)"))
774+ then aS
775+ else throw(($getType(aS) + " couldn't be cast to (Int, Int)"))
775776 }
776- if ((fR == fR))
777+ if ((fT == fT))
777778 then {
778- let cw = fR._2
779- let fS = fR._1
780- let fT = if (if ((fK > 0))
781- then (fK > fS)
779+ let cx = fT._2
780+ let fU = fT._1
781+ let fV = if (if ((fM > 0))
782+ then (fM > fU)
782783 else false)
783- then aM(makeString(["amount to receive is less than ", toString(fK)], ""))
784- else fS
785- let fU = if ((fJ == di))
786- then $Tuple4(fT, 0, ((do - fT) - cw), dq)
787- else if ((fJ == dj))
788- then $Tuple4(0, fT, do, ((dq - fT) - cw))
784+ then aN(makeString(["amount to receive is less than ", toString(fM)], ""))
785+ else fU
786+ let fW = if ((fL == dj))
787+ then $Tuple4(fV, 0, ((dp - fV) - cx), dr)
788+ else if ((fL == dk))
789+ then $Tuple4(0, fV, dp, ((dr - fV) - cx))
789790 else throw("invalid out asset id")
790- let fV = fU._1
791- let fW = fU._2
792- let fA = fU._3
793- let fB = fU._4
794- let fX = bO(H(fB, fP), H(fA, fO))
795- let fY = L(fX, a)
796- let fZ = if ((fJ == "WAVES"))
791+ let fX = fW._1
792+ let fY = fW._2
793+ let fC = fW._3
794+ let fD = fW._4
795+ let fZ = bP(H(fD, fR), H(fC, fQ))
796+ let ga = L(fZ, a)
797+ let gb = if ((fL == "WAVES"))
797798 then unit
798- else fromBase58String(fJ)
799- let ga = if ((cw > 0))
800- then [ScriptTransfer(aW, cw, fZ)]
799+ else fromBase58String(fL)
800+ let gc = if ((cx > 0))
801+ then [ScriptTransfer(aX, cx, gb)]
801802 else nil
802- let dA = ([ScriptTransfer(dg, fT, fZ), StringEntry(ai(toString(dg), dd), bI(fV, fW, dK, fY, height, lastBlock.timestamp)), IntegerEntry(ab(), fY), IntegerEntry(ac(height, lastBlock.timestamp), fY)] ++ ga)
803- if ((dA == dA))
803+ let dB = ([ScriptTransfer(dh, fV, gb), StringEntry(ai(toString(dh), de), bJ(fX, fY, dL, ga, height, lastBlock.timestamp)), IntegerEntry(ab(), ga), IntegerEntry(ac(height, lastBlock.timestamp), ga)] ++ gc)
804+ if ((dB == dB))
804805 then {
805- let gb = invoke(aP, "burn", [dK], [AttachedPayment(de, dK)])
806- if ((gb == gb))
806+ let gd = invoke(aQ, "burn", [dL], [AttachedPayment(df, dL)])
807+ if ((gd == gd))
807808 then {
808- let gc = {
809- let gd = if ((this == aW))
809+ let ge = {
810+ let gf = if ((this == aX))
810811 then 0
811- else cw
812- let ge = if ((bb(fJ) == bl))
812+ else cx
813+ let gg = if ((bc(fL) == bm))
813814 then true
814815 else false
815- if (ge)
816- then $Tuple2(-((fS + gd)), 0)
817- else $Tuple2(0, -((fS + gd)))
816+ if (gg)
817+ then $Tuple2(-((fU + gf)), 0)
818+ else $Tuple2(0, -((fU + gf)))
818819 }
819- let eS = gc._1
820- let eT = gc._2
821- let gf = eR(eS, eT, 0)
822- let gg = gf._1
823- let eI = gf._2
824- let gh = eV(eQ, eI)
825- if ((gh == gh))
826- then $Tuple2((dA ++ gg), fT)
820+ let eT = ge._1
821+ let eU = ge._2
822+ let gh = eS(eT, eU, 0)
823+ let gi = gh._1
824+ let eJ = gh._2
825+ let gj = eW(eR, eJ)
826+ if ((gj == gj))
827+ then $Tuple2((dB ++ gi), fV)
827828 else throw("Strict value is not equal to itself.")
828829 }
829830 else throw("Strict value is not equal to itself.")
837838 }
838839
839840
840-func gi () = {
841- let gj = getString(Z())
842- if ($isInstanceOf(gj, "String"))
841+func gk () = {
842+ let gl = getString(Z())
843+ if ($isInstanceOf(gl, "String"))
843844 then {
844- let cB = gj
845- fromBase58String(cB)
845+ let cC = gl
846+ fromBase58String(cC)
846847 }
847- else if ($isInstanceOf(gj, "Unit"))
848+ else if ($isInstanceOf(gl, "Unit"))
848849 then unit
849850 else throw("Match error")
850851 }
851852
852853
853-func gk () = {
854- let gj = getString(aa())
855- if ($isInstanceOf(gj, "String"))
854+func gm () = {
855+ let gl = getString(aa())
856+ if ($isInstanceOf(gl, "String"))
856857 then {
857- let cB = gj
858- fromBase58String(cB)
858+ let cC = gl
859+ fromBase58String(cC)
859860 }
860- else if ($isInstanceOf(gj, "Unit"))
861+ else if ($isInstanceOf(gl, "Unit"))
861862 then unit
862863 else throw("Match error")
863864 }
864865
865866
866-let gl = throw("Permission denied")
867+let gn = throw("Permission denied")
867868
868-func gm (cO) = {
869- let gj = gi()
870- if ($isInstanceOf(gj, "ByteVector"))
869+func go (cP) = {
870+ let gl = gk()
871+ if ($isInstanceOf(gl, "ByteVector"))
871872 then {
872- let gn = gj
873- (cO.callerPublicKey == gn)
873+ let gp = gl
874+ (cP.callerPublicKey == gp)
874875 }
875- else if ($isInstanceOf(gj, "Unit"))
876- then (cO.caller == this)
876+ else if ($isInstanceOf(gl, "Unit"))
877+ then (cP.caller == this)
877878 else throw("Match error")
878879 }
879880
880881
881-func go (cO) = {
882- let gj = gi()
883- if ($isInstanceOf(gj, "ByteVector"))
882+func gq (cP) = {
883+ let gl = gk()
884+ if ($isInstanceOf(gl, "ByteVector"))
884885 then {
885- let gn = gj
886- if ((cO.callerPublicKey == gn))
886+ let gp = gl
887+ if ((cP.callerPublicKey == gp))
887888 then true
888- else gl
889+ else gn
889890 }
890- else if ($isInstanceOf(gj, "Unit"))
891- then if ((cO.caller == this))
891+ else if ($isInstanceOf(gl, "Unit"))
892+ then if ((cP.caller == this))
892893 then true
893- else gl
894+ else gn
894895 else throw("Match error")
895896 }
896897
897898
898-@Callable(cO)
899+@Callable(cP)
899900 func constructor (Y) = {
900- let ew = go(cO)
901- if ((ew == ew))
901+ let ex = gq(cP)
902+ if ((ex == ex))
902903 then [StringEntry(Y(), Y)]
903904 else throw("Strict value is not equal to itself.")
904905 }
905906
906907
907908
908-@Callable(cO)
909-func setManager (gp) = {
910- let ew = go(cO)
911- if ((ew == ew))
909+@Callable(cP)
910+func setManager (gr) = {
911+ let ex = gq(cP)
912+ if ((ex == ex))
912913 then {
913- let gq = fromBase58String(gp)
914- if ((gq == gq))
915- then [StringEntry(aa(), gp)]
914+ let gs = fromBase58String(gr)
915+ if ((gs == gs))
916+ then [StringEntry(aa(), gr)]
916917 else throw("Strict value is not equal to itself.")
917918 }
918919 else throw("Strict value is not equal to itself.")
920921
921922
922923
923-@Callable(cO)
924+@Callable(cP)
924925 func confirmManager () = {
925- let ct = gk()
926- let gr = if (isDefined(ct))
926+ let cu = gm()
927+ let gt = if (isDefined(cu))
927928 then true
928929 else throw("No pending manager")
929- if ((gr == gr))
930+ if ((gt == gt))
930931 then {
931- let gs = if ((cO.callerPublicKey == value(ct)))
932+ let gu = if ((cP.callerPublicKey == value(cu)))
932933 then true
933934 else throw("You are not pending manager")
934- if ((gs == gs))
935- then [StringEntry(Z(), toBase58String(value(ct))), DeleteEntry(aa())]
935+ if ((gu == gu))
936+ then [StringEntry(Z(), toBase58String(value(cu))), DeleteEntry(aa())]
936937 else throw("Strict value is not equal to itself.")
937938 }
938939 else throw("Strict value is not equal to itself.")
940941
941942
942943
943-@Callable(cO)
944-func put (gt,gu) = {
945- let gv = br()
946- let gw = valueOrErrorMessage(addressFromString(gv[C]), "Wr st addr")
947- let gx = valueOrErrorMessage(addressFromString(gv[E]), "Wr sl addr")
948- if ((0 > gt))
944+@Callable(cP)
945+func put (gv,gw) = {
946+ let gx = bs()
947+ let gy = valueOrErrorMessage(addressFromString(gx[C]), "Wr st addr")
948+ let gz = valueOrErrorMessage(addressFromString(gx[E]), "Wr sl addr")
949+ if ((0 > gv))
949950 then throw("Wrong slippage")
950- else if ((size(cO.payments) != 2))
951+ else if ((size(cP.payments) != 2))
951952 then throw("2 pmnts expd")
952953 else {
953- let gy = toBigInt(value(cO.payments[0]).amount)
954- let gz = toBigInt(value(cO.payments[1]).amount)
955- let eN = (toBigInt(bM(bd(bl))) - gy)
956- if ((eN == eN))
954+ let gA = toBigInt(value(cP.payments[0]).amount)
955+ let gB = toBigInt(value(cP.payments[1]).amount)
956+ let eO = (toBigInt(bN(be(bm))) - gA)
957+ if ((eO == eO))
957958 then {
958- let eO = (toBigInt(bM(bd(bm))) - gz)
959- if ((eO == eO))
959+ let eP = (toBigInt(bN(be(bn))) - gB)
960+ if ((eP == eP))
960961 then {
961- let eP = toBigInt(value(assetInfo(bk)).quantity)
962- if ((eP == eP))
962+ let eQ = toBigInt(value(assetInfo(bl)).quantity)
963+ if ((eQ == eQ))
963964 then {
964- let eQ = eJ(gy, gz, toBigInt(0))
965- if ((eQ == eQ))
965+ let eR = eK(gA, gB, toBigInt(0))
966+ if ((eR == eR))
966967 then {
967- let gA = fj(toString(cO.caller), toBase58String(cO.transactionId), AttachedPayment(value(cO.payments[0]).assetId, value(cO.payments[0]).amount), cO.payments[1], gt, true, false, true, 0, "")
968- let ek = gA._2
969- let gB = gA._7
970- let dA = gA._9
971- let el = gA._10
972- let em = gA._11
973- let di = gA._12
974- let dj = gA._13
975- let dW = invoke(aP, "emit", [ek], nil)
976- if ((dW == dW))
968+ let gC = fl(toString(cP.caller), toBase58String(cP.transactionId), AttachedPayment(value(cP.payments[0]).assetId, value(cP.payments[0]).amount), cP.payments[1], gv, true, false, true, 0, "")
969+ let el = gC._2
970+ let gD = gC._7
971+ let dB = gC._9
972+ let em = gC._10
973+ let en = gC._11
974+ let dj = gC._12
975+ let dk = gC._13
976+ let dX = invoke(aQ, "emit", [el], nil)
977+ if ((dX == dX))
977978 then {
978- let gC = {
979- let gj = dW
980- if ($isInstanceOf(gj, "Address"))
979+ let gE = {
980+ let gl = dX
981+ if ($isInstanceOf(gl, "Address"))
981982 then {
982- let gD = gj
983- invoke(gD, "emit", [ek], nil)
983+ let gF = gl
984+ invoke(gF, "emit", [el], nil)
984985 }
985986 else unit
986987 }
987- if ((gC == gC))
988+ if ((gE == gE))
988989 then {
989- let gE = if ((el > 0))
990- then invoke(gx, "put", nil, [AttachedPayment(di, el)])
990+ let gG = if ((em > 0))
991+ then invoke(gz, "put", nil, [AttachedPayment(dj, em)])
991992 else nil
992- if ((gE == gE))
993+ if ((gG == gG))
993994 then {
994- let gF = if ((em > 0))
995- then invoke(gx, "put", nil, [AttachedPayment(dj, em)])
995+ let gH = if ((en > 0))
996+ then invoke(gz, "put", nil, [AttachedPayment(dk, en)])
996997 else nil
997- if ((gF == gF))
998+ if ((gH == gH))
998999 then {
999- let gG = if (gu)
1000+ let gI = if (gw)
10001001 then {
1001- let gH = invoke(gw, "stake", nil, [AttachedPayment(gB, ek)])
1002- if ((gH == gH))
1002+ let gJ = invoke(gy, "stake", nil, [AttachedPayment(gD, el)])
1003+ if ((gJ == gJ))
10031004 then nil
10041005 else throw("Strict value is not equal to itself.")
10051006 }
1006- else [ScriptTransfer(cO.caller, ek, gB)]
1007- let gI = eR(0, 0, 0)
1008- let gg = gI._1
1009- let eI = gI._2
1010- let gJ = if ((eI >= eQ))
1007+ else [ScriptTransfer(cP.caller, el, gD)]
1008+ let gK = eS(0, 0, 0)
1009+ let gi = gK._1
1010+ let eJ = gK._2
1011+ let gL = if ((eJ >= eR))
10111012 then true
1012- else aM(makeString(["updated DLp lower than current DLp", toString(eN), toString(eO), toString(eP), toString(eQ), toString(eI), toString(el), toString(em)], " "))
1013- if ((gJ == gJ))
1013+ else aN(makeString(["updated DLp lower than current DLp", toString(eO), toString(eP), toString(eQ), toString(eR), toString(eJ), toString(em), toString(en)], " "))
1014+ if ((gL == gL))
10141015 then {
1015- let gK = value(assetInfo(bk)).quantity
1016- if ((gK == gK))
1017- then ((dA ++ gG) ++ gg)
1016+ let gM = value(assetInfo(bl)).quantity
1017+ if ((gM == gM))
1018+ then ((dB ++ gI) ++ gi)
10181019 else throw("Strict value is not equal to itself.")
10191020 }
10201021 else throw("Strict value is not equal to itself.")
10391040
10401041
10411042
1042-@Callable(cO)
1043-func putOneTknV2 (fK,gu) = {
1044- let gL = {
1045- let aR = invoke(aP, "isPoolOneTokenOperationsDisabledREADONLY", [toString(this)], nil)
1046- if ($isInstanceOf(aR, "Boolean"))
1047- then aR
1048- else throw(($getType(aR) + " couldn't be cast to Boolean"))
1043+@Callable(cP)
1044+func putOneTknV2 (fM,gw) = {
1045+ let gN = {
1046+ let aS = invoke(aQ, "isPoolOneTokenOperationsDisabledREADONLY", [toString(this)], nil)
1047+ if ($isInstanceOf(aS, "Boolean"))
1048+ then aS
1049+ else throw(($getType(aS) + " couldn't be cast to Boolean"))
10491050 }
1050- let gM = if (if (if (aU())
1051+ let gO = if (if (if (aV())
10511052 then true
1052- else (bj == q))
1053+ else (bk == q))
10531054 then true
1054- else (bj == s))
1055+ else (bk == s))
10551056 then true
1056- else gL
1057- let gN = [if (if (!(gM))
1057+ else gN
1058+ let gP = [if (if (!(gO))
10581059 then true
1059- else gm(cO))
1060+ else go(cP))
10601061 then true
1061- else aM("put operation is blocked by admin"), if ((size(cO.payments) == 1))
1062+ else aN("put operation is blocked by admin"), if ((size(cP.payments) == 1))
10621063 then true
1063- else aM("exactly 1 payment are expected")]
1064- if ((gN == gN))
1064+ else aN("exactly 1 payment are expected")]
1065+ if ((gP == gP))
10651066 then {
1066- let di = toBase58String(value(bl))
10671067 let dj = toBase58String(value(bm))
1068- let dh = bk
1069- let fO = bn
1070- let fP = bo
1071- let dg = if ((cO.caller == this))
1072- then cO.originCaller
1073- else cO.caller
1074- let fi = value(cO.payments[0])
1075- let de = toBase58String(value(fi.assetId))
1076- let dK = fi.amount
1077- let eQ = if ((fi.assetId == bl))
1078- then eJ(toBigInt(dK), toBigInt(0), toBigInt(0))
1079- else eJ(toBigInt(0), toBigInt(dK), toBigInt(0))
1080- if ((eQ == eQ))
1068+ let dk = toBase58String(value(bn))
1069+ let di = bl
1070+ let fQ = bo
1071+ let fR = bp
1072+ let dh = if ((cP.caller == this))
1073+ then cP.originCaller
1074+ else cP.caller
1075+ let fk = value(cP.payments[0])
1076+ let df = toBase58String(value(fk.assetId))
1077+ let dL = fk.amount
1078+ let eR = if ((fk.assetId == bm))
1079+ then eK(toBigInt(dL), toBigInt(0), toBigInt(0))
1080+ else eK(toBigInt(0), toBigInt(dL), toBigInt(0))
1081+ if ((eR == eR))
10811082 then {
1082- let gO = fn(dK, de, toString(dg), toBase58String(cO.transactionId), true)
1083- if ((gO == gO))
1083+ let gQ = fp(dL, df, toString(dh), toBase58String(cP.transactionId), true)
1084+ if ((gQ == gQ))
10841085 then {
1085- let cw = gO._3
1086- let dA = gO._2
1087- let gP = gO._1
1088- let ek = if (if ((fK > 0))
1089- then (fK > gP)
1086+ let cx = gQ._3
1087+ let dB = gQ._2
1088+ let gR = gQ._1
1089+ let el = if (if ((fM > 0))
1090+ then (fM > gR)
10901091 else false)
1091- then aM(makeString(["amount to receive is less than ", toString(fK)], ""))
1092- else gP
1093- let gA = invoke(aP, "emit", [ek], nil)
1094- if ((gA == gA))
1092+ then aN(makeString(["amount to receive is less than ", toString(fM)], ""))
1093+ else gR
1094+ let gC = invoke(aQ, "emit", [el], nil)
1095+ if ((gC == gC))
10951096 then {
1096- let gC = {
1097- let gj = gA
1098- if ($isInstanceOf(gj, "Address"))
1097+ let gE = {
1098+ let gl = gC
1099+ if ($isInstanceOf(gl, "Address"))
10991100 then {
1100- let gD = gj
1101- invoke(gD, "emit", [ek], nil)
1101+ let gF = gl
1102+ invoke(gF, "emit", [el], nil)
11021103 }
11031104 else unit
11041105 }
1105- if ((gC == gC))
1106+ if ((gE == gE))
11061107 then {
1107- let gG = if (gu)
1108+ let gI = if (gw)
11081109 then {
1109- let gH = invoke(bt, "stake", nil, [AttachedPayment(dh, ek)])
1110- if ((gH == gH))
1110+ let gJ = invoke(bu, "stake", nil, [AttachedPayment(di, el)])
1111+ if ((gJ == gJ))
11111112 then nil
11121113 else throw("Strict value is not equal to itself.")
11131114 }
1114- else [ScriptTransfer(cO.caller, ek, dh)]
1115- let ga = if ((cw > 0))
1116- then [ScriptTransfer(aW, cw, fromBase58String(de))]
1115+ else [ScriptTransfer(cP.caller, el, di)]
1116+ let gc = if ((cx > 0))
1117+ then [ScriptTransfer(aX, cx, fromBase58String(df))]
11171118 else nil
1118- let gQ = if ((this == aW))
1119+ let gS = if ((this == aX))
11191120 then $Tuple2(0, 0)
11201121 else {
1121- let gR = if ((fi.assetId == bl))
1122+ let gT = if ((fk.assetId == bm))
11221123 then true
11231124 else false
1124- if (gR)
1125- then $Tuple2(-(cw), 0)
1126- else $Tuple2(0, -(cw))
1125+ if (gT)
1126+ then $Tuple2(-(cx), 0)
1127+ else $Tuple2(0, -(cx))
11271128 }
1128- let eS = gQ._1
1129- let eT = gQ._2
1130- let gS = eR(eS, eT, 0)
1131- let gg = gS._1
1132- let eI = gS._2
1133- let gh = eV(eQ, eI)
1134- if ((gh == gh))
1135- then $Tuple2((((dA ++ gG) ++ ga) ++ gg), ek)
1129+ let eT = gS._1
1130+ let eU = gS._2
1131+ let gU = eS(eT, eU, 0)
1132+ let gi = gU._1
1133+ let eJ = gU._2
1134+ let gj = eW(eR, eJ)
1135+ if ((gj == gj))
1136+ then $Tuple2((((dB ++ gI) ++ gc) ++ gi), el)
11361137 else throw("Strict value is not equal to itself.")
11371138 }
11381139 else throw("Strict value is not equal to itself.")
11481149
11491150
11501151
1151-@Callable(cO)
1152-func putForFree (gT) = if ((0 > gT))
1152+@Callable(cP)
1153+func putForFree (gV) = if ((0 > gV))
11531154 then throw("Wrong slpg")
1154- else if ((size(cO.payments) != 2))
1155+ else if ((size(cP.payments) != 2))
11551156 then throw("2 pmnts expd")
11561157 else {
1157- let gU = fj(toString(cO.caller), toBase58String(cO.transactionId), AttachedPayment(value(cO.payments[0]).assetId, value(cO.payments[0]).amount), cO.payments[1], gT, false, false, true, 0, "")
1158- let dA = gU._9
1159- let gy = toBigInt(value(cO.payments[0]).amount)
1160- let gz = toBigInt(value(cO.payments[1]).amount)
1161- let eQ = eJ(gy, gz, toBigInt(0))
1162- if ((eQ == eQ))
1158+ let gW = fl(toString(cP.caller), toBase58String(cP.transactionId), AttachedPayment(value(cP.payments[0]).assetId, value(cP.payments[0]).amount), cP.payments[1], gV, false, false, true, 0, "")
1159+ let dB = gW._9
1160+ let gA = toBigInt(value(cP.payments[0]).amount)
1161+ let gB = toBigInt(value(cP.payments[1]).amount)
1162+ let eR = eK(gA, gB, toBigInt(0))
1163+ if ((eR == eR))
11631164 then {
1164- let gV = eR(0, 0, 0)
1165- let gg = gV._1
1166- let eI = gV._2
1167- let gh = eV(eQ, eI)
1168- if ((gh == gh))
1169- then (dA ++ gg)
1165+ let gX = eS(0, 0, 0)
1166+ let gi = gX._1
1167+ let eJ = gX._2
1168+ let gj = eW(eR, eJ)
1169+ if ((gj == gj))
1170+ then (dB ++ gi)
11701171 else throw("Strict value is not equal to itself.")
11711172 }
11721173 else throw("Strict value is not equal to itself.")
11741175
11751176
11761177
1177-@Callable(cO)
1178+@Callable(cP)
11781179 func get () = {
1179- let eQ = eJ(toBigInt(0), toBigInt(0), toBigInt(0))
1180- if ((eQ == eQ))
1180+ let eR = eK(toBigInt(0), toBigInt(0), toBigInt(0))
1181+ if ((eR == eR))
11811182 then {
1182- let dW = fh(cO)
1183- let gW = dW._1
1184- let dz = dW._2
1185- let dK = dW._3
1186- let de = dW._4
1187- let dA = dW._5
1188- let ex = invoke(aP, "burn", [dK], [AttachedPayment(de, dK)])
1189- if ((ex == ex))
1183+ let dX = fj(cP)
1184+ let gY = dX._1
1185+ let dA = dX._2
1186+ let dL = dX._3
1187+ let df = dX._4
1188+ let dB = dX._5
1189+ let ey = invoke(aQ, "burn", [dL], [AttachedPayment(df, dL)])
1190+ if ((ey == ey))
11901191 then {
1191- let gX = eR(-(gW), -(dz), 0)
1192- let gg = gX._1
1193- let eI = gX._2
1194- let gh = eV(eQ, eI)
1195- if ((gh == gh))
1196- then (dA ++ gg)
1192+ let gZ = eS(-(gY), -(dA), 0)
1193+ let gi = gZ._1
1194+ let eJ = gZ._2
1195+ let gj = eW(eR, eJ)
1196+ if ((gj == gj))
1197+ then (dB ++ gi)
11971198 else throw("Strict value is not equal to itself.")
11981199 }
11991200 else throw("Strict value is not equal to itself.")
12031204
12041205
12051206
1206-@Callable(cO)
1207-func getOneTknV2 (fJ,fK) = {
1208- let gL = {
1209- let aR = invoke(aP, "isPoolOneTokenOperationsDisabledREADONLY", [toString(this)], nil)
1210- if ($isInstanceOf(aR, "Boolean"))
1211- then aR
1212- else throw(($getType(aR) + " couldn't be cast to Boolean"))
1207+@Callable(cP)
1208+func getOneTknV2 (fL,fM) = {
1209+ let gN = {
1210+ let aS = invoke(aQ, "isPoolOneTokenOperationsDisabledREADONLY", [toString(this)], nil)
1211+ if ($isInstanceOf(aS, "Boolean"))
1212+ then aS
1213+ else throw(($getType(aS) + " couldn't be cast to Boolean"))
12131214 }
1214- let gY = if (if (aU())
1215+ let ha = if (if (aV())
12151216 then true
1216- else (bj == s))
1217+ else (bk == s))
12171218 then true
1218- else gL
1219- let gN = [if (if (!(gY))
1219+ else gN
1220+ let gP = [if (if (!(ha))
12201221 then true
1221- else gm(cO))
1222+ else go(cP))
12221223 then true
1223- else aM("get operation is blocked by admin"), if ((size(cO.payments) == 1))
1224+ else aN("get operation is blocked by admin"), if ((size(cP.payments) == 1))
12241225 then true
1225- else aM("exactly 1 payment are expected")]
1226- if ((gN == gN))
1226+ else aN("exactly 1 payment are expected")]
1227+ if ((gP == gP))
12271228 then {
1228- let gZ = fI(fJ, fK, cO.payments, cO.caller, cO.originCaller, cO.transactionId)
1229- let dA = gZ._1
1230- let fT = gZ._2
1231- $Tuple2(dA, fT)
1229+ let hb = fK(fL, fM, cP.payments, cP.caller, cP.originCaller, cP.transactionId)
1230+ let dB = hb._1
1231+ let fV = hb._2
1232+ $Tuple2(dB, fV)
12321233 }
12331234 else throw("Strict value is not equal to itself.")
12341235 }
12351236
12361237
12371238
1238-@Callable(cO)
1239+@Callable(cP)
12391240 func refreshDLp () = {
1240- let ha = valueOrElse(getInteger(aq), 0)
1241- let hb = if (((height - ha) >= at))
1241+ let hc = valueOrElse(getInteger(aq), 0)
1242+ let hd = if (((height - hc) >= at))
12421243 then unit
1243- else aM(makeString([toString(at), " blocks have not passed since the previous call"], ""))
1244- if ((hb == hb))
1244+ else aN(makeString([toString(at), " blocks have not passed since the previous call"], ""))
1245+ if ((hd == hd))
12451246 then {
1246- let fc = valueOrErrorMessage(parseBigInt(valueOrElse(getString(this, ap), "0")), aO("invalid dLp"))
1247- let hc = eR(0, 0, 0)
1248- let hd = hc._1
1249- let eI = hc._2
1250- let eU = if ((fc != eI))
1251- then hd
1252- else aM("nothing to refresh")
1253- $Tuple2(eU, toString(eI))
1247+ let fd = valueOrErrorMessage(parseBigInt(valueOrElse(getString(this, ap), "0")), aP("invalid dLp"))
1248+ let he = eS(0, 0, 0)
1249+ let hf = he._1
1250+ let eJ = he._2
1251+ let eV = if ((fd != eJ))
1252+ then hf
1253+ else aN("nothing to refresh")
1254+ $Tuple2(eV, toString(eJ))
12541255 }
12551256 else throw("Strict value is not equal to itself.")
12561257 }
12571258
12581259
12591260
1260-@Callable(cO)
1261-func getOneTknV2READONLY (fJ,he) = {
1261+@Callable(cP)
1262+func getOneTknV2READONLY (fL,hg) = {
1263+ let dj = toBase58String(value(bm))
1264+ let dk = toBase58String(value(bn))
12621265 let di = toBase58String(value(bl))
1263- let dj = toBase58String(value(bm))
1264- let dh = toBase58String(value(bk))
1265- let cy = [toBigInt(bM(di)), toBigInt(bM(dj))]
1266- let eH = toBigInt(valueOrErrorMessage(assetInfo(fromBase58String(dh)), "invalid lp asset").quantity)
1267- let ca = cx(cy)
1268- let bZ = (ca - fraction(toBigInt(he), ca, eH))
1269- let hf = if ((fJ == di))
1266+ let cz = [toBigInt(bN(dj)), toBigInt(bN(dk))]
1267+ let eI = toBigInt(valueOrErrorMessage(assetInfo(fromBase58String(di)), "invalid lp asset").quantity)
1268+ let cb = cy(cz)
1269+ let ca = (cb - fraction(toBigInt(hg), cb, eI))
1270+ let hh = if ((fL == dj))
12701271 then 0
1271- else if ((fJ == dj))
1272+ else if ((fL == dk))
12721273 then 1
12731274 else throw("invalid out asset id")
1274- let hg = er(cy, hf, bZ)
1275- let hh = (cy[hf] - hg)
1276- let hi = max([0, toInt((hh - f))])
1277- let hj = cu(hi, aS)
1278- let fS = hj._1
1279- let cw = hj._2
1280- $Tuple2(nil, $Tuple2(fS, cw))
1275+ let hi = es(cz, hh, ca)
1276+ let hj = (cz[hh] - hi)
1277+ let hk = max([0, toInt((hj - f))])
1278+ let hl = cv(hk, aT)
1279+ let fU = hl._1
1280+ let cx = hl._2
1281+ $Tuple2(nil, $Tuple2(fU, cx))
12811282 }
12821283
12831284
12841285
1285-@Callable(cO)
1286-func getOneTknV2WithBonusREADONLY (fJ,he) = {
1286+@Callable(cP)
1287+func getOneTknV2WithBonusREADONLY (fL,hg) = {
1288+ let dj = toBase58String(value(bm))
1289+ let dk = toBase58String(value(bn))
12871290 let di = toBase58String(value(bl))
1288- let dj = toBase58String(value(bm))
1289- let dh = toBase58String(value(bk))
1290- let do = bM(di)
1291- let dq = bM(dj)
1292- let hk = {
1293- let aR = invoke(this, "getOneTknV2READONLY", [fJ, he], nil)
1294- if ($isInstanceOf(aR, "(Int, Int)"))
1295- then aR
1296- else throw(($getType(aR) + " couldn't be cast to (Int, Int)"))
1291+ let dp = bN(dj)
1292+ let dr = bN(dk)
1293+ let hm = {
1294+ let aS = invoke(this, "getOneTknV2READONLY", [fL, hg], nil)
1295+ if ($isInstanceOf(aS, "(Int, Int)"))
1296+ then aS
1297+ else throw(($getType(aS) + " couldn't be cast to (Int, Int)"))
12971298 }
1298- let fS = hk._1
1299- let cw = hk._2
1300- let dW = dc("", dh, he, this)
1301- let dy = dW._1
1302- let dz = dW._2
1303- let hl = (dy + dz)
1304- let fH = if ((hl == 0))
1305- then if ((fS == 0))
1299+ let fU = hm._1
1300+ let cx = hm._2
1301+ let dX = dd("", di, hg, this)
1302+ let dz = dX._1
1303+ let dA = dX._2
1304+ let hn = (dz + dA)
1305+ let fJ = if ((hn == 0))
1306+ then if ((fU == 0))
13061307 then 0
13071308 else throw("bonus calculation error")
1308- else fraction((fS - hl), a, hl)
1309- $Tuple2(nil, $Tuple3(fS, cw, fH))
1309+ else fraction((fU - hn), a, hn)
1310+ $Tuple2(nil, $Tuple3(fU, cx, fJ))
13101311 }
13111312
13121313
13131314
1314-@Callable(cO)
1315-func getNoLess (hm,hn) = {
1316- let dW = fh(cO)
1317- let dy = dW._1
1318- let dz = dW._2
1319- let dK = dW._3
1320- let de = dW._4
1321- let dA = dW._5
1322- if ((hm > dy))
1323- then throw(((("Failed: " + toString(dy)) + " < ") + toString(hm)))
1324- else if ((hn > dz))
1325- then throw(((("Failed: " + toString(dz)) + " < ") + toString(hn)))
1315+@Callable(cP)
1316+func getNoLess (ho,hp) = {
1317+ let dX = fj(cP)
1318+ let dz = dX._1
1319+ let dA = dX._2
1320+ let dL = dX._3
1321+ let df = dX._4
1322+ let dB = dX._5
1323+ if ((ho > dz))
1324+ then throw(((("Failed: " + toString(dz)) + " < ") + toString(ho)))
1325+ else if ((hp > dA))
1326+ then throw(((("Failed: " + toString(dA)) + " < ") + toString(hp)))
13261327 else {
1327- let eQ = eJ(toBigInt(0), toBigInt(0), toBigInt(0))
1328- if ((eQ == eQ))
1328+ let eR = eK(toBigInt(0), toBigInt(0), toBigInt(0))
1329+ if ((eR == eR))
13291330 then {
1330- let ho = invoke(aP, "burn", [dK], [AttachedPayment(de, dK)])
1331- if ((ho == ho))
1331+ let hq = invoke(aQ, "burn", [dL], [AttachedPayment(df, dL)])
1332+ if ((hq == hq))
13321333 then {
1333- let hp = eR(-(dy), -(dz), 0)
1334- let gg = hp._1
1335- let eI = hp._2
1336- let gh = eV(eQ, eI)
1337- if ((gh == gh))
1338- then (dA ++ gg)
1334+ let hr = eS(-(dz), -(dA), 0)
1335+ let gi = hr._1
1336+ let eJ = hr._2
1337+ let gj = eW(eR, eJ)
1338+ if ((gj == gj))
1339+ then (dB ++ gi)
13391340 else throw("Strict value is not equal to itself.")
13401341 }
13411342 else throw("Strict value is not equal to itself.")
13461347
13471348
13481349
1349-@Callable(cO)
1350-func unstakeAndGet (cv) = {
1351- let hq = if ((size(cO.payments) != 0))
1350+@Callable(cP)
1351+func unstakeAndGet (cw) = {
1352+ let hs = if ((size(cP.payments) != 0))
13521353 then throw("No pmnts expd")
13531354 else true
1354- if ((hq == hq))
1355+ if ((hs == hs))
13551356 then {
1356- let hr = br()
1357- let gB = bk
1358- let hs = valueOrErrorMessage(addressFromString(hr[C]), "Wr st addr")
1359- let eQ = eJ(toBigInt(0), toBigInt(0), toBigInt(0))
1360- if ((eQ == eQ))
1357+ let ht = bs()
1358+ let gD = bl
1359+ let hu = valueOrErrorMessage(addressFromString(ht[C]), "Wr st addr")
1360+ let eR = eK(toBigInt(0), toBigInt(0), toBigInt(0))
1361+ if ((eR == eR))
13611362 then {
1362- let ht = invoke(hs, "unstake", [toBase58String(gB), cv], nil)
1363- if ((ht == ht))
1363+ let hv = invoke(hu, "unstake", [toBase58String(gD), cw], nil)
1364+ if ((hv == hv))
13641365 then {
1365- let dW = dc(toBase58String(cO.transactionId), toBase58String(gB), cv, cO.caller)
1366- let dy = dW._1
1367- let dz = dW._2
1368- let dm = parseIntValue(dW._9)
1369- let dA = dW._10
1370- let hu = if (if (aU())
1366+ let dX = dd(toBase58String(cP.transactionId), toBase58String(gD), cw, cP.caller)
1367+ let dz = dX._1
1368+ let dA = dX._2
1369+ let dn = parseIntValue(dX._9)
1370+ let dB = dX._10
1371+ let hw = if (if (aV())
13711372 then true
1372- else (dm == s))
1373- then throw(("Blocked: " + toString(dm)))
1373+ else (dn == s))
1374+ then throw(("Blocked: " + toString(dn)))
13741375 else true
1375- if ((hu == hu))
1376+ if ((hw == hw))
13761377 then {
1377- let hv = invoke(aP, "burn", [cv], [AttachedPayment(gB, cv)])
1378- if ((hv == hv))
1378+ let hx = invoke(aQ, "burn", [cw], [AttachedPayment(gD, cw)])
1379+ if ((hx == hx))
13791380 then {
1380- let hw = eR(-(dy), -(dz), 0)
1381- let gg = hw._1
1382- let eI = hw._2
1383- let gh = eV(eQ, eI)
1384- if ((gh == gh))
1385- then (dA ++ gg)
1381+ let hy = eS(-(dz), -(dA), 0)
1382+ let gi = hy._1
1383+ let eJ = hy._2
1384+ let gj = eW(eR, eJ)
1385+ if ((gj == gj))
1386+ then (dB ++ gi)
13861387 else throw("Strict value is not equal to itself.")
13871388 }
13881389 else throw("Strict value is not equal to itself.")
13981399
13991400
14001401
1401-@Callable(cO)
1402-func unstakeAndGetNoLess (hx,hy,hn) = {
1403- let gY = if (aU())
1402+@Callable(cP)
1403+func unstakeAndGetNoLess (hz,hA,hp) = {
1404+ let ha = if (aV())
14041405 then true
1405- else (bj == s)
1406- let gN = [if (!(gY))
1406+ else (bk == s)
1407+ let gP = [if (!(ha))
14071408 then true
1408- else throw("get operation is blocked by admin"), if ((size(cO.payments) == 0))
1409+ else throw("get operation is blocked by admin"), if ((size(cP.payments) == 0))
14091410 then true
14101411 else throw("no payments are expected")]
1411- if ((gN == gN))
1412+ if ((gP == gP))
14121413 then {
1413- let eQ = eJ(toBigInt(0), toBigInt(0), toBigInt(0))
1414- if ((eQ == eQ))
1414+ let eR = eK(toBigInt(0), toBigInt(0), toBigInt(0))
1415+ if ((eR == eR))
14151416 then {
1416- let ht = invoke(bt, "unstake", [toBase58String(bk), hx], nil)
1417- if ((ht == ht))
1417+ let hv = invoke(bu, "unstake", [toBase58String(bl), hz], nil)
1418+ if ((hv == hv))
14181419 then {
1419- let hz = dc(toBase58String(cO.transactionId), toBase58String(bk), hx, cO.caller)
1420- let dy = hz._1
1421- let dz = hz._2
1422- let dA = hz._10
1423- let hA = [if ((dy >= hy))
1420+ let hB = dd(toBase58String(cP.transactionId), toBase58String(bl), hz, cP.caller)
1421+ let dz = hB._1
1422+ let dA = hB._2
1423+ let dB = hB._10
1424+ let hC = [if ((dz >= hA))
14241425 then true
1425- else throw(makeString(["amount asset amount to receive is less than ", toString(hy)], "")), if ((dz >= hn))
1426+ else throw(makeString(["amount asset amount to receive is less than ", toString(hA)], "")), if ((dA >= hp))
14261427 then true
1427- else throw(makeString(["price asset amount to receive is less than ", toString(hn)], ""))]
1428- if ((hA == hA))
1428+ else throw(makeString(["price asset amount to receive is less than ", toString(hp)], ""))]
1429+ if ((hC == hC))
14291430 then {
1430- let ho = invoke(aP, "burn", [hx], [AttachedPayment(bk, hx)])
1431- if ((ho == ho))
1431+ let hq = invoke(aQ, "burn", [hz], [AttachedPayment(bl, hz)])
1432+ if ((hq == hq))
14321433 then {
1433- let hB = eR(-(dy), -(dz), 0)
1434- let gg = hB._1
1435- let eI = hB._2
1436- let gh = eV(eQ, eI)
1437- if ((gh == gh))
1438- then (dA ++ gg)
1434+ let hD = eS(-(dz), -(dA), 0)
1435+ let gi = hD._1
1436+ let eJ = hD._2
1437+ let gj = eW(eR, eJ)
1438+ if ((gj == gj))
1439+ then (dB ++ gi)
14391440 else throw("Strict value is not equal to itself.")
14401441 }
14411442 else throw("Strict value is not equal to itself.")
14511452
14521453
14531454
1454-@Callable(cO)
1455-func unstakeAndGetOneTknV2 (hx,fJ,fK) = {
1456- let gL = {
1457- let aR = invoke(aP, "isPoolOneTokenOperationsDisabledREADONLY", [toString(this)], nil)
1458- if ($isInstanceOf(aR, "Boolean"))
1459- then aR
1460- else throw(($getType(aR) + " couldn't be cast to Boolean"))
1455+@Callable(cP)
1456+func unstakeAndGetOneTknV2 (hz,fL,fM) = {
1457+ let gN = {
1458+ let aS = invoke(aQ, "isPoolOneTokenOperationsDisabledREADONLY", [toString(this)], nil)
1459+ if ($isInstanceOf(aS, "Boolean"))
1460+ then aS
1461+ else throw(($getType(aS) + " couldn't be cast to Boolean"))
14611462 }
1462- let gY = if (if (aU())
1463+ let ha = if (if (aV())
14631464 then true
1464- else (bj == s))
1465+ else (bk == s))
14651466 then true
1466- else gL
1467- let gN = [if (if (!(gY))
1467+ else gN
1468+ let gP = [if (if (!(ha))
14681469 then true
1469- else gm(cO))
1470+ else go(cP))
14701471 then true
1471- else aM("get operation is blocked by admin"), if ((size(cO.payments) == 0))
1472+ else aN("get operation is blocked by admin"), if ((size(cP.payments) == 0))
14721473 then true
1473- else aM("no payments are expected")]
1474- if ((gN == gN))
1474+ else aN("no payments are expected")]
1475+ if ((gP == gP))
14751476 then {
1476- let hr = br()
1477- let gB = bk
1478- let hs = valueOrErrorMessage(addressFromString(hr[C]), "Wr st addr")
1479- let ht = invoke(hs, "unstake", [toBase58String(gB), hx], nil)
1480- if ((ht == ht))
1477+ let ht = bs()
1478+ let gD = bl
1479+ let hu = valueOrErrorMessage(addressFromString(ht[C]), "Wr st addr")
1480+ let hv = invoke(hu, "unstake", [toBase58String(gD), hz], nil)
1481+ if ((hv == hv))
14811482 then {
1482- let hC = fI(fJ, fK, [AttachedPayment(gB, hx)], cO.caller, cO.originCaller, cO.transactionId)
1483- let dA = hC._1
1484- let fT = hC._2
1485- $Tuple2(dA, fT)
1483+ let hE = fK(fL, fM, [AttachedPayment(gD, hz)], cP.caller, cP.originCaller, cP.transactionId)
1484+ let dB = hE._1
1485+ let fV = hE._2
1486+ $Tuple2(dB, fV)
14861487 }
14871488 else throw("Strict value is not equal to itself.")
14881489 }
14911492
14921493
14931494
1494-@Callable(cO)
1495-func putOneTknV2WithBonusREADONLY (hD,hE) = {
1496- let hF = fn(hD, hE, "", "", true)
1497- let fC = hF._1
1498- let dA = hF._2
1499- let cw = hF._3
1500- let fH = hF._4
1501- $Tuple2(nil, $Tuple3(fC, cw, fH))
1495+@Callable(cP)
1496+func putOneTknV2WithBonusREADONLY (hF,hG) = {
1497+ let hH = fp(hF, hG, "", "", true)
1498+ let fE = hH._1
1499+ let dB = hH._2
1500+ let cx = hH._3
1501+ let fJ = hH._4
1502+ $Tuple2(nil, $Tuple3(fE, cx, fJ))
15021503 }
15031504
15041505
15051506
1506-@Callable(cO)
1507-func putOneTknV2WithoutTakeFeeREADONLY (hD,hE) = {
1508- let hG = fn(hD, hE, "", "", false)
1509- let fC = hG._1
1510- let dA = hG._2
1511- let cw = hG._3
1512- let fH = hG._4
1513- $Tuple2(nil, $Tuple3(fC, cw, fH))
1507+@Callable(cP)
1508+func putOneTknV2WithoutTakeFeeREADONLY (hF,hG) = {
1509+ let hI = fp(hF, hG, "", "", false)
1510+ let fE = hI._1
1511+ let dB = hI._2
1512+ let cx = hI._3
1513+ let fJ = hI._4
1514+ $Tuple2(nil, $Tuple3(fE, cx, fJ))
15141515 }
15151516
15161517
15171518
1518-@Callable(cO)
1519-func activate (hH,hI) = if ((toString(cO.caller) != toString(aP)))
1519+@Callable(cP)
1520+func activate (hJ,hK) = if ((toString(cP.caller) != toString(aQ)))
15201521 then throw("denied")
1521- else $Tuple2([StringEntry(aj(), hH), StringEntry(ak(), hI)], "success")
1522+ else $Tuple2([StringEntry(aj(), hJ), StringEntry(ak(), hK)], "success")
15221523
15231524
15241525
1525-@Callable(cO)
1526-func setS (hJ,hu) = if ((toString(cO.caller) != aI(this, am())))
1527- then gl
1528- else [StringEntry(hJ, hu)]
1526+@Callable(cP)
1527+func setS (hL,hw) = if ((toString(cP.caller) != aJ(this, am())))
1528+ then gn
1529+ else [StringEntry(hL, hw)]
15291530
15301531
15311532
1532-@Callable(cO)
1533-func setI (hJ,hu) = if ((toString(cO.caller) != aI(this, am())))
1534- then gl
1535- else [IntegerEntry(hJ, hu)]
1533+@Callable(cP)
1534+func setI (hL,hw) = if ((toString(cP.caller) != aJ(this, am())))
1535+ then gn
1536+ else [IntegerEntry(hL, hw)]
15361537
15371538
15381539
1539-@Callable(cO)
1540-func getPoolConfigWrapperREADONLY () = $Tuple2(nil, aX())
1540+@Callable(cP)
1541+func getPoolConfigWrapperREADONLY () = $Tuple2(nil, aY())
15411542
15421543
15431544
1544-@Callable(cO)
1545-func getAccBalanceWrapperREADONLY (bN) = $Tuple2(nil, bM(bN))
1545+@Callable(cP)
1546+func getAccBalanceWrapperREADONLY (bO) = $Tuple2(nil, bN(bO))
15461547
15471548
15481549
1549-@Callable(cO)
1550-func calcPricesWrapperREADONLY (cg,ch,cl) = {
1551- let hK = ck(cg, ch, cl)
1552- $Tuple2(nil, [toString(hK[0]), toString(hK[1]), toString(hK[2])])
1550+@Callable(cP)
1551+func calcPricesWrapperREADONLY (ch,ci,cm) = {
1552+ let hM = cl(ch, ci, cm)
1553+ $Tuple2(nil, [toString(hM[0]), toString(hM[1]), toString(hM[2])])
15531554 }
15541555
15551556
15561557
1557-@Callable(cO)
1558-func fromX18WrapperREADONLY (M,hL) = $Tuple2(nil, L(parseBigIntValue(M), hL))
1558+@Callable(cP)
1559+func fromX18WrapperREADONLY (M,hN) = $Tuple2(nil, L(parseBigIntValue(M), hN))
15591560
15601561
15611562
1562-@Callable(cO)
1563+@Callable(cP)
15631564 func toX18WrapperREADONLY (I,J) = $Tuple2(nil, toString(H(I, J)))
15641565
15651566
15661567
1567-@Callable(cO)
1568-func calcPriceBigIntWrapperREADONLY (bP,bQ) = $Tuple2(nil, toString(bO(parseBigIntValue(bP), parseBigIntValue(bQ))))
1568+@Callable(cP)
1569+func calcPriceBigIntWrapperREADONLY (bQ,bR) = $Tuple2(nil, toString(bP(parseBigIntValue(bQ), parseBigIntValue(bR))))
15691570
15701571
15711572
1572-@Callable(cO)
1573-func estimatePutOperationWrapperREADONLY (dd,bV,dC,dD,dE,dF,hM,dG,dH) = $Tuple2(nil, dB(dd, bV, dC, dD, dE, dF, hM, dG, dH, true, false, 0, ""))
1573+@Callable(cP)
1574+func estimatePutOperationWrapperREADONLY (de,bW,dD,dE,dF,dG,hO,dH,dI) = $Tuple2(nil, dC(de, bW, dD, dE, dF, dG, hO, dH, dI, true, false, 0, ""))
15741575
15751576
15761577
1577-@Callable(cO)
1578-func estimateGetOperationWrapperREADONLY (dd,hN,df,hM) = {
1579- let dW = dc(dd, hN, df, addressFromStringValue(hM))
1580- $Tuple2(nil, $Tuple10(dW._1, dW._2, dW._3, dW._4, dW._5, dW._6, dW._7, toString(dW._8), dW._9, dW._10))
1578+@Callable(cP)
1579+func estimateGetOperationWrapperREADONLY (de,hP,dg,hO) = {
1580+ let dX = dd(de, hP, dg, addressFromStringValue(hO))
1581+ $Tuple2(nil, $Tuple10(dX._1, dX._2, dX._3, dX._4, dX._5, dX._6, dX._7, toString(dX._8), dX._9, dX._10))
15811582 }
15821583
15831584
1584-@Verifier(hO)
1585-func hP () = {
1586- let hQ = {
1587- let gj = gi()
1588- if ($isInstanceOf(gj, "ByteVector"))
1585+@Verifier(hQ)
1586+func hR () = {
1587+ let hS = {
1588+ let gl = gk()
1589+ if ($isInstanceOf(gl, "ByteVector"))
15891590 then {
1590- let gn = gj
1591- gn
1591+ let gp = gl
1592+ gp
15921593 }
1593- else if ($isInstanceOf(gj, "Unit"))
1594- then hO.senderPublicKey
1594+ else if ($isInstanceOf(gl, "Unit"))
1595+ then hQ.senderPublicKey
15951596 else throw("Match error")
15961597 }
1597- let gj = hO
1598- if ($isInstanceOf(gj, "Order"))
1598+ let gl = hQ
1599+ if ($isInstanceOf(gl, "Order"))
15991600 then {
1600- let eY = gj
1601- let hR = aV()
1602- let hS = eX(eY)
1603- let hT = sigVerify(eY.bodyBytes, eY.proofs[0], eY.senderPublicKey)
1604- let hU = sigVerify(eY.bodyBytes, eY.proofs[1], hR)
1605- if (if (if (hS)
1606- then hT
1601+ let eZ = gl
1602+ let hT = aW()
1603+ let hU = eY(eZ)
1604+ let aF = hU._1
1605+ let aG = hU._2
1606+ let aH = sigVerify(eZ.bodyBytes, eZ.proofs[0], eZ.senderPublicKey)
1607+ let aI = sigVerify(eZ.bodyBytes, eZ.proofs[1], hT)
1608+ if (if (if (aF)
1609+ then aH
16071610 else false)
1608- then hU
1611+ then aI
16091612 else false)
16101613 then true
1611- else aE(hS, hT, hU)
1614+ else aE(aF, aG, aH, aI)
16121615 }
1613- else if ($isInstanceOf(gj, "SetScriptTransaction"))
1616+ else if ($isInstanceOf(gl, "SetScriptTransaction"))
16141617 then {
1615- let cB = gj
1616- if (sigVerify(hO.bodyBytes, hO.proofs[0], hQ))
1618+ let cC = gl
1619+ if (sigVerify(hQ.bodyBytes, hQ.proofs[0], hS))
16171620 then true
16181621 else {
1619- let hV = blake2b256(value(cB.script))
1620- let hW = fromBase64String(value(getString(aP, aC())))
1622+ let hV = blake2b256(value(cC.script))
1623+ let hW = fromBase64String(value(getString(aQ, aC())))
16211624 let hX = scriptHash(this)
16221625 if ((hW == hV))
16231626 then (hX != hV)
16241627 else false
16251628 }
16261629 }
1627- else sigVerify(hO.bodyBytes, hO.proofs[0], hQ)
1630+ else sigVerify(hQ.bodyBytes, hQ.proofs[0], hS)
16281631 }
16291632
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
1010 let d = toBigInt(0)
1111
1212 let e = toBigInt(0)
1313
1414 let f = toBigInt(1)
1515
1616 let g = toBigInt(2)
1717
1818 let h = toBigInt(3)
1919
2020 let i = toBigInt(4)
2121
2222 let j = toBigInt((a - ((a * 1) / a)))
2323
2424 let k = "WAVES"
2525
2626 let l = "100"
2727
2828 let m = "1"
2929
3030 let n = "__"
3131
3232 let o = ""
3333
3434 let p = 1
3535
3636 let q = 2
3737
3838 let r = 3
3939
4040 let s = 4
4141
4242 let t = 1
4343
4444 let u = 2
4545
4646 let v = 3
4747
4848 let w = 4
4949
5050 let x = 5
5151
5252 let y = 6
5353
5454 let z = 7
5555
5656 let A = 8
5757
5858 let B = 9
5959
6060 let C = 1
6161
6262 let D = 6
6363
6464 let E = 7
6565
6666 let F = 10
6767
6868 let G = fraction(10, a, 10000)
6969
7070 func H (I,J) = fraction(toBigInt(I), c, toBigInt(J))
7171
7272
7373 func K (I,J) = fraction(I, c, J)
7474
7575
7676 func L (M,N) = toInt(fraction(M, toBigInt(N), c))
7777
7878
7979 func O (M,N,P) = toInt(fraction(M, toBigInt(N), c, P))
8080
8181
8282 func Q (I,J) = fraction(I, c, toBigInt(J))
8383
8484
8585 func R (M,N) = fraction(M, toBigInt(N), c)
8686
8787
8888 func S (T,U,V) = fraction(T, U, V)
8989
9090
9191 func W (M) = if ((d > M))
9292 then -(M)
9393 else M
9494
9595
9696 func X (M) = if ((d > M))
9797 then -(M)
9898 else M
9999
100100
101101 func Y () = "%s__factoryContract"
102102
103103
104104 func Z () = "%s__managerPublicKey"
105105
106106
107107 func aa () = "%s__pendingManagerPublicKey"
108108
109109
110110 func ab () = "%s%s__price__last"
111111
112112
113113 func ac (ad,ae) = makeString(["%s%s%d%d__price__history", toString(ad), toString(ae)], n)
114114
115115
116116 func af (ag,ah) = ((("%s%s%s__P__" + ag) + "__") + ah)
117117
118118
119119 func ai (ag,ah) = ((("%s%s%s__G__" + ag) + "__") + ah)
120120
121121
122122 func aj () = "%s__amountAsset"
123123
124124
125125 func ak () = "%s__priceAsset"
126126
127127
128128 func al () = "%s__amp"
129129
130130
131131 func am () = "%s__addonAddr"
132132
133133
134134 let an = "%s__fee"
135135
136136 let ao = valueOrElse(getInteger(this, an), G)
137137
138138 let ap = makeString(["%s", "dLp"], n)
139139
140140 let aq = makeString(["%s", "dLpRefreshedHeight"], n)
141141
142142 let ar = makeString(["%s", "refreshDLpDelay"], n)
143143
144144 let as = 1
145145
146146 let at = valueOrElse(getInteger(this, ar), as)
147147
148148 func au () = "%s__factoryConfig"
149149
150150
151151 func av () = "%s%s__matcher__publicKey"
152152
153153
154154 func aw (ax,ay) = (((("%d%d%s__" + ax) + "__") + ay) + "__config")
155155
156156
157157 func az (aA) = ("%s%s%s__mappings__baseAsset2internalId__" + aA)
158158
159159
160160 func aB () = "%s__shutdown"
161161
162162
163163 func aC () = "%s__allowedLpStableScriptHash"
164164
165165
166166 func aD () = "%s__feeCollectorAddress"
167167
168168
169-func aE (aF,aG,aH) = throw(((((("Failed: ordValid=" + toString(aF)) + " sndrValid=") + toString(aG)) + " mtchrValid=") + toString(aH)))
169+func aE (aF,aG,aH,aI) = throw((((((((("order validation failed: orderValid=" + toString(aF)) + " (") + aG) + ")") + " senderValid=") + toString(aH)) + " matcherValid=") + toString(aI)))
170170
171171
172-func aI (aJ,aK) = valueOrErrorMessage(getString(aJ, aK), makeString(["mandatory ", toString(aJ), ".", aK, " not defined"], ""))
172+func aJ (aK,aL) = valueOrErrorMessage(getString(aK, aL), makeString(["mandatory ", toString(aK), ".", aL, " not defined"], ""))
173173
174174
175-func aL (aJ,aK) = valueOrErrorMessage(getInteger(aJ, aK), makeString(["mandatory ", toString(aJ), ".", aK, " not defined"], ""))
175+func aM (aK,aL) = valueOrErrorMessage(getInteger(aK, aL), makeString(["mandatory ", toString(aK), ".", aL, " not defined"], ""))
176176
177177
178-func aM (aN) = throw(makeString(["lp_stable.ride:", aN], " "))
178+func aN (aO) = throw(makeString(["lp_stable.ride:", aO], " "))
179179
180180
181-func aO (aN) = makeString(["lp_stable.ride:", aN], " ")
181+func aP (aO) = makeString(["lp_stable.ride:", aO], " ")
182182
183183
184-let aP = addressFromStringValue(aI(this, Y()))
184+let aQ = addressFromStringValue(aJ(this, Y()))
185185
186-let aQ = {
187- let aR = invoke(aP, "getInFeeREADONLY", [toString(this)], nil)
188- if ($isInstanceOf(aR, "Int"))
189- then aR
190- else throw(($getType(aR) + " couldn't be cast to Int"))
186+let aR = {
187+ let aS = invoke(aQ, "getInFeeREADONLY", [toString(this)], nil)
188+ if ($isInstanceOf(aS, "Int"))
189+ then aS
190+ else throw(($getType(aS) + " couldn't be cast to Int"))
191191 }
192192
193-let aS = {
194- let aR = invoke(aP, "getOutFeeREADONLY", [toString(this)], nil)
195- if ($isInstanceOf(aR, "Int"))
196- then aR
197- else throw(($getType(aR) + " couldn't be cast to Int"))
193+let aT = {
194+ let aS = invoke(aQ, "getOutFeeREADONLY", [toString(this)], nil)
195+ if ($isInstanceOf(aS, "Int"))
196+ then aS
197+ else throw(($getType(aS) + " couldn't be cast to Int"))
198198 }
199199
200-let aT = aI(this, al())
200+let aU = aJ(this, al())
201201
202-func aU () = valueOrElse(getBoolean(aP, aB()), false)
202+func aV () = valueOrElse(getBoolean(aQ, aB()), false)
203203
204204
205-func aV () = fromBase58String(aI(aP, av()))
205+func aW () = fromBase58String(aJ(aQ, av()))
206206
207207
208-let aW = addressFromStringValue(aI(aP, aD()))
208+let aX = addressFromStringValue(aJ(aQ, aD()))
209209
210-func aX () = {
211- let aY = aI(this, aj())
212- let aZ = aI(this, ak())
213- let ba = aL(aP, az(aZ))
214- let ax = aL(aP, az(aY))
215- split(aI(aP, aw(toString(ax), toString(ba))), n)
210+func aY () = {
211+ let aZ = aJ(this, aj())
212+ let ba = aJ(this, ak())
213+ let bb = aM(aQ, az(ba))
214+ let ax = aM(aQ, az(aZ))
215+ split(aJ(aQ, aw(toString(ax), toString(bb))), n)
216216 }
217217
218218
219-func bb (bc) = if ((bc == k))
219+func bc (bd) = if ((bd == k))
220220 then unit
221- else fromBase58String(bc)
221+ else fromBase58String(bd)
222222
223223
224-func bd (bc) = if ((bc == unit))
224+func be (bd) = if ((bd == unit))
225225 then k
226- else toBase58String(value(bc))
226+ else toBase58String(value(bd))
227227
228228
229-func be (bf) = $Tuple9(addressFromStringValue(bf[t]), parseIntValue(bf[u]), fromBase58String(bf[v]), bb(bf[w]), bb(bf[x]), parseIntValue(bf[y]), parseIntValue(bf[z]), fromBase58String(bf[A]), fromBase58String(bf[B]))
229+func bf (bg) = $Tuple9(addressFromStringValue(bg[t]), parseIntValue(bg[u]), fromBase58String(bg[v]), bc(bg[w]), bc(bg[x]), parseIntValue(bg[y]), parseIntValue(bg[z]), fromBase58String(bg[A]), fromBase58String(bg[B]))
230230
231231
232-let bg = be(aX())
232+let bh = bf(aY())
233233
234-let bh = bg
234+let bi = bh
235235
236-let bi = bh._1
236+let bj = bi._1
237237
238-let bj = bh._2
238+let bk = bi._2
239239
240-let bk = bh._3
240+let bl = bi._3
241241
242-let bl = bh._4
242+let bm = bi._4
243243
244-let bm = bh._5
244+let bn = bi._5
245245
246-let bn = bh._6
246+let bo = bi._6
247247
248-let bo = bh._7
248+let bp = bi._7
249249
250-let bp = bh._8
250+let bq = bi._8
251251
252-let bq = bh._9
252+let br = bi._9
253253
254-func br () = split(aI(aP, au()), n)
254+func bs () = split(aJ(aQ, au()), n)
255255
256256
257-let bs = br()
257+let bt = bs()
258258
259-let bt = valueOrErrorMessage(addressFromString(bs[C]), "Invalid staking contract address")
259+let bu = valueOrErrorMessage(addressFromString(bt[C]), "Invalid staking contract address")
260260
261-let bu = valueOrErrorMessage(addressFromString(bs[E]), "Invalid slipage contract address")
261+let bv = valueOrErrorMessage(addressFromString(bt[E]), "Invalid slipage contract address")
262262
263-let bv = valueOrErrorMessage(addressFromString(bs[F]), "Invalid gwx contract address")
263+let bw = valueOrErrorMessage(addressFromString(bt[F]), "Invalid gwx contract address")
264264
265-let bw = valueOrErrorMessage(addressFromString(bs[D]), "Invalid gwx contract address")
265+let bx = valueOrErrorMessage(addressFromString(bt[D]), "Invalid gwx contract address")
266266
267-func bx (by,bz,bA,bB,bC,bD,bE,bF,bG,bH) = makeString(["%d%d%d%d%d%d%d%d%d%d", toString(by), toString(bz), toString(bA), toString(bB), toString(bC), toString(bD), toString(bE), toString(bF), toString(bG), toString(bH)], n)
267+func by (bz,bA,bB,bC,bD,bE,bF,bG,bH,bI) = makeString(["%d%d%d%d%d%d%d%d%d%d", toString(bz), toString(bA), toString(bB), toString(bC), toString(bD), toString(bE), toString(bF), toString(bG), toString(bH), toString(bI)], n)
268268
269269
270-func bI (bJ,bK,bL,bB,bE,bF) = makeString(["%d%d%d%d%d%d", toString(bJ), toString(bK), toString(bL), toString(bB), toString(bE), toString(bF)], n)
270+func bJ (bK,bL,bM,bC,bF,bG) = makeString(["%d%d%d%d%d%d", toString(bK), toString(bL), toString(bM), toString(bC), toString(bF), toString(bG)], n)
271271
272272
273-func bM (bN) = if ((bN == "WAVES"))
273+func bN (bO) = if ((bO == "WAVES"))
274274 then wavesBalance(this).available
275- else assetBalance(this, fromBase58String(bN))
275+ else assetBalance(this, fromBase58String(bO))
276276
277277
278-func bO (bP,bQ) = fraction(bP, c, bQ)
278+func bP (bQ,bR) = fraction(bQ, c, bR)
279279
280280
281-func bR (bP,bQ,P) = fraction(bP, c, bQ, P)
281+func bS (bQ,bR,P) = fraction(bQ, c, bR, P)
282282
283283
284-func bS (bT,bU,bV) = {
285- let bW = fraction((bT - bU), b, bU)
286- let bX = ((bV - W(bW)) > d)
287- if (!(bX))
288- then throw(("Big slpg: " + toString(bW)))
289- else $Tuple2(bX, min([bT, bU]))
284+func bT (bU,bV,bW) = {
285+ let bX = fraction((bU - bV), b, bV)
286+ let bY = ((bW - W(bX)) > d)
287+ if (!(bY))
288+ then throw(("Big slpg: " + toString(bX)))
289+ else $Tuple2(bY, min([bU, bV]))
290290 }
291291
292292
293-func bY (bZ,ca,cb) = {
294- let bW = fraction(ca, b, bZ)
295- let cc = (cb > bW)
296- if (if (cc)
293+func bZ (ca,cb,cc) = {
294+ let bX = fraction(cb, b, ca)
295+ let cd = (cc > bX)
296+ if (if (cd)
297297 then true
298- else (ca > bZ))
299- then throw(((((((toString(ca) + " ") + toString(bZ)) + " ") + toString(bW)) + " ") + toString(cb)))
300- else cc
298+ else (cb > ca))
299+ then throw(((((((toString(cb) + " ") + toString(ca)) + " ") + toString(bX)) + " ") + toString(cc)))
300+ else cd
301301 }
302302
303303
304-func cd (ce,cf,cg,ch) = {
305- let ci = H(cg, ce)
304+func ce (cf,cg,ch,ci) = {
306305 let cj = H(ch, cf)
307- bO(cj, ci)
306+ let ck = H(ci, cg)
307+ bP(ck, cj)
308308 }
309309
310310
311-func ck (cg,ch,cl) = {
312- let cm = bn
311+func cl (ch,ci,cm) = {
313312 let cn = bo
314- let co = cd(cm, cn, cg, ch)
315- let bQ = H(cg, cm)
316- let bP = H(ch, cn)
317- let cp = H(cl, a)
318- let cq = bO(bQ, cp)
319- let cr = bO(bP, cp)
320-[co, cq, cr]
313+ let co = bp
314+ let cp = ce(cn, co, ch, ci)
315+ let bR = H(ch, cn)
316+ let bQ = H(ci, co)
317+ let cq = H(cm, a)
318+ let cr = bP(bR, cq)
319+ let cs = bP(bQ, cq)
320+[cp, cr, cs]
321321 }
322322
323323
324-func cs (cg,ch,cl) = {
325- let ct = ck(cg, ch, cl)
326-[L(ct[0], a), L(ct[1], a), L(ct[2], a)]
324+func ct (ch,ci,cm) = {
325+ let cu = cl(ch, ci, cm)
326+[L(cu[0], a), L(cu[1], a), L(cu[2], a)]
327327 }
328328
329329
330-func cu (cv,ao) = {
331- let cw = if ((ao == 0))
330+func cv (cw,ao) = {
331+ let cx = if ((ao == 0))
332332 then 0
333- else fraction(cv, ao, a)
334- $Tuple2((cv - cw), cw)
333+ else fraction(cw, ao, a)
334+ $Tuple2((cw - cx), cx)
335335 }
336336
337337
338-func cx (cy) = {
339- let cz = cy[0]
340- let cA = cy[1]
341- let cB = (cz + cA)
342- if ((cB == e))
338+func cy (cz) = {
339+ let cA = cz[0]
340+ let cB = cz[1]
341+ let cC = (cA + cB)
342+ if ((cC == e))
343343 then e
344344 else {
345- let cC = parseIntValue(aT)
346- let cD = (cC * 2)
347- let ct = fraction(cz, cA, f)
348- let cE = fraction(ct, i, f)
349- let cF = fraction(toBigInt(cD), cB, f)
350- let cG = toBigInt((cD - 1))
351- func cH (cI) = {
352- let cJ = fraction(cI, cI, f)
353- let cK = fraction(cJ, cI, f)
354- let cL = fraction(cK, f, cE)
355- fraction((cF + fraction(cL, g, f)), cI, (fraction(cG, cI, f) + fraction(h, cL, f)))
345+ let cD = parseIntValue(aU)
346+ let cE = (cD * 2)
347+ let cu = fraction(cA, cB, f)
348+ let cF = fraction(cu, i, f)
349+ let cG = fraction(toBigInt(cE), cC, f)
350+ let cH = toBigInt((cE - 1))
351+ func cI (cJ) = {
352+ let cK = fraction(cJ, cJ, f)
353+ let cL = fraction(cK, cJ, f)
354+ let cM = fraction(cL, f, cF)
355+ fraction((cG + fraction(cM, g, f)), cJ, (fraction(cH, cJ, f) + fraction(h, cM, f)))
356356 }
357357
358- func cM (cN,cO) = if (cN._2)
359- then cN
358+ func cN (cO,cP) = if (cO._2)
359+ then cO
360360 else {
361- let cI = cN._1
362- let cP = cH(cI)
363- let cQ = (cP - value(cI))
364- let cR = if ((e > cQ))
365- then -(cQ)
366- else cQ
367- if ((f >= cR))
368- then $Tuple2(cP, true)
369- else $Tuple2(cP, false)
361+ let cJ = cO._1
362+ let cQ = cI(cJ)
363+ let cR = (cQ - value(cJ))
364+ let cS = if ((e > cR))
365+ then -(cR)
366+ else cR
367+ if ((f >= cS))
368+ then $Tuple2(cQ, true)
369+ else $Tuple2(cQ, false)
370370 }
371371
372- let cS = [0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14]
373- let cT = {
374- let cU = cS
375- let cV = size(cU)
376- let cW = $Tuple2(cB, false)
377- func cX (cY,cZ) = if ((cZ >= cV))
378- then cY
379- else cM(cY, cU[cZ])
372+ let cT = [0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14]
373+ let cU = {
374+ let cV = cT
375+ let cW = size(cV)
376+ let cX = $Tuple2(cC, false)
377+ func cY (cZ,da) = if ((da >= cW))
378+ then cZ
379+ else cN(cZ, cV[da])
380380
381- func da (cY,cZ) = if ((cZ >= cV))
382- then cY
381+ func db (cZ,da) = if ((da >= cW))
382+ then cZ
383383 else throw("List size exceeds 15")
384384
385- da(cX(cX(cX(cX(cX(cX(cX(cX(cX(cX(cX(cX(cX(cX(cX(cW, 0), 1), 2), 3), 4), 5), 6), 7), 8), 9), 10), 11), 12), 13), 14), 15)
385+ db(cY(cY(cY(cY(cY(cY(cY(cY(cY(cY(cY(cY(cY(cY(cY(cX, 0), 1), 2), 3), 4), 5), 6), 7), 8), 9), 10), 11), 12), 13), 14), 15)
386386 }
387- let cI = cT._1
388- let db = cT._2
389- if (db)
390- then cI
391- else throw(("D calculation error, D = " + toString(cI)))
387+ let cJ = cU._1
388+ let dc = cU._2
389+ if (dc)
390+ then cJ
391+ else throw(("D calculation error, D = " + toString(cJ)))
392392 }
393393 }
394394
395395
396-func dc (dd,de,df,dg) = {
397- let dh = bk
398- let di = toBase58String(value(bl))
396+func dd (de,df,dg,dh) = {
397+ let di = bl
399398 let dj = toBase58String(value(bm))
400- let dk = bn
399+ let dk = toBase58String(value(bn))
401400 let dl = bo
402- let dm = toString(bj)
403- let dn = valueOrErrorMessage(assetInfo(dh), "Wrong LP id").quantity
404- if ((toBase58String(dh) != de))
401+ let dm = bp
402+ let dn = toString(bk)
403+ let do = valueOrErrorMessage(assetInfo(di), "Wrong LP id").quantity
404+ if ((toBase58String(di) != df))
405405 then throw("Wrong pmt asset")
406406 else {
407- let do = bM(di)
408- let dp = H(do, dk)
409- let dq = bM(dj)
410- let dr = H(dq, dl)
411- let ds = bO(dr, dp)
412- let dt = L(ds, a)
413- let du = H(df, a)
414- let dv = H(dn, a)
415- let dw = fraction(dp, du, dv)
416- let dx = fraction(dr, du, dv)
417- let dy = O(dw, dk, FLOOR)
407+ let dp = bN(dj)
408+ let dq = H(dp, dl)
409+ let dr = bN(dk)
410+ let ds = H(dr, dm)
411+ let dt = bP(ds, dq)
412+ let du = L(dt, a)
413+ let dv = H(dg, a)
414+ let dw = H(do, a)
415+ let dx = fraction(dq, dv, dw)
416+ let dy = fraction(ds, dv, dw)
418417 let dz = O(dx, dl, FLOOR)
419- let dA = if ((dd == ""))
418+ let dA = O(dy, dm, FLOOR)
419+ let dB = if ((de == ""))
420420 then nil
421- else [ScriptTransfer(dg, dy, if ((di == "WAVES"))
421+ else [ScriptTransfer(dh, dz, if ((dj == "WAVES"))
422422 then unit
423- else fromBase58String(di)), ScriptTransfer(dg, dz, if ((dj == "WAVES"))
423+ else fromBase58String(dj)), ScriptTransfer(dh, dA, if ((dk == "WAVES"))
424424 then unit
425- else fromBase58String(dj)), StringEntry(ai(toString(dg), dd), bI(dy, dz, df, dt, height, lastBlock.timestamp)), IntegerEntry(ab(), dt), IntegerEntry(ac(height, lastBlock.timestamp), dt)]
426- $Tuple10(dy, dz, di, dj, do, dq, dn, ds, dm, dA)
425+ else fromBase58String(dk)), StringEntry(ai(toString(dh), de), bJ(dz, dA, dg, du, height, lastBlock.timestamp)), IntegerEntry(ab(), du), IntegerEntry(ac(height, lastBlock.timestamp), du)]
426+ $Tuple10(dz, dA, dj, dk, dp, dr, do, dt, dn, dB)
427427 }
428428 }
429429
430430
431-func dB (dd,bV,dC,dD,dE,dF,dg,dG,dH,dI,dJ,dK,dL) = {
432- let dh = bk
433- let dM = toBase58String(value(bl))
431+func dC (de,bW,dD,dE,dF,dG,dh,dH,dI,dJ,dK,dL,dM) = {
432+ let di = bl
434433 let dN = toBase58String(value(bm))
435- let dO = bp
434+ let dO = toBase58String(value(bn))
436435 let dP = bq
437- let dQ = bn
436+ let dQ = br
438437 let dR = bo
439- let dm = toString(bj)
440- let dS = valueOrErrorMessage(assetInfo(dh), "Wr lp as").quantity
441- let do = if (dG)
442- then bM(dM)
443- else if (if (dI)
444- then (dL == dM)
438+ let dS = bp
439+ let dn = toString(bk)
440+ let dT = valueOrErrorMessage(assetInfo(di), "Wr lp as").quantity
441+ let dp = if (dH)
442+ then bN(dN)
443+ else if (if (dJ)
444+ then (dM == dN)
445445 else false)
446- then (bM(dM) - dK)
447- else if (dI)
448- then bM(dM)
449- else (bM(dM) - dC)
450- let dq = if (dG)
451- then bM(dN)
452- else if (if (dI)
453- then (dL == dN)
446+ then (bN(dN) - dL)
447+ else if (dJ)
448+ then bN(dN)
449+ else (bN(dN) - dD)
450+ let dr = if (dH)
451+ then bN(dO)
452+ else if (if (dJ)
453+ then (dM == dO)
454454 else false)
455- then (bM(dN) - dK)
456- else if (dI)
457- then bM(dN)
458- else (bM(dN) - dE)
459- let dT = H(dC, dQ)
460- let dU = H(dE, dR)
461- let dV = bO(dU, dT)
462- let dp = H(do, dQ)
463- let dr = H(dq, dR)
464- let ca = cx([dp, dr])
465- let dW = if ((dS == 0))
455+ then (bN(dO) - dL)
456+ else if (dJ)
457+ then bN(dO)
458+ else (bN(dO) - dF)
459+ let dU = H(dD, dR)
460+ let dV = H(dF, dS)
461+ let dW = bP(dV, dU)
462+ let dq = H(dp, dR)
463+ let ds = H(dr, dS)
464+ let cb = cy([dq, ds])
465+ let dX = if ((dT == 0))
466466 then {
467- let bZ = cx([(dp + dT), (dr + dU)])
468- let dX = if ((bZ > ca))
467+ let ca = cy([(dq + dU), (ds + dV)])
468+ let dY = if ((ca > cb))
469469 then true
470470 else throw("D1 should be greater than D0")
471- if ((dX == dX))
471+ if ((dY == dY))
472472 then {
473- let ds = d
474- let dY = d
475- let cp = bZ
476- $Tuple5(L(cp, a), L(dT, dQ), L(dU, dR), bO((dr + dU), (dp + dT)), dY)
473+ let dt = d
474+ let dZ = d
475+ let cq = ca
476+ $Tuple5(L(cq, a), L(dU, dR), L(dV, dS), bP((ds + dV), (dq + dU)), dZ)
477477 }
478478 else throw("Strict value is not equal to itself.")
479479 }
480480 else {
481- let ds = bO(dr, dp)
482- let dZ = fraction(W((ds - dV)), c, ds)
483- let dY = H(bV, a)
484- if (if (if (dJ)
485- then (ds != d)
481+ let dt = bP(ds, dq)
482+ let ea = fraction(W((dt - dW)), c, dt)
483+ let dZ = H(bW, a)
484+ if (if (if (dK)
485+ then (dt != d)
486486 else false)
487- then (dZ > dY)
487+ then (ea > dZ)
488488 else false)
489- then throw(((("Price slippage " + toString(dZ)) + " > ") + toString(dY)))
489+ then throw(((("Price slippage " + toString(ea)) + " > ") + toString(dZ)))
490490 else {
491- let ea = H(dS, a)
492- let eb = fraction(dT, bR(dr, dp, CEILING), c, CEILING)
493- let ec = fraction(dU, c, bR(dr, dp, FLOOR), CEILING)
494- let ed = if ((eb > dU))
495- then $Tuple2(ec, dU)
496- else $Tuple2(dT, eb)
497- let ee = ed._1
498- let ef = ed._2
499- let bZ = cx([(dp + ee), (dr + ef)])
500- let dX = if ((bZ > ca))
491+ let eb = H(dT, a)
492+ let ec = fraction(dU, bS(ds, dq, CEILING), c, CEILING)
493+ let ed = fraction(dV, c, bS(ds, dq, FLOOR), CEILING)
494+ let ee = if ((ec > dV))
495+ then $Tuple2(ed, dV)
496+ else $Tuple2(dU, ec)
497+ let ef = ee._1
498+ let eg = ee._2
499+ let ca = cy([(dq + ef), (ds + eg)])
500+ let dY = if ((ca > cb))
501501 then true
502502 else throw("D1 should be greater than D0")
503- if ((dX == dX))
503+ if ((dY == dY))
504504 then {
505- let cp = fraction(ea, (bZ - ca), ca)
506- $Tuple5(O(cp, a, FLOOR), O(ee, dQ, CEILING), O(ef, dR, CEILING), ds, dY)
505+ let cq = fraction(eb, (ca - cb), cb)
506+ $Tuple5(O(cq, a, FLOOR), O(ef, dR, CEILING), O(eg, dS, CEILING), dt, dZ)
507507 }
508508 else throw("Strict value is not equal to itself.")
509509 }
510510 }
511- let eg = dW._1
512- let eh = dW._2
513- let ei = dW._3
514- let dt = L(dW._4, a)
515- let ej = L(dW._5, a)
516- if ((0 >= eg))
511+ let eh = dX._1
512+ let ei = dX._2
513+ let ej = dX._3
514+ let du = L(dX._4, a)
515+ let ek = L(dX._5, a)
516+ if ((0 >= eh))
517517 then throw("LP <= 0")
518518 else {
519- let ek = if (!(dH))
519+ let el = if (!(dI))
520520 then 0
521- else eg
522- let el = (dC - eh)
523- let em = (dE - ei)
524- let en = if (if (dI)
525- then (dL == dM)
521+ else eh
522+ let em = (dD - ei)
523+ let en = (dF - ej)
524+ let eo = if (if (dJ)
525+ then (dM == dN)
526526 else false)
527- then $Tuple2(dK, 0)
528- else if (if (dI)
529- then (dL == dN)
527+ then $Tuple2(dL, 0)
528+ else if (if (dJ)
529+ then (dM == dO)
530530 else false)
531- then $Tuple2(0, dK)
532- else $Tuple2(eh, ei)
533- let eo = en._1
534- let ep = en._2
535- let eq = [IntegerEntry(ab(), dt), IntegerEntry(ac(height, lastBlock.timestamp), dt), StringEntry(af(dg, dd), bx(eo, ep, ek, dt, bV, ej, height, lastBlock.timestamp, el, em))]
536- $Tuple13(eg, ek, dt, do, dq, dS, dh, dm, eq, el, em, dD, dF)
531+ then $Tuple2(0, dL)
532+ else $Tuple2(ei, ej)
533+ let ep = eo._1
534+ let eq = eo._2
535+ let er = [IntegerEntry(ab(), du), IntegerEntry(ac(height, lastBlock.timestamp), du), StringEntry(af(dh, de), by(ep, eq, el, du, bW, ek, height, lastBlock.timestamp, em, en))]
536+ $Tuple13(eh, el, du, dp, dr, dT, di, dn, er, em, en, dE, dG)
537537 }
538538 }
539539
540540
541-func er (cy,cO,es) = {
542- let et = g
543- let eu = cy[if ((cO == 0))
541+func es (cz,cP,et) = {
542+ let eu = g
543+ let ev = cz[if ((cP == 0))
544544 then 1
545545 else 0]
546- let ev = parseBigIntValue(l)
547- let cC = (parseBigIntValue(aT) * ev)
548- let cB = eu
549- let cD = (cC * et)
550- let ew = (((((es * es) / (eu * et)) * es) * ev) / (cD * et))
551- let ex = ((cB + ((es * ev) / cD)) - es)
552- func cM (cN,ey) = {
553- let ez = cN
554- let eA = ez._1
555- let db = ez._2
556- if ((db != unit))
557- then cN
546+ let ew = parseBigIntValue(l)
547+ let cD = (parseBigIntValue(aU) * ew)
548+ let cC = ev
549+ let cE = (cD * eu)
550+ let ex = (((((et * et) / (ev * eu)) * et) * ew) / (cE * eu))
551+ let ey = ((cC + ((et * ew) / cE)) - et)
552+ func cN (cO,ez) = {
553+ let eA = cO
554+ let eB = eA._1
555+ let dc = eA._2
556+ if ((dc != unit))
557+ then cO
558558 else {
559- let eB = (((eA * eA) + ew) / ((g * eA) + ex))
560- let eC = X((eB - value(eA)))
561- if ((f >= eC))
562- then $Tuple2(eB, ey)
563- else $Tuple2(eB, unit)
559+ let eC = (((eB * eB) + ex) / ((g * eB) + ey))
560+ let eD = X((eC - value(eB)))
561+ if ((f >= eD))
562+ then $Tuple2(eC, ez)
563+ else $Tuple2(eC, unit)
564564 }
565565 }
566566
567- let cS = [0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14]
568- let eD = {
569- let cU = cS
570- let cV = size(cU)
571- let cW = $Tuple2(es, unit)
572- func cX (cY,cZ) = if ((cZ >= cV))
573- then cY
574- else cM(cY, cU[cZ])
567+ let cT = [0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14]
568+ let eE = {
569+ let cV = cT
570+ let cW = size(cV)
571+ let cX = $Tuple2(et, unit)
572+ func cY (cZ,da) = if ((da >= cW))
573+ then cZ
574+ else cN(cZ, cV[da])
575575
576- func da (cY,cZ) = if ((cZ >= cV))
577- then cY
576+ func db (cZ,da) = if ((da >= cW))
577+ then cZ
578578 else throw("List size exceeds 15")
579579
580- da(cX(cX(cX(cX(cX(cX(cX(cX(cX(cX(cX(cX(cX(cX(cX(cW, 0), 1), 2), 3), 4), 5), 6), 7), 8), 9), 10), 11), 12), 13), 14), 15)
580+ db(cY(cY(cY(cY(cY(cY(cY(cY(cY(cY(cY(cY(cY(cY(cY(cX, 0), 1), 2), 3), 4), 5), 6), 7), 8), 9), 10), 11), 12), 13), 14), 15)
581581 }
582- let eA = eD._1
583- let db = eD._2
584- if ((db != unit))
585- then eA
586- else throw(("Y calculation error, Y = " + toString(eA)))
582+ let eB = eE._1
583+ let dc = eE._2
584+ if ((dc != unit))
585+ then eB
586+ else throw(("Y calculation error, Y = " + toString(eB)))
587587 }
588588
589589
590-func eE (eF,eG,eH) = {
591- let eI = fraction(cx([K(eF, toBigInt(bn)), K(eG, toBigInt(bo))]), c, eH)
592- if ((eH == e))
590+func eF (eG,eH,eI) = {
591+ let eJ = fraction(cy([K(eG, toBigInt(bo)), K(eH, toBigInt(bp))]), c, eI)
592+ if ((eI == e))
593593 then e
594- else eI
594+ else eJ
595595 }
596596
597597
598-func eJ (eK,eL,eM) = {
599- let eN = (toBigInt(bM(bd(bl))) - eK)
600- let eO = (toBigInt(bM(bd(bm))) - eL)
601- let eP = (toBigInt(value(assetInfo(bk)).quantity) - eM)
602- let eQ = eE(eN, eO, eP)
603- eQ
598+func eK (eL,eM,eN) = {
599+ let eO = (toBigInt(bN(be(bm))) - eL)
600+ let eP = (toBigInt(bN(be(bn))) - eM)
601+ let eQ = (toBigInt(value(assetInfo(bl)).quantity) - eN)
602+ let eR = eF(eO, eP, eQ)
603+ eR
604604 }
605605
606606
607-func eR (eS,eT,eM) = {
608- let eN = (bM(bd(bl)) + eS)
609- let eO = (bM(bd(bm)) + eT)
610- let eP = (value(assetInfo(bk)).quantity + eM)
611- let eI = eE(toBigInt(eN), toBigInt(eO), toBigInt(eP))
612- let eU = [IntegerEntry(aq, height), StringEntry(ap, toString(eI))]
613- $Tuple2(eU, eI)
607+func eS (eT,eU,eN) = {
608+ let eO = (bN(be(bm)) + eT)
609+ let eP = (bN(be(bn)) + eU)
610+ let eQ = (value(assetInfo(bl)).quantity + eN)
611+ let eJ = eF(toBigInt(eO), toBigInt(eP), toBigInt(eQ))
612+ let eV = [IntegerEntry(aq, height), StringEntry(ap, toString(eJ))]
613+ $Tuple2(eV, eJ)
614614 }
615615
616616
617-func eV (eW,eI) = if ((eI >= eW))
617+func eW (eX,eJ) = if ((eJ >= eX))
618618 then true
619- else aM("updated DLp lower than current DLp")
619+ else aN("updated DLp lower than current DLp")
620620
621621
622-func eX (eY) = {
623- let eZ = eY.amount
624- let fa = fraction(eY.amount, eY.price, a, FLOOR)
625- let fb = if ((eY.orderType == Buy))
626- then $Tuple2(eZ, -(fa))
627- else $Tuple2(-(eZ), fa)
628- let eS = fb._1
629- let eT = fb._2
630- if (if (if (aU())
622+func eY (eZ) = {
623+ let fa = eZ.amount
624+ let fb = fraction(eZ.amount, eZ.price, a, FLOOR)
625+ let fc = if ((eZ.orderType == Buy))
626+ then $Tuple2(fa, -(fb))
627+ else $Tuple2(-(fa), fb)
628+ let eT = fc._1
629+ let eU = fc._2
630+ if (if (if (aV())
631631 then true
632- else (bj == r))
632+ else (bk == r))
633633 then true
634- else (bj == s))
634+ else (bk == s))
635635 then throw("Admin blocked")
636- else if (if ((eY.assetPair.amountAsset != bl))
636+ else if (if ((eZ.assetPair.amountAsset != bm))
637637 then true
638- else (eY.assetPair.priceAsset != bm))
638+ else (eZ.assetPair.priceAsset != bn))
639639 then throw("Wr assets")
640640 else {
641- let fc = parseBigIntValue(getStringValue(this, ap))
642- let fd = eR(eS, eT, 0)
643- let fe = fd._1
644- let ff = fd._2
645- let fg = (ff >= fc)
646- fg
641+ let fd = parseBigIntValue(getStringValue(this, ap))
642+ let fe = eS(eT, eU, 0)
643+ let ff = fe._1
644+ let fg = fe._2
645+ let fh = (fg >= fd)
646+ let fi = makeString([toString(fd), toString(fg)], " ")
647+ $Tuple2(fh, fi)
647648 }
648649 }
649650
650651
651-func fh (cO) = if ((size(cO.payments) != 1))
652+func fj (cP) = if ((size(cP.payments) != 1))
652653 then throw("1 pmnt exp")
653654 else {
654- let fi = value(cO.payments[0])
655- let de = value(fi.assetId)
656- let dK = fi.amount
657- let dW = dc(toBase58String(cO.transactionId), toBase58String(de), dK, cO.caller)
658- let dy = dW._1
659- let dz = dW._2
660- let dm = parseIntValue(dW._9)
661- let dA = dW._10
662- if (if (aU())
655+ let fk = value(cP.payments[0])
656+ let df = value(fk.assetId)
657+ let dL = fk.amount
658+ let dX = dd(toBase58String(cP.transactionId), toBase58String(df), dL, cP.caller)
659+ let dz = dX._1
660+ let dA = dX._2
661+ let dn = parseIntValue(dX._9)
662+ let dB = dX._10
663+ if (if (aV())
663664 then true
664- else (dm == s))
665- then throw(("Admin blocked: " + toString(dm)))
666- else $Tuple5(dy, dz, dK, de, dA)
665+ else (dn == s))
666+ then throw(("Admin blocked: " + toString(dn)))
667+ else $Tuple5(dz, dA, dL, df, dB)
667668 }
668669
669670
670-func fj (fk,ah,fl,fm,bV,dH,dI,dJ,dK,dL) = {
671- let dW = dB(ah, bV, value(fl).amount, value(fl).assetId, value(fm).amount, value(fm).assetId, fk, (ah == ""), dH, dI, dJ, dK, dL)
672- let dm = parseIntValue(dW._8)
673- if (if (if (aU())
671+func fl (fm,ah,fn,fo,bW,dI,dJ,dK,dL,dM) = {
672+ let dX = dC(ah, bW, value(fn).amount, value(fn).assetId, value(fo).amount, value(fo).assetId, fm, (ah == ""), dI, dJ, dK, dL, dM)
673+ let dn = parseIntValue(dX._8)
674+ if (if (if (aV())
674675 then true
675- else (dm == q))
676+ else (dn == q))
676677 then true
677- else (dm == s))
678- then throw(("Blocked:" + toString(dm)))
679- else dW
678+ else (dn == s))
679+ then throw(("Blocked:" + toString(dn)))
680+ else dX
680681 }
681682
682683
683-func fn (fo,de,dg,ah,fp) = {
684- let di = toBase58String(value(bl))
684+func fp (fq,df,dh,ah,fr) = {
685685 let dj = toBase58String(value(bm))
686- let dh = bk
687- let dQ = bn
686+ let dk = toBase58String(value(bn))
687+ let di = bl
688688 let dR = bo
689- let eP = toBigInt(valueOrErrorMessage(assetInfo(dh), "invalid lp asset").quantity)
690- let fq = if ((eP > e))
689+ let dS = bp
690+ let eQ = toBigInt(valueOrErrorMessage(assetInfo(di), "invalid lp asset").quantity)
691+ let fs = if ((eQ > e))
691692 then true
692693 else throw("initial deposit requires all coins")
693- if ((fq == fq))
694+ if ((fs == fs))
694695 then {
695- let do = bM(di)
696- let dq = bM(dj)
697- let fr = if ((ah == ""))
698- then $Tuple2(do, dq)
699- else if ((de == di))
700- then if ((fo > do))
696+ let dp = bN(dj)
697+ let dr = bN(dk)
698+ let ft = if ((ah == ""))
699+ then $Tuple2(dp, dr)
700+ else if ((df == dj))
701+ then if ((fq > dp))
701702 then throw("invalid payment amount")
702- else $Tuple2((do - fo), dq)
703- else if ((de == dj))
704- then if ((fo > dq))
703+ else $Tuple2((dp - fq), dr)
704+ else if ((df == dk))
705+ then if ((fq > dr))
705706 then throw("invalid payment amount")
706- else $Tuple2(do, (dq - fo))
707+ else $Tuple2(dp, (dr - fq))
707708 else throw("wrong pmtAssetId")
708- let fs = fr._1
709- let ft = fr._2
710- let fu = if ((de == di))
711- then $Tuple2(fo, 0)
712- else if ((de == dj))
713- then $Tuple2(0, fo)
709+ let fu = ft._1
710+ let fv = ft._2
711+ let fw = if ((df == dj))
712+ then $Tuple2(fq, 0)
713+ else if ((df == dk))
714+ then $Tuple2(0, fq)
714715 else throw("invalid payment")
715- let fv = fu._1
716- let fw = fu._2
717- let fx = if (fp)
718- then $Tuple3(cu(fv, aQ)._1, cu(fw, aQ)._1, cu(fo, aQ)._2)
719- else $Tuple3(fv, fw, 0)
720- let fy = fx._1
721- let fz = fx._2
722- let cw = fx._3
723- let fA = (fs + fy)
724- let fB = (ft + fz)
725- let ca = cx([H(fs, bn), H(ft, bo)])
726- let bZ = cx([H(fA, bn), H(fB, bo)])
727- let dX = if ((bZ > ca))
716+ let fx = fw._1
717+ let fy = fw._2
718+ let fz = if (fr)
719+ then $Tuple3(cv(fx, aR)._1, cv(fy, aR)._1, cv(fq, aR)._2)
720+ else $Tuple3(fx, fy, 0)
721+ let fA = fz._1
722+ let fB = fz._2
723+ let cx = fz._3
724+ let fC = (fu + fA)
725+ let fD = (fv + fB)
726+ let cb = cy([H(fu, bo), H(fv, bp)])
727+ let ca = cy([H(fC, bo), H(fD, bp)])
728+ let dY = if ((ca > cb))
728729 then true
729730 else throw()
730- if ((dX == dX))
731+ if ((dY == dY))
731732 then {
732- let fC = fraction(eP, (bZ - ca), ca, FLOOR)
733- let dt = L(bO(H(fB, dR), H(fA, dQ)), a)
734- let eq = [IntegerEntry(ab(), dt), IntegerEntry(ac(height, lastBlock.timestamp), dt), StringEntry(af(dg, ah), bx(fv, fw, toInt(fC), dt, 0, 0, height, lastBlock.timestamp, 0, 0))]
735- let fD = fraction(ft, a, fs)
736- let fE = fraction(fo, a, (fD + a))
737- let fF = (fo - fE)
738- let fG = fraction(eP, toBigInt(fF), toBigInt(ft))
739- let fH = toInt(fraction((fC - fG), b, fG))
740- $Tuple4(toInt(fC), eq, cw, fH)
733+ let fE = fraction(eQ, (ca - cb), cb, FLOOR)
734+ let du = L(bP(H(fD, dS), H(fC, dR)), a)
735+ let er = [IntegerEntry(ab(), du), IntegerEntry(ac(height, lastBlock.timestamp), du), StringEntry(af(dh, ah), by(fx, fy, toInt(fE), du, 0, 0, height, lastBlock.timestamp, 0, 0))]
736+ let fF = fraction(fv, a, fu)
737+ let fG = fraction(fq, a, (fF + a))
738+ let fH = (fq - fG)
739+ let fI = fraction(eQ, toBigInt(fH), toBigInt(fv))
740+ let fJ = toInt(fraction((fE - fI), b, fI))
741+ $Tuple4(toInt(fE), er, cx, fJ)
741742 }
742743 else throw("Strict value is not equal to itself.")
743744 }
744745 else throw("Strict value is not equal to itself.")
745746 }
746747
747748
748-func fI (fJ,fK,fL,fk,fM,fN) = {
749- let dh = toBase58String(value(bk))
749+func fK (fL,fM,fN,fm,fO,fP) = {
750750 let di = toBase58String(value(bl))
751751 let dj = toBase58String(value(bm))
752- let fO = bn
753- let fP = bo
754- let fQ = bj
755- let dg = if ((fk == bw))
756- then fM
757- else fk
758- let fi = value(fL[0])
759- let de = value(fi.assetId)
760- let dK = fi.amount
761- let eQ = eJ(e, e, e)
762- if ((eQ == eQ))
752+ let dk = toBase58String(value(bn))
753+ let fQ = bo
754+ let fR = bp
755+ let fS = bk
756+ let dh = if ((fm == bx))
757+ then fO
758+ else fm
759+ let fk = value(fN[0])
760+ let df = value(fk.assetId)
761+ let dL = fk.amount
762+ let eR = eK(e, e, e)
763+ if ((eR == eR))
763764 then {
764- let dd = toBase58String(fN)
765- if ((dh != toBase58String(de)))
765+ let de = toBase58String(fP)
766+ if ((di != toBase58String(df)))
766767 then throw("Wrong LP")
767768 else {
768- let do = bM(di)
769- let dq = bM(dj)
770- let fR = {
771- let aR = invoke(this, "getOneTknV2READONLY", [fJ, dK], nil)
772- if ($isInstanceOf(aR, "(Int, Int)"))
773- then aR
774- else throw(($getType(aR) + " couldn't be cast to (Int, Int)"))
769+ let dp = bN(dj)
770+ let dr = bN(dk)
771+ let fT = {
772+ let aS = invoke(this, "getOneTknV2READONLY", [fL, dL], nil)
773+ if ($isInstanceOf(aS, "(Int, Int)"))
774+ then aS
775+ else throw(($getType(aS) + " couldn't be cast to (Int, Int)"))
775776 }
776- if ((fR == fR))
777+ if ((fT == fT))
777778 then {
778- let cw = fR._2
779- let fS = fR._1
780- let fT = if (if ((fK > 0))
781- then (fK > fS)
779+ let cx = fT._2
780+ let fU = fT._1
781+ let fV = if (if ((fM > 0))
782+ then (fM > fU)
782783 else false)
783- then aM(makeString(["amount to receive is less than ", toString(fK)], ""))
784- else fS
785- let fU = if ((fJ == di))
786- then $Tuple4(fT, 0, ((do - fT) - cw), dq)
787- else if ((fJ == dj))
788- then $Tuple4(0, fT, do, ((dq - fT) - cw))
784+ then aN(makeString(["amount to receive is less than ", toString(fM)], ""))
785+ else fU
786+ let fW = if ((fL == dj))
787+ then $Tuple4(fV, 0, ((dp - fV) - cx), dr)
788+ else if ((fL == dk))
789+ then $Tuple4(0, fV, dp, ((dr - fV) - cx))
789790 else throw("invalid out asset id")
790- let fV = fU._1
791- let fW = fU._2
792- let fA = fU._3
793- let fB = fU._4
794- let fX = bO(H(fB, fP), H(fA, fO))
795- let fY = L(fX, a)
796- let fZ = if ((fJ == "WAVES"))
791+ let fX = fW._1
792+ let fY = fW._2
793+ let fC = fW._3
794+ let fD = fW._4
795+ let fZ = bP(H(fD, fR), H(fC, fQ))
796+ let ga = L(fZ, a)
797+ let gb = if ((fL == "WAVES"))
797798 then unit
798- else fromBase58String(fJ)
799- let ga = if ((cw > 0))
800- then [ScriptTransfer(aW, cw, fZ)]
799+ else fromBase58String(fL)
800+ let gc = if ((cx > 0))
801+ then [ScriptTransfer(aX, cx, gb)]
801802 else nil
802- let dA = ([ScriptTransfer(dg, fT, fZ), StringEntry(ai(toString(dg), dd), bI(fV, fW, dK, fY, height, lastBlock.timestamp)), IntegerEntry(ab(), fY), IntegerEntry(ac(height, lastBlock.timestamp), fY)] ++ ga)
803- if ((dA == dA))
803+ let dB = ([ScriptTransfer(dh, fV, gb), StringEntry(ai(toString(dh), de), bJ(fX, fY, dL, ga, height, lastBlock.timestamp)), IntegerEntry(ab(), ga), IntegerEntry(ac(height, lastBlock.timestamp), ga)] ++ gc)
804+ if ((dB == dB))
804805 then {
805- let gb = invoke(aP, "burn", [dK], [AttachedPayment(de, dK)])
806- if ((gb == gb))
806+ let gd = invoke(aQ, "burn", [dL], [AttachedPayment(df, dL)])
807+ if ((gd == gd))
807808 then {
808- let gc = {
809- let gd = if ((this == aW))
809+ let ge = {
810+ let gf = if ((this == aX))
810811 then 0
811- else cw
812- let ge = if ((bb(fJ) == bl))
812+ else cx
813+ let gg = if ((bc(fL) == bm))
813814 then true
814815 else false
815- if (ge)
816- then $Tuple2(-((fS + gd)), 0)
817- else $Tuple2(0, -((fS + gd)))
816+ if (gg)
817+ then $Tuple2(-((fU + gf)), 0)
818+ else $Tuple2(0, -((fU + gf)))
818819 }
819- let eS = gc._1
820- let eT = gc._2
821- let gf = eR(eS, eT, 0)
822- let gg = gf._1
823- let eI = gf._2
824- let gh = eV(eQ, eI)
825- if ((gh == gh))
826- then $Tuple2((dA ++ gg), fT)
820+ let eT = ge._1
821+ let eU = ge._2
822+ let gh = eS(eT, eU, 0)
823+ let gi = gh._1
824+ let eJ = gh._2
825+ let gj = eW(eR, eJ)
826+ if ((gj == gj))
827+ then $Tuple2((dB ++ gi), fV)
827828 else throw("Strict value is not equal to itself.")
828829 }
829830 else throw("Strict value is not equal to itself.")
830831 }
831832 else throw("Strict value is not equal to itself.")
832833 }
833834 else throw("Strict value is not equal to itself.")
834835 }
835836 }
836837 else throw("Strict value is not equal to itself.")
837838 }
838839
839840
840-func gi () = {
841- let gj = getString(Z())
842- if ($isInstanceOf(gj, "String"))
841+func gk () = {
842+ let gl = getString(Z())
843+ if ($isInstanceOf(gl, "String"))
843844 then {
844- let cB = gj
845- fromBase58String(cB)
845+ let cC = gl
846+ fromBase58String(cC)
846847 }
847- else if ($isInstanceOf(gj, "Unit"))
848+ else if ($isInstanceOf(gl, "Unit"))
848849 then unit
849850 else throw("Match error")
850851 }
851852
852853
853-func gk () = {
854- let gj = getString(aa())
855- if ($isInstanceOf(gj, "String"))
854+func gm () = {
855+ let gl = getString(aa())
856+ if ($isInstanceOf(gl, "String"))
856857 then {
857- let cB = gj
858- fromBase58String(cB)
858+ let cC = gl
859+ fromBase58String(cC)
859860 }
860- else if ($isInstanceOf(gj, "Unit"))
861+ else if ($isInstanceOf(gl, "Unit"))
861862 then unit
862863 else throw("Match error")
863864 }
864865
865866
866-let gl = throw("Permission denied")
867+let gn = throw("Permission denied")
867868
868-func gm (cO) = {
869- let gj = gi()
870- if ($isInstanceOf(gj, "ByteVector"))
869+func go (cP) = {
870+ let gl = gk()
871+ if ($isInstanceOf(gl, "ByteVector"))
871872 then {
872- let gn = gj
873- (cO.callerPublicKey == gn)
873+ let gp = gl
874+ (cP.callerPublicKey == gp)
874875 }
875- else if ($isInstanceOf(gj, "Unit"))
876- then (cO.caller == this)
876+ else if ($isInstanceOf(gl, "Unit"))
877+ then (cP.caller == this)
877878 else throw("Match error")
878879 }
879880
880881
881-func go (cO) = {
882- let gj = gi()
883- if ($isInstanceOf(gj, "ByteVector"))
882+func gq (cP) = {
883+ let gl = gk()
884+ if ($isInstanceOf(gl, "ByteVector"))
884885 then {
885- let gn = gj
886- if ((cO.callerPublicKey == gn))
886+ let gp = gl
887+ if ((cP.callerPublicKey == gp))
887888 then true
888- else gl
889+ else gn
889890 }
890- else if ($isInstanceOf(gj, "Unit"))
891- then if ((cO.caller == this))
891+ else if ($isInstanceOf(gl, "Unit"))
892+ then if ((cP.caller == this))
892893 then true
893- else gl
894+ else gn
894895 else throw("Match error")
895896 }
896897
897898
898-@Callable(cO)
899+@Callable(cP)
899900 func constructor (Y) = {
900- let ew = go(cO)
901- if ((ew == ew))
901+ let ex = gq(cP)
902+ if ((ex == ex))
902903 then [StringEntry(Y(), Y)]
903904 else throw("Strict value is not equal to itself.")
904905 }
905906
906907
907908
908-@Callable(cO)
909-func setManager (gp) = {
910- let ew = go(cO)
911- if ((ew == ew))
909+@Callable(cP)
910+func setManager (gr) = {
911+ let ex = gq(cP)
912+ if ((ex == ex))
912913 then {
913- let gq = fromBase58String(gp)
914- if ((gq == gq))
915- then [StringEntry(aa(), gp)]
914+ let gs = fromBase58String(gr)
915+ if ((gs == gs))
916+ then [StringEntry(aa(), gr)]
916917 else throw("Strict value is not equal to itself.")
917918 }
918919 else throw("Strict value is not equal to itself.")
919920 }
920921
921922
922923
923-@Callable(cO)
924+@Callable(cP)
924925 func confirmManager () = {
925- let ct = gk()
926- let gr = if (isDefined(ct))
926+ let cu = gm()
927+ let gt = if (isDefined(cu))
927928 then true
928929 else throw("No pending manager")
929- if ((gr == gr))
930+ if ((gt == gt))
930931 then {
931- let gs = if ((cO.callerPublicKey == value(ct)))
932+ let gu = if ((cP.callerPublicKey == value(cu)))
932933 then true
933934 else throw("You are not pending manager")
934- if ((gs == gs))
935- then [StringEntry(Z(), toBase58String(value(ct))), DeleteEntry(aa())]
935+ if ((gu == gu))
936+ then [StringEntry(Z(), toBase58String(value(cu))), DeleteEntry(aa())]
936937 else throw("Strict value is not equal to itself.")
937938 }
938939 else throw("Strict value is not equal to itself.")
939940 }
940941
941942
942943
943-@Callable(cO)
944-func put (gt,gu) = {
945- let gv = br()
946- let gw = valueOrErrorMessage(addressFromString(gv[C]), "Wr st addr")
947- let gx = valueOrErrorMessage(addressFromString(gv[E]), "Wr sl addr")
948- if ((0 > gt))
944+@Callable(cP)
945+func put (gv,gw) = {
946+ let gx = bs()
947+ let gy = valueOrErrorMessage(addressFromString(gx[C]), "Wr st addr")
948+ let gz = valueOrErrorMessage(addressFromString(gx[E]), "Wr sl addr")
949+ if ((0 > gv))
949950 then throw("Wrong slippage")
950- else if ((size(cO.payments) != 2))
951+ else if ((size(cP.payments) != 2))
951952 then throw("2 pmnts expd")
952953 else {
953- let gy = toBigInt(value(cO.payments[0]).amount)
954- let gz = toBigInt(value(cO.payments[1]).amount)
955- let eN = (toBigInt(bM(bd(bl))) - gy)
956- if ((eN == eN))
954+ let gA = toBigInt(value(cP.payments[0]).amount)
955+ let gB = toBigInt(value(cP.payments[1]).amount)
956+ let eO = (toBigInt(bN(be(bm))) - gA)
957+ if ((eO == eO))
957958 then {
958- let eO = (toBigInt(bM(bd(bm))) - gz)
959- if ((eO == eO))
959+ let eP = (toBigInt(bN(be(bn))) - gB)
960+ if ((eP == eP))
960961 then {
961- let eP = toBigInt(value(assetInfo(bk)).quantity)
962- if ((eP == eP))
962+ let eQ = toBigInt(value(assetInfo(bl)).quantity)
963+ if ((eQ == eQ))
963964 then {
964- let eQ = eJ(gy, gz, toBigInt(0))
965- if ((eQ == eQ))
965+ let eR = eK(gA, gB, toBigInt(0))
966+ if ((eR == eR))
966967 then {
967- let gA = fj(toString(cO.caller), toBase58String(cO.transactionId), AttachedPayment(value(cO.payments[0]).assetId, value(cO.payments[0]).amount), cO.payments[1], gt, true, false, true, 0, "")
968- let ek = gA._2
969- let gB = gA._7
970- let dA = gA._9
971- let el = gA._10
972- let em = gA._11
973- let di = gA._12
974- let dj = gA._13
975- let dW = invoke(aP, "emit", [ek], nil)
976- if ((dW == dW))
968+ let gC = fl(toString(cP.caller), toBase58String(cP.transactionId), AttachedPayment(value(cP.payments[0]).assetId, value(cP.payments[0]).amount), cP.payments[1], gv, true, false, true, 0, "")
969+ let el = gC._2
970+ let gD = gC._7
971+ let dB = gC._9
972+ let em = gC._10
973+ let en = gC._11
974+ let dj = gC._12
975+ let dk = gC._13
976+ let dX = invoke(aQ, "emit", [el], nil)
977+ if ((dX == dX))
977978 then {
978- let gC = {
979- let gj = dW
980- if ($isInstanceOf(gj, "Address"))
979+ let gE = {
980+ let gl = dX
981+ if ($isInstanceOf(gl, "Address"))
981982 then {
982- let gD = gj
983- invoke(gD, "emit", [ek], nil)
983+ let gF = gl
984+ invoke(gF, "emit", [el], nil)
984985 }
985986 else unit
986987 }
987- if ((gC == gC))
988+ if ((gE == gE))
988989 then {
989- let gE = if ((el > 0))
990- then invoke(gx, "put", nil, [AttachedPayment(di, el)])
990+ let gG = if ((em > 0))
991+ then invoke(gz, "put", nil, [AttachedPayment(dj, em)])
991992 else nil
992- if ((gE == gE))
993+ if ((gG == gG))
993994 then {
994- let gF = if ((em > 0))
995- then invoke(gx, "put", nil, [AttachedPayment(dj, em)])
995+ let gH = if ((en > 0))
996+ then invoke(gz, "put", nil, [AttachedPayment(dk, en)])
996997 else nil
997- if ((gF == gF))
998+ if ((gH == gH))
998999 then {
999- let gG = if (gu)
1000+ let gI = if (gw)
10001001 then {
1001- let gH = invoke(gw, "stake", nil, [AttachedPayment(gB, ek)])
1002- if ((gH == gH))
1002+ let gJ = invoke(gy, "stake", nil, [AttachedPayment(gD, el)])
1003+ if ((gJ == gJ))
10031004 then nil
10041005 else throw("Strict value is not equal to itself.")
10051006 }
1006- else [ScriptTransfer(cO.caller, ek, gB)]
1007- let gI = eR(0, 0, 0)
1008- let gg = gI._1
1009- let eI = gI._2
1010- let gJ = if ((eI >= eQ))
1007+ else [ScriptTransfer(cP.caller, el, gD)]
1008+ let gK = eS(0, 0, 0)
1009+ let gi = gK._1
1010+ let eJ = gK._2
1011+ let gL = if ((eJ >= eR))
10111012 then true
1012- else aM(makeString(["updated DLp lower than current DLp", toString(eN), toString(eO), toString(eP), toString(eQ), toString(eI), toString(el), toString(em)], " "))
1013- if ((gJ == gJ))
1013+ else aN(makeString(["updated DLp lower than current DLp", toString(eO), toString(eP), toString(eQ), toString(eR), toString(eJ), toString(em), toString(en)], " "))
1014+ if ((gL == gL))
10141015 then {
1015- let gK = value(assetInfo(bk)).quantity
1016- if ((gK == gK))
1017- then ((dA ++ gG) ++ gg)
1016+ let gM = value(assetInfo(bl)).quantity
1017+ if ((gM == gM))
1018+ then ((dB ++ gI) ++ gi)
10181019 else throw("Strict value is not equal to itself.")
10191020 }
10201021 else throw("Strict value is not equal to itself.")
10211022 }
10221023 else throw("Strict value is not equal to itself.")
10231024 }
10241025 else throw("Strict value is not equal to itself.")
10251026 }
10261027 else throw("Strict value is not equal to itself.")
10271028 }
10281029 else throw("Strict value is not equal to itself.")
10291030 }
10301031 else throw("Strict value is not equal to itself.")
10311032 }
10321033 else throw("Strict value is not equal to itself.")
10331034 }
10341035 else throw("Strict value is not equal to itself.")
10351036 }
10361037 else throw("Strict value is not equal to itself.")
10371038 }
10381039 }
10391040
10401041
10411042
1042-@Callable(cO)
1043-func putOneTknV2 (fK,gu) = {
1044- let gL = {
1045- let aR = invoke(aP, "isPoolOneTokenOperationsDisabledREADONLY", [toString(this)], nil)
1046- if ($isInstanceOf(aR, "Boolean"))
1047- then aR
1048- else throw(($getType(aR) + " couldn't be cast to Boolean"))
1043+@Callable(cP)
1044+func putOneTknV2 (fM,gw) = {
1045+ let gN = {
1046+ let aS = invoke(aQ, "isPoolOneTokenOperationsDisabledREADONLY", [toString(this)], nil)
1047+ if ($isInstanceOf(aS, "Boolean"))
1048+ then aS
1049+ else throw(($getType(aS) + " couldn't be cast to Boolean"))
10491050 }
1050- let gM = if (if (if (aU())
1051+ let gO = if (if (if (aV())
10511052 then true
1052- else (bj == q))
1053+ else (bk == q))
10531054 then true
1054- else (bj == s))
1055+ else (bk == s))
10551056 then true
1056- else gL
1057- let gN = [if (if (!(gM))
1057+ else gN
1058+ let gP = [if (if (!(gO))
10581059 then true
1059- else gm(cO))
1060+ else go(cP))
10601061 then true
1061- else aM("put operation is blocked by admin"), if ((size(cO.payments) == 1))
1062+ else aN("put operation is blocked by admin"), if ((size(cP.payments) == 1))
10621063 then true
1063- else aM("exactly 1 payment are expected")]
1064- if ((gN == gN))
1064+ else aN("exactly 1 payment are expected")]
1065+ if ((gP == gP))
10651066 then {
1066- let di = toBase58String(value(bl))
10671067 let dj = toBase58String(value(bm))
1068- let dh = bk
1069- let fO = bn
1070- let fP = bo
1071- let dg = if ((cO.caller == this))
1072- then cO.originCaller
1073- else cO.caller
1074- let fi = value(cO.payments[0])
1075- let de = toBase58String(value(fi.assetId))
1076- let dK = fi.amount
1077- let eQ = if ((fi.assetId == bl))
1078- then eJ(toBigInt(dK), toBigInt(0), toBigInt(0))
1079- else eJ(toBigInt(0), toBigInt(dK), toBigInt(0))
1080- if ((eQ == eQ))
1068+ let dk = toBase58String(value(bn))
1069+ let di = bl
1070+ let fQ = bo
1071+ let fR = bp
1072+ let dh = if ((cP.caller == this))
1073+ then cP.originCaller
1074+ else cP.caller
1075+ let fk = value(cP.payments[0])
1076+ let df = toBase58String(value(fk.assetId))
1077+ let dL = fk.amount
1078+ let eR = if ((fk.assetId == bm))
1079+ then eK(toBigInt(dL), toBigInt(0), toBigInt(0))
1080+ else eK(toBigInt(0), toBigInt(dL), toBigInt(0))
1081+ if ((eR == eR))
10811082 then {
1082- let gO = fn(dK, de, toString(dg), toBase58String(cO.transactionId), true)
1083- if ((gO == gO))
1083+ let gQ = fp(dL, df, toString(dh), toBase58String(cP.transactionId), true)
1084+ if ((gQ == gQ))
10841085 then {
1085- let cw = gO._3
1086- let dA = gO._2
1087- let gP = gO._1
1088- let ek = if (if ((fK > 0))
1089- then (fK > gP)
1086+ let cx = gQ._3
1087+ let dB = gQ._2
1088+ let gR = gQ._1
1089+ let el = if (if ((fM > 0))
1090+ then (fM > gR)
10901091 else false)
1091- then aM(makeString(["amount to receive is less than ", toString(fK)], ""))
1092- else gP
1093- let gA = invoke(aP, "emit", [ek], nil)
1094- if ((gA == gA))
1092+ then aN(makeString(["amount to receive is less than ", toString(fM)], ""))
1093+ else gR
1094+ let gC = invoke(aQ, "emit", [el], nil)
1095+ if ((gC == gC))
10951096 then {
1096- let gC = {
1097- let gj = gA
1098- if ($isInstanceOf(gj, "Address"))
1097+ let gE = {
1098+ let gl = gC
1099+ if ($isInstanceOf(gl, "Address"))
10991100 then {
1100- let gD = gj
1101- invoke(gD, "emit", [ek], nil)
1101+ let gF = gl
1102+ invoke(gF, "emit", [el], nil)
11021103 }
11031104 else unit
11041105 }
1105- if ((gC == gC))
1106+ if ((gE == gE))
11061107 then {
1107- let gG = if (gu)
1108+ let gI = if (gw)
11081109 then {
1109- let gH = invoke(bt, "stake", nil, [AttachedPayment(dh, ek)])
1110- if ((gH == gH))
1110+ let gJ = invoke(bu, "stake", nil, [AttachedPayment(di, el)])
1111+ if ((gJ == gJ))
11111112 then nil
11121113 else throw("Strict value is not equal to itself.")
11131114 }
1114- else [ScriptTransfer(cO.caller, ek, dh)]
1115- let ga = if ((cw > 0))
1116- then [ScriptTransfer(aW, cw, fromBase58String(de))]
1115+ else [ScriptTransfer(cP.caller, el, di)]
1116+ let gc = if ((cx > 0))
1117+ then [ScriptTransfer(aX, cx, fromBase58String(df))]
11171118 else nil
1118- let gQ = if ((this == aW))
1119+ let gS = if ((this == aX))
11191120 then $Tuple2(0, 0)
11201121 else {
1121- let gR = if ((fi.assetId == bl))
1122+ let gT = if ((fk.assetId == bm))
11221123 then true
11231124 else false
1124- if (gR)
1125- then $Tuple2(-(cw), 0)
1126- else $Tuple2(0, -(cw))
1125+ if (gT)
1126+ then $Tuple2(-(cx), 0)
1127+ else $Tuple2(0, -(cx))
11271128 }
1128- let eS = gQ._1
1129- let eT = gQ._2
1130- let gS = eR(eS, eT, 0)
1131- let gg = gS._1
1132- let eI = gS._2
1133- let gh = eV(eQ, eI)
1134- if ((gh == gh))
1135- then $Tuple2((((dA ++ gG) ++ ga) ++ gg), ek)
1129+ let eT = gS._1
1130+ let eU = gS._2
1131+ let gU = eS(eT, eU, 0)
1132+ let gi = gU._1
1133+ let eJ = gU._2
1134+ let gj = eW(eR, eJ)
1135+ if ((gj == gj))
1136+ then $Tuple2((((dB ++ gI) ++ gc) ++ gi), el)
11361137 else throw("Strict value is not equal to itself.")
11371138 }
11381139 else throw("Strict value is not equal to itself.")
11391140 }
11401141 else throw("Strict value is not equal to itself.")
11411142 }
11421143 else throw("Strict value is not equal to itself.")
11431144 }
11441145 else throw("Strict value is not equal to itself.")
11451146 }
11461147 else throw("Strict value is not equal to itself.")
11471148 }
11481149
11491150
11501151
1151-@Callable(cO)
1152-func putForFree (gT) = if ((0 > gT))
1152+@Callable(cP)
1153+func putForFree (gV) = if ((0 > gV))
11531154 then throw("Wrong slpg")
1154- else if ((size(cO.payments) != 2))
1155+ else if ((size(cP.payments) != 2))
11551156 then throw("2 pmnts expd")
11561157 else {
1157- let gU = fj(toString(cO.caller), toBase58String(cO.transactionId), AttachedPayment(value(cO.payments[0]).assetId, value(cO.payments[0]).amount), cO.payments[1], gT, false, false, true, 0, "")
1158- let dA = gU._9
1159- let gy = toBigInt(value(cO.payments[0]).amount)
1160- let gz = toBigInt(value(cO.payments[1]).amount)
1161- let eQ = eJ(gy, gz, toBigInt(0))
1162- if ((eQ == eQ))
1158+ let gW = fl(toString(cP.caller), toBase58String(cP.transactionId), AttachedPayment(value(cP.payments[0]).assetId, value(cP.payments[0]).amount), cP.payments[1], gV, false, false, true, 0, "")
1159+ let dB = gW._9
1160+ let gA = toBigInt(value(cP.payments[0]).amount)
1161+ let gB = toBigInt(value(cP.payments[1]).amount)
1162+ let eR = eK(gA, gB, toBigInt(0))
1163+ if ((eR == eR))
11631164 then {
1164- let gV = eR(0, 0, 0)
1165- let gg = gV._1
1166- let eI = gV._2
1167- let gh = eV(eQ, eI)
1168- if ((gh == gh))
1169- then (dA ++ gg)
1165+ let gX = eS(0, 0, 0)
1166+ let gi = gX._1
1167+ let eJ = gX._2
1168+ let gj = eW(eR, eJ)
1169+ if ((gj == gj))
1170+ then (dB ++ gi)
11701171 else throw("Strict value is not equal to itself.")
11711172 }
11721173 else throw("Strict value is not equal to itself.")
11731174 }
11741175
11751176
11761177
1177-@Callable(cO)
1178+@Callable(cP)
11781179 func get () = {
1179- let eQ = eJ(toBigInt(0), toBigInt(0), toBigInt(0))
1180- if ((eQ == eQ))
1180+ let eR = eK(toBigInt(0), toBigInt(0), toBigInt(0))
1181+ if ((eR == eR))
11811182 then {
1182- let dW = fh(cO)
1183- let gW = dW._1
1184- let dz = dW._2
1185- let dK = dW._3
1186- let de = dW._4
1187- let dA = dW._5
1188- let ex = invoke(aP, "burn", [dK], [AttachedPayment(de, dK)])
1189- if ((ex == ex))
1183+ let dX = fj(cP)
1184+ let gY = dX._1
1185+ let dA = dX._2
1186+ let dL = dX._3
1187+ let df = dX._4
1188+ let dB = dX._5
1189+ let ey = invoke(aQ, "burn", [dL], [AttachedPayment(df, dL)])
1190+ if ((ey == ey))
11901191 then {
1191- let gX = eR(-(gW), -(dz), 0)
1192- let gg = gX._1
1193- let eI = gX._2
1194- let gh = eV(eQ, eI)
1195- if ((gh == gh))
1196- then (dA ++ gg)
1192+ let gZ = eS(-(gY), -(dA), 0)
1193+ let gi = gZ._1
1194+ let eJ = gZ._2
1195+ let gj = eW(eR, eJ)
1196+ if ((gj == gj))
1197+ then (dB ++ gi)
11971198 else throw("Strict value is not equal to itself.")
11981199 }
11991200 else throw("Strict value is not equal to itself.")
12001201 }
12011202 else throw("Strict value is not equal to itself.")
12021203 }
12031204
12041205
12051206
1206-@Callable(cO)
1207-func getOneTknV2 (fJ,fK) = {
1208- let gL = {
1209- let aR = invoke(aP, "isPoolOneTokenOperationsDisabledREADONLY", [toString(this)], nil)
1210- if ($isInstanceOf(aR, "Boolean"))
1211- then aR
1212- else throw(($getType(aR) + " couldn't be cast to Boolean"))
1207+@Callable(cP)
1208+func getOneTknV2 (fL,fM) = {
1209+ let gN = {
1210+ let aS = invoke(aQ, "isPoolOneTokenOperationsDisabledREADONLY", [toString(this)], nil)
1211+ if ($isInstanceOf(aS, "Boolean"))
1212+ then aS
1213+ else throw(($getType(aS) + " couldn't be cast to Boolean"))
12131214 }
1214- let gY = if (if (aU())
1215+ let ha = if (if (aV())
12151216 then true
1216- else (bj == s))
1217+ else (bk == s))
12171218 then true
1218- else gL
1219- let gN = [if (if (!(gY))
1219+ else gN
1220+ let gP = [if (if (!(ha))
12201221 then true
1221- else gm(cO))
1222+ else go(cP))
12221223 then true
1223- else aM("get operation is blocked by admin"), if ((size(cO.payments) == 1))
1224+ else aN("get operation is blocked by admin"), if ((size(cP.payments) == 1))
12241225 then true
1225- else aM("exactly 1 payment are expected")]
1226- if ((gN == gN))
1226+ else aN("exactly 1 payment are expected")]
1227+ if ((gP == gP))
12271228 then {
1228- let gZ = fI(fJ, fK, cO.payments, cO.caller, cO.originCaller, cO.transactionId)
1229- let dA = gZ._1
1230- let fT = gZ._2
1231- $Tuple2(dA, fT)
1229+ let hb = fK(fL, fM, cP.payments, cP.caller, cP.originCaller, cP.transactionId)
1230+ let dB = hb._1
1231+ let fV = hb._2
1232+ $Tuple2(dB, fV)
12321233 }
12331234 else throw("Strict value is not equal to itself.")
12341235 }
12351236
12361237
12371238
1238-@Callable(cO)
1239+@Callable(cP)
12391240 func refreshDLp () = {
1240- let ha = valueOrElse(getInteger(aq), 0)
1241- let hb = if (((height - ha) >= at))
1241+ let hc = valueOrElse(getInteger(aq), 0)
1242+ let hd = if (((height - hc) >= at))
12421243 then unit
1243- else aM(makeString([toString(at), " blocks have not passed since the previous call"], ""))
1244- if ((hb == hb))
1244+ else aN(makeString([toString(at), " blocks have not passed since the previous call"], ""))
1245+ if ((hd == hd))
12451246 then {
1246- let fc = valueOrErrorMessage(parseBigInt(valueOrElse(getString(this, ap), "0")), aO("invalid dLp"))
1247- let hc = eR(0, 0, 0)
1248- let hd = hc._1
1249- let eI = hc._2
1250- let eU = if ((fc != eI))
1251- then hd
1252- else aM("nothing to refresh")
1253- $Tuple2(eU, toString(eI))
1247+ let fd = valueOrErrorMessage(parseBigInt(valueOrElse(getString(this, ap), "0")), aP("invalid dLp"))
1248+ let he = eS(0, 0, 0)
1249+ let hf = he._1
1250+ let eJ = he._2
1251+ let eV = if ((fd != eJ))
1252+ then hf
1253+ else aN("nothing to refresh")
1254+ $Tuple2(eV, toString(eJ))
12541255 }
12551256 else throw("Strict value is not equal to itself.")
12561257 }
12571258
12581259
12591260
1260-@Callable(cO)
1261-func getOneTknV2READONLY (fJ,he) = {
1261+@Callable(cP)
1262+func getOneTknV2READONLY (fL,hg) = {
1263+ let dj = toBase58String(value(bm))
1264+ let dk = toBase58String(value(bn))
12621265 let di = toBase58String(value(bl))
1263- let dj = toBase58String(value(bm))
1264- let dh = toBase58String(value(bk))
1265- let cy = [toBigInt(bM(di)), toBigInt(bM(dj))]
1266- let eH = toBigInt(valueOrErrorMessage(assetInfo(fromBase58String(dh)), "invalid lp asset").quantity)
1267- let ca = cx(cy)
1268- let bZ = (ca - fraction(toBigInt(he), ca, eH))
1269- let hf = if ((fJ == di))
1266+ let cz = [toBigInt(bN(dj)), toBigInt(bN(dk))]
1267+ let eI = toBigInt(valueOrErrorMessage(assetInfo(fromBase58String(di)), "invalid lp asset").quantity)
1268+ let cb = cy(cz)
1269+ let ca = (cb - fraction(toBigInt(hg), cb, eI))
1270+ let hh = if ((fL == dj))
12701271 then 0
1271- else if ((fJ == dj))
1272+ else if ((fL == dk))
12721273 then 1
12731274 else throw("invalid out asset id")
1274- let hg = er(cy, hf, bZ)
1275- let hh = (cy[hf] - hg)
1276- let hi = max([0, toInt((hh - f))])
1277- let hj = cu(hi, aS)
1278- let fS = hj._1
1279- let cw = hj._2
1280- $Tuple2(nil, $Tuple2(fS, cw))
1275+ let hi = es(cz, hh, ca)
1276+ let hj = (cz[hh] - hi)
1277+ let hk = max([0, toInt((hj - f))])
1278+ let hl = cv(hk, aT)
1279+ let fU = hl._1
1280+ let cx = hl._2
1281+ $Tuple2(nil, $Tuple2(fU, cx))
12811282 }
12821283
12831284
12841285
1285-@Callable(cO)
1286-func getOneTknV2WithBonusREADONLY (fJ,he) = {
1286+@Callable(cP)
1287+func getOneTknV2WithBonusREADONLY (fL,hg) = {
1288+ let dj = toBase58String(value(bm))
1289+ let dk = toBase58String(value(bn))
12871290 let di = toBase58String(value(bl))
1288- let dj = toBase58String(value(bm))
1289- let dh = toBase58String(value(bk))
1290- let do = bM(di)
1291- let dq = bM(dj)
1292- let hk = {
1293- let aR = invoke(this, "getOneTknV2READONLY", [fJ, he], nil)
1294- if ($isInstanceOf(aR, "(Int, Int)"))
1295- then aR
1296- else throw(($getType(aR) + " couldn't be cast to (Int, Int)"))
1291+ let dp = bN(dj)
1292+ let dr = bN(dk)
1293+ let hm = {
1294+ let aS = invoke(this, "getOneTknV2READONLY", [fL, hg], nil)
1295+ if ($isInstanceOf(aS, "(Int, Int)"))
1296+ then aS
1297+ else throw(($getType(aS) + " couldn't be cast to (Int, Int)"))
12971298 }
1298- let fS = hk._1
1299- let cw = hk._2
1300- let dW = dc("", dh, he, this)
1301- let dy = dW._1
1302- let dz = dW._2
1303- let hl = (dy + dz)
1304- let fH = if ((hl == 0))
1305- then if ((fS == 0))
1299+ let fU = hm._1
1300+ let cx = hm._2
1301+ let dX = dd("", di, hg, this)
1302+ let dz = dX._1
1303+ let dA = dX._2
1304+ let hn = (dz + dA)
1305+ let fJ = if ((hn == 0))
1306+ then if ((fU == 0))
13061307 then 0
13071308 else throw("bonus calculation error")
1308- else fraction((fS - hl), a, hl)
1309- $Tuple2(nil, $Tuple3(fS, cw, fH))
1309+ else fraction((fU - hn), a, hn)
1310+ $Tuple2(nil, $Tuple3(fU, cx, fJ))
13101311 }
13111312
13121313
13131314
1314-@Callable(cO)
1315-func getNoLess (hm,hn) = {
1316- let dW = fh(cO)
1317- let dy = dW._1
1318- let dz = dW._2
1319- let dK = dW._3
1320- let de = dW._4
1321- let dA = dW._5
1322- if ((hm > dy))
1323- then throw(((("Failed: " + toString(dy)) + " < ") + toString(hm)))
1324- else if ((hn > dz))
1325- then throw(((("Failed: " + toString(dz)) + " < ") + toString(hn)))
1315+@Callable(cP)
1316+func getNoLess (ho,hp) = {
1317+ let dX = fj(cP)
1318+ let dz = dX._1
1319+ let dA = dX._2
1320+ let dL = dX._3
1321+ let df = dX._4
1322+ let dB = dX._5
1323+ if ((ho > dz))
1324+ then throw(((("Failed: " + toString(dz)) + " < ") + toString(ho)))
1325+ else if ((hp > dA))
1326+ then throw(((("Failed: " + toString(dA)) + " < ") + toString(hp)))
13261327 else {
1327- let eQ = eJ(toBigInt(0), toBigInt(0), toBigInt(0))
1328- if ((eQ == eQ))
1328+ let eR = eK(toBigInt(0), toBigInt(0), toBigInt(0))
1329+ if ((eR == eR))
13291330 then {
1330- let ho = invoke(aP, "burn", [dK], [AttachedPayment(de, dK)])
1331- if ((ho == ho))
1331+ let hq = invoke(aQ, "burn", [dL], [AttachedPayment(df, dL)])
1332+ if ((hq == hq))
13321333 then {
1333- let hp = eR(-(dy), -(dz), 0)
1334- let gg = hp._1
1335- let eI = hp._2
1336- let gh = eV(eQ, eI)
1337- if ((gh == gh))
1338- then (dA ++ gg)
1334+ let hr = eS(-(dz), -(dA), 0)
1335+ let gi = hr._1
1336+ let eJ = hr._2
1337+ let gj = eW(eR, eJ)
1338+ if ((gj == gj))
1339+ then (dB ++ gi)
13391340 else throw("Strict value is not equal to itself.")
13401341 }
13411342 else throw("Strict value is not equal to itself.")
13421343 }
13431344 else throw("Strict value is not equal to itself.")
13441345 }
13451346 }
13461347
13471348
13481349
1349-@Callable(cO)
1350-func unstakeAndGet (cv) = {
1351- let hq = if ((size(cO.payments) != 0))
1350+@Callable(cP)
1351+func unstakeAndGet (cw) = {
1352+ let hs = if ((size(cP.payments) != 0))
13521353 then throw("No pmnts expd")
13531354 else true
1354- if ((hq == hq))
1355+ if ((hs == hs))
13551356 then {
1356- let hr = br()
1357- let gB = bk
1358- let hs = valueOrErrorMessage(addressFromString(hr[C]), "Wr st addr")
1359- let eQ = eJ(toBigInt(0), toBigInt(0), toBigInt(0))
1360- if ((eQ == eQ))
1357+ let ht = bs()
1358+ let gD = bl
1359+ let hu = valueOrErrorMessage(addressFromString(ht[C]), "Wr st addr")
1360+ let eR = eK(toBigInt(0), toBigInt(0), toBigInt(0))
1361+ if ((eR == eR))
13611362 then {
1362- let ht = invoke(hs, "unstake", [toBase58String(gB), cv], nil)
1363- if ((ht == ht))
1363+ let hv = invoke(hu, "unstake", [toBase58String(gD), cw], nil)
1364+ if ((hv == hv))
13641365 then {
1365- let dW = dc(toBase58String(cO.transactionId), toBase58String(gB), cv, cO.caller)
1366- let dy = dW._1
1367- let dz = dW._2
1368- let dm = parseIntValue(dW._9)
1369- let dA = dW._10
1370- let hu = if (if (aU())
1366+ let dX = dd(toBase58String(cP.transactionId), toBase58String(gD), cw, cP.caller)
1367+ let dz = dX._1
1368+ let dA = dX._2
1369+ let dn = parseIntValue(dX._9)
1370+ let dB = dX._10
1371+ let hw = if (if (aV())
13711372 then true
1372- else (dm == s))
1373- then throw(("Blocked: " + toString(dm)))
1373+ else (dn == s))
1374+ then throw(("Blocked: " + toString(dn)))
13741375 else true
1375- if ((hu == hu))
1376+ if ((hw == hw))
13761377 then {
1377- let hv = invoke(aP, "burn", [cv], [AttachedPayment(gB, cv)])
1378- if ((hv == hv))
1378+ let hx = invoke(aQ, "burn", [cw], [AttachedPayment(gD, cw)])
1379+ if ((hx == hx))
13791380 then {
1380- let hw = eR(-(dy), -(dz), 0)
1381- let gg = hw._1
1382- let eI = hw._2
1383- let gh = eV(eQ, eI)
1384- if ((gh == gh))
1385- then (dA ++ gg)
1381+ let hy = eS(-(dz), -(dA), 0)
1382+ let gi = hy._1
1383+ let eJ = hy._2
1384+ let gj = eW(eR, eJ)
1385+ if ((gj == gj))
1386+ then (dB ++ gi)
13861387 else throw("Strict value is not equal to itself.")
13871388 }
13881389 else throw("Strict value is not equal to itself.")
13891390 }
13901391 else throw("Strict value is not equal to itself.")
13911392 }
13921393 else throw("Strict value is not equal to itself.")
13931394 }
13941395 else throw("Strict value is not equal to itself.")
13951396 }
13961397 else throw("Strict value is not equal to itself.")
13971398 }
13981399
13991400
14001401
1401-@Callable(cO)
1402-func unstakeAndGetNoLess (hx,hy,hn) = {
1403- let gY = if (aU())
1402+@Callable(cP)
1403+func unstakeAndGetNoLess (hz,hA,hp) = {
1404+ let ha = if (aV())
14041405 then true
1405- else (bj == s)
1406- let gN = [if (!(gY))
1406+ else (bk == s)
1407+ let gP = [if (!(ha))
14071408 then true
1408- else throw("get operation is blocked by admin"), if ((size(cO.payments) == 0))
1409+ else throw("get operation is blocked by admin"), if ((size(cP.payments) == 0))
14091410 then true
14101411 else throw("no payments are expected")]
1411- if ((gN == gN))
1412+ if ((gP == gP))
14121413 then {
1413- let eQ = eJ(toBigInt(0), toBigInt(0), toBigInt(0))
1414- if ((eQ == eQ))
1414+ let eR = eK(toBigInt(0), toBigInt(0), toBigInt(0))
1415+ if ((eR == eR))
14151416 then {
1416- let ht = invoke(bt, "unstake", [toBase58String(bk), hx], nil)
1417- if ((ht == ht))
1417+ let hv = invoke(bu, "unstake", [toBase58String(bl), hz], nil)
1418+ if ((hv == hv))
14181419 then {
1419- let hz = dc(toBase58String(cO.transactionId), toBase58String(bk), hx, cO.caller)
1420- let dy = hz._1
1421- let dz = hz._2
1422- let dA = hz._10
1423- let hA = [if ((dy >= hy))
1420+ let hB = dd(toBase58String(cP.transactionId), toBase58String(bl), hz, cP.caller)
1421+ let dz = hB._1
1422+ let dA = hB._2
1423+ let dB = hB._10
1424+ let hC = [if ((dz >= hA))
14241425 then true
1425- else throw(makeString(["amount asset amount to receive is less than ", toString(hy)], "")), if ((dz >= hn))
1426+ else throw(makeString(["amount asset amount to receive is less than ", toString(hA)], "")), if ((dA >= hp))
14261427 then true
1427- else throw(makeString(["price asset amount to receive is less than ", toString(hn)], ""))]
1428- if ((hA == hA))
1428+ else throw(makeString(["price asset amount to receive is less than ", toString(hp)], ""))]
1429+ if ((hC == hC))
14291430 then {
1430- let ho = invoke(aP, "burn", [hx], [AttachedPayment(bk, hx)])
1431- if ((ho == ho))
1431+ let hq = invoke(aQ, "burn", [hz], [AttachedPayment(bl, hz)])
1432+ if ((hq == hq))
14321433 then {
1433- let hB = eR(-(dy), -(dz), 0)
1434- let gg = hB._1
1435- let eI = hB._2
1436- let gh = eV(eQ, eI)
1437- if ((gh == gh))
1438- then (dA ++ gg)
1434+ let hD = eS(-(dz), -(dA), 0)
1435+ let gi = hD._1
1436+ let eJ = hD._2
1437+ let gj = eW(eR, eJ)
1438+ if ((gj == gj))
1439+ then (dB ++ gi)
14391440 else throw("Strict value is not equal to itself.")
14401441 }
14411442 else throw("Strict value is not equal to itself.")
14421443 }
14431444 else throw("Strict value is not equal to itself.")
14441445 }
14451446 else throw("Strict value is not equal to itself.")
14461447 }
14471448 else throw("Strict value is not equal to itself.")
14481449 }
14491450 else throw("Strict value is not equal to itself.")
14501451 }
14511452
14521453
14531454
1454-@Callable(cO)
1455-func unstakeAndGetOneTknV2 (hx,fJ,fK) = {
1456- let gL = {
1457- let aR = invoke(aP, "isPoolOneTokenOperationsDisabledREADONLY", [toString(this)], nil)
1458- if ($isInstanceOf(aR, "Boolean"))
1459- then aR
1460- else throw(($getType(aR) + " couldn't be cast to Boolean"))
1455+@Callable(cP)
1456+func unstakeAndGetOneTknV2 (hz,fL,fM) = {
1457+ let gN = {
1458+ let aS = invoke(aQ, "isPoolOneTokenOperationsDisabledREADONLY", [toString(this)], nil)
1459+ if ($isInstanceOf(aS, "Boolean"))
1460+ then aS
1461+ else throw(($getType(aS) + " couldn't be cast to Boolean"))
14611462 }
1462- let gY = if (if (aU())
1463+ let ha = if (if (aV())
14631464 then true
1464- else (bj == s))
1465+ else (bk == s))
14651466 then true
1466- else gL
1467- let gN = [if (if (!(gY))
1467+ else gN
1468+ let gP = [if (if (!(ha))
14681469 then true
1469- else gm(cO))
1470+ else go(cP))
14701471 then true
1471- else aM("get operation is blocked by admin"), if ((size(cO.payments) == 0))
1472+ else aN("get operation is blocked by admin"), if ((size(cP.payments) == 0))
14721473 then true
1473- else aM("no payments are expected")]
1474- if ((gN == gN))
1474+ else aN("no payments are expected")]
1475+ if ((gP == gP))
14751476 then {
1476- let hr = br()
1477- let gB = bk
1478- let hs = valueOrErrorMessage(addressFromString(hr[C]), "Wr st addr")
1479- let ht = invoke(hs, "unstake", [toBase58String(gB), hx], nil)
1480- if ((ht == ht))
1477+ let ht = bs()
1478+ let gD = bl
1479+ let hu = valueOrErrorMessage(addressFromString(ht[C]), "Wr st addr")
1480+ let hv = invoke(hu, "unstake", [toBase58String(gD), hz], nil)
1481+ if ((hv == hv))
14811482 then {
1482- let hC = fI(fJ, fK, [AttachedPayment(gB, hx)], cO.caller, cO.originCaller, cO.transactionId)
1483- let dA = hC._1
1484- let fT = hC._2
1485- $Tuple2(dA, fT)
1483+ let hE = fK(fL, fM, [AttachedPayment(gD, hz)], cP.caller, cP.originCaller, cP.transactionId)
1484+ let dB = hE._1
1485+ let fV = hE._2
1486+ $Tuple2(dB, fV)
14861487 }
14871488 else throw("Strict value is not equal to itself.")
14881489 }
14891490 else throw("Strict value is not equal to itself.")
14901491 }
14911492
14921493
14931494
1494-@Callable(cO)
1495-func putOneTknV2WithBonusREADONLY (hD,hE) = {
1496- let hF = fn(hD, hE, "", "", true)
1497- let fC = hF._1
1498- let dA = hF._2
1499- let cw = hF._3
1500- let fH = hF._4
1501- $Tuple2(nil, $Tuple3(fC, cw, fH))
1495+@Callable(cP)
1496+func putOneTknV2WithBonusREADONLY (hF,hG) = {
1497+ let hH = fp(hF, hG, "", "", true)
1498+ let fE = hH._1
1499+ let dB = hH._2
1500+ let cx = hH._3
1501+ let fJ = hH._4
1502+ $Tuple2(nil, $Tuple3(fE, cx, fJ))
15021503 }
15031504
15041505
15051506
1506-@Callable(cO)
1507-func putOneTknV2WithoutTakeFeeREADONLY (hD,hE) = {
1508- let hG = fn(hD, hE, "", "", false)
1509- let fC = hG._1
1510- let dA = hG._2
1511- let cw = hG._3
1512- let fH = hG._4
1513- $Tuple2(nil, $Tuple3(fC, cw, fH))
1507+@Callable(cP)
1508+func putOneTknV2WithoutTakeFeeREADONLY (hF,hG) = {
1509+ let hI = fp(hF, hG, "", "", false)
1510+ let fE = hI._1
1511+ let dB = hI._2
1512+ let cx = hI._3
1513+ let fJ = hI._4
1514+ $Tuple2(nil, $Tuple3(fE, cx, fJ))
15141515 }
15151516
15161517
15171518
1518-@Callable(cO)
1519-func activate (hH,hI) = if ((toString(cO.caller) != toString(aP)))
1519+@Callable(cP)
1520+func activate (hJ,hK) = if ((toString(cP.caller) != toString(aQ)))
15201521 then throw("denied")
1521- else $Tuple2([StringEntry(aj(), hH), StringEntry(ak(), hI)], "success")
1522+ else $Tuple2([StringEntry(aj(), hJ), StringEntry(ak(), hK)], "success")
15221523
15231524
15241525
1525-@Callable(cO)
1526-func setS (hJ,hu) = if ((toString(cO.caller) != aI(this, am())))
1527- then gl
1528- else [StringEntry(hJ, hu)]
1526+@Callable(cP)
1527+func setS (hL,hw) = if ((toString(cP.caller) != aJ(this, am())))
1528+ then gn
1529+ else [StringEntry(hL, hw)]
15291530
15301531
15311532
1532-@Callable(cO)
1533-func setI (hJ,hu) = if ((toString(cO.caller) != aI(this, am())))
1534- then gl
1535- else [IntegerEntry(hJ, hu)]
1533+@Callable(cP)
1534+func setI (hL,hw) = if ((toString(cP.caller) != aJ(this, am())))
1535+ then gn
1536+ else [IntegerEntry(hL, hw)]
15361537
15371538
15381539
1539-@Callable(cO)
1540-func getPoolConfigWrapperREADONLY () = $Tuple2(nil, aX())
1540+@Callable(cP)
1541+func getPoolConfigWrapperREADONLY () = $Tuple2(nil, aY())
15411542
15421543
15431544
1544-@Callable(cO)
1545-func getAccBalanceWrapperREADONLY (bN) = $Tuple2(nil, bM(bN))
1545+@Callable(cP)
1546+func getAccBalanceWrapperREADONLY (bO) = $Tuple2(nil, bN(bO))
15461547
15471548
15481549
1549-@Callable(cO)
1550-func calcPricesWrapperREADONLY (cg,ch,cl) = {
1551- let hK = ck(cg, ch, cl)
1552- $Tuple2(nil, [toString(hK[0]), toString(hK[1]), toString(hK[2])])
1550+@Callable(cP)
1551+func calcPricesWrapperREADONLY (ch,ci,cm) = {
1552+ let hM = cl(ch, ci, cm)
1553+ $Tuple2(nil, [toString(hM[0]), toString(hM[1]), toString(hM[2])])
15531554 }
15541555
15551556
15561557
1557-@Callable(cO)
1558-func fromX18WrapperREADONLY (M,hL) = $Tuple2(nil, L(parseBigIntValue(M), hL))
1558+@Callable(cP)
1559+func fromX18WrapperREADONLY (M,hN) = $Tuple2(nil, L(parseBigIntValue(M), hN))
15591560
15601561
15611562
1562-@Callable(cO)
1563+@Callable(cP)
15631564 func toX18WrapperREADONLY (I,J) = $Tuple2(nil, toString(H(I, J)))
15641565
15651566
15661567
1567-@Callable(cO)
1568-func calcPriceBigIntWrapperREADONLY (bP,bQ) = $Tuple2(nil, toString(bO(parseBigIntValue(bP), parseBigIntValue(bQ))))
1568+@Callable(cP)
1569+func calcPriceBigIntWrapperREADONLY (bQ,bR) = $Tuple2(nil, toString(bP(parseBigIntValue(bQ), parseBigIntValue(bR))))
15691570
15701571
15711572
1572-@Callable(cO)
1573-func estimatePutOperationWrapperREADONLY (dd,bV,dC,dD,dE,dF,hM,dG,dH) = $Tuple2(nil, dB(dd, bV, dC, dD, dE, dF, hM, dG, dH, true, false, 0, ""))
1573+@Callable(cP)
1574+func estimatePutOperationWrapperREADONLY (de,bW,dD,dE,dF,dG,hO,dH,dI) = $Tuple2(nil, dC(de, bW, dD, dE, dF, dG, hO, dH, dI, true, false, 0, ""))
15741575
15751576
15761577
1577-@Callable(cO)
1578-func estimateGetOperationWrapperREADONLY (dd,hN,df,hM) = {
1579- let dW = dc(dd, hN, df, addressFromStringValue(hM))
1580- $Tuple2(nil, $Tuple10(dW._1, dW._2, dW._3, dW._4, dW._5, dW._6, dW._7, toString(dW._8), dW._9, dW._10))
1578+@Callable(cP)
1579+func estimateGetOperationWrapperREADONLY (de,hP,dg,hO) = {
1580+ let dX = dd(de, hP, dg, addressFromStringValue(hO))
1581+ $Tuple2(nil, $Tuple10(dX._1, dX._2, dX._3, dX._4, dX._5, dX._6, dX._7, toString(dX._8), dX._9, dX._10))
15811582 }
15821583
15831584
1584-@Verifier(hO)
1585-func hP () = {
1586- let hQ = {
1587- let gj = gi()
1588- if ($isInstanceOf(gj, "ByteVector"))
1585+@Verifier(hQ)
1586+func hR () = {
1587+ let hS = {
1588+ let gl = gk()
1589+ if ($isInstanceOf(gl, "ByteVector"))
15891590 then {
1590- let gn = gj
1591- gn
1591+ let gp = gl
1592+ gp
15921593 }
1593- else if ($isInstanceOf(gj, "Unit"))
1594- then hO.senderPublicKey
1594+ else if ($isInstanceOf(gl, "Unit"))
1595+ then hQ.senderPublicKey
15951596 else throw("Match error")
15961597 }
1597- let gj = hO
1598- if ($isInstanceOf(gj, "Order"))
1598+ let gl = hQ
1599+ if ($isInstanceOf(gl, "Order"))
15991600 then {
1600- let eY = gj
1601- let hR = aV()
1602- let hS = eX(eY)
1603- let hT = sigVerify(eY.bodyBytes, eY.proofs[0], eY.senderPublicKey)
1604- let hU = sigVerify(eY.bodyBytes, eY.proofs[1], hR)
1605- if (if (if (hS)
1606- then hT
1601+ let eZ = gl
1602+ let hT = aW()
1603+ let hU = eY(eZ)
1604+ let aF = hU._1
1605+ let aG = hU._2
1606+ let aH = sigVerify(eZ.bodyBytes, eZ.proofs[0], eZ.senderPublicKey)
1607+ let aI = sigVerify(eZ.bodyBytes, eZ.proofs[1], hT)
1608+ if (if (if (aF)
1609+ then aH
16071610 else false)
1608- then hU
1611+ then aI
16091612 else false)
16101613 then true
1611- else aE(hS, hT, hU)
1614+ else aE(aF, aG, aH, aI)
16121615 }
1613- else if ($isInstanceOf(gj, "SetScriptTransaction"))
1616+ else if ($isInstanceOf(gl, "SetScriptTransaction"))
16141617 then {
1615- let cB = gj
1616- if (sigVerify(hO.bodyBytes, hO.proofs[0], hQ))
1618+ let cC = gl
1619+ if (sigVerify(hQ.bodyBytes, hQ.proofs[0], hS))
16171620 then true
16181621 else {
1619- let hV = blake2b256(value(cB.script))
1620- let hW = fromBase64String(value(getString(aP, aC())))
1622+ let hV = blake2b256(value(cC.script))
1623+ let hW = fromBase64String(value(getString(aQ, aC())))
16211624 let hX = scriptHash(this)
16221625 if ((hW == hV))
16231626 then (hX != hV)
16241627 else false
16251628 }
16261629 }
1627- else sigVerify(hO.bodyBytes, hO.proofs[0], hQ)
1630+ else sigVerify(hQ.bodyBytes, hQ.proofs[0], hS)
16281631 }
16291632

github/deemru/w8io/169f3d6 
641.97 ms