tx · GUpMxyZQmTczx19YvnwihhixsXw3smudYtE2uzkPhioe

3MyeMZm2BLBkcgK2VBeTU8h1n562iB3zA2Z:  -0.02900000 Waves

2022.09.12 14:00 [2225790] smart account 3MyeMZm2BLBkcgK2VBeTU8h1n562iB3zA2Z > SELF 0.00000000 Waves

{ "type": 13, "id": "GUpMxyZQmTczx19YvnwihhixsXw3smudYtE2uzkPhioe", "fee": 2900000, "feeAssetId": null, "timestamp": 1662980489684, "version": 2, "chainId": 84, "sender": "3MyeMZm2BLBkcgK2VBeTU8h1n562iB3zA2Z", "senderPublicKey": "5bHbDgAVwbyzkor8HrHKU8zcg5RfwKy3rNihVqk8YUvP", "proofs": [ "4vCpHwvqEZKbJ9FTzp7W9DNP3Cyk4ekobNoztWTo2846BbeRnPkbFrLBP3R1Do483nhduyctxBeifxkfJ6gWKJDd" ], "script": "base64:BgJ/CAISAwoBCBIDCgEIEgASBAoCAQQSBwoFAQEBAQQSAwoBARIAEgcKBQEBAQgBEgQKAgEBEgMKAQESBAoCCAgSBAoCCAgSBAoCCAESABIDCgEIEgUKAwEBARIECgIIARIECgIBARIECgIICBILCgkIAQECAQIIBAQSBgoECAgBCE8AD2RlZmF1bHREZWNpbWFscwDAhD0ABnNjYWxlOACAwtcvAAxzY2FsZThCaWdJbnQJALYCAQCAwtcvAAdzY2FsZTE4CQC2AgEAgICQu7rWrfANAAp6ZXJvQmlnSW50CQC2AgEAAAAJb25lQmlnSW50CQC2AgEAAQAKc2xpcHBhZ2U0RAkAtgIBCQBlAgUGc2NhbGU4CQBpAgkAaAIFBnNjYWxlOAABBQZzY2FsZTgABUFtdWx0AgMxMDAABURjb252AgExAANTRVACAl9fAAVFTVBUWQIAAApQb29sQWN0aXZlAAEAClBvb2xQdXREaXMAAgAOUG9vbE1hdGNoZXJEaXMAAwAMUG9vbFNodXRkb3duAAQADmlkeFBvb2xBZGRyZXNzAAEACWlkeFBvb2xTdAACAAlpZHhMUEFzSWQAAwAJaWR4QW1Bc0lkAAQACWlkeFByQXNJZAAFAAtpZHhBbXRBc0RjbQAGAA1pZHhQcmljZUFzRGNtAAcAC2lkeElBbXRBc0lkAAgADWlkeElQcmljZUFzSWQACQAPaWR4RmFjdFN0YWtDbnRyAAEAEGlkeEZhY3RTbGlwcENudHIABwARaWR4RmFjdEd3eFJld0NudHIACgAFZGVsYXkCCSVzX19kZWxheQECdDECB29yaWdWYWwNb3JpZ1NjYWxlTXVsdAkAvAIDCQC2AgEFB29yaWdWYWwFB3NjYWxlMTgJALYCAQUNb3JpZ1NjYWxlTXVsdAECZjECA3ZhbA9yZXN1bHRTY2FsZU11bHQJAKADAQkAvAIDBQN2YWwJALYCAQUPcmVzdWx0U2NhbGVNdWx0BQdzY2FsZTE4AQJ0cwMDYW10CHJlc1NjYWxlCGN1clNjYWxlCQBrAwUDYW10BQhyZXNTY2FsZQUIY3VyU2NhbGUBA2FicwEDdmFsAwkAvwICBQp6ZXJvQmlnSW50BQN2YWwJAL4CAQUDdmFsBQN2YWwBAmZjAAITJXNfX2ZhY3RvcnlDb250cmFjdAEDbXBrAAIUJXNfX21hbmFnZXJQdWJsaWNLZXkBBHBtcGsAAhslc19fcGVuZGluZ01hbmFnZXJQdWJsaWNLZXkBAnBsAAIRJXMlc19fcHJpY2VfX2xhc3QBAnBoAgFoAXQJALkJAgkAzAgCAhglcyVzJWQlZF9fcHJpY2VfX2hpc3RvcnkJAMwIAgkApAMBBQFoCQDMCAIJAKQDAQUBdAUDbmlsBQNTRVABA3BhdQICdWEEdHhJZAkArAICCQCsAgIJAKwCAgILJXMlcyVzX19QX18FAnVhAgJfXwUEdHhJZAEDZ2F1AgJ1YQR0eElkCQCsAgIJAKwCAgkArAICAgslcyVzJXNfX0dfXwUCdWECAl9fBQR0eElkAQJhYQACDyVzX19hbW91bnRBc3NldAECcGEAAg4lc19fcHJpY2VBc3NldAEDYW1wAAIHJXNfX2FtcAEDYWRhAAINJXNfX2FkZG9uQWRkcgEFbGdvdGMBBmNhbGxlcgkAuQkCCQDMCAICFyVzJXNfX2xhc3RHZXRPbmVUa25DYWxsCQDMCAIFBmNhbGxlcgUDbmlsBQNTRVABBWxzb3RjAQZjYWxsZXIJALkJAgkAzAgCAhclcyVzX19sYXN0UHV0T25lVGtuQ2FsbAkAzAgCBQZjYWxsZXIFA25pbAUDU0VQAQRmY2ZnAAIRJXNfX2ZhY3RvcnlDb25maWcBBG10cGsAAhglcyVzX19tYXRjaGVyX19wdWJsaWNLZXkBAnBjAgZpQW10QXMFaVByQXMJAKwCAgkArAICCQCsAgIJAKwCAgIIJWQlZCVzX18FBmlBbXRBcwICX18FBWlQckFzAghfX2NvbmZpZwEDbWJhAQViQVN0cgkArAICAiglcyVzJXNfX21hcHBpbmdzX19iYXNlQXNzZXQyaW50ZXJuYWxJZF9fBQViQVN0cgEDYXBzAAIMJXNfX3NodXRkb3duARxrZXlBbGxvd2VkTHBTdGFibGVTY3JpcHRIYXNoAAIdJXNfX2FsbG93ZWRMcFN0YWJsZVNjcmlwdEhhc2gBA3RvZQMDb3JWBnNlbmRyVgZtYXRjaFYJAAIBCQCsAgIJAKwCAgkArAICCQCsAgIJAKwCAgIRRmFpbGVkOiBvcmRWYWxpZD0JAKUDAQUDb3JWAgsgc25kclZhbGlkPQkApQMBBQZzZW5kclYCDCBtdGNoclZhbGlkPQkApQMBBQZtYXRjaFYBA3N0cgEDdmFsBAckbWF0Y2gwBQN2YWwDCQABAgUHJG1hdGNoMAIGU3RyaW5nBAZ2YWxTdHIFByRtYXRjaDAFBnZhbFN0cgkAAgECE2ZhaWwgY2FzdCB0byBTdHJpbmcBBHN0cmYCBGFkZHIDa2V5CQETdmFsdWVPckVycm9yTWVzc2FnZQIJAJ0IAgUEYWRkcgUDa2V5CQC5CQIJAMwIAgIKbWFuZGF0b3J5IAkAzAgCCQClCAEFBGFkZHIJAMwIAgIBLgkAzAgCBQNrZXkJAMwIAgIMIG5vdCBkZWZpbmVkBQNuaWwCAAEEaW50ZgIEYWRkcgNrZXkJARN2YWx1ZU9yRXJyb3JNZXNzYWdlAgkAmggCBQRhZGRyBQNrZXkJALkJAgkAzAgCAgptYW5kYXRvcnkgCQDMCAIJAKUIAQUEYWRkcgkAzAgCAgEuCQDMCAIFA2tleQkAzAgCAgwgbm90IGRlZmluZWQFA25pbAIAAANmY2EJARFAZXh0ck5hdGl2ZSgxMDYyKQEJAQRzdHJmAgUEdGhpcwkBAmZjAAABQQkBBHN0cmYCBQR0aGlzCQEDYW1wAAEDaWdzAAkBC3ZhbHVlT3JFbHNlAgkAmwgCBQNmY2EJAQNhcHMABwECbXAACQDZBAEJAQRzdHJmAgUDZmNhCQEEbXRwawABA2dwYwAEBWFtdEFzCQEEc3RyZgIFBHRoaXMJAQJhYQAEB3ByaWNlQXMJAQRzdHJmAgUEdGhpcwkBAnBhAAQIaVByaWNlQXMJAQRpbnRmAgUDZmNhCQEDbWJhAQUHcHJpY2VBcwQGaUFtdEFzCQEEaW50ZgIFA2ZjYQkBA21iYQEFBWFtdEFzCQC1CQIJAQRzdHJmAgUDZmNhCQECcGMCCQCkAwEFBmlBbXRBcwkApAMBBQhpUHJpY2VBcwUDU0VQAQNnZmMACQC1CQIJAQRzdHJmAgUDZmNhCQEEZmNmZwAFA1NFUAERZGF0YVB1dEFjdGlvbkluZm8KDWluQW10QXNzZXRBbXQPaW5QcmljZUFzc2V0QW10CG91dExwQW10BXByaWNlCnNsaXBCeVVzZXIMc2xpcHBhZ2VSZWFsCHR4SGVpZ2h0C3R4VGltZXN0YW1wDHNsaXBhZ2VBbUFtdAxzbGlwYWdlUHJBbXQJALkJAgkAzAgCAhQlZCVkJWQlZCVkJWQlZCVkJWQlZAkAzAgCCQCkAwEFDWluQW10QXNzZXRBbXQJAMwIAgkApAMBBQ9pblByaWNlQXNzZXRBbXQJAMwIAgkApAMBBQhvdXRMcEFtdAkAzAgCCQCkAwEFBXByaWNlCQDMCAIJAKQDAQUKc2xpcEJ5VXNlcgkAzAgCCQCkAwEFDHNsaXBwYWdlUmVhbAkAzAgCCQCkAwEFCHR4SGVpZ2h0CQDMCAIJAKQDAQULdHhUaW1lc3RhbXAJAMwIAgkApAMBBQxzbGlwYWdlQW1BbXQJAMwIAgkApAMBBQxzbGlwYWdlUHJBbXQFA25pbAUDU0VQARFkYXRhR2V0QWN0aW9uSW5mbwYOb3V0QW10QXNzZXRBbXQQb3V0UHJpY2VBc3NldEFtdAdpbkxwQW10BXByaWNlCHR4SGVpZ2h0C3R4VGltZXN0YW1wCQC5CQIJAMwIAgIMJWQlZCVkJWQlZCVkCQDMCAIJAKQDAQUOb3V0QW10QXNzZXRBbXQJAMwIAgkApAMBBRBvdXRQcmljZUFzc2V0QW10CQDMCAIJAKQDAQUHaW5McEFtdAkAzAgCCQCkAwEFBXByaWNlCQDMCAIJAKQDAQUIdHhIZWlnaHQJAMwIAgkApAMBBQt0eFRpbWVzdGFtcAUDbmlsBQNTRVABDWdldEFjY0JhbGFuY2UBB2Fzc2V0SWQDCQAAAgUHYXNzZXRJZAIFV0FWRVMICQDvBwEFBHRoaXMJYXZhaWxhYmxlCQDwBwIFBHRoaXMJANkEAQUHYXNzZXRJZAEEY3BiaQIIcHJBbXRYMTgIYW1BbXRYMTgJALwCAwUIcHJBbXRYMTgFB3NjYWxlMTgFCGFtQW10WDE4AQN2YWQDAkExAkEyCHNsaXBwYWdlBARkaWZmCQC8AgMJALgCAgUCQTEFAkEyBQxzY2FsZThCaWdJbnQFAkEyBARwYXNzCQC/AgIJALgCAgUIc2xpcHBhZ2UJAQNhYnMBBQRkaWZmBQp6ZXJvQmlnSW50AwkBASEBBQRwYXNzCQACAQkArAICAgpCaWcgc2xwZzogCQCmAwEFBGRpZmYJAJQKAgUEcGFzcwkAmQMBCQDMCAIFAkExCQDMCAIFAkEyBQNuaWwBAnZkAwJEMQJEMARzbHBnBARkaWZmCQC8AgMFAkQwBQxzY2FsZThCaWdJbnQFAkQxBARmYWlsCQC/AgIFBHNscGcFBGRpZmYDAwUEZmFpbAYJAL8CAgUCRDAFAkQxCQACAQkArAICCQCsAgIJAKwCAgkArAICCQCsAgIJAKwCAgkApgMBBQJEMAIBIAkApgMBBQJEMQIBIAkApgMBBQRkaWZmAgEgCQCmAwEFBHNscGcFBGZhaWwBA3BjcAQKYW1Bc3NldERjbQpwckFzc2V0RGNtBWFtQW10BXByQW10BAthbXRBc0FtdFgxOAkBAnQxAgUFYW1BbXQFCmFtQXNzZXREY20ECnByQXNBbXRYMTgJAQJ0MQIFBXByQW10BQpwckFzc2V0RGNtCQEEY3BiaQIFCnByQXNBbXRYMTgFC2FtdEFzQW10WDE4AQpjYWxjUHJpY2VzAwVhbUFtdAVwckFtdAVscEFtdAQDY2ZnCQEDZ3BjAAQIYW10QXNEY20JAQ1wYXJzZUludFZhbHVlAQkAkQMCBQNjZmcFC2lkeEFtdEFzRGNtBAdwckFzRGNtCQENcGFyc2VJbnRWYWx1ZQEJAJEDAgUDY2ZnBQ1pZHhQcmljZUFzRGNtBAhwcmljZVgxOAkBA3BjcAQFCGFtdEFzRGNtBQdwckFzRGNtBQVhbUFtdAUFcHJBbXQECGFtQW10WDE4CQECdDECBQVhbUFtdAUIYW10QXNEY20ECHByQW10WDE4CQECdDECBQVwckFtdAUHcHJBc0RjbQQIbHBBbXRYMTgJAQJ0MQIFBWxwQW10BQZzY2FsZTgEDWxwUHJJbkFtQXNYMTgJAQRjcGJpAgUIYW1BbXRYMTgFCGxwQW10WDE4BA1scFBySW5QckFzWDE4CQEEY3BiaQIFCHByQW10WDE4BQhscEFtdFgxOAkAzAgCBQhwcmljZVgxOAkAzAgCBQ1scFBySW5BbUFzWDE4CQDMCAIFDWxwUHJJblByQXNYMTgFA25pbAEPY2FsY3VsYXRlUHJpY2VzAwVhbUFtdAVwckFtdAVscEFtdAQBcAkBCmNhbGNQcmljZXMDBQVhbUFtdAUFcHJBbXQFBWxwQW10CQDMCAIJAQJmMQIJAJEDAgUBcAAABQZzY2FsZTgJAMwIAgkBAmYxAgkAkQMCBQFwAAEFBnNjYWxlOAkAzAgCCQECZjECCQCRAwIFAXAAAgUGc2NhbGU4BQNuaWwBA2VnbwQGdHhJZDU4CnBtdEFzc2V0SWQIcG10THBBbXQLdXNlckFkZHJlc3MEA2NmZwkBA2dwYwAEBGxwSWQJAJEDAgUDY2ZnBQlpZHhMUEFzSWQEBGFtSWQJAJEDAgUDY2ZnBQlpZHhBbUFzSWQEBHBySWQJAJEDAgUDY2ZnBQlpZHhQckFzSWQEBWFtRGNtCQENcGFyc2VJbnRWYWx1ZQEJAJEDAgUDY2ZnBQtpZHhBbXRBc0RjbQQFcHJEY20JAQ1wYXJzZUludFZhbHVlAQkAkQMCBQNjZmcFDWlkeFByaWNlQXNEY20EA3N0cwkAkQMCBQNjZmcFCWlkeFBvb2xTdAQHbHBFbWlzcwgJARN2YWx1ZU9yRXJyb3JNZXNzYWdlAgkA7AcBCQDZBAEFBGxwSWQCC1dyb25nIExQIGlkCHF1YW50aXR5AwkBAiE9AgUEbHBJZAUKcG10QXNzZXRJZAkAAgECD1dyb25nIHBtdCBhc3NldAQJYW1CYWxhbmNlCQENZ2V0QWNjQmFsYW5jZQEFBGFtSWQECXByQmFsYW5jZQkBDWdldEFjY0JhbGFuY2UBBQRwcklkBBxhbW91bnRCYWxhbmNlRGVmYXVsdERlY2ltYWxzCQBrAwUJYW1CYWxhbmNlBQ9kZWZhdWx0RGVjaW1hbHMFBWFtRGNtBBtwcmljZUJhbGFuY2VEZWZhdWx0RGVjaW1hbHMJAGsDBQlwckJhbGFuY2UFD2RlZmF1bHREZWNpbWFscwUFcHJEY20EDGFtQmFsYW5jZVgxOAkBAnQxAgUcYW1vdW50QmFsYW5jZURlZmF1bHREZWNpbWFscwUPZGVmYXVsdERlY2ltYWxzBAxwckJhbGFuY2VYMTgJAQJ0MQIFG3ByaWNlQmFsYW5jZURlZmF1bHREZWNpbWFscwUPZGVmYXVsdERlY2ltYWxzBAtjdXJQcmljZVgxOAkBBGNwYmkCBQxwckJhbGFuY2VYMTgFDGFtQmFsYW5jZVgxOAQIY3VyUHJpY2UJAQJmMQIFC2N1clByaWNlWDE4BQZzY2FsZTgEC3BtdExwQW10WDE4CQECdDECBQhwbXRMcEFtdAUGc2NhbGU4BApscEVtaXNzWDE4CQECdDECBQdscEVtaXNzBQZzY2FsZTgEC291dEFtQW10WDE4CQC8AgMFDGFtQmFsYW5jZVgxOAULcG10THBBbXRYMTgFCmxwRW1pc3NYMTgEC291dFByQW10WDE4CQC8AgMFDHByQmFsYW5jZVgxOAULcG10THBBbXRYMTgFCmxwRW1pc3NYMTgEHm91dEFtb3VudEFtb3VudERlZmF1bHREZWNpbWFscwkBAmYxAgULb3V0QW1BbXRYMTgFD2RlZmF1bHREZWNpbWFscwQdb3V0UHJpY2VBbW91bnREZWZhdWx0RGVjaW1hbHMJAQJmMQIFC291dFByQW10WDE4BQ9kZWZhdWx0RGVjaW1hbHMECG91dEFtQW10CQBrAwUeb3V0QW1vdW50QW1vdW50RGVmYXVsdERlY2ltYWxzBQVhbURjbQUPZGVmYXVsdERlY2ltYWxzBAhvdXRQckFtdAkAawMFHW91dFByaWNlQW1vdW50RGVmYXVsdERlY2ltYWxzBQVwckRjbQUPZGVmYXVsdERlY2ltYWxzBAVzdGF0ZQMJAAACBQZ0eElkNTgCAAUDbmlsCQDMCAIJAQ5TY3JpcHRUcmFuc2ZlcgMFC3VzZXJBZGRyZXNzBQhvdXRBbUFtdAMJAAACBQRhbUlkAgVXQVZFUwUEdW5pdAkA2QQBBQRhbUlkCQDMCAIJAQ5TY3JpcHRUcmFuc2ZlcgMFC3VzZXJBZGRyZXNzBQhvdXRQckFtdAMJAAACBQRwcklkAgVXQVZFUwUEdW5pdAkA2QQBBQRwcklkCQDMCAIJAQtTdHJpbmdFbnRyeQIJAQNnYXUCCQClCAEFC3VzZXJBZGRyZXNzBQZ0eElkNTgJARFkYXRhR2V0QWN0aW9uSW5mbwYFCG91dEFtQW10BQhvdXRQckFtdAUIcG10THBBbXQFCGN1clByaWNlBQZoZWlnaHQIBQlsYXN0QmxvY2sJdGltZXN0YW1wCQDMCAIJAQxJbnRlZ2VyRW50cnkCCQECcGwABQhjdXJQcmljZQkAzAgCCQEMSW50ZWdlckVudHJ5AgkBAnBoAgUGaGVpZ2h0CAUJbGFzdEJsb2NrCXRpbWVzdGFtcAUIY3VyUHJpY2UFA25pbAkAnAoKBQhvdXRBbUFtdAUIb3V0UHJBbXQFBGFtSWQFBHBySWQFCWFtQmFsYW5jZQUJcHJCYWxhbmNlBQdscEVtaXNzBQtjdXJQcmljZVgxOAUDc3RzBQVzdGF0ZQEDZXBvDAZ0eElkNTgIc2xpcHBhZ2UHaW5BbUFtdAZpbkFtSWQHaW5QckFtdAZpblBySWQLdXNlckFkZHJlc3MGaXNFdmFsBmVtaXRMcAppc09uZUFzc2V0BnBtdEFtdAVwbXRJZAQDY2ZnCQEDZ3BjAAQEbHBJZAkA2QQBCQCRAwIFA2NmZwUJaWR4TFBBc0lkBAdhbUlkU3RyCQCRAwIFA2NmZwUJaWR4QW1Bc0lkBAdwcklkU3RyCQCRAwIFA2NmZwUJaWR4UHJBc0lkBAlpbkFtSWRTdHIJAJEDAgUDY2ZnBQtpZHhJQW10QXNJZAQJaW5QcklkU3RyCQCRAwIFA2NmZwUNaWR4SVByaWNlQXNJZAQGYW10RGNtCQENcGFyc2VJbnRWYWx1ZQEJAJEDAgUDY2ZnBQtpZHhBbXRBc0RjbQQIcHJpY2VEY20JAQ1wYXJzZUludFZhbHVlAQkAkQMCBQNjZmcFDWlkeFByaWNlQXNEY20EA3N0cwkAkQMCBQNjZmcFCWlkeFBvb2xTdAQEbHBFbQgJARN2YWx1ZU9yRXJyb3JNZXNzYWdlAgkA7AcBBQRscElkAghXciBscCBhcwhxdWFudGl0eQQJYW1CYWxhbmNlAwUGaXNFdmFsCQENZ2V0QWNjQmFsYW5jZQEFB2FtSWRTdHIDAwUKaXNPbmVBc3NldAkAAAIFBXBtdElkBQdhbUlkU3RyBwkAZQIJAQ1nZXRBY2NCYWxhbmNlAQUHYW1JZFN0cgUGcG10QW10AwUKaXNPbmVBc3NldAkBDWdldEFjY0JhbGFuY2UBBQdhbUlkU3RyCQBlAgkBDWdldEFjY0JhbGFuY2UBBQdhbUlkU3RyBQdpbkFtQW10BAlwckJhbGFuY2UDBQZpc0V2YWwJAQ1nZXRBY2NCYWxhbmNlAQUHcHJJZFN0cgMDBQppc09uZUFzc2V0CQAAAgUFcG10SWQFB3BySWRTdHIHCQBlAgkBDWdldEFjY0JhbGFuY2UBBQdwcklkU3RyBQZwbXRBbXQDBQppc09uZUFzc2V0CQENZ2V0QWNjQmFsYW5jZQEFB3BySWRTdHIJAGUCCQENZ2V0QWNjQmFsYW5jZQEFB3BySWRTdHIFB2luUHJBbXQEHGFtb3VudEJhbGFuY2VEZWZhdWx0RGVjaW1hbHMJAGsDBQlhbUJhbGFuY2UFD2RlZmF1bHREZWNpbWFscwUGYW10RGNtBBtwcmljZUJhbGFuY2VEZWZhdWx0RGVjaW1hbHMJAGsDBQlwckJhbGFuY2UFD2RlZmF1bHREZWNpbWFscwUIcHJpY2VEY20EImluQW1vdW50QXNzZXRBbW91bnREZWZhdWx0RGVjaW1hbHMJAGsDBQdpbkFtQW10BQ9kZWZhdWx0RGVjaW1hbHMFBmFtdERjbQQhaW5QcmljZUFzc2V0QW1vdW50RGVmYXVsdERlY2ltYWxzCQBrAwUHaW5QckFtdAUPZGVmYXVsdERlY2ltYWxzBQhwcmljZURjbQQPaW5BbUFzc2V0QW10WDE4CQECdDECBSJpbkFtb3VudEFzc2V0QW1vdW50RGVmYXVsdERlY2ltYWxzBQ9kZWZhdWx0RGVjaW1hbHMED2luUHJBc3NldEFtdFgxOAkBAnQxAgUhaW5QcmljZUFzc2V0QW1vdW50RGVmYXVsdERlY2ltYWxzBQ9kZWZhdWx0RGVjaW1hbHMEDHVzZXJQcmljZVgxOAkBBGNwYmkCBQ9pblByQXNzZXRBbXRYMTgFD2luQW1Bc3NldEFtdFgxOAQMYW1CYWxhbmNlWDE4CQECdDECBRxhbW91bnRCYWxhbmNlRGVmYXVsdERlY2ltYWxzBQ9kZWZhdWx0RGVjaW1hbHMEDHByQmFsYW5jZVgxOAkBAnQxAgUbcHJpY2VCYWxhbmNlRGVmYXVsdERlY2ltYWxzBQ9kZWZhdWx0RGVjaW1hbHMEAXIDCQAAAgUEbHBFbQAABAtjdXJQcmljZVgxOAUKemVyb0JpZ0ludAQLc2xpcHBhZ2VYMTgFCnplcm9CaWdJbnQECGxwQW10WDE4CQB2BgkAuQICBQ9pbkFtQXNzZXRBbXRYMTgFD2luUHJBc3NldEFtdFgxOAAACQC2AgEABQABAAAFBERPV04JAJcKBQkBAmYxAgUIbHBBbXRYMTgFBnNjYWxlOAkBAmYxAgUPaW5BbUFzc2V0QW10WDE4BQ9kZWZhdWx0RGVjaW1hbHMJAQJmMQIFD2luUHJBc3NldEFtdFgxOAUPZGVmYXVsdERlY2ltYWxzCQEEY3BiaQIJALcCAgUMcHJCYWxhbmNlWDE4BQ9pblByQXNzZXRBbXRYMTgJALcCAgUMYW1CYWxhbmNlWDE4BQ9pbkFtQXNzZXRBbXRYMTgFC3NsaXBwYWdlWDE4BAtjdXJQcmljZVgxOAkBBGNwYmkCBQxwckJhbGFuY2VYMTgFDGFtQmFsYW5jZVgxOAQPc2xpcHBhZ2VSZWFsWDE4CQC8AgMJAQNhYnMBCQC4AgIFC2N1clByaWNlWDE4BQx1c2VyUHJpY2VYMTgFB3NjYWxlMTgFC2N1clByaWNlWDE4BAtzbGlwcGFnZVgxOAkBAnQxAgUIc2xpcHBhZ2UFBnNjYWxlOAMDCQECIT0CBQtjdXJQcmljZVgxOAUKemVyb0JpZ0ludAkAvwICBQ9zbGlwcGFnZVJlYWxYMTgFC3NsaXBwYWdlWDE4BwkAAgEJAKwCAgkArAICCQCsAgICD1ByaWNlIHNsaXBwYWdlIAkApgMBBQ9zbGlwcGFnZVJlYWxYMTgCAyA+IAkApgMBBQtzbGlwcGFnZVgxOAQNbHBFbWlzc2lvblgxOAkBAnQxAgUEbHBFbQUGc2NhbGU4BApwclZpYUFtWDE4CQC8AgMFD2luQW1Bc3NldEFtdFgxOAULY3VyUHJpY2VYMTgFB3NjYWxlMTgECmFtVmlhUHJYMTgJALwCAwUPaW5QckFzc2V0QW10WDE4BQdzY2FsZTE4BQtjdXJQcmljZVgxOAQMZXhwZWN0ZWRBbXRzAwkAvwICBQpwclZpYUFtWDE4BQ9pblByQXNzZXRBbXRYMTgJAJQKAgUKYW1WaWFQclgxOAUPaW5QckFzc2V0QW10WDE4CQCUCgIFD2luQW1Bc3NldEFtdFgxOAUKcHJWaWFBbVgxOAQRZXhwQW10QXNzZXRBbXRYMTgIBQxleHBlY3RlZEFtdHMCXzEEE2V4cFByaWNlQXNzZXRBbXRYMTgIBQxleHBlY3RlZEFtdHMCXzIECGxwQW10WDE4CQC8AgMFDWxwRW1pc3Npb25YMTgFE2V4cFByaWNlQXNzZXRBbXRYMTgFDHByQmFsYW5jZVgxOAkAlwoFCQECZjECBQhscEFtdFgxOAUGc2NhbGU4CQECZjECBRFleHBBbXRBc3NldEFtdFgxOAUPZGVmYXVsdERlY2ltYWxzCQECZjECBRNleHBQcmljZUFzc2V0QW10WDE4BQ9kZWZhdWx0RGVjaW1hbHMFC2N1clByaWNlWDE4BQtzbGlwcGFnZVgxOAQJY2FsY0xwQW10CAUBcgJfMQQOY2FsY0FtQXNzZXRQbXQJAGsDCAUBcgJfMgUGYW10RGNtBQ9kZWZhdWx0RGVjaW1hbHMEDmNhbGNQckFzc2V0UG10CQBrAwgFAXICXzMFCHByaWNlRGNtBQ9kZWZhdWx0RGVjaW1hbHMECGN1clByaWNlCQECZjECCAUBcgJfNAUGc2NhbGU4BAxzbGlwcGFnZUNhbGMJAQJmMQIIBQFyAl81BQZzY2FsZTgDCQBnAgAABQljYWxjTHBBbXQJAAIBAgdMUCA8PSAwBAllbWl0THBBbXQDCQEBIQEFBmVtaXRMcAAABQljYWxjTHBBbXQEBmFtRGlmZgkAZQIFB2luQW1BbXQFDmNhbGNBbUFzc2V0UG10BAZwckRpZmYJAGUCBQdpblByQW10BQ5jYWxjUHJBc3NldFBtdAQNJHQwMTY2NDcxNjk5MgMDBQppc09uZUFzc2V0CQAAAgUFcG10SWQFB2FtSWRTdHIHCQCUCgIFBnBtdEFtdAAAAwMFCmlzT25lQXNzZXQJAAACBQVwbXRJZAUHcHJJZFN0cgcJAJQKAgAABQZwbXRBbXQJAJQKAgUOY2FsY0FtQXNzZXRQbXQFDmNhbGNQckFzc2V0UG10BAp3cml0ZUFtQW10CAUNJHQwMTY2NDcxNjk5MgJfMQQKd3JpdGVQckFtdAgFDSR0MDE2NjQ3MTY5OTICXzIEC2NvbW1vblN0YXRlCQDMCAIJAQxJbnRlZ2VyRW50cnkCCQECcGwABQhjdXJQcmljZQkAzAgCCQEMSW50ZWdlckVudHJ5AgkBAnBoAgUGaGVpZ2h0CAUJbGFzdEJsb2NrCXRpbWVzdGFtcAUIY3VyUHJpY2UJAMwIAgkBC1N0cmluZ0VudHJ5AgkBA3BhdQIFC3VzZXJBZGRyZXNzBQZ0eElkNTgJARFkYXRhUHV0QWN0aW9uSW5mbwoFCndyaXRlQW1BbXQFCndyaXRlUHJBbXQFCWVtaXRMcEFtdAUIY3VyUHJpY2UFCHNsaXBwYWdlBQxzbGlwcGFnZUNhbGMFBmhlaWdodAgFCWxhc3RCbG9jawl0aW1lc3RhbXAFBmFtRGlmZgUGcHJEaWZmBQNuaWwJAJ8KDQUJY2FsY0xwQW10BQllbWl0THBBbXQFCGN1clByaWNlBQlhbUJhbGFuY2UFCXByQmFsYW5jZQUEbHBFbQUEbHBJZAUDc3RzBQtjb21tb25TdGF0ZQUGYW1EaWZmBQZwckRpZmYFBmluQW1JZAUGaW5QcklkAQNtb2EBBW9yZGVyBANjZmcJAQNncGMABAdhbXRBc0lkCQCRAwIFA2NmZwUJaWR4QW1Bc0lkBAZwckFzSWQJAJEDAgUDY2ZnBQlpZHhQckFzSWQEA3N0cwkBDXBhcnNlSW50VmFsdWUBCQCRAwIFA2NmZwUJaWR4UG9vbFN0BAhhbXRBc0RjbQkBDXBhcnNlSW50VmFsdWUBCQCRAwIFA2NmZwULaWR4QW10QXNEY20EB3ByQXNEY20JAQ1wYXJzZUludFZhbHVlAQkAkQMCBQNjZmcFDWlkeFByaWNlQXNEY20ED2FjY0FtdEFzQmFsYW5jZQkBDWdldEFjY0JhbGFuY2UBBQdhbXRBc0lkBA5hY2NQckFzQmFsYW5jZQkBDWdldEFjY0JhbGFuY2UBBQZwckFzSWQEC2N1clByaWNlWDE4AwkAAAIIBQVvcmRlcglvcmRlclR5cGUFA0J1eQkBA3BjcAQFCGFtdEFzRGNtBQdwckFzRGNtCQBkAgUPYWNjQW10QXNCYWxhbmNlCAUFb3JkZXIGYW1vdW50BQ5hY2NQckFzQmFsYW5jZQkBA3BjcAQFCGFtdEFzRGNtBQdwckFzRGNtCQBlAgUPYWNjQW10QXNCYWxhbmNlCAUFb3JkZXIGYW1vdW50BQ5hY2NQckFzQmFsYW5jZQQIY3VyUHJpY2UJAQJmMQIFC2N1clByaWNlWDE4BQZzY2FsZTgDAwMJAQNpZ3MABgkAAAIFA3N0cwUOUG9vbE1hdGNoZXJEaXMGCQAAAgUDc3RzBQxQb29sU2h1dGRvd24JAAIBAg1BZG1pbiBibG9ja2VkBApvckFtdEFzc2V0CAgFBW9yZGVyCWFzc2V0UGFpcgthbW91bnRBc3NldAQKb3JBbXRBc1N0cgMJAAACBQpvckFtdEFzc2V0BQR1bml0AgVXQVZFUwkA2AQBCQEFdmFsdWUBBQpvckFtdEFzc2V0BAlvclByQXNzZXQICAUFb3JkZXIJYXNzZXRQYWlyCnByaWNlQXNzZXQECW9yUHJBc1N0cgMJAAACBQlvclByQXNzZXQFBHVuaXQCBVdBVkVTCQDYBAEJAQV2YWx1ZQEFCW9yUHJBc3NldAMDCQECIT0CBQpvckFtdEFzU3RyBQdhbXRBc0lkBgkBAiE9AgUJb3JQckFzU3RyBQZwckFzSWQJAAIBAglXciBhc3NldHMECm9yZGVyUHJpY2UIBQVvcmRlcgVwcmljZQQIcHJpY2VEY20JAGsDBQZzY2FsZTgFB3ByQXNEY20FCGFtdEFzRGNtBA5jYXN0T3JkZXJQcmljZQkBAnRzAwUKb3JkZXJQcmljZQUGc2NhbGU4BQhwcmljZURjbQQRaXNPcmRlclByaWNlVmFsaWQDCQAAAggFBW9yZGVyCW9yZGVyVHlwZQUDQnV5CQBnAgUIY3VyUHJpY2UFDmNhc3RPcmRlclByaWNlCQBnAgUOY2FzdE9yZGVyUHJpY2UFCGN1clByaWNlBgECY2cBAWkDCQECIT0CCQCQAwEIBQFpCHBheW1lbnRzAAEJAAIBAgoxIHBtbnQgZXhwBANwbXQJAQV2YWx1ZQEJAJEDAggFAWkIcGF5bWVudHMAAAQKcG10QXNzZXRJZAkBBXZhbHVlAQgFA3BtdAdhc3NldElkBAZwbXRBbXQIBQNwbXQGYW1vdW50BAFyCQEDZWdvBAkA2AQBCAUBaQ10cmFuc2FjdGlvbklkCQDYBAEFCnBtdEFzc2V0SWQFBnBtdEFtdAgFAWkGY2FsbGVyBAhvdXRBbUFtdAgFAXICXzEECG91dFByQW10CAUBcgJfMgQDc3RzCQENcGFyc2VJbnRWYWx1ZQEIBQFyAl85BAVzdGF0ZQgFAXIDXzEwAwMJAQNpZ3MABgkAAAIFA3N0cwUMUG9vbFNodXRkb3duCQACAQkArAICAg9BZG1pbiBibG9ja2VkOiAJAKQDAQUDc3RzCQCXCgUFCG91dEFtQW10BQhvdXRQckFtdAUGcG10QW10BQpwbXRBc3NldElkBQVzdGF0ZQECY3AJBmNhbGxlcgR0eElkB2FtQXNQbXQHcHJBc1BtdAhzbGlwcGFnZQZlbWl0THAKaXNPbmVBc3NldAZwbXRBbXQFcG10SWQEAXIJAQNlcG8MBQR0eElkBQhzbGlwcGFnZQgJAQV2YWx1ZQEFB2FtQXNQbXQGYW1vdW50CAkBBXZhbHVlAQUHYW1Bc1BtdAdhc3NldElkCAkBBXZhbHVlAQUHcHJBc1BtdAZhbW91bnQICQEFdmFsdWUBBQdwckFzUG10B2Fzc2V0SWQFBmNhbGxlcgcFBmVtaXRMcAUKaXNPbmVBc3NldAUGcG10QW10BQVwbXRJZAQDc3RzCQENcGFyc2VJbnRWYWx1ZQEIBQFyAl84AwMDCQEDaWdzAAYJAAACBQNzdHMFClBvb2xQdXREaXMGCQAAAgUDc3RzBQxQb29sU2h1dGRvd24JAAIBCQCsAgICCEJsb2NrZWQ6CQCkAwEFA3N0cwUBcgEBbQAEByRtYXRjaDAJAKIIAQkBA21wawADCQABAgUHJG1hdGNoMAIGU3RyaW5nBAFzBQckbWF0Y2gwCQDZBAEFAXMDCQABAgUHJG1hdGNoMAIEVW5pdAUEdW5pdAkAAgECC01hdGNoIGVycm9yAQJwbQAEByRtYXRjaDAJAKIIAQkBBHBtcGsAAwkAAQIFByRtYXRjaDACBlN0cmluZwQBcwUHJG1hdGNoMAkA2QQBBQFzAwkAAQIFByRtYXRjaDACBFVuaXQFBHVuaXQJAAIBAgtNYXRjaCBlcnJvcgACcGQJAAIBAhFQZXJtaXNzaW9uIGRlbmllZAECbW0BAWkEByRtYXRjaDAJAQFtAAMJAAECBQckbWF0Y2gwAgpCeXRlVmVjdG9yBAJwawUHJG1hdGNoMAMJAAACCAUBaQ9jYWxsZXJQdWJsaWNLZXkFAnBrBgUCcGQDCQABAgUHJG1hdGNoMAIEVW5pdAMJAAACCAUBaQZjYWxsZXIFBHRoaXMGBQJwZAkAAgECC01hdGNoIGVycm9yFQFpAQtjb25zdHJ1Y3RvcgECZmMEAWMJAQJtbQEFAWkDCQAAAgUBYwUBYwkAzAgCCQELU3RyaW5nRW50cnkCCQECZmMABQJmYwUDbmlsCQACAQIkU3RyaWN0IHZhbHVlIGlzIG5vdCBlcXVhbCB0byBpdHNlbGYuAWkBCnNldE1hbmFnZXIBF3BlbmRpbmdNYW5hZ2VyUHVibGljS2V5BAFjCQECbW0BBQFpAwkAAAIFAWMFAWMEAmNtCQDZBAEFF3BlbmRpbmdNYW5hZ2VyUHVibGljS2V5AwkAAAIFAmNtBQJjbQkAzAgCCQELU3RyaW5nRW50cnkCCQEEcG1wawAFF3BlbmRpbmdNYW5hZ2VyUHVibGljS2V5BQNuaWwJAAIBAiRTdHJpY3QgdmFsdWUgaXMgbm90IGVxdWFsIHRvIGl0c2VsZi4JAAIBAiRTdHJpY3QgdmFsdWUgaXMgbm90IGVxdWFsIHRvIGl0c2VsZi4BaQEOY29uZmlybU1hbmFnZXIABAFwCQECcG0ABANocG0DCQEJaXNEZWZpbmVkAQUBcAYJAAIBAhJObyBwZW5kaW5nIG1hbmFnZXIDCQAAAgUDaHBtBQNocG0EA2NwbQMJAAACCAUBaQ9jYWxsZXJQdWJsaWNLZXkJAQV2YWx1ZQEFAXAGCQACAQIbWW91IGFyZSBub3QgcGVuZGluZyBtYW5hZ2VyAwkAAAIFA2NwbQUDY3BtCQDMCAIJAQtTdHJpbmdFbnRyeQIJAQNtcGsACQDYBAEJAQV2YWx1ZQEFAXAJAMwIAgkBC0RlbGV0ZUVudHJ5AQkBBHBtcGsABQNuaWwJAAIBAiRTdHJpY3QgdmFsdWUgaXMgbm90IGVxdWFsIHRvIGl0c2VsZi4JAAIBAiRTdHJpY3QgdmFsdWUgaXMgbm90IGVxdWFsIHRvIGl0c2VsZi4BaQEDcHV0AgRzbGlwCWF1dG9TdGFrZQQHZmFjdENmZwkBA2dmYwAEC3N0YWtpbmdDbnRyCQETdmFsdWVPckVycm9yTWVzc2FnZQIJAKYIAQkAkQMCBQdmYWN0Q2ZnBQ9pZHhGYWN0U3Rha0NudHICCldyIHN0IGFkZHIECHNsaXBDbnRyCQETdmFsdWVPckVycm9yTWVzc2FnZQIJAKYIAQkAkQMCBQdmYWN0Q2ZnBRBpZHhGYWN0U2xpcHBDbnRyAgpXciBzbCBhZGRyAwkAZgIAAAUEc2xpcAkAAgECDldyb25nIHNsaXBwYWdlAwkBAiE9AgkAkAMBCAUBaQhwYXltZW50cwACCQACAQIMMiBwbW50cyBleHBkBAFlCQECY3AJCQClCAEIBQFpBmNhbGxlcgkA2AQBCAUBaQ10cmFuc2FjdGlvbklkCQEPQXR0YWNoZWRQYXltZW50AggJAQV2YWx1ZQEJAJEDAggFAWkIcGF5bWVudHMAAAdhc3NldElkCAkBBXZhbHVlAQkAkQMCCAUBaQhwYXltZW50cwAABmFtb3VudAkAkQMCCAUBaQhwYXltZW50cwABBQRzbGlwBgcAAAIABAllbWl0THBBbXQIBQFlAl8yBAlscEFzc2V0SWQIBQFlAl83BAVzdGF0ZQgFAWUCXzkEBmFtRGlmZggFAWUDXzEwBAZwckRpZmYIBQFlA18xMQQEYW1JZAgFAWUDXzEyBARwcklkCAUBZQNfMTMEAXIJAPwHBAUDZmNhAgRlbWl0CQDMCAIFCWVtaXRMcEFtdAUDbmlsBQNuaWwDCQAAAgUBcgUBcgQCZWwEByRtYXRjaDAFAXIDCQABAgUHJG1hdGNoMAIHQWRkcmVzcwQGbGVnYWN5BQckbWF0Y2gwCQD8BwQFBmxlZ2FjeQIEZW1pdAkAzAgCBQllbWl0THBBbXQFA25pbAUDbmlsBQR1bml0AwkAAAIFAmVsBQJlbAQCc2EDCQBmAgUGYW1EaWZmAAAJAPwHBAUIc2xpcENudHICA3B1dAUDbmlsCQDMCAIJAQ9BdHRhY2hlZFBheW1lbnQCBQRhbUlkBQZhbURpZmYFA25pbAUDbmlsAwkAAAIFAnNhBQJzYQQCc3ADCQBmAgUGcHJEaWZmAAAJAPwHBAUIc2xpcENudHICA3B1dAUDbmlsCQDMCAIJAQ9BdHRhY2hlZFBheW1lbnQCBQRwcklkBQZwckRpZmYFA25pbAUDbmlsAwkAAAIFAnNwBQJzcAQIbHBUcm5zZnIDBQlhdXRvU3Rha2UEAnNzCQD8BwQFC3N0YWtpbmdDbnRyAgVzdGFrZQUDbmlsCQDMCAIJAQ9BdHRhY2hlZFBheW1lbnQCBQlscEFzc2V0SWQFCWVtaXRMcEFtdAUDbmlsAwkAAAIFAnNzBQJzcwUDbmlsCQACAQIkU3RyaWN0IHZhbHVlIGlzIG5vdCBlcXVhbCB0byBpdHNlbGYuCQDMCAIJAQ5TY3JpcHRUcmFuc2ZlcgMIBQFpBmNhbGxlcgUJZW1pdExwQW10BQlscEFzc2V0SWQFA25pbAkAzggCBQVzdGF0ZQUIbHBUcm5zZnIJAAIBAiRTdHJpY3QgdmFsdWUgaXMgbm90IGVxdWFsIHRvIGl0c2VsZi4JAAIBAiRTdHJpY3QgdmFsdWUgaXMgbm90IGVxdWFsIHRvIGl0c2VsZi4JAAIBAiRTdHJpY3QgdmFsdWUgaXMgbm90IGVxdWFsIHRvIGl0c2VsZi4JAAIBAiRTdHJpY3QgdmFsdWUgaXMgbm90IGVxdWFsIHRvIGl0c2VsZi4BaQEJcHV0T25lVGtuBQthbUFzc2V0UGFydAtwckFzc2V0UGFydAVvdXRMcAhzbGlwcGFnZQlhdXRvU3Rha2UEA2NmZwkBA2dmYwAEC3N0YWtpbmdDbnRyCQETdmFsdWVPckVycm9yTWVzc2FnZQIJAKYIAQkAkQMCBQNjZmcFD2lkeEZhY3RTdGFrQ250cgIKV3Igc3QgYWRkcgQIc2xpcENudHIJARN2YWx1ZU9yRXJyb3JNZXNzYWdlAgkApggBCQCRAwIFA2NmZwUQaWR4RmFjdFNsaXBwQ250cgIKV3Igc2wgYWRkcgQHZ3d4Q250cgkBE3ZhbHVlT3JFcnJvck1lc3NhZ2UCCQCmCAEJAJEDAgUDY2ZnBRFpZHhGYWN0R3d4UmV3Q250cgILV3IgZ3d4IGFkZHIEB3Bvb2xDZmcJAQNncGMABARhbUlkCQCRAwIFB3Bvb2xDZmcFCWlkeEFtQXNJZAQEcHJJZAkAkQMCBQdwb29sQ2ZnBQlpZHhQckFzSWQEBWFtRGNtCQENcGFyc2VJbnRWYWx1ZQEJAJEDAgUHcG9vbENmZwULaWR4QW10QXNEY20EBXByRGNtCQENcGFyc2VJbnRWYWx1ZQEJAJEDAgUHcG9vbENmZwUNaWR4UHJpY2VBc0RjbQQFYWRkb24JAQt2YWx1ZU9yRWxzZQIJAJ0IAgUEdGhpcwkBA2FkYQACAAQLdXNlckFkZHJlc3MDCQAAAgUFYWRkb24JAKUIAQgFAWkGY2FsbGVyCAUBaQxvcmlnaW5DYWxsZXIIBQFpBmNhbGxlcgMDAwMJAGcCAAAFCHNsaXBwYWdlBgkAZwIAAAULYW1Bc3NldFBhcnQGCQBnAgAABQtwckFzc2V0UGFydAYJAGcCAAAFBW91dExwCQACAQIMV3JvbmcgcGFyYW1zAwkBAiE9AgkAkAMBCAUBaQhwYXltZW50cwABCQACAQILMSBwbW50IGV4cGQEA3BtdAkBBXZhbHVlAQkAkQMCCAUBaQhwYXltZW50cwAABApwbXRBc3NldElkCQDYBAEJAQV2YWx1ZQEIBQNwbXQHYXNzZXRJZAQLcG10RGVjaW1hbHMICQEFdmFsdWUBCQDsBwEJAQV2YWx1ZQEICQCRAwIIBQFpCHBheW1lbnRzAAAHYXNzZXRJZAhkZWNpbWFscwQGcG10QW10CAUDcG10BmFtb3VudAQVcG10QW10RGVmYXVsdERlY2ltYWxzCQBpAgkAaAIFBnBtdEFtdAUPZGVmYXVsdERlY2ltYWxzCQBsBgAKAAAFC3BtdERlY2ltYWxzAAAAAAUERE9XTgMJAGYCAICt4gQFFXBtdEFtdERlZmF1bHREZWNpbWFscwkAAgECDVdyb25nIHBtdCBhbXQECWFtQmFsYW5jZQkBDWdldEFjY0JhbGFuY2UBBQRhbUlkBAlwckJhbGFuY2UJAQ1nZXRBY2NCYWxhbmNlAQUEcHJJZAQNJHQwMjU4MzYyNjUzMgMJAAACBQpwbXRBc3NldElkBQRhbUlkAwMJAGYCBRVwbXRBbXREZWZhdWx0RGVjaW1hbHMFCWFtQmFsYW5jZQYJAGYCBQthbUFzc2V0UGFydAUVcG10QW10RGVmYXVsdERlY2ltYWxzCQACAQIWaW52YWxpZCBwYXltZW50IGFtb3VudAkAmAoGCQBlAgUJYW1CYWxhbmNlBRVwbXRBbXREZWZhdWx0RGVjaW1hbHMFCXByQmFsYW5jZQkAZQIFFXBtdEFtdERlZmF1bHREZWNpbWFscwULYW1Bc3NldFBhcnQFC3ByQXNzZXRQYXJ0AAAAAAMJAAACBQpwbXRBc3NldElkBQRwcklkAwMJAGYCBRVwbXRBbXREZWZhdWx0RGVjaW1hbHMFCXByQmFsYW5jZQYJAGYCBQtwckFzc2V0UGFydAUVcG10QW10RGVmYXVsdERlY2ltYWxzCQACAQIWaW52YWxpZCBwYXltZW50IGFtb3VudAkAmAoGBQlhbUJhbGFuY2UJAGUCBQlwckJhbGFuY2UFFXBtdEFtdERlZmF1bHREZWNpbWFscwAAAAAJAGUCBRVwbXRBbXREZWZhdWx0RGVjaW1hbHMFC3ByQXNzZXRQYXJ0BQthbUFzc2V0UGFydAkAAgECEHdyb25nIHBtdEFzc2V0SWQEDGFtQmFsYW5jZU5vdwgFDSR0MDI1ODM2MjY1MzICXzEEDHByQmFsYW5jZU5vdwgFDSR0MDI1ODM2MjY1MzICXzIEDHZpcnRTd2FwSW5BbQgFDSR0MDI1ODM2MjY1MzICXzMEDXZpcnRTd2FwT3V0UHIIBQ0kdDAyNTgzNjI2NTMyAl80BAx2aXJ0U3dhcEluUHIIBQ0kdDAyNTgzNjI2NTMyAl81BA12aXJ0U3dhcE91dEFtCAUNJHQwMjU4MzYyNjUzMgJfNgQCRDAJAPwHBAUHZ3d4Q250cgIFY2FsY0QJAMwIAgkApAMBBQxhbUJhbGFuY2VOb3cJAMwIAgkApAMBBQxwckJhbGFuY2VOb3cJAMwIAgUBQQkAzAgCBQVBbXVsdAkAzAgCBQVEY29udgUDbmlsBQNuaWwEAkQxCQD8BwQFB2d3eENudHICBWNhbGNECQDMCAIJAKYDAQkAtgIBCQBlAgkAZAIFDGFtQmFsYW5jZU5vdwUMdmlydFN3YXBJbkFtBQ12aXJ0U3dhcE91dEFtCQDMCAIJAKYDAQkAtgIBCQBlAgkAZAIFDHByQmFsYW5jZU5vdwUMdmlydFN3YXBJblByBQ12aXJ0U3dhcE91dFByCQDMCAIFAUEJAMwIAgUFQW11bHQJAMwIAgUFRGNvbnYFA25pbAUDbmlsBAZEMHZzRDEJAQJ2ZAMJAKcDAQkBA3N0cgEFAkQxCQCnAwEJAQNzdHIBBQJEMAUKc2xpcHBhZ2U0RAMJAAACBQZEMHZzRDEFBkQwdnNEMQQGZXN0UHV0CQECY3AJCQClCAEIBQFpBmNhbGxlcgkA2AQBCAUBaQ10cmFuc2FjdGlvbklkCQEPQXR0YWNoZWRQYXltZW50AgkA2QQBBQRhbUlkBQthbUFzc2V0UGFydAkBD0F0dGFjaGVkUGF5bWVudAIJANkEAQUEcHJJZAULcHJBc3NldFBhcnQFCHNsaXBwYWdlBgYFBnBtdEFtdAUKcG10QXNzZXRJZAQHZXN0aW1MUAgFBmVzdFB1dAJfMgQJbHBBc3NldElkCAUGZXN0UHV0Al83BAVzdGF0ZQgFBmVzdFB1dAJfOQQGYW1EaWZmCAUGZXN0UHV0A18xMAQGcHJEaWZmCAUGZXN0UHV0A18xMQQJbHBDYWxjUmVzCQEDdmFkAwkAtgIBBQdlc3RpbUxQCQC2AgEFBW91dExwCQC2AgEFCHNsaXBwYWdlBAllbWl0THBBbXQJAKADAQgFCWxwQ2FsY1JlcwJfMgQBZQkA/AcEBQNmY2ECBGVtaXQJAMwIAgUJZW1pdExwQW10BQNuaWwFA25pbAMJAAACBQFlBQFlBAJlbAQHJG1hdGNoMAUBZQMJAAECBQckbWF0Y2gwAgdBZGRyZXNzBAZsZWdhY3kFByRtYXRjaDAJAPwHBAUGbGVnYWN5AgRlbWl0CQDMCAIFCWVtaXRMcEFtdAUDbmlsBQNuaWwFBHVuaXQDCQAAAgUCZWwFAmVsBAJzYQMJAGYCBQZhbURpZmYAAAkA/AcEBQhzbGlwQ250cgIDcHV0BQNuaWwJAMwIAgkBD0F0dGFjaGVkUGF5bWVudAIJANkEAQUEYW1JZAUGYW1EaWZmBQNuaWwFA25pbAMJAAACBQJzYQUCc2EEAnNwAwkAZgIFBnByRGlmZgAACQD8BwQFCHNsaXBDbnRyAgNwdXQFA25pbAkAzAgCCQEPQXR0YWNoZWRQYXltZW50AgkA2QQBBQRwcklkBQZwckRpZmYFA25pbAUDbmlsAwkAAAIFAnNwBQJzcAQIbHBUcm5zZnIDBQlhdXRvU3Rha2UEAnNzCQD8BwQFC3N0YWtpbmdDbnRyAgVzdGFrZQUDbmlsCQDMCAIJAQ9BdHRhY2hlZFBheW1lbnQCBQlscEFzc2V0SWQFCWVtaXRMcEFtdAUDbmlsAwkAAAIFAnNzBQJzcwUDbmlsCQACAQIkU3RyaWN0IHZhbHVlIGlzIG5vdCBlcXVhbCB0byBpdHNlbGYuCQDMCAIJAQ5TY3JpcHRUcmFuc2ZlcgMIBQFpBmNhbGxlcgUJZW1pdExwQW10BQlscEFzc2V0SWQFA25pbAkAzggCBQVzdGF0ZQUIbHBUcm5zZnIJAAIBAiRTdHJpY3QgdmFsdWUgaXMgbm90IGVxdWFsIHRvIGl0c2VsZi4JAAIBAiRTdHJpY3QgdmFsdWUgaXMgbm90IGVxdWFsIHRvIGl0c2VsZi4JAAIBAiRTdHJpY3QgdmFsdWUgaXMgbm90IGVxdWFsIHRvIGl0c2VsZi4JAAIBAiRTdHJpY3QgdmFsdWUgaXMgbm90IGVxdWFsIHRvIGl0c2VsZi4JAAIBAiRTdHJpY3QgdmFsdWUgaXMgbm90IGVxdWFsIHRvIGl0c2VsZi4BaQEKcHV0Rm9yRnJlZQEHbWF4U2xwZwMJAGYCAAAFB21heFNscGcJAAIBAgpXcm9uZyBzbHBnAwkBAiE9AgkAkAMBCAUBaQhwYXltZW50cwACCQACAQIMMiBwbW50cyBleHBkBAZlc3RQdXQJAQJjcAkJAKUIAQgFAWkGY2FsbGVyCQDYBAEIBQFpDXRyYW5zYWN0aW9uSWQJAQ9BdHRhY2hlZFBheW1lbnQCCAkBBXZhbHVlAQkAkQMCCAUBaQhwYXltZW50cwAAB2Fzc2V0SWQICQEFdmFsdWUBCQCRAwIIBQFpCHBheW1lbnRzAAAGYW1vdW50CQCRAwIIBQFpCHBheW1lbnRzAAEFB21heFNscGcHBwAAAgAIBQZlc3RQdXQCXzkBaQEDZ2V0AAQBcgkBAmNnAQUBaQQJb3V0QW10QW10CAUBcgJfMQQIb3V0UHJBbXQIBQFyAl8yBAZwbXRBbXQIBQFyAl8zBApwbXRBc3NldElkCAUBcgJfNAQFc3RhdGUIBQFyAl81BAFiCQD8BwQFA2ZjYQIEYnVybgkAzAgCBQZwbXRBbXQFA25pbAkAzAgCCQEPQXR0YWNoZWRQYXltZW50AgUKcG10QXNzZXRJZAUGcG10QW10BQNuaWwDCQAAAgUBYgUBYgUFc3RhdGUJAAIBAiRTdHJpY3QgdmFsdWUgaXMgbm90IGVxdWFsIHRvIGl0c2VsZi4BaQEJZ2V0T25lVGtuBQpleGNoUmVzdWx0B25vdFVzZWQJb3V0QW1vdW50Cm91dEFzc2V0SWQIc2xpcHBhZ2UDCQECIT0CCQCQAwEIBQFpCHBheW1lbnRzAAEJAAIBAgsxIHBtbnQgZXhwZAQDY2ZnCQEDZ3BjAAQEbHBJZAkAkQMCBQNjZmcFCWlkeExQQXNJZAQEYW1JZAkAkQMCBQNjZmcFCWlkeEFtQXNJZAQEcHJJZAkAkQMCBQNjZmcFCWlkeFByQXNJZAQFYW1EY20JAQ1wYXJzZUludFZhbHVlAQkAkQMCBQNjZmcFC2lkeEFtdEFzRGNtBAVwckRjbQkBDXBhcnNlSW50VmFsdWUBCQCRAwIFA2NmZwUNaWR4UHJpY2VBc0RjbQQDc3RzCQCRAwIFA2NmZwUJaWR4UG9vbFN0BAdmYWN0Q2ZnCQEDZ2ZjAAQHZ3d4Q250cgkBE3ZhbHVlT3JFcnJvck1lc3NhZ2UCCQCmCAEJAJEDAgUHZmFjdENmZwURaWR4RmFjdEd3eFJld0NudHICCldyIHNsIGFkZHIEA3BtdAkBBXZhbHVlAQkAkQMCCAUBaQhwYXltZW50cwAABAVhZGRvbgkBC3ZhbHVlT3JFbHNlAgkAnQgCBQR0aGlzCQEDYWRhAAIABAt1c2VyQWRkcmVzcwMJAAACBQVhZGRvbgkApQgBCAUBaQZjYWxsZXIIBQFpDG9yaWdpbkNhbGxlcggFAWkGY2FsbGVyBAZ0eElkNTgJANgEAQgFAWkNdHJhbnNhY3Rpb25JZAQKcG10QXNzZXRJZAkBBXZhbHVlAQgFA3BtdAdhc3NldElkBAZwbXRBbXQIBQNwbXQGYW1vdW50AwkAZgIAgJTr3AMFBnBtdEFtdAkAAgECDU1pbiBwbXQgMTAgTFADAwMJAGYCAAAFCHNsaXBwYWdlBgkAZgIAAAUKZXhjaFJlc3VsdAYJAGYCAAAFCW91dEFtb3VudAkAAgECDFdyb25nIHBhcmFtcwMJAQIhPQIFBGxwSWQJANgEAQUKcG10QXNzZXRJZAkAAgECCFdyb25nIExQBAFyCQEDZWdvBAkA2AQBCAUBaQ10cmFuc2FjdGlvbklkCQDYBAEFCnBtdEFzc2V0SWQFBnBtdEFtdAgFAWkGY2FsbGVyBAplc3RpbUFtQW10CAUBcgJfMQQKZXN0aW1QckFtdAgFAXICXzIECWFtQmFsYW5jZQkBDWdldEFjY0JhbGFuY2UBBQRhbUlkBAlwckJhbGFuY2UJAQ1nZXRBY2NCYWxhbmNlAQUEcHJJZAQNJHQwMzEzMTEzMTc2OAMJAAACBQpvdXRBc3NldElkBQRhbUlkCQCZCgcJAGUCBQlhbUJhbGFuY2UFCmVzdGltQW1BbXQJAGUCBQlwckJhbGFuY2UFCmVzdGltUHJBbXQFCmV4Y2hSZXN1bHQFCmVzdGltUHJBbXQAAAAACQBkAgUKZXN0aW1BbUFtdAUKZXhjaFJlc3VsdAMJAAACBQpvdXRBc3NldElkBQRwcklkCQCZCgcJAGUCBQlhbUJhbGFuY2UFCmVzdGltQW1BbXQJAGUCBQlwckJhbGFuY2UFCmVzdGltUHJBbXQAAAAABQpleGNoUmVzdWx0BQplc3RpbUFtQW10CQBkAgUKZXN0aW1QckFtdAUKZXhjaFJlc3VsdAkAAgECEHdyb25nIG91dEFzc2V0SWQEDGFtQmFsYW5jZU5vdwgFDSR0MDMxMzExMzE3NjgCXzEEDHByQmFsYW5jZU5vdwgFDSR0MDMxMzExMzE3NjgCXzIEDHZpcnRTd2FwSW5BbQgFDSR0MDMxMzExMzE3NjgCXzMEDXZpcnRTd2FwT3V0UHIIBQ0kdDAzMTMxMTMxNzY4Al80BAx2aXJ0U3dhcEluUHIIBQ0kdDAzMTMxMTMxNzY4Al81BA12aXJ0U3dhcE91dEFtCAUNJHQwMzEzMTEzMTc2OAJfNgQIdG90YWxHZXQIBQ0kdDAzMTMxMTMxNzY4Al83AwMJAGYCAAAFDHZpcnRTd2FwSW5BbQYJAGYCAAAFDHZpcnRTd2FwSW5QcgkAAgECCldyb25nIGNhbGMEAkQwCQD8BwQFB2d3eENudHICBWNhbGNECQDMCAIJAKQDAQUMYW1CYWxhbmNlTm93CQDMCAIJAKQDAQUMcHJCYWxhbmNlTm93CQDMCAIFAUEJAMwIAgUFQW11bHQJAMwIAgUFRGNvbnYFA25pbAUDbmlsBAJEMQkA/AcEBQdnd3hDbnRyAgVjYWxjRAkAzAgCCQCkAwEJAGQCCQBlAgUMYW1CYWxhbmNlTm93BQx2aXJ0U3dhcEluQW0FDXZpcnRTd2FwT3V0QW0JAMwIAgkApAMBCQBlAgkAZAIFDHByQmFsYW5jZU5vdwUNdmlydFN3YXBPdXRQcgUMdmlydFN3YXBJblByCQDMCAIFAUEJAMwIAgUFQW11bHQJAMwIAgUFRGNvbnYFA25pbAUDbmlsBAZEMHZzRDEJAQJ2ZAMJAKcDAQkBA3N0cgEFAkQxCQCnAwEJAQNzdHIBBQJEMAUKc2xpcHBhZ2U0RAMJAAACBQZEMHZzRDEFBkQwdnNEMQQIZmluYWxSZXMJAQN2YWQDCQC2AgEFCHRvdGFsR2V0CQC2AgEFCW91dEFtb3VudAkAtgIBBQhzbGlwcGFnZQMJAAACBQhmaW5hbFJlcwUIZmluYWxSZXMEDSR0MDMyNDczMzI1NzcDCQAAAgUKb3V0QXNzZXRJZAUEYW1JZAkAlAoCCQCgAwEIBQhmaW5hbFJlcwJfMgAACQCUCgIAAAkAoAMBCAUIZmluYWxSZXMCXzIEBW91dEFtCAUNJHQwMzI0NzMzMjU3NwJfMQQFb3V0UHIIBQ0kdDAzMjQ3MzMyNTc3Al8yBAhjdXJQclgxOAkBBGNwYmkCCQECdDECBQlwckJhbGFuY2UFBXByRGNtCQECdDECBQlhbUJhbGFuY2UFBWFtRGNtBAVjdXJQcgkBAmYxAgUIY3VyUHJYMTgFBnNjYWxlOAQFc3RhdGUJAMwIAgkBDlNjcmlwdFRyYW5zZmVyAwULdXNlckFkZHJlc3MJAGQCBQVvdXRBbQUFb3V0UHIDCQAAAgUKb3V0QXNzZXRJZAIFV0FWRVMFBHVuaXQJANkEAQUKb3V0QXNzZXRJZAkAzAgCCQELU3RyaW5nRW50cnkCCQEDZ2F1AgkApQgBBQt1c2VyQWRkcmVzcwUGdHhJZDU4CQERZGF0YUdldEFjdGlvbkluZm8GBQVvdXRBbQUFb3V0UHIFBnBtdEFtdAUFY3VyUHIFBmhlaWdodAgFCWxhc3RCbG9jawl0aW1lc3RhbXAJAMwIAgkBDEludGVnZXJFbnRyeQIJAQJwbAAFBWN1clByCQDMCAIJAQxJbnRlZ2VyRW50cnkCCQECcGgCBQZoZWlnaHQIBQlsYXN0QmxvY2sJdGltZXN0YW1wBQVjdXJQcgUDbmlsAwkAAAIFBXN0YXRlBQVzdGF0ZQQEYnVybgkA/AcEBQNmY2ECBGJ1cm4JAMwIAgUGcG10QW10BQNuaWwJAMwIAgkBD0F0dGFjaGVkUGF5bWVudAIFCnBtdEFzc2V0SWQFBnBtdEFtdAUDbmlsAwkAAAIFBGJ1cm4FBGJ1cm4FBXN0YXRlCQACAQIkU3RyaWN0IHZhbHVlIGlzIG5vdCBlcXVhbCB0byBpdHNlbGYuCQACAQIkU3RyaWN0IHZhbHVlIGlzIG5vdCBlcXVhbCB0byBpdHNlbGYuCQACAQIkU3RyaWN0IHZhbHVlIGlzIG5vdCBlcXVhbCB0byBpdHNlbGYuCQACAQIkU3RyaWN0IHZhbHVlIGlzIG5vdCBlcXVhbCB0byBpdHNlbGYuAWkBCWdldE5vTGVzcwISbm9MZXNzVGhlbkFtdEFzc2V0FG5vTGVzc1RoZW5QcmljZUFzc2V0BAFyCQECY2cBBQFpBAhvdXRBbUFtdAgFAXICXzEECG91dFByQW10CAUBcgJfMgQGcG10QW10CAUBcgJfMwQKcG10QXNzZXRJZAgFAXICXzQEBXN0YXRlCAUBcgJfNQMJAGYCBRJub0xlc3NUaGVuQW10QXNzZXQFCG91dEFtQW10CQACAQkArAICCQCsAgIJAKwCAgIJRmFpbGVkOiAgCQCkAwEFCG91dEFtQW10AgMgPCAJAKQDAQUSbm9MZXNzVGhlbkFtdEFzc2V0AwkAZgIFFG5vTGVzc1RoZW5QcmljZUFzc2V0BQhvdXRQckFtdAkAAgEJAKwCAgkArAICCQCsAgICCEZhaWxlZDogCQCkAwEFCG91dFByQW10AgMgPCAJAKQDAQUUbm9MZXNzVGhlblByaWNlQXNzZXQEFGJ1cm5MUEFzc2V0T25GYWN0b3J5CQD8BwQFA2ZjYQIEYnVybgkAzAgCBQZwbXRBbXQFA25pbAkAzAgCCQEPQXR0YWNoZWRQYXltZW50AgUKcG10QXNzZXRJZAUGcG10QW10BQNuaWwDCQAAAgUUYnVybkxQQXNzZXRPbkZhY3RvcnkFFGJ1cm5MUEFzc2V0T25GYWN0b3J5BQVzdGF0ZQkAAgECJFN0cmljdCB2YWx1ZSBpcyBub3QgZXF1YWwgdG8gaXRzZWxmLgFpAQ11bnN0YWtlQW5kR2V0AQZhbW91bnQEDWNoZWNrUGF5bWVudHMDCQECIT0CCQCQAwEIBQFpCHBheW1lbnRzAAAJAAIBAg1ObyBwbW50cyBleHBkBgMJAAACBQ1jaGVja1BheW1lbnRzBQ1jaGVja1BheW1lbnRzBANjZmcJAQNncGMABApmYWN0b3J5Q2ZnCQEDZ2ZjAAQJbHBBc3NldElkCQDZBAEJAJEDAgUDY2ZnBQlpZHhMUEFzSWQEB3N0YWtpbmcJARN2YWx1ZU9yRXJyb3JNZXNzYWdlAgkApggBCQCRAwIFCmZhY3RvcnlDZmcFD2lkeEZhY3RTdGFrQ250cgIKV3Igc3QgYWRkcgQKdW5zdGFrZUludgkA/AcEBQdzdGFraW5nAgd1bnN0YWtlCQDMCAIJANgEAQUJbHBBc3NldElkCQDMCAIFBmFtb3VudAUDbmlsBQNuaWwDCQAAAgUKdW5zdGFrZUludgUKdW5zdGFrZUludgQBcgkBA2VnbwQJANgEAQgFAWkNdHJhbnNhY3Rpb25JZAkA2AQBBQlscEFzc2V0SWQFBmFtb3VudAgFAWkGY2FsbGVyBANzdHMJAQ1wYXJzZUludFZhbHVlAQgFAXICXzkEBXN0YXRlCAUBcgNfMTAEAXYDAwkBA2lncwAGCQAAAgUDc3RzBQxQb29sU2h1dGRvd24JAAIBCQCsAgICCUJsb2NrZWQ6IAkApAMBBQNzdHMGAwkAAAIFAXYFAXYEBWJ1cm5BCQD8BwQFA2ZjYQIEYnVybgkAzAgCBQZhbW91bnQFA25pbAkAzAgCCQEPQXR0YWNoZWRQYXltZW50AgUJbHBBc3NldElkBQZhbW91bnQFA25pbAMJAAACBQVidXJuQQUFYnVybkEFBXN0YXRlCQACAQIkU3RyaWN0IHZhbHVlIGlzIG5vdCBlcXVhbCB0byBpdHNlbGYuCQACAQIkU3RyaWN0IHZhbHVlIGlzIG5vdCBlcXVhbCB0byBpdHNlbGYuCQACAQIkU3RyaWN0IHZhbHVlIGlzIG5vdCBlcXVhbCB0byBpdHNlbGYuCQACAQIkU3RyaWN0IHZhbHVlIGlzIG5vdCBlcXVhbCB0byBpdHNlbGYuAWkBCGFjdGl2YXRlAghhbXRBc1N0cgdwckFzU3RyAwkBAiE9AgkApQgBCAUBaQZjYWxsZXIJAKUIAQUDZmNhCQACAQIGZGVuaWVkCQCUCgIJAMwIAgkBC1N0cmluZ0VudHJ5AgkBAmFhAAUIYW10QXNTdHIJAMwIAgkBC1N0cmluZ0VudHJ5AgkBAnBhAAUHcHJBc1N0cgUDbmlsAgdzdWNjZXNzAWkBBHNldFMCAWsBdgMJAQIhPQIJAKUIAQgFAWkGY2FsbGVyCQEEc3RyZgIFBHRoaXMJAQNhZGEABQJwZAkAzAgCCQELU3RyaW5nRW50cnkCBQFrBQF2BQNuaWwBaQEEc2V0SQIBawF2AwkBAiE9AgkApQgBCAUBaQZjYWxsZXIJAQRzdHJmAgUEdGhpcwkBA2FkYQAFAnBkCQDMCAIJAQxJbnRlZ2VyRW50cnkCBQFrBQF2BQNuaWwBaQEcZ2V0UG9vbENvbmZpZ1dyYXBwZXJSRUFET05MWQAJAJQKAgUDbmlsCQEDZ3BjAAFpARxnZXRBY2NCYWxhbmNlV3JhcHBlclJFQURPTkxZAQdhc3NldElkCQCUCgIFA25pbAkBDWdldEFjY0JhbGFuY2UBBQdhc3NldElkAWkBGWNhbGNQcmljZXNXcmFwcGVyUkVBRE9OTFkDBWFtQW10BXByQW10BWxwQW10BAJwcgkBCmNhbGNQcmljZXMDBQVhbUFtdAUFcHJBbXQFBWxwQW10CQCUCgIFA25pbAkAzAgCCQCmAwEJAJEDAgUCcHIAAAkAzAgCCQCmAwEJAJEDAgUCcHIAAQkAzAgCCQCmAwEJAJEDAgUCcHIAAgUDbmlsAWkBFmZyb21YMThXcmFwcGVyUkVBRE9OTFkCA3ZhbAxyZXNTY2FsZU11bHQJAJQKAgUDbmlsCQECZjECCQCnAwEFA3ZhbAUMcmVzU2NhbGVNdWx0AWkBFHRvWDE4V3JhcHBlclJFQURPTkxZAgdvcmlnVmFsDW9yaWdTY2FsZU11bHQJAJQKAgUDbmlsCQCmAwEJAQJ0MQIFB29yaWdWYWwFDW9yaWdTY2FsZU11bHQBaQEeY2FsY1ByaWNlQmlnSW50V3JhcHBlclJFQURPTkxZAghwckFtdFgxOAhhbUFtdFgxOAkAlAoCBQNuaWwJAKYDAQkBBGNwYmkCCQCnAwEFCHByQW10WDE4CQCnAwEFCGFtQW10WDE4AWkBI2VzdGltYXRlUHV0T3BlcmF0aW9uV3JhcHBlclJFQURPTkxZCQZ0eElkNTgIc2xpcHBhZ2UHaW5BbUFtdAZpbkFtSWQHaW5QckFtdAZpblBySWQHdXNyQWRkcgZpc0V2YWwGZW1pdExwCQCUCgIFA25pbAkBA2VwbwwFBnR4SWQ1OAUIc2xpcHBhZ2UFB2luQW1BbXQFBmluQW1JZAUHaW5QckFtdAUGaW5QcklkBQd1c3JBZGRyBQZpc0V2YWwFBmVtaXRMcAcAAAIAAWkBI2VzdGltYXRlR2V0T3BlcmF0aW9uV3JhcHBlclJFQURPTkxZBAZ0eElkNTgHcG10QXNJZAhwbXRMcEFtdAd1c3JBZGRyBAFyCQEDZWdvBAUGdHhJZDU4BQdwbXRBc0lkBQhwbXRMcEFtdAkBEUBleHRyTmF0aXZlKDEwNjIpAQUHdXNyQWRkcgkAlAoCBQNuaWwJAJwKCggFAXICXzEIBQFyAl8yCAUBcgJfMwgFAXICXzQIBQFyAl81CAUBcgJfNggFAXICXzcJAKYDAQgFAXICXzgIBQFyAl85CAUBcgNfMTABAnR4AQZ2ZXJpZnkABA90YXJnZXRQdWJsaWNLZXkEByRtYXRjaDAJAQFtAAMJAAECBQckbWF0Y2gwAgpCeXRlVmVjdG9yBAJwawUHJG1hdGNoMAUCcGsDCQABAgUHJG1hdGNoMAIEVW5pdAgFAnR4D3NlbmRlclB1YmxpY0tleQkAAgECC01hdGNoIGVycm9yBAckbWF0Y2gwBQJ0eAMJAAECBQckbWF0Y2gwAgVPcmRlcgQFb3JkZXIFByRtYXRjaDAECm1hdGNoZXJQdWIJAQJtcAAECm9yZGVyVmFsaWQJAQNtb2EBBQVvcmRlcgQLc2VuZGVyVmFsaWQJAPQDAwgFBW9yZGVyCWJvZHlCeXRlcwkAkQMCCAUFb3JkZXIGcHJvb2ZzAAAIBQVvcmRlcg9zZW5kZXJQdWJsaWNLZXkEDG1hdGNoZXJWYWxpZAkA9AMDCAUFb3JkZXIJYm9keUJ5dGVzCQCRAwIIBQVvcmRlcgZwcm9vZnMAAQUKbWF0Y2hlclB1YgMDAwUKb3JkZXJWYWxpZAULc2VuZGVyVmFsaWQHBQxtYXRjaGVyVmFsaWQHBgkBA3RvZQMFCm9yZGVyVmFsaWQFC3NlbmRlclZhbGlkBQxtYXRjaGVyVmFsaWQDCQABAgUHJG1hdGNoMAIUU2V0U2NyaXB0VHJhbnNhY3Rpb24EAXMFByRtYXRjaDAEB25ld0hhc2gJAPYDAQkBBXZhbHVlAQgFAXMGc2NyaXB0BAthbGxvd2VkSGFzaAkA2wQBCQEFdmFsdWUBCQCdCAIFA2ZjYQkBHGtleUFsbG93ZWRMcFN0YWJsZVNjcmlwdEhhc2gABAtjdXJyZW50SGFzaAkA8QcBBQR0aGlzAwMJAAACBQthbGxvd2VkSGFzaAUHbmV3SGFzaAkBAiE9AgULY3VycmVudEhhc2gFB25ld0hhc2gHBgkA9AMDCAUCdHgJYm9keUJ5dGVzCQCRAwIIBQJ0eAZwcm9vZnMAAAUPdGFyZ2V0UHVibGljS2V5CQD0AwMIBQJ0eAlib2R5Qnl0ZXMJAJEDAggFAnR4BnByb29mcwAABQ90YXJnZXRQdWJsaWNLZXm6t80v", "height": 2225790, "applicationStatus": "succeeded", "spentComplexity": 0 } View: original | compacted Prev: 6ARjEzFb9Ny3m2AjSEVvzyk6kXEHfcX59bafUAQft86N Next: H7C1zzQiAyMEc3aZA1DD3RxeB1V71eJBysAnZm3NAHnM Diff:
OldNewDifferences
11 {-# STDLIB_VERSION 6 #-}
22 {-# SCRIPT_TYPE ACCOUNT #-}
33 {-# CONTENT_TYPE DAPP #-}
4-let a = 100000000
4+let a = 1000000
55
66 let b = 100000000
77
Full:
OldNewDifferences
11 {-# STDLIB_VERSION 6 #-}
22 {-# SCRIPT_TYPE ACCOUNT #-}
33 {-# CONTENT_TYPE DAPP #-}
4-let a = 100000000
4+let a = 1000000
55
66 let b = 100000000
77
88 let c = toBigInt(100000000)
99
1010 let d = toBigInt(1000000000000000000)
1111
1212 let e = toBigInt(0)
1313
1414 let f = toBigInt(1)
1515
1616 let g = toBigInt((b - ((b * 1) / b)))
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 = "%s__delay"
5959
6060 func C (D,E) = fraction(toBigInt(D), d, toBigInt(E))
6161
6262
6363 func F (G,H) = toInt(fraction(G, toBigInt(H), d))
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 func ac (ad) = makeString(["%s%s__lastGetOneTknCall", ad], j)
108108
109109
110110 func ae (ad) = makeString(["%s%s__lastPutOneTknCall", ad], j)
111111
112112
113113 func af () = "%s__factoryConfig"
114114
115115
116116 func ag () = "%s%s__matcher__publicKey"
117117
118118
119119 func ah (ai,aj) = (((("%d%d%s__" + ai) + "__") + aj) + "__config")
120120
121121
122122 func ak (al) = ("%s%s%s__mappings__baseAsset2internalId__" + al)
123123
124124
125125 func am () = "%s__shutdown"
126126
127127
128128 func an () = "%s__allowedLpStableScriptHash"
129129
130130
131131 func ao (ap,aq,ar) = throw(((((("Failed: ordValid=" + toString(ap)) + " sndrValid=") + toString(aq)) + " mtchrValid=") + toString(ar)))
132132
133133
134134 func as (G) = {
135135 let at = G
136136 if ($isInstanceOf(at, "String"))
137137 then {
138138 let au = at
139139 au
140140 }
141141 else throw("fail cast to String")
142142 }
143143
144144
145145 func av (aw,ax) = valueOrErrorMessage(getString(aw, ax), makeString(["mandatory ", toString(aw), ".", ax, " not defined"], ""))
146146
147147
148148 func ay (aw,ax) = valueOrErrorMessage(getInteger(aw, ax), makeString(["mandatory ", toString(aw), ".", ax, " not defined"], ""))
149149
150150
151151 let az = addressFromStringValue(av(this, N()))
152152
153153 let aA = av(this, aa())
154154
155155 func aB () = valueOrElse(getBoolean(az, am()), false)
156156
157157
158158 func aC () = fromBase58String(av(az, ag()))
159159
160160
161161 func aD () = {
162162 let aE = av(this, Y())
163163 let aF = av(this, Z())
164164 let aG = ay(az, ak(aF))
165165 let ai = ay(az, ak(aE))
166166 split(av(az, ah(toString(ai), toString(aG))), j)
167167 }
168168
169169
170170 func aH () = split(av(az, af()), 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, d, bb)
185185
186186
187187 func bc (bd,be,bf) = {
188188 let bg = fraction((bd - be), c, 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, c, 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, b)
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], b), F(bE[1], b), F(bE[2], b)]
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 = aX(bM)
248248 let bT = fraction(bR, a, bN)
249249 let bU = fraction(bS, a, bO)
250250 let bV = C(bT, a)
251251 let bW = C(bU, a)
252252 let bX = aZ(bW, bV)
253253 let bY = F(bX, b)
254254 let bZ = C(bI, b)
255255 let ca = C(bQ, b)
256256 let cb = fraction(bV, bZ, ca)
257257 let cc = fraction(bW, bZ, ca)
258258 let cd = F(cb, a)
259259 let ce = F(cc, a)
260260 let cf = fraction(cd, bN, a)
261261 let cg = fraction(ce, bO, a)
262262 let ch = if ((bG == ""))
263263 then nil
264264 else [ScriptTransfer(bJ, cf, if ((bL == "WAVES"))
265265 then unit
266266 else fromBase58String(bL)), ScriptTransfer(bJ, cg, if ((bM == "WAVES"))
267267 then unit
268268 else fromBase58String(bM)), StringEntry(X(toString(bJ), bG), aT(cf, cg, bI, bY, height, lastBlock.timestamp)), IntegerEntry(Q(), bY), IntegerEntry(R(height, lastBlock.timestamp), bY)]
269269 $Tuple10(cf, cg, bL, bM, bR, bS, bQ, bX, bP, ch)
270270 }
271271 }
272272
273273
274274 func ci (bG,bf,cj,ck,cl,cm,bJ,cn,co,cp,cq,cr) = {
275275 let bw = aD()
276276 let bK = fromBase58String(bw[r])
277277 let cs = bw[s]
278278 let ct = bw[t]
279279 let cu = bw[w]
280280 let cv = bw[x]
281281 let cw = parseIntValue(bw[u])
282282 let cx = parseIntValue(bw[v])
283283 let bP = bw[q]
284284 let cy = valueOrErrorMessage(assetInfo(bK), "Wr lp as").quantity
285285 let bR = if (cn)
286286 then aX(cs)
287287 else if (if (cp)
288288 then (cr == cs)
289289 else false)
290290 then (aX(cs) - cq)
291291 else if (cp)
292292 then aX(cs)
293293 else (aX(cs) - cj)
294294 let bS = if (cn)
295295 then aX(ct)
296296 else if (if (cp)
297297 then (cr == ct)
298298 else false)
299299 then (aX(ct) - cq)
300300 else if (cp)
301301 then aX(ct)
302302 else (aX(ct) - cl)
303303 let bT = fraction(bR, a, cw)
304304 let bU = fraction(bS, a, cx)
305305 let cz = fraction(cj, a, cw)
306306 let cA = fraction(cl, a, cx)
307307 let cB = C(cz, a)
308308 let cC = C(cA, a)
309309 let cD = aZ(cC, cB)
310310 let bV = C(bT, a)
311311 let bW = C(bU, a)
312312 let cE = if ((cy == 0))
313313 then {
314314 let bX = e
315315 let cF = e
316316 let bA = pow((cB * cC), 0, toBigInt(5), 1, 0, DOWN)
317317 $Tuple5(F(bA, b), F(cB, a), F(cC, a), aZ((bW + cC), (bV + cB)), cF)
318318 }
319319 else {
320320 let bX = aZ(bW, bV)
321321 let cG = fraction(M((bX - cD)), d, bX)
322322 let cF = C(bf, b)
323323 if (if ((bX != e))
324324 then (cG > cF)
325325 else false)
326326 then throw(((("Price slippage " + toString(cG)) + " > ") + toString(cF)))
327327 else {
328328 let cH = C(cy, b)
329329 let cI = fraction(cB, bX, d)
330330 let cJ = fraction(cC, d, bX)
331331 let cK = if ((cI > cC))
332332 then $Tuple2(cJ, cC)
333333 else $Tuple2(cB, cI)
334334 let cL = cK._1
335335 let cM = cK._2
336336 let bA = fraction(cH, cM, bW)
337337 $Tuple5(F(bA, b), F(cL, a), F(cM, a), bX, cF)
338338 }
339339 }
340340 let cN = cE._1
341341 let cO = fraction(cE._2, cw, a)
342342 let cP = fraction(cE._3, cx, a)
343343 let bY = F(cE._4, b)
344344 let cQ = F(cE._5, b)
345345 if ((0 >= cN))
346346 then throw("LP <= 0")
347347 else {
348348 let cR = if (!(co))
349349 then 0
350350 else cN
351351 let cS = (cj - cO)
352352 let cT = (cl - cP)
353353 let cU = if (if (cp)
354354 then (cr == cs)
355355 else false)
356356 then $Tuple2(cq, 0)
357357 else if (if (cp)
358358 then (cr == ct)
359359 else false)
360360 then $Tuple2(0, cq)
361361 else $Tuple2(cO, cP)
362362 let cV = cU._1
363363 let cW = cU._2
364364 let cX = [IntegerEntry(Q(), bY), IntegerEntry(R(height, lastBlock.timestamp), bY), StringEntry(U(bJ, bG), aI(cV, cW, cR, bY, bf, cQ, height, lastBlock.timestamp, cS, cT))]
365365 $Tuple13(cN, cR, bY, bR, bS, cy, bK, bP, cX, cS, cT, ck, cm)
366366 }
367367 }
368368
369369
370370 func cY (cZ) = {
371371 let bw = aD()
372372 let da = bw[s]
373373 let db = bw[t]
374374 let bP = parseIntValue(bw[q])
375375 let bx = parseIntValue(bw[u])
376376 let by = parseIntValue(bw[v])
377377 let dc = aX(da)
378378 let dd = aX(db)
379379 let bX = if ((cZ.orderType == Buy))
380380 then bn(bx, by, (dc + cZ.amount), dd)
381381 else bn(bx, by, (dc - cZ.amount), dd)
382382 let bY = F(bX, b)
383383 if (if (if (aB())
384384 then true
385385 else (bP == n))
386386 then true
387387 else (bP == o))
388388 then throw("Admin blocked")
389389 else {
390390 let de = cZ.assetPair.amountAsset
391391 let df = if ((de == unit))
392392 then "WAVES"
393393 else toBase58String(value(de))
394394 let dg = cZ.assetPair.priceAsset
395395 let dh = if ((dg == unit))
396396 then "WAVES"
397397 else toBase58String(value(dg))
398398 if (if ((df != da))
399399 then true
400400 else (dh != db))
401401 then throw("Wr assets")
402402 else {
403403 let di = cZ.price
404404 let cx = fraction(b, by, bx)
405405 let dj = I(di, b, cx)
406406 let dk = if ((cZ.orderType == Buy))
407407 then (bY >= dj)
408408 else (dj >= bY)
409409 true
410410 }
411411 }
412412 }
413413
414414
415415 func dl (dm) = if ((size(dm.payments) != 1))
416416 then throw("1 pmnt exp")
417417 else {
418418 let dn = value(dm.payments[0])
419419 let bH = value(dn.assetId)
420420 let cq = dn.amount
421421 let cE = bF(toBase58String(dm.transactionId), toBase58String(bH), cq, dm.caller)
422422 let cf = cE._1
423423 let cg = cE._2
424424 let bP = parseIntValue(cE._9)
425425 let ch = cE._10
426426 if (if (aB())
427427 then true
428428 else (bP == o))
429429 then throw(("Admin blocked: " + toString(bP)))
430430 else $Tuple5(cf, cg, cq, bH, ch)
431431 }
432432
433433
434434 func do (ad,W,dp,dq,bf,co,cp,cq,cr) = {
435435 let cE = ci(W, bf, value(dp).amount, value(dp).assetId, value(dq).amount, value(dq).assetId, ad, false, co, cp, cq, cr)
436436 let bP = parseIntValue(cE._8)
437437 if (if (if (aB())
438438 then true
439439 else (bP == m))
440440 then true
441441 else (bP == o))
442442 then throw(("Blocked:" + toString(bP)))
443443 else cE
444444 }
445445
446446
447447 func dr () = {
448448 let at = getString(O())
449449 if ($isInstanceOf(at, "String"))
450450 then {
451451 let ds = at
452452 fromBase58String(ds)
453453 }
454454 else if ($isInstanceOf(at, "Unit"))
455455 then unit
456456 else throw("Match error")
457457 }
458458
459459
460460 func dt () = {
461461 let at = getString(P())
462462 if ($isInstanceOf(at, "String"))
463463 then {
464464 let ds = at
465465 fromBase58String(ds)
466466 }
467467 else if ($isInstanceOf(at, "Unit"))
468468 then unit
469469 else throw("Match error")
470470 }
471471
472472
473473 let du = throw("Permission denied")
474474
475475 func dv (dm) = {
476476 let at = dr()
477477 if ($isInstanceOf(at, "ByteVector"))
478478 then {
479479 let dw = at
480480 if ((dm.callerPublicKey == dw))
481481 then true
482482 else du
483483 }
484484 else if ($isInstanceOf(at, "Unit"))
485485 then if ((dm.caller == this))
486486 then true
487487 else du
488488 else throw("Match error")
489489 }
490490
491491
492492 @Callable(dm)
493493 func constructor (N) = {
494494 let dx = dv(dm)
495495 if ((dx == dx))
496496 then [StringEntry(N(), N)]
497497 else throw("Strict value is not equal to itself.")
498498 }
499499
500500
501501
502502 @Callable(dm)
503503 func setManager (dy) = {
504504 let dx = dv(dm)
505505 if ((dx == dx))
506506 then {
507507 let dz = fromBase58String(dy)
508508 if ((dz == dz))
509509 then [StringEntry(P(), dy)]
510510 else throw("Strict value is not equal to itself.")
511511 }
512512 else throw("Strict value is not equal to itself.")
513513 }
514514
515515
516516
517517 @Callable(dm)
518518 func confirmManager () = {
519519 let bE = dt()
520520 let dA = if (isDefined(bE))
521521 then true
522522 else throw("No pending manager")
523523 if ((dA == dA))
524524 then {
525525 let dB = if ((dm.callerPublicKey == value(bE)))
526526 then true
527527 else throw("You are not pending manager")
528528 if ((dB == dB))
529529 then [StringEntry(O(), toBase58String(value(bE))), DeleteEntry(P())]
530530 else throw("Strict value is not equal to itself.")
531531 }
532532 else throw("Strict value is not equal to itself.")
533533 }
534534
535535
536536
537537 @Callable(dm)
538538 func put (dC,dD) = {
539539 let dE = aH()
540540 let dF = valueOrErrorMessage(addressFromString(dE[y]), "Wr st addr")
541541 let dG = valueOrErrorMessage(addressFromString(dE[z]), "Wr sl addr")
542542 if ((0 > dC))
543543 then throw("Wrong slippage")
544544 else if ((size(dm.payments) != 2))
545545 then throw("2 pmnts expd")
546546 else {
547547 let dH = do(toString(dm.caller), toBase58String(dm.transactionId), AttachedPayment(value(dm.payments[0]).assetId, value(dm.payments[0]).amount), dm.payments[1], dC, true, false, 0, "")
548548 let cR = dH._2
549549 let dI = dH._7
550550 let ch = dH._9
551551 let cS = dH._10
552552 let cT = dH._11
553553 let bL = dH._12
554554 let bM = dH._13
555555 let cE = invoke(az, "emit", [cR], nil)
556556 if ((cE == cE))
557557 then {
558558 let dJ = {
559559 let at = cE
560560 if ($isInstanceOf(at, "Address"))
561561 then {
562562 let dK = at
563563 invoke(dK, "emit", [cR], nil)
564564 }
565565 else unit
566566 }
567567 if ((dJ == dJ))
568568 then {
569569 let dL = if ((cS > 0))
570570 then invoke(dG, "put", nil, [AttachedPayment(bL, cS)])
571571 else nil
572572 if ((dL == dL))
573573 then {
574574 let dM = if ((cT > 0))
575575 then invoke(dG, "put", nil, [AttachedPayment(bM, cT)])
576576 else nil
577577 if ((dM == dM))
578578 then {
579579 let dN = if (dD)
580580 then {
581581 let dO = invoke(dF, "stake", nil, [AttachedPayment(dI, cR)])
582582 if ((dO == dO))
583583 then nil
584584 else throw("Strict value is not equal to itself.")
585585 }
586586 else [ScriptTransfer(dm.caller, cR, dI)]
587587 (ch ++ dN)
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 else throw("Strict value is not equal to itself.")
596596 }
597597 }
598598
599599
600600
601601 @Callable(dm)
602602 func putOneTkn (dP,dQ,dR,bf,dD) = {
603603 let bw = aH()
604604 let dF = valueOrErrorMessage(addressFromString(bw[y]), "Wr st addr")
605605 let dG = valueOrErrorMessage(addressFromString(bw[z]), "Wr sl addr")
606606 let dS = valueOrErrorMessage(addressFromString(bw[A]), "Wr gwx addr")
607607 let dT = aD()
608608 let bL = dT[s]
609609 let bM = dT[t]
610610 let bN = parseIntValue(dT[u])
611611 let bO = parseIntValue(dT[v])
612612 let dU = valueOrElse(getString(this, ab()), "")
613613 let bJ = if ((dU == toString(dm.caller)))
614614 then dm.originCaller
615615 else dm.caller
616616 if (if (if (if ((0 >= bf))
617617 then true
618618 else (0 >= dP))
619619 then true
620620 else (0 >= dQ))
621621 then true
622622 else (0 >= dR))
623623 then throw("Wrong params")
624624 else if ((size(dm.payments) != 1))
625625 then throw("1 pmnt expd")
626626 else {
627627 let dn = value(dm.payments[0])
628628 let bH = toBase58String(value(dn.assetId))
629629 let dV = value(assetInfo(value(dm.payments[0].assetId))).decimals
630630 let cq = dn.amount
631631 let dW = ((cq * a) / pow(10, 0, dV, 0, 0, DOWN))
632632 if ((10000000 > dW))
633633 then throw("Wrong pmt amt")
634634 else {
635635 let bR = aX(bL)
636636 let bS = aX(bM)
637637 let dX = if ((bH == bL))
638638 then if (if ((dW > bR))
639639 then true
640640 else (dP > dW))
641641 then throw("invalid payment amount")
642642 else $Tuple6((bR - dW), bS, (dW - dP), dQ, 0, 0)
643643 else if ((bH == bM))
644644 then if (if ((dW > bS))
645645 then true
646646 else (dQ > dW))
647647 then throw("invalid payment amount")
648648 else $Tuple6(bR, (bS - dW), 0, 0, (dW - dQ), dP)
649649 else throw("wrong pmtAssetId")
650650 let dY = dX._1
651651 let dZ = dX._2
652652 let ea = dX._3
653653 let eb = dX._4
654654 let ec = dX._5
655655 let ed = dX._6
656656 let bk = invoke(dS, "calcD", [toString(dY), toString(dZ), aA, h, i], nil)
657657 let bj = invoke(dS, "calcD", [toString(toBigInt(((dY + ea) - ed))), toString(toBigInt(((dZ + ec) - eb))), aA, h, i], nil)
658658 let ee = bi(parseBigIntValue(as(bj)), parseBigIntValue(as(bk)), g)
659659 if ((ee == ee))
660660 then {
661661 let ef = do(toString(dm.caller), toBase58String(dm.transactionId), AttachedPayment(fromBase58String(bL), dP), AttachedPayment(fromBase58String(bM), dQ), bf, true, true, cq, bH)
662662 let eg = ef._2
663663 let dI = ef._7
664664 let ch = ef._9
665665 let cS = ef._10
666666 let cT = ef._11
667667 let eh = bc(toBigInt(eg), toBigInt(dR), toBigInt(bf))
668668 let cR = toInt(eh._2)
669669 let dH = invoke(az, "emit", [cR], nil)
670670 if ((dH == dH))
671671 then {
672672 let dJ = {
673673 let at = dH
674674 if ($isInstanceOf(at, "Address"))
675675 then {
676676 let dK = at
677677 invoke(dK, "emit", [cR], nil)
678678 }
679679 else unit
680680 }
681681 if ((dJ == dJ))
682682 then {
683683 let dL = if ((cS > 0))
684684 then invoke(dG, "put", nil, [AttachedPayment(fromBase58String(bL), cS)])
685685 else nil
686686 if ((dL == dL))
687687 then {
688688 let dM = if ((cT > 0))
689689 then invoke(dG, "put", nil, [AttachedPayment(fromBase58String(bM), cT)])
690690 else nil
691691 if ((dM == dM))
692692 then {
693693 let dN = if (dD)
694694 then {
695695 let dO = invoke(dF, "stake", nil, [AttachedPayment(dI, cR)])
696696 if ((dO == dO))
697697 then nil
698698 else throw("Strict value is not equal to itself.")
699699 }
700700 else [ScriptTransfer(dm.caller, cR, dI)]
701701 (ch ++ dN)
702702 }
703703 else throw("Strict value is not equal to itself.")
704704 }
705705 else throw("Strict value is not equal to itself.")
706706 }
707707 else throw("Strict value is not equal to itself.")
708708 }
709709 else throw("Strict value is not equal to itself.")
710710 }
711711 else throw("Strict value is not equal to itself.")
712712 }
713713 }
714714 }
715715
716716
717717
718718 @Callable(dm)
719719 func putForFree (ei) = if ((0 > ei))
720720 then throw("Wrong slpg")
721721 else if ((size(dm.payments) != 2))
722722 then throw("2 pmnts expd")
723723 else {
724724 let ef = do(toString(dm.caller), toBase58String(dm.transactionId), AttachedPayment(value(dm.payments[0]).assetId, value(dm.payments[0]).amount), dm.payments[1], ei, false, false, 0, "")
725725 ef._9
726726 }
727727
728728
729729
730730 @Callable(dm)
731731 func get () = {
732732 let cE = dl(dm)
733733 let ej = cE._1
734734 let cg = cE._2
735735 let cq = cE._3
736736 let bH = cE._4
737737 let ch = cE._5
738738 let ek = invoke(az, "burn", [cq], [AttachedPayment(bH, cq)])
739739 if ((ek == ek))
740740 then ch
741741 else throw("Strict value is not equal to itself.")
742742 }
743743
744744
745745
746746 @Callable(dm)
747747 func getOneTkn (el,em,en,eo,bf) = if ((size(dm.payments) != 1))
748748 then throw("1 pmnt expd")
749749 else {
750750 let bw = aD()
751751 let bK = bw[r]
752752 let bL = bw[s]
753753 let bM = bw[t]
754754 let bN = parseIntValue(bw[u])
755755 let bO = parseIntValue(bw[v])
756756 let bP = bw[q]
757757 let dE = aH()
758758 let dS = valueOrErrorMessage(addressFromString(dE[A]), "Wr sl addr")
759759 let dn = value(dm.payments[0])
760760 let dU = valueOrElse(getString(this, ab()), "")
761761 let bJ = if ((dU == toString(dm.caller)))
762762 then dm.originCaller
763763 else dm.caller
764764 let bG = toBase58String(dm.transactionId)
765765 let bH = value(dn.assetId)
766766 let cq = dn.amount
767767 if ((1000000000 > cq))
768768 then throw("Min pmt 10 LP")
769769 else if (if (if ((0 > bf))
770770 then true
771771 else (0 > el))
772772 then true
773773 else (0 > en))
774774 then throw("Wrong params")
775775 else if ((bK != toBase58String(bH)))
776776 then throw("Wrong LP")
777777 else {
778778 let cE = bF(toBase58String(dm.transactionId), toBase58String(bH), cq, dm.caller)
779779 let ep = cE._1
780780 let eq = cE._2
781781 let bR = aX(bL)
782782 let bS = aX(bM)
783783 let er = if ((eo == bL))
784784 then $Tuple7((bR - ep), (bS - eq), el, eq, 0, 0, (ep + el))
785785 else if ((eo == bM))
786786 then $Tuple7((bR - ep), (bS - eq), 0, 0, el, ep, (eq + el))
787787 else throw("wrong outAssetId")
788788 let dY = er._1
789789 let dZ = er._2
790790 let ea = er._3
791791 let eb = er._4
792792 let ec = er._5
793793 let ed = er._6
794794 let es = er._7
795795 if (if ((0 > ea))
796796 then true
797797 else (0 > ec))
798798 then throw("Wrong calc")
799799 else {
800800 let bk = invoke(dS, "calcD", [toString(dY), toString(dZ), aA, h, i], nil)
801801 let bj = invoke(dS, "calcD", [toString(((dY - ea) + ed)), toString(((dZ + eb) - ec)), aA, h, i], nil)
802802 let ee = bi(parseBigIntValue(as(bj)), parseBigIntValue(as(bk)), g)
803803 if ((ee == ee))
804804 then {
805805 let et = bc(toBigInt(es), toBigInt(en), toBigInt(bf))
806806 if ((et == et))
807807 then {
808808 let eu = if ((eo == bL))
809809 then $Tuple2(toInt(et._2), 0)
810810 else $Tuple2(0, toInt(et._2))
811811 let ev = eu._1
812812 let ew = eu._2
813813 let ex = aZ(C(bS, bO), C(bR, bN))
814814 let ey = F(ex, b)
815815 let ch = [ScriptTransfer(bJ, (ev + ew), if ((eo == "WAVES"))
816816 then unit
817817 else fromBase58String(eo)), StringEntry(X(toString(bJ), bG), aT(ev, ew, cq, ey, height, lastBlock.timestamp)), IntegerEntry(Q(), ey), IntegerEntry(R(height, lastBlock.timestamp), ey)]
818818 if ((ch == ch))
819819 then {
820820 let ez = invoke(az, "burn", [cq], [AttachedPayment(bH, cq)])
821821 if ((ez == ez))
822822 then ch
823823 else throw("Strict value is not equal to itself.")
824824 }
825825 else throw("Strict value is not equal to itself.")
826826 }
827827 else throw("Strict value is not equal to itself.")
828828 }
829829 else throw("Strict value is not equal to itself.")
830830 }
831831 }
832832 }
833833
834834
835835
836836 @Callable(dm)
837837 func getNoLess (eA,eB) = {
838838 let cE = dl(dm)
839839 let cf = cE._1
840840 let cg = cE._2
841841 let cq = cE._3
842842 let bH = cE._4
843843 let ch = cE._5
844844 if ((eA > cf))
845845 then throw(((("Failed: " + toString(cf)) + " < ") + toString(eA)))
846846 else if ((eB > cg))
847847 then throw(((("Failed: " + toString(cg)) + " < ") + toString(eB)))
848848 else {
849849 let eC = invoke(az, "burn", [cq], [AttachedPayment(bH, cq)])
850850 if ((eC == eC))
851851 then ch
852852 else throw("Strict value is not equal to itself.")
853853 }
854854 }
855855
856856
857857
858858 @Callable(dm)
859859 func unstakeAndGet (eD) = {
860860 let eE = if ((size(dm.payments) != 0))
861861 then throw("No pmnts expd")
862862 else true
863863 if ((eE == eE))
864864 then {
865865 let bw = aD()
866866 let eF = aH()
867867 let dI = fromBase58String(bw[r])
868868 let eG = valueOrErrorMessage(addressFromString(eF[y]), "Wr st addr")
869869 let eH = invoke(eG, "unstake", [toBase58String(dI), eD], nil)
870870 if ((eH == eH))
871871 then {
872872 let cE = bF(toBase58String(dm.transactionId), toBase58String(dI), eD, dm.caller)
873873 let bP = parseIntValue(cE._9)
874874 let ch = cE._10
875875 let eI = if (if (aB())
876876 then true
877877 else (bP == o))
878878 then throw(("Blocked: " + toString(bP)))
879879 else true
880880 if ((eI == eI))
881881 then {
882882 let eJ = invoke(az, "burn", [eD], [AttachedPayment(dI, eD)])
883883 if ((eJ == eJ))
884884 then ch
885885 else throw("Strict value is not equal to itself.")
886886 }
887887 else throw("Strict value is not equal to itself.")
888888 }
889889 else throw("Strict value is not equal to itself.")
890890 }
891891 else throw("Strict value is not equal to itself.")
892892 }
893893
894894
895895
896896 @Callable(dm)
897897 func activate (eK,eL) = if ((toString(dm.caller) != toString(az)))
898898 then throw("denied")
899899 else $Tuple2([StringEntry(Y(), eK), StringEntry(Z(), eL)], "success")
900900
901901
902902
903903 @Callable(dm)
904904 func setS (eM,eI) = if ((toString(dm.caller) != av(this, ab())))
905905 then du
906906 else [StringEntry(eM, eI)]
907907
908908
909909
910910 @Callable(dm)
911911 func setI (eM,eI) = if ((toString(dm.caller) != av(this, ab())))
912912 then du
913913 else [IntegerEntry(eM, eI)]
914914
915915
916916
917917 @Callable(dm)
918918 func getPoolConfigWrapperREADONLY () = $Tuple2(nil, aD())
919919
920920
921921
922922 @Callable(dm)
923923 func getAccBalanceWrapperREADONLY (aY) = $Tuple2(nil, aX(aY))
924924
925925
926926
927927 @Callable(dm)
928928 func calcPricesWrapperREADONLY (bq,br,bv) = {
929929 let eN = bu(bq, br, bv)
930930 $Tuple2(nil, [toString(eN[0]), toString(eN[1]), toString(eN[2])])
931931 }
932932
933933
934934
935935 @Callable(dm)
936936 func fromX18WrapperREADONLY (G,eO) = $Tuple2(nil, F(parseBigIntValue(G), eO))
937937
938938
939939
940940 @Callable(dm)
941941 func toX18WrapperREADONLY (D,E) = $Tuple2(nil, toString(C(D, E)))
942942
943943
944944
945945 @Callable(dm)
946946 func calcPriceBigIntWrapperREADONLY (ba,bb) = $Tuple2(nil, toString(aZ(parseBigIntValue(ba), parseBigIntValue(bb))))
947947
948948
949949
950950 @Callable(dm)
951951 func estimatePutOperationWrapperREADONLY (bG,bf,cj,ck,cl,cm,eP,cn,co) = $Tuple2(nil, ci(bG, bf, cj, ck, cl, cm, eP, cn, co, false, 0, ""))
952952
953953
954954
955955 @Callable(dm)
956956 func estimateGetOperationWrapperREADONLY (bG,eQ,bI,eP) = {
957957 let cE = bF(bG, eQ, bI, addressFromStringValue(eP))
958958 $Tuple2(nil, $Tuple10(cE._1, cE._2, cE._3, cE._4, cE._5, cE._6, cE._7, toString(cE._8), cE._9, cE._10))
959959 }
960960
961961
962962 @Verifier(eR)
963963 func eS () = {
964964 let eT = {
965965 let at = dr()
966966 if ($isInstanceOf(at, "ByteVector"))
967967 then {
968968 let dw = at
969969 dw
970970 }
971971 else if ($isInstanceOf(at, "Unit"))
972972 then eR.senderPublicKey
973973 else throw("Match error")
974974 }
975975 let at = eR
976976 if ($isInstanceOf(at, "Order"))
977977 then {
978978 let cZ = at
979979 let eU = aC()
980980 let eV = cY(cZ)
981981 let eW = sigVerify(cZ.bodyBytes, cZ.proofs[0], cZ.senderPublicKey)
982982 let eX = sigVerify(cZ.bodyBytes, cZ.proofs[1], eU)
983983 if (if (if (eV)
984984 then eW
985985 else false)
986986 then eX
987987 else false)
988988 then true
989989 else ao(eV, eW, eX)
990990 }
991991 else if ($isInstanceOf(at, "SetScriptTransaction"))
992992 then {
993993 let ds = at
994994 let eY = blake2b256(value(ds.script))
995995 let eZ = fromBase64String(value(getString(az, an())))
996996 let fa = scriptHash(this)
997997 if (if ((eZ == eY))
998998 then (fa != eY)
999999 else false)
10001000 then true
10011001 else sigVerify(eR.bodyBytes, eR.proofs[0], eT)
10021002 }
10031003 else sigVerify(eR.bodyBytes, eR.proofs[0], eT)
10041004 }
10051005

github/deemru/w8io/026f985 
84.81 ms