tx · tPf4ksgoCwRFPeNbEni32JhpqRVWJhpTG8KG5W8MtJu

3MzKSdTH2jFbypLsoNfrH7QgkzSbx3EYwCA:  -0.02900000 Waves

2022.08.30 12:02 [2206980] smart account 3MzKSdTH2jFbypLsoNfrH7QgkzSbx3EYwCA > SELF 0.00000000 Waves

{ "type": 13, "id": "tPf4ksgoCwRFPeNbEni32JhpqRVWJhpTG8KG5W8MtJu", "fee": 2900000, "feeAssetId": null, "timestamp": 1661850164001, "version": 2, "chainId": 84, "sender": "3MzKSdTH2jFbypLsoNfrH7QgkzSbx3EYwCA", "senderPublicKey": "35yd3qw1gxKDxKwGAykHN9fANbXNWwseaUwbWDj24o3x", "proofs": [ "3R3Sgbc881VtCBm7uupM1P64WRYj7VFY2dAvjsdo6pMwBxjayqijGaeAEommtMDUGeZ6BufA3HD6c3ozGPgnvwE6" ], "script": "base64:BgJ/CAISAwoBCBIDCgEIEgASBAoCAQQSBwoFAQEBAQQSAwoBARIAEgcKBQEBAQgBEgQKAgEBEgMKAQESBAoCCAgSBAoCCAgSBAoCCAESABIDCgEIEgUKAwEBARIECgIIARIECgIBARIECgIICBILCgkIAQECAQIIBAQSBgoECAgBCFEABnNjYWxlOACAwtcvAAxzY2FsZThCaWdJbnQJALYCAQCAwtcvAAdzY2FsZTE4CQC2AgEAgICQu7rWrfANAAh0aG91c2FuZADoBwAKemVyb0JpZ0ludAkAtgIBAAAACW9uZUJpZ0ludAkAtgIBAAEACnNsaXBwYWdlNEQJALYCAQkAZQIFBnNjYWxlOAkAaQIJAGgCBQZzY2FsZTgAAQUGc2NhbGU4AAVBbXVsdAIDMTAwAAVEY29udgIBMQADU0VQAgJfXwAFRU1QVFkCAAAKUG9vbEFjdGl2ZQABAApQb29sUHV0RGlzAAIADlBvb2xNYXRjaGVyRGlzAAMADFBvb2xTaHV0ZG93bgAEAA5pZHhQb29sQWRkcmVzcwABAAlpZHhQb29sU3QAAgAJaWR4TFBBc0lkAAMACWlkeEFtQXNJZAAEAAlpZHhQckFzSWQABQALaWR4QW10QXNEY20ABgANaWR4UHJpY2VBc0RjbQAHAAtpZHhJQW10QXNJZAAIAA1pZHhJUHJpY2VBc0lkAAkAD2lkeEZhY3RTdGFrQ250cgABABBpZHhGYWN0U2xpcHBDbnRyAAcAEWlkeEZhY3RHd3hSZXdDbnRyAAoAEmZlZVBlcm1pbGxlRGVmYXVsdAAAAQJ0MQIHb3JpZ1ZhbA1vcmlnU2NhbGVNdWx0CQC8AgMJALYCAQUHb3JpZ1ZhbAUHc2NhbGUxOAkAtgIBBQ1vcmlnU2NhbGVNdWx0AQJmMQIDdmFsD3Jlc3VsdFNjYWxlTXVsdAkAoAMBCQC8AgMFA3ZhbAkAtgIBBQ9yZXN1bHRTY2FsZU11bHQFB3NjYWxlMTgBAnRzAwNhbXQIcmVzU2NhbGUIY3VyU2NhbGUJAGsDBQNhbXQFCHJlc1NjYWxlBQhjdXJTY2FsZQEDYWJzAQN2YWwDCQC/AgIFCnplcm9CaWdJbnQFA3ZhbAkAvgIBBQN2YWwFA3ZhbAECZmMAAhMlc19fZmFjdG9yeUNvbnRyYWN0AQNtcGsAAhQlc19fbWFuYWdlclB1YmxpY0tleQEEcG1wawACGyVzX19wZW5kaW5nTWFuYWdlclB1YmxpY0tleQECcGwAAhElcyVzX19wcmljZV9fbGFzdAECcGgCAWgBdAkAuQkCCQDMCAICGCVzJXMlZCVkX19wcmljZV9faGlzdG9yeQkAzAgCCQCkAwEFAWgJAMwIAgkApAMBBQF0BQNuaWwFA1NFUAEDcGF1AgJ1YQR0eElkCQCsAgIJAKwCAgkArAICAgslcyVzJXNfX1BfXwUCdWECAl9fBQR0eElkAQNnYXUCAnVhBHR4SWQJAKwCAgkArAICCQCsAgICCyVzJXMlc19fR19fBQJ1YQICX18FBHR4SWQBAmFhAAIPJXNfX2Ftb3VudEFzc2V0AQJwYQACDiVzX19wcmljZUFzc2V0AQNhbXAAAgclc19fYW1wAQNhZGEAAg0lc19fYWRkb25BZGRyAA5rZXlGZWVQZXJtaWxsZQIPJXNfX2ZlZVBlcm1pbGxlAAtmZWVQZXJtaWxsZQkBC3ZhbHVlT3JFbHNlAgkAmggCBQR0aGlzBQ5rZXlGZWVQZXJtaWxsZQUSZmVlUGVybWlsbGVEZWZhdWx0AQRmY2ZnAAIRJXNfX2ZhY3RvcnlDb25maWcBBG10cGsAAhglcyVzX19tYXRjaGVyX19wdWJsaWNLZXkBAnBjAgZpQW10QXMFaVByQXMJAKwCAgkArAICCQCsAgIJAKwCAgIIJWQlZCVzX18FBmlBbXRBcwICX18FBWlQckFzAghfX2NvbmZpZwEDbWJhAQViQVN0cgkArAICAiglcyVzJXNfX21hcHBpbmdzX19iYXNlQXNzZXQyaW50ZXJuYWxJZF9fBQViQVN0cgEDYXBzAAIMJXNfX3NodXRkb3duARxrZXlBbGxvd2VkTHBTdGFibGVTY3JpcHRIYXNoAAIdJXNfX2FsbG93ZWRMcFN0YWJsZVNjcmlwdEhhc2gBA3RvZQMDb3JWBnNlbmRyVgZtYXRjaFYJAAIBCQCsAgIJAKwCAgkArAICCQCsAgIJAKwCAgIRRmFpbGVkOiBvcmRWYWxpZD0JAKUDAQUDb3JWAgsgc25kclZhbGlkPQkApQMBBQZzZW5kclYCDCBtdGNoclZhbGlkPQkApQMBBQZtYXRjaFYBA3N0cgEDdmFsBAckbWF0Y2gwBQN2YWwDCQABAgUHJG1hdGNoMAIGU3RyaW5nBAZ2YWxTdHIFByRtYXRjaDAFBnZhbFN0cgkAAgECE2ZhaWwgY2FzdCB0byBTdHJpbmcBBHN0cmYCBGFkZHIDa2V5CQETdmFsdWVPckVycm9yTWVzc2FnZQIJAJ0IAgUEYWRkcgUDa2V5CQC5CQIJAMwIAgIKbWFuZGF0b3J5IAkAzAgCCQClCAEFBGFkZHIJAMwIAgIBLgkAzAgCBQNrZXkJAMwIAgIMIG5vdCBkZWZpbmVkBQNuaWwCAAEEaW50ZgIEYWRkcgNrZXkJARN2YWx1ZU9yRXJyb3JNZXNzYWdlAgkAmggCBQRhZGRyBQNrZXkJALkJAgkAzAgCAgptYW5kYXRvcnkgCQDMCAIJAKUIAQUEYWRkcgkAzAgCAgEuCQDMCAIFA2tleQkAzAgCAgwgbm90IGRlZmluZWQFA25pbAIAAANmY2EJARFAZXh0ck5hdGl2ZSgxMDYyKQEJAQRzdHJmAgUEdGhpcwkBAmZjAAABQQkBBHN0cmYCBQR0aGlzCQEDYW1wAAEDaWdzAAkBC3ZhbHVlT3JFbHNlAgkAmwgCBQNmY2EJAQNhcHMABwECbXAACQDZBAEJAQRzdHJmAgUDZmNhCQEEbXRwawAADm1hdGNoZXJBZGRyZXNzCQCnCAEJAQJtcAABA2dwYwAEBWFtdEFzCQEEc3RyZgIFBHRoaXMJAQJhYQAEB3ByaWNlQXMJAQRzdHJmAgUEdGhpcwkBAnBhAAQIaVByaWNlQXMJAQRpbnRmAgUDZmNhCQEDbWJhAQUHcHJpY2VBcwQGaUFtdEFzCQEEaW50ZgIFA2ZjYQkBA21iYQEFBWFtdEFzCQC1CQIJAQRzdHJmAgUDZmNhCQECcGMCCQCkAwEFBmlBbXRBcwkApAMBBQhpUHJpY2VBcwUDU0VQAQNnZmMACQC1CQIJAQRzdHJmAgUDZmNhCQEEZmNmZwAFA1NFUAERZGF0YVB1dEFjdGlvbkluZm8KDWluQW10QXNzZXRBbXQPaW5QcmljZUFzc2V0QW10CG91dExwQW10BXByaWNlCnNsaXBCeVVzZXIMc2xpcHBhZ2VSZWFsCHR4SGVpZ2h0C3R4VGltZXN0YW1wDHNsaXBhZ2VBbUFtdAxzbGlwYWdlUHJBbXQJALkJAgkAzAgCAhQlZCVkJWQlZCVkJWQlZCVkJWQlZAkAzAgCCQCkAwEFDWluQW10QXNzZXRBbXQJAMwIAgkApAMBBQ9pblByaWNlQXNzZXRBbXQJAMwIAgkApAMBBQhvdXRMcEFtdAkAzAgCCQCkAwEFBXByaWNlCQDMCAIJAKQDAQUKc2xpcEJ5VXNlcgkAzAgCCQCkAwEFDHNsaXBwYWdlUmVhbAkAzAgCCQCkAwEFCHR4SGVpZ2h0CQDMCAIJAKQDAQULdHhUaW1lc3RhbXAJAMwIAgkApAMBBQxzbGlwYWdlQW1BbXQJAMwIAgkApAMBBQxzbGlwYWdlUHJBbXQFA25pbAUDU0VQARFkYXRhR2V0QWN0aW9uSW5mbwYOb3V0QW10QXNzZXRBbXQQb3V0UHJpY2VBc3NldEFtdAdpbkxwQW10BXByaWNlCHR4SGVpZ2h0C3R4VGltZXN0YW1wCQC5CQIJAMwIAgIMJWQlZCVkJWQlZCVkCQDMCAIJAKQDAQUOb3V0QW10QXNzZXRBbXQJAMwIAgkApAMBBRBvdXRQcmljZUFzc2V0QW10CQDMCAIJAKQDAQUHaW5McEFtdAkAzAgCCQCkAwEFBXByaWNlCQDMCAIJAKQDAQUIdHhIZWlnaHQJAMwIAgkApAMBBQt0eFRpbWVzdGFtcAUDbmlsBQNTRVABDWdldEFjY0JhbGFuY2UBB2Fzc2V0SWQDCQAAAgUHYXNzZXRJZAIFV0FWRVMICQDvBwEFBHRoaXMJYXZhaWxhYmxlCQDwBwIFBHRoaXMJANkEAQUHYXNzZXRJZAEEY3BiaQIIcHJBbXRYMTgIYW1BbXRYMTgJALwCAwUIcHJBbXRYMTgFB3NjYWxlMTgFCGFtQW10WDE4AQN2YWQDAkExAkEyCHNsaXBwYWdlBARkaWZmCQC8AgMJALgCAgUCQTEFAkEyBQxzY2FsZThCaWdJbnQFAkEyBARwYXNzCQC/AgIJALgCAgUIc2xpcHBhZ2UJAQNhYnMBBQRkaWZmBQp6ZXJvQmlnSW50AwkBASEBBQRwYXNzCQACAQkArAICAgpCaWcgc2xwZzogCQCmAwEFBGRpZmYJAJQKAgUEcGFzcwkAmQMBCQDMCAIFAkExCQDMCAIFAkEyBQNuaWwBAnZkAwJEMQJEMARzbHBnBARkaWZmCQC8AgMFAkQwBQxzY2FsZThCaWdJbnQFAkQxBARmYWlsCQC/AgIFBHNscGcFBGRpZmYDAwUEZmFpbAYJAL8CAgUCRDAFAkQxCQACAQkArAICCQCsAgIJAKwCAgkArAICCQCsAgIJAKwCAgkApgMBBQJEMAIBIAkApgMBBQJEMQIBIAkApgMBBQRkaWZmAgEgCQCmAwEFBHNscGcFBGZhaWwBA3BjcAQKYW1Bc3NldERjbQpwckFzc2V0RGNtBWFtQW10BXByQW10BAthbXRBc0FtdFgxOAkBAnQxAgUFYW1BbXQFCmFtQXNzZXREY20ECnByQXNBbXRYMTgJAQJ0MQIFBXByQW10BQpwckFzc2V0RGNtCQEEY3BiaQIFCnByQXNBbXRYMTgFC2FtdEFzQW10WDE4AQpjYWxjUHJpY2VzAwVhbUFtdAVwckFtdAVscEFtdAQDY2ZnCQEDZ3BjAAQIYW10QXNEY20JAQ1wYXJzZUludFZhbHVlAQkAkQMCBQNjZmcFC2lkeEFtdEFzRGNtBAdwckFzRGNtCQENcGFyc2VJbnRWYWx1ZQEJAJEDAgUDY2ZnBQ1pZHhQcmljZUFzRGNtBAhwcmljZVgxOAkBA3BjcAQFCGFtdEFzRGNtBQdwckFzRGNtBQVhbUFtdAUFcHJBbXQECGFtQW10WDE4CQECdDECBQVhbUFtdAUIYW10QXNEY20ECHByQW10WDE4CQECdDECBQVwckFtdAUHcHJBc0RjbQQIbHBBbXRYMTgJAQJ0MQIFBWxwQW10BQZzY2FsZTgEDWxwUHJJbkFtQXNYMTgJAQRjcGJpAgUIYW1BbXRYMTgFCGxwQW10WDE4BA1scFBySW5QckFzWDE4CQEEY3BiaQIFCHByQW10WDE4BQhscEFtdFgxOAkAzAgCBQhwcmljZVgxOAkAzAgCBQ1scFBySW5BbUFzWDE4CQDMCAIFDWxwUHJJblByQXNYMTgFA25pbAEPY2FsY3VsYXRlUHJpY2VzAwVhbUFtdAVwckFtdAVscEFtdAQBcAkBCmNhbGNQcmljZXMDBQVhbUFtdAUFcHJBbXQFBWxwQW10CQDMCAIJAQJmMQIJAJEDAgUBcAAABQZzY2FsZTgJAMwIAgkBAmYxAgkAkQMCBQFwAAEFBnNjYWxlOAkAzAgCCQECZjECCQCRAwIFAXAAAgUGc2NhbGU4BQNuaWwBA2VnbwQGdHhJZDU4CnBtdEFzc2V0SWQIcG10THBBbXQLdXNlckFkZHJlc3MEA2NmZwkBA2dwYwAEBGxwSWQJAJEDAgUDY2ZnBQlpZHhMUEFzSWQEBGFtSWQJAJEDAgUDY2ZnBQlpZHhBbUFzSWQEBHBySWQJAJEDAgUDY2ZnBQlpZHhQckFzSWQEBWFtRGNtCQENcGFyc2VJbnRWYWx1ZQEJAJEDAgUDY2ZnBQtpZHhBbXRBc0RjbQQFcHJEY20JAQ1wYXJzZUludFZhbHVlAQkAkQMCBQNjZmcFDWlkeFByaWNlQXNEY20EA3N0cwkAkQMCBQNjZmcFCWlkeFBvb2xTdAQHbHBFbWlzcwgJARN2YWx1ZU9yRXJyb3JNZXNzYWdlAgkA7AcBCQDZBAEFBGxwSWQCC1dyb25nIExQIGlkCHF1YW50aXR5AwkBAiE9AgUEbHBJZAUKcG10QXNzZXRJZAkAAgECD1dyb25nIHBtdCBhc3NldAQJYW1CYWxhbmNlCQENZ2V0QWNjQmFsYW5jZQEFBGFtSWQEDGFtQmFsYW5jZVgxOAkBAnQxAgUJYW1CYWxhbmNlBQVhbURjbQQJcHJCYWxhbmNlCQENZ2V0QWNjQmFsYW5jZQEFBHBySWQEDHByQmFsYW5jZVgxOAkBAnQxAgUJcHJCYWxhbmNlBQVwckRjbQQLY3VyUHJpY2VYMTgJAQRjcGJpAgUMcHJCYWxhbmNlWDE4BQxhbUJhbGFuY2VYMTgECGN1clByaWNlCQECZjECBQtjdXJQcmljZVgxOAUGc2NhbGU4BAtwbXRMcEFtdFgxOAkBAnQxAgUIcG10THBBbXQFBnNjYWxlOAQKbHBFbWlzc1gxOAkBAnQxAgUHbHBFbWlzcwUGc2NhbGU4BAtvdXRBbUFtdFgxOAkAvAIDBQxhbUJhbGFuY2VYMTgFC3BtdExwQW10WDE4BQpscEVtaXNzWDE4BAtvdXRQckFtdFgxOAkAvAIDBQxwckJhbGFuY2VYMTgFC3BtdExwQW10WDE4BQpscEVtaXNzWDE4BAhvdXRBbUFtdAkBAmYxAgULb3V0QW1BbXRYMTgFBWFtRGNtBAhvdXRQckFtdAkBAmYxAgULb3V0UHJBbXRYMTgFBXByRGNtBAVzdGF0ZQMJAAACBQZ0eElkNTgCAAUDbmlsCQDMCAIJAQ5TY3JpcHRUcmFuc2ZlcgMFC3VzZXJBZGRyZXNzBQhvdXRBbUFtdAMJAAACBQRhbUlkAgVXQVZFUwUEdW5pdAkA2QQBBQRhbUlkCQDMCAIJAQ5TY3JpcHRUcmFuc2ZlcgMFC3VzZXJBZGRyZXNzBQhvdXRQckFtdAMJAAACBQRwcklkAgVXQVZFUwUEdW5pdAkA2QQBBQRwcklkCQDMCAIJAQtTdHJpbmdFbnRyeQIJAQNnYXUCCQClCAEFC3VzZXJBZGRyZXNzBQZ0eElkNTgJARFkYXRhR2V0QWN0aW9uSW5mbwYFCG91dEFtQW10BQhvdXRQckFtdAUIcG10THBBbXQFCGN1clByaWNlBQZoZWlnaHQIBQlsYXN0QmxvY2sJdGltZXN0YW1wCQDMCAIJAQxJbnRlZ2VyRW50cnkCCQECcGwABQhjdXJQcmljZQkAzAgCCQEMSW50ZWdlckVudHJ5AgkBAnBoAgUGaGVpZ2h0CAUJbGFzdEJsb2NrCXRpbWVzdGFtcAUIY3VyUHJpY2UFA25pbAkAnAoKBQhvdXRBbUFtdAUIb3V0UHJBbXQFBGFtSWQFBHBySWQFCWFtQmFsYW5jZQUJcHJCYWxhbmNlBQdscEVtaXNzBQtjdXJQcmljZVgxOAUDc3RzBQVzdGF0ZQEDZXBvDAZ0eElkNTgIc2xpcHBhZ2UHaW5BbUFtdAZpbkFtSWQHaW5QckFtdAZpblBySWQLdXNlckFkZHJlc3MGaXNFdmFsBmVtaXRMcAppc09uZUFzc2V0BnBtdEFtdAVwbXRJZAQDY2ZnCQEDZ3BjAAQEbHBJZAkA2QQBCQCRAwIFA2NmZwUJaWR4TFBBc0lkBAdhbUlkU3RyCQCRAwIFA2NmZwUJaWR4QW1Bc0lkBAdwcklkU3RyCQCRAwIFA2NmZwUJaWR4UHJBc0lkBAlpbkFtSWRTdHIJAJEDAgUDY2ZnBQtpZHhJQW10QXNJZAQJaW5QcklkU3RyCQCRAwIFA2NmZwUNaWR4SVByaWNlQXNJZAQGYW10RGNtCQENcGFyc2VJbnRWYWx1ZQEJAJEDAgUDY2ZnBQtpZHhBbXRBc0RjbQQIcHJpY2VEY20JAQ1wYXJzZUludFZhbHVlAQkAkQMCBQNjZmcFDWlkeFByaWNlQXNEY20EA3N0cwkAkQMCBQNjZmcFCWlkeFBvb2xTdAQEbHBFbQgJARN2YWx1ZU9yRXJyb3JNZXNzYWdlAgkA7AcBBQRscElkAghXciBscCBhcwhxdWFudGl0eQQJYW1CYWxhbmNlAwUGaXNFdmFsCQENZ2V0QWNjQmFsYW5jZQEFB2FtSWRTdHIDAwUKaXNPbmVBc3NldAkAAAIFBXBtdElkBQdhbUlkU3RyBwkAZQIJAQ1nZXRBY2NCYWxhbmNlAQUHYW1JZFN0cgUGcG10QW10AwUKaXNPbmVBc3NldAkBDWdldEFjY0JhbGFuY2UBBQdhbUlkU3RyCQBlAgkBDWdldEFjY0JhbGFuY2UBBQdhbUlkU3RyBQdpbkFtQW10BAlwckJhbGFuY2UDBQZpc0V2YWwJAQ1nZXRBY2NCYWxhbmNlAQUHcHJJZFN0cgMDBQppc09uZUFzc2V0CQAAAgUFcG10SWQFB3BySWRTdHIHCQBlAgkBDWdldEFjY0JhbGFuY2UBBQdwcklkU3RyBQZwbXRBbXQDBQppc09uZUFzc2V0CQENZ2V0QWNjQmFsYW5jZQEFB3BySWRTdHIJAGUCCQENZ2V0QWNjQmFsYW5jZQEFB3BySWRTdHIFB2luUHJBbXQED2luQW1Bc3NldEFtdFgxOAkBAnQxAgUHaW5BbUFtdAUGYW10RGNtBA9pblByQXNzZXRBbXRYMTgJAQJ0MQIFB2luUHJBbXQFCHByaWNlRGNtBAx1c2VyUHJpY2VYMTgJAQRjcGJpAgUPaW5QckFzc2V0QW10WDE4BQ9pbkFtQXNzZXRBbXRYMTgEDGFtQmFsYW5jZVgxOAkBAnQxAgUJYW1CYWxhbmNlBQZhbXREY20EDHByQmFsYW5jZVgxOAkBAnQxAgUJcHJCYWxhbmNlBQhwcmljZURjbQQBcgMJAAACBQRscEVtAAAEC2N1clByaWNlWDE4BQp6ZXJvQmlnSW50BAtzbGlwcGFnZVgxOAUKemVyb0JpZ0ludAQIbHBBbXRYMTgJAHYGCQC5AgIFD2luQW1Bc3NldEFtdFgxOAUPaW5QckFzc2V0QW10WDE4AAAJALYCAQAFAAEAAAUERE9XTgkAlwoFCQECZjECBQhscEFtdFgxOAUGc2NhbGU4CQECZjECBQ9pbkFtQXNzZXRBbXRYMTgFBmFtdERjbQkBAmYxAgUPaW5QckFzc2V0QW10WDE4BQhwcmljZURjbQkBBGNwYmkCCQC3AgIFDHByQmFsYW5jZVgxOAUPaW5QckFzc2V0QW10WDE4CQC3AgIFDGFtQmFsYW5jZVgxOAUPaW5BbUFzc2V0QW10WDE4BQtzbGlwcGFnZVgxOAQLY3VyUHJpY2VYMTgJAQRjcGJpAgUMcHJCYWxhbmNlWDE4BQxhbUJhbGFuY2VYMTgED3NsaXBwYWdlUmVhbFgxOAkAvAIDCQEDYWJzAQkAuAICBQtjdXJQcmljZVgxOAUMdXNlclByaWNlWDE4BQdzY2FsZTE4BQtjdXJQcmljZVgxOAQLc2xpcHBhZ2VYMTgJAQJ0MQIFCHNsaXBwYWdlBQZzY2FsZTgDAwkBAiE9AgULY3VyUHJpY2VYMTgFCnplcm9CaWdJbnQJAL8CAgUPc2xpcHBhZ2VSZWFsWDE4BQtzbGlwcGFnZVgxOAcJAAIBCQCsAgIJAKwCAgkArAICAg9QcmljZSBzbGlwcGFnZSAJAKYDAQUPc2xpcHBhZ2VSZWFsWDE4AgMgPiAJAKYDAQULc2xpcHBhZ2VYMTgEDWxwRW1pc3Npb25YMTgJAQJ0MQIFBGxwRW0FBnNjYWxlOAQKcHJWaWFBbVgxOAkAvAIDBQ9pbkFtQXNzZXRBbXRYMTgFC2N1clByaWNlWDE4BQdzY2FsZTE4BAphbVZpYVByWDE4CQC8AgMFD2luUHJBc3NldEFtdFgxOAUHc2NhbGUxOAULY3VyUHJpY2VYMTgEDGV4cGVjdGVkQW10cwMJAL8CAgUKcHJWaWFBbVgxOAUPaW5QckFzc2V0QW10WDE4CQCUCgIFCmFtVmlhUHJYMTgFD2luUHJBc3NldEFtdFgxOAkAlAoCBQ9pbkFtQXNzZXRBbXRYMTgFCnByVmlhQW1YMTgEEWV4cEFtdEFzc2V0QW10WDE4CAUMZXhwZWN0ZWRBbXRzAl8xBBNleHBQcmljZUFzc2V0QW10WDE4CAUMZXhwZWN0ZWRBbXRzAl8yBAhscEFtdFgxOAkAvAIDBQ1scEVtaXNzaW9uWDE4BRNleHBQcmljZUFzc2V0QW10WDE4BQxwckJhbGFuY2VYMTgJAJcKBQkBAmYxAgUIbHBBbXRYMTgFBnNjYWxlOAkBAmYxAgURZXhwQW10QXNzZXRBbXRYMTgFBmFtdERjbQkBAmYxAgUTZXhwUHJpY2VBc3NldEFtdFgxOAUIcHJpY2VEY20FC2N1clByaWNlWDE4BQtzbGlwcGFnZVgxOAQJY2FsY0xwQW10CAUBcgJfMQQOY2FsY0FtQXNzZXRQbXQIBQFyAl8yBA5jYWxjUHJBc3NldFBtdAgFAXICXzMECGN1clByaWNlCQECZjECCAUBcgJfNAUGc2NhbGU4BAxzbGlwcGFnZUNhbGMJAQJmMQIIBQFyAl81BQZzY2FsZTgDCQBnAgAABQljYWxjTHBBbXQJAAIBAgdMUCA8PSAwBAllbWl0THBBbXQDCQEBIQEFBmVtaXRMcAAABQljYWxjTHBBbXQEBmFtRGlmZgkAZQIFB2luQW1BbXQFDmNhbGNBbUFzc2V0UG10BAZwckRpZmYJAGUCBQdpblByQW10BQ5jYWxjUHJBc3NldFBtdAQNJHQwMTU1ODcxNTkzMgMDBQppc09uZUFzc2V0CQAAAgUFcG10SWQFB2FtSWRTdHIHCQCUCgIFBnBtdEFtdAAAAwMFCmlzT25lQXNzZXQJAAACBQVwbXRJZAUHcHJJZFN0cgcJAJQKAgAABQZwbXRBbXQJAJQKAgUOY2FsY0FtQXNzZXRQbXQFDmNhbGNQckFzc2V0UG10BAp3cml0ZUFtQW10CAUNJHQwMTU1ODcxNTkzMgJfMQQKd3JpdGVQckFtdAgFDSR0MDE1NTg3MTU5MzICXzIEC2NvbW1vblN0YXRlCQDMCAIJAQxJbnRlZ2VyRW50cnkCCQECcGwABQhjdXJQcmljZQkAzAgCCQEMSW50ZWdlckVudHJ5AgkBAnBoAgUGaGVpZ2h0CAUJbGFzdEJsb2NrCXRpbWVzdGFtcAUIY3VyUHJpY2UJAMwIAgkBC1N0cmluZ0VudHJ5AgkBA3BhdQIFC3VzZXJBZGRyZXNzBQZ0eElkNTgJARFkYXRhUHV0QWN0aW9uSW5mbwoFCndyaXRlQW1BbXQFCndyaXRlUHJBbXQFCWVtaXRMcEFtdAUIY3VyUHJpY2UFCHNsaXBwYWdlBQxzbGlwcGFnZUNhbGMFBmhlaWdodAgFCWxhc3RCbG9jawl0aW1lc3RhbXAFBmFtRGlmZgUGcHJEaWZmBQNuaWwJAJ8KDQUJY2FsY0xwQW10BQllbWl0THBBbXQFCGN1clByaWNlBQlhbUJhbGFuY2UFCXByQmFsYW5jZQUEbHBFbQUEbHBJZAUDc3RzBQtjb21tb25TdGF0ZQUGYW1EaWZmBQZwckRpZmYFBmluQW1JZAUGaW5QcklkAQNtb2EBBW9yZGVyBANjZmcJAQNncGMABAdhbXRBc0lkCQCRAwIFA2NmZwUJaWR4QW1Bc0lkBAZwckFzSWQJAJEDAgUDY2ZnBQlpZHhQckFzSWQEA3N0cwkBDXBhcnNlSW50VmFsdWUBCQCRAwIFA2NmZwUJaWR4UG9vbFN0BAhhbXRBc0RjbQkBDXBhcnNlSW50VmFsdWUBCQCRAwIFA2NmZwULaWR4QW10QXNEY20EB3ByQXNEY20JAQ1wYXJzZUludFZhbHVlAQkAkQMCBQNjZmcFDWlkeFByaWNlQXNEY20ED2FjY0FtdEFzQmFsYW5jZQkBDWdldEFjY0JhbGFuY2UBBQdhbXRBc0lkBA5hY2NQckFzQmFsYW5jZQkBDWdldEFjY0JhbGFuY2UBBQZwckFzSWQEC2N1clByaWNlWDE4AwkAAAIIBQVvcmRlcglvcmRlclR5cGUFA0J1eQkBA3BjcAQFCGFtdEFzRGNtBQdwckFzRGNtCQBkAgUPYWNjQW10QXNCYWxhbmNlCAUFb3JkZXIGYW1vdW50BQ5hY2NQckFzQmFsYW5jZQkBA3BjcAQFCGFtdEFzRGNtBQdwckFzRGNtCQBlAgUPYWNjQW10QXNCYWxhbmNlCAUFb3JkZXIGYW1vdW50BQ5hY2NQckFzQmFsYW5jZQQIY3VyUHJpY2UJAQJmMQIFC2N1clByaWNlWDE4BQZzY2FsZTgDAwMJAQNpZ3MABgkAAAIFA3N0cwUOUG9vbE1hdGNoZXJEaXMGCQAAAgUDc3RzBQxQb29sU2h1dGRvd24JAAIBAg1BZG1pbiBibG9ja2VkBApvckFtdEFzc2V0CAgFBW9yZGVyCWFzc2V0UGFpcgthbW91bnRBc3NldAQKb3JBbXRBc1N0cgMJAAACBQpvckFtdEFzc2V0BQR1bml0AgVXQVZFUwkA2AQBCQEFdmFsdWUBBQpvckFtdEFzc2V0BAlvclByQXNzZXQICAUFb3JkZXIJYXNzZXRQYWlyCnByaWNlQXNzZXQECW9yUHJBc1N0cgMJAAACBQlvclByQXNzZXQFBHVuaXQCBVdBVkVTCQDYBAEJAQV2YWx1ZQEFCW9yUHJBc3NldAMDCQECIT0CBQpvckFtdEFzU3RyBQdhbXRBc0lkBgkBAiE9AgUJb3JQckFzU3RyBQZwckFzSWQJAAIBAglXciBhc3NldHMECm9yZGVyUHJpY2UIBQVvcmRlcgVwcmljZQQIcHJpY2VEY20JAGsDBQZzY2FsZTgFB3ByQXNEY20FCGFtdEFzRGNtBA5jYXN0T3JkZXJQcmljZQkBAnRzAwUKb3JkZXJQcmljZQUGc2NhbGU4BQhwcmljZURjbQQRaXNPcmRlclByaWNlVmFsaWQDCQAAAggFBW9yZGVyCW9yZGVyVHlwZQUDQnV5CQBnAgUIY3VyUHJpY2UFDmNhc3RPcmRlclByaWNlCQBnAgUOY2FzdE9yZGVyUHJpY2UFCGN1clByaWNlBgECY2cBAWkDCQECIT0CCQCQAwEIBQFpCHBheW1lbnRzAAEJAAIBAgoxIHBtbnQgZXhwBANwbXQJAQV2YWx1ZQEJAJEDAggFAWkIcGF5bWVudHMAAAQKcG10QXNzZXRJZAkBBXZhbHVlAQgFA3BtdAdhc3NldElkBAZwbXRBbXQIBQNwbXQGYW1vdW50BAFyCQEDZWdvBAkA2AQBCAUBaQ10cmFuc2FjdGlvbklkCQDYBAEFCnBtdEFzc2V0SWQFBnBtdEFtdAgFAWkGY2FsbGVyBAhvdXRBbUFtdAgFAXICXzEECG91dFByQW10CAUBcgJfMgQDc3RzCQENcGFyc2VJbnRWYWx1ZQEIBQFyAl85BAVzdGF0ZQgFAXIDXzEwAwMJAQNpZ3MABgkAAAIFA3N0cwUMUG9vbFNodXRkb3duCQACAQkArAICAg9BZG1pbiBibG9ja2VkOiAJAKQDAQUDc3RzCQCXCgUFCG91dEFtQW10BQhvdXRQckFtdAUGcG10QW10BQpwbXRBc3NldElkBQVzdGF0ZQECY3AJBmNhbGxlcgR0eElkB2FtQXNQbXQHcHJBc1BtdAhzbGlwcGFnZQZlbWl0THAKaXNPbmVBc3NldAZwbXRBbXQFcG10SWQEAXIJAQNlcG8MBQR0eElkBQhzbGlwcGFnZQgJAQV2YWx1ZQEFB2FtQXNQbXQGYW1vdW50CAkBBXZhbHVlAQUHYW1Bc1BtdAdhc3NldElkCAkBBXZhbHVlAQUHcHJBc1BtdAZhbW91bnQICQEFdmFsdWUBBQdwckFzUG10B2Fzc2V0SWQFBmNhbGxlcgcFBmVtaXRMcAUKaXNPbmVBc3NldAUGcG10QW10BQVwbXRJZAQDc3RzCQENcGFyc2VJbnRWYWx1ZQEIBQFyAl84AwMDCQEDaWdzAAYJAAACBQNzdHMFClBvb2xQdXREaXMGCQAAAgUDc3RzBQxQb29sU2h1dGRvd24JAAIBCQCsAgICCEJsb2NrZWQ6CQCkAwEFA3N0cwUBcgEHdGFrZUZlZQEGYW1vdW50BANmZWUJAGsDBQZhbW91bnQFC2ZlZVBlcm1pbGxlBQh0aG91c2FuZAkAlAoCCQBlAgUGYW1vdW50BQNmZWUFA2ZlZQEBbQAEByRtYXRjaDAJAKIIAQkBA21wawADCQABAgUHJG1hdGNoMAIGU3RyaW5nBAFzBQckbWF0Y2gwCQDZBAEFAXMDCQABAgUHJG1hdGNoMAIEVW5pdAUEdW5pdAkAAgECC01hdGNoIGVycm9yAQJwbQAEByRtYXRjaDAJAKIIAQkBBHBtcGsAAwkAAQIFByRtYXRjaDACBlN0cmluZwQBcwUHJG1hdGNoMAkA2QQBBQFzAwkAAQIFByRtYXRjaDACBFVuaXQFBHVuaXQJAAIBAgtNYXRjaCBlcnJvcgACcGQJAAIBAhFQZXJtaXNzaW9uIGRlbmllZAECbW0BAWkEByRtYXRjaDAJAQFtAAMJAAECBQckbWF0Y2gwAgpCeXRlVmVjdG9yBAJwawUHJG1hdGNoMAMJAAACCAUBaQ9jYWxsZXJQdWJsaWNLZXkFAnBrBgUCcGQDCQABAgUHJG1hdGNoMAIEVW5pdAMJAAACCAUBaQZjYWxsZXIFBHRoaXMGBQJwZAkAAgECC01hdGNoIGVycm9yFQFpAQtjb25zdHJ1Y3RvcgECZmMEAWMJAQJtbQEFAWkDCQAAAgUBYwUBYwkAzAgCCQELU3RyaW5nRW50cnkCCQECZmMABQJmYwUDbmlsCQACAQIkU3RyaWN0IHZhbHVlIGlzIG5vdCBlcXVhbCB0byBpdHNlbGYuAWkBCnNldE1hbmFnZXIBF3BlbmRpbmdNYW5hZ2VyUHVibGljS2V5BAFjCQECbW0BBQFpAwkAAAIFAWMFAWMEAmNtCQDZBAEFF3BlbmRpbmdNYW5hZ2VyUHVibGljS2V5AwkAAAIFAmNtBQJjbQkAzAgCCQELU3RyaW5nRW50cnkCCQEEcG1wawAFF3BlbmRpbmdNYW5hZ2VyUHVibGljS2V5BQNuaWwJAAIBAiRTdHJpY3QgdmFsdWUgaXMgbm90IGVxdWFsIHRvIGl0c2VsZi4JAAIBAiRTdHJpY3QgdmFsdWUgaXMgbm90IGVxdWFsIHRvIGl0c2VsZi4BaQEOY29uZmlybU1hbmFnZXIABAFwCQECcG0ABANocG0DCQEJaXNEZWZpbmVkAQUBcAYJAAIBAhJObyBwZW5kaW5nIG1hbmFnZXIDCQAAAgUDaHBtBQNocG0EA2NwbQMJAAACCAUBaQ9jYWxsZXJQdWJsaWNLZXkJAQV2YWx1ZQEFAXAGCQACAQIbWW91IGFyZSBub3QgcGVuZGluZyBtYW5hZ2VyAwkAAAIFA2NwbQUDY3BtCQDMCAIJAQtTdHJpbmdFbnRyeQIJAQNtcGsACQDYBAEJAQV2YWx1ZQEFAXAJAMwIAgkBC0RlbGV0ZUVudHJ5AQkBBHBtcGsABQNuaWwJAAIBAiRTdHJpY3QgdmFsdWUgaXMgbm90IGVxdWFsIHRvIGl0c2VsZi4JAAIBAiRTdHJpY3QgdmFsdWUgaXMgbm90IGVxdWFsIHRvIGl0c2VsZi4BaQEDcHV0AgRzbGlwCWF1dG9TdGFrZQQHZmFjdENmZwkBA2dmYwAEC3N0YWtpbmdDbnRyCQETdmFsdWVPckVycm9yTWVzc2FnZQIJAKYIAQkAkQMCBQdmYWN0Q2ZnBQ9pZHhGYWN0U3Rha0NudHICCldyIHN0IGFkZHIECHNsaXBDbnRyCQETdmFsdWVPckVycm9yTWVzc2FnZQIJAKYIAQkAkQMCBQdmYWN0Q2ZnBRBpZHhGYWN0U2xpcHBDbnRyAgpXciBzbCBhZGRyAwkAZgIAAAUEc2xpcAkAAgECDldyb25nIHNsaXBwYWdlAwkBAiE9AgkAkAMBCAUBaQhwYXltZW50cwACCQACAQIMMiBwbW50cyBleHBkBAFlCQECY3AJCQClCAEIBQFpBmNhbGxlcgkA2AQBCAUBaQ10cmFuc2FjdGlvbklkCQEPQXR0YWNoZWRQYXltZW50AggJAQV2YWx1ZQEJAJEDAggFAWkIcGF5bWVudHMAAAdhc3NldElkCAkBBXZhbHVlAQkAkQMCCAUBaQhwYXltZW50cwAABmFtb3VudAkAkQMCCAUBaQhwYXltZW50cwABBQRzbGlwBgcAAAIABAllbWl0THBBbXQIBQFlAl8yBAlscEFzc2V0SWQIBQFlAl83BAVzdGF0ZQgFAWUCXzkEBmFtRGlmZggFAWUDXzEwBAZwckRpZmYIBQFlA18xMQQEYW1JZAgFAWUDXzEyBARwcklkCAUBZQNfMTMEAXIJAPwHBAUDZmNhAgRlbWl0CQDMCAIFCWVtaXRMcEFtdAUDbmlsBQNuaWwDCQAAAgUBcgUBcgQCZWwEByRtYXRjaDAFAXIDCQABAgUHJG1hdGNoMAIHQWRkcmVzcwQGbGVnYWN5BQckbWF0Y2gwCQD8BwQFBmxlZ2FjeQIEZW1pdAkAzAgCBQllbWl0THBBbXQFA25pbAUDbmlsBQR1bml0AwkAAAIFAmVsBQJlbAQCc2EDCQBmAgUGYW1EaWZmAAAJAPwHBAUIc2xpcENudHICA3B1dAUDbmlsCQDMCAIJAQ9BdHRhY2hlZFBheW1lbnQCBQRhbUlkBQZhbURpZmYFA25pbAUDbmlsAwkAAAIFAnNhBQJzYQQCc3ADCQBmAgUGcHJEaWZmAAAJAPwHBAUIc2xpcENudHICA3B1dAUDbmlsCQDMCAIJAQ9BdHRhY2hlZFBheW1lbnQCBQRwcklkBQZwckRpZmYFA25pbAUDbmlsAwkAAAIFAnNwBQJzcAQIbHBUcm5zZnIDBQlhdXRvU3Rha2UEAnNzCQD8BwQFC3N0YWtpbmdDbnRyAgVzdGFrZQUDbmlsCQDMCAIJAQ9BdHRhY2hlZFBheW1lbnQCBQlscEFzc2V0SWQFCWVtaXRMcEFtdAUDbmlsAwkAAAIFAnNzBQJzcwUDbmlsCQACAQIkU3RyaWN0IHZhbHVlIGlzIG5vdCBlcXVhbCB0byBpdHNlbGYuCQDMCAIJAQ5TY3JpcHRUcmFuc2ZlcgMIBQFpBmNhbGxlcgUJZW1pdExwQW10BQlscEFzc2V0SWQFA25pbAkAzggCBQVzdGF0ZQUIbHBUcm5zZnIJAAIBAiRTdHJpY3QgdmFsdWUgaXMgbm90IGVxdWFsIHRvIGl0c2VsZi4JAAIBAiRTdHJpY3QgdmFsdWUgaXMgbm90IGVxdWFsIHRvIGl0c2VsZi4JAAIBAiRTdHJpY3QgdmFsdWUgaXMgbm90IGVxdWFsIHRvIGl0c2VsZi4JAAIBAiRTdHJpY3QgdmFsdWUgaXMgbm90IGVxdWFsIHRvIGl0c2VsZi4BaQEJcHV0T25lVGtuBQthbUFzc2V0UGFydAtwckFzc2V0UGFydAVvdXRMcAhzbGlwcGFnZQlhdXRvU3Rha2UEA2NmZwkBA2dmYwAEC3N0YWtpbmdDbnRyCQETdmFsdWVPckVycm9yTWVzc2FnZQIJAKYIAQkAkQMCBQNjZmcFD2lkeEZhY3RTdGFrQ250cgIKV3Igc3QgYWRkcgQIc2xpcENudHIJARN2YWx1ZU9yRXJyb3JNZXNzYWdlAgkApggBCQCRAwIFA2NmZwUQaWR4RmFjdFNsaXBwQ250cgIKV3Igc2wgYWRkcgQHZ3d4Q250cgkBE3ZhbHVlT3JFcnJvck1lc3NhZ2UCCQCmCAEJAJEDAgUDY2ZnBRFpZHhGYWN0R3d4UmV3Q250cgILV3IgZ3d4IGFkZHIEB3Bvb2xDZmcJAQNncGMABARhbUlkCQCRAwIFB3Bvb2xDZmcFCWlkeEFtQXNJZAQEcHJJZAkAkQMCBQdwb29sQ2ZnBQlpZHhQckFzSWQEBWFtRGNtCQENcGFyc2VJbnRWYWx1ZQEJAJEDAgUHcG9vbENmZwULaWR4QW10QXNEY20EBXByRGNtCQENcGFyc2VJbnRWYWx1ZQEJAJEDAgUHcG9vbENmZwUNaWR4UHJpY2VBc0RjbQQFYWRkb24JAQt2YWx1ZU9yRWxzZQIJAJ0IAgUEdGhpcwkBA2FkYQACAAQLdXNlckFkZHJlc3MDCQAAAgUFYWRkb24JAKUIAQgFAWkGY2FsbGVyCAUBaQxvcmlnaW5DYWxsZXIIBQFpBmNhbGxlcgMDAwMJAGcCAAAFCHNsaXBwYWdlBgkAZwIAAAULYW1Bc3NldFBhcnQGCQBnAgAABQtwckFzc2V0UGFydAYJAGcCAAAFBW91dExwCQACAQIMV3JvbmcgcGFyYW1zAwkBAiE9AgkAkAMBCAUBaQhwYXltZW50cwABCQACAQILMSBwbW50IGV4cGQEA3BtdAkBBXZhbHVlAQkAkQMCCAUBaQhwYXltZW50cwAABApwbXRBc3NldElkCQDYBAEJAQV2YWx1ZQEIBQNwbXQHYXNzZXRJZAQQcGF5bWVudEFtb3VudFJhdwgFA3BtdAZhbW91bnQEDSR0MDI0NTQ5MjQ2MDEJAQd0YWtlRmVlAQUQcGF5bWVudEFtb3VudFJhdwQGcG10QW10CAUNJHQwMjQ1NDkyNDYwMQJfMQQJZmVlQW1vdW50CAUNJHQwMjQ1NDkyNDYwMQJfMgMJAGYCAICt4gQFEHBheW1lbnRBbW91bnRSYXcJAAIBAg1Xcm9uZyBwbXQgYW10BAlhbUJhbGFuY2UJAQ1nZXRBY2NCYWxhbmNlAQUEYW1JZAQJcHJCYWxhbmNlCQENZ2V0QWNjQmFsYW5jZQEFBHBySWQEDSR0MDI0NzYxMjUzMzcDCQAAAgUKcG10QXNzZXRJZAUEYW1JZAMDCQBmAgUGcG10QW10BQlhbUJhbGFuY2UGCQBmAgULYW1Bc3NldFBhcnQFBnBtdEFtdAkAAgECFmludmFsaWQgcGF5bWVudCBhbW91bnQJAJgKBgkAZQIFCWFtQmFsYW5jZQUGcG10QW10BQlwckJhbGFuY2UJAGUCBQZwbXRBbXQFC2FtQXNzZXRQYXJ0BQtwckFzc2V0UGFydAAAAAADCQAAAgUKcG10QXNzZXRJZAUEcHJJZAMDCQBmAgUGcG10QW10BQlwckJhbGFuY2UGCQBmAgULcHJBc3NldFBhcnQFBnBtdEFtdAkAAgECFmludmFsaWQgcGF5bWVudCBhbW91bnQJAJgKBgUJYW1CYWxhbmNlCQBlAgUJcHJCYWxhbmNlBQZwbXRBbXQAAAAACQBlAgUGcG10QW10BQtwckFzc2V0UGFydAULYW1Bc3NldFBhcnQJAAIBAhB3cm9uZyBwbXRBc3NldElkBAxhbUJhbGFuY2VOb3cIBQ0kdDAyNDc2MTI1MzM3Al8xBAxwckJhbGFuY2VOb3cIBQ0kdDAyNDc2MTI1MzM3Al8yBAx2aXJ0U3dhcEluQW0IBQ0kdDAyNDc2MTI1MzM3Al8zBA12aXJ0U3dhcE91dFByCAUNJHQwMjQ3NjEyNTMzNwJfNAQMdmlydFN3YXBJblByCAUNJHQwMjQ3NjEyNTMzNwJfNQQNdmlydFN3YXBPdXRBbQgFDSR0MDI0NzYxMjUzMzcCXzYEAkQwCQD8BwQFB2d3eENudHICBWNhbGNECQDMCAIJAKQDAQUMYW1CYWxhbmNlTm93CQDMCAIJAKQDAQUMcHJCYWxhbmNlTm93CQDMCAIFAUEJAMwIAgUFQW11bHQJAMwIAgUFRGNvbnYFA25pbAUDbmlsBAJEMQkA/AcEBQdnd3hDbnRyAgVjYWxjRAkAzAgCCQCmAwEJALYCAQkAZQIJAGQCBQxhbUJhbGFuY2VOb3cFDHZpcnRTd2FwSW5BbQUNdmlydFN3YXBPdXRBbQkAzAgCCQCmAwEJALYCAQkAZQIJAGQCBQxwckJhbGFuY2VOb3cFDHZpcnRTd2FwSW5QcgUNdmlydFN3YXBPdXRQcgkAzAgCBQFBCQDMCAIFBUFtdWx0CQDMCAIFBURjb252BQNuaWwFA25pbAMGCQACAQkArAICCQCsAgIJAKQDAQUMYW1CYWxhbmNlTm93AgIsIAkApAMBBQxwckJhbGFuY2VOb3cEBkQwdnNEMQkBAnZkAwkApwMBCQEDc3RyAQUCRDEJAKcDAQkBA3N0cgEFAkQwBQpzbGlwcGFnZTREAwkAAAIFBkQwdnNEMQUGRDB2c0QxBAZlc3RQdXQJAQJjcAkJAKUIAQgFAWkGY2FsbGVyCQDYBAEIBQFpDXRyYW5zYWN0aW9uSWQJAQ9BdHRhY2hlZFBheW1lbnQCCQDZBAEFBGFtSWQFC2FtQXNzZXRQYXJ0CQEPQXR0YWNoZWRQYXltZW50AgkA2QQBBQRwcklkBQtwckFzc2V0UGFydAUIc2xpcHBhZ2UGBgUGcG10QW10BQpwbXRBc3NldElkBAdlc3RpbUxQCAUGZXN0UHV0Al8yBAlscEFzc2V0SWQIBQZlc3RQdXQCXzcEBXN0YXRlCAUGZXN0UHV0Al85BAZhbURpZmYIBQZlc3RQdXQDXzEwBAZwckRpZmYIBQZlc3RQdXQDXzExBAlscENhbGNSZXMJAQN2YWQDCQC2AgEFB2VzdGltTFAJALYCAQUFb3V0THAJALYCAQUIc2xpcHBhZ2UECWVtaXRMcEFtdAkAoAMBCAUJbHBDYWxjUmVzAl8yBAFlCQD8BwQFA2ZjYQIEZW1pdAkAzAgCBQllbWl0THBBbXQFA25pbAUDbmlsAwkAAAIFAWUFAWUEAmVsBAckbWF0Y2gwBQFlAwkAAQIFByRtYXRjaDACB0FkZHJlc3MEBmxlZ2FjeQUHJG1hdGNoMAkA/AcEBQZsZWdhY3kCBGVtaXQJAMwIAgUJZW1pdExwQW10BQNuaWwFA25pbAUEdW5pdAMJAAACBQJlbAUCZWwEAnNhAwkAZgIFBmFtRGlmZgAACQD8BwQFCHNsaXBDbnRyAgNwdXQFA25pbAkAzAgCCQEPQXR0YWNoZWRQYXltZW50AgkA2QQBBQRhbUlkBQZhbURpZmYFA25pbAUDbmlsAwkAAAIFAnNhBQJzYQQCc3ADCQBmAgUGcHJEaWZmAAAJAPwHBAUIc2xpcENudHICA3B1dAUDbmlsCQDMCAIJAQ9BdHRhY2hlZFBheW1lbnQCCQDZBAEFBHBySWQFBnByRGlmZgUDbmlsBQNuaWwDCQAAAgUCc3AFAnNwBAhscFRybnNmcgMFCWF1dG9TdGFrZQQCc3MJAPwHBAULc3Rha2luZ0NudHICBXN0YWtlBQNuaWwJAMwIAgkBD0F0dGFjaGVkUGF5bWVudAIFCWxwQXNzZXRJZAUJZW1pdExwQW10BQNuaWwDCQAAAgUCc3MFAnNzBQNuaWwJAAIBAiRTdHJpY3QgdmFsdWUgaXMgbm90IGVxdWFsIHRvIGl0c2VsZi4JAMwIAgkBDlNjcmlwdFRyYW5zZmVyAwgFAWkGY2FsbGVyBQllbWl0THBBbXQFCWxwQXNzZXRJZAUDbmlsBBBzZW5kRmVlVG9NYXRjaGVyAwkAZgIFCWZlZUFtb3VudAAACQDMCAIJAQ5TY3JpcHRUcmFuc2ZlcgMFDm1hdGNoZXJBZGRyZXNzBQlmZWVBbW91bnQJANkEAQUKcG10QXNzZXRJZAUDbmlsBQNuaWwJAM4IAgkAzggCBQVzdGF0ZQUIbHBUcm5zZnIFEHNlbmRGZWVUb01hdGNoZXIJAAIBAiRTdHJpY3QgdmFsdWUgaXMgbm90IGVxdWFsIHRvIGl0c2VsZi4JAAIBAiRTdHJpY3QgdmFsdWUgaXMgbm90IGVxdWFsIHRvIGl0c2VsZi4JAAIBAiRTdHJpY3QgdmFsdWUgaXMgbm90IGVxdWFsIHRvIGl0c2VsZi4JAAIBAiRTdHJpY3QgdmFsdWUgaXMgbm90IGVxdWFsIHRvIGl0c2VsZi4JAAIBAiRTdHJpY3QgdmFsdWUgaXMgbm90IGVxdWFsIHRvIGl0c2VsZi4BaQEKcHV0Rm9yRnJlZQEHbWF4U2xwZwMJAGYCAAAFB21heFNscGcJAAIBAgpXcm9uZyBzbHBnAwkBAiE9AgkAkAMBCAUBaQhwYXltZW50cwACCQACAQIMMiBwbW50cyBleHBkBAZlc3RQdXQJAQJjcAkJAKUIAQgFAWkGY2FsbGVyCQDYBAEIBQFpDXRyYW5zYWN0aW9uSWQJAQ9BdHRhY2hlZFBheW1lbnQCCAkBBXZhbHVlAQkAkQMCCAUBaQhwYXltZW50cwAAB2Fzc2V0SWQICQEFdmFsdWUBCQCRAwIIBQFpCHBheW1lbnRzAAAGYW1vdW50CQCRAwIIBQFpCHBheW1lbnRzAAEFB21heFNscGcHBwAAAgAIBQZlc3RQdXQCXzkBaQEDZ2V0AAQBcgkBAmNnAQUBaQQJb3V0QW10QW10CAUBcgJfMQQIb3V0UHJBbXQIBQFyAl8yBAZwbXRBbXQIBQFyAl8zBApwbXRBc3NldElkCAUBcgJfNAQFc3RhdGUIBQFyAl81BAFiCQD8BwQFA2ZjYQIEYnVybgkAzAgCBQZwbXRBbXQFA25pbAkAzAgCCQEPQXR0YWNoZWRQYXltZW50AgUKcG10QXNzZXRJZAUGcG10QW10BQNuaWwDCQAAAgUBYgUBYgUFc3RhdGUJAAIBAiRTdHJpY3QgdmFsdWUgaXMgbm90IGVxdWFsIHRvIGl0c2VsZi4BaQEJZ2V0T25lVGtuBQpleGNoUmVzdWx0B25vdFVzZWQJb3V0QW1vdW50Cm91dEFzc2V0SWQIc2xpcHBhZ2UDCQECIT0CCQCQAwEIBQFpCHBheW1lbnRzAAEJAAIBAgsxIHBtbnQgZXhwZAQDY2ZnCQEDZ3BjAAQEbHBJZAkAkQMCBQNjZmcFCWlkeExQQXNJZAQEYW1JZAkAkQMCBQNjZmcFCWlkeEFtQXNJZAQEcHJJZAkAkQMCBQNjZmcFCWlkeFByQXNJZAQFYW1EY20JAQ1wYXJzZUludFZhbHVlAQkAkQMCBQNjZmcFC2lkeEFtdEFzRGNtBAVwckRjbQkBDXBhcnNlSW50VmFsdWUBCQCRAwIFA2NmZwUNaWR4UHJpY2VBc0RjbQQDc3RzCQCRAwIFA2NmZwUJaWR4UG9vbFN0BAdmYWN0Q2ZnCQEDZ2ZjAAQHZ3d4Q250cgkBE3ZhbHVlT3JFcnJvck1lc3NhZ2UCCQCmCAEJAJEDAgUHZmFjdENmZwURaWR4RmFjdEd3eFJld0NudHICCldyIHNsIGFkZHIEA3BtdAkBBXZhbHVlAQkAkQMCCAUBaQhwYXltZW50cwAABAVhZGRvbgkBC3ZhbHVlT3JFbHNlAgkAnQgCBQR0aGlzCQEDYWRhAAIABAt1c2VyQWRkcmVzcwMJAAACBQVhZGRvbgkApQgBCAUBaQZjYWxsZXIIBQFpDG9yaWdpbkNhbGxlcggFAWkGY2FsbGVyBAZ0eElkNTgJANgEAQgFAWkNdHJhbnNhY3Rpb25JZAQKcG10QXNzZXRJZAkBBXZhbHVlAQgFA3BtdAdhc3NldElkBAZwbXRBbXQIBQNwbXQGYW1vdW50AwkAZgIAgJTr3AMFBnBtdEFtdAkAAgECDU1pbiBwbXQgMTAgTFADAwMJAGYCAAAFCHNsaXBwYWdlBgkAZgIAAAUKZXhjaFJlc3VsdAYJAGYCAAAFCW91dEFtb3VudAkAAgECDFdyb25nIHBhcmFtcwMJAQIhPQIFBGxwSWQJANgEAQUKcG10QXNzZXRJZAkAAgECCFdyb25nIExQBAFyCQEDZWdvBAkA2AQBCAUBaQ10cmFuc2FjdGlvbklkCQDYBAEFCnBtdEFzc2V0SWQFBnBtdEFtdAgFAWkGY2FsbGVyBAplc3RpbUFtQW10CAUBcgJfMQQKZXN0aW1QckFtdAgFAXICXzIECWFtQmFsYW5jZQkBDWdldEFjY0JhbGFuY2UBBQRhbUlkBAlwckJhbGFuY2UJAQ1nZXRBY2NCYWxhbmNlAQUEcHJJZAQNJHQwMzAzNjQzMDgyNAMJAAACBQpvdXRBc3NldElkBQRhbUlkCQCZCgcJAGUCBQlhbUJhbGFuY2UFCmVzdGltQW1BbXQJAGUCBQlwckJhbGFuY2UFCmVzdGltUHJBbXQFCmV4Y2hSZXN1bHQFCmVzdGltUHJBbXQAAAAACQBkAgUKZXN0aW1BbUFtdAUKZXhjaFJlc3VsdAMJAAACBQpvdXRBc3NldElkBQRwcklkCQCZCgcJAGUCBQlhbUJhbGFuY2UFCmVzdGltQW1BbXQJAGUCBQlwckJhbGFuY2UFCmVzdGltUHJBbXQAAAAABQpleGNoUmVzdWx0BQplc3RpbUFtQW10CQBkAgUKZXN0aW1QckFtdAUKZXhjaFJlc3VsdAkAAgECEHdyb25nIG91dEFzc2V0SWQEDGFtQmFsYW5jZU5vdwgFDSR0MDMwMzY0MzA4MjQCXzEEDHByQmFsYW5jZU5vdwgFDSR0MDMwMzY0MzA4MjQCXzIEDHZpcnRTd2FwSW5BbQgFDSR0MDMwMzY0MzA4MjQCXzMEDXZpcnRTd2FwT3V0UHIIBQ0kdDAzMDM2NDMwODI0Al80BAx2aXJ0U3dhcEluUHIIBQ0kdDAzMDM2NDMwODI0Al81BA12aXJ0U3dhcE91dEFtCAUNJHQwMzAzNjQzMDgyNAJfNgQLdG90YWxHZXRSYXcIBQ0kdDAzMDM2NDMwODI0Al83AwMJAGYCAAAFDHZpcnRTd2FwSW5BbQYJAGYCAAAFDHZpcnRTd2FwSW5QcgkAAgECCldyb25nIGNhbGMEAkQwCQD8BwQFB2d3eENudHICBWNhbGNECQDMCAIJAKQDAQUMYW1CYWxhbmNlTm93CQDMCAIJAKQDAQUMcHJCYWxhbmNlTm93CQDMCAIFAUEJAMwIAgUFQW11bHQJAMwIAgUFRGNvbnYFA25pbAUDbmlsBAJEMQkA/AcEBQdnd3hDbnRyAgVjYWxjRAkAzAgCCQCkAwEJAGQCCQBlAgUMYW1CYWxhbmNlTm93BQx2aXJ0U3dhcEluQW0FDXZpcnRTd2FwT3V0QW0JAMwIAgkApAMBCQBlAgkAZAIFDHByQmFsYW5jZU5vdwUNdmlydFN3YXBPdXRQcgUMdmlydFN3YXBJblByCQDMCAIFAUEJAMwIAgUFQW11bHQJAMwIAgUFRGNvbnYFA25pbAUDbmlsBAZEMHZzRDEJAQJ2ZAMJAKcDAQkBA3N0cgEFAkQxCQCnAwEJAQNzdHIBBQJEMAUKc2xpcHBhZ2U0RAMJAAACBQZEMHZzRDEFBkQwdnNEMQQIdG90YWxHZXQICQEHdGFrZUZlZQEFC3RvdGFsR2V0UmF3Al8xBAhmaW5hbFJlcwkBA3ZhZAMJALYCAQUIdG90YWxHZXQJALYCAQUJb3V0QW1vdW50CQC2AgEFCHNsaXBwYWdlAwkAAAIFCGZpbmFsUmVzBQhmaW5hbFJlcwQNJHQwMzE1NzEzMTY3NQMJAAACBQpvdXRBc3NldElkBQRhbUlkCQCUCgIJAKADAQgFCGZpbmFsUmVzAl8yAAAJAJQKAgAACQCgAwEIBQhmaW5hbFJlcwJfMgQFb3V0QW0IBQ0kdDAzMTU3MTMxNjc1Al8xBAVvdXRQcggFDSR0MDMxNTcxMzE2NzUCXzIEC3RvdGFsQW1vdW50CQBkAgUFb3V0QW0FBW91dFByBAlmZWVBbW91bnQJAGUCBQt0b3RhbEdldFJhdwUIdG90YWxHZXQEEW91dEFzc2V0SWRPcldhdmVzAwkAAAIFCm91dEFzc2V0SWQCBVdBVkVTBQR1bml0CQDZBAEFCm91dEFzc2V0SWQEEHNlbmRGZWVUb01hdGNoZXIDCQBmAgUJZmVlQW1vdW50AAAJAMwIAgkBDlNjcmlwdFRyYW5zZmVyAwUObWF0Y2hlckFkZHJlc3MFCWZlZUFtb3VudAURb3V0QXNzZXRJZE9yV2F2ZXMFA25pbAUDbmlsBAhjdXJQclgxOAkBBGNwYmkCCQECdDECBQlwckJhbGFuY2UFBXByRGNtCQECdDECBQlhbUJhbGFuY2UFBWFtRGNtBAVjdXJQcgkBAmYxAgUIY3VyUHJYMTgFBnNjYWxlOAQFc3RhdGUJAMwIAgkBDlNjcmlwdFRyYW5zZmVyAwULdXNlckFkZHJlc3MFC3RvdGFsQW1vdW50BRFvdXRBc3NldElkT3JXYXZlcwkAzAgCCQELU3RyaW5nRW50cnkCCQEDZ2F1AgkApQgBBQt1c2VyQWRkcmVzcwUGdHhJZDU4CQERZGF0YUdldEFjdGlvbkluZm8GBQVvdXRBbQUFb3V0UHIFBnBtdEFtdAUFY3VyUHIFBmhlaWdodAgFCWxhc3RCbG9jawl0aW1lc3RhbXAJAMwIAgkBDEludGVnZXJFbnRyeQIJAQJwbAAFBWN1clByCQDMCAIJAQxJbnRlZ2VyRW50cnkCCQECcGgCBQZoZWlnaHQIBQlsYXN0QmxvY2sJdGltZXN0YW1wBQVjdXJQcgUDbmlsAwkAAAIFBXN0YXRlBQVzdGF0ZQQEYnVybgkA/AcEBQNmY2ECBGJ1cm4JAMwIAgUGcG10QW10BQNuaWwJAMwIAgkBD0F0dGFjaGVkUGF5bWVudAIFCnBtdEFzc2V0SWQFBnBtdEFtdAUDbmlsAwkAAAIFBGJ1cm4FBGJ1cm4JAM4IAgUFc3RhdGUFEHNlbmRGZWVUb01hdGNoZXIJAAIBAiRTdHJpY3QgdmFsdWUgaXMgbm90IGVxdWFsIHRvIGl0c2VsZi4JAAIBAiRTdHJpY3QgdmFsdWUgaXMgbm90IGVxdWFsIHRvIGl0c2VsZi4JAAIBAiRTdHJpY3QgdmFsdWUgaXMgbm90IGVxdWFsIHRvIGl0c2VsZi4JAAIBAiRTdHJpY3QgdmFsdWUgaXMgbm90IGVxdWFsIHRvIGl0c2VsZi4BaQEJZ2V0Tm9MZXNzAhJub0xlc3NUaGVuQW10QXNzZXQUbm9MZXNzVGhlblByaWNlQXNzZXQEAXIJAQJjZwEFAWkECG91dEFtQW10CAUBcgJfMQQIb3V0UHJBbXQIBQFyAl8yBAZwbXRBbXQIBQFyAl8zBApwbXRBc3NldElkCAUBcgJfNAQFc3RhdGUIBQFyAl81AwkAZgIFEm5vTGVzc1RoZW5BbXRBc3NldAUIb3V0QW1BbXQJAAIBCQCsAgIJAKwCAgkArAICAglGYWlsZWQ6ICAJAKQDAQUIb3V0QW1BbXQCAyA8IAkApAMBBRJub0xlc3NUaGVuQW10QXNzZXQDCQBmAgUUbm9MZXNzVGhlblByaWNlQXNzZXQFCG91dFByQW10CQACAQkArAICCQCsAgIJAKwCAgIIRmFpbGVkOiAJAKQDAQUIb3V0UHJBbXQCAyA8IAkApAMBBRRub0xlc3NUaGVuUHJpY2VBc3NldAQUYnVybkxQQXNzZXRPbkZhY3RvcnkJAPwHBAUDZmNhAgRidXJuCQDMCAIFBnBtdEFtdAUDbmlsCQDMCAIJAQ9BdHRhY2hlZFBheW1lbnQCBQpwbXRBc3NldElkBQZwbXRBbXQFA25pbAMJAAACBRRidXJuTFBBc3NldE9uRmFjdG9yeQUUYnVybkxQQXNzZXRPbkZhY3RvcnkFBXN0YXRlCQACAQIkU3RyaWN0IHZhbHVlIGlzIG5vdCBlcXVhbCB0byBpdHNlbGYuAWkBDXVuc3Rha2VBbmRHZXQBBmFtb3VudAQNY2hlY2tQYXltZW50cwMJAQIhPQIJAJADAQgFAWkIcGF5bWVudHMAAAkAAgECDU5vIHBtbnRzIGV4cGQGAwkAAAIFDWNoZWNrUGF5bWVudHMFDWNoZWNrUGF5bWVudHMEA2NmZwkBA2dwYwAECmZhY3RvcnlDZmcJAQNnZmMABAlscEFzc2V0SWQJANkEAQkAkQMCBQNjZmcFCWlkeExQQXNJZAQHc3Rha2luZwkBE3ZhbHVlT3JFcnJvck1lc3NhZ2UCCQCmCAEJAJEDAgUKZmFjdG9yeUNmZwUPaWR4RmFjdFN0YWtDbnRyAgpXciBzdCBhZGRyBAp1bnN0YWtlSW52CQD8BwQFB3N0YWtpbmcCB3Vuc3Rha2UJAMwIAgkA2AQBBQlscEFzc2V0SWQJAMwIAgUGYW1vdW50BQNuaWwFA25pbAMJAAACBQp1bnN0YWtlSW52BQp1bnN0YWtlSW52BAFyCQEDZWdvBAkA2AQBCAUBaQ10cmFuc2FjdGlvbklkCQDYBAEFCWxwQXNzZXRJZAUGYW1vdW50CAUBaQZjYWxsZXIEA3N0cwkBDXBhcnNlSW50VmFsdWUBCAUBcgJfOQQFc3RhdGUIBQFyA18xMAQBdgMDCQEDaWdzAAYJAAACBQNzdHMFDFBvb2xTaHV0ZG93bgkAAgEJAKwCAgIJQmxvY2tlZDogCQCkAwEFA3N0cwYDCQAAAgUBdgUBdgQFYnVybkEJAPwHBAUDZmNhAgRidXJuCQDMCAIFBmFtb3VudAUDbmlsCQDMCAIJAQ9BdHRhY2hlZFBheW1lbnQCBQlscEFzc2V0SWQFBmFtb3VudAUDbmlsAwkAAAIFBWJ1cm5BBQVidXJuQQUFc3RhdGUJAAIBAiRTdHJpY3QgdmFsdWUgaXMgbm90IGVxdWFsIHRvIGl0c2VsZi4JAAIBAiRTdHJpY3QgdmFsdWUgaXMgbm90IGVxdWFsIHRvIGl0c2VsZi4JAAIBAiRTdHJpY3QgdmFsdWUgaXMgbm90IGVxdWFsIHRvIGl0c2VsZi4JAAIBAiRTdHJpY3QgdmFsdWUgaXMgbm90IGVxdWFsIHRvIGl0c2VsZi4BaQEIYWN0aXZhdGUCCGFtdEFzU3RyB3ByQXNTdHIDCQECIT0CCQClCAEIBQFpBmNhbGxlcgkApQgBBQNmY2EJAAIBAgZkZW5pZWQJAJQKAgkAzAgCCQELU3RyaW5nRW50cnkCCQECYWEABQhhbXRBc1N0cgkAzAgCCQELU3RyaW5nRW50cnkCCQECcGEABQdwckFzU3RyBQNuaWwCB3N1Y2Nlc3MBaQEEc2V0UwIBawF2AwkBAiE9AgkApQgBCAUBaQZjYWxsZXIJAQRzdHJmAgUEdGhpcwkBA2FkYQAFAnBkCQDMCAIJAQtTdHJpbmdFbnRyeQIFAWsFAXYFA25pbAFpAQRzZXRJAgFrAXYDCQECIT0CCQClCAEIBQFpBmNhbGxlcgkBBHN0cmYCBQR0aGlzCQEDYWRhAAUCcGQJAMwIAgkBDEludGVnZXJFbnRyeQIFAWsFAXYFA25pbAFpARxnZXRQb29sQ29uZmlnV3JhcHBlclJFQURPTkxZAAkAlAoCBQNuaWwJAQNncGMAAWkBHGdldEFjY0JhbGFuY2VXcmFwcGVyUkVBRE9OTFkBB2Fzc2V0SWQJAJQKAgUDbmlsCQENZ2V0QWNjQmFsYW5jZQEFB2Fzc2V0SWQBaQEZY2FsY1ByaWNlc1dyYXBwZXJSRUFET05MWQMFYW1BbXQFcHJBbXQFbHBBbXQEAnByCQEKY2FsY1ByaWNlcwMFBWFtQW10BQVwckFtdAUFbHBBbXQJAJQKAgUDbmlsCQDMCAIJAKYDAQkAkQMCBQJwcgAACQDMCAIJAKYDAQkAkQMCBQJwcgABCQDMCAIJAKYDAQkAkQMCBQJwcgACBQNuaWwBaQEWZnJvbVgxOFdyYXBwZXJSRUFET05MWQIDdmFsDHJlc1NjYWxlTXVsdAkAlAoCBQNuaWwJAQJmMQIJAKcDAQUDdmFsBQxyZXNTY2FsZU11bHQBaQEUdG9YMThXcmFwcGVyUkVBRE9OTFkCB29yaWdWYWwNb3JpZ1NjYWxlTXVsdAkAlAoCBQNuaWwJAKYDAQkBAnQxAgUHb3JpZ1ZhbAUNb3JpZ1NjYWxlTXVsdAFpAR5jYWxjUHJpY2VCaWdJbnRXcmFwcGVyUkVBRE9OTFkCCHByQW10WDE4CGFtQW10WDE4CQCUCgIFA25pbAkApgMBCQEEY3BiaQIJAKcDAQUIcHJBbXRYMTgJAKcDAQUIYW1BbXRYMTgBaQEjZXN0aW1hdGVQdXRPcGVyYXRpb25XcmFwcGVyUkVBRE9OTFkJBnR4SWQ1OAhzbGlwcGFnZQdpbkFtQW10BmluQW1JZAdpblByQW10BmluUHJJZAd1c3JBZGRyBmlzRXZhbAZlbWl0THAJAJQKAgUDbmlsCQEDZXBvDAUGdHhJZDU4BQhzbGlwcGFnZQUHaW5BbUFtdAUGaW5BbUlkBQdpblByQW10BQZpblBySWQFB3VzckFkZHIFBmlzRXZhbAUGZW1pdExwBwAAAgABaQEjZXN0aW1hdGVHZXRPcGVyYXRpb25XcmFwcGVyUkVBRE9OTFkEBnR4SWQ1OAdwbXRBc0lkCHBtdExwQW10B3VzckFkZHIEAXIJAQNlZ28EBQZ0eElkNTgFB3BtdEFzSWQFCHBtdExwQW10CQERQGV4dHJOYXRpdmUoMTA2MikBBQd1c3JBZGRyCQCUCgIFA25pbAkAnAoKCAUBcgJfMQgFAXICXzIIBQFyAl8zCAUBcgJfNAgFAXICXzUIBQFyAl82CAUBcgJfNwkApgMBCAUBcgJfOAgFAXICXzkIBQFyA18xMAECdHgBBnZlcmlmeQAED3RhcmdldFB1YmxpY0tleQQHJG1hdGNoMAkBAW0AAwkAAQIFByRtYXRjaDACCkJ5dGVWZWN0b3IEAnBrBQckbWF0Y2gwBQJwawMJAAECBQckbWF0Y2gwAgRVbml0CAUCdHgPc2VuZGVyUHVibGljS2V5CQACAQILTWF0Y2ggZXJyb3IEByRtYXRjaDAFAnR4AwkAAQIFByRtYXRjaDACBU9yZGVyBAVvcmRlcgUHJG1hdGNoMAQKbWF0Y2hlclB1YgkBAm1wAAQKb3JkZXJWYWxpZAkBA21vYQEFBW9yZGVyBAtzZW5kZXJWYWxpZAkA9AMDCAUFb3JkZXIJYm9keUJ5dGVzCQCRAwIIBQVvcmRlcgZwcm9vZnMAAAgFBW9yZGVyD3NlbmRlclB1YmxpY0tleQQMbWF0Y2hlclZhbGlkCQD0AwMIBQVvcmRlcglib2R5Qnl0ZXMJAJEDAggFBW9yZGVyBnByb29mcwABBQptYXRjaGVyUHViAwMDBQpvcmRlclZhbGlkBQtzZW5kZXJWYWxpZAcFDG1hdGNoZXJWYWxpZAcGCQEDdG9lAwUKb3JkZXJWYWxpZAULc2VuZGVyVmFsaWQFDG1hdGNoZXJWYWxpZAMJAAECBQckbWF0Y2gwAhRTZXRTY3JpcHRUcmFuc2FjdGlvbgQBcwUHJG1hdGNoMAQHbmV3SGFzaAkA9gMBCQEFdmFsdWUBCAUBcwZzY3JpcHQEC2FsbG93ZWRIYXNoCQDbBAEJAQV2YWx1ZQEJAJ0IAgUDZmNhCQEca2V5QWxsb3dlZExwU3RhYmxlU2NyaXB0SGFzaAAEC2N1cnJlbnRIYXNoCQDxBwEFBHRoaXMDAwkAAAIFC2FsbG93ZWRIYXNoBQduZXdIYXNoCQECIT0CBQtjdXJyZW50SGFzaAUHbmV3SGFzaAcGCQD0AwMIBQJ0eAlib2R5Qnl0ZXMJAJEDAggFAnR4BnByb29mcwAABQ90YXJnZXRQdWJsaWNLZXkJAPQDAwgFAnR4CWJvZHlCeXRlcwkAkQMCCAUCdHgGcHJvb2ZzAAAFD3RhcmdldFB1YmxpY0tleYRdnZ4=", "height": 2206980, "applicationStatus": "succeeded", "spentComplexity": 0 } View: original | compacted Prev: 98aDwqZ1HchCAccKDav7rgPxPUH8txnBAVZ3we7nbe9f Next: GNHraBT3fAmc8BmGJJZJa3zuKaj3gpsUb2HBAuH3Xwpp Diff:
OldNewDifferences
654654 let ec = dW._6
655655 let bk = invoke(dQ, "calcD", [toString(dX), toString(dY), az, h, i], nil)
656656 let bj = invoke(dQ, "calcD", [toString(toBigInt(((dX + dZ) - ec))), toString(toBigInt(((dY + eb) - ea))), az, h, i], nil)
657- let ed = bi(parseBigIntValue(ar(bj)), parseBigIntValue(ar(bk)), g)
658- if ((ed == ed))
659- then {
660- let ee = di(toString(dg.caller), toBase58String(dg.transactionId), AttachedPayment(fromBase58String(bL), dN), AttachedPayment(fromBase58String(bM), dO), bf, true, true, cm, bH)
661- let ef = ee._2
662- let dG = ee._7
663- let cd = ee._9
664- let cM = ee._10
665- let cN = ee._11
666- let eg = bc(toBigInt(ef), toBigInt(dP), toBigInt(bf))
667- let cL = toInt(eg._2)
668- let dF = invoke(ay, "emit", [cL], nil)
669- if ((dF == dF))
657+ if (true)
658+ then throw(((toString(dX) + ", ") + toString(dY)))
659+ else {
660+ let ed = bi(parseBigIntValue(ar(bj)), parseBigIntValue(ar(bk)), g)
661+ if ((ed == ed))
670662 then {
671- let dH = {
672- let as = dF
673- if ($isInstanceOf(as, "Address"))
674- then {
675- let dI = as
676- invoke(dI, "emit", [cL], nil)
663+ let ee = di(toString(dg.caller), toBase58String(dg.transactionId), AttachedPayment(fromBase58String(bL), dN), AttachedPayment(fromBase58String(bM), dO), bf, true, true, cm, bH)
664+ let ef = ee._2
665+ let dG = ee._7
666+ let cd = ee._9
667+ let cM = ee._10
668+ let cN = ee._11
669+ let eg = bc(toBigInt(ef), toBigInt(dP), toBigInt(bf))
670+ let cL = toInt(eg._2)
671+ let dF = invoke(ay, "emit", [cL], nil)
672+ if ((dF == dF))
673+ then {
674+ let dH = {
675+ let as = dF
676+ if ($isInstanceOf(as, "Address"))
677+ then {
678+ let dI = as
679+ invoke(dI, "emit", [cL], nil)
680+ }
681+ else unit
677682 }
678- else unit
679- }
680- if ((dH == dH))
681- then {
682- let dJ = if ((cM > 0))
683- then invoke(dE, "put", nil, [AttachedPayment(fromBase58String(bL), cM)])
684- else nil
685- if ((dJ == dJ))
683+ if ((dH == dH))
686684 then {
687- let dK = if ((cN > 0))
688- then invoke(dE, "put", nil, [AttachedPayment(fromBase58String(bM), cN)])
685+ let dJ = if ((cM > 0))
686+ then invoke(dE, "put", nil, [AttachedPayment(fromBase58String(bL), cM)])
689687 else nil
690- if ((dK == dK))
688+ if ((dJ == dJ))
691689 then {
692- let dL = if (dB)
690+ let dK = if ((cN > 0))
691+ then invoke(dE, "put", nil, [AttachedPayment(fromBase58String(bM), cN)])
692+ else nil
693+ if ((dK == dK))
693694 then {
694- let dM = invoke(dD, "stake", nil, [AttachedPayment(dG, cL)])
695- if ((dM == dM))
696- then nil
697- else throw("Strict value is not equal to itself.")
695+ let dL = if (dB)
696+ then {
697+ let dM = invoke(dD, "stake", nil, [AttachedPayment(dG, cL)])
698+ if ((dM == dM))
699+ then nil
700+ else throw("Strict value is not equal to itself.")
701+ }
702+ else [ScriptTransfer(dg.caller, cL, dG)]
703+ let eh = if ((dV > 0))
704+ then [ScriptTransfer(aC, dV, fromBase58String(bH))]
705+ else nil
706+ ((cd ++ dL) ++ eh)
698707 }
699- else [ScriptTransfer(dg.caller, cL, dG)]
700- let eh = if ((dV > 0))
701- then [ScriptTransfer(aC, dV, fromBase58String(bH))]
702- else nil
703- ((cd ++ dL) ++ eh)
708+ else throw("Strict value is not equal to itself.")
704709 }
705710 else throw("Strict value is not equal to itself.")
706711 }
710715 }
711716 else throw("Strict value is not equal to itself.")
712717 }
713- else throw("Strict value is not equal to itself.")
714718 }
715719 }
716720 }
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 = 1000
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 = 0
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 ((e > G))
7070 then -(G)
7171 else G
7272
7373
7474 func N () = "%s__factoryContract"
7575
7676
7777 func O () = "%s__managerPublicKey"
7878
7979
8080 func P () = "%s__pendingManagerPublicKey"
8181
8282
8383 func Q () = "%s%s__price__last"
8484
8585
8686 func R (S,T) = makeString(["%s%s%d%d__price__history", toString(S), toString(T)], j)
8787
8888
8989 func U (V,W) = ((("%s%s%s__P__" + V) + "__") + W)
9090
9191
9292 func X (V,W) = ((("%s%s%s__G__" + V) + "__") + W)
9393
9494
9595 func Y () = "%s__amountAsset"
9696
9797
9898 func Z () = "%s__priceAsset"
9999
100100
101101 func aa () = "%s__amp"
102102
103103
104104 func ab () = "%s__addonAddr"
105105
106106
107107 let ac = "%s__feePermille"
108108
109109 let ad = valueOrElse(getInteger(this, ac), B)
110110
111111 func ae () = "%s__factoryConfig"
112112
113113
114114 func af () = "%s%s__matcher__publicKey"
115115
116116
117117 func ag (ah,ai) = (((("%d%d%s__" + ah) + "__") + ai) + "__config")
118118
119119
120120 func aj (ak) = ("%s%s%s__mappings__baseAsset2internalId__" + ak)
121121
122122
123123 func al () = "%s__shutdown"
124124
125125
126126 func am () = "%s__allowedLpStableScriptHash"
127127
128128
129129 func an (ao,ap,aq) = throw(((((("Failed: ordValid=" + toString(ao)) + " sndrValid=") + toString(ap)) + " mtchrValid=") + toString(aq)))
130130
131131
132132 func ar (G) = {
133133 let as = G
134134 if ($isInstanceOf(as, "String"))
135135 then {
136136 let at = as
137137 at
138138 }
139139 else throw("fail cast to String")
140140 }
141141
142142
143143 func au (av,aw) = valueOrErrorMessage(getString(av, aw), makeString(["mandatory ", toString(av), ".", aw, " not defined"], ""))
144144
145145
146146 func ax (av,aw) = valueOrErrorMessage(getInteger(av, aw), makeString(["mandatory ", toString(av), ".", aw, " not defined"], ""))
147147
148148
149149 let ay = addressFromStringValue(au(this, N()))
150150
151151 let az = au(this, aa())
152152
153153 func aA () = valueOrElse(getBoolean(ay, al()), false)
154154
155155
156156 func aB () = fromBase58String(au(ay, af()))
157157
158158
159159 let aC = addressFromPublicKey(aB())
160160
161161 func aD () = {
162162 let aE = au(this, Y())
163163 let aF = au(this, Z())
164164 let aG = ax(ay, aj(aF))
165165 let ah = ax(ay, aj(aE))
166166 split(au(ay, ag(toString(ah), toString(aG))), j)
167167 }
168168
169169
170170 func aH () = split(au(ay, ae()), j)
171171
172172
173173 func aI (aJ,aK,aL,aM,aN,aO,aP,aQ,aR,aS) = makeString(["%d%d%d%d%d%d%d%d%d%d", toString(aJ), toString(aK), toString(aL), toString(aM), toString(aN), toString(aO), toString(aP), toString(aQ), toString(aR), toString(aS)], j)
174174
175175
176176 func aT (aU,aV,aW,aM,aP,aQ) = makeString(["%d%d%d%d%d%d", toString(aU), toString(aV), toString(aW), toString(aM), toString(aP), toString(aQ)], j)
177177
178178
179179 func aX (aY) = if ((aY == "WAVES"))
180180 then wavesBalance(this).available
181181 else assetBalance(this, fromBase58String(aY))
182182
183183
184184 func aZ (ba,bb) = fraction(ba, c, bb)
185185
186186
187187 func bc (bd,be,bf) = {
188188 let bg = fraction((bd - be), b, be)
189189 let bh = ((bf - M(bg)) > e)
190190 if (!(bh))
191191 then throw(("Big slpg: " + toString(bg)))
192192 else $Tuple2(bh, min([bd, be]))
193193 }
194194
195195
196196 func bi (bj,bk,bl) = {
197197 let bg = fraction(bk, b, bj)
198198 let bm = (bl > bg)
199199 if (if (bm)
200200 then true
201201 else (bk > bj))
202202 then throw(((((((toString(bk) + " ") + toString(bj)) + " ") + toString(bg)) + " ") + toString(bl)))
203203 else bm
204204 }
205205
206206
207207 func bn (bo,bp,bq,br) = {
208208 let bs = C(bq, bo)
209209 let bt = C(br, bp)
210210 aZ(bt, bs)
211211 }
212212
213213
214214 func bu (bq,br,bv) = {
215215 let bw = aD()
216216 let bx = parseIntValue(bw[u])
217217 let by = parseIntValue(bw[v])
218218 let bz = bn(bx, by, bq, br)
219219 let bb = C(bq, bx)
220220 let ba = C(br, by)
221221 let bA = C(bv, a)
222222 let bB = aZ(bb, bA)
223223 let bC = aZ(ba, bA)
224224 [bz, bB, bC]
225225 }
226226
227227
228228 func bD (bq,br,bv) = {
229229 let bE = bu(bq, br, bv)
230230 [F(bE[0], a), F(bE[1], a), F(bE[2], a)]
231231 }
232232
233233
234234 func bF (bG,bH,bI,bJ) = {
235235 let bw = aD()
236236 let bK = bw[r]
237237 let bL = bw[s]
238238 let bM = bw[t]
239239 let bN = parseIntValue(bw[u])
240240 let bO = parseIntValue(bw[v])
241241 let bP = bw[q]
242242 let bQ = valueOrErrorMessage(assetInfo(fromBase58String(bK)), "Wrong LP id").quantity
243243 if ((bK != bH))
244244 then throw("Wrong pmt asset")
245245 else {
246246 let bR = aX(bL)
247247 let bS = C(bR, bN)
248248 let bT = aX(bM)
249249 let bU = C(bT, bO)
250250 let bV = aZ(bU, bS)
251251 let bW = F(bV, a)
252252 let bX = C(bI, a)
253253 let bY = C(bQ, a)
254254 let bZ = fraction(bS, bX, bY)
255255 let ca = fraction(bU, bX, bY)
256256 let cb = F(bZ, bN)
257257 let cc = F(ca, bO)
258258 let cd = if ((bG == ""))
259259 then nil
260260 else [ScriptTransfer(bJ, cb, if ((bL == "WAVES"))
261261 then unit
262262 else fromBase58String(bL)), ScriptTransfer(bJ, cc, if ((bM == "WAVES"))
263263 then unit
264264 else fromBase58String(bM)), StringEntry(X(toString(bJ), bG), aT(cb, cc, bI, bW, height, lastBlock.timestamp)), IntegerEntry(Q(), bW), IntegerEntry(R(height, lastBlock.timestamp), bW)]
265265 $Tuple10(cb, cc, bL, bM, bR, bT, bQ, bV, bP, cd)
266266 }
267267 }
268268
269269
270270 func ce (bG,bf,cf,cg,ch,ci,bJ,cj,ck,cl,cm,cn) = {
271271 let bw = aD()
272272 let bK = fromBase58String(bw[r])
273273 let co = bw[s]
274274 let cp = bw[t]
275275 let cq = bw[w]
276276 let cr = bw[x]
277277 let cs = parseIntValue(bw[u])
278278 let ct = parseIntValue(bw[v])
279279 let bP = bw[q]
280280 let cu = valueOrErrorMessage(assetInfo(bK), "Wr lp as").quantity
281281 let bR = if (cj)
282282 then aX(co)
283283 else if (if (cl)
284284 then (cn == co)
285285 else false)
286286 then (aX(co) - cm)
287287 else if (cl)
288288 then aX(co)
289289 else (aX(co) - cf)
290290 let bT = if (cj)
291291 then aX(cp)
292292 else if (if (cl)
293293 then (cn == cp)
294294 else false)
295295 then (aX(cp) - cm)
296296 else if (cl)
297297 then aX(cp)
298298 else (aX(cp) - ch)
299299 let cv = C(cf, cs)
300300 let cw = C(ch, ct)
301301 let cx = aZ(cw, cv)
302302 let bS = C(bR, cs)
303303 let bU = C(bT, ct)
304304 let cy = if ((cu == 0))
305305 then {
306306 let bV = e
307307 let cz = e
308308 let bA = pow((cv * cw), 0, toBigInt(5), 1, 0, DOWN)
309309 $Tuple5(F(bA, a), F(cv, cs), F(cw, ct), aZ((bU + cw), (bS + cv)), cz)
310310 }
311311 else {
312312 let bV = aZ(bU, bS)
313313 let cA = fraction(M((bV - cx)), c, bV)
314314 let cz = C(bf, a)
315315 if (if ((bV != e))
316316 then (cA > cz)
317317 else false)
318318 then throw(((("Price slippage " + toString(cA)) + " > ") + toString(cz)))
319319 else {
320320 let cB = C(cu, a)
321321 let cC = fraction(cv, bV, c)
322322 let cD = fraction(cw, c, bV)
323323 let cE = if ((cC > cw))
324324 then $Tuple2(cD, cw)
325325 else $Tuple2(cv, cC)
326326 let cF = cE._1
327327 let cG = cE._2
328328 let bA = fraction(cB, cG, bU)
329329 $Tuple5(F(bA, a), F(cF, cs), F(cG, ct), bV, cz)
330330 }
331331 }
332332 let cH = cy._1
333333 let cI = cy._2
334334 let cJ = cy._3
335335 let bW = F(cy._4, a)
336336 let cK = F(cy._5, a)
337337 if ((0 >= cH))
338338 then throw("LP <= 0")
339339 else {
340340 let cL = if (!(ck))
341341 then 0
342342 else cH
343343 let cM = (cf - cI)
344344 let cN = (ch - cJ)
345345 let cO = if (if (cl)
346346 then (cn == co)
347347 else false)
348348 then $Tuple2(cm, 0)
349349 else if (if (cl)
350350 then (cn == cp)
351351 else false)
352352 then $Tuple2(0, cm)
353353 else $Tuple2(cI, cJ)
354354 let cP = cO._1
355355 let cQ = cO._2
356356 let cR = [IntegerEntry(Q(), bW), IntegerEntry(R(height, lastBlock.timestamp), bW), StringEntry(U(bJ, bG), aI(cP, cQ, cL, bW, bf, cK, height, lastBlock.timestamp, cM, cN))]
357357 $Tuple13(cH, cL, bW, bR, bT, cu, bK, bP, cR, cM, cN, cg, ci)
358358 }
359359 }
360360
361361
362362 func cS (cT) = {
363363 let bw = aD()
364364 let cU = bw[s]
365365 let cV = bw[t]
366366 let bP = parseIntValue(bw[q])
367367 let bx = parseIntValue(bw[u])
368368 let by = parseIntValue(bw[v])
369369 let cW = aX(cU)
370370 let cX = aX(cV)
371371 let bV = if ((cT.orderType == Buy))
372372 then bn(bx, by, (cW + cT.amount), cX)
373373 else bn(bx, by, (cW - cT.amount), cX)
374374 let bW = F(bV, a)
375375 if (if (if (aA())
376376 then true
377377 else (bP == n))
378378 then true
379379 else (bP == o))
380380 then throw("Admin blocked")
381381 else {
382382 let cY = cT.assetPair.amountAsset
383383 let cZ = if ((cY == unit))
384384 then "WAVES"
385385 else toBase58String(value(cY))
386386 let da = cT.assetPair.priceAsset
387387 let db = if ((da == unit))
388388 then "WAVES"
389389 else toBase58String(value(da))
390390 if (if ((cZ != cU))
391391 then true
392392 else (db != cV))
393393 then throw("Wr assets")
394394 else {
395395 let dc = cT.price
396396 let ct = fraction(a, by, bx)
397397 let dd = I(dc, a, ct)
398398 let de = if ((cT.orderType == Buy))
399399 then (bW >= dd)
400400 else (dd >= bW)
401401 true
402402 }
403403 }
404404 }
405405
406406
407407 func df (dg) = if ((size(dg.payments) != 1))
408408 then throw("1 pmnt exp")
409409 else {
410410 let dh = value(dg.payments[0])
411411 let bH = value(dh.assetId)
412412 let cm = dh.amount
413413 let cy = bF(toBase58String(dg.transactionId), toBase58String(bH), cm, dg.caller)
414414 let cb = cy._1
415415 let cc = cy._2
416416 let bP = parseIntValue(cy._9)
417417 let cd = cy._10
418418 if (if (aA())
419419 then true
420420 else (bP == o))
421421 then throw(("Admin blocked: " + toString(bP)))
422422 else $Tuple5(cb, cc, cm, bH, cd)
423423 }
424424
425425
426426 func di (dj,W,dk,dl,bf,ck,cl,cm,cn) = {
427427 let cy = ce(W, bf, value(dk).amount, value(dk).assetId, value(dl).amount, value(dl).assetId, dj, false, ck, cl, cm, cn)
428428 let bP = parseIntValue(cy._8)
429429 if (if (if (aA())
430430 then true
431431 else (bP == m))
432432 then true
433433 else (bP == o))
434434 then throw(("Blocked:" + toString(bP)))
435435 else cy
436436 }
437437
438438
439439 func dm (dn) = {
440440 let do = fraction(dn, ad, d)
441441 $Tuple2((dn - do), do)
442442 }
443443
444444
445445 func dp () = {
446446 let as = getString(O())
447447 if ($isInstanceOf(as, "String"))
448448 then {
449449 let dq = as
450450 fromBase58String(dq)
451451 }
452452 else if ($isInstanceOf(as, "Unit"))
453453 then unit
454454 else throw("Match error")
455455 }
456456
457457
458458 func dr () = {
459459 let as = getString(P())
460460 if ($isInstanceOf(as, "String"))
461461 then {
462462 let dq = as
463463 fromBase58String(dq)
464464 }
465465 else if ($isInstanceOf(as, "Unit"))
466466 then unit
467467 else throw("Match error")
468468 }
469469
470470
471471 let ds = throw("Permission denied")
472472
473473 func dt (dg) = {
474474 let as = dp()
475475 if ($isInstanceOf(as, "ByteVector"))
476476 then {
477477 let du = as
478478 if ((dg.callerPublicKey == du))
479479 then true
480480 else ds
481481 }
482482 else if ($isInstanceOf(as, "Unit"))
483483 then if ((dg.caller == this))
484484 then true
485485 else ds
486486 else throw("Match error")
487487 }
488488
489489
490490 @Callable(dg)
491491 func constructor (N) = {
492492 let dv = dt(dg)
493493 if ((dv == dv))
494494 then [StringEntry(N(), N)]
495495 else throw("Strict value is not equal to itself.")
496496 }
497497
498498
499499
500500 @Callable(dg)
501501 func setManager (dw) = {
502502 let dv = dt(dg)
503503 if ((dv == dv))
504504 then {
505505 let dx = fromBase58String(dw)
506506 if ((dx == dx))
507507 then [StringEntry(P(), dw)]
508508 else throw("Strict value is not equal to itself.")
509509 }
510510 else throw("Strict value is not equal to itself.")
511511 }
512512
513513
514514
515515 @Callable(dg)
516516 func confirmManager () = {
517517 let bE = dr()
518518 let dy = if (isDefined(bE))
519519 then true
520520 else throw("No pending manager")
521521 if ((dy == dy))
522522 then {
523523 let dz = if ((dg.callerPublicKey == value(bE)))
524524 then true
525525 else throw("You are not pending manager")
526526 if ((dz == dz))
527527 then [StringEntry(O(), toBase58String(value(bE))), DeleteEntry(P())]
528528 else throw("Strict value is not equal to itself.")
529529 }
530530 else throw("Strict value is not equal to itself.")
531531 }
532532
533533
534534
535535 @Callable(dg)
536536 func put (dA,dB) = {
537537 let dC = aH()
538538 let dD = valueOrErrorMessage(addressFromString(dC[y]), "Wr st addr")
539539 let dE = valueOrErrorMessage(addressFromString(dC[z]), "Wr sl addr")
540540 if ((0 > dA))
541541 then throw("Wrong slippage")
542542 else if ((size(dg.payments) != 2))
543543 then throw("2 pmnts expd")
544544 else {
545545 let dF = di(toString(dg.caller), toBase58String(dg.transactionId), AttachedPayment(value(dg.payments[0]).assetId, value(dg.payments[0]).amount), dg.payments[1], dA, true, false, 0, "")
546546 let cL = dF._2
547547 let dG = dF._7
548548 let cd = dF._9
549549 let cM = dF._10
550550 let cN = dF._11
551551 let bL = dF._12
552552 let bM = dF._13
553553 let cy = invoke(ay, "emit", [cL], nil)
554554 if ((cy == cy))
555555 then {
556556 let dH = {
557557 let as = cy
558558 if ($isInstanceOf(as, "Address"))
559559 then {
560560 let dI = as
561561 invoke(dI, "emit", [cL], nil)
562562 }
563563 else unit
564564 }
565565 if ((dH == dH))
566566 then {
567567 let dJ = if ((cM > 0))
568568 then invoke(dE, "put", nil, [AttachedPayment(bL, cM)])
569569 else nil
570570 if ((dJ == dJ))
571571 then {
572572 let dK = if ((cN > 0))
573573 then invoke(dE, "put", nil, [AttachedPayment(bM, cN)])
574574 else nil
575575 if ((dK == dK))
576576 then {
577577 let dL = if (dB)
578578 then {
579579 let dM = invoke(dD, "stake", nil, [AttachedPayment(dG, cL)])
580580 if ((dM == dM))
581581 then nil
582582 else throw("Strict value is not equal to itself.")
583583 }
584584 else [ScriptTransfer(dg.caller, cL, dG)]
585585 (cd ++ dL)
586586 }
587587 else throw("Strict value is not equal to itself.")
588588 }
589589 else throw("Strict value is not equal to itself.")
590590 }
591591 else throw("Strict value is not equal to itself.")
592592 }
593593 else throw("Strict value is not equal to itself.")
594594 }
595595 }
596596
597597
598598
599599 @Callable(dg)
600600 func putOneTkn (dN,dO,dP,bf,dB) = {
601601 let bw = aH()
602602 let dD = valueOrErrorMessage(addressFromString(bw[y]), "Wr st addr")
603603 let dE = valueOrErrorMessage(addressFromString(bw[z]), "Wr sl addr")
604604 let dQ = valueOrErrorMessage(addressFromString(bw[A]), "Wr gwx addr")
605605 let dR = aD()
606606 let bL = dR[s]
607607 let bM = dR[t]
608608 let bN = parseIntValue(dR[u])
609609 let bO = parseIntValue(dR[v])
610610 let dS = valueOrElse(getString(this, ab()), "")
611611 let bJ = if ((dS == toString(dg.caller)))
612612 then dg.originCaller
613613 else dg.caller
614614 if (if (if (if ((0 >= bf))
615615 then true
616616 else (0 >= dN))
617617 then true
618618 else (0 >= dO))
619619 then true
620620 else (0 >= dP))
621621 then throw("Wrong params")
622622 else if ((size(dg.payments) != 1))
623623 then throw("1 pmnt expd")
624624 else {
625625 let dh = value(dg.payments[0])
626626 let bH = toBase58String(value(dh.assetId))
627627 let dT = dh.amount
628628 let dU = dm(dT)
629629 let cm = dU._1
630630 let dV = dU._2
631631 if ((10000000 > dT))
632632 then throw("Wrong pmt amt")
633633 else {
634634 let bR = aX(bL)
635635 let bT = aX(bM)
636636 let dW = if ((bH == bL))
637637 then if (if ((cm > bR))
638638 then true
639639 else (dN > cm))
640640 then throw("invalid payment amount")
641641 else $Tuple6((bR - cm), bT, (cm - dN), dO, 0, 0)
642642 else if ((bH == bM))
643643 then if (if ((cm > bT))
644644 then true
645645 else (dO > cm))
646646 then throw("invalid payment amount")
647647 else $Tuple6(bR, (bT - cm), 0, 0, (cm - dO), dN)
648648 else throw("wrong pmtAssetId")
649649 let dX = dW._1
650650 let dY = dW._2
651651 let dZ = dW._3
652652 let ea = dW._4
653653 let eb = dW._5
654654 let ec = dW._6
655655 let bk = invoke(dQ, "calcD", [toString(dX), toString(dY), az, h, i], nil)
656656 let bj = invoke(dQ, "calcD", [toString(toBigInt(((dX + dZ) - ec))), toString(toBigInt(((dY + eb) - ea))), az, h, i], nil)
657- let ed = bi(parseBigIntValue(ar(bj)), parseBigIntValue(ar(bk)), g)
658- if ((ed == ed))
659- then {
660- let ee = di(toString(dg.caller), toBase58String(dg.transactionId), AttachedPayment(fromBase58String(bL), dN), AttachedPayment(fromBase58String(bM), dO), bf, true, true, cm, bH)
661- let ef = ee._2
662- let dG = ee._7
663- let cd = ee._9
664- let cM = ee._10
665- let cN = ee._11
666- let eg = bc(toBigInt(ef), toBigInt(dP), toBigInt(bf))
667- let cL = toInt(eg._2)
668- let dF = invoke(ay, "emit", [cL], nil)
669- if ((dF == dF))
657+ if (true)
658+ then throw(((toString(dX) + ", ") + toString(dY)))
659+ else {
660+ let ed = bi(parseBigIntValue(ar(bj)), parseBigIntValue(ar(bk)), g)
661+ if ((ed == ed))
670662 then {
671- let dH = {
672- let as = dF
673- if ($isInstanceOf(as, "Address"))
674- then {
675- let dI = as
676- invoke(dI, "emit", [cL], nil)
663+ let ee = di(toString(dg.caller), toBase58String(dg.transactionId), AttachedPayment(fromBase58String(bL), dN), AttachedPayment(fromBase58String(bM), dO), bf, true, true, cm, bH)
664+ let ef = ee._2
665+ let dG = ee._7
666+ let cd = ee._9
667+ let cM = ee._10
668+ let cN = ee._11
669+ let eg = bc(toBigInt(ef), toBigInt(dP), toBigInt(bf))
670+ let cL = toInt(eg._2)
671+ let dF = invoke(ay, "emit", [cL], nil)
672+ if ((dF == dF))
673+ then {
674+ let dH = {
675+ let as = dF
676+ if ($isInstanceOf(as, "Address"))
677+ then {
678+ let dI = as
679+ invoke(dI, "emit", [cL], nil)
680+ }
681+ else unit
677682 }
678- else unit
679- }
680- if ((dH == dH))
681- then {
682- let dJ = if ((cM > 0))
683- then invoke(dE, "put", nil, [AttachedPayment(fromBase58String(bL), cM)])
684- else nil
685- if ((dJ == dJ))
683+ if ((dH == dH))
686684 then {
687- let dK = if ((cN > 0))
688- then invoke(dE, "put", nil, [AttachedPayment(fromBase58String(bM), cN)])
685+ let dJ = if ((cM > 0))
686+ then invoke(dE, "put", nil, [AttachedPayment(fromBase58String(bL), cM)])
689687 else nil
690- if ((dK == dK))
688+ if ((dJ == dJ))
691689 then {
692- let dL = if (dB)
690+ let dK = if ((cN > 0))
691+ then invoke(dE, "put", nil, [AttachedPayment(fromBase58String(bM), cN)])
692+ else nil
693+ if ((dK == dK))
693694 then {
694- let dM = invoke(dD, "stake", nil, [AttachedPayment(dG, cL)])
695- if ((dM == dM))
696- then nil
697- else throw("Strict value is not equal to itself.")
695+ let dL = if (dB)
696+ then {
697+ let dM = invoke(dD, "stake", nil, [AttachedPayment(dG, cL)])
698+ if ((dM == dM))
699+ then nil
700+ else throw("Strict value is not equal to itself.")
701+ }
702+ else [ScriptTransfer(dg.caller, cL, dG)]
703+ let eh = if ((dV > 0))
704+ then [ScriptTransfer(aC, dV, fromBase58String(bH))]
705+ else nil
706+ ((cd ++ dL) ++ eh)
698707 }
699- else [ScriptTransfer(dg.caller, cL, dG)]
700- let eh = if ((dV > 0))
701- then [ScriptTransfer(aC, dV, fromBase58String(bH))]
702- else nil
703- ((cd ++ dL) ++ eh)
708+ else throw("Strict value is not equal to itself.")
704709 }
705710 else throw("Strict value is not equal to itself.")
706711 }
707712 else throw("Strict value is not equal to itself.")
708713 }
709714 else throw("Strict value is not equal to itself.")
710715 }
711716 else throw("Strict value is not equal to itself.")
712717 }
713- else throw("Strict value is not equal to itself.")
714718 }
715719 }
716720 }
717721
718722
719723
720724 @Callable(dg)
721725 func putForFree (ei) = if ((0 > ei))
722726 then throw("Wrong slpg")
723727 else if ((size(dg.payments) != 2))
724728 then throw("2 pmnts expd")
725729 else {
726730 let ee = di(toString(dg.caller), toBase58String(dg.transactionId), AttachedPayment(value(dg.payments[0]).assetId, value(dg.payments[0]).amount), dg.payments[1], ei, false, false, 0, "")
727731 ee._9
728732 }
729733
730734
731735
732736 @Callable(dg)
733737 func get () = {
734738 let cy = df(dg)
735739 let ej = cy._1
736740 let cc = cy._2
737741 let cm = cy._3
738742 let bH = cy._4
739743 let cd = cy._5
740744 let ek = invoke(ay, "burn", [cm], [AttachedPayment(bH, cm)])
741745 if ((ek == ek))
742746 then cd
743747 else throw("Strict value is not equal to itself.")
744748 }
745749
746750
747751
748752 @Callable(dg)
749753 func getOneTkn (el,em,en,eo,bf) = if ((size(dg.payments) != 1))
750754 then throw("1 pmnt expd")
751755 else {
752756 let bw = aD()
753757 let bK = bw[r]
754758 let bL = bw[s]
755759 let bM = bw[t]
756760 let bN = parseIntValue(bw[u])
757761 let bO = parseIntValue(bw[v])
758762 let bP = bw[q]
759763 let dC = aH()
760764 let dQ = valueOrErrorMessage(addressFromString(dC[A]), "Wr sl addr")
761765 let dh = value(dg.payments[0])
762766 let dS = valueOrElse(getString(this, ab()), "")
763767 let bJ = if ((dS == toString(dg.caller)))
764768 then dg.originCaller
765769 else dg.caller
766770 let bG = toBase58String(dg.transactionId)
767771 let bH = value(dh.assetId)
768772 let cm = dh.amount
769773 if ((1000000000 > cm))
770774 then throw("Min pmt 10 LP")
771775 else if (if (if ((0 > bf))
772776 then true
773777 else (0 > el))
774778 then true
775779 else (0 > en))
776780 then throw("Wrong params")
777781 else if ((bK != toBase58String(bH)))
778782 then throw("Wrong LP")
779783 else {
780784 let cy = bF(toBase58String(dg.transactionId), toBase58String(bH), cm, dg.caller)
781785 let ep = cy._1
782786 let eq = cy._2
783787 let bR = aX(bL)
784788 let bT = aX(bM)
785789 let er = if ((eo == bL))
786790 then $Tuple7((bR - ep), (bT - eq), el, eq, 0, 0, (ep + el))
787791 else if ((eo == bM))
788792 then $Tuple7((bR - ep), (bT - eq), 0, 0, el, ep, (eq + el))
789793 else throw("wrong outAssetId")
790794 let dX = er._1
791795 let dY = er._2
792796 let dZ = er._3
793797 let ea = er._4
794798 let eb = er._5
795799 let ec = er._6
796800 let es = er._7
797801 if (if ((0 > dZ))
798802 then true
799803 else (0 > eb))
800804 then throw("Wrong calc")
801805 else {
802806 let bk = invoke(dQ, "calcD", [toString(dX), toString(dY), az, h, i], nil)
803807 let bj = invoke(dQ, "calcD", [toString(((dX - dZ) + ec)), toString(((dY + ea) - eb)), az, h, i], nil)
804808 let ed = bi(parseBigIntValue(ar(bj)), parseBigIntValue(ar(bk)), g)
805809 if ((ed == ed))
806810 then {
807811 let et = dm(es)._1
808812 let eu = bc(toBigInt(et), toBigInt(en), toBigInt(bf))
809813 if ((eu == eu))
810814 then {
811815 let ev = if ((eo == bL))
812816 then $Tuple2(toInt(eu._2), 0)
813817 else $Tuple2(0, toInt(eu._2))
814818 let ew = ev._1
815819 let ex = ev._2
816820 let ey = (ew + ex)
817821 let dV = (es - et)
818822 let ez = if ((eo == "WAVES"))
819823 then unit
820824 else fromBase58String(eo)
821825 let eh = if ((dV > 0))
822826 then [ScriptTransfer(aC, dV, ez)]
823827 else nil
824828 let eA = aZ(C(bT, bO), C(bR, bN))
825829 let eB = F(eA, a)
826830 let cd = [ScriptTransfer(bJ, ey, ez), StringEntry(X(toString(bJ), bG), aT(ew, ex, cm, eB, height, lastBlock.timestamp)), IntegerEntry(Q(), eB), IntegerEntry(R(height, lastBlock.timestamp), eB)]
827831 if ((cd == cd))
828832 then {
829833 let eC = invoke(ay, "burn", [cm], [AttachedPayment(bH, cm)])
830834 if ((eC == eC))
831835 then (cd ++ eh)
832836 else throw("Strict value is not equal to itself.")
833837 }
834838 else throw("Strict value is not equal to itself.")
835839 }
836840 else throw("Strict value is not equal to itself.")
837841 }
838842 else throw("Strict value is not equal to itself.")
839843 }
840844 }
841845 }
842846
843847
844848
845849 @Callable(dg)
846850 func getNoLess (eD,eE) = {
847851 let cy = df(dg)
848852 let cb = cy._1
849853 let cc = cy._2
850854 let cm = cy._3
851855 let bH = cy._4
852856 let cd = cy._5
853857 if ((eD > cb))
854858 then throw(((("Failed: " + toString(cb)) + " < ") + toString(eD)))
855859 else if ((eE > cc))
856860 then throw(((("Failed: " + toString(cc)) + " < ") + toString(eE)))
857861 else {
858862 let eF = invoke(ay, "burn", [cm], [AttachedPayment(bH, cm)])
859863 if ((eF == eF))
860864 then cd
861865 else throw("Strict value is not equal to itself.")
862866 }
863867 }
864868
865869
866870
867871 @Callable(dg)
868872 func unstakeAndGet (dn) = {
869873 let eG = if ((size(dg.payments) != 0))
870874 then throw("No pmnts expd")
871875 else true
872876 if ((eG == eG))
873877 then {
874878 let bw = aD()
875879 let eH = aH()
876880 let dG = fromBase58String(bw[r])
877881 let eI = valueOrErrorMessage(addressFromString(eH[y]), "Wr st addr")
878882 let eJ = invoke(eI, "unstake", [toBase58String(dG), dn], nil)
879883 if ((eJ == eJ))
880884 then {
881885 let cy = bF(toBase58String(dg.transactionId), toBase58String(dG), dn, dg.caller)
882886 let bP = parseIntValue(cy._9)
883887 let cd = cy._10
884888 let eK = if (if (aA())
885889 then true
886890 else (bP == o))
887891 then throw(("Blocked: " + toString(bP)))
888892 else true
889893 if ((eK == eK))
890894 then {
891895 let eL = invoke(ay, "burn", [dn], [AttachedPayment(dG, dn)])
892896 if ((eL == eL))
893897 then cd
894898 else throw("Strict value is not equal to itself.")
895899 }
896900 else throw("Strict value is not equal to itself.")
897901 }
898902 else throw("Strict value is not equal to itself.")
899903 }
900904 else throw("Strict value is not equal to itself.")
901905 }
902906
903907
904908
905909 @Callable(dg)
906910 func activate (eM,eN) = if ((toString(dg.caller) != toString(ay)))
907911 then throw("denied")
908912 else $Tuple2([StringEntry(Y(), eM), StringEntry(Z(), eN)], "success")
909913
910914
911915
912916 @Callable(dg)
913917 func setS (eO,eK) = if ((toString(dg.caller) != au(this, ab())))
914918 then ds
915919 else [StringEntry(eO, eK)]
916920
917921
918922
919923 @Callable(dg)
920924 func setI (eO,eK) = if ((toString(dg.caller) != au(this, ab())))
921925 then ds
922926 else [IntegerEntry(eO, eK)]
923927
924928
925929
926930 @Callable(dg)
927931 func getPoolConfigWrapperREADONLY () = $Tuple2(nil, aD())
928932
929933
930934
931935 @Callable(dg)
932936 func getAccBalanceWrapperREADONLY (aY) = $Tuple2(nil, aX(aY))
933937
934938
935939
936940 @Callable(dg)
937941 func calcPricesWrapperREADONLY (bq,br,bv) = {
938942 let eP = bu(bq, br, bv)
939943 $Tuple2(nil, [toString(eP[0]), toString(eP[1]), toString(eP[2])])
940944 }
941945
942946
943947
944948 @Callable(dg)
945949 func fromX18WrapperREADONLY (G,eQ) = $Tuple2(nil, F(parseBigIntValue(G), eQ))
946950
947951
948952
949953 @Callable(dg)
950954 func toX18WrapperREADONLY (D,E) = $Tuple2(nil, toString(C(D, E)))
951955
952956
953957
954958 @Callable(dg)
955959 func calcPriceBigIntWrapperREADONLY (ba,bb) = $Tuple2(nil, toString(aZ(parseBigIntValue(ba), parseBigIntValue(bb))))
956960
957961
958962
959963 @Callable(dg)
960964 func estimatePutOperationWrapperREADONLY (bG,bf,cf,cg,ch,ci,eR,cj,ck) = $Tuple2(nil, ce(bG, bf, cf, cg, ch, ci, eR, cj, ck, false, 0, ""))
961965
962966
963967
964968 @Callable(dg)
965969 func estimateGetOperationWrapperREADONLY (bG,eS,bI,eR) = {
966970 let cy = bF(bG, eS, bI, addressFromStringValue(eR))
967971 $Tuple2(nil, $Tuple10(cy._1, cy._2, cy._3, cy._4, cy._5, cy._6, cy._7, toString(cy._8), cy._9, cy._10))
968972 }
969973
970974
971975 @Verifier(eT)
972976 func eU () = {
973977 let eV = {
974978 let as = dp()
975979 if ($isInstanceOf(as, "ByteVector"))
976980 then {
977981 let du = as
978982 du
979983 }
980984 else if ($isInstanceOf(as, "Unit"))
981985 then eT.senderPublicKey
982986 else throw("Match error")
983987 }
984988 let as = eT
985989 if ($isInstanceOf(as, "Order"))
986990 then {
987991 let cT = as
988992 let eW = aB()
989993 let eX = cS(cT)
990994 let eY = sigVerify(cT.bodyBytes, cT.proofs[0], cT.senderPublicKey)
991995 let eZ = sigVerify(cT.bodyBytes, cT.proofs[1], eW)
992996 if (if (if (eX)
993997 then eY
994998 else false)
995999 then eZ
9961000 else false)
9971001 then true
9981002 else an(eX, eY, eZ)
9991003 }
10001004 else if ($isInstanceOf(as, "SetScriptTransaction"))
10011005 then {
10021006 let dq = as
10031007 let fa = blake2b256(value(dq.script))
10041008 let fb = fromBase64String(value(getString(ay, am())))
10051009 let fc = scriptHash(this)
10061010 if (if ((fb == fa))
10071011 then (fc != fa)
10081012 else false)
10091013 then true
10101014 else sigVerify(eT.bodyBytes, eT.proofs[0], eV)
10111015 }
10121016 else sigVerify(eT.bodyBytes, eT.proofs[0], eV)
10131017 }
10141018

github/deemru/w8io/c3f4982 
90.36 ms