tx · 8iUSH9DbjP1fqRFbK55QmorkUukNSmYzqKfjGHZpLu8N

3MvRWw2FPEimFCTGtK7qY9uAJbM7XJ4ZfJS:  -0.28000000 Waves

2023.04.19 12:22 [2541253] smart account 3MvRWw2FPEimFCTGtK7qY9uAJbM7XJ4ZfJS > SELF 0.00000000 Waves

{ "type": 13, "id": "8iUSH9DbjP1fqRFbK55QmorkUukNSmYzqKfjGHZpLu8N", "fee": 28000000, "feeAssetId": null, "timestamp": 1681896159649, "version": 2, "chainId": 84, "sender": "3MvRWw2FPEimFCTGtK7qY9uAJbM7XJ4ZfJS", "senderPublicKey": "HP8sssVq1866F7CaPQJwgFrt6fsqhQjKwM84cL1wjD2a", "proofs": [ "3jsb73aBkbg2Ap8DQB1yJGJhiH3U7f8zSWqB1HXW5VAsTFDJLweqc6nT55zsYdpA7Qp8RRLskZ8c6vChv7Vndupe" ], "script": "base64:BgJaCAISBQoDCAEIEgMKAQgSBQoDCAEIEgMKAQgSBAoCCAESAwoBCBIOCgwICAgBBBEYGBEBARgSCgoICAgIAQQIARgSDgoMCAgIAQQYGBgYGAEYEgcKBQgIAQEBQgAHU0ZfUE9PTAICU0YAB1dYX1BPT0wCAldYAAdDQVBfRkVFAgNjYXAACExPQU5fRkVFAgRsb2FuAAtOT19MT0FOX0ZFRQIGbm9Mb2FuAAZTQ0FMRTgAgMLXLwAHU0NBTEUxMACAyK+gJQAKRkVFX1NDQUxFNgDAhD0AFGtTRlBvb2xBQXNzZXRCYWxhbmNlAg9BX2Fzc2V0X2JhbGFuY2UAFGtTRlBvb2xCQXNzZXRCYWxhbmNlAg9CX2Fzc2V0X2JhbGFuY2UAD2tTRlBvb2xBQXNzZXRJZAIKQV9hc3NldF9pZAAPa1NGUG9vbEJBc3NldElkAgpCX2Fzc2V0X2lkAA5rU0ZQb29sU2hhcmVJZAIOc2hhcmVfYXNzZXRfaWQACmtTRlBvb2xGZWUCCmNvbW1pc3Npb24ADWtVc2VyUG9zaXRpb24CDl91c2VyX3Bvc2l0aW9uABFrVXNlckJvcnJvd0Ftb3VudAIcX3VzZXJfcG9zaXRpb25fYm9ycm93X2Ftb3VudAASa1VzZXJCb3Jyb3dBc3NldElkAh5fdXNlcl9wb3NpdGlvbl9ib3Jyb3dfYXNzZXRfaWQAEGtVc2VyUG9zaXRpb25OdW0CFV91c2VyX3Bvc2l0aW9uX251bWJlcgAVa1VzZXJQb3NpdGlvbkludGVyZXN0AhdfdXNlcl9wb3NpdGlvbl9pbnRlcmVzdAAKa1Bvb2xUb3RhbAILX3Bvb2xfdG90YWwADWtQb29sSW50ZXJlc3QCDl9wb29sX2ludGVyZXN0ABVrQXhseUluRmVlV2l0aG91dExvYW4CFl9heGx5X2ZlZV93aXRob3V0X2xvYW4AEmtBeGx5SW5GZWVXaXRoTG9hbgITX2F4bHlfZmVlX3dpdGhfbG9hbgALa0F4bHlDYXBGZWUCDV9heGx5X2ZlZV9jYXAACmtSZXF1ZXN0SWQCC19yZXF1ZXN0X2lkAAxrUmVxdWVzdEl0ZXICDXJlcXVlc3RzX2l0ZXIABWtQb29sAgVwb29sXwAOa1Bvb2xDYXBDaGFuZ2UCEF9wb29sX2NhcF9jaGFuZ2UACWtNb25leUJveAIOYXhseV9tb25leV9ib3gADmtTRkZhcm1pbmdBZGRyAhNzd29wZmlfZmFybWluZ19hZGRyAAxrTGVuZFNlcnZpY2UCEWxlbmRfc2VydmljZV9hZGRyAAxrUHJpY2VPcmFjbGUCDHByaWNlX29yYWNsZQALa0V4Q29udHJhY3QCEWV4Y2hhbmdlX2NvbnRyYWN0AA9rV3hTd2FwQ29udHJhY3QCEHd4X3N3YXBfY29udHJhY3QACG1vbmV5Qm94CQEHQWRkcmVzcwEJANkEAQkBE3ZhbHVlT3JFcnJvck1lc3NhZ2UCCQCdCAIFBHRoaXMFCWtNb25leUJveAIYTm8gYXhseSBtb25leUJveCBhZGRyZXNzAApleENvbnRyYWN0CQEHQWRkcmVzcwEJANkEAQkBE3ZhbHVlT3JFcnJvck1lc3NhZ2UCCQCdCAIFBHRoaXMFC2tFeENvbnRyYWN0AhxObyBleGNoYW5nZSBjb250cmFjdCBhZGRyZXNzAA9wcmljZU9yYWNsZUFkZHIJAQdBZGRyZXNzAQkA2QQBCQETdmFsdWVPckVycm9yTWVzc2FnZQIJAJ0IAgUEdGhpcwUMa1ByaWNlT3JhY2xlAhdObyBwcmljZSBvcmFjbGUgYWRkcmVzcwAOd3hTd2FwQ29udHJhY3QJAQdBZGRyZXNzAQkA2QQBCQETdmFsdWVPckVycm9yTWVzc2FnZQIJAJ0IAgUEdGhpcwUPa1d4U3dhcENvbnRyYWN0AhJObyB3eCBzd2FwIGFkZHJlc3MABlNXT1BJRAEgNAETVo5gRuJ+W6m4AUeC57EAJhKbduROS6KgfJxt7oEABFdYSUQBIMZSHoFO6m7jPMCXsA5fLPJq6e2dsobRmkJ4qGB9PhuxAQppc1NlbGZDYWxsAQFpAwkAAAIIBQFpBmNhbGxlcgUEdGhpcwUEdW5pdAkAAgECK09ubHkgY29udHJhY3QgaXRzZWxmIGNhbiBjYWxsIHRoaXMgZnVuY3Rpb24BDmFjY291bnRCYWxhbmNlAQdhc3NldElkBAckbWF0Y2gwBQdhc3NldElkAwkAAQIFByRtYXRjaDACCkJ5dGVWZWN0b3IEAmlkBQckbWF0Y2gwCQDwBwIFBHRoaXMFAmlkAwkAAQIFByRtYXRjaDACBFVuaXQEBXdhdmVzBQckbWF0Y2gwCAkA7wcBBQR0aGlzCWF2YWlsYWJsZQkAAgECC01hdGNoIGVycm9yAQ1nZXRTRlBvb2xEYXRhAQhwb29sQWRkcgkAlwoFCQETdmFsdWVPckVycm9yTWVzc2FnZQIJAJ0IAgUIcG9vbEFkZHIFD2tTRlBvb2xBQXNzZXRJZAIZQ2FuJ3QgZ2V0IHBvb2wgQSBhc3NldCBpZAkBE3ZhbHVlT3JFcnJvck1lc3NhZ2UCCQCdCAIFCHBvb2xBZGRyBQ9rU0ZQb29sQkFzc2V0SWQCGUNhbid0IGdldCBwb29sIEIgYXNzZXQgaWQJARN2YWx1ZU9yRXJyb3JNZXNzYWdlAgkAmggCBQhwb29sQWRkcgUUa1NGUG9vbEFBc3NldEJhbGFuY2UCHkNhbid0IGdldCBwb29sIEEgYXNzZXQgYmFsYW5jZQkBE3ZhbHVlT3JFcnJvck1lc3NhZ2UCCQCaCAIFCHBvb2xBZGRyBRRrU0ZQb29sQkFzc2V0QmFsYW5jZQIeQ2FuJ3QgZ2V0IHBvb2wgQiBhc3NldCBiYWxhbmNlCQETdmFsdWVPckVycm9yTWVzc2FnZQIJAJ0IAgUIcG9vbEFkZHIFDmtTRlBvb2xTaGFyZUlkAhhDYW4ndCBnZXQgc2hhcmUgYXNzZXQgaWQBDWdldFdYUG9vbERhdGEBCHBvb2xBZGRyBANjZmcKAAFACQD8BwQFCHBvb2xBZGRyAhxnZXRQb29sQ29uZmlnV3JhcHBlclJFQURPTkxZBQNuaWwFA25pbAMJAAECBQFAAglMaXN0W0FueV0FAUAJAAIBCQCsAgIJAAMBBQFAAh4gY291bGRuJ3QgYmUgY2FzdCB0byBMaXN0W0FueV0DCQAAAgUDY2ZnBQNjZmcJAJcKBQkBE3ZhbHVlT3JFcnJvck1lc3NhZ2UCCgABQAkAkQMCBQNjZmcABAMJAAECBQFAAgZTdHJpbmcFAUAFBHVuaXQCGUNhbid0IGdldCBwb29sIEEgYXNzZXQgaWQJARN2YWx1ZU9yRXJyb3JNZXNzYWdlAgoAAUAJAJEDAgUDY2ZnAAUDCQABAgUBQAIGU3RyaW5nBQFABQR1bml0AhlDYW4ndCBnZXQgcG9vbCBCIGFzc2V0IGlkAAAAAAkBE3ZhbHVlT3JFcnJvck1lc3NhZ2UCCgABQAkAkQMCBQNjZmcAAwMJAAECBQFAAgZTdHJpbmcFAUAFBHVuaXQCGkNhbid0IGdldCBwb29sIExQIGFzc2V0IGlkCQACAQIkU3RyaWN0IHZhbHVlIGlzIG5vdCBlcXVhbCB0byBpdHNlbGYuAQtnZXRQb29sRGF0YQIIcG9vbEFkZHIEdHlwZQMJAAACBQR0eXBlBQdTRl9QT09MCQENZ2V0U0ZQb29sRGF0YQEFCHBvb2xBZGRyAwkAAAIFBHR5cGUFB1dYX1BPT0wJAQ1nZXRXWFBvb2xEYXRhAQUIcG9vbEFkZHIJAAIBAg9Xcm9uZyBwb29sIHR5cGUBEWdldFBvb2xUb3RhbFNoYXJlAQRwb29sCQELdmFsdWVPckVsc2UCCQCaCAIFBHRoaXMJAKwCAgUEcG9vbAUKa1Bvb2xUb3RhbAAAARhnZXROZXdVc2VyUG9zaXRpb25OdW1iZXICBHBvb2wEdXNlcgkAZAIJAQt2YWx1ZU9yRWxzZQIJAJoIAgUEdGhpcwkArAICCQCsAgIJAKwCAgUEcG9vbAIBXwUEdXNlcgUQa1VzZXJQb3NpdGlvbk51bQAAAAEBCmdldEF4bHlGZWUCBHBvb2wHZmVlVHlwZQMJAAACBQdmZWVUeXBlAgNjYXAJARFAZXh0ck5hdGl2ZSgxMDUwKQIFBHRoaXMJAKwCAgUEcG9vbAULa0F4bHlDYXBGZWUDCQAAAgUHZmVlVHlwZQIEbG9hbgkBEUBleHRyTmF0aXZlKDEwNTApAgUEdGhpcwkArAICBQRwb29sBRJrQXhseUluRmVlV2l0aExvYW4DCQAAAgUHZmVlVHlwZQIGbm9Mb2FuCQERQGV4dHJOYXRpdmUoMTA1MCkCBQR0aGlzCQCsAgIFBHBvb2wFFWtBeGx5SW5GZWVXaXRob3V0TG9hbgkAAgECDldyb25nIGZlZSB0eXBlARBnZXRTRkZhcm1pbmdBZGRyAAkBB0FkZHJlc3MBCQDZBAEJARN2YWx1ZU9yRXJyb3JNZXNzYWdlAgkAnQgCBQR0aGlzBQ5rU0ZGYXJtaW5nQWRkcgIdQ2FuJ3QgZ2V0IHN3b3BmaSBmYXJtaW5nIGFkZHIBEGdldFdYRmFybWluZ0FkZHIBCHBvb2xBZGRyBAlmQ29udHJhY3QJAQdBZGRyZXNzAQkA2QQBCQETdmFsdWVPckVycm9yTWVzc2FnZQIJAJ0IAgUIcG9vbEFkZHICEyVzX19mYWN0b3J5Q29udHJhY3QCIkNhbid0IGdldCBXWCBmYWN0b3J5IGNvbnRyYWN0IGFkZHIECmZhY3Ryb3lDZmcJALUJAgkBE3ZhbHVlT3JFcnJvck1lc3NhZ2UCCQCdCAIFCWZDb250cmFjdAIRJXNfX2ZhY3RvcnlDb25maWcCGENhbid0IGdldCBXWCBmYWN0b3J5IGNmZwICX18JAQdBZGRyZXNzAQkA2QQBCQCRAwIFCmZhY3Ryb3lDZmcAAQEOZ2V0TGVuZFNydkFkZHIACQEHQWRkcmVzcwEJANkEAQkBE3ZhbHVlT3JFcnJvck1lc3NhZ2UCCQCdCAIFBHRoaXMFDGtMZW5kU2VydmljZQIbQ2FuJ3QgZ2V0IGxlbmQgc2VydmljZSBhZGRyAQxhc3NldElkVG9TdHIBB2Fzc2V0SWQEByRtYXRjaDAFB2Fzc2V0SWQDCQABAgUHJG1hdGNoMAIKQnl0ZVZlY3RvcgQCaWQFByRtYXRjaDAJANgEAQUCaWQDCQABAgUHJG1hdGNoMAIEVW5pdAQFd2F2ZXMFByRtYXRjaDACBVdBVkVTCQACAQILTWF0Y2ggZXJyb3IBDmFzc2V0SWRGcm9tU3RyAQdhc3NldElkAwkAAAIFB2Fzc2V0SWQCBVdBVkVTBQR1bml0CQDZBAEFB2Fzc2V0SWQBEGdldEFzc2V0RGVjaW1hbHMBB2Fzc2V0SWQDCQAAAgUHYXNzZXRJZAIFV0FWRVMACAQHJG1hdGNoMAkA7AcBCQDZBAEFB2Fzc2V0SWQDCQABAgUHJG1hdGNoMAIFQXNzZXQEBWFzc2V0BQckbWF0Y2gwCAUFYXNzZXQIZGVjaW1hbHMJAAIBAhBDYW4ndCBmaW5kIGFzc2V0AQ9yZXBsZW5pc2hTd29wRmkJBHBvb2wHZmVlVHlwZQRwbXRBCXBtdEFzc2V0QQRwbXRCCXBtdEFzc2V0QgRiYWxBBGJhbEIHc2hhcmVJZAQSc2hhcmVCYWxhbmNlQmVmb3JlCQEOYWNjb3VudEJhbGFuY2UBCQDZBAEFB3NoYXJlSWQDCQAAAgUSc2hhcmVCYWxhbmNlQmVmb3JlBRJzaGFyZUJhbGFuY2VCZWZvcmUECHBvb2xBZGRyCQEHQWRkcmVzcwEJANkEAQUEcG9vbAQGcmF0aW9BCQBrAwUGU0NBTEU4BQRwbXRBBQRiYWxBBAZyYXRpb0IJAGsDBQZTQ0FMRTgFBHBtdEIFBGJhbEIECyR0MDYzOTc2Njg5AwkAZgIFBnJhdGlvQgUGcmF0aW9BBANwbXQJAG4EBQRiYWxCBQZyYXRpb0EFBlNDQUxFOAUHQ0VJTElORwkAlgoEBQRwbXRBBQNwbXQJAGUCBQRwbXRCBQNwbXQFCXBtdEFzc2V0QgQDcG10CQBuBAUEYmFsQQUGcmF0aW9CBQZTQ0FMRTgFB0NFSUxJTkcJAJYKBAUDcG10BQRwbXRCCQBlAgUEcG10QQUDcG10BQlwbXRBc3NldEEECnBtdEFtb3VudEEIBQskdDA2Mzk3NjY4OQJfMQQKcG10QW1vdW50QggFCyR0MDYzOTc2Njg5Al8yBAZjaGFuZ2UIBQskdDA2Mzk3NjY4OQJfMwQNY2hhbmdlQXNzZXRJZAgFCyR0MDYzOTc2Njg5Al80BARpbnYxAwMJAGYCBQpwbXRBbW91bnRBAAAJAGYCBQpwbXRBbW91bnRCAAAHBAhwYXltZW50cwkAzAgCCQEPQXR0YWNoZWRQYXltZW50AgkBDmFzc2V0SWRGcm9tU3RyAQUJcG10QXNzZXRBBQpwbXRBbW91bnRBCQDMCAIJAQ9BdHRhY2hlZFBheW1lbnQCCQEOYXNzZXRJZEZyb21TdHIBBQlwbXRBc3NldEIFCnBtdEFtb3VudEIFA25pbAkA/AcEBQhwb29sQWRkcgIMY2FsbEZ1bmN0aW9uCQDMCAICFnJlcGxlbmlzaFdpdGhUd29Ub2tlbnMJAMwIAgkAzAgCAgVmYWxzZQkAzAgCAgEwBQNuaWwFA25pbAUIcGF5bWVudHMAAAMJAAACBQRpbnYxBQRpbnYxBARpbnYyAwkAZgIFBmNoYW5nZQAABAhwYXltZW50cwkAzAgCCQEPQXR0YWNoZWRQYXltZW50AgkBDmFzc2V0SWRGcm9tU3RyAQUNY2hhbmdlQXNzZXRJZAUGY2hhbmdlBQNuaWwEBHZhcnMJAMwIAgIBMAkAzAgCAgVmYWxzZQkAzAgCAgEwBQNuaWwJAPwHBAUIcG9vbEFkZHICDGNhbGxGdW5jdGlvbgkAzAgCAhVyZXBsZW5pc2hXaXRoT25lVG9rZW4JAMwIAgUEdmFycwUDbmlsBQhwYXltZW50cwAAAwkAAAIFBGludjIFBGludjIEEXNoYXJlQmFsYW5jZUFmdGVyCQEOYWNjb3VudEJhbGFuY2UBCQDZBAEFB3NoYXJlSWQEC3RvdGFsU3Rha2VkCQBlAgURc2hhcmVCYWxhbmNlQWZ0ZXIFEnNoYXJlQmFsYW5jZUJlZm9yZQQNYXhseUZlZUFtb3VudAkAawMFC3RvdGFsU3Rha2VkCQEKZ2V0QXhseUZlZQIFBHBvb2wFB2ZlZVR5cGUFCkZFRV9TQ0FMRTYEEXVzZXJTaGFyZUZvclN0YWtlCQBlAgULdG90YWxTdGFrZWQFDWF4bHlGZWVBbW91bnQDCQBnAgAABRF1c2VyU2hhcmVGb3JTdGFrZQkAAgECKGFtb3VudCBvZiBzdGFrZWQgc2hhcmV0b2tlbnMgbXVzdCBiZSA+IDAEBGludjMJAPwHBAkBEGdldFNGRmFybWluZ0FkZHIAAg9sb2NrU2hhcmVUb2tlbnMJAMwIAgUEcG9vbAkAzAgCAAAFA25pbAkAzAgCCQEPQXR0YWNoZWRQYXltZW50AgkA2QQBBQdzaGFyZUlkBRF1c2VyU2hhcmVGb3JTdGFrZQUDbmlsAwkAAAIFBGludjMFBGludjMJAJQKAgURdXNlclNoYXJlRm9yU3Rha2UFDWF4bHlGZWVBbW91bnQJAAIBAiRTdHJpY3QgdmFsdWUgaXMgbm90IGVxdWFsIHRvIGl0c2VsZi4JAAIBAiRTdHJpY3QgdmFsdWUgaXMgbm90IGVxdWFsIHRvIGl0c2VsZi4JAAIBAiRTdHJpY3QgdmFsdWUgaXMgbm90IGVxdWFsIHRvIGl0c2VsZi4JAAIBAiRTdHJpY3QgdmFsdWUgaXMgbm90IGVxdWFsIHRvIGl0c2VsZi4BC3JlcGxlbmlzaFdYBwRwb29sB2ZlZVR5cGUEcG10QQlwbXRBc3NldEEEcG10QglwbXRBc3NldEIHc2hhcmVJZAQIcG9vbEFkZHIJAQdBZGRyZXNzAQkA2QQBBQRwb29sBAskdDA4MTQwODk4OQMDCQBmAgUEcG10QQAACQBmAgUEcG10QgAABwQKZXZhbFB1dEluQQkAtQkCCgABQAkA/AcEBQhwb29sQWRkcgIgZXZhbHVhdGVQdXRCeUFtb3VudEFzc2V0UkVBRE9OTFkJAMwIAgUEcG10QQUDbmlsBQNuaWwDCQABAgUBQAIGU3RyaW5nBQFACQACAQkArAICCQADAQUBQAIbIGNvdWxkbid0IGJlIGNhc3QgdG8gU3RyaW5nAgJfXwMJAAACBQpldmFsUHV0SW5BBQpldmFsUHV0SW5BBApldmFsUHV0SW5CCQC1CQIKAAFACQD8BwQFCHBvb2xBZGRyAh9ldmFsdWF0ZVB1dEJ5UHJpY2VBc3NldFJFQURPTkxZCQDMCAIFBHBtdEIFA25pbAUDbmlsAwkAAQIFAUACBlN0cmluZwUBQAkAAgEJAKwCAgkAAwEFAUACGyBjb3VsZG4ndCBiZSBjYXN0IHRvIFN0cmluZwICX18DCQAAAgUKZXZhbFB1dEluQgUKZXZhbFB1dEluQgQFbHBJbkEJAQ1wYXJzZUludFZhbHVlAQkAkQMCBQpldmFsUHV0SW5BAAEEBWxwSW5CCQENcGFyc2VJbnRWYWx1ZQEJAJEDAgUKZXZhbFB1dEluQgABAwkAZgIFBWxwSW5CBQVscEluQQQGcG10SW5CCQENcGFyc2VJbnRWYWx1ZQEJAJEDAgUKZXZhbFB1dEluQQAICQCWCgQFBHBtdEEFBnBtdEluQgkAZQIFBHBtdEIFBnBtdEluQgUJcG10QXNzZXRCBAZwbXRJbkEJAQ1wYXJzZUludFZhbHVlAQkAkQMCBQpldmFsUHV0SW5CAAcJAJYKBAUGcG10SW5BBQRwbXRCCQBlAgUEcG10QQUGcG10SW5BBQlwbXRBc3NldEEJAAIBAiRTdHJpY3QgdmFsdWUgaXMgbm90IGVxdWFsIHRvIGl0c2VsZi4JAAIBAiRTdHJpY3QgdmFsdWUgaXMgbm90IGVxdWFsIHRvIGl0c2VsZi4DCQBmAgUEcG10QQAACQCWCgQFBHBtdEEFBHBtdEIFBHBtdEEFCXBtdEFzc2V0QQMJAGYCBQRwbXRCAAAJAJYKBAUEcG10QQUEcG10QgUEcG10QgUJcG10QXNzZXRCCQACAQIQcG10cyBtdXN0IGJlID4gMAQKcG10QW1vdW50QQgFCyR0MDgxNDA4OTg5Al8xBApwbXRBbW91bnRCCAULJHQwODE0MDg5ODkCXzIEBmNoYW5nZQgFCyR0MDgxNDA4OTg5Al8zBA1jaGFuZ2VBc3NldElkCAULJHQwODE0MDg5ODkCXzQEEnNoYXJlQmFsYW5jZUJlZm9yZQkBDmFjY291bnRCYWxhbmNlAQkA2QQBBQdzaGFyZUlkAwkAAAIFEnNoYXJlQmFsYW5jZUJlZm9yZQUSc2hhcmVCYWxhbmNlQmVmb3JlBARpbnYxAwMJAGYCBQpwbXRBbW91bnRBAAAJAGYCBQpwbXRBbW91bnRCAAAHBAhwYXltZW50cwkAzAgCCQEPQXR0YWNoZWRQYXltZW50AgkBDmFzc2V0SWRGcm9tU3RyAQUJcG10QXNzZXRBBQpwbXRBbW91bnRBCQDMCAIJAQ9BdHRhY2hlZFBheW1lbnQCCQEOYXNzZXRJZEZyb21TdHIBBQlwbXRBc3NldEIFCnBtdEFtb3VudEIFA25pbAkA/AcEBQhwb29sQWRkcgIDcHV0CQDMCAIAwIQ9CQDMCAIHBQNuaWwFCHBheW1lbnRzAAADCQAAAgUEaW52MQUEaW52MQQEaW52MgMJAGYCBQZjaGFuZ2UAAAQIcGF5bWVudHMJAMwIAgkBD0F0dGFjaGVkUGF5bWVudAIJAQ5hc3NldElkRnJvbVN0cgEFDWNoYW5nZUFzc2V0SWQFBmNoYW5nZQUDbmlsCQD8BwQFCHBvb2xBZGRyAglwdXRPbmVUa24JAMwIAgAACQDMCAIHBQNuaWwFCHBheW1lbnRzAAADCQAAAgUEaW52MgUEaW52MgQRc2hhcmVCYWxhbmNlQWZ0ZXIJAQ5hY2NvdW50QmFsYW5jZQEJANkEAQUHc2hhcmVJZAQLdG90YWxTdGFrZWQJAGUCBRFzaGFyZUJhbGFuY2VBZnRlcgUSc2hhcmVCYWxhbmNlQmVmb3JlBA1heGx5RmVlQW1vdW50CQBrAwULdG90YWxTdGFrZWQJAQpnZXRBeGx5RmVlAgUEcG9vbAUHZmVlVHlwZQUKRkVFX1NDQUxFNgQRdXNlclNoYXJlRm9yU3Rha2UJAGUCBQt0b3RhbFN0YWtlZAUNYXhseUZlZUFtb3VudAMJAGcCAAAFEXVzZXJTaGFyZUZvclN0YWtlCQACAQIoYW1vdW50IG9mIHN0YWtlZCBzaGFyZXRva2VucyBtdXN0IGJlID4gMAQEaW52MwkA/AcECQEQZ2V0V1hGYXJtaW5nQWRkcgEFCHBvb2xBZGRyAgVzdGFrZQUDbmlsCQDMCAIJAQ9BdHRhY2hlZFBheW1lbnQCCQDZBAEFB3NoYXJlSWQFEXVzZXJTaGFyZUZvclN0YWtlBQNuaWwDCQAAAgUEaW52MwUEaW52MwkAlAoCBRF1c2VyU2hhcmVGb3JTdGFrZQUNYXhseUZlZUFtb3VudAkAAgECJFN0cmljdCB2YWx1ZSBpcyBub3QgZXF1YWwgdG8gaXRzZWxmLgkAAgECJFN0cmljdCB2YWx1ZSBpcyBub3QgZXF1YWwgdG8gaXRzZWxmLgkAAgECJFN0cmljdCB2YWx1ZSBpcyBub3QgZXF1YWwgdG8gaXRzZWxmLgkAAgECJFN0cmljdCB2YWx1ZSBpcyBub3QgZXF1YWwgdG8gaXRzZWxmLgEQcmVwbGVuaXNoRW50cmllcwcEcG9vbAR1c2VyDHN0YWtlZEFtb3VudA1heGx5RmVlQW1vdW50BnBvc051bQdzaGFyZUlkBHR5cGUEC3RvdGFsQW1vdW50CQERZ2V0UG9vbFRvdGFsU2hhcmUBBQRwb29sBA9jdXJQb29sSW50ZXJlc3QJARFAZXh0ck5hdGl2ZSgxMDUwKQIFBHRoaXMJAKwCAgUEcG9vbAUNa1Bvb2xJbnRlcmVzdAkAzAgCCQEMSW50ZWdlckVudHJ5AgkArAICBQRwb29sBQprUG9vbFRvdGFsCQBkAgULdG90YWxBbW91bnQFDHN0YWtlZEFtb3VudAkAzAgCCQEMSW50ZWdlckVudHJ5AgkArAICCQCsAgIJAKwCAgkArAICCQCsAgIFBHBvb2wCAV8FBHVzZXICAV8JAKQDAQUGcG9zTnVtBQ1rVXNlclBvc2l0aW9uBQxzdGFrZWRBbW91bnQJAMwIAgkBDEludGVnZXJFbnRyeQIJAKwCAgkArAICCQCsAgIJAKwCAgkArAICBQRwb29sAgFfBQR1c2VyAgFfCQCkAwEFBnBvc051bQUVa1VzZXJQb3NpdGlvbkludGVyZXN0BQ9jdXJQb29sSW50ZXJlc3QJAMwIAgkBDEludGVnZXJFbnRyeQIJAKwCAgkArAICCQCsAgIFBHBvb2wCAV8FBHVzZXIFEGtVc2VyUG9zaXRpb25OdW0FBnBvc051bQkAzAgCCQEOU2NyaXB0VHJhbnNmZXIDBQhtb25leUJveAUNYXhseUZlZUFtb3VudAkA2QQBBQdzaGFyZUlkBQNuaWwBC2NsYWltRmFybWVkAgR0eXBlBHBvb2wDCQAAAgUEdHlwZQUHU0ZfUE9PTAQJYmFsQmVmb3JlCQEOYWNjb3VudEJhbGFuY2UBBQZTV09QSUQDCQAAAgUJYmFsQmVmb3JlBQliYWxCZWZvcmUEA2ludgkA/AcECQEQZ2V0U0ZGYXJtaW5nQWRkcgACBWNsYWltCQDMCAIFBHBvb2wFA25pbAUDbmlsAwkAAAIFA2ludgUDaW52BAhiYWxBZnRlcgkBDmFjY291bnRCYWxhbmNlAQUGU1dPUElECQCUCgIJAGUCBQhiYWxBZnRlcgUJYmFsQmVmb3JlBQZTV09QSUQJAAIBAiRTdHJpY3QgdmFsdWUgaXMgbm90IGVxdWFsIHRvIGl0c2VsZi4JAAIBAiRTdHJpY3QgdmFsdWUgaXMgbm90IGVxdWFsIHRvIGl0c2VsZi4DCQAAAgUEdHlwZQUHV1hfUE9PTAQJYmFsQmVmb3JlCQEOYWNjb3VudEJhbGFuY2UBBQRXWElEAwkAAAIFCWJhbEJlZm9yZQUJYmFsQmVmb3JlBANpbnYJAPwHBAkBEGdldFdYRmFybWluZ0FkZHIBCQEHQWRkcmVzcwEJANkEAQUEcG9vbAIHY2xhaW1XWAkAzAgCBQRwb29sBQNuaWwFA25pbAMJAAACBQNpbnYFA2ludgQIYmFsQWZ0ZXIJAQ5hY2NvdW50QmFsYW5jZQEFBFdYSUQJAJQKAgkAZQIFCGJhbEFmdGVyBQliYWxCZWZvcmUFBFdYSUQJAAIBAiRTdHJpY3QgdmFsdWUgaXMgbm90IGVxdWFsIHRvIGl0c2VsZi4JAAIBAiRTdHJpY3QgdmFsdWUgaXMgbm90IGVxdWFsIHRvIGl0c2VsZi4JAAIBAg9Xcm9uZyBwb29sIHR5cGUBDmV4Y2hhbmdlS2VlcGVyCgd0b1Rva2VuCXBtdEFtb3VudAhwbXRBc3NldAlhbW91bnRzSW4JYWRkcmVzc2VzD2Fzc2V0c1RvUmVjZWl2ZQtlc3RSZWNlaXZlZBFzbGlwcGFnZVRvbGVyYW5jZQttaW5SZWNlaXZlZAdvcHRpb25zBBJ0b2tlbkJhbGFuY2VCZWZvcmUJAQ5hY2NvdW50QmFsYW5jZQEJAQ5hc3NldElkRnJvbVN0cgEFB3RvVG9rZW4DCQAAAgUSdG9rZW5CYWxhbmNlQmVmb3JlBRJ0b2tlbkJhbGFuY2VCZWZvcmUEA2ludgkA/AcEBQpleENvbnRyYWN0AgRzd2FwCQDMCAIFCWFtb3VudHNJbgkAzAgCBQlhZGRyZXNzZXMJAMwIAgUPYXNzZXRzVG9SZWNlaXZlCQDMCAIFC2VzdFJlY2VpdmVkCQDMCAIFEXNsaXBwYWdlVG9sZXJhbmNlCQDMCAIFC21pblJlY2VpdmVkCQDMCAIFB29wdGlvbnMFA25pbAkAzAgCCQEPQXR0YWNoZWRQYXltZW50AgUIcG10QXNzZXQFCXBtdEFtb3VudAUDbmlsAwkAAAIFA2ludgUDaW52CQBlAgkBDmFjY291bnRCYWxhbmNlAQkBDmFzc2V0SWRGcm9tU3RyAQUHdG9Ub2tlbgUSdG9rZW5CYWxhbmNlQmVmb3JlCQACAQIkU3RyaWN0IHZhbHVlIGlzIG5vdCBlcXVhbCB0byBpdHNlbGYuCQACAQIkU3RyaWN0IHZhbHVlIGlzIG5vdCBlcXVhbCB0byBpdHNlbGYuAQ5leGNoYW5nZVBhenpsZQYHdG9Ub2tlbglwbXRBbW91bnQIcG10QXNzZXQJcm91dGVzU3RyDG1pblRvUmVjZWl2ZQdvcHRpb25zBBJ0b2tlbkJhbGFuY2VCZWZvcmUJAQ5hY2NvdW50QmFsYW5jZQEJAQ5hc3NldElkRnJvbVN0cgEFB3RvVG9rZW4DCQAAAgUSdG9rZW5CYWxhbmNlQmVmb3JlBRJ0b2tlbkJhbGFuY2VCZWZvcmUEA2ludgkA/AcEBQpleENvbnRyYWN0AgpwdXp6bGVTd2FwCQDMCAIFCXJvdXRlc1N0cgkAzAgCBQxtaW5Ub1JlY2VpdmUJAMwIAgUHb3B0aW9ucwUDbmlsCQDMCAIJAQ9BdHRhY2hlZFBheW1lbnQCBQhwbXRBc3NldAUJcG10QW1vdW50BQNuaWwDCQAAAgUDaW52BQNpbnYJAGUCCQEOYWNjb3VudEJhbGFuY2UBCQEOYXNzZXRJZEZyb21TdHIBBQd0b1Rva2VuBRJ0b2tlbkJhbGFuY2VCZWZvcmUJAAIBAiRTdHJpY3QgdmFsdWUgaXMgbm90IGVxdWFsIHRvIGl0c2VsZi4JAAIBAiRTdHJpY3QgdmFsdWUgaXMgbm90IGVxdWFsIHRvIGl0c2VsZi4BDmV4Y2hhbmdlU3dvcEZpCgd0b1Rva2VuCXBtdEFtb3VudAhwbXRBc3NldApleGNoYW5nZXJzDmV4Y2hhbmdlcnNUeXBlBWFyZ3MxBWFyZ3MyEXJvdXRpbmdBc3NldHNLZXlzEm1pbkFtb3VudFRvUmVjZWl2ZQdvcHRpb25zBBJ0b2tlbkJhbGFuY2VCZWZvcmUJAQ5hY2NvdW50QmFsYW5jZQEJAQ5hc3NldElkRnJvbVN0cgEFB3RvVG9rZW4DCQAAAgUSdG9rZW5CYWxhbmNlQmVmb3JlBRJ0b2tlbkJhbGFuY2VCZWZvcmUEA2ludgkA/AcEBQpleENvbnRyYWN0Agpzd29wZmlTd2FwCQDMCAIFCmV4Y2hhbmdlcnMJAMwIAgUOZXhjaGFuZ2Vyc1R5cGUJAMwIAgUFYXJnczEJAMwIAgUFYXJnczIJAMwIAgURcm91dGluZ0Fzc2V0c0tleXMJAMwIAgUSbWluQW1vdW50VG9SZWNlaXZlCQDMCAIFB29wdGlvbnMFA25pbAkAzAgCCQEPQXR0YWNoZWRQYXltZW50AgUIcG10QXNzZXQFCXBtdEFtb3VudAUDbmlsAwkAAAIFA2ludgUDaW52CQBlAgkBDmFjY291bnRCYWxhbmNlAQkBDmFzc2V0SWRGcm9tU3RyAQUHdG9Ub2tlbgUSdG9rZW5CYWxhbmNlQmVmb3JlCQACAQIkU3RyaWN0IHZhbHVlIGlzIG5vdCBlcXVhbCB0byBpdHNlbGYuCQACAQIkU3RyaWN0IHZhbHVlIGlzIG5vdCBlcXVhbCB0byBpdHNlbGYuAQpjYXBpdGFsaXplBARwb29sBHR5cGUHdG9rZW5JZAt0b2tlbkFtb3VudAQIcG9vbEFkZHIJAQdBZGRyZXNzAQkA2QQBBQRwb29sBA0kdDAxMzE5MDEzMjY4CQELZ2V0UG9vbERhdGECBQhwb29sQWRkcgUEdHlwZQQDQUlkCAUNJHQwMTMxOTAxMzI2OAJfMQQDQklkCAUNJHQwMTMxOTAxMzI2OAJfMgQEYmFsQQgFDSR0MDEzMTkwMTMyNjgCXzMEBGJhbEIIBQ0kdDAxMzE5MDEzMjY4Al80BAdzaGFyZUlkCAUNJHQwMTMxOTAxMzI2OAJfNQQNJHQwMTMyNzExMzM1MQMJAAACBQd0b2tlbklkBQNBSWQJAJQKAgULdG9rZW5BbW91bnQAAAkAlAoCAAAFC3Rva2VuQW1vdW50BARwbXRBCAUNJHQwMTMyNzExMzM1MQJfMQQEcG10QggFDSR0MDEzMjcxMTMzNTECXzIEDSR0MDEzMzU0MTM3MTUDCQAAAgUEdHlwZQUHU0ZfUE9PTAkBD3JlcGxlbmlzaFN3b3BGaQkFBHBvb2wFB0NBUF9GRUUFBHBtdEEFA0FJZAUEcG10QgUDQklkBQRiYWxBBQRiYWxCBQdzaGFyZUlkCQELcmVwbGVuaXNoV1gHBQRwb29sBQdDQVBfRkVFBQRwbXRBBQNBSWQFBHBtdEIFA0JJZAUHc2hhcmVJZAQMc3Rha2VkQW1vdW50CAUNJHQwMTMzNTQxMzcxNQJfMQQHYXhseUZlZQgFDSR0MDEzMzU0MTM3MTUCXzIED2N1clBvb2xJbnRlcmVzdAkBC3ZhbHVlT3JFbHNlAgkAmggCBQR0aGlzCQCsAgIFBHBvb2wFDWtQb29sSW50ZXJlc3QAAAQQdG90YWxTaGFyZUFtb3VudAkBEWdldFBvb2xUb3RhbFNoYXJlAQUEcG9vbAQLbmV3SW50ZXJlc3QJAGQCBQ9jdXJQb29sSW50ZXJlc3QJAGsDBQxzdGFrZWRBbW91bnQFB1NDQUxFMTAFEHRvdGFsU2hhcmVBbW91bnQJAMwIAgkBDEludGVnZXJFbnRyeQIJAKwCAgUEcG9vbAUNa1Bvb2xJbnRlcmVzdAULbmV3SW50ZXJlc3QJAMwIAgkBDlNjcmlwdFRyYW5zZmVyAwUIbW9uZXlCb3gFB2F4bHlGZWUJANkEAQUHc2hhcmVJZAUDbmlsARJleGNoYW5nZURpcmVjdGx5U0YHBHBvb2wIYXNzZXRJZEEIYXNzZXRJZEIEYmFsQQRiYWxCEGFtb3VudFRva2VuVG9HZXQPYXNzZXRUb2tlblRvR2V0BAhwb29sQWRkcgkBB0FkZHJlc3MBCQDZBAEFBHBvb2wECWZlZVNjYWxlNgDAhD0EA2ZlZQkBEUBleHRyTmF0aXZlKDEwNTApAgUIcG9vbEFkZHIFCmtTRlBvb2xGZWUEDGFtbnRHZXROb0ZlZQkAawMFEGFtb3VudFRva2VuVG9HZXQFCWZlZVNjYWxlNgkAZQIFCWZlZVNjYWxlNgUDZmVlBA0kdDAxNDQwODE0Njk2AwkAAAIFD2Fzc2V0VG9rZW5Ub0dldAUIYXNzZXRJZEEEC2Ftb3VudFRvUGF5CQBrAwUEYmFsQQUMYW1udEdldE5vRmVlCQBlAgUEYmFsQgUMYW1udEdldE5vRmVlCQCUCgIFC2Ftb3VudFRvUGF5BQhhc3NldElkQgQLYW1vdW50VG9QYXkJAGsDBQRiYWxCBQxhbW50R2V0Tm9GZWUJAGUCBQRiYWxBBQxhbW50R2V0Tm9GZWUJAJQKAgULYW1vdW50VG9QYXkFCGFzc2V0SWRBBAthbW91bnRUb1BheQgFDSR0MDE0NDA4MTQ2OTYCXzEECmFzc2V0VG9QYXkIBQ0kdDAxNDQwODE0Njk2Al8yCQD8BwQFCHBvb2xBZGRyAgxjYWxsRnVuY3Rpb24JAMwIAgIIZXhjaGFuZ2UJAMwIAgkAzAgCAgExBQNuaWwFA25pbAkAzAgCCQEPQXR0YWNoZWRQYXltZW50AgkBDmFzc2V0SWRGcm9tU3RyAQUKYXNzZXRUb1BheQULYW1vdW50VG9QYXkFA25pbAESZXhjaGFuZ2VEaXJlY3RseVdYBwRwb29sCGFzc2V0SWRBCGFzc2V0SWRCBGJhbEEEYmFsQhBhbW91bnRUb2tlblRvR2V0D2Fzc2V0VG9rZW5Ub0dldAQIcG9vbEFkZHIJAQdBZGRyZXNzAQkA2QQBBQRwb29sBAVwckZlZQkBEUBleHRyTmF0aXZlKDEwNTApAgUOd3hTd2FwQ29udHJhY3QCDyVzX19wcm90b2NvbEZlZQQEcEZlZQkBEUBleHRyTmF0aXZlKDEwNTApAgUOd3hTd2FwQ29udHJhY3QCCyVzX19wb29sRmVlBAhmZWVTY2FsZQkAtgIBAIDC1y8EDSR0MDE1MTc1MTU0ODMDCQAAAgUPYXNzZXRUb2tlblRvR2V0BQhhc3NldElkQQQLYW1vdW50VG9QYXkJAGsDBQRiYWxBBRBhbW91bnRUb2tlblRvR2V0CQBlAgUEYmFsQgUQYW1vdW50VG9rZW5Ub0dldAkAlAoCBQthbW91bnRUb1BheQUIYXNzZXRJZEIEC2Ftb3VudFRvUGF5CQBrAwUEYmFsQgUQYW1vdW50VG9rZW5Ub0dldAkAZQIFBGJhbEEFEGFtb3VudFRva2VuVG9HZXQJAJQKAgULYW1vdW50VG9QYXkFCGFzc2V0SWRBBAthbW91bnRUb1BheQgFDSR0MDE1MTc1MTU0ODMCXzEECmFzc2V0VG9QYXkIBQ0kdDAxNTE3NTE1NDgzAl8yBBJhbW91bnRUb1BheVdpdGhGZWUJAKADAQkAvAIDCQC2AgEFC2Ftb3VudFRvUGF5BQhmZWVTY2FsZQkAuAICBQhmZWVTY2FsZQkAtgIBCQBkAgUFcHJGZWUFBHBGZWUJAPwHBAUOd3hTd2FwQ29udHJhY3QCBHN3YXAJAMwIAgABCQDMCAIFD2Fzc2V0VG9rZW5Ub0dldAkAzAgCCQClCAEFBHRoaXMFA25pbAkAzAgCCQEPQXR0YWNoZWRQYXltZW50AgkBDmFzc2V0SWRGcm9tU3RyAQUKYXNzZXRUb1BheQUSYW1vdW50VG9QYXlXaXRoRmVlBQNuaWwBEGV4Y2hhbmdlRGlyZWN0bHkIBHR5cGUEcG9vbAhhc3NldElkQQhhc3NldElkQgRiYWxBBGJhbEIQYW1vdW50VG9rZW5Ub0dldA9hc3NldFRva2VuVG9HZXQDCQAAAgUEdHlwZQUHU0ZfUE9PTAkBEmV4Y2hhbmdlRGlyZWN0bHlTRgcFBHBvb2wFCGFzc2V0SWRBBQhhc3NldElkQgUEYmFsQQUEYmFsQgUQYW1vdW50VG9rZW5Ub0dldAUPYXNzZXRUb2tlblRvR2V0CQESZXhjaGFuZ2VEaXJlY3RseVdYBwUEcG9vbAUIYXNzZXRJZEEFCGFzc2V0SWRCBQRiYWxBBQRiYWxCBRBhbW91bnRUb2tlblRvR2V0BQ9hc3NldFRva2VuVG9HZXQBEndpdGhkcmF3QW1vdW50Q2FsYwQEcG9vbA91c2VyQ2FuV2l0aGRyYXcEZGVidAtib3Jyb3dBc3NldAQIcG9vbEFkZHIJAQdBZGRyZXNzAQkA2QQBBQRwb29sBAVwVHlwZQkBE3ZhbHVlT3JFcnJvck1lc3NhZ2UCCQCdCAIFBHRoaXMJAKwCAgUFa1Bvb2wFBHBvb2wCDFVua25vd24gcG9vbAQNJHQwMTYzNDgxNjQxNQkBC2dldFBvb2xEYXRhAgUIcG9vbEFkZHIFBXBUeXBlBAhhc3NldElkQQgFDSR0MDE2MzQ4MTY0MTUCXzEECGFzc2V0SWRCCAUNJHQwMTYzNDgxNjQxNQJfMgQEYmFsQQgFDSR0MDE2MzQ4MTY0MTUCXzMEBGJhbEIIBQ0kdDAxNjM0ODE2NDE1Al80BAtjQmFsQUJlZm9yZQkBDmFjY291bnRCYWxhbmNlAQkBDmFzc2V0SWRGcm9tU3RyAQUIYXNzZXRJZEEDCQAAAgULY0JhbEFCZWZvcmUFC2NCYWxBQmVmb3JlBAtjQmFsQkJlZm9yZQkBDmFjY291bnRCYWxhbmNlAQkBDmFzc2V0SWRGcm9tU3RyAQUIYXNzZXRJZEIDCQAAAgULY0JhbEJCZWZvcmUFC2NCYWxCQmVmb3JlBANpbnYDCQAAAgUFcFR5cGUFB1NGX1BPT0wJAPwHBAUIcG9vbEFkZHICDGNhbGxGdW5jdGlvbgkAzAgCAgh3aXRoZHJhdwkAzAgCCQDMCAIJAKQDAQUPdXNlckNhbldpdGhkcmF3BQNuaWwFA25pbAUDbmlsAwkAAAIFBXBUeXBlBQdXWF9QT09MCQD8BwQFCHBvb2xBZGRyAg11bnN0YWtlQW5kR2V0CQDMCAIFD3VzZXJDYW5XaXRoZHJhdwUDbmlsBQNuaWwJAAIBAhNXcm9uZyBwb3NpdGlvbiB0eXBlAwkAAAIFA2ludgUDaW52BApjQmFsQUFmdGVyCQEOYWNjb3VudEJhbGFuY2UBCQEOYXNzZXRJZEZyb21TdHIBBQhhc3NldElkQQQKY0JhbEJBZnRlcgkBDmFjY291bnRCYWxhbmNlAQkBDmFzc2V0SWRGcm9tU3RyAQUIYXNzZXRJZEIEDSR0MDE2OTI3MTcwMTYJAJQKAgkAZQIFCmNCYWxBQWZ0ZXIFC2NCYWxBQmVmb3JlCQBlAgUKY0JhbEJBZnRlcgULY0JhbEJCZWZvcmUEDXRva2Vuc0Ftb3VudEEIBQ0kdDAxNjkyNzE3MDE2Al8xBA10b2tlbnNBbW91bnRCCAUNJHQwMTY5MjcxNzAxNgJfMgQNJHQwMTcwMTkxNzcxNQMJAGYCBQRkZWJ0AAAEDWFtb3VudFRvR2V0RXgDAwkAAAIFC2JvcnJvd0Fzc2V0BQhhc3NldElkQQkAZgIFBGRlYnQFDXRva2Vuc0Ftb3VudEEHCQBlAgUEZGVidAUNdG9rZW5zQW1vdW50QQMDCQAAAgULYm9ycm93QXNzZXQFCGFzc2V0SWRCCQBmAgUEZGVidAUNdG9rZW5zQW1vdW50QgcJAGUCBQRkZWJ0BQ10b2tlbnNBbW91bnRCAAAEBWV4SW52AwkAZgIFDWFtb3VudFRvR2V0RXgAAAkBEGV4Y2hhbmdlRGlyZWN0bHkIBQVwVHlwZQUEcG9vbAUIYXNzZXRJZEEFCGFzc2V0SWRCBQRiYWxBBQRiYWxCBQ1hbW91bnRUb0dldEV4BQtib3Jyb3dBc3NldAAAAwkAAAIFBWV4SW52BQVleEludgQPY0JhbEFBZnRlclJlcGF5CQEOYWNjb3VudEJhbGFuY2UBCQEOYXNzZXRJZEZyb21TdHIBBQhhc3NldElkQQQPY0JhbEJBZnRlclJlcGF5CQEOYWNjb3VudEJhbGFuY2UBCQEOYXNzZXRJZEZyb21TdHIBBQhhc3NldElkQgkAlAoCCQBlAgUPY0JhbEFBZnRlclJlcGF5BQtjQmFsQUJlZm9yZQkAZQIFD2NCYWxCQWZ0ZXJSZXBheQULY0JhbEJCZWZvcmUJAAIBAiRTdHJpY3QgdmFsdWUgaXMgbm90IGVxdWFsIHRvIGl0c2VsZi4JAJQKAgUNdG9rZW5zQW1vdW50QQUNdG9rZW5zQW1vdW50QgQNdG9Vc2VyQW1vdW50QQgFDSR0MDE3MDE5MTc3MTUCXzEEDXRvVXNlckFtb3VudEIIBQ0kdDAxNzAxOTE3NzE1Al8yCQCWCgQFDXRvVXNlckFtb3VudEEFCGFzc2V0SWRBBQ10b1VzZXJBbW91bnRCBQhhc3NldElkQgkAAgECJFN0cmljdCB2YWx1ZSBpcyBub3QgZXF1YWwgdG8gaXRzZWxmLgkAAgECJFN0cmljdCB2YWx1ZSBpcyBub3QgZXF1YWwgdG8gaXRzZWxmLgkAAgECJFN0cmljdCB2YWx1ZSBpcyBub3QgZXF1YWwgdG8gaXRzZWxmLgoBaQERcmVwbGVuaXNoUkVBRE9OTFkDBHBvb2wIbGV2ZXJhZ2UNYm9ycm93QXNzZXRJZAMDCQBmAgBkBQhsZXZlcmFnZQYJAGYCBQhsZXZlcmFnZQCsAgkAAgECH0xldmVyYWdlIGNhbid0IGJlIDwxMDAgYW5kID4zMDAEBHR5cGUJARN2YWx1ZU9yRXJyb3JNZXNzYWdlAgkAnQgCBQR0aGlzCQCsAgIFBWtQb29sBQRwb29sAhJQb29sIGlzIG5vdCBpbml0ZWQEDSR0MDE4MDc4MTgxNjcJAQtnZXRQb29sRGF0YQIJAQdBZGRyZXNzAQkA2QQBBQRwb29sBQR0eXBlBANBSWQIBQ0kdDAxODA3ODE4MTY3Al8xBANCSWQIBQ0kdDAxODA3ODE4MTY3Al8yBARiYWxBCAUNJHQwMTgwNzgxODE2NwJfMwQEYmFsQggFDSR0MDE4MDc4MTgxNjcCXzQEB3NoYXJlSWQIBQ0kdDAxODA3ODE4MTY3Al81BA0kdDAxODE3MDE4ODA3AwkAAAIJAJADAQgFAWkIcGF5bWVudHMAAgMJAQIhPQIJAQxhc3NldElkVG9TdHIBCAkAkQMCCAUBaQhwYXltZW50cwAAB2Fzc2V0SWQFA0FJZAkAAgECFVdyb25nIHBheW1lbnQgYXNzZXQgQQMJAQIhPQIJAQxhc3NldElkVG9TdHIBCAkAkQMCCAUBaQhwYXltZW50cwABB2Fzc2V0SWQFA0JJZAkAAgECFVdyb25nIHBheW1lbnQgYXNzZXQgQgkAlgoECAkAkQMCCAUBaQhwYXltZW50cwAABmFtb3VudAUDQUlkCAkAkQMCCAUBaQhwYXltZW50cwABBmFtb3VudAUDQklkAwkAAAIJAJADAQgFAWkIcGF5bWVudHMAAQMJAAACCQEMYXNzZXRJZFRvU3RyAQgJAJEDAggFAWkIcGF5bWVudHMAAAdhc3NldElkBQNBSWQJAJYKBAgJAJEDAggFAWkIcGF5bWVudHMAAAZhbW91bnQFA0FJZAAABQNCSWQDCQAAAgkBDGFzc2V0SWRUb1N0cgEICQCRAwIIBQFpCHBheW1lbnRzAAAHYXNzZXRJZAUDQklkCQCWCgQAAAUDQUlkCAkAkQMCCAUBaQhwYXltZW50cwAABmFtb3VudAUDQklkCQACAQINV3JvbmcgcGF5bWVudAkAAgECHE9uZSBvciB0d28gcGF5bWVudHMgZXhwZWN0ZWQEBHBtdEEIBQ0kdDAxODE3MDE4ODA3Al8xBAlwbXRBc3NldEEIBQ0kdDAxODE3MDE4ODA3Al8yBARwbXRCCAUNJHQwMTgxNzAxODgwNwJfMwQJcG10QXNzZXRCCAUNJHQwMTgxNzAxODgwNwJfNAQNJHQwMTg4MTAyMDMzNQMJAGYCBQhsZXZlcmFnZQBkBAdkUHJpY2VBCAoAAUAJAPwHBAUPcHJpY2VPcmFjbGVBZGRyAglnZXRUV0FQNjAJAMwIAgUJcG10QXNzZXRBCQDMCAIHBQNuaWwFA25pbAMJAAECBQFAAgooSW50LCBJbnQpBQFACQACAQkArAICCQADAQUBQAIfIGNvdWxkbid0IGJlIGNhc3QgdG8gKEludCwgSW50KQJfMQQHZFByaWNlQggKAAFACQD8BwQFD3ByaWNlT3JhY2xlQWRkcgIJZ2V0VFdBUDYwCQDMCAIFCXBtdEFzc2V0QgkAzAgCBwUDbmlsBQNuaWwDCQABAgUBQAIKKEludCwgSW50KQUBQAkAAgEJAKwCAgkAAwEFAUACHyBjb3VsZG4ndCBiZSBjYXN0IHRvIChJbnQsIEludCkCXzEEDHBheWRJbkRvbGxhcgkAZAIJAGsDBQdkUHJpY2VBBQRwbXRBCQBsBgAKAAAJARBnZXRBc3NldERlY2ltYWxzAQUJcG10QXNzZXRBAAAAAAUERE9XTgkAawMFB2RQcmljZUIFBHBtdEIJAGwGAAoAAAkBEGdldEFzc2V0RGVjaW1hbHMBBQlwbXRBc3NldEIAAAAABQRET1dOBAxib3Jyb3dBbW91bnQJAGsDBQxwYXlkSW5Eb2xsYXIJAGUCBQhsZXZlcmFnZQBkAGQEB3JlcXVlc3QJALkJAgkAzAgCBQR0eXBlCQDMCAIJAKUIAQgFAWkGY2FsbGVyCQDMCAIFBHBvb2wJAMwIAgkApAMBBQRwbXRBCQDMCAIFCXBtdEFzc2V0QQkAzAgCCQCkAwEFBHBtdEIJAMwIAgUJcG10QXNzZXRCCQDMCAIJAKQDAQUEYmFsQQkAzAgCCQCkAwEFBGJhbEIJAMwIAgUHc2hhcmVJZAkAzAgCBQ1ib3Jyb3dBc3NldElkCQDMCAIJAKQDAQUMYm9ycm93QW1vdW50CQDMCAIJAKQDAQABBQNuaWwCASwEDG5ld1JlcXVlc3RJZAoAAUAJAPwHBAUEdGhpcwIQY3JlYXRlTmV3UmVxdWVzdAkAzAgCBQdyZXF1ZXN0BQNuaWwFA25pbAMJAAECBQFAAgNJbnQFAUAJAAIBCQCsAgIJAAMBBQFAAhggY291bGRuJ3QgYmUgY2FzdCB0byBJbnQDCQAAAgUMbmV3UmVxdWVzdElkBQxuZXdSZXF1ZXN0SWQEBGFyZ3MJAMwIAgkArAICCQCsAgIJAKUIAQgFAWkGY2FsbGVyAgFfCQCkAwEAAQkAzAgCBQdzaGFyZUlkCQDMCAIFDWJvcnJvd0Fzc2V0SWQJAMwIAgUMYm9ycm93QW1vdW50CQDMCAIJAKUIAQUEdGhpcwkAzAgCAhlyZXBsZW5pc2hGcm9tTGFuZFJlYWRPbmx5CQDMCAIJAKQDAQkBE3ZhbHVlT3JFcnJvck1lc3NhZ2UCBQxuZXdSZXF1ZXN0SWQCGENhbid0IGNyZWF0ZSBuZXcgcmVxdWVzdAUDbmlsBANpbnYJAP0HBAkBDmdldExlbmRTcnZBZGRyAAINZmxhc2hQb3NpdGlvbgUEYXJncwUDbmlsAwkAAAIFA2ludgUDaW52AwkAAAIFDWJvcnJvd0Fzc2V0SWQFCXBtdEFzc2V0QQkAlgoECQBkAgUEcG10QQUMYm9ycm93QW1vdW50BQRwbXRCBQhMT0FOX0ZFRQUMYm9ycm93QW1vdW50CQCWCgQFBHBtdEEJAGQCBQRwbXRCBQxib3Jyb3dBbW91bnQFCExPQU5fRkVFBQxib3Jyb3dBbW91bnQJAAIBAiRTdHJpY3QgdmFsdWUgaXMgbm90IGVxdWFsIHRvIGl0c2VsZi4JAAIBAiRTdHJpY3QgdmFsdWUgaXMgbm90IGVxdWFsIHRvIGl0c2VsZi4JAJYKBAUEcG10QQUEcG10QgULTk9fTE9BTl9GRUUAAAQIcGF5bWVudEEIBQ0kdDAxODgxMDIwMzM1Al8xBAhwYXltZW50QggFDSR0MDE4ODEwMjAzMzUCXzIEB2ZlZVR5cGUIBQ0kdDAxODgxMDIwMzM1Al8zBAxib3Jyb3dBbW91bnQIBQ0kdDAxODgxMDIwMzM1Al80BA0kdDAyMDMzODIwNzMyAwkAAAIFBHR5cGUFB1NGX1BPT0wJAQ9yZXBsZW5pc2hTd29wRmkJBQRwb29sBQdmZWVUeXBlBQhwYXltZW50QQUJcG10QXNzZXRBBQhwYXltZW50QgUJcG10QXNzZXRCBQRiYWxBBQRiYWxCBQdzaGFyZUlkCQELcmVwbGVuaXNoV1gHBQRwb29sBQdmZWVUeXBlBQRwbXRBBQlwbXRBc3NldEEFBHBtdEIFCXBtdEFzc2V0QgUHc2hhcmVJZAQKdXNlclN0YWtlZAgFDSR0MDIwMzM4MjA3MzICXzEEB2F4bHlGZWUIBQ0kdDAyMDMzODIwNzMyAl8yBA0kdDAyMDczNTIwODYwCQESd2l0aGRyYXdBbW91bnRDYWxjBAUEcG9vbAUKdXNlclN0YWtlZAUMYm9ycm93QW1vdW50BQ1ib3Jyb3dBc3NldElkAwkAAAIFDSR0MDIwNzM1MjA4NjAFDSR0MDIwNzM1MjA4NjAECGFzc2V0SWRCCAUNJHQwMjA3MzUyMDg2MAJfNAQNdG9Vc2VyQW1vdW50QggFDSR0MDIwNzM1MjA4NjACXzMECGFzc2V0SWRBCAUNJHQwMjA3MzUyMDg2MAJfMgQNdG9Vc2VyQW1vdW50QQgFDSR0MDIwNzM1MjA4NjACXzEJAJQKAgUDbmlsCQDMCAIFCnVzZXJTdGFrZWQJAMwIAgUNdG9Vc2VyQW1vdW50QQkAzAgCBQ10b1VzZXJBbW91bnRCBQNuaWwJAAIBAiRTdHJpY3QgdmFsdWUgaXMgbm90IGVxdWFsIHRvIGl0c2VsZi4BaQEZcmVwbGVuaXNoRnJvbUxhbmRSZWFkT25seQEJcmVxdWVzdElkBQNuaWwBaQEJcmVwbGVuaXNoAwRwb29sCGxldmVyYWdlDWJvcnJvd0Fzc2V0SWQDAwkAZgIAZAUIbGV2ZXJhZ2UGCQBmAgUIbGV2ZXJhZ2UArAIJAAIBAh9MZXZlcmFnZSBjYW4ndCBiZSA8MTAwIGFuZCA+MzAwBAR0eXBlCQETdmFsdWVPckVycm9yTWVzc2FnZQIJAJ0IAgUEdGhpcwkArAICBQVrUG9vbAUEcG9vbAISUG9vbCBpcyBub3QgaW5pdGVkBA0kdDAyMTI5MzIxMzgyCQELZ2V0UG9vbERhdGECCQEHQWRkcmVzcwEJANkEAQUEcG9vbAUEdHlwZQQDQUlkCAUNJHQwMjEyOTMyMTM4MgJfMQQDQklkCAUNJHQwMjEyOTMyMTM4MgJfMgQEYmFsQQgFDSR0MDIxMjkzMjEzODICXzMEBGJhbEIIBQ0kdDAyMTI5MzIxMzgyAl80BAdzaGFyZUlkCAUNJHQwMjEyOTMyMTM4MgJfNQQNJHQwMjEzODUyMjAyMgMJAAACCQCQAwEIBQFpCHBheW1lbnRzAAIDCQECIT0CCQEMYXNzZXRJZFRvU3RyAQgJAJEDAggFAWkIcGF5bWVudHMAAAdhc3NldElkBQNBSWQJAAIBAhVXcm9uZyBwYXltZW50IGFzc2V0IEEDCQECIT0CCQEMYXNzZXRJZFRvU3RyAQgJAJEDAggFAWkIcGF5bWVudHMAAQdhc3NldElkBQNCSWQJAAIBAhVXcm9uZyBwYXltZW50IGFzc2V0IEIJAJYKBAgJAJEDAggFAWkIcGF5bWVudHMAAAZhbW91bnQFA0FJZAgJAJEDAggFAWkIcGF5bWVudHMAAQZhbW91bnQFA0JJZAMJAAACCQCQAwEIBQFpCHBheW1lbnRzAAEDCQAAAgkBDGFzc2V0SWRUb1N0cgEICQCRAwIIBQFpCHBheW1lbnRzAAAHYXNzZXRJZAUDQUlkCQCWCgQICQCRAwIIBQFpCHBheW1lbnRzAAAGYW1vdW50BQNBSWQAAAUDQklkAwkAAAIJAQxhc3NldElkVG9TdHIBCAkAkQMCCAUBaQhwYXltZW50cwAAB2Fzc2V0SWQFA0JJZAkAlgoEAAAFA0FJZAgJAJEDAggFAWkIcGF5bWVudHMAAAZhbW91bnQFA0JJZAkAAgECDVdyb25nIHBheW1lbnQJAAIBAhxPbmUgb3IgdHdvIHBheW1lbnRzIGV4cGVjdGVkBARwbXRBCAUNJHQwMjEzODUyMjAyMgJfMQQJcG10QXNzZXRBCAUNJHQwMjEzODUyMjAyMgJfMgQEcG10QggFDSR0MDIxMzg1MjIwMjICXzMECXBtdEFzc2V0QggFDSR0MDIxMzg1MjIwMjICXzQECW5ld1Bvc051bQkBGGdldE5ld1VzZXJQb3NpdGlvbk51bWJlcgIFBHBvb2wJAKUIAQgFAWkGY2FsbGVyAwkAZgIFCGxldmVyYWdlAGQEB2RQcmljZUEICgABQAkA/AcEBQ9wcmljZU9yYWNsZUFkZHICCWdldFRXQVA2MAkAzAgCBQlwbXRBc3NldEEJAMwIAgcFA25pbAUDbmlsAwkAAQIFAUACCihJbnQsIEludCkFAUAJAAIBCQCsAgIJAAMBBQFAAh8gY291bGRuJ3QgYmUgY2FzdCB0byAoSW50LCBJbnQpAl8xBAdkUHJpY2VCCAoAAUAJAPwHBAUPcHJpY2VPcmFjbGVBZGRyAglnZXRUV0FQNjAJAMwIAgUJcG10QXNzZXRCCQDMCAIHBQNuaWwFA25pbAMJAAECBQFAAgooSW50LCBJbnQpBQFACQACAQkArAICCQADAQUBQAIfIGNvdWxkbid0IGJlIGNhc3QgdG8gKEludCwgSW50KQJfMQQMcGF5ZEluRG9sbGFyCQBkAgkAawMFB2RQcmljZUEFBHBtdEEJAGwGAAoAAAkBEGdldEFzc2V0RGVjaW1hbHMBBQlwbXRBc3NldEEAAAAABQRET1dOCQBrAwUHZFByaWNlQgUEcG10QgkAbAYACgAACQEQZ2V0QXNzZXREZWNpbWFscwEFCXBtdEFzc2V0QgAAAAAFBERPV04EDGJvcnJvd0Ftb3VudAkAawMFDHBheWRJbkRvbGxhcgkAZQIFCGxldmVyYWdlAGQAZAQHcmVxdWVzdAkAuQkCCQDMCAIFBHR5cGUJAMwIAgkApQgBCAUBaQZjYWxsZXIJAMwIAgUEcG9vbAkAzAgCCQCkAwEFBHBtdEEJAMwIAgUJcG10QXNzZXRBCQDMCAIJAKQDAQUEcG10QgkAzAgCBQlwbXRBc3NldEIJAMwIAgkApAMBBQRiYWxBCQDMCAIJAKQDAQUEYmFsQgkAzAgCBQdzaGFyZUlkCQDMCAIFDWJvcnJvd0Fzc2V0SWQJAMwIAgkApAMBBQxib3Jyb3dBbW91bnQJAMwIAgkApAMBBQluZXdQb3NOdW0FA25pbAIBLAQMbmV3UmVxdWVzdElkCgABQAkA/AcEBQR0aGlzAhBjcmVhdGVOZXdSZXF1ZXN0CQDMCAIFB3JlcXVlc3QFA25pbAUDbmlsAwkAAQIFAUACA0ludAUBQAkAAgEJAKwCAgkAAwEFAUACGCBjb3VsZG4ndCBiZSBjYXN0IHRvIEludAMJAAACBQxuZXdSZXF1ZXN0SWQFDG5ld1JlcXVlc3RJZAQEYXJncwkAzAgCCQCsAgIJAKwCAgkApQgBCAUBaQZjYWxsZXICAV8JAKQDAQUJbmV3UG9zTnVtCQDMCAIFB3NoYXJlSWQJAMwIAgUNYm9ycm93QXNzZXRJZAkAzAgCBQxib3Jyb3dBbW91bnQJAMwIAgkApQgBBQR0aGlzCQDMCAICEXJlcGxlbmlzaEZyb21MYW5kCQDMCAIJAKQDAQkBE3ZhbHVlT3JFcnJvck1lc3NhZ2UCBQxuZXdSZXF1ZXN0SWQCGENhbid0IGNyZWF0ZSBuZXcgcmVxdWVzdAUDbmlsBANpbnYJAP0HBAkBDmdldExlbmRTcnZBZGRyAAINZmxhc2hQb3NpdGlvbgUEYXJncwUDbmlsAwkAAAIFA2ludgUDaW52BQNuaWwJAAIBAiRTdHJpY3QgdmFsdWUgaXMgbm90IGVxdWFsIHRvIGl0c2VsZi4JAAIBAiRTdHJpY3QgdmFsdWUgaXMgbm90IGVxdWFsIHRvIGl0c2VsZi4EDSR0MDIzMzYzMjM3NTQDCQAAAgUEdHlwZQUHU0ZfUE9PTAkBD3JlcGxlbmlzaFN3b3BGaQkFBHBvb2wFC05PX0xPQU5fRkVFBQRwbXRBBQlwbXRBc3NldEEFBHBtdEIFCXBtdEFzc2V0QgUEYmFsQQUEYmFsQgUHc2hhcmVJZAkBC3JlcGxlbmlzaFdYBwUEcG9vbAULTk9fTE9BTl9GRUUFBHBtdEEFCXBtdEFzc2V0QQUEcG10QgUJcG10QXNzZXRCBQdzaGFyZUlkBAp1c2VyU3Rha2VkCAUNJHQwMjMzNjMyMzc1NAJfMQQHYXhseUZlZQgFDSR0MDIzMzYzMjM3NTQCXzIJARByZXBsZW5pc2hFbnRyaWVzBwUEcG9vbAkApQgBCAUBaQZjYWxsZXIFCnVzZXJTdGFrZWQFB2F4bHlGZWUFCW5ld1Bvc051bQUHc2hhcmVJZAUEdHlwZQFpARFyZXBsZW5pc2hGcm9tTGFuZAEJcmVxdWVzdElkBAdyZXF1ZXN0CQC1CQIJARN2YWx1ZU9yRXJyb3JNZXNzYWdlAgkAnQgCBQR0aGlzCQCsAgIFCXJlcXVlc3RJZAUKa1JlcXVlc3RJZAkArAICAhNObyByZXF1ZXN0IHdpdGggaWQgBQlyZXF1ZXN0SWQCASwDCQECIT0CCQCQAwEIBQFpCHBheW1lbnRzAAEJAAIBAhJXcm9uZyBwYXltZW50IHNpemUDAwkBAiE9AgkBDGFzc2V0SWRUb1N0cgEICQCRAwIIBQFpCHBheW1lbnRzAAAHYXNzZXRJZAkAkQMCBQdyZXF1ZXN0AAoGCQECIT0CCAkAkQMCCAUBaQhwYXltZW50cwAABmFtb3VudAkBDXBhcnNlSW50VmFsdWUBCQCRAwIFB3JlcXVlc3QACwkAAgECDVdyb25nIHBheW1lbnQEBHBtdEEDCQAAAgkAkQMCBQdyZXF1ZXN0AAQJAQxhc3NldElkVG9TdHIBCAkAkQMCCAUBaQhwYXltZW50cwAAB2Fzc2V0SWQJAGQCCQENcGFyc2VJbnRWYWx1ZQEJAJEDAgUHcmVxdWVzdAADCAkAkQMCCAUBaQhwYXltZW50cwAABmFtb3VudAkBDXBhcnNlSW50VmFsdWUBCQCRAwIFB3JlcXVlc3QAAwQEcG10QgMJAAACCQCRAwIFB3JlcXVlc3QABgkBDGFzc2V0SWRUb1N0cgEICQCRAwIIBQFpCHBheW1lbnRzAAAHYXNzZXRJZAkAZAIJAQ1wYXJzZUludFZhbHVlAQkAkQMCBQdyZXF1ZXN0AAUICQCRAwIIBQFpCHBheW1lbnRzAAAGYW1vdW50CQENcGFyc2VJbnRWYWx1ZQEJAJEDAgUHcmVxdWVzdAADBARwb29sCQCRAwIFB3JlcXVlc3QAAgQEdXNlcgkAkQMCBQdyZXF1ZXN0AAEEB3NoYXJlSWQJAJEDAgUHcmVxdWVzdAAJBAZwb3NOdW0JAQ1wYXJzZUludFZhbHVlAQkAkQMCBQdyZXF1ZXN0AAwEDSR0MDI0NzEyMjUyMjcDCQAAAgkAkQMCBQdyZXF1ZXN0AAAFB1NGX1BPT0wJAQ9yZXBsZW5pc2hTd29wRmkJBQRwb29sBQhMT0FOX0ZFRQUEcG10QQkAkQMCBQdyZXF1ZXN0AAQFBHBtdEIJAJEDAgUHcmVxdWVzdAAGCQENcGFyc2VJbnRWYWx1ZQEJAJEDAgUHcmVxdWVzdAAHCQENcGFyc2VJbnRWYWx1ZQEJAJEDAgUHcmVxdWVzdAAIBQdzaGFyZUlkAwkAAAIJAJEDAgUHcmVxdWVzdAAABQdXWF9QT09MCQELcmVwbGVuaXNoV1gHBQRwb29sBQhMT0FOX0ZFRQUEcG10QQkAkQMCBQdyZXF1ZXN0AAQFBHBtdEIJAJEDAgUHcmVxdWVzdAAGBQdzaGFyZUlkCQACAQISV3JvbmcgcmVxdWVzdCB0eXBlBAp1c2VyU3Rha2VkCAUNJHQwMjQ3MTIyNTIyNwJfMQQHYXhseUZlZQgFDSR0MDI0NzEyMjUyMjcCXzIEDWJvcnJvd0VudHJpZXMJAMwIAgkBDEludGVnZXJFbnRyeQIJAKwCAgkArAICCQCsAgIJAKwCAgkArAICCQCRAwIFB3JlcXVlc3QAAgIBXwkAkQMCBQdyZXF1ZXN0AAECAV8JAJEDAgUHcmVxdWVzdAAMBRFrVXNlckJvcnJvd0Ftb3VudAgJAJEDAggFAWkIcGF5bWVudHMAAAZhbW91bnQJAMwIAgkBC1N0cmluZ0VudHJ5AgkArAICCQCsAgIJAKwCAgkArAICCQCsAgIJAJEDAgUHcmVxdWVzdAACAgFfCQCRAwIFB3JlcXVlc3QAAQIBXwkAkQMCBQdyZXF1ZXN0AAwFEmtVc2VyQm9ycm93QXNzZXRJZAkAkQMCBQdyZXF1ZXN0AAoFA25pbAQHZW50cmllcwkBEHJlcGxlbmlzaEVudHJpZXMHBQRwb29sBQR1c2VyBQp1c2VyU3Rha2VkBQdheGx5RmVlBQZwb3NOdW0FB3NoYXJlSWQJAJEDAgUHcmVxdWVzdAAACQCUCgIJAM0IAgkAzggCBQdlbnRyaWVzBQ1ib3Jyb3dFbnRyaWVzCQELRGVsZXRlRW50cnkBCQCsAgIFCXJlcXVlc3RJZAUKa1JlcXVlc3RJZAUKdXNlclN0YWtlZAFpAQh3aXRoZHJhdwIEcG9vbAVwb3NJZAQEdXNlcgkApQgBCAUBaQZjYWxsZXIEB3BBbW91bnQJARN2YWx1ZU9yRXJyb3JNZXNzYWdlAgkAmggCBQR0aGlzCQCsAgIJAKwCAgkArAICCQCsAgIJAKwCAgUEcG9vbAIBXwUEdXNlcgIBXwkApAMBBQVwb3NJZAUNa1VzZXJQb3NpdGlvbgIQVW5rbm93biBwb3NpdGlvbgQMdXNlckludGVyZXN0CQERQGV4dHJOYXRpdmUoMTA1MCkCBQR0aGlzCQCsAgIJAKwCAgkArAICCQCsAgIJAKwCAgUEcG9vbAIBXwUEdXNlcgIBXwkApAMBBQVwb3NJZAUVa1VzZXJQb3NpdGlvbkludGVyZXN0BAtwb29sSW50ZXJzdAkBEUBleHRyTmF0aXZlKDEwNTApAgUEdGhpcwkArAICBQRwb29sBQ1rUG9vbEludGVyZXN0BA5wb29sVG90YWxTaGFyZQkBEWdldFBvb2xUb3RhbFNoYXJlAQUEcG9vbAQPdXNlckNhbldpdGhkcmF3CQBkAgUHcEFtb3VudAkAawMFB3BBbW91bnQJAGUCBQtwb29sSW50ZXJzdAUMdXNlckludGVyZXN0BQdTQ0FMRTEwBAh1c2VyQWRkcgkBB0FkZHJlc3MBCQDZBAEFBHVzZXIEDGJvcnJvd0Ftb3VudAkBEUBleHRyTmF0aXZlKDEwNTApAgUEdGhpcwkArAICCQCsAgIJAKwCAgkArAICCQCsAgIFBHBvb2wCAV8FBHVzZXICAV8JAKQDAQUFcG9zSWQFEWtVc2VyQm9ycm93QW1vdW50BAtib3Jyb3dBc3NldAkBEUBleHRyTmF0aXZlKDEwNTMpAgUEdGhpcwkArAICCQCsAgIJAKwCAgkArAICCQCsAgIFBHBvb2wCAV8FBHVzZXICAV8JAKQDAQUFcG9zSWQFEmtVc2VyQm9ycm93QXNzZXRJZAQEZGVidAMJAGYCBQxib3Jyb3dBbW91bnQAAAoAAUAJAPwHBAkBDmdldExlbmRTcnZBZGRyAAIMZ2V0QXNzZXREZWJ0CQDMCAIHCQDMCAIJAKwCAgkArAICCQCsAgIJAKwCAgUEcG9vbAIBXwUEdXNlcgIBXwkApAMBBQVwb3NJZAkAzAgCBQtib3Jyb3dBc3NldAUDbmlsBQNuaWwDCQABAgUBQAIDSW50BQFACQACAQkArAICCQADAQUBQAIYIGNvdWxkbid0IGJlIGNhc3QgdG8gSW50AAAEDSR0MDI2NjM0MjY3NTQJARJ3aXRoZHJhd0Ftb3VudENhbGMEBQRwb29sBQ91c2VyQ2FuV2l0aGRyYXcFBGRlYnQFC2JvcnJvd0Fzc2V0AwkAAAIFDSR0MDI2NjM0MjY3NTQFDSR0MDI2NjM0MjY3NTQECGFzc2V0SWRCCAUNJHQwMjY2MzQyNjc1NAJfNAQNdG9Vc2VyQW1vdW50QggFDSR0MDI2NjM0MjY3NTQCXzMECGFzc2V0SWRBCAUNJHQwMjY2MzQyNjc1NAJfMgQNdG9Vc2VyQW1vdW50QQgFDSR0MDI2NjM0MjY3NTQCXzEEC2Nsb3NlRGJ0SW52AwkAZgIFBGRlYnQAAAkA/AcECQEOZ2V0TGVuZFNydkFkZHIAAghyZXBheUZvcgkAzAgCCQCsAgIJAKwCAgUEdXNlcgIBXwkApAMBBQVwb3NJZAUDbmlsCQDMCAIJAQ9BdHRhY2hlZFBheW1lbnQCCQEOYXNzZXRJZEZyb21TdHIBBQtib3Jyb3dBc3NldAUEZGVidAUDbmlsAAADCQAAAgULY2xvc2VEYnRJbnYFC2Nsb3NlRGJ0SW52CQDMCAIJAQtEZWxldGVFbnRyeQEJAKwCAgkArAICCQCsAgIJAKwCAgkArAICBQRwb29sAgFfBQR1c2VyAgFfCQCkAwEFBXBvc0lkBQ1rVXNlclBvc2l0aW9uCQDMCAIJAQtEZWxldGVFbnRyeQEJAKwCAgkArAICCQCsAgIJAKwCAgkArAICBQRwb29sAgFfBQR1c2VyAgFfCQCkAwEFBXBvc0lkBRVrVXNlclBvc2l0aW9uSW50ZXJlc3QJAMwIAgkBDEludGVnZXJFbnRyeQIJAKwCAgUEcG9vbAUKa1Bvb2xUb3RhbAkAZQIFDnBvb2xUb3RhbFNoYXJlBQ91c2VyQ2FuV2l0aGRyYXcJAMwIAgkBDlNjcmlwdFRyYW5zZmVyAwUIdXNlckFkZHIFDXRvVXNlckFtb3VudEEJAQ5hc3NldElkRnJvbVN0cgEFCGFzc2V0SWRBCQDMCAIJAQ5TY3JpcHRUcmFuc2ZlcgMFCHVzZXJBZGRyBQ10b1VzZXJBbW91bnRCCQEOYXNzZXRJZEZyb21TdHIBBQhhc3NldElkQgUDbmlsCQACAQIkU3RyaWN0IHZhbHVlIGlzIG5vdCBlcXVhbCB0byBpdHNlbGYuCQACAQIkU3RyaWN0IHZhbHVlIGlzIG5vdCBlcXVhbCB0byBpdHNlbGYuAWkBEGNyZWF0ZU5ld1JlcXVlc3QBBnBhcmFtcwkBC3ZhbHVlT3JFbHNlAgkBCmlzU2VsZkNhbGwBBQFpBAxuZXdSZXF1ZXN0SWQJAGQCCQELdmFsdWVPckVsc2UCCQCaCAIFBHRoaXMFDGtSZXF1ZXN0SXRlcgAAAAEJAJQKAgkAzAgCCQELU3RyaW5nRW50cnkCCQCsAgIJAKQDAQUMbmV3UmVxdWVzdElkBQprUmVxdWVzdElkBQZwYXJhbXMJAMwIAgkBDEludGVnZXJFbnRyeQIFDGtSZXF1ZXN0SXRlcgUMbmV3UmVxdWVzdElkBQNuaWwFDG5ld1JlcXVlc3RJZAFpARJjYXBpdGFsaXplRXhLZWVwZXIMBHBvb2wEdHlwZQl0b2tlblRvSWQQYW1vdW50VG9FeGNoYW5nZQVjbGFpbQlhbW91bnRzSW4JYWRkcmVzc2VzD2Fzc2V0c1RvUmVjZWl2ZQtlc3RSZWNlaXZlZBFzbGlwcGFnZVRvbGVyYW5jZQttaW5SZWNlaXZlZAdvcHRpb25zBA0kdDAyODA1MTI4MjQ1AwUFY2xhaW0JAQtjbGFpbUZhcm1lZAIFBHR5cGUFBHBvb2wEDGNsYWltZWRBc3NldAMJAAACBQR0eXBlBQdTRl9QT09MBQZTV09QSUQFBFdYSUQJAJQKAgUQYW1vdW50VG9FeGNoYW5nZQUMY2xhaW1lZEFzc2V0BA1jbGFpbWVkQW1vdW50CAUNJHQwMjgwNTEyODI0NQJfMQQMY2xhaW1lZEFzc2V0CAUNJHQwMjgwNTEyODI0NQJfMgQPZXhjaGFuZ2VkQW1vdW50CQEOZXhjaGFuZ2VLZWVwZXIKBQl0b2tlblRvSWQFEGFtb3VudFRvRXhjaGFuZ2UFDGNsYWltZWRBc3NldAUJYW1vdW50c0luBQlhZGRyZXNzZXMFD2Fzc2V0c1RvUmVjZWl2ZQULZXN0UmVjZWl2ZWQFEXNsaXBwYWdlVG9sZXJhbmNlBQttaW5SZWNlaXZlZAUHb3B0aW9ucwQGY2hhbmdlCQBlAgUNY2xhaW1lZEFtb3VudAUQYW1vdW50VG9FeGNoYW5nZQQLY2hhbmdlRW50cnkDCQBmAgUGY2hhbmdlAAAJAMwIAgkBDEludGVnZXJFbnRyeQIJAKwCAgUEcG9vbAUOa1Bvb2xDYXBDaGFuZ2UJAGQCBQZjaGFuZ2UJAQt2YWx1ZU9yRWxzZQIJAJoIAgUEdGhpcwkArAICBQRwb29sBQ5rUG9vbENhcENoYW5nZQAABQNuaWwFA25pbAkAzggCCQEKY2FwaXRhbGl6ZQQFBHBvb2wFBHR5cGUFCXRva2VuVG9JZAUPZXhjaGFuZ2VkQW1vdW50BQtjaGFuZ2VFbnRyeQFpARJjYXBpdGFsaXplRXhQYXp6bGUIBHBvb2wEdHlwZQl0b2tlblRvSWQQYW1vdW50VG9FeGNoYW5nZQVjbGFpbQlyb3V0ZXNTdHIMbWluVG9SZWNlaXZlB29wdGlvbnMEDSR0MDI4OTAxMjkwOTUDBQVjbGFpbQkBC2NsYWltRmFybWVkAgUEdHlwZQUEcG9vbAQMY2xhaW1lZEFzc2V0AwkAAAIFBHR5cGUFB1NGX1BPT0wFBlNXT1BJRAUEV1hJRAkAlAoCBRBhbW91bnRUb0V4Y2hhbmdlBQxjbGFpbWVkQXNzZXQEDWNsYWltZWRBbW91bnQIBQ0kdDAyODkwMTI5MDk1Al8xBAxjbGFpbWVkQXNzZXQIBQ0kdDAyODkwMTI5MDk1Al8yBA9leGNoYW5nZWRBbW91bnQJAQ5leGNoYW5nZVBhenpsZQYFCXRva2VuVG9JZAUQYW1vdW50VG9FeGNoYW5nZQUMY2xhaW1lZEFzc2V0BQlyb3V0ZXNTdHIFDG1pblRvUmVjZWl2ZQUHb3B0aW9ucwQGY2hhbmdlCQBlAgUNY2xhaW1lZEFtb3VudAUQYW1vdW50VG9FeGNoYW5nZQQLY2hhbmdlRW50cnkDCQBmAgUGY2hhbmdlAAAJAMwIAgkBDEludGVnZXJFbnRyeQIJAKwCAgUEcG9vbAUOa1Bvb2xDYXBDaGFuZ2UJAGQCBQZjaGFuZ2UJAQt2YWx1ZU9yRWxzZQIJAJoIAgUEdGhpcwkArAICBQRwb29sBQ5rUG9vbENhcENoYW5nZQAABQNuaWwFA25pbAkAzggCCQEKY2FwaXRhbGl6ZQQFBHBvb2wFBHR5cGUFCXRva2VuVG9JZAUPZXhjaGFuZ2VkQW1vdW50BQtjaGFuZ2VFbnRyeQFpARJjYXBpdGFsaXplRXhTd29wRmkMBHBvb2wEdHlwZQl0b2tlblRvSWQQYW1vdW50VG9FeGNoYW5nZQVjbGFpbQpleGNoYW5nZXJzDmV4Y2hhbmdlcnNUeXBlBWFyZ3MxBWFyZ3MyEXJvdXRpbmdBc3NldHNLZXlzEm1pbkFtb3VudFRvUmVjZWl2ZQdvcHRpb25zBA0kdDAyOTgxODMwMDEyAwUFY2xhaW0JAQtjbGFpbUZhcm1lZAIFBHR5cGUFBHBvb2wEDGNsYWltZWRBc3NldAMJAAACBQR0eXBlBQdTRl9QT09MBQZTV09QSUQFBFdYSUQJAJQKAgUQYW1vdW50VG9FeGNoYW5nZQUMY2xhaW1lZEFzc2V0BA1jbGFpbWVkQW1vdW50CAUNJHQwMjk4MTgzMDAxMgJfMQQMY2xhaW1lZEFzc2V0CAUNJHQwMjk4MTgzMDAxMgJfMgQPZXhjaGFuZ2VkQW1vdW50CQEOZXhjaGFuZ2VTd29wRmkKBQl0b2tlblRvSWQFEGFtb3VudFRvRXhjaGFuZ2UFDGNsYWltZWRBc3NldAUKZXhjaGFuZ2VycwUOZXhjaGFuZ2Vyc1R5cGUFBWFyZ3MxBQVhcmdzMgURcm91dGluZ0Fzc2V0c0tleXMFEm1pbkFtb3VudFRvUmVjZWl2ZQUHb3B0aW9ucwQGY2hhbmdlCQBlAgUNY2xhaW1lZEFtb3VudAUQYW1vdW50VG9FeGNoYW5nZQQLY2hhbmdlRW50cnkDCQBmAgUGY2hhbmdlAAAJAMwIAgkBDEludGVnZXJFbnRyeQIJAKwCAgUEcG9vbAUOa1Bvb2xDYXBDaGFuZ2UJAGQCBQZjaGFuZ2UJAQt2YWx1ZU9yRWxzZQIJAJoIAgUEdGhpcwkArAICBQRwb29sBQ5rUG9vbENhcENoYW5nZQAABQNuaWwFA25pbAkAzggCCQEKY2FwaXRhbGl6ZQQFBHBvb2wFBHR5cGUFCXRva2VuVG9JZAUPZXhjaGFuZ2VkQW1vdW50BQtjaGFuZ2VFbnRyeQFpAQtpbml0TmV3UG9vbAUEdHlwZQhwb29sQWRkcgtpbkZlZU5vTG9hbglpbkZlZUxvYW4GY2FwRmVlAwMJAQIhPQIFBHR5cGUFB1NGX1BPT0wJAQIhPQIFBHR5cGUFB1dYX1BPT0wHCQACAQIKV3JvbmcgdHlwZQkAzAgCCQEMSW50ZWdlckVudHJ5AgkArAICBQhwb29sQWRkcgUVa0F4bHlJbkZlZVdpdGhvdXRMb2FuBQtpbkZlZU5vTG9hbgkAzAgCCQEMSW50ZWdlckVudHJ5AgkArAICBQhwb29sQWRkcgUSa0F4bHlJbkZlZVdpdGhMb2FuBQlpbkZlZUxvYW4JAMwIAgkBDEludGVnZXJFbnRyeQIJAKwCAgUIcG9vbEFkZHIFC2tBeGx5Q2FwRmVlBQZjYXBGZWUJAMwIAgkBDEludGVnZXJFbnRyeQIJAKwCAgUIcG9vbEFkZHIFDWtQb29sSW50ZXJlc3QAAAkAzAgCCQELU3RyaW5nRW50cnkCCQCsAgIFBWtQb29sBQhwb29sQWRkcgUEdHlwZQUDbmlsAQJ0eAEGdmVyaWZ5AAkA9AMDCAUCdHgJYm9keUJ5dGVzCQCRAwIIBQJ0eAZwcm9vZnMAAAgFAnR4D3NlbmRlclB1YmxpY0tleRqPPao=", "height": 2541253, "applicationStatus": "succeeded", "spentComplexity": 0 } View: original | compacted Prev: A3vqRNg758z1HUkb5iZ1PU9ZWmSeYNW46nMCQkeWoHHr Next: 4xywBKP5PNVxYfCzvzWiAYkzdUtQmzuKRVtWZoWcHg3V Diff:
OldNewDifferences
613613 }
614614 if ((cL == cL))
615615 then {
616- let cM = [((toString(P.caller) + "_") + toString(1)), ay, cC, cJ, toString(this), "replenishFromLand", toString(valueOrErrorMessage(cL, "Can't create new request"))]
616+ let cM = [((toString(P.caller) + "_") + toString(1)), ay, cC, cJ, toString(this), "replenishFromLandReadOnly", toString(valueOrErrorMessage(cL, "Can't create new request"))]
617617 let bg = reentrantInvoke(am(), "flashPosition", cM, nil)
618618 if ((bg == bg))
619619 then if ((cC == at))
648648
649649
650650 @Callable(P)
651+func replenishFromLandReadOnly (cS) = nil
652+
653+
654+
655+@Callable(P)
651656 func replenish (ad,cB,cC) = if (if ((100 > cB))
652657 then true
653658 else (cB > 300))
654659 then throw("Leverage can't be <100 and >300")
655660 else {
656661 let ab = valueOrErrorMessage(getString(this, (A + ad)), "Pool is not inited")
657- let cS = aa(Address(fromBase58String(ad)), ab)
658- let bI = cS._1
659- let bJ = cS._2
660- let aw = cS._3
661- let ax = cS._4
662- let ay = cS._5
663- let cT = if ((size(P.payments) == 2))
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))
664669 then if ((an(P.payments[0].assetId) != bI))
665670 then throw("Wrong payment asset A")
666671 else if ((an(P.payments[1].assetId) != bJ))
673678 then $Tuple4(0, bI, P.payments[0].amount, bJ)
674679 else throw("Wrong payment")
675680 else throw("One or two payments expected")
676- let as = cT._1
677- let at = cT._2
678- let au = cT._3
679- let av = cT._4
680- let cU = ae(ad, toString(P.caller))
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))
681686 if ((cB > 100))
682687 then {
683688 let cG = ( let Z = invoke(K, "getTWAP60", [at, false], nil)
690695 else throw(($getType(Z) + " couldn't be cast to (Int, Int)")))._1
691696 let cI = (fraction(cG, as, pow(10, 0, ap(at), 0, 0, DOWN)) + fraction(cH, au, pow(10, 0, ap(av), 0, 0, DOWN)))
692697 let cJ = fraction(cI, (cB - 100), 100)
693- let cK = makeString([ab, toString(P.caller), ad, toString(as), at, toString(au), av, toString(aw), toString(ax), ay, cC, toString(cJ), toString(cU)], ",")
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)], ",")
694699 let cL = {
695700 let Z = invoke(this, "createNewRequest", [cK], nil)
696701 if ($isInstanceOf(Z, "Int"))
699704 }
700705 if ((cL == cL))
701706 then {
702- let cM = [((toString(P.caller) + "_") + toString(cU)), ay, cC, cJ, toString(this), "replenishFromLand", toString(valueOrErrorMessage(cL, "Can't create new request"))]
707+ let cM = [((toString(P.caller) + "_") + toString(cV)), ay, cC, cJ, toString(this), "replenishFromLand", toString(valueOrErrorMessage(cL, "Can't create new request"))]
703708 let bg = reentrantInvoke(am(), "flashPosition", cM, nil)
704709 if ((bg == bg))
705710 then nil
708713 else throw("Strict value is not equal to itself.")
709714 }
710715 else {
711- let cV = if ((ab == a))
716+ let cW = if ((ab == a))
712717 then ar(ad, e, as, at, au, av, aw, ax, ay)
713718 else aR(ad, e, as, at, au, av, ay)
714- let cQ = cV._1
715- let bM = cV._2
716- aZ(ad, toString(P.caller), cQ, bM, cU, ay, ab)
719+ let cQ = cW._1
720+ let bM = cW._2
721+ aZ(ad, toString(P.caller), cQ, bM, cV, ay, ab)
717722 }
718723 }
719724
720725
721726
722727 @Callable(P)
723-func replenishFromLand (cW) = {
724- let cK = split(valueOrErrorMessage(getString(this, (cW + y)), ("No request with id " + cW)), ",")
728+func replenishFromLand (cS) = {
729+ let cK = split(valueOrErrorMessage(getString(this, (cS + y)), ("No request with id " + cS)), ",")
725730 if ((size(P.payments) != 1))
726731 then throw("Wrong payment size")
727732 else if (if ((an(P.payments[0].assetId) != cK[10]))
748753 let bM = cX._2
749754 let cY = [IntegerEntry((((((cK[2] + "_") + cK[1]) + "_") + cK[12]) + p), P.payments[0].amount), StringEntry((((((cK[2] + "_") + cK[1]) + "_") + cK[12]) + q), cK[10])]
750755 let cZ = aZ(ad, af, cQ, bM, bb, ay, cK[0])
751- $Tuple2(((cZ ++ cY) :+ DeleteEntry((cW + y))), cQ)
756+ $Tuple2(((cZ ++ cY) :+ DeleteEntry((cS + y))), cQ)
752757 }
753758 }
754759
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
354354 func aZ (ad,af,ba,aO,bb,ay,ab) = {
355355 let bc = ac(ad)
356356 let bd = getIntegerValue(this, (ad + u))
357357 [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))]
358358 }
359359
360360
361361 func be (ab,ad) = if ((ab == a))
362362 then {
363363 let bf = Q(M)
364364 if ((bf == bf))
365365 then {
366366 let bg = invoke(ai(), "claim", [ad], nil)
367367 if ((bg == bg))
368368 then {
369369 let bh = Q(M)
370370 $Tuple2((bh - bf), M)
371371 }
372372 else throw("Strict value is not equal to itself.")
373373 }
374374 else throw("Strict value is not equal to itself.")
375375 }
376376 else if ((ab == b))
377377 then {
378378 let bf = Q(N)
379379 if ((bf == bf))
380380 then {
381381 let bg = invoke(aj(Address(fromBase58String(ad))), "claimWX", [ad], nil)
382382 if ((bg == bg))
383383 then {
384384 let bh = Q(N)
385385 $Tuple2((bh - bf), N)
386386 }
387387 else throw("Strict value is not equal to itself.")
388388 }
389389 else throw("Strict value is not equal to itself.")
390390 }
391391 else throw("Wrong pool type")
392392
393393
394394 func bi (bj,bk,bl,bm,bn,bo,bp,bq,br,bs) = {
395395 let bt = Q(ao(bj))
396396 if ((bt == bt))
397397 then {
398398 let bg = invoke(J, "swap", [bm, bn, bo, bp, bq, br, bs], [AttachedPayment(bl, bk)])
399399 if ((bg == bg))
400400 then (Q(ao(bj)) - bt)
401401 else throw("Strict value is not equal to itself.")
402402 }
403403 else throw("Strict value is not equal to itself.")
404404 }
405405
406406
407407 func bu (bj,bk,bl,bv,bw,bs) = {
408408 let bt = Q(ao(bj))
409409 if ((bt == bt))
410410 then {
411411 let bg = invoke(J, "puzzleSwap", [bv, bw, bs], [AttachedPayment(bl, bk)])
412412 if ((bg == bg))
413413 then (Q(ao(bj)) - bt)
414414 else throw("Strict value is not equal to itself.")
415415 }
416416 else throw("Strict value is not equal to itself.")
417417 }
418418
419419
420420 func bx (bj,bk,bl,by,bz,bA,bB,bC,bD,bs) = {
421421 let bt = Q(ao(bj))
422422 if ((bt == bt))
423423 then {
424424 let bg = invoke(J, "swopfiSwap", [by, bz, bA, bB, bC, bD, bs], [AttachedPayment(bl, bk)])
425425 if ((bg == bg))
426426 then (Q(ao(bj)) - bt)
427427 else throw("Strict value is not equal to itself.")
428428 }
429429 else throw("Strict value is not equal to itself.")
430430 }
431431
432432
433433 func bE (ad,ab,bF,bG) = {
434434 let W = Address(fromBase58String(ad))
435435 let bH = aa(W, ab)
436436 let bI = bH._1
437437 let bJ = bH._2
438438 let aw = bH._3
439439 let ax = bH._4
440440 let ay = bH._5
441441 let bK = if ((bF == bI))
442442 then $Tuple2(bG, 0)
443443 else $Tuple2(0, bG)
444444 let as = bK._1
445445 let au = bK._2
446446 let bL = if ((ab == a))
447447 then ar(ad, c, as, bI, au, bJ, aw, ax, ay)
448448 else aR(ad, c, as, bI, au, bJ, ay)
449449 let ba = bL._1
450450 let bM = bL._2
451451 let bd = valueOrElse(getInteger(this, (ad + u)), 0)
452452 let bN = ac(ad)
453453 let bO = (bd + fraction(ba, g, bN))
454454 [IntegerEntry((ad + u), bO), ScriptTransfer(I, bM, fromBase58String(ay))]
455455 }
456456
457457
458458 func bP (ad,bQ,bR,aw,ax,bS,bT) = {
459459 let W = Address(fromBase58String(ad))
460460 let bU = 1000000
461461 let bV = getIntegerValue(W, n)
462462 let bW = fraction(bS, bU, (bU - bV))
463463 let bX = if ((bT == bQ))
464464 then {
465465 let bY = fraction(aw, bW, (ax - bW))
466466 $Tuple2(bY, bR)
467467 }
468468 else {
469469 let bY = fraction(ax, bW, (aw - bW))
470470 $Tuple2(bY, bQ)
471471 }
472472 let bY = bX._1
473473 let bZ = bX._2
474474 invoke(W, "callFunction", ["exchange", ["1"]], [AttachedPayment(ao(bZ), bY)])
475475 }
476476
477477
478478 func ca (ad,bQ,bR,aw,ax,bS,bT) = {
479479 let W = Address(fromBase58String(ad))
480480 let cb = getIntegerValue(L, "%s__protocolFee")
481481 let cc = getIntegerValue(L, "%s__poolFee")
482482 let cd = toBigInt(100000000)
483483 let ce = if ((bT == bQ))
484484 then {
485485 let bY = fraction(aw, bS, (ax - bS))
486486 $Tuple2(bY, bR)
487487 }
488488 else {
489489 let bY = fraction(ax, bS, (aw - bS))
490490 $Tuple2(bY, bQ)
491491 }
492492 let bY = ce._1
493493 let bZ = ce._2
494494 let cf = toInt(fraction(toBigInt(bY), cd, (cd - toBigInt((cb + cc)))))
495495 invoke(L, "swap", [1, bT, toString(this)], [AttachedPayment(ao(bZ), cf)])
496496 }
497497
498498
499499 func cg (ab,ad,bQ,bR,aw,ax,bS,bT) = if ((ab == a))
500500 then bP(ad, bQ, bR, aw, ax, bS, bT)
501501 else ca(ad, bQ, bR, aw, ax, bS, bT)
502502
503503
504504 func ch (ad,ci,cj,ck) = {
505505 let W = Address(fromBase58String(ad))
506506 let cl = valueOrErrorMessage(getString(this, (A + ad)), "Unknown pool")
507507 let cm = aa(W, cl)
508508 let bQ = cm._1
509509 let bR = cm._2
510510 let aw = cm._3
511511 let ax = cm._4
512512 let cn = Q(ao(bQ))
513513 if ((cn == cn))
514514 then {
515515 let co = Q(ao(bR))
516516 if ((co == co))
517517 then {
518518 let bg = if ((cl == a))
519519 then invoke(W, "callFunction", ["withdraw", [toString(ci)]], nil)
520520 else if ((cl == b))
521521 then invoke(W, "unstakeAndGet", [ci], nil)
522522 else throw("Wrong position type")
523523 if ((bg == bg))
524524 then {
525525 let cp = Q(ao(bQ))
526526 let cq = Q(ao(bR))
527527 let cr = $Tuple2((cp - cn), (cq - co))
528528 let cs = cr._1
529529 let ct = cr._2
530530 let cu = if ((cj > 0))
531531 then {
532532 let cv = if (if ((ck == bQ))
533533 then (cj > cs)
534534 else false)
535535 then (cj - cs)
536536 else if (if ((ck == bR))
537537 then (cj > ct)
538538 else false)
539539 then (cj - ct)
540540 else 0
541541 let cw = if ((cv > 0))
542542 then cg(cl, ad, bQ, bR, aw, ax, cv, ck)
543543 else 0
544544 if ((cw == cw))
545545 then {
546546 let cx = Q(ao(bQ))
547547 let cy = Q(ao(bR))
548548 $Tuple2((cx - cn), (cy - co))
549549 }
550550 else throw("Strict value is not equal to itself.")
551551 }
552552 else $Tuple2(cs, ct)
553553 let cz = cu._1
554554 let cA = cu._2
555555 $Tuple4(cz, bQ, cA, bR)
556556 }
557557 else throw("Strict value is not equal to itself.")
558558 }
559559 else throw("Strict value is not equal to itself.")
560560 }
561561 else throw("Strict value is not equal to itself.")
562562 }
563563
564564
565565 @Callable(P)
566566 func replenishREADONLY (ad,cB,cC) = if (if ((100 > cB))
567567 then true
568568 else (cB > 300))
569569 then throw("Leverage can't be <100 and >300")
570570 else {
571571 let ab = valueOrErrorMessage(getString(this, (A + ad)), "Pool is not inited")
572572 let cD = aa(Address(fromBase58String(ad)), ab)
573573 let bI = cD._1
574574 let bJ = cD._2
575575 let aw = cD._3
576576 let ax = cD._4
577577 let ay = cD._5
578578 let cE = if ((size(P.payments) == 2))
579579 then if ((an(P.payments[0].assetId) != bI))
580580 then throw("Wrong payment asset A")
581581 else if ((an(P.payments[1].assetId) != bJ))
582582 then throw("Wrong payment asset B")
583583 else $Tuple4(P.payments[0].amount, bI, P.payments[1].amount, bJ)
584584 else if ((size(P.payments) == 1))
585585 then if ((an(P.payments[0].assetId) == bI))
586586 then $Tuple4(P.payments[0].amount, bI, 0, bJ)
587587 else if ((an(P.payments[0].assetId) == bJ))
588588 then $Tuple4(0, bI, P.payments[0].amount, bJ)
589589 else throw("Wrong payment")
590590 else throw("One or two payments expected")
591591 let as = cE._1
592592 let at = cE._2
593593 let au = cE._3
594594 let av = cE._4
595595 let cF = if ((cB > 100))
596596 then {
597597 let cG = ( let Z = invoke(K, "getTWAP60", [at, false], nil)
598598 if ($isInstanceOf(Z, "(Int, Int)"))
599599 then Z
600600 else throw(($getType(Z) + " couldn't be cast to (Int, Int)")))._1
601601 let cH = ( let Z = invoke(K, "getTWAP60", [av, false], nil)
602602 if ($isInstanceOf(Z, "(Int, Int)"))
603603 then Z
604604 else throw(($getType(Z) + " couldn't be cast to (Int, Int)")))._1
605605 let cI = (fraction(cG, as, pow(10, 0, ap(at), 0, 0, DOWN)) + fraction(cH, au, pow(10, 0, ap(av), 0, 0, DOWN)))
606606 let cJ = fraction(cI, (cB - 100), 100)
607607 let cK = makeString([ab, toString(P.caller), ad, toString(as), at, toString(au), av, toString(aw), toString(ax), ay, cC, toString(cJ), toString(1)], ",")
608608 let cL = {
609609 let Z = invoke(this, "createNewRequest", [cK], nil)
610610 if ($isInstanceOf(Z, "Int"))
611611 then Z
612612 else throw(($getType(Z) + " couldn't be cast to Int"))
613613 }
614614 if ((cL == cL))
615615 then {
616- let cM = [((toString(P.caller) + "_") + toString(1)), ay, cC, cJ, toString(this), "replenishFromLand", toString(valueOrErrorMessage(cL, "Can't create new request"))]
616+ let cM = [((toString(P.caller) + "_") + toString(1)), ay, cC, cJ, toString(this), "replenishFromLandReadOnly", toString(valueOrErrorMessage(cL, "Can't create new request"))]
617617 let bg = reentrantInvoke(am(), "flashPosition", cM, nil)
618618 if ((bg == bg))
619619 then if ((cC == at))
620620 then $Tuple4((as + cJ), au, d, cJ)
621621 else $Tuple4(as, (au + cJ), d, cJ)
622622 else throw("Strict value is not equal to itself.")
623623 }
624624 else throw("Strict value is not equal to itself.")
625625 }
626626 else $Tuple4(as, au, e, 0)
627627 let cN = cF._1
628628 let cO = cF._2
629629 let ah = cF._3
630630 let cJ = cF._4
631631 let cP = if ((ab == a))
632632 then ar(ad, ah, cN, at, cO, av, aw, ax, ay)
633633 else aR(ad, ah, as, at, au, av, ay)
634634 let cQ = cP._1
635635 let bM = cP._2
636636 let cR = ch(ad, cQ, cJ, cC)
637637 if ((cR == cR))
638638 then {
639639 let bR = cR._4
640640 let cA = cR._3
641641 let bQ = cR._2
642642 let cz = cR._1
643643 $Tuple2(nil, [cQ, cz, cA])
644644 }
645645 else throw("Strict value is not equal to itself.")
646646 }
647647
648648
649649
650650 @Callable(P)
651+func replenishFromLandReadOnly (cS) = nil
652+
653+
654+
655+@Callable(P)
651656 func replenish (ad,cB,cC) = if (if ((100 > cB))
652657 then true
653658 else (cB > 300))
654659 then throw("Leverage can't be <100 and >300")
655660 else {
656661 let ab = valueOrErrorMessage(getString(this, (A + ad)), "Pool is not inited")
657- let cS = aa(Address(fromBase58String(ad)), ab)
658- let bI = cS._1
659- let bJ = cS._2
660- let aw = cS._3
661- let ax = cS._4
662- let ay = cS._5
663- let cT = if ((size(P.payments) == 2))
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))
664669 then if ((an(P.payments[0].assetId) != bI))
665670 then throw("Wrong payment asset A")
666671 else if ((an(P.payments[1].assetId) != bJ))
667672 then throw("Wrong payment asset B")
668673 else $Tuple4(P.payments[0].amount, bI, P.payments[1].amount, bJ)
669674 else if ((size(P.payments) == 1))
670675 then if ((an(P.payments[0].assetId) == bI))
671676 then $Tuple4(P.payments[0].amount, bI, 0, bJ)
672677 else if ((an(P.payments[0].assetId) == bJ))
673678 then $Tuple4(0, bI, P.payments[0].amount, bJ)
674679 else throw("Wrong payment")
675680 else throw("One or two payments expected")
676- let as = cT._1
677- let at = cT._2
678- let au = cT._3
679- let av = cT._4
680- let cU = ae(ad, toString(P.caller))
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))
681686 if ((cB > 100))
682687 then {
683688 let cG = ( let Z = invoke(K, "getTWAP60", [at, false], nil)
684689 if ($isInstanceOf(Z, "(Int, Int)"))
685690 then Z
686691 else throw(($getType(Z) + " couldn't be cast to (Int, Int)")))._1
687692 let cH = ( let Z = invoke(K, "getTWAP60", [av, false], nil)
688693 if ($isInstanceOf(Z, "(Int, Int)"))
689694 then Z
690695 else throw(($getType(Z) + " couldn't be cast to (Int, Int)")))._1
691696 let cI = (fraction(cG, as, pow(10, 0, ap(at), 0, 0, DOWN)) + fraction(cH, au, pow(10, 0, ap(av), 0, 0, DOWN)))
692697 let cJ = fraction(cI, (cB - 100), 100)
693- let cK = makeString([ab, toString(P.caller), ad, toString(as), at, toString(au), av, toString(aw), toString(ax), ay, cC, toString(cJ), toString(cU)], ",")
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)], ",")
694699 let cL = {
695700 let Z = invoke(this, "createNewRequest", [cK], nil)
696701 if ($isInstanceOf(Z, "Int"))
697702 then Z
698703 else throw(($getType(Z) + " couldn't be cast to Int"))
699704 }
700705 if ((cL == cL))
701706 then {
702- let cM = [((toString(P.caller) + "_") + toString(cU)), ay, cC, cJ, toString(this), "replenishFromLand", toString(valueOrErrorMessage(cL, "Can't create new request"))]
707+ let cM = [((toString(P.caller) + "_") + toString(cV)), ay, cC, cJ, toString(this), "replenishFromLand", toString(valueOrErrorMessage(cL, "Can't create new request"))]
703708 let bg = reentrantInvoke(am(), "flashPosition", cM, nil)
704709 if ((bg == bg))
705710 then nil
706711 else throw("Strict value is not equal to itself.")
707712 }
708713 else throw("Strict value is not equal to itself.")
709714 }
710715 else {
711- let cV = if ((ab == a))
716+ let cW = if ((ab == a))
712717 then ar(ad, e, as, at, au, av, aw, ax, ay)
713718 else aR(ad, e, as, at, au, av, ay)
714- let cQ = cV._1
715- let bM = cV._2
716- aZ(ad, toString(P.caller), cQ, bM, cU, ay, ab)
719+ let cQ = cW._1
720+ let bM = cW._2
721+ aZ(ad, toString(P.caller), cQ, bM, cV, ay, ab)
717722 }
718723 }
719724
720725
721726
722727 @Callable(P)
723-func replenishFromLand (cW) = {
724- let cK = split(valueOrErrorMessage(getString(this, (cW + y)), ("No request with id " + cW)), ",")
728+func replenishFromLand (cS) = {
729+ let cK = split(valueOrErrorMessage(getString(this, (cS + y)), ("No request with id " + cS)), ",")
725730 if ((size(P.payments) != 1))
726731 then throw("Wrong payment size")
727732 else if (if ((an(P.payments[0].assetId) != cK[10]))
728733 then true
729734 else (P.payments[0].amount != parseIntValue(cK[11])))
730735 then throw("Wrong payment")
731736 else {
732737 let as = if ((cK[4] == an(P.payments[0].assetId)))
733738 then (parseIntValue(cK[3]) + P.payments[0].amount)
734739 else parseIntValue(cK[3])
735740 let au = if ((cK[6] == an(P.payments[0].assetId)))
736741 then (parseIntValue(cK[5]) + P.payments[0].amount)
737742 else parseIntValue(cK[3])
738743 let ad = cK[2]
739744 let af = cK[1]
740745 let ay = cK[9]
741746 let bb = parseIntValue(cK[12])
742747 let cX = if ((cK[0] == a))
743748 then ar(ad, d, as, cK[4], au, cK[6], parseIntValue(cK[7]), parseIntValue(cK[8]), ay)
744749 else if ((cK[0] == b))
745750 then aR(ad, d, as, cK[4], au, cK[6], ay)
746751 else throw("Wrong request type")
747752 let cQ = cX._1
748753 let bM = cX._2
749754 let cY = [IntegerEntry((((((cK[2] + "_") + cK[1]) + "_") + cK[12]) + p), P.payments[0].amount), StringEntry((((((cK[2] + "_") + cK[1]) + "_") + cK[12]) + q), cK[10])]
750755 let cZ = aZ(ad, af, cQ, bM, bb, ay, cK[0])
751- $Tuple2(((cZ ++ cY) :+ DeleteEntry((cW + y))), cQ)
756+ $Tuple2(((cZ ++ cY) :+ DeleteEntry((cS + y))), cQ)
752757 }
753758 }
754759
755760
756761
757762 @Callable(P)
758763 func withdraw (ad,da) = {
759764 let af = toString(P.caller)
760765 let db = valueOrErrorMessage(getInteger(this, (((((ad + "_") + af) + "_") + toString(da)) + o)), "Unknown position")
761766 let dc = getIntegerValue(this, (((((ad + "_") + af) + "_") + toString(da)) + s))
762767 let dd = getIntegerValue(this, (ad + u))
763768 let de = ac(ad)
764769 let ci = (db + fraction(db, (dd - dc), g))
765770 let df = Address(fromBase58String(af))
766771 let cJ = getIntegerValue(this, (((((ad + "_") + af) + "_") + toString(da)) + p))
767772 let ck = getStringValue(this, (((((ad + "_") + af) + "_") + toString(da)) + q))
768773 let cj = if ((cJ > 0))
769774 then {
770775 let Z = invoke(am(), "getAssetDebt", [false, ((((ad + "_") + af) + "_") + toString(da)), ck], nil)
771776 if ($isInstanceOf(Z, "Int"))
772777 then Z
773778 else throw(($getType(Z) + " couldn't be cast to Int"))
774779 }
775780 else 0
776781 let dg = ch(ad, ci, cj, ck)
777782 if ((dg == dg))
778783 then {
779784 let bR = dg._4
780785 let cA = dg._3
781786 let bQ = dg._2
782787 let cz = dg._1
783788 let dh = if ((cj > 0))
784789 then invoke(am(), "repayFor", [((af + "_") + toString(da))], [AttachedPayment(ao(ck), cj)])
785790 else 0
786791 if ((dh == dh))
787792 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))]
788793 else throw("Strict value is not equal to itself.")
789794 }
790795 else throw("Strict value is not equal to itself.")
791796 }
792797
793798
794799
795800 @Callable(P)
796801 func createNewRequest (di) = valueOrElse(O(P), {
797802 let cL = (valueOrElse(getInteger(this, z), 0) + 1)
798803 $Tuple2([StringEntry((toString(cL) + y), di), IntegerEntry(z, cL)], cL)
799804 })
800805
801806
802807
803808 @Callable(P)
804809 func capitalizeExKeeper (ad,ab,dj,dk,dl,bm,bn,bo,bp,bq,br,bs) = {
805810 let dm = if (dl)
806811 then be(ab, ad)
807812 else {
808813 let dn = if ((ab == a))
809814 then M
810815 else N
811816 $Tuple2(dk, dn)
812817 }
813818 let do = dm._1
814819 let dn = dm._2
815820 let dp = bi(dj, dk, dn, bm, bn, bo, bp, bq, br, bs)
816821 let aG = (do - dk)
817822 let dq = if ((aG > 0))
818823 then [IntegerEntry((ad + B), (aG + valueOrElse(getInteger(this, (ad + B)), 0)))]
819824 else nil
820825 (bE(ad, ab, dj, dp) ++ dq)
821826 }
822827
823828
824829
825830 @Callable(P)
826831 func capitalizeExPazzle (ad,ab,dj,dk,dl,bv,bw,bs) = {
827832 let dr = if (dl)
828833 then be(ab, ad)
829834 else {
830835 let dn = if ((ab == a))
831836 then M
832837 else N
833838 $Tuple2(dk, dn)
834839 }
835840 let do = dr._1
836841 let dn = dr._2
837842 let dp = bu(dj, dk, dn, bv, bw, bs)
838843 let aG = (do - dk)
839844 let dq = if ((aG > 0))
840845 then [IntegerEntry((ad + B), (aG + valueOrElse(getInteger(this, (ad + B)), 0)))]
841846 else nil
842847 (bE(ad, ab, dj, dp) ++ dq)
843848 }
844849
845850
846851
847852 @Callable(P)
848853 func capitalizeExSwopFi (ad,ab,dj,dk,dl,by,bz,bA,bB,bC,bD,bs) = {
849854 let ds = if (dl)
850855 then be(ab, ad)
851856 else {
852857 let dn = if ((ab == a))
853858 then M
854859 else N
855860 $Tuple2(dk, dn)
856861 }
857862 let do = ds._1
858863 let dn = ds._2
859864 let dp = bx(dj, dk, dn, by, bz, bA, bB, bC, bD, bs)
860865 let aG = (do - dk)
861866 let dq = if ((aG > 0))
862867 then [IntegerEntry((ad + B), (aG + valueOrElse(getInteger(this, (ad + B)), 0)))]
863868 else nil
864869 (bE(ad, ab, dj, dp) ++ dq)
865870 }
866871
867872
868873
869874 @Callable(P)
870875 func initNewPool (ab,W,dt,du,dv) = if (if ((ab != a))
871876 then (ab != b)
872877 else false)
873878 then throw("Wrong type")
874879 else [IntegerEntry((W + v), dt), IntegerEntry((W + w), du), IntegerEntry((W + x), dv), IntegerEntry((W + u), 0), StringEntry((A + W), ab)]
875880
876881
877882 @Verifier(dw)
878883 func dx () = sigVerify(dw.bodyBytes, dw.proofs[0], dw.senderPublicKey)
879884

github/deemru/w8io/169f3d6 
106.37 ms