tx · 39TFbC5mtxkszWZnZGrJZdY5VTSohx4Hbh2QmrWm16oU

3MvRWw2FPEimFCTGtK7qY9uAJbM7XJ4ZfJS:  -0.28000000 Waves

2023.04.19 20:28 [2541735] smart account 3MvRWw2FPEimFCTGtK7qY9uAJbM7XJ4ZfJS > SELF 0.00000000 Waves

{ "type": 13, "id": "39TFbC5mtxkszWZnZGrJZdY5VTSohx4Hbh2QmrWm16oU", "fee": 28000000, "feeAssetId": null, "timestamp": 1681925359249, "version": 2, "chainId": 84, "sender": "3MvRWw2FPEimFCTGtK7qY9uAJbM7XJ4ZfJS", "senderPublicKey": "HP8sssVq1866F7CaPQJwgFrt6fsqhQjKwM84cL1wjD2a", "proofs": [ "4wVCznkrtq5bpgHqv97ierf3gssEoczXrrzZ4C7ueUrjHQ3KD5FdGxzGvrBgW5DePgKpGbYCmsfstJtKcHUUunoH" ], "script": "base64:BgJaCAISBQoDCAEIEgMKAQgSBQoDCAEIEgMKAQgSBAoCCAESAwoBCBIOCgwICAgBBBEYGBEBARgSCgoICAgIAQQIARgSDgoMCAgIAQQYGBgYGAEYEgcKBQgIAQEBRAAHU0ZfUE9PTAICU0YAB1dYX1BPT0wCAldYAAdDQVBfRkVFAgNjYXAACExPQU5fRkVFAgRsb2FuAAtOT19MT0FOX0ZFRQIGbm9Mb2FuAAZTQ0FMRTgAgMLXLwAHU0NBTEUxMACAyK+gJQAKRkVFX1NDQUxFNgDAhD0AFGtTRlBvb2xBQXNzZXRCYWxhbmNlAg9BX2Fzc2V0X2JhbGFuY2UAFGtTRlBvb2xCQXNzZXRCYWxhbmNlAg9CX2Fzc2V0X2JhbGFuY2UAD2tTRlBvb2xBQXNzZXRJZAIKQV9hc3NldF9pZAAPa1NGUG9vbEJBc3NldElkAgpCX2Fzc2V0X2lkAA5rU0ZQb29sU2hhcmVJZAIOc2hhcmVfYXNzZXRfaWQACmtTRlBvb2xGZWUCCmNvbW1pc3Npb24ADWtVc2VyUG9zaXRpb24CDl91c2VyX3Bvc2l0aW9uABFrVXNlckJvcnJvd0Ftb3VudAIcX3VzZXJfcG9zaXRpb25fYm9ycm93X2Ftb3VudAASa1VzZXJCb3Jyb3dBc3NldElkAh5fdXNlcl9wb3NpdGlvbl9ib3Jyb3dfYXNzZXRfaWQAEGtVc2VyUG9zaXRpb25OdW0CFV91c2VyX3Bvc2l0aW9uX251bWJlcgAVa1VzZXJQb3NpdGlvbkludGVyZXN0AhdfdXNlcl9wb3NpdGlvbl9pbnRlcmVzdAAKa1Bvb2xUb3RhbAILX3Bvb2xfdG90YWwADWtQb29sSW50ZXJlc3QCDl9wb29sX2ludGVyZXN0ABVrQXhseUluRmVlV2l0aG91dExvYW4CFl9heGx5X2ZlZV93aXRob3V0X2xvYW4AEmtBeGx5SW5GZWVXaXRoTG9hbgITX2F4bHlfZmVlX3dpdGhfbG9hbgALa0F4bHlDYXBGZWUCDV9heGx5X2ZlZV9jYXAACmtSZXF1ZXN0SWQCC19yZXF1ZXN0X2lkAAxrUmVxdWVzdEl0ZXICDXJlcXVlc3RzX2l0ZXIABWtQb29sAgVwb29sXwAOa1Bvb2xDYXBDaGFuZ2UCEF9wb29sX2NhcF9jaGFuZ2UACWtNb25leUJveAIOYXhseV9tb25leV9ib3gADmtTRkZhcm1pbmdBZGRyAhNzd29wZmlfZmFybWluZ19hZGRyAAxrTGVuZFNlcnZpY2UCEWxlbmRfc2VydmljZV9hZGRyAAxrUHJpY2VPcmFjbGUCDHByaWNlX29yYWNsZQALa0V4Q29udHJhY3QCEWV4Y2hhbmdlX2NvbnRyYWN0AA9rV3hTd2FwQ29udHJhY3QCEHd4X3N3YXBfY29udHJhY3QACG1vbmV5Qm94CQEHQWRkcmVzcwEJANkEAQkBE3ZhbHVlT3JFcnJvck1lc3NhZ2UCCQCdCAIFBHRoaXMFCWtNb25leUJveAIYTm8gYXhseSBtb25leUJveCBhZGRyZXNzAApleENvbnRyYWN0CQEHQWRkcmVzcwEJANkEAQkBE3ZhbHVlT3JFcnJvck1lc3NhZ2UCCQCdCAIFBHRoaXMFC2tFeENvbnRyYWN0AhxObyBleGNoYW5nZSBjb250cmFjdCBhZGRyZXNzAA9wcmljZU9yYWNsZUFkZHIJAQdBZGRyZXNzAQkA2QQBCQETdmFsdWVPckVycm9yTWVzc2FnZQIJAJ0IAgUEdGhpcwUMa1ByaWNlT3JhY2xlAhdObyBwcmljZSBvcmFjbGUgYWRkcmVzcwAOd3hTd2FwQ29udHJhY3QJAQdBZGRyZXNzAQkA2QQBCQETdmFsdWVPckVycm9yTWVzc2FnZQIJAJ0IAgUEdGhpcwUPa1d4U3dhcENvbnRyYWN0AhJObyB3eCBzd2FwIGFkZHJlc3MABlNXT1BJRAEgNAETVo5gRuJ+W6m4AUeC57EAJhKbduROS6KgfJxt7oEABFdYSUQBIMZSHoFO6m7jPMCXsA5fLPJq6e2dsobRmkJ4qGB9PhuxAQppc1NlbGZDYWxsAQFpAwkAAAIIBQFpBmNhbGxlcgUEdGhpcwUEdW5pdAkAAgECK09ubHkgY29udHJhY3QgaXRzZWxmIGNhbiBjYWxsIHRoaXMgZnVuY3Rpb24BDmFjY291bnRCYWxhbmNlAQdhc3NldElkBAckbWF0Y2gwBQdhc3NldElkAwkAAQIFByRtYXRjaDACCkJ5dGVWZWN0b3IEAmlkBQckbWF0Y2gwCQDwBwIFBHRoaXMFAmlkAwkAAQIFByRtYXRjaDACBFVuaXQEBXdhdmVzBQckbWF0Y2gwCAkA7wcBBQR0aGlzCWF2YWlsYWJsZQkAAgECC01hdGNoIGVycm9yAQ1nZXRTRlBvb2xEYXRhAQhwb29sQWRkcgkAlwoFCQETdmFsdWVPckVycm9yTWVzc2FnZQIJAJ0IAgUIcG9vbEFkZHIFD2tTRlBvb2xBQXNzZXRJZAIZQ2FuJ3QgZ2V0IHBvb2wgQSBhc3NldCBpZAkBE3ZhbHVlT3JFcnJvck1lc3NhZ2UCCQCdCAIFCHBvb2xBZGRyBQ9rU0ZQb29sQkFzc2V0SWQCGUNhbid0IGdldCBwb29sIEIgYXNzZXQgaWQJARN2YWx1ZU9yRXJyb3JNZXNzYWdlAgkAmggCBQhwb29sQWRkcgUUa1NGUG9vbEFBc3NldEJhbGFuY2UCHkNhbid0IGdldCBwb29sIEEgYXNzZXQgYmFsYW5jZQkBE3ZhbHVlT3JFcnJvck1lc3NhZ2UCCQCaCAIFCHBvb2xBZGRyBRRrU0ZQb29sQkFzc2V0QmFsYW5jZQIeQ2FuJ3QgZ2V0IHBvb2wgQiBhc3NldCBiYWxhbmNlCQETdmFsdWVPckVycm9yTWVzc2FnZQIJAJ0IAgUIcG9vbEFkZHIFDmtTRlBvb2xTaGFyZUlkAhhDYW4ndCBnZXQgc2hhcmUgYXNzZXQgaWQBDWdldFdYUG9vbERhdGEBCHBvb2xBZGRyBANjZmcKAAFACQD8BwQFCHBvb2xBZGRyAhxnZXRQb29sQ29uZmlnV3JhcHBlclJFQURPTkxZBQNuaWwFA25pbAMJAAECBQFAAglMaXN0W0FueV0FAUAJAAIBCQCsAgIJAAMBBQFAAh4gY291bGRuJ3QgYmUgY2FzdCB0byBMaXN0W0FueV0DCQAAAgUDY2ZnBQNjZmcJAJcKBQkBE3ZhbHVlT3JFcnJvck1lc3NhZ2UCCgABQAkAkQMCBQNjZmcABAMJAAECBQFAAgZTdHJpbmcFAUAFBHVuaXQCGUNhbid0IGdldCBwb29sIEEgYXNzZXQgaWQJARN2YWx1ZU9yRXJyb3JNZXNzYWdlAgoAAUAJAJEDAgUDY2ZnAAUDCQABAgUBQAIGU3RyaW5nBQFABQR1bml0AhlDYW4ndCBnZXQgcG9vbCBCIGFzc2V0IGlkAAAAAAkBE3ZhbHVlT3JFcnJvck1lc3NhZ2UCCgABQAkAkQMCBQNjZmcAAwMJAAECBQFAAgZTdHJpbmcFAUAFBHVuaXQCGkNhbid0IGdldCBwb29sIExQIGFzc2V0IGlkCQACAQIkU3RyaWN0IHZhbHVlIGlzIG5vdCBlcXVhbCB0byBpdHNlbGYuAQtnZXRQb29sRGF0YQIIcG9vbEFkZHIEdHlwZQMJAAACBQR0eXBlBQdTRl9QT09MCQENZ2V0U0ZQb29sRGF0YQEFCHBvb2xBZGRyAwkAAAIFBHR5cGUFB1dYX1BPT0wJAQ1nZXRXWFBvb2xEYXRhAQUIcG9vbEFkZHIJAAIBAg9Xcm9uZyBwb29sIHR5cGUBEWdldFBvb2xUb3RhbFNoYXJlAQRwb29sCQELdmFsdWVPckVsc2UCCQCaCAIFBHRoaXMJAKwCAgUEcG9vbAUKa1Bvb2xUb3RhbAAAARhnZXROZXdVc2VyUG9zaXRpb25OdW1iZXICBHBvb2wEdXNlcgkAZAIJAQt2YWx1ZU9yRWxzZQIJAJoIAgUEdGhpcwkArAICCQCsAgIJAKwCAgUEcG9vbAIBXwUEdXNlcgUQa1VzZXJQb3NpdGlvbk51bQAAAAEBCmdldEF4bHlGZWUCBHBvb2wHZmVlVHlwZQMJAAACBQdmZWVUeXBlAgNjYXAJARFAZXh0ck5hdGl2ZSgxMDUwKQIFBHRoaXMJAKwCAgUEcG9vbAULa0F4bHlDYXBGZWUDCQAAAgUHZmVlVHlwZQIEbG9hbgkBEUBleHRyTmF0aXZlKDEwNTApAgUEdGhpcwkArAICBQRwb29sBRJrQXhseUluRmVlV2l0aExvYW4DCQAAAgUHZmVlVHlwZQIGbm9Mb2FuCQERQGV4dHJOYXRpdmUoMTA1MCkCBQR0aGlzCQCsAgIFBHBvb2wFFWtBeGx5SW5GZWVXaXRob3V0TG9hbgkAAgECDldyb25nIGZlZSB0eXBlARBnZXRTRkZhcm1pbmdBZGRyAAkBB0FkZHJlc3MBCQDZBAEJARN2YWx1ZU9yRXJyb3JNZXNzYWdlAgkAnQgCBQR0aGlzBQ5rU0ZGYXJtaW5nQWRkcgIdQ2FuJ3QgZ2V0IHN3b3BmaSBmYXJtaW5nIGFkZHIBEGdldFdYRmFybWluZ0FkZHIBCHBvb2xBZGRyBAlmQ29udHJhY3QJAQdBZGRyZXNzAQkA2QQBCQETdmFsdWVPckVycm9yTWVzc2FnZQIJAJ0IAgUIcG9vbEFkZHICEyVzX19mYWN0b3J5Q29udHJhY3QCIkNhbid0IGdldCBXWCBmYWN0b3J5IGNvbnRyYWN0IGFkZHIECmZhY3Ryb3lDZmcJALUJAgkBE3ZhbHVlT3JFcnJvck1lc3NhZ2UCCQCdCAIFCWZDb250cmFjdAIRJXNfX2ZhY3RvcnlDb25maWcCGENhbid0IGdldCBXWCBmYWN0b3J5IGNmZwICX18JAQdBZGRyZXNzAQkA2QQBCQCRAwIFCmZhY3Ryb3lDZmcAAQEOZ2V0TGVuZFNydkFkZHIACQEHQWRkcmVzcwEJANkEAQkBE3ZhbHVlT3JFcnJvck1lc3NhZ2UCCQCdCAIFBHRoaXMFDGtMZW5kU2VydmljZQIbQ2FuJ3QgZ2V0IGxlbmQgc2VydmljZSBhZGRyAQxhc3NldElkVG9TdHIBB2Fzc2V0SWQEByRtYXRjaDAFB2Fzc2V0SWQDCQABAgUHJG1hdGNoMAIKQnl0ZVZlY3RvcgQCaWQFByRtYXRjaDAJANgEAQUCaWQDCQABAgUHJG1hdGNoMAIEVW5pdAQFd2F2ZXMFByRtYXRjaDACBVdBVkVTCQACAQILTWF0Y2ggZXJyb3IBDmFzc2V0SWRGcm9tU3RyAQdhc3NldElkAwkAAAIFB2Fzc2V0SWQCBVdBVkVTBQR1bml0CQDZBAEFB2Fzc2V0SWQBEGdldEFzc2V0RGVjaW1hbHMBB2Fzc2V0SWQDCQAAAgUHYXNzZXRJZAIFV0FWRVMACAQHJG1hdGNoMAkA7AcBCQDZBAEFB2Fzc2V0SWQDCQABAgUHJG1hdGNoMAIFQXNzZXQEBWFzc2V0BQckbWF0Y2gwCAUFYXNzZXQIZGVjaW1hbHMJAAIBAhBDYW4ndCBmaW5kIGFzc2V0AQ9yZXBsZW5pc2hTd29wRmkJBHBvb2wHZmVlVHlwZQRwbXRBCXBtdEFzc2V0QQRwbXRCCXBtdEFzc2V0QgRiYWxBBGJhbEIHc2hhcmVJZAQSc2hhcmVCYWxhbmNlQmVmb3JlCQEOYWNjb3VudEJhbGFuY2UBCQDZBAEFB3NoYXJlSWQDCQAAAgUSc2hhcmVCYWxhbmNlQmVmb3JlBRJzaGFyZUJhbGFuY2VCZWZvcmUECHBvb2xBZGRyCQEHQWRkcmVzcwEJANkEAQUEcG9vbAQGcmF0aW9BCQBrAwUGU0NBTEU4BQRwbXRBBQRiYWxBBAZyYXRpb0IJAGsDBQZTQ0FMRTgFBHBtdEIFBGJhbEIECyR0MDYzOTc2Njg5AwkAZgIFBnJhdGlvQgUGcmF0aW9BBANwbXQJAG4EBQRiYWxCBQZyYXRpb0EFBlNDQUxFOAUHQ0VJTElORwkAlgoEBQRwbXRBBQNwbXQJAGUCBQRwbXRCBQNwbXQFCXBtdEFzc2V0QgQDcG10CQBuBAUEYmFsQQUGcmF0aW9CBQZTQ0FMRTgFB0NFSUxJTkcJAJYKBAUDcG10BQRwbXRCCQBlAgUEcG10QQUDcG10BQlwbXRBc3NldEEECnBtdEFtb3VudEEIBQskdDA2Mzk3NjY4OQJfMQQKcG10QW1vdW50QggFCyR0MDYzOTc2Njg5Al8yBAZjaGFuZ2UIBQskdDA2Mzk3NjY4OQJfMwQNY2hhbmdlQXNzZXRJZAgFCyR0MDYzOTc2Njg5Al80BARpbnYxAwMJAGYCBQpwbXRBbW91bnRBAAAJAGYCBQpwbXRBbW91bnRCAAAHBAhwYXltZW50cwkAzAgCCQEPQXR0YWNoZWRQYXltZW50AgkBDmFzc2V0SWRGcm9tU3RyAQUJcG10QXNzZXRBBQpwbXRBbW91bnRBCQDMCAIJAQ9BdHRhY2hlZFBheW1lbnQCCQEOYXNzZXRJZEZyb21TdHIBBQlwbXRBc3NldEIFCnBtdEFtb3VudEIFA25pbAkA/AcEBQhwb29sQWRkcgIMY2FsbEZ1bmN0aW9uCQDMCAICFnJlcGxlbmlzaFdpdGhUd29Ub2tlbnMJAMwIAgkAzAgCAgVmYWxzZQkAzAgCAgEwBQNuaWwFA25pbAUIcGF5bWVudHMAAAMJAAACBQRpbnYxBQRpbnYxBARpbnYyAwkAZgIFBmNoYW5nZQAABAhwYXltZW50cwkAzAgCCQEPQXR0YWNoZWRQYXltZW50AgkBDmFzc2V0SWRGcm9tU3RyAQUNY2hhbmdlQXNzZXRJZAUGY2hhbmdlBQNuaWwEBHZhcnMJAMwIAgIBMAkAzAgCAgVmYWxzZQkAzAgCAgEwBQNuaWwJAPwHBAUIcG9vbEFkZHICDGNhbGxGdW5jdGlvbgkAzAgCAhVyZXBsZW5pc2hXaXRoT25lVG9rZW4JAMwIAgUEdmFycwUDbmlsBQhwYXltZW50cwAAAwkAAAIFBGludjIFBGludjIEEXNoYXJlQmFsYW5jZUFmdGVyCQEOYWNjb3VudEJhbGFuY2UBCQDZBAEFB3NoYXJlSWQEC3RvdGFsU3Rha2VkCQBlAgURc2hhcmVCYWxhbmNlQWZ0ZXIFEnNoYXJlQmFsYW5jZUJlZm9yZQQNYXhseUZlZUFtb3VudAkAawMFC3RvdGFsU3Rha2VkCQEKZ2V0QXhseUZlZQIFBHBvb2wFB2ZlZVR5cGUFCkZFRV9TQ0FMRTYEEXVzZXJTaGFyZUZvclN0YWtlCQBlAgULdG90YWxTdGFrZWQFDWF4bHlGZWVBbW91bnQDCQBnAgAABRF1c2VyU2hhcmVGb3JTdGFrZQkAAgECKGFtb3VudCBvZiBzdGFrZWQgc2hhcmV0b2tlbnMgbXVzdCBiZSA+IDAEBGludjMJAPwHBAkBEGdldFNGRmFybWluZ0FkZHIAAg9sb2NrU2hhcmVUb2tlbnMJAMwIAgUEcG9vbAkAzAgCAAAFA25pbAkAzAgCCQEPQXR0YWNoZWRQYXltZW50AgkA2QQBBQdzaGFyZUlkBRF1c2VyU2hhcmVGb3JTdGFrZQUDbmlsAwkAAAIFBGludjMFBGludjMJAJQKAgURdXNlclNoYXJlRm9yU3Rha2UFDWF4bHlGZWVBbW91bnQJAAIBAiRTdHJpY3QgdmFsdWUgaXMgbm90IGVxdWFsIHRvIGl0c2VsZi4JAAIBAiRTdHJpY3QgdmFsdWUgaXMgbm90IGVxdWFsIHRvIGl0c2VsZi4JAAIBAiRTdHJpY3QgdmFsdWUgaXMgbm90IGVxdWFsIHRvIGl0c2VsZi4JAAIBAiRTdHJpY3QgdmFsdWUgaXMgbm90IGVxdWFsIHRvIGl0c2VsZi4BC3JlcGxlbmlzaFdYBwRwb29sB2ZlZVR5cGUEcG10QQlwbXRBc3NldEEEcG10QglwbXRBc3NldEIHc2hhcmVJZAQIcG9vbEFkZHIJAQdBZGRyZXNzAQkA2QQBBQRwb29sBAskdDA4MTQwODk4OQMDCQBmAgUEcG10QQAACQBmAgUEcG10QgAABwQKZXZhbFB1dEluQQkAtQkCCgABQAkA/AcEBQhwb29sQWRkcgIgZXZhbHVhdGVQdXRCeUFtb3VudEFzc2V0UkVBRE9OTFkJAMwIAgUEcG10QQUDbmlsBQNuaWwDCQABAgUBQAIGU3RyaW5nBQFACQACAQkArAICCQADAQUBQAIbIGNvdWxkbid0IGJlIGNhc3QgdG8gU3RyaW5nAgJfXwMJAAACBQpldmFsUHV0SW5BBQpldmFsUHV0SW5BBApldmFsUHV0SW5CCQC1CQIKAAFACQD8BwQFCHBvb2xBZGRyAh9ldmFsdWF0ZVB1dEJ5UHJpY2VBc3NldFJFQURPTkxZCQDMCAIFBHBtdEIFA25pbAUDbmlsAwkAAQIFAUACBlN0cmluZwUBQAkAAgEJAKwCAgkAAwEFAUACGyBjb3VsZG4ndCBiZSBjYXN0IHRvIFN0cmluZwICX18DCQAAAgUKZXZhbFB1dEluQgUKZXZhbFB1dEluQgQFbHBJbkEJAQ1wYXJzZUludFZhbHVlAQkAkQMCBQpldmFsUHV0SW5BAAEEBWxwSW5CCQENcGFyc2VJbnRWYWx1ZQEJAJEDAgUKZXZhbFB1dEluQgABAwkAZgIFBWxwSW5CBQVscEluQQQGcG10SW5CCQENcGFyc2VJbnRWYWx1ZQEJAJEDAgUKZXZhbFB1dEluQQAICQCWCgQFBHBtdEEFBnBtdEluQgkAZQIFBHBtdEIFBnBtdEluQgUJcG10QXNzZXRCBAZwbXRJbkEJAQ1wYXJzZUludFZhbHVlAQkAkQMCBQpldmFsUHV0SW5CAAcJAJYKBAUGcG10SW5BBQRwbXRCCQBlAgUEcG10QQUGcG10SW5BBQlwbXRBc3NldEEJAAIBAiRTdHJpY3QgdmFsdWUgaXMgbm90IGVxdWFsIHRvIGl0c2VsZi4JAAIBAiRTdHJpY3QgdmFsdWUgaXMgbm90IGVxdWFsIHRvIGl0c2VsZi4DCQBmAgUEcG10QQAACQCWCgQFBHBtdEEFBHBtdEIFBHBtdEEFCXBtdEFzc2V0QQMJAGYCBQRwbXRCAAAJAJYKBAUEcG10QQUEcG10QgUEcG10QgUJcG10QXNzZXRCCQACAQIQcG10cyBtdXN0IGJlID4gMAQKcG10QW1vdW50QQgFCyR0MDgxNDA4OTg5Al8xBApwbXRBbW91bnRCCAULJHQwODE0MDg5ODkCXzIEBmNoYW5nZQgFCyR0MDgxNDA4OTg5Al8zBA1jaGFuZ2VBc3NldElkCAULJHQwODE0MDg5ODkCXzQEEnNoYXJlQmFsYW5jZUJlZm9yZQkBDmFjY291bnRCYWxhbmNlAQkA2QQBBQdzaGFyZUlkAwkAAAIFEnNoYXJlQmFsYW5jZUJlZm9yZQUSc2hhcmVCYWxhbmNlQmVmb3JlBARpbnYxAwMJAGYCBQpwbXRBbW91bnRBAAAJAGYCBQpwbXRBbW91bnRCAAAHBAhwYXltZW50cwkAzAgCCQEPQXR0YWNoZWRQYXltZW50AgkBDmFzc2V0SWRGcm9tU3RyAQUJcG10QXNzZXRBBQpwbXRBbW91bnRBCQDMCAIJAQ9BdHRhY2hlZFBheW1lbnQCCQEOYXNzZXRJZEZyb21TdHIBBQlwbXRBc3NldEIFCnBtdEFtb3VudEIFA25pbAkA/AcEBQhwb29sQWRkcgIDcHV0CQDMCAIAwIQ9CQDMCAIHBQNuaWwFCHBheW1lbnRzAAADCQAAAgUEaW52MQUEaW52MQQEaW52MgMJAGYCBQZjaGFuZ2UAAAQIcGF5bWVudHMJAMwIAgkBD0F0dGFjaGVkUGF5bWVudAIJAQ5hc3NldElkRnJvbVN0cgEFDWNoYW5nZUFzc2V0SWQFBmNoYW5nZQUDbmlsCQD8BwQFCHBvb2xBZGRyAglwdXRPbmVUa24JAMwIAgAACQDMCAIHBQNuaWwFCHBheW1lbnRzAAADCQAAAgUEaW52MgUEaW52MgQRc2hhcmVCYWxhbmNlQWZ0ZXIJAQ5hY2NvdW50QmFsYW5jZQEJANkEAQUHc2hhcmVJZAQLdG90YWxTdGFrZWQJAGUCBRFzaGFyZUJhbGFuY2VBZnRlcgUSc2hhcmVCYWxhbmNlQmVmb3JlBA1heGx5RmVlQW1vdW50CQBrAwULdG90YWxTdGFrZWQJAQpnZXRBeGx5RmVlAgUEcG9vbAUHZmVlVHlwZQUKRkVFX1NDQUxFNgQRdXNlclNoYXJlRm9yU3Rha2UJAGUCBQt0b3RhbFN0YWtlZAUNYXhseUZlZUFtb3VudAMJAGcCAAAFEXVzZXJTaGFyZUZvclN0YWtlCQACAQIoYW1vdW50IG9mIHN0YWtlZCBzaGFyZXRva2VucyBtdXN0IGJlID4gMAQEaW52MwkA/AcECQEQZ2V0V1hGYXJtaW5nQWRkcgEFCHBvb2xBZGRyAgVzdGFrZQUDbmlsCQDMCAIJAQ9BdHRhY2hlZFBheW1lbnQCCQDZBAEFB3NoYXJlSWQFEXVzZXJTaGFyZUZvclN0YWtlBQNuaWwDCQAAAgUEaW52MwUEaW52MwkAlAoCBRF1c2VyU2hhcmVGb3JTdGFrZQUNYXhseUZlZUFtb3VudAkAAgECJFN0cmljdCB2YWx1ZSBpcyBub3QgZXF1YWwgdG8gaXRzZWxmLgkAAgECJFN0cmljdCB2YWx1ZSBpcyBub3QgZXF1YWwgdG8gaXRzZWxmLgkAAgECJFN0cmljdCB2YWx1ZSBpcyBub3QgZXF1YWwgdG8gaXRzZWxmLgkAAgECJFN0cmljdCB2YWx1ZSBpcyBub3QgZXF1YWwgdG8gaXRzZWxmLgEPcmVwbGVuaXNoQnlUeXBlCgR0eXBlBHBvb2wHZmVlVHlwZQRwbXRBA0FJZARwbXRCA0JJZARiYWxBBGJhbEIHc2hhcmVJZAMJAAACBQR0eXBlBQdTRl9QT09MCQEPcmVwbGVuaXNoU3dvcEZpCQUEcG9vbAUITE9BTl9GRUUFBHBtdEEFA0FJZAUEcG10QgUDQklkBQRiYWxBBQRiYWxCBQdzaGFyZUlkAwkAAAIFBHR5cGUFB1dYX1BPT0wJAQtyZXBsZW5pc2hXWAcFBHBvb2wFCExPQU5fRkVFBQRwbXRBBQNBSWQFBHBtdEIFA0JJZAUHc2hhcmVJZAkAAgECD1dyb25nIHBvb2wgdHlwZQEQcmVwbGVuaXNoRW50cmllcwcEcG9vbAR1c2VyDHN0YWtlZEFtb3VudA1heGx5RmVlQW1vdW50BnBvc051bQdzaGFyZUlkBHR5cGUEC3RvdGFsQW1vdW50CQERZ2V0UG9vbFRvdGFsU2hhcmUBBQRwb29sBA9jdXJQb29sSW50ZXJlc3QJARFAZXh0ck5hdGl2ZSgxMDUwKQIFBHRoaXMJAKwCAgUEcG9vbAUNa1Bvb2xJbnRlcmVzdAkAzAgCCQEMSW50ZWdlckVudHJ5AgkArAICBQRwb29sBQprUG9vbFRvdGFsCQBkAgULdG90YWxBbW91bnQFDHN0YWtlZEFtb3VudAkAzAgCCQEMSW50ZWdlckVudHJ5AgkArAICCQCsAgIJAKwCAgkArAICCQCsAgIFBHBvb2wCAV8FBHVzZXICAV8JAKQDAQUGcG9zTnVtBQ1rVXNlclBvc2l0aW9uBQxzdGFrZWRBbW91bnQJAMwIAgkBDEludGVnZXJFbnRyeQIJAKwCAgkArAICCQCsAgIJAKwCAgkArAICBQRwb29sAgFfBQR1c2VyAgFfCQCkAwEFBnBvc051bQUVa1VzZXJQb3NpdGlvbkludGVyZXN0BQ9jdXJQb29sSW50ZXJlc3QJAMwIAgkBDEludGVnZXJFbnRyeQIJAKwCAgkArAICCQCsAgIFBHBvb2wCAV8FBHVzZXIFEGtVc2VyUG9zaXRpb25OdW0FBnBvc051bQkAzAgCCQEOU2NyaXB0VHJhbnNmZXIDBQhtb25leUJveAUNYXhseUZlZUFtb3VudAkA2QQBBQdzaGFyZUlkBQNuaWwBC2NsYWltRmFybWVkAgR0eXBlBHBvb2wDCQAAAgUEdHlwZQUHU0ZfUE9PTAQJYmFsQmVmb3JlCQEOYWNjb3VudEJhbGFuY2UBBQZTV09QSUQDCQAAAgUJYmFsQmVmb3JlBQliYWxCZWZvcmUEA2ludgkA/AcECQEQZ2V0U0ZGYXJtaW5nQWRkcgACBWNsYWltCQDMCAIFBHBvb2wFA25pbAUDbmlsAwkAAAIFA2ludgUDaW52BAhiYWxBZnRlcgkBDmFjY291bnRCYWxhbmNlAQUGU1dPUElECQCUCgIJAGUCBQhiYWxBZnRlcgUJYmFsQmVmb3JlBQZTV09QSUQJAAIBAiRTdHJpY3QgdmFsdWUgaXMgbm90IGVxdWFsIHRvIGl0c2VsZi4JAAIBAiRTdHJpY3QgdmFsdWUgaXMgbm90IGVxdWFsIHRvIGl0c2VsZi4DCQAAAgUEdHlwZQUHV1hfUE9PTAQJYmFsQmVmb3JlCQEOYWNjb3VudEJhbGFuY2UBBQRXWElEAwkAAAIFCWJhbEJlZm9yZQUJYmFsQmVmb3JlBANpbnYJAPwHBAkBEGdldFdYRmFybWluZ0FkZHIBCQEHQWRkcmVzcwEJANkEAQUEcG9vbAIHY2xhaW1XWAkAzAgCBQRwb29sBQNuaWwFA25pbAMJAAACBQNpbnYFA2ludgQIYmFsQWZ0ZXIJAQ5hY2NvdW50QmFsYW5jZQEFBFdYSUQJAJQKAgkAZQIFCGJhbEFmdGVyBQliYWxCZWZvcmUFBFdYSUQJAAIBAiRTdHJpY3QgdmFsdWUgaXMgbm90IGVxdWFsIHRvIGl0c2VsZi4JAAIBAiRTdHJpY3QgdmFsdWUgaXMgbm90IGVxdWFsIHRvIGl0c2VsZi4JAAIBAg9Xcm9uZyBwb29sIHR5cGUBDmV4Y2hhbmdlS2VlcGVyCgd0b1Rva2VuCXBtdEFtb3VudAhwbXRBc3NldAlhbW91bnRzSW4JYWRkcmVzc2VzD2Fzc2V0c1RvUmVjZWl2ZQtlc3RSZWNlaXZlZBFzbGlwcGFnZVRvbGVyYW5jZQttaW5SZWNlaXZlZAdvcHRpb25zBBJ0b2tlbkJhbGFuY2VCZWZvcmUJAQ5hY2NvdW50QmFsYW5jZQEJAQ5hc3NldElkRnJvbVN0cgEFB3RvVG9rZW4DCQAAAgUSdG9rZW5CYWxhbmNlQmVmb3JlBRJ0b2tlbkJhbGFuY2VCZWZvcmUEA2ludgkA/AcEBQpleENvbnRyYWN0AgRzd2FwCQDMCAIFCWFtb3VudHNJbgkAzAgCBQlhZGRyZXNzZXMJAMwIAgUPYXNzZXRzVG9SZWNlaXZlCQDMCAIFC2VzdFJlY2VpdmVkCQDMCAIFEXNsaXBwYWdlVG9sZXJhbmNlCQDMCAIFC21pblJlY2VpdmVkCQDMCAIFB29wdGlvbnMFA25pbAkAzAgCCQEPQXR0YWNoZWRQYXltZW50AgUIcG10QXNzZXQFCXBtdEFtb3VudAUDbmlsAwkAAAIFA2ludgUDaW52CQBlAgkBDmFjY291bnRCYWxhbmNlAQkBDmFzc2V0SWRGcm9tU3RyAQUHdG9Ub2tlbgUSdG9rZW5CYWxhbmNlQmVmb3JlCQACAQIkU3RyaWN0IHZhbHVlIGlzIG5vdCBlcXVhbCB0byBpdHNlbGYuCQACAQIkU3RyaWN0IHZhbHVlIGlzIG5vdCBlcXVhbCB0byBpdHNlbGYuAQ5leGNoYW5nZVBhenpsZQYHdG9Ub2tlbglwbXRBbW91bnQIcG10QXNzZXQJcm91dGVzU3RyDG1pblRvUmVjZWl2ZQdvcHRpb25zBBJ0b2tlbkJhbGFuY2VCZWZvcmUJAQ5hY2NvdW50QmFsYW5jZQEJAQ5hc3NldElkRnJvbVN0cgEFB3RvVG9rZW4DCQAAAgUSdG9rZW5CYWxhbmNlQmVmb3JlBRJ0b2tlbkJhbGFuY2VCZWZvcmUEA2ludgkA/AcEBQpleENvbnRyYWN0AgpwdXp6bGVTd2FwCQDMCAIFCXJvdXRlc1N0cgkAzAgCBQxtaW5Ub1JlY2VpdmUJAMwIAgUHb3B0aW9ucwUDbmlsCQDMCAIJAQ9BdHRhY2hlZFBheW1lbnQCBQhwbXRBc3NldAUJcG10QW1vdW50BQNuaWwDCQAAAgUDaW52BQNpbnYJAGUCCQEOYWNjb3VudEJhbGFuY2UBCQEOYXNzZXRJZEZyb21TdHIBBQd0b1Rva2VuBRJ0b2tlbkJhbGFuY2VCZWZvcmUJAAIBAiRTdHJpY3QgdmFsdWUgaXMgbm90IGVxdWFsIHRvIGl0c2VsZi4JAAIBAiRTdHJpY3QgdmFsdWUgaXMgbm90IGVxdWFsIHRvIGl0c2VsZi4BDmV4Y2hhbmdlU3dvcEZpCgd0b1Rva2VuCXBtdEFtb3VudAhwbXRBc3NldApleGNoYW5nZXJzDmV4Y2hhbmdlcnNUeXBlBWFyZ3MxBWFyZ3MyEXJvdXRpbmdBc3NldHNLZXlzEm1pbkFtb3VudFRvUmVjZWl2ZQdvcHRpb25zBBJ0b2tlbkJhbGFuY2VCZWZvcmUJAQ5hY2NvdW50QmFsYW5jZQEJAQ5hc3NldElkRnJvbVN0cgEFB3RvVG9rZW4DCQAAAgUSdG9rZW5CYWxhbmNlQmVmb3JlBRJ0b2tlbkJhbGFuY2VCZWZvcmUEA2ludgkA/AcEBQpleENvbnRyYWN0Agpzd29wZmlTd2FwCQDMCAIFCmV4Y2hhbmdlcnMJAMwIAgUOZXhjaGFuZ2Vyc1R5cGUJAMwIAgUFYXJnczEJAMwIAgUFYXJnczIJAMwIAgURcm91dGluZ0Fzc2V0c0tleXMJAMwIAgUSbWluQW1vdW50VG9SZWNlaXZlCQDMCAIFB29wdGlvbnMFA25pbAkAzAgCCQEPQXR0YWNoZWRQYXltZW50AgUIcG10QXNzZXQFCXBtdEFtb3VudAUDbmlsAwkAAAIFA2ludgUDaW52CQBlAgkBDmFjY291bnRCYWxhbmNlAQkBDmFzc2V0SWRGcm9tU3RyAQUHdG9Ub2tlbgUSdG9rZW5CYWxhbmNlQmVmb3JlCQACAQIkU3RyaWN0IHZhbHVlIGlzIG5vdCBlcXVhbCB0byBpdHNlbGYuCQACAQIkU3RyaWN0IHZhbHVlIGlzIG5vdCBlcXVhbCB0byBpdHNlbGYuAQpjYXBpdGFsaXplBARwb29sBXBUeXBlB3Rva2VuSWQLdG9rZW5BbW91bnQECHBvb2xBZGRyCQEHQWRkcmVzcwEJANkEAQUEcG9vbAQNJHQwMTM4MjQxMzkwMwkBC2dldFBvb2xEYXRhAgUIcG9vbEFkZHIFBXBUeXBlBANBSWQIBQ0kdDAxMzgyNDEzOTAzAl8xBANCSWQIBQ0kdDAxMzgyNDEzOTAzAl8yBARiYWxBCAUNJHQwMTM4MjQxMzkwMwJfMwQEYmFsQggFDSR0MDEzODI0MTM5MDMCXzQEB3NoYXJlSWQIBQ0kdDAxMzgyNDEzOTAzAl81BA0kdDAxMzkwNjEzOTg2AwkAAAIFB3Rva2VuSWQFA0FJZAkAlAoCBQt0b2tlbkFtb3VudAAACQCUCgIAAAULdG9rZW5BbW91bnQEBHBtdEEIBQ0kdDAxMzkwNjEzOTg2Al8xBARwbXRCCAUNJHQwMTM5MDYxMzk4NgJfMgQNJHQwMTM5ODkxNDA5OQkBD3JlcGxlbmlzaEJ5VHlwZQoFBXBUeXBlBQRwb29sBQdDQVBfRkVFBQRwbXRBBQNBSWQFBHBtdEIFA0JJZAUEYmFsQQUEYmFsQgUHc2hhcmVJZAQMc3Rha2VkQW1vdW50CAUNJHQwMTM5ODkxNDA5OQJfMQQHYXhseUZlZQgFDSR0MDEzOTg5MTQwOTkCXzIED2N1clBvb2xJbnRlcmVzdAkBC3ZhbHVlT3JFbHNlAgkAmggCBQR0aGlzCQCsAgIFBHBvb2wFDWtQb29sSW50ZXJlc3QAAAQQdG90YWxTaGFyZUFtb3VudAkBEWdldFBvb2xUb3RhbFNoYXJlAQUEcG9vbAQLbmV3SW50ZXJlc3QJAGQCBQ9jdXJQb29sSW50ZXJlc3QJAGsDBQxzdGFrZWRBbW91bnQFB1NDQUxFMTAFEHRvdGFsU2hhcmVBbW91bnQJAMwIAgkBDEludGVnZXJFbnRyeQIJAKwCAgUEcG9vbAUNa1Bvb2xJbnRlcmVzdAULbmV3SW50ZXJlc3QJAMwIAgkBDlNjcmlwdFRyYW5zZmVyAwUIbW9uZXlCb3gFB2F4bHlGZWUJANkEAQUHc2hhcmVJZAUDbmlsARJleGNoYW5nZURpcmVjdGx5U0YHBHBvb2wIYXNzZXRJZEEIYXNzZXRJZEIEYmFsQQRiYWxCEGFtb3VudFRva2VuVG9HZXQPYXNzZXRUb2tlblRvR2V0BAhwb29sQWRkcgkBB0FkZHJlc3MBCQDZBAEFBHBvb2wECWZlZVNjYWxlNgDAhD0EA2ZlZQkBEUBleHRyTmF0aXZlKDEwNTApAgUIcG9vbEFkZHIFCmtTRlBvb2xGZWUEDGFtbnRHZXROb0ZlZQkAawMFEGFtb3VudFRva2VuVG9HZXQFCWZlZVNjYWxlNgkAZQIFCWZlZVNjYWxlNgUDZmVlBA0kdDAxNDc5MjE1MDgwAwkAAAIFD2Fzc2V0VG9rZW5Ub0dldAUIYXNzZXRJZEEEC2Ftb3VudFRvUGF5CQBrAwUEYmFsQQUMYW1udEdldE5vRmVlCQBlAgUEYmFsQgUMYW1udEdldE5vRmVlCQCUCgIFC2Ftb3VudFRvUGF5BQhhc3NldElkQgQLYW1vdW50VG9QYXkJAGsDBQRiYWxCBQxhbW50R2V0Tm9GZWUJAGUCBQRiYWxBBQxhbW50R2V0Tm9GZWUJAJQKAgULYW1vdW50VG9QYXkFCGFzc2V0SWRBBAthbW91bnRUb1BheQgFDSR0MDE0NzkyMTUwODACXzEECmFzc2V0VG9QYXkIBQ0kdDAxNDc5MjE1MDgwAl8yCQD8BwQFCHBvb2xBZGRyAgxjYWxsRnVuY3Rpb24JAMwIAgIIZXhjaGFuZ2UJAMwIAgkAzAgCAgExBQNuaWwFA25pbAkAzAgCCQEPQXR0YWNoZWRQYXltZW50AgkBDmFzc2V0SWRGcm9tU3RyAQUKYXNzZXRUb1BheQULYW1vdW50VG9QYXkFA25pbAESZXhjaGFuZ2VEaXJlY3RseVdYBwRwb29sCGFzc2V0SWRBCGFzc2V0SWRCBGJhbEEEYmFsQhBhbW91bnRUb2tlblRvR2V0D2Fzc2V0VG9rZW5Ub0dldAQIcG9vbEFkZHIJAQdBZGRyZXNzAQkA2QQBBQRwb29sBAVwckZlZQkBEUBleHRyTmF0aXZlKDEwNTApAgUOd3hTd2FwQ29udHJhY3QCDyVzX19wcm90b2NvbEZlZQQEcEZlZQkBEUBleHRyTmF0aXZlKDEwNTApAgUOd3hTd2FwQ29udHJhY3QCCyVzX19wb29sRmVlBAhmZWVTY2FsZQkAtgIBAIDC1y8EDSR0MDE1NTU5MTU4NjcDCQAAAgUPYXNzZXRUb2tlblRvR2V0BQhhc3NldElkQQQLYW1vdW50VG9QYXkJAGsDBQRiYWxBBRBhbW91bnRUb2tlblRvR2V0CQBlAgUEYmFsQgUQYW1vdW50VG9rZW5Ub0dldAkAlAoCBQthbW91bnRUb1BheQUIYXNzZXRJZEIEC2Ftb3VudFRvUGF5CQBrAwUEYmFsQgUQYW1vdW50VG9rZW5Ub0dldAkAZQIFBGJhbEEFEGFtb3VudFRva2VuVG9HZXQJAJQKAgULYW1vdW50VG9QYXkFCGFzc2V0SWRBBAthbW91bnRUb1BheQgFDSR0MDE1NTU5MTU4NjcCXzEECmFzc2V0VG9QYXkIBQ0kdDAxNTU1OTE1ODY3Al8yBBJhbW91bnRUb1BheVdpdGhGZWUJAKADAQkAvAIDCQC2AgEFC2Ftb3VudFRvUGF5BQhmZWVTY2FsZQkAuAICBQhmZWVTY2FsZQkAtgIBCQBkAgUFcHJGZWUFBHBGZWUJAPwHBAUOd3hTd2FwQ29udHJhY3QCBHN3YXAJAMwIAgABCQDMCAIFD2Fzc2V0VG9rZW5Ub0dldAkAzAgCCQClCAEFBHRoaXMFA25pbAkAzAgCCQEPQXR0YWNoZWRQYXltZW50AgkBDmFzc2V0SWRGcm9tU3RyAQUKYXNzZXRUb1BheQUSYW1vdW50VG9QYXlXaXRoRmVlBQNuaWwBEGV4Y2hhbmdlRGlyZWN0bHkIBHR5cGUEcG9vbAhhc3NldElkQQhhc3NldElkQgRiYWxBBGJhbEIQYW1vdW50VG9rZW5Ub0dldA9hc3NldFRva2VuVG9HZXQDCQAAAgUEdHlwZQUHU0ZfUE9PTAkBEmV4Y2hhbmdlRGlyZWN0bHlTRgcFBHBvb2wFCGFzc2V0SWRBBQhhc3NldElkQgUEYmFsQQUEYmFsQgUQYW1vdW50VG9rZW5Ub0dldAUPYXNzZXRUb2tlblRvR2V0CQESZXhjaGFuZ2VEaXJlY3RseVdYBwUEcG9vbAUIYXNzZXRJZEEFCGFzc2V0SWRCBQRiYWxBBQRiYWxCBRBhbW91bnRUb2tlblRvR2V0BQ9hc3NldFRva2VuVG9HZXQBEndpdGhkcmF3QW1vdW50Q2FsYwQEcG9vbA91c2VyQ2FuV2l0aGRyYXcEZGVidAtib3Jyb3dBc3NldAQIcG9vbEFkZHIJAQdBZGRyZXNzAQkA2QQBBQRwb29sBAVwVHlwZQkBE3ZhbHVlT3JFcnJvck1lc3NhZ2UCCQCdCAIFBHRoaXMJAKwCAgUFa1Bvb2wFBHBvb2wCDFVua25vd24gcG9vbAQNJHQwMTY3MzIxNjc5OQkBC2dldFBvb2xEYXRhAgUIcG9vbEFkZHIFBXBUeXBlBAhhc3NldElkQQgFDSR0MDE2NzMyMTY3OTkCXzEECGFzc2V0SWRCCAUNJHQwMTY3MzIxNjc5OQJfMgQEYmFsQQgFDSR0MDE2NzMyMTY3OTkCXzMEBGJhbEIIBQ0kdDAxNjczMjE2Nzk5Al80BAtjQmFsQUJlZm9yZQkBDmFjY291bnRCYWxhbmNlAQkBDmFzc2V0SWRGcm9tU3RyAQUIYXNzZXRJZEEDCQAAAgULY0JhbEFCZWZvcmUFC2NCYWxBQmVmb3JlBAtjQmFsQkJlZm9yZQkBDmFjY291bnRCYWxhbmNlAQkBDmFzc2V0SWRGcm9tU3RyAQUIYXNzZXRJZEIDCQAAAgULY0JhbEJCZWZvcmUFC2NCYWxCQmVmb3JlBANpbnYDCQAAAgUFcFR5cGUFB1NGX1BPT0wJAPwHBAUIcG9vbEFkZHICDGNhbGxGdW5jdGlvbgkAzAgCAgh3aXRoZHJhdwkAzAgCCQDMCAIJAKQDAQUPdXNlckNhbldpdGhkcmF3BQNuaWwFA25pbAUDbmlsAwkAAAIFBXBUeXBlBQdXWF9QT09MCQD8BwQFCHBvb2xBZGRyAg11bnN0YWtlQW5kR2V0CQDMCAIFD3VzZXJDYW5XaXRoZHJhdwUDbmlsBQNuaWwJAAIBAhNXcm9uZyBwb3NpdGlvbiB0eXBlAwkAAAIFA2ludgUDaW52BApjQmFsQUFmdGVyCQEOYWNjb3VudEJhbGFuY2UBCQEOYXNzZXRJZEZyb21TdHIBBQhhc3NldElkQQQKY0JhbEJBZnRlcgkBDmFjY291bnRCYWxhbmNlAQkBDmFzc2V0SWRGcm9tU3RyAQUIYXNzZXRJZEIEDSR0MDE3MzExMTc0MDAJAJQKAgkAZQIFCmNCYWxBQWZ0ZXIFC2NCYWxBQmVmb3JlCQBlAgUKY0JhbEJBZnRlcgULY0JhbEJCZWZvcmUEDXRva2Vuc0Ftb3VudEEIBQ0kdDAxNzMxMTE3NDAwAl8xBA10b2tlbnNBbW91bnRCCAUNJHQwMTczMTExNzQwMAJfMgQNJHQwMTc0MDMxODA5OQMJAGYCBQRkZWJ0AAAEDWFtb3VudFRvR2V0RXgDAwkAAAIFC2JvcnJvd0Fzc2V0BQhhc3NldElkQQkAZgIFBGRlYnQFDXRva2Vuc0Ftb3VudEEHCQBlAgUEZGVidAUNdG9rZW5zQW1vdW50QQMDCQAAAgULYm9ycm93QXNzZXQFCGFzc2V0SWRCCQBmAgUEZGVidAUNdG9rZW5zQW1vdW50QgcJAGUCBQRkZWJ0BQ10b2tlbnNBbW91bnRCAAAEBWV4SW52AwkAZgIFDWFtb3VudFRvR2V0RXgAAAkBEGV4Y2hhbmdlRGlyZWN0bHkIBQVwVHlwZQUEcG9vbAUIYXNzZXRJZEEFCGFzc2V0SWRCBQRiYWxBBQRiYWxCBQ1hbW91bnRUb0dldEV4BQtib3Jyb3dBc3NldAAAAwkAAAIFBWV4SW52BQVleEludgQPY0JhbEFBZnRlclJlcGF5CQEOYWNjb3VudEJhbGFuY2UBCQEOYXNzZXRJZEZyb21TdHIBBQhhc3NldElkQQQPY0JhbEJBZnRlclJlcGF5CQEOYWNjb3VudEJhbGFuY2UBCQEOYXNzZXRJZEZyb21TdHIBBQhhc3NldElkQgkAlAoCCQBlAgUPY0JhbEFBZnRlclJlcGF5BQtjQmFsQUJlZm9yZQkAZQIFD2NCYWxCQWZ0ZXJSZXBheQULY0JhbEJCZWZvcmUJAAIBAiRTdHJpY3QgdmFsdWUgaXMgbm90IGVxdWFsIHRvIGl0c2VsZi4JAJQKAgUNdG9rZW5zQW1vdW50QQUNdG9rZW5zQW1vdW50QgQNdG9Vc2VyQW1vdW50QQgFDSR0MDE3NDAzMTgwOTkCXzEEDXRvVXNlckFtb3VudEIIBQ0kdDAxNzQwMzE4MDk5Al8yCQCWCgQFDXRvVXNlckFtb3VudEEFCGFzc2V0SWRBBQ10b1VzZXJBbW91bnRCBQhhc3NldElkQgkAAgECJFN0cmljdCB2YWx1ZSBpcyBub3QgZXF1YWwgdG8gaXRzZWxmLgkAAgECJFN0cmljdCB2YWx1ZSBpcyBub3QgZXF1YWwgdG8gaXRzZWxmLgkAAgECJFN0cmljdCB2YWx1ZSBpcyBub3QgZXF1YWwgdG8gaXRzZWxmLgEMcGFyc2VSZXF1ZXN0AQlyZXF1ZXN0SWQEB3JlcXVlc3QJALUJAgkBE3ZhbHVlT3JFcnJvck1lc3NhZ2UCCQCdCAIFBHRoaXMJAKwCAgUJcmVxdWVzdElkBQprUmVxdWVzdElkCQCsAgICE05vIHJlcXVlc3Qgd2l0aCBpZCAFCXJlcXVlc3RJZAIBLAQEdXNlcgkAkQMCBQdyZXF1ZXN0AAAEBHBvb2wJAJEDAgUHcmVxdWVzdAABBARwbXRBCQENcGFyc2VJbnRWYWx1ZQEJAJEDAgUHcmVxdWVzdAACBANBSWQJAJEDAgUHcmVxdWVzdAADBARwbXRCCQENcGFyc2VJbnRWYWx1ZQEJAJEDAgUHcmVxdWVzdAAEBANCSWQJAJEDAgUHcmVxdWVzdAAFBARiYWxBCQENcGFyc2VJbnRWYWx1ZQEJAJEDAgUHcmVxdWVzdAAGBARiYWxCCQENcGFyc2VJbnRWYWx1ZQEJAJEDAgUHcmVxdWVzdAAHBAdzaGFyZUlkCQCRAwIFB3JlcXVlc3QACAQHYndBc3NldAkAkQMCBQdyZXF1ZXN0AAkECGJ3QW1vdW50CQENcGFyc2VJbnRWYWx1ZQEJAJEDAgUHcmVxdWVzdAAKCQCdCgsFBHVzZXIFBHBvb2wFBHBtdEEFA0FJZAUEcG10QgUDQklkBQRiYWxBBQRiYWxCBQdzaGFyZUlkBQdid0Fzc2V0BQhid0Ftb3VudAoBaQERcmVwbGVuaXNoUkVBRE9OTFkDBHBvb2wIbGV2ZXJhZ2UNYm9ycm93QXNzZXRJZAMDCQBmAgBkBQhsZXZlcmFnZQYJAGYCBQhsZXZlcmFnZQCsAgkAAgECH0xldmVyYWdlIGNhbid0IGJlIDwxMDAgYW5kID4zMDAEBXBUeXBlCQETdmFsdWVPckVycm9yTWVzc2FnZQIJAJ0IAgUEdGhpcwkArAICBQVrUG9vbAUEcG9vbAISUG9vbCBpcyBub3QgaW5pdGVkBA0kdDAxOTA1MzE5MTQzCQELZ2V0UG9vbERhdGECCQEHQWRkcmVzcwEJANkEAQUEcG9vbAUFcFR5cGUEA0FJZAgFDSR0MDE5MDUzMTkxNDMCXzEEA0JJZAgFDSR0MDE5MDUzMTkxNDMCXzIEBGJhbEEIBQ0kdDAxOTA1MzE5MTQzAl8zBARiYWxCCAUNJHQwMTkwNTMxOTE0MwJfNAQHc2hhcmVJZAgFDSR0MDE5MDUzMTkxNDMCXzUEDSR0MDE5MTQ2MTk3ODMDCQAAAgkAkAMBCAUBaQhwYXltZW50cwACAwkBAiE9AgkBDGFzc2V0SWRUb1N0cgEICQCRAwIIBQFpCHBheW1lbnRzAAAHYXNzZXRJZAUDQUlkCQACAQIVV3JvbmcgcGF5bWVudCBhc3NldCBBAwkBAiE9AgkBDGFzc2V0SWRUb1N0cgEICQCRAwIIBQFpCHBheW1lbnRzAAEHYXNzZXRJZAUDQklkCQACAQIVV3JvbmcgcGF5bWVudCBhc3NldCBCCQCWCgQICQCRAwIIBQFpCHBheW1lbnRzAAAGYW1vdW50BQNBSWQICQCRAwIIBQFpCHBheW1lbnRzAAEGYW1vdW50BQNCSWQDCQAAAgkAkAMBCAUBaQhwYXltZW50cwABAwkAAAIJAQxhc3NldElkVG9TdHIBCAkAkQMCCAUBaQhwYXltZW50cwAAB2Fzc2V0SWQFA0FJZAkAlgoECAkAkQMCCAUBaQhwYXltZW50cwAABmFtb3VudAUDQUlkAAAFA0JJZAMJAAACCQEMYXNzZXRJZFRvU3RyAQgJAJEDAggFAWkIcGF5bWVudHMAAAdhc3NldElkBQNCSWQJAJYKBAAABQNBSWQICQCRAwIIBQFpCHBheW1lbnRzAAAGYW1vdW50BQNCSWQJAAIBAg1Xcm9uZyBwYXltZW50CQACAQIcT25lIG9yIHR3byBwYXltZW50cyBleHBlY3RlZAQEcG10QQgFDSR0MDE5MTQ2MTk3ODMCXzEECXBtdEFzc2V0QQgFDSR0MDE5MTQ2MTk3ODMCXzIEBHBtdEIIBQ0kdDAxOTE0NjE5NzgzAl8zBAlwbXRBc3NldEIIBQ0kdDAxOTE0NjE5NzgzAl80BA0kdDAxOTc4NjIxMjk3AwkAZgIFCGxldmVyYWdlAGQEB2RQcmljZUEICgABQAkA/AcEBQ9wcmljZU9yYWNsZUFkZHICCWdldFRXQVA2MAkAzAgCBQlwbXRBc3NldEEJAMwIAgcFA25pbAUDbmlsAwkAAQIFAUACCihJbnQsIEludCkFAUAJAAIBCQCsAgIJAAMBBQFAAh8gY291bGRuJ3QgYmUgY2FzdCB0byAoSW50LCBJbnQpAl8xBAdkUHJpY2VCCAoAAUAJAPwHBAUPcHJpY2VPcmFjbGVBZGRyAglnZXRUV0FQNjAJAMwIAgUJcG10QXNzZXRCCQDMCAIHBQNuaWwFA25pbAMJAAECBQFAAgooSW50LCBJbnQpBQFACQACAQkArAICCQADAQUBQAIfIGNvdWxkbid0IGJlIGNhc3QgdG8gKEludCwgSW50KQJfMQQMcGF5ZEluRG9sbGFyCQBkAgkAawMFB2RQcmljZUEFBHBtdEEJAGwGAAoAAAkBEGdldEFzc2V0RGVjaW1hbHMBBQlwbXRBc3NldEEAAAAABQRET1dOCQBrAwUHZFByaWNlQgUEcG10QgkAbAYACgAACQEQZ2V0QXNzZXREZWNpbWFscwEFCXBtdEFzc2V0QgAAAAAFBERPV04EDGJvcnJvd0Ftb3VudAkAawMFDHBheWRJbkRvbGxhcgkAZQIFCGxldmVyYWdlAGQAZAQHcmVxdWVzdAkAuQkCCQDMCAIJAKUIAQgFAWkGY2FsbGVyCQDMCAIFBHBvb2wJAMwIAgkApAMBBQRwbXRBCQDMCAIFCXBtdEFzc2V0QQkAzAgCCQCkAwEFBHBtdEIJAMwIAgUJcG10QXNzZXRCCQDMCAIJAKQDAQUEYmFsQQkAzAgCCQCkAwEFBGJhbEIJAMwIAgUHc2hhcmVJZAkAzAgCBQ1ib3Jyb3dBc3NldElkCQDMCAIJAKQDAQUMYm9ycm93QW1vdW50CQDMCAIJAKQDAQABBQNuaWwCASwEDG5ld1JlcXVlc3RJZAoAAUAJAPwHBAUEdGhpcwIQY3JlYXRlTmV3UmVxdWVzdAkAzAgCBQdyZXF1ZXN0BQNuaWwFA25pbAMJAAECBQFAAgNJbnQFAUAJAAIBCQCsAgIJAAMBBQFAAhggY291bGRuJ3QgYmUgY2FzdCB0byBJbnQDCQAAAgUMbmV3UmVxdWVzdElkBQxuZXdSZXF1ZXN0SWQEBGFyZ3MJAMwIAgkArAICCQCsAgIJAKUIAQgFAWkGY2FsbGVyAgFfCQCkAwEAAQkAzAgCBQdzaGFyZUlkCQDMCAIFDWJvcnJvd0Fzc2V0SWQJAMwIAgUMYm9ycm93QW1vdW50CQDMCAIJAKUIAQUEdGhpcwkAzAgCAhlyZXBsZW5pc2hGcm9tTGFuZFJlYWRPbmx5CQDMCAIJAKQDAQkBE3ZhbHVlT3JFcnJvck1lc3NhZ2UCBQxuZXdSZXF1ZXN0SWQCGENhbid0IGNyZWF0ZSBuZXcgcmVxdWVzdAUDbmlsBANpbnYJAP0HBAkBDmdldExlbmRTcnZBZGRyAAINZmxhc2hQb3NpdGlvbgUEYXJncwUDbmlsAwkAAAIFA2ludgUDaW52AwkAAAIFDWJvcnJvd0Fzc2V0SWQFCXBtdEFzc2V0QQkAlgoECQBkAgUEcG10QQUMYm9ycm93QW1vdW50BQRwbXRCBQhMT0FOX0ZFRQUMYm9ycm93QW1vdW50CQCWCgQFBHBtdEEJAGQCBQRwbXRCBQxib3Jyb3dBbW91bnQFCExPQU5fRkVFBQxib3Jyb3dBbW91bnQJAAIBAiRTdHJpY3QgdmFsdWUgaXMgbm90IGVxdWFsIHRvIGl0c2VsZi4JAAIBAiRTdHJpY3QgdmFsdWUgaXMgbm90IGVxdWFsIHRvIGl0c2VsZi4JAJYKBAUEcG10QQUEcG10QgULTk9fTE9BTl9GRUUAAAQIcGF5bWVudEEIBQ0kdDAxOTc4NjIxMjk3Al8xBAhwYXltZW50QggFDSR0MDE5Nzg2MjEyOTcCXzIEB2ZlZVR5cGUIBQ0kdDAxOTc4NjIxMjk3Al8zBAxib3Jyb3dBbW91bnQIBQ0kdDAxOTc4NjIxMjk3Al80BA0kdDAyMTMwMDIxNDEyCQEPcmVwbGVuaXNoQnlUeXBlCgUFcFR5cGUFBHBvb2wFC05PX0xPQU5fRkVFBQRwbXRBBQNBSWQFBHBtdEIFA0JJZAUEYmFsQQUEYmFsQgUHc2hhcmVJZAQKdXNlclN0YWtlZAgFDSR0MDIxMzAwMjE0MTICXzEEB2F4bHlGZWUIBQ0kdDAyMTMwMDIxNDEyAl8yBA0kdDAyMTQxNjIxNTQxCQESd2l0aGRyYXdBbW91bnRDYWxjBAUEcG9vbAUKdXNlclN0YWtlZAUMYm9ycm93QW1vdW50BQ1ib3Jyb3dBc3NldElkAwkAAAIFDSR0MDIxNDE2MjE1NDEFDSR0MDIxNDE2MjE1NDEECGFzc2V0SWRCCAUNJHQwMjE0MTYyMTU0MQJfNAQNdG9Vc2VyQW1vdW50QggFDSR0MDIxNDE2MjE1NDECXzMECGFzc2V0SWRBCAUNJHQwMjE0MTYyMTU0MQJfMgQNdG9Vc2VyQW1vdW50QQgFDSR0MDIxNDE2MjE1NDECXzEJAJQKAgUDbmlsCQDMCAIFCnVzZXJTdGFrZWQJAMwIAgUNdG9Vc2VyQW1vdW50QQkAzAgCBQ10b1VzZXJBbW91bnRCBQNuaWwJAAIBAiRTdHJpY3QgdmFsdWUgaXMgbm90IGVxdWFsIHRvIGl0c2VsZi4BaQEZcmVwbGVuaXNoRnJvbUxhbmRSZWFkT25seQEJcmVxdWVzdElkBA0kdDAyMTY2NTIxNzY5CQEMcGFyc2VSZXF1ZXN0AQUJcmVxdWVzdElkBAR1c2VyCAUNJHQwMjE2NjUyMTc2OQJfMQQEcG9vbAgFDSR0MDIxNjY1MjE3NjkCXzIEBHBtdEEIBQ0kdDAyMTY2NTIxNzY5Al8zBANBSWQIBQ0kdDAyMTY2NTIxNzY5Al80BARwbXRCCAUNJHQwMjE2NjUyMTc2OQJfNQQDQklkCAUNJHQwMjE2NjUyMTc2OQJfNgQEYmFsQQgFDSR0MDIxNjY1MjE3NjkCXzcEBGJhbEIIBQ0kdDAyMTY2NTIxNzY5Al84BAdzaGFyZUlkCAUNJHQwMjE2NjUyMTc2OQJfOQQHYndBc3NldAgFDSR0MDIxNjY1MjE3NjkDXzEwBAhid0Ftb3VudAgFDSR0MDIxNjY1MjE3NjkDXzExAwkBAiE9AgkAkAMBCAUBaQhwYXltZW50cwABCQACAQISV3JvbmcgcGF5bWVudCBzaXplAwMJAQIhPQIJAQxhc3NldElkVG9TdHIBCAkAkQMCCAUBaQhwYXltZW50cwAAB2Fzc2V0SWQFB2J3QXNzZXQGCQECIT0CCAkAkQMCCAUBaQhwYXltZW50cwAABmFtb3VudAUIYndBbW91bnQJAAIBAg1Xcm9uZyBwYXltZW50BA0kdDAyMTk1OTIyMDgzAwkAAAIFA0FJZAUHYndBc3NldAkAlAoCCQBkAgUEcG10QQgJAJEDAggFAWkIcGF5bWVudHMAAAZhbW91bnQFBHBtdEIJAJQKAgUEcG10QQkAZAIFBHBtdEIICQCRAwIIBQFpCHBheW1lbnRzAAAGYW1vdW50BAdwbXRBbGxBCAUNJHQwMjE5NTkyMjA4MwJfMQQHcG10QWxsQggFDSR0MDIxOTU5MjIwODMCXzIEBXBUeXBlCQETdmFsdWVPckVycm9yTWVzc2FnZQIJAJ0IAgUEdGhpcwkArAICBQVrUG9vbAUEcG9vbAIMVW5rbm93biBwb29sBA0kdDAyMjE2NTIyMjc0CQEPcmVwbGVuaXNoQnlUeXBlCgUFcFR5cGUFBHBvb2wFCExPQU5fRkVFBQRwbXRBBQNBSWQFBHBtdEIFA0JJZAUEYmFsQQUEYmFsQgUHc2hhcmVJZAQKdXNlclN0YWtlZAgFDSR0MDIyMTY1MjIyNzQCXzEEB2F4bHlGZWUIBQ0kdDAyMjE2NTIyMjc0Al8yBQNuaWwBaQEJcmVwbGVuaXNoAwRwb29sCGxldmVyYWdlDWJvcnJvd0Fzc2V0SWQDAwkAZgIAZAUIbGV2ZXJhZ2UGCQBmAgUIbGV2ZXJhZ2UArAIJAAIBAh9MZXZlcmFnZSBjYW4ndCBiZSA8MTAwIGFuZCA+MzAwBAVwVHlwZQkBE3ZhbHVlT3JFcnJvck1lc3NhZ2UCCQCdCAIFBHRoaXMJAKwCAgUFa1Bvb2wFBHBvb2wCElBvb2wgaXMgbm90IGluaXRlZAQNJHQwMjI1ODgyMjY3OAkBC2dldFBvb2xEYXRhAgkBB0FkZHJlc3MBCQDZBAEFBHBvb2wFBXBUeXBlBANBSWQIBQ0kdDAyMjU4ODIyNjc4Al8xBANCSWQIBQ0kdDAyMjU4ODIyNjc4Al8yBARiYWxBCAUNJHQwMjI1ODgyMjY3OAJfMwQEYmFsQggFDSR0MDIyNTg4MjI2NzgCXzQEB3NoYXJlSWQIBQ0kdDAyMjU4ODIyNjc4Al81BA0kdDAyMjY4MTIzMzE4AwkAAAIJAJADAQgFAWkIcGF5bWVudHMAAgMJAQIhPQIJAQxhc3NldElkVG9TdHIBCAkAkQMCCAUBaQhwYXltZW50cwAAB2Fzc2V0SWQFA0FJZAkAAgECFVdyb25nIHBheW1lbnQgYXNzZXQgQQMJAQIhPQIJAQxhc3NldElkVG9TdHIBCAkAkQMCCAUBaQhwYXltZW50cwABB2Fzc2V0SWQFA0JJZAkAAgECFVdyb25nIHBheW1lbnQgYXNzZXQgQgkAlgoECAkAkQMCCAUBaQhwYXltZW50cwAABmFtb3VudAUDQUlkCAkAkQMCCAUBaQhwYXltZW50cwABBmFtb3VudAUDQklkAwkAAAIJAJAD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QgUDQklkBQRiYWxBBQRiYWxCBQdzaGFyZUlkBAp1c2VyU3Rha2VkCAUNJHQwMjQ2MTUyNDcyNwJfMQQHYXhseUZlZQgFDSR0MDI0NjE1MjQ3MjcCXzIJARByZXBsZW5pc2hFbnRyaWVzBwUEcG9vbAkApQgBCAUBaQZjYWxsZXIFCnVzZXJTdGFrZWQFB2F4bHlGZWUFCW5ld1Bvc051bQUHc2hhcmVJZAUFcFR5cGUBaQERcmVwbGVuaXNoRnJvbUxhbmQBCXJlcXVlc3RJZAQNJHQwMjQ4ODkyNDk5MwkBDHBhcnNlUmVxdWVzdAEFCXJlcXVlc3RJZAQEdXNlcggFDSR0MDI0ODg5MjQ5OTMCXzEEBHBvb2wIBQ0kdDAyNDg4OTI0OTkzAl8yBARwbXRBCAUNJHQwMjQ4ODkyNDk5MwJfMwQDQUlkCAUNJHQwMjQ4ODkyNDk5MwJfNAQEcG10QggFDSR0MDI0ODg5MjQ5OTMCXzUEA0JJZAgFDSR0MDI0ODg5MjQ5OTMCXzYEBGJhbEEIBQ0kdDAyNDg4OTI0OTkzAl83BARiYWxCCAUNJHQwMjQ4ODkyNDk5MwJfOAQHc2hhcmVJZAgFDSR0MDI0ODg5MjQ5OTMCXzkEB2J3QXNzZXQIBQ0kdDAyNDg4OTI0OTkzA18xMAQIYndBbW91bnQIBQ0kdDAyNDg4OTI0OTkzA18xMQMJAQIhPQIJAJADAQgFAWkIcGF5bWVudHMAAQkAAgECEldyb25nIHBheW1lbnQgc2l6ZQMDCQECIT0CCQEMYXNzZXRJZFRvU3RyAQgJAJEDAggFAWkIcGF5bWVudHMAAAdhc3NldElkBQdid0Fzc2V0BgkBAiE9AggJAJEDAggFAWkIcGF5bWVudHMAAAZhbW91bnQFCGJ3QW1vdW50CQACAQINV3JvbmcgcGF5bWVudAQNJHQwMjUxODMyNTMwNwMJAAACBQNBSWQFB2J3QXNzZXQJAJQKAgkAZAIFBHBtdEEICQCRAwIIBQFpCHBheW1lbnRzAAAGYW1vdW50BQRwbXRCCQCUCgIFBHBtdEEJAGQCBQRwbXRCCAkAkQMCCAUBaQhwYXltZW50cwAABmFtb3VudAQHcG10QWxsQQgFDSR0MDI1MTgzMjUzMDcCXzEEB3BtdEFsbEIIBQ0kdDAyNTE4MzI1MzA3Al8yBAVwVHlwZQkBE3ZhbHVlT3JFcnJvck1lc3NhZ2UCCQCdCAIFBHRoaXMJAKwCAgUFa1Bvb2wFBHBvb2wCDFVua25vd24gcG9vbAQNJHQwMjUzODkyNTQ5OAkBD3JlcGxlbmlzaEJ5VHlwZQoFBXBUeXBlBQRwb29sBQhMT0FOX0ZFRQUEcG10QQUDQUlkBQRwbXRCBQNCSWQFBGJhbEEFBGJhbEIFB3NoYXJlSWQECnVzZXJTdGFrZWQIBQ0kdDAyNTM4OTI1NDk4Al8xBAdheGx5RmVlCAUNJHQwMjUzODkyNTQ5OAJfMgQGcG9zTnVtCQEYZ2V0TmV3VXNlclBvc2l0aW9uTnVtYmVyAgUEcG9vbAkApQgBCAUBaQZjYWxsZXIEDWJvcnJvd0VudHJpZXMJAMwIAgkBDEludGVnZXJFbnRyeQIJAKwCAgkArAICCQCsAgIJAKwCAgkArAICBQRwb29sAgFfBQR1c2VyAgFfCQCkAwEFBnBvc051bQURa1VzZXJCb3Jyb3dBbW91bnQFCGJ3QW1vdW50CQDMCAIJAQtTdHJpbmdFbnRyeQIJAKwCAgkArAICCQCsAgIJAKwCAgkArAICBQRwb29sAgFfBQR1c2VyAgFfCQCkAwEFBnBvc051bQUSa1VzZXJCb3Jyb3dBc3NldElkBQdid0Fzc2V0BQNuaWwEB2VudHJpZXMJARByZXBsZW5pc2hFbnRyaWVzBwUEcG9vbAUEdXNlcgUKdXNlclN0YWtlZAUHYXhseUZlZQUGcG9zTnVtBQdzaGFyZUlkBQVwVHlwZQkAlAoCCQDNCAIJAM4IAgUHZW50cmllcwUNYm9ycm93RW50cmllcwkBC0RlbGV0ZUVudHJ5AQkArAICBQlyZXF1ZXN0SWQFCmtSZXF1ZXN0SWQFCnVzZXJTdGFrZWQBaQEId2l0aGRyYXcCBHBvb2wFcG9zSWQEBHVzZXIJAKUIAQgFAWkGY2FsbGVyBAdwQW1vdW50CQETdmFsdWVPckVycm9yTWVzc2FnZQIJAJoIAgUEdGhpcwkArAICCQCsAgIJAKwCAgkArAICCQCsAgIFBHBvb2wCAV8FBHVzZXICAV8JAKQDAQUFcG9zSWQFDWtVc2VyUG9zaXRpb24CEFVua25vd24gcG9zaXRpb24EDHVzZXJJbnRlcmVzdAkBEUBleHRyTmF0aXZlKDEwNTApAgUEdGhpcwkArAICCQCsAgIJAKwCAgkArAICCQCsAgIFBHBvb2wCAV8FBHVzZXICAV8JAKQDAQUFcG9zSWQFFWtVc2VyUG9zaXRpb25JbnRlcmVzdAQLcG9vbEludGVyc3QJARFAZXh0ck5hdGl2ZSgxMDUwKQIFBHRoaXMJAKwCAgUEcG9vbAUNa1Bvb2xJbnRlcmVzdAQOcG9vbFRvdGFsU2hhcmUJARFnZXRQb29sVG90YWxTaGFyZQEFBHBvb2wED3VzZXJDYW5XaXRoZHJhdwkAZAIFB3BBbW91bnQJAGsDBQdwQW1vdW50CQBlAgULcG9vbEludGVyc3QFDHVzZXJJbnRlcmVzdAUHU0NBTEUxMAQIdXNlckFkZHIJAQdBZGRyZXNzAQkA2QQBBQR1c2VyBAxib3Jyb3dBbW91bnQJARFAZXh0ck5hdGl2ZSgxMDUwKQIFBHRoaXMJAKwCAgkArAICCQCsAgIJAKwCAgkArAICBQRwb29sAgFfBQR1c2VyAgFfCQCkAwEFBXBvc0lkBRFrVXNlckJvcnJvd0Ftb3VudAQLYm9ycm93QXNzZXQJARFAZXh0ck5hdGl2ZSgxMDUzKQIFBHRoaXMJAKwCAgkArAICCQCsAgIJAKwCAgkArAICBQRwb29sAgFfBQR1c2VyAgFfCQCkAwEFBXBvc0lkBRJrVXNlckJvcnJvd0Fzc2V0SWQEBGRlYnQDCQBmAgUMYm9ycm93QW1vdW50AAAKAAFACQD8BwQJAQ5nZXRMZW5kU3J2QWRkcgACDGdldEFzc2V0RGVidAkAzAgCBwkAzAgCCQCsAgIJAKwCAgkArAICCQCsAgIFBHBvb2wCAV8FBHVzZXICAV8JAKQDAQUFcG9zSWQJAMwIAgULYm9ycm93QXNzZXQFA25pbAUDbmlsAwkAAQIFAUACA0ludAUBQAkAAgEJAKwCAgkAAwEFAUACGCBjb3VsZG4ndCBiZSBjYXN0IHRvIEludAAABA0kdDAyNjk0MDI3MDYwCQESd2l0aGRyYXdBbW91bnRDYWxjBAUEcG9vbAUPdXNlckNhbldpdGhkcmF3BQRkZWJ0BQtib3Jyb3dBc3NldAMJAAACBQ0kdDAyNjk0MDI3MDYwBQ0kdDAyNjk0MDI3MDYwBAhhc3NldElkQggFDSR0MDI2OTQwMjcwNjACXzQEDXRvVXNlckFtb3VudEIIBQ0kdDAyNjk0MDI3MDYwAl8zBAhhc3NldElkQQgFDSR0MDI2OTQwMjcwNjACXzIEDXRvVXNlckFtb3VudEEIBQ0kdDAyNjk0MDI3MDYwAl8xBAtjbG9zZURidEludgMJAGYCBQRkZWJ0AAAJAPwHBAkBDmdldExlbmRTcnZBZGRyAAIIcmVwYXlGb3IJAMwIAgkArAICCQCsAgIFBHVzZXICAV8JAKQDAQUFcG9zSWQFA25pbAkAzAgCCQEPQXR0YWNoZWRQYXltZW50AgkBDmFzc2V0SWRGcm9tU3RyAQULYm9ycm93QXNzZXQFBGRlYnQFA25pbAAAAwkAAAIFC2Nsb3NlRGJ0SW52BQtjbG9zZURidEludgkAzAgCCQELRGVsZXRlRW50cnkBCQCsAgIJAKwCAgkArAICCQCsAgIJAKwCAgUEcG9vbAIBXwUEdXNlcgIBXwkApAMBBQVwb3NJZAUNa1VzZXJQb3NpdGlvbgkAzAgCCQELRGVsZXRlRW50cnkBCQCsAgIJAKwCAgkArAICCQCsAgIJAKwCAgUEcG9vbAIBXwUEdXNlcgIBXwkApAMBBQVwb3NJZAUVa1VzZXJQb3NpdGlvbkludGVyZXN0CQDMCAIJAQxJbnRlZ2VyRW50cnkCCQCsAgIFBHBvb2wFCmtQb29sVG90YWwJAGUCBQ5wb29sVG90YWxTaGFyZQUPdXNlckNhbldpdGhkcmF3CQDMCAIJAQ5TY3JpcHRUcmFuc2ZlcgMFCHVzZXJBZGRyBQ10b1VzZXJBbW91bnRBCQEOYXNzZXRJZEZyb21TdHIBBQhhc3NldElkQQkAzAgCCQEOU2NyaXB0VHJhbnNmZXIDBQh1c2VyQWRkcgUNdG9Vc2VyQW1vdW50QgkBDmFzc2V0SWRGcm9tU3RyAQUIYXNzZXRJZEIFA25pbAkAAgECJFN0cmljdCB2YWx1ZSBpcyBub3QgZXF1YWwgdG8gaXRzZWxmLgkAAgECJFN0cmljdCB2YWx1ZSBpcyBub3QgZXF1YWwgdG8gaXRzZWxmLgFpARBjcmVhdGVOZXdSZXF1ZXN0AQZwYXJhbXMJAQt2YWx1ZU9yRWxzZQIJAQppc1NlbGZDYWxsAQUBaQQMbmV3UmVxdWVzdElkCQBkAgkBC3ZhbHVlT3JFbHNlAgkAmggCBQR0aGlzBQxrUmVxdWVzdEl0ZXIAAAABCQCUCgIJAMwIAgkBC1N0cmluZ0VudHJ5AgkArAICCQCkAwEFDG5ld1JlcXVlc3RJZAUKa1JlcXVlc3RJZAUGcGFyYW1zCQDMCAIJAQxJbnRlZ2VyRW50cnkCBQxrUmVxdWVzdEl0ZXIFDG5ld1JlcXVlc3RJZAUDbmlsBQxuZXdSZXF1ZXN0SWQBaQESY2FwaXRhbGl6ZUV4S2VlcGVyDARwb29sBHR5cGUJdG9rZW5Ub0lkEGFtb3VudFRvRXhjaGFuZ2UFY2xhaW0JYW1vdW50c0luCWFkZHJlc3Nlcw9hc3NldHNUb1JlY2VpdmULZXN0UmVjZWl2ZWQRc2xpcHBhZ2VUb2xlcmFuY2ULbWluUmVjZWl2ZWQHb3B0aW9ucwQNJHQwMjgzNTcyODU1MQMFBWNsYWltCQELY2xhaW1GYXJtZWQCBQR0eXBlBQRwb29sBAxjbGFpbWVkQXNzZXQDCQAAAgUEdHlwZQUHU0ZfUE9PTAUGU1dPUElEBQRXWElECQCUCgIFEGFtb3VudFRvRXhjaGFuZ2UFDGNsYWltZWRBc3NldAQNY2xhaW1lZEFtb3VudAgFDSR0MDI4MzU3Mjg1NTECXzEEDGNsYWltZWRBc3NldAgFDSR0MDI4MzU3Mjg1NTECXzIED2V4Y2hhbmdlZEFtb3VudAkBDmV4Y2hhbmdlS2VlcGVyCgUJdG9rZW5Ub0lkBRBhbW91bnRUb0V4Y2hhbmdlBQxjbGFpbWVkQXNzZXQFCWFtb3VudHNJbgUJYWRkcmVzc2VzBQ9hc3NldHNUb1JlY2VpdmUFC2VzdFJlY2VpdmVkBRFzbGlwcGFnZVRvbGVyYW5jZQULbWluUmVjZWl2ZWQFB29wdGlvbnMEBmNoYW5nZQkAZQIFDWNsYWltZWRBbW91bnQFEGFtb3VudFRvRXhjaGFuZ2UEC2NoYW5nZUVudHJ5AwkAZgIFBmNoYW5nZQAACQDMCAIJAQxJbnRlZ2VyRW50cnkCCQCsAgIFBHBvb2wFDmtQb29sQ2FwQ2hhbmdlCQBkAgUGY2hhbmdlCQELdmFsdWVPckVsc2UCCQCaCAIFBHRoaXMJAKwCAgUEcG9vbAUOa1Bvb2xDYXBDaGFuZ2UAAAUDbmlsBQNuaWwJAM4IAgkBCmNhcGl0YWxpemUEBQRwb29sBQR0eXBlBQl0b2tlblRvSWQFD2V4Y2hhbmdlZEFtb3VudAULY2hhbmdlRW50cnkBaQESY2FwaXRhbGl6ZUV4UGF6emxlCARwb29sBHR5cGUJdG9rZW5Ub0lkEGFtb3VudFRvRXhjaGFuZ2UFY2xhaW0Jcm91dGVzU3RyDG1pblRvUmVjZWl2ZQdvcHRpb25zBA0kdDAyOTIwNzI5NDAxAwUFY2xhaW0JAQtjbGFpbUZhcm1lZAIFBHR5cGUFBHBvb2wEDGNsYWltZWRBc3NldAMJAAACBQR0eXBlBQdTRl9QT09MBQZTV09QSUQFBFdYSUQJAJQKAgUQYW1vdW50VG9FeGNoYW5nZQUMY2xhaW1lZEFzc2V0BA1jbGFpbWVkQW1vdW50CAUNJHQwMjkyMDcyOTQwMQJfMQQMY2xhaW1lZEFzc2V0CAUNJHQwMjkyMDcyOTQwMQJfMgQPZXhjaGFuZ2VkQW1vdW50CQEOZXhjaGFuZ2VQYXp6bGUGBQl0b2tlblRvSWQFEGFtb3VudFRvRXhjaGFuZ2UFDGNsYWltZWRBc3NldAUJcm91dGVzU3RyBQxtaW5Ub1JlY2VpdmUFB29wdGlvbnMEBmNoYW5nZQkAZQIFDWNsYWltZWRBbW91bnQFEGFtb3VudFRvRXhjaGFuZ2UEC2NoYW5nZUVudHJ5AwkAZgIFBmNoYW5nZQAACQDMCAIJAQxJbnRlZ2VyRW50cnkCCQCsAgIFBHBvb2wFDmtQb29sQ2FwQ2hhbmdlCQBkAgUGY2hhbmdlCQELdmFsdWVPckVsc2UCCQCaCAIFBHRoaXMJAKwCAgUEcG9vbAUOa1Bvb2xDYXBDaGFuZ2UAAAUDbmlsBQNuaWwJAM4IAgkBCmNhcGl0YWxpemUEBQRwb29sBQR0eXBlBQl0b2tlblRvSWQFD2V4Y2hhbmdlZEFtb3VudAULY2hhbmdlRW50cnkBaQESY2FwaXRhbGl6ZUV4U3dvcEZpDARwb29sBHR5cGUJdG9rZW5Ub0lkEGFtb3VudFRvRXhjaGFuZ2UFY2xhaW0KZXhjaGFuZ2Vycw5leGNoYW5nZXJzVHlwZQVhcmdzMQVhcmdzMhFyb3V0aW5nQXNzZXRzS2V5cxJtaW5BbW91bnRUb1JlY2VpdmUHb3B0aW9ucwQNJHQwMzAxMjQzMDMxOAMFBWNsYWltCQELY2xhaW1GYXJtZWQCBQR0eXBlBQRwb29sBAxjbGFpbWVkQXNzZXQDCQAAAgUEdHlwZQUHU0ZfUE9PTAUGU1dPUElEBQRXWElECQCUCgIFEGFtb3VudFRvRXhjaGFuZ2UFDGNsYWltZWRBc3NldAQNY2xhaW1lZEFtb3VudAgFDSR0MDMwMTI0MzAzMTgCXzEEDGNsYWltZWRBc3NldAgFDSR0MDMwMTI0MzAzMTgCXzIED2V4Y2hhbmdlZEFtb3VudAkBDmV4Y2hhbmdlU3dvcEZpCgUJdG9rZW5Ub0lkBRBhbW91bnRUb0V4Y2hhbmdlBQxjbGFpbWVkQXNzZXQFCmV4Y2hhbmdlcnMFDmV4Y2hhbmdlcnNUeXBlBQVhcmdzMQUFYXJnczIFEXJvdXRpbmdBc3NldHNLZXlzBRJtaW5BbW91bnRUb1JlY2VpdmUFB29wdGlvbnMEBmNoYW5nZQkAZQIFDWNsYWltZWRBbW91bnQFEGFtb3VudFRvRXhjaGFuZ2UEC2NoYW5nZUVudHJ5AwkAZgIFBmNoYW5nZQAACQDMCAIJAQxJbnRlZ2VyRW50cnkCCQCsAgIFBHBvb2wFDmtQb29sQ2FwQ2hhbmdlCQBkAgUGY2hhbmdlCQELdmFsdWVPckVsc2UCCQCaCAIFBHRoaXMJAKwCAgUEcG9vbAUOa1Bvb2xDYXBDaGFuZ2UAAAUDbmlsBQNuaWwJAM4IAgkBCmNhcGl0YWxpemUEBQRwb29sBQR0eXBlBQl0b2tlblRvSWQFD2V4Y2hhbmdlZEFtb3VudAULY2hhbmdlRW50cnkBaQELaW5pdE5ld1Bvb2wFBHR5cGUIcG9vbEFkZHILaW5GZWVOb0xvYW4JaW5GZWVMb2FuBmNhcEZlZQMDCQECIT0CBQR0eXBlBQdTRl9QT09MCQECIT0CBQR0eXBlBQdXWF9QT09MBwkAAgECCldyb25nIHR5cGUJAMwIAgkBDEludGVnZXJFbnRyeQIJAKwCAgUIcG9vbEFkZHIFFWtBeGx5SW5GZWVXaXRob3V0TG9hbgULaW5GZWVOb0xvYW4JAMwIAgkBDEludGVnZXJFbnRyeQIJAKwCAgUIcG9vbEFkZHIFEmtBeGx5SW5GZWVXaXRoTG9hbgUJaW5GZWVMb2FuCQDMCAIJAQxJbnRlZ2VyRW50cnkCCQCsAgIFCHBvb2xBZGRyBQtrQXhseUNhcEZlZQUGY2FwRmVlCQDMCAIJAQxJbnRlZ2VyRW50cnkCCQCsAgIFCHBvb2xBZGRyBQ1rUG9vbEludGVyZXN0AAAJAMwIAgkBC1N0cmluZ0VudHJ5AgkArAICBQVrUG9vbAUIcG9vbEFkZHIFBHR5cGUFA25pbAECdHgBBnZlcmlmeQAJAPQDAwgFAnR4CWJvZHlCeXRlcwkAkQMCCAUCdHgGcHJvb2ZzAAAIBQJ0eA9zZW5kZXJQdWJsaWNLZXmkTWIo", "height": 2541735, "applicationStatus": "succeeded", "spentComplexity": 0 } View: original | compacted Prev: 4xywBKP5PNVxYfCzvzWiAYkzdUtQmzuKRVtWZoWcHg3V Next: AzvBKi1Rn5LX2nwRd14t6BCsXiXzBeT5W435XQM3bkaV Diff:
OldNewDifferences
351351 }
352352
353353
354-func aZ (ad,af,ba,aO,bb,ay,ab) = {
355- let bc = ac(ad)
356- let bd = getIntegerValue(this, (ad + u))
357-[IntegerEntry((ad + t), (bc + ba)), IntegerEntry((((((ad + "_") + af) + "_") + toString(bb)) + o), ba), IntegerEntry((((((ad + "_") + af) + "_") + toString(bb)) + s), bd), IntegerEntry((((ad + "_") + af) + r), bb), ScriptTransfer(I, aO, fromBase58String(ay))]
354+func aZ (ab,ad,ah,as,ba,au,bb,aw,ax,ay) = if ((ab == a))
355+ then ar(ad, d, as, ba, au, bb, aw, ax, ay)
356+ else if ((ab == b))
357+ then aR(ad, d, as, ba, au, bb, ay)
358+ else throw("Wrong pool type")
359+
360+
361+func bc (ad,af,bd,aO,be,ay,ab) = {
362+ let bf = ac(ad)
363+ let bg = getIntegerValue(this, (ad + u))
364+[IntegerEntry((ad + t), (bf + bd)), IntegerEntry((((((ad + "_") + af) + "_") + toString(be)) + o), bd), IntegerEntry((((((ad + "_") + af) + "_") + toString(be)) + s), bg), IntegerEntry((((ad + "_") + af) + r), be), ScriptTransfer(I, aO, fromBase58String(ay))]
358365 }
359366
360367
361-func be (ab,ad) = if ((ab == a))
368+func bh (ab,ad) = if ((ab == a))
362369 then {
363- let bf = Q(M)
364- if ((bf == bf))
370+ let bi = Q(M)
371+ if ((bi == bi))
365372 then {
366- let bg = invoke(ai(), "claim", [ad], nil)
367- if ((bg == bg))
373+ let bj = invoke(ai(), "claim", [ad], nil)
374+ if ((bj == bj))
368375 then {
369- let bh = Q(M)
370- $Tuple2((bh - bf), M)
376+ let bk = Q(M)
377+ $Tuple2((bk - bi), M)
371378 }
372379 else throw("Strict value is not equal to itself.")
373380 }
375382 }
376383 else if ((ab == b))
377384 then {
378- let bf = Q(N)
379- if ((bf == bf))
385+ let bi = Q(N)
386+ if ((bi == bi))
380387 then {
381- let bg = invoke(aj(Address(fromBase58String(ad))), "claimWX", [ad], nil)
382- if ((bg == bg))
388+ let bj = invoke(aj(Address(fromBase58String(ad))), "claimWX", [ad], nil)
389+ if ((bj == bj))
383390 then {
384- let bh = Q(N)
385- $Tuple2((bh - bf), N)
391+ let bk = Q(N)
392+ $Tuple2((bk - bi), N)
386393 }
387394 else throw("Strict value is not equal to itself.")
388395 }
391398 else throw("Wrong pool type")
392399
393400
394-func bi (bj,bk,bl,bm,bn,bo,bp,bq,br,bs) = {
395- let bt = Q(ao(bj))
396- if ((bt == bt))
401+func bl (bm,bn,bo,bp,bq,br,bs,bt,bu,bv) = {
402+ let bw = Q(ao(bm))
403+ if ((bw == bw))
397404 then {
398- let bg = invoke(J, "swap", [bm, bn, bo, bp, bq, br, bs], [AttachedPayment(bl, bk)])
399- if ((bg == bg))
400- then (Q(ao(bj)) - bt)
405+ let bj = invoke(J, "swap", [bp, bq, br, bs, bt, bu, bv], [AttachedPayment(bo, bn)])
406+ if ((bj == bj))
407+ then (Q(ao(bm)) - bw)
401408 else throw("Strict value is not equal to itself.")
402409 }
403410 else throw("Strict value is not equal to itself.")
404411 }
405412
406413
407-func bu (bj,bk,bl,bv,bw,bs) = {
408- let bt = Q(ao(bj))
409- if ((bt == bt))
414+func bx (bm,bn,bo,by,bz,bv) = {
415+ let bw = Q(ao(bm))
416+ if ((bw == bw))
410417 then {
411- let bg = invoke(J, "puzzleSwap", [bv, bw, bs], [AttachedPayment(bl, bk)])
412- if ((bg == bg))
413- then (Q(ao(bj)) - bt)
418+ let bj = invoke(J, "puzzleSwap", [by, bz, bv], [AttachedPayment(bo, bn)])
419+ if ((bj == bj))
420+ then (Q(ao(bm)) - bw)
414421 else throw("Strict value is not equal to itself.")
415422 }
416423 else throw("Strict value is not equal to itself.")
417424 }
418425
419426
420-func bx (bj,bk,bl,by,bz,bA,bB,bC,bD,bs) = {
421- let bt = Q(ao(bj))
422- if ((bt == bt))
427+func bA (bm,bn,bo,bB,bC,bD,bE,bF,bG,bv) = {
428+ let bw = Q(ao(bm))
429+ if ((bw == bw))
423430 then {
424- let bg = invoke(J, "swopfiSwap", [by, bz, bA, bB, bC, bD, bs], [AttachedPayment(bl, bk)])
425- if ((bg == bg))
426- then (Q(ao(bj)) - bt)
431+ let bj = invoke(J, "swopfiSwap", [bB, bC, bD, bE, bF, bG, bv], [AttachedPayment(bo, bn)])
432+ if ((bj == bj))
433+ then (Q(ao(bm)) - bw)
427434 else throw("Strict value is not equal to itself.")
428435 }
429436 else throw("Strict value is not equal to itself.")
430437 }
431438
432439
433-func bE (ad,ab,bF,bG) = {
440+func bH (ad,bI,bJ,bK) = {
434441 let W = Address(fromBase58String(ad))
435- let bH = aa(W, ab)
436- let bI = bH._1
437- let bJ = bH._2
438- let aw = bH._3
439- let ax = bH._4
440- let ay = bH._5
441- let bK = if ((bF == bI))
442- then $Tuple2(bG, 0)
443- else $Tuple2(0, bG)
444- let as = bK._1
445- let au = bK._2
446- let bL = if ((ab == a))
447- then ar(ad, c, as, bI, au, bJ, aw, ax, ay)
448- else aR(ad, c, as, bI, au, bJ, ay)
442+ let bL = aa(W, bI)
449443 let ba = bL._1
450- let bM = bL._2
451- let bd = valueOrElse(getInteger(this, (ad + u)), 0)
452- let bN = ac(ad)
453- let bO = (bd + fraction(ba, g, bN))
454-[IntegerEntry((ad + u), bO), ScriptTransfer(I, bM, fromBase58String(ay))]
444+ let bb = bL._2
445+ let aw = bL._3
446+ let ax = bL._4
447+ let ay = bL._5
448+ let bM = if ((bJ == ba))
449+ then $Tuple2(bK, 0)
450+ else $Tuple2(0, bK)
451+ let as = bM._1
452+ let au = bM._2
453+ let bN = aZ(bI, ad, c, as, ba, au, bb, aw, ax, ay)
454+ let bd = bN._1
455+ let bO = bN._2
456+ let bg = valueOrElse(getInteger(this, (ad + u)), 0)
457+ let bP = ac(ad)
458+ let bQ = (bg + fraction(bd, g, bP))
459+[IntegerEntry((ad + u), bQ), ScriptTransfer(I, bO, fromBase58String(ay))]
455460 }
456461
457462
458-func bP (ad,bQ,bR,aw,ax,bS,bT) = {
463+func bR (ad,bS,bT,aw,ax,bU,bV) = {
459464 let W = Address(fromBase58String(ad))
460- let bU = 1000000
461- let bV = getIntegerValue(W, n)
462- let bW = fraction(bS, bU, (bU - bV))
463- let bX = if ((bT == bQ))
465+ let bW = 1000000
466+ let bX = getIntegerValue(W, n)
467+ let bY = fraction(bU, bW, (bW - bX))
468+ let bZ = if ((bV == bS))
464469 then {
465- let bY = fraction(aw, bW, (ax - bW))
466- $Tuple2(bY, bR)
470+ let ca = fraction(aw, bY, (ax - bY))
471+ $Tuple2(ca, bT)
467472 }
468473 else {
469- let bY = fraction(ax, bW, (aw - bW))
470- $Tuple2(bY, bQ)
474+ let ca = fraction(ax, bY, (aw - bY))
475+ $Tuple2(ca, bS)
471476 }
472- let bY = bX._1
473- let bZ = bX._2
474- invoke(W, "callFunction", ["exchange", ["1"]], [AttachedPayment(ao(bZ), bY)])
477+ let ca = bZ._1
478+ let cb = bZ._2
479+ invoke(W, "callFunction", ["exchange", ["1"]], [AttachedPayment(ao(cb), ca)])
475480 }
476481
477482
478-func ca (ad,bQ,bR,aw,ax,bS,bT) = {
483+func cc (ad,bS,bT,aw,ax,bU,bV) = {
479484 let W = Address(fromBase58String(ad))
480- let cb = getIntegerValue(L, "%s__protocolFee")
481- let cc = getIntegerValue(L, "%s__poolFee")
482- let cd = toBigInt(100000000)
483- let ce = if ((bT == bQ))
485+ let cd = getIntegerValue(L, "%s__protocolFee")
486+ let ce = getIntegerValue(L, "%s__poolFee")
487+ let cf = toBigInt(100000000)
488+ let cg = if ((bV == bS))
484489 then {
485- let bY = fraction(aw, bS, (ax - bS))
486- $Tuple2(bY, bR)
490+ let ca = fraction(aw, bU, (ax - bU))
491+ $Tuple2(ca, bT)
487492 }
488493 else {
489- let bY = fraction(ax, bS, (aw - bS))
490- $Tuple2(bY, bQ)
494+ let ca = fraction(ax, bU, (aw - bU))
495+ $Tuple2(ca, bS)
491496 }
492- let bY = ce._1
493- let bZ = ce._2
494- let cf = toInt(fraction(toBigInt(bY), cd, (cd - toBigInt((cb + cc)))))
495- invoke(L, "swap", [1, bT, toString(this)], [AttachedPayment(ao(bZ), cf)])
497+ let ca = cg._1
498+ let cb = cg._2
499+ let ch = toInt(fraction(toBigInt(ca), cf, (cf - toBigInt((cd + ce)))))
500+ invoke(L, "swap", [1, bV, toString(this)], [AttachedPayment(ao(cb), ch)])
496501 }
497502
498503
499-func cg (ab,ad,bQ,bR,aw,ax,bS,bT) = if ((ab == a))
500- then bP(ad, bQ, bR, aw, ax, bS, bT)
501- else ca(ad, bQ, bR, aw, ax, bS, bT)
504+func ci (ab,ad,bS,bT,aw,ax,bU,bV) = if ((ab == a))
505+ then bR(ad, bS, bT, aw, ax, bU, bV)
506+ else cc(ad, bS, bT, aw, ax, bU, bV)
502507
503508
504-func ch (ad,ci,cj,ck) = {
509+func cj (ad,ck,cl,cm) = {
505510 let W = Address(fromBase58String(ad))
506- let cl = valueOrErrorMessage(getString(this, (A + ad)), "Unknown pool")
507- let cm = aa(W, cl)
508- let bQ = cm._1
509- let bR = cm._2
510- let aw = cm._3
511- let ax = cm._4
512- let cn = Q(ao(bQ))
513- if ((cn == cn))
511+ let bI = valueOrErrorMessage(getString(this, (A + ad)), "Unknown pool")
512+ let cn = aa(W, bI)
513+ let bS = cn._1
514+ let bT = cn._2
515+ let aw = cn._3
516+ let ax = cn._4
517+ let co = Q(ao(bS))
518+ if ((co == co))
514519 then {
515- let co = Q(ao(bR))
516- if ((co == co))
520+ let cp = Q(ao(bT))
521+ if ((cp == cp))
517522 then {
518- let bg = if ((cl == a))
519- then invoke(W, "callFunction", ["withdraw", [toString(ci)]], nil)
520- else if ((cl == b))
521- then invoke(W, "unstakeAndGet", [ci], nil)
523+ let bj = if ((bI == a))
524+ then invoke(W, "callFunction", ["withdraw", [toString(ck)]], nil)
525+ else if ((bI == b))
526+ then invoke(W, "unstakeAndGet", [ck], nil)
522527 else throw("Wrong position type")
523- if ((bg == bg))
528+ if ((bj == bj))
524529 then {
525- let cp = Q(ao(bQ))
526- let cq = Q(ao(bR))
527- let cr = $Tuple2((cp - cn), (cq - co))
528- let cs = cr._1
529- let ct = cr._2
530- let cu = if ((cj > 0))
530+ let cq = Q(ao(bS))
531+ let cr = Q(ao(bT))
532+ let cs = $Tuple2((cq - co), (cr - cp))
533+ let ct = cs._1
534+ let cu = cs._2
535+ let cv = if ((cl > 0))
531536 then {
532- let cv = if (if ((ck == bQ))
533- then (cj > cs)
537+ let cw = if (if ((cm == bS))
538+ then (cl > ct)
534539 else false)
535- then (cj - cs)
536- else if (if ((ck == bR))
537- then (cj > ct)
540+ then (cl - ct)
541+ else if (if ((cm == bT))
542+ then (cl > cu)
538543 else false)
539- then (cj - ct)
544+ then (cl - cu)
540545 else 0
541- let cw = if ((cv > 0))
542- then cg(cl, ad, bQ, bR, aw, ax, cv, ck)
546+ let cx = if ((cw > 0))
547+ then ci(bI, ad, bS, bT, aw, ax, cw, cm)
543548 else 0
544- if ((cw == cw))
549+ if ((cx == cx))
545550 then {
546- let cx = Q(ao(bQ))
547- let cy = Q(ao(bR))
548- $Tuple2((cx - cn), (cy - co))
551+ let cy = Q(ao(bS))
552+ let cz = Q(ao(bT))
553+ $Tuple2((cy - co), (cz - cp))
549554 }
550555 else throw("Strict value is not equal to itself.")
551556 }
552- else $Tuple2(cs, ct)
553- let cz = cu._1
554- let cA = cu._2
555- $Tuple4(cz, bQ, cA, bR)
557+ else $Tuple2(ct, cu)
558+ let cA = cv._1
559+ let cB = cv._2
560+ $Tuple4(cA, bS, cB, bT)
556561 }
557562 else throw("Strict value is not equal to itself.")
558563 }
562567 }
563568
564569
570+func cC (cD) = {
571+ let cE = split(valueOrErrorMessage(getString(this, (cD + y)), ("No request with id " + cD)), ",")
572+ let af = cE[0]
573+ let ad = cE[1]
574+ let as = parseIntValue(cE[2])
575+ let ba = cE[3]
576+ let au = parseIntValue(cE[4])
577+ let bb = cE[5]
578+ let aw = parseIntValue(cE[6])
579+ let ax = parseIntValue(cE[7])
580+ let ay = cE[8]
581+ let cF = cE[9]
582+ let cG = parseIntValue(cE[10])
583+ $Tuple11(af, ad, as, ba, au, bb, aw, ax, ay, cF, cG)
584+ }
585+
586+
565587 @Callable(P)
566-func replenishREADONLY (ad,cB,cC) = if (if ((100 > cB))
588+func replenishREADONLY (ad,cH,cI) = if (if ((100 > cH))
567589 then true
568- else (cB > 300))
590+ else (cH > 300))
569591 then throw("Leverage can't be <100 and >300")
570592 else {
571- let ab = valueOrErrorMessage(getString(this, (A + ad)), "Pool is not inited")
572- let cD = aa(Address(fromBase58String(ad)), ab)
573- let bI = cD._1
574- let bJ = cD._2
575- let aw = cD._3
576- let ax = cD._4
577- let ay = cD._5
578- let cE = if ((size(P.payments) == 2))
579- then if ((an(P.payments[0].assetId) != bI))
593+ let bI = valueOrErrorMessage(getString(this, (A + ad)), "Pool is not inited")
594+ let cJ = aa(Address(fromBase58String(ad)), bI)
595+ let ba = cJ._1
596+ let bb = cJ._2
597+ let aw = cJ._3
598+ let ax = cJ._4
599+ let ay = cJ._5
600+ let cK = if ((size(P.payments) == 2))
601+ then if ((an(P.payments[0].assetId) != ba))
580602 then throw("Wrong payment asset A")
581- else if ((an(P.payments[1].assetId) != bJ))
603+ else if ((an(P.payments[1].assetId) != bb))
582604 then throw("Wrong payment asset B")
583- else $Tuple4(P.payments[0].amount, bI, P.payments[1].amount, bJ)
605+ else $Tuple4(P.payments[0].amount, ba, P.payments[1].amount, bb)
584606 else if ((size(P.payments) == 1))
585- then if ((an(P.payments[0].assetId) == bI))
586- then $Tuple4(P.payments[0].amount, bI, 0, bJ)
587- else if ((an(P.payments[0].assetId) == bJ))
588- then $Tuple4(0, bI, P.payments[0].amount, bJ)
607+ then if ((an(P.payments[0].assetId) == ba))
608+ then $Tuple4(P.payments[0].amount, ba, 0, bb)
609+ else if ((an(P.payments[0].assetId) == bb))
610+ then $Tuple4(0, ba, P.payments[0].amount, bb)
589611 else throw("Wrong payment")
590612 else throw("One or two payments expected")
591- let as = cE._1
592- let at = cE._2
593- let au = cE._3
594- let av = cE._4
595- let cF = if ((cB > 100))
613+ let as = cK._1
614+ let at = cK._2
615+ let au = cK._3
616+ let av = cK._4
617+ let cL = if ((cH > 100))
596618 then {
597- let cG = ( let Z = invoke(K, "getTWAP60", [at, false], nil)
619+ let cM = ( let Z = invoke(K, "getTWAP60", [at, false], nil)
598620 if ($isInstanceOf(Z, "(Int, Int)"))
599621 then Z
600622 else throw(($getType(Z) + " couldn't be cast to (Int, Int)")))._1
601- let cH = ( let Z = invoke(K, "getTWAP60", [av, false], nil)
623+ let cN = ( let Z = invoke(K, "getTWAP60", [av, false], nil)
602624 if ($isInstanceOf(Z, "(Int, Int)"))
603625 then Z
604626 else throw(($getType(Z) + " couldn't be cast to (Int, Int)")))._1
605- let cI = (fraction(cG, as, pow(10, 0, ap(at), 0, 0, DOWN)) + fraction(cH, au, pow(10, 0, ap(av), 0, 0, DOWN)))
606- let cJ = fraction(cI, (cB - 100), 100)
607- let cK = makeString([ab, toString(P.caller), ad, toString(as), at, toString(au), av, toString(aw), toString(ax), ay, cC, toString(cJ), toString(1)], ",")
608- let cL = {
609- let Z = invoke(this, "createNewRequest", [cK], nil)
627+ let cO = (fraction(cM, as, pow(10, 0, ap(at), 0, 0, DOWN)) + fraction(cN, au, pow(10, 0, ap(av), 0, 0, DOWN)))
628+ let cP = fraction(cO, (cH - 100), 100)
629+ let cE = makeString([toString(P.caller), ad, toString(as), at, toString(au), av, toString(aw), toString(ax), ay, cI, toString(cP), toString(1)], ",")
630+ let cQ = {
631+ let Z = invoke(this, "createNewRequest", [cE], nil)
610632 if ($isInstanceOf(Z, "Int"))
611633 then Z
612634 else throw(($getType(Z) + " couldn't be cast to Int"))
613635 }
614- if ((cL == cL))
636+ if ((cQ == cQ))
615637 then {
616- let cM = [((toString(P.caller) + "_") + toString(1)), ay, cC, cJ, toString(this), "replenishFromLandReadOnly", toString(valueOrErrorMessage(cL, "Can't create new request"))]
617- let bg = reentrantInvoke(am(), "flashPosition", cM, nil)
618- if ((bg == bg))
619- then if ((cC == at))
620- then $Tuple4((as + cJ), au, d, cJ)
621- else $Tuple4(as, (au + cJ), d, cJ)
638+ let cR = [((toString(P.caller) + "_") + toString(1)), ay, cI, cP, toString(this), "replenishFromLandReadOnly", toString(valueOrErrorMessage(cQ, "Can't create new request"))]
639+ let bj = reentrantInvoke(am(), "flashPosition", cR, nil)
640+ if ((bj == bj))
641+ then if ((cI == at))
642+ then $Tuple4((as + cP), au, d, cP)
643+ else $Tuple4(as, (au + cP), d, cP)
622644 else throw("Strict value is not equal to itself.")
623645 }
624646 else throw("Strict value is not equal to itself.")
625647 }
626648 else $Tuple4(as, au, e, 0)
627- let cN = cF._1
628- let cO = cF._2
629- let ah = cF._3
630- let cJ = cF._4
631- let cP = if ((ab == a))
632- then ar(ad, ah, cN, at, cO, av, aw, ax, ay)
633- else aR(ad, ah, as, at, au, av, ay)
634- let cQ = cP._1
635- let bM = cP._2
636- let cR = ch(ad, cQ, cJ, cC)
637- if ((cR == cR))
649+ let cS = cL._1
650+ let cT = cL._2
651+ let ah = cL._3
652+ let cP = cL._4
653+ let cU = aZ(bI, ad, e, as, ba, au, bb, aw, ax, ay)
654+ let cV = cU._1
655+ let bO = cU._2
656+ let cW = cj(ad, cV, cP, cI)
657+ if ((cW == cW))
638658 then {
639- let bR = cR._4
640- let cA = cR._3
641- let bQ = cR._2
642- let cz = cR._1
643- $Tuple2(nil, [cQ, cz, cA])
659+ let bT = cW._4
660+ let cB = cW._3
661+ let bS = cW._2
662+ let cA = cW._1
663+ $Tuple2(nil, [cV, cA, cB])
644664 }
645665 else throw("Strict value is not equal to itself.")
646666 }
648668
649669
650670 @Callable(P)
651-func replenishFromLandReadOnly (cS) = $Tuple2(nil, 11111)
671+func replenishFromLandReadOnly (cD) = {
672+ let cX = cC(cD)
673+ let af = cX._1
674+ let ad = cX._2
675+ let as = cX._3
676+ let ba = cX._4
677+ let au = cX._5
678+ let bb = cX._6
679+ let aw = cX._7
680+ let ax = cX._8
681+ let ay = cX._9
682+ let cF = cX._10
683+ let cG = cX._11
684+ if ((size(P.payments) != 1))
685+ then throw("Wrong payment size")
686+ else if (if ((an(P.payments[0].assetId) != cF))
687+ then true
688+ else (P.payments[0].amount != cG))
689+ then throw("Wrong payment")
690+ else {
691+ let cY = if ((ba == cF))
692+ then $Tuple2((as + P.payments[0].amount), au)
693+ else $Tuple2(as, (au + P.payments[0].amount))
694+ let cZ = cY._1
695+ let da = cY._2
696+ let bI = valueOrErrorMessage(getString(this, (A + ad)), "Unknown pool")
697+ let db = aZ(bI, ad, d, as, ba, au, bb, aw, ax, ay)
698+ let cV = db._1
699+ let bO = db._2
700+ nil
701+ }
702+ }
652703
653704
654705
655706 @Callable(P)
656-func replenish (ad,cB,cC) = if (if ((100 > cB))
707+func replenish (ad,cH,cI) = if (if ((100 > cH))
657708 then true
658- else (cB > 300))
709+ else (cH > 300))
659710 then throw("Leverage can't be <100 and >300")
660711 else {
661- let ab = valueOrErrorMessage(getString(this, (A + ad)), "Pool is not inited")
662- let cT = aa(Address(fromBase58String(ad)), ab)
663- let bI = cT._1
664- let bJ = cT._2
665- let aw = cT._3
666- let ax = cT._4
667- let ay = cT._5
668- let cU = if ((size(P.payments) == 2))
669- then if ((an(P.payments[0].assetId) != bI))
712+ let bI = valueOrErrorMessage(getString(this, (A + ad)), "Pool is not inited")
713+ let dc = aa(Address(fromBase58String(ad)), bI)
714+ let ba = dc._1
715+ let bb = dc._2
716+ let aw = dc._3
717+ let ax = dc._4
718+ let ay = dc._5
719+ let dd = if ((size(P.payments) == 2))
720+ then if ((an(P.payments[0].assetId) != ba))
670721 then throw("Wrong payment asset A")
671- else if ((an(P.payments[1].assetId) != bJ))
722+ else if ((an(P.payments[1].assetId) != bb))
672723 then throw("Wrong payment asset B")
673- else $Tuple4(P.payments[0].amount, bI, P.payments[1].amount, bJ)
724+ else $Tuple4(P.payments[0].amount, ba, P.payments[1].amount, bb)
674725 else if ((size(P.payments) == 1))
675- then if ((an(P.payments[0].assetId) == bI))
676- then $Tuple4(P.payments[0].amount, bI, 0, bJ)
677- else if ((an(P.payments[0].assetId) == bJ))
678- then $Tuple4(0, bI, P.payments[0].amount, bJ)
726+ then if ((an(P.payments[0].assetId) == ba))
727+ then $Tuple4(P.payments[0].amount, ba, 0, bb)
728+ else if ((an(P.payments[0].assetId) == bb))
729+ then $Tuple4(0, ba, P.payments[0].amount, bb)
679730 else throw("Wrong payment")
680731 else throw("One or two payments expected")
681- let as = cU._1
682- let at = cU._2
683- let au = cU._3
684- let av = cU._4
685- let cV = ae(ad, toString(P.caller))
686- if ((cB > 100))
732+ let as = dd._1
733+ let at = dd._2
734+ let au = dd._3
735+ let av = dd._4
736+ let de = ae(ad, toString(P.caller))
737+ if ((cH > 100))
687738 then {
688- let cG = ( let Z = invoke(K, "getTWAP60", [at, false], nil)
739+ let cM = ( let Z = invoke(K, "getTWAP60", [at, false], nil)
689740 if ($isInstanceOf(Z, "(Int, Int)"))
690741 then Z
691742 else throw(($getType(Z) + " couldn't be cast to (Int, Int)")))._1
692- let cH = ( let Z = invoke(K, "getTWAP60", [av, false], nil)
743+ let cN = ( let Z = invoke(K, "getTWAP60", [av, false], nil)
693744 if ($isInstanceOf(Z, "(Int, Int)"))
694745 then Z
695746 else throw(($getType(Z) + " couldn't be cast to (Int, Int)")))._1
696- let cI = (fraction(cG, as, pow(10, 0, ap(at), 0, 0, DOWN)) + fraction(cH, au, pow(10, 0, ap(av), 0, 0, DOWN)))
697- let cJ = fraction(cI, (cB - 100), 100)
698- let cK = makeString([ab, toString(P.caller), ad, toString(as), at, toString(au), av, toString(aw), toString(ax), ay, cC, toString(cJ), toString(cV)], ",")
699- let cL = {
700- let Z = invoke(this, "createNewRequest", [cK], nil)
747+ let cO = (fraction(cM, as, pow(10, 0, ap(at), 0, 0, DOWN)) + fraction(cN, au, pow(10, 0, ap(av), 0, 0, DOWN)))
748+ let cP = fraction(cO, (cH - 100), 100)
749+ let cE = makeString([toString(P.caller), ad, toString(as), at, toString(au), av, toString(aw), toString(ax), ay, cI, toString(cP)], ",")
750+ let cQ = {
751+ let Z = invoke(this, "createNewRequest", [cE], nil)
701752 if ($isInstanceOf(Z, "Int"))
702753 then Z
703754 else throw(($getType(Z) + " couldn't be cast to Int"))
704755 }
705- if ((cL == cL))
756+ if ((cQ == cQ))
706757 then {
707- let cM = [((toString(P.caller) + "_") + toString(cV)), ay, cC, cJ, toString(this), "replenishFromLand", toString(valueOrErrorMessage(cL, "Can't create new request"))]
708- let bg = reentrantInvoke(am(), "flashPosition", cM, nil)
709- if ((bg == bg))
758+ let cR = [((toString(P.caller) + "_") + toString(de)), ay, cI, cP, toString(this), "replenishFromLand", toString(valueOrErrorMessage(cQ, "Can't create new request"))]
759+ let bj = reentrantInvoke(am(), "flashPosition", cR, nil)
760+ if ((bj == bj))
710761 then nil
711762 else throw("Strict value is not equal to itself.")
712763 }
713764 else throw("Strict value is not equal to itself.")
714765 }
715766 else {
716- let cW = if ((ab == a))
717- then ar(ad, e, as, at, au, av, aw, ax, ay)
718- else aR(ad, e, as, at, au, av, ay)
719- let cQ = cW._1
720- let bM = cW._2
721- aZ(ad, toString(P.caller), cQ, bM, cV, ay, ab)
767+ let df = aZ(bI, ad, e, as, ba, au, bb, aw, ax, ay)
768+ let cV = df._1
769+ let bO = df._2
770+ bc(ad, toString(P.caller), cV, bO, de, ay, bI)
722771 }
723772 }
724773
725774
726775
727776 @Callable(P)
728-func replenishFromLand (cS) = {
729- let cK = split(valueOrErrorMessage(getString(this, (cS + y)), ("No request with id " + cS)), ",")
777+func replenishFromLand (cD) = {
778+ let dg = cC(cD)
779+ let af = dg._1
780+ let ad = dg._2
781+ let as = dg._3
782+ let ba = dg._4
783+ let au = dg._5
784+ let bb = dg._6
785+ let aw = dg._7
786+ let ax = dg._8
787+ let ay = dg._9
788+ let cF = dg._10
789+ let cG = dg._11
730790 if ((size(P.payments) != 1))
731791 then throw("Wrong payment size")
732- else if (if ((an(P.payments[0].assetId) != cK[10]))
792+ else if (if ((an(P.payments[0].assetId) != cF))
733793 then true
734- else (P.payments[0].amount != parseIntValue(cK[11])))
794+ else (P.payments[0].amount != cG))
735795 then throw("Wrong payment")
736796 else {
737- let as = if ((cK[4] == an(P.payments[0].assetId)))
738- then (parseIntValue(cK[3]) + P.payments[0].amount)
739- else parseIntValue(cK[3])
740- let au = if ((cK[6] == an(P.payments[0].assetId)))
741- then (parseIntValue(cK[5]) + P.payments[0].amount)
742- else parseIntValue(cK[3])
743- let ad = cK[2]
744- let af = cK[1]
745- let ay = cK[9]
746- let bb = parseIntValue(cK[12])
747- let cX = if ((cK[0] == a))
748- then ar(ad, d, as, cK[4], au, cK[6], parseIntValue(cK[7]), parseIntValue(cK[8]), ay)
749- else if ((cK[0] == b))
750- then aR(ad, d, as, cK[4], au, cK[6], ay)
751- else throw("Wrong request type")
752- let cQ = cX._1
753- let bM = cX._2
754- let cY = [IntegerEntry((((((cK[2] + "_") + cK[1]) + "_") + cK[12]) + p), P.payments[0].amount), StringEntry((((((cK[2] + "_") + cK[1]) + "_") + cK[12]) + q), cK[10])]
755- let cZ = aZ(ad, af, cQ, bM, bb, ay, cK[0])
756- $Tuple2(((cZ ++ cY) :+ DeleteEntry((cS + y))), cQ)
797+ let dh = if ((ba == cF))
798+ then $Tuple2((as + P.payments[0].amount), au)
799+ else $Tuple2(as, (au + P.payments[0].amount))
800+ let cZ = dh._1
801+ let da = dh._2
802+ let bI = valueOrErrorMessage(getString(this, (A + ad)), "Unknown pool")
803+ let di = aZ(bI, ad, d, as, ba, au, bb, aw, ax, ay)
804+ let cV = di._1
805+ let bO = di._2
806+ let be = ae(ad, toString(P.caller))
807+ let dj = [IntegerEntry((((((ad + "_") + af) + "_") + toString(be)) + p), cG), StringEntry((((((ad + "_") + af) + "_") + toString(be)) + q), cF)]
808+ let dk = bc(ad, af, cV, bO, be, ay, bI)
809+ $Tuple2(((dk ++ dj) :+ DeleteEntry((cD + y))), cV)
757810 }
758811 }
759812
760813
761814
762815 @Callable(P)
763-func withdraw (ad,da) = {
816+func withdraw (ad,dl) = {
764817 let af = toString(P.caller)
765- let db = valueOrErrorMessage(getInteger(this, (((((ad + "_") + af) + "_") + toString(da)) + o)), "Unknown position")
766- let dc = getIntegerValue(this, (((((ad + "_") + af) + "_") + toString(da)) + s))
767- let dd = getIntegerValue(this, (ad + u))
768- let de = ac(ad)
769- let ci = (db + fraction(db, (dd - dc), g))
770- let df = Address(fromBase58String(af))
771- let cJ = getIntegerValue(this, (((((ad + "_") + af) + "_") + toString(da)) + p))
772- let ck = getStringValue(this, (((((ad + "_") + af) + "_") + toString(da)) + q))
773- let cj = if ((cJ > 0))
818+ let dm = valueOrErrorMessage(getInteger(this, (((((ad + "_") + af) + "_") + toString(dl)) + o)), "Unknown position")
819+ let dn = getIntegerValue(this, (((((ad + "_") + af) + "_") + toString(dl)) + s))
820+ let do = getIntegerValue(this, (ad + u))
821+ let dp = ac(ad)
822+ let ck = (dm + fraction(dm, (do - dn), g))
823+ let dq = Address(fromBase58String(af))
824+ let cP = getIntegerValue(this, (((((ad + "_") + af) + "_") + toString(dl)) + p))
825+ let cm = getStringValue(this, (((((ad + "_") + af) + "_") + toString(dl)) + q))
826+ let cl = if ((cP > 0))
774827 then {
775- let Z = invoke(am(), "getAssetDebt", [false, ((((ad + "_") + af) + "_") + toString(da)), ck], nil)
828+ let Z = invoke(am(), "getAssetDebt", [false, ((((ad + "_") + af) + "_") + toString(dl)), cm], nil)
776829 if ($isInstanceOf(Z, "Int"))
777830 then Z
778831 else throw(($getType(Z) + " couldn't be cast to Int"))
779832 }
780833 else 0
781- let dg = ch(ad, ci, cj, ck)
782- if ((dg == dg))
834+ let dr = cj(ad, ck, cl, cm)
835+ if ((dr == dr))
783836 then {
784- let bR = dg._4
785- let cA = dg._3
786- let bQ = dg._2
787- let cz = dg._1
788- let dh = if ((cj > 0))
789- then invoke(am(), "repayFor", [((af + "_") + toString(da))], [AttachedPayment(ao(ck), cj)])
837+ let bT = dr._4
838+ let cB = dr._3
839+ let bS = dr._2
840+ let cA = dr._1
841+ let ds = if ((cl > 0))
842+ then invoke(am(), "repayFor", [((af + "_") + toString(dl))], [AttachedPayment(ao(cm), cl)])
790843 else 0
791- if ((dh == dh))
792- then [DeleteEntry((((((ad + "_") + af) + "_") + toString(da)) + o)), DeleteEntry((((((ad + "_") + af) + "_") + toString(da)) + s)), IntegerEntry((ad + t), (de - ci)), ScriptTransfer(df, cz, ao(bQ)), ScriptTransfer(df, cA, ao(bR))]
844+ if ((ds == ds))
845+ then [DeleteEntry((((((ad + "_") + af) + "_") + toString(dl)) + o)), DeleteEntry((((((ad + "_") + af) + "_") + toString(dl)) + s)), IntegerEntry((ad + t), (dp - ck)), ScriptTransfer(dq, cA, ao(bS)), ScriptTransfer(dq, cB, ao(bT))]
793846 else throw("Strict value is not equal to itself.")
794847 }
795848 else throw("Strict value is not equal to itself.")
798851
799852
800853 @Callable(P)
801-func createNewRequest (di) = valueOrElse(O(P), {
802- let cL = (valueOrElse(getInteger(this, z), 0) + 1)
803- $Tuple2([StringEntry((toString(cL) + y), di), IntegerEntry(z, cL)], cL)
854+func createNewRequest (dt) = valueOrElse(O(P), {
855+ let cQ = (valueOrElse(getInteger(this, z), 0) + 1)
856+ $Tuple2([StringEntry((toString(cQ) + y), dt), IntegerEntry(z, cQ)], cQ)
804857 })
805858
806859
807860
808861 @Callable(P)
809-func capitalizeExKeeper (ad,ab,dj,dk,dl,bm,bn,bo,bp,bq,br,bs) = {
810- let dm = if (dl)
811- then be(ab, ad)
862+func capitalizeExKeeper (ad,ab,du,dv,dw,bp,bq,br,bs,bt,bu,bv) = {
863+ let dx = if (dw)
864+ then bh(ab, ad)
812865 else {
813- let dn = if ((ab == a))
866+ let dy = if ((ab == a))
814867 then M
815868 else N
816- $Tuple2(dk, dn)
869+ $Tuple2(dv, dy)
817870 }
818- let do = dm._1
819- let dn = dm._2
820- let dp = bi(dj, dk, dn, bm, bn, bo, bp, bq, br, bs)
821- let aG = (do - dk)
822- let dq = if ((aG > 0))
871+ let dz = dx._1
872+ let dy = dx._2
873+ let dA = bl(du, dv, dy, bp, bq, br, bs, bt, bu, bv)
874+ let aG = (dz - dv)
875+ let dB = if ((aG > 0))
823876 then [IntegerEntry((ad + B), (aG + valueOrElse(getInteger(this, (ad + B)), 0)))]
824877 else nil
825- (bE(ad, ab, dj, dp) ++ dq)
878+ (bH(ad, ab, du, dA) ++ dB)
826879 }
827880
828881
829882
830883 @Callable(P)
831-func capitalizeExPazzle (ad,ab,dj,dk,dl,bv,bw,bs) = {
832- let dr = if (dl)
833- then be(ab, ad)
884+func capitalizeExPazzle (ad,ab,du,dv,dw,by,bz,bv) = {
885+ let dC = if (dw)
886+ then bh(ab, ad)
834887 else {
835- let dn = if ((ab == a))
888+ let dy = if ((ab == a))
836889 then M
837890 else N
838- $Tuple2(dk, dn)
891+ $Tuple2(dv, dy)
839892 }
840- let do = dr._1
841- let dn = dr._2
842- let dp = bu(dj, dk, dn, bv, bw, bs)
843- let aG = (do - dk)
844- let dq = if ((aG > 0))
893+ let dz = dC._1
894+ let dy = dC._2
895+ let dA = bx(du, dv, dy, by, bz, bv)
896+ let aG = (dz - dv)
897+ let dB = if ((aG > 0))
845898 then [IntegerEntry((ad + B), (aG + valueOrElse(getInteger(this, (ad + B)), 0)))]
846899 else nil
847- (bE(ad, ab, dj, dp) ++ dq)
900+ (bH(ad, ab, du, dA) ++ dB)
848901 }
849902
850903
851904
852905 @Callable(P)
853-func capitalizeExSwopFi (ad,ab,dj,dk,dl,by,bz,bA,bB,bC,bD,bs) = {
854- let ds = if (dl)
855- then be(ab, ad)
906+func capitalizeExSwopFi (ad,ab,du,dv,dw,bB,bC,bD,bE,bF,bG,bv) = {
907+ let dD = if (dw)
908+ then bh(ab, ad)
856909 else {
857- let dn = if ((ab == a))
910+ let dy = if ((ab == a))
858911 then M
859912 else N
860- $Tuple2(dk, dn)
913+ $Tuple2(dv, dy)
861914 }
862- let do = ds._1
863- let dn = ds._2
864- let dp = bx(dj, dk, dn, by, bz, bA, bB, bC, bD, bs)
865- let aG = (do - dk)
866- let dq = if ((aG > 0))
915+ let dz = dD._1
916+ let dy = dD._2
917+ let dA = bA(du, dv, dy, bB, bC, bD, bE, bF, bG, bv)
918+ let aG = (dz - dv)
919+ let dB = if ((aG > 0))
867920 then [IntegerEntry((ad + B), (aG + valueOrElse(getInteger(this, (ad + B)), 0)))]
868921 else nil
869- (bE(ad, ab, dj, dp) ++ dq)
922+ (bH(ad, ab, du, dA) ++ dB)
870923 }
871924
872925
873926
874927 @Callable(P)
875-func initNewPool (ab,W,dt,du,dv) = if (if ((ab != a))
928+func initNewPool (ab,W,dE,dF,dG) = if (if ((ab != a))
876929 then (ab != b)
877930 else false)
878931 then throw("Wrong type")
879- else [IntegerEntry((W + v), dt), IntegerEntry((W + w), du), IntegerEntry((W + x), dv), IntegerEntry((W + u), 0), StringEntry((A + W), ab)]
932+ else [IntegerEntry((W + v), dE), IntegerEntry((W + w), dF), IntegerEntry((W + x), dG), IntegerEntry((W + u), 0), StringEntry((A + W), ab)]
880933
881934
882-@Verifier(dw)
883-func dx () = sigVerify(dw.bodyBytes, dw.proofs[0], dw.senderPublicKey)
935+@Verifier(dH)
936+func dI () = sigVerify(dH.bodyBytes, dH.proofs[0], dH.senderPublicKey)
884937
Full:
OldNewDifferences
11 {-# STDLIB_VERSION 6 #-}
22 {-# SCRIPT_TYPE ACCOUNT #-}
33 {-# CONTENT_TYPE DAPP #-}
44 let a = "SF"
55
66 let b = "WX"
77
88 let c = "cap"
99
1010 let d = "loan"
1111
1212 let e = "noLoan"
1313
1414 let f = 100000000
1515
1616 let g = 10000000000
1717
1818 let h = 1000000
1919
2020 let i = "A_asset_balance"
2121
2222 let j = "B_asset_balance"
2323
2424 let k = "A_asset_id"
2525
2626 let l = "B_asset_id"
2727
2828 let m = "share_asset_id"
2929
3030 let n = "commission"
3131
3232 let o = "_user_position"
3333
3434 let p = "_user_position_borrow_amount"
3535
3636 let q = "_user_position_borrow_asset_id"
3737
3838 let r = "_user_position_number"
3939
4040 let s = "_user_position_interest"
4141
4242 let t = "_pool_total"
4343
4444 let u = "_pool_interest"
4545
4646 let v = "_axly_fee_without_loan"
4747
4848 let w = "_axly_fee_with_loan"
4949
5050 let x = "_axly_fee_cap"
5151
5252 let y = "_request_id"
5353
5454 let z = "requests_iter"
5555
5656 let A = "pool_"
5757
5858 let B = "_pool_cap_change"
5959
6060 let C = "axly_money_box"
6161
6262 let D = "swopfi_farming_addr"
6363
6464 let E = "lend_service_addr"
6565
6666 let F = "price_oracle"
6767
6868 let G = "exchange_contract"
6969
7070 let H = "wx_swap_contract"
7171
7272 let I = Address(fromBase58String(valueOrErrorMessage(getString(this, C), "No axly moneyBox address")))
7373
7474 let J = Address(fromBase58String(valueOrErrorMessage(getString(this, G), "No exchange contract address")))
7575
7676 let K = Address(fromBase58String(valueOrErrorMessage(getString(this, F), "No price oracle address")))
7777
7878 let L = Address(fromBase58String(valueOrErrorMessage(getString(this, H), "No wx swap address")))
7979
8080 let M = base58'4W19ndijcc2CsQa9HGW2dfXKTVXhnneWWttxXrtjPmEp'
8181
8282 let N = base58'EMAMLxDnv3xiz8RXg8Btj33jcEw3wLczL3JKYYmuubpc'
8383
8484 func O (P) = if ((P.caller == this))
8585 then unit
8686 else throw("Only contract itself can call this function")
8787
8888
8989 func Q (R) = {
9090 let S = R
9191 if ($isInstanceOf(S, "ByteVector"))
9292 then {
9393 let T = S
9494 assetBalance(this, T)
9595 }
9696 else if ($isInstanceOf(S, "Unit"))
9797 then {
9898 let U = S
9999 wavesBalance(this).available
100100 }
101101 else throw("Match error")
102102 }
103103
104104
105105 func V (W) = $Tuple5(valueOrErrorMessage(getString(W, k), "Can't get pool A asset id"), valueOrErrorMessage(getString(W, l), "Can't get pool B asset id"), valueOrErrorMessage(getInteger(W, i), "Can't get pool A asset balance"), valueOrErrorMessage(getInteger(W, j), "Can't get pool B asset balance"), valueOrErrorMessage(getString(W, m), "Can't get share asset id"))
106106
107107
108108 func X (W) = {
109109 let Y = {
110110 let Z = invoke(W, "getPoolConfigWrapperREADONLY", nil, nil)
111111 if ($isInstanceOf(Z, "List[Any]"))
112112 then Z
113113 else throw(($getType(Z) + " couldn't be cast to List[Any]"))
114114 }
115115 if ((Y == Y))
116116 then $Tuple5(valueOrErrorMessage({
117117 let Z = Y[4]
118118 if ($isInstanceOf(Z, "String"))
119119 then Z
120120 else unit
121121 }, "Can't get pool A asset id"), valueOrErrorMessage({
122122 let Z = Y[5]
123123 if ($isInstanceOf(Z, "String"))
124124 then Z
125125 else unit
126126 }, "Can't get pool B asset id"), 0, 0, valueOrErrorMessage({
127127 let Z = Y[3]
128128 if ($isInstanceOf(Z, "String"))
129129 then Z
130130 else unit
131131 }, "Can't get pool LP asset id"))
132132 else throw("Strict value is not equal to itself.")
133133 }
134134
135135
136136 func aa (W,ab) = if ((ab == a))
137137 then V(W)
138138 else if ((ab == b))
139139 then X(W)
140140 else throw("Wrong pool type")
141141
142142
143143 func ac (ad) = valueOrElse(getInteger(this, (ad + t)), 0)
144144
145145
146146 func ae (ad,af) = (valueOrElse(getInteger(this, (((ad + "_") + af) + r)), 0) + 1)
147147
148148
149149 func ag (ad,ah) = if ((ah == "cap"))
150150 then getIntegerValue(this, (ad + x))
151151 else if ((ah == "loan"))
152152 then getIntegerValue(this, (ad + w))
153153 else if ((ah == "noLoan"))
154154 then getIntegerValue(this, (ad + v))
155155 else throw("Wrong fee type")
156156
157157
158158 func ai () = Address(fromBase58String(valueOrErrorMessage(getString(this, D), "Can't get swopfi farming addr")))
159159
160160
161161 func aj (W) = {
162162 let ak = Address(fromBase58String(valueOrErrorMessage(getString(W, "%s__factoryContract"), "Can't get WX factory contract addr")))
163163 let al = split(valueOrErrorMessage(getString(ak, "%s__factoryConfig"), "Can't get WX factory cfg"), "__")
164164 Address(fromBase58String(al[1]))
165165 }
166166
167167
168168 func am () = Address(fromBase58String(valueOrErrorMessage(getString(this, E), "Can't get lend service addr")))
169169
170170
171171 func an (R) = {
172172 let S = R
173173 if ($isInstanceOf(S, "ByteVector"))
174174 then {
175175 let T = S
176176 toBase58String(T)
177177 }
178178 else if ($isInstanceOf(S, "Unit"))
179179 then {
180180 let U = S
181181 "WAVES"
182182 }
183183 else throw("Match error")
184184 }
185185
186186
187187 func ao (R) = if ((R == "WAVES"))
188188 then unit
189189 else fromBase58String(R)
190190
191191
192192 func ap (R) = if ((R == "WAVES"))
193193 then 8
194194 else {
195195 let S = assetInfo(fromBase58String(R))
196196 if ($isInstanceOf(S, "Asset"))
197197 then {
198198 let aq = S
199199 aq.decimals
200200 }
201201 else throw("Can't find asset")
202202 }
203203
204204
205205 func ar (ad,ah,as,at,au,av,aw,ax,ay) = {
206206 let az = Q(fromBase58String(ay))
207207 if ((az == az))
208208 then {
209209 let W = Address(fromBase58String(ad))
210210 let aA = fraction(f, as, aw)
211211 let aB = fraction(f, au, ax)
212212 let aC = if ((aB > aA))
213213 then {
214214 let aD = fraction(ax, aA, f, CEILING)
215215 $Tuple4(as, aD, (au - aD), av)
216216 }
217217 else {
218218 let aD = fraction(aw, aB, f, CEILING)
219219 $Tuple4(aD, au, (as - aD), at)
220220 }
221221 let aE = aC._1
222222 let aF = aC._2
223223 let aG = aC._3
224224 let aH = aC._4
225225 let aI = if (if ((aE > 0))
226226 then (aF > 0)
227227 else false)
228228 then {
229229 let aJ = [AttachedPayment(ao(at), aE), AttachedPayment(ao(av), aF)]
230230 invoke(W, "callFunction", ["replenishWithTwoTokens", ["false", "0"]], aJ)
231231 }
232232 else 0
233233 if ((aI == aI))
234234 then {
235235 let aK = if ((aG > 0))
236236 then {
237237 let aJ = [AttachedPayment(ao(aH), aG)]
238238 let aL = ["0", "false", "0"]
239239 invoke(W, "callFunction", ["replenishWithOneToken", aL], aJ)
240240 }
241241 else 0
242242 if ((aK == aK))
243243 then {
244244 let aM = Q(fromBase58String(ay))
245245 let aN = (aM - az)
246246 let aO = fraction(aN, ag(ad, ah), h)
247247 let aP = (aN - aO)
248248 if ((0 >= aP))
249249 then throw("amount of staked sharetokens must be > 0")
250250 else {
251251 let aQ = invoke(ai(), "lockShareTokens", [ad, 0], [AttachedPayment(fromBase58String(ay), aP)])
252252 if ((aQ == aQ))
253253 then $Tuple2(aP, aO)
254254 else throw("Strict value is not equal to itself.")
255255 }
256256 }
257257 else throw("Strict value is not equal to itself.")
258258 }
259259 else throw("Strict value is not equal to itself.")
260260 }
261261 else throw("Strict value is not equal to itself.")
262262 }
263263
264264
265265 func aR (ad,ah,as,at,au,av,ay) = {
266266 let W = Address(fromBase58String(ad))
267267 let aS = if (if ((as > 0))
268268 then (au > 0)
269269 else false)
270270 then {
271271 let aT = split({
272272 let Z = invoke(W, "evaluatePutByAmountAssetREADONLY", [as], nil)
273273 if ($isInstanceOf(Z, "String"))
274274 then Z
275275 else throw(($getType(Z) + " couldn't be cast to String"))
276276 }, "__")
277277 if ((aT == aT))
278278 then {
279279 let aU = split({
280280 let Z = invoke(W, "evaluatePutByPriceAssetREADONLY", [au], nil)
281281 if ($isInstanceOf(Z, "String"))
282282 then Z
283283 else throw(($getType(Z) + " couldn't be cast to String"))
284284 }, "__")
285285 if ((aU == aU))
286286 then {
287287 let aV = parseIntValue(aT[1])
288288 let aW = parseIntValue(aU[1])
289289 if ((aW > aV))
290290 then {
291291 let aX = parseIntValue(aT[8])
292292 $Tuple4(as, aX, (au - aX), av)
293293 }
294294 else {
295295 let aY = parseIntValue(aU[7])
296296 $Tuple4(aY, au, (as - aY), at)
297297 }
298298 }
299299 else throw("Strict value is not equal to itself.")
300300 }
301301 else throw("Strict value is not equal to itself.")
302302 }
303303 else if ((as > 0))
304304 then $Tuple4(as, au, as, at)
305305 else if ((au > 0))
306306 then $Tuple4(as, au, au, av)
307307 else throw("pmts must be > 0")
308308 let aE = aS._1
309309 let aF = aS._2
310310 let aG = aS._3
311311 let aH = aS._4
312312 let az = Q(fromBase58String(ay))
313313 if ((az == az))
314314 then {
315315 let aI = if (if ((aE > 0))
316316 then (aF > 0)
317317 else false)
318318 then {
319319 let aJ = [AttachedPayment(ao(at), aE), AttachedPayment(ao(av), aF)]
320320 invoke(W, "put", [1000000, false], aJ)
321321 }
322322 else 0
323323 if ((aI == aI))
324324 then {
325325 let aK = if ((aG > 0))
326326 then {
327327 let aJ = [AttachedPayment(ao(aH), aG)]
328328 invoke(W, "putOneTkn", [0, false], aJ)
329329 }
330330 else 0
331331 if ((aK == aK))
332332 then {
333333 let aM = Q(fromBase58String(ay))
334334 let aN = (aM - az)
335335 let aO = fraction(aN, ag(ad, ah), h)
336336 let aP = (aN - aO)
337337 if ((0 >= aP))
338338 then throw("amount of staked sharetokens must be > 0")
339339 else {
340340 let aQ = invoke(aj(W), "stake", nil, [AttachedPayment(fromBase58String(ay), aP)])
341341 if ((aQ == aQ))
342342 then $Tuple2(aP, aO)
343343 else throw("Strict value is not equal to itself.")
344344 }
345345 }
346346 else throw("Strict value is not equal to itself.")
347347 }
348348 else throw("Strict value is not equal to itself.")
349349 }
350350 else throw("Strict value is not equal to itself.")
351351 }
352352
353353
354-func aZ (ad,af,ba,aO,bb,ay,ab) = {
355- let bc = ac(ad)
356- let bd = getIntegerValue(this, (ad + u))
357-[IntegerEntry((ad + t), (bc + ba)), IntegerEntry((((((ad + "_") + af) + "_") + toString(bb)) + o), ba), IntegerEntry((((((ad + "_") + af) + "_") + toString(bb)) + s), bd), IntegerEntry((((ad + "_") + af) + r), bb), ScriptTransfer(I, aO, fromBase58String(ay))]
354+func aZ (ab,ad,ah,as,ba,au,bb,aw,ax,ay) = if ((ab == a))
355+ then ar(ad, d, as, ba, au, bb, aw, ax, ay)
356+ else if ((ab == b))
357+ then aR(ad, d, as, ba, au, bb, ay)
358+ else throw("Wrong pool type")
359+
360+
361+func bc (ad,af,bd,aO,be,ay,ab) = {
362+ let bf = ac(ad)
363+ let bg = getIntegerValue(this, (ad + u))
364+[IntegerEntry((ad + t), (bf + bd)), IntegerEntry((((((ad + "_") + af) + "_") + toString(be)) + o), bd), IntegerEntry((((((ad + "_") + af) + "_") + toString(be)) + s), bg), IntegerEntry((((ad + "_") + af) + r), be), ScriptTransfer(I, aO, fromBase58String(ay))]
358365 }
359366
360367
361-func be (ab,ad) = if ((ab == a))
368+func bh (ab,ad) = if ((ab == a))
362369 then {
363- let bf = Q(M)
364- if ((bf == bf))
370+ let bi = Q(M)
371+ if ((bi == bi))
365372 then {
366- let bg = invoke(ai(), "claim", [ad], nil)
367- if ((bg == bg))
373+ let bj = invoke(ai(), "claim", [ad], nil)
374+ if ((bj == bj))
368375 then {
369- let bh = Q(M)
370- $Tuple2((bh - bf), M)
376+ let bk = Q(M)
377+ $Tuple2((bk - bi), M)
371378 }
372379 else throw("Strict value is not equal to itself.")
373380 }
374381 else throw("Strict value is not equal to itself.")
375382 }
376383 else if ((ab == b))
377384 then {
378- let bf = Q(N)
379- if ((bf == bf))
385+ let bi = Q(N)
386+ if ((bi == bi))
380387 then {
381- let bg = invoke(aj(Address(fromBase58String(ad))), "claimWX", [ad], nil)
382- if ((bg == bg))
388+ let bj = invoke(aj(Address(fromBase58String(ad))), "claimWX", [ad], nil)
389+ if ((bj == bj))
383390 then {
384- let bh = Q(N)
385- $Tuple2((bh - bf), N)
391+ let bk = Q(N)
392+ $Tuple2((bk - bi), N)
386393 }
387394 else throw("Strict value is not equal to itself.")
388395 }
389396 else throw("Strict value is not equal to itself.")
390397 }
391398 else throw("Wrong pool type")
392399
393400
394-func bi (bj,bk,bl,bm,bn,bo,bp,bq,br,bs) = {
395- let bt = Q(ao(bj))
396- if ((bt == bt))
401+func bl (bm,bn,bo,bp,bq,br,bs,bt,bu,bv) = {
402+ let bw = Q(ao(bm))
403+ if ((bw == bw))
397404 then {
398- let bg = invoke(J, "swap", [bm, bn, bo, bp, bq, br, bs], [AttachedPayment(bl, bk)])
399- if ((bg == bg))
400- then (Q(ao(bj)) - bt)
405+ let bj = invoke(J, "swap", [bp, bq, br, bs, bt, bu, bv], [AttachedPayment(bo, bn)])
406+ if ((bj == bj))
407+ then (Q(ao(bm)) - bw)
401408 else throw("Strict value is not equal to itself.")
402409 }
403410 else throw("Strict value is not equal to itself.")
404411 }
405412
406413
407-func bu (bj,bk,bl,bv,bw,bs) = {
408- let bt = Q(ao(bj))
409- if ((bt == bt))
414+func bx (bm,bn,bo,by,bz,bv) = {
415+ let bw = Q(ao(bm))
416+ if ((bw == bw))
410417 then {
411- let bg = invoke(J, "puzzleSwap", [bv, bw, bs], [AttachedPayment(bl, bk)])
412- if ((bg == bg))
413- then (Q(ao(bj)) - bt)
418+ let bj = invoke(J, "puzzleSwap", [by, bz, bv], [AttachedPayment(bo, bn)])
419+ if ((bj == bj))
420+ then (Q(ao(bm)) - bw)
414421 else throw("Strict value is not equal to itself.")
415422 }
416423 else throw("Strict value is not equal to itself.")
417424 }
418425
419426
420-func bx (bj,bk,bl,by,bz,bA,bB,bC,bD,bs) = {
421- let bt = Q(ao(bj))
422- if ((bt == bt))
427+func bA (bm,bn,bo,bB,bC,bD,bE,bF,bG,bv) = {
428+ let bw = Q(ao(bm))
429+ if ((bw == bw))
423430 then {
424- let bg = invoke(J, "swopfiSwap", [by, bz, bA, bB, bC, bD, bs], [AttachedPayment(bl, bk)])
425- if ((bg == bg))
426- then (Q(ao(bj)) - bt)
431+ let bj = invoke(J, "swopfiSwap", [bB, bC, bD, bE, bF, bG, bv], [AttachedPayment(bo, bn)])
432+ if ((bj == bj))
433+ then (Q(ao(bm)) - bw)
427434 else throw("Strict value is not equal to itself.")
428435 }
429436 else throw("Strict value is not equal to itself.")
430437 }
431438
432439
433-func bE (ad,ab,bF,bG) = {
440+func bH (ad,bI,bJ,bK) = {
434441 let W = Address(fromBase58String(ad))
435- let bH = aa(W, ab)
436- let bI = bH._1
437- let bJ = bH._2
438- let aw = bH._3
439- let ax = bH._4
440- let ay = bH._5
441- let bK = if ((bF == bI))
442- then $Tuple2(bG, 0)
443- else $Tuple2(0, bG)
444- let as = bK._1
445- let au = bK._2
446- let bL = if ((ab == a))
447- then ar(ad, c, as, bI, au, bJ, aw, ax, ay)
448- else aR(ad, c, as, bI, au, bJ, ay)
442+ let bL = aa(W, bI)
449443 let ba = bL._1
450- let bM = bL._2
451- let bd = valueOrElse(getInteger(this, (ad + u)), 0)
452- let bN = ac(ad)
453- let bO = (bd + fraction(ba, g, bN))
454-[IntegerEntry((ad + u), bO), ScriptTransfer(I, bM, fromBase58String(ay))]
444+ let bb = bL._2
445+ let aw = bL._3
446+ let ax = bL._4
447+ let ay = bL._5
448+ let bM = if ((bJ == ba))
449+ then $Tuple2(bK, 0)
450+ else $Tuple2(0, bK)
451+ let as = bM._1
452+ let au = bM._2
453+ let bN = aZ(bI, ad, c, as, ba, au, bb, aw, ax, ay)
454+ let bd = bN._1
455+ let bO = bN._2
456+ let bg = valueOrElse(getInteger(this, (ad + u)), 0)
457+ let bP = ac(ad)
458+ let bQ = (bg + fraction(bd, g, bP))
459+[IntegerEntry((ad + u), bQ), ScriptTransfer(I, bO, fromBase58String(ay))]
455460 }
456461
457462
458-func bP (ad,bQ,bR,aw,ax,bS,bT) = {
463+func bR (ad,bS,bT,aw,ax,bU,bV) = {
459464 let W = Address(fromBase58String(ad))
460- let bU = 1000000
461- let bV = getIntegerValue(W, n)
462- let bW = fraction(bS, bU, (bU - bV))
463- let bX = if ((bT == bQ))
465+ let bW = 1000000
466+ let bX = getIntegerValue(W, n)
467+ let bY = fraction(bU, bW, (bW - bX))
468+ let bZ = if ((bV == bS))
464469 then {
465- let bY = fraction(aw, bW, (ax - bW))
466- $Tuple2(bY, bR)
470+ let ca = fraction(aw, bY, (ax - bY))
471+ $Tuple2(ca, bT)
467472 }
468473 else {
469- let bY = fraction(ax, bW, (aw - bW))
470- $Tuple2(bY, bQ)
474+ let ca = fraction(ax, bY, (aw - bY))
475+ $Tuple2(ca, bS)
471476 }
472- let bY = bX._1
473- let bZ = bX._2
474- invoke(W, "callFunction", ["exchange", ["1"]], [AttachedPayment(ao(bZ), bY)])
477+ let ca = bZ._1
478+ let cb = bZ._2
479+ invoke(W, "callFunction", ["exchange", ["1"]], [AttachedPayment(ao(cb), ca)])
475480 }
476481
477482
478-func ca (ad,bQ,bR,aw,ax,bS,bT) = {
483+func cc (ad,bS,bT,aw,ax,bU,bV) = {
479484 let W = Address(fromBase58String(ad))
480- let cb = getIntegerValue(L, "%s__protocolFee")
481- let cc = getIntegerValue(L, "%s__poolFee")
482- let cd = toBigInt(100000000)
483- let ce = if ((bT == bQ))
485+ let cd = getIntegerValue(L, "%s__protocolFee")
486+ let ce = getIntegerValue(L, "%s__poolFee")
487+ let cf = toBigInt(100000000)
488+ let cg = if ((bV == bS))
484489 then {
485- let bY = fraction(aw, bS, (ax - bS))
486- $Tuple2(bY, bR)
490+ let ca = fraction(aw, bU, (ax - bU))
491+ $Tuple2(ca, bT)
487492 }
488493 else {
489- let bY = fraction(ax, bS, (aw - bS))
490- $Tuple2(bY, bQ)
494+ let ca = fraction(ax, bU, (aw - bU))
495+ $Tuple2(ca, bS)
491496 }
492- let bY = ce._1
493- let bZ = ce._2
494- let cf = toInt(fraction(toBigInt(bY), cd, (cd - toBigInt((cb + cc)))))
495- invoke(L, "swap", [1, bT, toString(this)], [AttachedPayment(ao(bZ), cf)])
497+ let ca = cg._1
498+ let cb = cg._2
499+ let ch = toInt(fraction(toBigInt(ca), cf, (cf - toBigInt((cd + ce)))))
500+ invoke(L, "swap", [1, bV, toString(this)], [AttachedPayment(ao(cb), ch)])
496501 }
497502
498503
499-func cg (ab,ad,bQ,bR,aw,ax,bS,bT) = if ((ab == a))
500- then bP(ad, bQ, bR, aw, ax, bS, bT)
501- else ca(ad, bQ, bR, aw, ax, bS, bT)
504+func ci (ab,ad,bS,bT,aw,ax,bU,bV) = if ((ab == a))
505+ then bR(ad, bS, bT, aw, ax, bU, bV)
506+ else cc(ad, bS, bT, aw, ax, bU, bV)
502507
503508
504-func ch (ad,ci,cj,ck) = {
509+func cj (ad,ck,cl,cm) = {
505510 let W = Address(fromBase58String(ad))
506- let cl = valueOrErrorMessage(getString(this, (A + ad)), "Unknown pool")
507- let cm = aa(W, cl)
508- let bQ = cm._1
509- let bR = cm._2
510- let aw = cm._3
511- let ax = cm._4
512- let cn = Q(ao(bQ))
513- if ((cn == cn))
511+ let bI = valueOrErrorMessage(getString(this, (A + ad)), "Unknown pool")
512+ let cn = aa(W, bI)
513+ let bS = cn._1
514+ let bT = cn._2
515+ let aw = cn._3
516+ let ax = cn._4
517+ let co = Q(ao(bS))
518+ if ((co == co))
514519 then {
515- let co = Q(ao(bR))
516- if ((co == co))
520+ let cp = Q(ao(bT))
521+ if ((cp == cp))
517522 then {
518- let bg = if ((cl == a))
519- then invoke(W, "callFunction", ["withdraw", [toString(ci)]], nil)
520- else if ((cl == b))
521- then invoke(W, "unstakeAndGet", [ci], nil)
523+ let bj = if ((bI == a))
524+ then invoke(W, "callFunction", ["withdraw", [toString(ck)]], nil)
525+ else if ((bI == b))
526+ then invoke(W, "unstakeAndGet", [ck], nil)
522527 else throw("Wrong position type")
523- if ((bg == bg))
528+ if ((bj == bj))
524529 then {
525- let cp = Q(ao(bQ))
526- let cq = Q(ao(bR))
527- let cr = $Tuple2((cp - cn), (cq - co))
528- let cs = cr._1
529- let ct = cr._2
530- let cu = if ((cj > 0))
530+ let cq = Q(ao(bS))
531+ let cr = Q(ao(bT))
532+ let cs = $Tuple2((cq - co), (cr - cp))
533+ let ct = cs._1
534+ let cu = cs._2
535+ let cv = if ((cl > 0))
531536 then {
532- let cv = if (if ((ck == bQ))
533- then (cj > cs)
537+ let cw = if (if ((cm == bS))
538+ then (cl > ct)
534539 else false)
535- then (cj - cs)
536- else if (if ((ck == bR))
537- then (cj > ct)
540+ then (cl - ct)
541+ else if (if ((cm == bT))
542+ then (cl > cu)
538543 else false)
539- then (cj - ct)
544+ then (cl - cu)
540545 else 0
541- let cw = if ((cv > 0))
542- then cg(cl, ad, bQ, bR, aw, ax, cv, ck)
546+ let cx = if ((cw > 0))
547+ then ci(bI, ad, bS, bT, aw, ax, cw, cm)
543548 else 0
544- if ((cw == cw))
549+ if ((cx == cx))
545550 then {
546- let cx = Q(ao(bQ))
547- let cy = Q(ao(bR))
548- $Tuple2((cx - cn), (cy - co))
551+ let cy = Q(ao(bS))
552+ let cz = Q(ao(bT))
553+ $Tuple2((cy - co), (cz - cp))
549554 }
550555 else throw("Strict value is not equal to itself.")
551556 }
552- else $Tuple2(cs, ct)
553- let cz = cu._1
554- let cA = cu._2
555- $Tuple4(cz, bQ, cA, bR)
557+ else $Tuple2(ct, cu)
558+ let cA = cv._1
559+ let cB = cv._2
560+ $Tuple4(cA, bS, cB, bT)
556561 }
557562 else throw("Strict value is not equal to itself.")
558563 }
559564 else throw("Strict value is not equal to itself.")
560565 }
561566 else throw("Strict value is not equal to itself.")
562567 }
563568
564569
570+func cC (cD) = {
571+ let cE = split(valueOrErrorMessage(getString(this, (cD + y)), ("No request with id " + cD)), ",")
572+ let af = cE[0]
573+ let ad = cE[1]
574+ let as = parseIntValue(cE[2])
575+ let ba = cE[3]
576+ let au = parseIntValue(cE[4])
577+ let bb = cE[5]
578+ let aw = parseIntValue(cE[6])
579+ let ax = parseIntValue(cE[7])
580+ let ay = cE[8]
581+ let cF = cE[9]
582+ let cG = parseIntValue(cE[10])
583+ $Tuple11(af, ad, as, ba, au, bb, aw, ax, ay, cF, cG)
584+ }
585+
586+
565587 @Callable(P)
566-func replenishREADONLY (ad,cB,cC) = if (if ((100 > cB))
588+func replenishREADONLY (ad,cH,cI) = if (if ((100 > cH))
567589 then true
568- else (cB > 300))
590+ else (cH > 300))
569591 then throw("Leverage can't be <100 and >300")
570592 else {
571- let ab = valueOrErrorMessage(getString(this, (A + ad)), "Pool is not inited")
572- let cD = aa(Address(fromBase58String(ad)), ab)
573- let bI = cD._1
574- let bJ = cD._2
575- let aw = cD._3
576- let ax = cD._4
577- let ay = cD._5
578- let cE = if ((size(P.payments) == 2))
579- then if ((an(P.payments[0].assetId) != bI))
593+ let bI = valueOrErrorMessage(getString(this, (A + ad)), "Pool is not inited")
594+ let cJ = aa(Address(fromBase58String(ad)), bI)
595+ let ba = cJ._1
596+ let bb = cJ._2
597+ let aw = cJ._3
598+ let ax = cJ._4
599+ let ay = cJ._5
600+ let cK = if ((size(P.payments) == 2))
601+ then if ((an(P.payments[0].assetId) != ba))
580602 then throw("Wrong payment asset A")
581- else if ((an(P.payments[1].assetId) != bJ))
603+ else if ((an(P.payments[1].assetId) != bb))
582604 then throw("Wrong payment asset B")
583- else $Tuple4(P.payments[0].amount, bI, P.payments[1].amount, bJ)
605+ else $Tuple4(P.payments[0].amount, ba, P.payments[1].amount, bb)
584606 else if ((size(P.payments) == 1))
585- then if ((an(P.payments[0].assetId) == bI))
586- then $Tuple4(P.payments[0].amount, bI, 0, bJ)
587- else if ((an(P.payments[0].assetId) == bJ))
588- then $Tuple4(0, bI, P.payments[0].amount, bJ)
607+ then if ((an(P.payments[0].assetId) == ba))
608+ then $Tuple4(P.payments[0].amount, ba, 0, bb)
609+ else if ((an(P.payments[0].assetId) == bb))
610+ then $Tuple4(0, ba, P.payments[0].amount, bb)
589611 else throw("Wrong payment")
590612 else throw("One or two payments expected")
591- let as = cE._1
592- let at = cE._2
593- let au = cE._3
594- let av = cE._4
595- let cF = if ((cB > 100))
613+ let as = cK._1
614+ let at = cK._2
615+ let au = cK._3
616+ let av = cK._4
617+ let cL = if ((cH > 100))
596618 then {
597- let cG = ( let Z = invoke(K, "getTWAP60", [at, false], nil)
619+ let cM = ( let Z = invoke(K, "getTWAP60", [at, false], nil)
598620 if ($isInstanceOf(Z, "(Int, Int)"))
599621 then Z
600622 else throw(($getType(Z) + " couldn't be cast to (Int, Int)")))._1
601- let cH = ( let Z = invoke(K, "getTWAP60", [av, false], nil)
623+ let cN = ( let Z = invoke(K, "getTWAP60", [av, false], nil)
602624 if ($isInstanceOf(Z, "(Int, Int)"))
603625 then Z
604626 else throw(($getType(Z) + " couldn't be cast to (Int, Int)")))._1
605- let cI = (fraction(cG, as, pow(10, 0, ap(at), 0, 0, DOWN)) + fraction(cH, au, pow(10, 0, ap(av), 0, 0, DOWN)))
606- let cJ = fraction(cI, (cB - 100), 100)
607- let cK = makeString([ab, toString(P.caller), ad, toString(as), at, toString(au), av, toString(aw), toString(ax), ay, cC, toString(cJ), toString(1)], ",")
608- let cL = {
609- let Z = invoke(this, "createNewRequest", [cK], nil)
627+ let cO = (fraction(cM, as, pow(10, 0, ap(at), 0, 0, DOWN)) + fraction(cN, au, pow(10, 0, ap(av), 0, 0, DOWN)))
628+ let cP = fraction(cO, (cH - 100), 100)
629+ let cE = makeString([toString(P.caller), ad, toString(as), at, toString(au), av, toString(aw), toString(ax), ay, cI, toString(cP), toString(1)], ",")
630+ let cQ = {
631+ let Z = invoke(this, "createNewRequest", [cE], nil)
610632 if ($isInstanceOf(Z, "Int"))
611633 then Z
612634 else throw(($getType(Z) + " couldn't be cast to Int"))
613635 }
614- if ((cL == cL))
636+ if ((cQ == cQ))
615637 then {
616- let cM = [((toString(P.caller) + "_") + toString(1)), ay, cC, cJ, toString(this), "replenishFromLandReadOnly", toString(valueOrErrorMessage(cL, "Can't create new request"))]
617- let bg = reentrantInvoke(am(), "flashPosition", cM, nil)
618- if ((bg == bg))
619- then if ((cC == at))
620- then $Tuple4((as + cJ), au, d, cJ)
621- else $Tuple4(as, (au + cJ), d, cJ)
638+ let cR = [((toString(P.caller) + "_") + toString(1)), ay, cI, cP, toString(this), "replenishFromLandReadOnly", toString(valueOrErrorMessage(cQ, "Can't create new request"))]
639+ let bj = reentrantInvoke(am(), "flashPosition", cR, nil)
640+ if ((bj == bj))
641+ then if ((cI == at))
642+ then $Tuple4((as + cP), au, d, cP)
643+ else $Tuple4(as, (au + cP), d, cP)
622644 else throw("Strict value is not equal to itself.")
623645 }
624646 else throw("Strict value is not equal to itself.")
625647 }
626648 else $Tuple4(as, au, e, 0)
627- let cN = cF._1
628- let cO = cF._2
629- let ah = cF._3
630- let cJ = cF._4
631- let cP = if ((ab == a))
632- then ar(ad, ah, cN, at, cO, av, aw, ax, ay)
633- else aR(ad, ah, as, at, au, av, ay)
634- let cQ = cP._1
635- let bM = cP._2
636- let cR = ch(ad, cQ, cJ, cC)
637- if ((cR == cR))
649+ let cS = cL._1
650+ let cT = cL._2
651+ let ah = cL._3
652+ let cP = cL._4
653+ let cU = aZ(bI, ad, e, as, ba, au, bb, aw, ax, ay)
654+ let cV = cU._1
655+ let bO = cU._2
656+ let cW = cj(ad, cV, cP, cI)
657+ if ((cW == cW))
638658 then {
639- let bR = cR._4
640- let cA = cR._3
641- let bQ = cR._2
642- let cz = cR._1
643- $Tuple2(nil, [cQ, cz, cA])
659+ let bT = cW._4
660+ let cB = cW._3
661+ let bS = cW._2
662+ let cA = cW._1
663+ $Tuple2(nil, [cV, cA, cB])
644664 }
645665 else throw("Strict value is not equal to itself.")
646666 }
647667
648668
649669
650670 @Callable(P)
651-func replenishFromLandReadOnly (cS) = $Tuple2(nil, 11111)
671+func replenishFromLandReadOnly (cD) = {
672+ let cX = cC(cD)
673+ let af = cX._1
674+ let ad = cX._2
675+ let as = cX._3
676+ let ba = cX._4
677+ let au = cX._5
678+ let bb = cX._6
679+ let aw = cX._7
680+ let ax = cX._8
681+ let ay = cX._9
682+ let cF = cX._10
683+ let cG = cX._11
684+ if ((size(P.payments) != 1))
685+ then throw("Wrong payment size")
686+ else if (if ((an(P.payments[0].assetId) != cF))
687+ then true
688+ else (P.payments[0].amount != cG))
689+ then throw("Wrong payment")
690+ else {
691+ let cY = if ((ba == cF))
692+ then $Tuple2((as + P.payments[0].amount), au)
693+ else $Tuple2(as, (au + P.payments[0].amount))
694+ let cZ = cY._1
695+ let da = cY._2
696+ let bI = valueOrErrorMessage(getString(this, (A + ad)), "Unknown pool")
697+ let db = aZ(bI, ad, d, as, ba, au, bb, aw, ax, ay)
698+ let cV = db._1
699+ let bO = db._2
700+ nil
701+ }
702+ }
652703
653704
654705
655706 @Callable(P)
656-func replenish (ad,cB,cC) = if (if ((100 > cB))
707+func replenish (ad,cH,cI) = if (if ((100 > cH))
657708 then true
658- else (cB > 300))
709+ else (cH > 300))
659710 then throw("Leverage can't be <100 and >300")
660711 else {
661- let ab = valueOrErrorMessage(getString(this, (A + ad)), "Pool is not inited")
662- let cT = aa(Address(fromBase58String(ad)), ab)
663- let bI = cT._1
664- let bJ = cT._2
665- let aw = cT._3
666- let ax = cT._4
667- let ay = cT._5
668- let cU = if ((size(P.payments) == 2))
669- then if ((an(P.payments[0].assetId) != bI))
712+ let bI = valueOrErrorMessage(getString(this, (A + ad)), "Pool is not inited")
713+ let dc = aa(Address(fromBase58String(ad)), bI)
714+ let ba = dc._1
715+ let bb = dc._2
716+ let aw = dc._3
717+ let ax = dc._4
718+ let ay = dc._5
719+ let dd = if ((size(P.payments) == 2))
720+ then if ((an(P.payments[0].assetId) != ba))
670721 then throw("Wrong payment asset A")
671- else if ((an(P.payments[1].assetId) != bJ))
722+ else if ((an(P.payments[1].assetId) != bb))
672723 then throw("Wrong payment asset B")
673- else $Tuple4(P.payments[0].amount, bI, P.payments[1].amount, bJ)
724+ else $Tuple4(P.payments[0].amount, ba, P.payments[1].amount, bb)
674725 else if ((size(P.payments) == 1))
675- then if ((an(P.payments[0].assetId) == bI))
676- then $Tuple4(P.payments[0].amount, bI, 0, bJ)
677- else if ((an(P.payments[0].assetId) == bJ))
678- then $Tuple4(0, bI, P.payments[0].amount, bJ)
726+ then if ((an(P.payments[0].assetId) == ba))
727+ then $Tuple4(P.payments[0].amount, ba, 0, bb)
728+ else if ((an(P.payments[0].assetId) == bb))
729+ then $Tuple4(0, ba, P.payments[0].amount, bb)
679730 else throw("Wrong payment")
680731 else throw("One or two payments expected")
681- let as = cU._1
682- let at = cU._2
683- let au = cU._3
684- let av = cU._4
685- let cV = ae(ad, toString(P.caller))
686- if ((cB > 100))
732+ let as = dd._1
733+ let at = dd._2
734+ let au = dd._3
735+ let av = dd._4
736+ let de = ae(ad, toString(P.caller))
737+ if ((cH > 100))
687738 then {
688- let cG = ( let Z = invoke(K, "getTWAP60", [at, false], nil)
739+ let cM = ( let Z = invoke(K, "getTWAP60", [at, false], nil)
689740 if ($isInstanceOf(Z, "(Int, Int)"))
690741 then Z
691742 else throw(($getType(Z) + " couldn't be cast to (Int, Int)")))._1
692- let cH = ( let Z = invoke(K, "getTWAP60", [av, false], nil)
743+ let cN = ( let Z = invoke(K, "getTWAP60", [av, false], nil)
693744 if ($isInstanceOf(Z, "(Int, Int)"))
694745 then Z
695746 else throw(($getType(Z) + " couldn't be cast to (Int, Int)")))._1
696- let cI = (fraction(cG, as, pow(10, 0, ap(at), 0, 0, DOWN)) + fraction(cH, au, pow(10, 0, ap(av), 0, 0, DOWN)))
697- let cJ = fraction(cI, (cB - 100), 100)
698- let cK = makeString([ab, toString(P.caller), ad, toString(as), at, toString(au), av, toString(aw), toString(ax), ay, cC, toString(cJ), toString(cV)], ",")
699- let cL = {
700- let Z = invoke(this, "createNewRequest", [cK], nil)
747+ let cO = (fraction(cM, as, pow(10, 0, ap(at), 0, 0, DOWN)) + fraction(cN, au, pow(10, 0, ap(av), 0, 0, DOWN)))
748+ let cP = fraction(cO, (cH - 100), 100)
749+ let cE = makeString([toString(P.caller), ad, toString(as), at, toString(au), av, toString(aw), toString(ax), ay, cI, toString(cP)], ",")
750+ let cQ = {
751+ let Z = invoke(this, "createNewRequest", [cE], nil)
701752 if ($isInstanceOf(Z, "Int"))
702753 then Z
703754 else throw(($getType(Z) + " couldn't be cast to Int"))
704755 }
705- if ((cL == cL))
756+ if ((cQ == cQ))
706757 then {
707- let cM = [((toString(P.caller) + "_") + toString(cV)), ay, cC, cJ, toString(this), "replenishFromLand", toString(valueOrErrorMessage(cL, "Can't create new request"))]
708- let bg = reentrantInvoke(am(), "flashPosition", cM, nil)
709- if ((bg == bg))
758+ let cR = [((toString(P.caller) + "_") + toString(de)), ay, cI, cP, toString(this), "replenishFromLand", toString(valueOrErrorMessage(cQ, "Can't create new request"))]
759+ let bj = reentrantInvoke(am(), "flashPosition", cR, nil)
760+ if ((bj == bj))
710761 then nil
711762 else throw("Strict value is not equal to itself.")
712763 }
713764 else throw("Strict value is not equal to itself.")
714765 }
715766 else {
716- let cW = if ((ab == a))
717- then ar(ad, e, as, at, au, av, aw, ax, ay)
718- else aR(ad, e, as, at, au, av, ay)
719- let cQ = cW._1
720- let bM = cW._2
721- aZ(ad, toString(P.caller), cQ, bM, cV, ay, ab)
767+ let df = aZ(bI, ad, e, as, ba, au, bb, aw, ax, ay)
768+ let cV = df._1
769+ let bO = df._2
770+ bc(ad, toString(P.caller), cV, bO, de, ay, bI)
722771 }
723772 }
724773
725774
726775
727776 @Callable(P)
728-func replenishFromLand (cS) = {
729- let cK = split(valueOrErrorMessage(getString(this, (cS + y)), ("No request with id " + cS)), ",")
777+func replenishFromLand (cD) = {
778+ let dg = cC(cD)
779+ let af = dg._1
780+ let ad = dg._2
781+ let as = dg._3
782+ let ba = dg._4
783+ let au = dg._5
784+ let bb = dg._6
785+ let aw = dg._7
786+ let ax = dg._8
787+ let ay = dg._9
788+ let cF = dg._10
789+ let cG = dg._11
730790 if ((size(P.payments) != 1))
731791 then throw("Wrong payment size")
732- else if (if ((an(P.payments[0].assetId) != cK[10]))
792+ else if (if ((an(P.payments[0].assetId) != cF))
733793 then true
734- else (P.payments[0].amount != parseIntValue(cK[11])))
794+ else (P.payments[0].amount != cG))
735795 then throw("Wrong payment")
736796 else {
737- let as = if ((cK[4] == an(P.payments[0].assetId)))
738- then (parseIntValue(cK[3]) + P.payments[0].amount)
739- else parseIntValue(cK[3])
740- let au = if ((cK[6] == an(P.payments[0].assetId)))
741- then (parseIntValue(cK[5]) + P.payments[0].amount)
742- else parseIntValue(cK[3])
743- let ad = cK[2]
744- let af = cK[1]
745- let ay = cK[9]
746- let bb = parseIntValue(cK[12])
747- let cX = if ((cK[0] == a))
748- then ar(ad, d, as, cK[4], au, cK[6], parseIntValue(cK[7]), parseIntValue(cK[8]), ay)
749- else if ((cK[0] == b))
750- then aR(ad, d, as, cK[4], au, cK[6], ay)
751- else throw("Wrong request type")
752- let cQ = cX._1
753- let bM = cX._2
754- let cY = [IntegerEntry((((((cK[2] + "_") + cK[1]) + "_") + cK[12]) + p), P.payments[0].amount), StringEntry((((((cK[2] + "_") + cK[1]) + "_") + cK[12]) + q), cK[10])]
755- let cZ = aZ(ad, af, cQ, bM, bb, ay, cK[0])
756- $Tuple2(((cZ ++ cY) :+ DeleteEntry((cS + y))), cQ)
797+ let dh = if ((ba == cF))
798+ then $Tuple2((as + P.payments[0].amount), au)
799+ else $Tuple2(as, (au + P.payments[0].amount))
800+ let cZ = dh._1
801+ let da = dh._2
802+ let bI = valueOrErrorMessage(getString(this, (A + ad)), "Unknown pool")
803+ let di = aZ(bI, ad, d, as, ba, au, bb, aw, ax, ay)
804+ let cV = di._1
805+ let bO = di._2
806+ let be = ae(ad, toString(P.caller))
807+ let dj = [IntegerEntry((((((ad + "_") + af) + "_") + toString(be)) + p), cG), StringEntry((((((ad + "_") + af) + "_") + toString(be)) + q), cF)]
808+ let dk = bc(ad, af, cV, bO, be, ay, bI)
809+ $Tuple2(((dk ++ dj) :+ DeleteEntry((cD + y))), cV)
757810 }
758811 }
759812
760813
761814
762815 @Callable(P)
763-func withdraw (ad,da) = {
816+func withdraw (ad,dl) = {
764817 let af = toString(P.caller)
765- let db = valueOrErrorMessage(getInteger(this, (((((ad + "_") + af) + "_") + toString(da)) + o)), "Unknown position")
766- let dc = getIntegerValue(this, (((((ad + "_") + af) + "_") + toString(da)) + s))
767- let dd = getIntegerValue(this, (ad + u))
768- let de = ac(ad)
769- let ci = (db + fraction(db, (dd - dc), g))
770- let df = Address(fromBase58String(af))
771- let cJ = getIntegerValue(this, (((((ad + "_") + af) + "_") + toString(da)) + p))
772- let ck = getStringValue(this, (((((ad + "_") + af) + "_") + toString(da)) + q))
773- let cj = if ((cJ > 0))
818+ let dm = valueOrErrorMessage(getInteger(this, (((((ad + "_") + af) + "_") + toString(dl)) + o)), "Unknown position")
819+ let dn = getIntegerValue(this, (((((ad + "_") + af) + "_") + toString(dl)) + s))
820+ let do = getIntegerValue(this, (ad + u))
821+ let dp = ac(ad)
822+ let ck = (dm + fraction(dm, (do - dn), g))
823+ let dq = Address(fromBase58String(af))
824+ let cP = getIntegerValue(this, (((((ad + "_") + af) + "_") + toString(dl)) + p))
825+ let cm = getStringValue(this, (((((ad + "_") + af) + "_") + toString(dl)) + q))
826+ let cl = if ((cP > 0))
774827 then {
775- let Z = invoke(am(), "getAssetDebt", [false, ((((ad + "_") + af) + "_") + toString(da)), ck], nil)
828+ let Z = invoke(am(), "getAssetDebt", [false, ((((ad + "_") + af) + "_") + toString(dl)), cm], nil)
776829 if ($isInstanceOf(Z, "Int"))
777830 then Z
778831 else throw(($getType(Z) + " couldn't be cast to Int"))
779832 }
780833 else 0
781- let dg = ch(ad, ci, cj, ck)
782- if ((dg == dg))
834+ let dr = cj(ad, ck, cl, cm)
835+ if ((dr == dr))
783836 then {
784- let bR = dg._4
785- let cA = dg._3
786- let bQ = dg._2
787- let cz = dg._1
788- let dh = if ((cj > 0))
789- then invoke(am(), "repayFor", [((af + "_") + toString(da))], [AttachedPayment(ao(ck), cj)])
837+ let bT = dr._4
838+ let cB = dr._3
839+ let bS = dr._2
840+ let cA = dr._1
841+ let ds = if ((cl > 0))
842+ then invoke(am(), "repayFor", [((af + "_") + toString(dl))], [AttachedPayment(ao(cm), cl)])
790843 else 0
791- if ((dh == dh))
792- then [DeleteEntry((((((ad + "_") + af) + "_") + toString(da)) + o)), DeleteEntry((((((ad + "_") + af) + "_") + toString(da)) + s)), IntegerEntry((ad + t), (de - ci)), ScriptTransfer(df, cz, ao(bQ)), ScriptTransfer(df, cA, ao(bR))]
844+ if ((ds == ds))
845+ then [DeleteEntry((((((ad + "_") + af) + "_") + toString(dl)) + o)), DeleteEntry((((((ad + "_") + af) + "_") + toString(dl)) + s)), IntegerEntry((ad + t), (dp - ck)), ScriptTransfer(dq, cA, ao(bS)), ScriptTransfer(dq, cB, ao(bT))]
793846 else throw("Strict value is not equal to itself.")
794847 }
795848 else throw("Strict value is not equal to itself.")
796849 }
797850
798851
799852
800853 @Callable(P)
801-func createNewRequest (di) = valueOrElse(O(P), {
802- let cL = (valueOrElse(getInteger(this, z), 0) + 1)
803- $Tuple2([StringEntry((toString(cL) + y), di), IntegerEntry(z, cL)], cL)
854+func createNewRequest (dt) = valueOrElse(O(P), {
855+ let cQ = (valueOrElse(getInteger(this, z), 0) + 1)
856+ $Tuple2([StringEntry((toString(cQ) + y), dt), IntegerEntry(z, cQ)], cQ)
804857 })
805858
806859
807860
808861 @Callable(P)
809-func capitalizeExKeeper (ad,ab,dj,dk,dl,bm,bn,bo,bp,bq,br,bs) = {
810- let dm = if (dl)
811- then be(ab, ad)
862+func capitalizeExKeeper (ad,ab,du,dv,dw,bp,bq,br,bs,bt,bu,bv) = {
863+ let dx = if (dw)
864+ then bh(ab, ad)
812865 else {
813- let dn = if ((ab == a))
866+ let dy = if ((ab == a))
814867 then M
815868 else N
816- $Tuple2(dk, dn)
869+ $Tuple2(dv, dy)
817870 }
818- let do = dm._1
819- let dn = dm._2
820- let dp = bi(dj, dk, dn, bm, bn, bo, bp, bq, br, bs)
821- let aG = (do - dk)
822- let dq = if ((aG > 0))
871+ let dz = dx._1
872+ let dy = dx._2
873+ let dA = bl(du, dv, dy, bp, bq, br, bs, bt, bu, bv)
874+ let aG = (dz - dv)
875+ let dB = if ((aG > 0))
823876 then [IntegerEntry((ad + B), (aG + valueOrElse(getInteger(this, (ad + B)), 0)))]
824877 else nil
825- (bE(ad, ab, dj, dp) ++ dq)
878+ (bH(ad, ab, du, dA) ++ dB)
826879 }
827880
828881
829882
830883 @Callable(P)
831-func capitalizeExPazzle (ad,ab,dj,dk,dl,bv,bw,bs) = {
832- let dr = if (dl)
833- then be(ab, ad)
884+func capitalizeExPazzle (ad,ab,du,dv,dw,by,bz,bv) = {
885+ let dC = if (dw)
886+ then bh(ab, ad)
834887 else {
835- let dn = if ((ab == a))
888+ let dy = if ((ab == a))
836889 then M
837890 else N
838- $Tuple2(dk, dn)
891+ $Tuple2(dv, dy)
839892 }
840- let do = dr._1
841- let dn = dr._2
842- let dp = bu(dj, dk, dn, bv, bw, bs)
843- let aG = (do - dk)
844- let dq = if ((aG > 0))
893+ let dz = dC._1
894+ let dy = dC._2
895+ let dA = bx(du, dv, dy, by, bz, bv)
896+ let aG = (dz - dv)
897+ let dB = if ((aG > 0))
845898 then [IntegerEntry((ad + B), (aG + valueOrElse(getInteger(this, (ad + B)), 0)))]
846899 else nil
847- (bE(ad, ab, dj, dp) ++ dq)
900+ (bH(ad, ab, du, dA) ++ dB)
848901 }
849902
850903
851904
852905 @Callable(P)
853-func capitalizeExSwopFi (ad,ab,dj,dk,dl,by,bz,bA,bB,bC,bD,bs) = {
854- let ds = if (dl)
855- then be(ab, ad)
906+func capitalizeExSwopFi (ad,ab,du,dv,dw,bB,bC,bD,bE,bF,bG,bv) = {
907+ let dD = if (dw)
908+ then bh(ab, ad)
856909 else {
857- let dn = if ((ab == a))
910+ let dy = if ((ab == a))
858911 then M
859912 else N
860- $Tuple2(dk, dn)
913+ $Tuple2(dv, dy)
861914 }
862- let do = ds._1
863- let dn = ds._2
864- let dp = bx(dj, dk, dn, by, bz, bA, bB, bC, bD, bs)
865- let aG = (do - dk)
866- let dq = if ((aG > 0))
915+ let dz = dD._1
916+ let dy = dD._2
917+ let dA = bA(du, dv, dy, bB, bC, bD, bE, bF, bG, bv)
918+ let aG = (dz - dv)
919+ let dB = if ((aG > 0))
867920 then [IntegerEntry((ad + B), (aG + valueOrElse(getInteger(this, (ad + B)), 0)))]
868921 else nil
869- (bE(ad, ab, dj, dp) ++ dq)
922+ (bH(ad, ab, du, dA) ++ dB)
870923 }
871924
872925
873926
874927 @Callable(P)
875-func initNewPool (ab,W,dt,du,dv) = if (if ((ab != a))
928+func initNewPool (ab,W,dE,dF,dG) = if (if ((ab != a))
876929 then (ab != b)
877930 else false)
878931 then throw("Wrong type")
879- else [IntegerEntry((W + v), dt), IntegerEntry((W + w), du), IntegerEntry((W + x), dv), IntegerEntry((W + u), 0), StringEntry((A + W), ab)]
932+ else [IntegerEntry((W + v), dE), IntegerEntry((W + w), dF), IntegerEntry((W + x), dG), IntegerEntry((W + u), 0), StringEntry((A + W), ab)]
880933
881934
882-@Verifier(dw)
883-func dx () = sigVerify(dw.bodyBytes, dw.proofs[0], dw.senderPublicKey)
935+@Verifier(dH)
936+func dI () = sigVerify(dH.bodyBytes, dH.proofs[0], dH.senderPublicKey)
884937

github/deemru/w8io/026f985 
194.27 ms