tx · 3ppjAW5aoof9hAMn2ybH48vyf8RhKxBYPqJJKpiLZj65

3MzKSdTH2jFbypLsoNfrH7QgkzSbx3EYwCA:  -0.03200000 Waves

2022.10.05 16:59 [2259115] smart account 3MzKSdTH2jFbypLsoNfrH7QgkzSbx3EYwCA > SELF 0.00000000 Waves

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

github/deemru/w8io/c3f4982 
125.38 ms