tx · BFVhcYnZhCpi6EFXTGLHpPPYse2JLtoitU5MSEUxM4Y1

3MtP3m8hWMxYcyDxXB6n299KrsLLyT8ehni:  -0.03600000 Waves

2023.01.19 17:39 [2411941] smart account 3MtP3m8hWMxYcyDxXB6n299KrsLLyT8ehni > SELF 0.00000000 Waves

{ "type": 13, "id": "BFVhcYnZhCpi6EFXTGLHpPPYse2JLtoitU5MSEUxM4Y1", "fee": 3600000, "feeAssetId": null, "timestamp": 1674139184942, "version": 1, "sender": "3MtP3m8hWMxYcyDxXB6n299KrsLLyT8ehni", "senderPublicKey": "BRyVaCURUMe7ssUbXucteig1g44bGwWirJQzugKahUQ1", "proofs": [ "VrLwPvhZe4sGj6ZbJ5D9WAipwo8gfMa4Er41onky3D17nnseWnhEyNKTerQk1SRfGfNkP1zB2rvnuKyw8yi8RdX" ], "script": "base64:BgLtKAgCEgMKAQgSAwoBCBIAEgQKAgEEEgQKAgEEEgMKAQESABIECgIIARIAEgQKAggBEgQKAggBEgQKAgEBEgMKAQESBQoDAQEBEgUKAwEIARIECgIBCBIECgIBCBIECgIICBIECgIICBIECgIIARIAEgMKAQgSBQoDAQEBEgQKAggBEgQKAgEBEgQKAggIEgsKCQgBAQIBAggEBBIGCgQICAEIIgZzY2FsZTgiDHNjYWxlOEJpZ0ludCIHc2NhbGUxOCIKemVyb0JpZ0ludCIEYmlnMCIEYmlnMSIEYmlnMiIEYmlnMyIEYmlnNCIKc2xpcHBhZ2U0RCILd2F2ZXNTdHJpbmciBUFtdWx0IgVEY29udiIDU0VQIgVFTVBUWSIKUG9vbEFjdGl2ZSIKUG9vbFB1dERpcyIOUG9vbE1hdGNoZXJEaXMiDFBvb2xTaHV0ZG93biIOaWR4UG9vbEFkZHJlc3MiCWlkeFBvb2xTdCIJaWR4TFBBc0lkIglpZHhBbUFzSWQiCWlkeFByQXNJZCILaWR4QW10QXNEY20iDWlkeFByaWNlQXNEY20iC2lkeElBbXRBc0lkIg1pZHhJUHJpY2VBc0lkIg9pZHhGYWN0U3Rha0NudHIiEmlkeEZhY3RvcnlSZXN0Q250ciIQaWR4RmFjdFNsaXBwQ250ciIRaWR4RmFjdEd3eFJld0NudHIiCmZlZURlZmF1bHQiAnQxIgdvcmlnVmFsIg1vcmlnU2NhbGVNdWx0Igh0MUJpZ0ludCICZjEiA3ZhbCIPcmVzdWx0U2NhbGVNdWx0Igxmcm9tWDE4Um91bmQiBXJvdW5kIgJ0MiICZjIiAnRzIgNhbXQiCHJlc1NjYWxlIghjdXJTY2FsZSIDYWJzIglhYnNCaWdJbnQiAmZjIgNtcGsiBHBtcGsiAnBsIgJwaCIBaCIBdCIDcGF1IgJ1YSIEdHhJZCIDZ2F1IgJhYSICcGEiA2FtcCIDYWRhIgZrZXlGZWUiA2ZlZSIGa2V5RExwIhVrZXlETHBSZWZyZXNoZWRIZWlnaHQiEmtleURMcFJlZnJlc2hEZWxheSIWZExwUmVmcmVzaERlbGF5RGVmYXVsdCIPZExwUmVmcmVzaERlbGF5IgRmY2ZnIgRtdHBrIgJwYyIGaUFtdEFzIgVpUHJBcyIDbWJhIgViQVN0ciIDYXBzIhxrZXlBbGxvd2VkTHBTdGFibGVTY3JpcHRIYXNoIhZrZXlGZWVDb2xsZWN0b3JBZGRyZXNzIgN0b2UiA29yViIGc2VuZHJWIgZtYXRjaFYiBHN0cmYiBGFkZHIiA2tleSIEaW50ZiIIdGhyb3dFcnIiA21zZyIGZm10RXJyIgNmY2EiBWluRmVlIgFAIgZvdXRGZWUiAUEiA2lncyICbXAiE2ZlZUNvbGxlY3RvckFkZHJlc3MiA2dwYyIFYW10QXMiB3ByaWNlQXMiCGlQcmljZUFzIgxwYXJzZUFzc2V0SWQiBWlucHV0Ig9hc3NldElkVG9TdHJpbmciD3BhcnNlUG9vbENvbmZpZyIKcG9vbENvbmZpZyIQcG9vbENvbmZpZ1BhcnNlZCILJHQwNzg0NzgwNzYiDmNmZ1Bvb2xBZGRyZXNzIg1jZmdQb29sU3RhdHVzIgxjZmdMcEFzc2V0SWQiEGNmZ0Ftb3VudEFzc2V0SWQiD2NmZ1ByaWNlQXNzZXRJZCIWY2ZnQW1vdW50QXNzZXREZWNpbWFscyIVY2ZnUHJpY2VBc3NldERlY2ltYWxzIhJjZmdJbkFtb3VudEFzc2VkSWQiEWNmZ0luUHJpY2VBc3NldElkIgNnZmMiDWZhY3RvcnlDb25maWciD3N0YWtpbmdDb250cmFjdCIPc2xpcGFnZUNvbnRyYWN0Igtnd3hDb250cmFjdCIMcmVzdENvbnRyYWN0IhFkYXRhUHV0QWN0aW9uSW5mbyINaW5BbXRBc3NldEFtdCIPaW5QcmljZUFzc2V0QW10IghvdXRMcEFtdCIFcHJpY2UiCnNsaXBCeVVzZXIiDHNsaXBwYWdlUmVhbCIIdHhIZWlnaHQiC3R4VGltZXN0YW1wIgxzbGlwYWdlQW1BbXQiDHNsaXBhZ2VQckFtdCIRZGF0YUdldEFjdGlvbkluZm8iDm91dEFtdEFzc2V0QW10IhBvdXRQcmljZUFzc2V0QW10IgdpbkxwQW10Ig1nZXRBY2NCYWxhbmNlIgdhc3NldElkIgRjcGJpIghwckFtdFgxOCIIYW1BbXRYMTgiBWNwYmlyIgN2YWQiAkExIgJBMiIIc2xpcHBhZ2UiBGRpZmYiBHBhc3MiAnZkIgJEMSICRDAiBHNscGciBGZhaWwiA3BjcCIKYW1Bc3NldERjbSIKcHJBc3NldERjbSIFYW1BbXQiBXByQW10IgthbXRBc0FtdFgxOCIKcHJBc0FtdFgxOCIKY2FsY1ByaWNlcyIFbHBBbXQiCGFtdEFzRGNtIgdwckFzRGNtIghwcmljZVgxOCIIbHBBbXRYMTgiDWxwUHJJbkFtQXNYMTgiDWxwUHJJblByQXNYMTgiD2NhbGN1bGF0ZVByaWNlcyIBcCIHdGFrZUZlZSIGYW1vdW50IglmZWVBbW91bnQiA2VnbyIGdHhJZDU4IgpwbXRBc3NldElkIghwbXRMcEFtdCILdXNlckFkZHJlc3MiBGxwSWQiBGFtSWQiBHBySWQiBWFtRGNtIgVwckRjbSIDc3RzIgdscEVtaXNzIglhbUJhbGFuY2UiDGFtQmFsYW5jZVgxOCIJcHJCYWxhbmNlIgxwckJhbGFuY2VYMTgiC2N1clByaWNlWDE4IghjdXJQcmljZSILcG10THBBbXRYMTgiCmxwRW1pc3NYMTgiC291dEFtQW10WDE4IgtvdXRQckFtdFgxOCIIb3V0QW1BbXQiCG91dFByQW10IgVzdGF0ZSIDZXBvIgdpbkFtQW10IgZpbkFtSWQiB2luUHJBbXQiBmluUHJJZCIGaXNFdmFsIgZlbWl0THAiCmlzT25lQXNzZXQiEHZhbGlkYXRlU2xpcHBhZ2UiBnBtdEFtdCIFcG10SWQiB2FtSWRTdHIiB3BySWRTdHIiCWluQW1JZFN0ciIJaW5QcklkU3RyIgZhbXREY20iCHByaWNlRGNtIgRscEVtIg9pbkFtQXNzZXRBbXRYMTgiD2luUHJBc3NldEFtdFgxOCIMdXNlclByaWNlWDE4IgFyIgtzbGlwcGFnZVgxOCIPc2xpcHBhZ2VSZWFsWDE4Ig1scEVtaXNzaW9uWDE4IgpwclZpYUFtWDE4IgphbVZpYVByWDE4IgxleHBlY3RlZEFtdHMiEWV4cEFtdEFzc2V0QW10WDE4IhNleHBQcmljZUFzc2V0QW10WDE4IgljYWxjTHBBbXQiDmNhbGNBbUFzc2V0UG10Ig5jYWxjUHJBc3NldFBtdCIMc2xpcHBhZ2VDYWxjIgllbWl0THBBbXQiBmFtRGlmZiIGcHJEaWZmIg0kdDAxODcyNjE5MDcxIgp3cml0ZUFtQW10Igp3cml0ZVByQW10Igtjb21tb25TdGF0ZSIEZ2V0RCICeHAiA3hwMCIDeHAxIgFzIgFhIgNhbm4iC3hwMF94cDFfbl9uIgVhbm5fcyIFYW5uXzEiCWNhbGNETmV4dCIBZCICZGQiA2RkZCICZHAiBGNhbGMiA2FjYyIBaSIFZE5leHQiCGREaWZmUmF3IgVkRGlmZiIDYXJyIg0kdDAyMDk3ODIxMDI2IgIkbCICJHMiBSRhY2MwIgUkZjBfMSICJGEiAiRpIgUkZjBfMiIFZm91bmQiBWdldFlEIgFEIgFuIgF4IgphUHJlY2lzaW9uIgFjIgFiIgNjdXIiDSR0MDIxNTE4MjE1MzgiAXkiBXlOZXh0IgV5RGlmZiINJHQwMjE4NDUyMTg5MiIHY2FsY0RMcCINYW1vdW50QmFsYW5jZSIMcHJpY2VCYWxhbmNlIgpscEVtaXNzaW9uIgp1cGRhdGVkRExwIg5jYWxjQ3VycmVudERMcCIQYW1vdW50QXNzZXREZWx0YSIPcHJpY2VBc3NldERlbHRhIhRscEFzc2V0RW1pc3Npb25EZWx0YSISYW1vdW50QXNzZXRCYWxhbmNlIhFwcmljZUFzc2V0QmFsYW5jZSIPbHBBc3NldEVtaXNzaW9uIgpjdXJyZW50RExwIhJyZWZyZXNoRExwSW50ZXJuYWwiF2Ftb3VudEFzc2V0QmFsYW5jZURlbHRhIhZwcmljZUFzc2V0QmFsYW5jZURlbHRhIgdhY3Rpb25zIhJ2YWxpZGF0ZVVwZGF0ZWRETHAiBm9sZERMcCIbdmFsaWRhdGVNYXRjaGVyT3JkZXJBbGxvd2VkIgVvcmRlciIRYW1vdW50QXNzZXRBbW91bnQiEHByaWNlQXNzZXRBbW91bnQiDSR0MDIzOTM2MjQxNDgiA2RMcCINJHQwMjQ0NzgyNDU3OCINdW51c2VkQWN0aW9ucyIGZExwTmV3Igxpc09yZGVyVmFsaWQiAmNnIgNwbXQiAmNwIgZjYWxsZXIiB2FtQXNQbXQiB3ByQXNQbXQiDWNhbGNQdXRPbmVUa24iCXBtdEFtdFJhdyILd2l0aFRha2VGZWUiDWNoZWNoRW1pc3Npb24iDSR0MDI2ODQ0MjczMDYiDGFtQmFsYW5jZU9sZCIMcHJCYWxhbmNlT2xkIg0kdDAyNzMxMjI3NDg4IgthbUFtb3VudFJhdyILcHJBbW91bnRSYXciDSR0MDI3NDkyMjc3NDYiCGFtQW1vdW50IghwckFtb3VudCIMYW1CYWxhbmNlTmV3IgxwckJhbGFuY2VOZXciBmNoZWNrRCIIbHBBbW91bnQiDnBvb2xQcm9wb3J0aW9uIg9hbW91bnRBc3NldFBhcnQiDnByaWNlQXNzZXRQYXJ0IglscEFtdEJvdGgiBWJvbnVzIhNnZXRPbmVUa25WMkludGVybmFsIgpvdXRBc3NldElkIgxtaW5PdXRBbW91bnQiCHBheW1lbnRzIgxvcmlnaW5DYWxsZXIiDXRyYW5zYWN0aW9uSWQiCmFtRGVjaW1hbHMiCnByRGVjaW1hbHMiCnBvb2xTdGF0dXMiDSR0MDI5Nzk2Mjk5MDciCHRvdGFsR2V0Igt0b3RhbEFtb3VudCINJHQwMzAwOTczMDQwNCIFb3V0QW0iBW91dFByIghjdXJQclgxOCIFY3VyUHIiEW91dEFzc2V0SWRPcldhdmVzIhBzZW5kRmVlVG9NYXRjaGVyIgRidXJuIg0kdDAzMTE4OTMxNTM5IhBmZWVBbW91bnRGb3JDYWxjIhBvdXRJbkFtb3VudEFzc2V0Ig0kdDAzMTU0MjMxNjUwIhFyZWZyZXNoRExwQWN0aW9ucyIRaXNVcGRhdGVkRExwVmFsaWQiAW0iByRtYXRjaDAiAnBtIgJwZCIJaXNNYW5hZ2VyIgJwayICbW0iF3BlbmRpbmdNYW5hZ2VyUHVibGljS2V5IgJjbSIDaHBtIgNjcG0iBHNsaXAiCWF1dG9TdGFrZSIHZmFjdENmZyILc3Rha2luZ0NudHIiCHNsaXBDbnRyIgphbUFzc2V0UG10IgpwckFzc2V0UG10IgFlIglscEFzc2V0SWQiAmVsIgZsZWdhY3kiAnNhIgJzcCIIbHBUcm5zZnIiAnNzIg0kdDAzNTc5OTM1OTQxIgVjaGVjayIUbHBBc3NldEVtaXNzaW9uQWZ0ZXIiIGlzUG9vbE9uZVRva2VuT3BlcmF0aW9uc0Rpc2FibGVkIg1pc1B1dERpc2FibGVkIgZjaGVja3MiDSR0MDM3NTgyMzc3NDAiB2VzdGltTFAiDSR0MDM4NTU1Mzg5MDQiFHBheW1lbnRJbkFtb3VudEFzc2V0Ig0kdDAzODkwNzM5MDE1IgdtYXhTbHBnIgZlc3RQdXQiDSR0MDQwMDQ1NDAxMTAiCW91dEFtdEFtdCINJHQwNDEyODM0MTM2NSINaXNHZXREaXNhYmxlZCINJHQwNDE5ODM0MjEzOCIYbGFzdFJlZnJlc2hlZEJsb2NrSGVpZ2h0Ih1jaGVja0xhc3RSZWZyZXNoZWRCbG9ja0hlaWdodCINJHQwNDI2NjI0MjcyNiIQZExwVXBkYXRlQWN0aW9ucyINbHBBc3NldEFtb3VudCIFaW5kZXgiBG5ld1kiAmR5Igt0b3RhbEdldFJhdyINJHQwNDM2NTY0MzcxMSINJHQwNDQwODY0NDIwMSIOc3VtT2ZHZXRBc3NldHMiEm5vTGVzc1RoZW5BbXRBc3NldCIUbm9MZXNzVGhlblByaWNlQXNzZXQiFGJ1cm5MUEFzc2V0T25GYWN0b3J5Ig0kdDA0NTM2NzQ1NDQ4Ig1jaGVja1BheW1lbnRzIgpmYWN0b3J5Q2ZnIgdzdGFraW5nIgp1bnN0YWtlSW52IgF2IgVidXJuQSINJHQwNDY0NzU0NjU1NiINdW5zdGFrZUFtb3VudCIVbm9MZXNzVGhlbkFtb3VudEFzc2V0IgNyZXMiDGNoZWNrQW1vdW50cyINJHQwNDc4MDc0Nzg4OCINJHQwNDg3ODM0ODk3MSIQcGF5bWVudEFtb3VudFJhdyIOcGF5bWVudEFzc2V0SWQiDSR0MDQ5MDk5NDkyMDIiDSR0MDQ5MzUwNDk0NTQiCGFtdEFzU3RyIgdwckFzU3RyIgFrIgJwciIMcmVzU2NhbGVNdWx0Igd1c3JBZGRyIgdwbXRBc0lkIgJ0eCIGdmVyaWZ5Ig90YXJnZXRQdWJsaWNLZXkiCm1hdGNoZXJQdWIiCm9yZGVyVmFsaWQiC3NlbmRlclZhbGlkIgxtYXRjaGVyVmFsaWQiB25ld0hhc2giC2FsbG93ZWRIYXNoIgtjdXJyZW50SGFzaIEBAAFhAIDC1y8AAWIJALYCAQCAwtcvAAFjCQC2AgEAgICQu7rWrfANAAFkCQC2AgEAAAABZQkAtgIBAAAAAWYJALYCAQABAAFnCQC2AgEAAgABaAkAtgIBAAMAAWkJALYCAQAEAAFqCQC2AgEJAGUCBQFhCQBpAgkAaAIFAWEAAQUBYQABawIFV0FWRVMAAWwCAzEwMAABbQIBMQABbgICX18AAW8C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bAMJAAECBQJhUgIDSW50BQJhUgkAAgEJAKwCAgkAAwEFAmFSAhggY291bGRuJ3QgYmUgY2FzdCB0byBJbnQAAmFTCgACYVIJAPwHBAUCYVACEWdldE91dEZlZVJFQURPTkxZCQDMCAIJAKUIAQUEdGhpcwUDbmlsBQNuaWwDCQABAgUCYVICA0ludAUCYVIJAAIBCQCsAgIJAAMBBQJhUgIYIGNvdWxkbid0IGJlIGNhc3QgdG8gSW50AAJhVAkBAmFJAgUEdGhpcwkBAmFsAAECYVUACQELdmFsdWVPckVsc2UCCQCbCAIFAmFQCQECYUIABwECYVYACQDZBAEJAQJhSQIFAmFQCQECYXYAAAJhVwkBEUBleHRyTmF0aXZlKDEwNjIpAQkBAmFJAgUCYVAJAQJhRAABAmFYAAQCYVkJAQJhSQIFBHRoaXMJAQJhagAEAmFaCQECYUkCBQR0aGlzCQECYWsABAJiYQkBAmFMAgUCYVAJAQJhegEFAmFaBAJheAkBAmFMAgUCYVAJAQJhegEFAmFZCQC1CQIJAQJhSQIFAmFQCQECYXcCCQCkAwEFAmF4CQCkAwEFAmJhBQFuAQJiYgECYmMDCQAAAgUCYmMFAWsFBHVuaXQJANkEAQUCYmMBAmJkAQJiYwMJAAACBQJiYwUEdW5pdAUBawkA2AQBCQEFdmFsdWUBBQJiYwECYmUBAmJmCQCbCgkJARFAZXh0ck5hdGl2ZSgxMDYyKQEJAJEDAgUCYmYFAXQJAQ1wYXJzZUludFZhbHVlAQkAkQMCBQJiZgUBdQkA2QQBCQCRAwIFAmJmBQF2CQECYmIBCQCRAwIFAmJmBQF3CQECYmIBCQCRAwIFAmJmBQF4CQENcGFyc2VJbnRWYWx1ZQEJAJEDAgUCYmYFAXkJAQ1wYXJzZUludFZhbHVlAQkAkQMCBQJiZgUBegkA2QQBCQCRAwIFAmJmBQFBCQDZBAEJAJEDAgUCYmYFAUIAAmJnCQECYmUBCQECYVgAAAJiaAUCYmcAAmJpCAUCYmgCXzEAAmJqCAUCYmgCXzIAAmJrCAUCYmgCXzMAAmJsCAUCYmgCXzQAAmJtCAUCYmgCXzUAAmJuCAUCYmgCXzYAAmJvCAUCYmgCXzcAAmJwCAUCYmgCXzgAAmJxCAUCYmgCXzkBAmJyAAkAtQkCCQECYUkCBQJhUAkBAmF1AAUBbgACYnMJAQJicgAAAmJ0CQETdmFsdWVPckVycm9yTWVzc2FnZQIJAKYIAQkAkQMCBQJicwUBQwIgSW52YWxpZCBzdGFraW5nIGNvbnRyYWN0IGFkZHJlc3MAAmJ1CQETdmFsdWVPckVycm9yTWVzc2FnZQIJAKYIAQkAkQMCBQJicwUBRQIgSW52YWxpZCBzbGlwYWdlIGNvbnRyYWN0IGFkZHJlc3MAAmJ2CQETdmFsdWVPckVycm9yTWVzc2FnZQIJAKYIAQkAkQMCBQJicwUBRgIcSW52YWxpZCBnd3ggY29udHJhY3QgYWRkcmVzcwACYncJARN2YWx1ZU9yRXJyb3JNZXNzYWdlAgkApggBCQCRAwIFAmJzBQFEAhxJbnZhbGlkIGd3eCBjb250cmFjdCBhZGRyZXNzAQJieAoCYnkCYnoCYkECYkICYkMCYkQCYkUCYkYCYkcCYkgJALkJAgkAzAgCAhQlZCVkJWQlZCVkJWQlZCVkJWQlZAkAzAgCCQCkAwEFAmJ5CQDMCAIJAKQDAQUCYnoJAMwIAgkApAMBBQJiQQkAzAgCCQCkAwEFAmJCCQDMCAIJAKQDAQUCYkMJAMwIAgkApAMBBQJiRAkAzAgCCQCkAwEFAmJFCQDMCAIJAKQDAQUCYkYJAMwIAgkApAMBBQJiRwkAzAgCCQCkAwEFAmJIBQNuaWwFAW4BAmJJBgJiSgJiSwJiTAJiQgJiRQJiRgkAuQkCCQDMCAICDCVkJWQlZCVkJWQlZAkAzAgCCQCkAwEFAmJKCQDMCAIJAKQDAQUCYksJAMwIAgkApAMBBQJiTAkAzAgCCQCkAwEFAmJCCQDMCAIJAKQDAQUCYkUJAMwIAgkApAMBBQJiRgUDbmlsBQFuAQJiTQECYk4DCQAAAgUCYk4CBVdBVkVTCAkA7wcBBQR0aGlzCWF2YWlsYWJsZQkA8AcCBQR0aGlzCQDZBAEFAmJOAQJiTwICYlACYlEJALwCAwUCYlAFAWMFAmJRAQJiUgMCYlACYlEBUAkAvQIEBQJiUAUBYwUCYlEFAVABAmJTAwJiVAJiVQJiVgQCYlcJALwCAwkAuAICBQJiVAUCYlUFAWIFAmJVBAJiWAkAvwICCQC4AgIFAmJWCQEBVwEFAmJXBQFkAwkBASEBBQJiWAkAAgEJAKwCAgIKQmlnIHNscGc6IAkApgMBBQJiVwkAlAoCBQJiWAkAmQMBCQDMCAIFAmJUCQDMCAIFAmJVBQNuaWwBAmJZAwJiWgJjYQJjYgQCYlcJALwCAwUCY2EFAWIFAmJaBAJjYwkAvwICBQJjYgUCYlcDAwUCY2MGCQC/AgIFAmNhBQJiWgkAAgEJAKwCAgkArAICCQCsAgIJAKwCAgkArAICCQCsAgIJAKYDAQUCY2ECASAJAKYDAQUCYloCASAJAKYDAQUCYlcCASAJAKYDAQUCY2IFAmNjAQJjZAQCY2UCY2YCY2cCY2gEAmNpCQEBSAIFAmNnBQJjZQQCY2oJAQFIAgUCY2gFAmNmCQECYk8CBQJjagUCY2kBAmNrAwJjZwJjaAJjbAQCY20FAmJuBAJjbgUCYm8EAmNvCQECY2QEBQJjbQUCY24FAmNnBQJjaAQCYlEJAQFIAgUCY2cFAmNtBAJiUAkBAUgCBQJjaAUCY24EAmNwCQEBSAIFAmNsBQFhBAJjcQkBAmJPAgUCYlEFAmNwBAJjcgkBAmJPAgUCYlAFAmNwCQDMCAIFAmNvCQDMCAIFAmNxCQDMCAIFAmNyBQNuaWwBAmNzAwJjZwJjaAJjbAQCY3QJAQJjawMFAmNnBQJjaAUCY2wJAMwIAgkBAUwCCQCRAwIFAmN0AAAFAWEJAMwIAgkBAUwCCQCRAwIFAmN0AAEFAWEJAMwIAgkBAUwCCQCRAwIFAmN0AAIFAWEFA25pbAECY3UCAmN2AmFvBAJjdwMJAAACBQJhbwAAAAAJAGsDBQJjdgUCYW8FAWEJAJQKAgkAZQIFAmN2BQJjdwUCY3cBAmN4BAJjeQJjegJjQQJjQgQCY0MFAmJrBAJjRAkA2AQBCQEFdmFsdWUBBQJibAQCY0UJANgEAQkBBXZhbHVlAQUCYm0EAmNGBQJibgQCY0cFAmJvBAJjSAkApAMBBQJiagQCY0kICQETdmFsdWVPckVycm9yTWVzc2FnZQIJAOwHAQUCY0MCC1dyb25nIExQIGlkCHF1YW50aXR5AwkBAiE9AgkA2AQBBQJjQwUCY3oJAAIBAg9Xcm9uZyBwbXQgYXNzZXQEAmNKCQECYk0BBQJjRAQCY0sJAQFIAgUCY0oFAmNGBAJjTAkBAmJNAQUCY0UEAmNNCQEBSAIFAmNMBQJjRwQCY04JAQJiTwIFAmNNBQJjSwQCY08JAQFMAgUCY04FAWEEAmNQCQEBSAIFAmNBBQFhBAJjUQkBAUgCBQJjSQUBYQQCY1IJALwCAwUCY0sFAmNQBQJjUQQCY1MJALwCAwUCY00FAmNQBQJjUQQCY1QJAQFPAwUCY1IFAmNGBQVGTE9PUgQCY1UJAQFPAwUCY1MFAmNHBQVGTE9PUgQCY1YDCQAAAgUCY3kCAAUDbmlsCQDMCAIJAQ5TY3JpcHRUcmFuc2ZlcgMFAmNCBQJjVAMJAAACBQJjRAIFV0FWRVMFBHVuaXQJANkEAQUCY0QJAMwIAgkBDlNjcmlwdFRyYW5zZmVyAwUCY0IFAmNVAwkAAAIFAmNFAgVXQVZFUwUEdW5pdAkA2QQBBQJjRQkAzAgCCQELU3RyaW5nRW50cnkCCQECYWkCCQClCAEFAmNCBQJjeQkBAmJJBgUCY1QFAmNVBQJjQQUCY08FBmhlaWdodAgFCWxhc3RCbG9jawl0aW1lc3RhbXAJAMwIAgkBDEludGVnZXJFbnRyeQIJAQJhYgAFAmNPCQDMCAIJAQxJbnRlZ2VyRW50cnkCCQECYWMCBQZoZWlnaHQIBQlsYXN0QmxvY2sJdGltZXN0YW1wBQJjTwUDbmlsCQCcCgoFAmNUBQJjVQUCY0QFAmNFBQJjSgUCY0wFAmNJBQJjTgUCY0gFAmNWAQJjVw0CY3kCYlYCY1gCY1kCY1oCZGECY0ICZGICZGMCZGQCZGUCZGYCZGcEAmNDBQJiawQCZGgJANgEAQkBBXZhbHVlAQUCYmwEAmRpCQDYBAEJAQV2YWx1ZQEFAmJtBAJkagUCYnAEAmRrBQJicQQCZGwFAmJuBAJkbQUCYm8EAmNICQCkAwEFAmJqBAJkbggJARN2YWx1ZU9yRXJyb3JNZXNzYWdlAgkA7AcBBQJjQwIIV3IgbHAgYXMIcXVhbnRpdHkEAmNKAwUCZGIJAQJiTQEFAmRoAwMFAmRkCQAAAgUCZGcFAmRoBwkAZQIJAQJiTQEFAmRoBQJkZgMFAmRkCQECYk0BBQJkaAkAZQIJAQJiTQEFAmRoBQJjWAQCY0wDBQJkYgkBAmJNAQUCZGkDAwUCZGQJAAACBQJkZwUCZGkHCQBlAgkBAmJNAQUCZGkFAmRmAwUCZGQJAQJiTQEFAmRpCQBlAgkBAmJNAQUCZGkFAmNaBAJkbwkBAUgCBQJjWAUCZGwEAmRwCQEBSAIFAmNaBQJkbQQCZHEJAQJiTwIFAmRwBQJkbwQCY0sJAQFIAgUCY0oFAmRsBAJjTQkBAUgCBQJjTAUCZG0EAmRyAwkAAAIFAmRuAAAEAmNOBQFkBAJkcwUBZAQCY3AJAHYGCQC5AgIFAmRvBQJkcAAACQC2AgEABQABAAAFBERPV04JAJcKBQkBAUwCBQJjcAUBYQkBAUwCBQJkbwUCZGwJAQFMAgUCZHAFAmRtCQECYk8CCQC3AgIFAmNNBQJkcAkAtwICBQJjSwUCZG8FAmRzBAJjTgkBAmJPAgUCY00FAmNLBAJkdAkAvAIDCQEBVwEJALgCAgUCY04FAmRxBQFjBQJjTgQCZHMJAQFIAgUCYlYFAWEDAwMFAmRlCQECIT0CBQJjTgUBZAcJAL8CAgUCZHQFAmRzBwkAAgEJAKwCAgkArAICCQCsAgICD1ByaWNlIHNsaXBwYWdlIAkApgMBBQJkdAIDID4gCQCmAwEFAmRzBAJkdQkBAUgCBQJkbgUBYQQCZHYJAL0CBAUCZG8JAQJiUgMFAmNNBQJjSwUHQ0VJTElORwUBYwUHQ0VJTElORwQCZHcJAL0CBAUCZHAFAWMJAQJiUgMFAmNNBQJjSwUFRkxPT1IFB0NFSUxJTkcEAmR4AwkAvwICBQJkdgUCZHAJAJQKAgUCZHcFAmRwCQCUCgIFAmRvBQJkdgQCZHkIBQJkeAJfMQQCZHoIBQJkeAJfMgQCY3AJAL0CBAUCZHUFAmR6BQJjTQUFRkxPT1IJAJcKBQkBAU8DBQJjcAUBYQUFRkxPT1IJAQFPAwUCZHkFAmRsBQdDRUlMSU5HCQEBTwMFAmR6BQJkbQUHQ0VJTElORwUCY04FAmRzBAJkQQgFAmRyAl8xBAJkQggFAmRyAl8yBAJkQwgFAmRyAl8zBAJjTwkBAUwCCAUCZHICXzQFAWEEAmRECQEBTAIIBQJkcgJfNQUBYQMJAGcCAAAFAmRBCQACAQIHTFAgPD0gMAQCZEUDCQEBIQEFAmRjAAAFAmRBBAJkRgkAZQIFAmNYBQJkQgQCZEcJAGUCBQJjWgUCZEMEAmRIAwMFAmRkCQAAAgUCZGcFAmRoBwkAlAoCBQJkZgAAAwMFAmRkCQAAAgUCZGcFAmRpBwkAlAoCAAAFAmRmCQCUCgIFAmRCBQJkQwQCZEkIBQJkSAJfMQQCZEoIBQJkSAJfMgQCZEsJAMwIAgkBDEludGVnZXJFbnRyeQIJAQJhYgAFAmNPCQDMCAIJAQxJbnRlZ2VyRW50cnkCCQECYWMCBQZoZWlnaHQIBQlsYXN0QmxvY2sJdGltZXN0YW1wBQJjTwkAzAgCCQELU3RyaW5nRW50cnkCCQECYWYCBQJjQgUCY3kJAQJieAoFAmRJBQJkSgUCZEUFAmNPBQJiVgUCZEQFBmhlaWdodAgFCWxhc3RCbG9jawl0aW1lc3RhbXAFAmRGBQJkRwUDbmlsCQCfCg0FAmRBBQJkRQUCY08FAmNKBQJjTAUCZG4FAmNDBQJjSAUCZEsFAmRGBQJkRwUCY1kFAmRhAQJkTAECZE0EAmROCQCRAwIFAmRNAAAEAmRPCQCRAwIFAmRNAAEEAmRQCQC3AgIFAmROBQJkTwMJAAACBQJkUAUBZQUBZQQCZFEJAQ1wYXJzZUludFZhbHVlAQUCYVQEAmRSCQBoAgUCZFEAAgQCY3QJALwCAwUCZE4FAmRPBQFmBAJkUwkAvAIDBQJjdAUBaQUBZgQCZFQJALwCAwkAtgIBBQJkUgUCZFAFAWYEAmRVCQC2AgEJAGUCBQJkUgABCgECZFYBAmRXBAJkWAkAvAIDBQJkVwUCZFcFAWYEAmRZCQC8AgMFAmRYBQJkVwUBZgQCZFoJALwCAwUCZFkFAWYFAmRTCQC8AgMJALcCAgUCZFQJALwCAwUCZFoFAWcFAWYFAmRXCQC3AgIJALwCAwUCZFUFAmRXBQFmCQC8AgMFAWgFAmRaBQFmCgECZWECAmViAmVjAwgFAmViAl8yBQJlYgQCZFcIBQJlYgJfMQQCZWQJAQJkVgEFAmRXBAJlZQkAuAICBQJlZAkBBXZhbHVlAQUCZFcEAmVmAwkAvwICBQFlBQJlZQkAvgIBBQJlZQUCZWUDCQDAAgIFAWYFAmVmCQCUCgIFAmVkBgkAlAoCBQJlZAcEAmVnCQDMCAIAAAkAzAgCAAEJAMwIAgACCQDMCAIAAwkAzAgCAAQJAMwIAgAFCQDMCAIABgkAzAgCAAcJAMwIAgAICQDMCAIACQkAzAgCAAoJAMwIAgALCQDMCAIADAkAzAgCAA0JAMwIAgAOBQNuaWwEAmVoCgACZWkFAmVnCgACZWoJAJADAQUCZWkKAAJlawkAlAoCBQJkUAcKAQJlbAICZW0CZW4DCQBnAgUCZW4FAmVqBQJlbQkBAmVhAgUCZW0JAJEDAgUCZWkFAmVuCgECZW8CAmVtAmVuAwkAZwIFAmVuBQJlagUCZW0JAAIBAhRMaXN0IHNpemUgZXhjZWVkcyAxNQkBAmVvAgkBAmVsAgkBAmVsAgkBAmVsAgkBAmVsAgkBAmVsAgkBAmVsAgkBAmVsAgkBAmVsAgkBAmVsAgkBAmVsAgkBAmVsAgkBAmVsAgkBAmVsAgkBAmVsAgkBAmVsAgUCZWsAAAABAAIAAwAEAAUABgAHAAgACQAKAAsADAANAA4ADwQCZFcIBQJlaAJfMQQCZXAIBQJlaAJfMgMFAmVwBQJkVwkAAgEJAKwCAgIZRCBjYWxjdWxhdGlvbiBlcnJvciwgRCA9IAkApgMBBQJkVwECZXEDAmRNAmVjAmVyBAJlcwUBZwQCZXQJAJEDAgUCZE0DCQAAAgUCZWMAAAABAAAEAmV1CQCnAwEFAWwEAmRRCQC5AgIJAKcDAQUCYVQFAmV1BAJkUAUCZXQEAmRSCQC5AgIFAmRRBQJlcwQCZXYJALoCAgkAuQICCQC5AgIJALoCAgkAuQICBQJlcgUCZXIJALkCAgUCZXQFAmVzBQJlcgUCZXUJALkCAgUCZFIFAmVzBAJldwkAuAICCQC3AgIFAmRQCQC6AgIJALkCAgUCZXIFAmV1BQJkUgUCZXIKAQJlYQICZWICZXgEAmV5BQJlYgQCZXoIBQJleQJfMQQCZXAIBQJleQJfMgMJAQIhPQIFAmVwBQR1bml0BQJlYgQCZUEJALoCAgkAtwICCQC5AgIFAmV6BQJlegUCZXYJALcCAgkAuQICBQFnBQJlegUCZXcEAmVCCQEBWAEJALgCAgUCZUEJAQV2YWx1ZQEFAmV6AwkAwAICBQFmBQJlQgkAlAoCBQJlQQUCZXgJAJQKAgUCZUEFBHVuaXQEAmVnCQDMCAIAAAkAzAgCAAEJAMwIAgACCQDMCAIAAwkAzAgCAAQJAMwIAgAFCQDMCAIABgkAzAgCAAcJAMwIAgAICQDMCAIACQkAzAgCAAoJAMwIAgALCQDMCAIADAkAzAgCAA0JAMwIAgAOBQNuaWwEAmVDCgACZWkFAmVnCgACZWoJAJADAQUCZWkKAAJlawkAlAoCBQJlcgUEdW5pdAoBAmVsAgJlbQJlbgMJAGcCBQJlbgUCZWoFAmVtCQECZWECBQJlbQkAkQMCBQJlaQUCZW4KAQJlbwICZW0CZW4DCQBnAgUCZW4FAmVqBQJlbQkAAgECFExpc3Qgc2l6ZSBleGNlZWRzIDE1CQECZW8CCQECZWwCCQECZWwCCQECZWwCCQECZWwCCQECZWwCCQECZWwCCQECZWwCCQECZWwCCQECZWwCCQECZWwCCQECZWwCCQECZWwCCQECZWwCCQECZWwCCQECZWwCBQJlawAAAAEAAgADAAQABQAGAAcACAAJAAoACwAMAA0ADgAPBAJleggFAmVDAl8xBAJlcAgFAmVDAl8yAwkBAiE9AgUCZXAFBHVuaXQFAmV6CQACAQkArAICAhlZIGNhbGN1bGF0aW9uIGVycm9yLCBZID0gCQCmAwEFAmV6AQJlRAMCZUUCZUYCZUcEAmVICQC8AgMJAQJkTAEJAMwIAgkBAUsCBQJlRQkAtgIBBQJibgkAzAgCCQEBSwIFAmVGCQC2AgEFAmJvBQNuaWwFAWMFAmVHAwkAAAIFAmVHBQFlBQFlBQJlSAECZUkDAmVKAmVLAmVMBAJlTQkAuAICCQC2AgEJAQJiTQEJAQJiZAEFAmJsBQJlSgQCZU4JALgCAgkAtgIBCQECYk0BCQECYmQBBQJibQUCZUsEAmVPCQC4AgIJALYCAQgJAQV2YWx1ZQEJAOwHAQUCYmsIcXVhbnRpdHkFAmVMBAJlUAkBAmVEAwUCZU0FAmVOBQJlTwUCZVABAmVRAwJlUgJlUwJlTAQCZU0JAGQCCQECYk0BCQECYmQBBQJibAUCZVIEAmVOCQBkAgkBAmJNAQkBAmJkAQUCYm0FAmVTBAJlTwkAZAIICQEFdmFsdWUBCQDsBwEFAmJrCHF1YW50aXR5BQJlTAQCZUgJAQJlRAMJALYCAQUCZU0JALYCAQUCZU4JALYCAQUCZU8EAmVUCQDMCAIJAQxJbnRlZ2VyRW50cnkCBQJhcQUGaGVpZ2h0CQDMCAIJAQtTdHJpbmdFbnRyeQIFAmFwCQCmAwEFAmVIBQNuaWwJAJQKAgUCZVQFAmVIAQJlVQICZVYCZUgDCQDAAgIFAmVIBQJlVgYJAQJhTQECInVwZGF0ZWQgRExwIGxvd2VyIHRoYW4gY3VycmVudCBETHABAmVXAQJlWAQCZVkIBQJlWAZhbW91bnQEAmVaCQBuBAgFAmVYBmFtb3VudAgFAmVYBXByaWNlBQFhBQVGTE9PUgQCZmEDCQAAAggFAmVYCW9yZGVyVHlwZQUDQnV5CQCUCgIFAmVZCQEBLQEFAmVaCQCUCgIJAQEtAQUCZVkFAmVaBAJlUggFAmZhAl8xBAJlUwgFAmZhAl8yAwMDCQECYVUABgkAAAIFAmJqBQFyBgkAAAIFAmJqBQFzCQACAQINQWRtaW4gYmxvY2tlZAMDCQECIT0CCAgFAmVYCWFzc2V0UGFpcgthbW91bnRBc3NldAUCYmwGCQECIT0CCAgFAmVYCWFzc2V0UGFpcgpwcmljZUFzc2V0BQJibQkAAgECCVdyIGFzc2V0cwQCZmIJAKcDAQkBEUBleHRyTmF0aXZlKDEwNTMpAgUEdGhpcwUCYXAEAmZjCQECZVEDBQJlUgUCZVMAAAQCZmQIBQJmYwJfMQQCZmUIBQJmYwJfMgQCZmYJAMACAgUCZmUFAmZiBQJmZgECZmcBAmVjAwkBAiE9AgkAkAMBCAUCZWMIcGF5bWVudHMAAQkAAgECCjEgcG1udCBleHAEAmZoCQEFdmFsdWUBCQCRAwIIBQJlYwhwYXltZW50cwAABAJjegkBBXZhbHVlAQgFAmZoB2Fzc2V0SWQEAmRmCAUCZmgGYW1vdW50BAJkcgkBAmN4BAkA2AQBCAUCZWMNdHJhbnNhY3Rpb25JZAkA2AQBBQJjegUCZGYIBQJlYwZjYWxsZXIEAmNUCAUCZHICXzEEAmNVCAUCZHICXzIEAmNICQENcGFyc2VJbnRWYWx1ZQEIBQJkcgJfOQQCY1YIBQJkcgNfMTADAwkBAmFVAAYJAAACBQJjSAUBcwkAAgEJAKwCAgIPQWRtaW4gYmxvY2tlZDogCQCkAwEFAmNICQCXCgUFAmNUBQJjVQUCZGYFAmN6BQJjVgECZmkKAmZqAmFoAmZrAmZsAmJWAmRjAmRkAmRlAmRmAmRnBAJkcgkBAmNXDQUCYWgFAmJWCAkBBXZhbHVlAQUCZmsGYW1vdW50CAkBBXZhbHVlAQUCZmsHYXNzZXRJZAgJAQV2YWx1ZQEFAmZsBmFtb3VudAgJAQV2YWx1ZQEFAmZsB2Fzc2V0SWQFAmZqCQAAAgUCYWgCAAUCZGMFAmRkBQJkZQUCZGYFAmRnBAJjSAkBDXBhcnNlSW50VmFsdWUBCAUCZHICXzgDAwMJAQJhVQAGCQAAAgUCY0gFAXEGCQAAAgUCY0gFAXMJAAIBCQCsAgICCEJsb2NrZWQ6CQCkAwEFAmNIBQJkcgECZm0FAmZuAmN6AmNCAmFoAmZvBAJjRAkA2AQBCQEFdmFsdWUBBQJibAQCY0UJANgEAQkBBXZhbHVlAQUCYm0EAmNDBQJiawQCZGwFAmJuBAJkbQUCYm8EAmVPCQC2AgEICQETdmFsdWVPckVycm9yTWVzc2FnZQIJAOwHAQUCY0MCEGludmFsaWQgbHAgYXNzZXQIcXVhbnRpdHkEAmZwAwkAvwICBQJlTwUBZQYJAAIBAiJpbml0aWFsIGRlcG9zaXQgcmVxdWlyZXMgYWxsIGNvaW5zAwkAAAIFAmZwBQJmcAQCY0oJAQJiTQEFAmNEBAJjTAkBAmJNAQUCY0UEAmZxAwkAAAIFAmFoAgAJAJQKAgUCY0oFAmNMAwkAAAIFAmN6BQJjRAMJAGYCBQJmbgUCY0oJAAIBAhZpbnZhbGlkIHBheW1lbnQgYW1vdW50CQCUCgIJAGUCBQJjSgUCZm4FAmNMAwkAAAIFAmN6BQJjRQMJAGYCBQJmbgUCY0wJAAIBAhZpbnZhbGlkIHBheW1lbnQgYW1vdW50CQCUCgIFAmNKCQBlAgUCY0wFAmZuCQACAQIQd3JvbmcgcG10QXNzZXRJZAQCZnIIBQJmcQJfMQQCZnMIBQJmcQJfMgQCZnQDCQAAAgUCY3oFAmNECQCUCgIFAmZuAAADCQAAAgUCY3oFAmNFCQCUCgIAAAUCZm4JAAIBAg9pbnZhbGlkIHBheW1lbnQEAmZ1CAUCZnQCXzEEAmZ2CAUCZnQCXzIEAmZ3AwUCZm8JAJUKAwgJAQJjdQIFAmZ1BQJhUQJfMQgJAQJjdQIFAmZ2BQJhUQJfMQgJAQJjdQIFAmZuBQJhUQJfMgkAlQoDBQJmdQUCZnYAAAQCZngIBQJmdwJfMQQCZnkIBQJmdwJfMgQCY3cIBQJmdwJfMwQCZnoJAGQCBQJmcgUCZngEAmZBCQBkAgUCZnMFAmZ5BAJjYQkBAmRMAQkAzAgCCQC2AgEFAmZyCQDMCAIJALYCAQUCZnMFA25pbAQCYloJAQJkTAEJAMwIAgkAtgIBBQJmegkAzAgCCQC2AgEFAmZBBQNuaWwEAmZCAwkAvwICBQJiWgUCY2EGCQEFdGhyb3cAAwkAAAIFAmZCBQJmQgQCZkMJAL0CBAUCZU8JALgCAgUCYloFAmNhBQJjYQUFRkxPT1IEAmNPCQEBTAIJAQJiTwIJAQFIAgUCZkEFAmRtCQEBSAIFAmZ6BQJkbAUBYQQCZEsJAMwIAgkBDEludGVnZXJFbnRyeQIJAQJhYgAFAmNPCQDMCAIJAQxJbnRlZ2VyRW50cnkCCQECYWMCBQZoZWlnaHQIBQlsYXN0QmxvY2sJdGltZXN0YW1wBQJjTwkAzAgCCQELU3RyaW5nRW50cnkCCQECYWYCBQJjQgUCYWgJAQJieAoFAmZ1BQJmdgkAoAMBBQJmQwUCY08AAAAABQZoZWlnaHQIBQlsYXN0QmxvY2sJdGltZXN0YW1wAAAAAAUDbmlsBAJmRAkAawMFAmZzBQFhBQJmcgQCZkUJAGsDBQJmbgUBYQkAZAIFAmZEBQFhBAJmRgkAZQIFAmZuBQJmRQQCZkcJALwCAwUCZU8JALYCAQUCZkYJALYCAQUCZnMEAmZICQCgAwEJALwCAwkAuAICBQJmQwUCZkcFAWIFAmZHCQCWCgQJAKADAQUCZkMFAmRLBQJjdwUCZkgJAAIBAiRTdHJpY3QgdmFsdWUgaXMgbm90IGVxdWFsIHRvIGl0c2VsZi4JAAIBAiRTdHJpY3QgdmFsdWUgaXMgbm90IGVxdWFsIHRvIGl0c2VsZi4BAmZJBgJmSgJmSwJmTAJmagJmTQJmTgQCY0MJANgEAQkBBXZhbHVlAQUCYmsEAmNECQDYBAEJAQV2YWx1ZQEFAmJsBAJjRQkA2AQBCQEFdmFsdWUBBQJibQQCZk8FAmJuBAJmUAUCYm8EAmZRBQJiagQCY0IDCQAAAgUCZmoFAmJ3BQJmTQUCZmoEAmZoCQEFdmFsdWUBCQCRAwIFAmZMAAAEAmN6CQEFdmFsdWUBCAUCZmgHYXNzZXRJZAQCZGYIBQJmaAZhbW91bnQEAmVQCQECZUkDBQFlBQFlBQFlAwkAAAIFAmVQBQJlUAQCY3kJANgEAQUCZk4DCQECIT0CBQJjQwkA2AQBBQJjegkAAgECCFdyb25nIExQBAJjSgkBAmJNAQUCY0QEAmNMCQECYk0BBQJjRQQCZlIKAAJhUgkA/AcEBQR0aGlzAhNnZXRPbmVUa25WMlJFQURPTkxZCQDMCAIFAmZKCQDMCAIFAmRmBQNuaWwFA25pbAMJAAECBQJhUgIKKEludCwgSW50KQUCYVIJAAIBCQCsAgIJAAMBBQJhUgIfIGNvdWxkbid0IGJlIGNhc3QgdG8gKEludCwgSW50KQMJAAACBQJmUgUCZlIEAmN3CAUCZlICXzIEAmZTCAUCZlICXzEEAmZUAwMJAGYCBQJmSwAACQBmAgUCZksFAmZTBwkBAmFNAQkAuQkCCQDMCAICH2Ftb3VudCB0byByZWNlaXZlIGlzIGxlc3MgdGhhbiAJAMwIAgkApAMBBQJmSwUDbmlsAgAFAmZTBAJmVQMJAAACBQJmSgUCY0QJAJYKBAUCZlQAAAkAZQIJAGUCBQJjSgUCZlQFAmN3BQJjTAMJAAACBQJmSgUCY0UJAJYKBAAABQJmVAUCY0oJAGUCCQBlAgUCY0wFAmZUBQJjdwkAAgECFGludmFsaWQgb3V0IGFzc2V0IGlkBAJmVggFAmZVAl8xBAJmVwgFAmZVAl8yBAJmeggFAmZVAl8zBAJmQQgFAmZVAl80BAJmWAkBAmJPAgkBAUgCBQJmQQUCZlAJAQFIAgUCZnoFAmZPBAJmWQkBAUwCBQJmWAUBYQQCZloDCQAAAgUCZkoCBVdBVkVTBQR1bml0CQDZBAEFAmZKBAJnYQMJAGYCBQJjdwAACQDMCAIJAQ5TY3JpcHRUcmFuc2ZlcgMFAmFXBQJjdwUCZloFA25pbAUDbmlsBAJjVgkAzggCCQDMCAIJAQ5TY3JpcHRUcmFuc2ZlcgMFAmNCBQJmVAUCZloJAMwIAgkBC1N0cmluZ0VudHJ5AgkBAmFpAgkApQgBBQJjQgUCY3kJAQJiSQYFAmZWBQJmVwUCZGYFAmZZBQZoZWlnaHQIBQlsYXN0QmxvY2sJdGltZXN0YW1wCQDMCAIJAQxJbnRlZ2VyRW50cnkCCQECYWIABQJmWQkAzAgCCQEMSW50ZWdlckVudHJ5AgkBAmFjAgUGaGVpZ2h0CAUJbGFzdEJsb2NrCXRpbWVzdGFtcAUCZlkFA25pbAUCZ2EDCQAAAgUCY1YFAmNWBAJnYgkA/AcEBQJhUAIEYnVybgkAzAgCBQJkZgUDbmlsCQDMCAIJAQ9BdHRhY2hlZFBheW1lbnQCBQJjegUCZGYFA25pbAMJAAACBQJnYgUCZ2IEAmdjBAJnZAMJAAACBQR0aGlzBQJhVwAABQJjdwQCZ2UDCQAAAgkBAmJiAQUCZkoFAmJsBgcDBQJnZQkAlAoCCQEBLQEJAGQCBQJmUwUCZ2QAAAkAlAoCAAAJAQEtAQkAZAIFAmZTBQJnZAQCZVIIBQJnYwJfMQQCZVMIBQJnYwJfMgQCZ2YJAQJlUQMFAmVSBQJlUwAABAJnZwgFAmdmAl8xBAJlSAgFAmdmAl8yBAJnaAkBAmVVAgUCZVAFAmVIAwkAAAIFAmdoBQJnaAkAlAoCCQDOCAIFAmNWBQJnZwUCZlQJAAIBAiRTdHJpY3QgdmFsdWUgaXMgbm90IGVxdWFsIHRvIGl0c2VsZi4JAAIBAiRTdHJpY3QgdmFsdWUgaXMgbm90IGVxdWFsIHRvIGl0c2VsZi4JAAIBAiRTdHJpY3QgdmFsdWUgaXMgbm90IGVxdWFsIHRvIGl0c2VsZi4JAAIBAiRTdHJpY3QgdmFsdWUgaXMgbm90IGVxdWFsIHRvIGl0c2VsZi4JAAIBAiRTdHJpY3QgdmFsdWUgaXMgbm90IGVxdWFsIHRvIGl0c2VsZi4BAmdpAAQCZ2oJAKIIAQkBAVoAAwkAAQIFAmdqAgZTdHJpbmcEAmRQBQJnagkA2QQBBQJkUAMJAAECBQJnagIEVW5pdAUEdW5pdAkAAgECC01hdGNoIGVycm9yAQJnawAEAmdqCQCiCAEJAQJhYQADCQABAgUCZ2oCBlN0cmluZwQCZFAFAmdqCQDZBAEFAmRQAwkAAQIFAmdqAgRVbml0BQR1bml0CQACAQILTWF0Y2ggZXJyb3IAAmdsCQACAQIRUGVybWlzc2lvbiBkZW5pZWQBAmdtAQJlYwQCZ2oJAQJnaQADCQABAgUCZ2oCCkJ5dGVWZWN0b3IEAmduBQJnagkAAAIIBQJlYw9jYWxsZXJQdWJsaWNLZXkFAmduAwkAAQIFAmdqAgRVbml0CQAAAggFAmVjBmNhbGxlcgUEdGhpcwkAAgECC01hdGNoIGVycm9yAQJnbwECZWMEAmdqCQECZ2kAAwkAAQIFAmdqAgpCeXRlVmVjdG9yBAJnbgUCZ2oDCQAAAggFAmVjD2NhbGxlclB1YmxpY0tleQUCZ24GBQJnbAMJAAECBQJnagIEVW5pdAMJAAACCAUCZWMGY2FsbGVyBQR0aGlzBgUCZ2wJAAIBAgtNYXRjaCBlcnJvchwCZWMBC2NvbnN0cnVjdG9yAQFZBAJldgkBAmdvAQUCZWMDCQAAAgUCZXYFAmV2CQDMCAIJAQtTdHJpbmdFbnRyeQIJAQFZAAUBWQUDbmlsCQACAQIkU3RyaWN0IHZhbHVlIGlzIG5vdCBlcXVhbCB0byBpdHNlbGYuAmVjAQpzZXRNYW5hZ2VyAQJncAQCZXYJAQJnbwEFAmVjAwkAAAIFAmV2BQJldgQCZ3EJANkEAQUCZ3ADCQAAAgUCZ3EFAmdxCQDMCAIJAQtTdHJpbmdFbnRyeQIJAQJhYQAFAmdwBQNuaWwJAAIBAiRTdHJpY3QgdmFsdWUgaXMgbm90IGVxdWFsIHRvIGl0c2VsZi4JAAIBAiRTdHJpY3QgdmFsdWUgaXMgbm90IGVxdWFsIHRvIGl0c2VsZi4CZWMBDmNvbmZpcm1NYW5hZ2VyAAQCY3QJAQJnawAEAmdyAwkBCWlzRGVmaW5lZAEFAmN0BgkAAgECEk5vIHBlbmRpbmcgbWFuYWdlcgMJAAACBQJncgUCZ3IEAmdzAwkAAAIIBQJlYw9jYWxsZXJQdWJsaWNLZXkJAQV2YWx1ZQEFAmN0BgkAAgECG1lvdSBhcmUgbm90IHBlbmRpbmcgbWFuYWdlcgMJAAACBQJncwUCZ3MJAMwIAgkBC1N0cmluZ0VudHJ5AgkBAVoACQDYBAEJAQV2YWx1ZQEFAmN0CQDMCAIJAQtEZWxldGVFbnRyeQEJAQJhYQAFA25pbAkAAgECJFN0cmljdCB2YWx1ZSBpcyBub3QgZXF1YWwgdG8gaXRzZWxmLgkAAgECJFN0cmljdCB2YWx1ZSBpcyBub3QgZXF1YWwgdG8gaXRzZWxmLgJlYwEDcHV0AgJndAJndQQCZ3YJAQJicgAEAmd3CQETdmFsdWVPckVycm9yTWVzc2FnZQIJAKYIAQkAkQMCBQJndgUBQwIKV3Igc3QgYWRkcgQCZ3gJARN2YWx1ZU9yRXJyb3JNZXNzYWdlAgkApggBCQCRAwIFAmd2BQFFAgpXciBzbCBhZGRyAwkAZgIAAAUCZ3QJAAIBAg5Xcm9uZyBzbGlwcGFnZQMJAQIhPQIJAJADAQgFAmVjCHBheW1lbnRzAAIJAAIBAgwyIHBtbnRzIGV4cGQEAmd5CQC2AgEICQEFdmFsdWUBCQCRAwIIBQJlYwhwYXltZW50cwAABmFtb3VudAQCZ3oJALYCAQgJAQV2YWx1ZQEJAJEDAggFAmVjCHBheW1lbnRzAAEGYW1vdW50BAJlTQkAuAICCQC2AgEJAQJiTQEJAQJiZAEFAmJsBQJneQMJAAACBQJlTQUCZU0EAmVOCQC4AgIJALYCAQkBAmJNAQkBAmJkAQUCYm0FAmd6AwkAAAIFAmVOBQJlTgQCZU8JALYCAQgJAQV2YWx1ZQEJAOwHAQUCYmsIcXVhbnRpdHkDCQAAAgUCZU8FAmVPBAJlUAkBAmVJAwUCZ3kFAmd6CQC2AgEAAAMJAAACBQJlUAUCZVAEAmdBCQECZmkKCQClCAEIBQJlYwZjYWxsZXIJANgEAQgFAmVjDXRyYW5zYWN0aW9uSWQJAQ9BdHRhY2hlZFBheW1lbnQCCAkBBXZhbHVlAQkAkQMCCAUCZWMIcGF5bWVudHMAAAdhc3NldElkCAkBBXZhbHVlAQkAkQMCCAUCZWMIcGF5bWVudHMAAAZhbW91bnQJAJEDAggFAmVjCHBheW1lbnRzAAEFAmd0BgcGAAACAAQCZEUIBQJnQQJfMgQCZ0IIBQJnQQJfNwQCY1YIBQJnQQJfOQQCZEYIBQJnQQNfMTAEAmRHCAUCZ0EDXzExBAJjRAgFAmdBA18xMgQCY0UIBQJnQQNfMTMEAmRyCQD8BwQFAmFQAgRlbWl0CQDMCAIFAmRFBQNuaWwFA25pbAMJAAACBQJkcgUCZHIEAmdDBAJnagUCZHIDCQABAgUCZ2oCB0FkZHJlc3MEAmdEBQJnagkA/AcEBQJnRAIEZW1pdAkAzAgCBQJkRQUDbmlsBQNuaWwFBHVuaXQDCQAAAgUCZ0MFAmdDBAJnRQMJAGYCBQJkRgAACQD8BwQFAmd4AgNwdXQFA25pbAkAzAgCCQEPQXR0YWNoZWRQYXltZW50AgUCY0QFAmRGBQNuaWwFA25pbAMJAAACBQJnRQUCZ0UEAmdGAwkAZgIFAmRHAAAJAPwHBAUCZ3gCA3B1dAUDbmlsCQDMCAIJAQ9BdHRhY2hlZFBheW1lbnQCBQJjRQUCZEcFA25pbAUDbmlsAwkAAAIFAmdGBQJnRgQCZ0cDBQJndQQCZ0gJAPwHBAUCZ3cCBXN0YWtlBQNuaWwJAMwIAgkBD0F0dGFjaGVkUGF5bWVudAIFAmdCBQJkRQUDbmlsAwkAAAIFAmdIBQJnSAUDbmlsCQACAQIkU3RyaWN0IHZhbHVlIGlzIG5vdCBlcXVhbCB0byBpdHNlbGYuCQDMCAIJAQ5TY3JpcHRUcmFuc2ZlcgMIBQJlYwZjYWxsZXIFAmRFBQJnQgUDbmlsBAJnSQkBAmVRAwAAAAAAAAQCZ2cIBQJnSQJfMQQCZUgIBQJnSQJfMgQCZ0oDCQDAAgIFAmVIBQJlUAYJAQJhTQEJALkJAgkAzAgCAiJ1cGRhdGVkIERMcCBsb3dlciB0aGFuIGN1cnJlbnQgRExwCQDMCAIJAKYDAQUCZU0JAMwIAgkApgMBBQJlTgkAzAgCCQCmAwEFAmVPCQDMCAIJAKYDAQUCZVAJAMwIAgkApgMBBQJlSAkAzAgCCQCkAwEFAmRGCQDMCAIJAKQDAQUCZEcFA25pbAIBIAMJAAACBQJnSgUCZ0oEAmdLCAkBBXZhbHVlAQkA7AcBBQJiawhxdWFudGl0eQMJAAACBQJnSwUCZ0sJAM4IAgkAzggCBQJjVgUCZ0cFAmdnCQACAQIkU3RyaWN0IHZhbHVlIGlzIG5vdCBlcXVhbCB0byBpdHNlbGYuCQACAQIkU3RyaWN0IHZhbHVlIGlzIG5vdCBlcXVhbCB0byBpdHNlbGYuCQACAQIkU3RyaWN0IHZhbHVlIGlzIG5vdCBlcXVhbCB0byBpdHNlbGYuCQACAQIkU3RyaWN0IHZhbHVlIGlzIG5vdCBlcXVhbCB0byBpdHNlbGYuCQACAQIkU3RyaWN0IHZhbHVlIGlzIG5vdCBlcXVhbCB0byBpdHNlbGYuCQACAQIkU3RyaWN0IHZhbHVlIGlzIG5vdCBlcXVhbCB0byBpdHNlbGYuCQACAQIkU3RyaWN0IHZhbHVlIGlzIG5vdCBlcXVhbCB0byBpdHNlbGYuCQACAQIkU3RyaWN0IHZhbHVlIGlzIG5vdCBlcXVhbCB0byBpdHNlbGYuCQACAQIkU3RyaWN0IHZhbHVlIGlzIG5vdCBlcXVhbCB0byBpdHNlbGYuCQACAQIkU3RyaWN0IHZhbHVlIGlzIG5vdCBlcXVhbCB0byBpdHNlbGYuAmVjAQtwdXRPbmVUa25WMgICZksCZ3UEAmdMCgACYVIJAPwHBAUCYVACKGlzUG9vbE9uZVRva2VuT3BlcmF0aW9uc0Rpc2FibGVkUkVBRE9OTFkJAMwIAgkApQgBBQR0aGlzBQNuaWwFA25pbAMJAAECBQJhUgIHQm9vbGVhbgUCYVIJAAIBCQCsAgIJAAMBBQJhUgIcIGNvdWxkbid0IGJlIGNhc3QgdG8gQm9vbGVhbgQCZ00DAwMJAQJhVQAGCQAAAgUCYmoFAXEGCQAAAgUCYmoFAXMGBQJnTAQCZ04JAMwIAgMDCQEBIQEFAmdNBgkBAmdtAQUCZWMGCQECYU0BAiFwdXQgb3BlcmF0aW9uIGlzIGJsb2NrZWQgYnkgYWRtaW4JAMwIAgMJAAACCQCQAwEIBQJlYwhwYXltZW50cwABBgkBAmFNAQIeZXhhY3RseSAxIHBheW1lbnQgYXJlIGV4cGVjdGVkBQNuaWwDCQAAAgUCZ04FAmdOBAJjRAkA2AQBCQEFdmFsdWUBBQJibAQCY0UJANgEAQkBBXZhbHVlAQUCYm0EAmNDBQJiawQCZk8FAmJuBAJmUAUCYm8EAmNCAwkAAAIIBQJlYwZjYWxsZXIFBHRoaXMIBQJlYwxvcmlnaW5DYWxsZXIIBQJlYwZjYWxsZXIEAmZoCQEFdmFsdWUBCQCRAwIIBQJlYwhwYXltZW50cwAABAJjegkA2AQBCQEFdmFsdWUBCAUCZmgHYXNzZXRJZAQCZGYIBQJmaAZhbW91bnQEAmVQAwkAAAIIBQJmaAdhc3NldElkBQJibAkBAmVJAwkAtgIBBQJkZgkAtgIBAAAJALYCAQAACQECZUkDCQC2AgEAAAkAtgIBBQJkZgkAtgIBAAADCQAAAgUCZVAFAmVQBAJnTwkBAmZtBQUCZGYFAmN6CQClCAEFAmNCCQDYBAEIBQJlYw10cmFuc2FjdGlvbklkBgMJAAACBQJnTwUCZ08EAmN3CAUCZ08CXzMEAmNWCAUCZ08CXzIEAmdQCAUCZ08CXzEEAmRFAwMJAGYCBQJmSwAACQBmAgUCZksFAmdQBwkBAmFNAQkAuQkCCQDMCAICH2Ftb3VudCB0byByZWNlaXZlIGlzIGxlc3MgdGhhbiAJAMwIAgkApAMBBQJmSwUDbmlsAgAFAmdQBAJnQQkA/AcEBQJhUAIEZW1pdAkAzAgCBQJkRQUDbmlsBQNuaWwDCQAAAgUCZ0EFAmdBBAJnQwQCZ2oFAmdBAwkAAQIFAmdqAgdBZGRyZXNzBAJnRAUCZ2oJAPwHBAUCZ0QCBGVtaXQJAMwIAgUCZEUFA25pbAUDbmlsBQR1bml0AwkAAAIFAmdDBQJnQwQCZ0cDBQJndQQCZ0gJAPwHBAUCYnQCBXN0YWtlBQNuaWwJAMwIAgkBD0F0dGFjaGVkUGF5bWVudAIFAmNDBQJkRQUDbmlsAwkAAAIFAmdIBQJnSAUDbmlsCQACAQIkU3RyaWN0IHZhbHVlIGlzIG5vdCBlcXVhbCB0byBpdHNlbGYuCQDMCAIJAQ5TY3JpcHRUcmFuc2ZlcgMIBQJlYwZjYWxsZXIFAmRFBQJjQwUDbmlsBAJnYQMJAGYCBQJjdwAACQDMCAIJAQ5TY3JpcHRUcmFuc2ZlcgMFAmFXBQJjdwkA2QQBBQJjegUDbmlsBQNuaWwEAmdRAwkAAAIFBHRoaXMFAmFXCQCUCgIAAAAABAJnUgMJAAACCAUCZmgHYXNzZXRJZAUCYmwGBwMFAmdSCQCUCgIJAQEtAQUCY3cAAAkAlAoCAAAJAQEtAQUCY3cEAmVSCAUCZ1ECXzEEAmVTCAUCZ1ECXzIEAmdTCQECZVEDBQJlUgUCZVMAAAQCZ2cIBQJnUwJfMQQCZUgIBQJnUwJfMgQCZ2gJAQJlVQIFAmVQBQJlSAMJAAACBQJnaAUCZ2gJAJQKAgkAzggCCQDOCAIJAM4IAgUCY1YFAmdHBQJnYQUCZ2cFAmRFCQACAQIkU3RyaWN0IHZhbHVlIGlzIG5vdCBlcXVhbCB0byBpdHNlbGYuCQACAQIkU3RyaWN0IHZhbHVlIGlzIG5vdCBlcXVhbCB0byBpdHNlbGYuCQACAQIkU3RyaWN0IHZhbHVlIGlzIG5vdCBlcXVhbCB0byBpdHNlbGYuCQACAQIkU3RyaWN0IHZhbHVlIGlzIG5vdCBlcXVhbCB0byBpdHNlbGYuCQACAQIkU3RyaWN0IHZhbHVlIGlzIG5vdCBlcXVhbCB0byBpdHNlbGYuCQACAQIkU3RyaWN0IHZhbHVlIGlzIG5vdCBlcXVhbCB0byBpdHNlbGYuAmVjAQpwdXRGb3JGcmVlAQJnVAMJAGYCAAAFAmdUCQACAQIKV3Jvbmcgc2xwZwMJAQIhPQIJAJADAQgFAmVjCHBheW1lbnRzAAIJAAIBAgwyIHBtbnRzIGV4cGQEAmdVCQECZmkKCQClCAEIBQJlYwZjYWxsZXIJANgEAQgFAmVjDXRyYW5zYWN0aW9uSWQJAQ9BdHRhY2hlZFBheW1lbnQCCAkBBXZhbHVlAQkAkQMCCAUCZWMIcGF5bWVudHMAAAdhc3NldElkCAkBBXZhbHVlAQkAkQMCCAUCZWMIcGF5bWVudHMAAAZhbW91bnQJAJEDAggFAmVjCHBheW1lbnRzAAEFAmdUBwcGAAACAAQCY1YIBQJnVQJfOQQCZ3kJALYCAQgJAQV2YWx1ZQEJAJEDAggFAmVjCHBheW1lbnRzAAAGYW1vdW50BAJnegkAtgIBCAkBBXZhbHVlAQkAkQMCCAUCZWMIcGF5bWVudHMAAQZhbW91bnQEAmVQCQECZUkDBQJneQUCZ3oJALYCAQAAAwkAAAIFAmVQBQJlUAQCZ1YJAQJlUQMAAAAAAAAEAmdnCAUCZ1YCXzEEAmVICAUCZ1YCXzIEAmdoCQECZVUCBQJlUAUCZUgDCQAAAgUCZ2gFAmdoCQDOCAIFAmNWBQJnZwkAAgECJFN0cmljdCB2YWx1ZSBpcyBub3QgZXF1YWwgdG8gaXRzZWxmLgkAAgECJFN0cmljdCB2YWx1ZSBpcyBub3QgZXF1YWwgdG8gaXRzZWxmLgJlYwEDZ2V0AAQCZVAJAQJlSQMJALYCAQAACQC2AgEAAAkAtgIBAAADCQAAAgUCZVAFAmVQBAJkcgkBAmZnAQUCZWMEAmdXCAUCZHICXzEEAmNVCAUCZHICXzIEAmRmCAUCZHICXzMEAmN6CAUCZHICXzQEAmNWCAUCZHICXzUEAmV3CQD8BwQFAmFQAgRidXJuCQDMCAIFAmRmBQNuaWwJAMwIAgkBD0F0dGFjaGVkUGF5bWVudAIFAmN6BQJkZgUDbmlsAwkAAAIFAmV3BQJldwQCZ1gJAQJlUQMJAQEtAQUCZ1cJAQEtAQUCY1UAAAQCZ2cIBQJnWAJfMQQCZUgIBQJnWAJfMgQCZ2gJAQJlVQIFAmVQBQJlSAMJAAACBQJnaAUCZ2gJAM4IAgUCY1YFAmdnCQACAQIkU3RyaWN0IHZhbHVlIGlzIG5vdCBlcXVhbCB0byBpdHNlbGYuCQACAQIkU3RyaWN0IHZhbHVlIGlzIG5vdCBlcXVhbCB0byBpdHNlbGYuCQACAQIkU3RyaWN0IHZhbHVlIGlzIG5vdCBlcXVhbCB0byBpdHNlbGYuAmVjAQtnZXRPbmVUa25WMgICZkoCZksEAmdMCgACYVIJAPwHBAUCYVACKGlzUG9vbE9uZVRva2VuT3BlcmF0aW9uc0Rpc2FibGVkUkVBRE9OTFkJAMwIAgkApQgBBQR0aGlzBQNuaWwFA25pbAMJAAECBQJhUgIHQm9vbGVhbgUCYVIJAAIBCQCsAgIJAAMBBQJhUgIcIGNvdWxkbid0IGJlIGNhc3QgdG8gQm9vbGVhbgQCZ1kDAwkBAmFVAAYJAAACBQJiagUBcwYFAmdMBAJnTgkAzAgCAwMJAQEhAQUCZ1kGCQECZ20BBQJlYwYJAQJhTQECIWdldCBvcGVyYXRpb24gaXMgYmxvY2tlZCBieSBhZG1pbgkAzAgCAwkAAAIJAJADAQgFAmVjCHBheW1lbnRzAAEGCQECYU0BAh5leGFjdGx5IDEgcGF5bWVudCBhcmUgZXhwZWN0ZWQFA25pbAMJAAACBQJnTgUCZ04EAmdaCQECZkkGBQJmSgUCZksIBQJlYwhwYXltZW50cwgFAmVjBmNhbGxlcggFAmVjDG9yaWdpbkNhbGxlcggFAmVjDXRyYW5zYWN0aW9uSWQEAmNWCAUCZ1oCXzEEAmZUCAUCZ1oCXzIJAJQKAgUCY1YFAmZUCQACAQIkU3RyaWN0IHZhbHVlIGlzIG5vdCBlcXVhbCB0byBpdHNlbGYuAmVjAQpyZWZyZXNoRExwAAQCaGEJAQt2YWx1ZU9yRWxzZQIJAJ8IAQUCYXEAAAQCaGIDCQBnAgkAZQIFBmhlaWdodAUCaGEFAmF0BQR1bml0CQECYU0BCQC5CQIJAMwIAgkApAMBBQJhdAkAzAgCAi8gYmxvY2tzIGhhdmUgbm90IHBhc3NlZCBzaW5jZSB0aGUgcHJldmlvdXMgY2FsbAUDbmlsAgADCQAAAgUCaGIFAmhiBAJmYgkBE3ZhbHVlT3JFcnJvck1lc3NhZ2UCCQCoAwEJAQt2YWx1ZU9yRWxzZQIJAJ0IAgUEdGhpcwUCYXACATAJAQJhTwECC2ludmFsaWQgZExwBAJoYwkBAmVRAwAAAAAAAAQCaGQIBQJoYwJfMQQCZUgIBQJoYwJfMgQCZVQDCQECIT0CBQJmYgUCZUgFAmhkCQECYU0BAhJub3RoaW5nIHRvIHJlZnJlc2gJAJQKAgUCZVQJAKYDAQUCZUgJAAIBAiRTdHJpY3QgdmFsdWUgaXMgbm90IGVxdWFsIHRvIGl0c2VsZi4CZWMBE2dldE9uZVRrblYyUkVBRE9OTFkCAmZKAmhlBAJjRAkA2AQBCQEFdmFsdWUBBQJibAQCY0UJANgEAQkBBXZhbHVlAQUCYm0EAmNDCQDYBAEJAQV2YWx1ZQEFAmJrBAJkTQkAzAgCCQC2AgEJAQJiTQEFAmNECQDMCAIJALYCAQkBAmJNAQUCY0UFA25pbAQCZUcJALYCAQgJARN2YWx1ZU9yRXJyb3JNZXNzYWdlAgkA7AcBCQDZBAEFAmNDAhBpbnZhbGlkIGxwIGFzc2V0CHF1YW50aXR5BAJjYQkBAmRMAQUCZE0EAmJaCQC4AgIFAmNhCQC8AgMJALYCAQUCaGUFAmNhBQJlRwQCaGYDCQAAAgUCZkoFAmNEAAADCQAAAgUCZkoFAmNFAAEJAAIBAhRpbnZhbGlkIG91dCBhc3NldCBpZAQCaGcJAQJlcQMFAmRNBQJoZgUCYloEAmhoCQC4AgIJAJEDAgUCZE0FAmhmBQJoZwQCaGkJAJYDAQkAzAgCAAAJAMwIAgkAoAMBCQC4AgIFAmhoBQFmBQNuaWwEAmhqCQECY3UCBQJoaQUCYVMEAmZTCAUCaGoCXzEEAmN3CAUCaGoCXzIJAJQKAgUDbmlsCQCUCgIFAmZTBQJjdwJlYwEcZ2V0T25lVGtuVjJXaXRoQm9udXNSRUFET05MWQICZkoCaGUEAmNECQDYBAEJAQV2YWx1ZQEFAmJsBAJjRQkA2AQBCQEFdmFsdWUBBQJibQQCY0MJANgEAQkBBXZhbHVlAQUCYmsEAmNKCQECYk0BBQJjRAQCY0wJAQJiTQEFAmNFBAJoawoAAmFSCQD8BwQFBHRoaXMCE2dldE9uZVRrblYyUkVBRE9OTFkJAMwIAgUCZkoJAMwIAgUCaGUFA25pbAUDbmlsAwkAAQIFAmFSAgooSW50LCBJbnQpBQJhUgkAAgEJAKwCAgkAAwEFAmFSAh8gY291bGRuJ3QgYmUgY2FzdCB0byAoSW50LCBJbnQpBAJmUwgFAmhrAl8xBAJjdwgFAmhrAl8yBAJkcgkBAmN4BAIABQJjQwUCaGUFBHRoaXMEAmNUCAUCZHICXzEEAmNVCAUCZHICXzIEAmhsCQBkAgUCY1QFAmNVBAJmSAMJAAACBQJobAAAAwkAAAIFAmZTAAAAAAkAAgECF2JvbnVzIGNhbGN1bGF0aW9uIGVycm9yCQBrAwkAZQIFAmZTBQJobAUBYQUCaGwJAJQKAgUDbmlsCQCVCgMFAmZTBQJjdwUCZkgCZWMBCWdldE5vTGVzcwICaG0CaG4EAmRyCQECZmcBBQJlYwQCY1QIBQJkcgJfMQQCY1UIBQJkcgJfMgQCZGYIBQJkcgJfMwQCY3oIBQJkcgJfNAQCY1YIBQJkcgJfNQMJAGYCBQJobQUCY1QJAAIBCQCsAgIJAKwCAgkArAICAglGYWlsZWQ6ICAJAKQDAQUCY1QCAyA8IAkApAMBBQJobQMJAGYCBQJobgUCY1UJAAIBCQCsAgIJAKwCAgkArAICAghGYWlsZWQ6IAkApAMBBQJjVQIDIDwgCQCkAwEFAmhuBAJlUAkBAmVJAwkAtgIBAAAJALYCAQAACQC2AgEAAAMJAAACBQJlUAUCZVAEAmhvCQD8BwQFAmFQAgRidXJuCQDMCAIFAmRmBQNuaWwJAMwIAgkBD0F0dGFjaGVkUGF5bWVudAIFAmN6BQJkZgUDbmlsAwkAAAIFAmhvBQJobwQCaHAJAQJlUQMJAQEtAQUCY1QJAQEtAQUCY1UAAAQCZ2cIBQJocAJfMQQCZUgIBQJocAJfMgQCZ2gJAQJlVQIFAmVQBQJlSAMJAAACBQJnaAUCZ2gJAM4IAgUCY1YFAmdnCQACAQIkU3RyaWN0IHZhbHVlIGlzIG5vdCBlcXVhbCB0byBpdHNlbGYuCQACAQIkU3RyaWN0IHZhbHVlIGlzIG5vdCBlcXVhbCB0byBpdHNlbGYuCQACAQIkU3RyaWN0IHZhbHVlIGlzIG5vdCBlcXVhbCB0byBpdHNlbGYuAmVjAQ11bnN0YWtlQW5kR2V0AQJjdgQCaHEDCQECIT0CCQCQAwEIBQJlYwhwYXltZW50cwAACQACAQINTm8gcG1udHMgZXhwZAYDCQAAAgUCaHEFAmhxBAJocgkBAmJyAAQCZ0IFAmJrBAJocwkBE3ZhbHVlT3JFcnJvck1lc3NhZ2UCCQCmCAEJAJEDAgUCaHIFAUMCCldyIHN0IGFkZHIEAmVQCQECZUkDCQC2AgEAAAkAtgIBAAAJALYCAQAAAwkAAAIFAmVQBQJlUAQCaHQJAPwHBAUCaHMCB3Vuc3Rha2UJAMwIAgkA2AQBBQJnQgkAzAgCBQJjdgUDbmlsBQNuaWwDCQAAAgUCaHQFAmh0BAJkcgkBAmN4BAkA2AQBCAUCZWMNdHJhbnNhY3Rpb25JZAkA2AQBBQJnQgUCY3YIBQJlYwZjYWxsZXIEAmNUCAUCZHICXzEEAmNVCAUCZHICXzIEAmNICQENcGFyc2VJbnRWYWx1ZQEIBQJkcgJfOQQCY1YIBQJkcgNfMTAEAmh1AwMJAQJhVQAGCQAAAgUCY0gFAXMJAAIBCQCsAgICCUJsb2NrZWQ6IAkApAMBBQJjSAYDCQAAAgUCaHUFAmh1BAJodgkA/AcEBQJhUAIEYnVybgkAzAgCBQJjdgUDbmlsCQDMCAIJAQ9BdHRhY2hlZFBheW1lbnQCBQJnQgUCY3YFA25pbAMJAAACBQJodgUCaHYEAmh3CQECZVEDCQEBLQEFAmNUCQEBLQEFAmNVAAAEAmdnCAUCaHcCXzEEAmVICAUCaHcCXzIEAmdoCQECZVUCBQJlUAUCZUgDCQAAAgUCZ2gFAmdoCQDOCAIFAmNWBQJnZwkAAgECJFN0cmljdCB2YWx1ZSBpcyBub3QgZXF1YWwgdG8gaXRzZWxmLgkAAgECJFN0cmljdCB2YWx1ZSBpcyBub3QgZXF1YWwgdG8gaXRzZWxmLgkAAgECJFN0cmljdCB2YWx1ZSBpcyBub3QgZXF1YWwgdG8gaXRzZWxmLgkAAgECJFN0cmljdCB2YWx1ZSBpcyBub3QgZXF1YWwgdG8gaXRzZWxmLgkAAgECJFN0cmljdCB2YWx1ZSBpcyBub3QgZXF1YWwgdG8gaXRzZWxmLgkAAgECJFN0cmljdCB2YWx1ZSBpcyBub3QgZXF1YWwgdG8gaXRzZWxmLgJlYwETdW5zdGFrZUFuZEdldE5vTGVzcwMCaHgCaHkCaG4EAmdZAwkBAmFVAAYJAAACBQJiagUBcwQCZ04JAMwIAgMJAQEhAQUCZ1kGCQACAQIhZ2V0IG9wZXJhdGlvbiBpcyBibG9ja2VkIGJ5IGFkbWluCQDMCAIDCQAAAgkAkAMBCAUCZWMIcGF5bWVudHMAAAYJAAIBAhhubyBwYXltZW50cyBhcmUgZXhwZWN0ZWQFA25pbAMJAAACBQJnTgUCZ04EAmVQCQECZUkDCQC2AgEAAAkAtgIBAAAJALYCAQAAAwkAAAIFAmVQBQJlUAQCaHQJAPwHBAUCYnQCB3Vuc3Rha2UJAMwIAgkA2AQBBQJiawkAzAgCBQJoeAUDbmlsBQNuaWwDCQAAAgUCaHQFAmh0BAJoegkBAmN4BAkA2AQBCAUCZWMNdHJhbnNhY3Rpb25JZAkA2AQBBQJiawUCaHgIBQJlYwZjYWxsZXIEAmNUCAUCaHoCXzEEAmNVCAUCaHoCXzIEAmNWCAUCaHoDXzEwBAJoQQkAzAgCAwkAZwIFAmNUBQJoeQYJAAIBCQC5CQIJAMwIAgIsYW1vdW50IGFzc2V0IGFtb3VudCB0byByZWNlaXZlIGlzIGxlc3MgdGhhbiAJAMwIAgkApAMBBQJoeQUDbmlsAgAJAMwIAgMJAGcCBQJjVQUCaG4GCQACAQkAuQkCCQDMCAICK3ByaWNlIGFzc2V0IGFtb3VudCB0byByZWNlaXZlIGlzIGxlc3MgdGhhbiAJAMwIAgkApAMBBQJobgUDbmlsAgAFA25pbAMJAAACBQJoQQUCaEEEAmhvCQD8BwQFAmFQAgRidXJuCQDMCAIFAmh4BQNuaWwJAMwIAgkBD0F0dGFjaGVkUGF5bWVudAIFAmJrBQJoeAUDbmlsAwkAAAIFAmhvBQJobwQCaEIJAQJlUQMJAQEtAQUCY1QJAQEtAQUCY1UAAAQCZ2cIBQJoQgJfMQQCZUgIBQJoQgJfMgQCZ2gJAQJlVQIFAmVQBQJlSAMJAAACBQJnaAUCZ2gJAM4IAgUCY1YFAmdnCQACAQIkU3RyaWN0IHZhbHVlIGlzIG5vdCBlcXVhbCB0byBpdHNlbGYuCQACAQIkU3RyaWN0IHZhbHVlIGlzIG5vdCBlcXVhbCB0byBpdHNlbGYuCQACAQIkU3RyaWN0IHZhbHVlIGlzIG5vdCBlcXVhbCB0byBpdHNlbGYuCQACAQIkU3RyaWN0IHZhbHVlIGlzIG5vdCBlcXVhbCB0byBpdHNlbGYuCQACAQIkU3RyaWN0IHZhbHVlIGlzIG5vdCBlcXVhbCB0byBpdHNlbGYuCQACAQIkU3RyaWN0IHZhbHVlIGlzIG5vdCBlcXVhbCB0byBpdHNlbGYuAmVjARV1bnN0YWtlQW5kR2V0T25lVGtuVjIDAmh4AmZK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clJFQURPTkxZCQJjeQJiVgJjWAJjWQJjWgJkYQJoTQJkYgJkYwkAlAoCBQNuaWwJAQJjVw0FAmN5BQJiVgUCY1gFAmNZBQJjWgUCZGEFAmhNBQJkYgUCZGMGBwAAAgACZWMBI2VzdGltYXRlR2V0T3BlcmF0aW9uV3JhcHBlclJFQURPTkxZBAJjeQJoTgJjQQJoTQQCZHIJAQJjeAQFAmN5BQJoTgUCY0EJARFAZXh0ck5hdGl2ZSgxMDYyKQEFAmhNCQCUCgIFA25pbAkAnAoKCAUCZHICXzEIBQJkcgJfMggFAmRyAl8zCAUCZHICXzQIBQJkcgJfNQgFAmRyAl82CAUCZHICXzcJAKYDAQgFAmRyAl84CAUCZHICXzkIBQJkcgNfMTABAmhPAQJoUAAEAmhRBAJnagkBAmdpAAMJAAECBQJnagIKQnl0ZVZlY3RvcgQCZ24FAmdqBQJnbgMJAAECBQJnagIEVW5pdAgFAmhPD3NlbmRlclB1YmxpY0tleQkAAgECC01hdGNoIGVycm9yBAJnagUCaE8DCQABAgUCZ2oCBU9yZGVyBAJlWAUCZ2oEAmhSCQECYVYABAJoUwkBAmVXAQUCZVgEAmhUCQD0AwMIBQJlWAlib2R5Qnl0ZXMJAJEDAggFAmVYBnByb29mcwAACAUCZVgPc2VuZGVyUHVibGljS2V5BAJoVQkA9AMDCAUCZVgJYm9keUJ5dGVzCQCRAwIIBQJlWAZwcm9vZnMAAQUCaFIDAwMFAmhTBQJoVAcFAmhVBwYJAQJhRQMFAmhTBQJoVAUCaFUDCQABAgUCZ2oCFFNldFNjcmlwdFRyYW5zYWN0aW9uBAJkUAUCZ2oDCQD0AwMIBQJoTwlib2R5Qnl0ZXMJAJEDAggFAmhPBnByb29mcwAABQJoUQYEAmhWCQD2AwEJAQV2YWx1ZQEIBQJkUAZzY3JpcHQEAmhXCQDbBAEJAQV2YWx1ZQEJAJ0IAgUCYVAJAQJhQwAEAmhYCQDxBwEFBHRoaXMDCQAAAgUCaFcFAmhWCQECIT0CBQJoWAUCaFYHCQD0AwMIBQJoTwlib2R5Qnl0ZXMJAJEDAggFAmhPBnByb29mcwAABQJoUaxkKrk=", "chainId": 84, "height": 2411941, "applicationStatus": "succeeded", "spentComplexity": 0 } View: original | compacted Prev: G652on5HaU5QzHkU3KEz1qUD9DwQz18dsvLF6ytBzjVd Next: 8dtSaHGAGcuzAyz1DxabxEALnhyM4N2txjobYBZAwBQw Diff:
OldNewDifferences
571571
572572
573573 func eD (eE,eF,eG) = {
574- let eH = fraction(dL([K(eE, toBigInt(bn)), K(eF, toBigInt(bo))]), f, eG)
574+ let eH = fraction(dL([K(eE, toBigInt(bn)), K(eF, toBigInt(bo))]), c, eG)
575575 if ((eG == e))
576576 then e
577577 else eH
Full:
OldNewDifferences
11 {-# STDLIB_VERSION 6 #-}
22 {-# SCRIPT_TYPE ACCOUNT #-}
33 {-# CONTENT_TYPE DAPP #-}
44 let a = 100000000
55
66 let b = toBigInt(100000000)
77
88 let c = toBigInt(1000000000000000000)
99
1010 let d = toBigInt(0)
1111
1212 let e = toBigInt(0)
1313
1414 let f = toBigInt(1)
1515
1616 let g = toBigInt(2)
1717
1818 let h = toBigInt(3)
1919
2020 let i = toBigInt(4)
2121
2222 let j = toBigInt((a - ((a * 1) / a)))
2323
2424 let k = "WAVES"
2525
2626 let l = "100"
2727
2828 let m = "1"
2929
3030 let n = "__"
3131
3232 let o = ""
3333
3434 let p = 1
3535
3636 let q = 2
3737
3838 let r = 3
3939
4040 let s = 4
4141
4242 let t = 1
4343
4444 let u = 2
4545
4646 let v = 3
4747
4848 let w = 4
4949
5050 let x = 5
5151
5252 let y = 6
5353
5454 let z = 7
5555
5656 let A = 8
5757
5858 let B = 9
5959
6060 let C = 1
6161
6262 let D = 6
6363
6464 let E = 7
6565
6666 let F = 10
6767
6868 let G = fraction(10, a, 10000)
6969
7070 func H (I,J) = fraction(toBigInt(I), c, toBigInt(J))
7171
7272
7373 func K (I,J) = fraction(I, c, J)
7474
7575
7676 func L (M,N) = toInt(fraction(M, toBigInt(N), c))
7777
7878
7979 func O (M,N,P) = toInt(fraction(M, toBigInt(N), c, P))
8080
8181
8282 func Q (I,J) = fraction(I, c, toBigInt(J))
8383
8484
8585 func R (M,N) = fraction(M, toBigInt(N), c)
8686
8787
8888 func S (T,U,V) = fraction(T, U, V)
8989
9090
9191 func W (M) = if ((d > M))
9292 then -(M)
9393 else M
9494
9595
9696 func X (M) = if ((d > M))
9797 then -(M)
9898 else M
9999
100100
101101 func Y () = "%s__factoryContract"
102102
103103
104104 func Z () = "%s__managerPublicKey"
105105
106106
107107 func aa () = "%s__pendingManagerPublicKey"
108108
109109
110110 func ab () = "%s%s__price__last"
111111
112112
113113 func ac (ad,ae) = makeString(["%s%s%d%d__price__history", toString(ad), toString(ae)], n)
114114
115115
116116 func af (ag,ah) = ((("%s%s%s__P__" + ag) + "__") + ah)
117117
118118
119119 func ai (ag,ah) = ((("%s%s%s__G__" + ag) + "__") + ah)
120120
121121
122122 func aj () = "%s__amountAsset"
123123
124124
125125 func ak () = "%s__priceAsset"
126126
127127
128128 func al () = "%s__amp"
129129
130130
131131 func am () = "%s__addonAddr"
132132
133133
134134 let an = "%s__fee"
135135
136136 let ao = valueOrElse(getInteger(this, an), G)
137137
138138 let ap = makeString(["%s", "dLp"], n)
139139
140140 let aq = makeString(["%s", "dLpRefreshedHeight"], n)
141141
142142 let ar = makeString(["%s", "refreshDLpDelay"], n)
143143
144144 let as = 1
145145
146146 let at = valueOrElse(getInteger(this, ar), as)
147147
148148 func au () = "%s__factoryConfig"
149149
150150
151151 func av () = "%s%s__matcher__publicKey"
152152
153153
154154 func aw (ax,ay) = (((("%d%d%s__" + ax) + "__") + ay) + "__config")
155155
156156
157157 func az (aA) = ("%s%s%s__mappings__baseAsset2internalId__" + aA)
158158
159159
160160 func aB () = "%s__shutdown"
161161
162162
163163 func aC () = "%s__allowedLpStableScriptHash"
164164
165165
166166 func aD () = "%s__feeCollectorAddress"
167167
168168
169169 func aE (aF,aG,aH) = throw(((((("Failed: ordValid=" + toString(aF)) + " sndrValid=") + toString(aG)) + " mtchrValid=") + toString(aH)))
170170
171171
172172 func aI (aJ,aK) = valueOrErrorMessage(getString(aJ, aK), makeString(["mandatory ", toString(aJ), ".", aK, " not defined"], ""))
173173
174174
175175 func aL (aJ,aK) = valueOrErrorMessage(getInteger(aJ, aK), makeString(["mandatory ", toString(aJ), ".", aK, " not defined"], ""))
176176
177177
178178 func aM (aN) = throw(makeString(["lp_stable.ride:", aN], " "))
179179
180180
181181 func aO (aN) = makeString(["lp_stable.ride:", aN], " ")
182182
183183
184184 let aP = addressFromStringValue(aI(this, Y()))
185185
186186 let aQ = {
187187 let aR = invoke(aP, "getInFeeREADONLY", [toString(this)], nil)
188188 if ($isInstanceOf(aR, "Int"))
189189 then aR
190190 else throw(($getType(aR) + " couldn't be cast to Int"))
191191 }
192192
193193 let aS = {
194194 let aR = invoke(aP, "getOutFeeREADONLY", [toString(this)], nil)
195195 if ($isInstanceOf(aR, "Int"))
196196 then aR
197197 else throw(($getType(aR) + " couldn't be cast to Int"))
198198 }
199199
200200 let aT = aI(this, al())
201201
202202 func aU () = valueOrElse(getBoolean(aP, aB()), false)
203203
204204
205205 func aV () = fromBase58String(aI(aP, av()))
206206
207207
208208 let aW = addressFromStringValue(aI(aP, aD()))
209209
210210 func aX () = {
211211 let aY = aI(this, aj())
212212 let aZ = aI(this, ak())
213213 let ba = aL(aP, az(aZ))
214214 let ax = aL(aP, az(aY))
215215 split(aI(aP, aw(toString(ax), toString(ba))), n)
216216 }
217217
218218
219219 func bb (bc) = if ((bc == k))
220220 then unit
221221 else fromBase58String(bc)
222222
223223
224224 func bd (bc) = if ((bc == unit))
225225 then k
226226 else toBase58String(value(bc))
227227
228228
229229 func be (bf) = $Tuple9(addressFromStringValue(bf[t]), parseIntValue(bf[u]), fromBase58String(bf[v]), bb(bf[w]), bb(bf[x]), parseIntValue(bf[y]), parseIntValue(bf[z]), fromBase58String(bf[A]), fromBase58String(bf[B]))
230230
231231
232232 let bg = be(aX())
233233
234234 let bh = bg
235235
236236 let bi = bh._1
237237
238238 let bj = bh._2
239239
240240 let bk = bh._3
241241
242242 let bl = bh._4
243243
244244 let bm = bh._5
245245
246246 let bn = bh._6
247247
248248 let bo = bh._7
249249
250250 let bp = bh._8
251251
252252 let bq = bh._9
253253
254254 func br () = split(aI(aP, au()), n)
255255
256256
257257 let bs = br()
258258
259259 let bt = valueOrErrorMessage(addressFromString(bs[C]), "Invalid staking contract address")
260260
261261 let bu = valueOrErrorMessage(addressFromString(bs[E]), "Invalid slipage contract address")
262262
263263 let bv = valueOrErrorMessage(addressFromString(bs[F]), "Invalid gwx contract address")
264264
265265 let bw = valueOrErrorMessage(addressFromString(bs[D]), "Invalid gwx contract address")
266266
267267 func bx (by,bz,bA,bB,bC,bD,bE,bF,bG,bH) = makeString(["%d%d%d%d%d%d%d%d%d%d", toString(by), toString(bz), toString(bA), toString(bB), toString(bC), toString(bD), toString(bE), toString(bF), toString(bG), toString(bH)], n)
268268
269269
270270 func bI (bJ,bK,bL,bB,bE,bF) = makeString(["%d%d%d%d%d%d", toString(bJ), toString(bK), toString(bL), toString(bB), toString(bE), toString(bF)], n)
271271
272272
273273 func bM (bN) = if ((bN == "WAVES"))
274274 then wavesBalance(this).available
275275 else assetBalance(this, fromBase58String(bN))
276276
277277
278278 func bO (bP,bQ) = fraction(bP, c, bQ)
279279
280280
281281 func bR (bP,bQ,P) = fraction(bP, c, bQ, P)
282282
283283
284284 func bS (bT,bU,bV) = {
285285 let bW = fraction((bT - bU), b, bU)
286286 let bX = ((bV - W(bW)) > d)
287287 if (!(bX))
288288 then throw(("Big slpg: " + toString(bW)))
289289 else $Tuple2(bX, min([bT, bU]))
290290 }
291291
292292
293293 func bY (bZ,ca,cb) = {
294294 let bW = fraction(ca, b, bZ)
295295 let cc = (cb > bW)
296296 if (if (cc)
297297 then true
298298 else (ca > bZ))
299299 then throw(((((((toString(ca) + " ") + toString(bZ)) + " ") + toString(bW)) + " ") + toString(cb)))
300300 else cc
301301 }
302302
303303
304304 func cd (ce,cf,cg,ch) = {
305305 let ci = H(cg, ce)
306306 let cj = H(ch, cf)
307307 bO(cj, ci)
308308 }
309309
310310
311311 func ck (cg,ch,cl) = {
312312 let cm = bn
313313 let cn = bo
314314 let co = cd(cm, cn, cg, ch)
315315 let bQ = H(cg, cm)
316316 let bP = H(ch, cn)
317317 let cp = H(cl, a)
318318 let cq = bO(bQ, cp)
319319 let cr = bO(bP, cp)
320320 [co, cq, cr]
321321 }
322322
323323
324324 func cs (cg,ch,cl) = {
325325 let ct = ck(cg, ch, cl)
326326 [L(ct[0], a), L(ct[1], a), L(ct[2], a)]
327327 }
328328
329329
330330 func cu (cv,ao) = {
331331 let cw = if ((ao == 0))
332332 then 0
333333 else fraction(cv, ao, a)
334334 $Tuple2((cv - cw), cw)
335335 }
336336
337337
338338 func cx (cy,cz,cA,cB) = {
339339 let cC = bk
340340 let cD = toBase58String(value(bl))
341341 let cE = toBase58String(value(bm))
342342 let cF = bn
343343 let cG = bo
344344 let cH = toString(bj)
345345 let cI = valueOrErrorMessage(assetInfo(cC), "Wrong LP id").quantity
346346 if ((toBase58String(cC) != cz))
347347 then throw("Wrong pmt asset")
348348 else {
349349 let cJ = bM(cD)
350350 let cK = H(cJ, cF)
351351 let cL = bM(cE)
352352 let cM = H(cL, cG)
353353 let cN = bO(cM, cK)
354354 let cO = L(cN, a)
355355 let cP = H(cA, a)
356356 let cQ = H(cI, a)
357357 let cR = fraction(cK, cP, cQ)
358358 let cS = fraction(cM, cP, cQ)
359359 let cT = O(cR, cF, FLOOR)
360360 let cU = O(cS, cG, FLOOR)
361361 let cV = if ((cy == ""))
362362 then nil
363363 else [ScriptTransfer(cB, cT, if ((cD == "WAVES"))
364364 then unit
365365 else fromBase58String(cD)), ScriptTransfer(cB, cU, if ((cE == "WAVES"))
366366 then unit
367367 else fromBase58String(cE)), StringEntry(ai(toString(cB), cy), bI(cT, cU, cA, cO, height, lastBlock.timestamp)), IntegerEntry(ab(), cO), IntegerEntry(ac(height, lastBlock.timestamp), cO)]
368368 $Tuple10(cT, cU, cD, cE, cJ, cL, cI, cN, cH, cV)
369369 }
370370 }
371371
372372
373373 func cW (cy,bV,cX,cY,cZ,da,cB,db,dc,dd,de,df,dg) = {
374374 let cC = bk
375375 let dh = toBase58String(value(bl))
376376 let di = toBase58String(value(bm))
377377 let dj = bp
378378 let dk = bq
379379 let dl = bn
380380 let dm = bo
381381 let cH = toString(bj)
382382 let dn = valueOrErrorMessage(assetInfo(cC), "Wr lp as").quantity
383383 let cJ = if (db)
384384 then bM(dh)
385385 else if (if (dd)
386386 then (dg == dh)
387387 else false)
388388 then (bM(dh) - df)
389389 else if (dd)
390390 then bM(dh)
391391 else (bM(dh) - cX)
392392 let cL = if (db)
393393 then bM(di)
394394 else if (if (dd)
395395 then (dg == di)
396396 else false)
397397 then (bM(di) - df)
398398 else if (dd)
399399 then bM(di)
400400 else (bM(di) - cZ)
401401 let do = H(cX, dl)
402402 let dp = H(cZ, dm)
403403 let dq = bO(dp, do)
404404 let cK = H(cJ, dl)
405405 let cM = H(cL, dm)
406406 let dr = if ((dn == 0))
407407 then {
408408 let cN = d
409409 let ds = d
410410 let cp = pow((do * dp), 0, toBigInt(5), 1, 0, DOWN)
411411 $Tuple5(L(cp, a), L(do, dl), L(dp, dm), bO((cM + dp), (cK + do)), ds)
412412 }
413413 else {
414414 let cN = bO(cM, cK)
415415 let dt = fraction(W((cN - dq)), c, cN)
416416 let ds = H(bV, a)
417417 if (if (if (de)
418418 then (cN != d)
419419 else false)
420420 then (dt > ds)
421421 else false)
422422 then throw(((("Price slippage " + toString(dt)) + " > ") + toString(ds)))
423423 else {
424424 let du = H(dn, a)
425425 let dv = fraction(do, bR(cM, cK, CEILING), c, CEILING)
426426 let dw = fraction(dp, c, bR(cM, cK, FLOOR), CEILING)
427427 let dx = if ((dv > dp))
428428 then $Tuple2(dw, dp)
429429 else $Tuple2(do, dv)
430430 let dy = dx._1
431431 let dz = dx._2
432432 let cp = fraction(du, dz, cM, FLOOR)
433433 $Tuple5(O(cp, a, FLOOR), O(dy, dl, CEILING), O(dz, dm, CEILING), cN, ds)
434434 }
435435 }
436436 let dA = dr._1
437437 let dB = dr._2
438438 let dC = dr._3
439439 let cO = L(dr._4, a)
440440 let dD = L(dr._5, a)
441441 if ((0 >= dA))
442442 then throw("LP <= 0")
443443 else {
444444 let dE = if (!(dc))
445445 then 0
446446 else dA
447447 let dF = (cX - dB)
448448 let dG = (cZ - dC)
449449 let dH = if (if (dd)
450450 then (dg == dh)
451451 else false)
452452 then $Tuple2(df, 0)
453453 else if (if (dd)
454454 then (dg == di)
455455 else false)
456456 then $Tuple2(0, df)
457457 else $Tuple2(dB, dC)
458458 let dI = dH._1
459459 let dJ = dH._2
460460 let dK = [IntegerEntry(ab(), cO), IntegerEntry(ac(height, lastBlock.timestamp), cO), StringEntry(af(cB, cy), bx(dI, dJ, dE, cO, bV, dD, height, lastBlock.timestamp, dF, dG))]
461461 $Tuple13(dA, dE, cO, cJ, cL, dn, cC, cH, dK, dF, dG, cY, da)
462462 }
463463 }
464464
465465
466466 func dL (dM) = {
467467 let dN = dM[0]
468468 let dO = dM[1]
469469 let dP = (dN + dO)
470470 if ((dP == e))
471471 then e
472472 else {
473473 let dQ = parseIntValue(aT)
474474 let dR = (dQ * 2)
475475 let ct = fraction(dN, dO, f)
476476 let dS = fraction(ct, i, f)
477477 let dT = fraction(toBigInt(dR), dP, f)
478478 let dU = toBigInt((dR - 1))
479479 func dV (dW) = {
480480 let dX = fraction(dW, dW, f)
481481 let dY = fraction(dX, dW, f)
482482 let dZ = fraction(dY, f, dS)
483483 fraction((dT + fraction(dZ, g, f)), dW, (fraction(dU, dW, f) + fraction(h, dZ, f)))
484484 }
485485
486486 func ea (eb,ec) = if (eb._2)
487487 then eb
488488 else {
489489 let dW = eb._1
490490 let ed = dV(dW)
491491 let ee = (ed - value(dW))
492492 let ef = if ((e > ee))
493493 then -(ee)
494494 else ee
495495 if ((f >= ef))
496496 then $Tuple2(ed, true)
497497 else $Tuple2(ed, false)
498498 }
499499
500500 let eg = [0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14]
501501 let eh = {
502502 let ei = eg
503503 let ej = size(ei)
504504 let ek = $Tuple2(dP, false)
505505 func el (em,en) = if ((en >= ej))
506506 then em
507507 else ea(em, ei[en])
508508
509509 func eo (em,en) = if ((en >= ej))
510510 then em
511511 else throw("List size exceeds 15")
512512
513513 eo(el(el(el(el(el(el(el(el(el(el(el(el(el(el(el(ek, 0), 1), 2), 3), 4), 5), 6), 7), 8), 9), 10), 11), 12), 13), 14), 15)
514514 }
515515 let dW = eh._1
516516 let ep = eh._2
517517 if (ep)
518518 then dW
519519 else throw(("D calculation error, D = " + toString(dW)))
520520 }
521521 }
522522
523523
524524 func eq (dM,ec,er) = {
525525 let es = g
526526 let et = dM[if ((ec == 0))
527527 then 1
528528 else 0]
529529 let eu = parseBigIntValue(l)
530530 let dQ = (parseBigIntValue(aT) * eu)
531531 let dP = et
532532 let dR = (dQ * es)
533533 let ev = (((((er * er) / (et * es)) * er) * eu) / (dR * es))
534534 let ew = ((dP + ((er * eu) / dR)) - er)
535535 func ea (eb,ex) = {
536536 let ey = eb
537537 let ez = ey._1
538538 let ep = ey._2
539539 if ((ep != unit))
540540 then eb
541541 else {
542542 let eA = (((ez * ez) + ev) / ((g * ez) + ew))
543543 let eB = X((eA - value(ez)))
544544 if ((f >= eB))
545545 then $Tuple2(eA, ex)
546546 else $Tuple2(eA, unit)
547547 }
548548 }
549549
550550 let eg = [0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14]
551551 let eC = {
552552 let ei = eg
553553 let ej = size(ei)
554554 let ek = $Tuple2(er, unit)
555555 func el (em,en) = if ((en >= ej))
556556 then em
557557 else ea(em, ei[en])
558558
559559 func eo (em,en) = if ((en >= ej))
560560 then em
561561 else throw("List size exceeds 15")
562562
563563 eo(el(el(el(el(el(el(el(el(el(el(el(el(el(el(el(ek, 0), 1), 2), 3), 4), 5), 6), 7), 8), 9), 10), 11), 12), 13), 14), 15)
564564 }
565565 let ez = eC._1
566566 let ep = eC._2
567567 if ((ep != unit))
568568 then ez
569569 else throw(("Y calculation error, Y = " + toString(ez)))
570570 }
571571
572572
573573 func eD (eE,eF,eG) = {
574- let eH = fraction(dL([K(eE, toBigInt(bn)), K(eF, toBigInt(bo))]), f, eG)
574+ let eH = fraction(dL([K(eE, toBigInt(bn)), K(eF, toBigInt(bo))]), c, eG)
575575 if ((eG == e))
576576 then e
577577 else eH
578578 }
579579
580580
581581 func eI (eJ,eK,eL) = {
582582 let eM = (toBigInt(bM(bd(bl))) - eJ)
583583 let eN = (toBigInt(bM(bd(bm))) - eK)
584584 let eO = (toBigInt(value(assetInfo(bk)).quantity) - eL)
585585 let eP = eD(eM, eN, eO)
586586 eP
587587 }
588588
589589
590590 func eQ (eR,eS,eL) = {
591591 let eM = (bM(bd(bl)) + eR)
592592 let eN = (bM(bd(bm)) + eS)
593593 let eO = (value(assetInfo(bk)).quantity + eL)
594594 let eH = eD(toBigInt(eM), toBigInt(eN), toBigInt(eO))
595595 let eT = [IntegerEntry(aq, height), StringEntry(ap, toString(eH))]
596596 $Tuple2(eT, eH)
597597 }
598598
599599
600600 func eU (eV,eH) = if ((eH >= eV))
601601 then true
602602 else aM("updated DLp lower than current DLp")
603603
604604
605605 func eW (eX) = {
606606 let eY = eX.amount
607607 let eZ = fraction(eX.amount, eX.price, a, FLOOR)
608608 let fa = if ((eX.orderType == Buy))
609609 then $Tuple2(eY, -(eZ))
610610 else $Tuple2(-(eY), eZ)
611611 let eR = fa._1
612612 let eS = fa._2
613613 if (if (if (aU())
614614 then true
615615 else (bj == r))
616616 then true
617617 else (bj == s))
618618 then throw("Admin blocked")
619619 else if (if ((eX.assetPair.amountAsset != bl))
620620 then true
621621 else (eX.assetPair.priceAsset != bm))
622622 then throw("Wr assets")
623623 else {
624624 let fb = parseBigIntValue(getStringValue(this, ap))
625625 let fc = eQ(eR, eS, 0)
626626 let fd = fc._1
627627 let fe = fc._2
628628 let ff = (fe >= fb)
629629 ff
630630 }
631631 }
632632
633633
634634 func fg (ec) = if ((size(ec.payments) != 1))
635635 then throw("1 pmnt exp")
636636 else {
637637 let fh = value(ec.payments[0])
638638 let cz = value(fh.assetId)
639639 let df = fh.amount
640640 let dr = cx(toBase58String(ec.transactionId), toBase58String(cz), df, ec.caller)
641641 let cT = dr._1
642642 let cU = dr._2
643643 let cH = parseIntValue(dr._9)
644644 let cV = dr._10
645645 if (if (aU())
646646 then true
647647 else (cH == s))
648648 then throw(("Admin blocked: " + toString(cH)))
649649 else $Tuple5(cT, cU, df, cz, cV)
650650 }
651651
652652
653653 func fi (fj,ah,fk,fl,bV,dc,dd,de,df,dg) = {
654654 let dr = cW(ah, bV, value(fk).amount, value(fk).assetId, value(fl).amount, value(fl).assetId, fj, (ah == ""), dc, dd, de, df, dg)
655655 let cH = parseIntValue(dr._8)
656656 if (if (if (aU())
657657 then true
658658 else (cH == q))
659659 then true
660660 else (cH == s))
661661 then throw(("Blocked:" + toString(cH)))
662662 else dr
663663 }
664664
665665
666666 func fm (fn,cz,cB,ah,fo) = {
667667 let cD = toBase58String(value(bl))
668668 let cE = toBase58String(value(bm))
669669 let cC = bk
670670 let dl = bn
671671 let dm = bo
672672 let eO = toBigInt(valueOrErrorMessage(assetInfo(cC), "invalid lp asset").quantity)
673673 let fp = if ((eO > e))
674674 then true
675675 else throw("initial deposit requires all coins")
676676 if ((fp == fp))
677677 then {
678678 let cJ = bM(cD)
679679 let cL = bM(cE)
680680 let fq = if ((ah == ""))
681681 then $Tuple2(cJ, cL)
682682 else if ((cz == cD))
683683 then if ((fn > cJ))
684684 then throw("invalid payment amount")
685685 else $Tuple2((cJ - fn), cL)
686686 else if ((cz == cE))
687687 then if ((fn > cL))
688688 then throw("invalid payment amount")
689689 else $Tuple2(cJ, (cL - fn))
690690 else throw("wrong pmtAssetId")
691691 let fr = fq._1
692692 let fs = fq._2
693693 let ft = if ((cz == cD))
694694 then $Tuple2(fn, 0)
695695 else if ((cz == cE))
696696 then $Tuple2(0, fn)
697697 else throw("invalid payment")
698698 let fu = ft._1
699699 let fv = ft._2
700700 let fw = if (fo)
701701 then $Tuple3(cu(fu, aQ)._1, cu(fv, aQ)._1, cu(fn, aQ)._2)
702702 else $Tuple3(fu, fv, 0)
703703 let fx = fw._1
704704 let fy = fw._2
705705 let cw = fw._3
706706 let fz = (fr + fx)
707707 let fA = (fs + fy)
708708 let ca = dL([toBigInt(fr), toBigInt(fs)])
709709 let bZ = dL([toBigInt(fz), toBigInt(fA)])
710710 let fB = if ((bZ > ca))
711711 then true
712712 else throw()
713713 if ((fB == fB))
714714 then {
715715 let fC = fraction(eO, (bZ - ca), ca, FLOOR)
716716 let cO = L(bO(H(fA, dm), H(fz, dl)), a)
717717 let dK = [IntegerEntry(ab(), cO), IntegerEntry(ac(height, lastBlock.timestamp), cO), StringEntry(af(cB, ah), bx(fu, fv, toInt(fC), cO, 0, 0, height, lastBlock.timestamp, 0, 0))]
718718 let fD = fraction(fs, a, fr)
719719 let fE = fraction(fn, a, (fD + a))
720720 let fF = (fn - fE)
721721 let fG = fraction(eO, toBigInt(fF), toBigInt(fs))
722722 let fH = toInt(fraction((fC - fG), b, fG))
723723 $Tuple4(toInt(fC), dK, cw, fH)
724724 }
725725 else throw("Strict value is not equal to itself.")
726726 }
727727 else throw("Strict value is not equal to itself.")
728728 }
729729
730730
731731 func fI (fJ,fK,fL,fj,fM,fN) = {
732732 let cC = toBase58String(value(bk))
733733 let cD = toBase58String(value(bl))
734734 let cE = toBase58String(value(bm))
735735 let fO = bn
736736 let fP = bo
737737 let fQ = bj
738738 let cB = if ((fj == bw))
739739 then fM
740740 else fj
741741 let fh = value(fL[0])
742742 let cz = value(fh.assetId)
743743 let df = fh.amount
744744 let eP = eI(e, e, e)
745745 if ((eP == eP))
746746 then {
747747 let cy = toBase58String(fN)
748748 if ((cC != toBase58String(cz)))
749749 then throw("Wrong LP")
750750 else {
751751 let cJ = bM(cD)
752752 let cL = bM(cE)
753753 let fR = {
754754 let aR = invoke(this, "getOneTknV2READONLY", [fJ, df], nil)
755755 if ($isInstanceOf(aR, "(Int, Int)"))
756756 then aR
757757 else throw(($getType(aR) + " couldn't be cast to (Int, Int)"))
758758 }
759759 if ((fR == fR))
760760 then {
761761 let cw = fR._2
762762 let fS = fR._1
763763 let fT = if (if ((fK > 0))
764764 then (fK > fS)
765765 else false)
766766 then aM(makeString(["amount to receive is less than ", toString(fK)], ""))
767767 else fS
768768 let fU = if ((fJ == cD))
769769 then $Tuple4(fT, 0, ((cJ - fT) - cw), cL)
770770 else if ((fJ == cE))
771771 then $Tuple4(0, fT, cJ, ((cL - fT) - cw))
772772 else throw("invalid out asset id")
773773 let fV = fU._1
774774 let fW = fU._2
775775 let fz = fU._3
776776 let fA = fU._4
777777 let fX = bO(H(fA, fP), H(fz, fO))
778778 let fY = L(fX, a)
779779 let fZ = if ((fJ == "WAVES"))
780780 then unit
781781 else fromBase58String(fJ)
782782 let ga = if ((cw > 0))
783783 then [ScriptTransfer(aW, cw, fZ)]
784784 else nil
785785 let cV = ([ScriptTransfer(cB, fT, fZ), StringEntry(ai(toString(cB), cy), bI(fV, fW, df, fY, height, lastBlock.timestamp)), IntegerEntry(ab(), fY), IntegerEntry(ac(height, lastBlock.timestamp), fY)] ++ ga)
786786 if ((cV == cV))
787787 then {
788788 let gb = invoke(aP, "burn", [df], [AttachedPayment(cz, df)])
789789 if ((gb == gb))
790790 then {
791791 let gc = {
792792 let gd = if ((this == aW))
793793 then 0
794794 else cw
795795 let ge = if ((bb(fJ) == bl))
796796 then true
797797 else false
798798 if (ge)
799799 then $Tuple2(-((fS + gd)), 0)
800800 else $Tuple2(0, -((fS + gd)))
801801 }
802802 let eR = gc._1
803803 let eS = gc._2
804804 let gf = eQ(eR, eS, 0)
805805 let gg = gf._1
806806 let eH = gf._2
807807 let gh = eU(eP, eH)
808808 if ((gh == gh))
809809 then $Tuple2((cV ++ gg), fT)
810810 else throw("Strict value is not equal to itself.")
811811 }
812812 else throw("Strict value is not equal to itself.")
813813 }
814814 else throw("Strict value is not equal to itself.")
815815 }
816816 else throw("Strict value is not equal to itself.")
817817 }
818818 }
819819 else throw("Strict value is not equal to itself.")
820820 }
821821
822822
823823 func gi () = {
824824 let gj = getString(Z())
825825 if ($isInstanceOf(gj, "String"))
826826 then {
827827 let dP = gj
828828 fromBase58String(dP)
829829 }
830830 else if ($isInstanceOf(gj, "Unit"))
831831 then unit
832832 else throw("Match error")
833833 }
834834
835835
836836 func gk () = {
837837 let gj = getString(aa())
838838 if ($isInstanceOf(gj, "String"))
839839 then {
840840 let dP = gj
841841 fromBase58String(dP)
842842 }
843843 else if ($isInstanceOf(gj, "Unit"))
844844 then unit
845845 else throw("Match error")
846846 }
847847
848848
849849 let gl = throw("Permission denied")
850850
851851 func gm (ec) = {
852852 let gj = gi()
853853 if ($isInstanceOf(gj, "ByteVector"))
854854 then {
855855 let gn = gj
856856 (ec.callerPublicKey == gn)
857857 }
858858 else if ($isInstanceOf(gj, "Unit"))
859859 then (ec.caller == this)
860860 else throw("Match error")
861861 }
862862
863863
864864 func go (ec) = {
865865 let gj = gi()
866866 if ($isInstanceOf(gj, "ByteVector"))
867867 then {
868868 let gn = gj
869869 if ((ec.callerPublicKey == gn))
870870 then true
871871 else gl
872872 }
873873 else if ($isInstanceOf(gj, "Unit"))
874874 then if ((ec.caller == this))
875875 then true
876876 else gl
877877 else throw("Match error")
878878 }
879879
880880
881881 @Callable(ec)
882882 func constructor (Y) = {
883883 let ev = go(ec)
884884 if ((ev == ev))
885885 then [StringEntry(Y(), Y)]
886886 else throw("Strict value is not equal to itself.")
887887 }
888888
889889
890890
891891 @Callable(ec)
892892 func setManager (gp) = {
893893 let ev = go(ec)
894894 if ((ev == ev))
895895 then {
896896 let gq = fromBase58String(gp)
897897 if ((gq == gq))
898898 then [StringEntry(aa(), gp)]
899899 else throw("Strict value is not equal to itself.")
900900 }
901901 else throw("Strict value is not equal to itself.")
902902 }
903903
904904
905905
906906 @Callable(ec)
907907 func confirmManager () = {
908908 let ct = gk()
909909 let gr = if (isDefined(ct))
910910 then true
911911 else throw("No pending manager")
912912 if ((gr == gr))
913913 then {
914914 let gs = if ((ec.callerPublicKey == value(ct)))
915915 then true
916916 else throw("You are not pending manager")
917917 if ((gs == gs))
918918 then [StringEntry(Z(), toBase58String(value(ct))), DeleteEntry(aa())]
919919 else throw("Strict value is not equal to itself.")
920920 }
921921 else throw("Strict value is not equal to itself.")
922922 }
923923
924924
925925
926926 @Callable(ec)
927927 func put (gt,gu) = {
928928 let gv = br()
929929 let gw = valueOrErrorMessage(addressFromString(gv[C]), "Wr st addr")
930930 let gx = valueOrErrorMessage(addressFromString(gv[E]), "Wr sl addr")
931931 if ((0 > gt))
932932 then throw("Wrong slippage")
933933 else if ((size(ec.payments) != 2))
934934 then throw("2 pmnts expd")
935935 else {
936936 let gy = toBigInt(value(ec.payments[0]).amount)
937937 let gz = toBigInt(value(ec.payments[1]).amount)
938938 let eM = (toBigInt(bM(bd(bl))) - gy)
939939 if ((eM == eM))
940940 then {
941941 let eN = (toBigInt(bM(bd(bm))) - gz)
942942 if ((eN == eN))
943943 then {
944944 let eO = toBigInt(value(assetInfo(bk)).quantity)
945945 if ((eO == eO))
946946 then {
947947 let eP = eI(gy, gz, toBigInt(0))
948948 if ((eP == eP))
949949 then {
950950 let gA = fi(toString(ec.caller), toBase58String(ec.transactionId), AttachedPayment(value(ec.payments[0]).assetId, value(ec.payments[0]).amount), ec.payments[1], gt, true, false, true, 0, "")
951951 let dE = gA._2
952952 let gB = gA._7
953953 let cV = gA._9
954954 let dF = gA._10
955955 let dG = gA._11
956956 let cD = gA._12
957957 let cE = gA._13
958958 let dr = invoke(aP, "emit", [dE], nil)
959959 if ((dr == dr))
960960 then {
961961 let gC = {
962962 let gj = dr
963963 if ($isInstanceOf(gj, "Address"))
964964 then {
965965 let gD = gj
966966 invoke(gD, "emit", [dE], nil)
967967 }
968968 else unit
969969 }
970970 if ((gC == gC))
971971 then {
972972 let gE = if ((dF > 0))
973973 then invoke(gx, "put", nil, [AttachedPayment(cD, dF)])
974974 else nil
975975 if ((gE == gE))
976976 then {
977977 let gF = if ((dG > 0))
978978 then invoke(gx, "put", nil, [AttachedPayment(cE, dG)])
979979 else nil
980980 if ((gF == gF))
981981 then {
982982 let gG = if (gu)
983983 then {
984984 let gH = invoke(gw, "stake", nil, [AttachedPayment(gB, dE)])
985985 if ((gH == gH))
986986 then nil
987987 else throw("Strict value is not equal to itself.")
988988 }
989989 else [ScriptTransfer(ec.caller, dE, gB)]
990990 let gI = eQ(0, 0, 0)
991991 let gg = gI._1
992992 let eH = gI._2
993993 let gJ = if ((eH >= eP))
994994 then true
995995 else aM(makeString(["updated DLp lower than current DLp", toString(eM), toString(eN), toString(eO), toString(eP), toString(eH), toString(dF), toString(dG)], " "))
996996 if ((gJ == gJ))
997997 then {
998998 let gK = value(assetInfo(bk)).quantity
999999 if ((gK == gK))
10001000 then ((cV ++ gG) ++ gg)
10011001 else throw("Strict value is not equal to itself.")
10021002 }
10031003 else throw("Strict value is not equal to itself.")
10041004 }
10051005 else throw("Strict value is not equal to itself.")
10061006 }
10071007 else throw("Strict value is not equal to itself.")
10081008 }
10091009 else throw("Strict value is not equal to itself.")
10101010 }
10111011 else throw("Strict value is not equal to itself.")
10121012 }
10131013 else throw("Strict value is not equal to itself.")
10141014 }
10151015 else throw("Strict value is not equal to itself.")
10161016 }
10171017 else throw("Strict value is not equal to itself.")
10181018 }
10191019 else throw("Strict value is not equal to itself.")
10201020 }
10211021 }
10221022
10231023
10241024
10251025 @Callable(ec)
10261026 func putOneTknV2 (fK,gu) = {
10271027 let gL = {
10281028 let aR = invoke(aP, "isPoolOneTokenOperationsDisabledREADONLY", [toString(this)], nil)
10291029 if ($isInstanceOf(aR, "Boolean"))
10301030 then aR
10311031 else throw(($getType(aR) + " couldn't be cast to Boolean"))
10321032 }
10331033 let gM = if (if (if (aU())
10341034 then true
10351035 else (bj == q))
10361036 then true
10371037 else (bj == s))
10381038 then true
10391039 else gL
10401040 let gN = [if (if (!(gM))
10411041 then true
10421042 else gm(ec))
10431043 then true
10441044 else aM("put operation is blocked by admin"), if ((size(ec.payments) == 1))
10451045 then true
10461046 else aM("exactly 1 payment are expected")]
10471047 if ((gN == gN))
10481048 then {
10491049 let cD = toBase58String(value(bl))
10501050 let cE = toBase58String(value(bm))
10511051 let cC = bk
10521052 let fO = bn
10531053 let fP = bo
10541054 let cB = if ((ec.caller == this))
10551055 then ec.originCaller
10561056 else ec.caller
10571057 let fh = value(ec.payments[0])
10581058 let cz = toBase58String(value(fh.assetId))
10591059 let df = fh.amount
10601060 let eP = if ((fh.assetId == bl))
10611061 then eI(toBigInt(df), toBigInt(0), toBigInt(0))
10621062 else eI(toBigInt(0), toBigInt(df), toBigInt(0))
10631063 if ((eP == eP))
10641064 then {
10651065 let gO = fm(df, cz, toString(cB), toBase58String(ec.transactionId), true)
10661066 if ((gO == gO))
10671067 then {
10681068 let cw = gO._3
10691069 let cV = gO._2
10701070 let gP = gO._1
10711071 let dE = if (if ((fK > 0))
10721072 then (fK > gP)
10731073 else false)
10741074 then aM(makeString(["amount to receive is less than ", toString(fK)], ""))
10751075 else gP
10761076 let gA = invoke(aP, "emit", [dE], nil)
10771077 if ((gA == gA))
10781078 then {
10791079 let gC = {
10801080 let gj = gA
10811081 if ($isInstanceOf(gj, "Address"))
10821082 then {
10831083 let gD = gj
10841084 invoke(gD, "emit", [dE], nil)
10851085 }
10861086 else unit
10871087 }
10881088 if ((gC == gC))
10891089 then {
10901090 let gG = if (gu)
10911091 then {
10921092 let gH = invoke(bt, "stake", nil, [AttachedPayment(cC, dE)])
10931093 if ((gH == gH))
10941094 then nil
10951095 else throw("Strict value is not equal to itself.")
10961096 }
10971097 else [ScriptTransfer(ec.caller, dE, cC)]
10981098 let ga = if ((cw > 0))
10991099 then [ScriptTransfer(aW, cw, fromBase58String(cz))]
11001100 else nil
11011101 let gQ = if ((this == aW))
11021102 then $Tuple2(0, 0)
11031103 else {
11041104 let gR = if ((fh.assetId == bl))
11051105 then true
11061106 else false
11071107 if (gR)
11081108 then $Tuple2(-(cw), 0)
11091109 else $Tuple2(0, -(cw))
11101110 }
11111111 let eR = gQ._1
11121112 let eS = gQ._2
11131113 let gS = eQ(eR, eS, 0)
11141114 let gg = gS._1
11151115 let eH = gS._2
11161116 let gh = eU(eP, eH)
11171117 if ((gh == gh))
11181118 then $Tuple2((((cV ++ gG) ++ ga) ++ gg), dE)
11191119 else throw("Strict value is not equal to itself.")
11201120 }
11211121 else throw("Strict value is not equal to itself.")
11221122 }
11231123 else throw("Strict value is not equal to itself.")
11241124 }
11251125 else throw("Strict value is not equal to itself.")
11261126 }
11271127 else throw("Strict value is not equal to itself.")
11281128 }
11291129 else throw("Strict value is not equal to itself.")
11301130 }
11311131
11321132
11331133
11341134 @Callable(ec)
11351135 func putForFree (gT) = if ((0 > gT))
11361136 then throw("Wrong slpg")
11371137 else if ((size(ec.payments) != 2))
11381138 then throw("2 pmnts expd")
11391139 else {
11401140 let gU = fi(toString(ec.caller), toBase58String(ec.transactionId), AttachedPayment(value(ec.payments[0]).assetId, value(ec.payments[0]).amount), ec.payments[1], gT, false, false, true, 0, "")
11411141 let cV = gU._9
11421142 let gy = toBigInt(value(ec.payments[0]).amount)
11431143 let gz = toBigInt(value(ec.payments[1]).amount)
11441144 let eP = eI(gy, gz, toBigInt(0))
11451145 if ((eP == eP))
11461146 then {
11471147 let gV = eQ(0, 0, 0)
11481148 let gg = gV._1
11491149 let eH = gV._2
11501150 let gh = eU(eP, eH)
11511151 if ((gh == gh))
11521152 then (cV ++ gg)
11531153 else throw("Strict value is not equal to itself.")
11541154 }
11551155 else throw("Strict value is not equal to itself.")
11561156 }
11571157
11581158
11591159
11601160 @Callable(ec)
11611161 func get () = {
11621162 let eP = eI(toBigInt(0), toBigInt(0), toBigInt(0))
11631163 if ((eP == eP))
11641164 then {
11651165 let dr = fg(ec)
11661166 let gW = dr._1
11671167 let cU = dr._2
11681168 let df = dr._3
11691169 let cz = dr._4
11701170 let cV = dr._5
11711171 let ew = invoke(aP, "burn", [df], [AttachedPayment(cz, df)])
11721172 if ((ew == ew))
11731173 then {
11741174 let gX = eQ(-(gW), -(cU), 0)
11751175 let gg = gX._1
11761176 let eH = gX._2
11771177 let gh = eU(eP, eH)
11781178 if ((gh == gh))
11791179 then (cV ++ gg)
11801180 else throw("Strict value is not equal to itself.")
11811181 }
11821182 else throw("Strict value is not equal to itself.")
11831183 }
11841184 else throw("Strict value is not equal to itself.")
11851185 }
11861186
11871187
11881188
11891189 @Callable(ec)
11901190 func getOneTknV2 (fJ,fK) = {
11911191 let gL = {
11921192 let aR = invoke(aP, "isPoolOneTokenOperationsDisabledREADONLY", [toString(this)], nil)
11931193 if ($isInstanceOf(aR, "Boolean"))
11941194 then aR
11951195 else throw(($getType(aR) + " couldn't be cast to Boolean"))
11961196 }
11971197 let gY = if (if (aU())
11981198 then true
11991199 else (bj == s))
12001200 then true
12011201 else gL
12021202 let gN = [if (if (!(gY))
12031203 then true
12041204 else gm(ec))
12051205 then true
12061206 else aM("get operation is blocked by admin"), if ((size(ec.payments) == 1))
12071207 then true
12081208 else aM("exactly 1 payment are expected")]
12091209 if ((gN == gN))
12101210 then {
12111211 let gZ = fI(fJ, fK, ec.payments, ec.caller, ec.originCaller, ec.transactionId)
12121212 let cV = gZ._1
12131213 let fT = gZ._2
12141214 $Tuple2(cV, fT)
12151215 }
12161216 else throw("Strict value is not equal to itself.")
12171217 }
12181218
12191219
12201220
12211221 @Callable(ec)
12221222 func refreshDLp () = {
12231223 let ha = valueOrElse(getInteger(aq), 0)
12241224 let hb = if (((height - ha) >= at))
12251225 then unit
12261226 else aM(makeString([toString(at), " blocks have not passed since the previous call"], ""))
12271227 if ((hb == hb))
12281228 then {
12291229 let fb = valueOrErrorMessage(parseBigInt(valueOrElse(getString(this, ap), "0")), aO("invalid dLp"))
12301230 let hc = eQ(0, 0, 0)
12311231 let hd = hc._1
12321232 let eH = hc._2
12331233 let eT = if ((fb != eH))
12341234 then hd
12351235 else aM("nothing to refresh")
12361236 $Tuple2(eT, toString(eH))
12371237 }
12381238 else throw("Strict value is not equal to itself.")
12391239 }
12401240
12411241
12421242
12431243 @Callable(ec)
12441244 func getOneTknV2READONLY (fJ,he) = {
12451245 let cD = toBase58String(value(bl))
12461246 let cE = toBase58String(value(bm))
12471247 let cC = toBase58String(value(bk))
12481248 let dM = [toBigInt(bM(cD)), toBigInt(bM(cE))]
12491249 let eG = toBigInt(valueOrErrorMessage(assetInfo(fromBase58String(cC)), "invalid lp asset").quantity)
12501250 let ca = dL(dM)
12511251 let bZ = (ca - fraction(toBigInt(he), ca, eG))
12521252 let hf = if ((fJ == cD))
12531253 then 0
12541254 else if ((fJ == cE))
12551255 then 1
12561256 else throw("invalid out asset id")
12571257 let hg = eq(dM, hf, bZ)
12581258 let hh = (dM[hf] - hg)
12591259 let hi = max([0, toInt((hh - f))])
12601260 let hj = cu(hi, aS)
12611261 let fS = hj._1
12621262 let cw = hj._2
12631263 $Tuple2(nil, $Tuple2(fS, cw))
12641264 }
12651265
12661266
12671267
12681268 @Callable(ec)
12691269 func getOneTknV2WithBonusREADONLY (fJ,he) = {
12701270 let cD = toBase58String(value(bl))
12711271 let cE = toBase58String(value(bm))
12721272 let cC = toBase58String(value(bk))
12731273 let cJ = bM(cD)
12741274 let cL = bM(cE)
12751275 let hk = {
12761276 let aR = invoke(this, "getOneTknV2READONLY", [fJ, he], nil)
12771277 if ($isInstanceOf(aR, "(Int, Int)"))
12781278 then aR
12791279 else throw(($getType(aR) + " couldn't be cast to (Int, Int)"))
12801280 }
12811281 let fS = hk._1
12821282 let cw = hk._2
12831283 let dr = cx("", cC, he, this)
12841284 let cT = dr._1
12851285 let cU = dr._2
12861286 let hl = (cT + cU)
12871287 let fH = if ((hl == 0))
12881288 then if ((fS == 0))
12891289 then 0
12901290 else throw("bonus calculation error")
12911291 else fraction((fS - hl), a, hl)
12921292 $Tuple2(nil, $Tuple3(fS, cw, fH))
12931293 }
12941294
12951295
12961296
12971297 @Callable(ec)
12981298 func getNoLess (hm,hn) = {
12991299 let dr = fg(ec)
13001300 let cT = dr._1
13011301 let cU = dr._2
13021302 let df = dr._3
13031303 let cz = dr._4
13041304 let cV = dr._5
13051305 if ((hm > cT))
13061306 then throw(((("Failed: " + toString(cT)) + " < ") + toString(hm)))
13071307 else if ((hn > cU))
13081308 then throw(((("Failed: " + toString(cU)) + " < ") + toString(hn)))
13091309 else {
13101310 let eP = eI(toBigInt(0), toBigInt(0), toBigInt(0))
13111311 if ((eP == eP))
13121312 then {
13131313 let ho = invoke(aP, "burn", [df], [AttachedPayment(cz, df)])
13141314 if ((ho == ho))
13151315 then {
13161316 let hp = eQ(-(cT), -(cU), 0)
13171317 let gg = hp._1
13181318 let eH = hp._2
13191319 let gh = eU(eP, eH)
13201320 if ((gh == gh))
13211321 then (cV ++ gg)
13221322 else throw("Strict value is not equal to itself.")
13231323 }
13241324 else throw("Strict value is not equal to itself.")
13251325 }
13261326 else throw("Strict value is not equal to itself.")
13271327 }
13281328 }
13291329
13301330
13311331
13321332 @Callable(ec)
13331333 func unstakeAndGet (cv) = {
13341334 let hq = if ((size(ec.payments) != 0))
13351335 then throw("No pmnts expd")
13361336 else true
13371337 if ((hq == hq))
13381338 then {
13391339 let hr = br()
13401340 let gB = bk
13411341 let hs = valueOrErrorMessage(addressFromString(hr[C]), "Wr st addr")
13421342 let eP = eI(toBigInt(0), toBigInt(0), toBigInt(0))
13431343 if ((eP == eP))
13441344 then {
13451345 let ht = invoke(hs, "unstake", [toBase58String(gB), cv], nil)
13461346 if ((ht == ht))
13471347 then {
13481348 let dr = cx(toBase58String(ec.transactionId), toBase58String(gB), cv, ec.caller)
13491349 let cT = dr._1
13501350 let cU = dr._2
13511351 let cH = parseIntValue(dr._9)
13521352 let cV = dr._10
13531353 let hu = if (if (aU())
13541354 then true
13551355 else (cH == s))
13561356 then throw(("Blocked: " + toString(cH)))
13571357 else true
13581358 if ((hu == hu))
13591359 then {
13601360 let hv = invoke(aP, "burn", [cv], [AttachedPayment(gB, cv)])
13611361 if ((hv == hv))
13621362 then {
13631363 let hw = eQ(-(cT), -(cU), 0)
13641364 let gg = hw._1
13651365 let eH = hw._2
13661366 let gh = eU(eP, eH)
13671367 if ((gh == gh))
13681368 then (cV ++ gg)
13691369 else throw("Strict value is not equal to itself.")
13701370 }
13711371 else throw("Strict value is not equal to itself.")
13721372 }
13731373 else throw("Strict value is not equal to itself.")
13741374 }
13751375 else throw("Strict value is not equal to itself.")
13761376 }
13771377 else throw("Strict value is not equal to itself.")
13781378 }
13791379 else throw("Strict value is not equal to itself.")
13801380 }
13811381
13821382
13831383
13841384 @Callable(ec)
13851385 func unstakeAndGetNoLess (hx,hy,hn) = {
13861386 let gY = if (aU())
13871387 then true
13881388 else (bj == s)
13891389 let gN = [if (!(gY))
13901390 then true
13911391 else throw("get operation is blocked by admin"), if ((size(ec.payments) == 0))
13921392 then true
13931393 else throw("no payments are expected")]
13941394 if ((gN == gN))
13951395 then {
13961396 let eP = eI(toBigInt(0), toBigInt(0), toBigInt(0))
13971397 if ((eP == eP))
13981398 then {
13991399 let ht = invoke(bt, "unstake", [toBase58String(bk), hx], nil)
14001400 if ((ht == ht))
14011401 then {
14021402 let hz = cx(toBase58String(ec.transactionId), toBase58String(bk), hx, ec.caller)
14031403 let cT = hz._1
14041404 let cU = hz._2
14051405 let cV = hz._10
14061406 let hA = [if ((cT >= hy))
14071407 then true
14081408 else throw(makeString(["amount asset amount to receive is less than ", toString(hy)], "")), if ((cU >= hn))
14091409 then true
14101410 else throw(makeString(["price asset amount to receive is less than ", toString(hn)], ""))]
14111411 if ((hA == hA))
14121412 then {
14131413 let ho = invoke(aP, "burn", [hx], [AttachedPayment(bk, hx)])
14141414 if ((ho == ho))
14151415 then {
14161416 let hB = eQ(-(cT), -(cU), 0)
14171417 let gg = hB._1
14181418 let eH = hB._2
14191419 let gh = eU(eP, eH)
14201420 if ((gh == gh))
14211421 then (cV ++ gg)
14221422 else throw("Strict value is not equal to itself.")
14231423 }
14241424 else throw("Strict value is not equal to itself.")
14251425 }
14261426 else throw("Strict value is not equal to itself.")
14271427 }
14281428 else throw("Strict value is not equal to itself.")
14291429 }
14301430 else throw("Strict value is not equal to itself.")
14311431 }
14321432 else throw("Strict value is not equal to itself.")
14331433 }
14341434
14351435
14361436
14371437 @Callable(ec)
14381438 func unstakeAndGetOneTknV2 (hx,fJ,fK) = {
14391439 let gL = {
14401440 let aR = invoke(aP, "isPoolOneTokenOperationsDisabledREADONLY", [toString(this)], nil)
14411441 if ($isInstanceOf(aR, "Boolean"))
14421442 then aR
14431443 else throw(($getType(aR) + " couldn't be cast to Boolean"))
14441444 }
14451445 let gY = if (if (aU())
14461446 then true
14471447 else (bj == s))
14481448 then true
14491449 else gL
14501450 let gN = [if (if (!(gY))
14511451 then true
14521452 else gm(ec))
14531453 then true
14541454 else aM("get operation is blocked by admin"), if ((size(ec.payments) == 0))
14551455 then true
14561456 else aM("no payments are expected")]
14571457 if ((gN == gN))
14581458 then {
14591459 let hr = br()
14601460 let gB = bk
14611461 let hs = valueOrErrorMessage(addressFromString(hr[C]), "Wr st addr")
14621462 let ht = invoke(hs, "unstake", [toBase58String(gB), hx], nil)
14631463 if ((ht == ht))
14641464 then {
14651465 let hC = fI(fJ, fK, [AttachedPayment(gB, hx)], ec.caller, ec.originCaller, ec.transactionId)
14661466 let cV = hC._1
14671467 let fT = hC._2
14681468 $Tuple2(cV, fT)
14691469 }
14701470 else throw("Strict value is not equal to itself.")
14711471 }
14721472 else throw("Strict value is not equal to itself.")
14731473 }
14741474
14751475
14761476
14771477 @Callable(ec)
14781478 func putOneTknV2WithBonusREADONLY (hD,hE) = {
14791479 let hF = fm(hD, hE, "", "", true)
14801480 let fC = hF._1
14811481 let cV = hF._2
14821482 let cw = hF._3
14831483 let fH = hF._4
14841484 $Tuple2(nil, $Tuple3(fC, cw, fH))
14851485 }
14861486
14871487
14881488
14891489 @Callable(ec)
14901490 func putOneTknV2WithoutTakeFeeREADONLY (hD,hE) = {
14911491 let hG = fm(hD, hE, "", "", false)
14921492 let fC = hG._1
14931493 let cV = hG._2
14941494 let cw = hG._3
14951495 let fH = hG._4
14961496 $Tuple2(nil, $Tuple3(fC, cw, fH))
14971497 }
14981498
14991499
15001500
15011501 @Callable(ec)
15021502 func activate (hH,hI) = if ((toString(ec.caller) != toString(aP)))
15031503 then throw("denied")
15041504 else $Tuple2([StringEntry(aj(), hH), StringEntry(ak(), hI)], "success")
15051505
15061506
15071507
15081508 @Callable(ec)
15091509 func setS (hJ,hu) = if ((toString(ec.caller) != aI(this, am())))
15101510 then gl
15111511 else [StringEntry(hJ, hu)]
15121512
15131513
15141514
15151515 @Callable(ec)
15161516 func setI (hJ,hu) = if ((toString(ec.caller) != aI(this, am())))
15171517 then gl
15181518 else [IntegerEntry(hJ, hu)]
15191519
15201520
15211521
15221522 @Callable(ec)
15231523 func getPoolConfigWrapperREADONLY () = $Tuple2(nil, aX())
15241524
15251525
15261526
15271527 @Callable(ec)
15281528 func getAccBalanceWrapperREADONLY (bN) = $Tuple2(nil, bM(bN))
15291529
15301530
15311531
15321532 @Callable(ec)
15331533 func calcPricesWrapperREADONLY (cg,ch,cl) = {
15341534 let hK = ck(cg, ch, cl)
15351535 $Tuple2(nil, [toString(hK[0]), toString(hK[1]), toString(hK[2])])
15361536 }
15371537
15381538
15391539
15401540 @Callable(ec)
15411541 func fromX18WrapperREADONLY (M,hL) = $Tuple2(nil, L(parseBigIntValue(M), hL))
15421542
15431543
15441544
15451545 @Callable(ec)
15461546 func toX18WrapperREADONLY (I,J) = $Tuple2(nil, toString(H(I, J)))
15471547
15481548
15491549
15501550 @Callable(ec)
15511551 func calcPriceBigIntWrapperREADONLY (bP,bQ) = $Tuple2(nil, toString(bO(parseBigIntValue(bP), parseBigIntValue(bQ))))
15521552
15531553
15541554
15551555 @Callable(ec)
15561556 func estimatePutOperationWrapperREADONLY (cy,bV,cX,cY,cZ,da,hM,db,dc) = $Tuple2(nil, cW(cy, bV, cX, cY, cZ, da, hM, db, dc, true, false, 0, ""))
15571557
15581558
15591559
15601560 @Callable(ec)
15611561 func estimateGetOperationWrapperREADONLY (cy,hN,cA,hM) = {
15621562 let dr = cx(cy, hN, cA, addressFromStringValue(hM))
15631563 $Tuple2(nil, $Tuple10(dr._1, dr._2, dr._3, dr._4, dr._5, dr._6, dr._7, toString(dr._8), dr._9, dr._10))
15641564 }
15651565
15661566
15671567 @Verifier(hO)
15681568 func hP () = {
15691569 let hQ = {
15701570 let gj = gi()
15711571 if ($isInstanceOf(gj, "ByteVector"))
15721572 then {
15731573 let gn = gj
15741574 gn
15751575 }
15761576 else if ($isInstanceOf(gj, "Unit"))
15771577 then hO.senderPublicKey
15781578 else throw("Match error")
15791579 }
15801580 let gj = hO
15811581 if ($isInstanceOf(gj, "Order"))
15821582 then {
15831583 let eX = gj
15841584 let hR = aV()
15851585 let hS = eW(eX)
15861586 let hT = sigVerify(eX.bodyBytes, eX.proofs[0], eX.senderPublicKey)
15871587 let hU = sigVerify(eX.bodyBytes, eX.proofs[1], hR)
15881588 if (if (if (hS)
15891589 then hT
15901590 else false)
15911591 then hU
15921592 else false)
15931593 then true
15941594 else aE(hS, hT, hU)
15951595 }
15961596 else if ($isInstanceOf(gj, "SetScriptTransaction"))
15971597 then {
15981598 let dP = gj
15991599 if (sigVerify(hO.bodyBytes, hO.proofs[0], hQ))
16001600 then true
16011601 else {
16021602 let hV = blake2b256(value(dP.script))
16031603 let hW = fromBase64String(value(getString(aP, aC())))
16041604 let hX = scriptHash(this)
16051605 if ((hW == hV))
16061606 then (hX != hV)
16071607 else false
16081608 }
16091609 }
16101610 else sigVerify(hO.bodyBytes, hO.proofs[0], hQ)
16111611 }
16121612

github/deemru/w8io/873ac7e 
203.38 ms