tx · HhEExXXR6RBqFX2afYjDTx6jSNQ4qMHxQjHf7kTV5rVX

3MzKSdTH2jFbypLsoNfrH7QgkzSbx3EYwCA:  -0.03600000 Waves

2022.12.22 17:53 [2371643] smart account 3MzKSdTH2jFbypLsoNfrH7QgkzSbx3EYwCA > SELF 0.00000000 Waves

{ "type": 13, "id": "HhEExXXR6RBqFX2afYjDTx6jSNQ4qMHxQjHf7kTV5rVX", "fee": 3600000, "feeAssetId": null, "timestamp": 1671720814116, "version": 1, "sender": "3MzKSdTH2jFbypLsoNfrH7QgkzSbx3EYwCA", "senderPublicKey": "35yd3qw1gxKDxKwGAykHN9fANbXNWwseaUwbWDj24o3x", "proofs": [ "4R5GVwWuVtbFZ3pYZkWYeM7ABjsT8ck2UNJ6GoUsfC8sdLgPKUJY48vX77fB8uZV3ZTJ9hBTSuDsBBTqdy2eK8ZA" ], "script": "base64:BgKEKQgCEgMKAQgSAwoBCBIAEgQKAgEEEgQKAgEEEgASBAoCCAESABIECgIIARIECgIIARIECgIBARIDCgEBEgUKAwEBARIFCgMBCAESBAoCAQgSBAoCAQgSBAoCCAgSBAoCCAgSBAoCCAESABIDCgEIEgUKAwEBARIECgIIARIECgIBARIECgIICBILCgkIAQECAQIIBAQSBgoECAgBCBIAIgZzY2FsZTgiDHNjYWxlOEJpZ0ludCIHc2NhbGUxOCIKemVyb0JpZ0ludCIEYmlnMCIEYmlnMSIEYmlnMiIEYmlnMyIEYmlnNCIKc2xpcHBhZ2U0RCILd2F2ZXNTdHJpbmciBUFtdWx0IgVEY29udiIDU0VQIgVFTVBUWSIKUG9vbEFjdGl2ZSIKUG9vbFB1dERpcyIOUG9vbE1hdGNoZXJEaXMiDFBvb2xTaHV0ZG93biIOaWR4UG9vbEFkZHJlc3MiCWlkeFBvb2xTdCIJaWR4TFBBc0lkIglpZHhBbUFzSWQiCWlkeFByQXNJZCILaWR4QW10QXNEY20iDWlkeFByaWNlQXNEY20iC2lkeElBbXRBc0lkIg1pZHhJUHJpY2VBc0lkIg9pZHhGYWN0U3Rha0NudHIiEmlkeEZhY3RvcnlSZXN0Q250ciIQaWR4RmFjdFNsaXBwQ250ciIRaWR4RmFjdEd3eFJld0NudHIiCmZlZURlZmF1bHQiAnQxIgdvcmlnVmFsIg1vcmlnU2NhbGVNdWx0IgJmMSIDdmFsIg9yZXN1bHRTY2FsZU11bHQiDGZyb21YMThSb3VuZCIFcm91bmQiAnRzIgNhbXQiCHJlc1NjYWxlIghjdXJTY2FsZSIDYWJzIglhYnNCaWdJbnQiAmZjIgNtcGsiBHBtcGsiAnBsIgJwaCIBaCIBdCIDcGF1IgJ1YSIEdHhJZCIDZ2F1IgJhYSICcGEiA2FtcCIDYWRhIgZrZXlGZWUiA2ZlZSIGa2V5RExwIhVrZXlETHBSZWZyZXNoZWRIZWlnaHQiEmtleURMcFJlZnJlc2hEZWxheSIWZExwUmVmcmVzaERlbGF5RGVmYXVsdCIPZExwUmVmcmVzaERlbGF5IgRmY2ZnIgRtdHBrIgJwYyIGaUFtdEFzIgVpUHJBcyIDbWJhIgViQVN0ciIDYXBzIhxrZXlBbGxvd2VkTHBTdGFibGVTY3JpcHRIYXNoIhZrZXlGZWVDb2xsZWN0b3JBZGRyZXNzIgN0b2UiA29yViIGc2VuZHJWIgZtYXRjaFYiBHN0cmYiBGFkZHIiA2tleSIEaW50ZiIIdGhyb3dFcnIiA21zZyIGZm10RXJyIgNmY2EiAUEiA2lncyICbXAiE2ZlZUNvbGxlY3RvckFkZHJlc3MiA2dwYyIFYW10QXMiB3ByaWNlQXMiCGlQcmljZUFzIgxwYXJzZUFzc2V0SWQiBWlucHV0Ig9hc3NldElkVG9TdHJpbmciD3BhcnNlUG9vbENvbmZpZyIKcG9vbENvbmZpZyIQcG9vbENvbmZpZ1BhcnNlZCILJHQwNzM4Mzc2MTIiDmNmZ1Bvb2xBZGRyZXNzIg1jZmdQb29sU3RhdHVzIgxjZmdMcEFzc2V0SWQiEGNmZ0Ftb3VudEFzc2V0SWQiD2NmZ1ByaWNlQXNzZXRJZCIWY2ZnQW1vdW50QXNzZXREZWNpbWFscyIVY2ZnUHJpY2VBc3NldERlY2ltYWxzIhJjZmdJbkFtb3VudEFzc2VkSWQiEWNmZ0luUHJpY2VBc3NldElkIgNnZmMiDWZhY3RvcnlDb25maWciD3N0YWtpbmdDb250cmFjdCIPc2xpcGFnZUNvbnRyYWN0Igtnd3hDb250cmFjdCIMcmVzdENvbnRyYWN0IhFkYXRhUHV0QWN0aW9uSW5mbyINaW5BbXRBc3NldEFtdCIPaW5QcmljZUFzc2V0QW10IghvdXRMcEFtdCIFcHJpY2UiCnNsaXBCeVVzZXIiDHNsaXBwYWdlUmVhbCIIdHhIZWlnaHQiC3R4VGltZXN0YW1wIgxzbGlwYWdlQW1BbXQiDHNsaXBhZ2VQckFtdCIRZGF0YUdldEFjdGlvbkluZm8iDm91dEFtdEFzc2V0QW10IhBvdXRQcmljZUFzc2V0QW10IgdpbkxwQW10Ig1nZXRBY2NCYWxhbmNlIgdhc3NldElkIgRjcGJpIghwckFtdFgxOCIIYW1BbXRYMTgiA3ZhZCICQTEiAkEyIghzbGlwcGFnZSIEZGlmZiIEcGFzcyICdmQiAkQxIgJEMCIEc2xwZyIEZmFpbCIDcGNwIgphbUFzc2V0RGNtIgpwckFzc2V0RGNtIgVhbUFtdCIFcHJBbXQiC2FtdEFzQW10WDE4IgpwckFzQW10WDE4IgpjYWxjUHJpY2VzIgVscEFtdCIIYW10QXNEY20iB3ByQXNEY20iCHByaWNlWDE4IghscEFtdFgxOCINbHBQckluQW1Bc1gxOCINbHBQckluUHJBc1gxOCIPY2FsY3VsYXRlUHJpY2VzIgFwIgd0YWtlRmVlIgZhbW91bnQiCWZlZUFtb3VudCIDZWdvIgZ0eElkNTgiCnBtdEFzc2V0SWQiCHBtdExwQW10Igt1c2VyQWRkcmVzcyIEbHBJZCIEYW1JZCIEcHJJZCIFYW1EY20iBXByRGNtIgNzdHMiB2xwRW1pc3MiCWFtQmFsYW5jZSIMYW1CYWxhbmNlWDE4IglwckJhbGFuY2UiDHByQmFsYW5jZVgxOCILY3VyUHJpY2VYMTgiCGN1clByaWNlIgtwbXRMcEFtdFgxOCIKbHBFbWlzc1gxOCILb3V0QW1BbXRYMTgiC291dFByQW10WDE4IghvdXRBbUFtdCIIb3V0UHJBbXQiBXN0YXRlIgNlcG8iB2luQW1BbXQiBmluQW1JZCIHaW5QckFtdCIGaW5QcklkIgZpc0V2YWwiBmVtaXRMcCIKaXNPbmVBc3NldCIQdmFsaWRhdGVTbGlwcGFnZSIGcG10QW10IgVwbXRJZCIHYW1JZFN0ciIHcHJJZFN0ciIJaW5BbUlkU3RyIglpblBySWRTdHIiBmFtdERjbSIIcHJpY2VEY20iBGxwRW0iD2luQW1Bc3NldEFtdFgxOCIPaW5QckFzc2V0QW10WDE4Igx1c2VyUHJpY2VYMTgiAXIiC3NsaXBwYWdlWDE4Ig9zbGlwcGFnZVJlYWxYMTgiDWxwRW1pc3Npb25YMTgiCnByVmlhQW1YMTgiCmFtVmlhUHJYMTgiDGV4cGVjdGVkQW10cyIRZXhwQW10QXNzZXRBbXRYMTgiE2V4cFByaWNlQXNzZXRBbXRYMTgiCWNhbGNMcEFtdCIOY2FsY0FtQXNzZXRQbXQiDmNhbGNQckFzc2V0UG10IgxzbGlwcGFnZUNhbGMiCWVtaXRMcEFtdCIGYW1EaWZmIgZwckRpZmYiDSR0MDE4MDE3MTgzNjIiCndyaXRlQW1BbXQiCndyaXRlUHJBbXQiC2NvbW1vblN0YXRlIgRnZXREIgJ4cCIDeHAwIgN4cDEiAXMiAWEiA2FubiILeHAwX3hwMV9uX24iBWFubl9zIgVhbm5fMSIJY2FsY0ROZXh0IgFkIgJkZCIDZGRkIgJkcCIEY2FsYyIDYWNjIgFpIgVkTmV4dCIIZERpZmZSYXciBWREaWZmIgNhcnIiDSR0MDIwMjkwMjAzMzgiAiRsIgIkcyIFJGFjYzAiBSRmMF8xIgIkYSICJGkiBSRmMF8yIgVmb3VuZCIHZ2V0RE9sZCIBbiIKYVByZWNpc2lvbiIQYW5uX3NfYVByZWNpc2lvbiIOYW5uX2FQcmVjaXNpb24iAm4xIgNjdXIiDSR0MDIwOTY3MjA5ODciDSR0MDIxNDA4MjE0NTUiBWdldFlEIgFEIgF4IgFjIgFiIg0kdDAyMTk1NTIxOTc1IgF5IgV5TmV4dCIFeURpZmYiDSR0MDIyMjgyMjIzMjkiB2NhbGNETHAiDWFtb3VudEJhbGFuY2UiDHByaWNlQmFsYW5jZSIKbHBFbWlzc2lvbiIKdXBkYXRlZERMcCIOY2FsY0N1cnJlbnRETHAiEGFtb3VudEFzc2V0RGVsdGEiD3ByaWNlQXNzZXREZWx0YSIUbHBBc3NldEVtaXNzaW9uRGVsdGEiEmFtb3VudEFzc2V0QmFsYW5jZSIRcHJpY2VBc3NldEJhbGFuY2UiD2xwQXNzZXRFbWlzc2lvbiIKY3VycmVudERMcCIScmVmcmVzaERMcEludGVybmFsIhdhbW91bnRBc3NldEJhbGFuY2VEZWx0YSIWcHJpY2VBc3NldEJhbGFuY2VEZWx0YSIHYWN0aW9ucyISdmFsaWRhdGVVcGRhdGVkRExwIgZvbGRETHAiG3ZhbGlkYXRlTWF0Y2hlck9yZGVyQWxsb3dlZCIFb3JkZXIiEWFtb3VudEFzc2V0QW1vdW50IhBwcmljZUFzc2V0QW1vdW50Ig0kdDAyNDI2ODI0NDgwIgNkTHAiDSR0MDI0ODEwMjQ5MTAiDXVudXNlZEFjdGlvbnMiBmRMcE5ldyIMaXNPcmRlclZhbGlkIgJjZyIDcG10IgJjcCIGY2FsbGVyIgdhbUFzUG10IgdwckFzUG10Ig1jYWxjUHV0T25lVGtuIglwbXRBbXRSYXciC3dpdGhUYWtlRmVlIg1jaGVjaEVtaXNzaW9uIg0kdDAyNzE3NjI3NjM4IgxhbUJhbGFuY2VPbGQiDHByQmFsYW5jZU9sZCINJHQwMjc2NDQyNzgyMCILYW1BbW91bnRSYXciC3ByQW1vdW50UmF3Ig0kdDAyNzgyNDI4MDYzIghhbUFtb3VudCIIcHJBbW91bnQiDGFtQmFsYW5jZU5ldyIMcHJCYWxhbmNlTmV3IgZjaGVja0QiCGxwQW1vdW50Ig5wb29sUHJvcG9ydGlvbiIPYW1vdW50QXNzZXRQYXJ0Ig5wcmljZUFzc2V0UGFydCIJbHBBbXRCb3RoIgVib251cyITZ2V0T25lVGtuVjJJbnRlcm5hbCIKb3V0QXNzZXRJZCIMbWluT3V0QW1vdW50IghwYXltZW50cyIMb3JpZ2luQ2FsbGVyIg10cmFuc2FjdGlvbklkIgphbURlY2ltYWxzIgpwckRlY2ltYWxzIgpwb29sU3RhdHVzIg0kdDAzMDExMzMwMjI0IgFAIgh0b3RhbEdldCILdG90YWxBbW91bnQiDSR0MDMwNDE0MzA3MjEiBW91dEFtIgVvdXRQciIIY3VyUHJYMTgiBWN1clByIhFvdXRBc3NldElkT3JXYXZlcyIQc2VuZEZlZVRvTWF0Y2hlciIEYnVybiINJHQwMzE1MDYzMTg1NiIQZmVlQW1vdW50Rm9yQ2FsYyIQb3V0SW5BbW91bnRBc3NldCINJHQwMzE4NTkzMTk2NyIRcmVmcmVzaERMcEFjdGlvbnMiEWlzVXBkYXRlZERMcFZhbGlkIgFtIgckbWF0Y2gwIgJwbSICcGQiCWlzTWFuYWdlciICcGsiAm1tIhdwZW5kaW5nTWFuYWdlclB1YmxpY0tleSICY20iA2hwbSIDY3BtIgRzbGlwIglhdXRvU3Rha2UiB2ZhY3RDZmciC3N0YWtpbmdDbnRyIghzbGlwQ250ciIKYW1Bc3NldFBtdCIKcHJBc3NldFBtdCIBZSIJbHBBc3NldElkIgJlbCIGbGVnYWN5IgJzYSICc3AiCGxwVHJuc2ZyIgJzcyINJHQwMzYxMTYzNjE4MSIFY2hlY2siFGxwQXNzZXRFbWlzc2lvbkFmdGVyIiBpc1Bvb2xPbmVUb2tlbk9wZXJhdGlvbnNEaXNhYmxlZCINaXNQdXREaXNhYmxlZCIGY2hlY2tzIg0kdDAzNzY1MjM3ODEwIgdlc3RpbUxQIg0kdDAzODYyNTM4OTc0IhRwYXltZW50SW5BbW91bnRBc3NldCINJHQwMzg5NzczOTA4NSIJb3V0QW10QW10Ig0kdDA0MTM5NzQxNDc5Ig1pc0dldERpc2FibGVkIg0kdDA0MjA5NzQyMjUyIhhsYXN0UmVmcmVzaGVkQmxvY2tIZWlnaHQiHWNoZWNrTGFzdFJlZnJlc2hlZEJsb2NrSGVpZ2h0Ig0kdDA0Mjc3NjQyODQwIhBkTHBVcGRhdGVBY3Rpb25zIg1scEFzc2V0QW1vdW50IgVpbmRleCIEbmV3WSICZHkiC3RvdGFsR2V0UmF3Ig0kdDA0Mzc3MDQzODE5Ig0kdDA0NDE5NDQ0MzA5Ig5zdW1PZkdldEFzc2V0cyISbm9MZXNzVGhlbkFtdEFzc2V0IhRub0xlc3NUaGVuUHJpY2VBc3NldCIDYWFiIgNwYWIiA2xhZSIEbGFlYSIUYnVybkxQQXNzZXRPbkZhY3RvcnkiDSR0MDQ1ODQ4NDU5MjkiDWNoZWNrUGF5bWVudHMiCmZhY3RvcnlDZmciB3N0YWtpbmciCnVuc3Rha2VJbnYiAXYiBWJ1cm5BIg0kdDA0Njk1MzQ3MDM0Ig11bnN0YWtlQW1vdW50IhVub0xlc3NUaGVuQW1vdW50QXNzZXQiA3JlcyIMY2hlY2tBbW91bnRzIg0kdDA0ODI4MjQ4MzYzIg0kdDA0OTI1ODQ5NDQ2IhBwYXltZW50QW1vdW50UmF3Ig5wYXltZW50QXNzZXRJZCINJHQwNDk1NzQ0OTY3NyINJHQwNDk4MjU0OTkyOSIIYW10QXNTdHIiB3ByQXNTdHIiAWsiAnByIgxyZXNTY2FsZU11bHQiB3VzckFkZHIiB3BtdEFzSWQiAnR4IgZ2ZXJpZnkiD3RhcmdldFB1YmxpY0tleSIKbWF0Y2hlclB1YiIKb3JkZXJWYWxpZCILc2VuZGVyVmFsaWQiDG1hdGNoZXJWYWxpZCIHbmV3SGFzaCILYWxsb3dlZEhhc2giC2N1cnJlbnRIYXNofAABYQCAwtcvAAFiCQC2AgEAgMLXLwABYwkAtgIBAICAkLu61q3wDQABZAkAtgIBAAAAAWUJALYCAQAAAAFmCQC2AgEAAQABZwkAtgIBAAIAAWgJALYCAQADAAFpCQC2AgEABAABagkAtgIBCQBlAgUBYQkAaQIJAGgCBQFhAAEFAWEAAWsCBVdBVkVTAAFsAgMxMDAAAW0CATEAAW4CAl9fAAFvAgAAAXAAAQABcQACAAFyAAMAAXMABAABdAABAAF1AAIAAXYAAwABdwAEAAF4AAUAAXkABgABegAHAAFBAAgAAUIACQABQwABAAFEAAYAAUUABwABRgAKAAFHCQBrAwAKBQFhAJBOAQFIAgFJAUoJALwCAwkAtgIBBQFJBQFjCQC2AgEFAUoBAUsCAUwBTQkAoAMBCQC8AgMFAUwJALYCAQUBTQUBYwEBTgMBTAFNAU8JAKADAQkAvQIEBQFMCQC2AgEFAU0FAWMFAU8BAVADAVEBUgFTCQBrAwUBUQUBUgUBUwEBVAEBTAMJAL8CAgUBZAUBTAkAvgIBBQFMBQFMAQFVAQFMAwkAvwICBQFkBQFMCQC+AgEFAUwFAUwBAVYAAhMlc19fZmFjdG9yeUNvbnRyYWN0AQFXAAIUJXNfX21hbmFnZXJQdWJsaWNLZXkBAVgAAhslc19fcGVuZGluZ01hbmFnZXJQdWJsaWNLZXkBAVkAAhElcyVzX19wcmljZV9fbGFzdAEBWgICYWECYWIJALkJAgkAzAgCAhglcyVzJWQlZF9fcHJpY2VfX2hpc3RvcnkJAMwIAgkApAMBBQJhYQkAzAgCCQCkAwEFAmFiBQNuaWwFAW4BAmFjAgJhZAJhZQkArAICCQCsAgIJAKwCAgILJXMlcyVzX19QX18FAmFkAgJfXwUCYWUBAmFmAgJhZAJhZQkArAICCQCsAgIJAKwCAgILJXMlcyVzX19HX18FAmFkAgJfXwUCYWUBAmFnAAIPJXNfX2Ftb3VudEFzc2V0AQJhaAACDiVzX19wcmljZUFzc2V0AQJhaQACByVzX19hbXABAmFqAAINJXNfX2FkZG9uQWRkcgACYWsCByVzX19mZWUAAmFsCQELdmFsdWVPckVsc2UCCQCaCAIFBHRoaXMFAmFrBQFHAAJhbQkAuQkCCQDMCAICAiVzCQDMCAICA2RMcAUDbmlsBQFuAAJhbgkAuQkCCQDMCAICAiVzCQDMCAICEmRMcFJlZnJlc2hlZEhlaWdodAUDbmlsBQFuAAJhbwkAuQkCCQDMCAICAiVzCQDMCAICD3JlZnJlc2hETHBEZWxheQUDbmlsBQFuAAJhcAABAAJhcQkBC3ZhbHVlT3JFbHNlAgkAmggCBQR0aGlzBQJhbwUCYXABAmFyAAIRJXNfX2ZhY3RvcnlDb25maWcBAmFzAAIYJXMlc19fbWF0Y2hlcl9fcHVibGljS2V5AQJhdAICYXUCYXYJAKwCAgkArAICCQCsAgIJAKwCAgIIJWQlZCVzX18FAmF1AgJfXwUCYXYCCF9fY29uZmlnAQJhdwECYXgJAKwCAgIoJXMlcyVzX19tYXBwaW5nc19fYmFzZUFzc2V0MmludGVybmFsSWRfXwUCYXgBAmF5AAIMJXNfX3NodXRkb3duAQJhegACHSVzX19hbGxvd2VkTHBTdGFibGVTY3JpcHRIYXNoAQJhQQACFyVzX19mZWVDb2xsZWN0b3JBZGRyZXNzAQJhQgMCYUMCYUQCYUUJAAIBCQCsAgIJAKwCAgkArAICCQCsAgIJAKwCAgIRRmFpbGVkOiBvcmRWYWxpZD0JAKUDAQUCYUMCCyBzbmRyVmFsaWQ9CQClAwEFAmFEAgwgbXRjaHJWYWxpZD0JAKUDAQUCYUUBAmFGAgJhRwJhSAkBE3ZhbHVlT3JFcnJvck1lc3NhZ2UCCQCdCAIFAmFHBQJhSAkAuQkCCQDMCAICCm1hbmRhdG9yeSAJAMwIAgkApQgBBQJhRwkAzAgCAgEuCQDMCAIFAmFICQDMCAICDCBub3QgZGVmaW5lZAUDbmlsAgABAmFJAgJhRwJhSAkBE3ZhbHVlT3JFcnJvck1lc3NhZ2UCCQCaCAIFAmFHBQJhSAkAuQkCCQDMCAICCm1hbmRhdG9yeSAJAMwIAgkApQgBBQJhRwkAzAgCAgEuCQDMCAIFAmFICQDMCAICDCBub3QgZGVmaW5lZAUDbmlsAgABAmFKAQJhSwkAAgEJALkJAgkAzAgCAg9scF9zdGFibGUucmlkZToJAMwIAgUCYUsFA25pbAIBIAECYUwBAmFLCQC5CQIJAMwIAgIPbHBfc3RhYmxlLnJpZGU6CQDMCAIFAmFLBQNuaWwCASAAAmFNCQERQGV4dHJOYXRpdmUoMTA2MikBCQECYUYCBQR0aGlzCQEBVgAAAmFOCQECYUYCBQR0aGlzCQECYWkAAQJhTwAJAQt2YWx1ZU9yRWxzZQIJAJsIAgUCYU0JAQJheQAHAQJhUAAJANkEAQkBAmFGAgUCYU0JAQJhcwAAAmFRCQERQGV4dHJOYXRpdmUoMTA2MikBCQECYUYCBQJhTQkBAmFBAAECYVIABAJhUwkBAmFGAgUEdGhpcwkBAmFnAAQCYVQJAQJhRgIFBHRoaXMJAQJhaAAEAmFVCQECYUkCBQJhTQkBAmF3AQUCYVQEAmF1CQECYUkCBQJhTQkBAmF3AQUCYVMJALUJAgkBAmFGAgUCYU0JAQJhdAIJAKQDAQUCYXUJAKQDAQUCYVUFAW4BAmFWAQJhVwMJAAACBQJhVwUBawUEdW5pdAkA2QQBBQJhVwECYVgBAmFXAwkAAAIFAmFXBQR1bml0BQFrCQDYBAEJAQV2YWx1ZQEFAmFXAQJhWQECYVoJAJsKCQkBEUBleHRyTmF0aXZlKDEwNjIpAQkAkQMCBQJhWgUBdAkBDXBhcnNlSW50VmFsdWUBCQCRAwIFAmFaBQF1CQDZBAEJAJEDAgUCYVoFAXYJAQJhVgEJAJEDAgUCYVoFAXcJAQJhVgEJAJEDAgUCYVoFAXgJAQ1wYXJzZUludFZhbHVlAQkAkQMCBQJhWgUBeQkBDXBhcnNlSW50VmFsdWUBCQCRAwIFAmFaBQF6CQDZBAEJAJEDAgUCYVoFAUEJANkEAQkAkQMCBQJhWgUBQgACYmEJAQJhWQEJAQJhUgAAAmJiBQJiYQACYmMIBQJiYgJfMQACYmQIBQJiYgJfMgACYmUIBQJiYgJfMwACYmYIBQJiYgJfNAACYmcIBQJiYgJfNQACYmgIBQJiYgJfNgACYmkIBQJiYgJfNwACYmoIBQJiYgJfOAACYmsIBQJiYgJfOQECYmwACQC1CQIJAQJhRgIFAmFNCQECYXIABQFuAAJibQkBAmJsAAACYm4JARN2YWx1ZU9yRXJyb3JNZXNzYWdlAgkApggBCQCRAwIFAmJtBQFDAiBJbnZhbGlkIHN0YWtpbmcgY29udHJhY3QgYWRkcmVzcwACYm8JARN2YWx1ZU9yRXJyb3JNZXNzYWdlAgkApggBCQCRAwIFAmJtBQFFAiBJbnZhbGlkIHNsaXBhZ2UgY29udHJhY3QgYWRkcmVzcwACYnAJARN2YWx1ZU9yRXJyb3JNZXNzYWdlAgkApggBCQCRAwIFAmJtBQFGAhxJbnZhbGlkIGd3eCBjb250cmFjdCBhZGRyZXNzAAJicQkBE3ZhbHVlT3JFcnJvck1lc3NhZ2UCCQCmCAEJAJEDAgUCYm0FAUQCHEludmFsaWQgZ3d4IGNvbnRyYWN0IGFkZHJlc3MBAmJyCgJicwJidAJidQJidgJidwJieAJieQJiegJiQQJiQgkAuQkCCQDMCAICFCVkJWQlZCVkJWQlZCVkJWQlZCVkCQDMCAIJAKQDAQUCYnMJAMwIAgkApAMBBQJidAkAzAgCCQCkAwEFAmJ1CQDMCAIJAKQDAQUCYnYJAMwIAgkApAMBBQJidwkAzAgCCQCkAwEFAmJ4CQDMCAIJAKQDAQUCYnkJAMwIAgkApAMBBQJiegkAzAgCCQCkAwEFAmJBCQDMCAIJAKQDAQUCYkIFA25pbAUBbgECYkMGAmJEAmJFAmJGAmJ2AmJ5AmJ6CQC5CQIJAMwIAgIMJWQlZCVkJWQlZCVkCQDMCAIJAKQDAQUCYkQJAMwIAgkApAMBBQJiRQkAzAgCCQCkAwEFAmJGCQDMCAIJAKQDAQUCYnYJAMwIAgkApAMBBQJieQkAzAgCCQCkAwEFAmJ6BQNuaWwFAW4BAmJHAQJiSAMJAAACBQJiSAIFV0FWRVMICQDvBwEFBHRoaXMJYXZhaWxhYmxlCQDwBwIFBHRoaXMJANkEAQUCYkgBAmJJAgJiSgJiSwkAvAIDBQJiSgUBYwUCYksBAmJMAwJiTQJiTgJiTwQCYlAJALwCAwkAuAICBQJiTQUCYk4FAWIFAmJOBAJiUQkAvwICCQC4AgIFAmJPCQEBVAEFAmJQBQFkAwkBASEBBQJiUQkAAgEJAKwCAgIKQmlnIHNscGc6IAkApgMBBQJiUAkAlAoCBQJiUQkAmQMBCQDMCAIFAmJNCQDMCAIFAmJOBQNuaWwBAmJSAwJiUwJiVAJiVQQCYlAJALwCAwUCYlQFAWIFAmJTBAJiVgkAvwICBQJiVQUCYlADAwUCYlYGCQC/AgIFAmJUBQJiUwkAAgEJAKwCAgkArAICCQCsAgIJAKwCAgkArAICCQCsAgIJAKYDAQUCYlQCASAJAKYDAQUCYlMCASAJAKYDAQUCYlACASAJAKYDAQUCYlUFAmJWAQJiVwQCYlgCYlkCYloCY2EEAmNiCQEBSAIFAmJaBQJiWAQCY2MJAQFIAgUCY2EFAmJZCQECYkkCBQJjYwUCY2IBAmNkAwJiWgJjYQJjZQQCY2YFAmJoBAJjZwUCYmkEAmNoCQECYlcEBQJjZgUCY2cFAmJaBQJjYQQCYksJAQFIAgUCYloFAmNmBAJiSgkBAUgCBQJjYQUCY2cEAmNpCQEBSAIFAmNlBQFhBAJjagkBAmJJAgUCYksFAmNpBAJjawkBAmJJAgUCYkoFAmNpCQDMCAIFAmNoCQDMCAIFAmNqCQDMCAIFAmNrBQNuaWwBAmNsAwJiWgJjYQJjZQQCY20JAQJjZAMFAmJaBQJjYQUCY2UJAMwIAgkBAUsCCQCRAwIFAmNtAAAFAWEJAMwIAgkBAUsCCQCRAwIFAmNtAAEFAWEJAMwIAgkBAUsCCQCRAwIFAmNtAAIFAWEFA25pbAECY24BAmNvBAJjcAkAawMFAmNvBQJhbAUBYQkAlAoCCQBlAgUCY28FAmNwBQJjcAECY3EEAmNyAmNzAmN0AmN1BAJjdgUCYmUEAmN3CQDYBAEJAQV2YWx1ZQEFAmJmBAJjeAkA2AQBCQEFdmFsdWUBBQJiZwQCY3kFAmJoBAJjegUCYmkEAmNBCQCkAwEFAmJkBAJjQggJARN2YWx1ZU9yRXJyb3JNZXNzYWdlAgkA7AcBBQJjdgILV3JvbmcgTFAgaWQIcXVhbnRpdHkDCQECIT0CCQDYBAEFAmN2BQJjcwkAAgECD1dyb25nIHBtdCBhc3NldAQCY0MJAQJiRwEFAmN3BAJjRAkBAUgCBQJjQwUCY3kEAmNFCQECYkcBBQJjeAQCY0YJAQFIAgUCY0UFAmN6BAJjRwkBAmJJAgUCY0YFAmNEBAJjSAkBAUsCBQJjRwUBYQQCY0kJAQFIAgUCY3QFAWEEAmNKCQEBSAIFAmNCBQFhBAJjSwkAvAIDBQJjRAUCY0kFAmNKBAJjTAkAvAIDBQJjRgUCY0kFAmNKBAJjTQkBAU4DBQJjSwUCY3kFBUZMT09SBAJjTgkBAU4DBQJjTAUCY3oFBUZMT09SBAJjTwMJAAACBQJjcgIABQNuaWwJAMwIAgkBDlNjcmlwdFRyYW5zZmVyAwUCY3UFAmNNAwkAAAIFAmN3AgVXQVZFUwUEdW5pdAkA2QQBBQJjdwkAzAgCCQEOU2NyaXB0VHJhbnNmZXIDBQJjdQUCY04DCQAAAgUCY3gCBVdBVkVTBQR1bml0CQDZBAEFAmN4CQDMCAIJAQtTdHJpbmdFbnRyeQIJAQJhZgIJAKUIAQUCY3UFAmNyCQECYkMGBQJjTQUCY04FAmN0BQJjSAUGaGVpZ2h0CAUJbGFzdEJsb2NrCXRpbWVzdGFtcAkAzAgCCQEMSW50ZWdlckVudHJ5AgkBAVkABQJjSAkAzAgCCQEMSW50ZWdlckVudHJ5AgkBAVoCBQZoZWlnaHQIBQlsYXN0QmxvY2sJdGltZXN0YW1wBQJjSAUDbmlsCQCcCgoFAmNNBQJjTgUCY3cFAmN4BQJjQwUCY0UFAmNCBQJjRwUCY0EFAmNPAQJjUA0CY3ICYk8CY1ECY1ICY1MCY1QCY3UCY1UCY1YCY1cCY1gCY1kCY1oEAmN2BQJiZQQCZGEJANgEAQkBBXZhbHVlAQUCYmYEAmRiCQDYBAEJAQV2YWx1ZQEFAmJnBAJkYwUCYmoEAmRkBQJiawQCZGUFAmJoBAJkZgUCYmkEAmNBCQCkAwEFAmJkBAJkZwgJARN2YWx1ZU9yRXJyb3JNZXNzYWdlAgkA7AcBBQJjdgIIV3IgbHAgYXMIcXVhbnRpdHkEAmNDAwUCY1UJAQJiRwEFAmRhAwMFAmNXCQAAAgUCY1oFAmRhBwkAZQIJAQJiRwEFAmRhBQJjWQMFAmNXCQECYkcBBQJkYQkAZQIJAQJiRwEFAmRhBQJjUQQCY0UDBQJjVQkBAmJHAQUCZGIDAwUCY1cJAAACBQJjWgUCZGIHCQBlAgkBAmJHAQUCZGIFAmNZAwUCY1cJAQJiRwEFAmRiCQBlAgkBAmJHAQUCZGIFAmNTBAJkaAkBAUgCBQJjUQUCZGUEAmRpCQEBSAIFAmNTBQJkZgQCZGoJAQJiSQIFAmRpBQJkaAQCY0QJAQFIAgUCY0MFAmRlBAJjRgkBAUgCBQJjRQUCZGYEAmRrAwkAAAIFAmRnAAAEAmNHBQFkBAJkbAUBZAQCY2kJAHYGCQC5AgIFAmRoBQJkaQAACQC2AgEABQABAAAFBERPV04JAJcKBQkBAUsCBQJjaQUBYQkBAUsCBQJkaAUCZGUJAQFLAgUCZGkFAmRmCQECYkkCCQC3AgIFAmNGBQJkaQkAtwICBQJjRAUCZGgFAmRsBAJjRwkBAmJJAgUCY0YFAmNEBAJkbQkAvAIDCQEBVAEJALgCAgUCY0cFAmRqBQFjBQJjRwQCZGwJAQFIAgUCYk8FAWEDAwMFAmNYCQECIT0CBQJjRwUBZAcJAL8CAgUCZG0FAmRsBwkAAgEJAKwCAgkArAICCQCsAgICD1ByaWNlIHNsaXBwYWdlIAkApgMBBQJkbQIDID4gCQCmAwEFAmRsBAJkbgkBAUgCBQJkZwUBYQQCZG8JALwCAwUCZGgFAmNHBQFjBAJkcAkAvAIDBQJkaQUBYwUCY0cEAmRxAwkAvwICBQJkbwUCZGkJAJQKAgUCZHAFAmRpCQCUCgIFAmRoBQJkbwQCZHIIBQJkcQJfMQQCZHMIBQJkcQJfMgQCY2kJALwCAwUCZG4FAmRzBQJjRgkAlwoFCQEBTgMFAmNpBQFhBQVGTE9PUgkBAU4DBQJkcgUCZGUFB0NFSUxJTkcJAQFOAwUCZHMFAmRmBQdDRUlMSU5HBQJjRwUCZGwEAmR0CAUCZGsCXzEEAmR1CAUCZGsCXzIEAmR2CAUCZGsCXzMEAmNICQEBSwIIBQJkawJfNAUBYQQCZHcJAQFLAggFAmRrAl81BQFhAwkAZwIAAAUCZHQJAAIBAgdMUCA8PSAwBAJkeAMJAQEhAQUCY1YAAAUCZHQEAmR5CQBlAgUCY1EFAmR1BAJkegkAZQIFAmNTBQJkdgQCZEEDAwUCY1cJAAACBQJjWgUCZGEHCQCUCgIFAmNZAAADAwUCY1cJAAACBQJjWgUCZGIHCQCUCgIAAAUCY1kJAJQKAgUCZHUFAmR2BAJkQggFAmRBAl8xBAJkQwgFAmRBAl8yBAJkRAkAzAgCCQEMSW50ZWdlckVudHJ5AgkBAVkABQJjSAkAzAgCCQEMSW50ZWdlckVudHJ5AgkBAVoCBQZoZWlnaHQIBQlsYXN0QmxvY2sJdGltZXN0YW1wBQJjSAkAzAgCCQELU3RyaW5nRW50cnkCCQECYWMCBQJjdQUCY3IJAQJicgoFAmRCBQJkQwUCZHgFAmNIBQJiTwUCZHcFBmhlaWdodAgFCWxhc3RCbG9jawl0aW1lc3RhbXAFAmR5BQJkegUDbmlsCQCfCg0FAmR0BQJkeAUCY0gFAmNDBQJjRQUCZGcFAmN2BQJjQQUCZEQFAmR5BQJkegUCY1IFAmNUAQJkRQECZEYEAmRHCQCRAwIFAmRGAAAEAmRICQCRAwIFAmRGAAEEAmRJCQC3AgIFAmRHBQJkSAMJAAACBQJkSQUBZQUBZQQCZEoJAQ1wYXJzZUludFZhbHVlAQUCYU4EAmRLCQBoAgUCZEoAAgQCY20JALwCAwUCZEcFAmRIBQFmBAJkTAkAvAIDBQJjbQUBaQUBZgQCZE0JALwCAwkAtgIBBQJkSwUCZEkFAWYEAmROCQC2AgEJAGUCBQJkSwABCgECZE8BAmRQBAJkUQkAvAIDBQJkUAUCZFAFAWYEAmRSCQC8AgMFAmRRBQJkUAUBZgQCZFMJALwCAwUCZFIFAWYFAmRMCQC9AgQJALcCAgUCZE0JALwCAwUCZFMFAWcFAWYFAmRQCQC3AgIJALwCAwUCZE4FAmRQBQFmCQC8AgMFAWgFAmRTBQFmBQdDRUlMSU5HCgECZFQCAmRVAmRWAwgFAmRVAl8yBQJkVQQCZFAIBQJkVQJfMQQCZFcJAQJkTwEFAmRQBAJkWAkAoAMBCQC4AgIFAmRXCQEFdmFsdWUBBQJkUAQCZFkDCQBmAgAABQJkWAkBAS0BBQJkWAUCZFgDCQBnAgABBQJkWQkAlAoCBQJkVwYJAJQKAgUCZFcHBAJkWgkAzAgCAAAJAMwIAgABCQDMCAIAAgkAzAgCAAMJAMwIAgAECQDMCAIABQkAzAgCAAYJAMwIAgAHCQDMCAIACAkAzAgCAAkJAMwIAgAKCQDMCAIACwkAzAgCAAwJAMwIAgANCQDMCAIADgUDbmlsBAJlYQoAAmViBQJkWgoAAmVjCQCQAwEFAmViCgACZWQJAJQKAgUCZEkHCgECZWUCAmVmAmVnAwkAZwIFAmVnBQJlYwUCZWYJAQJkVAIFAmVmCQCRAwIFAmViBQJlZwoBAmVoAgJlZgJlZwMJAGcCBQJlZwUCZWMFAmVmCQACAQIUTGlzdCBzaXplIGV4Y2VlZHMgMTUJAQJlaAIJAQJlZQIJAQJlZQIJAQJlZQIJAQJlZQIJAQJlZQIJAQJlZQIJAQJlZQIJAQJlZQIJAQJlZQIJAQJlZQIJAQJlZQIJAQJlZQIJAQJlZQIJAQJlZQIJAQJlZQIFAmVkAAAAAQACAAMABAAFAAYABwAIAAkACgALAAwADQAOAA8EAmRQCAUCZWECXzEEAmVpCAUCZWECXzIDBQJlaQUCZFAJAAIBCQCsAgICGUQgY2FsY3VsYXRpb24gZXJyb3IsIEQgPSAJAKYDAQUCZFABAmVqAQJkRgQCZWsFAWcEAmRHCQCRAwIFAmRGAAAEAmRICQCRAwIFAmRGAAEEAmVsCQCnAwEFAWwEAmRKCQC5AgIJAKcDAQUCYU4FAmVsBAJkSQkAtwICBQJkRwUCZEgDCQAAAgUCZEkFAWUFAWUEAmRLCQC5AgIFAmRKBQJlawQCZEwJALkCAgkAuQICCQC5AgIFAmRHBQJkSAUCZWsFAmVrBAJlbQkAugICCQC5AgIFAmRLBQJkSQUCZWwEAmVuCQC4AgIFAmRLBQJlbAQCZW8JALcCAgUCZWsFAWYKAQJkVAICZFUCZXAEAmVxBQJkVQQCZFAIBQJlcQJfMQQCZWkIBQJlcQJfMgMJAQIhPQIFAmVpBQR1bml0BQJkVQQCZFMJALoCAgkAuQICCQC5AgIFAmRQBQJkUAUCZFAFAmRMBAJkVwkAugICCQC5AgIJALcCAgUCZW0JALkCAgUCZFMFAmVrBQJkUAkAtwICCQC6AgIJALkCAgUCZW4FAmRQBQJlbAkAuQICBQJlbwUCZFMEAmRZCQEBVQEJALgCAgUCZFcJAQV2YWx1ZQEFAmRQAwkAwAICBQFmBQJkWQkAlAoCBQJkVwUCZXAJAJQKAgUCZFcFBHVuaXQEAmRaCQDMCAIAAAkAzAgCAAEJAMwIAgACCQDMCAIAAwkAzAgCAAQJAMwIAgAFCQDMCAIABgkAzAgCAAcJAMwIAgAICQDMCAIACQkAzAgCAAoJAMwIAgALCQDMCAIADAkAzAgCAA0JAMwIAgAOBQNuaWwEAmVyCgACZWIFAmRaCgACZWMJAJADAQUCZWIKAAJlZAkAlAoCBQJkSQUEdW5pdAoBAmVlAgJlZgJlZwMJAGcCBQJlZwUCZWMFAmVmCQECZFQCBQJlZgkAkQMCBQJlYgUCZWcKAQJlaAICZWYCZWcDCQBnAgUCZWcFAmVjBQJlZgkAAgECFExpc3Qgc2l6ZSBleGNlZWRzIDE1CQECZWgCCQECZWUCCQECZWUCCQECZWUCCQECZWUCCQECZWUCCQECZWUCCQECZWUCCQECZWUCCQECZWUCCQECZWUCCQECZWUCCQECZWUCCQECZWUCCQECZWUCCQECZWUCBQJlZAAAAAEAAgADAAQABQAGAAcACAAJAAoACwAMAA0ADgAPBAJkUAgFAmVyAl8xBAJlaQgFAmVyAl8yAwkBAiE9AgUCZWkFBHVuaXQFAmRQCQACAQkArAICAhlEIGNhbGN1bGF0aW9uIGVycm9yLCBEID0gCQCmAwEFAmRQAQJlcwMCZEYCZFYCZXQEAmVrBQFnBAJldQkAkQMCBQJkRgMJAAACBQJkVgAAAAEAAAQCZWwJAKcDAQUBbAQCZEoJALkCAgkApwMBBQJhTgUCZWwEAmRJBQJldQQCZEsJALkCAgUCZEoFAmVrBAJldgkAugICCQC5AgIJALkCAgkAugICCQC5AgIFAmV0BQJldAkAuQICBQJldQUCZWsFAmV0BQJlbAkAuQICBQJkSwUCZWsEAmV3CQC4AgIJALcCAgUCZEkJALoCAgkAuQICBQJldAUCZWwFAmRLBQJldAoBAmRUAgJkVQJlcAQCZXgFAmRVBAJleQgFAmV4Al8xBAJlaQgFAmV4Al8yAwkBAiE9AgUCZWkFBHVuaXQFAmRVBAJlegkAugICCQC3AgIJALkCAgUCZXkFAmV5BQJldgkAtwICCQC5AgIFAWcFAmV5BQJldwQCZUEJAQFVAQkAuAICBQJlegkBBXZhbHVlAQUCZXkDCQDAAgIFAWYFAmVBCQCUCgIFAmV6BQJlcAkAlAoCBQJlegUEdW5pdAQCZFoJAMwIAgAACQDMCAIAAQkAzAgCAAIJAMwIAgADCQDMCAIABAkAzAgCAAUJAMwIAgAGCQDMCAIABwkAzAgCAAgJAMwIAgAJCQDMCAIACgkAzAgCAAsJAMwIAgAMCQDMCAIADQkAzAgCAA4FA25pbAQCZUIKAAJlYgUCZFoKAAJlYwkAkAMBBQJlYgoAAmVkCQCUCgIFAmV0BQR1bml0CgECZWUCAmVmAmVnAwkAZwIFAmVnBQJlYwUCZWYJAQJkVAIFAmVmCQCRAwIFAmViBQJlZwoBAmVoAgJlZgJlZwMJAGcCBQJlZwUCZWMFAmVmCQACAQIUTGlzdCBzaXplIGV4Y2VlZHMgMTUJAQJlaAIJAQJlZQIJAQJlZQIJAQJlZQIJAQJlZQIJAQJlZQIJAQJlZQIJAQJlZQIJAQJlZQIJAQJlZQIJAQJlZQIJAQJlZQIJAQJlZQIJAQJlZQIJAQJlZQIJAQJlZQIFAmVkAAAAAQACAAMABAAFAAYABwAIAAkACgALAAwADQAOAA8EAmV5CAUCZUICXzEEAmVpCAUCZUICXzIDCQECIT0CBQJlaQUEdW5pdAUCZXkJAAIBCQCsAgICGVkgY2FsY3VsYXRpb24gZXJyb3IsIFkgPSAJAKYDAQUCZXkBAmVDAwJlRAJlRQJlRgQCZUcJALwCAwkBAmRFAQkAzAgCBQJlRAkAzAgCBQJlRQUDbmlsBQFjBQJlRgMJAAACBQJlRgUBZQUBZQUCZUcBAmVIAwJlSQJlSgJlSwQCZUwJALgCAgkAtgIBCQECYkcBCQECYVgBBQJiZgUCZUkEAmVNCQC4AgIJALYCAQkBAmJHAQkBAmFYAQUCYmcFAmVKBAJlTgkAuAICCQC2AgEICQEFdmFsdWUBCQDsBwEFAmJlCHF1YW50aXR5BQJlSwQCZU8JAQJlQwMFAmVMBQJlTQUCZU4FAmVPAQJlUAMCZVECZVICZUsEAmVMCQBkAgkBAmJHAQkBAmFYAQUCYmYFAmVRBAJlTQkAZAIJAQJiRwEJAQJhWAEFAmJnBQJlUgQCZU4JAGQCCAkBBXZhbHVlAQkA7AcBBQJiZQhxdWFudGl0eQUCZUsEAmVHCQECZUMDCQC2AgEFAmVMCQC2AgEFAmVNCQC2AgEFAmVOBAJlUwkAzAgCCQEMSW50ZWdlckVudHJ5AgUCYW4FBmhlaWdodAkAzAgCCQELU3RyaW5nRW50cnkCBQJhbQkApgMBBQJlRwUDbmlsCQCUCgIFAmVTBQJlRwECZVQCAmVVAmVHAwkAwAICBQJlRwUCZVUGCQECYUoBAiJ1cGRhdGVkIERMcCBsb3dlciB0aGFuIGN1cnJlbnQgRExwAQJlVgECZVcEAmVYCAUCZVcGYW1vdW50BAJlWQkAbgQIBQJlVwZhbW91bnQIBQJlVwVwcmljZQUBYQUFRkxPT1IEAmVaAwkAAAIIBQJlVwlvcmRlclR5cGUFA0J1eQkAlAoCBQJlWAkBAS0BBQJlWQkAlAoCCQEBLQEFAmVYBQJlWQQCZVEIBQJlWgJfMQQCZVIIBQJlWgJfMgMDAwkBAmFPAAYJAAACBQJiZAUBcgYJAAACBQJiZAUBcwkAAgECDUFkbWluIGJsb2NrZWQDAwkBAiE9AggIBQJlVwlhc3NldFBhaXILYW1vdW50QXNzZXQFAmJmBgkBAiE9AggIBQJlVwlhc3NldFBhaXIKcHJpY2VBc3NldAUCYmcJAAIBAglXciBhc3NldHMEAmZhCQCnAwEJARFAZXh0ck5hdGl2ZSgxMDUzKQIFBHRoaXMFAmFtBAJmYgkBAmVQAwUCZVEFAmVSAAAEAmZjCAUCZmICXzEEAmZkCAUCZmICXzIEAmZlCQDAAgIFAmZkBQJmYQUCZmUBAmZmAQJkVgMJAQIhPQIJAJADAQgFAmRWCHBheW1lbnRzAAEJAAIBAgoxIHBtbnQgZXhwBAJmZwkBBXZhbHVlAQkAkQMCCAUCZFYIcGF5bWVudHMAAAQCY3MJAQV2YWx1ZQEIBQJmZwdhc3NldElkBAJjWQgFAmZnBmFtb3VudAQCZGsJAQJjcQQJANgEAQgFAmRWDXRyYW5zYWN0aW9uSWQJANgEAQUCY3MFAmNZCAUCZFYGY2FsbGVyBAJjTQgFAmRrAl8xBAJjTggFAmRrAl8yBAJjQQkBDXBhcnNlSW50VmFsdWUBCAUCZGsCXzkEAmNPCAUCZGsDXzEwAwMJAQJhTwAGCQAAAgUCY0EFAXMJAAIBCQCsAgICD0FkbWluIGJsb2NrZWQ6IAkApAMBBQJjQQkAlwoFBQJjTQUCY04FAmNZBQJjcwUCY08BAmZoCgJmaQJhZQJmagJmawJiTwJjVgJjVwJjWAJjWQJjWgQCZGsJAQJjUA0FAmFlBQJiTwgJAQV2YWx1ZQEFAmZqBmFtb3VudAgJAQV2YWx1ZQEFAmZqB2Fzc2V0SWQICQEFdmFsdWUBBQJmawZhbW91bnQICQEFdmFsdWUBBQJmawdhc3NldElkBQJmaQkAAAIFAmFlAgAFAmNWBQJjVwUCY1gFAmNZBQJjWgQCY0EJAQ1wYXJzZUludFZhbHVlAQgFAmRrAl84AwMDCQECYU8ABgkAAAIFAmNBBQFxBgkAAAIFAmNBBQFzCQACAQkArAICAghCbG9ja2VkOgkApAMBBQJjQQUCZGsBAmZsBQJmbQJjcwJjdQJhZQJmbgQCY3cJANgEAQkBBXZhbHVlAQUCYmYEAmN4CQDYBAEJAQV2YWx1ZQEFAmJnBAJjdgUCYmUEAmRlBQJiaAQCZGYFAmJpBAJlTgkAtgIBCAkBE3ZhbHVlT3JFcnJvck1lc3NhZ2UCCQDsBwEFAmN2AhBpbnZhbGlkIGxwIGFzc2V0CHF1YW50aXR5BAJmbwMJAL8CAgUCZU4FAWUGCQACAQIiaW5pdGlhbCBkZXBvc2l0IHJlcXVpcmVzIGFsbCBjb2lucwMJAAACBQJmbwUCZm8EAmNDCQECYkcBBQJjdwQCY0UJAQJiRwEFAmN4BAJmcAMJAAACBQJhZQIACQCUCgIFAmNDBQJjRQMJAAACBQJjcwUCY3cDCQBmAgUCZm0FAmNDCQACAQIWaW52YWxpZCBwYXltZW50IGFtb3VudAkAlAoCCQBlAgUCY0MFAmZtBQJjRQMJAAACBQJjcwUCY3gDCQBmAgUCZm0FAmNFCQACAQIWaW52YWxpZCBwYXltZW50IGFtb3VudAkAlAoCBQJjQwkAZQIFAmNFBQJmbQkAAgECEHdyb25nIHBtdEFzc2V0SWQEAmZxCAUCZnACXzEEAmZyCAUCZnACXzIEAmZzAwkAAAIFAmNzBQJjdwkAlAoCBQJmbQAAAwkAAAIFAmNzBQJjeAkAlAoCAAAFAmZtCQACAQIPaW52YWxpZCBwYXltZW50BAJmdAgFAmZzAl8xBAJmdQgFAmZzAl8yBAJmdgMFAmZuCQCVCgMICQECY24BBQJmdAJfMQgJAQJjbgEFAmZ1Al8xCAkBAmNuAQUCZm0CXzIJAJUKAwUCZnQFAmZ1AAAEAmZ3CAUCZnYCXzEEAmZ4CAUCZnYCXzIEAmNwCAUCZnYCXzMEAmZ5CQBkAgUCZnEFAmZ3BAJmegkAZAIFAmZyBQJmeAQCYlQJAQJkRQEJAMwIAgkAtgIBBQJmcQkAzAgCCQC2AgEFAmZyBQNuaWwEAmJTCQECZEUBCQDMCAIJALYCAQUCZnkJAMwIAgkAtgIBBQJmegUDbmlsBAJmQQMJAL8CAgUCYlMFAmJUBgkBBXRocm93AAMJAAACBQJmQQUCZkEEAmZCCQC9AgQFAmVOCQC4AgIFAmJTBQJiVAUCYlQFBUZMT09SBAJjSAkBAUsCCQECYkkCCQEBSAIFAmZ6BQJkZgkBAUgCBQJmeQUCZGUFAWEEAmRECQDMCAIJAQxJbnRlZ2VyRW50cnkCCQEBWQAFAmNICQDMCAIJAQxJbnRlZ2VyRW50cnkCCQEBWgIFBmhlaWdodAgFCWxhc3RCbG9jawl0aW1lc3RhbXAFAmNICQDMCAIJAQtTdHJpbmdFbnRyeQIJAQJhYwIFAmN1BQJhZQkBAmJyCgUCZnQFAmZ1CQCgAwEFAmZCBQJjSAAAAAAFBmhlaWdodAgFCWxhc3RCbG9jawl0aW1lc3RhbXAAAAAABQNuaWwEAmZDCQBrAwUCZnIFAWEFAmZxBAJmRAkAawMFAmZtBQFhCQBkAgUCZkMFAWEEAmZFCQBlAgUCZm0FAmZEBAJmRgkAvAIDBQJlTgkAtgIBBQJmRQkAtgIBBQJmcgQCZkcJAKADAQkAvAIDCQC4AgIFAmZCBQJmRgUBYgUCZkYJAJYKBAkAoAMBBQJmQgUCZEQFAmNwBQJmRwkAAgECJFN0cmljdCB2YWx1ZSBpcyBub3QgZXF1YWwgdG8gaXRzZWxmLgkAAgECJFN0cmljdCB2YWx1ZSBpcyBub3QgZXF1YWwgdG8gaXRzZWxmLgECZkgGAmZJAmZKAmZLAmZpAmZMAmZNBAJjdgkA2AQBCQEFdmFsdWUBBQJiZQQCY3cJANgEAQkBBXZhbHVlAQUCYmYEAmN4CQDYBAEJAQV2YWx1ZQEFAmJnBAJmTgUCYmgEAmZPBQJiaQQCZlAFAmJkBAJjdQMJAAACBQJmaQUCYnEFAmZMBQJmaQQCZmcJAQV2YWx1ZQEJAJEDAgUCZksAAAQCY3MJAQV2YWx1ZQEIBQJmZwdhc3NldElkBAJjWQgFAmZnBmFtb3VudAQCZU8JAQJlSAMFAWUFAWUFAWUDCQAAAgUCZU8FAmVPBAJjcgkA2AQBBQJmTQMJAQIhPQIFAmN2CQDYBAEFAmNzCQACAQIIV3JvbmcgTFAEAmNDCQECYkcBBQJjdwQCY0UJAQJiRwEFAmN4BAJmUQoAAmZSCQD8BwQFBHRoaXMCE2dldE9uZVRrblYyUkVBRE9OTFkJAMwIAgUCZkkJAMwIAgUCY1kFA25pbAUDbmlsAwkAAQIFAmZSAgooSW50LCBJbnQpBQJmUgkAAgEJAKwCAgkAAwEFAmZSAh8gY291bGRuJ3QgYmUgY2FzdCB0byAoSW50LCBJbnQpAwkAAAIFAmZRBQJmUQQCY3AIBQJmUQJfMgQCZlMIBQJmUQJfMQQCZlQDAwkAZgIFAmZKAAAJAGYCBQJmSgUCZlMHCQECYUoBCQC5CQIJAMwIAgIfYW1vdW50IHRvIHJlY2VpdmUgaXMgbGVzcyB0aGFuIAkAzAgCCQCkAwEFAmZKBQNuaWwCAAUCZlMEAmZVAwkAAAIFAmZJBQJjdwkAlgoEBQJmVAAACQBlAgkAZQIFAmNDBQJmVAUCY3AFAmNFAwkAAAIFAmZJBQJjeAkAlgoEAAAFAmZUBQJjQwkAZQIJAGUCBQJjRQUCZlQFAmNwCQACAQIUaW52YWxpZCBvdXQgYXNzZXQgaWQEAmZWCAUCZlUCXzEEAmZXCAUCZlUCXzIEAmZ5CAUCZlUCXzMEAmZ6CAUCZlUCXzQEAmZYCQECYkkCCQEBSAIFAmZ6BQJmTwkBAUgCBQJmeQUCZk4EAmZZCQEBSwIFAmZYBQFhBAJmWgMJAAACBQJmSQIFV0FWRVMFBHVuaXQJANkEAQUCZkkEAmdhAwkAZgIFAmNwAAAJAMwIAgkBDlNjcmlwdFRyYW5zZmVyAwUCYVEFAmNwBQJmWgUDbmlsBQNuaWwEAmNPCQDOCAIJAMwIAgkBDlNjcmlwdFRyYW5zZmVyAwUCY3UFAmZUBQJmWgkAzAgCCQELU3RyaW5nRW50cnkCCQECYWYCCQClCAEFAmN1BQJjcgkBAmJDBgUCZlYFAmZXBQJjWQUCZlkFBmhlaWdodAgFCWxhc3RCbG9jawl0aW1lc3RhbXAJAMwIAgkBDEludGVnZXJFbnRyeQIJAQFZAAUCZlkJAMwIAgkBDEludGVnZXJFbnRyeQIJAQFaAgUGaGVpZ2h0CAUJbGFzdEJsb2NrCXRpbWVzdGFtcAUCZlkFA25pbAUCZ2EDCQAAAgUCY08FAmNPBAJnYgkA/AcEBQJhTQIEYnVybgkAzAgCBQJjWQUDbmlsCQDMCAIJAQ9BdHRhY2hlZFBheW1lbnQCBQJjcwUCY1kFA25pbAMJAAACBQJnYgUCZ2IEAmdjBAJnZAMJAAACBQR0aGlzBQJhUQAABQJjcAQCZ2UDCQAAAgkBAmFWAQUCZkkFAmJmBgcDBQJnZQkAlAoCCQEBLQEJAGQCBQJmUwUCZ2QAAAkAlAoCAAAJAQEtAQkAZAIFAmZTBQJnZAQCZVEIBQJnYwJfMQQCZVIIBQJnYwJfMgQCZ2YJAQJlUAMFAmVRBQJlUgAABAJnZwgFAmdmAl8xBAJlRwgFAmdmAl8yBAJnaAkBAmVUAgUCZU8FAmVHAwkAAAIFAmdoBQJnaAkAlAoCCQDOCAIFAmNPBQJnZwUCZlQJAAIBAiRTdHJpY3QgdmFsdWUgaXMgbm90IGVxdWFsIHRvIGl0c2VsZi4JAAIBAiRTdHJpY3QgdmFsdWUgaXMgbm90IGVxdWFsIHRvIGl0c2VsZi4JAAIBAiRTdHJpY3QgdmFsdWUgaXMgbm90IGVxdWFsIHRvIGl0c2VsZi4JAAIBAiRTdHJpY3QgdmFsdWUgaXMgbm90IGVxdWFsIHRvIGl0c2VsZi4JAAIBAiRTdHJpY3QgdmFsdWUgaXMgbm90IGVxdWFsIHRvIGl0c2VsZi4BAmdpAAQCZ2oJAKIIAQkBAVcAAwkAAQIFAmdqAgZTdHJpbmcEAmRJBQJnagkA2QQBBQJkSQMJAAECBQJnagIEVW5pdAUEdW5pdAkAAgECC01hdGNoIGVycm9yAQJnawAEAmdqCQCiCAEJAQFYAAMJAAECBQJnagIGU3RyaW5nBAJkSQUCZ2oJANkEAQUCZEkDCQABAgUCZ2oCBFVuaXQFBHVuaXQJAAIBAgtNYXRjaCBlcnJvcgACZ2wJAAIBAhFQZXJtaXNzaW9uIGRlbmllZAECZ20BAmRWBAJnagkBAmdpAAMJAAECBQJnagIKQnl0ZVZlY3RvcgQCZ24FAmdqCQAAAggFAmRWD2NhbGxlclB1YmxpY0tleQUCZ24DCQABAgUCZ2oCBFVuaXQJAAACCAUCZFYGY2FsbGVyBQR0aGlzCQACAQILTWF0Y2ggZXJyb3IBAmdvAQJkVgQCZ2oJAQJnaQADCQABAgUCZ2oCCkJ5dGVWZWN0b3IEAmduBQJnagMJAAACCAUCZFYPY2FsbGVyUHVibGljS2V5BQJnbgYFAmdsAwkAAQIFAmdqAgRVbml0AwkAAAIIBQJkVgZjYWxsZXIFBHRoaXMGBQJnbAkAAgECC01hdGNoIGVycm9yHAJkVgELY29uc3RydWN0b3IBAVYEAmV2CQECZ28BBQJkVgMJAAACBQJldgUCZXYJAMwIAgkBC1N0cmluZ0VudHJ5AgkBAVYABQFWBQNuaWwJAAIBAiRTdHJpY3QgdmFsdWUgaXMgbm90IGVxdWFsIHRvIGl0c2VsZi4CZFYBCnNldE1hbmFnZXIBAmdwBAJldgkBAmdvAQUCZFYDCQAAAgUCZXYFAmV2BAJncQkA2QQBBQJncAMJAAACBQJncQUCZ3EJAMwIAgkBC1N0cmluZ0VudHJ5AgkBAVgABQJncAUDbmlsCQACAQIkU3RyaWN0IHZhbHVlIGlzIG5vdCBlcXVhbCB0byBpdHNlbGYuCQACAQIkU3RyaWN0IHZhbHVlIGlzIG5vdCBlcXVhbCB0byBpdHNlbGYuAmRWAQ5jb25maXJtTWFuYWdlcgAEAmNtCQECZ2sABAJncgMJAQlpc0RlZmluZWQBBQJjbQYJAAIBAhJObyBwZW5kaW5nIG1hbmFnZXIDCQAAAgUCZ3IFAmdyBAJncwMJAAACCAUCZFYPY2FsbGVyUHVibGljS2V5CQEFdmFsdWUBBQJjbQYJAAIBAhtZb3UgYXJlIG5vdCBwZW5kaW5nIG1hbmFnZXIDCQAAAgUCZ3MFAmdzCQDMCAIJAQtTdHJpbmdFbnRyeQIJAQFXAAkA2AQBCQEFdmFsdWUBBQJjbQkAzAgCCQELRGVsZXRlRW50cnkBCQEBWAAFA25pbAkAAgECJFN0cmljdCB2YWx1ZSBpcyBub3QgZXF1YWwgdG8gaXRzZWxmLgkAAgECJFN0cmljdCB2YWx1ZSBpcyBub3QgZXF1YWwgdG8gaXRzZWxmLgJkVgEDcHV0AgJndAJndQQCZ3YJAQJibAAEAmd3CQETdmFsdWVPckVycm9yTWVzc2FnZQIJAKYIAQkAkQMCBQJndgUBQwIKV3Igc3QgYWRkcgQCZ3gJARN2YWx1ZU9yRXJyb3JNZXNzYWdlAgkApggBCQCRAwIFAmd2BQFFAgpXciBzbCBhZGRyAwkAZgIAAAUCZ3QJAAIBAg5Xcm9uZyBzbGlwcGFnZQMJAQIhPQIJAJADAQgFAmRWCHBheW1lbnRzAAIJAAIBAgwyIHBtbnRzIGV4cGQEAmd5CQC2AgEICQEFdmFsdWUBCQCRAwIIBQJkVghwYXltZW50cwAABmFtb3VudAQCZ3oJALYCAQgJAQV2YWx1ZQEJAJEDAggFAmRWCHBheW1lbnRzAAEGYW1vdW50BAJlTAkAuAICCQC2AgEJAQJiRwEJAQJhWAEFAmJmBQJneQMJAAACBQJlTAUCZUwEAmVNCQC4AgIJALYCAQkBAmJHAQkBAmFYAQUCYmcFAmd6AwkAAAIFAmVNBQJlTQQCZU4JALYCAQgJAQV2YWx1ZQEJAOwHAQUCYmUIcXVhbnRpdHkDCQAAAgUCZU4FAmVOBAJlTwkBAmVIAwUCZ3kFAmd6CQC2AgEAAAMJAAACBQJlTwUCZU8EAmdBCQECZmgKCQClCAEIBQJkVgZjYWxsZXIJANgEAQgFAmRWDXRyYW5zYWN0aW9uSWQJAQ9BdHRhY2hlZFBheW1lbnQCCAkBBXZhbHVlAQkAkQMCCAUCZFYIcGF5bWVudHMAAAdhc3NldElkCAkBBXZhbHVlAQkAkQMCCAUCZFYIcGF5bWVudHMAAAZhbW91bnQJAJEDAggFAmRWCHBheW1lbnRzAAEFAmd0BgcGAAACAAQCZHgIBQJnQQJfMgQCZ0IIBQJnQQJfNwQCY08IBQJnQQJfOQQCZHkIBQJnQQNfMTAEAmR6CAUCZ0EDXzExBAJjdwgFAmdBA18xMgQCY3gIBQJnQQNfMTMEAmRrCQD8BwQFAmFNAgRlbWl0CQDMCAIFAmR4BQNuaWwFA25pbAMJAAACBQJkawUCZGsEAmdDBAJnagUCZGsDCQABAgUCZ2oCB0FkZHJlc3MEAmdEBQJnagkA/AcEBQJnRAIEZW1pdAkAzAgCBQJkeAUDbmlsBQNuaWwFBHVuaXQDCQAAAgUCZ0MFAmdDBAJnRQMJAGYCBQJkeQAACQD8BwQFAmd4AgNwdXQFA25pbAkAzAgCCQEPQXR0YWNoZWRQYXltZW50AgUCY3cFAmR5BQNuaWwFA25pbAMJAAACBQJnRQUCZ0UEAmdGAwkAZgIFAmR6AAAJAPwHBAUCZ3gCA3B1dAUDbmlsCQDMCAIJAQ9BdHRhY2hlZFBheW1lbnQCBQJjeAUCZHoFA25pbAUDbmlsAwkAAAIFAmdGBQJnRgQCZ0cDBQJndQQCZ0gJAPwHBAUCZ3cCBXN0YWtlBQNuaWwJAMwIAgkBD0F0dGFjaGVkUGF5bWVudAIFAmdCBQJkeAUDbmlsAwkAAAIFAmdIBQJnSAUDbmlsCQACAQIkU3RyaWN0IHZhbHVlIGlzIG5vdCBlcXVhbCB0byBpdHNlbGYuCQDMCAIJAQ5TY3JpcHRUcmFuc2ZlcgMIBQJkVgZjYWxsZXIFAmR4BQJnQgUDbmlsBAJnSQkBAmVQAwAAAAAAAAQCZ2cIBQJnSQJfMQQCZUcIBQJnSQJfMgQCZ2gJAQJlVAIFAmVPBQJlRwMJAAACBQJnaAUCZ2gEAmdKAwkAwAICBQJlRwUCZU8GCQECYUoBAiJ1cGRhdGVkIERMcCBsb3dlciB0aGFuIGN1cnJlbnQgRExwAwkAAAIFAmdKBQJnSgQCZ0sICQEFdmFsdWUBCQDsBwEFAmJlCHF1YW50aXR5AwkAAAIFAmdLBQJnSwkAzggCCQDOCAIFAmNPBQJnRwUCZ2cJAAIBAiRTdHJpY3QgdmFsdWUgaXMgbm90IGVxdWFsIHRvIGl0c2VsZi4JAAIBAiRTdHJpY3QgdmFsdWUgaXMgbm90IGVxdWFsIHRvIGl0c2VsZi4JAAIBAiRTdHJpY3QgdmFsdWUgaXMgbm90IGVxdWFsIHRvIGl0c2VsZi4JAAIBAiRTdHJpY3QgdmFsdWUgaXMgbm90IGVxdWFsIHRvIGl0c2VsZi4JAAIBAiRTdHJpY3QgdmFsdWUgaXMgbm90IGVxdWFsIHRvIGl0c2VsZi4JAAIBAiRTdHJpY3QgdmFsdWUgaXMgbm90IGVxdWFsIHRvIGl0c2VsZi4JAAIBAiRTdHJpY3QgdmFsdWUgaXMgbm90IGVxdWFsIHRvIGl0c2VsZi4JAAIBAiRTdHJpY3QgdmFsdWUgaXMgbm90IGVxdWFsIHRvIGl0c2VsZi4JAAIBAiRTdHJpY3QgdmFsdWUgaXMgbm90IGVxdWFsIHRvIGl0c2VsZi4JAAIBAiRTdHJpY3QgdmFsdWUgaXMgbm90IGVxdWFsIHRvIGl0c2VsZi4JAAIBAiRTdHJpY3QgdmFsdWUgaXMgbm90IGVxdWFsIHRvIGl0c2VsZi4CZFYBC3B1dE9uZVRrblYyAgJmSgJndQQCZ0wKAAJmUgkA/AcEBQJhTQIoaXNQb29sT25lVG9rZW5PcGVyYXRpb25zRGlzYWJsZWRSRUFET05MWQkAzAgCCQClCAEFBHRoaXMFA25pbAUDbmlsAwkAAQIFAmZSAgdCb29sZWFuBQJmUgkAAgEJAKwCAgkAAwEFAmZSAhwgY291bGRuJ3QgYmUgY2FzdCB0byBCb29sZWFuBAJnTQMDAwkBAmFPAAYJAAACBQJiZAUBcQYJAAACBQJiZAUBcwYFAmdMBAJnTgkAzAgCAwMJAQEhAQUCZ00GCQECZ20BBQJkVgYJAQJhSgECIXB1dCBvcGVyYXRpb24gaXMgYmxvY2tlZCBieSBhZG1pbgkAzAgCAwkAAAIJAJADAQgFAmRWCHBheW1lbnRzAAEGCQECYUoBAh5leGFjdGx5IDEgcGF5bWVudCBhcmUgZXhwZWN0ZWQFA25pbAMJAAACBQJnTgUCZ04EAmN3CQDYBAEJAQV2YWx1ZQEFAmJmBAJjeAkA2AQBCQEFdmFsdWUBBQJiZwQCY3YFAmJlBAJmTgUCYmgEAmZPBQJiaQQCY3UDCQAAAggFAmRWBmNhbGxlcgUEdGhpcwgFAmRWDG9yaWdpbkNhbGxlcggFAmRWBmNhbGxlcgQCZmcJAQV2YWx1ZQEJAJEDAggFAmRWCHBheW1lbnRzAAAEAmNzCQDYBAEJAQV2YWx1ZQEIBQJmZwdhc3NldElkBAJjWQgFAmZnBmFtb3VudAQCZU8DCQAAAggFAmZnB2Fzc2V0SWQFAmJmCQECZUgDCQC2AgEFAmNZCQC2AgEAAAkAtgIBAAAJAQJlSAMJALYCAQAACQC2AgEFAmNZCQC2AgEAAAMJAAACBQJlTwUCZU8EAmdPCQECZmwFBQJjWQUCY3MJAKUIAQUCY3UJANgEAQgFAmRWDXRyYW5zYWN0aW9uSWQGAwkAAAIFAmdPBQJnTwQCY3AIBQJnTwJfMwQCY08IBQJnTwJfMgQCZ1AIBQJnTwJfMQQCZHgDAwkAZgIFAmZKAAAJAGYCBQJmSgUCZ1AHCQECYUoBCQC5CQIJAMwIAgIfYW1vdW50IHRvIHJlY2VpdmUgaXMgbGVzcyB0aGFuIAkAzAgCCQCkAwEFAmZKBQNuaWwCAAUCZ1AEAmdBCQD8BwQFAmFNAgRlbWl0CQDMCAIFAmR4BQNuaWwFA25pbAMJAAACBQJnQQUCZ0EEAmdDBAJnagUCZ0EDCQABAgUCZ2oCB0FkZHJlc3MEAmdEBQJnagkA/AcEBQJnRAIEZW1pdAkAzAgCBQJkeAUDbmlsBQNuaWwFBHVuaXQDCQAAAgUCZ0MFAmdDBAJnRwMFAmd1BAJnSAkA/AcEBQJibgIFc3Rha2UFA25pbAkAzAgCCQEPQXR0YWNoZWRQYXltZW50AgUCY3YFAmR4BQNuaWwDCQAAAgUCZ0gFAmdIBQNuaWwJAAIBAiRTdHJpY3QgdmFsdWUgaXMgbm90IGVxdWFsIHRvIGl0c2VsZi4JAMwIAgkBDlNjcmlwdFRyYW5zZmVyAwgFAmRWBmNhbGxlcgUCZHgFAmN2BQNuaWwEAmdhAwkAZgIFAmNwAAAJAMwIAgkBDlNjcmlwdFRyYW5zZmVyAwUCYVEFAmNwCQDZBAEFAmNzBQNuaWwFA25pbAQCZ1EDCQAAAgUEdGhpcwUCYVEJAJQKAgAAAAAEAmdSAwkAAAIIBQJmZwdhc3NldElkBQJiZgYHAwUCZ1IJAJQKAgkBAS0BBQJjcAAACQCUCgIAAAkBAS0BBQJjcAQCZVEIBQJnUQJfMQQCZVIIBQJnUQJfMgQCZ1MJAQJlUAMFAmVRBQJlUgAABAJnZwgFAmdTAl8xBAJlRwgFAmdTAl8yBAJnaAkBAmVUAgUCZU8FAmVHAwkAAAIFAmdoBQJnaAkAlAoCCQDOCAIJAM4IAgkAzggCBQJjTwUCZ0cFAmdhBQJnZwUCZHgJAAIBAiRTdHJpY3QgdmFsdWUgaXMgbm90IGVxdWFsIHRvIGl0c2VsZi4JAAIBAiRTdHJpY3QgdmFsdWUgaXMgbm90IGVxdWFsIHRvIGl0c2VsZi4JAAIBAiRTdHJpY3QgdmFsdWUgaXMgbm90IGVxdWFsIHRvIGl0c2VsZi4JAAIBAiRTdHJpY3QgdmFsdWUgaXMgbm90IGVxdWFsIHRvIGl0c2VsZi4JAAIBAiRTdHJpY3QgdmFsdWUgaXMgbm90IGVxdWFsIHRvIGl0c2VsZi4JAAIBAiRTdHJpY3QgdmFsdWUgaXMgbm90IGVxdWFsIHRvIGl0c2VsZi4CZFYBA2dldAAEAmVPCQECZUgDCQC2AgEAAAkAtgIBAAAJALYCAQAAAwkAAAIFAmVPBQJlTwQCZGsJAQJmZgEFAmRWBAJnVAgFAmRrAl8xBAJjTggFAmRrAl8yBAJjWQgFAmRrAl8zBAJjcwgFAmRrAl80BAJjTwgFAmRrAl81BAJldwkA/AcEBQJhTQIEYnVybgkAzAgCBQJjWQUDbmlsCQDMCAIJAQ9BdHRhY2hlZFBheW1lbnQCBQJjcwUCY1kFA25pbAMJAAACBQJldwUCZXcEAmdVCQECZVADCQEBLQEFAmdUCQEBLQEFAmNOAAAEAmdnCAUCZ1UCXzEEAmVHCAUCZ1UCXzIEAmdoCQECZVQCBQJlTwUCZUcDCQAAAgUCZ2gFAmdoCQDOCAIFAmNPBQJnZwkAAgECJFN0cmljdCB2YWx1ZSBpcyBub3QgZXF1YWwgdG8gaXRzZWxmLgkAAgECJFN0cmljdCB2YWx1ZSBpcyBub3QgZXF1YWwgdG8gaXRzZWxmLgkAAgECJFN0cmljdCB2YWx1ZSBpcyBub3QgZXF1YWwgdG8gaXRzZWxmLgJkVgELZ2V0T25lVGtuVjICAmZJAmZKBAJnTAoAAmZSCQD8BwQFAmFNAihpc1Bvb2xPbmVUb2tlbk9wZXJhdGlvbnNEaXNhYmxlZFJFQURPTkxZCQDMCAIJAKUIAQUEdGhpcwUDbmlsBQNuaWwDCQABAgUCZlICB0Jvb2xlYW4FAmZSCQACAQkArAICCQADAQUCZlICHCBjb3VsZG4ndCBiZSBjYXN0IHRvIEJvb2xlYW4EAmdWAwMJAQJhTwAGCQAAAgUCYmQFAXMGBQJnTAQCZ04JAMwIAgMDCQEBIQEFAmdWBgkBAmdtAQUCZFYGCQECYUoBAiFnZXQgb3BlcmF0aW9uIGlzIGJsb2NrZWQgYnkgYWRtaW4JAMwIAgMJAAACCQCQAwEIBQJkVghwYXltZW50cwABBgkBAmFKAQIeZXhhY3RseSAxIHBheW1lbnQgYXJlIGV4cGVjdGVkBQNuaWwDCQAAAgUCZ04FAmdOBAJnVwkBAmZIBgUCZkkFAmZKCAUCZFYIcGF5bWVudHMIBQJkVgZjYWxsZXIIBQJkVgxvcmlnaW5DYWxsZXIIBQJkVg10cmFuc2FjdGlvbklkBAJjTwgFAmdXAl8xBAJmVAgFAmdXAl8yCQCUCgIFAmNPBQJmVAkAAgECJFN0cmljdCB2YWx1ZSBpcyBub3QgZXF1YWwgdG8gaXRzZWxmLgJkVgEKcmVmcmVzaERMcAAEAmdYCQELdmFsdWVPckVsc2UCCQCfCAEFAmFuAAAEAmdZAwkAZwIJAGUCBQZoZWlnaHQFAmdYBQJhcQUEdW5pdAkBAmFKAQkAuQkCCQDMCAIJAKQDAQUCYXEJAMwIAgIvIGJsb2NrcyBoYXZlIG5vdCBwYXNzZWQgc2luY2UgdGhlIHByZXZpb3VzIGNhbGwFA25pbAIAAwkAAAIFAmdZBQJnWQQCZmEJARN2YWx1ZU9yRXJyb3JNZXNzYWdlAgkAqAMBCQELdmFsdWVPckVsc2UCCQCdCAIFBHRoaXMFAmFtAgEwCQECYUwBAgtpbnZhbGlkIGRMcAQCZ1oJAQJlUAMAAAAAAAAEAmhhCAUCZ1oCXzEEAmVHCAUCZ1oCXzIEAmVTAwkBAiE9AgUCZmEFAmVHBQJoYQkBAmFKAQISbm90aGluZyB0byByZWZyZXNoCQCUCgIFAmVTCQCmAwEFAmVHCQACAQIkU3RyaWN0IHZhbHVlIGlzIG5vdCBlcXVhbCB0byBpdHNlbGYuAmRWARNnZXRPbmVUa25WMlJFQURPTkxZAgJmSQJoYgQCY3cJANgEAQkBBXZhbHVlAQUCYmYEAmN4CQDYBAEJAQV2YWx1ZQEFAmJnBAJjdgkA2AQBCQEFdmFsdWUBBQJiZQQCZEYJAMwIAgkAtgIBCQECYkcBBQJjdwkAzAgCCQC2AgEJAQJiRwEFAmN4BQNuaWwEAmVGCQC2AgEICQETdmFsdWVPckVycm9yTWVzc2FnZQIJAOwHAQkA2QQBBQJjdgIQaW52YWxpZCBscCBhc3NldAhxdWFudGl0eQQCYlQJAQJkRQEFAmRGBAJiUwkAuAICBQJiVAkAvAIDCQC2AgEFAmhiBQJiVAUCZUYEAmhjAwkAAAIFAmZJBQJjdwAAAwkAAAIFAmZJBQJjeAABCQACAQIUaW52YWxpZCBvdXQgYXNzZXQgaWQEAmhkCQECZXMDBQJkRgUCaGMFAmJTBAJoZQkAuAICCQCRAwIFAmRGBQJoYwUCaGQEAmhmCQCWAwEJAMwIAgAACQDMCAIJAKADAQkAuAICBQJoZQUBZgUDbmlsBAJoZwkBAmNuAQUCaGYEAmZTCAUCaGcCXzEEAmNwCAUCaGcCXzIJAJQKAgUDbmlsCQCUCgIFAmZTBQJjcAJkVgEcZ2V0T25lVGtuVjJXaXRoQm9udXNSRUFET05MWQICZkkCaGIEAmN3CQDYBAEJAQV2YWx1ZQEFAmJmBAJjeAkA2AQBCQEFdmFsdWUBBQJiZwQCY3YJANgEAQkBBXZhbHVlAQUCYmUEAmNDCQECYkcBBQJjdwQCY0UJAQJiRwEFAmN4BAJoaAoAAmZSCQD8BwQFBHRoaXMCE2dldE9uZVRrblYyUkVBRE9OTFkJAMwIAgUCZkkJAMwIAgUCaGIFA25pbAUDbmlsAwkAAQIFAmZSAgooSW50LCBJbnQpBQJmUgkAAgEJAKwCAgkAAwEFAmZSAh8gY291bGRuJ3QgYmUgY2FzdCB0byAoSW50LCBJbnQpBAJmUwgFAmhoAl8xBAJjcAgFAmhoAl8yBAJkawkBAmNxBAIABQJjdgUCaGIFBHRoaXMEAmNNCAUCZGsCXzEEAmNOCAUCZGsCXzIEAmhpCQBkAgUCY00FAmNOBAJmRwMJAAACBQJoaQAAAwkAAAIFAmZTAAAAAAkAAgECF2JvbnVzIGNhbGN1bGF0aW9uIGVycm9yCQBrAwkAZQIFAmZTBQJoaQUBYQUCaGkJAJQKAgUDbmlsCQCVCgMFAmZTBQJjcAUCZkcCZFYBCWdldE5vTGVzcwICaGoCaGsEAmhsCQC2AgEJAQJiRwEJAQJhWAEFAmJmAwkAAAIFAmhsBQJobAQCaG0JALYCAQkBAmJHAQkBAmFYAQUCYmcDCQAAAgUCaG0FAmhtBAJobgkAtgIBCAkBBXZhbHVlAQkA7AcBBQJiZQhxdWFudGl0eQMJAAACBQJobgUCaG4EAmhvCQC4AgIFAmhuCQC2AgEICQEFdmFsdWUBCQCRAwIIBQJkVghwYXltZW50cwAABmFtb3VudAMJAAACBQJobwUCaG8EAmRrCQECZmYBBQJkVgQCY00IBQJkawJfMQQCY04IBQJkawJfMgQCY1kIBQJkawJfMwQCY3MIBQJkawJfNAQCY08IBQJkawJfNQMJAGYCBQJoagUCY00JAAIBCQCsAgIJAKwCAgkArAICAglGYWlsZWQ6ICAJAKQDAQUCY00CAyA8IAkApAMBBQJoagMJAGYCBQJoawUCY04JAAIBCQCsAgIJAKwCAgkArAICAghGYWlsZWQ6IAkApAMBBQJjTgIDIDwgCQCkAwEFAmhrBAJlTwkBAmVIAwkAtgIBAAAJALYCAQAACQC2AgEAAAMJAAACBQJlTwUCZU8EAmhwCQD8BwQFAmFNAgRidXJuCQDMCAIFAmNZBQNuaWwJAMwIAgkBD0F0dGFjaGVkUGF5bWVudAIFAmNzBQJjWQUDbmlsAwkAAAIFAmhwBQJocAQCaHEJAQJlUAMJAQEtAQUCY00JAQEtAQUCY04AAAQCZ2cIBQJocQJfMQQCZUcIBQJocQJfMgQCZ2gJAQJlVAIFAmVPBQJlRwMJAAACBQJnaAUCZ2gJAM4IAgUCY08FAmdnCQACAQIkU3RyaWN0IHZhbHVlIGlzIG5vdCBlcXVhbCB0byBpdHNlbGYuCQACAQIkU3RyaWN0IHZhbHVlIGlzIG5vdCBlcXVhbCB0byBpdHNlbGYuCQACAQIkU3RyaWN0IHZhbHVlIGlzIG5vdCBlcXVhbCB0byBpdHNlbGYuCQACAQIkU3RyaWN0IHZhbHVlIGlzIG5vdCBlcXVhbCB0byBpdHNlbGYuCQACAQIkU3RyaWN0IHZhbHVlIGlzIG5vdCBlcXVhbCB0byBpdHNlbGYuCQACAQIkU3RyaWN0IHZhbHVlIGlzIG5vdCBlcXVhbCB0byBpdHNlbGYuCQACAQIkU3RyaWN0IHZhbHVlIGlzIG5vdCBlcXVhbCB0byBpdHNlbGYuAmRWAQ11bnN0YWtlQW5kR2V0AQJjbwQCaHIDCQECIT0CCQCQAwEIBQJkVghwYXltZW50cwAACQACAQINTm8gcG1udHMgZXhwZAYDCQAAAgUCaHIFAmhyBAJocwkBAmJsAAQCZ0IFAmJlBAJodAkBE3ZhbHVlT3JFcnJvck1lc3NhZ2UCCQCmCAEJAJEDAgUCaHMFAUMCCldyIHN0IGFkZHIEAmVPCQECZUgDCQC2AgEAAAkAtgIBAAAJALYCAQAABAJodQkA/AcEBQJodAIHdW5zdGFrZQkAzAgCCQDYBAEFAmdCCQDMCAIFAmNvBQNuaWwFA25pbAMJAAACBQJodQUCaHUEAmRrCQECY3EECQDYBAEIBQJkVg10cmFuc2FjdGlvbklkCQDYBAEFAmdCBQJjbwgFAmRWBmNhbGxlcgQCY00IBQJkawJfMQQCY04IBQJkawJfMgQCY0EJAQ1wYXJzZUludFZhbHVlAQgFAmRrAl85BAJjTwgFAmRrA18xMAQCaHYDAwkBAmFPAAYJAAACBQJjQQUBcwkAAgEJAKwCAgIJQmxvY2tlZDogCQCkAwEFAmNBBgMJAAACBQJodgUCaHYEAmh3CQD8BwQFAmFNAgRidXJuCQDMCAIFAmNvBQNuaWwJAMwIAgkBD0F0dGFjaGVkUGF5bWVudAIFAmdCBQJjbwUDbmlsAwkAAAIFAmh3BQJodwQCaHgJAQJlUAMJAQEtAQUCY00JAQEtAQUCY04AAAQCZ2cIBQJoeAJfMQQCZUcIBQJoeAJfMgQCZ2gJAQJlVAIFAmVPBQJlRwMJAAACBQJnaAUCZ2gJAM4IAgUCY08FAmdnCQACAQIkU3RyaWN0IHZhbHVlIGlzIG5vdCBlcXVhbCB0byBpdHNlbGYuCQACAQIkU3RyaWN0IHZhbHVlIGlzIG5vdCBlcXVhbCB0byBpdHNlbGYuCQACAQIkU3RyaWN0IHZhbHVlIGlzIG5vdCBlcXVhbCB0byBpdHNlbGYuCQACAQIkU3RyaWN0IHZhbHVlIGlzIG5vdCBlcXVhbCB0byBpdHNlbGYuCQACAQIkU3RyaWN0IHZhbHVlIGlzIG5vdCBlcXVhbCB0byBpdHNlbGYuAmRWARN1bnN0YWtlQW5kR2V0Tm9MZXNzAwJoeQJoegJoawQCZ1YDCQECYU8ABgkAAAIFAmJkBQFzBAJnTgkAzAgCAwkBASEBBQJnVgYJAAIBAiFnZXQgb3BlcmF0aW9uIGlzIGJsb2NrZWQgYnkgYWRtaW4JAMwIAgMJAAACCQCQAwEIBQJkVghwYXltZW50cwAABgkAAgECGG5vIHBheW1lbnRzIGFyZSBleHBlY3RlZAUDbmlsAwkAAAIFAmdOBQJnTgQCZU8JAQJlSAMJALYCAQAACQC2AgEAAAkAtgIBAAAEAmh1CQD8BwQFAmJuAgd1bnN0YWtlCQDMCAIJANgEAQUCYmUJAMwIAgUCaHkFA25pbAUDbmlsAwkAAAIFAmh1BQJodQQCaEEJAQJjcQQJANgEAQgFAmRWDXRyYW5zYWN0aW9uSWQJANgEAQUCYmUFAmh5CAUCZFYGY2FsbGVyBAJjTQgFAmhBAl8xBAJjTggFAmhBAl8yBAJjTwgFAmhBA18xMAQCaEIJAMwIAgMJAGcCBQJjTQUCaHoGCQACAQkAuQkCCQDMCAICLGFtb3VudCBhc3NldCBhbW91bnQgdG8gcmVjZWl2ZSBpcyBsZXNzIHRoYW4gCQDMCAIJAKQDAQUCaHoFA25pbAIACQDMCAIDCQBnAgUCY04FAmhrBgkAAgEJALkJAgkAzAgCAitwcmljZSBhc3NldCBhbW91bnQgdG8gcmVjZWl2ZSBpcyBsZXNzIHRoYW4gCQDMCAIJAKQDAQUCaGsFA25pbAIABQNuaWwDCQAAAgUCaEIFAmhCBAJocAkA/AcEBQJhTQIEYnVybgkAzAgCBQJoeQUDbmlsCQDMCAIJAQ9BdHRhY2hlZFBheW1lbnQCBQJiZQUCaHkFA25pbAMJAAACBQJocAUCaHAEAmhDCQECZVADCQEBLQEFAmNNCQEBLQEFAmNOAAAEAmdnCAUCaEMCXzEEAmVHCAUCaEMCXzIEAmdoCQECZVQCBQJlTwUCZUcDCQAAAgUCZ2gFAmdoCQDOCAIFAmNPBQJnZwkAAgECJFN0cmljdCB2YWx1ZSBpcyBub3QgZXF1YWwgdG8gaXRzZWxmLgkAAgECJFN0cmljdCB2YWx1ZSBpcyBub3QgZXF1YWwgdG8gaXRzZWxmLgkAAgECJFN0cmljdCB2YWx1ZSBpcyBub3QgZXF1YWwgdG8gaXRzZWxmLgkAAgECJFN0cmljdCB2YWx1ZSBpcyBub3QgZXF1YWwgdG8gaXRzZWxmLgkAAgECJFN0cmljdCB2YWx1ZSBpcyBub3QgZXF1YWwgdG8gaXRzZWxmLgJkVgEVdW5zdGFrZUFuZEdldE9uZVRrblYyAwJoeQJmSQJmSgQCZ0wKAAJmUgkA/AcEBQJhTQIoaXNQb29sT25lVG9rZW5PcGVyYXRpb25zRGlzYWJsZWRSRUFET05MWQkAzAgCCQClCAEFBHRoaXMFA25pbAUDbmlsAwkAAQIFAmZSAgdCb29sZWFuBQJmUgkAAgEJAKwCAgkAAwEFAmZSAhwgY291bGRuJ3QgYmUgY2FzdCB0byBCb29sZWFuBAJnVgMDCQECYU8ABgkAAAIFAmJkBQFzBgUCZ0wEAmdOCQDMCAIDAwkBASEBBQJnVgYJAQJnbQEFAmRWBgkBAmFKAQIhZ2V0IG9wZXJhdGlvbiBpcyBibG9ja2VkIGJ5IGFkbWluCQDMCAIDCQAAAgkAkAMBCAUCZFYIcGF5bWVudHMAAAYJAQJhSgECGG5vIHBheW1lbnRzIGFyZSBleHBlY3RlZAUDbmlsAwkAAAIFAmdOBQJnTgQCaHMJAQJibAAEAmdCBQJiZQQCaHQJARN2YWx1ZU9yRXJyb3JNZXNzYWdlAgkApggBCQCRAwIFAmhzBQFDAgpXciBzdCBhZGRyBAJodQkA/AcEBQJodAIHdW5zdGFrZQkAzAgCCQDYBAEFAmdCCQDMCAIFAmh5BQNuaWwFA25pbAMJAAACBQJodQUCaHUEAmhECQECZkgGBQJmSQUCZkoJAMwIAgkBD0F0dGFjaGVkUGF5bWVudAIFAmdCBQJoeQUDbmlsCAUCZFYGY2FsbGVyCAUCZFYMb3JpZ2luQ2FsbGVyCAUCZFYNdHJhbnNhY3Rpb25JZAQCY08IBQJoRAJfMQQCZlQIBQJoRAJfMgkAlAoCBQJjTwUCZlQJAAIBAiRTdHJpY3QgdmFsdWUgaXMgbm90IGVxdWFsIHRvIGl0c2VsZi4JAAIBAiRTdHJpY3QgdmFsdWUgaXMgbm90IGVxdWFsIHRvIGl0c2VsZi4CZFYBHHB1dE9uZVRrblYyV2l0aEJvbnVzUkVBRE9OTFkCAmhFAmhGBAJoRwkBAmZsBQUCaEUFAmhGAgACAAYEAmZCCAUCaEcCXzEEAmNPCAUCaEcCXzIEAmNwCAUCaEcCXzMEAmZHCAUCaEcCXzQJAJQKAgUDbmlsCQCVCgMFAmZCBQJjcAUCZkcCZFYBIXB1dE9uZVRrblYyV2l0aG91dFRha2VGZWVSRUFET05MWQICaEUCaEYEAmhICQECZmwFBQJoRQUCaEYCAAIABwQCZkIIBQJoSAJfMQQCY08IBQJoSAJfMgQCY3AIBQJoSAJfMwQCZkcIBQJoSAJfNAkAlAoCBQNuaWwJAJUKAwUCZkIFAmNwBQJmRwJkVgEIYWN0aXZhdGUCAmhJAmhKAwkBAiE9AgkApQgBCAUCZFYGY2FsbGVyCQClCAEFAmFNCQACAQIGZGVuaWVkCQCUCgIJAMwIAgkBC1N0cmluZ0VudHJ5AgkBAmFnAAUCaEkJAMwIAgkBC1N0cmluZ0VudHJ5AgkBAmFoAAUCaEoFA25pbAIHc3VjY2VzcwJkVgEEc2V0UwICaEsCaHYDCQECIT0CCQClCAEIBQJkVgZjYWxsZXIJAQJhRgIFBHRoaXMJAQJhagAFAmdsCQDMCAIJAQtTdHJpbmdFbnRyeQIFAmhLBQJodgUDbmlsAmRWAQRzZXRJAgJoSwJodgMJAQIhPQIJAKUIAQgFAmRWBmNhbGxlcgkBAmFGAgUEdGhpcwkBAmFqAAUCZ2wJAMwIAgkBDEludGVnZXJFbnRyeQIFAmhLBQJodgUDbmlsAmRWARxnZXRQb29sQ29uZmlnV3JhcHBlclJFQURPTkxZAAkAlAoCBQNuaWwJAQJhUgACZFYBHGdldEFjY0JhbGFuY2VXcmFwcGVyUkVBRE9OTFkBAmJICQCUCgIFA25pbAkBAmJHAQUCYkgCZFYBGWNhbGNQcmljZXNXcmFwcGVyUkVBRE9OTFkDAmJaAmNhAmNlBAJoTAkBAmNkAwUCYloFAmNhBQJjZQkAlAoCBQNuaWwJAMwIAgkApgMBCQCRAwIFAmhMAAAJAMwIAgkApgMBCQCRAwIFAmhMAAEJAMwIAgkApgMBCQCRAwIFAmhMAAIFA25pbAJkVgEWZnJvbVgxOFdyYXBwZXJSRUFET05MWQIBTAJoTQkAlAoCBQNuaWwJAQFLAgkApwMBBQFMBQJoTQJkVgEUdG9YMThXcmFwcGVyUkVBRE9OTFkCAUkBSgkAlAoCBQNuaWwJAKYDAQkBAUgCBQFJBQFKAmRWAR5jYWxjUHJpY2VCaWdJbnRXcmFwcGVyUkVBRE9OTFkCAmJKAmJLCQCUCgIFA25pbAkApgMBCQECYkkCCQCnAwEFAmJKCQCnAwEFAmJLAmRWASNlc3RpbWF0ZVB1dE9wZXJhdGlvbldyYXBwZXJSRUFET05MWQkCY3ICYk8CY1ECY1ICY1MCY1QCaE4CY1UCY1YJAJQKAgUDbmlsCQECY1ANBQJjcgUCYk8FAmNRBQJjUgUCY1MFAmNUBQJoTgUCY1UFAmNWBgcAAAIAAmRWASNlc3RpbWF0ZUdldE9wZXJhdGlvbldyYXBwZXJSRUFET05MWQQCY3ICaE8CY3QCaE4EAmRrCQECY3EEBQJjcgUCaE8FAmN0CQERQGV4dHJOYXRpdmUoMTA2MikBBQJoTgkAlAoCBQNuaWwJAJwKCggFAmRrAl8xCAUCZGsCXzIIBQJkawJfMwgFAmRrAl80CAUCZGsCXzUIBQJkawJfNggFAmRrAl83CQCmAwEIBQJkawJfOAgFAmRrAl85CAUCZGsDXzEwAmRWAQ5nZXRGZWVSRUFET05MWQAJAJQKAgUDbmlsBQJhbAECaFABAmhRAAQCaFIEAmdqCQECZ2kAAwkAAQIFAmdqAgpCeXRlVmVjdG9yBAJnbgUCZ2oFAmduAwkAAQIFAmdqAgRVbml0CAUCaFAPc2VuZGVyUHVibGljS2V5CQACAQILTWF0Y2ggZXJyb3IEAmdqBQJoUAMJAAECBQJnagIFT3JkZXIEAmVXBQJnagQCaFMJAQJhUAAEAmhUCQECZVYBBQJlVwQCaFUJAPQDAwgFAmVXCWJvZHlCeXRlcwkAkQMCCAUCZVcGcHJvb2ZzAAAIBQJlVw9zZW5kZXJQdWJsaWNLZXkEAmhWCQD0AwMIBQJlVwlib2R5Qnl0ZXMJAJEDAggFAmVXBnByb29mcwABBQJoUwMDAwUCaFQFAmhVBwUCaFYHBgkBAmFCAwUCaFQFAmhVBQJoVgMJAAECBQJnagIUU2V0U2NyaXB0VHJhbnNhY3Rpb24EAmRJBQJnagQCaFcJAPYDAQkBBXZhbHVlAQgFAmRJBnNjcmlwdAQCaFgJANsEAQkBBXZhbHVlAQkAnQgCBQJhTQkBAmF6AAQCaFkJAPEHAQUEdGhpcwMDCQAAAgUCaFgFAmhXCQECIT0CBQJoWQUCaFcHBgkA9AMDCAUCaFAJYm9keUJ5dGVzCQCRAwIIBQJoUAZwcm9vZnMAAAUCaFIJAPQDAwgFAmhQCWJvZHlCeXRlcwkAkQMCCAUCaFAGcHJvb2ZzAAAFAmhSYt17yA==", "chainId": 84, "height": 2371643, "applicationStatus": "succeeded", "spentComplexity": 0 } View: original | compacted Prev: 9kP9HwunocnQNNWKvfyKtEgzh15Enw1RZhP98ha9Ef3E Next: 5Uq8M2GmqCYEEhrsEfReByaEDDGB9Npsg7bhiE49Xni9 Diff:
OldNewDifferences
13341334 let hq = eP(-(cM), -(cN), 0)
13351335 let gg = hq._1
13361336 let eG = hq._2
1337- let hr = if ((eG >= eO))
1338- then true
1339- else aJ(makeString(["updated DLp lower than current DLp", toString(hl), toString(hm), toString(eO), toString(eG), toString(hn), toString(ho)], " "))
1340- if ((hr == hr))
1337+ let gh = eT(eO, eG)
1338+ if ((gh == gh))
13411339 then (cO ++ gg)
13421340 else throw("Strict value is not equal to itself.")
13431341 }
13591357
13601358 @Callable(dV)
13611359 func unstakeAndGet (co) = {
1362- let hs = if ((size(dV.payments) != 0))
1360+ let hr = if ((size(dV.payments) != 0))
13631361 then throw("No pmnts expd")
13641362 else true
1365- if ((hs == hs))
1363+ if ((hr == hr))
13661364 then {
1367- let ht = bl()
1365+ let hs = bl()
13681366 let gB = be
1369- let hu = valueOrErrorMessage(addressFromString(ht[C]), "Wr st addr")
1367+ let ht = valueOrErrorMessage(addressFromString(hs[C]), "Wr st addr")
13701368 let eO = eH(toBigInt(0), toBigInt(0), toBigInt(0))
1371- let hv = invoke(hu, "unstake", [toBase58String(gB), co], nil)
1372- if ((hv == hv))
1369+ let hu = invoke(ht, "unstake", [toBase58String(gB), co], nil)
1370+ if ((hu == hu))
13731371 then {
13741372 let dk = cq(toBase58String(dV.transactionId), toBase58String(gB), co, dV.caller)
13751373 let cM = dk._1
13761374 let cN = dk._2
13771375 let cA = parseIntValue(dk._9)
13781376 let cO = dk._10
1379- let hw = if (if (aO())
1377+ let hv = if (if (aO())
13801378 then true
13811379 else (cA == s))
13821380 then throw(("Blocked: " + toString(cA)))
13831381 else true
1384- if ((hw == hw))
1382+ if ((hv == hv))
13851383 then {
1386- let hx = invoke(aM, "burn", [co], [AttachedPayment(gB, co)])
1387- if ((hx == hx))
1384+ let hw = invoke(aM, "burn", [co], [AttachedPayment(gB, co)])
1385+ if ((hw == hw))
13881386 then {
1389- let hy = eP(-(cM), -(cN), 0)
1390- let gg = hy._1
1391- let eG = hy._2
1387+ let hx = eP(-(cM), -(cN), 0)
1388+ let gg = hx._1
1389+ let eG = hx._2
13921390 let gh = eT(eO, eG)
13931391 if ((gh == gh))
13941392 then (cO ++ gg)
14061404
14071405
14081406 @Callable(dV)
1409-func unstakeAndGetNoLess (hz,hA,hk) = {
1407+func unstakeAndGetNoLess (hy,hz,hk) = {
14101408 let gV = if (aO())
14111409 then true
14121410 else (bd == s)
14181416 if ((gN == gN))
14191417 then {
14201418 let eO = eH(toBigInt(0), toBigInt(0), toBigInt(0))
1421- let hv = invoke(bn, "unstake", [toBase58String(be), hz], nil)
1422- if ((hv == hv))
1419+ let hu = invoke(bn, "unstake", [toBase58String(be), hy], nil)
1420+ if ((hu == hu))
14231421 then {
1424- let hB = cq(toBase58String(dV.transactionId), toBase58String(be), hz, dV.caller)
1425- let cM = hB._1
1426- let cN = hB._2
1427- let cO = hB._10
1428- let hC = [if ((cM >= hA))
1422+ let hA = cq(toBase58String(dV.transactionId), toBase58String(be), hy, dV.caller)
1423+ let cM = hA._1
1424+ let cN = hA._2
1425+ let cO = hA._10
1426+ let hB = [if ((cM >= hz))
14291427 then true
1430- else throw(makeString(["amount asset amount to receive is less than ", toString(hA)], "")), if ((cN >= hk))
1428+ else throw(makeString(["amount asset amount to receive is less than ", toString(hz)], "")), if ((cN >= hk))
14311429 then true
14321430 else throw(makeString(["price asset amount to receive is less than ", toString(hk)], ""))]
1433- if ((hC == hC))
1431+ if ((hB == hB))
14341432 then {
1435- let hp = invoke(aM, "burn", [hz], [AttachedPayment(be, hz)])
1433+ let hp = invoke(aM, "burn", [hy], [AttachedPayment(be, hy)])
14361434 if ((hp == hp))
14371435 then {
1438- let hD = eP(-(cM), -(cN), 0)
1439- let gg = hD._1
1440- let eG = hD._2
1436+ let hC = eP(-(cM), -(cN), 0)
1437+ let gg = hC._1
1438+ let eG = hC._2
14411439 let gh = eT(eO, eG)
14421440 if ((gh == gh))
14431441 then (cO ++ gg)
14551453
14561454
14571455 @Callable(dV)
1458-func unstakeAndGetOneTknV2 (hz,fI,fJ) = {
1456+func unstakeAndGetOneTknV2 (hy,fI,fJ) = {
14591457 let gL = {
14601458 let fR = invoke(aM, "isPoolOneTokenOperationsDisabledREADONLY", [toString(this)], nil)
14611459 if ($isInstanceOf(fR, "Boolean"))
14761474 else aJ("no payments are expected")]
14771475 if ((gN == gN))
14781476 then {
1479- let ht = bl()
1477+ let hs = bl()
14801478 let gB = be
1481- let hu = valueOrErrorMessage(addressFromString(ht[C]), "Wr st addr")
1482- let hv = invoke(hu, "unstake", [toBase58String(gB), hz], nil)
1483- if ((hv == hv))
1479+ let ht = valueOrErrorMessage(addressFromString(hs[C]), "Wr st addr")
1480+ let hu = invoke(ht, "unstake", [toBase58String(gB), hy], nil)
1481+ if ((hu == hu))
14841482 then {
1485- let hE = fH(fI, fJ, [AttachedPayment(gB, hz)], dV.caller, dV.originCaller, dV.transactionId)
1486- let cO = hE._1
1487- let fT = hE._2
1483+ let hD = fH(fI, fJ, [AttachedPayment(gB, hy)], dV.caller, dV.originCaller, dV.transactionId)
1484+ let cO = hD._1
1485+ let fT = hD._2
14881486 $Tuple2(cO, fT)
14891487 }
14901488 else throw("Strict value is not equal to itself.")
14951493
14961494
14971495 @Callable(dV)
1498-func putOneTknV2WithBonusREADONLY (hF,hG) = {
1499- let hH = fl(hF, hG, "", "", true)
1496+func putOneTknV2WithBonusREADONLY (hE,hF) = {
1497+ let hG = fl(hE, hF, "", "", true)
1498+ let fB = hG._1
1499+ let cO = hG._2
1500+ let cp = hG._3
1501+ let fG = hG._4
1502+ $Tuple2(nil, $Tuple3(fB, cp, fG))
1503+ }
1504+
1505+
1506+
1507+@Callable(dV)
1508+func putOneTknV2WithoutTakeFeeREADONLY (hE,hF) = {
1509+ let hH = fl(hE, hF, "", "", false)
15001510 let fB = hH._1
15011511 let cO = hH._2
15021512 let cp = hH._3
15071517
15081518
15091519 @Callable(dV)
1510-func putOneTknV2WithoutTakeFeeREADONLY (hF,hG) = {
1511- let hI = fl(hF, hG, "", "", false)
1512- let fB = hI._1
1513- let cO = hI._2
1514- let cp = hI._3
1515- let fG = hI._4
1516- $Tuple2(nil, $Tuple3(fB, cp, fG))
1517- }
1520+func activate (hI,hJ) = if ((toString(dV.caller) != toString(aM)))
1521+ then throw("denied")
1522+ else $Tuple2([StringEntry(ag(), hI), StringEntry(ah(), hJ)], "success")
15181523
15191524
15201525
15211526 @Callable(dV)
1522-func activate (hJ,hK) = if ((toString(dV.caller) != toString(aM)))
1523- then throw("denied")
1524- else $Tuple2([StringEntry(ag(), hJ), StringEntry(ah(), hK)], "success")
1527+func setS (hK,hv) = if ((toString(dV.caller) != aF(this, aj())))
1528+ then gl
1529+ else [StringEntry(hK, hv)]
15251530
15261531
15271532
15281533 @Callable(dV)
1529-func setS (hL,hw) = if ((toString(dV.caller) != aF(this, aj())))
1534+func setI (hK,hv) = if ((toString(dV.caller) != aF(this, aj())))
15301535 then gl
1531- else [StringEntry(hL, hw)]
1532-
1533-
1534-
1535-@Callable(dV)
1536-func setI (hL,hw) = if ((toString(dV.caller) != aF(this, aj())))
1537- then gl
1538- else [IntegerEntry(hL, hw)]
1536+ else [IntegerEntry(hK, hv)]
15391537
15401538
15411539
15511549
15521550 @Callable(dV)
15531551 func calcPricesWrapperREADONLY (bZ,ca,ce) = {
1554- let hM = cd(bZ, ca, ce)
1555- $Tuple2(nil, [toString(hM[0]), toString(hM[1]), toString(hM[2])])
1552+ let hL = cd(bZ, ca, ce)
1553+ $Tuple2(nil, [toString(hL[0]), toString(hL[1]), toString(hL[2])])
15561554 }
15571555
15581556
15591557
15601558 @Callable(dV)
1561-func fromX18WrapperREADONLY (L,hN) = $Tuple2(nil, K(parseBigIntValue(L), hN))
1559+func fromX18WrapperREADONLY (L,hM) = $Tuple2(nil, K(parseBigIntValue(L), hM))
15621560
15631561
15641562
15731571
15741572
15751573 @Callable(dV)
1576-func estimatePutOperationWrapperREADONLY (cr,bO,cQ,cR,cS,cT,hO,cU,cV) = $Tuple2(nil, cP(cr, bO, cQ, cR, cS, cT, hO, cU, cV, true, false, 0, ""))
1574+func estimatePutOperationWrapperREADONLY (cr,bO,cQ,cR,cS,cT,hN,cU,cV) = $Tuple2(nil, cP(cr, bO, cQ, cR, cS, cT, hN, cU, cV, true, false, 0, ""))
15771575
15781576
15791577
15801578 @Callable(dV)
1581-func estimateGetOperationWrapperREADONLY (cr,hP,ct,hO) = {
1582- let dk = cq(cr, hP, ct, addressFromStringValue(hO))
1579+func estimateGetOperationWrapperREADONLY (cr,hO,ct,hN) = {
1580+ let dk = cq(cr, hO, ct, addressFromStringValue(hN))
15831581 $Tuple2(nil, $Tuple10(dk._1, dk._2, dk._3, dk._4, dk._5, dk._6, dk._7, toString(dk._8), dk._9, dk._10))
15841582 }
15851583
15891587 func getFeeREADONLY () = $Tuple2(nil, al)
15901588
15911589
1592-@Verifier(hQ)
1593-func hR () = {
1594- let hS = {
1590+@Verifier(hP)
1591+func hQ () = {
1592+ let hR = {
15951593 let gj = gi()
15961594 if ($isInstanceOf(gj, "ByteVector"))
15971595 then {
15991597 gn
16001598 }
16011599 else if ($isInstanceOf(gj, "Unit"))
1602- then hQ.senderPublicKey
1600+ then hP.senderPublicKey
16031601 else throw("Match error")
16041602 }
1605- let gj = hQ
1603+ let gj = hP
16061604 if ($isInstanceOf(gj, "Order"))
16071605 then {
16081606 let eW = gj
1609- let hT = aP()
1610- let hU = eV(eW)
1611- let hV = sigVerify(eW.bodyBytes, eW.proofs[0], eW.senderPublicKey)
1612- let hW = sigVerify(eW.bodyBytes, eW.proofs[1], hT)
1613- if (if (if (hU)
1607+ let hS = aP()
1608+ let hT = eV(eW)
1609+ let hU = sigVerify(eW.bodyBytes, eW.proofs[0], eW.senderPublicKey)
1610+ let hV = sigVerify(eW.bodyBytes, eW.proofs[1], hS)
1611+ if (if (if (hT)
1612+ then hU
1613+ else false)
16141614 then hV
16151615 else false)
1616- then hW
1617- else false)
16181616 then true
1619- else aB(hU, hV, hW)
1617+ else aB(hT, hU, hV)
16201618 }
16211619 else if ($isInstanceOf(gj, "SetScriptTransaction"))
16221620 then {
16231621 let dI = gj
1624- let hX = blake2b256(value(dI.script))
1625- let hY = fromBase64String(value(getString(aM, az())))
1626- let hZ = scriptHash(this)
1627- if (if ((hY == hX))
1628- then (hZ != hX)
1622+ let hW = blake2b256(value(dI.script))
1623+ let hX = fromBase64String(value(getString(aM, az())))
1624+ let hY = scriptHash(this)
1625+ if (if ((hX == hW))
1626+ then (hY != hW)
16291627 else false)
16301628 then true
1631- else sigVerify(hQ.bodyBytes, hQ.proofs[0], hS)
1629+ else sigVerify(hP.bodyBytes, hP.proofs[0], hR)
16321630 }
1633- else sigVerify(hQ.bodyBytes, hQ.proofs[0], hS)
1631+ else sigVerify(hP.bodyBytes, hP.proofs[0], hR)
16341632 }
16351633
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 (L,M) = toInt(fraction(L, toBigInt(M), c))
7474
7575
7676 func N (L,M,O) = toInt(fraction(L, toBigInt(M), c, O))
7777
7878
7979 func P (Q,R,S) = fraction(Q, R, S)
8080
8181
8282 func T (L) = if ((d > L))
8383 then -(L)
8484 else L
8585
8686
8787 func U (L) = if ((d > L))
8888 then -(L)
8989 else L
9090
9191
9292 func V () = "%s__factoryContract"
9393
9494
9595 func W () = "%s__managerPublicKey"
9696
9797
9898 func X () = "%s__pendingManagerPublicKey"
9999
100100
101101 func Y () = "%s%s__price__last"
102102
103103
104104 func Z (aa,ab) = makeString(["%s%s%d%d__price__history", toString(aa), toString(ab)], n)
105105
106106
107107 func ac (ad,ae) = ((("%s%s%s__P__" + ad) + "__") + ae)
108108
109109
110110 func af (ad,ae) = ((("%s%s%s__G__" + ad) + "__") + ae)
111111
112112
113113 func ag () = "%s__amountAsset"
114114
115115
116116 func ah () = "%s__priceAsset"
117117
118118
119119 func ai () = "%s__amp"
120120
121121
122122 func aj () = "%s__addonAddr"
123123
124124
125125 let ak = "%s__fee"
126126
127127 let al = valueOrElse(getInteger(this, ak), G)
128128
129129 let am = makeString(["%s", "dLp"], n)
130130
131131 let an = makeString(["%s", "dLpRefreshedHeight"], n)
132132
133133 let ao = makeString(["%s", "refreshDLpDelay"], n)
134134
135135 let ap = 1
136136
137137 let aq = valueOrElse(getInteger(this, ao), ap)
138138
139139 func ar () = "%s__factoryConfig"
140140
141141
142142 func as () = "%s%s__matcher__publicKey"
143143
144144
145145 func at (au,av) = (((("%d%d%s__" + au) + "__") + av) + "__config")
146146
147147
148148 func aw (ax) = ("%s%s%s__mappings__baseAsset2internalId__" + ax)
149149
150150
151151 func ay () = "%s__shutdown"
152152
153153
154154 func az () = "%s__allowedLpStableScriptHash"
155155
156156
157157 func aA () = "%s__feeCollectorAddress"
158158
159159
160160 func aB (aC,aD,aE) = throw(((((("Failed: ordValid=" + toString(aC)) + " sndrValid=") + toString(aD)) + " mtchrValid=") + toString(aE)))
161161
162162
163163 func aF (aG,aH) = valueOrErrorMessage(getString(aG, aH), makeString(["mandatory ", toString(aG), ".", aH, " not defined"], ""))
164164
165165
166166 func aI (aG,aH) = valueOrErrorMessage(getInteger(aG, aH), makeString(["mandatory ", toString(aG), ".", aH, " not defined"], ""))
167167
168168
169169 func aJ (aK) = throw(makeString(["lp_stable.ride:", aK], " "))
170170
171171
172172 func aL (aK) = makeString(["lp_stable.ride:", aK], " ")
173173
174174
175175 let aM = addressFromStringValue(aF(this, V()))
176176
177177 let aN = aF(this, ai())
178178
179179 func aO () = valueOrElse(getBoolean(aM, ay()), false)
180180
181181
182182 func aP () = fromBase58String(aF(aM, as()))
183183
184184
185185 let aQ = addressFromStringValue(aF(aM, aA()))
186186
187187 func aR () = {
188188 let aS = aF(this, ag())
189189 let aT = aF(this, ah())
190190 let aU = aI(aM, aw(aT))
191191 let au = aI(aM, aw(aS))
192192 split(aF(aM, at(toString(au), toString(aU))), n)
193193 }
194194
195195
196196 func aV (aW) = if ((aW == k))
197197 then unit
198198 else fromBase58String(aW)
199199
200200
201201 func aX (aW) = if ((aW == unit))
202202 then k
203203 else toBase58String(value(aW))
204204
205205
206206 func aY (aZ) = $Tuple9(addressFromStringValue(aZ[t]), parseIntValue(aZ[u]), fromBase58String(aZ[v]), aV(aZ[w]), aV(aZ[x]), parseIntValue(aZ[y]), parseIntValue(aZ[z]), fromBase58String(aZ[A]), fromBase58String(aZ[B]))
207207
208208
209209 let ba = aY(aR())
210210
211211 let bb = ba
212212
213213 let bc = bb._1
214214
215215 let bd = bb._2
216216
217217 let be = bb._3
218218
219219 let bf = bb._4
220220
221221 let bg = bb._5
222222
223223 let bh = bb._6
224224
225225 let bi = bb._7
226226
227227 let bj = bb._8
228228
229229 let bk = bb._9
230230
231231 func bl () = split(aF(aM, ar()), n)
232232
233233
234234 let bm = bl()
235235
236236 let bn = valueOrErrorMessage(addressFromString(bm[C]), "Invalid staking contract address")
237237
238238 let bo = valueOrErrorMessage(addressFromString(bm[E]), "Invalid slipage contract address")
239239
240240 let bp = valueOrErrorMessage(addressFromString(bm[F]), "Invalid gwx contract address")
241241
242242 let bq = valueOrErrorMessage(addressFromString(bm[D]), "Invalid gwx contract address")
243243
244244 func br (bs,bt,bu,bv,bw,bx,by,bz,bA,bB) = makeString(["%d%d%d%d%d%d%d%d%d%d", toString(bs), toString(bt), toString(bu), toString(bv), toString(bw), toString(bx), toString(by), toString(bz), toString(bA), toString(bB)], n)
245245
246246
247247 func bC (bD,bE,bF,bv,by,bz) = makeString(["%d%d%d%d%d%d", toString(bD), toString(bE), toString(bF), toString(bv), toString(by), toString(bz)], n)
248248
249249
250250 func bG (bH) = if ((bH == "WAVES"))
251251 then wavesBalance(this).available
252252 else assetBalance(this, fromBase58String(bH))
253253
254254
255255 func bI (bJ,bK) = fraction(bJ, c, bK)
256256
257257
258258 func bL (bM,bN,bO) = {
259259 let bP = fraction((bM - bN), b, bN)
260260 let bQ = ((bO - T(bP)) > d)
261261 if (!(bQ))
262262 then throw(("Big slpg: " + toString(bP)))
263263 else $Tuple2(bQ, min([bM, bN]))
264264 }
265265
266266
267267 func bR (bS,bT,bU) = {
268268 let bP = fraction(bT, b, bS)
269269 let bV = (bU > bP)
270270 if (if (bV)
271271 then true
272272 else (bT > bS))
273273 then throw(((((((toString(bT) + " ") + toString(bS)) + " ") + toString(bP)) + " ") + toString(bU)))
274274 else bV
275275 }
276276
277277
278278 func bW (bX,bY,bZ,ca) = {
279279 let cb = H(bZ, bX)
280280 let cc = H(ca, bY)
281281 bI(cc, cb)
282282 }
283283
284284
285285 func cd (bZ,ca,ce) = {
286286 let cf = bh
287287 let cg = bi
288288 let ch = bW(cf, cg, bZ, ca)
289289 let bK = H(bZ, cf)
290290 let bJ = H(ca, cg)
291291 let ci = H(ce, a)
292292 let cj = bI(bK, ci)
293293 let ck = bI(bJ, ci)
294294 [ch, cj, ck]
295295 }
296296
297297
298298 func cl (bZ,ca,ce) = {
299299 let cm = cd(bZ, ca, ce)
300300 [K(cm[0], a), K(cm[1], a), K(cm[2], a)]
301301 }
302302
303303
304304 func cn (co) = {
305305 let cp = fraction(co, al, a)
306306 $Tuple2((co - cp), cp)
307307 }
308308
309309
310310 func cq (cr,cs,ct,cu) = {
311311 let cv = be
312312 let cw = toBase58String(value(bf))
313313 let cx = toBase58String(value(bg))
314314 let cy = bh
315315 let cz = bi
316316 let cA = toString(bd)
317317 let cB = valueOrErrorMessage(assetInfo(cv), "Wrong LP id").quantity
318318 if ((toBase58String(cv) != cs))
319319 then throw("Wrong pmt asset")
320320 else {
321321 let cC = bG(cw)
322322 let cD = H(cC, cy)
323323 let cE = bG(cx)
324324 let cF = H(cE, cz)
325325 let cG = bI(cF, cD)
326326 let cH = K(cG, a)
327327 let cI = H(ct, a)
328328 let cJ = H(cB, a)
329329 let cK = fraction(cD, cI, cJ)
330330 let cL = fraction(cF, cI, cJ)
331331 let cM = N(cK, cy, FLOOR)
332332 let cN = N(cL, cz, FLOOR)
333333 let cO = if ((cr == ""))
334334 then nil
335335 else [ScriptTransfer(cu, cM, if ((cw == "WAVES"))
336336 then unit
337337 else fromBase58String(cw)), ScriptTransfer(cu, cN, if ((cx == "WAVES"))
338338 then unit
339339 else fromBase58String(cx)), StringEntry(af(toString(cu), cr), bC(cM, cN, ct, cH, height, lastBlock.timestamp)), IntegerEntry(Y(), cH), IntegerEntry(Z(height, lastBlock.timestamp), cH)]
340340 $Tuple10(cM, cN, cw, cx, cC, cE, cB, cG, cA, cO)
341341 }
342342 }
343343
344344
345345 func cP (cr,bO,cQ,cR,cS,cT,cu,cU,cV,cW,cX,cY,cZ) = {
346346 let cv = be
347347 let da = toBase58String(value(bf))
348348 let db = toBase58String(value(bg))
349349 let dc = bj
350350 let dd = bk
351351 let de = bh
352352 let df = bi
353353 let cA = toString(bd)
354354 let dg = valueOrErrorMessage(assetInfo(cv), "Wr lp as").quantity
355355 let cC = if (cU)
356356 then bG(da)
357357 else if (if (cW)
358358 then (cZ == da)
359359 else false)
360360 then (bG(da) - cY)
361361 else if (cW)
362362 then bG(da)
363363 else (bG(da) - cQ)
364364 let cE = if (cU)
365365 then bG(db)
366366 else if (if (cW)
367367 then (cZ == db)
368368 else false)
369369 then (bG(db) - cY)
370370 else if (cW)
371371 then bG(db)
372372 else (bG(db) - cS)
373373 let dh = H(cQ, de)
374374 let di = H(cS, df)
375375 let dj = bI(di, dh)
376376 let cD = H(cC, de)
377377 let cF = H(cE, df)
378378 let dk = if ((dg == 0))
379379 then {
380380 let cG = d
381381 let dl = d
382382 let ci = pow((dh * di), 0, toBigInt(5), 1, 0, DOWN)
383383 $Tuple5(K(ci, a), K(dh, de), K(di, df), bI((cF + di), (cD + dh)), dl)
384384 }
385385 else {
386386 let cG = bI(cF, cD)
387387 let dm = fraction(T((cG - dj)), c, cG)
388388 let dl = H(bO, a)
389389 if (if (if (cX)
390390 then (cG != d)
391391 else false)
392392 then (dm > dl)
393393 else false)
394394 then throw(((("Price slippage " + toString(dm)) + " > ") + toString(dl)))
395395 else {
396396 let dn = H(dg, a)
397397 let do = fraction(dh, cG, c)
398398 let dp = fraction(di, c, cG)
399399 let dq = if ((do > di))
400400 then $Tuple2(dp, di)
401401 else $Tuple2(dh, do)
402402 let dr = dq._1
403403 let ds = dq._2
404404 let ci = fraction(dn, ds, cF)
405405 $Tuple5(N(ci, a, FLOOR), N(dr, de, CEILING), N(ds, df, CEILING), cG, dl)
406406 }
407407 }
408408 let dt = dk._1
409409 let du = dk._2
410410 let dv = dk._3
411411 let cH = K(dk._4, a)
412412 let dw = K(dk._5, a)
413413 if ((0 >= dt))
414414 then throw("LP <= 0")
415415 else {
416416 let dx = if (!(cV))
417417 then 0
418418 else dt
419419 let dy = (cQ - du)
420420 let dz = (cS - dv)
421421 let dA = if (if (cW)
422422 then (cZ == da)
423423 else false)
424424 then $Tuple2(cY, 0)
425425 else if (if (cW)
426426 then (cZ == db)
427427 else false)
428428 then $Tuple2(0, cY)
429429 else $Tuple2(du, dv)
430430 let dB = dA._1
431431 let dC = dA._2
432432 let dD = [IntegerEntry(Y(), cH), IntegerEntry(Z(height, lastBlock.timestamp), cH), StringEntry(ac(cu, cr), br(dB, dC, dx, cH, bO, dw, height, lastBlock.timestamp, dy, dz))]
433433 $Tuple13(dt, dx, cH, cC, cE, dg, cv, cA, dD, dy, dz, cR, cT)
434434 }
435435 }
436436
437437
438438 func dE (dF) = {
439439 let dG = dF[0]
440440 let dH = dF[1]
441441 let dI = (dG + dH)
442442 if ((dI == e))
443443 then e
444444 else {
445445 let dJ = parseIntValue(aN)
446446 let dK = (dJ * 2)
447447 let cm = fraction(dG, dH, f)
448448 let dL = fraction(cm, i, f)
449449 let dM = fraction(toBigInt(dK), dI, f)
450450 let dN = toBigInt((dK - 1))
451451 func dO (dP) = {
452452 let dQ = fraction(dP, dP, f)
453453 let dR = fraction(dQ, dP, f)
454454 let dS = fraction(dR, f, dL)
455455 fraction((dM + fraction(dS, g, f)), dP, (fraction(dN, dP, f) + fraction(h, dS, f)), CEILING)
456456 }
457457
458458 func dT (dU,dV) = if (dU._2)
459459 then dU
460460 else {
461461 let dP = dU._1
462462 let dW = dO(dP)
463463 let dX = toInt((dW - value(dP)))
464464 let dY = if ((0 > dX))
465465 then -(dX)
466466 else dX
467467 if ((1 >= dY))
468468 then $Tuple2(dW, true)
469469 else $Tuple2(dW, false)
470470 }
471471
472472 let dZ = [0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14]
473473 let ea = {
474474 let eb = dZ
475475 let ec = size(eb)
476476 let ed = $Tuple2(dI, false)
477477 func ee (ef,eg) = if ((eg >= ec))
478478 then ef
479479 else dT(ef, eb[eg])
480480
481481 func eh (ef,eg) = if ((eg >= ec))
482482 then ef
483483 else throw("List size exceeds 15")
484484
485485 eh(ee(ee(ee(ee(ee(ee(ee(ee(ee(ee(ee(ee(ee(ee(ee(ed, 0), 1), 2), 3), 4), 5), 6), 7), 8), 9), 10), 11), 12), 13), 14), 15)
486486 }
487487 let dP = ea._1
488488 let ei = ea._2
489489 if (ei)
490490 then dP
491491 else throw(("D calculation error, D = " + toString(dP)))
492492 }
493493 }
494494
495495
496496 func ej (dF) = {
497497 let ek = g
498498 let dG = dF[0]
499499 let dH = dF[1]
500500 let el = parseBigIntValue(l)
501501 let dJ = (parseBigIntValue(aN) * el)
502502 let dI = (dG + dH)
503503 if ((dI == e))
504504 then e
505505 else {
506506 let dK = (dJ * ek)
507507 let dL = (((dG * dH) * ek) * ek)
508508 let em = ((dK * dI) / el)
509509 let en = (dK - el)
510510 let eo = (ek + f)
511511 func dT (dU,ep) = {
512512 let eq = dU
513513 let dP = eq._1
514514 let ei = eq._2
515515 if ((ei != unit))
516516 then dU
517517 else {
518518 let dS = (((dP * dP) * dP) / dL)
519519 let dW = (((em + (dS * ek)) * dP) / (((en * dP) / el) + (eo * dS)))
520520 let dY = U((dW - value(dP)))
521521 if ((f >= dY))
522522 then $Tuple2(dW, ep)
523523 else $Tuple2(dW, unit)
524524 }
525525 }
526526
527527 let dZ = [0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14]
528528 let er = {
529529 let eb = dZ
530530 let ec = size(eb)
531531 let ed = $Tuple2(dI, unit)
532532 func ee (ef,eg) = if ((eg >= ec))
533533 then ef
534534 else dT(ef, eb[eg])
535535
536536 func eh (ef,eg) = if ((eg >= ec))
537537 then ef
538538 else throw("List size exceeds 15")
539539
540540 eh(ee(ee(ee(ee(ee(ee(ee(ee(ee(ee(ee(ee(ee(ee(ee(ed, 0), 1), 2), 3), 4), 5), 6), 7), 8), 9), 10), 11), 12), 13), 14), 15)
541541 }
542542 let dP = er._1
543543 let ei = er._2
544544 if ((ei != unit))
545545 then dP
546546 else throw(("D calculation error, D = " + toString(dP)))
547547 }
548548 }
549549
550550
551551 func es (dF,dV,et) = {
552552 let ek = g
553553 let eu = dF[if ((dV == 0))
554554 then 1
555555 else 0]
556556 let el = parseBigIntValue(l)
557557 let dJ = (parseBigIntValue(aN) * el)
558558 let dI = eu
559559 let dK = (dJ * ek)
560560 let ev = (((((et * et) / (eu * ek)) * et) * el) / (dK * ek))
561561 let ew = ((dI + ((et * el) / dK)) - et)
562562 func dT (dU,ep) = {
563563 let ex = dU
564564 let ey = ex._1
565565 let ei = ex._2
566566 if ((ei != unit))
567567 then dU
568568 else {
569569 let ez = (((ey * ey) + ev) / ((g * ey) + ew))
570570 let eA = U((ez - value(ey)))
571571 if ((f >= eA))
572572 then $Tuple2(ez, ep)
573573 else $Tuple2(ez, unit)
574574 }
575575 }
576576
577577 let dZ = [0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14]
578578 let eB = {
579579 let eb = dZ
580580 let ec = size(eb)
581581 let ed = $Tuple2(et, unit)
582582 func ee (ef,eg) = if ((eg >= ec))
583583 then ef
584584 else dT(ef, eb[eg])
585585
586586 func eh (ef,eg) = if ((eg >= ec))
587587 then ef
588588 else throw("List size exceeds 15")
589589
590590 eh(ee(ee(ee(ee(ee(ee(ee(ee(ee(ee(ee(ee(ee(ee(ee(ed, 0), 1), 2), 3), 4), 5), 6), 7), 8), 9), 10), 11), 12), 13), 14), 15)
591591 }
592592 let ey = eB._1
593593 let ei = eB._2
594594 if ((ei != unit))
595595 then ey
596596 else throw(("Y calculation error, Y = " + toString(ey)))
597597 }
598598
599599
600600 func eC (eD,eE,eF) = {
601601 let eG = fraction(dE([eD, eE]), c, eF)
602602 if ((eF == e))
603603 then e
604604 else eG
605605 }
606606
607607
608608 func eH (eI,eJ,eK) = {
609609 let eL = (toBigInt(bG(aX(bf))) - eI)
610610 let eM = (toBigInt(bG(aX(bg))) - eJ)
611611 let eN = (toBigInt(value(assetInfo(be)).quantity) - eK)
612612 let eO = eC(eL, eM, eN)
613613 eO
614614 }
615615
616616
617617 func eP (eQ,eR,eK) = {
618618 let eL = (bG(aX(bf)) + eQ)
619619 let eM = (bG(aX(bg)) + eR)
620620 let eN = (value(assetInfo(be)).quantity + eK)
621621 let eG = eC(toBigInt(eL), toBigInt(eM), toBigInt(eN))
622622 let eS = [IntegerEntry(an, height), StringEntry(am, toString(eG))]
623623 $Tuple2(eS, eG)
624624 }
625625
626626
627627 func eT (eU,eG) = if ((eG >= eU))
628628 then true
629629 else aJ("updated DLp lower than current DLp")
630630
631631
632632 func eV (eW) = {
633633 let eX = eW.amount
634634 let eY = fraction(eW.amount, eW.price, a, FLOOR)
635635 let eZ = if ((eW.orderType == Buy))
636636 then $Tuple2(eX, -(eY))
637637 else $Tuple2(-(eX), eY)
638638 let eQ = eZ._1
639639 let eR = eZ._2
640640 if (if (if (aO())
641641 then true
642642 else (bd == r))
643643 then true
644644 else (bd == s))
645645 then throw("Admin blocked")
646646 else if (if ((eW.assetPair.amountAsset != bf))
647647 then true
648648 else (eW.assetPair.priceAsset != bg))
649649 then throw("Wr assets")
650650 else {
651651 let fa = parseBigIntValue(getStringValue(this, am))
652652 let fb = eP(eQ, eR, 0)
653653 let fc = fb._1
654654 let fd = fb._2
655655 let fe = (fd >= fa)
656656 fe
657657 }
658658 }
659659
660660
661661 func ff (dV) = if ((size(dV.payments) != 1))
662662 then throw("1 pmnt exp")
663663 else {
664664 let fg = value(dV.payments[0])
665665 let cs = value(fg.assetId)
666666 let cY = fg.amount
667667 let dk = cq(toBase58String(dV.transactionId), toBase58String(cs), cY, dV.caller)
668668 let cM = dk._1
669669 let cN = dk._2
670670 let cA = parseIntValue(dk._9)
671671 let cO = dk._10
672672 if (if (aO())
673673 then true
674674 else (cA == s))
675675 then throw(("Admin blocked: " + toString(cA)))
676676 else $Tuple5(cM, cN, cY, cs, cO)
677677 }
678678
679679
680680 func fh (fi,ae,fj,fk,bO,cV,cW,cX,cY,cZ) = {
681681 let dk = cP(ae, bO, value(fj).amount, value(fj).assetId, value(fk).amount, value(fk).assetId, fi, (ae == ""), cV, cW, cX, cY, cZ)
682682 let cA = parseIntValue(dk._8)
683683 if (if (if (aO())
684684 then true
685685 else (cA == q))
686686 then true
687687 else (cA == s))
688688 then throw(("Blocked:" + toString(cA)))
689689 else dk
690690 }
691691
692692
693693 func fl (fm,cs,cu,ae,fn) = {
694694 let cw = toBase58String(value(bf))
695695 let cx = toBase58String(value(bg))
696696 let cv = be
697697 let de = bh
698698 let df = bi
699699 let eN = toBigInt(valueOrErrorMessage(assetInfo(cv), "invalid lp asset").quantity)
700700 let fo = if ((eN > e))
701701 then true
702702 else throw("initial deposit requires all coins")
703703 if ((fo == fo))
704704 then {
705705 let cC = bG(cw)
706706 let cE = bG(cx)
707707 let fp = if ((ae == ""))
708708 then $Tuple2(cC, cE)
709709 else if ((cs == cw))
710710 then if ((fm > cC))
711711 then throw("invalid payment amount")
712712 else $Tuple2((cC - fm), cE)
713713 else if ((cs == cx))
714714 then if ((fm > cE))
715715 then throw("invalid payment amount")
716716 else $Tuple2(cC, (cE - fm))
717717 else throw("wrong pmtAssetId")
718718 let fq = fp._1
719719 let fr = fp._2
720720 let fs = if ((cs == cw))
721721 then $Tuple2(fm, 0)
722722 else if ((cs == cx))
723723 then $Tuple2(0, fm)
724724 else throw("invalid payment")
725725 let ft = fs._1
726726 let fu = fs._2
727727 let fv = if (fn)
728728 then $Tuple3(cn(ft)._1, cn(fu)._1, cn(fm)._2)
729729 else $Tuple3(ft, fu, 0)
730730 let fw = fv._1
731731 let fx = fv._2
732732 let cp = fv._3
733733 let fy = (fq + fw)
734734 let fz = (fr + fx)
735735 let bT = dE([toBigInt(fq), toBigInt(fr)])
736736 let bS = dE([toBigInt(fy), toBigInt(fz)])
737737 let fA = if ((bS > bT))
738738 then true
739739 else throw()
740740 if ((fA == fA))
741741 then {
742742 let fB = fraction(eN, (bS - bT), bT, FLOOR)
743743 let cH = K(bI(H(fz, df), H(fy, de)), a)
744744 let dD = [IntegerEntry(Y(), cH), IntegerEntry(Z(height, lastBlock.timestamp), cH), StringEntry(ac(cu, ae), br(ft, fu, toInt(fB), cH, 0, 0, height, lastBlock.timestamp, 0, 0))]
745745 let fC = fraction(fr, a, fq)
746746 let fD = fraction(fm, a, (fC + a))
747747 let fE = (fm - fD)
748748 let fF = fraction(eN, toBigInt(fE), toBigInt(fr))
749749 let fG = toInt(fraction((fB - fF), b, fF))
750750 $Tuple4(toInt(fB), dD, cp, fG)
751751 }
752752 else throw("Strict value is not equal to itself.")
753753 }
754754 else throw("Strict value is not equal to itself.")
755755 }
756756
757757
758758 func fH (fI,fJ,fK,fi,fL,fM) = {
759759 let cv = toBase58String(value(be))
760760 let cw = toBase58String(value(bf))
761761 let cx = toBase58String(value(bg))
762762 let fN = bh
763763 let fO = bi
764764 let fP = bd
765765 let cu = if ((fi == bq))
766766 then fL
767767 else fi
768768 let fg = value(fK[0])
769769 let cs = value(fg.assetId)
770770 let cY = fg.amount
771771 let eO = eH(e, e, e)
772772 if ((eO == eO))
773773 then {
774774 let cr = toBase58String(fM)
775775 if ((cv != toBase58String(cs)))
776776 then throw("Wrong LP")
777777 else {
778778 let cC = bG(cw)
779779 let cE = bG(cx)
780780 let fQ = {
781781 let fR = invoke(this, "getOneTknV2READONLY", [fI, cY], nil)
782782 if ($isInstanceOf(fR, "(Int, Int)"))
783783 then fR
784784 else throw(($getType(fR) + " couldn't be cast to (Int, Int)"))
785785 }
786786 if ((fQ == fQ))
787787 then {
788788 let cp = fQ._2
789789 let fS = fQ._1
790790 let fT = if (if ((fJ > 0))
791791 then (fJ > fS)
792792 else false)
793793 then aJ(makeString(["amount to receive is less than ", toString(fJ)], ""))
794794 else fS
795795 let fU = if ((fI == cw))
796796 then $Tuple4(fT, 0, ((cC - fT) - cp), cE)
797797 else if ((fI == cx))
798798 then $Tuple4(0, fT, cC, ((cE - fT) - cp))
799799 else throw("invalid out asset id")
800800 let fV = fU._1
801801 let fW = fU._2
802802 let fy = fU._3
803803 let fz = fU._4
804804 let fX = bI(H(fz, fO), H(fy, fN))
805805 let fY = K(fX, a)
806806 let fZ = if ((fI == "WAVES"))
807807 then unit
808808 else fromBase58String(fI)
809809 let ga = if ((cp > 0))
810810 then [ScriptTransfer(aQ, cp, fZ)]
811811 else nil
812812 let cO = ([ScriptTransfer(cu, fT, fZ), StringEntry(af(toString(cu), cr), bC(fV, fW, cY, fY, height, lastBlock.timestamp)), IntegerEntry(Y(), fY), IntegerEntry(Z(height, lastBlock.timestamp), fY)] ++ ga)
813813 if ((cO == cO))
814814 then {
815815 let gb = invoke(aM, "burn", [cY], [AttachedPayment(cs, cY)])
816816 if ((gb == gb))
817817 then {
818818 let gc = {
819819 let gd = if ((this == aQ))
820820 then 0
821821 else cp
822822 let ge = if ((aV(fI) == bf))
823823 then true
824824 else false
825825 if (ge)
826826 then $Tuple2(-((fS + gd)), 0)
827827 else $Tuple2(0, -((fS + gd)))
828828 }
829829 let eQ = gc._1
830830 let eR = gc._2
831831 let gf = eP(eQ, eR, 0)
832832 let gg = gf._1
833833 let eG = gf._2
834834 let gh = eT(eO, eG)
835835 if ((gh == gh))
836836 then $Tuple2((cO ++ gg), fT)
837837 else throw("Strict value is not equal to itself.")
838838 }
839839 else throw("Strict value is not equal to itself.")
840840 }
841841 else throw("Strict value is not equal to itself.")
842842 }
843843 else throw("Strict value is not equal to itself.")
844844 }
845845 }
846846 else throw("Strict value is not equal to itself.")
847847 }
848848
849849
850850 func gi () = {
851851 let gj = getString(W())
852852 if ($isInstanceOf(gj, "String"))
853853 then {
854854 let dI = gj
855855 fromBase58String(dI)
856856 }
857857 else if ($isInstanceOf(gj, "Unit"))
858858 then unit
859859 else throw("Match error")
860860 }
861861
862862
863863 func gk () = {
864864 let gj = getString(X())
865865 if ($isInstanceOf(gj, "String"))
866866 then {
867867 let dI = gj
868868 fromBase58String(dI)
869869 }
870870 else if ($isInstanceOf(gj, "Unit"))
871871 then unit
872872 else throw("Match error")
873873 }
874874
875875
876876 let gl = throw("Permission denied")
877877
878878 func gm (dV) = {
879879 let gj = gi()
880880 if ($isInstanceOf(gj, "ByteVector"))
881881 then {
882882 let gn = gj
883883 (dV.callerPublicKey == gn)
884884 }
885885 else if ($isInstanceOf(gj, "Unit"))
886886 then (dV.caller == this)
887887 else throw("Match error")
888888 }
889889
890890
891891 func go (dV) = {
892892 let gj = gi()
893893 if ($isInstanceOf(gj, "ByteVector"))
894894 then {
895895 let gn = gj
896896 if ((dV.callerPublicKey == gn))
897897 then true
898898 else gl
899899 }
900900 else if ($isInstanceOf(gj, "Unit"))
901901 then if ((dV.caller == this))
902902 then true
903903 else gl
904904 else throw("Match error")
905905 }
906906
907907
908908 @Callable(dV)
909909 func constructor (V) = {
910910 let ev = go(dV)
911911 if ((ev == ev))
912912 then [StringEntry(V(), V)]
913913 else throw("Strict value is not equal to itself.")
914914 }
915915
916916
917917
918918 @Callable(dV)
919919 func setManager (gp) = {
920920 let ev = go(dV)
921921 if ((ev == ev))
922922 then {
923923 let gq = fromBase58String(gp)
924924 if ((gq == gq))
925925 then [StringEntry(X(), gp)]
926926 else throw("Strict value is not equal to itself.")
927927 }
928928 else throw("Strict value is not equal to itself.")
929929 }
930930
931931
932932
933933 @Callable(dV)
934934 func confirmManager () = {
935935 let cm = gk()
936936 let gr = if (isDefined(cm))
937937 then true
938938 else throw("No pending manager")
939939 if ((gr == gr))
940940 then {
941941 let gs = if ((dV.callerPublicKey == value(cm)))
942942 then true
943943 else throw("You are not pending manager")
944944 if ((gs == gs))
945945 then [StringEntry(W(), toBase58String(value(cm))), DeleteEntry(X())]
946946 else throw("Strict value is not equal to itself.")
947947 }
948948 else throw("Strict value is not equal to itself.")
949949 }
950950
951951
952952
953953 @Callable(dV)
954954 func put (gt,gu) = {
955955 let gv = bl()
956956 let gw = valueOrErrorMessage(addressFromString(gv[C]), "Wr st addr")
957957 let gx = valueOrErrorMessage(addressFromString(gv[E]), "Wr sl addr")
958958 if ((0 > gt))
959959 then throw("Wrong slippage")
960960 else if ((size(dV.payments) != 2))
961961 then throw("2 pmnts expd")
962962 else {
963963 let gy = toBigInt(value(dV.payments[0]).amount)
964964 let gz = toBigInt(value(dV.payments[1]).amount)
965965 let eL = (toBigInt(bG(aX(bf))) - gy)
966966 if ((eL == eL))
967967 then {
968968 let eM = (toBigInt(bG(aX(bg))) - gz)
969969 if ((eM == eM))
970970 then {
971971 let eN = toBigInt(value(assetInfo(be)).quantity)
972972 if ((eN == eN))
973973 then {
974974 let eO = eH(gy, gz, toBigInt(0))
975975 if ((eO == eO))
976976 then {
977977 let gA = fh(toString(dV.caller), toBase58String(dV.transactionId), AttachedPayment(value(dV.payments[0]).assetId, value(dV.payments[0]).amount), dV.payments[1], gt, true, false, true, 0, "")
978978 let dx = gA._2
979979 let gB = gA._7
980980 let cO = gA._9
981981 let dy = gA._10
982982 let dz = gA._11
983983 let cw = gA._12
984984 let cx = gA._13
985985 let dk = invoke(aM, "emit", [dx], nil)
986986 if ((dk == dk))
987987 then {
988988 let gC = {
989989 let gj = dk
990990 if ($isInstanceOf(gj, "Address"))
991991 then {
992992 let gD = gj
993993 invoke(gD, "emit", [dx], nil)
994994 }
995995 else unit
996996 }
997997 if ((gC == gC))
998998 then {
999999 let gE = if ((dy > 0))
10001000 then invoke(gx, "put", nil, [AttachedPayment(cw, dy)])
10011001 else nil
10021002 if ((gE == gE))
10031003 then {
10041004 let gF = if ((dz > 0))
10051005 then invoke(gx, "put", nil, [AttachedPayment(cx, dz)])
10061006 else nil
10071007 if ((gF == gF))
10081008 then {
10091009 let gG = if (gu)
10101010 then {
10111011 let gH = invoke(gw, "stake", nil, [AttachedPayment(gB, dx)])
10121012 if ((gH == gH))
10131013 then nil
10141014 else throw("Strict value is not equal to itself.")
10151015 }
10161016 else [ScriptTransfer(dV.caller, dx, gB)]
10171017 let gI = eP(0, 0, 0)
10181018 let gg = gI._1
10191019 let eG = gI._2
10201020 let gh = eT(eO, eG)
10211021 if ((gh == gh))
10221022 then {
10231023 let gJ = if ((eG >= eO))
10241024 then true
10251025 else aJ("updated DLp lower than current DLp")
10261026 if ((gJ == gJ))
10271027 then {
10281028 let gK = value(assetInfo(be)).quantity
10291029 if ((gK == gK))
10301030 then ((cO ++ gG) ++ gg)
10311031 else throw("Strict value is not equal to itself.")
10321032 }
10331033 else throw("Strict value is not equal to itself.")
10341034 }
10351035 else throw("Strict value is not equal to itself.")
10361036 }
10371037 else throw("Strict value is not equal to itself.")
10381038 }
10391039 else throw("Strict value is not equal to itself.")
10401040 }
10411041 else throw("Strict value is not equal to itself.")
10421042 }
10431043 else throw("Strict value is not equal to itself.")
10441044 }
10451045 else throw("Strict value is not equal to itself.")
10461046 }
10471047 else throw("Strict value is not equal to itself.")
10481048 }
10491049 else throw("Strict value is not equal to itself.")
10501050 }
10511051 else throw("Strict value is not equal to itself.")
10521052 }
10531053 }
10541054
10551055
10561056
10571057 @Callable(dV)
10581058 func putOneTknV2 (fJ,gu) = {
10591059 let gL = {
10601060 let fR = invoke(aM, "isPoolOneTokenOperationsDisabledREADONLY", [toString(this)], nil)
10611061 if ($isInstanceOf(fR, "Boolean"))
10621062 then fR
10631063 else throw(($getType(fR) + " couldn't be cast to Boolean"))
10641064 }
10651065 let gM = if (if (if (aO())
10661066 then true
10671067 else (bd == q))
10681068 then true
10691069 else (bd == s))
10701070 then true
10711071 else gL
10721072 let gN = [if (if (!(gM))
10731073 then true
10741074 else gm(dV))
10751075 then true
10761076 else aJ("put operation is blocked by admin"), if ((size(dV.payments) == 1))
10771077 then true
10781078 else aJ("exactly 1 payment are expected")]
10791079 if ((gN == gN))
10801080 then {
10811081 let cw = toBase58String(value(bf))
10821082 let cx = toBase58String(value(bg))
10831083 let cv = be
10841084 let fN = bh
10851085 let fO = bi
10861086 let cu = if ((dV.caller == this))
10871087 then dV.originCaller
10881088 else dV.caller
10891089 let fg = value(dV.payments[0])
10901090 let cs = toBase58String(value(fg.assetId))
10911091 let cY = fg.amount
10921092 let eO = if ((fg.assetId == bf))
10931093 then eH(toBigInt(cY), toBigInt(0), toBigInt(0))
10941094 else eH(toBigInt(0), toBigInt(cY), toBigInt(0))
10951095 if ((eO == eO))
10961096 then {
10971097 let gO = fl(cY, cs, toString(cu), toBase58String(dV.transactionId), true)
10981098 if ((gO == gO))
10991099 then {
11001100 let cp = gO._3
11011101 let cO = gO._2
11021102 let gP = gO._1
11031103 let dx = if (if ((fJ > 0))
11041104 then (fJ > gP)
11051105 else false)
11061106 then aJ(makeString(["amount to receive is less than ", toString(fJ)], ""))
11071107 else gP
11081108 let gA = invoke(aM, "emit", [dx], nil)
11091109 if ((gA == gA))
11101110 then {
11111111 let gC = {
11121112 let gj = gA
11131113 if ($isInstanceOf(gj, "Address"))
11141114 then {
11151115 let gD = gj
11161116 invoke(gD, "emit", [dx], nil)
11171117 }
11181118 else unit
11191119 }
11201120 if ((gC == gC))
11211121 then {
11221122 let gG = if (gu)
11231123 then {
11241124 let gH = invoke(bn, "stake", nil, [AttachedPayment(cv, dx)])
11251125 if ((gH == gH))
11261126 then nil
11271127 else throw("Strict value is not equal to itself.")
11281128 }
11291129 else [ScriptTransfer(dV.caller, dx, cv)]
11301130 let ga = if ((cp > 0))
11311131 then [ScriptTransfer(aQ, cp, fromBase58String(cs))]
11321132 else nil
11331133 let gQ = if ((this == aQ))
11341134 then $Tuple2(0, 0)
11351135 else {
11361136 let gR = if ((fg.assetId == bf))
11371137 then true
11381138 else false
11391139 if (gR)
11401140 then $Tuple2(-(cp), 0)
11411141 else $Tuple2(0, -(cp))
11421142 }
11431143 let eQ = gQ._1
11441144 let eR = gQ._2
11451145 let gS = eP(eQ, eR, 0)
11461146 let gg = gS._1
11471147 let eG = gS._2
11481148 let gh = eT(eO, eG)
11491149 if ((gh == gh))
11501150 then $Tuple2((((cO ++ gG) ++ ga) ++ gg), dx)
11511151 else throw("Strict value is not equal to itself.")
11521152 }
11531153 else throw("Strict value is not equal to itself.")
11541154 }
11551155 else throw("Strict value is not equal to itself.")
11561156 }
11571157 else throw("Strict value is not equal to itself.")
11581158 }
11591159 else throw("Strict value is not equal to itself.")
11601160 }
11611161 else throw("Strict value is not equal to itself.")
11621162 }
11631163
11641164
11651165
11661166 @Callable(dV)
11671167 func get () = {
11681168 let eO = eH(toBigInt(0), toBigInt(0), toBigInt(0))
11691169 if ((eO == eO))
11701170 then {
11711171 let dk = ff(dV)
11721172 let gT = dk._1
11731173 let cN = dk._2
11741174 let cY = dk._3
11751175 let cs = dk._4
11761176 let cO = dk._5
11771177 let ew = invoke(aM, "burn", [cY], [AttachedPayment(cs, cY)])
11781178 if ((ew == ew))
11791179 then {
11801180 let gU = eP(-(gT), -(cN), 0)
11811181 let gg = gU._1
11821182 let eG = gU._2
11831183 let gh = eT(eO, eG)
11841184 if ((gh == gh))
11851185 then (cO ++ gg)
11861186 else throw("Strict value is not equal to itself.")
11871187 }
11881188 else throw("Strict value is not equal to itself.")
11891189 }
11901190 else throw("Strict value is not equal to itself.")
11911191 }
11921192
11931193
11941194
11951195 @Callable(dV)
11961196 func getOneTknV2 (fI,fJ) = {
11971197 let gL = {
11981198 let fR = invoke(aM, "isPoolOneTokenOperationsDisabledREADONLY", [toString(this)], nil)
11991199 if ($isInstanceOf(fR, "Boolean"))
12001200 then fR
12011201 else throw(($getType(fR) + " couldn't be cast to Boolean"))
12021202 }
12031203 let gV = if (if (aO())
12041204 then true
12051205 else (bd == s))
12061206 then true
12071207 else gL
12081208 let gN = [if (if (!(gV))
12091209 then true
12101210 else gm(dV))
12111211 then true
12121212 else aJ("get operation is blocked by admin"), if ((size(dV.payments) == 1))
12131213 then true
12141214 else aJ("exactly 1 payment are expected")]
12151215 if ((gN == gN))
12161216 then {
12171217 let gW = fH(fI, fJ, dV.payments, dV.caller, dV.originCaller, dV.transactionId)
12181218 let cO = gW._1
12191219 let fT = gW._2
12201220 $Tuple2(cO, fT)
12211221 }
12221222 else throw("Strict value is not equal to itself.")
12231223 }
12241224
12251225
12261226
12271227 @Callable(dV)
12281228 func refreshDLp () = {
12291229 let gX = valueOrElse(getInteger(an), 0)
12301230 let gY = if (((height - gX) >= aq))
12311231 then unit
12321232 else aJ(makeString([toString(aq), " blocks have not passed since the previous call"], ""))
12331233 if ((gY == gY))
12341234 then {
12351235 let fa = valueOrErrorMessage(parseBigInt(valueOrElse(getString(this, am), "0")), aL("invalid dLp"))
12361236 let gZ = eP(0, 0, 0)
12371237 let ha = gZ._1
12381238 let eG = gZ._2
12391239 let eS = if ((fa != eG))
12401240 then ha
12411241 else aJ("nothing to refresh")
12421242 $Tuple2(eS, toString(eG))
12431243 }
12441244 else throw("Strict value is not equal to itself.")
12451245 }
12461246
12471247
12481248
12491249 @Callable(dV)
12501250 func getOneTknV2READONLY (fI,hb) = {
12511251 let cw = toBase58String(value(bf))
12521252 let cx = toBase58String(value(bg))
12531253 let cv = toBase58String(value(be))
12541254 let dF = [toBigInt(bG(cw)), toBigInt(bG(cx))]
12551255 let eF = toBigInt(valueOrErrorMessage(assetInfo(fromBase58String(cv)), "invalid lp asset").quantity)
12561256 let bT = dE(dF)
12571257 let bS = (bT - fraction(toBigInt(hb), bT, eF))
12581258 let hc = if ((fI == cw))
12591259 then 0
12601260 else if ((fI == cx))
12611261 then 1
12621262 else throw("invalid out asset id")
12631263 let hd = es(dF, hc, bS)
12641264 let he = (dF[hc] - hd)
12651265 let hf = max([0, toInt((he - f))])
12661266 let hg = cn(hf)
12671267 let fS = hg._1
12681268 let cp = hg._2
12691269 $Tuple2(nil, $Tuple2(fS, cp))
12701270 }
12711271
12721272
12731273
12741274 @Callable(dV)
12751275 func getOneTknV2WithBonusREADONLY (fI,hb) = {
12761276 let cw = toBase58String(value(bf))
12771277 let cx = toBase58String(value(bg))
12781278 let cv = toBase58String(value(be))
12791279 let cC = bG(cw)
12801280 let cE = bG(cx)
12811281 let hh = {
12821282 let fR = invoke(this, "getOneTknV2READONLY", [fI, hb], nil)
12831283 if ($isInstanceOf(fR, "(Int, Int)"))
12841284 then fR
12851285 else throw(($getType(fR) + " couldn't be cast to (Int, Int)"))
12861286 }
12871287 let fS = hh._1
12881288 let cp = hh._2
12891289 let dk = cq("", cv, hb, this)
12901290 let cM = dk._1
12911291 let cN = dk._2
12921292 let hi = (cM + cN)
12931293 let fG = if ((hi == 0))
12941294 then if ((fS == 0))
12951295 then 0
12961296 else throw("bonus calculation error")
12971297 else fraction((fS - hi), a, hi)
12981298 $Tuple2(nil, $Tuple3(fS, cp, fG))
12991299 }
13001300
13011301
13021302
13031303 @Callable(dV)
13041304 func getNoLess (hj,hk) = {
13051305 let hl = toBigInt(bG(aX(bf)))
13061306 if ((hl == hl))
13071307 then {
13081308 let hm = toBigInt(bG(aX(bg)))
13091309 if ((hm == hm))
13101310 then {
13111311 let hn = toBigInt(value(assetInfo(be)).quantity)
13121312 if ((hn == hn))
13131313 then {
13141314 let ho = (hn - toBigInt(value(dV.payments[0]).amount))
13151315 if ((ho == ho))
13161316 then {
13171317 let dk = ff(dV)
13181318 let cM = dk._1
13191319 let cN = dk._2
13201320 let cY = dk._3
13211321 let cs = dk._4
13221322 let cO = dk._5
13231323 if ((hj > cM))
13241324 then throw(((("Failed: " + toString(cM)) + " < ") + toString(hj)))
13251325 else if ((hk > cN))
13261326 then throw(((("Failed: " + toString(cN)) + " < ") + toString(hk)))
13271327 else {
13281328 let eO = eH(toBigInt(0), toBigInt(0), toBigInt(0))
13291329 if ((eO == eO))
13301330 then {
13311331 let hp = invoke(aM, "burn", [cY], [AttachedPayment(cs, cY)])
13321332 if ((hp == hp))
13331333 then {
13341334 let hq = eP(-(cM), -(cN), 0)
13351335 let gg = hq._1
13361336 let eG = hq._2
1337- let hr = if ((eG >= eO))
1338- then true
1339- else aJ(makeString(["updated DLp lower than current DLp", toString(hl), toString(hm), toString(eO), toString(eG), toString(hn), toString(ho)], " "))
1340- if ((hr == hr))
1337+ let gh = eT(eO, eG)
1338+ if ((gh == gh))
13411339 then (cO ++ gg)
13421340 else throw("Strict value is not equal to itself.")
13431341 }
13441342 else throw("Strict value is not equal to itself.")
13451343 }
13461344 else throw("Strict value is not equal to itself.")
13471345 }
13481346 }
13491347 else throw("Strict value is not equal to itself.")
13501348 }
13511349 else throw("Strict value is not equal to itself.")
13521350 }
13531351 else throw("Strict value is not equal to itself.")
13541352 }
13551353 else throw("Strict value is not equal to itself.")
13561354 }
13571355
13581356
13591357
13601358 @Callable(dV)
13611359 func unstakeAndGet (co) = {
1362- let hs = if ((size(dV.payments) != 0))
1360+ let hr = if ((size(dV.payments) != 0))
13631361 then throw("No pmnts expd")
13641362 else true
1365- if ((hs == hs))
1363+ if ((hr == hr))
13661364 then {
1367- let ht = bl()
1365+ let hs = bl()
13681366 let gB = be
1369- let hu = valueOrErrorMessage(addressFromString(ht[C]), "Wr st addr")
1367+ let ht = valueOrErrorMessage(addressFromString(hs[C]), "Wr st addr")
13701368 let eO = eH(toBigInt(0), toBigInt(0), toBigInt(0))
1371- let hv = invoke(hu, "unstake", [toBase58String(gB), co], nil)
1372- if ((hv == hv))
1369+ let hu = invoke(ht, "unstake", [toBase58String(gB), co], nil)
1370+ if ((hu == hu))
13731371 then {
13741372 let dk = cq(toBase58String(dV.transactionId), toBase58String(gB), co, dV.caller)
13751373 let cM = dk._1
13761374 let cN = dk._2
13771375 let cA = parseIntValue(dk._9)
13781376 let cO = dk._10
1379- let hw = if (if (aO())
1377+ let hv = if (if (aO())
13801378 then true
13811379 else (cA == s))
13821380 then throw(("Blocked: " + toString(cA)))
13831381 else true
1384- if ((hw == hw))
1382+ if ((hv == hv))
13851383 then {
1386- let hx = invoke(aM, "burn", [co], [AttachedPayment(gB, co)])
1387- if ((hx == hx))
1384+ let hw = invoke(aM, "burn", [co], [AttachedPayment(gB, co)])
1385+ if ((hw == hw))
13881386 then {
1389- let hy = eP(-(cM), -(cN), 0)
1390- let gg = hy._1
1391- let eG = hy._2
1387+ let hx = eP(-(cM), -(cN), 0)
1388+ let gg = hx._1
1389+ let eG = hx._2
13921390 let gh = eT(eO, eG)
13931391 if ((gh == gh))
13941392 then (cO ++ gg)
13951393 else throw("Strict value is not equal to itself.")
13961394 }
13971395 else throw("Strict value is not equal to itself.")
13981396 }
13991397 else throw("Strict value is not equal to itself.")
14001398 }
14011399 else throw("Strict value is not equal to itself.")
14021400 }
14031401 else throw("Strict value is not equal to itself.")
14041402 }
14051403
14061404
14071405
14081406 @Callable(dV)
1409-func unstakeAndGetNoLess (hz,hA,hk) = {
1407+func unstakeAndGetNoLess (hy,hz,hk) = {
14101408 let gV = if (aO())
14111409 then true
14121410 else (bd == s)
14131411 let gN = [if (!(gV))
14141412 then true
14151413 else throw("get operation is blocked by admin"), if ((size(dV.payments) == 0))
14161414 then true
14171415 else throw("no payments are expected")]
14181416 if ((gN == gN))
14191417 then {
14201418 let eO = eH(toBigInt(0), toBigInt(0), toBigInt(0))
1421- let hv = invoke(bn, "unstake", [toBase58String(be), hz], nil)
1422- if ((hv == hv))
1419+ let hu = invoke(bn, "unstake", [toBase58String(be), hy], nil)
1420+ if ((hu == hu))
14231421 then {
1424- let hB = cq(toBase58String(dV.transactionId), toBase58String(be), hz, dV.caller)
1425- let cM = hB._1
1426- let cN = hB._2
1427- let cO = hB._10
1428- let hC = [if ((cM >= hA))
1422+ let hA = cq(toBase58String(dV.transactionId), toBase58String(be), hy, dV.caller)
1423+ let cM = hA._1
1424+ let cN = hA._2
1425+ let cO = hA._10
1426+ let hB = [if ((cM >= hz))
14291427 then true
1430- else throw(makeString(["amount asset amount to receive is less than ", toString(hA)], "")), if ((cN >= hk))
1428+ else throw(makeString(["amount asset amount to receive is less than ", toString(hz)], "")), if ((cN >= hk))
14311429 then true
14321430 else throw(makeString(["price asset amount to receive is less than ", toString(hk)], ""))]
1433- if ((hC == hC))
1431+ if ((hB == hB))
14341432 then {
1435- let hp = invoke(aM, "burn", [hz], [AttachedPayment(be, hz)])
1433+ let hp = invoke(aM, "burn", [hy], [AttachedPayment(be, hy)])
14361434 if ((hp == hp))
14371435 then {
1438- let hD = eP(-(cM), -(cN), 0)
1439- let gg = hD._1
1440- let eG = hD._2
1436+ let hC = eP(-(cM), -(cN), 0)
1437+ let gg = hC._1
1438+ let eG = hC._2
14411439 let gh = eT(eO, eG)
14421440 if ((gh == gh))
14431441 then (cO ++ gg)
14441442 else throw("Strict value is not equal to itself.")
14451443 }
14461444 else throw("Strict value is not equal to itself.")
14471445 }
14481446 else throw("Strict value is not equal to itself.")
14491447 }
14501448 else throw("Strict value is not equal to itself.")
14511449 }
14521450 else throw("Strict value is not equal to itself.")
14531451 }
14541452
14551453
14561454
14571455 @Callable(dV)
1458-func unstakeAndGetOneTknV2 (hz,fI,fJ) = {
1456+func unstakeAndGetOneTknV2 (hy,fI,fJ) = {
14591457 let gL = {
14601458 let fR = invoke(aM, "isPoolOneTokenOperationsDisabledREADONLY", [toString(this)], nil)
14611459 if ($isInstanceOf(fR, "Boolean"))
14621460 then fR
14631461 else throw(($getType(fR) + " couldn't be cast to Boolean"))
14641462 }
14651463 let gV = if (if (aO())
14661464 then true
14671465 else (bd == s))
14681466 then true
14691467 else gL
14701468 let gN = [if (if (!(gV))
14711469 then true
14721470 else gm(dV))
14731471 then true
14741472 else aJ("get operation is blocked by admin"), if ((size(dV.payments) == 0))
14751473 then true
14761474 else aJ("no payments are expected")]
14771475 if ((gN == gN))
14781476 then {
1479- let ht = bl()
1477+ let hs = bl()
14801478 let gB = be
1481- let hu = valueOrErrorMessage(addressFromString(ht[C]), "Wr st addr")
1482- let hv = invoke(hu, "unstake", [toBase58String(gB), hz], nil)
1483- if ((hv == hv))
1479+ let ht = valueOrErrorMessage(addressFromString(hs[C]), "Wr st addr")
1480+ let hu = invoke(ht, "unstake", [toBase58String(gB), hy], nil)
1481+ if ((hu == hu))
14841482 then {
1485- let hE = fH(fI, fJ, [AttachedPayment(gB, hz)], dV.caller, dV.originCaller, dV.transactionId)
1486- let cO = hE._1
1487- let fT = hE._2
1483+ let hD = fH(fI, fJ, [AttachedPayment(gB, hy)], dV.caller, dV.originCaller, dV.transactionId)
1484+ let cO = hD._1
1485+ let fT = hD._2
14881486 $Tuple2(cO, fT)
14891487 }
14901488 else throw("Strict value is not equal to itself.")
14911489 }
14921490 else throw("Strict value is not equal to itself.")
14931491 }
14941492
14951493
14961494
14971495 @Callable(dV)
1498-func putOneTknV2WithBonusREADONLY (hF,hG) = {
1499- let hH = fl(hF, hG, "", "", true)
1496+func putOneTknV2WithBonusREADONLY (hE,hF) = {
1497+ let hG = fl(hE, hF, "", "", true)
1498+ let fB = hG._1
1499+ let cO = hG._2
1500+ let cp = hG._3
1501+ let fG = hG._4
1502+ $Tuple2(nil, $Tuple3(fB, cp, fG))
1503+ }
1504+
1505+
1506+
1507+@Callable(dV)
1508+func putOneTknV2WithoutTakeFeeREADONLY (hE,hF) = {
1509+ let hH = fl(hE, hF, "", "", false)
15001510 let fB = hH._1
15011511 let cO = hH._2
15021512 let cp = hH._3
15031513 let fG = hH._4
15041514 $Tuple2(nil, $Tuple3(fB, cp, fG))
15051515 }
15061516
15071517
15081518
15091519 @Callable(dV)
1510-func putOneTknV2WithoutTakeFeeREADONLY (hF,hG) = {
1511- let hI = fl(hF, hG, "", "", false)
1512- let fB = hI._1
1513- let cO = hI._2
1514- let cp = hI._3
1515- let fG = hI._4
1516- $Tuple2(nil, $Tuple3(fB, cp, fG))
1517- }
1520+func activate (hI,hJ) = if ((toString(dV.caller) != toString(aM)))
1521+ then throw("denied")
1522+ else $Tuple2([StringEntry(ag(), hI), StringEntry(ah(), hJ)], "success")
15181523
15191524
15201525
15211526 @Callable(dV)
1522-func activate (hJ,hK) = if ((toString(dV.caller) != toString(aM)))
1523- then throw("denied")
1524- else $Tuple2([StringEntry(ag(), hJ), StringEntry(ah(), hK)], "success")
1527+func setS (hK,hv) = if ((toString(dV.caller) != aF(this, aj())))
1528+ then gl
1529+ else [StringEntry(hK, hv)]
15251530
15261531
15271532
15281533 @Callable(dV)
1529-func setS (hL,hw) = if ((toString(dV.caller) != aF(this, aj())))
1534+func setI (hK,hv) = if ((toString(dV.caller) != aF(this, aj())))
15301535 then gl
1531- else [StringEntry(hL, hw)]
1532-
1533-
1534-
1535-@Callable(dV)
1536-func setI (hL,hw) = if ((toString(dV.caller) != aF(this, aj())))
1537- then gl
1538- else [IntegerEntry(hL, hw)]
1536+ else [IntegerEntry(hK, hv)]
15391537
15401538
15411539
15421540 @Callable(dV)
15431541 func getPoolConfigWrapperREADONLY () = $Tuple2(nil, aR())
15441542
15451543
15461544
15471545 @Callable(dV)
15481546 func getAccBalanceWrapperREADONLY (bH) = $Tuple2(nil, bG(bH))
15491547
15501548
15511549
15521550 @Callable(dV)
15531551 func calcPricesWrapperREADONLY (bZ,ca,ce) = {
1554- let hM = cd(bZ, ca, ce)
1555- $Tuple2(nil, [toString(hM[0]), toString(hM[1]), toString(hM[2])])
1552+ let hL = cd(bZ, ca, ce)
1553+ $Tuple2(nil, [toString(hL[0]), toString(hL[1]), toString(hL[2])])
15561554 }
15571555
15581556
15591557
15601558 @Callable(dV)
1561-func fromX18WrapperREADONLY (L,hN) = $Tuple2(nil, K(parseBigIntValue(L), hN))
1559+func fromX18WrapperREADONLY (L,hM) = $Tuple2(nil, K(parseBigIntValue(L), hM))
15621560
15631561
15641562
15651563 @Callable(dV)
15661564 func toX18WrapperREADONLY (I,J) = $Tuple2(nil, toString(H(I, J)))
15671565
15681566
15691567
15701568 @Callable(dV)
15711569 func calcPriceBigIntWrapperREADONLY (bJ,bK) = $Tuple2(nil, toString(bI(parseBigIntValue(bJ), parseBigIntValue(bK))))
15721570
15731571
15741572
15751573 @Callable(dV)
1576-func estimatePutOperationWrapperREADONLY (cr,bO,cQ,cR,cS,cT,hO,cU,cV) = $Tuple2(nil, cP(cr, bO, cQ, cR, cS, cT, hO, cU, cV, true, false, 0, ""))
1574+func estimatePutOperationWrapperREADONLY (cr,bO,cQ,cR,cS,cT,hN,cU,cV) = $Tuple2(nil, cP(cr, bO, cQ, cR, cS, cT, hN, cU, cV, true, false, 0, ""))
15771575
15781576
15791577
15801578 @Callable(dV)
1581-func estimateGetOperationWrapperREADONLY (cr,hP,ct,hO) = {
1582- let dk = cq(cr, hP, ct, addressFromStringValue(hO))
1579+func estimateGetOperationWrapperREADONLY (cr,hO,ct,hN) = {
1580+ let dk = cq(cr, hO, ct, addressFromStringValue(hN))
15831581 $Tuple2(nil, $Tuple10(dk._1, dk._2, dk._3, dk._4, dk._5, dk._6, dk._7, toString(dk._8), dk._9, dk._10))
15841582 }
15851583
15861584
15871585
15881586 @Callable(dV)
15891587 func getFeeREADONLY () = $Tuple2(nil, al)
15901588
15911589
1592-@Verifier(hQ)
1593-func hR () = {
1594- let hS = {
1590+@Verifier(hP)
1591+func hQ () = {
1592+ let hR = {
15951593 let gj = gi()
15961594 if ($isInstanceOf(gj, "ByteVector"))
15971595 then {
15981596 let gn = gj
15991597 gn
16001598 }
16011599 else if ($isInstanceOf(gj, "Unit"))
1602- then hQ.senderPublicKey
1600+ then hP.senderPublicKey
16031601 else throw("Match error")
16041602 }
1605- let gj = hQ
1603+ let gj = hP
16061604 if ($isInstanceOf(gj, "Order"))
16071605 then {
16081606 let eW = gj
1609- let hT = aP()
1610- let hU = eV(eW)
1611- let hV = sigVerify(eW.bodyBytes, eW.proofs[0], eW.senderPublicKey)
1612- let hW = sigVerify(eW.bodyBytes, eW.proofs[1], hT)
1613- if (if (if (hU)
1607+ let hS = aP()
1608+ let hT = eV(eW)
1609+ let hU = sigVerify(eW.bodyBytes, eW.proofs[0], eW.senderPublicKey)
1610+ let hV = sigVerify(eW.bodyBytes, eW.proofs[1], hS)
1611+ if (if (if (hT)
1612+ then hU
1613+ else false)
16141614 then hV
16151615 else false)
1616- then hW
1617- else false)
16181616 then true
1619- else aB(hU, hV, hW)
1617+ else aB(hT, hU, hV)
16201618 }
16211619 else if ($isInstanceOf(gj, "SetScriptTransaction"))
16221620 then {
16231621 let dI = gj
1624- let hX = blake2b256(value(dI.script))
1625- let hY = fromBase64String(value(getString(aM, az())))
1626- let hZ = scriptHash(this)
1627- if (if ((hY == hX))
1628- then (hZ != hX)
1622+ let hW = blake2b256(value(dI.script))
1623+ let hX = fromBase64String(value(getString(aM, az())))
1624+ let hY = scriptHash(this)
1625+ if (if ((hX == hW))
1626+ then (hY != hW)
16291627 else false)
16301628 then true
1631- else sigVerify(hQ.bodyBytes, hQ.proofs[0], hS)
1629+ else sigVerify(hP.bodyBytes, hP.proofs[0], hR)
16321630 }
1633- else sigVerify(hQ.bodyBytes, hQ.proofs[0], hS)
1631+ else sigVerify(hP.bodyBytes, hP.proofs[0], hR)
16341632 }
16351633

github/deemru/w8io/169f3d6 
184.48 ms