tx · CieraDHKh9CkRCKxksgAMzUDpRrAbu8hqNqmhznwuH9T

3NAefciWv6f9fWvEXdGgpHfanJFG8HqfjuT:  -0.03400000 Waves

2022.08.30 14:57 [2207153] smart account 3NAefciWv6f9fWvEXdGgpHfanJFG8HqfjuT > SELF 0.00000000 Waves

{ "type": 13, "id": "CieraDHKh9CkRCKxksgAMzUDpRrAbu8hqNqmhznwuH9T", "fee": 3400000, "feeAssetId": null, "timestamp": 1661859503910, "version": 2, "chainId": 84, "sender": "3NAefciWv6f9fWvEXdGgpHfanJFG8HqfjuT", "senderPublicKey": "D1BL65meykxFZTCuq7jq9HSGLLnWvQamQPUNrguW5w39", "proofs": [ "3PFcMtHLAfxub4GfXH8gmz4bfbYrLCsyaVNAzTBdXAuA7BxRKwztmoNvRsmZfhGHb9AeHRPmxrYybVeD6kZGxW1i" ], "script": "base64:BgJ/CAISAwoBCBIDCgEIEgASBAoCAQQSBwoFAQEBAQQSAwoBARIAEgcKBQEBAQgBEgQKAgEBEgMKAQESBAoCCAgSBAoCCAgSBAoCCAESABIDCgEIEgUKAwEBARIECgIIARIECgIBARIECgIICBILCgkIAQECAQIIBAQSBgoECAgBCFIAD2RlZmF1bHREZWNpbWFscwDAhD0ABnNjYWxlOACAwtcvAAxzY2FsZThCaWdJbnQJALYCAQCAwtcvAAdzY2FsZTE4CQC2AgEAgICQu7rWrfANAAh0aG91c2FuZADoBwAKemVyb0JpZ0ludAkAtgIBAAAACW9uZUJpZ0ludAkAtgIBAAEACnNsaXBwYWdlNEQJALYCAQkAZQIFBnNjYWxlOAkAaQIJAGgCBQZzY2FsZTgAAQUGc2NhbGU4AAVBbXVsdAIDMTAwAAVEY29udgIBMQADU0VQAgJfXwAFRU1QVFkCAAAKUG9vbEFjdGl2ZQABAApQb29sUHV0RGlzAAIADlBvb2xNYXRjaGVyRGlzAAMADFBvb2xTaHV0ZG93bgAEAA5pZHhQb29sQWRkcmVzcwABAAlpZHhQb29sU3QAAgAJaWR4TFBBc0lkAAMACWlkeEFtQXNJZAAEAAlpZHhQckFzSWQABQALaWR4QW10QXNEY20ABgANaWR4UHJpY2VBc0RjbQAHAAtpZHhJQW10QXNJZAAIAA1pZHhJUHJpY2VBc0lkAAkAD2lkeEZhY3RTdGFrQ250cgABABBpZHhGYWN0U2xpcHBDbnRyAAcAEWlkeEZhY3RHd3hSZXdDbnRyAAoAEmZlZVBlcm1pbGxlRGVmYXVsdAAAAQV0b1gxOAIHb3JpZ1ZhbA1vcmlnU2NhbGVNdWx0CQC8AgMJALYCAQUHb3JpZ1ZhbAUHc2NhbGUxOAkAtgIBBQ1vcmlnU2NhbGVNdWx0AQdmcm9tWDE4AgN2YWwPcmVzdWx0U2NhbGVNdWx0CQCgAwEJALwCAwUDdmFsCQC2AgEFD3Jlc3VsdFNjYWxlTXVsdAUHc2NhbGUxOAECdHMDA2FtdAhyZXNTY2FsZQhjdXJTY2FsZQkAawMFA2FtdAUIcmVzU2NhbGUFCGN1clNjYWxlAQNhYnMBA3ZhbAMJAL8CAgUKemVyb0JpZ0ludAUDdmFsCQC+AgEFA3ZhbAUDdmFsARFrZXlGYWN0b3J5Q29udGFjdAACEyVzX19mYWN0b3J5Q29udHJhY3QBE2tleU1hbmFnZXJQdWJsaWNLZXkAAhQlc19fbWFuYWdlclB1YmxpY0tleQEaa2V5UGVuZGluZ01hbmFnZXJQdWJsaWNLZXkAAhslc19fcGVuZGluZ01hbmFnZXJQdWJsaWNLZXkBDGtleVByaWNlTGFzdAACESVzJXNfX3ByaWNlX19sYXN0AQ9rZXlQcmljZUhpc3RvcnkCAWgBdAkAuQkCCQDMCAICGCVzJXMlZCVkX19wcmljZV9faGlzdG9yeQkAzAgCCQCkAwEFAWgJAMwIAgkApAMBBQF0BQNuaWwFA1NFUAESa2V5UHV0QWN0aW9uQnlVc2VyAgJ1YQR0eElkCQCsAgIJAKwCAgkArAICAgslcyVzJXNfX1BfXwUCdWECAl9fBQR0eElkARJrZXlHZXRBY3Rpb25CeVVzZXICAnVhBHR4SWQJAKwCAgkArAICCQCsAgICCyVzJXMlc19fR19fBQJ1YQICX18FBHR4SWQBDmtleUFtb3VudEFzc2V0AAIPJXNfX2Ftb3VudEFzc2V0AQ1rZXlQcmljZUFzc2V0AAIOJXNfX3ByaWNlQXNzZXQBD2tleUFtcGxpZmljYXRvcgACByVzX19hbXABD2tleUFkZG9uQWRkcmVzcwACDSVzX19hZGRvbkFkZHIADmtleUZlZVBlcm1pbGxlAg8lc19fZmVlUGVybWlsbGUAC2ZlZVBlcm1pbGxlCQELdmFsdWVPckVsc2UCCQCaCAIFBHRoaXMFDmtleUZlZVBlcm1pbGxlBRJmZWVQZXJtaWxsZURlZmF1bHQBEGtleUZhY3RvcnlDb25maWcAAhElc19fZmFjdG9yeUNvbmZpZwENa2V5TWF0Y2hlclB1YgACGCVzJXNfX21hdGNoZXJfX3B1YmxpY0tleQENa2V5UG9vbENvbmZpZwIGaUFtdEFzBWlQckFzCQCsAgIJAKwCAgkArAICCQCsAgICCCVkJWQlc19fBQZpQW10QXMCAl9fBQVpUHJBcwIIX19jb25maWcBH2tleU1hcHBpbmdzQmFzZUFzc2V0MmludGVybmFsSWQBBWJBU3RyCQCsAgICKCVzJXMlc19fbWFwcGluZ3NfX2Jhc2VBc3NldDJpbnRlcm5hbElkX18FBWJBU3RyARNrZXlBbGxQb29sc1NodXRkb3duAAIMJXNfX3NodXRkb3duAQh0aHJvd0VycgEDbXNnCQACAQkAuQkCCQDMCAICD2xwX3N0YWJsZS5yaWRlOgkAzAgCBQNtc2cFA25pbAIBIAEPdGhyb3dPcmRlckVycm9yAwNvclYGc2VuZHJWBm1hdGNoVgkBCHRocm93RXJyAQkArAICCQCsAgIJAKwCAgkArAICCQCsAgICEUZhaWxlZDogb3JkVmFsaWQ9CQClAwEFA29yVgILIHNuZHJWYWxpZD0JAKUDAQUGc2VuZHJWAgwgbXRjaHJWYWxpZD0JAKUDAQUGbWF0Y2hWAQNzdHIBA3ZhbAQHJG1hdGNoMAUDdmFsAwkAAQIFByRtYXRjaDACBlN0cmluZwQGdmFsU3RyBQckbWF0Y2gwBQZ2YWxTdHIJAQh0aHJvd0VycgECE2ZhaWwgY2FzdCB0byBTdHJpbmcBD2dldFN0cmluZ09yRmFpbAIEYWRkcgNrZXkJARN2YWx1ZU9yRXJyb3JNZXNzYWdlAgkAnQgCBQRhZGRyBQNrZXkJALkJAgkAzAgCAgptYW5kYXRvcnkgCQDMCAIJAKUIAQUEYWRkcgkAzAgCAgEuCQDMCAIFA2tleQkAzAgCAgwgbm90IGRlZmluZWQFA25pbAIAAQxnZXRJbnRPckZhaWwCBGFkZHIDa2V5CQETdmFsdWVPckVycm9yTWVzc2FnZQIJAJoIAgUEYWRkcgUDa2V5CQC5CQIJAMwIAgIKbWFuZGF0b3J5IAkAzAgCCQClCAEFBGFkZHIJAMwIAgIBLgkAzAgCBQNrZXkJAMwIAgIMIG5vdCBkZWZpbmVkBQNuaWwCAAAPZmFjdG9yeUNvbnRyYWN0CQERQGV4dHJOYXRpdmUoMTA2MikBCQEPZ2V0U3RyaW5nT3JGYWlsAgUEdGhpcwkBEWtleUZhY3RvcnlDb250YWN0AAAMYW1wbGlmaWNhdG9yCQEPZ2V0U3RyaW5nT3JGYWlsAgUEdGhpcwkBD2tleUFtcGxpZmljYXRvcgABEGlzR2xvYmFsU2h1dGRvd24ACQELdmFsdWVPckVsc2UCCQCbCAIFD2ZhY3RvcnlDb250cmFjdAkBE2tleUFsbFBvb2xzU2h1dGRvd24ABwETZ2V0TWF0Y2hlclB1Yk9yRmFpbAAJANkEAQkBD2dldFN0cmluZ09yRmFpbAIFD2ZhY3RvcnlDb250cmFjdAkBDWtleU1hdGNoZXJQdWIAAA5tYXRjaGVyQWRkcmVzcwkApwgBCQETZ2V0TWF0Y2hlclB1Yk9yRmFpbAABDWdldFBvb2xDb25maWcABAVhbXRBcwkBD2dldFN0cmluZ09yRmFpbAIFBHRoaXMJAQ5rZXlBbW91bnRBc3NldAAEB3ByaWNlQXMJAQ9nZXRTdHJpbmdPckZhaWwCBQR0aGlzCQENa2V5UHJpY2VBc3NldAAECGlQcmljZUFzCQEMZ2V0SW50T3JGYWlsAgUPZmFjdG9yeUNvbnRyYWN0CQEfa2V5TWFwcGluZ3NCYXNlQXNzZXQyaW50ZXJuYWxJZAEFB3ByaWNlQXMEBmlBbXRBcwkBDGdldEludE9yRmFpbAIFD2ZhY3RvcnlDb250cmFjdAkBH2tleU1hcHBpbmdzQmFzZUFzc2V0MmludGVybmFsSWQBBQVhbXRBcwkAtQkCCQEPZ2V0U3RyaW5nT3JGYWlsAgUPZmFjdG9yeUNvbnRyYWN0CQENa2V5UG9vbENvbmZpZwIJAKQDAQUGaUFtdEFzCQCkAwEFCGlQcmljZUFzBQNTRVABEGdldEZhY3RvcnlDb25maWcACQC1CQIJAQ9nZXRTdHJpbmdPckZhaWwCBQ9mYWN0b3J5Q29udHJhY3QJARBrZXlGYWN0b3J5Q29uZmlnAAUDU0VQARFkYXRhUHV0QWN0aW9uSW5mbwoNaW5BbXRBc3NldEFtdA9pblByaWNlQXNzZXRBbXQIb3V0THBBbXQFcHJpY2UKc2xpcEJ5VXNlcgxzbGlwcGFnZVJlYWwIdHhIZWlnaHQLdHhUaW1lc3RhbXAMc2xpcGFnZUFtQW10DHNsaXBhZ2VQckFtdAkAuQkCCQDMCAICFCVkJWQlZCVkJWQlZCVkJWQlZCVkCQDMCAIJAKQDAQUNaW5BbXRBc3NldEFtdAkAzAgCCQCkAwEFD2luUHJpY2VBc3NldEFtdAkAzAgCCQCkAwEFCG91dExwQW10CQDMCAIJAKQDAQUFcHJpY2UJAMwIAgkApAMBBQpzbGlwQnlVc2VyCQDMCAIJAKQDAQUMc2xpcHBhZ2VSZWFsCQDMCAIJAKQDAQUIdHhIZWlnaHQJAMwIAgkApAMBBQt0eFRpbWVzdGFtcAkAzAgCCQCkAwEFDHNsaXBhZ2VBbUFtdAkAzAgCCQCkAwEFDHNsaXBhZ2VQckFtdAUDbmlsBQNTRVABEWRhdGFHZXRBY3Rpb25JbmZvBg5vdXRBbXRBc3NldEFtdBBvdXRQcmljZUFzc2V0QW10B2luTHBBbXQFcHJpY2UIdHhIZWlnaHQLdHhUaW1lc3RhbXAJALkJAgkAzAgCAgwlZCVkJWQlZCVkJWQJAMwIAgkApAMBBQ5vdXRBbXRBc3NldEFtdAkAzAgCCQCkAwEFEG91dFByaWNlQXNzZXRBbXQJAMwIAgkApAMBBQdpbkxwQW10CQDMCAIJAKQDAQUFcHJpY2UJAMwIAgkApAMBBQh0eEhlaWdodAkAzAgCCQCkAwEFC3R4VGltZXN0YW1wBQNuaWwFA1NFUAENZ2V0QWNjQmFsYW5jZQEHYXNzZXRJZAMJAAACBQdhc3NldElkAgVXQVZFUwgJAO8HAQUEdGhpcwlhdmFpbGFibGUJAPAHAgUEdGhpcwkA2QQBBQdhc3NldElkAQ9jYWxjUHJpY2VCaWdJbnQCCHByQW10WDE4CGFtQW10WDE4CQC8AgMFCHByQW10WDE4BQdzY2FsZTE4BQhhbUFtdFgxOAEPdmFsaWRhdGVBYnNEaWZmAwplc3RpbWF0ZUxQBW91dExwCHNsaXBwYWdlBARkaWZmCQC8AgMJALgCAgUKZXN0aW1hdGVMUAUFb3V0THAFDHNjYWxlOEJpZ0ludAUFb3V0THAEBHBhc3MJAL8CAgkAuAICBQhzbGlwcGFnZQkBA2FicwEFBGRpZmYFCnplcm9CaWdJbnQDCQEBIQEFBHBhc3MJAQh0aHJvd0VycgEJAKwCAgIOQmlnIHNsaXBwYWdlOiAJAKYDAQUEZGlmZgkAlAoCBQRwYXNzCQCZAwEJAMwIAgUKZXN0aW1hdGVMUAkAzAgCBQVvdXRMcAUDbmlsAQl2YWxpZGF0ZUQDAkQxAkQwCHNsaXBwYWdlBARkaWZmCQC8AgMFAkQwBQxzY2FsZThCaWdJbnQFAkQxBARmYWlsCQC/AgIFCHNsaXBwYWdlBQRkaWZmAwMFBGZhaWwGCQC/AgIFAkQwBQJEMQkBCHRocm93RXJyAQkArAICCQCsAgIJAKwCAgkArAICCQCsAgIJAKwCAgkApgMBBQJEMAIBIAkApgMBBQJEMQIBIAkApgMBBQRkaWZmAgEgCQCmAwEFCHNsaXBwYWdlBQRmYWlsARBwcml2YXRlQ2FsY1ByaWNlBAphbUFzc2V0RGNtCnByQXNzZXREY20FYW1BbXQFcHJBbXQEC2FtdEFzQW10WDE4CQEFdG9YMTgCBQVhbUFtdAUKYW1Bc3NldERjbQQKcHJBc0FtdFgxOAkBBXRvWDE4AgUFcHJBbXQFCnByQXNzZXREY20JAQ9jYWxjUHJpY2VCaWdJbnQCBQpwckFzQW10WDE4BQthbXRBc0FtdFgxOAEKY2FsY1ByaWNlcwMFYW1BbXQFcHJBbXQFbHBBbXQEA2NmZwkBDWdldFBvb2xDb25maWcABAhhbXRBc0RjbQkBDXBhcnNlSW50VmFsdWUBCQCRAwIFA2NmZwULaWR4QW10QXNEY20EB3ByQXNEY20JAQ1wYXJzZUludFZhbHVlAQkAkQMCBQNjZmcFDWlkeFByaWNlQXNEY20ECHByaWNlWDE4CQEQcHJpdmF0ZUNhbGNQcmljZQQFCGFtdEFzRGNtBQdwckFzRGNtBQVhbUFtdAUFcHJBbXQECGFtQW10WDE4CQEFdG9YMTgCBQVhbUFtdAUIYW10QXNEY20ECHByQW10WDE4CQEFdG9YMTgCBQVwckFtdAUHcHJBc0RjbQQIbHBBbXRYMTgJAQV0b1gxOAIFBWxwQW10BQZzY2FsZTgEDWxwUHJJbkFtQXNYMTgJAQ9jYWxjUHJpY2VCaWdJbnQCBQhhbUFtdFgxOAUIbHBBbXRYMTgEDWxwUHJJblByQXNYMTgJAQ9jYWxjUHJpY2VCaWdJbnQCBQhwckFtdFgxOAUIbHBBbXRYMTgJAMwIAgUIcHJpY2VYMTgJAMwIAgUNbHBQckluQW1Bc1gxOAkAzAgCBQ1scFBySW5QckFzWDE4BQNuaWwBD2NhbGN1bGF0ZVByaWNlcwMFYW1BbXQFcHJBbXQFbHBBbXQEAXAJAQpjYWxjUHJpY2VzAwUFYW1BbXQFBXByQW10BQVscEFtdAkAzAgCCQEHZnJvbVgxOAIJAJEDAgUBcAAABQZzY2FsZTgJAMwIAgkBB2Zyb21YMTgCCQCRAwIFAXAAAQUGc2NhbGU4CQDMCAIJAQdmcm9tWDE4AgkAkQMCBQFwAAIFBnNjYWxlOAUDbmlsARRlc3RpbWF0ZUdldE9wZXJhdGlvbgQGdHhJZDU4DnBheW1lbnRBc3NldElkD3BheW1lbnRMcEFtb3VudAt1c2VyQWRkcmVzcwQDY2ZnCQENZ2V0UG9vbENvbmZpZwAECWxwQXNzZXRJZAkAkQMCBQNjZmcFCWlkeExQQXNJZAQIYW1vdW50SWQJAJEDAgUDY2ZnBQlpZHhBbUFzSWQEB3ByaWNlSWQJAJEDAgUDY2ZnBQlpZHhQckFzSWQEDmFtb3VudERlY2ltYWxzCQENcGFyc2VJbnRWYWx1ZQEJAJEDAgUDY2ZnBQtpZHhBbXRBc0RjbQQNcHJpY2VEZWNpbWFscwkBDXBhcnNlSW50VmFsdWUBCQCRAwIFA2NmZwUNaWR4UHJpY2VBc0RjbQQDc3RzCQCRAwIFA2NmZwUJaWR4UG9vbFN0BApscEVtaXNzaW9uCAkBE3ZhbHVlT3JFcnJvck1lc3NhZ2UCCQDsBwEJANkEAQUJbHBBc3NldElkAgtXcm9uZyBMUCBpZAhxdWFudGl0eQQPdmFsaWRhdGlvbkJsb2NrAwkAAAIFCWxwQXNzZXRJZAUOcGF5bWVudEFzc2V0SWQGCQEIdGhyb3dFcnIBAhNXcm9uZyBwYXltZW50IGFzc2V0AwkAAAIFD3ZhbGlkYXRpb25CbG9jawUPdmFsaWRhdGlvbkJsb2NrBA1hbW91bnRCYWxhbmNlCQENZ2V0QWNjQmFsYW5jZQEFCGFtb3VudElkBAxwcmljZUJhbGFuY2UJAQ1nZXRBY2NCYWxhbmNlAQUHcHJpY2VJZAQcYW1vdW50QmFsYW5jZURlZmF1bHREZWNpbWFscwkAawMFDWFtb3VudEJhbGFuY2UFD2RlZmF1bHREZWNpbWFscwUOYW1vdW50RGVjaW1hbHMEG3ByaWNlQmFsYW5jZURlZmF1bHREZWNpbWFscwkAawMFDHByaWNlQmFsYW5jZQUPZGVmYXVsdERlY2ltYWxzBQ1wcmljZURlY2ltYWxzBBBhbW91bnRCYWxhbmNlWDE4CQEFdG9YMTgCBRxhbW91bnRCYWxhbmNlRGVmYXVsdERlY2ltYWxzBQ9kZWZhdWx0RGVjaW1hbHMED3ByaWNlQmFsYW5jZVgxOAkBBXRvWDE4AgUbcHJpY2VCYWxhbmNlRGVmYXVsdERlY2ltYWxzBQ9kZWZhdWx0RGVjaW1hbHMED2N1cnJlbnRQcmljZVgxOAkBD2NhbGNQcmljZUJpZ0ludAIFD3ByaWNlQmFsYW5jZVgxOAUQYW1vdW50QmFsYW5jZVgxOAQIY3VyUHJpY2UJAQdmcm9tWDE4AgUPY3VycmVudFByaWNlWDE4BQZzY2FsZTgEEnBheW1lbnRMcEFtb3VudFgxOAkBBXRvWDE4AgUPcGF5bWVudExwQW1vdW50BQZzY2FsZTgEDWxwRW1pc3Npb25YMTgJAQV0b1gxOAIFCmxwRW1pc3Npb24FBnNjYWxlOAQSb3V0QW1vdW50QW1vdW50WDE4CQC8AgMFEGFtb3VudEJhbGFuY2VYMTgFEnBheW1lbnRMcEFtb3VudFgxOAUNbHBFbWlzc2lvblgxOAQRb3V0UHJpY2VBbW91bnRYMTgJALwCAwUPcHJpY2VCYWxhbmNlWDE4BRJwYXltZW50THBBbW91bnRYMTgFDWxwRW1pc3Npb25YMTgEHm91dEFtb3VudEFtb3VudERlZmF1bHREZWNpbWFscwkBB2Zyb21YMTgCBRJvdXRBbW91bnRBbW91bnRYMTgFD2RlZmF1bHREZWNpbWFscwQdb3V0UHJpY2VBbW91bnREZWZhdWx0RGVjaW1hbHMJAQdmcm9tWDE4AgURb3V0UHJpY2VBbW91bnRYMTgFD2RlZmF1bHREZWNpbWFscwQPb3V0QW1vdW50QW1vdW50CQBrAwUeb3V0QW1vdW50QW1vdW50RGVmYXVsdERlY2ltYWxzBQ5hbW91bnREZWNpbWFscwUPZGVmYXVsdERlY2ltYWxzBA5vdXRQcmljZUFtb3VudAkAawMFHW91dFByaWNlQW1vdW50RGVmYXVsdERlY2ltYWxzBQ1wcmljZURlY2ltYWxzBQ9kZWZhdWx0RGVjaW1hbHMEBXN0YXRlAwkAAAIFBnR4SWQ1OAIABQNuaWwJAMwIAgkBDlNjcmlwdFRyYW5zZmVyAwULdXNlckFkZHJlc3MFD291dEFtb3VudEFtb3VudAMJAAACBQhhbW91bnRJZAIFV0FWRVMFBHVuaXQJANkEAQUIYW1vdW50SWQJAMwIAgkBDlNjcmlwdFRyYW5zZmVyAwULdXNlckFkZHJlc3MFDm91dFByaWNlQW1vdW50AwkAAAIFB3ByaWNlSWQCBVdBVkVTBQR1bml0CQDZBAEFB3ByaWNlSWQJAMwIAgkBC1N0cmluZ0VudHJ5AgkBEmtleUdldEFjdGlvbkJ5VXNlcgIJAKUIAQULdXNlckFkZHJlc3MFBnR4SWQ1OAkBEWRhdGFHZXRBY3Rpb25JbmZvBgUPb3V0QW1vdW50QW1vdW50BQ5vdXRQcmljZUFtb3VudAUPcGF5bWVudExwQW1vdW50BQhjdXJQcmljZQUGaGVpZ2h0CAUJbGFzdEJsb2NrCXRpbWVzdGFtcAkAzAgCCQEMSW50ZWdlckVudHJ5AgkBDGtleVByaWNlTGFzdAAFCGN1clByaWNlCQDMCAIJAQxJbnRlZ2VyRW50cnkCCQEPa2V5UHJpY2VIaXN0b3J5AgUGaGVpZ2h0CAUJbGFzdEJsb2NrCXRpbWVzdGFtcAUIY3VyUHJpY2UFA25pbAkAnAoKBQ9vdXRBbW91bnRBbW91bnQFDm91dFByaWNlQW1vdW50BQhhbW91bnRJZAUHcHJpY2VJZAUNYW1vdW50QmFsYW5jZQUMcHJpY2VCYWxhbmNlBQpscEVtaXNzaW9uBQ9jdXJyZW50UHJpY2VYMTgFA3N0cwUFc3RhdGUJAAIBAiRTdHJpY3QgdmFsdWUgaXMgbm90IGVxdWFsIHRvIGl0c2VsZi4BFGVzdGltYXRlUHV0T3BlcmF0aW9uDAZ0eElkNTgRc2xpcHBhZ2VUb2xlcmFuY2UTaW5BbW91bnRBc3NldEFtb3VudA9pbkFtb3VudEFzc2V0SWQSaW5QcmljZUFzc2V0QW1vdW50DmluUHJpY2VBc3NldElkC3VzZXJBZGRyZXNzCmlzRXZhbHVhdGUGZW1pdExwCmlzT25lQXNzZXQNcGF5bWVudEFtb3VudAlwYXltZW50SWQEA2NmZwkBDWdldFBvb2xDb25maWcABAlscEFzc2V0SWQJANkEAQkAkQMCBQNjZmcFCWlkeExQQXNJZAQLYW1vdW50SWRTdHIJAJEDAgUDY2ZnBQlpZHhBbUFzSWQECnByaWNlSWRTdHIJAJEDAgUDY2ZnBQlpZHhQckFzSWQEDWluQW1vdW50SWRTdHIJAJEDAgUDY2ZnBQtpZHhJQW10QXNJZAQMaW5QcmljZUlkU3RyCQCRAwIFA2NmZwUNaWR4SVByaWNlQXNJZAQOYW1vdW50RGVjaW1hbHMJAQ1wYXJzZUludFZhbHVlAQkAkQMCBQNjZmcFC2lkeEFtdEFzRGNtBA1wcmljZURlY2ltYWxzCQENcGFyc2VJbnRWYWx1ZQEJAJEDAgUDY2ZnBQ1pZHhQcmljZUFzRGNtBANzdHMJAJEDAgUDY2ZnBQlpZHhQb29sU3QECmxwRW1pc3Npb24ICQETdmFsdWVPckVycm9yTWVzc2FnZQIJAOwHAQUJbHBBc3NldElkAg5Xcm9uZyBscCBhc3NldAhxdWFudGl0eQQNYW1vdW50QmFsYW5jZQMFCmlzRXZhbHVhdGUJAQ1nZXRBY2NCYWxhbmNlAQULYW1vdW50SWRTdHIDAwUKaXNPbmVBc3NldAkAAAIFCXBheW1lbnRJZAULYW1vdW50SWRTdHIHCQBlAgkBDWdldEFjY0JhbGFuY2UBBQthbW91bnRJZFN0cgUNcGF5bWVudEFtb3VudAMFCmlzT25lQXNzZXQJAQ1nZXRBY2NCYWxhbmNlAQULYW1vdW50SWRTdHIJAGUCCQENZ2V0QWNjQmFsYW5jZQEFC2Ftb3VudElkU3RyBRNpbkFtb3VudEFzc2V0QW1vdW50BAxwcmljZUJhbGFuY2UDBQppc0V2YWx1YXRlCQENZ2V0QWNjQmFsYW5jZQEFCnByaWNlSWRTdHIDAwUKaXNPbmVBc3NldAkAAAIFCXBheW1lbnRJZAUKcHJpY2VJZFN0cgcJAGUCCQENZ2V0QWNjQmFsYW5jZQEFCnByaWNlSWRTdHIFDXBheW1lbnRBbW91bnQDBQppc09uZUFzc2V0CQENZ2V0QWNjQmFsYW5jZQEFCnByaWNlSWRTdHIJAGUCCQENZ2V0QWNjQmFsYW5jZQEFCnByaWNlSWRTdHIFEmluUHJpY2VBc3NldEFtb3VudAQcYW1vdW50QmFsYW5jZURlZmF1bHREZWNpbWFscwkAawMFDWFtb3VudEJhbGFuY2UFD2RlZmF1bHREZWNpbWFscwUOYW1vdW50RGVjaW1hbHMEG3ByaWNlQmFsYW5jZURlZmF1bHREZWNpbWFscwkAawMFDHByaWNlQmFsYW5jZQUPZGVmYXVsdERlY2ltYWxzBQ1wcmljZURlY2ltYWxzBCJpbkFtb3VudEFzc2V0QW1vdW50RGVmYXVsdERlY2ltYWxzCQBrAwUTaW5BbW91bnRBc3NldEFtb3VudAUPZGVmYXVsdERlY2ltYWxzBQ5hbW91bnREZWNpbWFscwQhaW5QcmljZUFzc2V0QW1vdW50RGVmYXVsdERlY2ltYWxzCQBrAwUSaW5QcmljZUFzc2V0QW1vdW50BQ9kZWZhdWx0RGVjaW1hbHMFDXByaWNlRGVjaW1hbHMEFmluQW1vdW50QXNzZXRBbW91bnRYMTgJAQV0b1gxOAIFImluQW1vdW50QXNzZXRBbW91bnREZWZhdWx0RGVjaW1hbHMFD2RlZmF1bHREZWNpbWFscwQVaW5QcmljZUFzc2V0QW1vdW50WDE4CQEFdG9YMTgCBSFpblByaWNlQXNzZXRBbW91bnREZWZhdWx0RGVjaW1hbHMFD2RlZmF1bHREZWNpbWFscwQMdXNlclByaWNlWDE4CQEPY2FsY1ByaWNlQmlnSW50AgUVaW5QcmljZUFzc2V0QW1vdW50WDE4BRZpbkFtb3VudEFzc2V0QW1vdW50WDE4BBBhbW91bnRCYWxhbmNlWDE4CQEFdG9YMTgCBRxhbW91bnRCYWxhbmNlRGVmYXVsdERlY2ltYWxzBQ9kZWZhdWx0RGVjaW1hbHMED3ByaWNlQmFsYW5jZVgxOAkBBXRvWDE4AgUbcHJpY2VCYWxhbmNlRGVmYXVsdERlY2ltYWxzBQ9kZWZhdWx0RGVjaW1hbHMEAXIDCQAAAgUKbHBFbWlzc2lvbgAABA9jdXJyZW50UHJpY2VYMTgFCnplcm9CaWdJbnQEC3NsaXBwYWdlWDE4BQp6ZXJvQmlnSW50BAtscEFtb3VudFgxOAkAdgYJALkCAgUWaW5BbW91bnRBc3NldEFtb3VudFgxOAUVaW5QcmljZUFzc2V0QW1vdW50WDE4AAAJALYCAQAFAAEAAAUERE9XTgkAlwoFCQEHZnJvbVgxOAIFC2xwQW1vdW50WDE4BQZzY2FsZTgJAQdmcm9tWDE4AgUWaW5BbW91bnRBc3NldEFtb3VudFgxOAUPZGVmYXVsdERlY2ltYWxzCQEHZnJvbVgxOAIFFWluUHJpY2VBc3NldEFtb3VudFgxOAUPZGVmYXVsdERlY2ltYWxzCQEPY2FsY1ByaWNlQmlnSW50AgkAtwICBQ9wcmljZUJhbGFuY2VYMTgFFWluUHJpY2VBc3NldEFtb3VudFgxOAkAtwICBRBhbW91bnRCYWxhbmNlWDE4BRZpbkFtb3VudEFzc2V0QW1vdW50WDE4BQtzbGlwcGFnZVgxOAQPY3VycmVudFByaWNlWDE4CQEPY2FsY1ByaWNlQmlnSW50AgUPcHJpY2VCYWxhbmNlWDE4BRBhbW91bnRCYWxhbmNlWDE4BA9zbGlwcGFnZVJlYWxYMTgJALwCAwkBA2FicwEJALgCAgUPY3VycmVudFByaWNlWDE4BQx1c2VyUHJpY2VYMTgFB3NjYWxlMTgFD2N1cnJlbnRQcmljZVgxOAQLc2xpcHBhZ2VYMTgJAQV0b1gxOAIFEXNsaXBwYWdlVG9sZXJhbmNlBQZzY2FsZTgEEHZhbGlkYXRlU2xpcHBhZ2UDCQAAAgMJAQIhPQIFD2N1cnJlbnRQcmljZVgxOAUKemVyb0JpZ0ludAkAvwICBQ9zbGlwcGFnZVJlYWxYMTgFC3NsaXBwYWdlWDE4BwcGCQEIdGhyb3dFcnIBCQCsAgIJAKwCAgkArAICAg9QcmljZSBzbGlwcGFnZSAJAKYDAQUPc2xpcHBhZ2VSZWFsWDE4AgMgPiAJAKYDAQULc2xpcHBhZ2VYMTgDCQAAAgUQdmFsaWRhdGVTbGlwcGFnZQUQdmFsaWRhdGVTbGlwcGFnZQQNbHBFbWlzc2lvblgxOAkBBXRvWDE4AgUKbHBFbWlzc2lvbgUGc2NhbGU4BApwclZpYUFtWDE4CQC8AgMFFmluQW1vdW50QXNzZXRBbW91bnRYMTgFD2N1cnJlbnRQcmljZVgxOAUHc2NhbGUxOAQKYW1WaWFQclgxOAkAvAIDBRVpblByaWNlQXNzZXRBbW91bnRYMTgFB3NjYWxlMTgFD2N1cnJlbnRQcmljZVgxOAQPZXhwZWN0ZWRBbW91bnRzAwkAvwICBQpwclZpYUFtWDE4BRVpblByaWNlQXNzZXRBbW91bnRYMTgJAJQKAgUKYW1WaWFQclgxOAUWaW5BbW91bnRBc3NldEFtb3VudFgxOAkAlAoCBRZpbkFtb3VudEFzc2V0QW1vdW50WDE4BQpwclZpYUFtWDE4BBxleHBlY3RlZEFtb3VudEFzc2V0QW1vdW50WDE4CAUPZXhwZWN0ZWRBbW91bnRzAl8xBBtleHBlY3RlZFByaWNlQXNzZXRBbW91bnRYMTgIBQ9leHBlY3RlZEFtb3VudHMCXzIEC2xwQW1vdW50WDE4CQC8AgMFDWxwRW1pc3Npb25YMTgFG2V4cGVjdGVkUHJpY2VBc3NldEFtb3VudFgxOAUPcHJpY2VCYWxhbmNlWDE4CQCXCgUJAQdmcm9tWDE4AgULbHBBbW91bnRYMTgFBnNjYWxlOAkBB2Zyb21YMTgCBRxleHBlY3RlZEFtb3VudEFzc2V0QW1vdW50WDE4BQ9kZWZhdWx0RGVjaW1hbHMJAQdmcm9tWDE4AgUbZXhwZWN0ZWRQcmljZUFzc2V0QW1vdW50WDE4BQ9kZWZhdWx0RGVjaW1hbHMFD2N1cnJlbnRQcmljZVgxOAULc2xpcHBhZ2VYMTgJAAIBAiRTdHJpY3QgdmFsdWUgaXMgbm90IGVxdWFsIHRvIGl0c2VsZi4EEWNhbGN1bGF0ZUxwQW1vdW50CAUBcgJfMQQbY2FsY3VsYXRlQW1vdW50QXNzZXRQYXltZW50CQBrAwgFAXICXzIFDmFtb3VudERlY2ltYWxzBQ9kZWZhdWx0RGVjaW1hbHMEGmNhbGN1bGF0ZVByaWNlQXNzZXRQYXltZW50CQBrAwgFAXICXzMFDXByaWNlRGVjaW1hbHMFD2RlZmF1bHREZWNpbWFscwQMY3VycmVudFByaWNlCQEHZnJvbVgxOAIIBQFyAl80BQZzY2FsZTgEEXNsaXBwYWdlQ2FsY3VsYXRlCQEHZnJvbVgxOAIIBQFyAl81BQZzY2FsZTgEEWNoZWNrQ2FsY0xwQW1vdW50AwkAZgIFEWNhbGN1bGF0ZUxwQW1vdW50AAAGCQEIdGhyb3dFcnIBAgdMUCA8PSAwAwkAAAIFEWNoZWNrQ2FsY0xwQW1vdW50BRFjaGVja0NhbGNMcEFtb3VudAQMZW1pdExwQW1vdW50AwkBASEBBQZlbWl0THAAAAURY2FsY3VsYXRlTHBBbW91bnQECmFtb3VudERpZmYJAGUCBRNpbkFtb3VudEFzc2V0QW1vdW50BRtjYWxjdWxhdGVBbW91bnRBc3NldFBheW1lbnQECXByaWNlRGlmZgkAZQIFEmluUHJpY2VBc3NldEFtb3VudAUaY2FsY3VsYXRlUHJpY2VBc3NldFBheW1lbnQEDSR0MDE3MTUwMTc0MDkDAwUKaXNPbmVBc3NldAkAAAIFCXBheW1lbnRJZAULYW1vdW50SWRTdHIHCQCUCgIFDXBheW1lbnRBbW91bnQAAAMDBQppc09uZUFzc2V0CQAAAgUJcGF5bWVudElkBQpwcmljZUlkU3RyBwkAlAoCAAAFDXBheW1lbnRBbW91bnQJAJQKAgUbY2FsY3VsYXRlQW1vdW50QXNzZXRQYXltZW50BRpjYWxjdWxhdGVQcmljZUFzc2V0UGF5bWVudAQKd3JpdGVBbUFtdAgFDSR0MDE3MTUwMTc0MDkCXzEECndyaXRlUHJBbXQIBQ0kdDAxNzE1MDE3NDA5Al8yBAtjb21tb25TdGF0ZQkAzAgCCQEMSW50ZWdlckVudHJ5AgkBDGtleVByaWNlTGFzdAAFDGN1cnJlbnRQcmljZQkAzAgCCQEMSW50ZWdlckVudHJ5AgkBD2tleVByaWNlSGlzdG9yeQIFBmhlaWdodAgFCWxhc3RCbG9jawl0aW1lc3RhbXAFDGN1cnJlbnRQcmljZQkAzAgCCQELU3RyaW5nRW50cnkCCQESa2V5UHV0QWN0aW9uQnlVc2VyAgULdXNlckFkZHJlc3MFBnR4SWQ1OAkBEWRhdGFQdXRBY3Rpb25JbmZvCgUKd3JpdGVBbUFtdAUKd3JpdGVQckFtdAUMZW1pdExwQW1vdW50BQxjdXJyZW50UHJpY2UFEXNsaXBwYWdlVG9sZXJhbmNlBRFzbGlwcGFnZUNhbGN1bGF0ZQUGaGVpZ2h0CAUJbGFzdEJsb2NrCXRpbWVzdGFtcAUKYW1vdW50RGlmZgUJcHJpY2VEaWZmBQNuaWwJAJ8KDQURY2FsY3VsYXRlTHBBbW91bnQFDGVtaXRMcEFtb3VudAUMY3VycmVudFByaWNlBQ1hbW91bnRCYWxhbmNlBQxwcmljZUJhbGFuY2UFCmxwRW1pc3Npb24FCWxwQXNzZXRJZAUDc3RzBQtjb21tb25TdGF0ZQUKYW1vdW50RGlmZgUJcHJpY2VEaWZmBQ9pbkFtb3VudEFzc2V0SWQFDmluUHJpY2VBc3NldElkCQACAQIkU3RyaWN0IHZhbHVlIGlzIG5vdCBlcXVhbCB0byBpdHNlbGYuARt2YWxpZGF0ZU1hdGNoZXJPcmRlckFsbG93ZWQBBW9yZGVyBANjZmcJAQ1nZXRQb29sQ29uZmlnAAQHYW10QXNJZAkAkQMCBQNjZmcFCWlkeEFtQXNJZAQGcHJBc0lkCQCRAwIFA2NmZwUJaWR4UHJBc0lkBANzdHMJAQ1wYXJzZUludFZhbHVlAQkAkQMCBQNjZmcFCWlkeFBvb2xTdAQIYW10QXNEY20JAQ1wYXJzZUludFZhbHVlAQkAkQMCBQNjZmcFC2lkeEFtdEFzRGNtBAdwckFzRGNtCQENcGFyc2VJbnRWYWx1ZQEJAJEDAgUDY2ZnBQ1pZHhQcmljZUFzRGNtBA9hY2NBbXRBc0JhbGFuY2UJAQ1nZXRBY2NCYWxhbmNlAQUHYW10QXNJZAQOYWNjUHJBc0JhbGFuY2UJAQ1nZXRBY2NCYWxhbmNlAQUGcHJBc0lkBA9jdXJyZW50UHJpY2VYMTgDCQAAAggFBW9yZGVyCW9yZGVyVHlwZQUDQnV5CQEQcHJpdmF0ZUNhbGNQcmljZQQFCGFtdEFzRGNtBQdwckFzRGNtCQBkAgUPYWNjQW10QXNCYWxhbmNlCAUFb3JkZXIGYW1vdW50BQ5hY2NQckFzQmFsYW5jZQkBEHByaXZhdGVDYWxjUHJpY2UEBQhhbXRBc0RjbQUHcHJBc0RjbQkAZQIFD2FjY0FtdEFzQmFsYW5jZQgFBW9yZGVyBmFtb3VudAUOYWNjUHJBc0JhbGFuY2UECGN1clByaWNlCQEHZnJvbVgxOAIFD2N1cnJlbnRQcmljZVgxOAUGc2NhbGU4AwMDCQEQaXNHbG9iYWxTaHV0ZG93bgAGCQAAAgUDc3RzBQ5Qb29sTWF0Y2hlckRpcwYJAAACBQNzdHMFDFBvb2xTaHV0ZG93bgkBCHRocm93RXJyAQINQWRtaW4gYmxvY2tlZAQKb3JBbXRBc3NldAgIBQVvcmRlcglhc3NldFBhaXILYW1vdW50QXNzZXQECm9yQW10QXNTdHIDCQAAAgUKb3JBbXRBc3NldAUEdW5pdAIFV0FWRVMJANgEAQkBBXZhbHVlAQUKb3JBbXRBc3NldAQJb3JQckFzc2V0CAgFBW9yZGVyCWFzc2V0UGFpcgpwcmljZUFzc2V0BAlvclByQXNTdHIDCQAAAgUJb3JQckFzc2V0BQR1bml0AgVXQVZFUwkA2AQBCQEFdmFsdWUBBQlvclByQXNzZXQDAwkBAiE9AgUKb3JBbXRBc1N0cgUHYW10QXNJZAYJAQIhPQIFCW9yUHJBc1N0cgUGcHJBc0lkCQEIdGhyb3dFcnIBAglXciBhc3NldHMECm9yZGVyUHJpY2UIBQVvcmRlcgVwcmljZQQNcHJpY2VEZWNpbWFscwkAawMFBnNjYWxlOAUHcHJBc0RjbQUIYW10QXNEY20EDmNhc3RPcmRlclByaWNlCQECdHMDBQpvcmRlclByaWNlBQZzY2FsZTgFDXByaWNlRGVjaW1hbHMEEWlzT3JkZXJQcmljZVZhbGlkAwkAAAIIBQVvcmRlcglvcmRlclR5cGUFA0J1eQkAZwIFCGN1clByaWNlBQ5jYXN0T3JkZXJQcmljZQkAZwIFDmNhc3RPcmRlclByaWNlBQhjdXJQcmljZQYBCWNvbW1vbkdldAEBaQQNY2hlY2tQYXltZW50cwMJAAACCQCQAwEIBQFpCHBheW1lbnRzAAEGCQEIdGhyb3dFcnIBAhIxIHBheW1lbnQgZXhwZWN0ZWQDCQAAAgUNY2hlY2tQYXltZW50cwUNY2hlY2tQYXltZW50cwQHcGF5bWVudAkBBXZhbHVlAQkAkQMCCAUBaQhwYXltZW50cwAABA5wYXltZW50QXNzZXRJZAkBBXZhbHVlAQgFB3BheW1lbnQHYXNzZXRJZAQNcGF5bWVudEFtb3VudAgFB3BheW1lbnQGYW1vdW50BAFyCQEUZXN0aW1hdGVHZXRPcGVyYXRpb24ECQDYBAEIBQFpDXRyYW5zYWN0aW9uSWQJANgEAQUOcGF5bWVudEFzc2V0SWQFDXBheW1lbnRBbW91bnQIBQFpBmNhbGxlcgQPb3V0QW1vdW50QW1vdW50CAUBcgJfMQQOb3V0UHJpY2VBbW91bnQIBQFyAl8yBANzdHMJAQ1wYXJzZUludFZhbHVlAQgFAXICXzkEBXN0YXRlCAUBcgNfMTADAwkBEGlzR2xvYmFsU2h1dGRvd24ABgkAAAIFA3N0cwUMUG9vbFNodXRkb3duCQEIdGhyb3dFcnIBCQCsAgICD0FkbWluIGJsb2NrZWQ6IAkApAMBBQNzdHMJAJcKBQUPb3V0QW1vdW50QW1vdW50BQ5vdXRQcmljZUFtb3VudAUNcGF5bWVudEFtb3VudAUOcGF5bWVudEFzc2V0SWQFBXN0YXRlCQACAQIkU3RyaWN0IHZhbHVlIGlzIG5vdCBlcXVhbCB0byBpdHNlbGYuAQljb21tb25QdXQJBmNhbGxlcgR0eElkEmFtb3VudEFzc2V0UGF5bWVudBFwcmljZUFzc2V0UGF5bWVudAhzbGlwcGFnZQZlbWl0THAKaXNPbmVBc3NldA1wYXltZW50QW1vdW50CXBheW1lbnRJZAQBcgkBFGVzdGltYXRlUHV0T3BlcmF0aW9uDAUEdHhJZAUIc2xpcHBhZ2UICQEFdmFsdWUBBRJhbW91bnRBc3NldFBheW1lbnQGYW1vdW50CAkBBXZhbHVlAQUSYW1vdW50QXNzZXRQYXltZW50B2Fzc2V0SWQICQEFdmFsdWUBBRFwcmljZUFzc2V0UGF5bWVudAZhbW91bnQICQEFdmFsdWUBBRFwcmljZUFzc2V0UGF5bWVudAdhc3NldElkBQZjYWxsZXIHBQZlbWl0THAFCmlzT25lQXNzZXQFDXBheW1lbnRBbW91bnQFCXBheW1lbnRJZAQDc3RzCQENcGFyc2VJbnRWYWx1ZQEIBQFyAl84AwMDCQEQaXNHbG9iYWxTaHV0ZG93bgAGCQAAAgUDc3RzBQpQb29sUHV0RGlzBgkAAAIFA3N0cwUMUG9vbFNodXRkb3duCQEIdGhyb3dFcnIBCQCsAgICCEJsb2NrZWQ6CQCkAwEFA3N0cwUBcgEHdGFrZUZlZQEGYW1vdW50BANmZWUJAGsDBQZhbW91bnQFC2ZlZVBlcm1pbGxlBQh0aG91c2FuZAkAlAoCCQBlAgUGYW1vdW50BQNmZWUFA2ZlZQEWbWFuYWdlclB1YmxpY0tleU9yVW5pdAAEByRtYXRjaDAJAKIIAQkBE2tleU1hbmFnZXJQdWJsaWNLZXkAAwkAAQIFByRtYXRjaDACBlN0cmluZwQBcwUHJG1hdGNoMAkA2QQBBQFzAwkAAQIFByRtYXRjaDACBFVuaXQFBHVuaXQJAAIBAgtNYXRjaCBlcnJvcgEdcGVuZGluZ01hbmFnZXJQdWJsaWNLZXlPclVuaXQABAckbWF0Y2gwCQCiCAEJARprZXlQZW5kaW5nTWFuYWdlclB1YmxpY0tleQADCQABAgUHJG1hdGNoMAIGU3RyaW5nBAFzBQckbWF0Y2gwCQDZBAEFAXMDCQABAgUHJG1hdGNoMAIEVW5pdAUEdW5pdAkAAgECC01hdGNoIGVycm9yAAJwZAkBCHRocm93RXJyAQIRUGVybWlzc2lvbiBkZW5pZWQBC211c3RNYW5hZ2VyAQFpBAckbWF0Y2gwCQEWbWFuYWdlclB1YmxpY0tleU9yVW5pdAADCQABAgUHJG1hdGNoMAIKQnl0ZVZlY3RvcgQCcGsFByRtYXRjaDADCQAAAggFAWkPY2FsbGVyUHVibGljS2V5BQJwawYFAnBkAwkAAQIFByRtYXRjaDACBFVuaXQDCQAAAggFAWkGY2FsbGVyBQR0aGlzBgUCcGQJAAIBAgtNYXRjaCBlcnJvchUBaQELY29uc3RydWN0b3IBD2ZhY3RvcnlDb250cmFjdAQLY2hlY2tDYWxsZXIJAQttdXN0TWFuYWdlcgEFAWkDCQAAAgULY2hlY2tDYWxsZXIFC2NoZWNrQ2FsbGVyCQDMCAIJAQtTdHJpbmdFbnRyeQIJARFrZXlGYWN0b3J5Q29udGFjdAAFD2ZhY3RvcnlDb250cmFjdAUDbmlsCQACAQIkU3RyaWN0IHZhbHVlIGlzIG5vdCBlcXVhbCB0byBpdHNlbGYuAWkBCnNldE1hbmFnZXIBF3BlbmRpbmdNYW5hZ2VyUHVibGljS2V5BAtjaGVja0NhbGxlcgkBC211c3RNYW5hZ2VyAQUBaQMJAAACBQtjaGVja0NhbGxlcgULY2hlY2tDYWxsZXIEFWNoZWNrTWFuYWdlclB1YmxpY0tleQkA2QQBBRdwZW5kaW5nTWFuYWdlclB1YmxpY0tleQMJAAACBRVjaGVja01hbmFnZXJQdWJsaWNLZXkFFWNoZWNrTWFuYWdlclB1YmxpY0tleQkAzAgCCQELU3RyaW5nRW50cnkCCQEaa2V5UGVuZGluZ01hbmFnZXJQdWJsaWNLZXkABRdwZW5kaW5nTWFuYWdlclB1YmxpY0tleQUDbmlsCQACAQIkU3RyaWN0IHZhbHVlIGlzIG5vdCBlcXVhbCB0byBpdHNlbGYuCQACAQIkU3RyaWN0IHZhbHVlIGlzIG5vdCBlcXVhbCB0byBpdHNlbGYuAWkBDmNvbmZpcm1NYW5hZ2VyAAQCcG0JAR1wZW5kaW5nTWFuYWdlclB1YmxpY0tleU9yVW5pdAAEBWhhc1BNAwkBCWlzRGVmaW5lZAEFAnBtBgkBCHRocm93RXJyAQISTm8gcGVuZGluZyBtYW5hZ2VyAwkAAAIFBWhhc1BNBQVoYXNQTQQHY2hlY2tQTQMJAAACCAUBaQ9jYWxsZXJQdWJsaWNLZXkJAQV2YWx1ZQEFAnBtBgkBCHRocm93RXJyAQIbWW91IGFyZSBub3QgcGVuZGluZyBtYW5hZ2VyAwkAAAIFB2NoZWNrUE0FB2NoZWNrUE0JAMwIAgkBC1N0cmluZ0VudHJ5AgkBE2tleU1hbmFnZXJQdWJsaWNLZXkACQDYBAEJAQV2YWx1ZQEFAnBtCQDMCAIJAQtEZWxldGVFbnRyeQEJARprZXlQZW5kaW5nTWFuYWdlclB1YmxpY0tleQAFA25pbAkAAgECJFN0cmljdCB2YWx1ZSBpcyBub3QgZXF1YWwgdG8gaXRzZWxmLgkAAgECJFN0cmljdCB2YWx1ZSBpcyBub3QgZXF1YWwgdG8gaXRzZWxmLgFpAQNwdXQCCHNsaXBwYWdlCWF1dG9TdGFrZQQHZmFjdENmZwkBEGdldEZhY3RvcnlDb25maWcABA9zdGFraW5nQ29udHJhY3QJARN2YWx1ZU9yRXJyb3JNZXNzYWdlAgkApggBCQCRAwIFB2ZhY3RDZmcFD2lkeEZhY3RTdGFrQ250cgIWV3Jvbmcgc3Rha2luZyBjb250cmFjdAQQc2xpcHBhZ2VDb250cmFjdAkBE3ZhbHVlT3JFcnJvck1lc3NhZ2UCCQCmCAEJAJEDAgUHZmFjdENmZwUQaWR4RmFjdFNsaXBwQ250cgIXV3JvZ24gc2xpcHBhZ2UgY29udHJhY3QEDXNsaXBwYWdlQ2hlY2sDCQBnAgUIc2xpcHBhZ2UAAAYJAQh0aHJvd0VycgECDndyb25nIHNsaXBwYWdlAwkAAAIFDXNsaXBwYWdlQ2hlY2sFDXNsaXBwYWdlQ2hlY2sEDXBheW1lbnRzQ2hlY2sDCQAAAgkAkAMBCAUBaQhwYXltZW50cwACBgkBCHRocm93RXJyAQITMiBwYXltZW50cyBleHBlY3RlZAMJAAACBQ1wYXltZW50c0NoZWNrBQ1wYXltZW50c0NoZWNrBAtlc3RpbWF0ZVB1dAkBCWNvbW1vblB1dAkJAKUIAQgFAWkGY2FsbGVyCQDYBAEIBQFpDXRyYW5zYWN0aW9uSWQJAQ9BdHRhY2hlZFBheW1lbnQCCAkBBXZhbHVlAQkAkQMCCAUBaQhwYXltZW50cwAAB2Fzc2V0SWQICQEFdmFsdWUBCQCRAwIIBQFpCHBheW1lbnRzAAAGYW1vdW50CQCRAwIIBQFpCHBheW1lbnRzAAEFCHNsaXBwYWdlBgcAAAIABAxlbWl0THBBbW91bnQIBQtlc3RpbWF0ZVB1dAJfMgQJbHBBc3NldElkCAULZXN0aW1hdGVQdXQCXzcEBXN0YXRlCAULZXN0aW1hdGVQdXQCXzkECmFtb3VudERpZmYIBQtlc3RpbWF0ZVB1dANfMTAECXByaWNlRGlmZggFC2VzdGltYXRlUHV0A18xMQQIYW1vdW50SWQIBQtlc3RpbWF0ZVB1dANfMTIEB3ByaWNlSWQIBQtlc3RpbWF0ZVB1dANfMTMEAXIJAPwHBAUPZmFjdG9yeUNvbnRyYWN0AgRlbWl0CQDMCAIFDGVtaXRMcEFtb3VudAUDbmlsBQNuaWwDCQAAAgUBcgUBcgQCZWwEByRtYXRjaDAFAXIDCQABAgUHJG1hdGNoMAIHQWRkcmVzcwQGbGVnYWN5BQckbWF0Y2gwCQD8BwQFBmxlZ2FjeQIEZW1pdAkAzAgCBQxlbWl0THBBbW91bnQFA25pbAUDbmlsBQR1bml0AwkAAAIFAmVsBQJlbAQCc2EDCQBmAgUKYW1vdW50RGlmZgAACQD8BwQFEHNsaXBwYWdlQ29udHJhY3QCA3B1dAUDbmlsCQDMCAIJAQ9BdHRhY2hlZFBheW1lbnQCBQhhbW91bnRJZAUKYW1vdW50RGlmZgUDbmlsBQNuaWwDCQAAAgUCc2EFAnNhBAJzcAMJAGYCBQlwcmljZURpZmYAAAkA/AcEBRBzbGlwcGFnZUNvbnRyYWN0AgNwdXQFA25pbAkAzAgCCQEPQXR0YWNoZWRQYXltZW50AgUHcHJpY2VJZAUJcHJpY2VEaWZmBQNuaWwFA25pbAMJAAACBQJzcAUCc3AECWxwVHJhc2ZlcgMFCWF1dG9TdGFrZQQCc3MJAPwHBAUPc3Rha2luZ0NvbnRyYWN0AgVzdGFrZQUDbmlsCQDMCAIJAQ9BdHRhY2hlZFBheW1lbnQCBQlscEFzc2V0SWQFDGVtaXRMcEFtb3VudAUDbmlsAwkAAAIFAnNzBQJzcwUDbmlsCQACAQIkU3RyaWN0IHZhbHVlIGlzIG5vdCBlcXVhbCB0byBpdHNlbGYuCQDMCAIJAQ5TY3JpcHRUcmFuc2ZlcgMIBQFpBmNhbGxlcgUMZW1pdExwQW1vdW50BQlscEFzc2V0SWQFA25pbAkAzggCBQVzdGF0ZQUJbHBUcmFzZmVyCQACAQIkU3RyaWN0IHZhbHVlIGlzIG5vdCBlcXVhbCB0byBpdHNlbGYuCQACAQIkU3RyaWN0IHZhbHVlIGlzIG5vdCBlcXVhbCB0byBpdHNlbGYuCQACAQIkU3RyaWN0IHZhbHVlIGlzIG5vdCBlcXVhbCB0byBpdHNlbGYuCQACAQIkU3RyaWN0IHZhbHVlIGlzIG5vdCBlcXVhbCB0byBpdHNlbGYuCQACAQIkU3RyaWN0IHZhbHVlIGlzIG5vdCBlcXVhbCB0byBpdHNlbGYuCQACAQIkU3RyaWN0IHZhbHVlIGlzIG5vdCBlcXVhbCB0byBpdHNlbGYuAWkBCXB1dE9uZVRrbgUPYW1vdW50QXNzZXRQYXJ0DnByaWNlQXNzZXRQYXJ0BW91dExwCHNsaXBwYWdlCWF1dG9TdGFrZQQDY2ZnCQEQZ2V0RmFjdG9yeUNvbmZpZwAED3N0YWtpbmdDb250cmFjdAkBE3ZhbHVlT3JFcnJvck1lc3NhZ2UCCQCmCAEJAJEDAgUDY2ZnBQ9pZHhGYWN0U3Rha0NudHICFldyb25nIHN0YWtpbmcgY29udHJhY3QEEHNsaXBwYWdlQ29udHJhY3QJARN2YWx1ZU9yRXJyb3JNZXNzYWdlAgkApggBCQCRAwIFA2NmZwUQaWR4RmFjdFNsaXBwQ250cgIXV3Jvbmcgc2xpcHBhZ2UgY29udHJhY3QEEWd3eFJld2FyZENvbnRyYWN0CQETdmFsdWVPckVycm9yTWVzc2FnZQIJAKYIAQkAkQMCBQNjZmcFEWlkeEZhY3RHd3hSZXdDbnRyAhlXcm9uZyBnd3ggcmV3YXJkIGNvbnRyYWN0BAdwb29sQ2ZnCQENZ2V0UG9vbENvbmZpZwAECGFtb3VudElkCQCRAwIFB3Bvb2xDZmcFCWlkeEFtQXNJZAQHcHJpY2VJZAkAkQMCBQdwb29sQ2ZnBQlpZHhQckFzSWQEDmFtb3VudERlY2ltYWxzCQENcGFyc2VJbnRWYWx1ZQEJAJEDAgUHcG9vbENmZwULaWR4QW10QXNEY20EDXByaWNlRGVjaW1hbHMJAQ1wYXJzZUludFZhbHVlAQkAkQMCBQdwb29sQ2ZnBQ1pZHhQcmljZUFzRGNtBAVhZGRvbgkBC3ZhbHVlT3JFbHNlAgkAnQgCBQR0aGlzCQEPa2V5QWRkb25BZGRyZXNzAAIABAt1c2VyQWRkcmVzcwMJAAACBQVhZGRvbgkApQgBCAUBaQZjYWxsZXIIBQFpDG9yaWdpbkNhbGxlcggFAWkGY2FsbGVyAwMDAwkAZwIAAAUIc2xpcHBhZ2UGCQBnAgAABQ9hbW91bnRBc3NldFBhcnQGCQBnAgAABQ5wcmljZUFzc2V0UGFydAYJAGcCAAAFBW91dExwCQEIdGhyb3dFcnIBAgxXcm9uZyBwYXJhbXMDCQECIT0CCQCQAwEIBQFpCHBheW1lbnRzAAEJAQh0aHJvd0VycgECEjEgcGF5bWVudCBleHBlY3RlZAQHcGF5bWVudAkBBXZhbHVlAQkAkQMCCAUBaQhwYXltZW50cwAABA5wYXltZW50QXNzZXRJZAkA2AQBCQEFdmFsdWUBCAUHcGF5bWVudAdhc3NldElkBBBwYXltZW50QW1vdW50UmF3CAUHcGF5bWVudAZhbW91bnQEDSR0MDI2NTY5MjY2MjgJAQd0YWtlRmVlAQUQcGF5bWVudEFtb3VudFJhdwQNcGF5bWVudEFtb3VudAgFDSR0MDI2NTY5MjY2MjgCXzEECWZlZUFtb3VudAgFDSR0MDI2NTY5MjY2MjgCXzIDAwMJAGYCBQ9hbW91bnRBc3NldFBhcnQFDXBheW1lbnRBbW91bnQGCQBmAgUOcHJpY2VBc3NldFBhcnQFDXBheW1lbnRBbW91bnQGCQBmAgCAreIEBQ1wYXltZW50QW1vdW50CQEIdGhyb3dFcnIBAhR3cm9uZyBwYXltZW50IGFtb3VudAQNYW1vdW50QmFsYW5jZQkBDWdldEFjY0JhbGFuY2UBBQhhbW91bnRJZAQMcHJpY2VCYWxhbmNlCQENZ2V0QWNjQmFsYW5jZQEFB3ByaWNlSWQEDSR0MDI2ODkzMjczNDgDCQAAAgUOcGF5bWVudEFzc2V0SWQFCGFtb3VudElkCQCYCgYJAGUCBQ1hbW91bnRCYWxhbmNlBQ1wYXltZW50QW1vdW50BQxwcmljZUJhbGFuY2UJAGUCBQ1wYXltZW50QW1vdW50BQ9hbW91bnRBc3NldFBhcnQFDnByaWNlQXNzZXRQYXJ0AAAAAAMJAAACBQ5wYXltZW50QXNzZXRJZAUHcHJpY2VJZAkAmAoGBQ1hbW91bnRCYWxhbmNlCQBlAgUMcHJpY2VCYWxhbmNlBQ1wYXltZW50QW1vdW50AAAAAAkAZQIFDXBheW1lbnRBbW91bnQFDnByaWNlQXNzZXRQYXJ0BQ9hbW91bnRBc3NldFBhcnQJAQh0aHJvd0VycgECFHdyb25nIHBheW1lbnRBc3NldElkBBBhbW91bnRCYWxhbmNlTm93CAUNJHQwMjY4OTMyNzM0OAJfMQQPcHJpY2VCYWxhbmNlTm93CAUNJHQwMjY4OTMyNzM0OAJfMgQMdmlydFN3YXBJbkFtCAUNJHQwMjY4OTMyNzM0OAJfMwQNdmlydFN3YXBPdXRQcggFDSR0MDI2ODkzMjczNDgCXzQEDHZpcnRTd2FwSW5QcggFDSR0MDI2ODkzMjczNDgCXzUEDXZpcnRTd2FwT3V0QW0IBQ0kdDAyNjg5MzI3MzQ4Al82BAJEMAkA/AcEBRFnd3hSZXdhcmRDb250cmFjdAIFY2FsY0QJAMwIAgkApAMBBRBhbW91bnRCYWxhbmNlTm93CQDMCAIJAKQDAQUPcHJpY2VCYWxhbmNlTm93CQDMCAIFDGFtcGxpZmljYXRvcgkAzAgCBQVBbXVsdAkAzAgCBQVEY29udgUDbmlsBQNuaWwEAkQxCQD8BwQFEWd3eFJld2FyZENvbnRyYWN0AgVjYWxjRAkAzAgCCQCmAwEJALYCAQkAZQIJAGQCBRBhbW91bnRCYWxhbmNlTm93BQx2aXJ0U3dhcEluQW0FDXZpcnRTd2FwT3V0QW0JAMwIAgkApgMBCQC2AgEJAGUCCQBkAgUPcHJpY2VCYWxhbmNlTm93BQx2aXJ0U3dhcEluUHIFDXZpcnRTd2FwT3V0UHIJAMwIAgUMYW1wbGlmaWNhdG9yCQDMCAIFBUFtdWx0CQDMCAIFBURjb252BQNuaWwFA25pbAQGRDB2c0QxCQEJdmFsaWRhdGVEAwkApwMBCQEDc3RyAQUCRDEJAKcDAQkBA3N0cgEFAkQwBQpzbGlwcGFnZTREAwkAAAIFBkQwdnNEMQUGRDB2c0QxBAtlc3RpbWF0ZVB1dAkBCWNvbW1vblB1dAkJAKUIAQgFAWkGY2FsbGVyCQDYBAEIBQFpDXRyYW5zYWN0aW9uSWQJAQ9BdHRhY2hlZFBheW1lbnQCCQDZBAEFCGFtb3VudElkBQ9hbW91bnRBc3NldFBhcnQJAQ9BdHRhY2hlZFBheW1lbnQCCQDZBAEFB3ByaWNlSWQFDnByaWNlQXNzZXRQYXJ0BQhzbGlwcGFnZQYGBQ1wYXltZW50QW1vdW50BQ5wYXltZW50QXNzZXRJZAQKZXN0aW1hdGVMUAgFC2VzdGltYXRlUHV0Al8yBAlscEFzc2V0SWQIBQtlc3RpbWF0ZVB1dAJfNwQFc3RhdGUIBQtlc3RpbWF0ZVB1dAJfOQQKYW1vdW50RGlmZggFC2VzdGltYXRlUHV0A18xMAQJcHJpY2VEaWZmCAULZXN0aW1hdGVQdXQDXzExBAlscENhbGNSZXMJAQ92YWxpZGF0ZUFic0RpZmYDCQC2AgEFCmVzdGltYXRlTFAJALYCAQUFb3V0THAJALYCAQUIc2xpcHBhZ2UEDGVtaXRMcEFtb3VudAkAoAMBCAUJbHBDYWxjUmVzAl8yBAFlCQD8BwQFD2ZhY3RvcnlDb250cmFjdAIEZW1pdAkAzAgCBQxlbWl0THBBbW91bnQFA25pbAUDbmlsAwkAAAIFAWUFAWUEAmVsBAckbWF0Y2gwBQFlAwkAAQIFByRtYXRjaDACB0FkZHJlc3MEBmxlZ2FjeQUHJG1hdGNoMAkA/AcEBQZsZWdhY3kCBGVtaXQJAMwIAgUMZW1pdExwQW1vdW50BQNuaWwFA25pbAUEdW5pdAMJAAACBQJlbAUCZWwEAnNhAwkAZgIFCmFtb3VudERpZmYAAAkA/AcEBRBzbGlwcGFnZUNvbnRyYWN0AgNwdXQFA25pbAkAzAgCCQEPQXR0YWNoZWRQYXltZW50AgkA2QQBBQhhbW91bnRJZAUKYW1vdW50RGlmZgUDbmlsBQNuaWwDCQAAAgUCc2EFAnNhBAJzcAMJAGYCBQlwcmljZURpZmYAAAkA/AcEBRBzbGlwcGFnZUNvbnRyYWN0AgNwdXQFA25pbAkAzAgCCQEPQXR0YWNoZWRQYXltZW50AgkA2QQBBQdwcmljZUlkBQlwcmljZURpZmYFA25pbAUDbmlsAwkAAAIFAnNwBQJzcAQJbHBUcmFzZmVyAwUJYXV0b1N0YWtlBAJzcwkA/AcEBQ9zdGFraW5nQ29udHJhY3QCBXN0YWtlBQNuaWwJAMwIAgkBD0F0dGFjaGVkUGF5bWVudAIFCWxwQXNzZXRJZAUMZW1pdExwQW1vdW50BQNuaWwDCQAAAgUCc3MFAnNzBQNuaWwJAAIBAiRTdHJpY3QgdmFsdWUgaXMgbm90IGVxdWFsIHRvIGl0c2VsZi4JAMwIAgkBDlNjcmlwdFRyYW5zZmVyAwgFAWkGY2FsbGVyBQxlbWl0THBBbW91bnQFCWxwQXNzZXRJZAUDbmlsBBBzZW5kRmVlVG9NYXRjaGVyAwkAZgIFCWZlZUFtb3VudAAACQDMCAIJAQ5TY3JpcHRUcmFuc2ZlcgMFDm1hdGNoZXJBZGRyZXNzBQlmZWVBbW91bnQJANkEAQUOcGF5bWVudEFzc2V0SWQFA25pbAUDbmlsCQDOCAIJAM4IAgUFc3RhdGUFCWxwVHJhc2ZlcgUQc2VuZEZlZVRvTWF0Y2hlcgkAAgECJFN0cmljdCB2YWx1ZSBpcyBub3QgZXF1YWwgdG8gaXRzZWxmLgkAAgECJFN0cmljdCB2YWx1ZSBpcyBub3QgZXF1YWwgdG8gaXRzZWxmLgkAAgECJFN0cmljdCB2YWx1ZSBpcyBub3QgZXF1YWwgdG8gaXRzZWxmLgkAAgECJFN0cmljdCB2YWx1ZSBpcyBub3QgZXF1YWwgdG8gaXRzZWxmLgkAAgECJFN0cmljdCB2YWx1ZSBpcyBub3QgZXF1YWwgdG8gaXRzZWxmLgFpAQpwdXRGb3JGcmVlAQttYXhzbGlwcGFnZQMJAGYCAAAFC21heHNsaXBwYWdlCQEIdGhyb3dFcnIBAg53cm9uZyBzbGlwcGFnZQMJAQIhPQIJAJADAQgFAWkIcGF5bWVudHMAAgkBCHRocm93RXJyAQITMiBwYXltZW50cyBleHBlY3RlZAQLZXN0aW1hdGVQdXQJAQljb21tb25QdXQJCQClCAEIBQFpBmNhbGxlcgkA2AQBCAUBaQ10cmFuc2FjdGlvbklkCQEPQXR0YWNoZWRQYXltZW50AggJAQV2YWx1ZQEJAJEDAggFAWkIcGF5bWVudHMAAAdhc3NldElkCAkBBXZhbHVlAQkAkQMCCAUBaQhwYXltZW50cwAABmFtb3VudAkAkQMCCAUBaQhwYXltZW50cwABBQttYXhzbGlwcGFnZQcHAAACAAgFC2VzdGltYXRlUHV0Al85AWkBA2dldAAEAXIJAQljb21tb25HZXQBBQFpBAlvdXRBbXRBbXQIBQFyAl8xBA5vdXRQcmljZUFtb3VudAgFAXICXzIEDXBheW1lbnRBbW91bnQIBQFyAl8zBA5wYXltZW50QXNzZXRJZAgFAXICXzQEBXN0YXRlCAUBcgJfNQQBYgkA/AcEBQ9mYWN0b3J5Q29udHJhY3QCBGJ1cm4JAMwIAgUNcGF5bWVudEFtb3VudAUDbmlsCQDMCAIJAQ9BdHRhY2hlZFBheW1lbnQCBQ5wYXltZW50QXNzZXRJZAUNcGF5bWVudEFtb3VudAUDbmlsAwkAAAIFAWIFAWIFBXN0YXRlCQACAQIkU3RyaWN0IHZhbHVlIGlzIG5vdCBlcXVhbCB0byBpdHNlbGYuAWkBCWdldE9uZVRrbgUKZXhjaFJlc3VsdAdub3RVc2VkCW91dEFtb3VudApvdXRBc3NldElkCHNsaXBwYWdlAwkBAiE9AgkAkAMBCAUBaQhwYXltZW50cwABCQEIdGhyb3dFcnIBAhIxIHBheW1lbnQgZXhwZWN0ZWQEA2NmZwkBDWdldFBvb2xDb25maWcABAlscEFzc2V0SWQJAJEDAgUDY2ZnBQlpZHhMUEFzSWQECGFtb3VudElkCQCRAwIFA2NmZwUJaWR4QW1Bc0lkBAdwcmljZUlkCQCRAwIFA2NmZwUJaWR4UHJBc0lkBA5hbW91bnREZWNpbWFscwkBDXBhcnNlSW50VmFsdWUBCQCRAwIFA2NmZwULaWR4QW10QXNEY20EDXByaWNlRGVjaW1hbHMJAQ1wYXJzZUludFZhbHVlAQkAkQMCBQNjZmcFDWlkeFByaWNlQXNEY20EA3N0cwkAkQMCBQNjZmcFCWlkeFBvb2xTdAQHZmFjdENmZwkBEGdldEZhY3RvcnlDb25maWcABBFnd3hSZXdhcmRDb250cmFjdAkBE3ZhbHVlT3JFcnJvck1lc3NhZ2UCCQCmCAEJAJEDAgUHZmFjdENmZwURaWR4RmFjdEd3eFJld0NudHICH1dyb25nIGd3eFJld2FyZENvbnRyYWN0IGFkZHJlc3MEB3BheW1lbnQJAQV2YWx1ZQEJAJEDAggFAWkIcGF5bWVudHMAAAQFYWRkb24JAQt2YWx1ZU9yRWxzZQIJAJ0IAgUEdGhpcwkBD2tleUFkZG9uQWRkcmVzcwACAAQLdXNlckFkZHJlc3MDCQAAAgUFYWRkb24JAKUIAQgFAWkGY2FsbGVyCAUBaQxvcmlnaW5DYWxsZXIIBQFpBmNhbGxlcgQGdHhJZDU4CQDYBAEIBQFpDXRyYW5zYWN0aW9uSWQEDnBheW1lbnRBc3NldElkCQEFdmFsdWUBCAUHcGF5bWVudAdhc3NldElkBA1wYXltZW50QW1vdW50CAUHcGF5bWVudAZhbW91bnQDCQBmAgCAlOvcAwUNcGF5bWVudEFtb3VudAkBCHRocm93RXJyAQIRTWluIHBheW1lbnQgMTAgTFADAwMJAGYCAAAFCHNsaXBwYWdlBgkAZgIAAAUKZXhjaFJlc3VsdAYJAGYCAAAFCW91dEFtb3VudAkBCHRocm93RXJyAQIMV3JvbmcgcGFyYW1zAwkBAiE9AgUJbHBBc3NldElkCQDYBAEFDnBheW1lbnRBc3NldElkCQEIdGhyb3dFcnIBAghXcm9uZyBMUAQBcgkBFGVzdGltYXRlR2V0T3BlcmF0aW9uBAkA2AQBCAUBaQ10cmFuc2FjdGlvbklkCQDYBAEFDnBheW1lbnRBc3NldElkBQ1wYXltZW50QW1vdW50CAUBaQZjYWxsZXIECmVzdGltQW1BbXQIBQFyAl8xBAplc3RpbVByQW10CAUBcgJfMgQNYW1vdW50QmFsYW5jZQkBDWdldEFjY0JhbGFuY2UBBQhhbW91bnRJZAQMcHJpY2VCYWxhbmNlCQENZ2V0QWNjQmFsYW5jZQEFB3ByaWNlSWQEDSR0MDMyNDk2MzI5NjQDCQAAAgUKb3V0QXNzZXRJZAUIYW1vdW50SWQJAJkKBwkAZQIFDWFtb3VudEJhbGFuY2UFCmVzdGltQW1BbXQJAGUCBQxwcmljZUJhbGFuY2UFCmVzdGltUHJBbXQFCmV4Y2hSZXN1bHQFCmVzdGltUHJBbXQAAAAACQBkAgUKZXN0aW1BbUFtdAUKZXhjaFJlc3VsdAMJAAACBQpvdXRBc3NldElkBQdwcmljZUlkCQCZCgcJAGUCBQ1hbW91bnRCYWxhbmNlBQplc3RpbUFtQW10CQBlAgUMcHJpY2VCYWxhbmNlBQplc3RpbVByQW10AAAAAAUKZXhjaFJlc3VsdAUKZXN0aW1BbUFtdAkAZAIFCmVzdGltUHJBbXQFCmV4Y2hSZXN1bHQJAQh0aHJvd0VycgECEHdyb25nIG91dEFzc2V0SWQEEGFtb3VudEJhbGFuY2VOb3cIBQ0kdDAzMjQ5NjMyOTY0Al8xBA9wcmljZUJhbGFuY2VOb3cIBQ0kdDAzMjQ5NjMyOTY0Al8yBAx2aXJ0U3dhcEluQW0IBQ0kdDAzMjQ5NjMyOTY0Al8zBA12aXJ0U3dhcE91dFByCAUNJHQwMzI0OTYzMjk2NAJfNAQMdmlydFN3YXBJblByCAUNJHQwMzI0OTYzMjk2NAJfNQQNdmlydFN3YXBPdXRBbQgFDSR0MDMyNDk2MzI5NjQCXzYECHRvdGFsR2V0CAUNJHQwMzI0OTYzMjk2NAJfNwMDCQBmAgAABQx2aXJ0U3dhcEluQW0GCQBmAgAABQx2aXJ0U3dhcEluUHIJAQh0aHJvd0VycgECCldyb25nIGNhbGMEAkQwCQD8BwQFEWd3eFJld2FyZENvbnRyYWN0AgVjYWxjRAkAzAgCCQCkAwEFEGFtb3VudEJhbGFuY2VOb3cJAMwIAgkApAMBBQ9wcmljZUJhbGFuY2VOb3cJAMwIAgUMYW1wbGlmaWNhdG9yCQDMCAIFBUFtdWx0CQDMCAIFBURjb252BQNuaWwFA25pbAQCRDEJAPwHBAURZ3d4UmV3YXJkQ29udHJhY3QCBWNhbGNECQDMCAIJAKQDAQkAZAIJAGUCBRBhbW91bnRCYWxhbmNlTm93BQx2aXJ0U3dhcEluQW0FDXZpcnRTd2FwT3V0QW0JAMwIAgkApAMBCQBlAgkAZAIFD3ByaWNlQmFsYW5jZU5vdwUNdmlydFN3YXBPdXRQcgUMdmlydFN3YXBJblByCQDMCAIFDGFtcGxpZmljYXRvcgkAzAgCBQVBbXVsdAkAzAgCBQVEY29udgUDbmlsBQNuaWwEBkQwdnNEMQkBCXZhbGlkYXRlRAMJAKcDAQkBA3N0cgEFAkQxCQCnAwEJAQNzdHIBBQJEMAUKc2xpcHBhZ2U0RAMJAAACBQZEMHZzRDEFBkQwdnNEMQQIZmluYWxSZXMJAQ92YWxpZGF0ZUFic0RpZmYDCQC2AgEFCHRvdGFsR2V0CQC2AgEFCW91dEFtb3VudAkAtgIBBQhzbGlwcGFnZQMJAAACBQhmaW5hbFJlcwUIZmluYWxSZXMEDSR0MDMzNjMzMzM3NDEDCQAAAgUKb3V0QXNzZXRJZAUIYW1vdW50SWQJAJQKAgkAoAMBCAUIZmluYWxSZXMCXzIAAAkAlAoCAAAJAKADAQgFCGZpbmFsUmVzAl8yBAVvdXRBbQgFDSR0MDMzNjMzMzM3NDECXzEEBW91dFByCAUNJHQwMzM2MzMzMzc0MQJfMgQOdG90YWxBbW91bnRSYXcJAGQCBQVvdXRBbQUFb3V0UHIEDSR0MDMzNzgxMzM4MzYJAQd0YWtlRmVlAQUOdG90YWxBbW91bnRSYXcEC3RvdGFsQW1vdW50CAUNJHQwMzM3ODEzMzgzNgJfMQQJZmVlQW1vdW50CAUNJHQwMzM3ODEzMzgzNgJfMgQRb3V0QXNzZXRJZE9yV2F2ZXMDCQAAAgUKb3V0QXNzZXRJZAIFV0FWRVMFBHVuaXQJANkEAQUKb3V0QXNzZXRJZAQQc2VuZEZlZVRvTWF0Y2hlcgMJAGYCBQlmZWVBbW91bnQAAAkAzAgCCQEOU2NyaXB0VHJhbnNmZXIDBQ5tYXRjaGVyQWRkcmVzcwUJZmVlQW1vdW50BRFvdXRBc3NldElkT3JXYXZlcwUDbmlsBQNuaWwECGRlY2ltYWxzAwkAZwIFDmFtb3VudERlY2ltYWxzBQ1wcmljZURlY2ltYWxzBQ5hbW91bnREZWNpbWFscwUNcHJpY2VEZWNpbWFscwMJAAACBQhkZWNpbWFscwUIZGVjaW1hbHMECGN1clByWDE4CQEPY2FsY1ByaWNlQmlnSW50AgkBBXRvWDE4AgUMcHJpY2VCYWxhbmNlBQhkZWNpbWFscwkBBXRvWDE4AgUNYW1vdW50QmFsYW5jZQUIZGVjaW1hbHMEBWN1clByCQEHZnJvbVgxOAIFCGN1clByWDE4BQZzY2FsZTgEBXN0YXRlCQDMCAIJAQ5TY3JpcHRUcmFuc2ZlcgMFC3VzZXJBZGRyZXNzBQt0b3RhbEFtb3VudAURb3V0QXNzZXRJZE9yV2F2ZXMJAMwIAgkBC1N0cmluZ0VudHJ5AgkBEmtleUdldEFjdGlvbkJ5VXNlcgIJAKUIAQULdXNlckFkZHJlc3MFBnR4SWQ1OAkBEWRhdGFHZXRBY3Rpb25JbmZvBgUFb3V0QW0FBW91dFByBQ1wYXltZW50QW1vdW50BQVjdXJQcgUGaGVpZ2h0CAUJbGFzdEJsb2NrCXRpbWVzdGFtcAkAzAgCCQEMSW50ZWdlckVudHJ5AgkBDGtleVByaWNlTGFzdAAFBWN1clByCQDMCAIJAQxJbnRlZ2VyRW50cnkCCQEPa2V5UHJpY2VIaXN0b3J5AgUGaGVpZ2h0CAUJbGFzdEJsb2NrCXRpbWVzdGFtcAUFY3VyUHIFA25pbAMJAAACBQVzdGF0ZQUFc3RhdGUEBGJ1cm4JAPwHBAUPZmFjdG9yeUNvbnRyYWN0AgRidXJuCQDMCAIFDXBheW1lbnRBbW91bnQFA25pbAkAzAgCCQEPQXR0YWNoZWRQYXltZW50AgUOcGF5bWVudEFzc2V0SWQFDXBheW1lbnRBbW91bnQFA25pbAMJAAACBQRidXJuBQRidXJuCQDOCAIFBXN0YXRlBRBzZW5kRmVlVG9NYXRjaGVyCQACAQIkU3RyaWN0IHZhbHVlIGlzIG5vdCBlcXVhbCB0byBpdHNlbGYuCQACAQIkU3RyaWN0IHZhbHVlIGlzIG5vdCBlcXVhbCB0byBpdHNlbGYuCQACAQIkU3RyaWN0IHZhbHVlIGlzIG5vdCBlcXVhbCB0byBpdHNlbGYuCQACAQIkU3RyaWN0IHZhbHVlIGlzIG5vdCBlcXVhbCB0byBpdHNlbGYuCQACAQIkU3RyaWN0IHZhbHVlIGlzIG5vdCBlcXVhbCB0byBpdHNlbGYuAWkBCWdldE5vTGVzcwISbm9MZXNzVGhlbkFtdEFzc2V0FG5vTGVzc1RoZW5QcmljZUFzc2V0BAFyCQEJY29tbW9uR2V0AQUBaQQPb3V0QW1vdW50QW1vdW50CAUBcgJfMQQOb3V0UHJpY2VBbW91bnQIBQFyAl8yBA1wYXltZW50QW1vdW50CAUBcgJfMwQOcGF5bWVudEFzc2V0SWQIBQFyAl80BAVzdGF0ZQgFAXICXzUEFGNoZWNrT3V0QW1vdW50QW1vdW50AwkAZwIFD291dEFtb3VudEFtb3VudAUSbm9MZXNzVGhlbkFtdEFzc2V0BgkBCHRocm93RXJyAQkArAICCQCsAgIJAKwCAgIJRmFpbGVkOiAgCQCkAwEFD291dEFtb3VudEFtb3VudAIDIDwgCQCkAwEFEm5vTGVzc1RoZW5BbXRBc3NldAMJAAACBRRjaGVja091dEFtb3VudEFtb3VudAUUY2hlY2tPdXRBbW91bnRBbW91bnQEE2NoZWNrT3V0UHJpY2VBbW91bnQDCQBnAgUOb3V0UHJpY2VBbW91bnQFFG5vTGVzc1RoZW5QcmljZUFzc2V0BgkBCHRocm93RXJyAQkArAICCQCsAgIJAKwCAgIIRmFpbGVkOiAJAKQDAQUOb3V0UHJpY2VBbW91bnQCAyA8IAkApAMBBRRub0xlc3NUaGVuUHJpY2VBc3NldAMJAAACBRNjaGVja091dFByaWNlQW1vdW50BRNjaGVja091dFByaWNlQW1vdW50BBRidXJuTFBBc3NldE9uRmFjdG9yeQkA/AcEBQ9mYWN0b3J5Q29udHJhY3QCBGJ1cm4JAMwIAgUNcGF5bWVudEFtb3VudAUDbmlsCQDMCAIJAQ9BdHRhY2hlZFBheW1lbnQCBQ5wYXltZW50QXNzZXRJZAUNcGF5bWVudEFtb3VudAUDbmlsAwkAAAIFFGJ1cm5MUEFzc2V0T25GYWN0b3J5BRRidXJuTFBBc3NldE9uRmFjdG9yeQUFc3RhdGUJAAIBAiRTdHJpY3QgdmFsdWUgaXMgbm90IGVxdWFsIHRvIGl0c2VsZi4JAAIBAiRTdHJpY3QgdmFsdWUgaXMgbm90IGVxdWFsIHRvIGl0c2VsZi4JAAIBAiRTdHJpY3QgdmFsdWUgaXMgbm90IGVxdWFsIHRvIGl0c2VsZi4BaQENdW5zdGFrZUFuZEdldAEGYW1vdW50BA1jaGVja1BheW1lbnRzAwkBAiE9AgkAkAMBCAUBaQhwYXltZW50cwAACQEIdGhyb3dFcnIBAhRubyBwYXltZW50cyBleHBlY3RlZAYDCQAAAgUNY2hlY2tQYXltZW50cwUNY2hlY2tQYXltZW50cwQDY2ZnCQENZ2V0UG9vbENvbmZpZwAECmZhY3RvcnlDZmcJARBnZXRGYWN0b3J5Q29uZmlnAAQJbHBBc3NldElkCQDZBAEJAJEDAgUDY2ZnBQlpZHhMUEFzSWQEB3N0YWtpbmcJARN2YWx1ZU9yRXJyb3JNZXNzYWdlAgkApggBCQCRAwIFCmZhY3RvcnlDZmcFD2lkeEZhY3RTdGFrQ250cgIFd3JvbmcECnVuc3Rha2VJbnYJAPwHBAUHc3Rha2luZwIHdW5zdGFrZQkAzAgCCQDYBAEFCWxwQXNzZXRJZAkAzAgCBQZhbW91bnQFA25pbAUDbmlsAwkAAAIFCnVuc3Rha2VJbnYFCnVuc3Rha2VJbnYEAXIJARRlc3RpbWF0ZUdldE9wZXJhdGlvbgQJANgEAQgFAWkNdHJhbnNhY3Rpb25JZAkA2AQBBQlscEFzc2V0SWQFBmFtb3VudAgFAWkGY2FsbGVyBANzdHMJAQ1wYXJzZUludFZhbHVlAQgFAXICXzkEBXN0YXRlCAUBcgNfMTAEAXYDAwkBEGlzR2xvYmFsU2h1dGRvd24ABgkAAAIFA3N0cwUMUG9vbFNodXRkb3duCQEIdGhyb3dFcnIBCQCsAgICCUJsb2NrZWQ6IAkApAMBBQNzdHMGAwkAAAIFAXYFAXYEBWJ1cm5BCQD8BwQFD2ZhY3RvcnlDb250cmFjdAIEYnVybgkAzAgCBQZhbW91bnQFA25pbAkAzAgCCQEPQXR0YWNoZWRQYXltZW50AgUJbHBBc3NldElkBQZhbW91bnQFA25pbAMJAAACBQVidXJuQQUFYnVybkEFBXN0YXRlCQACAQIkU3RyaWN0IHZhbHVlIGlzIG5vdCBlcXVhbCB0byBpdHNlbGYuCQACAQIkU3RyaWN0IHZhbHVlIGlzIG5vdCBlcXVhbCB0byBpdHNlbGYuCQACAQIkU3RyaWN0IHZhbHVlIGlzIG5vdCBlcXVhbCB0byBpdHNlbGYuCQACAQIkU3RyaWN0IHZhbHVlIGlzIG5vdCBlcXVhbCB0byBpdHNlbGYuAWkBCGFjdGl2YXRlAghhbXRBc1N0cgdwckFzU3RyAwkBAiE9AgkApQgBCAUBaQZjYWxsZXIJAKUIAQUPZmFjdG9yeUNvbnRyYWN0CQEIdGhyb3dFcnIBAgZkZW5pZWQJAJQKAgkAzAgCCQELU3RyaW5nRW50cnkCCQEOa2V5QW1vdW50QXNzZXQABQhhbXRBc1N0cgkAzAgCCQELU3RyaW5nRW50cnkCCQENa2V5UHJpY2VBc3NldAAFB3ByQXNTdHIFA25pbAIHc3VjY2VzcwFpAQRzZXRTAgFrAXYDCQECIT0CCQClCAEIBQFpBmNhbGxlcgkBD2dldFN0cmluZ09yRmFpbAIFBHRoaXMJAQ9rZXlBZGRvbkFkZHJlc3MABQJwZAkAzAgCCQELU3RyaW5nRW50cnkCBQFrBQF2BQNuaWwBaQEEc2V0SQIBawF2AwkBAiE9AgkApQgBCAUBaQZjYWxsZXIJAQ9nZXRTdHJpbmdPckZhaWwCBQR0aGlzCQEPa2V5QWRkb25BZGRyZXNzAAUCcGQJAMwIAgkBDEludGVnZXJFbnRyeQIFAWsFAXYFA25pbAFpARxnZXRQb29sQ29uZmlnV3JhcHBlclJFQURPTkxZAAkAlAoCBQNuaWwJAQ1nZXRQb29sQ29uZmlnAAFpARxnZXRBY2NCYWxhbmNlV3JhcHBlclJFQURPTkxZAQdhc3NldElkCQCUCgIFA25pbAkBDWdldEFjY0JhbGFuY2UBBQdhc3NldElkAWkBGWNhbGNQcmljZXNXcmFwcGVyUkVBRE9OTFkDBWFtQW10BXByQW10BWxwQW10BAJwcgkBCmNhbGNQcmljZXMDBQVhbUFtdAUFcHJBbXQFBWxwQW10CQCUCgIFA25pbAkAzAgCCQCmAwEJAJEDAgUCcHIAAAkAzAgCCQCmAwEJAJEDAgUCcHIAAQkAzAgCCQCmAwEJAJEDAgUCcHIAAgUDbmlsAWkBFmZyb21YMThXcmFwcGVyUkVBRE9OTFkCA3ZhbAxyZXNTY2FsZU11bHQJAJQKAgUDbmlsCQEHZnJvbVgxOAIJAKcDAQUDdmFsBQxyZXNTY2FsZU11bHQBaQEUdG9YMThXcmFwcGVyUkVBRE9OTFkCB29yaWdWYWwNb3JpZ1NjYWxlTXVsdAkAlAoCBQNuaWwJAKYDAQkBBXRvWDE4AgUHb3JpZ1ZhbAUNb3JpZ1NjYWxlTXVsdAFpAR5jYWxjUHJpY2VCaWdJbnRXcmFwcGVyUkVBRE9OTFkCCHByQW10WDE4CGFtQW10WDE4CQCUCgIFA25pbAkApgMBCQEPY2FsY1ByaWNlQmlnSW50AgkApwMBBQhwckFtdFgxOAkApwMBBQhhbUFtdFgxOAFpASNlc3RpbWF0ZVB1dE9wZXJhdGlvbldyYXBwZXJSRUFET05MWQkGdHhJZDU4CHNsaXBwYWdlE2luQW1vdW50QXNzZXRBbW91bnQGaW5BbUlkEmluUHJpY2VBc3NldEFtb3VudAZpblBySWQHdXNyQWRkcgppc0V2YWx1YXRlBmVtaXRMcAkAlAoCBQNuaWwJARRlc3RpbWF0ZVB1dE9wZXJhdGlvbgwFBnR4SWQ1OAUIc2xpcHBhZ2UFE2luQW1vdW50QXNzZXRBbW91bnQFBmluQW1JZAUSaW5QcmljZUFzc2V0QW1vdW50BQZpblBySWQFB3VzckFkZHIFCmlzRXZhbHVhdGUFBmVtaXRMcAcAAAIAAWkBI2VzdGltYXRlR2V0T3BlcmF0aW9uV3JhcHBlclJFQURPTkxZBAZ0eElkNTgLcGF5bWVudEFzSWQPcGF5bWVudExwQW1vdW50B3VzckFkZHIEAXIJARRlc3RpbWF0ZUdldE9wZXJhdGlvbgQFBnR4SWQ1OAULcGF5bWVudEFzSWQFD3BheW1lbnRMcEFtb3VudAkBEUBleHRyTmF0aXZlKDEwNjIpAQUHdXNyQWRkcgkAlAoCBQNuaWwJAJwKCggFAXICXzEIBQFyAl8yCAUBcgJfMwgFAXICXzQIBQFyAl81CAUBcgJfNggFAXICXzcJAKYDAQgFAXICXzgIBQFyAl85CAUBcgNfMTABAnR4AQZ2ZXJpZnkABAckbWF0Y2gwBQJ0eAMJAAECBQckbWF0Y2gwAgVPcmRlcgQFb3JkZXIFByRtYXRjaDAEB210Y2hQdWIJARNnZXRNYXRjaGVyUHViT3JGYWlsAAQDb3JWCQEbdmFsaWRhdGVNYXRjaGVyT3JkZXJBbGxvd2VkAQUFb3JkZXIEBXNuZHJWCQD0AwMIBQVvcmRlcglib2R5Qnl0ZXMJAJEDAggFBW9yZGVyBnByb29mcwAACAUFb3JkZXIPc2VuZGVyUHVibGljS2V5BAVtdGNoVgkA9AMDCAUFb3JkZXIJYm9keUJ5dGVzCQCRAwIIBQVvcmRlcgZwcm9vZnMAAQUHbXRjaFB1YgMDAwUDb3JWBQVzbmRyVgcFBW10Y2hWBwYJAQ90aHJvd09yZGVyRXJyb3IDBQNvclYFBXNuZHJWBQVtdGNoVgQPdGFyZ2V0UHVibGljS2V5BAckbWF0Y2gxCQEWbWFuYWdlclB1YmxpY0tleU9yVW5pdAADCQABAgUHJG1hdGNoMQIKQnl0ZVZlY3RvcgQCcGsFByRtYXRjaDEFAnBrAwkAAQIFByRtYXRjaDECBFVuaXQIBQJ0eA9zZW5kZXJQdWJsaWNLZXkJAAIBAgtNYXRjaCBlcnJvcgkA9AMDCAUCdHgJYm9keUJ5dGVzCQCRAwIIBQJ0eAZwcm9vZnMAAAUPdGFyZ2V0UHVibGljS2V5/Xi9zQ==", "height": 2207153, "applicationStatus": "succeeded", "spentComplexity": 0 } View: original | compacted Prev: 2ZcMt7cwgMM14AL65mfXEuTRnvj4PrjaLMXSMNDHKsiM Next: 2Lc1wWf4hy28zpcw5cBeTbcRpque7QZedQtNjUsgS1Ni Diff:
OldNewDifferences
11 {-# STDLIB_VERSION 6 #-}
22 {-# SCRIPT_TYPE ACCOUNT #-}
33 {-# CONTENT_TYPE DAPP #-}
4-let a = 100000000
4+let a = 1000000
55
6-let b = toBigInt(100000000)
6+let b = 100000000
77
8-let c = toBigInt(1000000000000000000)
8+let c = toBigInt(100000000)
99
10-let d = 1000
10+let d = toBigInt(1000000000000000000)
1111
12-let e = toBigInt(0)
12+let e = 1000
1313
14-let f = toBigInt(1)
14+let f = toBigInt(0)
1515
16-let g = toBigInt((a - ((a * 1) / a)))
16+let g = toBigInt(1)
1717
18-let h = "100"
18+let h = toBigInt((b - ((b * 1) / b)))
1919
20-let i = "1"
20+let i = "100"
2121
22-let j = "__"
22+let j = "1"
2323
24-let k = ""
24+let k = "__"
2525
26-let l = 1
26+let l = ""
2727
28-let m = 2
28+let m = 1
2929
30-let n = 3
30+let n = 2
3131
32-let o = 4
32+let o = 3
3333
34-let p = 1
34+let p = 4
3535
36-let q = 2
36+let q = 1
3737
38-let r = 3
38+let r = 2
3939
40-let s = 4
40+let s = 3
4141
42-let t = 5
42+let t = 4
4343
44-let u = 6
44+let u = 5
4545
46-let v = 7
46+let v = 6
4747
48-let w = 8
48+let w = 7
4949
50-let x = 9
50+let x = 8
5151
52-let y = 1
52+let y = 9
5353
54-let z = 7
54+let z = 1
5555
56-let A = 10
56+let A = 7
5757
58-let B = 0
58+let B = 10
5959
60-func C (D,E) = fraction(toBigInt(D), c, toBigInt(E))
60+let C = 0
61+
62+func D (E,F) = fraction(toBigInt(E), d, toBigInt(F))
6163
6264
63-func F (G,H) = toInt(fraction(G, toBigInt(H), c))
65+func G (H,I) = toInt(fraction(H, toBigInt(I), d))
6466
6567
66-func I (J,K,L) = fraction(J, K, L)
68+func J (K,L,M) = fraction(K, L, M)
6769
6870
69-func M (G) = if ((e > G))
70- then -(G)
71- else G
71+func N (H) = if ((f > H))
72+ then -(H)
73+ else H
7274
7375
74-func N () = "%s__factoryContract"
76+func O () = "%s__factoryContract"
7577
7678
77-func O () = "%s__managerPublicKey"
79+func P () = "%s__managerPublicKey"
7880
7981
80-func P () = "%s__pendingManagerPublicKey"
82+func Q () = "%s__pendingManagerPublicKey"
8183
8284
83-func Q () = "%s%s__price__last"
85+func R () = "%s%s__price__last"
8486
8587
86-func R (S,T) = makeString(["%s%s%d%d__price__history", toString(S), toString(T)], j)
88+func S (T,U) = makeString(["%s%s%d%d__price__history", toString(T), toString(U)], k)
8789
8890
89-func U (V,W) = ((("%s%s%s__P__" + V) + "__") + W)
91+func V (W,X) = ((("%s%s%s__P__" + W) + "__") + X)
9092
9193
92-func X (V,W) = ((("%s%s%s__G__" + V) + "__") + W)
94+func Y (W,X) = ((("%s%s%s__G__" + W) + "__") + X)
9395
9496
95-func Y () = "%s__amountAsset"
97+func Z () = "%s__amountAsset"
9698
9799
98-func Z () = "%s__priceAsset"
100+func aa () = "%s__priceAsset"
99101
100102
101-func aa () = "%s__amp"
103+func ab () = "%s__amp"
102104
103105
104-func ab () = "%s__addonAddr"
106+func ac () = "%s__addonAddr"
105107
106108
107-let ac = "%s__feePermille"
109+let ad = "%s__feePermille"
108110
109-let ad = valueOrElse(getInteger(this, ac), B)
111+let ae = valueOrElse(getInteger(this, ad), C)
110112
111-func ae () = "%s__factoryConfig"
113+func af () = "%s__factoryConfig"
112114
113115
114-func af () = "%s%s__matcher__publicKey"
116+func ag () = "%s%s__matcher__publicKey"
115117
116118
117-func ag (ah,ai) = (((("%d%d%s__" + ah) + "__") + ai) + "__config")
119+func ah (ai,aj) = (((("%d%d%s__" + ai) + "__") + aj) + "__config")
118120
119121
120-func aj (ak) = ("%s%s%s__mappings__baseAsset2internalId__" + ak)
122+func ak (al) = ("%s%s%s__mappings__baseAsset2internalId__" + al)
121123
122124
123-func al () = "%s__shutdown"
125+func am () = "%s__shutdown"
124126
125127
126-func am () = "%s__allowedLpStableScriptHash"
128+func an (ao) = throw(makeString(["lp_stable.ride:", ao], " "))
127129
128130
129-func an (ao,ap,aq) = throw(((((("Failed: ordValid=" + toString(ao)) + " sndrValid=") + toString(ap)) + " mtchrValid=") + toString(aq)))
131+func ap (aq,ar,as) = an(((((("Failed: ordValid=" + toString(aq)) + " sndrValid=") + toString(ar)) + " mtchrValid=") + toString(as)))
130132
131133
132-func ar (G) = {
133- let as = G
134- if ($isInstanceOf(as, "String"))
134+func at (H) = {
135+ let au = H
136+ if ($isInstanceOf(au, "String"))
135137 then {
136- let at = as
137- at
138+ let av = au
139+ av
138140 }
139- else throw("fail cast to String")
141+ else an("fail cast to String")
140142 }
141143
142144
143-func au (av,aw) = valueOrErrorMessage(getString(av, aw), makeString(["mandatory ", toString(av), ".", aw, " not defined"], ""))
145+func aw (ax,ay) = valueOrErrorMessage(getString(ax, ay), makeString(["mandatory ", toString(ax), ".", ay, " not defined"], ""))
144146
145147
146-func ax (av,aw) = valueOrErrorMessage(getInteger(av, aw), makeString(["mandatory ", toString(av), ".", aw, " not defined"], ""))
148+func az (ax,ay) = valueOrErrorMessage(getInteger(ax, ay), makeString(["mandatory ", toString(ax), ".", ay, " not defined"], ""))
147149
148150
149-let ay = addressFromStringValue(au(this, N()))
151+let aA = addressFromStringValue(aw(this, O()))
150152
151-let az = au(this, aa())
153+let aB = aw(this, ab())
152154
153-func aA () = valueOrElse(getBoolean(ay, al()), false)
155+func aC () = valueOrElse(getBoolean(aA, am()), false)
154156
155157
156-func aB () = fromBase58String(au(ay, af()))
158+func aD () = fromBase58String(aw(aA, ag()))
157159
158160
159-let aC = addressFromPublicKey(aB())
161+let aE = addressFromPublicKey(aD())
160162
161-func aD () = {
162- let aE = au(this, Y())
163- let aF = au(this, Z())
164- let aG = ax(ay, aj(aF))
165- let ah = ax(ay, aj(aE))
166- split(au(ay, ag(toString(ah), toString(aG))), j)
163+func aF () = {
164+ let aG = aw(this, Z())
165+ let aH = aw(this, aa())
166+ let aI = az(aA, ak(aH))
167+ let ai = az(aA, ak(aG))
168+ split(aw(aA, ah(toString(ai), toString(aI))), k)
167169 }
168170
169171
170-func aH () = split(au(ay, ae()), j)
172+func aJ () = split(aw(aA, af()), k)
171173
172174
173-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)
175+func aK (aL,aM,aN,aO,aP,aQ,aR,aS,aT,aU) = makeString(["%d%d%d%d%d%d%d%d%d%d", toString(aL), toString(aM), toString(aN), toString(aO), toString(aP), toString(aQ), toString(aR), toString(aS), toString(aT), toString(aU)], k)
174176
175177
176-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)
178+func aV (aW,aX,aY,aO,aR,aS) = makeString(["%d%d%d%d%d%d", toString(aW), toString(aX), toString(aY), toString(aO), toString(aR), toString(aS)], k)
177179
178180
179-func aX (aY) = if ((aY == "WAVES"))
181+func aZ (ba) = if ((ba == "WAVES"))
180182 then wavesBalance(this).available
181- else assetBalance(this, fromBase58String(aY))
183+ else assetBalance(this, fromBase58String(ba))
182184
183185
184-func aZ (ba,bb) = fraction(ba, c, bb)
186+func bb (bc,bd) = fraction(bc, d, bd)
185187
186188
187-func bc (bd,be,bf) = {
188- let bg = fraction((bd - be), b, be)
189- let bh = ((bf - M(bg)) > e)
190- if (!(bh))
191- then throw(("Big slpg: " + toString(bg)))
192- else $Tuple2(bh, min([bd, be]))
189+func be (bf,bg,bh) = {
190+ let bi = fraction((bf - bg), c, bg)
191+ let bj = ((bh - N(bi)) > f)
192+ if (!(bj))
193+ then an(("Big slippage: " + toString(bi)))
194+ else $Tuple2(bj, min([bf, bg]))
193195 }
194196
195197
196-func bi (bj,bk,bl) = {
197- let bg = fraction(bk, b, bj)
198- let bm = (bl > bg)
199- if (if (bm)
198+func bk (bl,bm,bh) = {
199+ let bi = fraction(bm, c, bl)
200+ let bn = (bh > bi)
201+ if (if (bn)
200202 then true
201- else (bk > bj))
202- then throw(((((((toString(bk) + " ") + toString(bj)) + " ") + toString(bg)) + " ") + toString(bl)))
203- else bm
203+ else (bm > bl))
204+ then an(((((((toString(bm) + " ") + toString(bl)) + " ") + toString(bi)) + " ") + toString(bh)))
205+ else bn
204206 }
205207
206208
207-func bn (bo,bp,bq,br) = {
208- let bs = C(bq, bo)
209- let bt = C(br, bp)
210- aZ(bt, bs)
209+func bo (bp,bq,br,bs) = {
210+ let bt = D(br, bp)
211+ let bu = D(bs, bq)
212+ bb(bu, bt)
211213 }
212214
213215
214-func bu (bq,br,bv) = {
215- let bw = aD()
216- let bx = parseIntValue(bw[u])
217- let by = parseIntValue(bw[v])
218- let bz = bn(bx, by, bq, br)
219- let bb = C(bq, bx)
220- let ba = C(br, by)
221- let bA = C(bv, a)
222- let bB = aZ(bb, bA)
223- let bC = aZ(ba, bA)
224-[bz, bB, bC]
216+func bv (br,bs,bw) = {
217+ let bx = aF()
218+ let by = parseIntValue(bx[v])
219+ let bz = parseIntValue(bx[w])
220+ let bA = bo(by, bz, br, bs)
221+ let bd = D(br, by)
222+ let bc = D(bs, bz)
223+ let bB = D(bw, b)
224+ let bC = bb(bd, bB)
225+ let bD = bb(bc, bB)
226+[bA, bC, bD]
225227 }
226228
227229
228-func bD (bq,br,bv) = {
229- let bE = bu(bq, br, bv)
230-[F(bE[0], a), F(bE[1], a), F(bE[2], a)]
230+func bE (br,bs,bw) = {
231+ let bF = bv(br, bs, bw)
232+[G(bF[0], b), G(bF[1], b), G(bF[2], b)]
231233 }
232234
233235
234-func bF (bG,bH,bI,bJ) = {
235- let bw = aD()
236- let bK = bw[r]
237- let bL = bw[s]
238- let bM = bw[t]
239- let bN = parseIntValue(bw[u])
240- let bO = parseIntValue(bw[v])
241- let bP = bw[q]
242- let bQ = valueOrErrorMessage(assetInfo(fromBase58String(bK)), "Wrong LP id").quantity
243- if ((bK != bH))
244- then throw("Wrong pmt asset")
245- else {
246- let bR = aX(bL)
247- let bS = C(bR, bN)
248- let bT = aX(bM)
249- let bU = C(bT, bO)
250- let bV = aZ(bU, bS)
251- let bW = F(bV, a)
252- let bX = C(bI, a)
253- let bY = C(bQ, a)
254- let bZ = fraction(bS, bX, bY)
255- let ca = fraction(bU, bX, bY)
256- let cb = F(bZ, bN)
257- let cc = F(ca, bO)
258- let cd = if ((bG == ""))
236+func bG (bH,bI,bJ,bK) = {
237+ let bx = aF()
238+ let bL = bx[s]
239+ let bM = bx[t]
240+ let bN = bx[u]
241+ let bO = parseIntValue(bx[v])
242+ let bP = parseIntValue(bx[w])
243+ let bQ = bx[r]
244+ let bR = valueOrErrorMessage(assetInfo(fromBase58String(bL)), "Wrong LP id").quantity
245+ let bS = if ((bL == bI))
246+ then true
247+ else an("Wrong payment asset")
248+ if ((bS == bS))
249+ then {
250+ let bT = aZ(bM)
251+ let bU = aZ(bN)
252+ let bV = fraction(bT, a, bO)
253+ let bW = fraction(bU, a, bP)
254+ let bX = D(bV, a)
255+ let bY = D(bW, a)
256+ let bZ = bb(bY, bX)
257+ let ca = G(bZ, b)
258+ let cb = D(bJ, b)
259+ let cc = D(bR, b)
260+ let cd = fraction(bX, cb, cc)
261+ let ce = fraction(bY, cb, cc)
262+ let cf = G(cd, a)
263+ let cg = G(ce, a)
264+ let ch = fraction(cf, bO, a)
265+ let ci = fraction(cg, bP, a)
266+ let cj = if ((bH == ""))
259267 then nil
260- else [ScriptTransfer(bJ, cb, if ((bL == "WAVES"))
268+ else [ScriptTransfer(bK, ch, if ((bM == "WAVES"))
261269 then unit
262- else fromBase58String(bL)), ScriptTransfer(bJ, cc, if ((bM == "WAVES"))
270+ else fromBase58String(bM)), ScriptTransfer(bK, ci, if ((bN == "WAVES"))
263271 then unit
264- 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)]
265- $Tuple10(cb, cc, bL, bM, bR, bT, bQ, bV, bP, cd)
272+ else fromBase58String(bN)), StringEntry(Y(toString(bK), bH), aV(ch, ci, bJ, ca, height, lastBlock.timestamp)), IntegerEntry(R(), ca), IntegerEntry(S(height, lastBlock.timestamp), ca)]
273+ $Tuple10(ch, ci, bM, bN, bT, bU, bR, bZ, bQ, cj)
266274 }
275+ else throw("Strict value is not equal to itself.")
267276 }
268277
269278
270-func ce (bG,bf,cf,cg,ch,ci,bJ,cj,ck,cl,cm,cn) = {
271- let bw = aD()
272- let bK = fromBase58String(bw[r])
273- let co = bw[s]
274- let cp = bw[t]
275- let cq = bw[w]
276- let cr = bw[x]
277- let cs = parseIntValue(bw[u])
278- let ct = parseIntValue(bw[v])
279- let bP = bw[q]
280- let cu = valueOrErrorMessage(assetInfo(bK), "Wr lp as").quantity
281- let bR = if (cj)
282- then aX(co)
283- else if (if (cl)
284- then (cn == co)
279+func ck (bH,cl,cm,cn,co,cp,bK,cq,cr,cs,ct,cu) = {
280+ let bx = aF()
281+ let bL = fromBase58String(bx[s])
282+ let cv = bx[t]
283+ let cw = bx[u]
284+ let cx = bx[x]
285+ let cy = bx[y]
286+ let bO = parseIntValue(bx[v])
287+ let bP = parseIntValue(bx[w])
288+ let bQ = bx[r]
289+ let bR = valueOrErrorMessage(assetInfo(bL), "Wrong lp asset").quantity
290+ let bT = if (cq)
291+ then aZ(cv)
292+ else if (if (cs)
293+ then (cu == cv)
285294 else false)
286- then (aX(co) - cm)
287- else if (cl)
288- then aX(co)
289- else (aX(co) - cf)
290- let bT = if (cj)
291- then aX(cp)
292- else if (if (cl)
293- then (cn == cp)
295+ then (aZ(cv) - ct)
296+ else if (cs)
297+ then aZ(cv)
298+ else (aZ(cv) - cm)
299+ let bU = if (cq)
300+ then aZ(cw)
301+ else if (if (cs)
302+ then (cu == cw)
294303 else false)
295- then (aX(cp) - cm)
296- else if (cl)
297- then aX(cp)
298- else (aX(cp) - ch)
299- let cv = C(cf, cs)
300- let cw = C(ch, ct)
301- let cx = aZ(cw, cv)
302- let bS = C(bR, cs)
303- let bU = C(bT, ct)
304- let cy = if ((cu == 0))
304+ then (aZ(cw) - ct)
305+ else if (cs)
306+ then aZ(cw)
307+ else (aZ(cw) - co)
308+ let bV = fraction(bT, a, bO)
309+ let bW = fraction(bU, a, bP)
310+ let cz = fraction(cm, a, bO)
311+ let cA = fraction(co, a, bP)
312+ let cB = D(cz, a)
313+ let cC = D(cA, a)
314+ let cD = bb(cC, cB)
315+ let bX = D(bV, a)
316+ let bY = D(bW, a)
317+ let cE = if ((bR == 0))
305318 then {
306- let bV = e
307- let cz = e
308- let bA = pow((cv * cw), 0, toBigInt(5), 1, 0, DOWN)
309- $Tuple5(F(bA, a), F(cv, cs), F(cw, ct), aZ((bU + cw), (bS + cv)), cz)
319+ let bZ = f
320+ let cF = f
321+ let cG = pow((cB * cC), 0, toBigInt(5), 1, 0, DOWN)
322+ $Tuple5(G(cG, b), G(cB, a), G(cC, a), bb((bY + cC), (bX + cB)), cF)
310323 }
311324 else {
312- let bV = aZ(bU, bS)
313- let cA = fraction(M((bV - cx)), c, bV)
314- let cz = C(bf, a)
315- if (if ((bV != e))
316- then (cA > cz)
325+ let bZ = bb(bY, bX)
326+ let cH = fraction(N((bZ - cD)), d, bZ)
327+ let cF = D(cl, b)
328+ let cI = if (((if ((bZ != f))
329+ then (cH > cF)
330+ else false) == false))
331+ then true
332+ else an(((("Price slippage " + toString(cH)) + " > ") + toString(cF)))
333+ if ((cI == cI))
334+ then {
335+ let cc = D(bR, b)
336+ let cJ = fraction(cB, bZ, d)
337+ let cK = fraction(cC, d, bZ)
338+ let cL = if ((cJ > cC))
339+ then $Tuple2(cK, cB)
340+ else $Tuple2(cB, cJ)
341+ let cM = cL._1
342+ let cN = cL._2
343+ let cG = fraction(cc, cN, bY)
344+ $Tuple5(G(cG, b), G(cM, a), G(cN, a), bZ, cF)
345+ }
346+ else throw("Strict value is not equal to itself.")
347+ }
348+ let cO = cE._1
349+ let cP = fraction(cE._2, bO, a)
350+ let cQ = fraction(cE._3, bP, a)
351+ let cR = G(cE._4, b)
352+ let cS = G(cE._5, b)
353+ let cT = if ((cO > 0))
354+ then true
355+ else an("LP <= 0")
356+ if ((cT == cT))
357+ then {
358+ let cU = if (!(cr))
359+ then 0
360+ else cO
361+ let cV = (cm - cP)
362+ let cW = (co - cQ)
363+ let cX = if (if (cs)
364+ then (cu == cv)
317365 else false)
318- then throw(((("Price slippage " + toString(cA)) + " > ") + toString(cz)))
319- else {
320- let cB = C(cu, a)
321- let cC = fraction(cv, bV, c)
322- let cD = fraction(cw, c, bV)
323- let cE = if ((cC > cw))
324- then $Tuple2(cD, cw)
325- else $Tuple2(cv, cC)
326- let cF = cE._1
327- let cG = cE._2
328- let bA = fraction(cB, cG, bU)
329- $Tuple5(F(bA, a), F(cF, cs), F(cG, ct), bV, cz)
330- }
366+ then $Tuple2(ct, 0)
367+ else if (if (cs)
368+ then (cu == cw)
369+ else false)
370+ then $Tuple2(0, ct)
371+ else $Tuple2(cP, cQ)
372+ let cY = cX._1
373+ let cZ = cX._2
374+ let da = [IntegerEntry(R(), cR), IntegerEntry(S(height, lastBlock.timestamp), cR), StringEntry(V(bK, bH), aK(cY, cZ, cU, cR, cl, cS, height, lastBlock.timestamp, cV, cW))]
375+ $Tuple13(cO, cU, cR, bT, bU, bR, bL, bQ, da, cV, cW, cn, cp)
331376 }
332- let cH = cy._1
333- let cI = cy._2
334- let cJ = cy._3
335- let bW = F(cy._4, a)
336- let cK = F(cy._5, a)
337- if ((0 >= cH))
338- then throw("LP <= 0")
339- else {
340- let cL = if (!(ck))
341- then 0
342- else cH
343- let cM = (cf - cI)
344- let cN = (ch - cJ)
345- let cO = if (if (cl)
346- then (cn == co)
347- else false)
348- then $Tuple2(cm, 0)
349- else if (if (cl)
350- then (cn == cp)
351- else false)
352- then $Tuple2(0, cm)
353- else $Tuple2(cI, cJ)
354- let cP = cO._1
355- let cQ = cO._2
356- 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))]
357- $Tuple13(cH, cL, bW, bR, bT, cu, bK, bP, cR, cM, cN, cg, ci)
358- }
377+ else throw("Strict value is not equal to itself.")
359378 }
360379
361380
362-func cS (cT) = {
363- let bw = aD()
364- let cU = bw[s]
365- let cV = bw[t]
366- let bP = parseIntValue(bw[q])
367- let bx = parseIntValue(bw[u])
368- let by = parseIntValue(bw[v])
369- let cW = aX(cU)
370- let cX = aX(cV)
371- let bV = if ((cT.orderType == Buy))
372- then bn(bx, by, (cW + cT.amount), cX)
373- else bn(bx, by, (cW - cT.amount), cX)
374- let bW = F(bV, a)
375- if (if (if (aA())
381+func db (dc) = {
382+ let bx = aF()
383+ let dd = bx[t]
384+ let de = bx[u]
385+ let bQ = parseIntValue(bx[r])
386+ let by = parseIntValue(bx[v])
387+ let bz = parseIntValue(bx[w])
388+ let df = aZ(dd)
389+ let dg = aZ(de)
390+ let bZ = if ((dc.orderType == Buy))
391+ then bo(by, bz, (df + dc.amount), dg)
392+ else bo(by, bz, (df - dc.amount), dg)
393+ let ca = G(bZ, b)
394+ if (if (if (aC())
376395 then true
377- else (bP == n))
396+ else (bQ == o))
378397 then true
379- else (bP == o))
380- then throw("Admin blocked")
398+ else (bQ == p))
399+ then an("Admin blocked")
381400 else {
382- let cY = cT.assetPair.amountAsset
383- let cZ = if ((cY == unit))
401+ let dh = dc.assetPair.amountAsset
402+ let di = if ((dh == unit))
384403 then "WAVES"
385- else toBase58String(value(cY))
386- let da = cT.assetPair.priceAsset
387- let db = if ((da == unit))
404+ else toBase58String(value(dh))
405+ let dj = dc.assetPair.priceAsset
406+ let dk = if ((dj == unit))
388407 then "WAVES"
389- else toBase58String(value(da))
390- if (if ((cZ != cU))
408+ else toBase58String(value(dj))
409+ if (if ((di != dd))
391410 then true
392- else (db != cV))
393- then throw("Wr assets")
411+ else (dk != de))
412+ then an("Wr assets")
394413 else {
395- let dc = cT.price
396- let ct = fraction(a, by, bx)
397- let dd = I(dc, a, ct)
398- let de = if ((cT.orderType == Buy))
399- then (bW >= dd)
400- else (dd >= bW)
414+ let dl = dc.price
415+ let bP = fraction(b, bz, by)
416+ let dm = J(dl, b, bP)
417+ let dn = if ((dc.orderType == Buy))
418+ then (ca >= dm)
419+ else (dm >= ca)
401420 true
402421 }
403422 }
404423 }
405424
406425
407-func df (dg) = if ((size(dg.payments) != 1))
408- then throw("1 pmnt exp")
409- else {
410- let dh = value(dg.payments[0])
411- let bH = value(dh.assetId)
412- let cm = dh.amount
413- let cy = bF(toBase58String(dg.transactionId), toBase58String(bH), cm, dg.caller)
414- let cb = cy._1
415- let cc = cy._2
416- let bP = parseIntValue(cy._9)
417- let cd = cy._10
418- if (if (aA())
419- then true
420- else (bP == o))
421- then throw(("Admin blocked: " + toString(bP)))
422- else $Tuple5(cb, cc, cm, bH, cd)
423- }
424-
425-
426-func di (dj,W,dk,dl,bf,ck,cl,cm,cn) = {
427- let cy = ce(W, bf, value(dk).amount, value(dk).assetId, value(dl).amount, value(dl).assetId, dj, false, ck, cl, cm, cn)
428- let bP = parseIntValue(cy._8)
429- if (if (if (aA())
426+func do (dp) = {
427+ let dq = if ((size(dp.payments) == 1))
430428 then true
431- else (bP == m))
432- then true
433- else (bP == o))
434- then throw(("Blocked:" + toString(bP)))
435- else cy
429+ else an("1 payment expected")
430+ if ((dq == dq))
431+ then {
432+ let dr = value(dp.payments[0])
433+ let bI = value(dr.assetId)
434+ let ct = dr.amount
435+ let cE = bG(toBase58String(dp.transactionId), toBase58String(bI), ct, dp.caller)
436+ let ch = cE._1
437+ let ci = cE._2
438+ let bQ = parseIntValue(cE._9)
439+ let cj = cE._10
440+ if (if (aC())
441+ then true
442+ else (bQ == p))
443+ then an(("Admin blocked: " + toString(bQ)))
444+ else $Tuple5(ch, ci, ct, bI, cj)
445+ }
446+ else throw("Strict value is not equal to itself.")
436447 }
437448
438449
439-func dm (dn) = {
440- let do = fraction(dn, ad, d)
441- $Tuple2((dn - do), do)
450+func ds (dt,X,du,dv,bh,cr,cs,ct,cu) = {
451+ let cE = ck(X, bh, value(du).amount, value(du).assetId, value(dv).amount, value(dv).assetId, dt, false, cr, cs, ct, cu)
452+ let bQ = parseIntValue(cE._8)
453+ if (if (if (aC())
454+ then true
455+ else (bQ == n))
456+ then true
457+ else (bQ == p))
458+ then an(("Blocked:" + toString(bQ)))
459+ else cE
442460 }
443461
444462
445-func dp () = {
446- let as = getString(O())
447- if ($isInstanceOf(as, "String"))
463+func dw (dx) = {
464+ let dy = fraction(dx, ae, e)
465+ $Tuple2((dx - dy), dy)
466+ }
467+
468+
469+func dz () = {
470+ let au = getString(P())
471+ if ($isInstanceOf(au, "String"))
448472 then {
449- let dq = as
450- fromBase58String(dq)
473+ let dA = au
474+ fromBase58String(dA)
451475 }
452- else if ($isInstanceOf(as, "Unit"))
476+ else if ($isInstanceOf(au, "Unit"))
453477 then unit
454478 else throw("Match error")
455479 }
456480
457481
458-func dr () = {
459- let as = getString(P())
460- if ($isInstanceOf(as, "String"))
482+func dB () = {
483+ let au = getString(Q())
484+ if ($isInstanceOf(au, "String"))
461485 then {
462- let dq = as
463- fromBase58String(dq)
486+ let dA = au
487+ fromBase58String(dA)
464488 }
465- else if ($isInstanceOf(as, "Unit"))
489+ else if ($isInstanceOf(au, "Unit"))
466490 then unit
467491 else throw("Match error")
468492 }
469493
470494
471-let ds = throw("Permission denied")
495+let dC = an("Permission denied")
472496
473-func dt (dg) = {
474- let as = dp()
475- if ($isInstanceOf(as, "ByteVector"))
497+func dD (dp) = {
498+ let au = dz()
499+ if ($isInstanceOf(au, "ByteVector"))
476500 then {
477- let du = as
478- if ((dg.callerPublicKey == du))
501+ let dE = au
502+ if ((dp.callerPublicKey == dE))
479503 then true
480- else ds
504+ else dC
481505 }
482- else if ($isInstanceOf(as, "Unit"))
483- then if ((dg.caller == this))
506+ else if ($isInstanceOf(au, "Unit"))
507+ then if ((dp.caller == this))
484508 then true
485- else ds
509+ else dC
486510 else throw("Match error")
487511 }
488512
489513
490-@Callable(dg)
491-func constructor (N) = {
492- let dv = dt(dg)
493- if ((dv == dv))
494- then [StringEntry(N(), N)]
514+@Callable(dp)
515+func constructor (aA) = {
516+ let dF = dD(dp)
517+ if ((dF == dF))
518+ then [StringEntry(O(), aA)]
495519 else throw("Strict value is not equal to itself.")
496520 }
497521
498522
499523
500-@Callable(dg)
501-func setManager (dw) = {
502- let dv = dt(dg)
503- if ((dv == dv))
524+@Callable(dp)
525+func setManager (dG) = {
526+ let dF = dD(dp)
527+ if ((dF == dF))
504528 then {
505- let dx = fromBase58String(dw)
506- if ((dx == dx))
507- then [StringEntry(P(), dw)]
529+ let dH = fromBase58String(dG)
530+ if ((dH == dH))
531+ then [StringEntry(Q(), dG)]
508532 else throw("Strict value is not equal to itself.")
509533 }
510534 else throw("Strict value is not equal to itself.")
512536
513537
514538
515-@Callable(dg)
539+@Callable(dp)
516540 func confirmManager () = {
517- let bE = dr()
518- let dy = if (isDefined(bE))
541+ let dI = dB()
542+ let dJ = if (isDefined(dI))
519543 then true
520- else throw("No pending manager")
521- if ((dy == dy))
544+ else an("No pending manager")
545+ if ((dJ == dJ))
522546 then {
523- let dz = if ((dg.callerPublicKey == value(bE)))
547+ let dK = if ((dp.callerPublicKey == value(dI)))
524548 then true
525- else throw("You are not pending manager")
526- if ((dz == dz))
527- then [StringEntry(O(), toBase58String(value(bE))), DeleteEntry(P())]
549+ else an("You are not pending manager")
550+ if ((dK == dK))
551+ then [StringEntry(P(), toBase58String(value(dI))), DeleteEntry(Q())]
528552 else throw("Strict value is not equal to itself.")
529553 }
530554 else throw("Strict value is not equal to itself.")
532556
533557
534558
535-@Callable(dg)
536-func put (dA,dB) = {
537- let dC = aH()
538- let dD = valueOrErrorMessage(addressFromString(dC[y]), "Wr st addr")
539- let dE = valueOrErrorMessage(addressFromString(dC[z]), "Wr sl addr")
540- if ((0 > dA))
541- then throw("Wrong slippage")
542- else if ((size(dg.payments) != 2))
543- then throw("2 pmnts expd")
544- else {
545- 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, "")
546- let cL = dF._2
547- let dG = dF._7
548- let cd = dF._9
549- let cM = dF._10
550- let cN = dF._11
551- let bL = dF._12
552- let bM = dF._13
553- let cy = invoke(ay, "emit", [cL], nil)
554- if ((cy == cy))
555- then {
556- let dH = {
557- let as = cy
558- if ($isInstanceOf(as, "Address"))
559+@Callable(dp)
560+func put (bh,dL) = {
561+ let dM = aJ()
562+ let dN = valueOrErrorMessage(addressFromString(dM[z]), "Wrong staking contract")
563+ let dO = valueOrErrorMessage(addressFromString(dM[A]), "Wrogn slippage contract")
564+ let dP = if ((bh >= 0))
565+ then true
566+ else an("wrong slippage")
567+ if ((dP == dP))
568+ then {
569+ let dQ = if ((size(dp.payments) == 2))
570+ then true
571+ else an("2 payments expected")
572+ if ((dQ == dQ))
573+ then {
574+ let dR = ds(toString(dp.caller), toBase58String(dp.transactionId), AttachedPayment(value(dp.payments[0]).assetId, value(dp.payments[0]).amount), dp.payments[1], bh, true, false, 0, "")
575+ let cU = dR._2
576+ let bL = dR._7
577+ let cj = dR._9
578+ let cV = dR._10
579+ let cW = dR._11
580+ let bM = dR._12
581+ let bN = dR._13
582+ let cE = invoke(aA, "emit", [cU], nil)
583+ if ((cE == cE))
584+ then {
585+ let dS = {
586+ let au = cE
587+ if ($isInstanceOf(au, "Address"))
588+ then {
589+ let dT = au
590+ invoke(dT, "emit", [cU], nil)
591+ }
592+ else unit
593+ }
594+ if ((dS == dS))
559595 then {
560- let dI = as
561- invoke(dI, "emit", [cL], nil)
596+ let dU = if ((cV > 0))
597+ then invoke(dO, "put", nil, [AttachedPayment(bM, cV)])
598+ else nil
599+ if ((dU == dU))
600+ then {
601+ let dV = if ((cW > 0))
602+ then invoke(dO, "put", nil, [AttachedPayment(bN, cW)])
603+ else nil
604+ if ((dV == dV))
605+ then {
606+ let dW = if (dL)
607+ then {
608+ let dX = invoke(dN, "stake", nil, [AttachedPayment(bL, cU)])
609+ if ((dX == dX))
610+ then nil
611+ else throw("Strict value is not equal to itself.")
612+ }
613+ else [ScriptTransfer(dp.caller, cU, bL)]
614+ (cj ++ dW)
615+ }
616+ else throw("Strict value is not equal to itself.")
617+ }
618+ else throw("Strict value is not equal to itself.")
562619 }
563- else unit
620+ else throw("Strict value is not equal to itself.")
564621 }
565- if ((dH == dH))
566- then {
567- let dJ = if ((cM > 0))
568- then invoke(dE, "put", nil, [AttachedPayment(bL, cM)])
569- else nil
570- if ((dJ == dJ))
571- then {
572- let dK = if ((cN > 0))
573- then invoke(dE, "put", nil, [AttachedPayment(bM, cN)])
574- else nil
575- if ((dK == dK))
576- then {
577- let dL = if (dB)
578- then {
579- let dM = invoke(dD, "stake", nil, [AttachedPayment(dG, cL)])
580- if ((dM == dM))
581- then nil
582- else throw("Strict value is not equal to itself.")
583- }
584- else [ScriptTransfer(dg.caller, cL, dG)]
585- (cd ++ dL)
586- }
587- else throw("Strict value is not equal to itself.")
588- }
589- else throw("Strict value is not equal to itself.")
590- }
591- else throw("Strict value is not equal to itself.")
592- }
593- else throw("Strict value is not equal to itself.")
594- }
622+ else throw("Strict value is not equal to itself.")
623+ }
624+ else throw("Strict value is not equal to itself.")
625+ }
626+ else throw("Strict value is not equal to itself.")
595627 }
596628
597629
598630
599-@Callable(dg)
600-func putOneTkn (dN,dO,dP,bf,dB) = {
601- let bw = aH()
602- let dD = valueOrErrorMessage(addressFromString(bw[y]), "Wr st addr")
603- let dE = valueOrErrorMessage(addressFromString(bw[z]), "Wr sl addr")
604- let dQ = valueOrErrorMessage(addressFromString(bw[A]), "Wr gwx addr")
605- let dR = aD()
606- let bL = dR[s]
607- let bM = dR[t]
608- let bN = parseIntValue(dR[u])
609- let bO = parseIntValue(dR[v])
610- let dS = valueOrElse(getString(this, ab()), "")
611- let bJ = if ((dS == toString(dg.caller)))
612- then dg.originCaller
613- else dg.caller
614- if (if (if (if ((0 >= bf))
631+@Callable(dp)
632+func putOneTkn (dY,dZ,bg,bh,dL) = {
633+ let bx = aJ()
634+ let dN = valueOrErrorMessage(addressFromString(bx[z]), "Wrong staking contract")
635+ let dO = valueOrErrorMessage(addressFromString(bx[A]), "Wrong slippage contract")
636+ let ea = valueOrErrorMessage(addressFromString(bx[B]), "Wrong gwx reward contract")
637+ let eb = aF()
638+ let bM = eb[t]
639+ let bN = eb[u]
640+ let bO = parseIntValue(eb[v])
641+ let bP = parseIntValue(eb[w])
642+ let ec = valueOrElse(getString(this, ac()), "")
643+ let bK = if ((ec == toString(dp.caller)))
644+ then dp.originCaller
645+ else dp.caller
646+ if (if (if (if ((0 >= bh))
615647 then true
616- else (0 >= dN))
648+ else (0 >= dY))
617649 then true
618- else (0 >= dO))
650+ else (0 >= dZ))
619651 then true
620- else (0 >= dP))
621- then throw("Wrong params")
622- else if ((size(dg.payments) != 1))
623- then throw("1 pmnt expd")
652+ else (0 >= bg))
653+ then an("Wrong params")
654+ else if ((size(dp.payments) != 1))
655+ then an("1 payment expected")
624656 else {
625- let dh = value(dg.payments[0])
626- let bH = toBase58String(value(dh.assetId))
627- let dT = dh.amount
628- let dU = dm(dT)
629- let cm = dU._1
630- let dV = dU._2
631- if ((10000000 > dT))
632- then throw("Wrong pmt amt")
657+ let dr = value(dp.payments[0])
658+ let bI = toBase58String(value(dr.assetId))
659+ let ed = dr.amount
660+ let ee = dw(ed)
661+ let ct = ee._1
662+ let ef = ee._2
663+ if (if (if ((dY > ct))
664+ then true
665+ else (dZ > ct))
666+ then true
667+ else (10000000 > ct))
668+ then an("wrong payment amount")
633669 else {
634- let bR = aX(bL)
635- let bT = aX(bM)
636- let dW = if ((bH == bL))
637- then if (if ((cm > bR))
638- then true
639- else (dN > cm))
640- then throw("invalid payment amount")
641- else $Tuple6((bR - cm), bT, (cm - dN), dO, 0, 0)
642- else if ((bH == bM))
643- then if (if ((cm > bT))
644- then true
645- else (dO > cm))
646- then throw("invalid payment amount")
647- else $Tuple6(bR, (bT - cm), 0, 0, (cm - dO), dN)
648- else throw("wrong pmtAssetId")
649- let dX = dW._1
650- let dY = dW._2
651- let dZ = dW._3
652- let ea = dW._4
653- let eb = dW._5
654- let ec = dW._6
655- let bk = invoke(dQ, "calcD", [toString(dX), toString(dY), az, h, i], nil)
656- 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))
670+ let bT = aZ(bM)
671+ let bU = aZ(bN)
672+ let eg = if ((bI == bM))
673+ then $Tuple6((bT - ct), bU, (ct - dY), dZ, 0, 0)
674+ else if ((bI == bN))
675+ then $Tuple6(bT, (bU - ct), 0, 0, (ct - dZ), dY)
676+ else an("wrong paymentAssetId")
677+ let eh = eg._1
678+ let ei = eg._2
679+ let ej = eg._3
680+ let ek = eg._4
681+ let el = eg._5
682+ let em = eg._6
683+ let bm = invoke(ea, "calcD", [toString(eh), toString(ei), aB, i, j], nil)
684+ let bl = invoke(ea, "calcD", [toString(toBigInt(((eh + ej) - em))), toString(toBigInt(((ei + el) - ek))), aB, i, j], nil)
685+ let en = bk(parseBigIntValue(at(bl)), parseBigIntValue(at(bm)), h)
686+ if ((en == en))
659687 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))
688+ let dR = ds(toString(dp.caller), toBase58String(dp.transactionId), AttachedPayment(fromBase58String(bM), dY), AttachedPayment(fromBase58String(bN), dZ), bh, true, true, ct, bI)
689+ let bf = dR._2
690+ let bL = dR._7
691+ let cj = dR._9
692+ let cV = dR._10
693+ let cW = dR._11
694+ let eo = be(toBigInt(bf), toBigInt(bg), toBigInt(bh))
695+ let cU = toInt(eo._2)
696+ let ep = invoke(aA, "emit", [cU], nil)
697+ if ((ep == ep))
670698 then {
671- let dH = {
672- let as = dF
673- if ($isInstanceOf(as, "Address"))
699+ let dS = {
700+ let au = ep
701+ if ($isInstanceOf(au, "Address"))
674702 then {
675- let dI = as
676- invoke(dI, "emit", [cL], nil)
703+ let dT = au
704+ invoke(dT, "emit", [cU], nil)
677705 }
678706 else unit
679707 }
680- if ((dH == dH))
708+ if ((dS == dS))
681709 then {
682- let dJ = if ((cM > 0))
683- then invoke(dE, "put", nil, [AttachedPayment(fromBase58String(bL), cM)])
710+ let dU = if ((cV > 0))
711+ then invoke(dO, "put", nil, [AttachedPayment(fromBase58String(bM), cV)])
684712 else nil
685- if ((dJ == dJ))
713+ if ((dU == dU))
686714 then {
687- let dK = if ((cN > 0))
688- then invoke(dE, "put", nil, [AttachedPayment(fromBase58String(bM), cN)])
715+ let dV = if ((cW > 0))
716+ then invoke(dO, "put", nil, [AttachedPayment(fromBase58String(bN), cW)])
689717 else nil
690- if ((dK == dK))
718+ if ((dV == dV))
691719 then {
692- let dL = if (dB)
720+ let dW = if (dL)
693721 then {
694- let dM = invoke(dD, "stake", nil, [AttachedPayment(dG, cL)])
695- if ((dM == dM))
722+ let dX = invoke(dN, "stake", nil, [AttachedPayment(bL, cU)])
723+ if ((dX == dX))
696724 then nil
697725 else throw("Strict value is not equal to itself.")
698726 }
699- else [ScriptTransfer(dg.caller, cL, dG)]
700- let eh = if ((dV > 0))
701- then [ScriptTransfer(aC, dV, fromBase58String(bH))]
727+ else [ScriptTransfer(dp.caller, cU, bL)]
728+ let eq = if ((ef > 0))
729+ then [ScriptTransfer(aE, ef, fromBase58String(bI))]
702730 else nil
703- ((cd ++ dL) ++ eh)
731+ ((cj ++ dW) ++ eq)
704732 }
705733 else throw("Strict value is not equal to itself.")
706734 }
717745
718746
719747
720-@Callable(dg)
721-func putForFree (ei) = if ((0 > ei))
722- then throw("Wrong slpg")
723- else if ((size(dg.payments) != 2))
724- then throw("2 pmnts expd")
748+@Callable(dp)
749+func putForFree (er) = if ((0 > er))
750+ then an("wrong slippage")
751+ else if ((size(dp.payments) != 2))
752+ then an("2 payments expected")
725753 else {
726- 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, "")
727- ee._9
754+ let dR = ds(toString(dp.caller), toBase58String(dp.transactionId), AttachedPayment(value(dp.payments[0]).assetId, value(dp.payments[0]).amount), dp.payments[1], er, false, false, 0, "")
755+ dR._9
728756 }
729757
730758
731759
732-@Callable(dg)
760+@Callable(dp)
733761 func get () = {
734- let cy = df(dg)
735- let ej = cy._1
736- let cc = cy._2
737- let cm = cy._3
738- let bH = cy._4
739- let cd = cy._5
740- let ek = invoke(ay, "burn", [cm], [AttachedPayment(bH, cm)])
741- if ((ek == ek))
742- then cd
762+ let cE = do(dp)
763+ let es = cE._1
764+ let ci = cE._2
765+ let ct = cE._3
766+ let bI = cE._4
767+ let cj = cE._5
768+ let et = invoke(aA, "burn", [ct], [AttachedPayment(bI, ct)])
769+ if ((et == et))
770+ then cj
743771 else throw("Strict value is not equal to itself.")
744772 }
745773
746774
747775
748-@Callable(dg)
749-func getOneTkn (el,em,en,eo,bf) = if ((size(dg.payments) != 1))
750- then throw("1 pmnt expd")
776+@Callable(dp)
777+func getOneTkn (eu,ev,ew,ex,bh) = if ((size(dp.payments) != 1))
778+ then an("1 payment expected")
751779 else {
752- let bw = aD()
753- let bK = bw[r]
754- let bL = bw[s]
755- let bM = bw[t]
756- let bN = parseIntValue(bw[u])
757- let bO = parseIntValue(bw[v])
758- let bP = bw[q]
759- let dC = aH()
760- let dQ = valueOrErrorMessage(addressFromString(dC[A]), "Wr sl addr")
761- let dh = value(dg.payments[0])
762- let dS = valueOrElse(getString(this, ab()), "")
763- let bJ = if ((dS == toString(dg.caller)))
764- then dg.originCaller
765- else dg.caller
766- let bG = toBase58String(dg.transactionId)
767- let bH = value(dh.assetId)
768- let cm = dh.amount
769- if ((1000000000 > cm))
770- then throw("Min pmt 10 LP")
771- else if (if (if ((0 > bf))
780+ let bx = aF()
781+ let bL = bx[s]
782+ let bM = bx[t]
783+ let bN = bx[u]
784+ let bO = parseIntValue(bx[v])
785+ let bP = parseIntValue(bx[w])
786+ let bQ = bx[r]
787+ let dM = aJ()
788+ let ea = valueOrErrorMessage(addressFromString(dM[B]), "Wrong gwxRewardContract address")
789+ let dr = value(dp.payments[0])
790+ let ec = valueOrElse(getString(this, ac()), "")
791+ let bK = if ((ec == toString(dp.caller)))
792+ then dp.originCaller
793+ else dp.caller
794+ let bH = toBase58String(dp.transactionId)
795+ let bI = value(dr.assetId)
796+ let ct = dr.amount
797+ if ((1000000000 > ct))
798+ then an("Min payment 10 LP")
799+ else if (if (if ((0 > bh))
772800 then true
773- else (0 > el))
801+ else (0 > eu))
774802 then true
775- else (0 > en))
776- then throw("Wrong params")
777- else if ((bK != toBase58String(bH)))
778- then throw("Wrong LP")
803+ else (0 > ew))
804+ then an("Wrong params")
805+ else if ((bL != toBase58String(bI)))
806+ then an("Wrong LP")
779807 else {
780- let cy = bF(toBase58String(dg.transactionId), toBase58String(bH), cm, dg.caller)
781- let ep = cy._1
782- let eq = cy._2
783- let bR = aX(bL)
784- let bT = aX(bM)
785- let er = if ((eo == bL))
786- then $Tuple7((bR - ep), (bT - eq), el, eq, 0, 0, (ep + el))
787- else if ((eo == bM))
788- then $Tuple7((bR - ep), (bT - eq), 0, 0, el, ep, (eq + el))
789- else throw("wrong outAssetId")
790- let dX = er._1
791- let dY = er._2
792- let dZ = er._3
793- let ea = er._4
794- let eb = er._5
795- let ec = er._6
796- let es = er._7
797- if (if ((0 > dZ))
808+ let cE = bG(toBase58String(dp.transactionId), toBase58String(bI), ct, dp.caller)
809+ let ey = cE._1
810+ let ez = cE._2
811+ let bT = aZ(bM)
812+ let bU = aZ(bN)
813+ let eA = if ((ex == bM))
814+ then $Tuple7((bT - ey), (bU - ez), eu, ez, 0, 0, (ey + eu))
815+ else if ((ex == bN))
816+ then $Tuple7((bT - ey), (bU - ez), 0, 0, eu, ey, (ez + eu))
817+ else an("wrong outAssetId")
818+ let eh = eA._1
819+ let ei = eA._2
820+ let ej = eA._3
821+ let ek = eA._4
822+ let el = eA._5
823+ let em = eA._6
824+ let eB = eA._7
825+ if (if ((0 > ej))
798826 then true
799- else (0 > eb))
800- then throw("Wrong calc")
827+ else (0 > el))
828+ then an("Wrong calc")
801829 else {
802- let bk = invoke(dQ, "calcD", [toString(dX), toString(dY), az, h, i], nil)
803- let bj = invoke(dQ, "calcD", [toString(((dX - dZ) + ec)), toString(((dY + ea) - eb)), az, h, i], nil)
804- let ed = bi(parseBigIntValue(ar(bj)), parseBigIntValue(ar(bk)), g)
805- if ((ed == ed))
830+ let bm = invoke(ea, "calcD", [toString(eh), toString(ei), aB, i, j], nil)
831+ let bl = invoke(ea, "calcD", [toString(((eh - ej) + em)), toString(((ei + ek) - el)), aB, i, j], nil)
832+ let en = bk(parseBigIntValue(at(bl)), parseBigIntValue(at(bm)), h)
833+ if ((en == en))
806834 then {
807- let et = dm(es)._1
808- let eu = bc(toBigInt(et), toBigInt(en), toBigInt(bf))
809- if ((eu == eu))
835+ let eC = be(toBigInt(eB), toBigInt(ew), toBigInt(bh))
836+ if ((eC == eC))
810837 then {
811- let ev = if ((eo == bL))
812- then $Tuple2(toInt(eu._2), 0)
813- else $Tuple2(0, toInt(eu._2))
814- let ew = ev._1
815- let ex = ev._2
816- let ey = (ew + ex)
817- let dV = (es - et)
818- let ez = if ((eo == "WAVES"))
838+ let eD = if ((ex == bM))
839+ then $Tuple2(toInt(eC._2), 0)
840+ else $Tuple2(0, toInt(eC._2))
841+ let eE = eD._1
842+ let eF = eD._2
843+ let eG = (eE + eF)
844+ let eH = dw(eG)
845+ let eI = eH._1
846+ let ef = eH._2
847+ let eJ = if ((ex == "WAVES"))
819848 then unit
820- else fromBase58String(eo)
821- let eh = if ((dV > 0))
822- then [ScriptTransfer(aC, dV, ez)]
849+ else fromBase58String(ex)
850+ let eq = if ((ef > 0))
851+ then [ScriptTransfer(aE, ef, eJ)]
823852 else nil
824- let eA = aZ(C(bT, bO), C(bR, bN))
825- let eB = F(eA, a)
826- 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)]
827- if ((cd == cd))
853+ let eK = if ((bO >= bP))
854+ then bO
855+ else bP
856+ if ((eK == eK))
828857 then {
829- let eC = invoke(ay, "burn", [cm], [AttachedPayment(bH, cm)])
830- if ((eC == eC))
831- then (cd ++ eh)
858+ let eL = bb(D(bU, eK), D(bT, eK))
859+ let eM = G(eL, b)
860+ let cj = [ScriptTransfer(bK, eI, eJ), StringEntry(Y(toString(bK), bH), aV(eE, eF, ct, eM, height, lastBlock.timestamp)), IntegerEntry(R(), eM), IntegerEntry(S(height, lastBlock.timestamp), eM)]
861+ if ((cj == cj))
862+ then {
863+ let eN = invoke(aA, "burn", [ct], [AttachedPayment(bI, ct)])
864+ if ((eN == eN))
865+ then (cj ++ eq)
866+ else throw("Strict value is not equal to itself.")
867+ }
832868 else throw("Strict value is not equal to itself.")
833869 }
834870 else throw("Strict value is not equal to itself.")
842878
843879
844880
845-@Callable(dg)
846-func getNoLess (eD,eE) = {
847- let cy = df(dg)
848- let cb = cy._1
849- let cc = cy._2
850- let cm = cy._3
851- let bH = cy._4
852- let cd = cy._5
853- if ((eD > cb))
854- then throw(((("Failed: " + toString(cb)) + " < ") + toString(eD)))
855- else if ((eE > cc))
856- then throw(((("Failed: " + toString(cc)) + " < ") + toString(eE)))
857- else {
858- let eF = invoke(ay, "burn", [cm], [AttachedPayment(bH, cm)])
859- if ((eF == eF))
860- then cd
861- else throw("Strict value is not equal to itself.")
862- }
881+@Callable(dp)
882+func getNoLess (eO,eP) = {
883+ let cE = do(dp)
884+ let ch = cE._1
885+ let ci = cE._2
886+ let ct = cE._3
887+ let bI = cE._4
888+ let cj = cE._5
889+ let eQ = if ((ch >= eO))
890+ then true
891+ else an(((("Failed: " + toString(ch)) + " < ") + toString(eO)))
892+ if ((eQ == eQ))
893+ then {
894+ let eR = if ((ci >= eP))
895+ then true
896+ else an(((("Failed: " + toString(ci)) + " < ") + toString(eP)))
897+ if ((eR == eR))
898+ then {
899+ let eS = invoke(aA, "burn", [ct], [AttachedPayment(bI, ct)])
900+ if ((eS == eS))
901+ then cj
902+ else throw("Strict value is not equal to itself.")
903+ }
904+ else throw("Strict value is not equal to itself.")
905+ }
906+ else throw("Strict value is not equal to itself.")
863907 }
864908
865909
866910
867-@Callable(dg)
868-func unstakeAndGet (dn) = {
869- let eG = if ((size(dg.payments) != 0))
870- then throw("No pmnts expd")
911+@Callable(dp)
912+func unstakeAndGet (dx) = {
913+ let dq = if ((size(dp.payments) != 0))
914+ then an("no payments expected")
871915 else true
872- if ((eG == eG))
916+ if ((dq == dq))
873917 then {
874- let bw = aD()
875- let eH = aH()
876- let dG = fromBase58String(bw[r])
877- let eI = valueOrErrorMessage(addressFromString(eH[y]), "Wr st addr")
878- let eJ = invoke(eI, "unstake", [toBase58String(dG), dn], nil)
879- if ((eJ == eJ))
918+ let bx = aF()
919+ let eT = aJ()
920+ let bL = fromBase58String(bx[s])
921+ let eU = valueOrErrorMessage(addressFromString(eT[z]), "wrong")
922+ let eV = invoke(eU, "unstake", [toBase58String(bL), dx], nil)
923+ if ((eV == eV))
880924 then {
881- let cy = bF(toBase58String(dg.transactionId), toBase58String(dG), dn, dg.caller)
882- let bP = parseIntValue(cy._9)
883- let cd = cy._10
884- let eK = if (if (aA())
925+ let cE = bG(toBase58String(dp.transactionId), toBase58String(bL), dx, dp.caller)
926+ let bQ = parseIntValue(cE._9)
927+ let cj = cE._10
928+ let eW = if (if (aC())
885929 then true
886- else (bP == o))
887- then throw(("Blocked: " + toString(bP)))
930+ else (bQ == p))
931+ then an(("Blocked: " + toString(bQ)))
888932 else true
889- if ((eK == eK))
933+ if ((eW == eW))
890934 then {
891- let eL = invoke(ay, "burn", [dn], [AttachedPayment(dG, dn)])
892- if ((eL == eL))
893- then cd
935+ let eX = invoke(aA, "burn", [dx], [AttachedPayment(bL, dx)])
936+ if ((eX == eX))
937+ then cj
894938 else throw("Strict value is not equal to itself.")
895939 }
896940 else throw("Strict value is not equal to itself.")
902946
903947
904948
905-@Callable(dg)
906-func activate (eM,eN) = if ((toString(dg.caller) != toString(ay)))
907- then throw("denied")
908- else $Tuple2([StringEntry(Y(), eM), StringEntry(Z(), eN)], "success")
949+@Callable(dp)
950+func activate (eY,eZ) = if ((toString(dp.caller) != toString(aA)))
951+ then an("denied")
952+ else $Tuple2([StringEntry(Z(), eY), StringEntry(aa(), eZ)], "success")
909953
910954
911955
912-@Callable(dg)
913-func setS (eO,eK) = if ((toString(dg.caller) != au(this, ab())))
914- then ds
915- else [StringEntry(eO, eK)]
956+@Callable(dp)
957+func setS (fa,eW) = if ((toString(dp.caller) != aw(this, ac())))
958+ then dC
959+ else [StringEntry(fa, eW)]
916960
917961
918962
919-@Callable(dg)
920-func setI (eO,eK) = if ((toString(dg.caller) != au(this, ab())))
921- then ds
922- else [IntegerEntry(eO, eK)]
963+@Callable(dp)
964+func setI (fa,eW) = if ((toString(dp.caller) != aw(this, ac())))
965+ then dC
966+ else [IntegerEntry(fa, eW)]
923967
924968
925969
926-@Callable(dg)
927-func getPoolConfigWrapperREADONLY () = $Tuple2(nil, aD())
970+@Callable(dp)
971+func getPoolConfigWrapperREADONLY () = $Tuple2(nil, aF())
928972
929973
930974
931-@Callable(dg)
932-func getAccBalanceWrapperREADONLY (aY) = $Tuple2(nil, aX(aY))
975+@Callable(dp)
976+func getAccBalanceWrapperREADONLY (ba) = $Tuple2(nil, aZ(ba))
933977
934978
935979
936-@Callable(dg)
937-func calcPricesWrapperREADONLY (bq,br,bv) = {
938- let eP = bu(bq, br, bv)
939- $Tuple2(nil, [toString(eP[0]), toString(eP[1]), toString(eP[2])])
980+@Callable(dp)
981+func calcPricesWrapperREADONLY (br,bs,bw) = {
982+ let fb = bv(br, bs, bw)
983+ $Tuple2(nil, [toString(fb[0]), toString(fb[1]), toString(fb[2])])
940984 }
941985
942986
943987
944-@Callable(dg)
945-func fromX18WrapperREADONLY (G,eQ) = $Tuple2(nil, F(parseBigIntValue(G), eQ))
988+@Callable(dp)
989+func fromX18WrapperREADONLY (H,fc) = $Tuple2(nil, G(parseBigIntValue(H), fc))
946990
947991
948992
949-@Callable(dg)
950-func toX18WrapperREADONLY (D,E) = $Tuple2(nil, toString(C(D, E)))
993+@Callable(dp)
994+func toX18WrapperREADONLY (E,F) = $Tuple2(nil, toString(D(E, F)))
951995
952996
953997
954-@Callable(dg)
955-func calcPriceBigIntWrapperREADONLY (ba,bb) = $Tuple2(nil, toString(aZ(parseBigIntValue(ba), parseBigIntValue(bb))))
998+@Callable(dp)
999+func calcPriceBigIntWrapperREADONLY (bc,bd) = $Tuple2(nil, toString(bb(parseBigIntValue(bc), parseBigIntValue(bd))))
9561000
9571001
9581002
959-@Callable(dg)
960-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, ""))
1003+@Callable(dp)
1004+func estimatePutOperationWrapperREADONLY (bH,bh,cm,fd,co,fe,ff,cq,cr) = $Tuple2(nil, ck(bH, bh, cm, fd, co, fe, ff, cq, cr, false, 0, ""))
9611005
9621006
9631007
964-@Callable(dg)
965-func estimateGetOperationWrapperREADONLY (bG,eS,bI,eR) = {
966- let cy = bF(bG, eS, bI, addressFromStringValue(eR))
967- $Tuple2(nil, $Tuple10(cy._1, cy._2, cy._3, cy._4, cy._5, cy._6, cy._7, toString(cy._8), cy._9, cy._10))
1008+@Callable(dp)
1009+func estimateGetOperationWrapperREADONLY (bH,fg,bJ,ff) = {
1010+ let cE = bG(bH, fg, bJ, addressFromStringValue(ff))
1011+ $Tuple2(nil, $Tuple10(cE._1, cE._2, cE._3, cE._4, cE._5, cE._6, cE._7, toString(cE._8), cE._9, cE._10))
9681012 }
9691013
9701014
971-@Verifier(eT)
972-func eU () = {
973- let eV = {
974- let as = dp()
975- if ($isInstanceOf(as, "ByteVector"))
976- then {
977- let du = as
978- du
979- }
980- else if ($isInstanceOf(as, "Unit"))
981- then eT.senderPublicKey
982- else throw("Match error")
983- }
984- let as = eT
985- if ($isInstanceOf(as, "Order"))
1015+@Verifier(fh)
1016+func fi () = {
1017+ let au = fh
1018+ if ($isInstanceOf(au, "Order"))
9861019 then {
987- let cT = as
988- let eW = aB()
989- let eX = cS(cT)
990- let eY = sigVerify(cT.bodyBytes, cT.proofs[0], cT.senderPublicKey)
991- let eZ = sigVerify(cT.bodyBytes, cT.proofs[1], eW)
992- if (if (if (eX)
993- then eY
1020+ let dc = au
1021+ let fj = aD()
1022+ let aq = db(dc)
1023+ let fk = sigVerify(dc.bodyBytes, dc.proofs[0], dc.senderPublicKey)
1024+ let fl = sigVerify(dc.bodyBytes, dc.proofs[1], fj)
1025+ if (if (if (aq)
1026+ then fk
9941027 else false)
995- then eZ
1028+ then fl
9961029 else false)
9971030 then true
998- else an(eX, eY, eZ)
1031+ else ap(aq, fk, fl)
9991032 }
1000- else if ($isInstanceOf(as, "SetScriptTransaction"))
1001- then {
1002- let dq = as
1003- let fa = blake2b256(value(dq.script))
1004- let fb = fromBase64String(value(getString(ay, am())))
1005- let fc = scriptHash(this)
1006- if (if ((fb == fa))
1007- then (fc != fa)
1008- else false)
1009- then true
1010- else sigVerify(eT.bodyBytes, eT.proofs[0], eV)
1033+ else {
1034+ let fm = {
1035+ let fn = dz()
1036+ if ($isInstanceOf(fn, "ByteVector"))
1037+ then {
1038+ let dE = fn
1039+ dE
1040+ }
1041+ else if ($isInstanceOf(fn, "Unit"))
1042+ then fh.senderPublicKey
1043+ else throw("Match error")
10111044 }
1012- else sigVerify(eT.bodyBytes, eT.proofs[0], eV)
1045+ sigVerify(fh.bodyBytes, fh.proofs[0], fm)
1046+ }
10131047 }
10141048
Full:
OldNewDifferences
11 {-# STDLIB_VERSION 6 #-}
22 {-# SCRIPT_TYPE ACCOUNT #-}
33 {-# CONTENT_TYPE DAPP #-}
4-let a = 100000000
4+let a = 1000000
55
6-let b = toBigInt(100000000)
6+let b = 100000000
77
8-let c = toBigInt(1000000000000000000)
8+let c = toBigInt(100000000)
99
10-let d = 1000
10+let d = toBigInt(1000000000000000000)
1111
12-let e = toBigInt(0)
12+let e = 1000
1313
14-let f = toBigInt(1)
14+let f = toBigInt(0)
1515
16-let g = toBigInt((a - ((a * 1) / a)))
16+let g = toBigInt(1)
1717
18-let h = "100"
18+let h = toBigInt((b - ((b * 1) / b)))
1919
20-let i = "1"
20+let i = "100"
2121
22-let j = "__"
22+let j = "1"
2323
24-let k = ""
24+let k = "__"
2525
26-let l = 1
26+let l = ""
2727
28-let m = 2
28+let m = 1
2929
30-let n = 3
30+let n = 2
3131
32-let o = 4
32+let o = 3
3333
34-let p = 1
34+let p = 4
3535
36-let q = 2
36+let q = 1
3737
38-let r = 3
38+let r = 2
3939
40-let s = 4
40+let s = 3
4141
42-let t = 5
42+let t = 4
4343
44-let u = 6
44+let u = 5
4545
46-let v = 7
46+let v = 6
4747
48-let w = 8
48+let w = 7
4949
50-let x = 9
50+let x = 8
5151
52-let y = 1
52+let y = 9
5353
54-let z = 7
54+let z = 1
5555
56-let A = 10
56+let A = 7
5757
58-let B = 0
58+let B = 10
5959
60-func C (D,E) = fraction(toBigInt(D), c, toBigInt(E))
60+let C = 0
61+
62+func D (E,F) = fraction(toBigInt(E), d, toBigInt(F))
6163
6264
63-func F (G,H) = toInt(fraction(G, toBigInt(H), c))
65+func G (H,I) = toInt(fraction(H, toBigInt(I), d))
6466
6567
66-func I (J,K,L) = fraction(J, K, L)
68+func J (K,L,M) = fraction(K, L, M)
6769
6870
69-func M (G) = if ((e > G))
70- then -(G)
71- else G
71+func N (H) = if ((f > H))
72+ then -(H)
73+ else H
7274
7375
74-func N () = "%s__factoryContract"
76+func O () = "%s__factoryContract"
7577
7678
77-func O () = "%s__managerPublicKey"
79+func P () = "%s__managerPublicKey"
7880
7981
80-func P () = "%s__pendingManagerPublicKey"
82+func Q () = "%s__pendingManagerPublicKey"
8183
8284
83-func Q () = "%s%s__price__last"
85+func R () = "%s%s__price__last"
8486
8587
86-func R (S,T) = makeString(["%s%s%d%d__price__history", toString(S), toString(T)], j)
88+func S (T,U) = makeString(["%s%s%d%d__price__history", toString(T), toString(U)], k)
8789
8890
89-func U (V,W) = ((("%s%s%s__P__" + V) + "__") + W)
91+func V (W,X) = ((("%s%s%s__P__" + W) + "__") + X)
9092
9193
92-func X (V,W) = ((("%s%s%s__G__" + V) + "__") + W)
94+func Y (W,X) = ((("%s%s%s__G__" + W) + "__") + X)
9395
9496
95-func Y () = "%s__amountAsset"
97+func Z () = "%s__amountAsset"
9698
9799
98-func Z () = "%s__priceAsset"
100+func aa () = "%s__priceAsset"
99101
100102
101-func aa () = "%s__amp"
103+func ab () = "%s__amp"
102104
103105
104-func ab () = "%s__addonAddr"
106+func ac () = "%s__addonAddr"
105107
106108
107-let ac = "%s__feePermille"
109+let ad = "%s__feePermille"
108110
109-let ad = valueOrElse(getInteger(this, ac), B)
111+let ae = valueOrElse(getInteger(this, ad), C)
110112
111-func ae () = "%s__factoryConfig"
113+func af () = "%s__factoryConfig"
112114
113115
114-func af () = "%s%s__matcher__publicKey"
116+func ag () = "%s%s__matcher__publicKey"
115117
116118
117-func ag (ah,ai) = (((("%d%d%s__" + ah) + "__") + ai) + "__config")
119+func ah (ai,aj) = (((("%d%d%s__" + ai) + "__") + aj) + "__config")
118120
119121
120-func aj (ak) = ("%s%s%s__mappings__baseAsset2internalId__" + ak)
122+func ak (al) = ("%s%s%s__mappings__baseAsset2internalId__" + al)
121123
122124
123-func al () = "%s__shutdown"
125+func am () = "%s__shutdown"
124126
125127
126-func am () = "%s__allowedLpStableScriptHash"
128+func an (ao) = throw(makeString(["lp_stable.ride:", ao], " "))
127129
128130
129-func an (ao,ap,aq) = throw(((((("Failed: ordValid=" + toString(ao)) + " sndrValid=") + toString(ap)) + " mtchrValid=") + toString(aq)))
131+func ap (aq,ar,as) = an(((((("Failed: ordValid=" + toString(aq)) + " sndrValid=") + toString(ar)) + " mtchrValid=") + toString(as)))
130132
131133
132-func ar (G) = {
133- let as = G
134- if ($isInstanceOf(as, "String"))
134+func at (H) = {
135+ let au = H
136+ if ($isInstanceOf(au, "String"))
135137 then {
136- let at = as
137- at
138+ let av = au
139+ av
138140 }
139- else throw("fail cast to String")
141+ else an("fail cast to String")
140142 }
141143
142144
143-func au (av,aw) = valueOrErrorMessage(getString(av, aw), makeString(["mandatory ", toString(av), ".", aw, " not defined"], ""))
145+func aw (ax,ay) = valueOrErrorMessage(getString(ax, ay), makeString(["mandatory ", toString(ax), ".", ay, " not defined"], ""))
144146
145147
146-func ax (av,aw) = valueOrErrorMessage(getInteger(av, aw), makeString(["mandatory ", toString(av), ".", aw, " not defined"], ""))
148+func az (ax,ay) = valueOrErrorMessage(getInteger(ax, ay), makeString(["mandatory ", toString(ax), ".", ay, " not defined"], ""))
147149
148150
149-let ay = addressFromStringValue(au(this, N()))
151+let aA = addressFromStringValue(aw(this, O()))
150152
151-let az = au(this, aa())
153+let aB = aw(this, ab())
152154
153-func aA () = valueOrElse(getBoolean(ay, al()), false)
155+func aC () = valueOrElse(getBoolean(aA, am()), false)
154156
155157
156-func aB () = fromBase58String(au(ay, af()))
158+func aD () = fromBase58String(aw(aA, ag()))
157159
158160
159-let aC = addressFromPublicKey(aB())
161+let aE = addressFromPublicKey(aD())
160162
161-func aD () = {
162- let aE = au(this, Y())
163- let aF = au(this, Z())
164- let aG = ax(ay, aj(aF))
165- let ah = ax(ay, aj(aE))
166- split(au(ay, ag(toString(ah), toString(aG))), j)
163+func aF () = {
164+ let aG = aw(this, Z())
165+ let aH = aw(this, aa())
166+ let aI = az(aA, ak(aH))
167+ let ai = az(aA, ak(aG))
168+ split(aw(aA, ah(toString(ai), toString(aI))), k)
167169 }
168170
169171
170-func aH () = split(au(ay, ae()), j)
172+func aJ () = split(aw(aA, af()), k)
171173
172174
173-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)
175+func aK (aL,aM,aN,aO,aP,aQ,aR,aS,aT,aU) = makeString(["%d%d%d%d%d%d%d%d%d%d", toString(aL), toString(aM), toString(aN), toString(aO), toString(aP), toString(aQ), toString(aR), toString(aS), toString(aT), toString(aU)], k)
174176
175177
176-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)
178+func aV (aW,aX,aY,aO,aR,aS) = makeString(["%d%d%d%d%d%d", toString(aW), toString(aX), toString(aY), toString(aO), toString(aR), toString(aS)], k)
177179
178180
179-func aX (aY) = if ((aY == "WAVES"))
181+func aZ (ba) = if ((ba == "WAVES"))
180182 then wavesBalance(this).available
181- else assetBalance(this, fromBase58String(aY))
183+ else assetBalance(this, fromBase58String(ba))
182184
183185
184-func aZ (ba,bb) = fraction(ba, c, bb)
186+func bb (bc,bd) = fraction(bc, d, bd)
185187
186188
187-func bc (bd,be,bf) = {
188- let bg = fraction((bd - be), b, be)
189- let bh = ((bf - M(bg)) > e)
190- if (!(bh))
191- then throw(("Big slpg: " + toString(bg)))
192- else $Tuple2(bh, min([bd, be]))
189+func be (bf,bg,bh) = {
190+ let bi = fraction((bf - bg), c, bg)
191+ let bj = ((bh - N(bi)) > f)
192+ if (!(bj))
193+ then an(("Big slippage: " + toString(bi)))
194+ else $Tuple2(bj, min([bf, bg]))
193195 }
194196
195197
196-func bi (bj,bk,bl) = {
197- let bg = fraction(bk, b, bj)
198- let bm = (bl > bg)
199- if (if (bm)
198+func bk (bl,bm,bh) = {
199+ let bi = fraction(bm, c, bl)
200+ let bn = (bh > bi)
201+ if (if (bn)
200202 then true
201- else (bk > bj))
202- then throw(((((((toString(bk) + " ") + toString(bj)) + " ") + toString(bg)) + " ") + toString(bl)))
203- else bm
203+ else (bm > bl))
204+ then an(((((((toString(bm) + " ") + toString(bl)) + " ") + toString(bi)) + " ") + toString(bh)))
205+ else bn
204206 }
205207
206208
207-func bn (bo,bp,bq,br) = {
208- let bs = C(bq, bo)
209- let bt = C(br, bp)
210- aZ(bt, bs)
209+func bo (bp,bq,br,bs) = {
210+ let bt = D(br, bp)
211+ let bu = D(bs, bq)
212+ bb(bu, bt)
211213 }
212214
213215
214-func bu (bq,br,bv) = {
215- let bw = aD()
216- let bx = parseIntValue(bw[u])
217- let by = parseIntValue(bw[v])
218- let bz = bn(bx, by, bq, br)
219- let bb = C(bq, bx)
220- let ba = C(br, by)
221- let bA = C(bv, a)
222- let bB = aZ(bb, bA)
223- let bC = aZ(ba, bA)
224-[bz, bB, bC]
216+func bv (br,bs,bw) = {
217+ let bx = aF()
218+ let by = parseIntValue(bx[v])
219+ let bz = parseIntValue(bx[w])
220+ let bA = bo(by, bz, br, bs)
221+ let bd = D(br, by)
222+ let bc = D(bs, bz)
223+ let bB = D(bw, b)
224+ let bC = bb(bd, bB)
225+ let bD = bb(bc, bB)
226+[bA, bC, bD]
225227 }
226228
227229
228-func bD (bq,br,bv) = {
229- let bE = bu(bq, br, bv)
230-[F(bE[0], a), F(bE[1], a), F(bE[2], a)]
230+func bE (br,bs,bw) = {
231+ let bF = bv(br, bs, bw)
232+[G(bF[0], b), G(bF[1], b), G(bF[2], b)]
231233 }
232234
233235
234-func bF (bG,bH,bI,bJ) = {
235- let bw = aD()
236- let bK = bw[r]
237- let bL = bw[s]
238- let bM = bw[t]
239- let bN = parseIntValue(bw[u])
240- let bO = parseIntValue(bw[v])
241- let bP = bw[q]
242- let bQ = valueOrErrorMessage(assetInfo(fromBase58String(bK)), "Wrong LP id").quantity
243- if ((bK != bH))
244- then throw("Wrong pmt asset")
245- else {
246- let bR = aX(bL)
247- let bS = C(bR, bN)
248- let bT = aX(bM)
249- let bU = C(bT, bO)
250- let bV = aZ(bU, bS)
251- let bW = F(bV, a)
252- let bX = C(bI, a)
253- let bY = C(bQ, a)
254- let bZ = fraction(bS, bX, bY)
255- let ca = fraction(bU, bX, bY)
256- let cb = F(bZ, bN)
257- let cc = F(ca, bO)
258- let cd = if ((bG == ""))
236+func bG (bH,bI,bJ,bK) = {
237+ let bx = aF()
238+ let bL = bx[s]
239+ let bM = bx[t]
240+ let bN = bx[u]
241+ let bO = parseIntValue(bx[v])
242+ let bP = parseIntValue(bx[w])
243+ let bQ = bx[r]
244+ let bR = valueOrErrorMessage(assetInfo(fromBase58String(bL)), "Wrong LP id").quantity
245+ let bS = if ((bL == bI))
246+ then true
247+ else an("Wrong payment asset")
248+ if ((bS == bS))
249+ then {
250+ let bT = aZ(bM)
251+ let bU = aZ(bN)
252+ let bV = fraction(bT, a, bO)
253+ let bW = fraction(bU, a, bP)
254+ let bX = D(bV, a)
255+ let bY = D(bW, a)
256+ let bZ = bb(bY, bX)
257+ let ca = G(bZ, b)
258+ let cb = D(bJ, b)
259+ let cc = D(bR, b)
260+ let cd = fraction(bX, cb, cc)
261+ let ce = fraction(bY, cb, cc)
262+ let cf = G(cd, a)
263+ let cg = G(ce, a)
264+ let ch = fraction(cf, bO, a)
265+ let ci = fraction(cg, bP, a)
266+ let cj = if ((bH == ""))
259267 then nil
260- else [ScriptTransfer(bJ, cb, if ((bL == "WAVES"))
268+ else [ScriptTransfer(bK, ch, if ((bM == "WAVES"))
261269 then unit
262- else fromBase58String(bL)), ScriptTransfer(bJ, cc, if ((bM == "WAVES"))
270+ else fromBase58String(bM)), ScriptTransfer(bK, ci, if ((bN == "WAVES"))
263271 then unit
264- 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)]
265- $Tuple10(cb, cc, bL, bM, bR, bT, bQ, bV, bP, cd)
272+ else fromBase58String(bN)), StringEntry(Y(toString(bK), bH), aV(ch, ci, bJ, ca, height, lastBlock.timestamp)), IntegerEntry(R(), ca), IntegerEntry(S(height, lastBlock.timestamp), ca)]
273+ $Tuple10(ch, ci, bM, bN, bT, bU, bR, bZ, bQ, cj)
266274 }
275+ else throw("Strict value is not equal to itself.")
267276 }
268277
269278
270-func ce (bG,bf,cf,cg,ch,ci,bJ,cj,ck,cl,cm,cn) = {
271- let bw = aD()
272- let bK = fromBase58String(bw[r])
273- let co = bw[s]
274- let cp = bw[t]
275- let cq = bw[w]
276- let cr = bw[x]
277- let cs = parseIntValue(bw[u])
278- let ct = parseIntValue(bw[v])
279- let bP = bw[q]
280- let cu = valueOrErrorMessage(assetInfo(bK), "Wr lp as").quantity
281- let bR = if (cj)
282- then aX(co)
283- else if (if (cl)
284- then (cn == co)
279+func ck (bH,cl,cm,cn,co,cp,bK,cq,cr,cs,ct,cu) = {
280+ let bx = aF()
281+ let bL = fromBase58String(bx[s])
282+ let cv = bx[t]
283+ let cw = bx[u]
284+ let cx = bx[x]
285+ let cy = bx[y]
286+ let bO = parseIntValue(bx[v])
287+ let bP = parseIntValue(bx[w])
288+ let bQ = bx[r]
289+ let bR = valueOrErrorMessage(assetInfo(bL), "Wrong lp asset").quantity
290+ let bT = if (cq)
291+ then aZ(cv)
292+ else if (if (cs)
293+ then (cu == cv)
285294 else false)
286- then (aX(co) - cm)
287- else if (cl)
288- then aX(co)
289- else (aX(co) - cf)
290- let bT = if (cj)
291- then aX(cp)
292- else if (if (cl)
293- then (cn == cp)
295+ then (aZ(cv) - ct)
296+ else if (cs)
297+ then aZ(cv)
298+ else (aZ(cv) - cm)
299+ let bU = if (cq)
300+ then aZ(cw)
301+ else if (if (cs)
302+ then (cu == cw)
294303 else false)
295- then (aX(cp) - cm)
296- else if (cl)
297- then aX(cp)
298- else (aX(cp) - ch)
299- let cv = C(cf, cs)
300- let cw = C(ch, ct)
301- let cx = aZ(cw, cv)
302- let bS = C(bR, cs)
303- let bU = C(bT, ct)
304- let cy = if ((cu == 0))
304+ then (aZ(cw) - ct)
305+ else if (cs)
306+ then aZ(cw)
307+ else (aZ(cw) - co)
308+ let bV = fraction(bT, a, bO)
309+ let bW = fraction(bU, a, bP)
310+ let cz = fraction(cm, a, bO)
311+ let cA = fraction(co, a, bP)
312+ let cB = D(cz, a)
313+ let cC = D(cA, a)
314+ let cD = bb(cC, cB)
315+ let bX = D(bV, a)
316+ let bY = D(bW, a)
317+ let cE = if ((bR == 0))
305318 then {
306- let bV = e
307- let cz = e
308- let bA = pow((cv * cw), 0, toBigInt(5), 1, 0, DOWN)
309- $Tuple5(F(bA, a), F(cv, cs), F(cw, ct), aZ((bU + cw), (bS + cv)), cz)
319+ let bZ = f
320+ let cF = f
321+ let cG = pow((cB * cC), 0, toBigInt(5), 1, 0, DOWN)
322+ $Tuple5(G(cG, b), G(cB, a), G(cC, a), bb((bY + cC), (bX + cB)), cF)
310323 }
311324 else {
312- let bV = aZ(bU, bS)
313- let cA = fraction(M((bV - cx)), c, bV)
314- let cz = C(bf, a)
315- if (if ((bV != e))
316- then (cA > cz)
325+ let bZ = bb(bY, bX)
326+ let cH = fraction(N((bZ - cD)), d, bZ)
327+ let cF = D(cl, b)
328+ let cI = if (((if ((bZ != f))
329+ then (cH > cF)
330+ else false) == false))
331+ then true
332+ else an(((("Price slippage " + toString(cH)) + " > ") + toString(cF)))
333+ if ((cI == cI))
334+ then {
335+ let cc = D(bR, b)
336+ let cJ = fraction(cB, bZ, d)
337+ let cK = fraction(cC, d, bZ)
338+ let cL = if ((cJ > cC))
339+ then $Tuple2(cK, cB)
340+ else $Tuple2(cB, cJ)
341+ let cM = cL._1
342+ let cN = cL._2
343+ let cG = fraction(cc, cN, bY)
344+ $Tuple5(G(cG, b), G(cM, a), G(cN, a), bZ, cF)
345+ }
346+ else throw("Strict value is not equal to itself.")
347+ }
348+ let cO = cE._1
349+ let cP = fraction(cE._2, bO, a)
350+ let cQ = fraction(cE._3, bP, a)
351+ let cR = G(cE._4, b)
352+ let cS = G(cE._5, b)
353+ let cT = if ((cO > 0))
354+ then true
355+ else an("LP <= 0")
356+ if ((cT == cT))
357+ then {
358+ let cU = if (!(cr))
359+ then 0
360+ else cO
361+ let cV = (cm - cP)
362+ let cW = (co - cQ)
363+ let cX = if (if (cs)
364+ then (cu == cv)
317365 else false)
318- then throw(((("Price slippage " + toString(cA)) + " > ") + toString(cz)))
319- else {
320- let cB = C(cu, a)
321- let cC = fraction(cv, bV, c)
322- let cD = fraction(cw, c, bV)
323- let cE = if ((cC > cw))
324- then $Tuple2(cD, cw)
325- else $Tuple2(cv, cC)
326- let cF = cE._1
327- let cG = cE._2
328- let bA = fraction(cB, cG, bU)
329- $Tuple5(F(bA, a), F(cF, cs), F(cG, ct), bV, cz)
330- }
366+ then $Tuple2(ct, 0)
367+ else if (if (cs)
368+ then (cu == cw)
369+ else false)
370+ then $Tuple2(0, ct)
371+ else $Tuple2(cP, cQ)
372+ let cY = cX._1
373+ let cZ = cX._2
374+ let da = [IntegerEntry(R(), cR), IntegerEntry(S(height, lastBlock.timestamp), cR), StringEntry(V(bK, bH), aK(cY, cZ, cU, cR, cl, cS, height, lastBlock.timestamp, cV, cW))]
375+ $Tuple13(cO, cU, cR, bT, bU, bR, bL, bQ, da, cV, cW, cn, cp)
331376 }
332- let cH = cy._1
333- let cI = cy._2
334- let cJ = cy._3
335- let bW = F(cy._4, a)
336- let cK = F(cy._5, a)
337- if ((0 >= cH))
338- then throw("LP <= 0")
339- else {
340- let cL = if (!(ck))
341- then 0
342- else cH
343- let cM = (cf - cI)
344- let cN = (ch - cJ)
345- let cO = if (if (cl)
346- then (cn == co)
347- else false)
348- then $Tuple2(cm, 0)
349- else if (if (cl)
350- then (cn == cp)
351- else false)
352- then $Tuple2(0, cm)
353- else $Tuple2(cI, cJ)
354- let cP = cO._1
355- let cQ = cO._2
356- 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))]
357- $Tuple13(cH, cL, bW, bR, bT, cu, bK, bP, cR, cM, cN, cg, ci)
358- }
377+ else throw("Strict value is not equal to itself.")
359378 }
360379
361380
362-func cS (cT) = {
363- let bw = aD()
364- let cU = bw[s]
365- let cV = bw[t]
366- let bP = parseIntValue(bw[q])
367- let bx = parseIntValue(bw[u])
368- let by = parseIntValue(bw[v])
369- let cW = aX(cU)
370- let cX = aX(cV)
371- let bV = if ((cT.orderType == Buy))
372- then bn(bx, by, (cW + cT.amount), cX)
373- else bn(bx, by, (cW - cT.amount), cX)
374- let bW = F(bV, a)
375- if (if (if (aA())
381+func db (dc) = {
382+ let bx = aF()
383+ let dd = bx[t]
384+ let de = bx[u]
385+ let bQ = parseIntValue(bx[r])
386+ let by = parseIntValue(bx[v])
387+ let bz = parseIntValue(bx[w])
388+ let df = aZ(dd)
389+ let dg = aZ(de)
390+ let bZ = if ((dc.orderType == Buy))
391+ then bo(by, bz, (df + dc.amount), dg)
392+ else bo(by, bz, (df - dc.amount), dg)
393+ let ca = G(bZ, b)
394+ if (if (if (aC())
376395 then true
377- else (bP == n))
396+ else (bQ == o))
378397 then true
379- else (bP == o))
380- then throw("Admin blocked")
398+ else (bQ == p))
399+ then an("Admin blocked")
381400 else {
382- let cY = cT.assetPair.amountAsset
383- let cZ = if ((cY == unit))
401+ let dh = dc.assetPair.amountAsset
402+ let di = if ((dh == unit))
384403 then "WAVES"
385- else toBase58String(value(cY))
386- let da = cT.assetPair.priceAsset
387- let db = if ((da == unit))
404+ else toBase58String(value(dh))
405+ let dj = dc.assetPair.priceAsset
406+ let dk = if ((dj == unit))
388407 then "WAVES"
389- else toBase58String(value(da))
390- if (if ((cZ != cU))
408+ else toBase58String(value(dj))
409+ if (if ((di != dd))
391410 then true
392- else (db != cV))
393- then throw("Wr assets")
411+ else (dk != de))
412+ then an("Wr assets")
394413 else {
395- let dc = cT.price
396- let ct = fraction(a, by, bx)
397- let dd = I(dc, a, ct)
398- let de = if ((cT.orderType == Buy))
399- then (bW >= dd)
400- else (dd >= bW)
414+ let dl = dc.price
415+ let bP = fraction(b, bz, by)
416+ let dm = J(dl, b, bP)
417+ let dn = if ((dc.orderType == Buy))
418+ then (ca >= dm)
419+ else (dm >= ca)
401420 true
402421 }
403422 }
404423 }
405424
406425
407-func df (dg) = if ((size(dg.payments) != 1))
408- then throw("1 pmnt exp")
409- else {
410- let dh = value(dg.payments[0])
411- let bH = value(dh.assetId)
412- let cm = dh.amount
413- let cy = bF(toBase58String(dg.transactionId), toBase58String(bH), cm, dg.caller)
414- let cb = cy._1
415- let cc = cy._2
416- let bP = parseIntValue(cy._9)
417- let cd = cy._10
418- if (if (aA())
419- then true
420- else (bP == o))
421- then throw(("Admin blocked: " + toString(bP)))
422- else $Tuple5(cb, cc, cm, bH, cd)
423- }
424-
425-
426-func di (dj,W,dk,dl,bf,ck,cl,cm,cn) = {
427- let cy = ce(W, bf, value(dk).amount, value(dk).assetId, value(dl).amount, value(dl).assetId, dj, false, ck, cl, cm, cn)
428- let bP = parseIntValue(cy._8)
429- if (if (if (aA())
426+func do (dp) = {
427+ let dq = if ((size(dp.payments) == 1))
430428 then true
431- else (bP == m))
432- then true
433- else (bP == o))
434- then throw(("Blocked:" + toString(bP)))
435- else cy
429+ else an("1 payment expected")
430+ if ((dq == dq))
431+ then {
432+ let dr = value(dp.payments[0])
433+ let bI = value(dr.assetId)
434+ let ct = dr.amount
435+ let cE = bG(toBase58String(dp.transactionId), toBase58String(bI), ct, dp.caller)
436+ let ch = cE._1
437+ let ci = cE._2
438+ let bQ = parseIntValue(cE._9)
439+ let cj = cE._10
440+ if (if (aC())
441+ then true
442+ else (bQ == p))
443+ then an(("Admin blocked: " + toString(bQ)))
444+ else $Tuple5(ch, ci, ct, bI, cj)
445+ }
446+ else throw("Strict value is not equal to itself.")
436447 }
437448
438449
439-func dm (dn) = {
440- let do = fraction(dn, ad, d)
441- $Tuple2((dn - do), do)
450+func ds (dt,X,du,dv,bh,cr,cs,ct,cu) = {
451+ let cE = ck(X, bh, value(du).amount, value(du).assetId, value(dv).amount, value(dv).assetId, dt, false, cr, cs, ct, cu)
452+ let bQ = parseIntValue(cE._8)
453+ if (if (if (aC())
454+ then true
455+ else (bQ == n))
456+ then true
457+ else (bQ == p))
458+ then an(("Blocked:" + toString(bQ)))
459+ else cE
442460 }
443461
444462
445-func dp () = {
446- let as = getString(O())
447- if ($isInstanceOf(as, "String"))
463+func dw (dx) = {
464+ let dy = fraction(dx, ae, e)
465+ $Tuple2((dx - dy), dy)
466+ }
467+
468+
469+func dz () = {
470+ let au = getString(P())
471+ if ($isInstanceOf(au, "String"))
448472 then {
449- let dq = as
450- fromBase58String(dq)
473+ let dA = au
474+ fromBase58String(dA)
451475 }
452- else if ($isInstanceOf(as, "Unit"))
476+ else if ($isInstanceOf(au, "Unit"))
453477 then unit
454478 else throw("Match error")
455479 }
456480
457481
458-func dr () = {
459- let as = getString(P())
460- if ($isInstanceOf(as, "String"))
482+func dB () = {
483+ let au = getString(Q())
484+ if ($isInstanceOf(au, "String"))
461485 then {
462- let dq = as
463- fromBase58String(dq)
486+ let dA = au
487+ fromBase58String(dA)
464488 }
465- else if ($isInstanceOf(as, "Unit"))
489+ else if ($isInstanceOf(au, "Unit"))
466490 then unit
467491 else throw("Match error")
468492 }
469493
470494
471-let ds = throw("Permission denied")
495+let dC = an("Permission denied")
472496
473-func dt (dg) = {
474- let as = dp()
475- if ($isInstanceOf(as, "ByteVector"))
497+func dD (dp) = {
498+ let au = dz()
499+ if ($isInstanceOf(au, "ByteVector"))
476500 then {
477- let du = as
478- if ((dg.callerPublicKey == du))
501+ let dE = au
502+ if ((dp.callerPublicKey == dE))
479503 then true
480- else ds
504+ else dC
481505 }
482- else if ($isInstanceOf(as, "Unit"))
483- then if ((dg.caller == this))
506+ else if ($isInstanceOf(au, "Unit"))
507+ then if ((dp.caller == this))
484508 then true
485- else ds
509+ else dC
486510 else throw("Match error")
487511 }
488512
489513
490-@Callable(dg)
491-func constructor (N) = {
492- let dv = dt(dg)
493- if ((dv == dv))
494- then [StringEntry(N(), N)]
514+@Callable(dp)
515+func constructor (aA) = {
516+ let dF = dD(dp)
517+ if ((dF == dF))
518+ then [StringEntry(O(), aA)]
495519 else throw("Strict value is not equal to itself.")
496520 }
497521
498522
499523
500-@Callable(dg)
501-func setManager (dw) = {
502- let dv = dt(dg)
503- if ((dv == dv))
524+@Callable(dp)
525+func setManager (dG) = {
526+ let dF = dD(dp)
527+ if ((dF == dF))
504528 then {
505- let dx = fromBase58String(dw)
506- if ((dx == dx))
507- then [StringEntry(P(), dw)]
529+ let dH = fromBase58String(dG)
530+ if ((dH == dH))
531+ then [StringEntry(Q(), dG)]
508532 else throw("Strict value is not equal to itself.")
509533 }
510534 else throw("Strict value is not equal to itself.")
511535 }
512536
513537
514538
515-@Callable(dg)
539+@Callable(dp)
516540 func confirmManager () = {
517- let bE = dr()
518- let dy = if (isDefined(bE))
541+ let dI = dB()
542+ let dJ = if (isDefined(dI))
519543 then true
520- else throw("No pending manager")
521- if ((dy == dy))
544+ else an("No pending manager")
545+ if ((dJ == dJ))
522546 then {
523- let dz = if ((dg.callerPublicKey == value(bE)))
547+ let dK = if ((dp.callerPublicKey == value(dI)))
524548 then true
525- else throw("You are not pending manager")
526- if ((dz == dz))
527- then [StringEntry(O(), toBase58String(value(bE))), DeleteEntry(P())]
549+ else an("You are not pending manager")
550+ if ((dK == dK))
551+ then [StringEntry(P(), toBase58String(value(dI))), DeleteEntry(Q())]
528552 else throw("Strict value is not equal to itself.")
529553 }
530554 else throw("Strict value is not equal to itself.")
531555 }
532556
533557
534558
535-@Callable(dg)
536-func put (dA,dB) = {
537- let dC = aH()
538- let dD = valueOrErrorMessage(addressFromString(dC[y]), "Wr st addr")
539- let dE = valueOrErrorMessage(addressFromString(dC[z]), "Wr sl addr")
540- if ((0 > dA))
541- then throw("Wrong slippage")
542- else if ((size(dg.payments) != 2))
543- then throw("2 pmnts expd")
544- else {
545- 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, "")
546- let cL = dF._2
547- let dG = dF._7
548- let cd = dF._9
549- let cM = dF._10
550- let cN = dF._11
551- let bL = dF._12
552- let bM = dF._13
553- let cy = invoke(ay, "emit", [cL], nil)
554- if ((cy == cy))
555- then {
556- let dH = {
557- let as = cy
558- if ($isInstanceOf(as, "Address"))
559+@Callable(dp)
560+func put (bh,dL) = {
561+ let dM = aJ()
562+ let dN = valueOrErrorMessage(addressFromString(dM[z]), "Wrong staking contract")
563+ let dO = valueOrErrorMessage(addressFromString(dM[A]), "Wrogn slippage contract")
564+ let dP = if ((bh >= 0))
565+ then true
566+ else an("wrong slippage")
567+ if ((dP == dP))
568+ then {
569+ let dQ = if ((size(dp.payments) == 2))
570+ then true
571+ else an("2 payments expected")
572+ if ((dQ == dQ))
573+ then {
574+ let dR = ds(toString(dp.caller), toBase58String(dp.transactionId), AttachedPayment(value(dp.payments[0]).assetId, value(dp.payments[0]).amount), dp.payments[1], bh, true, false, 0, "")
575+ let cU = dR._2
576+ let bL = dR._7
577+ let cj = dR._9
578+ let cV = dR._10
579+ let cW = dR._11
580+ let bM = dR._12
581+ let bN = dR._13
582+ let cE = invoke(aA, "emit", [cU], nil)
583+ if ((cE == cE))
584+ then {
585+ let dS = {
586+ let au = cE
587+ if ($isInstanceOf(au, "Address"))
588+ then {
589+ let dT = au
590+ invoke(dT, "emit", [cU], nil)
591+ }
592+ else unit
593+ }
594+ if ((dS == dS))
559595 then {
560- let dI = as
561- invoke(dI, "emit", [cL], nil)
596+ let dU = if ((cV > 0))
597+ then invoke(dO, "put", nil, [AttachedPayment(bM, cV)])
598+ else nil
599+ if ((dU == dU))
600+ then {
601+ let dV = if ((cW > 0))
602+ then invoke(dO, "put", nil, [AttachedPayment(bN, cW)])
603+ else nil
604+ if ((dV == dV))
605+ then {
606+ let dW = if (dL)
607+ then {
608+ let dX = invoke(dN, "stake", nil, [AttachedPayment(bL, cU)])
609+ if ((dX == dX))
610+ then nil
611+ else throw("Strict value is not equal to itself.")
612+ }
613+ else [ScriptTransfer(dp.caller, cU, bL)]
614+ (cj ++ dW)
615+ }
616+ else throw("Strict value is not equal to itself.")
617+ }
618+ else throw("Strict value is not equal to itself.")
562619 }
563- else unit
620+ else throw("Strict value is not equal to itself.")
564621 }
565- if ((dH == dH))
566- then {
567- let dJ = if ((cM > 0))
568- then invoke(dE, "put", nil, [AttachedPayment(bL, cM)])
569- else nil
570- if ((dJ == dJ))
571- then {
572- let dK = if ((cN > 0))
573- then invoke(dE, "put", nil, [AttachedPayment(bM, cN)])
574- else nil
575- if ((dK == dK))
576- then {
577- let dL = if (dB)
578- then {
579- let dM = invoke(dD, "stake", nil, [AttachedPayment(dG, cL)])
580- if ((dM == dM))
581- then nil
582- else throw("Strict value is not equal to itself.")
583- }
584- else [ScriptTransfer(dg.caller, cL, dG)]
585- (cd ++ dL)
586- }
587- else throw("Strict value is not equal to itself.")
588- }
589- else throw("Strict value is not equal to itself.")
590- }
591- else throw("Strict value is not equal to itself.")
592- }
593- else throw("Strict value is not equal to itself.")
594- }
622+ else throw("Strict value is not equal to itself.")
623+ }
624+ else throw("Strict value is not equal to itself.")
625+ }
626+ else throw("Strict value is not equal to itself.")
595627 }
596628
597629
598630
599-@Callable(dg)
600-func putOneTkn (dN,dO,dP,bf,dB) = {
601- let bw = aH()
602- let dD = valueOrErrorMessage(addressFromString(bw[y]), "Wr st addr")
603- let dE = valueOrErrorMessage(addressFromString(bw[z]), "Wr sl addr")
604- let dQ = valueOrErrorMessage(addressFromString(bw[A]), "Wr gwx addr")
605- let dR = aD()
606- let bL = dR[s]
607- let bM = dR[t]
608- let bN = parseIntValue(dR[u])
609- let bO = parseIntValue(dR[v])
610- let dS = valueOrElse(getString(this, ab()), "")
611- let bJ = if ((dS == toString(dg.caller)))
612- then dg.originCaller
613- else dg.caller
614- if (if (if (if ((0 >= bf))
631+@Callable(dp)
632+func putOneTkn (dY,dZ,bg,bh,dL) = {
633+ let bx = aJ()
634+ let dN = valueOrErrorMessage(addressFromString(bx[z]), "Wrong staking contract")
635+ let dO = valueOrErrorMessage(addressFromString(bx[A]), "Wrong slippage contract")
636+ let ea = valueOrErrorMessage(addressFromString(bx[B]), "Wrong gwx reward contract")
637+ let eb = aF()
638+ let bM = eb[t]
639+ let bN = eb[u]
640+ let bO = parseIntValue(eb[v])
641+ let bP = parseIntValue(eb[w])
642+ let ec = valueOrElse(getString(this, ac()), "")
643+ let bK = if ((ec == toString(dp.caller)))
644+ then dp.originCaller
645+ else dp.caller
646+ if (if (if (if ((0 >= bh))
615647 then true
616- else (0 >= dN))
648+ else (0 >= dY))
617649 then true
618- else (0 >= dO))
650+ else (0 >= dZ))
619651 then true
620- else (0 >= dP))
621- then throw("Wrong params")
622- else if ((size(dg.payments) != 1))
623- then throw("1 pmnt expd")
652+ else (0 >= bg))
653+ then an("Wrong params")
654+ else if ((size(dp.payments) != 1))
655+ then an("1 payment expected")
624656 else {
625- let dh = value(dg.payments[0])
626- let bH = toBase58String(value(dh.assetId))
627- let dT = dh.amount
628- let dU = dm(dT)
629- let cm = dU._1
630- let dV = dU._2
631- if ((10000000 > dT))
632- then throw("Wrong pmt amt")
657+ let dr = value(dp.payments[0])
658+ let bI = toBase58String(value(dr.assetId))
659+ let ed = dr.amount
660+ let ee = dw(ed)
661+ let ct = ee._1
662+ let ef = ee._2
663+ if (if (if ((dY > ct))
664+ then true
665+ else (dZ > ct))
666+ then true
667+ else (10000000 > ct))
668+ then an("wrong payment amount")
633669 else {
634- let bR = aX(bL)
635- let bT = aX(bM)
636- let dW = if ((bH == bL))
637- then if (if ((cm > bR))
638- then true
639- else (dN > cm))
640- then throw("invalid payment amount")
641- else $Tuple6((bR - cm), bT, (cm - dN), dO, 0, 0)
642- else if ((bH == bM))
643- then if (if ((cm > bT))
644- then true
645- else (dO > cm))
646- then throw("invalid payment amount")
647- else $Tuple6(bR, (bT - cm), 0, 0, (cm - dO), dN)
648- else throw("wrong pmtAssetId")
649- let dX = dW._1
650- let dY = dW._2
651- let dZ = dW._3
652- let ea = dW._4
653- let eb = dW._5
654- let ec = dW._6
655- let bk = invoke(dQ, "calcD", [toString(dX), toString(dY), az, h, i], nil)
656- 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))
670+ let bT = aZ(bM)
671+ let bU = aZ(bN)
672+ let eg = if ((bI == bM))
673+ then $Tuple6((bT - ct), bU, (ct - dY), dZ, 0, 0)
674+ else if ((bI == bN))
675+ then $Tuple6(bT, (bU - ct), 0, 0, (ct - dZ), dY)
676+ else an("wrong paymentAssetId")
677+ let eh = eg._1
678+ let ei = eg._2
679+ let ej = eg._3
680+ let ek = eg._4
681+ let el = eg._5
682+ let em = eg._6
683+ let bm = invoke(ea, "calcD", [toString(eh), toString(ei), aB, i, j], nil)
684+ let bl = invoke(ea, "calcD", [toString(toBigInt(((eh + ej) - em))), toString(toBigInt(((ei + el) - ek))), aB, i, j], nil)
685+ let en = bk(parseBigIntValue(at(bl)), parseBigIntValue(at(bm)), h)
686+ if ((en == en))
659687 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))
688+ let dR = ds(toString(dp.caller), toBase58String(dp.transactionId), AttachedPayment(fromBase58String(bM), dY), AttachedPayment(fromBase58String(bN), dZ), bh, true, true, ct, bI)
689+ let bf = dR._2
690+ let bL = dR._7
691+ let cj = dR._9
692+ let cV = dR._10
693+ let cW = dR._11
694+ let eo = be(toBigInt(bf), toBigInt(bg), toBigInt(bh))
695+ let cU = toInt(eo._2)
696+ let ep = invoke(aA, "emit", [cU], nil)
697+ if ((ep == ep))
670698 then {
671- let dH = {
672- let as = dF
673- if ($isInstanceOf(as, "Address"))
699+ let dS = {
700+ let au = ep
701+ if ($isInstanceOf(au, "Address"))
674702 then {
675- let dI = as
676- invoke(dI, "emit", [cL], nil)
703+ let dT = au
704+ invoke(dT, "emit", [cU], nil)
677705 }
678706 else unit
679707 }
680- if ((dH == dH))
708+ if ((dS == dS))
681709 then {
682- let dJ = if ((cM > 0))
683- then invoke(dE, "put", nil, [AttachedPayment(fromBase58String(bL), cM)])
710+ let dU = if ((cV > 0))
711+ then invoke(dO, "put", nil, [AttachedPayment(fromBase58String(bM), cV)])
684712 else nil
685- if ((dJ == dJ))
713+ if ((dU == dU))
686714 then {
687- let dK = if ((cN > 0))
688- then invoke(dE, "put", nil, [AttachedPayment(fromBase58String(bM), cN)])
715+ let dV = if ((cW > 0))
716+ then invoke(dO, "put", nil, [AttachedPayment(fromBase58String(bN), cW)])
689717 else nil
690- if ((dK == dK))
718+ if ((dV == dV))
691719 then {
692- let dL = if (dB)
720+ let dW = if (dL)
693721 then {
694- let dM = invoke(dD, "stake", nil, [AttachedPayment(dG, cL)])
695- if ((dM == dM))
722+ let dX = invoke(dN, "stake", nil, [AttachedPayment(bL, cU)])
723+ if ((dX == dX))
696724 then nil
697725 else throw("Strict value is not equal to itself.")
698726 }
699- else [ScriptTransfer(dg.caller, cL, dG)]
700- let eh = if ((dV > 0))
701- then [ScriptTransfer(aC, dV, fromBase58String(bH))]
727+ else [ScriptTransfer(dp.caller, cU, bL)]
728+ let eq = if ((ef > 0))
729+ then [ScriptTransfer(aE, ef, fromBase58String(bI))]
702730 else nil
703- ((cd ++ dL) ++ eh)
731+ ((cj ++ dW) ++ eq)
704732 }
705733 else throw("Strict value is not equal to itself.")
706734 }
707735 else throw("Strict value is not equal to itself.")
708736 }
709737 else throw("Strict value is not equal to itself.")
710738 }
711739 else throw("Strict value is not equal to itself.")
712740 }
713741 else throw("Strict value is not equal to itself.")
714742 }
715743 }
716744 }
717745
718746
719747
720-@Callable(dg)
721-func putForFree (ei) = if ((0 > ei))
722- then throw("Wrong slpg")
723- else if ((size(dg.payments) != 2))
724- then throw("2 pmnts expd")
748+@Callable(dp)
749+func putForFree (er) = if ((0 > er))
750+ then an("wrong slippage")
751+ else if ((size(dp.payments) != 2))
752+ then an("2 payments expected")
725753 else {
726- 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, "")
727- ee._9
754+ let dR = ds(toString(dp.caller), toBase58String(dp.transactionId), AttachedPayment(value(dp.payments[0]).assetId, value(dp.payments[0]).amount), dp.payments[1], er, false, false, 0, "")
755+ dR._9
728756 }
729757
730758
731759
732-@Callable(dg)
760+@Callable(dp)
733761 func get () = {
734- let cy = df(dg)
735- let ej = cy._1
736- let cc = cy._2
737- let cm = cy._3
738- let bH = cy._4
739- let cd = cy._5
740- let ek = invoke(ay, "burn", [cm], [AttachedPayment(bH, cm)])
741- if ((ek == ek))
742- then cd
762+ let cE = do(dp)
763+ let es = cE._1
764+ let ci = cE._2
765+ let ct = cE._3
766+ let bI = cE._4
767+ let cj = cE._5
768+ let et = invoke(aA, "burn", [ct], [AttachedPayment(bI, ct)])
769+ if ((et == et))
770+ then cj
743771 else throw("Strict value is not equal to itself.")
744772 }
745773
746774
747775
748-@Callable(dg)
749-func getOneTkn (el,em,en,eo,bf) = if ((size(dg.payments) != 1))
750- then throw("1 pmnt expd")
776+@Callable(dp)
777+func getOneTkn (eu,ev,ew,ex,bh) = if ((size(dp.payments) != 1))
778+ then an("1 payment expected")
751779 else {
752- let bw = aD()
753- let bK = bw[r]
754- let bL = bw[s]
755- let bM = bw[t]
756- let bN = parseIntValue(bw[u])
757- let bO = parseIntValue(bw[v])
758- let bP = bw[q]
759- let dC = aH()
760- let dQ = valueOrErrorMessage(addressFromString(dC[A]), "Wr sl addr")
761- let dh = value(dg.payments[0])
762- let dS = valueOrElse(getString(this, ab()), "")
763- let bJ = if ((dS == toString(dg.caller)))
764- then dg.originCaller
765- else dg.caller
766- let bG = toBase58String(dg.transactionId)
767- let bH = value(dh.assetId)
768- let cm = dh.amount
769- if ((1000000000 > cm))
770- then throw("Min pmt 10 LP")
771- else if (if (if ((0 > bf))
780+ let bx = aF()
781+ let bL = bx[s]
782+ let bM = bx[t]
783+ let bN = bx[u]
784+ let bO = parseIntValue(bx[v])
785+ let bP = parseIntValue(bx[w])
786+ let bQ = bx[r]
787+ let dM = aJ()
788+ let ea = valueOrErrorMessage(addressFromString(dM[B]), "Wrong gwxRewardContract address")
789+ let dr = value(dp.payments[0])
790+ let ec = valueOrElse(getString(this, ac()), "")
791+ let bK = if ((ec == toString(dp.caller)))
792+ then dp.originCaller
793+ else dp.caller
794+ let bH = toBase58String(dp.transactionId)
795+ let bI = value(dr.assetId)
796+ let ct = dr.amount
797+ if ((1000000000 > ct))
798+ then an("Min payment 10 LP")
799+ else if (if (if ((0 > bh))
772800 then true
773- else (0 > el))
801+ else (0 > eu))
774802 then true
775- else (0 > en))
776- then throw("Wrong params")
777- else if ((bK != toBase58String(bH)))
778- then throw("Wrong LP")
803+ else (0 > ew))
804+ then an("Wrong params")
805+ else if ((bL != toBase58String(bI)))
806+ then an("Wrong LP")
779807 else {
780- let cy = bF(toBase58String(dg.transactionId), toBase58String(bH), cm, dg.caller)
781- let ep = cy._1
782- let eq = cy._2
783- let bR = aX(bL)
784- let bT = aX(bM)
785- let er = if ((eo == bL))
786- then $Tuple7((bR - ep), (bT - eq), el, eq, 0, 0, (ep + el))
787- else if ((eo == bM))
788- then $Tuple7((bR - ep), (bT - eq), 0, 0, el, ep, (eq + el))
789- else throw("wrong outAssetId")
790- let dX = er._1
791- let dY = er._2
792- let dZ = er._3
793- let ea = er._4
794- let eb = er._5
795- let ec = er._6
796- let es = er._7
797- if (if ((0 > dZ))
808+ let cE = bG(toBase58String(dp.transactionId), toBase58String(bI), ct, dp.caller)
809+ let ey = cE._1
810+ let ez = cE._2
811+ let bT = aZ(bM)
812+ let bU = aZ(bN)
813+ let eA = if ((ex == bM))
814+ then $Tuple7((bT - ey), (bU - ez), eu, ez, 0, 0, (ey + eu))
815+ else if ((ex == bN))
816+ then $Tuple7((bT - ey), (bU - ez), 0, 0, eu, ey, (ez + eu))
817+ else an("wrong outAssetId")
818+ let eh = eA._1
819+ let ei = eA._2
820+ let ej = eA._3
821+ let ek = eA._4
822+ let el = eA._5
823+ let em = eA._6
824+ let eB = eA._7
825+ if (if ((0 > ej))
798826 then true
799- else (0 > eb))
800- then throw("Wrong calc")
827+ else (0 > el))
828+ then an("Wrong calc")
801829 else {
802- let bk = invoke(dQ, "calcD", [toString(dX), toString(dY), az, h, i], nil)
803- let bj = invoke(dQ, "calcD", [toString(((dX - dZ) + ec)), toString(((dY + ea) - eb)), az, h, i], nil)
804- let ed = bi(parseBigIntValue(ar(bj)), parseBigIntValue(ar(bk)), g)
805- if ((ed == ed))
830+ let bm = invoke(ea, "calcD", [toString(eh), toString(ei), aB, i, j], nil)
831+ let bl = invoke(ea, "calcD", [toString(((eh - ej) + em)), toString(((ei + ek) - el)), aB, i, j], nil)
832+ let en = bk(parseBigIntValue(at(bl)), parseBigIntValue(at(bm)), h)
833+ if ((en == en))
806834 then {
807- let et = dm(es)._1
808- let eu = bc(toBigInt(et), toBigInt(en), toBigInt(bf))
809- if ((eu == eu))
835+ let eC = be(toBigInt(eB), toBigInt(ew), toBigInt(bh))
836+ if ((eC == eC))
810837 then {
811- let ev = if ((eo == bL))
812- then $Tuple2(toInt(eu._2), 0)
813- else $Tuple2(0, toInt(eu._2))
814- let ew = ev._1
815- let ex = ev._2
816- let ey = (ew + ex)
817- let dV = (es - et)
818- let ez = if ((eo == "WAVES"))
838+ let eD = if ((ex == bM))
839+ then $Tuple2(toInt(eC._2), 0)
840+ else $Tuple2(0, toInt(eC._2))
841+ let eE = eD._1
842+ let eF = eD._2
843+ let eG = (eE + eF)
844+ let eH = dw(eG)
845+ let eI = eH._1
846+ let ef = eH._2
847+ let eJ = if ((ex == "WAVES"))
819848 then unit
820- else fromBase58String(eo)
821- let eh = if ((dV > 0))
822- then [ScriptTransfer(aC, dV, ez)]
849+ else fromBase58String(ex)
850+ let eq = if ((ef > 0))
851+ then [ScriptTransfer(aE, ef, eJ)]
823852 else nil
824- let eA = aZ(C(bT, bO), C(bR, bN))
825- let eB = F(eA, a)
826- 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)]
827- if ((cd == cd))
853+ let eK = if ((bO >= bP))
854+ then bO
855+ else bP
856+ if ((eK == eK))
828857 then {
829- let eC = invoke(ay, "burn", [cm], [AttachedPayment(bH, cm)])
830- if ((eC == eC))
831- then (cd ++ eh)
858+ let eL = bb(D(bU, eK), D(bT, eK))
859+ let eM = G(eL, b)
860+ let cj = [ScriptTransfer(bK, eI, eJ), StringEntry(Y(toString(bK), bH), aV(eE, eF, ct, eM, height, lastBlock.timestamp)), IntegerEntry(R(), eM), IntegerEntry(S(height, lastBlock.timestamp), eM)]
861+ if ((cj == cj))
862+ then {
863+ let eN = invoke(aA, "burn", [ct], [AttachedPayment(bI, ct)])
864+ if ((eN == eN))
865+ then (cj ++ eq)
866+ else throw("Strict value is not equal to itself.")
867+ }
832868 else throw("Strict value is not equal to itself.")
833869 }
834870 else throw("Strict value is not equal to itself.")
835871 }
836872 else throw("Strict value is not equal to itself.")
837873 }
838874 else throw("Strict value is not equal to itself.")
839875 }
840876 }
841877 }
842878
843879
844880
845-@Callable(dg)
846-func getNoLess (eD,eE) = {
847- let cy = df(dg)
848- let cb = cy._1
849- let cc = cy._2
850- let cm = cy._3
851- let bH = cy._4
852- let cd = cy._5
853- if ((eD > cb))
854- then throw(((("Failed: " + toString(cb)) + " < ") + toString(eD)))
855- else if ((eE > cc))
856- then throw(((("Failed: " + toString(cc)) + " < ") + toString(eE)))
857- else {
858- let eF = invoke(ay, "burn", [cm], [AttachedPayment(bH, cm)])
859- if ((eF == eF))
860- then cd
861- else throw("Strict value is not equal to itself.")
862- }
881+@Callable(dp)
882+func getNoLess (eO,eP) = {
883+ let cE = do(dp)
884+ let ch = cE._1
885+ let ci = cE._2
886+ let ct = cE._3
887+ let bI = cE._4
888+ let cj = cE._5
889+ let eQ = if ((ch >= eO))
890+ then true
891+ else an(((("Failed: " + toString(ch)) + " < ") + toString(eO)))
892+ if ((eQ == eQ))
893+ then {
894+ let eR = if ((ci >= eP))
895+ then true
896+ else an(((("Failed: " + toString(ci)) + " < ") + toString(eP)))
897+ if ((eR == eR))
898+ then {
899+ let eS = invoke(aA, "burn", [ct], [AttachedPayment(bI, ct)])
900+ if ((eS == eS))
901+ then cj
902+ else throw("Strict value is not equal to itself.")
903+ }
904+ else throw("Strict value is not equal to itself.")
905+ }
906+ else throw("Strict value is not equal to itself.")
863907 }
864908
865909
866910
867-@Callable(dg)
868-func unstakeAndGet (dn) = {
869- let eG = if ((size(dg.payments) != 0))
870- then throw("No pmnts expd")
911+@Callable(dp)
912+func unstakeAndGet (dx) = {
913+ let dq = if ((size(dp.payments) != 0))
914+ then an("no payments expected")
871915 else true
872- if ((eG == eG))
916+ if ((dq == dq))
873917 then {
874- let bw = aD()
875- let eH = aH()
876- let dG = fromBase58String(bw[r])
877- let eI = valueOrErrorMessage(addressFromString(eH[y]), "Wr st addr")
878- let eJ = invoke(eI, "unstake", [toBase58String(dG), dn], nil)
879- if ((eJ == eJ))
918+ let bx = aF()
919+ let eT = aJ()
920+ let bL = fromBase58String(bx[s])
921+ let eU = valueOrErrorMessage(addressFromString(eT[z]), "wrong")
922+ let eV = invoke(eU, "unstake", [toBase58String(bL), dx], nil)
923+ if ((eV == eV))
880924 then {
881- let cy = bF(toBase58String(dg.transactionId), toBase58String(dG), dn, dg.caller)
882- let bP = parseIntValue(cy._9)
883- let cd = cy._10
884- let eK = if (if (aA())
925+ let cE = bG(toBase58String(dp.transactionId), toBase58String(bL), dx, dp.caller)
926+ let bQ = parseIntValue(cE._9)
927+ let cj = cE._10
928+ let eW = if (if (aC())
885929 then true
886- else (bP == o))
887- then throw(("Blocked: " + toString(bP)))
930+ else (bQ == p))
931+ then an(("Blocked: " + toString(bQ)))
888932 else true
889- if ((eK == eK))
933+ if ((eW == eW))
890934 then {
891- let eL = invoke(ay, "burn", [dn], [AttachedPayment(dG, dn)])
892- if ((eL == eL))
893- then cd
935+ let eX = invoke(aA, "burn", [dx], [AttachedPayment(bL, dx)])
936+ if ((eX == eX))
937+ then cj
894938 else throw("Strict value is not equal to itself.")
895939 }
896940 else throw("Strict value is not equal to itself.")
897941 }
898942 else throw("Strict value is not equal to itself.")
899943 }
900944 else throw("Strict value is not equal to itself.")
901945 }
902946
903947
904948
905-@Callable(dg)
906-func activate (eM,eN) = if ((toString(dg.caller) != toString(ay)))
907- then throw("denied")
908- else $Tuple2([StringEntry(Y(), eM), StringEntry(Z(), eN)], "success")
949+@Callable(dp)
950+func activate (eY,eZ) = if ((toString(dp.caller) != toString(aA)))
951+ then an("denied")
952+ else $Tuple2([StringEntry(Z(), eY), StringEntry(aa(), eZ)], "success")
909953
910954
911955
912-@Callable(dg)
913-func setS (eO,eK) = if ((toString(dg.caller) != au(this, ab())))
914- then ds
915- else [StringEntry(eO, eK)]
956+@Callable(dp)
957+func setS (fa,eW) = if ((toString(dp.caller) != aw(this, ac())))
958+ then dC
959+ else [StringEntry(fa, eW)]
916960
917961
918962
919-@Callable(dg)
920-func setI (eO,eK) = if ((toString(dg.caller) != au(this, ab())))
921- then ds
922- else [IntegerEntry(eO, eK)]
963+@Callable(dp)
964+func setI (fa,eW) = if ((toString(dp.caller) != aw(this, ac())))
965+ then dC
966+ else [IntegerEntry(fa, eW)]
923967
924968
925969
926-@Callable(dg)
927-func getPoolConfigWrapperREADONLY () = $Tuple2(nil, aD())
970+@Callable(dp)
971+func getPoolConfigWrapperREADONLY () = $Tuple2(nil, aF())
928972
929973
930974
931-@Callable(dg)
932-func getAccBalanceWrapperREADONLY (aY) = $Tuple2(nil, aX(aY))
975+@Callable(dp)
976+func getAccBalanceWrapperREADONLY (ba) = $Tuple2(nil, aZ(ba))
933977
934978
935979
936-@Callable(dg)
937-func calcPricesWrapperREADONLY (bq,br,bv) = {
938- let eP = bu(bq, br, bv)
939- $Tuple2(nil, [toString(eP[0]), toString(eP[1]), toString(eP[2])])
980+@Callable(dp)
981+func calcPricesWrapperREADONLY (br,bs,bw) = {
982+ let fb = bv(br, bs, bw)
983+ $Tuple2(nil, [toString(fb[0]), toString(fb[1]), toString(fb[2])])
940984 }
941985
942986
943987
944-@Callable(dg)
945-func fromX18WrapperREADONLY (G,eQ) = $Tuple2(nil, F(parseBigIntValue(G), eQ))
988+@Callable(dp)
989+func fromX18WrapperREADONLY (H,fc) = $Tuple2(nil, G(parseBigIntValue(H), fc))
946990
947991
948992
949-@Callable(dg)
950-func toX18WrapperREADONLY (D,E) = $Tuple2(nil, toString(C(D, E)))
993+@Callable(dp)
994+func toX18WrapperREADONLY (E,F) = $Tuple2(nil, toString(D(E, F)))
951995
952996
953997
954-@Callable(dg)
955-func calcPriceBigIntWrapperREADONLY (ba,bb) = $Tuple2(nil, toString(aZ(parseBigIntValue(ba), parseBigIntValue(bb))))
998+@Callable(dp)
999+func calcPriceBigIntWrapperREADONLY (bc,bd) = $Tuple2(nil, toString(bb(parseBigIntValue(bc), parseBigIntValue(bd))))
9561000
9571001
9581002
959-@Callable(dg)
960-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, ""))
1003+@Callable(dp)
1004+func estimatePutOperationWrapperREADONLY (bH,bh,cm,fd,co,fe,ff,cq,cr) = $Tuple2(nil, ck(bH, bh, cm, fd, co, fe, ff, cq, cr, false, 0, ""))
9611005
9621006
9631007
964-@Callable(dg)
965-func estimateGetOperationWrapperREADONLY (bG,eS,bI,eR) = {
966- let cy = bF(bG, eS, bI, addressFromStringValue(eR))
967- $Tuple2(nil, $Tuple10(cy._1, cy._2, cy._3, cy._4, cy._5, cy._6, cy._7, toString(cy._8), cy._9, cy._10))
1008+@Callable(dp)
1009+func estimateGetOperationWrapperREADONLY (bH,fg,bJ,ff) = {
1010+ let cE = bG(bH, fg, bJ, addressFromStringValue(ff))
1011+ $Tuple2(nil, $Tuple10(cE._1, cE._2, cE._3, cE._4, cE._5, cE._6, cE._7, toString(cE._8), cE._9, cE._10))
9681012 }
9691013
9701014
971-@Verifier(eT)
972-func eU () = {
973- let eV = {
974- let as = dp()
975- if ($isInstanceOf(as, "ByteVector"))
976- then {
977- let du = as
978- du
979- }
980- else if ($isInstanceOf(as, "Unit"))
981- then eT.senderPublicKey
982- else throw("Match error")
983- }
984- let as = eT
985- if ($isInstanceOf(as, "Order"))
1015+@Verifier(fh)
1016+func fi () = {
1017+ let au = fh
1018+ if ($isInstanceOf(au, "Order"))
9861019 then {
987- let cT = as
988- let eW = aB()
989- let eX = cS(cT)
990- let eY = sigVerify(cT.bodyBytes, cT.proofs[0], cT.senderPublicKey)
991- let eZ = sigVerify(cT.bodyBytes, cT.proofs[1], eW)
992- if (if (if (eX)
993- then eY
1020+ let dc = au
1021+ let fj = aD()
1022+ let aq = db(dc)
1023+ let fk = sigVerify(dc.bodyBytes, dc.proofs[0], dc.senderPublicKey)
1024+ let fl = sigVerify(dc.bodyBytes, dc.proofs[1], fj)
1025+ if (if (if (aq)
1026+ then fk
9941027 else false)
995- then eZ
1028+ then fl
9961029 else false)
9971030 then true
998- else an(eX, eY, eZ)
1031+ else ap(aq, fk, fl)
9991032 }
1000- else if ($isInstanceOf(as, "SetScriptTransaction"))
1001- then {
1002- let dq = as
1003- let fa = blake2b256(value(dq.script))
1004- let fb = fromBase64String(value(getString(ay, am())))
1005- let fc = scriptHash(this)
1006- if (if ((fb == fa))
1007- then (fc != fa)
1008- else false)
1009- then true
1010- else sigVerify(eT.bodyBytes, eT.proofs[0], eV)
1033+ else {
1034+ let fm = {
1035+ let fn = dz()
1036+ if ($isInstanceOf(fn, "ByteVector"))
1037+ then {
1038+ let dE = fn
1039+ dE
1040+ }
1041+ else if ($isInstanceOf(fn, "Unit"))
1042+ then fh.senderPublicKey
1043+ else throw("Match error")
10111044 }
1012- else sigVerify(eT.bodyBytes, eT.proofs[0], eV)
1045+ sigVerify(fh.bodyBytes, fh.proofs[0], fm)
1046+ }
10131047 }
10141048

github/deemru/w8io/873ac7e 
345.47 ms