tx · A1umuNuwGDYmXApznaYoU2JJa6DZJnuDaazGUePUJyo5

3MwgVcc26F1kRAfYdaHr3ZXkWCmRi3bPcAY:  -0.04100000 Waves

2023.07.19 14:17 [2672672] smart account 3MwgVcc26F1kRAfYdaHr3ZXkWCmRi3bPcAY > SELF 0.00000000 Waves

{ "type": 13, "id": "A1umuNuwGDYmXApznaYoU2JJa6DZJnuDaazGUePUJyo5", "fee": 4100000, "feeAssetId": null, "timestamp": 1689765483144, "version": 2, "chainId": 84, "sender": "3MwgVcc26F1kRAfYdaHr3ZXkWCmRi3bPcAY", "senderPublicKey": "aiasL8zA6M6XjqL4Vj6VQ6QMxp2YjUzvCmd7mfAT9oS", "proofs": [ "3sJxv4KaCttacYYeX2xhgSsdWHUMwSxkDec8vWgHhy8CXf6HUsghZLDi62HDyBD9br8svnBPRsFtGXxCmasFy2FR" ], "script": "base64:BgKHLAgCEgUKAwEEARIHCgUBBAEIARIDCgEIEgMKAQgSABIECgIBBBIECgIBBBIDCgEBEgASBAoCCAESABIECgIIARIECgIIARIECgIBARIDCgEBEgUKAwEBARIFCgMBCAESBAoCAQgSBAoCAQgSBAoCCAgSABIDCgEIEgUKAwEBARIECgIIARIECgIBARIECgIICBILCgkIAQECAQIIBAQSBgoECAgBCBIAIgZzY2FsZTgiDHNjYWxlOEJpZ0ludCIHc2NhbGUxOCIKemVyb0JpZ0ludCIEYmlnMCIEYmlnMSIEYmlnMiIEYmlnMyIEYmlnNCIKc2xpcHBhZ2U0RCILd2F2ZXNTdHJpbmciCmFtcEluaXRpYWwiBUFtdWx0IgVEY29udiIDU0VQIgVFTVBUWSIKUG9vbEFjdGl2ZSIKUG9vbFB1dERpcyIOUG9vbE1hdGNoZXJEaXMiDFBvb2xTaHV0ZG93biIOaWR4UG9vbEFkZHJlc3MiCWlkeFBvb2xTdCIJaWR4TFBBc0lkIglpZHhBbUFzSWQiCWlkeFByQXNJZCILaWR4QW10QXNEY20iDWlkeFByaWNlQXNEY20iC2lkeElBbXRBc0lkIg1pZHhJUHJpY2VBc0lkIg9pZHhGYWN0U3Rha0NudHIiEmlkeEZhY3RvcnlSZXN0Q250ciIQaWR4RmFjdFNsaXBwQ250ciIRaWR4RmFjdEd3eFJld0NudHIiCmZlZURlZmF1bHQiAnQxIgdvcmlnVmFsIg1vcmlnU2NhbGVNdWx0Igh0MUJpZ0ludCICZjEiA3ZhbCIPcmVzdWx0U2NhbGVNdWx0Igxmcm9tWDE4Um91bmQiBXJvdW5kIgJ0MiICZjIiAnRzIgNhbXQiCHJlc1NjYWxlIghjdXJTY2FsZSIDYWJzIglhYnNCaWdJbnQiAmZjIgNtcGsiBHBtcGsiAnBsIgJwaCIBaCIBdCIDcGF1IgJ1YSIEdHhJZCIDZ2F1IgJhYSICcGEiA2FtcCINa2V5QW1wSGlzdG9yeSIMaGVpZ2h0QmxvY2tzIhRrZXlDaGFuZ2VBbXBMYXN0Q2FsbCIGa2V5RmVlIgNmZWUiBmtleURMcCIVa2V5RExwUmVmcmVzaGVkSGVpZ2h0IhJrZXlETHBSZWZyZXNoRGVsYXkiFmRMcFJlZnJlc2hEZWxheURlZmF1bHQiD2RMcFJlZnJlc2hEZWxheSIEZmNmZyIEbXRwayICcGMiBmlBbXRBcyIFaVByQXMiA21iYSIFYkFTdHIiA2FwcyIca2V5QWxsb3dlZExwU3RhYmxlU2NyaXB0SGFzaCIWa2V5RmVlQ29sbGVjdG9yQWRkcmVzcyIWa2V5U2tpcE9yZGVyVmFsaWRhdGlvbiILcG9vbEFkZHJlc3MiD3Rocm93T3JkZXJFcnJvciIKb3JkZXJWYWxpZCIOb3JkZXJWYWxpZEluZm8iC3NlbmRlclZhbGlkIgxtYXRjaGVyVmFsaWQiBHN0cmYiBGFkZHIiA2tleSIEaW50ZiIIdGhyb3dFcnIiA21zZyIGZm10RXJyIgNmY2EiBWluRmVlIgFAIgZvdXRGZWUiAUEiA2lncyICbXAiE2ZlZUNvbGxlY3RvckFkZHJlc3MiA2dwYyIFYW10QXMiB3ByaWNlQXMiCGlQcmljZUFzIgxwYXJzZUFzc2V0SWQiBWlucHV0Ig9hc3NldElkVG9TdHJpbmciD3BhcnNlUG9vbENvbmZpZyIKcG9vbENvbmZpZyIQcG9vbENvbmZpZ1BhcnNlZCILJHQwODA4NzgyNzMiDmNmZ1Bvb2xBZGRyZXNzIg1jZmdQb29sU3RhdHVzIgxjZmdMcEFzc2V0SWQiEGNmZ0Ftb3VudEFzc2V0SWQiD2NmZ1ByaWNlQXNzZXRJZCIWY2ZnQW1vdW50QXNzZXREZWNpbWFscyIVY2ZnUHJpY2VBc3NldERlY2ltYWxzIgNnZmMiDWZhY3RvcnlDb25maWciD3N0YWtpbmdDb250cmFjdCIPc2xpcGFnZUNvbnRyYWN0Igtnd3hDb250cmFjdCIMcmVzdENvbnRyYWN0IhFkYXRhUHV0QWN0aW9uSW5mbyINaW5BbXRBc3NldEFtdCIPaW5QcmljZUFzc2V0QW10IghvdXRMcEFtdCIFcHJpY2UiCnNsaXBCeVVzZXIiDHNsaXBwYWdlUmVhbCIIdHhIZWlnaHQiC3R4VGltZXN0YW1wIgxzbGlwYWdlQW1BbXQiDHNsaXBhZ2VQckFtdCIRZGF0YUdldEFjdGlvbkluZm8iDm91dEFtdEFzc2V0QW10IhBvdXRQcmljZUFzc2V0QW10IgdpbkxwQW10Ig1nZXRBY2NCYWxhbmNlIgdhc3NldElkIgRjcGJpIghwckFtdFgxOCIIYW1BbXRYMTgiBWNwYmlyIgN2YWQiAkExIgJBMiIIc2xpcHBhZ2UiBGRpZmYiBHBhc3MiAnZkIgJEMSICRDAiBHNscGciBGZhaWwiA3BjcCIKYW1Bc3NldERjbSIKcHJBc3NldERjbSIFYW1BbXQiBXByQW10IgthbXRBc0FtdFgxOCIKcHJBc0FtdFgxOCIKY2FsY1ByaWNlcyIFbHBBbXQiCGFtdEFzRGNtIgdwckFzRGNtIghwcmljZVgxOCIIbHBBbXRYMTgiDWxwUHJJbkFtQXNYMTgiDWxwUHJJblByQXNYMTgiD2NhbGN1bGF0ZVByaWNlcyIBcCIHdGFrZUZlZSIGYW1vdW50IglmZWVBbW91bnQiBGdldEQiAnhwIgN4cDAiA3hwMSIBcyIBYSIDYW5uIgt4cDBfeHAxX25fbiIFYW5uX3MiBWFubl8xIgljYWxjRE5leHQiAWQiAmRkIgNkZGQiAmRwIgRjYWxjIgNhY2MiAWkiBWROZXh0IghkRGlmZlJhdyIFZERpZmYiA2FyciINJHQwMTI3NzgxMjgyNiICJGwiAiRzIgUkYWNjMCIFJGYwXzEiAiRhIgIkaSIFJGYwXzIiBWZvdW5kIgNlZ28iBnR4SWQ1OCIKcG10QXNzZXRJZCIIcG10THBBbXQiC3VzZXJBZGRyZXNzIgRscElkIgRhbUlkIgRwcklkIgVhbURjbSIFcHJEY20iA3N0cyIHbHBFbWlzcyIJYW1CYWxhbmNlIgxhbUJhbGFuY2VYMTgiCXByQmFsYW5jZSIMcHJCYWxhbmNlWDE4IgtjdXJQcmljZVgxOCIIY3VyUHJpY2UiC3BtdExwQW10WDE4IgpscEVtaXNzWDE4IgtvdXRBbUFtdFgxOCILb3V0UHJBbXRYMTgiCG91dEFtQW10IghvdXRQckFtdCIFc3RhdGUiA2VwbyIHaW5BbUFtdCIGaW5BbUlkIgdpblByQW10IgZpblBySWQiBmlzRXZhbCIGZW1pdExwIgppc09uZUFzc2V0IhB2YWxpZGF0ZVNsaXBwYWdlIgZwbXRBbXQiBXBtdElkIgdhbUlkU3RyIgdwcklkU3RyIgZhbXREY20iCHByaWNlRGNtIgRscEVtIg9pbkFtQXNzZXRBbXRYMTgiD2luUHJBc3NldEFtdFgxOCIMdXNlclByaWNlWDE4IgFyIgZjaGVja0QiC3NsaXBwYWdlWDE4Ig9zbGlwcGFnZVJlYWxYMTgiDWxwRW1pc3Npb25YMTgiCnByVmlhQW1YMTgiCmFtVmlhUHJYMTgiDGV4cGVjdGVkQW10cyIRZXhwQW10QXNzZXRBbXRYMTgiE2V4cFByaWNlQXNzZXRBbXRYMTgiCWNhbGNMcEFtdCIOY2FsY0FtQXNzZXRQbXQiDmNhbGNQckFzc2V0UG10IgxzbGlwcGFnZUNhbGMiCWVtaXRMcEFtdCIGYW1EaWZmIgZwckRpZmYiDSR0MDIwNTg4MjA5MzMiCndyaXRlQW1BbXQiCndyaXRlUHJBbXQiC2NvbW1vblN0YXRlIgVnZXRZRCIBRCIBbiIBeCIKYVByZWNpc2lvbiIBYyIBYiIDY3VyIg0kdDAyMjEyODIyMTQ4IgF5IgV5TmV4dCIFeURpZmYiDSR0MDIyNDU1MjI1MDIiB2NhbGNETHAiDWFtb3VudEJhbGFuY2UiDHByaWNlQmFsYW5jZSIKbHBFbWlzc2lvbiIKdXBkYXRlZERMcCIOY2FsY0N1cnJlbnRETHAiEGFtb3VudEFzc2V0RGVsdGEiD3ByaWNlQXNzZXREZWx0YSIUbHBBc3NldEVtaXNzaW9uRGVsdGEiEmFtb3VudEFzc2V0QmFsYW5jZSIRcHJpY2VBc3NldEJhbGFuY2UiD2xwQXNzZXRFbWlzc2lvbiIKY3VycmVudERMcCIScmVmcmVzaERMcEludGVybmFsIhdhbW91bnRBc3NldEJhbGFuY2VEZWx0YSIWcHJpY2VBc3NldEJhbGFuY2VEZWx0YSIHYWN0aW9ucyISdmFsaWRhdGVVcGRhdGVkRExwIgZvbGRETHAiG3ZhbGlkYXRlTWF0Y2hlck9yZGVyQWxsb3dlZCIFb3JkZXIiEWFtb3VudEFzc2V0QW1vdW50IhBwcmljZUFzc2V0QW1vdW50Ig0kdDAyNDcwMDI0OTEyIgNkTHAiDSR0MDI1MjU0MjUzNTQiDXVudXNlZEFjdGlvbnMiBmRMcE5ldyIMaXNPcmRlclZhbGlkIgRpbmZvIgJjZyIDcG10IgJjcCIGY2FsbGVyIgdhbUFzUG10IgdwckFzUG10Ig1jYWxjUHV0T25lVGtuIglwbXRBbXRSYXciC3dpdGhUYWtlRmVlIg1jaGVjaEVtaXNzaW9uIg0kdDAyODAxMDI4NDcyIgxhbUJhbGFuY2VPbGQiDHByQmFsYW5jZU9sZCINJHQwMjg0NzgyODY1NCILYW1BbW91bnRSYXciC3ByQW1vdW50UmF3Ig0kdDAyODY1ODI4OTEyIghhbUFtb3VudCIIcHJBbW91bnQiDGFtQmFsYW5jZU5ldyIMcHJCYWxhbmNlTmV3IghscEFtb3VudCIOcG9vbFByb3BvcnRpb24iD2Ftb3VudEFzc2V0UGFydCIOcHJpY2VBc3NldFBhcnQiCWxwQW10Qm90aCIFYm9udXMiE2dldE9uZVRrblYySW50ZXJuYWwiCm91dEFzc2V0SWQiDG1pbk91dEFtb3VudCIIcGF5bWVudHMiDG9yaWdpbkNhbGxlciINdHJhbnNhY3Rpb25JZCIKYW1EZWNpbWFscyIKcHJEZWNpbWFscyIKcG9vbFN0YXR1cyINJHQwMzEwMjQzMTEzNSIIdG90YWxHZXQiC3RvdGFsQW1vdW50Ig0kdDAzMTMyNTMxNjMyIgVvdXRBbSIFb3V0UHIiCGN1clByWDE4IgVjdXJQciIRb3V0QXNzZXRJZE9yV2F2ZXMiEHNlbmRGZWVUb01hdGNoZXIiBGJ1cm4iDSR0MDMyNDE3MzI3NjciEGZlZUFtb3VudEZvckNhbGMiEG91dEluQW1vdW50QXNzZXQiDSR0MDMyNzcwMzI4NzgiEXJlZnJlc2hETHBBY3Rpb25zIhFpc1VwZGF0ZWRETHBWYWxpZCIBbSIHJG1hdGNoMCICcG0iAnBkIglpc01hbmFnZXIiAnBrIgJtbSIEZ2V0WSIJaXNSZXZlcnNlIhNwb29sQW1vdW50SW5CYWxhbmNlIg0kdDAzNDMyNTM0MzQ1Ig0kdDAzNDY3NjM0NzIzIhNza2lwT3JkZXJWYWxpZGF0aW9uIg1jbGVhbkFtb3VudEluIg1mZWVQb29sQW1vdW50Ig0kdDAzNTA3NTM1NDk5Ighhc3NldE91dCICZHkiC3RvdGFsR2V0UmF3IgVuZXdYcCIEbmV3RCIMYW1vdW50T3V0TWluIglhZGRyZXNzVG8iC3N3YXBDb250YWN0IgZjaGVja3MiB2Fzc2V0SW4iDSR0MDM2OTM1MzczMjkiCGNoZWNrTWluIhdwZW5kaW5nTWFuYWdlclB1YmxpY0tleSICY20iA2hwbSIDY3BtIgRzbGlwIglhdXRvU3Rha2UiB2ZhY3RDZmciC3N0YWtpbmdDbnRyIghzbGlwQ250ciIKYW1Bc3NldFBtdCIKcHJBc3NldFBtdCIBZSIJbHBBc3NldElkIgJlbCIGbGVnYWN5IgJzYSICc3AiCGxwVHJuc2ZyIgJzcyINJHQwNDE5NDg0MjA5MCIFY2hlY2siFGxwQXNzZXRFbWlzc2lvbkFmdGVyIiBpc1Bvb2xPbmVUb2tlbk9wZXJhdGlvbnNEaXNhYmxlZCINaXNQdXREaXNhYmxlZCINJHQwNDM3MzE0Mzg4OSIHZXN0aW1MUCINJHQwNDQ3NzQ0NTEyMyIUcGF5bWVudEluQW1vdW50QXNzZXQiDSR0MDQ1MTI2NDUyMzQiB21heFNscGciBmVzdFB1dCINJHQwNDYyNjQ0NjMyOSIJb3V0QW10QW10Ig0kdDA0NzUwMjQ3NTg0Ig1pc0dldERpc2FibGVkIg0kdDA0ODIwMjQ4MzU3IhhsYXN0UmVmcmVzaGVkQmxvY2tIZWlnaHQiHWNoZWNrTGFzdFJlZnJlc2hlZEJsb2NrSGVpZ2h0Ig0kdDA0ODg4MTQ4OTQ1IhBkTHBVcGRhdGVBY3Rpb25zIg1scEFzc2V0QW1vdW50IgVpbmRleCIEbmV3WSINJHQwNDk5NTU1MDAxMCINJHQwNTAzODU1MDUwMCIOc3VtT2ZHZXRBc3NldHMiEm5vTGVzc1RoZW5BbXRBc3NldCIUbm9MZXNzVGhlblByaWNlQXNzZXQiFGJ1cm5MUEFzc2V0T25GYWN0b3J5Ig0kdDA1MTY2NjUxNzQ3Ig1jaGVja1BheW1lbnRzIgpmYWN0b3J5Q2ZnIgdzdGFraW5nIgp1bnN0YWtlSW52IgF2IgVidXJuQSINJHQwNTI3NzQ1Mjg1NSINdW5zdGFrZUFtb3VudCIVbm9MZXNzVGhlbkFtb3VudEFzc2V0IgNyZXMiDGNoZWNrQW1vdW50cyINJHQwNTQxMDY1NDE4NyIXbHBBc3NldFJlY2lwaWVudEFkZHJlc3MiDSR0MDU1MjA5NTUzOTciEHBheW1lbnRBbW91bnRSYXciDnBheW1lbnRBc3NldElkIg0kdDA1NTUyNTU1NjI4Ig0kdDA1NTc3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YXRpb24gZmFpbGVkOiBvcmRlclZhbGlkPQkApQMBBQJhSwICICgFAmFMAgEpAg0gc2VuZGVyVmFsaWQ9CQClAwEFAmFNAg4gbWF0Y2hlclZhbGlkPQkApQMBBQJhTgECYU8CAmFQAmFRCQETdmFsdWVPckVycm9yTWVzc2FnZQIJAJ0IAgUCYVAFAmFRCQC5CQIJAMwIAgIKbWFuZGF0b3J5IAkAzAgCCQClCAEFAmFQCQDMCAICAS4JAMwIAgUCYVEJAMwIAgIMIG5vdCBkZWZpbmVkBQNuaWwCAAECYVICAmFQAmFRCQETdmFsdWVPckVycm9yTWVzc2FnZQIJAJoIAgUCYVAFAmFRCQC5CQIJAMwIAgIKbWFuZGF0b3J5IAkAzAgCCQClCAEFAmFQCQDMCAICAS4JAMwIAgUCYVEJAMwIAgIMIG5vdCBkZWZpbmVkBQNuaWwCAAECYVMBAmFUCQACAQkAuQkCCQDMCAICD2xwX3N0YWJsZS5yaWRlOgkAzAgCBQJhVAUDbmlsAgEgAQJhVQECYVQJALkJAgkAzAgCAg9scF9zdGFibGUucmlkZToJAMwIAgUCYVQFA25pbAIBIAACYVYJARFAZXh0ck5hdGl2ZSgxMDYyKQEJAQJhTwIFBHRoaXMJAQFaAAACYVcKAAJhWAkA/AcEBQJhVgIQZ2V0SW5GZWVSRUFET05MWQkAzAgCCQClCAEFBHRoaXMFA25pbAUDbmlsAwkAAQIFAmFYAgNJbnQFAmFYCQACAQkArAICCQADAQUCYVgCGCBjb3VsZG4ndCBiZSBjYXN0IHRvIEludAACYVkKAAJhWAkA/AcEBQJhVgIRZ2V0T3V0RmVlUkVBRE9OTFkJAMwIAgkApQgBBQR0aGlzBQNuaWwFA25pbAMJAAECBQJhWAIDSW50BQJhWAkAAgEJAKwCAgkAAwEFAmFYAhggY291bGRuJ3QgYmUgY2FzdCB0byBJbnQAAmFaCQECYU8CBQR0aGlzCQECYW0AAQJiYQAJAQt2YWx1ZU9yRWxzZQIJAJsIAgUCYVYJAQJhRQAHAQJiYgAJANkEAQkBAmFPAgUCYVYJAQJheQAAAmJjCQERQGV4dHJOYXRpdmUoMTA2MikBCQECYU8CBQJhVgkBAmFHAAECYmQABAJiZQkBAmFPAgUEdGhpcwkBAmFrAAQCYmYJAQJhTwIFBHRoaXMJAQJhbAAEAmJnCQECYVICBQJhVgkBAmFDAQUCYmYEAmFBCQECYVICBQJhVgkBAmFDAQUCYmUJALUJAgkBAmFPAgUCYVYJAQJhegIJAKQDAQUCYUEJAKQDAQUCYmcFAW8BAmJoAQJiaQMJAAACBQJiaQUBawUEdW5pdAkA2QQBBQJiaQECYmoBAmJpAwkAAAIFAmJpBQR1bml0BQFrCQDYBAEJAQV2YWx1ZQEFAmJpAQJiawECYmwJAJkKBwkBEUBleHRyTmF0aXZlKDEwNjIpAQkAkQMCBQJibAUBdQkBDXBhcnNlSW50VmFsdWUBCQCRAwIFAmJsBQF2CQDZBAEJAJEDAgUCYmwFAXcJAQJiaAEJAJEDAgUCYmwFAXgJAQJiaAEJAJEDAgUCYmwFAXkJAQ1wYXJzZUludFZhbHVlAQkAkQMCBQJibAUBegkBDXBhcnNlSW50VmFsdWUBCQCRAwIFAmJsBQFBAAJibQkBAmJrAQkBAmJkAAACYm4FAmJtAAJibwgFAmJuAl8xAAJicAgFAmJuAl8yAAJicQgFAmJuAl8zAAJicggFAmJuAl80AAJicwgFAmJuAl81AAJidAgFAmJuAl82AAJidQgFAmJuAl83AQJidgAJALUJAgkBAmFPAgUCYVYJAQJheAAFAW8AAmJ3CQECYnYAAAJieAkBE3ZhbHVlT3JFcnJvck1lc3NhZ2UCCQCmCAEJAJEDAgUCYncFAUQCIEludmFsaWQgc3Rha2luZyBjb250cmFjdCBhZGRyZXNzAAJieQkBE3ZhbHVlT3JFcnJvck1lc3NhZ2UCCQCmCAEJAJEDAgUCYncFAUYCIEludmFsaWQgc2xpcGFnZSBjb250cmFjdCBhZGRyZXNzAAJiegkBE3ZhbHVlT3JFcnJvck1lc3NhZ2UCCQCmCAEJAJEDAgUCYncFAUcCHEludmFsaWQgZ3d4IGNvbnRyYWN0IGFkZHJlc3MAAmJBCQETdmFsdWVPckVycm9yTWVzc2FnZQIJAKYIAQkAkQMCBQJidwUBRQIcSW52YWxpZCBnd3ggY29udHJhY3QgYWRkcmVzcwECYkIKAmJDAmJEAmJFAmJGAmJHAmJIAmJJAmJKAmJLAmJMCQC5CQIJAMwIAgIUJWQlZCVkJWQlZCVkJWQlZCVkJWQJAMwIAgkApAMBBQJiQwkAzAgCCQCkAwEFAmJECQDMCAIJAKQDAQUCYkUJAMwIAgkApAMBBQJiRgkAzAgCCQCkAwEFAmJHCQDMCAIJAKQDAQUCYkgJAMwIAgkApAMBBQJiSQkAzAgCCQCkAwEFAmJKCQDMCAIJAKQDAQUCYksJAMwIAgkApAMBBQJiTAUDbmlsBQFvAQJiTQYCYk4CYk8CYlACYkYCYkkCYkoJALkJAgkAzAgCAgwlZCVkJWQlZCVkJWQJAMwIAgkApAMBBQJiTgkAzAgCCQCkAwEFAmJPCQDMCAIJAKQDAQUCYlAJAMwIAgkApAMBBQJiRgkAzAgCCQCkAwEFAmJJCQDMCAIJAKQDAQUCYkoFA25pbAUBbwECYlEBAmJSAwkAAAIFAmJSAgVXQVZFUwgJAO8HAQUEdGhpcwlhdmFpbGFibGUJAPAHAgUEdGhpcwkA2QQBBQJiUgECYlMCAmJUAmJVCQC8AgMFAmJUBQFjBQJiVQECYlYDAmJUAmJVAVEJAL0CBAUCYlQFAWMFAmJVBQFRAQJiVwMCYlgCYlkCYloEAmNhCQC8AgMJALgCAgUCYlgFAmJZBQFiBQJiWQQCY2IJAL8CAgkAuAICBQJiWgkBAVgBBQJjYQUBZAMJAQEhAQUCY2IJAAIBCQCsAgICCkJpZyBzbHBnOiAJAKYDAQUCY2EJAJQKAgUCY2IJAJkDAQkAzAgCBQJiWAkAzAgCBQJiWQUDbmlsAQJjYwMCY2QCY2UCY2YEAmNhCQC8AgMFAmNlBQFiBQJjZAQCY2cJAL8CAgUCY2YFAmNhAwMFAmNnBgkAvwICBQJjZQUCY2QJAAIBCQCsAgIJAKwCAgkArAICCQCsAgIJAKwCAgkArAICCQCmAwEFAmNlAgEgCQCmAwEFAmNkAgEgCQCmAwEFAmNhAgEgCQCmAwEFAmNmBQJjZwECY2gEAmNpAmNqAmNrAmNsBAJjbQkBAUkCBQJjawUCY2kEAmNuCQEBSQIFAmNsBQJjagkBAmJTAgUCY24FAmNtAQJjbwMCY2sCY2wCY3AEAmNxBQJidAQCY3IFAmJ1BAJjcwkBAmNoBAUCY3EFAmNyBQJjawUCY2wEAmJVCQEBSQIFAmNrBQJjcQQCYlQJAQFJAgUCY2wFAmNyBAJjdAkBAUkCBQJjcAUBYQQCY3UJAQJiUwIFAmJVBQJjdAQCY3YJAQJiUwIFAmJUBQJjdAkAzAgCBQJjcwkAzAgCBQJjdQkAzAgCBQJjdgUDbmlsAQJjdwMCY2sCY2wCY3AEAmN4CQECY28DBQJjawUCY2wFAmNwCQDMCAIJAQFNAgkAkQMCBQJjeAAABQFhCQDMCAIJAQFNAgkAkQMCBQJjeAABBQFhCQDMCAIJAQFNAgkAkQMCBQJjeAACBQFhBQNuaWwBAmN5AgJjegJhcgQCY0EDCQAAAgUCYXIAAAAACQBrAwUCY3oFAmFyBQFhCQCUCgIJAGUCBQJjegUCY0EFAmNBAQJjQgECY0MEAmNECQCRAwIFAmNDAAAEAmNFCQCRAwIFAmNDAAEEAmNGCQC3AgIFAmNEBQJjRQMJAAACBQJjRgUBZQUBZQQCY0cJAQ1wYXJzZUludFZhbHVlAQUCYVoEAmNICQBoAgUCY0cAAgQCY3gJALwCAwUCY0QFAmNFBQFmBAJjSQkAvAIDBQJjeAUBaQUBZgQCY0oJALwCAwkAtgIBBQJjSAUCY0YFAWYEAmNLCQC2AgEJAGUCBQJjSAABCgECY0wBAmNNBAJjTgkAvAIDBQJjTQUCY00FAWYEAmNPCQC8AgMFAmNOBQJjTQUBZgQCY1AJALwCAwUCY08FAWYFAmNJCQC8AgMJALcCAgUCY0oJALwCAwUCY1AFAWcFAWYFAmNNCQC3AgIJALwCAwUCY0sFAmNNBQFmCQC8AgMFAWgFAmNQBQFmCgECY1ECAmNSAmNTAwgFAmNSAl8yBQJjUgQCY00IBQJjUgJfMQQCY1QJAQJjTAEFAmNNBAJjVQkAuAICBQJjVAkBBXZhbHVlAQUCY00EAmNWAwkAvwICBQFlBQJjVQkAvgIBBQJjVQUCY1UDCQDAAgIFAWYFAmNWCQCUCgIFAmNUBgkAlAoCBQJjVAcEAmNXCQDMCAIAAAkAzAgCAAEJAMwIAgACCQDMCAIAAwkAzAgCAAQJAMwIAgAFCQDMCAIABgkAzAgCAAcJAMwIAgAICQDMCAIACQkAzAgCAAoJAMwIAgALCQDMCAIADAkAzAgCAA0JAMwIAgAOCQDMCAIADwkAzAgCABAFA25pbAQCY1gKAAJjWQUCY1cKAAJjWgkAkAMBBQJjWQoAAmRhCQCUCgIFAmNGBwoBAmRiAgJkYwJkZAMJAGcCBQJkZAUCY1oFAmRjCQECY1ECBQJkYwkAkQMCBQJjWQUCZGQKAQJkZQICZGMCZGQDCQBnAgUCZGQFAmNaBQJkYwkAAgECFExpc3Qgc2l6ZSBleGNlZWRzIDE3CQECZGUCCQECZGICCQECZGICCQECZGICCQECZGICCQECZGICCQECZGICCQECZGICCQECZGICCQECZGICCQECZGICCQECZGICCQECZGICCQECZGICCQECZGICCQECZGICCQECZGICCQECZGICBQJkYQAAAAEAAgADAAQABQAGAAcACAAJAAoACwAMAA0ADgAPABAAEQQCY00IBQJjWAJfMQQCZGYIBQJjWAJfMgMFAmRmBQJjTQkAAgEJAKwCAgIZRCBjYWxjdWxhdGlvbiBlcnJvciwgRCA9IAkApgMBBQJjTQECZGcEAmRoAmRpAmRqAmRrBAJkbAUCYnEEAmRtCQDYBAEJAQV2YWx1ZQEFAmJyBAJkbgkA2AQBCQEFdmFsdWUBBQJicwQCZG8FAmJ0BAJkcAUCYnUEAmRxCQCkAwEFAmJwBAJkcggJARN2YWx1ZU9yRXJyb3JNZXNzYWdlAgkA7AcBBQJkbAILV3JvbmcgTFAgaWQIcXVhbnRpdHkDCQECIT0CCQDYBAEFAmRsBQJkaQkAAgECD1dyb25nIHBtdCBhc3NldAQCZHMJAQJiUQEFAmRtBAJkdAkBAUkCBQJkcwUCZG8EAmR1CQECYlEBBQJkbgQCZHYJAQFJAgUCZHUFAmRwBAJkdwkBAmJTAgUCZHYFAmR0BAJkeAkBAU0CBQJkdwUBYQQCZHkJAQFJAgUCZGoFAWEEAmR6CQEBSQIFAmRyBQFhBAJkQQkAvAIDBQJkdAUCZHkFAmR6BAJkQgkAvAIDBQJkdgUCZHkFAmR6BAJkQwkBAVADBQJkQQUCZG8FBUZMT09SBAJkRAkBAVADBQJkQgUCZHAFBUZMT09SBAJkRQMJAAACBQJkaAIABQNuaWwJAMwIAgkBDlNjcmlwdFRyYW5zZmVyAwUCZGsFAmRDAwkAAAIFAmRtAgVXQVZFUwUEdW5pdAkA2QQBBQJkbQkAzAgCCQEOU2NyaXB0VHJhbnNmZXIDBQJkawUCZEQDCQAAAgUCZG4CBVdBVkVTBQR1bml0CQDZBAEFAmRuCQDMCAIJAQtTdHJpbmdFbnRyeQIJAQJhagIJAKUIAQUCZGsFAmRoCQECYk0GBQJkQwUCZEQFAmRqBQJkeAUGaGVpZ2h0CAUJbGFzdEJsb2NrCXRpbWVzdGFtcAkAzAgCCQEMSW50ZWdlckVudHJ5AgkBAmFjAAUCZHgJAMwIAgkBDEludGVnZXJFbnRyeQIJAQJhZAIFBmhlaWdodAgFCWxhc3RCbG9jawl0aW1lc3RhbXAFAmR4BQNuaWwJAJwKCgUCZEMFAmREBQJkbQUCZG4FAmRzBQJkdQUCZHIFAmR3BQJkcQUCZEUBAmRGDQJkaAJiWgJkRwJkSAJkSQJkSgJkawJkSwJkTAJkTQJkTgJkTwJkUAQCZGwFAmJxBAJkUQkA2AQBCQEFdmFsdWUBBQJicgQCZFIJANgEAQkBBXZhbHVlAQUCYnMEAmRTBQJidAQCZFQFAmJ1BAJkcQkApAMBBQJicAQCZFUICQETdmFsdWVPckVycm9yTWVzc2FnZQIJAOwHAQUCZGwCCFdyIGxwIGFzCHF1YW50aXR5BAJkcwMFAmRLCQECYlEBBQJkUQMDBQJkTQkAAAIFAmRQBQJkUQcJAGUCCQECYlEBBQJkUQUCZE8DBQJkTQkBAmJRAQUCZFEJAGUCCQECYlEBBQJkUQUCZEcEAmR1AwUCZEsJAQJiUQEFAmRSAwMFAmRNCQAAAgUCZFAFAmRSBwkAZQIJAQJiUQEFAmRSBQJkTwMFAmRNCQECYlEBBQJkUgkAZQIJAQJiUQEFAmRSBQJkSQQCZFYJAQFJAgUCZEcFAmRTBAJkVwkBAUkCBQJkSQUCZFQEAmRYCQECYlMCBQJkVwUCZFYEAmR0CQEBSQIFAmRzBQJkUwQCZHYJAQFJAgUCZHUFAmRUBAJjZQkBAmNCAQkAzAgCBQJkdAkAzAgCBQJkdgUDbmlsBAJkWQMJAAACBQJkVQAABAJjZAkBAmNCAQkAzAgCCQC3AgIFAmR0BQJkVgkAzAgCCQC3AgIFAmR2BQJkVwUDbmlsBAJkWgMJAL8CAgUCY2QFAmNlBgkAAgECHEQxIHNob3VsZCBiZSBncmVhdGVyIHRoYW4gRDADCQAAAgUCZFoFAmRaBAJkdwUBZAQCZWEFAWQEAmN0BQJjZAkAlwoFCQEBTQIFAmN0BQFhCQEBTQIFAmRWBQJkUwkBAU0CBQJkVwUCZFQJAQJiUwIJALcCAgUCZHYFAmRXCQC3AgIFAmR0BQJkVgUCZWEJAAIBAiRTdHJpY3QgdmFsdWUgaXMgbm90IGVxdWFsIHRvIGl0c2VsZi4EAmR3CQECYlMCBQJkdgUCZHQEAmViCQC8AgMJAQFYAQkAuAICBQJkdwUCZFgFAWMFAmR3BAJlYQkBAUkCBQJiWgUBYQMDAwUCZE4JAQIhPQIFAmR3BQFkBwkAvwICBQJlYgUCZWEHCQACAQkArAICCQCsAgIJAKwCAgIPUHJpY2Ugc2xpcHBhZ2UgCQCmAwEFAmViAgMgPiAJAKYDAQUCZWEEAmVjCQEBSQIFAmRVBQFhBAJlZAkAvQIEBQJkVgkBAmJWAwUCZHYFAmR0BQdDRUlMSU5HBQFjBQdDRUlMSU5HBAJlZQkAvQIEBQJkVwUBYwkBAmJWAwUCZHYFAmR0BQVGTE9PUgUHQ0VJTElORwQCZWYDCQC/AgIFAmVkBQJkVwkAlAoCBQJlZQUCZFcJAJQKAgUCZFYFAmVkBAJlZwgFAmVmAl8xBAJlaAgFAmVmAl8yBAJjZAkBAmNCAQkAzAgCCQC3AgIFAmR0BQJlZwkAzAgCCQC3AgIFAmR2BQJlaAUDbmlsBAJkWgMJAL8CAgUCY2QFAmNlBgkAAgECHEQxIHNob3VsZCBiZSBncmVhdGVyIHRoYW4gRDADCQAAAgUCZFoFAmRaBAJjdAkAvAIDBQJlYwkAuAICBQJjZAUCY2UFAmNlCQCXCgUJAQFQAwUCY3QFAWEFBUZMT09SCQEBUAMFAmVnBQJkUwUHQ0VJTElORwkBAVADBQJlaAUCZFQFB0NFSUxJTkcFAmR3BQJlYQkAAgECJFN0cmljdCB2YWx1ZSBpcyBub3QgZXF1YWwgdG8gaXRzZWxmLgQCZWkIBQJkWQJfMQQCZWoIBQJkWQJfMgQCZWsIBQJkWQJfMwQCZHgJAQFNAggFAmRZAl80BQFhBAJlbAkBAU0CCAUCZFkCXzUFAWEDCQBnAgAABQJlaQkAAgECB0xQIDw9IDAEAmVtAwkBASEBBQJkTAAABQJlaQQCZW4JAGUCBQJkRwUCZWoEAmVvCQBlAgUCZEkFAmVrBAJlcAMDBQJkTQkAAAIFAmRQBQJkUQcJAJQKAgUCZE8AAAMDBQJkTQkAAAIFAmRQBQJkUgcJAJQKAgAABQJkTwkAlAoCBQJlagUCZWsEAmVxCAUCZXACXzEEAmVyCAUCZXACXzIEAmVzCQDMCAIJAQxJbnRlZ2VyRW50cnkCCQECYWMABQJkeAkAzAgCCQEMSW50ZWdlckVudHJ5AgkBAmFkAgUGaGVpZ2h0CAUJbGFzdEJsb2NrCXRpbWVzdGFtcAUCZHgJAMwIAgkBC1N0cmluZ0VudHJ5AgkBAmFnAgUCZGsFAmRoCQECYkIKBQJlcQUCZXIFAmVtBQJkeAUCYloFAmVsBQZoZWlnaHQIBQlsYXN0QmxvY2sJdGltZXN0YW1wBQJlbgUCZW8FA25pbAkAnwoNBQJlaQUCZW0FAmR4BQJkcwUCZHUFAmRVBQJkbAUCZHEFAmVzBQJlbgUCZW8FAmRIBQJkSgECZXQDAmNDAmNTAmV1BAJldgUBZwQCZXcJAJEDAgUCY0MDCQAAAgUCY1MAAAABAAAEAmV4CQCnAwEFAW0EAmNHCQC5AgIJAKcDAQUCYVoFAmV4BAJjRgUCZXcEAmNICQC5AgIFAmNHBQJldgQCZXkJALoCAgkAuQICCQC5AgIJALoCAgkAuQICBQJldQUCZXUJALkCAgUCZXcFAmV2BQJldQUCZXgJALkCAgUCY0gFAmV2BAJlegkAuAICCQC3AgIFAmNGCQC6AgIJALkCAgUCZXUFAmV4BQJjSAUCZXUKAQJjUQICY1ICZUEEAmVCBQJjUgQCZUMIBQJlQgJfMQQCZGYIBQJlQgJfMgMJAQIhPQIFAmRmBQR1bml0BQJjUgQCZUQJALoCAgkAtwICCQC5AgIFAmVDBQJlQwUCZXkJALcCAgkAuQICBQFnBQJlQwUCZXoEAmVFCQEBWQEJALgCAgUCZUQJAQV2YWx1ZQEFAmVDAwkAwAICBQFmBQJlRQkAlAoCBQJlRAUCZUEJAJQKAgUCZUQFBHVuaXQEAmNXCQDMCAIAAAkAzAgCAAEJAMwIAgACCQDMCAIAAwkAzAgCAAQJAMwIAgAFCQDMCAIABgkAzAgCAAcJAMwIAgAICQDMCAIACQkAzAgCAAoJAMwIAgALCQDMCAIADAkAzAgCAA0JAMwIAgAOBQNuaWwEAmVGCgACY1kFAmNXCgACY1oJAJADAQUCY1kKAAJkYQkAlAoCBQJldQUEdW5pdAoBAmRiAgJkYwJkZAMJAGcCBQJkZAUCY1oFAmRjCQECY1ECBQJkYwkAkQMCBQJjWQUCZGQKAQJkZQICZGMCZGQDCQBnAgUCZGQFAmNaBQJkYwkAAgECFExpc3Qgc2l6ZSBleGNlZWRzIDE1CQECZGUCCQECZGICCQECZGICCQECZGICCQECZGICCQECZGICCQECZGICCQECZGICCQECZGICCQECZGICCQECZGICCQECZGICCQECZGICCQECZGICCQECZGICCQECZGICBQJkYQAAAAEAAgADAAQABQAGAAcACAAJAAoACwAMAA0ADgAPBAJlQwgFAmVGAl8xBAJkZggFAmVGAl8yAwkBAiE9AgUCZGYFBHVuaXQFAmVDCQACAQkArAICAhlZIGNhbGN1bGF0aW9uIGVycm9yLCBZID0gCQCmAwEFAmVDAQJlRwMCZUgCZUkCZUoEAmVLCQC8AgMJAQJjQgEJAMwIAgkBAUwCBQJlSAkAtgIBBQJidAkAzAgCCQEBTAIFAmVJCQC2AgEFAmJ1BQNuaWwFAWMFAmVKAwkAAAIFAmVKBQFlBQFlBQJlSwECZUwDAmVNAmVOAmVPBAJlUAkAuAICCQC2AgEJAQJiUQEJAQJiagEFAmJyBQJlTQQCZVEJALgCAgkAtgIBCQECYlEBCQECYmoBBQJicwUCZU4EAmVSCQC4AgIJALYCAQgJAQV2YWx1ZQEJAOwHAQUCYnEIcXVhbnRpdHkFAmVPBAJlUwkBAmVHAwUCZVAFAmVRBQJlUgUCZVMBAmVUAwJlVQJlVgJlTwQCZVAJAGQCCQECYlEBCQECYmoBBQJicgUCZVUEAmVRCQBkAgkBAmJRAQkBAmJqAQUCYnMFAmVWBAJlUgkAZAIICQEFdmFsdWUBCQDsBwEFAmJxCHF1YW50aXR5BQJlTwQCZUsJAQJlRwMJALYCAQUCZVAJALYCAQUCZVEJALYCAQUCZVIEAmVXCQDMCAIJAQxJbnRlZ2VyRW50cnkCBQJhdAUGaGVpZ2h0CQDMCAIJAQtTdHJpbmdFbnRyeQIFAmFzCQCmAwEFAmVLBQNuaWwJAJQKAgUCZVcFAmVLAQJlWAICZVkCZUsDCQDAAgIFAmVLBQJlWQYJAQJhUwECInVwZGF0ZWQgRExwIGxvd2VyIHRoYW4gY3VycmVudCBETHABAmVaAQJmYQQCZVAJAQJiUQEJAQJiagEFAmJyBAJlUQkBAmJRAQkBAmJqAQUCYnMEAmZiCAUCZmEGYW1vdW50BAJmYwkAbgQIBQJmYQZhbW91bnQIBQJmYQVwcmljZQUBYQUFRkxPT1IEAmZkAwkAAAIIBQJmYQlvcmRlclR5cGUFA0J1eQkAlAoCBQJmYgkBAS0BBQJmYwkAlAoCCQEBLQEFAmZiBQJmYwQCZVUIBQJmZAJfMQQCZVYIBQJmZAJfMgMDAwkBAmJhAAYJAAACBQJicAUBcwYJAAACBQJicAUBdAkAAgECDUFkbWluIGJsb2NrZWQDAwkBAiE9AggIBQJmYQlhc3NldFBhaXILYW1vdW50QXNzZXQFAmJyBgkBAiE9AggIBQJmYQlhc3NldFBhaXIKcHJpY2VBc3NldAUCYnMJAAIBAglXciBhc3NldHMEAmZlCQCnAwEJAQt2YWx1ZU9yRWxzZQIJAJ0IAgUEdGhpcwUCYXMCATAEAmZmCQECZVQDBQJlVQUCZVYAAAQCZmcIBQJmZgJfMQQCZmgIBQJmZgJfMgQCZmkJAMACAgUCZmgFAmZlBAJmagkAuQkCCQDMCAICBGRMcD0JAMwIAgkApgMBBQJmZQkAzAgCAgggZExwTmV3PQkAzAgCCQCmAwEFAmZoCQDMCAICFCBhbW91bnRBc3NldEJhbGFuY2U9CQDMCAIJAKQDAQUCZVAJAMwIAgITIHByaWNlQXNzZXRCYWxhbmNlPQkAzAgCCQCkAwEFAmVRCQDMCAICGSBhbW91bnRBc3NldEJhbGFuY2VEZWx0YT0JAMwIAgkApAMBBQJlVQkAzAgCAhggcHJpY2VBc3NldEJhbGFuY2VEZWx0YT0JAMwIAgkApAMBBQJlVgkAzAgCAgggaGVpZ2h0PQkAzAgCCQCkAwEFBmhlaWdodAUDbmlsAgAJAJQKAgUCZmkFAmZqAQJmawECY1MDCQECIT0CCQCQAwEIBQJjUwhwYXltZW50cwABCQACAQIKMSBwbW50IGV4cAQCZmwJAQV2YWx1ZQEJAJEDAggFAmNTCHBheW1lbnRzAAAEAmRpCQEFdmFsdWUBCAUCZmwHYXNzZXRJZAQCZE8IBQJmbAZhbW91bnQEAmRZCQECZGcECQDYBAEIBQJjUw10cmFuc2FjdGlvbklkCQDYBAEFAmRpBQJkTwgFAmNTBmNhbGxlcgQCZEMIBQJkWQJfMQQCZEQIBQJkWQJfMgQCZHEJAQ1wYXJzZUludFZhbHVlAQgFAmRZAl85BAJkRQgFAmRZA18xMAMDCQECYmEABgkAAAIFAmRxBQF0CQACAQkArAICAg9BZG1pbiBibG9ja2VkOiAJAKQDAQUCZHEJAJcKBQUCZEMFAmREBQJkTwUCZGkFAmRFAQJmbQoCZm4CYWkCZm8CZnACYloCZEwCZE0CZE4CZE8CZFAEAmRZCQECZEYNBQJhaQUCYloICQEFdmFsdWUBBQJmbwZhbW91bnQICQEFdmFsdWUBBQJmbwdhc3NldElkCAkBBXZhbHVlAQUCZnAGYW1vdW50CAkBBXZhbHVlAQUCZnAHYXNzZXRJZAUCZm4JAAACBQJhaQIABQJkTAUCZE0FAmROBQJkTwUCZFAEAmRxCQENcGFyc2VJbnRWYWx1ZQEIBQJkWQJfOAMDAwkBAmJhAAYJAAACBQJkcQUBcgYJAAACBQJkcQUBdAkAAgEJAKwCAgIIQmxvY2tlZDoJAKQDAQUCZHEFAmRZAQJmcQUCZnICZGkCZGsCYWkCZnMEAmRtCQDYBAEJAQV2YWx1ZQEFAmJyBAJkbgkA2AQBCQEFdmFsdWUBBQJicwQCZGwFAmJxBAJkUwUCYnQEAmRUBQJidQQCZVIJALYCAQgJARN2YWx1ZU9yRXJyb3JNZXNzYWdlAgkA7AcBBQJkbAIQaW52YWxpZCBscCBhc3NldAhxdWFudGl0eQQCZnQDCQC/AgIFAmVSBQFlBgkAAgECImluaXRpYWwgZGVwb3NpdCByZXF1aXJlcyBhbGwgY29pbnMDCQAAAgUCZnQFAmZ0BAJkcwkBAmJRAQUCZG0EAmR1CQECYlEBBQJkbgQCZnUDCQAAAgUCYWkCAAkAlAoCBQJkcwUCZHUDCQAAAgUCZGkFAmRtAwkAZgIFAmZyBQJkcwkAAgECFmludmFsaWQgcGF5bWVudCBhbW91bnQJAJQKAgkAZQIFAmRzBQJmcgUCZHUDCQAAAgUCZGkFAmRuAwkAZgIFAmZyBQJkdQkAAgECFmludmFsaWQgcGF5bWVudCBhbW91bnQJAJQKAgUCZHMJAGUCBQJkdQUCZnIJAAIBAhB3cm9uZyBwbXRBc3NldElkBAJmdggFAmZ1Al8xBAJmdwgFAmZ1Al8yBAJmeAMJAAACBQJkaQUCZG0JAJQKAgUCZnIAAAMJAAACBQJkaQUCZG4JAJQKAgAABQJmcgkAAgECD2ludmFsaWQgcGF5bWVudAQCZnkIBQJmeAJfMQQCZnoIBQJmeAJfMgQCZkEDBQJmcwkAlQoDCAkBAmN5AgUCZnkFAmFXAl8xCAkBAmN5AgUCZnoFAmFXAl8xCAkBAmN5AgUCZnIFAmFXAl8yCQCVCgMFAmZ5BQJmegAABAJmQggFAmZBAl8xBAJmQwgFAmZBAl8yBAJjQQgFAmZBAl8zBAJmRAkAZAIFAmZ2BQJmQgQCZkUJAGQCBQJmdwUCZkMEAmNlCQECY0IBCQDMCAIJAQFJAgUCZnYFAmJ0CQDMCAIJAQFJAgUCZncFAmJ1BQNuaWwEAmNkCQECY0IBCQDMCAIJAQFJAgUCZkQFAmJ0CQDMCAIJAQFJAgUCZkUFAmJ1BQNuaWwEAmRaAwkAvwICBQJjZAUCY2UGCQEFdGhyb3cAAwkAAAIFAmRaBQJkWgQCZkYJAL0CBAUCZVIJALgCAgUCY2QFAmNlBQJjZQUFRkxPT1IEAmR4CQEBTQIJAQJiUwIJAQFJAgUCZkUFAmRUCQEBSQIFAmZEBQJkUwUBYQQCZXMJAMwIAgkBDEludGVnZXJFbnRyeQIJAQJhYwAFAmR4CQDMCAIJAQxJbnRlZ2VyRW50cnkCCQECYWQCBQZoZWlnaHQIBQlsYXN0QmxvY2sJdGltZXN0YW1wBQJkeAkAzAgCCQELU3RyaW5nRW50cnkCCQECYWcCBQJkawUCYWkJAQJiQgoFAmZ5BQJmegkAoAMBBQJmRgUCZHgAAAAABQZoZWlnaHQIBQlsYXN0QmxvY2sJdGltZXN0YW1wAAAAAAUDbmlsBAJmRwkAawMFAmZ3BQFhBQJmdgQCZkgJAGsDBQJmcgUBYQkAZAIFAmZHBQFhBAJmSQkAZQIFAmZyBQJmSAQCZkoJALwCAwUCZVIJALYCAQUCZkkJALYCAQUCZncEAmZLCQCgAwEJALwCAwkAuAICBQJmRgUCZkoFAWIFAmZKCQCWCgQJAKADAQUCZkYFAmVzBQJjQQUCZksJAAIBAiRTdHJpY3QgdmFsdWUgaXMgbm90IGVxdWFsIHRvIGl0c2VsZi4JAAIBAiRTdHJpY3QgdmFsdWUgaXMgbm90IGVxdWFsIHRvIGl0c2VsZi4BAmZMBgJmTQJmTgJmTwJmbgJmUAJmUQQCZGwJANgEAQkBBXZhbHVlAQUCYnEEAmRtCQDYBAEJAQV2YWx1ZQEFAmJyBAJkbgkA2AQBCQEFdmFsdWUBBQJicwQCZlIFAmJ0BAJmUwUCYnUEAmZUBQJicAQCZGsDCQAAAgUCZm4FAmJBBQJmUAUCZm4EAmZsCQEFdmFsdWUBCQCRAwIFAmZPAAAEAmRpCQEFdmFsdWUBCAUCZmwHYXNzZXRJZAQCZE8IBQJmbAZhbW91bnQEAmVTCQECZUwDBQFlBQFlBQFlAwkAAAIFAmVTBQJlUwQCZGgJANgEAQUCZlEDCQECIT0CBQJkbAkA2AQBBQJkaQkAAgECCFdyb25nIExQBAJkcwkBAmJRAQUCZG0EAmR1CQECYlEBBQJkbgQCZlUKAAJhWAkA/AcEBQR0aGlzAhNnZXRPbmVUa25WMlJFQURPTkxZCQDMCAIFAmZNCQDMCAIFAmRPBQNuaWwFA25pbAMJAAECBQJhWAIKKEludCwgSW50KQUCYVgJAAIBCQCsAgIJAAMBBQJhWAIfIGNvdWxkbid0IGJlIGNhc3QgdG8gKEludCwgSW50KQMJAAACBQJmVQUCZlUEAmNBCAUCZlUCXzIEAmZWCAUCZlUCXzEEAmZXAwMJAGYCBQJmTgAACQBmAgUCZk4FAmZWBwkBAmFTAQkAuQkCCQDMCAICH2Ftb3VudCB0byByZWNlaXZlIGlzIGxlc3MgdGhhbiAJAMwIAgkApAMBBQJmTgUDbmlsAgAFAmZWBAJmWAMJAAACBQJmTQUCZG0JAJYKBAUCZlcAAAkAZQIJAGUCBQJkcwUCZlcFAmNBBQJkdQMJAAACBQJmTQUCZG4JAJYKBAAABQJmVwUCZHMJAGUCCQBlAgUCZHUFAmZXBQJjQQkAAgECFGludmFsaWQgb3V0IGFzc2V0IGlkBAJmWQgFAmZYAl8xBAJmWggFAmZYAl8yBAJmRAgFAmZYAl8zBAJmRQgFAmZYAl80BAJnYQkBAmJTAgkBAUkCBQJmRQUCZlMJAQFJAgUCZkQFAmZSBAJnYgkBAU0CBQJnYQUBYQQCZ2MDCQAAAgUCZk0CBVdBVkVTBQR1bml0CQDZBAEFAmZNBAJnZAMJAGYCBQJjQQAACQDMCAIJAQ5TY3JpcHRUcmFuc2ZlcgMFAmJjBQJjQQUCZ2MFA25pbAUDbmlsBAJkRQkAzggCCQDMCAIJAQ5TY3JpcHRUcmFuc2ZlcgMFAmRrBQJmVwUCZ2MJAMwIAgkBC1N0cmluZ0VudHJ5AgkBAmFqAgkApQgBBQJkawUCZGgJAQJiTQYFAmZZBQJmWgUCZE8FAmdiBQZoZWlnaHQIBQlsYXN0QmxvY2sJdGltZXN0YW1wCQDMCAIJAQxJbnRlZ2VyRW50cnkCCQECYWMABQJnYgkAzAgCCQEMSW50ZWdlckVudHJ5AgkBAmFkAgUGaGVpZ2h0CAUJbGFzdEJsb2NrCXRpbWVzdGFtcAUCZ2IFA25pbAUCZ2QDCQAAAgUCZEUFAmRFBAJnZQkA/AcEBQJhVgIEYnVybgkAzAgCBQJkTwUDbmlsCQDMCAIJAQ9BdHRhY2hlZFBheW1lbnQCBQJkaQUCZE8FA25pbAMJAAACBQJnZQUCZ2UEAmdmBAJnZwMJAAACBQR0aGlzBQJiYwAABQJjQQQCZ2gDCQAAAgkBAmJoAQUCZk0FAmJyBgcDBQJnaAkAlAoCCQEBLQEJAGQCBQJmVgUCZ2cAAAkAlAoCAAAJAQEtAQkAZAIFAmZWBQJnZwQCZVUIBQJnZgJfMQQCZVYIBQJnZgJfMgQCZ2kJAQJlVAMFAmVVBQJlVgAABAJnaggFAmdpAl8xBAJlSwgFAmdpAl8yBAJnawkBAmVYAgUCZVMFAmVLAwkAAAIFAmdrBQJnawkAlAoCCQDOCAIFAmRFBQJnagUCZlcJAAIBAiRTdHJpY3QgdmFsdWUgaXMgbm90IGVxdWFsIHRvIGl0c2VsZi4JAAIBAiRTdHJpY3QgdmFsdWUgaXMgbm90IGVxdWFsIHRvIGl0c2VsZi4JAAIBAiRTdHJpY3QgdmFsdWUgaXMgbm90IGVxdWFsIHRvIGl0c2VsZi4JAAIBAiRTdHJpY3QgdmFsdWUgaXMgbm90IGVxdWFsIHRvIGl0c2VsZi4JAAIBAiRTdHJpY3QgdmFsdWUgaXMgbm90IGVxdWFsIHRvIGl0c2VsZi4BAmdsAAQCZ20JAKIIAQkBAmFhAAMJAAECBQJnbQIGU3RyaW5nBAJjRgUCZ20JANkEAQUCY0YDCQABAgUCZ20CBFVuaXQFBHVuaXQJAAIBAgtNYXRjaCBlcnJvcgECZ24ABAJnbQkAoggBCQECYWIAAwkAAQIFAmdtAgZTdHJpbmcEAmNGBQJnbQkA2QQBBQJjRgMJAAECBQJnbQIEVW5pdAUEdW5pdAkAAgECC01hdGNoIGVycm9yAAJnbwkAAgECEVBlcm1pc3Npb24gZGVuaWVkAQJncAECY1MEAmdtCQECZ2wAAwkAAQIFAmdtAgpCeXRlVmVjdG9yBAJncQUCZ20JAAACCAUCY1MPY2FsbGVyUHVibGljS2V5BQJncQMJAAECBQJnbQIEVW5pdAkAAAIIBQJjUwZjYWxsZXIFBHRoaXMJAAIBAgtNYXRjaCBlcnJvcgECZ3IBAmNTBAJnbQkBAmdsAAMJAAECBQJnbQIKQnl0ZVZlY3RvcgQCZ3EFAmdtAwkAAAIIBQJjUw9jYWxsZXJQdWJsaWNLZXkFAmdxBgUCZ28DCQABAgUCZ20CBFVuaXQDCQAAAggFAmNTBmNhbGxlcgUEdGhpcwYFAmdvCQACAQILTWF0Y2ggZXJyb3IBAmdzAwJndAJldQJndQQCYmwJAQJiZAAEAmRtCQCRAwIFAmJsBQF4BAJkbgkAkQMCBQJibAUBeQQCZXYFAWcEAmV4CQCnAwEFAW0EAmNHCQC5AgIJAKcDAQUCYVoFAmV4BAJjQwMJAAACBQJndAcJAMwIAgkAtwICCQC2AgEJAQJiUQEFAmRtBQJndQkAzAgCCQC2AgEJAQJiUQEFAmRuBQNuaWwJAMwIAgkAtwICCQC2AgEJAQJiUQEFAmRuBQJndQkAzAgCCQC2AgEJAQJiUQEFAmRtBQNuaWwEAmV3CQCRAwIFAmNDAAAEAmNGBQJldwQCY0gJALkCAgUCY0cFAmV2BAJleQkAugICCQC5AgIJALkCAgkAugICCQC5AgIFAmV1BQJldQkAuQICBQJldwUCZXYFAmV1BQJleAkAuQICBQJjSAUCZXYEAmV6CQC4AgIJALcCAgUCY0YJALoCAgkAuQICBQJldQUCZXgFAmNIBQJldQoBAmNRAgJjUgJlQQQCZ3YFAmNSBAJlQwgFAmd2Al8xBAJkZggFAmd2Al8yAwkBAiE9AgUCZGYFBHVuaXQFAmNSBAJlRAkAugICCQC3AgIJALkCAgUCZUMFAmVDBQJleQkAtwICCQC5AgIFAWcFAmVDBQJlegQCZUUJAQFZAQkAuAICBQJlRAkBBXZhbHVlAQUCZUMDCQDAAgIFAWYFAmVFCQCUCgIFAmVEBQJlQQkAlAoCBQJlRAUEdW5pdAQCY1cJAMwIAgAACQDMCAIAAQkAzAgCAAIJAMwIAgADCQDMCAIABAkAzAgCAAUJAMwIAgAGCQDMCAIABwkAzAgCAAgJAMwIAgAJCQDMCAIACgkAzAgCAAsJAMwIAgAMCQDMCAIADQkAzAgCAA4FA25pbAQCZ3cKAAJjWQUCY1cKAAJjWgkAkAMBBQJjWQoAAmRhCQCUCgIFAmV1BQR1bml0CgECZGICAmRjAmRkAwkAZwIFAmRkBQJjWgUCZGMJAQJjUQIFAmRjCQCRAwIFAmNZBQJkZAoBAmRlAgJkYwJkZAMJAGcCBQJkZAUCY1oFAmRjCQACAQIUTGlzdCBzaXplIGV4Y2VlZHMgMTUJAQJkZQIJAQJkYgIJAQJkYgIJAQJkYgIJAQJkYgIJAQJkYgIJAQJkYgIJAQJkYgIJAQJkYgIJAQJkYgIJAQJkYgIJAQJkYgIJAQJkYgIJAQJkYgIJAQJkYgIJAQJkYgIFAmRhAAAAAQACAAMABAAFAAYABwAIAAkACgALAAwADQAOAA8EAmVDCAUCZ3cCXzEEAmRmCAUCZ3cCXzIDCQECIT0CBQJkZgUEdW5pdAUCZUMJAAIBCQCsAgICGVkgY2FsY3VsYXRpb24gZXJyb3IsIFkgPSAJAKYDAQUCZUMBAmd4AAkBC3ZhbHVlT3JFbHNlAgkAmwgCBQJhVgkBAmFIAQkApQgBBQR0aGlzBx0CY1MBIWNhbGN1bGF0ZUFtb3VudE91dEZvclN3YXBSRUFET05MWQMCZ3kCZ3QCZ3oEAmdBAwkAAAIFAmd0BwQCZ0IJAQJhTwIFBHRoaXMJAQJhbAAEAmd1CQC3AgIJALYCAQkBAmJRAQkBAmFPAgUEdGhpcwkBAmFrAAkAtgIBBQJneQkAlAoCBQJnQgUCZ3UEAmdCCQECYU8CBQR0aGlzCQECYWsABAJndQkAtwICCQC2AgEJAQJiUQEJAQJhTwIFBHRoaXMJAQJhbAAJALYCAQUCZ3kJAJQKAgUCZ0IFAmd1BAJnQggFAmdBAl8xBAJndQgFAmdBAl8yBAJibAkBAmJkAAQCZG0JAJEDAgUCYmwFAXgEAmRuCQCRAwIFAmJsBQF5BAJjQwkAzAgCCQC2AgEJAQJiUQEFAmRtCQDMCAIJALYCAQkBAmJRAQUCZG4FA25pbAQCZXUJAQJjQgEFAmNDBAJlQwkBAmdzAwUCZ3QFAmV1CQC2AgEFAmd5BAJnQwkAuAICCQC4AgIJALYCAQkBAmJRAQUCZ0IFAmVDCQC2AgEAAQQCZ0QJAJYDAQkAzAgCAAAJAMwIAgkAoAMBBQJnQwUDbmlsBAJnRQMJAAACBQJndAcJAMwIAgkAtwICCQC3AgIJALYCAQkBAmJRAQUCZG0JALYCAQUCZ3kJALYCAQUCZ3oJAMwIAgkAuAICCQC2AgEJAQJiUQEFAmRuBQJnQwUDbmlsCQDMCAIJALgCAgkAtgIBCQECYlEBBQJkbQUCZ0MJAMwIAgkAtwICCQC3AgIJALYCAQkBAmJRAQUCZG4JALYCAQUCZ3kJALYCAQUCZ3oFA25pbAQCZ0YJAQJjQgEFAmdFBAJkWgMJAMACAgUCZ0YFAmV1BgkAAgEJALkJAgkAzAgCAhRuZXcgRCBpcyBmZXdlciBlcnJvcgkAzAgCCQCmAwEFAmV1CQDMCAIJAKYDAQUCZ0YFA25pbAICX18DCQAAAgUCZFoFAmRaCQCUCgIFA25pbAUCZ0QJAAIBAiRTdHJpY3QgdmFsdWUgaXMgbm90IGVxdWFsIHRvIGl0c2VsZi4CY1MBJmNhbGN1bGF0ZUFtb3VudE91dEZvclN3YXBBbmRTZW5kVG9rZW5zBQJneQJndAJnRwJnSAJnegQCZ0kKAAJhWAkA/AcEBQJhVgIXZ2V0U3dhcENvbnRyYWN0UkVBRE9OTFkFA25pbAUDbmlsAwkAAQIFAmFYAgZTdHJpbmcFAmFYCQACAQkArAICCQADAQUCYVgCGyBjb3VsZG4ndCBiZSBjYXN0IHRvIFN0cmluZwQCZ0oJAMwIAgMJAGcCCAkBBXZhbHVlAQkAkQMCCAUCY1MIcGF5bWVudHMAAAZhbW91bnQFAmd5BgkBAmFTAQIMV3JvbmcgYW1vdW50CQDMCAIDCQAAAggFAmNTBmNhbGxlcgkBEUBleHRyTmF0aXZlKDEwNjIpAQUCZ0kGCQECYVMBAhFQZXJtaXNzaW9uIGRlbmllZAUDbmlsAwkAAAIFAmdKBQJnSgQCZmwJAQV2YWx1ZQEJAJEDAggFAmNTCHBheW1lbnRzAAAEAmdLCQECYmoBCAUCZmwHYXNzZXRJZAQCZ0wDCQAAAgUCZ3QHBAJnQgkBAmFPAgUEdGhpcwkBAmFsAAQCZ3UJAGUCCQECYlEBBQJnSwgJAQV2YWx1ZQEJAJEDAggFAmNTCHBheW1lbnRzAAAGYW1vdW50CQCUCgIFAmdCBQJndQQCZ0IJAQJhTwIFBHRoaXMJAQJhawAEAmd1CQBlAgkBAmJRAQUCZ0sICQEFdmFsdWUBCQCRAwIIBQJjUwhwYXltZW50cwAABmFtb3VudAkAlAoCBQJnQgUCZ3UEAmdCCAUCZ0wCXzEEAmd1CAUCZ0wCXzIEAmJsCQECYmQABAJkbQkAkQMCBQJibAUBeAQCZG4JAJEDAgUCYmwFAXkEAmNDAwkAAAIFAmd0BwkAzAgCCQC4AgIJALYCAQkBAmJRAQUCZG0JALYCAQgJAQV2YWx1ZQEJAJEDAggFAmNTCHBheW1lbnRzAAAGYW1vdW50CQDMCAIJALYCAQkBAmJRAQUCZG4FA25pbAkAzAgCCQC2AgEJAQJiUQEFAmRtCQDMCAIJALgCAgkAtgIBCQECYlEBBQJkbgkAtgIBCAkBBXZhbHVlAQkAkQMCCAUCY1MIcGF5bWVudHMAAAZhbW91bnQFA25pbAQCZXUJAQJjQgEFAmNDBAJlQwkBAmdzAwUCZ3QFAmV1CQC2AgEAAAQCZ0MJALgCAgkAuAICCQC2AgEJAQJiUQEFAmdCBQJlQwkAtgIBAAEEAmdECQCWAwEJAMwIAgAACQDMCAIJAKADAQUCZ0MFA25pbAQCZ00DCQBnAgUCZ0QFAmdHBgkAAgECLEV4Y2hhbmdlIHJlc3VsdCBpcyBmZXdlciBjb2lucyB0aGFuIGV4cGVjdGVkAwkAAAIFAmdNBQJnTQQCZ0UDCQAAAgUCZ3QHCQDMCAIJALcCAgkAtgIBCQECYlEBBQJkbQkAtgIBBQJnegkAzAgCCQC4AgIJALYCAQkBAmJRAQUCZG4FAmdDBQNuaWwJAMwIAgkAuAICCQC2AgEJAQJiUQEFAmRtBQJnQwkAzAgCCQC3AgIJALYCAQkBAmJRAQUCZG4JALYCAQUCZ3oFA25pbAQCZ0YJAQJjQgEFAmdFBAJkWgMJAMACAgUCZ0YFAmV1BgkAAgECFG5ldyBEIGlzIGZld2VyIGVycm9yAwkAAAIFAmRaBQJkWgkAlAoCCQDMCAIJAQ5TY3JpcHRUcmFuc2ZlcgMJARFAZXh0ck5hdGl2ZSgxMDYyKQEFAmdIBQJnRAkBAmJoAQUCZ0IFA25pbAUCZ0QJAAIBAiRTdHJpY3QgdmFsdWUgaXMgbm90IGVxdWFsIHRvIGl0c2VsZi4JAAIBAiRTdHJpY3QgdmFsdWUgaXMgbm90IGVxdWFsIHRvIGl0c2VsZi4JAAIBAiRTdHJpY3QgdmFsdWUgaXMgbm90IGVxdWFsIHRvIGl0c2VsZi4CY1MBC2NvbnN0cnVjdG9yAQFaBAJleQkBAmdyAQUCY1MDCQAAAgUCZXkFAmV5CQDMCAIJAQtTdHJpbmdFbnRyeQIJAQFaAAUBWgUDbmlsCQACAQIkU3RyaWN0IHZhbHVlIGlzIG5vdCBlcXVhbCB0byBpdHNlbGYuAmNTAQpzZXRNYW5hZ2VyAQJnTgQCZXkJAQJncgEFAmNTAwkAAAIFAmV5BQJleQQCZ08JANkEAQUCZ04DCQAAAgUCZ08FAmdPCQDMCAIJAQtTdHJpbmdFbnRyeQIJAQJhYgAFAmdOBQNuaWwJAAIBAiRTdHJpY3QgdmFsdWUgaXMgbm90IGVxdWFsIHRvIGl0c2VsZi4JAAIBAiRTdHJpY3QgdmFsdWUgaXMgbm90IGVxdWFsIHRvIGl0c2VsZi4CY1MBDmNvbmZpcm1NYW5hZ2VyAAQCY3gJAQJnbgAEAmdQAwkBCWlzRGVmaW5lZAEFAmN4BgkAAgECEk5vIHBlbmRpbmcgbWFuYWdlcgMJAAACBQJnUAUCZ1AEAmdRAwkAAAIIBQJjUw9jYWxsZXJQdWJsaWNLZXkJAQV2YWx1ZQEFAmN4BgkAAgECG1lvdSBhcmUgbm90IHBlbmRpbmcgbWFuYWdlcgMJAAACBQJnUQUCZ1EJAMwIAgkBC1N0cmluZ0VudHJ5AgkBAmFhAAkA2AQBCQEFdmFsdWUBBQJjeAkAzAgCCQELRGVsZXRlRW50cnkBCQECYWIABQNuaWwJAAIBAiRTdHJpY3QgdmFsdWUgaXMgbm90IGVxdWFsIHRvIGl0c2VsZi4JAAIBAiRTdHJpY3QgdmFsdWUgaXMgbm90IGVxdWFsIHRvIGl0c2VsZi4CY1MBA3B1dAICZ1ICZ1MEAmdUCQECYnYABAJnVQkBE3ZhbHVlT3JFcnJvck1lc3NhZ2UCCQCmCAEJAJEDAgUCZ1QFAUQCCldyIHN0IGFkZHIEAmdWCQETdmFsdWVPckVycm9yTWVzc2FnZQIJAKYIAQkAkQMCBQJnVAUBRgIKV3Igc2wgYWRkcgMJAGYCAAAFAmdSCQACAQIOV3Jvbmcgc2xpcHBhZ2UDCQECIT0CCQCQAwEIBQJjUwhwYXltZW50cwACCQACAQIMMiBwbW50cyBleHBkBAJnVwkAtgIBCAkBBXZhbHVlAQkAkQMCCAUCY1MIcGF5bWVudHMAAAZhbW91bnQEAmdYCQC2AgEICQEFdmFsdWUBCQCRAwIIBQJjUwhwYXltZW50cwABBmFtb3VudAQCZVAJALgCAgkAtgIBCQECYlEBCQECYmoBBQJicgUCZ1cDCQAAAgUCZVAFAmVQBAJlUQkAuAICCQC2AgEJAQJiUQEJAQJiagEFAmJzBQJnWAMJAAACBQJlUQUCZVEEAmVSCQC2AgEICQEFdmFsdWUBCQDsBwEFAmJxCHF1YW50aXR5AwkAAAIFAmVSBQJlUgQCZVMJAQJlTAMFAmdXBQJnWAkAtgIBAAADCQAAAgUCZVMFAmVTBAJnWQkBAmZtCgkApQgBCAUCY1MGY2FsbGVyCQDYBAEIBQJjUw10cmFuc2FjdGlvbklkCQEPQXR0YWNoZWRQYXltZW50AggJAQV2YWx1ZQEJAJEDAggFAmNTCHBheW1lbnRzAAAHYXNzZXRJZAgJAQV2YWx1ZQEJAJEDAggFAmNTCHBheW1lbnRzAAAGYW1vdW50CQCRAwIIBQJjUwhwYXltZW50cwABBQJnUgYHBgAAAgAEAmVtCAUCZ1kCXzIEAmdaCAUCZ1kCXzcEAmRFCAUCZ1kCXzkEAmVuCAUCZ1kDXzEwBAJlbwgFAmdZA18xMQQCZG0IBQJnWQNfMTIEAmRuCAUCZ1kDXzEzBAJkWQkA/AcEBQJhVgIEZW1pdAkAzAgCBQJlbQUDbmlsBQNuaWwDCQAAAgUCZFkFAmRZBAJoYQQCZ20FAmRZAwkAAQIFAmdtAgdBZGRyZXNzBAJoYgUCZ20JAPwHBAUCaGICBGVtaXQJAMwIAgUCZW0FA25pbAUDbmlsBQR1bml0AwkAAAIFAmhhBQJoYQQCaGMDCQBmAgUCZW4AAAkA/AcEBQJnVgIDcHV0BQNuaWwJAMwIAgkBD0F0dGFjaGVkUGF5bWVudAIFAmRtBQJlbgUDbmlsBQNuaWwDCQAAAgUCaGMFAmhjBAJoZAMJAGYCBQJlbwAACQD8BwQFAmdWAgNwdXQFA25pbAkAzAgCCQEPQXR0YWNoZWRQYXltZW50AgUCZG4FAmVvBQNuaWwFA25pbAMJAAACBQJoZAUCaGQEAmhlAwUCZ1MEAmhmCQD8BwQFAmdVAgVzdGFrZQUDbmlsCQDMCAIJAQ9BdHRhY2hlZFBheW1lbnQCBQJnWgUCZW0FA25pbAMJAAACBQJoZgUCaGYFA25pbAkAAgECJFN0cmljdCB2YWx1ZSBpcyBub3QgZXF1YWwgdG8gaXRzZWxmLgkAzAgCCQEOU2NyaXB0VHJhbnNmZXIDCAUCY1MGY2FsbGVyBQJlbQUCZ1oFA25pbAQCaGcJAQJlVAMAAAAAAAAEAmdqCAUCaGcCXzEEAmVLCAUCaGcCXzIEAmhoAwkAwAICBQJlSwUCZVMGCQECYVMBCQC5CQIJAMwIAgIidXBkYXRlZCBETHAgbG93ZXIgdGhhbiBjdXJyZW50IERMcAkAzAgCCQCmAwEFAmVQCQDMCAIJAKYDAQUCZVEJAMwIAgkApgMBBQJlUgkAzAgCCQCmAwEFAmVTCQDMCAIJAKYDAQUCZUsJAMwIAgkApAMBBQJlbgkAzAgCCQCkAwEFAmVvBQNuaWwCASADCQAAAgUCaGgFAmhoBAJoaQgJAQV2YWx1ZQEJAOwHAQUCYnEIcXVhbnRpdHkDCQAAAgUCaGkFAmhpCQDOCAIJAM4IAgUCZEUFAmhlBQJnagkAAgECJFN0cmljdCB2YWx1ZSBpcyBub3QgZXF1YWwgdG8gaXRzZWxmLgkAAgECJFN0cmljdCB2YWx1ZSBpcyBub3QgZXF1YWwgdG8gaXRzZWxmLgkAAgECJFN0cmljdCB2YWx1ZSBpcyBub3QgZXF1YWwgdG8gaXRzZWxmLgkAAgECJFN0cmljdCB2YWx1ZSBpcyBub3QgZXF1YWwgdG8gaXRzZWxmLgkAAgECJFN0cmljdCB2YWx1ZSBpcyBub3QgZXF1YWwgdG8gaXRzZWxmLgkAAgECJFN0cmljdCB2YWx1ZSBpcyBub3QgZXF1YWwgdG8gaXRzZWxmLgkAAgECJFN0cmljdCB2YWx1ZSBpcyBub3QgZXF1YWwgdG8gaXRzZWxmLgkAAgECJFN0cmljdCB2YWx1ZSBpcyBub3QgZXF1YWwgdG8gaXRzZWxmLgkAAgECJFN0cmljdCB2YWx1ZSBpcyBub3QgZXF1YWwgdG8gaXRzZWxmLgkAAgECJFN0cmljdCB2YWx1ZSBpcyBub3QgZXF1YWwgdG8gaXRzZWxmLgJjUwELcHV0T25lVGtuVjICAmZOAmdTBAJoagoAAmFYCQD8BwQFAmFWAihpc1Bvb2xPbmVUb2tlbk9wZXJhdGlvbnNEaXNhYmxlZFJFQURPTkxZCQDMCAIJAKUIAQUEdGhpcwUDbmlsBQNuaWwDCQABAgUCYVgCB0Jvb2xlYW4FAmFYCQACAQkArAICCQADAQUCYVgCHCBjb3VsZG4ndCBiZSBjYXN0IHRvIEJvb2xlYW4EAmhrAwMDCQECYmEABgkAAAIFAmJwBQFyBgkAAAIFAmJwBQF0BgUCaGoEAmdKCQDMCAIDAwkBASEBBQJoawYJAQJncAEFAmNTBgkBAmFTAQIhcHV0IG9wZXJhdGlvbiBpcyBibG9ja2VkIGJ5IGFkbWluCQDMCAIDCQAAAgkAkAMBCAUCY1MIcGF5bWVudHMAAQYJAQJhUwECHmV4YWN0bHkgMSBwYXltZW50IGFyZSBleHBlY3RlZAUDbmlsAwkAAAIFAmdKBQJnSgQCZG0JANgEAQkBBXZhbHVlAQUCYnIEAmRuCQDYBAEJAQV2YWx1ZQEFAmJzBAJkbAUCYnEEAmZSBQJidAQCZlMFAmJ1BAJkawMJAAACCAUCY1MGY2FsbGVyBQR0aGlzCAUCY1MMb3JpZ2luQ2FsbGVyCAUCY1MGY2FsbGVyBAJmbAkBBXZhbHVlAQkAkQMCCAUCY1MIcGF5bWVudHMAAAQCZGkJANgEAQkBBXZhbHVlAQgFAmZsB2Fzc2V0SWQEAmRPCAUCZmwGYW1vdW50BAJlUwMJAAACCAUCZmwHYXNzZXRJZAUCYnIJAQJlTAMJALYCAQUCZE8JALYCAQAACQC2AgEAAAkBAmVMAwkAtgIBAAAJALYCAQUCZE8JALYCAQAAAwkAAAIFAmVTBQJlUwQCaGwJAQJmcQUFAmRPBQJkaQkApQgBBQJkawkA2AQBCAUCY1MNdHJhbnNhY3Rpb25JZAYDCQAAAgUCaGwFAmhsBAJjQQgFAmhsAl8zBAJkRQgFAmhsAl8yBAJobQgFAmhsAl8xBAJlbQMDCQBmAgUCZk4AAAkAZgIFAmZOBQJobQcJAQJhUwEJALkJAgkAzAgCAh9hbW91bnQgdG8gcmVjZWl2ZSBpcyBsZXNzIHRoYW4gCQDMCAIJAKQDAQUCZk4FA25pbAIABQJobQQCZ1kJAPwHBAUCYVYCBGVtaXQJAMwIAgUCZW0FA25pbAUDbmlsAwkAAAIFAmdZBQJnWQQCaGEEAmdtBQJnWQMJAAECBQJnbQIHQWRkcmVzcwQCaGIFAmdtCQD8BwQFAmhiAgRlbWl0CQDMCAIFAmVtBQNuaWwFA25pbAUEdW5pdAMJAAACBQJoYQUCaGEEAmhlAwUCZ1MEAmhmCQD8BwQFAmJ4AghzdGFrZUZvcgkAzAgCCQClCAEIBQJjUwZjYWxsZXIFA25pbAkAzAgCCQEPQXR0YWNoZWRQYXltZW50AgUCZGwFAmVtBQNuaWwDCQAAAgUCaGYFAmhmBQNuaWwJAAIBAiRTdHJpY3QgdmFsdWUgaXMgbm90IGVxdWFsIHRvIGl0c2VsZi4JAMwIAgkBDlNjcmlwdFRyYW5zZmVyAwgFAmNTBmNhbGxlcgUCZW0FAmRsBQNuaWwEAmdkAwkAZgIFAmNBAAAJAMwIAgkBDlNjcmlwdFRyYW5zZmVyAwUCYmMFAmNBCQDZBAEFAmRpBQNuaWwFA25pbAQCaG4DCQAAAgUEdGhpcwUCYmMJAJQKAgAAAAAEAmhvAwkAAAIIBQJmbAdhc3NldElkBQJicgYHAwUCaG8JAJQKAgkBAS0BBQJjQQAACQCUCgIAAAkBAS0BBQJjQQQCZVUIBQJobgJfMQQCZVYIBQJobgJfMgQCaHAJAQJlVAMFAmVVBQJlVgAABAJnaggFAmhwAl8xBAJlSwgFAmhwAl8yBAJnawkBAmVYAgUCZVMFAmVLAwkAAAIFAmdrBQJnawkAlAoCCQDOCAIJAM4IAgkAzggCBQJkRQUCaGUFAmdkBQJnagUCZW0JAAIBAiRTdHJpY3QgdmFsdWUgaXMgbm90IGVxdWFsIHRvIGl0c2VsZi4JAAIBAiRTdHJpY3QgdmFsdWUgaXMgbm90IGVxdWFsIHRvIGl0c2VsZi4JAAIBAiRTdHJpY3QgdmFsdWUgaXMgbm90IGVxdWFsIHRvIGl0c2VsZi4JAAIBAiRTdHJpY3QgdmFsdWUgaXMgbm90IGVxdWFsIHRvIGl0c2VsZi4JAAIBAiRTdHJpY3QgdmFsdWUgaXMgbm90IGVxdWFsIHRvIGl0c2VsZi4JAAIBAiRTdHJpY3QgdmFsdWUgaXMgbm90IGVxdWFsIHRvIGl0c2VsZi4CY1MBCnB1dEZvckZyZWUBAmhxAwkAZgIAAAUCaHEJAAIBAgpXcm9uZyBzbHBnAwkBAiE9AgkAkAMBCAUCY1MIcGF5bWVudHMAAgkAAgECDDIgcG1udHMgZXhwZAQCaHIJAQJmbQoJAKUIAQgFAmNTBmNhbGxlcgkA2AQBCAUCY1MNdHJhbnNhY3Rpb25JZAkBD0F0dGFjaGVkUGF5bWVudAIICQEFdmFsdWUBCQCRAwIIBQJjUwhwYXltZW50cwAAB2Fzc2V0SWQICQEFdmFsdWUBCQCRAwIIBQJjUwhwYXltZW50cwAABmFtb3VudAkAkQMCCAUCY1MIcGF5bWVudHMAAQUCaHEHBwYAAAIABAJkRQgFAmhyAl85BAJnVwkAtgIBCAkBBXZhbHVlAQkAkQMCCAUCY1MIcGF5bWVudHMAAAZhbW91bnQEAmdYCQC2AgEICQEFdmFsdWUBCQCRAwIIBQJjUwhwYXltZW50cwABBmFtb3VudAQCZVMJAQJlTAMFAmdXBQJnWAkAtgIBAAADCQAAAgUCZVMFAmVTBAJocwkBAmVUAwAAAAAAAAQCZ2oIBQJocwJfMQQCZUsIBQJocwJfMgQCZ2sJAQJlWAIFAmVTBQJlSwMJAAACBQJnawUCZ2sJAM4IAgUCZEUFAmdqCQACAQIkU3RyaWN0IHZhbHVlIGlzIG5vdCBlcXVhbCB0byBpdHNlbGYuCQACAQIkU3RyaWN0IHZhbHVlIGlzIG5vdCBlcXVhbCB0byBpdHNlbGYuAmNTAQNnZXQABAJlUwkBAmVMAwkAtgIBAAAJALYCAQAACQC2AgEAAAMJAAACBQJlUwUCZVMEAmRZCQECZmsBBQJjUwQCaHQIBQJkWQJfMQQCZEQIBQJkWQJfMgQCZE8IBQJkWQJfMwQCZGkIBQJkWQJfNAQCZEUIBQJkWQJfNQQCZXoJAPwHBAUCYVYCBGJ1cm4JAMwIAgUCZE8FA25pbAkAzAgCCQEPQXR0YWNoZWRQYXltZW50AgUCZGkFAmRPBQNuaWwDCQAAAgUCZXoFAmV6BAJodQkBAmVUAwkBAS0BBQJodAkBAS0BBQJkRAAABAJnaggFAmh1Al8xBAJlSwgFAmh1Al8yBAJnawkBAmVYAgUCZVMFAmVLAwkAAAIFAmdrBQJnawkAzggCBQJkRQUCZ2oJAAIBAiRTdHJpY3QgdmFsdWUgaXMgbm90IGVxdWFsIHRvIGl0c2VsZi4JAAIBAiRTdHJpY3QgdmFsdWUgaXMgbm90IGVxdWFsIHRvIGl0c2VsZi4JAAIBAiRTdHJpY3QgdmFsdWUgaXMgbm90IGVxdWFsIHRvIGl0c2VsZi4CY1MBC2dldE9uZVRrblYyAgJmTQJmTgQCaGoKAAJhWAkA/AcEBQJhVgIoaXNQb29sT25lVG9rZW5PcGVyYXRpb25zRGlzYWJsZWRSRUFET05MWQkAzAgCCQClCAEFBHRoaXMFA25pbAUDbmlsAwkAAQIFAmFYAgdCb29sZWFuBQJhWAkAAgEJAKwCAgkAAwEFAmFYAhwgY291bGRuJ3QgYmUgY2FzdCB0byBCb29sZWFuBAJodgMDCQECYmEABgkAAAIFAmJwBQF0BgUCaGoEAmdKCQDMCAIDAwkBASEBBQJodgYJAQJncAEFAmNTBgkBAmFTAQIhZ2V0IG9wZXJhdGlvbiBpcyBibG9ja2VkIGJ5IGFkbWluCQDMCAIDCQAAAgkAkAMBCAUCY1MIcGF5bWVudHMAAQYJAQJhUwECHmV4YWN0bHkgMSBwYXltZW50IGFyZSBleHBlY3RlZAUDbmlsAwkAAAIFAmdKBQJnSgQCaHcJAQJmTAYFAmZNBQJmTggFAmNTCHBheW1lbnRzCAUCY1MGY2FsbGVyCAUCY1MMb3JpZ2luQ2FsbGVyCAUCY1MNdHJhbnNhY3Rpb25JZAQCZEUIBQJodwJfMQQCZlcIBQJodwJfMgkAlAoCBQJkRQUCZlcJAAIBAiRTdHJpY3QgdmFsdWUgaXMgbm90IGVxdWFsIHRvIGl0c2VsZi4CY1MBCnJlZnJlc2hETHAABAJoeAkBC3ZhbHVlT3JFbHNlAgkAnwgBBQJhdAAABAJoeQMJAGcCCQBlAgUGaGVpZ2h0BQJoeAUCYXcFBHVuaXQJAQJhUwEJALkJAgkAzAgCCQCkAwEFAmF3CQDMCAICLyBibG9ja3MgaGF2ZSBub3QgcGFzc2VkIHNpbmNlIHRoZSBwcmV2aW91cyBjYWxsBQNuaWwCAAMJAAACBQJoeQUCaHkEAmZlCQETdmFsdWVPckVycm9yTWVzc2FnZQIJAKgDAQkBC3ZhbHVlT3JFbHNlAgkAnQgCBQR0aGlzBQJh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CQECYnYABAJnWgUCYnEEAmhOCQETdmFsdWVPckVycm9yTWVzc2FnZQIJAKYIAQkAkQMCBQJoTQUBRAIKV3Igc3QgYWRkcgQCZVMJAQJlTAMJALYCAQAACQC2AgEAAAkAtgIBAAADCQAAAgUCZVMFAmVTBAJoTwkA/AcEBQJoTgIHdW5zdGFrZQkAzAgCCQDYBAEFAmdaCQDMCAIFAmN6BQNuaWwFA25pbAMJAAACBQJoTwUCaE8EAmRZCQECZGcECQDYBAEIBQJjUw10cmFuc2FjdGlvbklkCQDYBAEFAmdaBQJjeggFAmNTBmNhbGxlcgQCZEMIBQJkWQJfMQQCZEQIBQJkWQJfMgQCZHEJAQ1wYXJzZUludFZhbHVlAQgFAmRZAl85BAJkRQgFAmRZA18xMAQCaFADAwkBAmJhAAYJAAACBQJkcQUBdAkAAgEJAKwCAgIJQmxvY2tlZDogCQCkAwEFAmRxBgMJAAACBQJoUAUCaFAEAmhRCQD8BwQFAmFWAgRidXJuCQDMCAIFAmN6BQNuaWwJAMwIAgkBD0F0dGFjaGVkUGF5bWVudAIFAmdaBQJjegUDbmlsAwkAAAIFAmhRBQJoUQQCaFIJAQJlVAMJAQEtAQUCZEMJAQEtAQUCZEQAAAQCZ2oIBQJoUgJfMQQCZUsIBQJoUgJfMgQCZ2sJAQJlWAIFAmVTBQJlSwMJAAACBQJnawUCZ2sJAM4IAgUCZEUFAmdqCQACAQIkU3RyaWN0IHZhbHVlIGlzIG5vdCBlcXVhbCB0byBpdHNlbGYuCQACAQIkU3RyaWN0IHZhbHVlIGlzIG5vdCBlcXVhbCB0byBpdHNlbGYuCQACAQIkU3RyaWN0IHZhbHVlIGlzIG5vdCBlcXVhbCB0byBpdHNlbGYuCQACAQIkU3RyaWN0IHZhbHVlIGlzIG5vdCBlcXVhbCB0byBpdHNlbGYuCQACAQIkU3RyaWN0IHZhbHVlIGlzIG5vdCBlcXVhbCB0byBpdHNlbGYuCQACAQIkU3RyaWN0IHZhbHVlIGlzIG5vdCBlcXVhbCB0byBpdHNlbGYuAmNTARN1bnN0YWtlQW5kR2V0Tm9MZXNzAwJoUwJoVAJoSQQCaHYDCQECYmEABgkAAAIFAmJwBQF0BAJnSgkAzAgCAwkBASEBBQJodgYJAAIBAiFnZXQgb3BlcmF0aW9uIGlzIGJsb2NrZWQgYnkgYWRtaW4JAMwIAgMJAAACCQCQAwEIBQJjUwhwYXltZW50cwAABgkAAgECGG5vIHBheW1lbnRzIGFyZSBleHBlY3RlZAUDbmlsAwkAAAIFAmdKBQJnSgQCZVMJAQJlTAMJALYCAQAACQC2AgEAAAkAtgIBAAADCQAAAgUCZVMFAmVTBAJoTwkA/AcEBQJieAIHdW5zdGFrZQkAzAgCCQDYBAEFAmJxCQDMCAIFAmhTBQNuaWwFA25pbAMJAAACBQJoTwUCaE8EAmhVCQECZGcECQDYBAEIBQJjUw10cmFuc2FjdGlvbklkCQDYBAEFAmJxBQJoUwgFAmNTBmNhbGxlcgQCZEMIBQJoVQJfMQQCZEQIBQJoVQJfMgQCZEUIBQJoVQNfMTAEAmhWCQDMCAIDCQBnAgUCZEMFAmhUBgkAAgEJALkJAgkAzAgCAixhbW91bnQgYXNzZXQgYW1vdW50IHRvIHJlY2VpdmUgaXMgbGVzcyB0aGFuIAkAzAgCCQCkAwEFAmhUBQNuaWwCAAkAzAgCAwkAZwIFAmREBQJoSQYJAAIBCQC5CQIJAMwIAgIrcHJpY2UgYXNzZXQgYW1vdW50IHRvIHJlY2VpdmUgaXMgbGVzcyB0aGFuIAkAzAgCCQCkAwEFAmhJBQNuaWwCAAUDbmlsAwkAAAIFAmhWBQJoVgQCaEoJAPwHBAUCYVYCBGJ1cm4JAMwIAgUCaFMFA25pbAkAzAgCCQEPQXR0YWNoZWRQYXltZW50AgUCYnEFAmhTBQNuaWwDCQAAAgUCaEoFAmhKBAJoVwkBAmVUAwkBAS0BBQJkQwkBAS0BBQJkRAAABAJnaggFAmhXAl8xBAJlSwgFAmhXAl8yBAJnawkBAmVYAgUCZVMFAmVLAwkAAAIFAmdrBQJnawkAzggCBQJkRQUCZ2oJAAIBAiRTdHJpY3QgdmFsdWUgaXMgbm90IGVxdWFsIHRvIGl0c2VsZi4JAAIBAiRTdHJpY3QgdmFsdWUgaXMgbm90IGVxdWFsIHRvIGl0c2VsZi4JAAIBAiRTdHJpY3QgdmFsdWUgaXMgbm90IGVxdWFsIHRvIGl0c2VsZi4JAAIBAiRTdHJpY3QgdmFsdWUgaXMgbm90IGVxdWFsIHRvIGl0c2VsZi4JAAIBAiRTdHJpY3QgdmFsdWUgaXMgbm90IGVxdWFsIHRvIGl0c2VsZi4JAAIBAiRTdHJpY3QgdmFsdWUgaXMgbm90IGVxdWFsIHRvIGl0c2VsZi4CY1MBFXVuc3Rha2VBbmRHZXRPbmVUa25WMgMCaFMCZk0CZk4EAmhqCgACYVgJAPwHBAUCYVYCKGlzUG9vbE9uZVRva2VuT3BlcmF0aW9uc0Rpc2FibGVkUkVBRE9OTFkJAMwIAgkApQgBBQR0aGlzBQNuaWwFA25pbAMJAAECBQJhWAIHQm9vbGVhbgUCYVgJAAIBCQCsAgIJAAMBBQJhWAIcIGNvdWxkbid0IGJlIGNhc3QgdG8gQm9vbGVhbgQCaHYDAwkBAmJhAAYJAAACBQJicAUBdAYFAmhqBAJnSgkAzAgCAwMJAQEhAQUCaHYGCQECZ3ABBQJjUwYJAQJhUwECIWdldCBvcGVyYXRpb24gaXMgYmxvY2tlZCBieSBhZG1pbgkAzAgCAwkAAAIJAJADAQgFAmNTCHBheW1lbnRzAAAGCQECYVMBAhhubyBwYXltZW50cyBhcmUgZXhwZWN0ZWQFA25pbAMJAAACBQJnSgUCZ0oEAmhNCQECYnYABAJnWgUCYnEEAmhOCQETdmFsdWVPckVycm9yTWVzc2FnZQIJAKYIAQkAkQMCBQJoTQUBRAIKV3Igc3QgYWRkcgQCZGsIBQJjUwZjYWxsZXIEAmhYBQR0aGlzBAJoTwkA/AcEBQJoTgIPdW5zdGFrZUlOVEVSTkFMCQDMCAIFAmdaCQDMCAIFAmhTCQDMCAIIBQJkawVieXRlcwkAzAgCCAUCaFgFYnl0ZXMFA25pbAUDbmlsAwkAAAIFAmhPBQJoTwQCaFkJAQJmTAYFAmZNBQJmTgkAzAgCCQEPQXR0YWNoZWRQYXltZW50AgUCZ1oFAmhTBQNuaWwIBQJjUwZjYWxsZXIIBQJjUwxvcmlnaW5DYWxsZXIIBQJjUw10cmFuc2FjdGlvbklkBAJkRQgFAmhZAl8xBAJmVwgFAmhZAl8yCQCUCgIFAmRFBQJmVwkAAgECJFN0cmljdCB2YWx1ZSBpcyBub3QgZXF1YWwgdG8gaXRzZWxmLgkAAgECJFN0cmljdCB2YWx1ZSBpcyBub3QgZXF1YWwgdG8gaXRzZWxmLgJjUwEccHV0T25lVGtuVjJXaXRoQm9udXNSRUFET05M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AgUGaGVpZ2h0BQJpdAYJAQJhUwECF3RyeSBhZ2FpbiBpbiBmZXcgYmxvY2tzCQDMCAIDCQECIT0CBQJpcAUCaXIGCQECYVMBAhZhbHJlYWR5IHJlYWNoZWQgdGFyZ2V0BQNuaWwDCQAAAgUCZ0oFAmdKCQDMCAIJAQxJbnRlZ2VyRW50cnkCCQECYXAABQZoZWlnaHQJAMwIAgkBC1N0cmluZ0VudHJ5AgkBAmFtAAkApAMBBQJpcgkAzAgCCQELU3RyaW5nRW50cnkCCQECYW4BBQZoZWlnaHQJAKQDAQUCaXIFA25pbAkAAgECJFN0cmljdCB2YWx1ZSBpcyBub3QgZXF1YWwgdG8gaXRzZWxmLgECaXUBAml2AAQCaXcEAmdtCQECZ2wAAwkAAQIFAmdtAgpCeXRlVmVjdG9yBAJncQUCZ20FAmdxAwkAAQIFAmdtAgRVbml0CAUCaXUPc2VuZGVyUHVibGljS2V5CQACAQILTWF0Y2ggZXJyb3IEAmdtBQJpdQMJAAECBQJnbQIFT3JkZXIEAmZhBQJnbQQCaXgJAQJiYgAEAml5AwkBAmd4AAkAlAoCBgIACQECZVoBBQJmYQQCYUsIBQJpeQJfMQQCYUwIBQJpeQJfMgQCYU0JAPQDAwgFAmZhCWJvZHlCeXRlcwkAkQMCCAUCZmEGcHJvb2ZzAAAIBQJmYQ9zZW5kZXJQdWJsaWNLZXkEAmFOCQD0AwMIBQJmYQlib2R5Qnl0ZXMJAJEDAggFAmZhBnByb29mcwABBQJpeAMDAwUCYUsFAmFNBwUCYU4HBgkBAmFKBAUCYUsFAmFMBQJhTQUCYU4DCQABAgUCZ20CFFNldFNjcmlwdFRyYW5zYWN0aW9uBAJjRgUCZ20DCQD0AwMIBQJpdQlib2R5Qnl0ZXMJAJEDAggFAml1BnByb29mcwAABQJpdwYEAml6CQD2AwEJAQV2YWx1ZQEIBQJjRgZzY3JpcHQEAmlBCQDbBAEJAQV2YWx1ZQEJAJ0IAgUCYVYJAQJhRgAEAmlCCQDxBwEFBHRoaXMDCQAAAgUCaUEFAml6CQECIT0CBQJpQgUCaXoHCQD0AwMIBQJpdQlib2R5Qnl0ZXMJAJEDAggFAml1BnByb29mcwAABQJpd9dYCLA=", "height": 2672672, "applicationStatus": "succeeded", "spentComplexity": 0 } View: original | compacted Prev: none Next: 4pR4WMVkoy5Vdw78TFaDcVzNet1D6njooHyMwMbnMvMH Full:
OldNewDifferences
1-# no script
1+{-# STDLIB_VERSION 6 #-}
2+{-# SCRIPT_TYPE ACCOUNT #-}
3+{-# CONTENT_TYPE DAPP #-}
4+let a = 100000000
5+
6+let b = toBigInt(100000000)
7+
8+let c = toBigInt(1000000000000000000)
9+
10+let d = toBigInt(0)
11+
12+let e = toBigInt(0)
13+
14+let f = toBigInt(1)
15+
16+let g = toBigInt(2)
17+
18+let h = toBigInt(3)
19+
20+let i = toBigInt(4)
21+
22+let j = toBigInt((a - ((a * 1) / a)))
23+
24+let k = "WAVES"
25+
26+let l = 50
27+
28+let m = "100"
29+
30+let n = "1"
31+
32+let o = "__"
33+
34+let p = ""
35+
36+let q = 1
37+
38+let r = 2
39+
40+let s = 3
41+
42+let t = 4
43+
44+let u = 1
45+
46+let v = 2
47+
48+let w = 3
49+
50+let x = 4
51+
52+let y = 5
53+
54+let z = 6
55+
56+let A = 7
57+
58+let B = 8
59+
60+let C = 9
61+
62+let D = 1
63+
64+let E = 6
65+
66+let F = 7
67+
68+let G = 10
69+
70+let H = fraction(10, a, 10000)
71+
72+func I (J,K) = fraction(toBigInt(J), c, toBigInt(K))
73+
74+
75+func L (J,K) = fraction(J, c, K)
76+
77+
78+func M (N,O) = toInt(fraction(N, toBigInt(O), c))
79+
80+
81+func P (N,O,Q) = toInt(fraction(N, toBigInt(O), c, Q))
82+
83+
84+func R (J,K) = fraction(J, c, toBigInt(K))
85+
86+
87+func S (N,O) = fraction(N, toBigInt(O), c)
88+
89+
90+func T (U,V,W) = fraction(U, V, W)
91+
92+
93+func X (N) = if ((d > N))
94+ then -(N)
95+ else N
96+
97+
98+func Y (N) = if ((d > N))
99+ then -(N)
100+ else N
101+
102+
103+func Z () = "%s__factoryContract"
104+
105+
106+func aa () = "%s__managerPublicKey"
107+
108+
109+func ab () = "%s__pendingManagerPublicKey"
110+
111+
112+func ac () = "%s%s__price__last"
113+
114+
115+func ad (ae,af) = makeString(["%s%s%d%d__price__history", toString(ae), toString(af)], o)
116+
117+
118+func ag (ah,ai) = ((("%s%s%s__P__" + ah) + "__") + ai)
119+
120+
121+func aj (ah,ai) = ((("%s%s%s__G__" + ah) + "__") + ai)
122+
123+
124+func ak () = "%s__amountAsset"
125+
126+
127+func al () = "%s__priceAsset"
128+
129+
130+func am () = "%s__amp"
131+
132+
133+func an (ao) = ("%s%d__amp__" + toString(ao))
134+
135+
136+func ap () = "%s__changeAmpLastCall"
137+
138+
139+let aq = "%s__fee"
140+
141+let ar = valueOrElse(getInteger(this, aq), H)
142+
143+let as = makeString(["%s", "dLp"], o)
144+
145+let at = makeString(["%s", "dLpRefreshedHeight"], o)
146+
147+let au = makeString(["%s", "refreshDLpDelay"], o)
148+
149+let av = 30
150+
151+let aw = valueOrElse(getInteger(this, au), av)
152+
153+func ax () = "%s__factoryConfig"
154+
155+
156+func ay () = "%s%s__matcher__publicKey"
157+
158+
159+func az (aA,aB) = (((("%d%d%s__" + aA) + "__") + aB) + "__config")
160+
161+
162+func aC (aD) = ("%s%s%s__mappings__baseAsset2internalId__" + aD)
163+
164+
165+func aE () = "%s__shutdown"
166+
167+
168+func aF () = "%s__allowedLpStableScriptHash"
169+
170+
171+func aG () = "%s__feeCollectorAddress"
172+
173+
174+func aH (aI) = ("%s%s__skipOrderValidation__" + aI)
175+
176+
177+func aJ (aK,aL,aM,aN) = throw((((((((("order validation failed: orderValid=" + toString(aK)) + " (") + aL) + ")") + " senderValid=") + toString(aM)) + " matcherValid=") + toString(aN)))
178+
179+
180+func aO (aP,aQ) = valueOrErrorMessage(getString(aP, aQ), makeString(["mandatory ", toString(aP), ".", aQ, " not defined"], ""))
181+
182+
183+func aR (aP,aQ) = valueOrErrorMessage(getInteger(aP, aQ), makeString(["mandatory ", toString(aP), ".", aQ, " not defined"], ""))
184+
185+
186+func aS (aT) = throw(makeString(["lp_stable.ride:", aT], " "))
187+
188+
189+func aU (aT) = makeString(["lp_stable.ride:", aT], " ")
190+
191+
192+let aV = addressFromStringValue(aO(this, Z()))
193+
194+let aW = {
195+ let aX = invoke(aV, "getInFeeREADONLY", [toString(this)], nil)
196+ if ($isInstanceOf(aX, "Int"))
197+ then aX
198+ else throw(($getType(aX) + " couldn't be cast to Int"))
199+ }
200+
201+let aY = {
202+ let aX = invoke(aV, "getOutFeeREADONLY", [toString(this)], nil)
203+ if ($isInstanceOf(aX, "Int"))
204+ then aX
205+ else throw(($getType(aX) + " couldn't be cast to Int"))
206+ }
207+
208+let aZ = aO(this, am())
209+
210+func ba () = valueOrElse(getBoolean(aV, aE()), false)
211+
212+
213+func bb () = fromBase58String(aO(aV, ay()))
214+
215+
216+let bc = addressFromStringValue(aO(aV, aG()))
217+
218+func bd () = {
219+ let be = aO(this, ak())
220+ let bf = aO(this, al())
221+ let bg = aR(aV, aC(bf))
222+ let aA = aR(aV, aC(be))
223+ split(aO(aV, az(toString(aA), toString(bg))), o)
224+ }
225+
226+
227+func bh (bi) = if ((bi == k))
228+ then unit
229+ else fromBase58String(bi)
230+
231+
232+func bj (bi) = if ((bi == unit))
233+ then k
234+ else toBase58String(value(bi))
235+
236+
237+func bk (bl) = $Tuple7(addressFromStringValue(bl[u]), parseIntValue(bl[v]), fromBase58String(bl[w]), bh(bl[x]), bh(bl[y]), parseIntValue(bl[z]), parseIntValue(bl[A]))
238+
239+
240+let bm = bk(bd())
241+
242+let bn = bm
243+
244+let bo = bn._1
245+
246+let bp = bn._2
247+
248+let bq = bn._3
249+
250+let br = bn._4
251+
252+let bs = bn._5
253+
254+let bt = bn._6
255+
256+let bu = bn._7
257+
258+func bv () = split(aO(aV, ax()), o)
259+
260+
261+let bw = bv()
262+
263+let bx = valueOrErrorMessage(addressFromString(bw[D]), "Invalid staking contract address")
264+
265+let by = valueOrErrorMessage(addressFromString(bw[F]), "Invalid slipage contract address")
266+
267+let bz = valueOrErrorMessage(addressFromString(bw[G]), "Invalid gwx contract address")
268+
269+let bA = valueOrErrorMessage(addressFromString(bw[E]), "Invalid gwx contract address")
270+
271+func bB (bC,bD,bE,bF,bG,bH,bI,bJ,bK,bL) = makeString(["%d%d%d%d%d%d%d%d%d%d", toString(bC), toString(bD), toString(bE), toString(bF), toString(bG), toString(bH), toString(bI), toString(bJ), toString(bK), toString(bL)], o)
272+
273+
274+func bM (bN,bO,bP,bF,bI,bJ) = makeString(["%d%d%d%d%d%d", toString(bN), toString(bO), toString(bP), toString(bF), toString(bI), toString(bJ)], o)
275+
276+
277+func bQ (bR) = if ((bR == "WAVES"))
278+ then wavesBalance(this).available
279+ else assetBalance(this, fromBase58String(bR))
280+
281+
282+func bS (bT,bU) = fraction(bT, c, bU)
283+
284+
285+func bV (bT,bU,Q) = fraction(bT, c, bU, Q)
286+
287+
288+func bW (bX,bY,bZ) = {
289+ let ca = fraction((bX - bY), b, bY)
290+ let cb = ((bZ - X(ca)) > d)
291+ if (!(cb))
292+ then throw(("Big slpg: " + toString(ca)))
293+ else $Tuple2(cb, min([bX, bY]))
294+ }
295+
296+
297+func cc (cd,ce,cf) = {
298+ let ca = fraction(ce, b, cd)
299+ let cg = (cf > ca)
300+ if (if (cg)
301+ then true
302+ else (ce > cd))
303+ then throw(((((((toString(ce) + " ") + toString(cd)) + " ") + toString(ca)) + " ") + toString(cf)))
304+ else cg
305+ }
306+
307+
308+func ch (ci,cj,ck,cl) = {
309+ let cm = I(ck, ci)
310+ let cn = I(cl, cj)
311+ bS(cn, cm)
312+ }
313+
314+
315+func co (ck,cl,cp) = {
316+ let cq = bt
317+ let cr = bu
318+ let cs = ch(cq, cr, ck, cl)
319+ let bU = I(ck, cq)
320+ let bT = I(cl, cr)
321+ let ct = I(cp, a)
322+ let cu = bS(bU, ct)
323+ let cv = bS(bT, ct)
324+[cs, cu, cv]
325+ }
326+
327+
328+func cw (ck,cl,cp) = {
329+ let cx = co(ck, cl, cp)
330+[M(cx[0], a), M(cx[1], a), M(cx[2], a)]
331+ }
332+
333+
334+func cy (cz,ar) = {
335+ let cA = if ((ar == 0))
336+ then 0
337+ else fraction(cz, ar, a)
338+ $Tuple2((cz - cA), cA)
339+ }
340+
341+
342+func cB (cC) = {
343+ let cD = cC[0]
344+ let cE = cC[1]
345+ let cF = (cD + cE)
346+ if ((cF == e))
347+ then e
348+ else {
349+ let cG = parseIntValue(aZ)
350+ let cH = (cG * 2)
351+ let cx = fraction(cD, cE, f)
352+ let cI = fraction(cx, i, f)
353+ let cJ = fraction(toBigInt(cH), cF, f)
354+ let cK = toBigInt((cH - 1))
355+ func cL (cM) = {
356+ let cN = fraction(cM, cM, f)
357+ let cO = fraction(cN, cM, f)
358+ let cP = fraction(cO, f, cI)
359+ fraction((cJ + fraction(cP, g, f)), cM, (fraction(cK, cM, f) + fraction(h, cP, f)))
360+ }
361+
362+ func cQ (cR,cS) = if (cR._2)
363+ then cR
364+ else {
365+ let cM = cR._1
366+ let cT = cL(cM)
367+ let cU = (cT - value(cM))
368+ let cV = if ((e > cU))
369+ then -(cU)
370+ else cU
371+ if ((f >= cV))
372+ then $Tuple2(cT, true)
373+ else $Tuple2(cT, false)
374+ }
375+
376+ let cW = [0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16]
377+ let cX = {
378+ let cY = cW
379+ let cZ = size(cY)
380+ let da = $Tuple2(cF, false)
381+ func db (dc,dd) = if ((dd >= cZ))
382+ then dc
383+ else cQ(dc, cY[dd])
384+
385+ func de (dc,dd) = if ((dd >= cZ))
386+ then dc
387+ else throw("List size exceeds 17")
388+
389+ de(db(db(db(db(db(db(db(db(db(db(db(db(db(db(db(db(db(da, 0), 1), 2), 3), 4), 5), 6), 7), 8), 9), 10), 11), 12), 13), 14), 15), 16), 17)
390+ }
391+ let cM = cX._1
392+ let df = cX._2
393+ if (df)
394+ then cM
395+ else throw(("D calculation error, D = " + toString(cM)))
396+ }
397+ }
398+
399+
400+func dg (dh,di,dj,dk) = {
401+ let dl = bq
402+ let dm = toBase58String(value(br))
403+ let dn = toBase58String(value(bs))
404+ let do = bt
405+ let dp = bu
406+ let dq = toString(bp)
407+ let dr = valueOrErrorMessage(assetInfo(dl), "Wrong LP id").quantity
408+ if ((toBase58String(dl) != di))
409+ then throw("Wrong pmt asset")
410+ else {
411+ let ds = bQ(dm)
412+ let dt = I(ds, do)
413+ let du = bQ(dn)
414+ let dv = I(du, dp)
415+ let dw = bS(dv, dt)
416+ let dx = M(dw, a)
417+ let dy = I(dj, a)
418+ let dz = I(dr, a)
419+ let dA = fraction(dt, dy, dz)
420+ let dB = fraction(dv, dy, dz)
421+ let dC = P(dA, do, FLOOR)
422+ let dD = P(dB, dp, FLOOR)
423+ let dE = if ((dh == ""))
424+ then nil
425+ else [ScriptTransfer(dk, dC, if ((dm == "WAVES"))
426+ then unit
427+ else fromBase58String(dm)), ScriptTransfer(dk, dD, if ((dn == "WAVES"))
428+ then unit
429+ else fromBase58String(dn)), StringEntry(aj(toString(dk), dh), bM(dC, dD, dj, dx, height, lastBlock.timestamp)), IntegerEntry(ac(), dx), IntegerEntry(ad(height, lastBlock.timestamp), dx)]
430+ $Tuple10(dC, dD, dm, dn, ds, du, dr, dw, dq, dE)
431+ }
432+ }
433+
434+
435+func dF (dh,bZ,dG,dH,dI,dJ,dk,dK,dL,dM,dN,dO,dP) = {
436+ let dl = bq
437+ let dQ = toBase58String(value(br))
438+ let dR = toBase58String(value(bs))
439+ let dS = bt
440+ let dT = bu
441+ let dq = toString(bp)
442+ let dU = valueOrErrorMessage(assetInfo(dl), "Wr lp as").quantity
443+ let ds = if (dK)
444+ then bQ(dQ)
445+ else if (if (dM)
446+ then (dP == dQ)
447+ else false)
448+ then (bQ(dQ) - dO)
449+ else if (dM)
450+ then bQ(dQ)
451+ else (bQ(dQ) - dG)
452+ let du = if (dK)
453+ then bQ(dR)
454+ else if (if (dM)
455+ then (dP == dR)
456+ else false)
457+ then (bQ(dR) - dO)
458+ else if (dM)
459+ then bQ(dR)
460+ else (bQ(dR) - dI)
461+ let dV = I(dG, dS)
462+ let dW = I(dI, dT)
463+ let dX = bS(dW, dV)
464+ let dt = I(ds, dS)
465+ let dv = I(du, dT)
466+ let ce = cB([dt, dv])
467+ let dY = if ((dU == 0))
468+ then {
469+ let cd = cB([(dt + dV), (dv + dW)])
470+ let dZ = if ((cd > ce))
471+ then true
472+ else throw("D1 should be greater than D0")
473+ if ((dZ == dZ))
474+ then {
475+ let dw = d
476+ let ea = d
477+ let ct = cd
478+ $Tuple5(M(ct, a), M(dV, dS), M(dW, dT), bS((dv + dW), (dt + dV)), ea)
479+ }
480+ else throw("Strict value is not equal to itself.")
481+ }
482+ else {
483+ let dw = bS(dv, dt)
484+ let eb = fraction(X((dw - dX)), c, dw)
485+ let ea = I(bZ, a)
486+ if (if (if (dN)
487+ then (dw != d)
488+ else false)
489+ then (eb > ea)
490+ else false)
491+ then throw(((("Price slippage " + toString(eb)) + " > ") + toString(ea)))
492+ else {
493+ let ec = I(dU, a)
494+ let ed = fraction(dV, bV(dv, dt, CEILING), c, CEILING)
495+ let ee = fraction(dW, c, bV(dv, dt, FLOOR), CEILING)
496+ let ef = if ((ed > dW))
497+ then $Tuple2(ee, dW)
498+ else $Tuple2(dV, ed)
499+ let eg = ef._1
500+ let eh = ef._2
501+ let cd = cB([(dt + eg), (dv + eh)])
502+ let dZ = if ((cd > ce))
503+ then true
504+ else throw("D1 should be greater than D0")
505+ if ((dZ == dZ))
506+ then {
507+ let ct = fraction(ec, (cd - ce), ce)
508+ $Tuple5(P(ct, a, FLOOR), P(eg, dS, CEILING), P(eh, dT, CEILING), dw, ea)
509+ }
510+ else throw("Strict value is not equal to itself.")
511+ }
512+ }
513+ let ei = dY._1
514+ let ej = dY._2
515+ let ek = dY._3
516+ let dx = M(dY._4, a)
517+ let el = M(dY._5, a)
518+ if ((0 >= ei))
519+ then throw("LP <= 0")
520+ else {
521+ let em = if (!(dL))
522+ then 0
523+ else ei
524+ let en = (dG - ej)
525+ let eo = (dI - ek)
526+ let ep = if (if (dM)
527+ then (dP == dQ)
528+ else false)
529+ then $Tuple2(dO, 0)
530+ else if (if (dM)
531+ then (dP == dR)
532+ else false)
533+ then $Tuple2(0, dO)
534+ else $Tuple2(ej, ek)
535+ let eq = ep._1
536+ let er = ep._2
537+ let es = [IntegerEntry(ac(), dx), IntegerEntry(ad(height, lastBlock.timestamp), dx), StringEntry(ag(dk, dh), bB(eq, er, em, dx, bZ, el, height, lastBlock.timestamp, en, eo))]
538+ $Tuple13(ei, em, dx, ds, du, dU, dl, dq, es, en, eo, dH, dJ)
539+ }
540+ }
541+
542+
543+func et (cC,cS,eu) = {
544+ let ev = g
545+ let ew = cC[if ((cS == 0))
546+ then 1
547+ else 0]
548+ let ex = parseBigIntValue(m)
549+ let cG = (parseBigIntValue(aZ) * ex)
550+ let cF = ew
551+ let cH = (cG * ev)
552+ let ey = (((((eu * eu) / (ew * ev)) * eu) * ex) / (cH * ev))
553+ let ez = ((cF + ((eu * ex) / cH)) - eu)
554+ func cQ (cR,eA) = {
555+ let eB = cR
556+ let eC = eB._1
557+ let df = eB._2
558+ if ((df != unit))
559+ then cR
560+ else {
561+ let eD = (((eC * eC) + ey) / ((g * eC) + ez))
562+ let eE = Y((eD - value(eC)))
563+ if ((f >= eE))
564+ then $Tuple2(eD, eA)
565+ else $Tuple2(eD, unit)
566+ }
567+ }
568+
569+ let cW = [0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14]
570+ let eF = {
571+ let cY = cW
572+ let cZ = size(cY)
573+ let da = $Tuple2(eu, unit)
574+ func db (dc,dd) = if ((dd >= cZ))
575+ then dc
576+ else cQ(dc, cY[dd])
577+
578+ func de (dc,dd) = if ((dd >= cZ))
579+ then dc
580+ else throw("List size exceeds 15")
581+
582+ de(db(db(db(db(db(db(db(db(db(db(db(db(db(db(db(da, 0), 1), 2), 3), 4), 5), 6), 7), 8), 9), 10), 11), 12), 13), 14), 15)
583+ }
584+ let eC = eF._1
585+ let df = eF._2
586+ if ((df != unit))
587+ then eC
588+ else throw(("Y calculation error, Y = " + toString(eC)))
589+ }
590+
591+
592+func eG (eH,eI,eJ) = {
593+ let eK = fraction(cB([L(eH, toBigInt(bt)), L(eI, toBigInt(bu))]), c, eJ)
594+ if ((eJ == e))
595+ then e
596+ else eK
597+ }
598+
599+
600+func eL (eM,eN,eO) = {
601+ let eP = (toBigInt(bQ(bj(br))) - eM)
602+ let eQ = (toBigInt(bQ(bj(bs))) - eN)
603+ let eR = (toBigInt(value(assetInfo(bq)).quantity) - eO)
604+ let eS = eG(eP, eQ, eR)
605+ eS
606+ }
607+
608+
609+func eT (eU,eV,eO) = {
610+ let eP = (bQ(bj(br)) + eU)
611+ let eQ = (bQ(bj(bs)) + eV)
612+ let eR = (value(assetInfo(bq)).quantity + eO)
613+ let eK = eG(toBigInt(eP), toBigInt(eQ), toBigInt(eR))
614+ let eW = [IntegerEntry(at, height), StringEntry(as, toString(eK))]
615+ $Tuple2(eW, eK)
616+ }
617+
618+
619+func eX (eY,eK) = if ((eK >= eY))
620+ then true
621+ else aS("updated DLp lower than current DLp")
622+
623+
624+func eZ (fa) = {
625+ let eP = bQ(bj(br))
626+ let eQ = bQ(bj(bs))
627+ let fb = fa.amount
628+ let fc = fraction(fa.amount, fa.price, a, FLOOR)
629+ let fd = if ((fa.orderType == Buy))
630+ then $Tuple2(fb, -(fc))
631+ else $Tuple2(-(fb), fc)
632+ let eU = fd._1
633+ let eV = fd._2
634+ if (if (if (ba())
635+ then true
636+ else (bp == s))
637+ then true
638+ else (bp == t))
639+ then throw("Admin blocked")
640+ else if (if ((fa.assetPair.amountAsset != br))
641+ then true
642+ else (fa.assetPair.priceAsset != bs))
643+ then throw("Wr assets")
644+ else {
645+ let fe = parseBigIntValue(valueOrElse(getString(this, as), "0"))
646+ let ff = eT(eU, eV, 0)
647+ let fg = ff._1
648+ let fh = ff._2
649+ let fi = (fh >= fe)
650+ let fj = makeString(["dLp=", toString(fe), " dLpNew=", toString(fh), " amountAssetBalance=", toString(eP), " priceAssetBalance=", toString(eQ), " amountAssetBalanceDelta=", toString(eU), " priceAssetBalanceDelta=", toString(eV), " height=", toString(height)], "")
651+ $Tuple2(fi, fj)
652+ }
653+ }
654+
655+
656+func fk (cS) = if ((size(cS.payments) != 1))
657+ then throw("1 pmnt exp")
658+ else {
659+ let fl = value(cS.payments[0])
660+ let di = value(fl.assetId)
661+ let dO = fl.amount
662+ let dY = dg(toBase58String(cS.transactionId), toBase58String(di), dO, cS.caller)
663+ let dC = dY._1
664+ let dD = dY._2
665+ let dq = parseIntValue(dY._9)
666+ let dE = dY._10
667+ if (if (ba())
668+ then true
669+ else (dq == t))
670+ then throw(("Admin blocked: " + toString(dq)))
671+ else $Tuple5(dC, dD, dO, di, dE)
672+ }
673+
674+
675+func fm (fn,ai,fo,fp,bZ,dL,dM,dN,dO,dP) = {
676+ let dY = dF(ai, bZ, value(fo).amount, value(fo).assetId, value(fp).amount, value(fp).assetId, fn, (ai == ""), dL, dM, dN, dO, dP)
677+ let dq = parseIntValue(dY._8)
678+ if (if (if (ba())
679+ then true
680+ else (dq == r))
681+ then true
682+ else (dq == t))
683+ then throw(("Blocked:" + toString(dq)))
684+ else dY
685+ }
686+
687+
688+func fq (fr,di,dk,ai,fs) = {
689+ let dm = toBase58String(value(br))
690+ let dn = toBase58String(value(bs))
691+ let dl = bq
692+ let dS = bt
693+ let dT = bu
694+ let eR = toBigInt(valueOrErrorMessage(assetInfo(dl), "invalid lp asset").quantity)
695+ let ft = if ((eR > e))
696+ then true
697+ else throw("initial deposit requires all coins")
698+ if ((ft == ft))
699+ then {
700+ let ds = bQ(dm)
701+ let du = bQ(dn)
702+ let fu = if ((ai == ""))
703+ then $Tuple2(ds, du)
704+ else if ((di == dm))
705+ then if ((fr > ds))
706+ then throw("invalid payment amount")
707+ else $Tuple2((ds - fr), du)
708+ else if ((di == dn))
709+ then if ((fr > du))
710+ then throw("invalid payment amount")
711+ else $Tuple2(ds, (du - fr))
712+ else throw("wrong pmtAssetId")
713+ let fv = fu._1
714+ let fw = fu._2
715+ let fx = if ((di == dm))
716+ then $Tuple2(fr, 0)
717+ else if ((di == dn))
718+ then $Tuple2(0, fr)
719+ else throw("invalid payment")
720+ let fy = fx._1
721+ let fz = fx._2
722+ let fA = if (fs)
723+ then $Tuple3(cy(fy, aW)._1, cy(fz, aW)._1, cy(fr, aW)._2)
724+ else $Tuple3(fy, fz, 0)
725+ let fB = fA._1
726+ let fC = fA._2
727+ let cA = fA._3
728+ let fD = (fv + fB)
729+ let fE = (fw + fC)
730+ let ce = cB([I(fv, bt), I(fw, bu)])
731+ let cd = cB([I(fD, bt), I(fE, bu)])
732+ let dZ = if ((cd > ce))
733+ then true
734+ else throw()
735+ if ((dZ == dZ))
736+ then {
737+ let fF = fraction(eR, (cd - ce), ce, FLOOR)
738+ let dx = M(bS(I(fE, dT), I(fD, dS)), a)
739+ let es = [IntegerEntry(ac(), dx), IntegerEntry(ad(height, lastBlock.timestamp), dx), StringEntry(ag(dk, ai), bB(fy, fz, toInt(fF), dx, 0, 0, height, lastBlock.timestamp, 0, 0))]
740+ let fG = fraction(fw, a, fv)
741+ let fH = fraction(fr, a, (fG + a))
742+ let fI = (fr - fH)
743+ let fJ = fraction(eR, toBigInt(fI), toBigInt(fw))
744+ let fK = toInt(fraction((fF - fJ), b, fJ))
745+ $Tuple4(toInt(fF), es, cA, fK)
746+ }
747+ else throw("Strict value is not equal to itself.")
748+ }
749+ else throw("Strict value is not equal to itself.")
750+ }
751+
752+
753+func fL (fM,fN,fO,fn,fP,fQ) = {
754+ let dl = toBase58String(value(bq))
755+ let dm = toBase58String(value(br))
756+ let dn = toBase58String(value(bs))
757+ let fR = bt
758+ let fS = bu
759+ let fT = bp
760+ let dk = if ((fn == bA))
761+ then fP
762+ else fn
763+ let fl = value(fO[0])
764+ let di = value(fl.assetId)
765+ let dO = fl.amount
766+ let eS = eL(e, e, e)
767+ if ((eS == eS))
768+ then {
769+ let dh = toBase58String(fQ)
770+ if ((dl != toBase58String(di)))
771+ then throw("Wrong LP")
772+ else {
773+ let ds = bQ(dm)
774+ let du = bQ(dn)
775+ let fU = {
776+ let aX = invoke(this, "getOneTknV2READONLY", [fM, dO], nil)
777+ if ($isInstanceOf(aX, "(Int, Int)"))
778+ then aX
779+ else throw(($getType(aX) + " couldn't be cast to (Int, Int)"))
780+ }
781+ if ((fU == fU))
782+ then {
783+ let cA = fU._2
784+ let fV = fU._1
785+ let fW = if (if ((fN > 0))
786+ then (fN > fV)
787+ else false)
788+ then aS(makeString(["amount to receive is less than ", toString(fN)], ""))
789+ else fV
790+ let fX = if ((fM == dm))
791+ then $Tuple4(fW, 0, ((ds - fW) - cA), du)
792+ else if ((fM == dn))
793+ then $Tuple4(0, fW, ds, ((du - fW) - cA))
794+ else throw("invalid out asset id")
795+ let fY = fX._1
796+ let fZ = fX._2
797+ let fD = fX._3
798+ let fE = fX._4
799+ let ga = bS(I(fE, fS), I(fD, fR))
800+ let gb = M(ga, a)
801+ let gc = if ((fM == "WAVES"))
802+ then unit
803+ else fromBase58String(fM)
804+ let gd = if ((cA > 0))
805+ then [ScriptTransfer(bc, cA, gc)]
806+ else nil
807+ let dE = ([ScriptTransfer(dk, fW, gc), StringEntry(aj(toString(dk), dh), bM(fY, fZ, dO, gb, height, lastBlock.timestamp)), IntegerEntry(ac(), gb), IntegerEntry(ad(height, lastBlock.timestamp), gb)] ++ gd)
808+ if ((dE == dE))
809+ then {
810+ let ge = invoke(aV, "burn", [dO], [AttachedPayment(di, dO)])
811+ if ((ge == ge))
812+ then {
813+ let gf = {
814+ let gg = if ((this == bc))
815+ then 0
816+ else cA
817+ let gh = if ((bh(fM) == br))
818+ then true
819+ else false
820+ if (gh)
821+ then $Tuple2(-((fV + gg)), 0)
822+ else $Tuple2(0, -((fV + gg)))
823+ }
824+ let eU = gf._1
825+ let eV = gf._2
826+ let gi = eT(eU, eV, 0)
827+ let gj = gi._1
828+ let eK = gi._2
829+ let gk = eX(eS, eK)
830+ if ((gk == gk))
831+ then $Tuple2((dE ++ gj), fW)
832+ else throw("Strict value is not equal to itself.")
833+ }
834+ else throw("Strict value is not equal to itself.")
835+ }
836+ else throw("Strict value is not equal to itself.")
837+ }
838+ else throw("Strict value is not equal to itself.")
839+ }
840+ }
841+ else throw("Strict value is not equal to itself.")
842+ }
843+
844+
845+func gl () = {
846+ let gm = getString(aa())
847+ if ($isInstanceOf(gm, "String"))
848+ then {
849+ let cF = gm
850+ fromBase58String(cF)
851+ }
852+ else if ($isInstanceOf(gm, "Unit"))
853+ then unit
854+ else throw("Match error")
855+ }
856+
857+
858+func gn () = {
859+ let gm = getString(ab())
860+ if ($isInstanceOf(gm, "String"))
861+ then {
862+ let cF = gm
863+ fromBase58String(cF)
864+ }
865+ else if ($isInstanceOf(gm, "Unit"))
866+ then unit
867+ else throw("Match error")
868+ }
869+
870+
871+let go = throw("Permission denied")
872+
873+func gp (cS) = {
874+ let gm = gl()
875+ if ($isInstanceOf(gm, "ByteVector"))
876+ then {
877+ let gq = gm
878+ (cS.callerPublicKey == gq)
879+ }
880+ else if ($isInstanceOf(gm, "Unit"))
881+ then (cS.caller == this)
882+ else throw("Match error")
883+ }
884+
885+
886+func gr (cS) = {
887+ let gm = gl()
888+ if ($isInstanceOf(gm, "ByteVector"))
889+ then {
890+ let gq = gm
891+ if ((cS.callerPublicKey == gq))
892+ then true
893+ else go
894+ }
895+ else if ($isInstanceOf(gm, "Unit"))
896+ then if ((cS.caller == this))
897+ then true
898+ else go
899+ else throw("Match error")
900+ }
901+
902+
903+func gs (gt,eu,gu) = {
904+ let bl = bd()
905+ let dm = bl[x]
906+ let dn = bl[y]
907+ let ev = g
908+ let ex = parseBigIntValue(m)
909+ let cG = (parseBigIntValue(aZ) * ex)
910+ let cC = if ((gt == false))
911+ then [(toBigInt(bQ(dm)) + gu), toBigInt(bQ(dn))]
912+ else [(toBigInt(bQ(dn)) + gu), toBigInt(bQ(dm))]
913+ let ew = cC[0]
914+ let cF = ew
915+ let cH = (cG * ev)
916+ let ey = (((((eu * eu) / (ew * ev)) * eu) * ex) / (cH * ev))
917+ let ez = ((cF + ((eu * ex) / cH)) - eu)
918+ func cQ (cR,eA) = {
919+ let gv = cR
920+ let eC = gv._1
921+ let df = gv._2
922+ if ((df != unit))
923+ then cR
924+ else {
925+ let eD = (((eC * eC) + ey) / ((g * eC) + ez))
926+ let eE = Y((eD - value(eC)))
927+ if ((f >= eE))
928+ then $Tuple2(eD, eA)
929+ else $Tuple2(eD, unit)
930+ }
931+ }
932+
933+ let cW = [0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14]
934+ let gw = {
935+ let cY = cW
936+ let cZ = size(cY)
937+ let da = $Tuple2(eu, unit)
938+ func db (dc,dd) = if ((dd >= cZ))
939+ then dc
940+ else cQ(dc, cY[dd])
941+
942+ func de (dc,dd) = if ((dd >= cZ))
943+ then dc
944+ else throw("List size exceeds 15")
945+
946+ de(db(db(db(db(db(db(db(db(db(db(db(db(db(db(db(da, 0), 1), 2), 3), 4), 5), 6), 7), 8), 9), 10), 11), 12), 13), 14), 15)
947+ }
948+ let eC = gw._1
949+ let df = gw._2
950+ if ((df != unit))
951+ then eC
952+ else throw(("Y calculation error, Y = " + toString(eC)))
953+ }
954+
955+
956+func gx () = valueOrElse(getBoolean(aV, aH(toString(this))), false)
957+
958+
959+@Callable(cS)
960+func calculateAmountOutForSwapREADONLY (gy,gt,gz) = {
961+ let gA = if ((gt == false))
962+ then {
963+ let gB = aO(this, al())
964+ let gu = (toBigInt(bQ(aO(this, ak()))) + toBigInt(gy))
965+ $Tuple2(gB, gu)
966+ }
967+ else {
968+ let gB = aO(this, ak())
969+ let gu = (toBigInt(bQ(aO(this, al()))) + toBigInt(gy))
970+ $Tuple2(gB, gu)
971+ }
972+ let gB = gA._1
973+ let gu = gA._2
974+ let bl = bd()
975+ let dm = bl[x]
976+ let dn = bl[y]
977+ let cC = [toBigInt(bQ(dm)), toBigInt(bQ(dn))]
978+ let eu = cB(cC)
979+ let eC = gs(gt, eu, toBigInt(gy))
980+ let gC = ((toBigInt(bQ(gB)) - eC) - toBigInt(1))
981+ let gD = max([0, toInt(gC)])
982+ let gE = if ((gt == false))
983+ then [((toBigInt(bQ(dm)) + toBigInt(gy)) + toBigInt(gz)), (toBigInt(bQ(dn)) - gC)]
984+ else [(toBigInt(bQ(dm)) - gC), ((toBigInt(bQ(dn)) + toBigInt(gy)) + toBigInt(gz))]
985+ let gF = cB(gE)
986+ let dZ = if ((gF >= eu))
987+ then true
988+ else throw(makeString(["new D is fewer error", toString(eu), toString(gF)], "__"))
989+ if ((dZ == dZ))
990+ then $Tuple2(nil, gD)
991+ else throw("Strict value is not equal to itself.")
992+ }
993+
994+
995+
996+@Callable(cS)
997+func calculateAmountOutForSwapAndSendTokens (gy,gt,gG,gH,gz) = {
998+ let gI = {
999+ let aX = invoke(aV, "getSwapContractREADONLY", nil, nil)
1000+ if ($isInstanceOf(aX, "String"))
1001+ then aX
1002+ else throw(($getType(aX) + " couldn't be cast to String"))
1003+ }
1004+ let gJ = [if ((value(cS.payments[0]).amount >= gy))
1005+ then true
1006+ else aS("Wrong amount"), if ((cS.caller == addressFromStringValue(gI)))
1007+ then true
1008+ else aS("Permission denied")]
1009+ if ((gJ == gJ))
1010+ then {
1011+ let fl = value(cS.payments[0])
1012+ let gK = bj(fl.assetId)
1013+ let gL = if ((gt == false))
1014+ then {
1015+ let gB = aO(this, al())
1016+ let gu = (bQ(gK) - value(cS.payments[0]).amount)
1017+ $Tuple2(gB, gu)
1018+ }
1019+ else {
1020+ let gB = aO(this, ak())
1021+ let gu = (bQ(gK) - value(cS.payments[0]).amount)
1022+ $Tuple2(gB, gu)
1023+ }
1024+ let gB = gL._1
1025+ let gu = gL._2
1026+ let bl = bd()
1027+ let dm = bl[x]
1028+ let dn = bl[y]
1029+ let cC = if ((gt == false))
1030+ then [(toBigInt(bQ(dm)) - toBigInt(value(cS.payments[0]).amount)), toBigInt(bQ(dn))]
1031+ else [toBigInt(bQ(dm)), (toBigInt(bQ(dn)) - toBigInt(value(cS.payments[0]).amount))]
1032+ let eu = cB(cC)
1033+ let eC = gs(gt, eu, toBigInt(0))
1034+ let gC = ((toBigInt(bQ(gB)) - eC) - toBigInt(1))
1035+ let gD = max([0, toInt(gC)])
1036+ let gM = if ((gD >= gG))
1037+ then true
1038+ else throw("Exchange result is fewer coins than expected")
1039+ if ((gM == gM))
1040+ then {
1041+ let gE = if ((gt == false))
1042+ then [(toBigInt(bQ(dm)) + toBigInt(gz)), (toBigInt(bQ(dn)) - gC)]
1043+ else [(toBigInt(bQ(dm)) - gC), (toBigInt(bQ(dn)) + toBigInt(gz))]
1044+ let gF = cB(gE)
1045+ let dZ = if ((gF >= eu))
1046+ then true
1047+ else throw("new D is fewer error")
1048+ if ((dZ == dZ))
1049+ then $Tuple2([ScriptTransfer(addressFromStringValue(gH), gD, bh(gB))], gD)
1050+ else throw("Strict value is not equal to itself.")
1051+ }
1052+ else throw("Strict value is not equal to itself.")
1053+ }
1054+ else throw("Strict value is not equal to itself.")
1055+ }
1056+
1057+
1058+
1059+@Callable(cS)
1060+func constructor (Z) = {
1061+ let ey = gr(cS)
1062+ if ((ey == ey))
1063+ then [StringEntry(Z(), Z)]
1064+ else throw("Strict value is not equal to itself.")
1065+ }
1066+
1067+
1068+
1069+@Callable(cS)
1070+func setManager (gN) = {
1071+ let ey = gr(cS)
1072+ if ((ey == ey))
1073+ then {
1074+ let gO = fromBase58String(gN)
1075+ if ((gO == gO))
1076+ then [StringEntry(ab(), gN)]
1077+ else throw("Strict value is not equal to itself.")
1078+ }
1079+ else throw("Strict value is not equal to itself.")
1080+ }
1081+
1082+
1083+
1084+@Callable(cS)
1085+func confirmManager () = {
1086+ let cx = gn()
1087+ let gP = if (isDefined(cx))
1088+ then true
1089+ else throw("No pending manager")
1090+ if ((gP == gP))
1091+ then {
1092+ let gQ = if ((cS.callerPublicKey == value(cx)))
1093+ then true
1094+ else throw("You are not pending manager")
1095+ if ((gQ == gQ))
1096+ then [StringEntry(aa(), toBase58String(value(cx))), DeleteEntry(ab())]
1097+ else throw("Strict value is not equal to itself.")
1098+ }
1099+ else throw("Strict value is not equal to itself.")
1100+ }
1101+
1102+
1103+
1104+@Callable(cS)
1105+func put (gR,gS) = {
1106+ let gT = bv()
1107+ let gU = valueOrErrorMessage(addressFromString(gT[D]), "Wr st addr")
1108+ let gV = valueOrErrorMessage(addressFromString(gT[F]), "Wr sl addr")
1109+ if ((0 > gR))
1110+ then throw("Wrong slippage")
1111+ else if ((size(cS.payments) != 2))
1112+ then throw("2 pmnts expd")
1113+ else {
1114+ let gW = toBigInt(value(cS.payments[0]).amount)
1115+ let gX = toBigInt(value(cS.payments[1]).amount)
1116+ let eP = (toBigInt(bQ(bj(br))) - gW)
1117+ if ((eP == eP))
1118+ then {
1119+ let eQ = (toBigInt(bQ(bj(bs))) - gX)
1120+ if ((eQ == eQ))
1121+ then {
1122+ let eR = toBigInt(value(assetInfo(bq)).quantity)
1123+ if ((eR == eR))
1124+ then {
1125+ let eS = eL(gW, gX, toBigInt(0))
1126+ if ((eS == eS))
1127+ then {
1128+ let gY = fm(toString(cS.caller), toBase58String(cS.transactionId), AttachedPayment(value(cS.payments[0]).assetId, value(cS.payments[0]).amount), cS.payments[1], gR, true, false, true, 0, "")
1129+ let em = gY._2
1130+ let gZ = gY._7
1131+ let dE = gY._9
1132+ let en = gY._10
1133+ let eo = gY._11
1134+ let dm = gY._12
1135+ let dn = gY._13
1136+ let dY = invoke(aV, "emit", [em], nil)
1137+ if ((dY == dY))
1138+ then {
1139+ let ha = {
1140+ let gm = dY
1141+ if ($isInstanceOf(gm, "Address"))
1142+ then {
1143+ let hb = gm
1144+ invoke(hb, "emit", [em], nil)
1145+ }
1146+ else unit
1147+ }
1148+ if ((ha == ha))
1149+ then {
1150+ let hc = if ((en > 0))
1151+ then invoke(gV, "put", nil, [AttachedPayment(dm, en)])
1152+ else nil
1153+ if ((hc == hc))
1154+ then {
1155+ let hd = if ((eo > 0))
1156+ then invoke(gV, "put", nil, [AttachedPayment(dn, eo)])
1157+ else nil
1158+ if ((hd == hd))
1159+ then {
1160+ let he = if (gS)
1161+ then {
1162+ let hf = invoke(gU, "stake", nil, [AttachedPayment(gZ, em)])
1163+ if ((hf == hf))
1164+ then nil
1165+ else throw("Strict value is not equal to itself.")
1166+ }
1167+ else [ScriptTransfer(cS.caller, em, gZ)]
1168+ let hg = eT(0, 0, 0)
1169+ let gj = hg._1
1170+ let eK = hg._2
1171+ let hh = if ((eK >= eS))
1172+ then true
1173+ else aS(makeString(["updated DLp lower than current DLp", toString(eP), toString(eQ), toString(eR), toString(eS), toString(eK), toString(en), toString(eo)], " "))
1174+ if ((hh == hh))
1175+ then {
1176+ let hi = value(assetInfo(bq)).quantity
1177+ if ((hi == hi))
1178+ then ((dE ++ he) ++ gj)
1179+ else throw("Strict value is not equal to itself.")
1180+ }
1181+ else throw("Strict value is not equal to itself.")
1182+ }
1183+ else throw("Strict value is not equal to itself.")
1184+ }
1185+ else throw("Strict value is not equal to itself.")
1186+ }
1187+ else throw("Strict value is not equal to itself.")
1188+ }
1189+ else throw("Strict value is not equal to itself.")
1190+ }
1191+ else throw("Strict value is not equal to itself.")
1192+ }
1193+ else throw("Strict value is not equal to itself.")
1194+ }
1195+ else throw("Strict value is not equal to itself.")
1196+ }
1197+ else throw("Strict value is not equal to itself.")
1198+ }
1199+ }
1200+
1201+
1202+
1203+@Callable(cS)
1204+func putOneTknV2 (fN,gS) = {
1205+ let hj = {
1206+ let aX = invoke(aV, "isPoolOneTokenOperationsDisabledREADONLY", [toString(this)], nil)
1207+ if ($isInstanceOf(aX, "Boolean"))
1208+ then aX
1209+ else throw(($getType(aX) + " couldn't be cast to Boolean"))
1210+ }
1211+ let hk = if (if (if (ba())
1212+ then true
1213+ else (bp == r))
1214+ then true
1215+ else (bp == t))
1216+ then true
1217+ else hj
1218+ let gJ = [if (if (!(hk))
1219+ then true
1220+ else gp(cS))
1221+ then true
1222+ else aS("put operation is blocked by admin"), if ((size(cS.payments) == 1))
1223+ then true
1224+ else aS("exactly 1 payment are expected")]
1225+ if ((gJ == gJ))
1226+ then {
1227+ let dm = toBase58String(value(br))
1228+ let dn = toBase58String(value(bs))
1229+ let dl = bq
1230+ let fR = bt
1231+ let fS = bu
1232+ let dk = if ((cS.caller == this))
1233+ then cS.originCaller
1234+ else cS.caller
1235+ let fl = value(cS.payments[0])
1236+ let di = toBase58String(value(fl.assetId))
1237+ let dO = fl.amount
1238+ let eS = if ((fl.assetId == br))
1239+ then eL(toBigInt(dO), toBigInt(0), toBigInt(0))
1240+ else eL(toBigInt(0), toBigInt(dO), toBigInt(0))
1241+ if ((eS == eS))
1242+ then {
1243+ let hl = fq(dO, di, toString(dk), toBase58String(cS.transactionId), true)
1244+ if ((hl == hl))
1245+ then {
1246+ let cA = hl._3
1247+ let dE = hl._2
1248+ let hm = hl._1
1249+ let em = if (if ((fN > 0))
1250+ then (fN > hm)
1251+ else false)
1252+ then aS(makeString(["amount to receive is less than ", toString(fN)], ""))
1253+ else hm
1254+ let gY = invoke(aV, "emit", [em], nil)
1255+ if ((gY == gY))
1256+ then {
1257+ let ha = {
1258+ let gm = gY
1259+ if ($isInstanceOf(gm, "Address"))
1260+ then {
1261+ let hb = gm
1262+ invoke(hb, "emit", [em], nil)
1263+ }
1264+ else unit
1265+ }
1266+ if ((ha == ha))
1267+ then {
1268+ let he = if (gS)
1269+ then {
1270+ let hf = invoke(bx, "stakeFor", [toString(cS.caller)], [AttachedPayment(dl, em)])
1271+ if ((hf == hf))
1272+ then nil
1273+ else throw("Strict value is not equal to itself.")
1274+ }
1275+ else [ScriptTransfer(cS.caller, em, dl)]
1276+ let gd = if ((cA > 0))
1277+ then [ScriptTransfer(bc, cA, fromBase58String(di))]
1278+ else nil
1279+ let hn = if ((this == bc))
1280+ then $Tuple2(0, 0)
1281+ else {
1282+ let ho = if ((fl.assetId == br))
1283+ then true
1284+ else false
1285+ if (ho)
1286+ then $Tuple2(-(cA), 0)
1287+ else $Tuple2(0, -(cA))
1288+ }
1289+ let eU = hn._1
1290+ let eV = hn._2
1291+ let hp = eT(eU, eV, 0)
1292+ let gj = hp._1
1293+ let eK = hp._2
1294+ let gk = eX(eS, eK)
1295+ if ((gk == gk))
1296+ then $Tuple2((((dE ++ he) ++ gd) ++ gj), em)
1297+ else throw("Strict value is not equal to itself.")
1298+ }
1299+ else throw("Strict value is not equal to itself.")
1300+ }
1301+ else throw("Strict value is not equal to itself.")
1302+ }
1303+ else throw("Strict value is not equal to itself.")
1304+ }
1305+ else throw("Strict value is not equal to itself.")
1306+ }
1307+ else throw("Strict value is not equal to itself.")
1308+ }
1309+
1310+
1311+
1312+@Callable(cS)
1313+func putForFree (hq) = if ((0 > hq))
1314+ then throw("Wrong slpg")
1315+ else if ((size(cS.payments) != 2))
1316+ then throw("2 pmnts expd")
1317+ else {
1318+ let hr = fm(toString(cS.caller), toBase58String(cS.transactionId), AttachedPayment(value(cS.payments[0]).assetId, value(cS.payments[0]).amount), cS.payments[1], hq, false, false, true, 0, "")
1319+ let dE = hr._9
1320+ let gW = toBigInt(value(cS.payments[0]).amount)
1321+ let gX = toBigInt(value(cS.payments[1]).amount)
1322+ let eS = eL(gW, gX, toBigInt(0))
1323+ if ((eS == eS))
1324+ then {
1325+ let hs = eT(0, 0, 0)
1326+ let gj = hs._1
1327+ let eK = hs._2
1328+ let gk = eX(eS, eK)
1329+ if ((gk == gk))
1330+ then (dE ++ gj)
1331+ else throw("Strict value is not equal to itself.")
1332+ }
1333+ else throw("Strict value is not equal to itself.")
1334+ }
1335+
1336+
1337+
1338+@Callable(cS)
1339+func get () = {
1340+ let eS = eL(toBigInt(0), toBigInt(0), toBigInt(0))
1341+ if ((eS == eS))
1342+ then {
1343+ let dY = fk(cS)
1344+ let ht = dY._1
1345+ let dD = dY._2
1346+ let dO = dY._3
1347+ let di = dY._4
1348+ let dE = dY._5
1349+ let ez = invoke(aV, "burn", [dO], [AttachedPayment(di, dO)])
1350+ if ((ez == ez))
1351+ then {
1352+ let hu = eT(-(ht), -(dD), 0)
1353+ let gj = hu._1
1354+ let eK = hu._2
1355+ let gk = eX(eS, eK)
1356+ if ((gk == gk))
1357+ then (dE ++ gj)
1358+ else throw("Strict value is not equal to itself.")
1359+ }
1360+ else throw("Strict value is not equal to itself.")
1361+ }
1362+ else throw("Strict value is not equal to itself.")
1363+ }
1364+
1365+
1366+
1367+@Callable(cS)
1368+func getOneTknV2 (fM,fN) = {
1369+ let hj = {
1370+ let aX = invoke(aV, "isPoolOneTokenOperationsDisabledREADONLY", [toString(this)], nil)
1371+ if ($isInstanceOf(aX, "Boolean"))
1372+ then aX
1373+ else throw(($getType(aX) + " couldn't be cast to Boolean"))
1374+ }
1375+ let hv = if (if (ba())
1376+ then true
1377+ else (bp == t))
1378+ then true
1379+ else hj
1380+ let gJ = [if (if (!(hv))
1381+ then true
1382+ else gp(cS))
1383+ then true
1384+ else aS("get operation is blocked by admin"), if ((size(cS.payments) == 1))
1385+ then true
1386+ else aS("exactly 1 payment are expected")]
1387+ if ((gJ == gJ))
1388+ then {
1389+ let hw = fL(fM, fN, cS.payments, cS.caller, cS.originCaller, cS.transactionId)
1390+ let dE = hw._1
1391+ let fW = hw._2
1392+ $Tuple2(dE, fW)
1393+ }
1394+ else throw("Strict value is not equal to itself.")
1395+ }
1396+
1397+
1398+
1399+@Callable(cS)
1400+func refreshDLp () = {
1401+ let hx = valueOrElse(getInteger(at), 0)
1402+ let hy = if (((height - hx) >= aw))
1403+ then unit
1404+ else aS(makeString([toString(aw), " blocks have not passed since the previous call"], ""))
1405+ if ((hy == hy))
1406+ then {
1407+ let fe = valueOrErrorMessage(parseBigInt(valueOrElse(getString(this, as), "0")), aU("invalid dLp"))
1408+ let hz = eT(0, 0, 0)
1409+ let hA = hz._1
1410+ let eK = hz._2
1411+ let eW = if ((fe != eK))
1412+ then hA
1413+ else aS("nothing to refresh")
1414+ $Tuple2(eW, toString(eK))
1415+ }
1416+ else throw("Strict value is not equal to itself.")
1417+ }
1418+
1419+
1420+
1421+@Callable(cS)
1422+func getOneTknV2READONLY (fM,hB) = {
1423+ let dm = toBase58String(value(br))
1424+ let dn = toBase58String(value(bs))
1425+ let dl = toBase58String(value(bq))
1426+ let cC = [toBigInt(bQ(dm)), toBigInt(bQ(dn))]
1427+ let eJ = toBigInt(valueOrErrorMessage(assetInfo(fromBase58String(dl)), "invalid lp asset").quantity)
1428+ let ce = cB(cC)
1429+ let cd = (ce - fraction(toBigInt(hB), ce, eJ))
1430+ let hC = if ((fM == dm))
1431+ then 0
1432+ else if ((fM == dn))
1433+ then 1
1434+ else throw("invalid out asset id")
1435+ let hD = et(cC, hC, cd)
1436+ let gC = (cC[hC] - hD)
1437+ let gD = max([0, toInt((gC - f))])
1438+ let hE = cy(gD, aY)
1439+ let fV = hE._1
1440+ let cA = hE._2
1441+ $Tuple2(nil, $Tuple2(fV, cA))
1442+ }
1443+
1444+
1445+
1446+@Callable(cS)
1447+func getOneTknV2WithBonusREADONLY (fM,hB) = {
1448+ let dm = toBase58String(value(br))
1449+ let dn = toBase58String(value(bs))
1450+ let dl = toBase58String(value(bq))
1451+ let ds = bQ(dm)
1452+ let du = bQ(dn)
1453+ let hF = {
1454+ let aX = invoke(this, "getOneTknV2READONLY", [fM, hB], nil)
1455+ if ($isInstanceOf(aX, "(Int, Int)"))
1456+ then aX
1457+ else throw(($getType(aX) + " couldn't be cast to (Int, Int)"))
1458+ }
1459+ let fV = hF._1
1460+ let cA = hF._2
1461+ let dY = dg("", dl, hB, this)
1462+ let dC = dY._1
1463+ let dD = dY._2
1464+ let hG = (dC + dD)
1465+ let fK = if ((hG == 0))
1466+ then if ((fV == 0))
1467+ then 0
1468+ else throw("bonus calculation error")
1469+ else fraction((fV - hG), a, hG)
1470+ $Tuple2(nil, $Tuple3(fV, cA, fK))
1471+ }
1472+
1473+
1474+
1475+@Callable(cS)
1476+func getNoLess (hH,hI) = {
1477+ let dY = fk(cS)
1478+ let dC = dY._1
1479+ let dD = dY._2
1480+ let dO = dY._3
1481+ let di = dY._4
1482+ let dE = dY._5
1483+ if ((hH > dC))
1484+ then throw(((("Failed: " + toString(dC)) + " < ") + toString(hH)))
1485+ else if ((hI > dD))
1486+ then throw(((("Failed: " + toString(dD)) + " < ") + toString(hI)))
1487+ else {
1488+ let eS = eL(toBigInt(0), toBigInt(0), toBigInt(0))
1489+ if ((eS == eS))
1490+ then {
1491+ let hJ = invoke(aV, "burn", [dO], [AttachedPayment(di, dO)])
1492+ if ((hJ == hJ))
1493+ then {
1494+ let hK = eT(-(dC), -(dD), 0)
1495+ let gj = hK._1
1496+ let eK = hK._2
1497+ let gk = eX(eS, eK)
1498+ if ((gk == gk))
1499+ then (dE ++ gj)
1500+ else throw("Strict value is not equal to itself.")
1501+ }
1502+ else throw("Strict value is not equal to itself.")
1503+ }
1504+ else throw("Strict value is not equal to itself.")
1505+ }
1506+ }
1507+
1508+
1509+
1510+@Callable(cS)
1511+func unstakeAndGet (cz) = {
1512+ let hL = if ((size(cS.payments) != 0))
1513+ then throw("No pmnts expd")
1514+ else true
1515+ if ((hL == hL))
1516+ then {
1517+ let hM = bv()
1518+ let gZ = bq
1519+ let hN = valueOrErrorMessage(addressFromString(hM[D]), "Wr st addr")
1520+ let eS = eL(toBigInt(0), toBigInt(0), toBigInt(0))
1521+ if ((eS == eS))
1522+ then {
1523+ let hO = invoke(hN, "unstake", [toBase58String(gZ), cz], nil)
1524+ if ((hO == hO))
1525+ then {
1526+ let dY = dg(toBase58String(cS.transactionId), toBase58String(gZ), cz, cS.caller)
1527+ let dC = dY._1
1528+ let dD = dY._2
1529+ let dq = parseIntValue(dY._9)
1530+ let dE = dY._10
1531+ let hP = if (if (ba())
1532+ then true
1533+ else (dq == t))
1534+ then throw(("Blocked: " + toString(dq)))
1535+ else true
1536+ if ((hP == hP))
1537+ then {
1538+ let hQ = invoke(aV, "burn", [cz], [AttachedPayment(gZ, cz)])
1539+ if ((hQ == hQ))
1540+ then {
1541+ let hR = eT(-(dC), -(dD), 0)
1542+ let gj = hR._1
1543+ let eK = hR._2
1544+ let gk = eX(eS, eK)
1545+ if ((gk == gk))
1546+ then (dE ++ gj)
1547+ else throw("Strict value is not equal to itself.")
1548+ }
1549+ else throw("Strict value is not equal to itself.")
1550+ }
1551+ else throw("Strict value is not equal to itself.")
1552+ }
1553+ else throw("Strict value is not equal to itself.")
1554+ }
1555+ else throw("Strict value is not equal to itself.")
1556+ }
1557+ else throw("Strict value is not equal to itself.")
1558+ }
1559+
1560+
1561+
1562+@Callable(cS)
1563+func unstakeAndGetNoLess (hS,hT,hI) = {
1564+ let hv = if (ba())
1565+ then true
1566+ else (bp == t)
1567+ let gJ = [if (!(hv))
1568+ then true
1569+ else throw("get operation is blocked by admin"), if ((size(cS.payments) == 0))
1570+ then true
1571+ else throw("no payments are expected")]
1572+ if ((gJ == gJ))
1573+ then {
1574+ let eS = eL(toBigInt(0), toBigInt(0), toBigInt(0))
1575+ if ((eS == eS))
1576+ then {
1577+ let hO = invoke(bx, "unstake", [toBase58String(bq), hS], nil)
1578+ if ((hO == hO))
1579+ then {
1580+ let hU = dg(toBase58String(cS.transactionId), toBase58String(bq), hS, cS.caller)
1581+ let dC = hU._1
1582+ let dD = hU._2
1583+ let dE = hU._10
1584+ let hV = [if ((dC >= hT))
1585+ then true
1586+ else throw(makeString(["amount asset amount to receive is less than ", toString(hT)], "")), if ((dD >= hI))
1587+ then true
1588+ else throw(makeString(["price asset amount to receive is less than ", toString(hI)], ""))]
1589+ if ((hV == hV))
1590+ then {
1591+ let hJ = invoke(aV, "burn", [hS], [AttachedPayment(bq, hS)])
1592+ if ((hJ == hJ))
1593+ then {
1594+ let hW = eT(-(dC), -(dD), 0)
1595+ let gj = hW._1
1596+ let eK = hW._2
1597+ let gk = eX(eS, eK)
1598+ if ((gk == gk))
1599+ then (dE ++ gj)
1600+ else throw("Strict value is not equal to itself.")
1601+ }
1602+ else throw("Strict value is not equal to itself.")
1603+ }
1604+ else throw("Strict value is not equal to itself.")
1605+ }
1606+ else throw("Strict value is not equal to itself.")
1607+ }
1608+ else throw("Strict value is not equal to itself.")
1609+ }
1610+ else throw("Strict value is not equal to itself.")
1611+ }
1612+
1613+
1614+
1615+@Callable(cS)
1616+func unstakeAndGetOneTknV2 (hS,fM,fN) = {
1617+ let hj = {
1618+ let aX = invoke(aV, "isPoolOneTokenOperationsDisabledREADONLY", [toString(this)], nil)
1619+ if ($isInstanceOf(aX, "Boolean"))
1620+ then aX
1621+ else throw(($getType(aX) + " couldn't be cast to Boolean"))
1622+ }
1623+ let hv = if (if (ba())
1624+ then true
1625+ else (bp == t))
1626+ then true
1627+ else hj
1628+ let gJ = [if (if (!(hv))
1629+ then true
1630+ else gp(cS))
1631+ then true
1632+ else aS("get operation is blocked by admin"), if ((size(cS.payments) == 0))
1633+ then true
1634+ else aS("no payments are expected")]
1635+ if ((gJ == gJ))
1636+ then {
1637+ let hM = bv()
1638+ let gZ = bq
1639+ let hN = valueOrErrorMessage(addressFromString(hM[D]), "Wr st addr")
1640+ let dk = cS.caller
1641+ let hX = this
1642+ let hO = invoke(hN, "unstakeINTERNAL", [gZ, hS, dk.bytes, hX.bytes], nil)
1643+ if ((hO == hO))
1644+ then {
1645+ let hY = fL(fM, fN, [AttachedPayment(gZ, hS)], cS.caller, cS.originCaller, cS.transactionId)
1646+ let dE = hY._1
1647+ let fW = hY._2
1648+ $Tuple2(dE, fW)
1649+ }
1650+ else throw("Strict value is not equal to itself.")
1651+ }
1652+ else throw("Strict value is not equal to itself.")
1653+ }
1654+
1655+
1656+
1657+@Callable(cS)
1658+func putOneTknV2WithBonusREADONLY (hZ,ia) = {
1659+ let ib = fq(hZ, ia, "", "", true)
1660+ let fF = ib._1
1661+ let dE = ib._2
1662+ let cA = ib._3
1663+ let fK = ib._4
1664+ $Tuple2(nil, $Tuple3(fF, cA, fK))
1665+ }
1666+
1667+
1668+
1669+@Callable(cS)
1670+func putOneTknV2WithoutTakeFeeREADONLY (hZ,ia) = {
1671+ let ic = fq(hZ, ia, "", "", false)
1672+ let fF = ic._1
1673+ let dE = ic._2
1674+ let cA = ic._3
1675+ let fK = ic._4
1676+ $Tuple2(nil, $Tuple3(fF, cA, fK))
1677+ }
1678+
1679+
1680+
1681+@Callable(cS)
1682+func activate (id,ie) = if ((toString(cS.caller) != toString(aV)))
1683+ then throw("denied")
1684+ else $Tuple2([StringEntry(ak(), id), StringEntry(al(), ie), StringEntry(am(), toString(l))], "success")
1685+
1686+
1687+
1688+@Callable(cS)
1689+func getPoolConfigWrapperREADONLY () = $Tuple2(nil, bd())
1690+
1691+
1692+
1693+@Callable(cS)
1694+func getAccBalanceWrapperREADONLY (bR) = $Tuple2(nil, bQ(bR))
1695+
1696+
1697+
1698+@Callable(cS)
1699+func calcPricesWrapperREADONLY (ck,cl,cp) = {
1700+ let if = co(ck, cl, cp)
1701+ $Tuple2(nil, [toString(if[0]), toString(if[1]), toString(if[2])])
1702+ }
1703+
1704+
1705+
1706+@Callable(cS)
1707+func fromX18WrapperREADONLY (N,ig) = $Tuple2(nil, M(parseBigIntValue(N), ig))
1708+
1709+
1710+
1711+@Callable(cS)
1712+func toX18WrapperREADONLY (J,K) = $Tuple2(nil, toString(I(J, K)))
1713+
1714+
1715+
1716+@Callable(cS)
1717+func calcPriceBigIntWrapperREADONLY (bT,bU) = $Tuple2(nil, toString(bS(parseBigIntValue(bT), parseBigIntValue(bU))))
1718+
1719+
1720+
1721+@Callable(cS)
1722+func estimatePutOperationWrapperREADONLY (dh,bZ,dG,dH,dI,dJ,ih,dK,dL) = $Tuple2(nil, dF(dh, bZ, dG, dH, dI, dJ, ih, dK, dL, true, false, 0, ""))
1723+
1724+
1725+
1726+@Callable(cS)
1727+func estimateGetOperationWrapperREADONLY (dh,ii,dj,ih) = {
1728+ let dY = dg(dh, ii, dj, addressFromStringValue(ih))
1729+ $Tuple2(nil, $Tuple10(dY._1, dY._2, dY._3, dY._4, dY._5, dY._6, dY._7, toString(dY._8), dY._9, dY._10))
1730+ }
1731+
1732+
1733+
1734+@Callable(cS)
1735+func changeAmp () = {
1736+ let ij = invoke(aV, "getChangeAmpConfigREADONLY", [toString(this)], nil)
1737+ let ik = {
1738+ let gm = ij
1739+ if ($isInstanceOf(gm, "List[Any]"))
1740+ then {
1741+ let il = gm
1742+ $Tuple3({
1743+ let aX = il[0]
1744+ if ($isInstanceOf(aX, "Int"))
1745+ then aX
1746+ else throw(($getType(aX) + " couldn't be cast to Int"))
1747+ }, {
1748+ let aX = il[1]
1749+ if ($isInstanceOf(aX, "Int"))
1750+ then aX
1751+ else throw(($getType(aX) + " couldn't be cast to Int"))
1752+ }, {
1753+ let aX = il[2]
1754+ if ($isInstanceOf(aX, "Int"))
1755+ then aX
1756+ else throw(($getType(aX) + " couldn't be cast to Int"))
1757+ })
1758+ }
1759+ else aS("invalid entry type")
1760+ }
1761+ let im = ik._1
1762+ let in = ik._2
1763+ let io = ik._3
1764+ let ip = parseIntValue(getStringValue(am()))
1765+ let iq = (ip + in)
1766+ let ir = if ((0 > in))
1767+ then if ((io > iq))
1768+ then io
1769+ else iq
1770+ else if ((iq > io))
1771+ then io
1772+ else iq
1773+ let is = valueOrElse(getInteger(ap()), 0)
1774+ let it = (is + im)
1775+ let gJ = [if ((height > it))
1776+ then true
1777+ else aS("try again in few blocks"), if ((ip != ir))
1778+ then true
1779+ else aS("already reached target")]
1780+ if ((gJ == gJ))
1781+ then [IntegerEntry(ap(), height), StringEntry(am(), toString(ir)), StringEntry(an(height), toString(ir))]
1782+ else throw("Strict value is not equal to itself.")
1783+ }
1784+
1785+
1786+@Verifier(iu)
1787+func iv () = {
1788+ let iw = {
1789+ let gm = gl()
1790+ if ($isInstanceOf(gm, "ByteVector"))
1791+ then {
1792+ let gq = gm
1793+ gq
1794+ }
1795+ else if ($isInstanceOf(gm, "Unit"))
1796+ then iu.senderPublicKey
1797+ else throw("Match error")
1798+ }
1799+ let gm = iu
1800+ if ($isInstanceOf(gm, "Order"))
1801+ then {
1802+ let fa = gm
1803+ let ix = bb()
1804+ let iy = if (gx())
1805+ then $Tuple2(true, "")
1806+ else eZ(fa)
1807+ let aK = iy._1
1808+ let aL = iy._2
1809+ let aM = sigVerify(fa.bodyBytes, fa.proofs[0], fa.senderPublicKey)
1810+ let aN = sigVerify(fa.bodyBytes, fa.proofs[1], ix)
1811+ if (if (if (aK)
1812+ then aM
1813+ else false)
1814+ then aN
1815+ else false)
1816+ then true
1817+ else aJ(aK, aL, aM, aN)
1818+ }
1819+ else if ($isInstanceOf(gm, "SetScriptTransaction"))
1820+ then {
1821+ let cF = gm
1822+ if (sigVerify(iu.bodyBytes, iu.proofs[0], iw))
1823+ then true
1824+ else {
1825+ let iz = blake2b256(value(cF.script))
1826+ let iA = fromBase64String(value(getString(aV, aF())))
1827+ let iB = scriptHash(this)
1828+ if ((iA == iz))
1829+ then (iB != iz)
1830+ else false
1831+ }
1832+ }
1833+ else sigVerify(iu.bodyBytes, iu.proofs[0], iw)
1834+ }
1835+

github/deemru/w8io/873ac7e 
90.50 ms