tx · F5mSiGtVPyFn5F3xTBQzSVPrfYMVFJAtxwnM4GaisD1s

3MtP3m8hWMxYcyDxXB6n299KrsLLyT8ehni:  -0.03700000 Waves

2023.01.19 13:26 [2411690] smart account 3MtP3m8hWMxYcyDxXB6n299KrsLLyT8ehni > SELF 0.00000000 Waves

{ "type": 13, "id": "F5mSiGtVPyFn5F3xTBQzSVPrfYMVFJAtxwnM4GaisD1s", "fee": 3700000, "feeAssetId": null, "timestamp": 1674124017693, "version": 1, "sender": "3MtP3m8hWMxYcyDxXB6n299KrsLLyT8ehni", "senderPublicKey": "BRyVaCURUMe7ssUbXucteig1g44bGwWirJQzugKahUQ1", "proofs": [ "4JmqGQxRrq4WonauZxEcGJcdpjWXUcbouaGgR3F5GVuyrBdcvmCEL9oFcDw2V2ZKzwZtAwhwXsDw5L4jcttGC4kP" ], "script": "base64:BgKwKQgCEgMKAQgSAwoBCBIAEgQKAgEEEgQKAgEEEgMKAQESABIECgIIARIAEgQKAggBEgQKAggBEgQKAgEBEgMKAQESBQoDAQEBEgUKAwEIARIECgIBCBIECgIBCBIECgIICBIECgIICBIECgIIARIAEgMKAQgSBQoDAQEBEgQKAggBEgQKAgEBEgQKAggIEgsKCQgBAQIBAggEBBIGCgQICAEIIgZzY2FsZTgiDHNjYWxlOEJpZ0ludCIHc2NhbGUxOCIKemVyb0JpZ0ludCIEYmlnMCIEYmlnMSIEYmlnMiIEYmlnMyIEYmlnNCIKc2xpcHBhZ2U0RCILd2F2ZXNTdHJpbmciBUFtdWx0IgVEY29udiIDU0VQIgVFTVBUWSIKUG9vbEFjdGl2ZSIKUG9vbFB1dERpcyIOUG9vbE1hdGNoZXJEaXMiDFBvb2xTaHV0ZG93biIOaWR4UG9vbEFkZHJlc3MiCWlkeFBvb2xTdCIJaWR4TFBBc0lkIglpZHhBbUFzSWQiCWlkeFByQXNJZCILaWR4QW10QXNEY20iDWlkeFByaWNlQXNEY20iC2lkeElBbXRBc0lkIg1pZHhJUHJpY2VBc0lkIg9pZHhGYWN0U3Rha0NudHIiEmlkeEZhY3RvcnlSZXN0Q250ciIQaWR4RmFjdFNsaXBwQ250ciIRaWR4RmFjdEd3eFJld0NudHIiCmZlZURlZmF1bHQiAnQxIgdvcmlnVmFsIg1vcmlnU2NhbGVNdWx0IgJmMSIDdmFsIg9yZXN1bHRTY2FsZU11bHQiDGZyb21YMThSb3VuZCIFcm91bmQiAnQyIgJmMiICdHMiA2FtdCIIcmVzU2NhbGUiCGN1clNjYWxlIgNhYnMiCWFic0JpZ0ludCICZmMiA21wayIEcG1wayICcGwiAnBoIgFoIgF0IgNwYXUiAnVhIgR0eElkIgNnYXUiAmFhIgJwYSIDYW1wIgNhZGEiBmtleUZlZSIDZmVlIgZrZXlETHAiFWtleURMcFJlZnJlc2hlZEhlaWdodCISa2V5RExwUmVmcmVzaERlbGF5IhZkTHBSZWZyZXNoRGVsYXlEZWZhdWx0Ig9kTHBSZWZyZXNoRGVsYXkiBGZjZmciBG10cGsiAnBjIgZpQW10QXMiBWlQckFzIgNtYmEiBWJBU3RyIgNhcHMiHGtleUFsbG93ZWRMcFN0YWJsZVNjcmlwdEhhc2giFmtleUZlZUNvbGxlY3RvckFkZHJlc3MiA3RvZSIDb3JWIgZzZW5kclYiBm1hdGNoViIEc3RyZiIEYWRkciIDa2V5IgRpbnRmIgh0aHJvd0VyciIDbXNnIgZmbXRFcnIiA2ZjYSIFaW5GZWUiAUAiBm91dEZlZSIBQSIDaWdzIgJtcCITZmVlQ29sbGVjdG9yQWRkcmVzcyIDZ3BjIgVhbXRBcyIHcHJpY2VBcyIIaVByaWNlQXMiDHBhcnNlQXNzZXRJZCIFaW5wdXQiD2Fzc2V0SWRUb1N0cmluZyIPcGFyc2VQb29sQ29uZmlnIgpwb29sQ29uZmlnIhBwb29sQ29uZmlnUGFyc2VkIgskdDA3NzQyNzk3MSIOY2ZnUG9vbEFkZHJlc3MiDWNmZ1Bvb2xTdGF0dXMiDGNmZ0xwQXNzZXRJZCIQY2ZnQW1vdW50QXNzZXRJZCIPY2ZnUHJpY2VBc3NldElkIhZjZmdBbW91bnRBc3NldERlY2ltYWxzIhVjZmdQcmljZUFzc2V0RGVjaW1hbHMiEmNmZ0luQW1vdW50QXNzZWRJZCIRY2ZnSW5QcmljZUFzc2V0SWQiA2dmYyINZmFjdG9yeUNvbmZpZyIPc3Rha2luZ0NvbnRyYWN0Ig9zbGlwYWdlQ29udHJhY3QiC2d3eENvbnRyYWN0IgxyZXN0Q29udHJhY3QiEWRhdGFQdXRBY3Rpb25JbmZvIg1pbkFtdEFzc2V0QW10Ig9pblByaWNlQXNzZXRBbXQiCG91dExwQW10IgVwcmljZSIKc2xpcEJ5VXNlciIMc2xpcHBhZ2VSZWFsIgh0eEhlaWdodCILdHhUaW1lc3RhbXAiDHNsaXBhZ2VBbUFtdCIMc2xpcGFnZVByQW10IhFkYXRhR2V0QWN0aW9uSW5mbyIOb3V0QW10QXNzZXRBbXQiEG91dFByaWNlQXNzZXRBbXQiB2luTHBBbXQiDWdldEFjY0JhbGFuY2UiB2Fzc2V0SWQiBGNwYmkiCHByQW10WDE4IghhbUFtdFgxOCIFY3BiaXIiA3ZhZCICQTEiAkEyIghzbGlwcGFnZSIEZGlmZiIEcGFzcyICdmQiAkQxIgJEMCIEc2xwZyIEZmFpbCIDcGNwIgphbUFzc2V0RGNtIgpwckFzc2V0RGNtIgVhbUFtdCIFcHJBbXQiC2FtdEFzQW10WDE4IgpwckFzQW10WDE4IgpjYWxjUHJpY2VzIgVscEFtdCIIYW10QXNEY20iB3ByQXNEY20iCHByaWNlWDE4IghscEFtdFgxOCINbHBQckluQW1Bc1gxOCINbHBQckluUHJBc1gxOCIPY2FsY3VsYXRlUHJpY2VzIgFwIgd0YWtlRmVlIgZhbW91bnQiCWZlZUFtb3VudCIDZWdvIgZ0eElkNTgiCnBtdEFzc2V0SWQiCHBtdExwQW10Igt1c2VyQWRkcmVzcyIEbHBJZCIEYW1JZCIEcHJJZCIFYW1EY20iBXByRGNtIgNzdHMiB2xwRW1pc3MiCWFtQmFsYW5jZSIMYW1CYWxhbmNlWDE4IglwckJhbGFuY2UiDHByQmFsYW5jZVgxOCILY3VyUHJpY2VYMTgiCGN1clByaWNlIgtwbXRMcEFtdFgxOCIKbHBFbWlzc1gxOCILb3V0QW1BbXRYMTgiC291dFByQW10WDE4IghvdXRBbUFtdCIIb3V0UHJBbXQiBXN0YXRlIgNlcG8iB2luQW1BbXQiBmluQW1JZCIHaW5QckFtdCIGaW5QcklkIgZpc0V2YWwiBmVtaXRMcCIKaXNPbmVBc3NldCIQdmFsaWRhdGVTbGlwcGFnZSIGcG10QW10IgVwbXRJZCIHYW1JZFN0ciIHcHJJZFN0ciIJaW5BbUlkU3RyIglpblBySWRTdHIiBmFtdERjbSIIcHJpY2VEY20iBGxwRW0iD2luQW1Bc3NldEFtdFgxOCIPaW5QckFzc2V0QW10WDE4Igx1c2VyUHJpY2VYMTgiAXIiC3NsaXBwYWdlWDE4Ig9zbGlwcGFnZVJlYWxYMTgiDWxwRW1pc3Npb25YMTgiCnByVmlhQW1YMTgiCmFtVmlhUHJYMTgiDGV4cGVjdGVkQW10cyIRZXhwQW10QXNzZXRBbXRYMTgiE2V4cFByaWNlQXNzZXRBbXRYMTgiCWNhbGNMcEFtdCIOY2FsY0FtQXNzZXRQbXQiDmNhbGNQckFzc2V0UG10IgxzbGlwcGFnZUNhbGMiCWVtaXRMcEFtdCIGYW1EaWZmIgZwckRpZmYiDSR0MDE4NjIxMTg5NjYiCndyaXRlQW1BbXQiCndyaXRlUHJBbXQiC2NvbW1vblN0YXRlIgRnZXREIgJ4cCIDeHAwIgN4cDEiAXMiAWEiA2FubiILeHAwX3hwMV9uX24iBWFubl9zIgVhbm5fMSIJY2FsY0ROZXh0IgFkIgJkZCIDZGRkIgJkcCIEY2FsYyIDYWNjIgFpIgVkTmV4dCIIZERpZmZSYXciBWREaWZmIgNhcnIiDSR0MDIwODkwMjA5MzgiAiRsIgIkcyIFJGFjYzAiBSRmMF8xIgIkYSICJGkiBSRmMF8yIgVmb3VuZCIHZ2V0RE9sZCIBbiIKYVByZWNpc2lvbiIQYW5uX3NfYVByZWNpc2lvbiIOYW5uX2FQcmVjaXNpb24iAm4xIgNjdXIiDSR0MDIxNTY3MjE1ODciDSR0MDIyMDA4MjIwNTUiBWdldFlEIgFEIgF4IgFjIgFiIg0kdDAyMjU1NTIyNTc1IgF5IgV5TmV4dCIFeURpZmYiDSR0MDIyODgyMjI5MjkiB2NhbGNETHAiDWFtb3VudEJhbGFuY2UiDHByaWNlQmFsYW5jZSIKbHBFbWlzc2lvbiIKdXBkYXRlZERMcCIOY2FsY0N1cnJlbnRETHAiEGFtb3VudEFzc2V0RGVsdGEiD3ByaWNlQXNzZXREZWx0YSIUbHBBc3NldEVtaXNzaW9uRGVsdGEiEmFtb3VudEFzc2V0QmFsYW5jZSIRcHJpY2VBc3NldEJhbGFuY2UiD2xwQXNzZXRFbWlzc2lvbiIKY3VycmVudERMcCIScmVmcmVzaERMcEludGVybmFsIhdhbW91bnRBc3NldEJhbGFuY2VEZWx0YSIWcHJpY2VBc3NldEJhbGFuY2VEZWx0YSIHYWN0aW9ucyISdmFsaWRhdGVVcGRhdGVkRExwIgZvbGRETHAiG3ZhbGlkYXRlTWF0Y2hlck9yZGVyQWxsb3dlZCIFb3JkZXIiEWFtb3VudEFzc2V0QW1vdW50IhBwcmljZUFzc2V0QW1vdW50Ig0kdDAyNDk1MjI1MTY0IgNkTHAiDSR0MDI1NDk0MjU1OTQiDXVudXNlZEFjdGlvbnMiBmRMcE5ldyIMaXNPcmRlclZhbGlkIgJjZyIDcG10IgJjcCIGY2FsbGVyIgdhbUFzUG10IgdwckFzUG10Ig1jYWxjUHV0T25lVGtuIglwbXRBbXRSYXciC3dpdGhUYWtlRmVlIg1jaGVjaEVtaXNzaW9uIg0kdDAyNzg2MDI4MzIyIgxhbUJhbGFuY2VPbGQiDHByQmFsYW5jZU9sZCINJHQwMjgzMjgyODUwNCILYW1BbW91bnRSYXciC3ByQW1vdW50UmF3Ig0kdDAyODUwODI4NzYyIghhbUFtb3VudCIIcHJBbW91bnQiDGFtQmFsYW5jZU5ldyIMcHJCYWxhbmNlTmV3IgZjaGVja0QiCGxwQW1vdW50Ig5wb29sUHJvcG9ydGlvbiIPYW1vdW50QXNzZXRQYXJ0Ig5wcmljZUFzc2V0UGFydCIJbHBBbXRCb3RoIgVib251cyITZ2V0T25lVGtuVjJJbnRlcm5hbCIKb3V0QXNzZXRJZCIMbWluT3V0QW1vdW50IghwYXltZW50cyIMb3JpZ2luQ2FsbGVyIg10cmFuc2FjdGlvbklkIgphbURlY2ltYWxzIgpwckRlY2ltYWxzIgpwb29sU3RhdHVzIg0kdDAzMDgxMjMwOTIzIgh0b3RhbEdldCILdG90YWxBbW91bnQiDSR0MDMxMTEzMzE0MjAiBW91dEFtIgVvdXRQciIIY3VyUHJYMTgiBWN1clByIhFvdXRBc3NldElkT3JXYXZlcyIQc2VuZEZlZVRvTWF0Y2hlciIEYnVybiINJHQwMzIyMDUzMjU1NSIQZmVlQW1vdW50Rm9yQ2FsYyIQb3V0SW5BbW91bnRBc3NldCINJHQwMzI1NTgzMjY2NiIRcmVmcmVzaERMcEFjdGlvbnMiEWlzVXBkYXRlZERMcFZhbGlkIgFtIgckbWF0Y2gwIgJwbSICcGQiCWlzTWFuYWdlciICcGsiAm1tIhdwZW5kaW5nTWFuYWdlclB1YmxpY0tleSICY20iA2hwbSIDY3BtIgRzbGlwIglhdXRvU3Rha2UiB2ZhY3RDZmciC3N0YWtpbmdDbnRyIghzbGlwQ250ciIKYW1Bc3NldFBtdCIKcHJBc3NldFBtdCIBZSIJbHBBc3NldElkIgJlbCIGbGVnYWN5IgJzYSICc3AiCGxwVHJuc2ZyIgJzcyINJHQwMzY4MTUzNjk1NyIFY2hlY2siFGxwQXNzZXRFbWlzc2lvbkFmdGVyIiBpc1Bvb2xPbmVUb2tlbk9wZXJhdGlvbnNEaXNhYmxlZCINaXNQdXREaXNhYmxlZCIGY2hlY2tzIg0kdDAzODU5ODM4NzU2Igdlc3RpbUxQIg0kdDAzOTU3MTM5OTIwIhRwYXltZW50SW5BbW91bnRBc3NldCINJHQwMzk5MjM0MDAzMSIHbWF4U2xwZyIGZXN0UHV0Ig0kdDA0MTA2MTQxMTI2IglvdXRBbXRBbXQiDSR0MDQyMjk5NDIzODEiDWlzR2V0RGlzYWJsZWQiDSR0MDQyOTk5NDMxNTQiGGxhc3RSZWZyZXNoZWRCbG9ja0hlaWdodCIdY2hlY2tMYXN0UmVmcmVzaGVkQmxvY2tIZWlnaHQiDSR0MDQzNjc4NDM3NDIiEGRMcFVwZGF0ZUFjdGlvbnMiDWxwQXNzZXRBbW91bnQiBWluZGV4IgRuZXdZIgJkeSILdG90YWxHZXRSYXciDSR0MDQ0NjcyNDQ3MjciDSR0MDQ1MTAyNDUyMTciDnN1bU9mR2V0QXNzZXRzIhJub0xlc3NUaGVuQW10QXNzZXQiFG5vTGVzc1RoZW5QcmljZUFzc2V0IhRidXJuTFBBc3NldE9uRmFjdG9yeSINJHQwNDYzODM0NjQ2NCINY2hlY2tQYXltZW50cyIKZmFjdG9yeUNmZyIHc3Rha2luZyIKdW5zdGFrZUludiIBdiIFYnVybkEiDSR0MDQ3NDkxNDc1NzIiDXVuc3Rha2VBbW91bnQiFW5vTGVzc1RoZW5BbW91bnRBc3NldCIDcmVzIgxjaGVja0Ftb3VudHMiDSR0MDQ4ODIzNDg5MDQiDSR0MDQ5Nzk5NDk5ODciEHBheW1lbnRBbW91bnRSYXciDnBheW1lbnRBc3NldElkIg0kdDA1MDExNTUwMjE4Ig0kdDA1MDM2NjUwNDcwIghhbXRBc1N0ciIHcHJBc1N0ciIBayICcHIiDHJlc1NjYWxlTXVsdCIHdXNyQWRkciIHcG10QXNJZCICdHgiBnZlcmlmeSIPdGFyZ2V0UHVibGljS2V5IgptYXRjaGVyUHViIgpvcmRlclZhbGlkIgtzZW5kZXJWYWxpZCIMbWF0Y2hlclZhbGlkIgduZXdIYXNoIgthbGxvd2VkSGFzaCILY3VycmVudEhhc2iBAQABYQCAwtcvAAFiCQC2AgEAgMLXLwABYwkAtgIBAICAkLu61q3wDQABZAkAtgIBAAAAAWUJALYCAQAAAAFmCQC2AgEAAQABZwkAtgIBAAIAAWgJALYCAQADAAFpCQC2AgEABAABagkAtgIBCQBlAgUBYQkAaQIJAGgCBQFhAAEFAWEAAWsCBVdBVkVTAAFsAgMxMDAAAW0CATEAAW4CAl9fAAFvAgAAAXAAAQABcQACAAFyAAMAAXMABAABdAABAAF1AAIAAXYAAwABdwAEAAF4AAUAAXkABgABegAHAAFBAAgAAUIACQABQwABAAFEAAYAAUUABwABRgAKAAFHCQBrAwAKBQFhAJBOAQFIAgFJAUoJALwCAwkAtgIBBQFJBQFjCQC2AgEFAUoBAUsCAUwBTQkAoAMBCQC8AgMFAUwJALYCAQUBTQUBYwEBTgMBTAFNAU8JAKADAQkAvQIEBQFMCQC2AgEFAU0FAWMFAU8BAVACAUkBSgkAvAIDBQFJBQFjCQC2AgEFAUoBAVECAUwBTQkAvAIDBQFMCQC2AgEFAU0FAWMBAVIDAVMBVAFVCQBrAwUBUwUBVAUBVQEBVgEBTAMJAL8CAgUBZAUBTAkAvgIBBQFMBQFMAQFXAQFMAwkAvwICBQFkBQFMCQC+AgEFAUwFAUwBAVgAAhMlc19fZmFjdG9yeUNvbnRyYWN0AQFZAAIUJXNfX21hbmFnZXJQdWJsaWNLZXkBAVoAAhslc19fcGVuZGluZ01hbmFnZXJQdWJsaWNLZXkBAmFhAAIRJXMlc19fcHJpY2VfX2xhc3QBAmFiAgJhYwJhZAkAuQkCCQDMCAICGCVzJXMlZCVkX19wcmljZV9faGlzdG9yeQkAzAgCCQCkAwEFAmFjCQDMCAIJAKQDAQUCYWQFA25pbAUBbgECYWUCAmFmAmFnCQCsAgIJAKwCAgkArAICAgslcyVzJXNfX1BfXwUCYWYCAl9fBQJhZwECYWgCAmFmAmFnCQCsAgIJAKwCAgkArAICAgslcyVzJXNfX0dfXwUCYWYCAl9fBQJhZwECYWkAAg8lc19fYW1vdW50QXNzZXQBAmFqAAIOJXNfX3ByaWNlQXNzZXQBAmFrAAIHJXNfX2FtcAECYWwAAg0lc19fYWRkb25BZGRyAAJhbQIHJXNfX2ZlZQACYW4JAQt2YWx1ZU9yRWxzZQIJAJoIAgUEdGhpcwUCYW0FAUcAAmFvCQC5CQIJAMwIAgICJXMJAMwIAgIDZExwBQNuaWwFAW4AAmFwCQC5CQIJAMwIAgICJXMJAMwIAgISZExwUmVmcmVzaGVkSGVpZ2h0BQNuaWwFAW4AAmFxCQC5CQIJAMwIAgICJXMJAMwIAgIPcmVmcmVzaERMcERlbGF5BQNuaWwFAW4AAmFyAAEAAmFzCQELdmFsdWVPckVsc2UCCQCaCAIFBHRoaXMFAmFxBQJhcgECYXQAAhElc19fZmFjdG9yeUNvbmZpZwECYXUAAhglcyVzX19tYXRjaGVyX19wdWJsaWNLZXkBAmF2AgJhdwJheAkArAICCQCsAgIJAKwCAgkArAICAgglZCVkJXNfXwUCYXcCAl9fBQJheAIIX19jb25maWcBAmF5AQJhegkArAICAiglcyVzJXNfX21hcHBpbmdzX19iYXNlQXNzZXQyaW50ZXJuYWxJZF9fBQJhegECYUEAAgwlc19fc2h1dGRvd24BAmFCAAIdJXNfX2FsbG93ZWRMcFN0YWJsZVNjcmlwdEhhc2gBAmFDAAIXJXNfX2ZlZUNvbGxlY3RvckFkZHJlc3MBAmFEAwJhRQJhRgJhRwkAAgEJAKwCAgkArAICCQCsAgIJAKwCAgkArAICAhFGYWlsZWQ6IG9yZFZhbGlkPQkApQMBBQJhRQILIHNuZHJWYWxpZD0JAKUDAQUCYUYCDCBtdGNoclZhbGlkPQkApQMBBQJhRwECYUgCAmFJAmFKCQETdmFsdWVPckVycm9yTWVzc2FnZQIJAJ0IAgUCYUkFAmFKCQC5CQIJAMwIAgIKbWFuZGF0b3J5IAkAzAgCCQClCAEFAmFJCQDMCAICAS4JAMwIAgUCYUoJAMwIAgIMIG5vdCBkZWZpbmVkBQNuaWwCAAECYUsCAmFJAmFKCQETdmFsdWVPckVycm9yTWVzc2FnZQIJAJoIAgUCYUkFAmFKCQC5CQIJAMwIAgIKbWFuZGF0b3J5IAkAzAgCCQClCAEFAmFJCQDMCAICAS4JAMwIAgUCYUoJAMwIAgIMIG5vdCBkZWZpbmVkBQNuaWwCAAECYUwBAmFNCQACAQkAuQkCCQDMCAICD2xwX3N0YWJsZS5yaWRlOgkAzAgCBQJhTQUDbmlsAgEgAQJhTgECYU0JALkJAgkAzAgCAg9scF9zdGFibGUucmlkZToJAMwIAgUCYU0FA25pbAIBIAACYU8JARFAZXh0ck5hdGl2ZSgxMDYyKQEJAQJhSAIFBHRoaXMJAQFYAAACYVAKAAJhUQkA/AcEBQJhTwIQZ2V0SW5GZWVSRUFET05MWQkAzAgCCQClCAEFBHRoaXMFA25pbAUDbmlsAwkAAQIFAmFRAgNJbnQFAmFRCQACAQkArAICCQADAQUCYVECGCBjb3VsZG4ndCBiZSBjYXN0IHRvIEludAACYVIKAAJhUQkA/AcEBQJhTwIRZ2V0T3V0RmVlUkVBRE9OTFkJAMwIAgkApQgBBQR0aGlzBQNuaWwFA25pbAMJAAECBQJhUQIDSW50BQJhUQkAAgEJAKwCAgkAAwEFAmFRAhggY291bGRuJ3QgYmUgY2FzdCB0byBJbnQAAmFTCQECYUgCBQR0aGlzCQECYWsAAQJhVAAJAQt2YWx1ZU9yRWxzZQIJAJsIAgUCYU8JAQJhQQAHAQJhVQAJANkEAQkBAmFIAgUCYU8JAQJhdQAAAmFWCQERQGV4dHJOYXRpdmUoMTA2MikBCQECYUgCBQJhTwkBAmFDAAECYVcABAJhWAkBAmFIAgUEdGhpcwkBAmFpAAQCYVkJAQJhSAIFBHRoaXMJAQJhagAEAmFaCQECYUsCBQJhTwkBAmF5AQUCYVkEAmF3CQECYUsCBQJhTwkBAmF5AQUCYVgJALUJAgkBAmFIAgUCYU8JAQJhdgIJAKQDAQUCYXcJAKQDAQUCYVoFAW4BAmJhAQJiYgMJAAACBQJiYgUBawUEdW5pdAkA2QQBBQJiYgECYmMBAmJiAwkAAAIFAmJiBQR1bml0BQFrCQDYBAEJAQV2YWx1ZQEFAmJiAQJiZAECYmUJAJsKCQkBEUBleHRyTmF0aXZlKDEwNjIpAQkAkQMCBQJiZQUBdAkBDXBhcnNlSW50VmFsdWUBCQCRAwIFAmJlBQF1CQDZBAEJAJEDAgUCYmUFAXYJAQJiYQEJAJEDAgUCYmUFAXcJAQJiYQEJAJEDAgUCYmUFAXgJAQ1wYXJzZUludFZhbHVlAQkAkQMCBQJiZQUBeQkBDXBhcnNlSW50VmFsdWUBCQCRAwIFAmJlBQF6CQDZBAEJAJEDAgUCYmUFAUEJANkEAQkAkQMCBQJiZQUBQgACYmYJAQJiZAEJAQJhVwAAAmJnBQJiZgACYmgIBQJiZwJfMQACYmkIBQJiZwJfMgACYmoIBQJiZwJfMwACYmsIBQJiZwJfNAACYmwIBQJiZwJfNQACYm0IBQJiZwJfNgACYm4IBQJiZwJfNwACYm8IBQJiZwJfOAACYnAIBQJiZwJfOQECYnEACQC1CQIJAQJhSAIFAmFPCQECYXQABQFuAAJicgkBAmJxAAACYnMJARN2YWx1ZU9yRXJyb3JNZXNzYWdlAgkApggBCQCRAwIFAmJyBQFDAiBJbnZhbGlkIHN0YWtpbmcgY29udHJhY3QgYWRkcmVzcwACYnQJARN2YWx1ZU9yRXJyb3JNZXNzYWdlAgkApggBCQCRAwIFAmJyBQFFAiBJbnZhbGlkIHNsaXBhZ2UgY29udHJhY3QgYWRkcmVzcwACYnUJARN2YWx1ZU9yRXJyb3JNZXNzYWdlAgkApggBCQCRAwIFAmJyBQFGAhxJbnZhbGlkIGd3eCBjb250cmFjdCBhZGRyZXNzAAJidgkBE3ZhbHVlT3JFcnJvck1lc3NhZ2UCCQCmCAEJAJEDAgUCYnIFAUQCHEludmFsaWQgZ3d4IGNvbnRyYWN0IGFkZHJlc3MBAmJ3CgJieAJieQJiegJiQQJiQgJiQwJiRAJiRQJiRgJiRwkAuQkCCQDMCAICFCVkJWQlZCVkJWQlZCVkJWQlZCVkCQDMCAIJAKQDAQUCYngJAMwIAgkApAMBBQJieQkAzAgCCQCkAwEFAmJ6CQDMCAIJAKQDAQUCYkEJAMwIAgkApAMBBQJiQgkAzAgCCQCkAwEFAmJDCQDMCAIJAKQDAQUCYkQJAMwIAgkApAMBBQJiRQkAzAgCCQCkAwEFAmJGCQDMCAIJAKQDAQUCYkcFA25pbAUBbgECYkgGAmJJAmJKAmJLAmJBAmJEAmJFCQC5CQIJAMwIAgIMJWQlZCVkJWQlZCVkCQDMCAIJAKQDAQUCYkkJAMwIAgkApAMBBQJiSgkAzAgCCQCkAwEFAmJLCQDMCAIJAKQDAQUCYkEJAMwIAgkApAMBBQJiRAkAzAgCCQCkAwEFAmJFBQNuaWwFAW4BAmJMAQJiTQMJAAACBQJiTQIFV0FWRVMICQDvBwEFBHRoaXMJYXZhaWxhYmxlCQDwBwIFBHRoaXMJANkEAQUCYk0BAmJOAgJiTwJiUAkAvAIDBQJiTwUBYwUCYlABAmJRAwJiTwJiUAFPCQC9AgQFAmJPBQFjBQJiUAUBTwECYlIDAmJTAmJUAmJVBAJiVgkAvAIDCQC4AgIFAmJTBQJiVAUBYgUCYlQEAmJXCQC/AgIJALgCAgUCYlUJAQFWAQUCYlYFAWQDCQEBIQEFAmJXCQACAQkArAICAgpCaWcgc2xwZzogCQCmAwEFAmJWCQCUCgIFAmJXCQCZAwEJAMwIAgUCYlMJAMwIAgUCYlQFA25pbAECYlgDAmJZAmJaAmNhBAJiVgkAvAIDBQJiWgUBYgUCYlkEAmNiCQC/AgIFAmNhBQJiVgMDBQJjYgYJAL8CAgUCYloFAmJZCQACAQkArAICCQCsAgIJAKwCAgkArAICCQCsAgIJAKwCAgkApgMBBQJiWgIBIAkApgMBBQJiWQIBIAkApgMBBQJiVgIBIAkApgMBBQJjYQUCY2IBAmNjBAJjZAJjZQJjZgJjZwQCY2gJAQFIAgUCY2YFAmNkBAJjaQkBAUgCBQJjZwUCY2UJAQJiTgIFAmNpBQJjaAECY2oDAmNmAmNnAmNrBAJjbAUCYm0EAmNtBQJibgQCY24JAQJjYwQFAmNsBQJjbQUCY2YFAmNnBAJiUAkBAUgCBQJjZgUCY2wEAmJPCQEBSAIFAmNnBQJjbQQCY28JAQFIAgUCY2sFAWEEAmNwCQECYk4CBQJiUAUCY28EAmNxCQECYk4CBQJiTwUCY28JAMwIAgUCY24JAMwIAgUCY3AJAMwIAgUCY3EFA25pbAECY3IDAmNmAmNnAmNrBAJjcwkBAmNqAwUCY2YFAmNnBQJjawkAzAgCCQEBSwIJAJEDAgUCY3MAAAUBYQkAzAgCCQEBSwIJAJEDAgUCY3MAAQUBYQkAzAgCCQEBSwIJAJEDAgUCY3MAAgUBYQUDbmlsAQJjdAICY3UCYW4EAmN2AwkAAAIFAmFuAAAAAAkAawMFAmN1BQJhbgUBYQkAlAoCCQBlAgUCY3UFAmN2BQJjdgECY3cEAmN4AmN5AmN6AmNBBAJjQgUCYmoEAmNDCQDYBAEJAQV2YWx1ZQEFAmJrBAJjRAkA2AQBCQEFdmFsdWUBBQJibAQCY0UFAmJtBAJjRgUCYm4EAmNHCQCkAwEFAmJpBAJjSAgJARN2YWx1ZU9yRXJyb3JNZXNzYWdlAgkA7AcBBQJjQgILV3JvbmcgTFAgaWQIcXVhbnRpdHkDCQECIT0CCQDYBAEFAmNCBQJjeQkAAgECD1dyb25nIHBtdCBhc3NldAQCY0kJAQJiTAEFAmNDBAJjSgkBAUgCBQJjSQUCY0UEAmNLCQECYkwBBQJjRAQCY0wJAQFIAgUCY0sFAmNGBAJjTQkBAmJOAgUCY0wFAmNKBAJjTgkBAUsCBQJjTQUBYQQCY08JAQFIAgUCY3oFAWEEAmNQCQEBSAIFAmNIBQFhBAJjUQkAvAIDBQJjSgUCY08FAmNQBAJjUgkAvAIDBQJjTAUCY08FAmNQBAJjUwkBAU4DBQJjUQUCY0UFBUZMT09SBAJjVAkBAU4DBQJjUgUCY0YFBUZMT09SBAJjVQMJAAACBQJjeAIABQNuaWwJAMwIAgkBDlNjcmlwdFRyYW5zZmVyAwUCY0EFAmNTAwkAAAIFAmNDAgVXQVZFUwUEdW5pdAkA2QQBBQJjQwkAzAgCCQEOU2NyaXB0VHJhbnNmZXIDBQJjQQUCY1QDCQAAAgUCY0QCBVdBVkVTBQR1bml0CQDZBAEFAmNECQDMCAIJAQtTdHJpbmdFbnRyeQIJAQJhaAIJAKUIAQUCY0EFAmN4CQECYkgGBQJjUwUCY1QFAmN6BQJjTgUGaGVpZ2h0CAUJbGFzdEJsb2NrCXRpbWVzdGFtcAkAzAgCCQEMSW50ZWdlckVudHJ5AgkBAmFhAAUCY04JAMwIAgkBDEludGVnZXJFbnRyeQIJAQJhYgIFBmhlaWdodAgFCWxhc3RCbG9jawl0aW1lc3RhbXAFAmNOBQNuaWwJAJwKCgUCY1MFAmNUBQJjQwUCY0QFAmNJBQJjSwUCY0gFAmNNBQJjRwUCY1UBAmNWDQJjeAJiVQJjVwJjWAJjWQJjWgJjQQJkYQJkYgJkYwJkZAJkZQJkZgQCY0IFAmJqBAJkZwkA2AQBCQEFdmFsdWUBBQJiawQCZGgJANgEAQkBBXZhbHVlAQUCYmwEAmRpBQJibwQCZGoFAmJwBAJkawUCYm0EAmRsBQJibgQCY0cJAKQDAQUCYmkEAmRtCAkBE3ZhbHVlT3JFcnJvck1lc3NhZ2UCCQDsBwEFAmNCAghXciBscCBhcwhxdWFudGl0eQQCY0kDBQJkYQkBAmJMAQUCZGcDAwUCZGMJAAACBQJkZgUCZGcHCQBlAgkBAmJMAQUCZGcFAmRlAwUCZGMJAQJiTAEFAmRnCQBlAgkBAmJMAQUCZGcFAmNXBAJjSwMFAmRhCQECYkwBBQJkaAMDBQJkYwkAAAIFAmRmBQJkaAcJAGUCCQECYkwBBQJkaAUCZGUDBQJkYwkBAmJMAQUCZGgJAGUCCQECYkwBBQJkaAUCY1kEAmRuCQEBSAIFAmNXBQJkawQCZG8JAQFIAgUCY1kFAmRsBAJkcAkBAmJOAgUCZG8FAmRuBAJjSgkBAUgCBQJjSQUCZGsEAmNMCQEBSAIFAmNLBQJkbAQCZHEDCQAAAgUCZG0AAAQCY00FAWQEAmRyBQFkBAJjbwkAdgYJALkCAgUCZG4FAmRvAAAJALYCAQAFAAEAAAUERE9XTgkAlwoFCQEBSwIFAmNvBQFhCQEBSwIFAmRuBQJkawkBAUsCBQJkbwUCZGwJAQJiTgIJALcCAgUCY0wFAmRvCQC3AgIFAmNKBQJkbgUCZHIEAmNNCQECYk4CBQJjTAUCY0oEAmRzCQC8AgMJAQFWAQkAuAICBQJjTQUCZHAFAWMFAmNNBAJkcgkBAUgCBQJiVQUBYQMDAwUCZGQJAQIhPQIFAmNNBQFkBwkAvwICBQJkcwUCZHIHCQACAQkArAICCQCsAgIJAKwCAgIPUHJpY2Ugc2xpcHBhZ2UgCQCmAwEFAmRzAgMgPiAJAKYDAQUCZHIEAmR0CQEBSAIFAmRtBQFhBAJkdQkAvQIEBQJkbgkBAmJRAwUCY0wFAmNKBQdDRUlMSU5HBQFjBQdDRUlMSU5HBAJkdgkAvQIEBQJkbwUBYwkBAmJRAwUCY0wFAmNKBQVGTE9PUgUHQ0VJTElORwQCZHcDCQC/AgIFAmR1BQJkbwkAlAoCBQJkdgUCZG8JAJQKAgUCZG4FAmR1BAJkeAgFAmR3Al8xBAJkeQgFAmR3Al8yBAJjbwkAvQIEBQJkdAUCZHkFAmNMBQVGTE9PUgkAlwoFCQEBTgMFAmNvBQFhBQVGTE9PUgkBAU4DBQJkeAUCZGsFB0NFSUxJTkcJAQFOAwUCZHkFAmRsBQdDRUlMSU5HBQJjTQUCZHIEAmR6CAUCZHECXzEEAmRBCAUCZHECXzIEAmRCCAUCZHECXzMEAmNOCQEBSwIIBQJkcQJfNAUBYQQCZEMJAQFLAggFAmRxAl81BQFhAwkAZwIAAAUCZHoJAAIBAgdMUCA8PSAwBAJkRAMJAQEhAQUCZGIAAAUCZHoEAmRFCQBlAgUCY1cFAmRBBAJkRgkAZQIFAmNZBQJkQgQCZEcDAwUCZGMJAAACBQJkZgUCZGcHCQCUCgIFAmRlAAADAwUCZGMJAAACBQJkZgUCZGgHCQCUCgIAAAUCZGUJAJQKAgUCZEEFAmRCBAJkSAgFAmRHAl8xBAJkSQgFAmRHAl8yBAJkSgkAzAgCCQEMSW50ZWdlckVudHJ5AgkBAmFhAAUCY04JAMwIAgkBDEludGVnZXJFbnRyeQIJAQJhYgIFBmhlaWdodAgFCWxhc3RCbG9jawl0aW1lc3RhbXAFAmNOCQDMCAIJAQtTdHJpbmdFbnRyeQIJAQJhZQIFAmNBBQJjeAkBAmJ3CgUCZEgFAmRJBQJkRAUCY04FAmJVBQJkQwUGaGVpZ2h0CAUJbGFzdEJsb2NrCXRpbWVzdGFtcAUCZEUFAmRGBQNuaWwJAJ8KDQUCZHoFAmREBQJjTgUCY0kFAmNLBQJkbQUCY0IFAmNHBQJkSgUCZEUFAmRGBQJjWAUCY1oBAmRLAQJkTAQCZE0JAJEDAgUCZEwAAAQCZE4JAJEDAgUCZEwAAQQCZE8JALcCAgUCZE0FAmROAwkAAAIFAmRPBQFlBQFlBAJkUAkBDXBhcnNlSW50VmFsdWUBBQJhUwQCZFEJAGgCBQJkUAACBAJjcwkAvAIDBQJkTQUCZE4FAWYEAmRSCQC8AgMFAmNzBQFpBQFmBAJkUwkAvAIDCQC2AgEFAmRRBQJkTwUBZgQCZFQJALYCAQkAZQIFAmRRAAEKAQJkVQECZFYEAmRXCQC8AgMFAmRWBQJkVgUBZgQCZFgJALwCAwUCZFcFAmRWBQFmBAJkWQkAvAIDBQJkWAUBZgUCZFIJAL0CBAkAtwICBQJkUwkAvAIDBQJkWQUBZwUBZgUCZFYJALcCAgkAvAIDBQJkVAUCZFYFAWYJALwCAwUBaAUCZFkFAWYFB0NFSUxJTkcKAQJkWgICZWECZWIDCAUCZWECXzIFAmVhBAJkVggFAmVhAl8xBAJlYwkBAmRVAQUCZFYEAmVkCQC4AgIFAmVjCQEFdmFsdWUBBQJkVgQCZWUDCQC/AgIFAWUFAmVkCQC+AgEFAmVkBQJlZAMJAMACAgUBZgUCZWUJAJQKAgUCZWMGCQCUCgIFAmVjBwQCZWYJAMwIAgAACQDMCAIAAQkAzAgCAAIJAMwIAgADCQDMCAIABAkAzAgCAAUJAMwIAgAGCQDMCAIABwkAzAgCAAgJAMwIAgAJCQDMCAIACgkAzAgCAAsJAMwIAgAMCQDMCAIADQkAzAgCAA4FA25pbAQCZWcKAAJlaAUCZWYKAAJlaQkAkAMBBQJlaAoAAmVqCQCUCgIFAmRPBwoBAmVrAgJlbAJlbQMJAGcCBQJlbQUCZWkFAmVsCQECZFoCBQJlbAkAkQMCBQJlaAUCZW0KAQJlbgICZWwCZW0DCQBnAgUCZW0FAmVpBQJlbAkAAgECFExpc3Qgc2l6ZSBleGNlZWRzIDE1CQECZW4CCQECZWsCCQECZWsCCQECZWsCCQECZWsCCQECZWsCCQECZWsCCQECZWsCCQECZWsCCQECZWsCCQECZWsCCQECZWsCCQECZWsCCQECZWsCCQECZWsCCQECZWsCBQJlagAAAAEAAgADAAQABQAGAAcACAAJAAoACwAMAA0ADgAPBAJkVggFAmVnAl8xBAJlbwgFAmVnAl8yAwUCZW8FAmRWCQACAQkArAICAhlEIGNhbGN1bGF0aW9uIGVycm9yLCBEID0gCQCmAwEFAmRWAQJlcAECZEwEAmVxBQFnBAJkTQkAkQMCBQJkTAAABAJkTgkAkQMCBQJkTAABBAJlcgkApwMBBQFsBAJkUAkAuQICCQCnAwEFAmFTBQJlcgQCZE8JALcCAgUCZE0FAmROAwkAAAIFAmRPBQFlBQFlBAJkUQkAuQICBQJkUAUCZXEEAmRSCQC5AgIJALkCAgkAuQICBQJkTQUCZE4FAmVxBQJlcQQCZXMJALoCAgkAuQICBQJkUQUCZE8FAmVyBAJldAkAuAICBQJkUQUCZXIEAmV1CQC3AgIFAmVxBQFmCgECZFoCAmVhAmV2BAJldwUCZWEEAmRWCAUCZXcCXzEEAmVvCAUCZXcCXzIDCQECIT0CBQJlbwUEdW5pdAUCZWEEAmRZCQC6AgIJALkCAgkAuQICBQJkVgUCZFYFAmRWBQJkUgQCZWMJALoCAgkAuQICCQC3AgIFAmVzCQC5AgIFAmRZBQJlcQUCZFYJALcCAgkAugICCQC5AgIFAmV0BQJkVgUCZXIJALkCAgUCZXUFAmRZBAJlZQkBAVcBCQC4AgIFAmVjCQEFdmFsdWUBBQJkVgMJAMACAgUBZgUCZWUJAJQKAgUCZWMFAmV2CQCUCgIFAmVjBQR1bml0BAJlZgkAzAgCAAAJAMwIAgABCQDMCAIAAgkAzAgCAAMJAMwIAgAECQDMCAIABQkAzAgCAAYJAMwIAgAHCQDMCAIACAkAzAgCAAkJAMwIAgAKCQDMCAIACwkAzAgCAAwJAMwIAgANCQDMCAIADgUDbmlsBAJleAoAAmVoBQJlZgoAAmVpCQCQAwEFAmVoCgACZWoJAJQKAgUCZE8FBHVuaXQKAQJlawICZWwCZW0DCQBnAgUCZW0FAmVpBQJlbAkBAmRaAgUCZWwJAJEDAgUCZWgFAmVtCgECZW4CAmVsAmVtAwkAZwIFAmVtBQJlaQUCZWwJAAIBAhRMaXN0IHNpemUgZXhjZWVkcyAxNQkBAmVuAgkBAmVrAgkBAmVrAgkBAmVrAgkBAmVrAgkBAmVrAgkBAmVrAgkBAmVrAgkBAmVrAgkBAmVrAgkBAmVrAgkBAmVrAgkBAmVrAgkBAmVrAgkBAmVrAgkBAmVrAgUCZWoAAAABAAIAAwAEAAUABgAHAAgACQAKAAsADAANAA4ADwQCZFYIBQJleAJfMQQCZW8IBQJleAJfMgMJAQIhPQIFAmVvBQR1bml0BQJkVgkAAgEJAKwCAgIZRCBjYWxjdWxhdGlvbiBlcnJvciwgRCA9IAkApgMBBQJkVgECZXkDAmRMAmViAmV6BAJlcQUBZwQCZUEJAJEDAgUCZEwDCQAAAgUCZWIAAAABAAAEAmVyCQCnAwEFAWwEAmRQCQC5AgIJAKcDAQUCYVMFAmVyBAJkTwUCZUEEAmRRCQC5AgIFAmRQBQJlcQQCZUIJALoCAgkAuQICCQC5AgIJALoCAgkAuQICBQJlegUCZXoJALkCAgUCZUEFAmVxBQJlegUCZXIJALkCAgUCZFEFAmVxBAJlQwkAuAICCQC3AgIFAmRPCQC6AgIJALkCAgUCZXoFAmVyBQJkUQUCZXoKAQJkWgICZWECZXYEAmVEBQJlYQQCZUUIBQJlRAJfMQQCZW8IBQJlRAJfMgMJAQIhPQIFAmVvBQR1bml0BQJlYQQCZUYJALoCAgkAtwICCQC5AgIFAmVFBQJlRQUCZUIJALcCAgkAuQICBQFnBQJlRQUCZUMEAmVHCQEBVwEJALgCAgUCZUYJAQV2YWx1ZQEFAmVFAwkAwAICBQFmBQJlRwkAlAoCBQJlRgUCZXYJAJQKAgUCZUYFBHVuaXQEAmVmCQDMCAIAAAkAzAgCAAEJAMwIAgACCQDMCAIAAwkAzAgCAAQJAMwIAgAFCQDMCAIABgkAzAgCAAcJAMwIAgAICQDMCAIACQkAzAgCAAoJAMwIAgALCQDMCAIADAkAzAgCAA0JAMwIAgAOBQNuaWwEAmVICgACZWgFAmVmCgACZWkJAJADAQUCZWgKAAJlagkAlAoCBQJlegUEdW5pdAoBAmVrAgJlbAJlbQMJAGcCBQJlbQUCZWkFAmVsCQECZFoCBQJlbAkAkQMCBQJlaAUCZW0KAQJlbgICZWwCZW0DCQBnAgUCZW0FAmVpBQJlbAkAAgECFExpc3Qgc2l6ZSBleGNlZWRzIDE1CQECZW4CCQECZWsCCQECZWsCCQECZWsCCQECZWsCCQECZWsCCQECZWsCCQECZWsCCQECZWsCCQECZWsCCQECZWsCCQECZWsCCQECZWsCCQECZWsCCQECZWsCCQECZWsCBQJlagAAAAEAAgADAAQABQAGAAcACAAJAAoACwAMAA0ADgAPBAJlRQgFAmVIAl8xBAJlbwgFAmVIAl8yAwkBAiE9AgUCZW8FBHVuaXQFAmVFCQACAQkArAICAhlZIGNhbGN1bGF0aW9uIGVycm9yLCBZID0gCQCmAwEFAmVFAQJlSQMCZUoCZUsCZUwEAmVNCQC8AgMJAQJkSwEJAMwIAgkBAUgCCQCgAwEFAmVKBQJibQkAzAgCCQEBSAIJAKADAQUCZUsFAmJuBQNuaWwFAWYFAmVMAwkAAAIFAmVMBQFlBQFlBQJlTQECZU4DAmVPAmVQAmVRBAJlUgkAuAICCQC2AgEJAQJiTAEJAQJiYwEFAmJrBQJlTwQCZVMJALgCAgkAtgIBCQECYkwBCQECYmMBBQJibAUCZVAEAmVUCQC4AgIJALYCAQgJAQV2YWx1ZQEJAOwHAQUCYmoIcXVhbnRpdHkFAmVRBAJlVQkBAmVJAwUCZVIFAmVTBQJlVAUCZVUBAmVWAwJlVwJlWAJlUQQCZVIJAGQCCQECYkwBCQECYmMBBQJiawUCZVcEAmVTCQBkAgkBAmJMAQkBAmJjAQUCYmwFAmVYBAJlVAkAZAIICQEFdmFsdWUBCQDsBwEFAmJqCHF1YW50aXR5BQJlUQQCZU0JAQJlSQMJALYCAQUCZVIJALYCAQUCZVMJALYCAQUCZVQEAmVZCQDMCAIJAQxJbnRlZ2VyRW50cnkCBQJhcAUGaGVpZ2h0CQDMCAIJAQtTdHJpbmdFbnRyeQIFAmFvCQCmAwEFAmVNBQNuaWwJAJQKAgUCZVkFAmVNAQJlWgICZmECZU0DCQDAAgIFAmVNBQJmYQYJAQJhTAECInVwZGF0ZWQgRExwIGxvd2VyIHRoYW4gY3VycmVudCBETHABAmZiAQJmYwQCZmQIBQJmYwZhbW91bnQEAmZlCQBuBAgFAmZjBmFtb3VudAgFAmZjBXByaWNlBQFhBQVGTE9PUgQCZmYDCQAAAggFAmZjCW9yZGVyVHlwZQUDQnV5CQCUCgIFAmZkCQEBLQEFAmZlCQCUCgIJAQEtAQUCZmQFAmZlBAJlVwgFAmZmAl8xBAJlWAgFAmZmAl8yAwMDCQECYVQABgkAAAIFAmJpBQFyBgkAAAIFAmJpBQFzCQACAQINQWRtaW4gYmxvY2tlZAMDCQECIT0CCAgFAmZjCWFzc2V0UGFpcgthbW91bnRBc3NldAUCYmsGCQECIT0CCAgFAmZjCWFzc2V0UGFpcgpwcmljZUFzc2V0BQJibAkAAgECCVdyIGFzc2V0cwQCZmcJAKcDAQkBEUBleHRyTmF0aXZlKDEwNTMpAgUEdGhpcwUCYW8EAmZoCQECZVYDBQJlVwUCZVgAAAQCZmkIBQJmaAJfMQQCZmoIBQJmaAJfMgQCZmsJAMACAgUCZmoFAmZnBQJmawECZmwBAmViAwkBAiE9AgkAkAMBCAUCZWIIcGF5bWVudHMAAQkAAgECCjEgcG1udCBleHAEAmZtCQEFdmFsdWUBCQCRAwIIBQJlYghwYXltZW50cwAABAJjeQkBBXZhbHVlAQgFAmZtB2Fzc2V0SWQEAmRlCAUCZm0GYW1vdW50BAJkcQkBAmN3BAkA2AQBCAUCZWINdHJhbnNhY3Rpb25JZAkA2AQBBQJjeQUCZGUIBQJlYgZjYWxsZXIEAmNTCAUCZHECXzEEAmNUCAUCZHECXzIEAmNHCQENcGFyc2VJbnRWYWx1ZQEIBQJkcQJfOQQCY1UIBQJkcQNfMTADAwkBAmFUAAYJAAACBQJjRwUBcwkAAgEJAKwCAgIPQWRtaW4gYmxvY2tlZDogCQCkAwEFAmNHCQCXCgUFAmNTBQJjVAUCZGUFAmN5BQJjVQECZm4KAmZvAmFnAmZwAmZxAmJVAmRiAmRjAmRkAmRlAmRmBAJkcQkBAmNWDQUCYWcFAmJVCAkBBXZhbHVlAQUCZnAGYW1vdW50CAkBBXZhbHVlAQUCZnAHYXNzZXRJZAgJAQV2YWx1ZQEFAmZxBmFtb3VudAgJAQV2YWx1ZQEFAmZxB2Fzc2V0SWQFAmZvCQAAAgUCYWcCAAUCZGIFAmRjBQJkZAUCZGUFAmRmBAJjRwkBDXBhcnNlSW50VmFsdWUBCAUCZHECXzgDAwMJAQJhVAAGCQAAAgUCY0cFAXEGCQAAAgUCY0cFAXMJAAIBCQCsAgICCEJsb2NrZWQ6CQCkAwEFAmNHBQJkcQECZnIFAmZzAmN5AmNBAmFnAmZ0BAJjQwkA2AQBCQEFdmFsdWUBBQJiawQCY0QJANgEAQkBBXZhbHVlAQUCYmwEAmNCBQJiagQCZGsFAmJtBAJkbAUCYm4EAmVUCQC2AgEICQETdmFsdWVPckVycm9yTWVzc2FnZQIJAOwHAQUCY0ICEGludmFsaWQgbHAgYXNzZXQIcXVhbnRpdHkEAmZ1AwkAvwICBQJlVAUBZQYJAAIBAiJpbml0aWFsIGRlcG9zaXQgcmVxdWlyZXMgYWxsIGNvaW5zAwkAAAIFAmZ1BQJmdQQCY0kJAQJiTAEFAmNDBAJjSwkBAmJMAQUCY0QEAmZ2AwkAAAIFAmFnAgAJAJQKAgUCY0kFAmNLAwkAAAIFAmN5BQJjQwMJAGYCBQJmcwUCY0kJAAIBAhZpbnZhbGlkIHBheW1lbnQgYW1vdW50CQCUCgIJAGUCBQJjSQUCZnMFAmNLAwkAAAIFAmN5BQJjRAMJAGYCBQJmcwUCY0sJAAIBAhZpbnZhbGlkIHBheW1lbnQgYW1vdW50CQCUCgIFAmNJCQBlAgUCY0sFAmZzCQACAQIQd3JvbmcgcG10QXNzZXRJZAQCZncIBQJmdgJfMQQCZngIBQJmdgJfMgQCZnkDCQAAAgUCY3kFAmNDCQCUCgIFAmZzAAADCQAAAgUCY3kFAmNECQCUCgIAAAUCZnMJAAIBAg9pbnZhbGlkIHBheW1lbnQEAmZ6CAUCZnkCXzEEAmZBCAUCZnkCXzIEAmZCAwUCZnQJAJUKAwgJAQJjdAIFAmZ6BQJhUAJfMQgJAQJjdAIFAmZBBQJhUAJfMQgJAQJjdAIFAmZzBQJhUAJfMgkAlQoDBQJmegUCZkEAAAQCZkMIBQJmQgJfMQQCZkQIBQJmQgJfMgQCY3YIBQJmQgJfMwQCZkUJAGQCBQJmdwUCZkMEAmZGCQBkAgUCZngFAmZEBAJiWgkBAmRLAQkAzAgCCQC2AgEFAmZ3CQDMCAIJALYCAQUCZngFA25pbAQCYlkJAQJkSwEJAMwIAgkAtgIBBQJmRQkAzAgCCQC2AgEFAmZGBQNuaWwEAmZHAwkAvwICBQJiWQUCYloGCQEFdGhyb3cAAwkAAAIFAmZHBQJmRwQCZkgJAL0CBAUCZVQJALgCAgUCYlkFAmJaBQJiWgUFRkxPT1IEAmNOCQEBSwIJAQJiTgIJAQFIAgUCZkYFAmRsCQEBSAIFAmZFBQJkawUBYQQCZEoJAMwIAgkBDEludGVnZXJFbnRyeQIJAQJhYQAFAmNOCQDMCAIJAQxJbnRlZ2VyRW50cnkCCQECYWICBQZoZWlnaHQIBQlsYXN0QmxvY2sJdGltZXN0YW1wBQJjTgkAzAgCCQELU3RyaW5nRW50cnkCCQECYWUCBQJjQQUCYWcJAQJidwoFAmZ6BQJmQQkAoAMBBQJmSAUCY04AAAAABQZoZWlnaHQIBQlsYXN0QmxvY2sJdGltZXN0YW1wAAAAAAUDbmlsBAJmSQkAawMFAmZ4BQFhBQJmdwQCZkoJAGsDBQJmcwUBYQkAZAIFAmZJBQFhBAJmSwkAZQIFAmZzBQJmSgQCZkwJALwCAwUCZVQJALYCAQUCZksJALYCAQUCZngEAmZNCQCgAwEJALwCAwkAuAICBQJmSAUCZkwFAWIFAmZMCQCWCgQJAKADAQUCZkgFAmRKBQJjdgUCZk0JAAIBAiRTdHJpY3QgdmFsdWUgaXMgbm90IGVxdWFsIHRvIGl0c2VsZi4JAAIBAiRTdHJpY3QgdmFsdWUgaXMgbm90IGVxdWFsIHRvIGl0c2VsZi4BAmZOBgJmTwJmUAJmUQJmbwJmUgJmUwQCY0IJANgEAQkBBXZhbHVlAQUCYmoEAmNDCQDYBAEJAQV2YWx1ZQEFAmJrBAJjRAkA2AQBCQEFdmFsdWUBBQJibAQCZlQFAmJtBAJmVQUCYm4EAmZWBQJiaQQCY0EDCQAAAgUCZm8FAmJ2BQJmUgUCZm8EAmZtCQEFdmFsdWUBCQCRAwIFAmZRAAAEAmN5CQEFdmFsdWUBCAUCZm0HYXNzZXRJZAQCZGUIBQJmbQZhbW91bnQEAmVVCQECZU4DBQFlBQFlBQFlAwkAAAIFAmVVBQJlVQQCY3gJANgEAQUCZlMDCQECIT0CBQJjQgkA2AQBBQJjeQkAAgECCFdyb25nIExQBAJjSQkBAmJMAQUCY0MEAmNLCQECYkwBBQJjRAQCZlcKAAJhUQkA/AcEBQR0aGlzAhNnZXRPbmVUa25WMlJFQURPTkxZCQDMCAIFAmZPCQDMCAIFAmRlBQNuaWwFA25pbAMJAAECBQJhUQIKKEludCwgSW50KQUCYVEJAAIBCQCsAgIJAAMBBQJhUQIfIGNvdWxkbid0IGJlIGNhc3QgdG8gKEludCwgSW50KQMJAAACBQJmVwUCZlcEAmN2CAUCZlcCXzIEAmZYCAUCZlcCXzEEAmZZAwMJAGYCBQJmUAAACQBmAgUCZlAFAmZYBwkBAmFMAQkAuQkCCQDMCAICH2Ftb3VudCB0byByZWNlaXZlIGlzIGxlc3MgdGhhbiAJAMwIAgkApAMBBQJmUAUDbmlsAgAFAmZYBAJmWgMJAAACBQJmTwUCY0MJAJYKBAUCZlkAAAkAZQIJAGUCBQJjSQUCZlkFAmN2BQJjSwMJAAACBQJmTwUCY0QJAJYKBAAABQJmWQUCY0kJAGUCCQBlAgUCY0sFAmZZBQJjdgkAAgECFGludmFsaWQgb3V0IGFzc2V0IGlkBAJnYQgFAmZaAl8xBAJnYggFAmZaAl8yBAJmRQgFAmZaAl8zBAJmRggFAmZaAl80BAJnYwkBAmJOAgkBAUgCBQJmRgUCZlUJAQFIAgUCZkUFAmZUBAJnZAkBAUsCBQJnYwUBYQQCZ2UDCQAAAgUCZk8CBVdBVkVTBQR1bml0CQDZBAEFAmZPBAJnZgMJAGYCBQJjdgAACQDMCAIJAQ5TY3JpcHRUcmFuc2ZlcgMFAmFWBQJjdgUCZ2UFA25pbAUDbmlsBAJjVQkAzggCCQDMCAIJAQ5TY3JpcHRUcmFuc2ZlcgMFAmNBBQJmWQUCZ2UJAMwIAgkBC1N0cmluZ0VudHJ5AgkBAmFoAgkApQgBBQJjQQUCY3gJAQJiSAYFAmdhBQJnYgUCZGUFAmdkBQZoZWlnaHQIBQlsYXN0QmxvY2sJdGltZXN0YW1wCQDMCAIJAQxJbnRlZ2VyRW50cnkCCQECYWEABQJnZAkAzAgCCQEMSW50ZWdlckVudHJ5AgkBAmFiAgUGaGVpZ2h0CAUJbGFzdEJsb2NrCXRpbWVzdGFtcAUCZ2QFA25pbAUCZ2YDCQAAAgUCY1UFAmNVBAJnZwkA/AcEBQJhTwIEYnVybgkAzAgCBQJkZQUDbmlsCQDMCAIJAQ9BdHRhY2hlZFBheW1lbnQCBQJjeQUCZGUFA25pbAMJAAACBQJnZwUCZ2cEAmdoBAJnaQMJAAACBQR0aGlzBQJhVgAABQJjdgQCZ2oDCQAAAgkBAmJhAQUCZk8FAmJrBgcDBQJnagkAlAoCCQEBLQEJAGQCBQJmWAUCZ2kAAAkAlAoCAAAJAQEtAQkAZAIFAmZYBQJnaQQCZVcIBQJnaAJfMQQCZVgIBQJnaAJfMgQCZ2sJAQJlVgMFAmVXBQJlWAAABAJnbAgFAmdrAl8xBAJlTQgFAmdrAl8yBAJnbQkBAmVaAgUCZVUFAmVNAwkAAAIFAmdtBQJnbQkAlAoCCQDOCAIFAmNVBQJnbAUCZlkJAAIBAiRTdHJpY3QgdmFsdWUgaXMgbm90IGVxdWFsIHRvIGl0c2VsZi4JAAIBAiRTdHJpY3QgdmFsdWUgaXMgbm90IGVxdWFsIHRvIGl0c2VsZi4JAAIBAiRTdHJpY3QgdmFsdWUgaXMgbm90IGVxdWFsIHRvIGl0c2VsZi4JAAIBAiRTdHJpY3QgdmFsdWUgaXMgbm90IGVxdWFsIHRvIGl0c2VsZi4JAAIBAiRTdHJpY3QgdmFsdWUgaXMgbm90IGVxdWFsIHRvIGl0c2VsZi4BAmduAAQCZ28JAKIIAQkBAVkAAwkAAQIFAmdvAgZTdHJpbmcEAmRPBQJnbwkA2QQBBQJkTwMJAAECBQJnbwIEVW5pdAUEdW5pdAkAAgECC01hdGNoIGVycm9yAQJncAAEAmdvCQCiCAEJAQFaAAMJAAECBQJnbwIGU3RyaW5nBAJkTwUCZ28JANkEAQUCZE8DCQABAgUCZ28CBFVuaXQFBHVuaXQJAAIBAgtNYXRjaCBlcnJvcgACZ3EJAAIBAhFQZXJtaXNzaW9uIGRlbmllZAECZ3IBAmViBAJnbwkBAmduAAMJAAECBQJnbwIKQnl0ZVZlY3RvcgQCZ3MFAmdvCQAAAggFAmViD2NhbGxlclB1YmxpY0tleQUCZ3MDCQABAgUCZ28CBFVuaXQJAAACCAUCZWIGY2FsbGVyBQR0aGlzCQACAQILTWF0Y2ggZXJyb3IBAmd0AQJlYgQCZ28JAQJnbgADCQABAgUCZ28CCkJ5dGVWZWN0b3IEAmdzBQJnbwMJAAACCAUCZWIPY2FsbGVyUHVibGljS2V5BQJncwYFAmdxAwkAAQIFAmdvAgRVbml0AwkAAAIIBQJlYgZjYWxsZXIFBHRoaXMGBQJncQkAAgECC01hdGNoIGVycm9yHAJlYgELY29uc3RydWN0b3IBAVgEAmVCCQECZ3QBBQJlYgMJAAACBQJlQgUCZUIJAMwIAgkBC1N0cmluZ0VudHJ5AgkBAVgABQFYBQNuaWwJAAIBAiRTdHJpY3QgdmFsdWUgaXMgbm90IGVxdWFsIHRvIGl0c2VsZi4CZWIBCnNldE1hbmFnZXIBAmd1BAJlQgkBAmd0AQUCZWIDCQAAAgUCZUIFAmVCBAJndgkA2QQBBQJndQMJAAACBQJndgUCZ3YJAMwIAgkBC1N0cmluZ0VudHJ5AgkBAVoABQJndQUDbmlsCQACAQIkU3RyaWN0IHZhbHVlIGlzIG5vdCBlcXVhbCB0byBpdHNlbGYuCQACAQIkU3RyaWN0IHZhbHVlIGlzIG5vdCBlcXVhbCB0byBpdHNlbGYuAmViAQ5jb25maXJtTWFuYWdlcgAEAmNzCQECZ3AABAJndwMJAQlpc0RlZmluZWQBBQJjcwYJAAIBAhJObyBwZW5kaW5nIG1hbmFnZXIDCQAAAgUCZ3cFAmd3BAJneAMJAAACCAUCZWIPY2FsbGVyUHVibGljS2V5CQEFdmFsdWUBBQJjcwYJAAIBAhtZb3UgYXJlIG5vdCBwZW5kaW5nIG1hbmFnZXIDCQAAAgUCZ3gFAmd4CQDMCAIJAQtTdHJpbmdFbnRyeQIJAQFZAAkA2AQBCQEFdmFsdWUBBQJjcwkAzAgCCQELRGVsZXRlRW50cnkBCQEBWgAFA25pbAkAAgECJFN0cmljdCB2YWx1ZSBpcyBub3QgZXF1YWwgdG8gaXRzZWxmLgkAAgECJFN0cmljdCB2YWx1ZSBpcyBub3QgZXF1YWwgdG8gaXRzZWxmLgJlYgEDcHV0AgJneQJnegQCZ0EJAQJicQAEAmdCCQETdmFsdWVPckVycm9yTWVzc2FnZQIJAKYIAQkAkQMCBQJnQQUBQwIKV3Igc3QgYWRkcgQCZ0MJARN2YWx1ZU9yRXJyb3JNZXNzYWdlAgkApggBCQCRAwIFAmdBBQFFAgpXciBzbCBhZGRyAwkAZgIAAAUCZ3kJAAIBAg5Xcm9uZyBzbGlwcGFnZQMJAQIhPQIJAJADAQgFAmViCHBheW1lbnRzAAIJAAIBAgwyIHBtbnRzIGV4cGQEAmdECQC2AgEICQEFdmFsdWUBCQCRAwIIBQJlYghwYXltZW50cwAABmFtb3VudAQCZ0UJALYCAQgJAQV2YWx1ZQEJAJEDAggFAmViCHBheW1lbnRzAAEGYW1vdW50BAJlUgkAuAICCQC2AgEJAQJiTAEJAQJiYwEFAmJrBQJnRAMJAAACBQJlUgUCZVIEAmVTCQC4AgIJALYCAQkBAmJMAQkBAmJjAQUCYmwFAmdFAwkAAAIFAmVTBQJlUwQCZVQJALYCAQgJAQV2YWx1ZQEJAOwHAQUCYmoIcXVhbnRpdHkDCQAAAgUCZVQFAmVUBAJlVQkBAmVOAwUCZ0QFAmdFCQC2AgEAAAMJAAACBQJlVQUCZVUEAmdGCQECZm4KCQClCAEIBQJlYgZjYWxsZXIJANgEAQgFAmViDXRyYW5zYWN0aW9uSWQJAQ9BdHRhY2hlZFBheW1lbnQCCAkBBXZhbHVlAQkAkQMCCAUCZWIIcGF5bWVudHMAAAdhc3NldElkCAkBBXZhbHVlAQkAkQMCCAUCZWIIcGF5bWVudHMAAAZhbW91bnQJAJEDAggFAmViCHBheW1lbnRzAAEFAmd5BgcGAAACAAQCZEQIBQJnRgJfMgQCZ0cIBQJnRgJfNwQCY1UIBQJnRgJfOQQCZEUIBQJnRgNfMTAEAmRGCAUCZ0YDXzExBAJjQwgFAmdGA18xMgQCY0QIBQJnRgNfMTMEAmRxCQD8BwQFAmFPAgRlbWl0CQDMCAIFAmREBQNuaWwFA25pbAMJAAACBQJkcQUCZHEEAmdIBAJnbwUCZHEDCQABAgUCZ28CB0FkZHJlc3MEAmdJBQJnbwkA/AcEBQJnSQIEZW1pdAkAzAgCBQJkRAUDbmlsBQNuaWwFBHVuaXQDCQAAAgUCZ0gFAmdIBAJnSgMJAGYCBQJkRQAACQD8BwQFAmdDAgNwdXQFA25pbAkAzAgCCQEPQXR0YWNoZWRQYXltZW50AgUCY0MFAmRFBQNuaWwFA25pbAMJAAACBQJnSgUCZ0oEAmdLAwkAZgIFAmRGAAAJAPwHBAUCZ0MCA3B1dAUDbmlsCQDMCAIJAQ9BdHRhY2hlZFBheW1lbnQCBQJjRAUCZEYFA25pbAUDbmlsAwkAAAIFAmdLBQJnSwQCZ0wDBQJnegQCZ00JAPwHBAUCZ0ICBXN0YWtlBQNuaWwJAMwIAgkBD0F0dGFjaGVkUGF5bWVudAIFAmdHBQJkRAUDbmlsAwkAAAIFAmdNBQJnTQUDbmlsCQACAQIkU3RyaWN0IHZhbHVlIGlzIG5vdCBlcXVhbCB0byBpdHNlbGYuCQDMCAIJAQ5TY3JpcHRUcmFuc2ZlcgMIBQJlYgZjYWxsZXIFAmREBQJnRwUDbmlsBAJnTgkBAmVWAwAAAAAAAAQCZ2wIBQJnTgJfMQQCZU0IBQJnTgJfMgQCZ08DCQDAAgIFAmVNBQJlVQYJAQJhTAEJALkJAgkAzAgCAiJ1cGRhdGVkIERMcCBsb3dlciB0aGFuIGN1cnJlbnQgRExwCQDMCAIJAKYDAQUCZVIJAMwIAgkApgMBBQJlUwkAzAgCCQCmAwEFAmVUCQDMCAIJAKYDAQUCZVUJAMwIAgkApgMBBQJlTQkAzAgCCQCkAwEFAmRFCQDMCAIJAKQDAQUCZEYFA25pbAIBIAMJAAACBQJnTwUCZ08EAmdQCAkBBXZhbHVlAQkA7AcBBQJiaghxdWFudGl0eQMJAAACBQJnUAUCZ1AJAM4IAgkAzggCBQJjVQUCZ0wFAmdsCQACAQIkU3RyaWN0IHZhbHVlIGlzIG5vdCBlcXVhbCB0byBpdHNlbGYuCQACAQIkU3RyaWN0IHZhbHVlIGlzIG5vdCBlcXVhbCB0byBpdHNlbGYuCQACAQIkU3RyaWN0IHZhbHVlIGlzIG5vdCBlcXVhbCB0byBpdHNlbGYuCQACAQIkU3RyaWN0IHZhbHVlIGlzIG5vdCBlcXVhbCB0byBpdHNlbGYuCQACAQIkU3RyaWN0IHZhbHVlIGlzIG5vdCBlcXVhbCB0byBpdHNlbGYuCQACAQIkU3RyaWN0IHZhbHVlIGlzIG5vdCBlcXVhbCB0byBpdHNlbGYuCQACAQIkU3RyaWN0IHZhbHVlIGlzIG5vdCBlcXVhbCB0byBpdHNlbGYuCQACAQIkU3RyaWN0IHZhbHVlIGlzIG5vdCBlcXVhbCB0byBpdHNlbGYuCQACAQIkU3RyaWN0IHZhbHVlIGlzIG5vdCBlcXVhbCB0byBpdHNlbGYuCQACAQIkU3RyaWN0IHZhbHVlIGlzIG5vdCBlcXVhbCB0byBpdHNlbGYuAmViAQtwdXRPbmVUa25WMgICZlACZ3oEAmdRCgACYVEJAPwHBAUCYU8CKGlzUG9vbE9uZVRva2VuT3BlcmF0aW9uc0Rpc2FibGVkUkVBRE9OTFkJAMwIAgkApQgBBQR0aGlzBQNuaWwFA25pbAMJAAECBQJhUQIHQm9vbGVhbgUCYVEJAAIBCQCsAgIJAAMBBQJhUQIcIGNvdWxkbid0IGJlIGNhc3QgdG8gQm9vbGVhbgQCZ1IDAwMJAQJhVAAGCQAAAgUCYmkFAXEGCQAAAgUCYmkFAXMGBQJnUQQCZ1MJAMwIAgMDCQEBIQEFAmdSBgkBAmdyAQUCZWIGCQECYUwBAiFwdXQgb3BlcmF0aW9uIGlzIGJsb2NrZWQgYnkgYWRtaW4JAMwIAgMJAAACCQCQAwEIBQJlYghwYXltZW50cwABBgkBAmFMAQIeZXhhY3RseSAxIHBheW1lbnQgYXJlIGV4cGVjdGVkBQNuaWwDCQAAAgUCZ1MFAmdTBAJjQwkA2AQBCQEFdmFsdWUBBQJiawQCY0QJANgEAQkBBXZhbHVlAQUCYmwEAmNCBQJiagQCZlQFAmJtBAJmVQUCYm4EAmNBAwkAAAIIBQJlYgZjYWxsZXIFBHRoaXMIBQJlYgxvcmlnaW5DYWxsZXIIBQJlYgZjYWxsZXIEAmZtCQEFdmFsdWUBCQCRAwIIBQJlYghwYXltZW50cwAABAJjeQkA2AQBCQEFdmFsdWUBCAUCZm0HYXNzZXRJZAQCZGUIBQJmbQZhbW91bnQEAmVVAwkAAAIIBQJmbQdhc3NldElkBQJiawkBAmVOAwkAtgIBBQJkZQkAtgIBAAAJALYCAQAACQECZU4DCQC2AgEAAAkAtgIBBQJkZQkAtgIBAAADCQAAAgUCZVUFAmVVBAJnVAkBAmZyBQUCZGUFAmN5CQClCAEFAmNBCQDYBAEIBQJlYg10cmFuc2FjdGlvbklkBgMJAAACBQJnVAUCZ1QEAmN2CAUCZ1QCXzMEAmNVCAUCZ1QCXzIEAmdVCAUCZ1QCXzEEAmREAwMJAGYCBQJmUAAACQBmAgUCZlAFAmdVBwkBAmFMAQkAuQkCCQDMCAICH2Ftb3VudCB0byByZWNlaXZlIGlzIGxlc3MgdGhhbiAJAMwIAgkApAMBBQJmUAUDbmlsAgAFAmdVBAJnRgkA/AcEBQJhTwIEZW1pdAkAzAgCBQJkRAUDbmlsBQNuaWwDCQAAAgUCZ0YFAmdGBAJnSAQCZ28FAmdGAwkAAQIFAmdvAgdBZGRyZXNzBAJnSQUCZ28JAPwHBAUCZ0kCBGVtaXQJAMwIAgUCZEQFA25pbAUDbmlsBQR1bml0AwkAAAIFAmdIBQJnSAQCZ0wDBQJnegQCZ00JAPwHBAUCYnMCBXN0YWtlBQNuaWwJAMwIAgkBD0F0dGFjaGVkUGF5bWVudAIFAmNCBQJkRAUDbmlsAwkAAAIFAmdNBQJnTQUDbmlsCQACAQIkU3RyaWN0IHZhbHVlIGlzIG5vdCBlcXVhbCB0byBpdHNlbGYuCQDMCAIJAQ5TY3JpcHRUcmFuc2ZlcgMIBQJlYgZjYWxsZXIFAmREBQJjQgUDbmlsBAJnZgMJAGYCBQJjdgAACQDMCAIJAQ5TY3JpcHRUcmFuc2ZlcgMFAmFWBQJjdgkA2QQBBQJjeQUDbmlsBQNuaWwEAmdWAwkAAAIFBHRoaXMFAmFWCQCUCgIAAAAABAJnVwMJAAACCAUCZm0HYXNzZXRJZAUCYmsGBwMFAmdXCQCUCgIJAQEtAQUCY3YAAAkAlAoCAAAJAQEtAQUCY3YEAmVXCAUCZ1YCXzEEAmVYCAUCZ1YCXzIEAmdYCQECZVYDBQJlVwUCZVgAAAQCZ2wIBQJnWAJfMQQCZU0IBQJnWAJfMgQCZ20JAQJlWgIFAmVVBQJlTQMJAAACBQJnbQUCZ20JAJQKAgkAzggCCQDOCAIJAM4IAgUCY1UFAmdMBQJnZgUCZ2wFAmRECQACAQIkU3RyaWN0IHZhbHVlIGlzIG5vdCBlcXVhbCB0byBpdHNlbGYuCQACAQIkU3RyaWN0IHZhbHVlIGlzIG5vdCBlcXVhbCB0byBpdHNlbGYuCQACAQIkU3RyaWN0IHZhbHVlIGlzIG5vdCBlcXVhbCB0byBpdHNlbGYuCQACAQIkU3RyaWN0IHZhbHVlIGlzIG5vdCBlcXVhbCB0byBpdHNlbGYuCQACAQIkU3RyaWN0IHZhbHVlIGlzIG5vdCBlcXVhbCB0byBpdHNlbGYuCQACAQIkU3RyaWN0IHZhbHVlIGlzIG5vdCBlcXVhbCB0byBpdHNlbGYuAmViAQpwdXRGb3JGcmVlAQJnWQMJAGYCAAAFAmdZCQACAQIKV3Jvbmcgc2xwZwMJAQIhPQIJAJADAQgFAmViCHBheW1lbnRzAAIJAAIBAgwyIHBtbnRzIGV4cGQEAmdaCQECZm4KCQClCAEIBQJlYgZjYWxsZXIJANgEAQgFAmViDXRyYW5zYWN0aW9uSWQJAQ9BdHRhY2hlZFBheW1lbnQCCAkBBXZhbHVlAQkAkQMCCAUCZWIIcGF5bWVudHMAAAdhc3NldElkCAkBBXZhbHVlAQkAkQMCCAUCZWIIcGF5bWVudHMAAAZhbW91bnQJAJEDAggFAmViCHBheW1lbnRzAAEFAmdZBwcGAAACAAQCY1UIBQJnWgJfOQQCZ0QJALYCAQgJAQV2YWx1ZQEJAJEDAggFAmViCHBheW1lbnRzAAAGYW1vdW50BAJnRQkAtgIBCAkBBXZhbHVlAQkAkQMCCAUCZWIIcGF5bWVudHMAAQZhbW91bnQEAmVVCQECZU4DBQJnRAUCZ0UJALYCAQAAAwkAAAIFAmVVBQJlVQQCaGEJAQJlVgMAAAAAAAAEAmdsCAUCaGECXzEEAmVNCAUCaGECXzIEAmdtCQECZVoCBQJlVQUCZU0DCQAAAgUCZ20FAmdtCQDOCAIFAmNVBQJnbAkAAgECJFN0cmljdCB2YWx1ZSBpcyBub3QgZXF1YWwgdG8gaXRzZWxmLgkAAgECJFN0cmljdCB2YWx1ZSBpcyBub3QgZXF1YWwgdG8gaXRzZWxmLgJlYgEDZ2V0AAQCZVUJAQJlTgMJALYCAQAACQC2AgEAAAkAtgIBAAADCQAAAgUCZVUFAmVVBAJkcQkBAmZsAQUCZWIEAmhiCAUCZHECXzEEAmNUCAUCZHECXzIEAmRlCAUCZHECXzMEAmN5CAUCZHECXzQEAmNVCAUCZHECXzUEAmVDCQD8BwQFAmFPAgRidXJuCQDMCAIFAmRlBQNuaWwJAMwIAgkBD0F0dGFjaGVkUGF5bWVudAIFAmN5BQJkZQUDbmlsAwkAAAIFAmVDBQJlQwQCaGMJAQJlVgMJAQEtAQUCaGIJAQEtAQUCY1QAAAQCZ2wIBQJoYwJfMQQCZU0IBQJoYwJfMgQCZ20JAQJlWgIFAmVVBQJlTQMJAAACBQJnbQUCZ20JAM4IAgUCY1UFAmdsCQACAQIkU3RyaWN0IHZhbHVlIGlzIG5vdCBlcXVhbCB0byBpdHNlbGYuCQACAQIkU3RyaWN0IHZhbHVlIGlzIG5vdCBlcXVhbCB0byBpdHNlbGYuCQACAQIkU3RyaWN0IHZhbHVlIGlzIG5vdCBlcXVhbCB0byBpdHNlbGYuAmViAQtnZXRPbmVUa25WMgICZk8CZlAEAmdRCgACYVEJAPwHBAUCYU8CKGlzUG9vbE9uZVRva2VuT3BlcmF0aW9uc0Rpc2FibGVkUkVBRE9OTFkJAMwIAgkApQgBBQR0aGlzBQNuaWwFA25pbAMJAAECBQJhUQIHQm9vbGVhbgUCYVEJAAIBCQCsAgIJAAMBBQJhUQIcIGNvdWxkbid0IGJlIGNhc3QgdG8gQm9vbGVhbgQCaGQDAwkBAmFUAAYJAAACBQJiaQUBcwYFAmdRBAJnUwkAzAgCAwMJAQEhAQUCaGQGCQECZ3IBBQJlYgYJAQJhTAECIWdldCBvcGVyYXRpb24gaXMgYmxvY2tlZCBieSBhZG1pbgkAzAgCAwkAAAIJAJADAQgFAmViCHBheW1lbnRzAAEGCQECYUwBAh5leGFjdGx5IDEgcGF5bWVudCBhcmUgZXhwZWN0ZWQFA25pbAMJAAACBQJnUwUCZ1MEAmhlCQECZk4GBQJmTwUCZlAIBQJlYghwYXltZW50cwgFAmViBmNhbGxlcggFAmViDG9yaWdpbkNhbGxlcggFAmViDXRyYW5zYWN0aW9uSWQEAmNVCAUCaGUCXzEEAmZZCAUCaGUCXzIJAJQKAgUCY1UFAmZZCQACAQIkU3RyaWN0IHZhbHVlIGlzIG5vdCBlcXVhbCB0byBpdHNlbGYuAmViAQpyZWZyZXNoRExwAAQCaGYJAQt2YWx1ZU9yRWxzZQIJAJ8IAQUCYXAAAAQCaGcDCQBnAgkAZQIFBmhlaWdodAUCaGYFAmFzBQR1bml0CQECYUwBCQC5CQIJAMwIAgkApAMBBQJhcwkAzAgCAi8gYmxvY2tzIGhhdmUgbm90IHBhc3NlZCBzaW5jZSB0aGUgcHJldmlvdXMgY2FsbAUDbmlsAgADCQAAAgUCaGcFAmhnBAJmZwkBE3ZhbHVlT3JFcnJvck1lc3NhZ2UCCQCoAwEJAQt2YWx1ZU9yRWxzZQIJAJ0IAgUEdGhpcwUCYW8CATAJAQJhTgECC2ludmFsaWQgZExwBAJoaAkBAmVWAwAAAAAAAAQCaGkIBQJoaAJfMQQCZU0IBQJoaAJfMgQCZVkDCQECIT0CBQJmZwUCZU0FAmhpCQECYUwBAhJub3RoaW5nIHRvIHJlZnJlc2gJAJQKAgUCZVkJAKYDAQUCZU0JAAIBAiRTdHJpY3QgdmFsdWUgaXMgbm90IGVxdWFsIHRvIGl0c2VsZi4CZWIBE2dldE9uZVRrblYyUkVBRE9OTFkCAmZPAmhqBAJjQwkA2AQBCQEFdmFsdWUBBQJiawQCY0QJANgEAQkBBXZhbHVlAQUCYmwEAmNCCQDYBAEJAQV2YWx1ZQEFAmJqBAJkTAkAzAgCCQC2AgEJAQJiTAEFAmNDCQDMCAIJALYCAQkBAmJMAQUCY0QFA25pbAQCZUwJALYCAQgJARN2YWx1ZU9yRXJyb3JNZXNzYWdlAgkA7AcBCQDZBAEFAmNCAhBpbnZhbGlkIGxwIGFzc2V0CHF1YW50aXR5BAJiWgkBAmRLAQUCZEwEAmJZCQC4AgIFAmJaCQC8AgMJALYCAQUCaGoFAmJaBQJlTAQCaGsDCQAAAgUCZk8FAmNDAAADCQAAAgUCZk8FAmNEAAEJAAIBAhRpbnZhbGlkIG91dCBhc3NldCBpZAQCaGwJAQJleQMFAmRMBQJoawUCYlkEAmhtCQC4AgIJAJEDAgUCZEwFAmhrBQJobAQCaG4JAJYDAQkAzAgCAAAJAMwIAgkAoAMBCQC4AgIFAmhtBQFmBQNuaWwEAmhvCQECY3QCBQJobgUCYVIEAmZYCAUCaG8CXzEEAmN2CAUCaG8CXzIJAJQKAgUDbmlsCQCUCgIFAmZYBQJjdgJlYgEcZ2V0T25lVGtuVjJXaXRoQm9udXNSRUFET05MWQICZk8CaGoEAmNDCQDYBAEJAQV2YWx1ZQEFAmJrBAJjRAkA2AQBCQEFdmFsdWUBBQJibAQCY0IJANgEAQkBBXZhbHVlAQUCYmoEAmNJCQECYkwBBQJjQwQCY0sJAQJiTAEFAmNEBAJocAoAAmFRCQD8BwQFBHRoaXMCE2dldE9uZVRrblYyUkVBRE9OTFkJAMwIAgUCZk8JAMwIAgUCaGoFA25pbAUDbmlsAwkAAQIFAmFRAgooSW50LCBJbnQpBQJhUQkAAgEJAKwCAgkAAwEFAmFRAh8gY291bGRuJ3QgYmUgY2FzdCB0byAoSW50LCBJbnQpBAJmWAgFAmhwAl8xBAJjdggFAmhwAl8yBAJkcQkBAmN3BAIABQJjQgUCaGoFBHRoaXMEAmNTCAUCZHECXzEEAmNUCAUCZHECXzIEAmhxCQBkAgUCY1MFAmNUBAJmTQMJAAACBQJocQAAAwkAAAIFAmZYAAAAAAkAAgECF2JvbnVzIGNhbGN1bGF0aW9uIGVycm9yCQBrAwkAZQIFAmZYBQJocQUBYQUCaHEJAJQKAgUDbmlsCQCVCgMFAmZYBQJjdgUCZk0CZWIBCWdldE5vTGVzcwICaHICaHMEAmRxCQECZmwBBQJlYgQCY1MIBQJkcQJfMQQCY1QIBQJkcQJfMgQCZGUIBQJkcQJfMwQCY3kIBQJkcQJfNAQCY1UIBQJkcQJfNQMJAGYCBQJocgUCY1MJAAIBCQCsAgIJAKwCAgkArAICAglGYWlsZWQ6ICAJAKQDAQUCY1MCAyA8IAkApAMBBQJocgMJAGYCBQJocwUCY1QJAAIBCQCsAgIJAKwCAgkArAICAghGYWlsZWQ6IAkApAMBBQJjVAIDIDwgCQCkAwEFAmhzBAJlVQkBAmVOAwkAtgIBAAAJALYCAQAACQC2AgEAAAMJAAACBQJlVQUCZVUEAmh0CQD8BwQFAmFPAgRidXJuCQDMCAIFAmRlBQNuaWwJAMwIAgkBD0F0dGFjaGVkUGF5bWVudAIFAmN5BQJkZQUDbmlsAwkAAAIFAmh0BQJodAQCaHUJAQJlVgMJAQEtAQUCY1MJAQEtAQUCY1QAAAQCZ2wIBQJodQJfMQQCZU0IBQJodQJfMgQCZ20JAQJlWgIFAmVVBQJlTQMJAAACBQJnbQUCZ20JAM4IAgUCY1UFAmdsCQACAQIkU3RyaWN0IHZhbHVlIGlzIG5vdCBlcXVhbCB0byBpdHNlbGYuCQACAQIkU3RyaWN0IHZhbHVlIGlzIG5vdCBlcXVhbCB0byBpdHNlbGYuCQACAQIkU3RyaWN0IHZhbHVlIGlzIG5vdCBlcXVhbCB0byBpdHNlbGYuAmViAQ11bnN0YWtlQW5kR2V0AQJjdQQCaHYDCQECIT0CCQCQAwEIBQJlYghwYXltZW50cwAACQACAQINTm8gcG1udHMgZXhwZAYDCQAAAgUCaHYFAmh2BAJodwkBAmJxAAQCZ0cFAmJqBAJoeAkBE3ZhbHVlT3JFcnJvck1lc3NhZ2UCCQCmCAEJAJEDAgUCaHcFAUMCCldyIHN0IGFkZHIEAmVVCQECZU4DCQC2AgEAAAkAtgIBAAAJALYCAQAAAwkAAAIFAmVVBQJlVQQCaHkJAPwHBAUCaHgCB3Vuc3Rha2UJAMwIAgkA2AQBBQJnRwkAzAgCBQJjdQUDbmlsBQNuaWwDCQAAAgUCaHkFAmh5BAJkcQkBAmN3BAkA2AQBCAUCZWINdHJhbnNhY3Rpb25JZAkA2AQBBQJnRwUCY3UIBQJlYgZjYWxsZXIEAmNTCAUCZHECXzEEAmNUCAUCZHECXzIEAmNHCQENcGFyc2VJbnRWYWx1ZQEIBQJkcQJfOQQCY1UIBQJkcQNfMTAEAmh6AwMJAQJhVAAGCQAAAgUCY0cFAXMJAAIBCQCsAgICCUJsb2NrZWQ6IAkApAMBBQJjRwYDCQAAAgUCaHoFAmh6BAJoQQkA/AcEBQJhTwIEYnVybgkAzAgCBQJjdQUDbmlsCQDMCAIJAQ9BdHRhY2hlZFBheW1lbnQCBQJnRwUCY3UFA25pbAMJAAACBQJoQQUCaEEEAmhCCQECZVYDCQEBLQEFAmNTCQEBLQEFAmNUAAAEAmdsCAUCaEICXzEEAmVNCAUCaEICXzIEAmdtCQECZVoCBQJlVQUCZU0DCQAAAgUCZ20FAmdtCQDOCAIFAmNVBQJnbAkAAgECJFN0cmljdCB2YWx1ZSBpcyBub3QgZXF1YWwgdG8gaXRzZWxmLgkAAgECJFN0cmljdCB2YWx1ZSBpcyBub3QgZXF1YWwgdG8gaXRzZWxmLgkAAgECJFN0cmljdCB2YWx1ZSBpcyBub3QgZXF1YWwgdG8gaXRzZWxmLgkAAgECJFN0cmljdCB2YWx1ZSBpcyBub3QgZXF1YWwgdG8gaXRzZWxmLgkAAgECJFN0cmljdCB2YWx1ZSBpcyBub3QgZXF1YWwgdG8gaXRzZWxmLgkAAgECJFN0cmljdCB2YWx1ZSBpcyBub3QgZXF1YWwgdG8gaXRzZWxmLgJlYgETdW5zdGFrZUFuZEdldE5vTGVzcwMCaEMCaEQCaHMEAmhkAwkBAmFUAAYJAAACBQJiaQUBcwQCZ1MJAMwIAgMJAQEhAQUCaGQGCQACAQIhZ2V0IG9wZXJhdGlvbiBpcyBibG9ja2VkIGJ5IGFkbWluCQDMCAIDCQAAAgkAkAMBCAUCZWIIcGF5bWVudHMAAAYJAAIBAhhubyBwYXltZW50cyBhcmUgZXhwZWN0ZWQFA25pbAMJAAACBQJnUwUCZ1MEAmVVCQECZU4DCQC2AgEAAAkAtgIBAAAJALYCAQAAAwkAAAIFAmVVBQJlVQQCaHkJAPwHBAUCYnMCB3Vuc3Rha2UJAMwIAgkA2AQBBQJiagkAzAgCBQJoQwUDbmlsBQNuaWwDCQAAAgUCaHkFAmh5BAJoRQkBAmN3BAkA2AQBCAUCZWINdHJhbnNhY3Rpb25JZAkA2AQBBQJiagUCaEMIBQJlYgZjYWxsZXIEAmNTCAUCaEUCXzEEAmNUCAUCaEUCXzIEAmNVCAUCaEUDXzEwBAJoRgkAzAgCAwkAZwIFAmNTBQJoRAYJAAIBCQC5CQIJAMwIAgIsYW1vdW50IGFzc2V0IGFtb3VudCB0byByZWNlaXZlIGlzIGxlc3MgdGhhbiAJAMwIAgkApAMBBQJoRAUDbmlsAgAJAMwIAgMJAGcCBQJjVAUCaHMGCQACAQkAuQkCCQDMCAICK3ByaWNlIGFzc2V0IGFtb3VudCB0byByZWNlaXZlIGlzIGxlc3MgdGhhbiAJAMwIAgkApAMBBQJocwUDbmlsAgAFA25pbAMJAAACBQJoRgUCaEYEAmh0CQD8BwQFAmFPAgRidXJuCQDMCAIFAmhDBQNuaWwJAMwIAgkBD0F0dGFjaGVkUGF5bWVudAIFAmJqBQJoQwUDbmlsAwkAAAIFAmh0BQJodAQCaEcJAQJlVgMJAQEtAQUCY1MJAQEtAQUCY1QAAAQCZ2wIBQJoRwJfMQQCZU0IBQJoRwJfMgQCZ20JAQJlWgIFAmVVBQJlTQMJAAACBQJnbQUCZ20JAM4IAgUCY1UFAmdsCQACAQIkU3RyaWN0IHZhbHVlIGlzIG5vdCBlcXVhbCB0byBpdHNlbGYuCQACAQIkU3RyaWN0IHZhbHVlIGlzIG5vdCBlcXVhbCB0byBpdHNlbGYuCQACAQIkU3RyaWN0IHZhbHVlIGlzIG5vdCBlcXVhbCB0byBpdHNlbGYuCQACAQIkU3RyaWN0IHZhbHVlIGlzIG5vdCBlcXVhbCB0byBpdHNlbGYuCQACAQIkU3RyaWN0IHZhbHVlIGlzIG5vdCBlcXVhbCB0byBpdHNlbGYuCQACAQIkU3RyaWN0IHZhbHVlIGlzIG5vdCBlcXVhbCB0byBpdHNlbGYuAmViARV1bnN0YWtlQW5kR2V0T25lVGtuVjIDAmhDAmZPAmZQBAJnUQoAAmFRCQD8BwQFAmFPAihpc1Bvb2xPbmVUb2tlbk9wZXJhdGlvbnNEaXNhYmxlZFJFQURPTkxZCQDMCAIJAKUIAQUEdGhpcwUDbmlsBQNuaWwDCQABAgUCYVECB0Jvb2xlYW4FAmFRCQACAQkArAICCQADAQUCYVECHCBjb3VsZG4ndCBiZSBjYXN0IHRvIEJvb2xlYW4EAmhkAwMJAQJhVAAGCQAAAgUCYmkFAXMGBQJnUQQCZ1MJAMwIAgMDCQEBIQEFAmhkBgkBAmdyAQUCZWIGCQECYUwBAiFnZXQgb3BlcmF0aW9uIGlzIGJsb2NrZWQgYnkgYWRtaW4JAMwIAgMJAAACCQCQAwEIBQJlYghwYXltZW50cwAABgkBAmFMAQIYbm8gcGF5bWVudHMgYXJlIGV4cGVjdGVkBQNuaWwDCQAAAgUCZ1MFAmdTBAJodwkBAmJxAAQCZ0cFAmJqBAJoeAkBE3ZhbHVlT3JFcnJvck1lc3NhZ2UCCQCmCAEJAJEDAgUCaHcFAUMCCldyIHN0IGFkZHIEAmh5CQD8BwQFAmh4Agd1bnN0YWtlCQDMCAIJANgEAQUCZ0cJAMwIAgUCaEMFA25pbAUDbmlsAwkAAAIFAmh5BQJoeQQCaEgJAQJmTgYFAmZPBQJmUAkAzAgCCQEPQXR0YWNoZWRQYXltZW50AgUCZ0cFAmhDBQNuaWwIBQJlYgZjYWxsZXIIBQJlYgxvcmlnaW5DYWxsZXIIBQJlYg10cmFuc2FjdGlvbklkBAJjVQgFAmhIAl8xBAJmWQgFAmhIAl8yCQCUCgIFAmNVBQJmWQkAAgECJFN0cmljdCB2YWx1ZSBpcyBub3QgZXF1YWwgdG8gaXRzZWxmLgkAAgECJFN0cmljdCB2YWx1ZSBpcyBub3QgZXF1YWwgdG8gaXRzZWxmLgJlYgEccHV0T25lVGtuVjJXaXRoQm9udXNSRUFET05MWQICaEkCaEoEAmhLCQECZnIFBQJoSQUCaEoCAAIABgQCZkgIBQJoSwJfMQQCY1UIBQJoSwJfMgQCY3YIBQJoSwJfMwQCZk0IBQJoSwJfNAkAlAoCBQNuaWwJAJUKAwUCZkgFAmN2BQJmTQJlYgEhcHV0T25lVGtuVjJXaXRob3V0VGFrZUZlZVJFQURPTkxZAgJoSQJoSgQCaEwJAQJmcgUFAmhJBQJoSgIAAgAHBAJmSAgFAmhMAl8xBAJjVQgFAmhMAl8yBAJjdggFAmhMAl8zBAJmTQgFAmhMAl80CQCUCgIFA25pbAkAlQoDBQJmSAUCY3YFAmZNAmViAQhhY3RpdmF0ZQICaE0CaE4DCQECIT0CCQClCAEIBQJlYgZjYWxsZXIJAKUIAQUCYU8JAAIBAgZkZW5pZWQJAJQKAgkAzAgCCQELU3RyaW5nRW50cnkCCQECYWkABQJoTQkAzAgCCQELU3RyaW5nRW50cnkCCQECYWoABQJoTgUDbmlsAgdzdWNjZXNzAmViAQRzZXRTAgJoTwJoegMJAQIhPQIJAKUIAQgFAmViBmNhbGxlcgkBAmFIAgUEdGhpcwkBAmFsAAUCZ3EJAMwIAgkBC1N0cmluZ0VudHJ5AgUCaE8FAmh6BQNuaWwCZWIBBHNldEkCAmhPAmh6AwkBAiE9AgkApQgBCAUCZWIGY2FsbGVyCQECYUgCBQR0aGlzCQECYWwABQJncQkAzAgCCQEMSW50ZWdlckVudHJ5AgUCaE8FAmh6BQNuaWwCZWIBHGdldFBvb2xDb25maWdXcmFwcGVyUkVBRE9OTFkACQCUCgIFA25pbAkBAmFXAAJlYgEcZ2V0QWNjQmFsYW5jZVdyYXBwZXJSRUFET05MWQECYk0JAJQKAgUDbmlsCQECYkwBBQJiTQJlYgEZY2FsY1ByaWNlc1dyYXBwZXJSRUFET05MWQMCY2YCY2cCY2sEAmhQCQECY2oDBQJjZgUCY2cFAmNrCQCUCgIFA25pbAkAzAgCCQCmAwEJAJEDAgUCaFAAAAkAzAgCCQCmAwEJAJEDAgUCaFAAAQkAzAgCCQCmAwEJAJEDAgUCaFAAAgUDbmlsAmViARZmcm9tWDE4V3JhcHBlclJFQURPTkxZAgFMAmhRCQCUCgIFA25pbAkBAUsCCQCnAwEFAUwFAmhRAmViARR0b1gxOFdyYXBwZXJSRUFET05MWQIBSQFKCQCUCgIFA25pbAkApgMBCQEBSAIFAUkFAUoCZWIBHmNhbGNQcmljZUJpZ0ludFdyYXBwZXJSRUFET05MWQICYk8CYlAJAJQKAgUDbmlsCQCmAwEJAQJiTgIJAKcDAQUCYk8JAKcDAQUCYlACZWIBI2VzdGltYXRlUHV0T3BlcmF0aW9uV3JhcHBlclJFQURPTkxZCQJjeAJiVQJjVwJjWAJjWQJjWgJoUgJkYQJkYgkAlAoCBQNuaWwJAQJjVg0FAmN4BQJiVQUCY1cFAmNYBQJjWQUCY1oFAmhSBQJkYQUCZGIGBwAAAgACZWIBI2VzdGltYXRlR2V0T3BlcmF0aW9uV3JhcHBlclJFQURPTkxZBAJjeAJoUwJjegJoUgQCZHEJAQJjdwQFAmN4BQJoUwUCY3oJARFAZXh0ck5hdGl2ZSgxMDYyKQEFAmhSCQCUCgIFA25pbAkAnAoKCAUCZHECXzEIBQJkcQJfMggFAmRxAl8zCAUCZHECXzQIBQJkcQJfNQgFAmRxAl82CAUCZHECXzcJAKYDAQgFAmRxAl84CAUCZHECXzkIBQJkcQNfMTABAmhUAQJoVQAEAmhWBAJnbwkBAmduAAMJAAECBQJnbwIKQnl0ZVZlY3RvcgQCZ3MFAmdvBQJncwMJAAECBQJnbwIEVW5pdAgFAmhUD3NlbmRlclB1YmxpY0tleQkAAgECC01hdGNoIGVycm9yBAJnbwUCaFQDCQABAgUCZ28CBU9yZGVyBAJmYwUCZ28EAmhXCQECYVUABAJoWAkBAmZiAQUCZmMEAmhZCQD0AwMIBQJmYwlib2R5Qnl0ZXMJAJEDAggFAmZjBnByb29mcwAACAUCZmMPc2VuZGVyUHVibGljS2V5BAJoWgkA9AMDCAUCZmMJYm9keUJ5dGVzCQCRAwIIBQJmYwZwcm9vZnMAAQUCaFcDAwMFAmhYBQJoWQcFAmhaBwYJAQJhRAMFAmhYBQJoWQUCaFoDCQABAgUCZ28CFFNldFNjcmlwdFRyYW5zYWN0aW9uBAJkTwUCZ28DCQD0AwMIBQJoVAlib2R5Qnl0ZXMJAJEDAggFAmhUBnByb29mcwAABQJoVgYEAmlhCQD2AwEJAQV2YWx1ZQEIBQJkTwZzY3JpcHQEAmliCQDbBAEJAQV2YWx1ZQEJAJ0IAgUCYU8JAQJhQgAEAmljCQDxBwEFBHRoaXMDCQAAAgUCaWIFAmlhCQECIT0CBQJpYwUCaWEHCQD0AwMIBQJoVAlib2R5Qnl0ZXMJAJEDAggFAmhUBnByb29mcwAABQJoVsBgp8s=", "chainId": 84, "height": 2411690, "applicationStatus": "succeeded", "spentComplexity": 0 } View: original | compacted Prev: 3tzL65BAr9dN82B8piJuqWDEyRoZ8jRZ51Fd9aP41Ksx Next: G652on5HaU5QzHkU3KEz1qUD9DwQz18dsvLF6ytBzjVd Diff:
OldNewDifferences
13921392 let gG = bj
13931393 let hx = valueOrErrorMessage(addressFromString(hw[C]), "Wr st addr")
13941394 let eU = eN(toBigInt(0), toBigInt(0), toBigInt(0))
1395- let hy = invoke(hx, "unstake", [toBase58String(gG), cu], nil)
1396- if ((hy == hy))
1395+ if ((eU == eU))
13971396 then {
1398- let dq = cw(toBase58String(eb.transactionId), toBase58String(gG), cu, eb.caller)
1399- let cS = dq._1
1400- let cT = dq._2
1401- let cG = parseIntValue(dq._9)
1402- let cU = dq._10
1403- let hz = if (if (aT())
1404- then true
1405- else (cG == s))
1406- then throw(("Blocked: " + toString(cG)))
1407- else true
1408- if ((hz == hz))
1397+ let hy = invoke(hx, "unstake", [toBase58String(gG), cu], nil)
1398+ if ((hy == hy))
14091399 then {
1410- let hA = invoke(aO, "burn", [cu], [AttachedPayment(gG, cu)])
1411- if ((hA == hA))
1400+ let dq = cw(toBase58String(eb.transactionId), toBase58String(gG), cu, eb.caller)
1401+ let cS = dq._1
1402+ let cT = dq._2
1403+ let cG = parseIntValue(dq._9)
1404+ let cU = dq._10
1405+ let hz = if (if (aT())
1406+ then true
1407+ else (cG == s))
1408+ then throw(("Blocked: " + toString(cG)))
1409+ else true
1410+ if ((hz == hz))
14121411 then {
1413- let hB = eV(-(cS), -(cT), 0)
1414- let gl = hB._1
1415- let eM = hB._2
1416- let gm = eZ(eU, eM)
1417- if ((gm == gm))
1418- then (cU ++ gl)
1412+ let hA = invoke(aO, "burn", [cu], [AttachedPayment(gG, cu)])
1413+ if ((hA == hA))
1414+ then {
1415+ let hB = eV(-(cS), -(cT), 0)
1416+ let gl = hB._1
1417+ let eM = hB._2
1418+ let gm = eZ(eU, eM)
1419+ if ((gm == gm))
1420+ then (cU ++ gl)
1421+ else throw("Strict value is not equal to itself.")
1422+ }
14191423 else throw("Strict value is not equal to itself.")
14201424 }
14211425 else throw("Strict value is not equal to itself.")
14421446 if ((gS == gS))
14431447 then {
14441448 let eU = eN(toBigInt(0), toBigInt(0), toBigInt(0))
1445- let hy = invoke(bs, "unstake", [toBase58String(bj), hC], nil)
1446- if ((hy == hy))
1449+ if ((eU == eU))
14471450 then {
1448- let hE = cw(toBase58String(eb.transactionId), toBase58String(bj), hC, eb.caller)
1449- let cS = hE._1
1450- let cT = hE._2
1451- let cU = hE._10
1452- let hF = [if ((cS >= hD))
1453- then true
1454- else throw(makeString(["amount asset amount to receive is less than ", toString(hD)], "")), if ((cT >= hs))
1455- then true
1456- else throw(makeString(["price asset amount to receive is less than ", toString(hs)], ""))]
1457- if ((hF == hF))
1451+ let hy = invoke(bs, "unstake", [toBase58String(bj), hC], nil)
1452+ if ((hy == hy))
14581453 then {
1459- let ht = invoke(aO, "burn", [hC], [AttachedPayment(bj, hC)])
1460- if ((ht == ht))
1454+ let hE = cw(toBase58String(eb.transactionId), toBase58String(bj), hC, eb.caller)
1455+ let cS = hE._1
1456+ let cT = hE._2
1457+ let cU = hE._10
1458+ let hF = [if ((cS >= hD))
1459+ then true
1460+ else throw(makeString(["amount asset amount to receive is less than ", toString(hD)], "")), if ((cT >= hs))
1461+ then true
1462+ else throw(makeString(["price asset amount to receive is less than ", toString(hs)], ""))]
1463+ if ((hF == hF))
14611464 then {
1462- let hG = eV(-(cS), -(cT), 0)
1463- let gl = hG._1
1464- let eM = hG._2
1465- let gm = eZ(eU, eM)
1466- if ((gm == gm))
1467- then (cU ++ gl)
1465+ let ht = invoke(aO, "burn", [hC], [AttachedPayment(bj, hC)])
1466+ if ((ht == ht))
1467+ then {
1468+ let hG = eV(-(cS), -(cT), 0)
1469+ let gl = hG._1
1470+ let eM = hG._2
1471+ let gm = eZ(eU, eM)
1472+ if ((gm == gm))
1473+ then (cU ++ gl)
1474+ else throw("Strict value is not equal to itself.")
1475+ }
14681476 else throw("Strict value is not equal to itself.")
14691477 }
14701478 else throw("Strict value is not equal to itself.")
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 (I,J) = fraction(I, c, toBigInt(J))
8080
8181
8282 func Q (L,M) = fraction(L, toBigInt(M), c)
8383
8484
8585 func R (S,T,U) = fraction(S, T, U)
8686
8787
8888 func V (L) = if ((d > L))
8989 then -(L)
9090 else L
9191
9292
9393 func W (L) = if ((d > L))
9494 then -(L)
9595 else L
9696
9797
9898 func X () = "%s__factoryContract"
9999
100100
101101 func Y () = "%s__managerPublicKey"
102102
103103
104104 func Z () = "%s__pendingManagerPublicKey"
105105
106106
107107 func aa () = "%s%s__price__last"
108108
109109
110110 func ab (ac,ad) = makeString(["%s%s%d%d__price__history", toString(ac), toString(ad)], n)
111111
112112
113113 func ae (af,ag) = ((("%s%s%s__P__" + af) + "__") + ag)
114114
115115
116116 func ah (af,ag) = ((("%s%s%s__G__" + af) + "__") + ag)
117117
118118
119119 func ai () = "%s__amountAsset"
120120
121121
122122 func aj () = "%s__priceAsset"
123123
124124
125125 func ak () = "%s__amp"
126126
127127
128128 func al () = "%s__addonAddr"
129129
130130
131131 let am = "%s__fee"
132132
133133 let an = valueOrElse(getInteger(this, am), G)
134134
135135 let ao = makeString(["%s", "dLp"], n)
136136
137137 let ap = makeString(["%s", "dLpRefreshedHeight"], n)
138138
139139 let aq = makeString(["%s", "refreshDLpDelay"], n)
140140
141141 let ar = 1
142142
143143 let as = valueOrElse(getInteger(this, aq), ar)
144144
145145 func at () = "%s__factoryConfig"
146146
147147
148148 func au () = "%s%s__matcher__publicKey"
149149
150150
151151 func av (aw,ax) = (((("%d%d%s__" + aw) + "__") + ax) + "__config")
152152
153153
154154 func ay (az) = ("%s%s%s__mappings__baseAsset2internalId__" + az)
155155
156156
157157 func aA () = "%s__shutdown"
158158
159159
160160 func aB () = "%s__allowedLpStableScriptHash"
161161
162162
163163 func aC () = "%s__feeCollectorAddress"
164164
165165
166166 func aD (aE,aF,aG) = throw(((((("Failed: ordValid=" + toString(aE)) + " sndrValid=") + toString(aF)) + " mtchrValid=") + toString(aG)))
167167
168168
169169 func aH (aI,aJ) = valueOrErrorMessage(getString(aI, aJ), makeString(["mandatory ", toString(aI), ".", aJ, " not defined"], ""))
170170
171171
172172 func aK (aI,aJ) = valueOrErrorMessage(getInteger(aI, aJ), makeString(["mandatory ", toString(aI), ".", aJ, " not defined"], ""))
173173
174174
175175 func aL (aM) = throw(makeString(["lp_stable.ride:", aM], " "))
176176
177177
178178 func aN (aM) = makeString(["lp_stable.ride:", aM], " ")
179179
180180
181181 let aO = addressFromStringValue(aH(this, X()))
182182
183183 let aP = {
184184 let aQ = invoke(aO, "getInFeeREADONLY", [toString(this)], nil)
185185 if ($isInstanceOf(aQ, "Int"))
186186 then aQ
187187 else throw(($getType(aQ) + " couldn't be cast to Int"))
188188 }
189189
190190 let aR = {
191191 let aQ = invoke(aO, "getOutFeeREADONLY", [toString(this)], nil)
192192 if ($isInstanceOf(aQ, "Int"))
193193 then aQ
194194 else throw(($getType(aQ) + " couldn't be cast to Int"))
195195 }
196196
197197 let aS = aH(this, ak())
198198
199199 func aT () = valueOrElse(getBoolean(aO, aA()), false)
200200
201201
202202 func aU () = fromBase58String(aH(aO, au()))
203203
204204
205205 let aV = addressFromStringValue(aH(aO, aC()))
206206
207207 func aW () = {
208208 let aX = aH(this, ai())
209209 let aY = aH(this, aj())
210210 let aZ = aK(aO, ay(aY))
211211 let aw = aK(aO, ay(aX))
212212 split(aH(aO, av(toString(aw), toString(aZ))), n)
213213 }
214214
215215
216216 func ba (bb) = if ((bb == k))
217217 then unit
218218 else fromBase58String(bb)
219219
220220
221221 func bc (bb) = if ((bb == unit))
222222 then k
223223 else toBase58String(value(bb))
224224
225225
226226 func bd (be) = $Tuple9(addressFromStringValue(be[t]), parseIntValue(be[u]), fromBase58String(be[v]), ba(be[w]), ba(be[x]), parseIntValue(be[y]), parseIntValue(be[z]), fromBase58String(be[A]), fromBase58String(be[B]))
227227
228228
229229 let bf = bd(aW())
230230
231231 let bg = bf
232232
233233 let bh = bg._1
234234
235235 let bi = bg._2
236236
237237 let bj = bg._3
238238
239239 let bk = bg._4
240240
241241 let bl = bg._5
242242
243243 let bm = bg._6
244244
245245 let bn = bg._7
246246
247247 let bo = bg._8
248248
249249 let bp = bg._9
250250
251251 func bq () = split(aH(aO, at()), n)
252252
253253
254254 let br = bq()
255255
256256 let bs = valueOrErrorMessage(addressFromString(br[C]), "Invalid staking contract address")
257257
258258 let bt = valueOrErrorMessage(addressFromString(br[E]), "Invalid slipage contract address")
259259
260260 let bu = valueOrErrorMessage(addressFromString(br[F]), "Invalid gwx contract address")
261261
262262 let bv = valueOrErrorMessage(addressFromString(br[D]), "Invalid gwx contract address")
263263
264264 func bw (bx,by,bz,bA,bB,bC,bD,bE,bF,bG) = makeString(["%d%d%d%d%d%d%d%d%d%d", toString(bx), toString(by), toString(bz), toString(bA), toString(bB), toString(bC), toString(bD), toString(bE), toString(bF), toString(bG)], n)
265265
266266
267267 func bH (bI,bJ,bK,bA,bD,bE) = makeString(["%d%d%d%d%d%d", toString(bI), toString(bJ), toString(bK), toString(bA), toString(bD), toString(bE)], n)
268268
269269
270270 func bL (bM) = if ((bM == "WAVES"))
271271 then wavesBalance(this).available
272272 else assetBalance(this, fromBase58String(bM))
273273
274274
275275 func bN (bO,bP) = fraction(bO, c, bP)
276276
277277
278278 func bQ (bO,bP,O) = fraction(bO, c, bP, O)
279279
280280
281281 func bR (bS,bT,bU) = {
282282 let bV = fraction((bS - bT), b, bT)
283283 let bW = ((bU - V(bV)) > d)
284284 if (!(bW))
285285 then throw(("Big slpg: " + toString(bV)))
286286 else $Tuple2(bW, min([bS, bT]))
287287 }
288288
289289
290290 func bX (bY,bZ,ca) = {
291291 let bV = fraction(bZ, b, bY)
292292 let cb = (ca > bV)
293293 if (if (cb)
294294 then true
295295 else (bZ > bY))
296296 then throw(((((((toString(bZ) + " ") + toString(bY)) + " ") + toString(bV)) + " ") + toString(ca)))
297297 else cb
298298 }
299299
300300
301301 func cc (cd,ce,cf,cg) = {
302302 let ch = H(cf, cd)
303303 let ci = H(cg, ce)
304304 bN(ci, ch)
305305 }
306306
307307
308308 func cj (cf,cg,ck) = {
309309 let cl = bm
310310 let cm = bn
311311 let cn = cc(cl, cm, cf, cg)
312312 let bP = H(cf, cl)
313313 let bO = H(cg, cm)
314314 let co = H(ck, a)
315315 let cp = bN(bP, co)
316316 let cq = bN(bO, co)
317317 [cn, cp, cq]
318318 }
319319
320320
321321 func cr (cf,cg,ck) = {
322322 let cs = cj(cf, cg, ck)
323323 [K(cs[0], a), K(cs[1], a), K(cs[2], a)]
324324 }
325325
326326
327327 func ct (cu,an) = {
328328 let cv = if ((an == 0))
329329 then 0
330330 else fraction(cu, an, a)
331331 $Tuple2((cu - cv), cv)
332332 }
333333
334334
335335 func cw (cx,cy,cz,cA) = {
336336 let cB = bj
337337 let cC = toBase58String(value(bk))
338338 let cD = toBase58String(value(bl))
339339 let cE = bm
340340 let cF = bn
341341 let cG = toString(bi)
342342 let cH = valueOrErrorMessage(assetInfo(cB), "Wrong LP id").quantity
343343 if ((toBase58String(cB) != cy))
344344 then throw("Wrong pmt asset")
345345 else {
346346 let cI = bL(cC)
347347 let cJ = H(cI, cE)
348348 let cK = bL(cD)
349349 let cL = H(cK, cF)
350350 let cM = bN(cL, cJ)
351351 let cN = K(cM, a)
352352 let cO = H(cz, a)
353353 let cP = H(cH, a)
354354 let cQ = fraction(cJ, cO, cP)
355355 let cR = fraction(cL, cO, cP)
356356 let cS = N(cQ, cE, FLOOR)
357357 let cT = N(cR, cF, FLOOR)
358358 let cU = if ((cx == ""))
359359 then nil
360360 else [ScriptTransfer(cA, cS, if ((cC == "WAVES"))
361361 then unit
362362 else fromBase58String(cC)), ScriptTransfer(cA, cT, if ((cD == "WAVES"))
363363 then unit
364364 else fromBase58String(cD)), StringEntry(ah(toString(cA), cx), bH(cS, cT, cz, cN, height, lastBlock.timestamp)), IntegerEntry(aa(), cN), IntegerEntry(ab(height, lastBlock.timestamp), cN)]
365365 $Tuple10(cS, cT, cC, cD, cI, cK, cH, cM, cG, cU)
366366 }
367367 }
368368
369369
370370 func cV (cx,bU,cW,cX,cY,cZ,cA,da,db,dc,dd,de,df) = {
371371 let cB = bj
372372 let dg = toBase58String(value(bk))
373373 let dh = toBase58String(value(bl))
374374 let di = bo
375375 let dj = bp
376376 let dk = bm
377377 let dl = bn
378378 let cG = toString(bi)
379379 let dm = valueOrErrorMessage(assetInfo(cB), "Wr lp as").quantity
380380 let cI = if (da)
381381 then bL(dg)
382382 else if (if (dc)
383383 then (df == dg)
384384 else false)
385385 then (bL(dg) - de)
386386 else if (dc)
387387 then bL(dg)
388388 else (bL(dg) - cW)
389389 let cK = if (da)
390390 then bL(dh)
391391 else if (if (dc)
392392 then (df == dh)
393393 else false)
394394 then (bL(dh) - de)
395395 else if (dc)
396396 then bL(dh)
397397 else (bL(dh) - cY)
398398 let dn = H(cW, dk)
399399 let do = H(cY, dl)
400400 let dp = bN(do, dn)
401401 let cJ = H(cI, dk)
402402 let cL = H(cK, dl)
403403 let dq = if ((dm == 0))
404404 then {
405405 let cM = d
406406 let dr = d
407407 let co = pow((dn * do), 0, toBigInt(5), 1, 0, DOWN)
408408 $Tuple5(K(co, a), K(dn, dk), K(do, dl), bN((cL + do), (cJ + dn)), dr)
409409 }
410410 else {
411411 let cM = bN(cL, cJ)
412412 let ds = fraction(V((cM - dp)), c, cM)
413413 let dr = H(bU, a)
414414 if (if (if (dd)
415415 then (cM != d)
416416 else false)
417417 then (ds > dr)
418418 else false)
419419 then throw(((("Price slippage " + toString(ds)) + " > ") + toString(dr)))
420420 else {
421421 let dt = H(dm, a)
422422 let du = fraction(dn, bQ(cL, cJ, CEILING), c, CEILING)
423423 let dv = fraction(do, c, bQ(cL, cJ, FLOOR), CEILING)
424424 let dw = if ((du > do))
425425 then $Tuple2(dv, do)
426426 else $Tuple2(dn, du)
427427 let dx = dw._1
428428 let dy = dw._2
429429 let co = fraction(dt, dy, cL, FLOOR)
430430 $Tuple5(N(co, a, FLOOR), N(dx, dk, CEILING), N(dy, dl, CEILING), cM, dr)
431431 }
432432 }
433433 let dz = dq._1
434434 let dA = dq._2
435435 let dB = dq._3
436436 let cN = K(dq._4, a)
437437 let dC = K(dq._5, a)
438438 if ((0 >= dz))
439439 then throw("LP <= 0")
440440 else {
441441 let dD = if (!(db))
442442 then 0
443443 else dz
444444 let dE = (cW - dA)
445445 let dF = (cY - dB)
446446 let dG = if (if (dc)
447447 then (df == dg)
448448 else false)
449449 then $Tuple2(de, 0)
450450 else if (if (dc)
451451 then (df == dh)
452452 else false)
453453 then $Tuple2(0, de)
454454 else $Tuple2(dA, dB)
455455 let dH = dG._1
456456 let dI = dG._2
457457 let dJ = [IntegerEntry(aa(), cN), IntegerEntry(ab(height, lastBlock.timestamp), cN), StringEntry(ae(cA, cx), bw(dH, dI, dD, cN, bU, dC, height, lastBlock.timestamp, dE, dF))]
458458 $Tuple13(dz, dD, cN, cI, cK, dm, cB, cG, dJ, dE, dF, cX, cZ)
459459 }
460460 }
461461
462462
463463 func dK (dL) = {
464464 let dM = dL[0]
465465 let dN = dL[1]
466466 let dO = (dM + dN)
467467 if ((dO == e))
468468 then e
469469 else {
470470 let dP = parseIntValue(aS)
471471 let dQ = (dP * 2)
472472 let cs = fraction(dM, dN, f)
473473 let dR = fraction(cs, i, f)
474474 let dS = fraction(toBigInt(dQ), dO, f)
475475 let dT = toBigInt((dQ - 1))
476476 func dU (dV) = {
477477 let dW = fraction(dV, dV, f)
478478 let dX = fraction(dW, dV, f)
479479 let dY = fraction(dX, f, dR)
480480 fraction((dS + fraction(dY, g, f)), dV, (fraction(dT, dV, f) + fraction(h, dY, f)), CEILING)
481481 }
482482
483483 func dZ (ea,eb) = if (ea._2)
484484 then ea
485485 else {
486486 let dV = ea._1
487487 let ec = dU(dV)
488488 let ed = (ec - value(dV))
489489 let ee = if ((e > ed))
490490 then -(ed)
491491 else ed
492492 if ((f >= ee))
493493 then $Tuple2(ec, true)
494494 else $Tuple2(ec, false)
495495 }
496496
497497 let ef = [0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14]
498498 let eg = {
499499 let eh = ef
500500 let ei = size(eh)
501501 let ej = $Tuple2(dO, false)
502502 func ek (el,em) = if ((em >= ei))
503503 then el
504504 else dZ(el, eh[em])
505505
506506 func en (el,em) = if ((em >= ei))
507507 then el
508508 else throw("List size exceeds 15")
509509
510510 en(ek(ek(ek(ek(ek(ek(ek(ek(ek(ek(ek(ek(ek(ek(ek(ej, 0), 1), 2), 3), 4), 5), 6), 7), 8), 9), 10), 11), 12), 13), 14), 15)
511511 }
512512 let dV = eg._1
513513 let eo = eg._2
514514 if (eo)
515515 then dV
516516 else throw(("D calculation error, D = " + toString(dV)))
517517 }
518518 }
519519
520520
521521 func ep (dL) = {
522522 let eq = g
523523 let dM = dL[0]
524524 let dN = dL[1]
525525 let er = parseBigIntValue(l)
526526 let dP = (parseBigIntValue(aS) * er)
527527 let dO = (dM + dN)
528528 if ((dO == e))
529529 then e
530530 else {
531531 let dQ = (dP * eq)
532532 let dR = (((dM * dN) * eq) * eq)
533533 let es = ((dQ * dO) / er)
534534 let et = (dQ - er)
535535 let eu = (eq + f)
536536 func dZ (ea,ev) = {
537537 let ew = ea
538538 let dV = ew._1
539539 let eo = ew._2
540540 if ((eo != unit))
541541 then ea
542542 else {
543543 let dY = (((dV * dV) * dV) / dR)
544544 let ec = (((es + (dY * eq)) * dV) / (((et * dV) / er) + (eu * dY)))
545545 let ee = W((ec - value(dV)))
546546 if ((f >= ee))
547547 then $Tuple2(ec, ev)
548548 else $Tuple2(ec, unit)
549549 }
550550 }
551551
552552 let ef = [0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14]
553553 let ex = {
554554 let eh = ef
555555 let ei = size(eh)
556556 let ej = $Tuple2(dO, unit)
557557 func ek (el,em) = if ((em >= ei))
558558 then el
559559 else dZ(el, eh[em])
560560
561561 func en (el,em) = if ((em >= ei))
562562 then el
563563 else throw("List size exceeds 15")
564564
565565 en(ek(ek(ek(ek(ek(ek(ek(ek(ek(ek(ek(ek(ek(ek(ek(ej, 0), 1), 2), 3), 4), 5), 6), 7), 8), 9), 10), 11), 12), 13), 14), 15)
566566 }
567567 let dV = ex._1
568568 let eo = ex._2
569569 if ((eo != unit))
570570 then dV
571571 else throw(("D calculation error, D = " + toString(dV)))
572572 }
573573 }
574574
575575
576576 func ey (dL,eb,ez) = {
577577 let eq = g
578578 let eA = dL[if ((eb == 0))
579579 then 1
580580 else 0]
581581 let er = parseBigIntValue(l)
582582 let dP = (parseBigIntValue(aS) * er)
583583 let dO = eA
584584 let dQ = (dP * eq)
585585 let eB = (((((ez * ez) / (eA * eq)) * ez) * er) / (dQ * eq))
586586 let eC = ((dO + ((ez * er) / dQ)) - ez)
587587 func dZ (ea,ev) = {
588588 let eD = ea
589589 let eE = eD._1
590590 let eo = eD._2
591591 if ((eo != unit))
592592 then ea
593593 else {
594594 let eF = (((eE * eE) + eB) / ((g * eE) + eC))
595595 let eG = W((eF - value(eE)))
596596 if ((f >= eG))
597597 then $Tuple2(eF, ev)
598598 else $Tuple2(eF, unit)
599599 }
600600 }
601601
602602 let ef = [0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14]
603603 let eH = {
604604 let eh = ef
605605 let ei = size(eh)
606606 let ej = $Tuple2(ez, unit)
607607 func ek (el,em) = if ((em >= ei))
608608 then el
609609 else dZ(el, eh[em])
610610
611611 func en (el,em) = if ((em >= ei))
612612 then el
613613 else throw("List size exceeds 15")
614614
615615 en(ek(ek(ek(ek(ek(ek(ek(ek(ek(ek(ek(ek(ek(ek(ek(ej, 0), 1), 2), 3), 4), 5), 6), 7), 8), 9), 10), 11), 12), 13), 14), 15)
616616 }
617617 let eE = eH._1
618618 let eo = eH._2
619619 if ((eo != unit))
620620 then eE
621621 else throw(("Y calculation error, Y = " + toString(eE)))
622622 }
623623
624624
625625 func eI (eJ,eK,eL) = {
626626 let eM = fraction(dK([H(toInt(eJ), bm), H(toInt(eK), bn)]), f, eL)
627627 if ((eL == e))
628628 then e
629629 else eM
630630 }
631631
632632
633633 func eN (eO,eP,eQ) = {
634634 let eR = (toBigInt(bL(bc(bk))) - eO)
635635 let eS = (toBigInt(bL(bc(bl))) - eP)
636636 let eT = (toBigInt(value(assetInfo(bj)).quantity) - eQ)
637637 let eU = eI(eR, eS, eT)
638638 eU
639639 }
640640
641641
642642 func eV (eW,eX,eQ) = {
643643 let eR = (bL(bc(bk)) + eW)
644644 let eS = (bL(bc(bl)) + eX)
645645 let eT = (value(assetInfo(bj)).quantity + eQ)
646646 let eM = eI(toBigInt(eR), toBigInt(eS), toBigInt(eT))
647647 let eY = [IntegerEntry(ap, height), StringEntry(ao, toString(eM))]
648648 $Tuple2(eY, eM)
649649 }
650650
651651
652652 func eZ (fa,eM) = if ((eM >= fa))
653653 then true
654654 else aL("updated DLp lower than current DLp")
655655
656656
657657 func fb (fc) = {
658658 let fd = fc.amount
659659 let fe = fraction(fc.amount, fc.price, a, FLOOR)
660660 let ff = if ((fc.orderType == Buy))
661661 then $Tuple2(fd, -(fe))
662662 else $Tuple2(-(fd), fe)
663663 let eW = ff._1
664664 let eX = ff._2
665665 if (if (if (aT())
666666 then true
667667 else (bi == r))
668668 then true
669669 else (bi == s))
670670 then throw("Admin blocked")
671671 else if (if ((fc.assetPair.amountAsset != bk))
672672 then true
673673 else (fc.assetPair.priceAsset != bl))
674674 then throw("Wr assets")
675675 else {
676676 let fg = parseBigIntValue(getStringValue(this, ao))
677677 let fh = eV(eW, eX, 0)
678678 let fi = fh._1
679679 let fj = fh._2
680680 let fk = (fj >= fg)
681681 fk
682682 }
683683 }
684684
685685
686686 func fl (eb) = if ((size(eb.payments) != 1))
687687 then throw("1 pmnt exp")
688688 else {
689689 let fm = value(eb.payments[0])
690690 let cy = value(fm.assetId)
691691 let de = fm.amount
692692 let dq = cw(toBase58String(eb.transactionId), toBase58String(cy), de, eb.caller)
693693 let cS = dq._1
694694 let cT = dq._2
695695 let cG = parseIntValue(dq._9)
696696 let cU = dq._10
697697 if (if (aT())
698698 then true
699699 else (cG == s))
700700 then throw(("Admin blocked: " + toString(cG)))
701701 else $Tuple5(cS, cT, de, cy, cU)
702702 }
703703
704704
705705 func fn (fo,ag,fp,fq,bU,db,dc,dd,de,df) = {
706706 let dq = cV(ag, bU, value(fp).amount, value(fp).assetId, value(fq).amount, value(fq).assetId, fo, (ag == ""), db, dc, dd, de, df)
707707 let cG = parseIntValue(dq._8)
708708 if (if (if (aT())
709709 then true
710710 else (cG == q))
711711 then true
712712 else (cG == s))
713713 then throw(("Blocked:" + toString(cG)))
714714 else dq
715715 }
716716
717717
718718 func fr (fs,cy,cA,ag,ft) = {
719719 let cC = toBase58String(value(bk))
720720 let cD = toBase58String(value(bl))
721721 let cB = bj
722722 let dk = bm
723723 let dl = bn
724724 let eT = toBigInt(valueOrErrorMessage(assetInfo(cB), "invalid lp asset").quantity)
725725 let fu = if ((eT > e))
726726 then true
727727 else throw("initial deposit requires all coins")
728728 if ((fu == fu))
729729 then {
730730 let cI = bL(cC)
731731 let cK = bL(cD)
732732 let fv = if ((ag == ""))
733733 then $Tuple2(cI, cK)
734734 else if ((cy == cC))
735735 then if ((fs > cI))
736736 then throw("invalid payment amount")
737737 else $Tuple2((cI - fs), cK)
738738 else if ((cy == cD))
739739 then if ((fs > cK))
740740 then throw("invalid payment amount")
741741 else $Tuple2(cI, (cK - fs))
742742 else throw("wrong pmtAssetId")
743743 let fw = fv._1
744744 let fx = fv._2
745745 let fy = if ((cy == cC))
746746 then $Tuple2(fs, 0)
747747 else if ((cy == cD))
748748 then $Tuple2(0, fs)
749749 else throw("invalid payment")
750750 let fz = fy._1
751751 let fA = fy._2
752752 let fB = if (ft)
753753 then $Tuple3(ct(fz, aP)._1, ct(fA, aP)._1, ct(fs, aP)._2)
754754 else $Tuple3(fz, fA, 0)
755755 let fC = fB._1
756756 let fD = fB._2
757757 let cv = fB._3
758758 let fE = (fw + fC)
759759 let fF = (fx + fD)
760760 let bZ = dK([toBigInt(fw), toBigInt(fx)])
761761 let bY = dK([toBigInt(fE), toBigInt(fF)])
762762 let fG = if ((bY > bZ))
763763 then true
764764 else throw()
765765 if ((fG == fG))
766766 then {
767767 let fH = fraction(eT, (bY - bZ), bZ, FLOOR)
768768 let cN = K(bN(H(fF, dl), H(fE, dk)), a)
769769 let dJ = [IntegerEntry(aa(), cN), IntegerEntry(ab(height, lastBlock.timestamp), cN), StringEntry(ae(cA, ag), bw(fz, fA, toInt(fH), cN, 0, 0, height, lastBlock.timestamp, 0, 0))]
770770 let fI = fraction(fx, a, fw)
771771 let fJ = fraction(fs, a, (fI + a))
772772 let fK = (fs - fJ)
773773 let fL = fraction(eT, toBigInt(fK), toBigInt(fx))
774774 let fM = toInt(fraction((fH - fL), b, fL))
775775 $Tuple4(toInt(fH), dJ, cv, fM)
776776 }
777777 else throw("Strict value is not equal to itself.")
778778 }
779779 else throw("Strict value is not equal to itself.")
780780 }
781781
782782
783783 func fN (fO,fP,fQ,fo,fR,fS) = {
784784 let cB = toBase58String(value(bj))
785785 let cC = toBase58String(value(bk))
786786 let cD = toBase58String(value(bl))
787787 let fT = bm
788788 let fU = bn
789789 let fV = bi
790790 let cA = if ((fo == bv))
791791 then fR
792792 else fo
793793 let fm = value(fQ[0])
794794 let cy = value(fm.assetId)
795795 let de = fm.amount
796796 let eU = eN(e, e, e)
797797 if ((eU == eU))
798798 then {
799799 let cx = toBase58String(fS)
800800 if ((cB != toBase58String(cy)))
801801 then throw("Wrong LP")
802802 else {
803803 let cI = bL(cC)
804804 let cK = bL(cD)
805805 let fW = {
806806 let aQ = invoke(this, "getOneTknV2READONLY", [fO, de], nil)
807807 if ($isInstanceOf(aQ, "(Int, Int)"))
808808 then aQ
809809 else throw(($getType(aQ) + " couldn't be cast to (Int, Int)"))
810810 }
811811 if ((fW == fW))
812812 then {
813813 let cv = fW._2
814814 let fX = fW._1
815815 let fY = if (if ((fP > 0))
816816 then (fP > fX)
817817 else false)
818818 then aL(makeString(["amount to receive is less than ", toString(fP)], ""))
819819 else fX
820820 let fZ = if ((fO == cC))
821821 then $Tuple4(fY, 0, ((cI - fY) - cv), cK)
822822 else if ((fO == cD))
823823 then $Tuple4(0, fY, cI, ((cK - fY) - cv))
824824 else throw("invalid out asset id")
825825 let ga = fZ._1
826826 let gb = fZ._2
827827 let fE = fZ._3
828828 let fF = fZ._4
829829 let gc = bN(H(fF, fU), H(fE, fT))
830830 let gd = K(gc, a)
831831 let ge = if ((fO == "WAVES"))
832832 then unit
833833 else fromBase58String(fO)
834834 let gf = if ((cv > 0))
835835 then [ScriptTransfer(aV, cv, ge)]
836836 else nil
837837 let cU = ([ScriptTransfer(cA, fY, ge), StringEntry(ah(toString(cA), cx), bH(ga, gb, de, gd, height, lastBlock.timestamp)), IntegerEntry(aa(), gd), IntegerEntry(ab(height, lastBlock.timestamp), gd)] ++ gf)
838838 if ((cU == cU))
839839 then {
840840 let gg = invoke(aO, "burn", [de], [AttachedPayment(cy, de)])
841841 if ((gg == gg))
842842 then {
843843 let gh = {
844844 let gi = if ((this == aV))
845845 then 0
846846 else cv
847847 let gj = if ((ba(fO) == bk))
848848 then true
849849 else false
850850 if (gj)
851851 then $Tuple2(-((fX + gi)), 0)
852852 else $Tuple2(0, -((fX + gi)))
853853 }
854854 let eW = gh._1
855855 let eX = gh._2
856856 let gk = eV(eW, eX, 0)
857857 let gl = gk._1
858858 let eM = gk._2
859859 let gm = eZ(eU, eM)
860860 if ((gm == gm))
861861 then $Tuple2((cU ++ gl), fY)
862862 else throw("Strict value is not equal to itself.")
863863 }
864864 else throw("Strict value is not equal to itself.")
865865 }
866866 else throw("Strict value is not equal to itself.")
867867 }
868868 else throw("Strict value is not equal to itself.")
869869 }
870870 }
871871 else throw("Strict value is not equal to itself.")
872872 }
873873
874874
875875 func gn () = {
876876 let go = getString(Y())
877877 if ($isInstanceOf(go, "String"))
878878 then {
879879 let dO = go
880880 fromBase58String(dO)
881881 }
882882 else if ($isInstanceOf(go, "Unit"))
883883 then unit
884884 else throw("Match error")
885885 }
886886
887887
888888 func gp () = {
889889 let go = getString(Z())
890890 if ($isInstanceOf(go, "String"))
891891 then {
892892 let dO = go
893893 fromBase58String(dO)
894894 }
895895 else if ($isInstanceOf(go, "Unit"))
896896 then unit
897897 else throw("Match error")
898898 }
899899
900900
901901 let gq = throw("Permission denied")
902902
903903 func gr (eb) = {
904904 let go = gn()
905905 if ($isInstanceOf(go, "ByteVector"))
906906 then {
907907 let gs = go
908908 (eb.callerPublicKey == gs)
909909 }
910910 else if ($isInstanceOf(go, "Unit"))
911911 then (eb.caller == this)
912912 else throw("Match error")
913913 }
914914
915915
916916 func gt (eb) = {
917917 let go = gn()
918918 if ($isInstanceOf(go, "ByteVector"))
919919 then {
920920 let gs = go
921921 if ((eb.callerPublicKey == gs))
922922 then true
923923 else gq
924924 }
925925 else if ($isInstanceOf(go, "Unit"))
926926 then if ((eb.caller == this))
927927 then true
928928 else gq
929929 else throw("Match error")
930930 }
931931
932932
933933 @Callable(eb)
934934 func constructor (X) = {
935935 let eB = gt(eb)
936936 if ((eB == eB))
937937 then [StringEntry(X(), X)]
938938 else throw("Strict value is not equal to itself.")
939939 }
940940
941941
942942
943943 @Callable(eb)
944944 func setManager (gu) = {
945945 let eB = gt(eb)
946946 if ((eB == eB))
947947 then {
948948 let gv = fromBase58String(gu)
949949 if ((gv == gv))
950950 then [StringEntry(Z(), gu)]
951951 else throw("Strict value is not equal to itself.")
952952 }
953953 else throw("Strict value is not equal to itself.")
954954 }
955955
956956
957957
958958 @Callable(eb)
959959 func confirmManager () = {
960960 let cs = gp()
961961 let gw = if (isDefined(cs))
962962 then true
963963 else throw("No pending manager")
964964 if ((gw == gw))
965965 then {
966966 let gx = if ((eb.callerPublicKey == value(cs)))
967967 then true
968968 else throw("You are not pending manager")
969969 if ((gx == gx))
970970 then [StringEntry(Y(), toBase58String(value(cs))), DeleteEntry(Z())]
971971 else throw("Strict value is not equal to itself.")
972972 }
973973 else throw("Strict value is not equal to itself.")
974974 }
975975
976976
977977
978978 @Callable(eb)
979979 func put (gy,gz) = {
980980 let gA = bq()
981981 let gB = valueOrErrorMessage(addressFromString(gA[C]), "Wr st addr")
982982 let gC = valueOrErrorMessage(addressFromString(gA[E]), "Wr sl addr")
983983 if ((0 > gy))
984984 then throw("Wrong slippage")
985985 else if ((size(eb.payments) != 2))
986986 then throw("2 pmnts expd")
987987 else {
988988 let gD = toBigInt(value(eb.payments[0]).amount)
989989 let gE = toBigInt(value(eb.payments[1]).amount)
990990 let eR = (toBigInt(bL(bc(bk))) - gD)
991991 if ((eR == eR))
992992 then {
993993 let eS = (toBigInt(bL(bc(bl))) - gE)
994994 if ((eS == eS))
995995 then {
996996 let eT = toBigInt(value(assetInfo(bj)).quantity)
997997 if ((eT == eT))
998998 then {
999999 let eU = eN(gD, gE, toBigInt(0))
10001000 if ((eU == eU))
10011001 then {
10021002 let gF = fn(toString(eb.caller), toBase58String(eb.transactionId), AttachedPayment(value(eb.payments[0]).assetId, value(eb.payments[0]).amount), eb.payments[1], gy, true, false, true, 0, "")
10031003 let dD = gF._2
10041004 let gG = gF._7
10051005 let cU = gF._9
10061006 let dE = gF._10
10071007 let dF = gF._11
10081008 let cC = gF._12
10091009 let cD = gF._13
10101010 let dq = invoke(aO, "emit", [dD], nil)
10111011 if ((dq == dq))
10121012 then {
10131013 let gH = {
10141014 let go = dq
10151015 if ($isInstanceOf(go, "Address"))
10161016 then {
10171017 let gI = go
10181018 invoke(gI, "emit", [dD], nil)
10191019 }
10201020 else unit
10211021 }
10221022 if ((gH == gH))
10231023 then {
10241024 let gJ = if ((dE > 0))
10251025 then invoke(gC, "put", nil, [AttachedPayment(cC, dE)])
10261026 else nil
10271027 if ((gJ == gJ))
10281028 then {
10291029 let gK = if ((dF > 0))
10301030 then invoke(gC, "put", nil, [AttachedPayment(cD, dF)])
10311031 else nil
10321032 if ((gK == gK))
10331033 then {
10341034 let gL = if (gz)
10351035 then {
10361036 let gM = invoke(gB, "stake", nil, [AttachedPayment(gG, dD)])
10371037 if ((gM == gM))
10381038 then nil
10391039 else throw("Strict value is not equal to itself.")
10401040 }
10411041 else [ScriptTransfer(eb.caller, dD, gG)]
10421042 let gN = eV(0, 0, 0)
10431043 let gl = gN._1
10441044 let eM = gN._2
10451045 let gO = if ((eM >= eU))
10461046 then true
10471047 else aL(makeString(["updated DLp lower than current DLp", toString(eR), toString(eS), toString(eT), toString(eU), toString(eM), toString(dE), toString(dF)], " "))
10481048 if ((gO == gO))
10491049 then {
10501050 let gP = value(assetInfo(bj)).quantity
10511051 if ((gP == gP))
10521052 then ((cU ++ gL) ++ gl)
10531053 else throw("Strict value is not equal to itself.")
10541054 }
10551055 else throw("Strict value is not equal to itself.")
10561056 }
10571057 else throw("Strict value is not equal to itself.")
10581058 }
10591059 else throw("Strict value is not equal to itself.")
10601060 }
10611061 else throw("Strict value is not equal to itself.")
10621062 }
10631063 else throw("Strict value is not equal to itself.")
10641064 }
10651065 else throw("Strict value is not equal to itself.")
10661066 }
10671067 else throw("Strict value is not equal to itself.")
10681068 }
10691069 else throw("Strict value is not equal to itself.")
10701070 }
10711071 else throw("Strict value is not equal to itself.")
10721072 }
10731073 }
10741074
10751075
10761076
10771077 @Callable(eb)
10781078 func putOneTknV2 (fP,gz) = {
10791079 let gQ = {
10801080 let aQ = invoke(aO, "isPoolOneTokenOperationsDisabledREADONLY", [toString(this)], nil)
10811081 if ($isInstanceOf(aQ, "Boolean"))
10821082 then aQ
10831083 else throw(($getType(aQ) + " couldn't be cast to Boolean"))
10841084 }
10851085 let gR = if (if (if (aT())
10861086 then true
10871087 else (bi == q))
10881088 then true
10891089 else (bi == s))
10901090 then true
10911091 else gQ
10921092 let gS = [if (if (!(gR))
10931093 then true
10941094 else gr(eb))
10951095 then true
10961096 else aL("put operation is blocked by admin"), if ((size(eb.payments) == 1))
10971097 then true
10981098 else aL("exactly 1 payment are expected")]
10991099 if ((gS == gS))
11001100 then {
11011101 let cC = toBase58String(value(bk))
11021102 let cD = toBase58String(value(bl))
11031103 let cB = bj
11041104 let fT = bm
11051105 let fU = bn
11061106 let cA = if ((eb.caller == this))
11071107 then eb.originCaller
11081108 else eb.caller
11091109 let fm = value(eb.payments[0])
11101110 let cy = toBase58String(value(fm.assetId))
11111111 let de = fm.amount
11121112 let eU = if ((fm.assetId == bk))
11131113 then eN(toBigInt(de), toBigInt(0), toBigInt(0))
11141114 else eN(toBigInt(0), toBigInt(de), toBigInt(0))
11151115 if ((eU == eU))
11161116 then {
11171117 let gT = fr(de, cy, toString(cA), toBase58String(eb.transactionId), true)
11181118 if ((gT == gT))
11191119 then {
11201120 let cv = gT._3
11211121 let cU = gT._2
11221122 let gU = gT._1
11231123 let dD = if (if ((fP > 0))
11241124 then (fP > gU)
11251125 else false)
11261126 then aL(makeString(["amount to receive is less than ", toString(fP)], ""))
11271127 else gU
11281128 let gF = invoke(aO, "emit", [dD], nil)
11291129 if ((gF == gF))
11301130 then {
11311131 let gH = {
11321132 let go = gF
11331133 if ($isInstanceOf(go, "Address"))
11341134 then {
11351135 let gI = go
11361136 invoke(gI, "emit", [dD], nil)
11371137 }
11381138 else unit
11391139 }
11401140 if ((gH == gH))
11411141 then {
11421142 let gL = if (gz)
11431143 then {
11441144 let gM = invoke(bs, "stake", nil, [AttachedPayment(cB, dD)])
11451145 if ((gM == gM))
11461146 then nil
11471147 else throw("Strict value is not equal to itself.")
11481148 }
11491149 else [ScriptTransfer(eb.caller, dD, cB)]
11501150 let gf = if ((cv > 0))
11511151 then [ScriptTransfer(aV, cv, fromBase58String(cy))]
11521152 else nil
11531153 let gV = if ((this == aV))
11541154 then $Tuple2(0, 0)
11551155 else {
11561156 let gW = if ((fm.assetId == bk))
11571157 then true
11581158 else false
11591159 if (gW)
11601160 then $Tuple2(-(cv), 0)
11611161 else $Tuple2(0, -(cv))
11621162 }
11631163 let eW = gV._1
11641164 let eX = gV._2
11651165 let gX = eV(eW, eX, 0)
11661166 let gl = gX._1
11671167 let eM = gX._2
11681168 let gm = eZ(eU, eM)
11691169 if ((gm == gm))
11701170 then $Tuple2((((cU ++ gL) ++ gf) ++ gl), dD)
11711171 else throw("Strict value is not equal to itself.")
11721172 }
11731173 else throw("Strict value is not equal to itself.")
11741174 }
11751175 else throw("Strict value is not equal to itself.")
11761176 }
11771177 else throw("Strict value is not equal to itself.")
11781178 }
11791179 else throw("Strict value is not equal to itself.")
11801180 }
11811181 else throw("Strict value is not equal to itself.")
11821182 }
11831183
11841184
11851185
11861186 @Callable(eb)
11871187 func putForFree (gY) = if ((0 > gY))
11881188 then throw("Wrong slpg")
11891189 else if ((size(eb.payments) != 2))
11901190 then throw("2 pmnts expd")
11911191 else {
11921192 let gZ = fn(toString(eb.caller), toBase58String(eb.transactionId), AttachedPayment(value(eb.payments[0]).assetId, value(eb.payments[0]).amount), eb.payments[1], gY, false, false, true, 0, "")
11931193 let cU = gZ._9
11941194 let gD = toBigInt(value(eb.payments[0]).amount)
11951195 let gE = toBigInt(value(eb.payments[1]).amount)
11961196 let eU = eN(gD, gE, toBigInt(0))
11971197 if ((eU == eU))
11981198 then {
11991199 let ha = eV(0, 0, 0)
12001200 let gl = ha._1
12011201 let eM = ha._2
12021202 let gm = eZ(eU, eM)
12031203 if ((gm == gm))
12041204 then (cU ++ gl)
12051205 else throw("Strict value is not equal to itself.")
12061206 }
12071207 else throw("Strict value is not equal to itself.")
12081208 }
12091209
12101210
12111211
12121212 @Callable(eb)
12131213 func get () = {
12141214 let eU = eN(toBigInt(0), toBigInt(0), toBigInt(0))
12151215 if ((eU == eU))
12161216 then {
12171217 let dq = fl(eb)
12181218 let hb = dq._1
12191219 let cT = dq._2
12201220 let de = dq._3
12211221 let cy = dq._4
12221222 let cU = dq._5
12231223 let eC = invoke(aO, "burn", [de], [AttachedPayment(cy, de)])
12241224 if ((eC == eC))
12251225 then {
12261226 let hc = eV(-(hb), -(cT), 0)
12271227 let gl = hc._1
12281228 let eM = hc._2
12291229 let gm = eZ(eU, eM)
12301230 if ((gm == gm))
12311231 then (cU ++ gl)
12321232 else throw("Strict value is not equal to itself.")
12331233 }
12341234 else throw("Strict value is not equal to itself.")
12351235 }
12361236 else throw("Strict value is not equal to itself.")
12371237 }
12381238
12391239
12401240
12411241 @Callable(eb)
12421242 func getOneTknV2 (fO,fP) = {
12431243 let gQ = {
12441244 let aQ = invoke(aO, "isPoolOneTokenOperationsDisabledREADONLY", [toString(this)], nil)
12451245 if ($isInstanceOf(aQ, "Boolean"))
12461246 then aQ
12471247 else throw(($getType(aQ) + " couldn't be cast to Boolean"))
12481248 }
12491249 let hd = if (if (aT())
12501250 then true
12511251 else (bi == s))
12521252 then true
12531253 else gQ
12541254 let gS = [if (if (!(hd))
12551255 then true
12561256 else gr(eb))
12571257 then true
12581258 else aL("get operation is blocked by admin"), if ((size(eb.payments) == 1))
12591259 then true
12601260 else aL("exactly 1 payment are expected")]
12611261 if ((gS == gS))
12621262 then {
12631263 let he = fN(fO, fP, eb.payments, eb.caller, eb.originCaller, eb.transactionId)
12641264 let cU = he._1
12651265 let fY = he._2
12661266 $Tuple2(cU, fY)
12671267 }
12681268 else throw("Strict value is not equal to itself.")
12691269 }
12701270
12711271
12721272
12731273 @Callable(eb)
12741274 func refreshDLp () = {
12751275 let hf = valueOrElse(getInteger(ap), 0)
12761276 let hg = if (((height - hf) >= as))
12771277 then unit
12781278 else aL(makeString([toString(as), " blocks have not passed since the previous call"], ""))
12791279 if ((hg == hg))
12801280 then {
12811281 let fg = valueOrErrorMessage(parseBigInt(valueOrElse(getString(this, ao), "0")), aN("invalid dLp"))
12821282 let hh = eV(0, 0, 0)
12831283 let hi = hh._1
12841284 let eM = hh._2
12851285 let eY = if ((fg != eM))
12861286 then hi
12871287 else aL("nothing to refresh")
12881288 $Tuple2(eY, toString(eM))
12891289 }
12901290 else throw("Strict value is not equal to itself.")
12911291 }
12921292
12931293
12941294
12951295 @Callable(eb)
12961296 func getOneTknV2READONLY (fO,hj) = {
12971297 let cC = toBase58String(value(bk))
12981298 let cD = toBase58String(value(bl))
12991299 let cB = toBase58String(value(bj))
13001300 let dL = [toBigInt(bL(cC)), toBigInt(bL(cD))]
13011301 let eL = toBigInt(valueOrErrorMessage(assetInfo(fromBase58String(cB)), "invalid lp asset").quantity)
13021302 let bZ = dK(dL)
13031303 let bY = (bZ - fraction(toBigInt(hj), bZ, eL))
13041304 let hk = if ((fO == cC))
13051305 then 0
13061306 else if ((fO == cD))
13071307 then 1
13081308 else throw("invalid out asset id")
13091309 let hl = ey(dL, hk, bY)
13101310 let hm = (dL[hk] - hl)
13111311 let hn = max([0, toInt((hm - f))])
13121312 let ho = ct(hn, aR)
13131313 let fX = ho._1
13141314 let cv = ho._2
13151315 $Tuple2(nil, $Tuple2(fX, cv))
13161316 }
13171317
13181318
13191319
13201320 @Callable(eb)
13211321 func getOneTknV2WithBonusREADONLY (fO,hj) = {
13221322 let cC = toBase58String(value(bk))
13231323 let cD = toBase58String(value(bl))
13241324 let cB = toBase58String(value(bj))
13251325 let cI = bL(cC)
13261326 let cK = bL(cD)
13271327 let hp = {
13281328 let aQ = invoke(this, "getOneTknV2READONLY", [fO, hj], nil)
13291329 if ($isInstanceOf(aQ, "(Int, Int)"))
13301330 then aQ
13311331 else throw(($getType(aQ) + " couldn't be cast to (Int, Int)"))
13321332 }
13331333 let fX = hp._1
13341334 let cv = hp._2
13351335 let dq = cw("", cB, hj, this)
13361336 let cS = dq._1
13371337 let cT = dq._2
13381338 let hq = (cS + cT)
13391339 let fM = if ((hq == 0))
13401340 then if ((fX == 0))
13411341 then 0
13421342 else throw("bonus calculation error")
13431343 else fraction((fX - hq), a, hq)
13441344 $Tuple2(nil, $Tuple3(fX, cv, fM))
13451345 }
13461346
13471347
13481348
13491349 @Callable(eb)
13501350 func getNoLess (hr,hs) = {
13511351 let dq = fl(eb)
13521352 let cS = dq._1
13531353 let cT = dq._2
13541354 let de = dq._3
13551355 let cy = dq._4
13561356 let cU = dq._5
13571357 if ((hr > cS))
13581358 then throw(((("Failed: " + toString(cS)) + " < ") + toString(hr)))
13591359 else if ((hs > cT))
13601360 then throw(((("Failed: " + toString(cT)) + " < ") + toString(hs)))
13611361 else {
13621362 let eU = eN(toBigInt(0), toBigInt(0), toBigInt(0))
13631363 if ((eU == eU))
13641364 then {
13651365 let ht = invoke(aO, "burn", [de], [AttachedPayment(cy, de)])
13661366 if ((ht == ht))
13671367 then {
13681368 let hu = eV(-(cS), -(cT), 0)
13691369 let gl = hu._1
13701370 let eM = hu._2
13711371 let gm = eZ(eU, eM)
13721372 if ((gm == gm))
13731373 then (cU ++ gl)
13741374 else throw("Strict value is not equal to itself.")
13751375 }
13761376 else throw("Strict value is not equal to itself.")
13771377 }
13781378 else throw("Strict value is not equal to itself.")
13791379 }
13801380 }
13811381
13821382
13831383
13841384 @Callable(eb)
13851385 func unstakeAndGet (cu) = {
13861386 let hv = if ((size(eb.payments) != 0))
13871387 then throw("No pmnts expd")
13881388 else true
13891389 if ((hv == hv))
13901390 then {
13911391 let hw = bq()
13921392 let gG = bj
13931393 let hx = valueOrErrorMessage(addressFromString(hw[C]), "Wr st addr")
13941394 let eU = eN(toBigInt(0), toBigInt(0), toBigInt(0))
1395- let hy = invoke(hx, "unstake", [toBase58String(gG), cu], nil)
1396- if ((hy == hy))
1395+ if ((eU == eU))
13971396 then {
1398- let dq = cw(toBase58String(eb.transactionId), toBase58String(gG), cu, eb.caller)
1399- let cS = dq._1
1400- let cT = dq._2
1401- let cG = parseIntValue(dq._9)
1402- let cU = dq._10
1403- let hz = if (if (aT())
1404- then true
1405- else (cG == s))
1406- then throw(("Blocked: " + toString(cG)))
1407- else true
1408- if ((hz == hz))
1397+ let hy = invoke(hx, "unstake", [toBase58String(gG), cu], nil)
1398+ if ((hy == hy))
14091399 then {
1410- let hA = invoke(aO, "burn", [cu], [AttachedPayment(gG, cu)])
1411- if ((hA == hA))
1400+ let dq = cw(toBase58String(eb.transactionId), toBase58String(gG), cu, eb.caller)
1401+ let cS = dq._1
1402+ let cT = dq._2
1403+ let cG = parseIntValue(dq._9)
1404+ let cU = dq._10
1405+ let hz = if (if (aT())
1406+ then true
1407+ else (cG == s))
1408+ then throw(("Blocked: " + toString(cG)))
1409+ else true
1410+ if ((hz == hz))
14121411 then {
1413- let hB = eV(-(cS), -(cT), 0)
1414- let gl = hB._1
1415- let eM = hB._2
1416- let gm = eZ(eU, eM)
1417- if ((gm == gm))
1418- then (cU ++ gl)
1412+ let hA = invoke(aO, "burn", [cu], [AttachedPayment(gG, cu)])
1413+ if ((hA == hA))
1414+ then {
1415+ let hB = eV(-(cS), -(cT), 0)
1416+ let gl = hB._1
1417+ let eM = hB._2
1418+ let gm = eZ(eU, eM)
1419+ if ((gm == gm))
1420+ then (cU ++ gl)
1421+ else throw("Strict value is not equal to itself.")
1422+ }
14191423 else throw("Strict value is not equal to itself.")
14201424 }
14211425 else throw("Strict value is not equal to itself.")
14221426 }
14231427 else throw("Strict value is not equal to itself.")
14241428 }
14251429 else throw("Strict value is not equal to itself.")
14261430 }
14271431 else throw("Strict value is not equal to itself.")
14281432 }
14291433
14301434
14311435
14321436 @Callable(eb)
14331437 func unstakeAndGetNoLess (hC,hD,hs) = {
14341438 let hd = if (aT())
14351439 then true
14361440 else (bi == s)
14371441 let gS = [if (!(hd))
14381442 then true
14391443 else throw("get operation is blocked by admin"), if ((size(eb.payments) == 0))
14401444 then true
14411445 else throw("no payments are expected")]
14421446 if ((gS == gS))
14431447 then {
14441448 let eU = eN(toBigInt(0), toBigInt(0), toBigInt(0))
1445- let hy = invoke(bs, "unstake", [toBase58String(bj), hC], nil)
1446- if ((hy == hy))
1449+ if ((eU == eU))
14471450 then {
1448- let hE = cw(toBase58String(eb.transactionId), toBase58String(bj), hC, eb.caller)
1449- let cS = hE._1
1450- let cT = hE._2
1451- let cU = hE._10
1452- let hF = [if ((cS >= hD))
1453- then true
1454- else throw(makeString(["amount asset amount to receive is less than ", toString(hD)], "")), if ((cT >= hs))
1455- then true
1456- else throw(makeString(["price asset amount to receive is less than ", toString(hs)], ""))]
1457- if ((hF == hF))
1451+ let hy = invoke(bs, "unstake", [toBase58String(bj), hC], nil)
1452+ if ((hy == hy))
14581453 then {
1459- let ht = invoke(aO, "burn", [hC], [AttachedPayment(bj, hC)])
1460- if ((ht == ht))
1454+ let hE = cw(toBase58String(eb.transactionId), toBase58String(bj), hC, eb.caller)
1455+ let cS = hE._1
1456+ let cT = hE._2
1457+ let cU = hE._10
1458+ let hF = [if ((cS >= hD))
1459+ then true
1460+ else throw(makeString(["amount asset amount to receive is less than ", toString(hD)], "")), if ((cT >= hs))
1461+ then true
1462+ else throw(makeString(["price asset amount to receive is less than ", toString(hs)], ""))]
1463+ if ((hF == hF))
14611464 then {
1462- let hG = eV(-(cS), -(cT), 0)
1463- let gl = hG._1
1464- let eM = hG._2
1465- let gm = eZ(eU, eM)
1466- if ((gm == gm))
1467- then (cU ++ gl)
1465+ let ht = invoke(aO, "burn", [hC], [AttachedPayment(bj, hC)])
1466+ if ((ht == ht))
1467+ then {
1468+ let hG = eV(-(cS), -(cT), 0)
1469+ let gl = hG._1
1470+ let eM = hG._2
1471+ let gm = eZ(eU, eM)
1472+ if ((gm == gm))
1473+ then (cU ++ gl)
1474+ else throw("Strict value is not equal to itself.")
1475+ }
14681476 else throw("Strict value is not equal to itself.")
14691477 }
14701478 else throw("Strict value is not equal to itself.")
14711479 }
14721480 else throw("Strict value is not equal to itself.")
14731481 }
14741482 else throw("Strict value is not equal to itself.")
14751483 }
14761484 else throw("Strict value is not equal to itself.")
14771485 }
14781486
14791487
14801488
14811489 @Callable(eb)
14821490 func unstakeAndGetOneTknV2 (hC,fO,fP) = {
14831491 let gQ = {
14841492 let aQ = invoke(aO, "isPoolOneTokenOperationsDisabledREADONLY", [toString(this)], nil)
14851493 if ($isInstanceOf(aQ, "Boolean"))
14861494 then aQ
14871495 else throw(($getType(aQ) + " couldn't be cast to Boolean"))
14881496 }
14891497 let hd = if (if (aT())
14901498 then true
14911499 else (bi == s))
14921500 then true
14931501 else gQ
14941502 let gS = [if (if (!(hd))
14951503 then true
14961504 else gr(eb))
14971505 then true
14981506 else aL("get operation is blocked by admin"), if ((size(eb.payments) == 0))
14991507 then true
15001508 else aL("no payments are expected")]
15011509 if ((gS == gS))
15021510 then {
15031511 let hw = bq()
15041512 let gG = bj
15051513 let hx = valueOrErrorMessage(addressFromString(hw[C]), "Wr st addr")
15061514 let hy = invoke(hx, "unstake", [toBase58String(gG), hC], nil)
15071515 if ((hy == hy))
15081516 then {
15091517 let hH = fN(fO, fP, [AttachedPayment(gG, hC)], eb.caller, eb.originCaller, eb.transactionId)
15101518 let cU = hH._1
15111519 let fY = hH._2
15121520 $Tuple2(cU, fY)
15131521 }
15141522 else throw("Strict value is not equal to itself.")
15151523 }
15161524 else throw("Strict value is not equal to itself.")
15171525 }
15181526
15191527
15201528
15211529 @Callable(eb)
15221530 func putOneTknV2WithBonusREADONLY (hI,hJ) = {
15231531 let hK = fr(hI, hJ, "", "", true)
15241532 let fH = hK._1
15251533 let cU = hK._2
15261534 let cv = hK._3
15271535 let fM = hK._4
15281536 $Tuple2(nil, $Tuple3(fH, cv, fM))
15291537 }
15301538
15311539
15321540
15331541 @Callable(eb)
15341542 func putOneTknV2WithoutTakeFeeREADONLY (hI,hJ) = {
15351543 let hL = fr(hI, hJ, "", "", false)
15361544 let fH = hL._1
15371545 let cU = hL._2
15381546 let cv = hL._3
15391547 let fM = hL._4
15401548 $Tuple2(nil, $Tuple3(fH, cv, fM))
15411549 }
15421550
15431551
15441552
15451553 @Callable(eb)
15461554 func activate (hM,hN) = if ((toString(eb.caller) != toString(aO)))
15471555 then throw("denied")
15481556 else $Tuple2([StringEntry(ai(), hM), StringEntry(aj(), hN)], "success")
15491557
15501558
15511559
15521560 @Callable(eb)
15531561 func setS (hO,hz) = if ((toString(eb.caller) != aH(this, al())))
15541562 then gq
15551563 else [StringEntry(hO, hz)]
15561564
15571565
15581566
15591567 @Callable(eb)
15601568 func setI (hO,hz) = if ((toString(eb.caller) != aH(this, al())))
15611569 then gq
15621570 else [IntegerEntry(hO, hz)]
15631571
15641572
15651573
15661574 @Callable(eb)
15671575 func getPoolConfigWrapperREADONLY () = $Tuple2(nil, aW())
15681576
15691577
15701578
15711579 @Callable(eb)
15721580 func getAccBalanceWrapperREADONLY (bM) = $Tuple2(nil, bL(bM))
15731581
15741582
15751583
15761584 @Callable(eb)
15771585 func calcPricesWrapperREADONLY (cf,cg,ck) = {
15781586 let hP = cj(cf, cg, ck)
15791587 $Tuple2(nil, [toString(hP[0]), toString(hP[1]), toString(hP[2])])
15801588 }
15811589
15821590
15831591
15841592 @Callable(eb)
15851593 func fromX18WrapperREADONLY (L,hQ) = $Tuple2(nil, K(parseBigIntValue(L), hQ))
15861594
15871595
15881596
15891597 @Callable(eb)
15901598 func toX18WrapperREADONLY (I,J) = $Tuple2(nil, toString(H(I, J)))
15911599
15921600
15931601
15941602 @Callable(eb)
15951603 func calcPriceBigIntWrapperREADONLY (bO,bP) = $Tuple2(nil, toString(bN(parseBigIntValue(bO), parseBigIntValue(bP))))
15961604
15971605
15981606
15991607 @Callable(eb)
16001608 func estimatePutOperationWrapperREADONLY (cx,bU,cW,cX,cY,cZ,hR,da,db) = $Tuple2(nil, cV(cx, bU, cW, cX, cY, cZ, hR, da, db, true, false, 0, ""))
16011609
16021610
16031611
16041612 @Callable(eb)
16051613 func estimateGetOperationWrapperREADONLY (cx,hS,cz,hR) = {
16061614 let dq = cw(cx, hS, cz, addressFromStringValue(hR))
16071615 $Tuple2(nil, $Tuple10(dq._1, dq._2, dq._3, dq._4, dq._5, dq._6, dq._7, toString(dq._8), dq._9, dq._10))
16081616 }
16091617
16101618
16111619 @Verifier(hT)
16121620 func hU () = {
16131621 let hV = {
16141622 let go = gn()
16151623 if ($isInstanceOf(go, "ByteVector"))
16161624 then {
16171625 let gs = go
16181626 gs
16191627 }
16201628 else if ($isInstanceOf(go, "Unit"))
16211629 then hT.senderPublicKey
16221630 else throw("Match error")
16231631 }
16241632 let go = hT
16251633 if ($isInstanceOf(go, "Order"))
16261634 then {
16271635 let fc = go
16281636 let hW = aU()
16291637 let hX = fb(fc)
16301638 let hY = sigVerify(fc.bodyBytes, fc.proofs[0], fc.senderPublicKey)
16311639 let hZ = sigVerify(fc.bodyBytes, fc.proofs[1], hW)
16321640 if (if (if (hX)
16331641 then hY
16341642 else false)
16351643 then hZ
16361644 else false)
16371645 then true
16381646 else aD(hX, hY, hZ)
16391647 }
16401648 else if ($isInstanceOf(go, "SetScriptTransaction"))
16411649 then {
16421650 let dO = go
16431651 if (sigVerify(hT.bodyBytes, hT.proofs[0], hV))
16441652 then true
16451653 else {
16461654 let ia = blake2b256(value(dO.script))
16471655 let ib = fromBase64String(value(getString(aO, aB())))
16481656 let ic = scriptHash(this)
16491657 if ((ib == ia))
16501658 then (ic != ia)
16511659 else false
16521660 }
16531661 }
16541662 else sigVerify(hT.bodyBytes, hT.proofs[0], hV)
16551663 }
16561664

github/deemru/w8io/873ac7e 
279.27 ms