tx · 5icAixP2HAxx5V1Tf9LnFxQXzcPkWYG2bP9q6nB6GPG2

3MvRWw2FPEimFCTGtK7qY9uAJbM7XJ4ZfJS:  -0.28000000 Waves

2023.04.18 12:10 [2539794] smart account 3MvRWw2FPEimFCTGtK7qY9uAJbM7XJ4ZfJS > SELF 0.00000000 Waves

{ "type": 13, "id": "5icAixP2HAxx5V1Tf9LnFxQXzcPkWYG2bP9q6nB6GPG2", "fee": 28000000, "feeAssetId": null, "timestamp": 1681809038184, "version": 2, "chainId": 84, "sender": "3MvRWw2FPEimFCTGtK7qY9uAJbM7XJ4ZfJS", "senderPublicKey": "HP8sssVq1866F7CaPQJwgFrt6fsqhQjKwM84cL1wjD2a", "proofs": [ "5tPF22qaQyLPJ1CETkHiHMay5VFDRF5yhRN2BVYyyoMvGZktvu81dmTudAsGXsGoksAjjyLEkfrLR4WeBvC7GyZL" ], "script": "base64:BgJVCAISBQoDCAEIEgUKAwgBCBIDCgEIEgQKAggBEgMKAQgSDgoMCAgIAQQRGBgRAQEYEgoKCAgICAEECAEYEg4KDAgICAEEGBgYGBgBGBIHCgUICAEBAUIAB1NGX1BPT0wCAlNGAAdXWF9QT09MAgJXWAAHQ0FQX0ZFRQIDY2FwAAhMT0FOX0ZFRQIEbG9hbgALTk9fTE9BTl9GRUUCBm5vTG9hbgAGU0NBTEU4AIDC1y8AB1NDQUxFMTAAgMivoCUACkZFRV9TQ0FMRTYAwIQ9ABRrU0ZQb29sQUFzc2V0QmFsYW5jZQIPQV9hc3NldF9iYWxhbmNlABRrU0ZQb29sQkFzc2V0QmFsYW5jZQIPQl9hc3NldF9iYWxhbmNlAA9rU0ZQb29sQUFzc2V0SWQCCkFfYXNzZXRfaWQAD2tTRlBvb2xCQXNzZXRJZAIKQl9hc3NldF9pZAAOa1NGUG9vbFNoYXJlSWQCDnNoYXJlX2Fzc2V0X2lkAAprU0ZQb29sRmVlAgpjb21taXNzaW9uAA1rVXNlclBvc2l0aW9uAg5fdXNlcl9wb3NpdGlvbgARa1VzZXJCb3Jyb3dBbW91bnQCHF91c2VyX3Bvc2l0aW9uX2JvcnJvd19hbW91bnQAEmtVc2VyQm9ycm93QXNzZXRJZAIeX3VzZXJfcG9zaXRpb25fYm9ycm93X2Fzc2V0X2lkABBrVXNlclBvc2l0aW9uTnVtAhVfdXNlcl9wb3NpdGlvbl9udW1iZXIAFWtVc2VyUG9zaXRpb25JbnRlcmVzdAIXX3VzZXJfcG9zaXRpb25faW50ZXJlc3QACmtQb29sVG90YWwCC19wb29sX3RvdGFsAA1rUG9vbEludGVyZXN0Ag5fcG9vbF9pbnRlcmVzdAAVa0F4bHlJbkZlZVdpdGhvdXRMb2FuAhZfYXhseV9mZWVfd2l0aG91dF9sb2FuABJrQXhseUluRmVlV2l0aExvYW4CE19heGx5X2ZlZV93aXRoX2xvYW4AC2tBeGx5Q2FwRmVlAg1fYXhseV9mZWVfY2FwAAprUmVxdWVzdElkAgtfcmVxdWVzdF9pZAAMa1JlcXVlc3RJdGVyAg1yZXF1ZXN0c19pdGVyAAVrUG9vbAIFcG9vbF8ADmtQb29sQ2FwQ2hhbmdlAhBfcG9vbF9jYXBfY2hhbmdlAAlrTW9uZXlCb3gCDmF4bHlfbW9uZXlfYm94AA5rU0ZGYXJtaW5nQWRkcgITc3dvcGZpX2Zhcm1pbmdfYWRkcgAMa0xlbmRTZXJ2aWNlAhFsZW5kX3NlcnZpY2VfYWRkcgAMa1ByaWNlT3JhY2xlAgxwcmljZV9vcmFjbGUAC2tFeENvbnRyYWN0AhFleGNoYW5nZV9jb250cmFjdAAPa1d4U3dhcENvbnRyYWN0AhB3eF9zd2FwX2NvbnRyYWN0AAhtb25leUJveAkBB0FkZHJlc3MBCQDZBAEJARN2YWx1ZU9yRXJyb3JNZXNzYWdlAgkAnQgCBQR0aGlzBQlrTW9uZXlCb3gCGE5vIGF4bHkgbW9uZXlCb3ggYWRkcmVzcwAKZXhDb250cmFjdAkBB0FkZHJlc3MBCQDZBAEJARN2YWx1ZU9yRXJyb3JNZXNzYWdlAgkAnQgCBQR0aGlzBQtrRXhDb250cmFjdAIcTm8gZXhjaGFuZ2UgY29udHJhY3QgYWRkcmVzcwAPcHJpY2VPcmFjbGVBZGRyCQEHQWRkcmVzcwEJANkEAQkBE3ZhbHVlT3JFcnJvck1lc3NhZ2UCCQCdCAIFBHRoaXMFDGtQcmljZU9yYWNsZQIXTm8gcHJpY2Ugb3JhY2xlIGFkZHJlc3MADnd4U3dhcENvbnRyYWN0CQEHQWRkcmVzcwEJANkEAQkBE3ZhbHVlT3JFcnJvck1lc3NhZ2UCCQCdCAIFBHRoaXMFD2tXeFN3YXBDb250cmFjdAISTm8gd3ggc3dhcCBhZGRyZXNzAAZTV09QSUQBIDQBE1aOYEbiflupuAFHguexACYSm3bkTkuioHycbe6BAARXWElEASDGUh6BTupu4zzAl7AOXyzyauntnbKG0ZpCeKhgfT4bsQEKaXNTZWxmQ2FsbAEBaQMJAAACCAUBaQZjYWxsZXIFBHRoaXMFBHVuaXQJAAIBAitPbmx5IGNvbnRyYWN0IGl0c2VsZiBjYW4gY2FsbCB0aGlzIGZ1bmN0aW9uAQ5hY2NvdW50QmFsYW5jZQEHYXNzZXRJZAQHJG1hdGNoMAUHYXNzZXRJZAMJAAECBQckbWF0Y2gwAgpCeXRlVmVjdG9yBAJpZAUHJG1hdGNoMAkA8AcCBQR0aGlzBQJpZAMJAAECBQckbWF0Y2gwAgRVbml0BAV3YXZlcwUHJG1hdGNoMAgJAO8HAQUEdGhpcwlhdmFpbGFibGUJAAIBAgtNYXRjaCBlcnJvcgENZ2V0U0ZQb29sRGF0YQEIcG9vbEFkZHIJAJcKBQkBE3ZhbHVlT3JFcnJvck1lc3NhZ2UCCQCdCAIFCHBvb2xBZGRyBQ9rU0ZQb29sQUFzc2V0SWQCGUNhbid0IGdldCBwb29sIEEgYXNzZXQgaWQJARN2YWx1ZU9yRXJyb3JNZXNzYWdlAgkAnQgCBQhwb29sQWRkcgUPa1NGUG9vbEJBc3NldElkAhlDYW4ndCBnZXQgcG9vbCBCIGFzc2V0IGlkCQETdmFsdWVPckVycm9yTWVzc2FnZQIJAJoIAgUIcG9vbEFkZHIFFGtTRlBvb2xBQXNzZXRCYWxhbmNlAh5DYW4ndCBnZXQgcG9vbCBBIGFzc2V0IGJhbGFuY2UJARN2YWx1ZU9yRXJyb3JNZXNzYWdlAgkAmggCBQhwb29sQWRkcgUUa1NGUG9vbEJBc3NldEJhbGFuY2UCHkNhbid0IGdldCBwb29sIEIgYXNzZXQgYmFsYW5jZQkBE3ZhbHVlT3JFcnJvck1lc3NhZ2UCCQCdCAIFCHBvb2xBZGRyBQ5rU0ZQb29sU2hhcmVJZAIYQ2FuJ3QgZ2V0IHNoYXJlIGFzc2V0IGlkAQ1nZXRXWFBvb2xEYXRhAQhwb29sQWRkcgQDY2ZnCgABQAkA/AcEBQhwb29sQWRkcgIcZ2V0UG9vbENvbmZpZ1dyYXBwZXJSRUFET05MWQUDbmlsBQNuaWwDCQABAgUBQAIJTGlzdFtBbnldBQFACQACAQkArAICCQADAQUBQAIeIGNvdWxkbid0IGJlIGNhc3QgdG8gTGlzdFtBbnldAwkAAAIFA2NmZwUDY2ZnCQCXCgUJARN2YWx1ZU9yRXJyb3JNZXNzYWdlAgoAAUAJAJEDAgUDY2ZnAAQDCQABAgUBQAIGU3RyaW5nBQFABQR1bml0AhlDYW4ndCBnZXQgcG9vbCBBIGFzc2V0IGlkCQETdmFsdWVPckVycm9yTWVzc2FnZQIKAAFACQCRAwIFA2NmZwAFAwkAAQIFAUACBlN0cmluZwUBQAUEdW5pdAIZQ2FuJ3QgZ2V0IHBvb2wgQiBhc3NldCBpZAAAAAAJARN2YWx1ZU9yRXJyb3JNZXNzYWdlAgoAAUAJAJEDAgUDY2ZnAAMDCQABAgUBQAIGU3RyaW5nBQFABQR1bml0AhpDYW4ndCBnZXQgcG9vbCBMUCBhc3NldCBpZAkAAgECJFN0cmljdCB2YWx1ZSBpcyBub3QgZXF1YWwgdG8gaXRzZWxmLgELZ2V0UG9vbERhdGECCHBvb2xBZGRyBHR5cGUDCQAAAgUEdHlwZQUHU0ZfUE9PTAkBDWdldFNGUG9vbERhdGEBBQhwb29sQWRkcgMJAAACBQR0eXBlBQdXWF9QT09MCQENZ2V0V1hQb29sRGF0YQEFCHBvb2xBZGRyCQACAQIPV3JvbmcgcG9vbCB0eXBlARFnZXRQb29sVG90YWxTaGFyZQEEcG9vbAkBC3ZhbHVlT3JFbHNlAgkAmggCBQR0aGlzCQCsAgIFBHBvb2wFCmtQb29sVG90YWwAAAEYZ2V0TmV3VXNlclBvc2l0aW9uTnVtYmVyAgRwb29sBHVzZXIJAGQCCQELdmFsdWVPckVsc2UCCQCaCAIFBHRoaXMJAKwCAgkArAICCQCsAgIFBHBvb2wCAV8FBHVzZXIFEGtVc2VyUG9zaXRpb25OdW0AAAABAQpnZXRBeGx5RmVlAgRwb29sB2ZlZVR5cGUDCQAAAgUHZmVlVHlwZQIDY2FwCQERQGV4dHJOYXRpdmUoMTA1MCkCBQR0aGlzCQCsAgIFBHBvb2wFC2tBeGx5Q2FwRmVlAwkAAAIFB2ZlZVR5cGUCBGxvYW4JARFAZXh0ck5hdGl2ZSgxMDUwKQIFBHRoaXMJAKwCAgUEcG9vbAUSa0F4bHlJbkZlZVdpdGhMb2FuAwkAAAIFB2ZlZVR5cGUCBm5vTG9hbgkBEUBleHRyTmF0aXZlKDEwNTApAgUEdGhpcwkArAICBQRwb29sBRVrQXhseUluRmVlV2l0aG91dExvYW4JAAIBAg5Xcm9uZyBmZWUgdHlwZQEQZ2V0U0ZGYXJtaW5nQWRkcgAJAQdBZGRyZXNzAQkA2QQBCQETdmFsdWVPckVycm9yTWVzc2FnZQIJAJ0IAgUEdGhpcwUOa1NGRmFybWluZ0FkZHICHUNhbid0IGdldCBzd29wZmkgZmFybWluZyBhZGRyARBnZXRXWEZhcm1pbmdBZGRyAQhwb29sQWRkcgQJZkNvbnRyYWN0CQEHQWRkcmVzcwEJANkEAQkBE3ZhbHVlT3JFcnJvck1lc3NhZ2UCCQCdCAIFCHBvb2xBZGRyAhMlc19fZmFjdG9yeUNvbnRyYWN0AiJDYW4ndCBnZXQgV1ggZmFjdG9yeSBjb250cmFjdCBhZGRyBApmYWN0cm95Q2ZnCQC1CQIJARN2YWx1ZU9yRXJyb3JNZXNzYWdlAgkAnQgCBQlmQ29udHJhY3QCESVzX19mYWN0b3J5Q29uZmlnAhhDYW4ndCBnZXQgV1ggZmFjdG9yeSBjZmcCAl9fCQEHQWRkcmVzcwEJANkEAQkAkQMCBQpmYWN0cm95Q2ZnAAEBDmdldExlbmRTcnZBZGRyAAkBB0FkZHJlc3MBCQDZBAEJARN2YWx1ZU9yRXJyb3JNZXNzYWdlAgkAnQgCBQR0aGlzBQxrTGVuZFNlcnZpY2UCG0Nhbid0IGdldCBsZW5kIHNlcnZpY2UgYWRkcgEMYXNzZXRJZFRvU3RyAQdhc3NldElkBAckbWF0Y2gwBQdhc3NldElkAwkAAQIFByRtYXRjaDACCkJ5dGVWZWN0b3IEAmlkBQckbWF0Y2gwCQDYBAEFAmlkAwkAAQIFByRtYXRjaDACBFVuaXQEBXdhdmVzBQckbWF0Y2gwAgVXQVZFUwkAAgECC01hdGNoIGVycm9yAQ5hc3NldElkRnJvbVN0cgEHYXNzZXRJZAMJAAACBQdhc3NldElkAgVXQVZFUwUEdW5pdAkA2QQBBQdhc3NldElkARBnZXRBc3NldERlY2ltYWxzAQdhc3NldElkAwkAAAIFB2Fzc2V0SWQCBVdBVkVTAAgEByRtYXRjaDAJAOwHAQkA2QQBBQdhc3NldElkAwkAAQIFByRtYXRjaDACBUFzc2V0BAVhc3NldAUHJG1hdGNoMAgFBWFzc2V0CGRlY2ltYWxzCQACAQIQQ2FuJ3QgZmluZCBhc3NldAEPcmVwbGVuaXNoU3dvcEZpCQRwb29sB2ZlZVR5cGUEcG10QQlwbXRBc3NldEEEcG10QglwbXRBc3NldEIEYmFsQQRiYWxCB3NoYXJlSWQEEnNoYXJlQmFsYW5jZUJlZm9yZQkBDmFjY291bnRCYWxhbmNlAQkA2QQBBQdzaGFyZUlkAwkAAAIFEnNoYXJlQmFsYW5jZUJlZm9yZQUSc2hhcmVCYWxhbmNlQmVmb3JlBAhwb29sQWRkcgkBB0FkZHJlc3MBCQDZBAEFBHBvb2wEBnJhdGlvQQkAawMFBlNDQUxFOAUEcG10QQUEYmFsQQQGcmF0aW9CCQBrAwUGU0NBTEU4BQRwbXRCBQRiYWxCBAskdDA2Mzk3NjY4OQMJAGYCBQZyYXRpb0IFBnJhdGlvQQQDcG10CQBuBAUEYmFsQgUGcmF0aW9BBQZTQ0FMRTgFB0NFSUxJTkcJAJYKBAUEcG10QQUDcG10CQBlAgUEcG10QgUDcG10BQlwbXRBc3NldEIEA3BtdAkAbgQFBGJhbEEFBnJhdGlvQgUGU0NBTEU4BQdDRUlMSU5HCQCWCgQFA3BtdAUEcG10QgkAZQIFBHBtdEEFA3BtdAUJcG10QXNzZXRBBApwbXRBbW91bnRBCAULJHQwNjM5NzY2ODkCXzEECnBtdEFtb3VudEIIBQskdDA2Mzk3NjY4OQJfMgQGY2hhbmdlCAULJHQwNjM5NzY2ODkCXzMEDWNoYW5nZUFzc2V0SWQIBQskdDA2Mzk3NjY4OQJfNAQEaW52MQMDCQBmAgUKcG10QW1vdW50QQAACQBmAgUKcG10QW1vdW50QgAABwQIcGF5bWVudHMJAMwIAgkBD0F0dGFjaGVkUGF5bWVudAIJAQ5hc3NldElkRnJvbVN0cgEFCXBtdEFzc2V0QQUKcG10QW1vdW50QQkAzAgCCQEPQXR0YWNoZWRQYXltZW50AgkBDmFzc2V0SWRGcm9tU3RyAQUJcG10QXNzZXRCBQpwbXRBbW91bnRCBQNuaWwJAPwHBAUIcG9vbEFkZHICDGNhbGxGdW5jdGlvbgkAzAgCAhZyZXBsZW5pc2hXaXRoVHdvVG9rZW5zCQDMCAIJAMwIAgIFZmFsc2UJAMwIAgIBMAUDbmlsBQNuaWwFCHBheW1lbnRzAAADCQAAAgUEaW52MQUEaW52MQQEaW52MgMJAGYCBQZjaGFuZ2UAAAQIcGF5bWVudHMJAMwIAgkBD0F0dGFjaGVkUGF5bWVudAIJAQ5hc3NldElkRnJvbVN0cgEFDWNoYW5nZUFzc2V0SWQFBmNoYW5nZQUDbmlsBAR2YXJzCQDMCAICATAJAMwIAgIFZmFsc2UJAMwIAgIBMAUDbmlsCQD8BwQFCHBvb2xBZGRyAgxjYWxsRnVuY3Rpb24JAMwIAgIVcmVwbGVuaXNoV2l0aE9uZVRva2VuCQDMCAIFBHZhcnMFA25pbAUIcGF5bWVudHMAAAMJAAACBQRpbnYyBQRpbnYyBBFzaGFyZUJhbGFuY2VBZnRlcgkBDmFjY291bnRCYWxhbmNlAQkA2QQBBQdzaGFyZUlkBAt0b3RhbFN0YWtlZAkAZQIFEXNoYXJlQmFsYW5jZUFmdGVyBRJzaGFyZUJhbGFuY2VCZWZvcmUEDWF4bHlGZWVBbW91bnQJAGsDBQt0b3RhbFN0YWtlZAkBCmdldEF4bHlGZWUCBQRwb29sBQdmZWVUeXBlBQpGRUVfU0NBTEU2BBF1c2VyU2hhcmVGb3JTdGFrZQkAZQIFC3RvdGFsU3Rha2VkBQ1heGx5RmVlQW1vdW50AwkAZwIAAAURdXNlclNoYXJlRm9yU3Rha2UJAAIBAihhbW91bnQgb2Ygc3Rha2VkIHNoYXJldG9rZW5zIG11c3QgYmUgPiAwBARpbnYzCQD8BwQJARBnZXRTRkZhcm1pbmdBZGRyAAIPbG9ja1NoYXJlVG9rZW5zCQDMCAIFBHBvb2wJAMwIAgAABQNuaWwJAMwIAgkBD0F0dGFjaGVkUGF5bWVudAIJANkEAQUHc2hhcmVJZAURdXNlclNoYXJlRm9yU3Rha2UFA25pbAMJAAACBQRpbnYzBQRpbnYzCQCUCgIFEXVzZXJTaGFyZUZvclN0YWtlBQ1heGx5RmVlQW1vdW50CQACAQIkU3RyaWN0IHZhbHVlIGlzIG5vdCBlcXVhbCB0byBpdHNlbGYuCQACAQIkU3RyaWN0IHZhbHVlIGlzIG5vdCBlcXVhbCB0byBpdHNlbGYuCQACAQIkU3RyaWN0IHZhbHVlIGlzIG5vdCBlcXVhbCB0byBpdHNlbGYuCQACAQIkU3RyaWN0IHZhbHVlIGlzIG5vdCBlcXVhbCB0byBpdHNlbGYuAQtyZXBsZW5pc2hXWAcEcG9vbAdmZWVUeXBlBHBtdEEJcG10QXNzZXRBBHBtdEIJcG10QXNzZXRCB3NoYXJlSWQECHBvb2xBZGRyCQEHQWRkcmVzcwEJANkEAQUEcG9vbAQLJHQwODE0MDg5ODkDAwkAZgIFBHBtdEEAAAkAZgIFBHBtdEIAAAcECmV2YWxQdXRJbkEJALUJAgoAAUAJAPwHBAUIcG9vbEFkZHICIGV2YWx1YXRlUHV0QnlBbW91bnRBc3NldFJFQURPTkxZCQDMCAIFBHBtdEEFA25pbAUDbmlsAwkAAQIFAUACBlN0cmluZwUBQAkAAgEJAKwCAgkAAwEFAUACGyBjb3VsZG4ndCBiZSBjYXN0IHRvIFN0cmluZwICX18DCQAAAgUKZXZhbFB1dEluQQUKZXZhbFB1dEluQQQKZXZhbFB1dEluQgkAtQkCCgABQAkA/AcEBQhwb29sQWRkcgIfZXZhbHVhdGVQdXRCeVByaWNlQXNzZXRSRUFET05MWQkAzAgCBQRwbXRCBQNuaWwFA25pbAMJAAECBQFAAgZTdHJpbmcFAUAJAAIBCQCsAgIJAAMBBQFAAhsgY291bGRuJ3QgYmUgY2FzdCB0byBTdHJpbmcCAl9fAwkAAAIFCmV2YWxQdXRJbkIFCmV2YWxQdXRJbkIEBWxwSW5BCQENcGFyc2VJbnRWYWx1ZQEJAJEDAgUKZXZhbFB1dEluQQABBAVscEluQgkBDXBhcnNlSW50VmFsdWUBCQCRAwIFCmV2YWxQdXRJbkIAAQMJAGYCBQVscEluQgUFbHBJbkEEBnBtdEluQgkBDXBhcnNlSW50VmFsdWUBCQCRAwIFCmV2YWxQdXRJbkEACAkAlgoEBQRwbXRBBQZwbXRJbkIJAGUCBQRwbXRCBQZwbXRJbkIFCXBtdEFzc2V0QgQGcG10SW5BCQENcGFyc2VJbnRWYWx1ZQEJAJEDAgUKZXZhbFB1dEluQgAHCQCWCgQFBnBtdEluQQUEcG10QgkAZQIFBHBtdEEFBnBtdEluQQUJcG10QXNzZXRBCQACAQIkU3RyaWN0IHZhbHVlIGlzIG5vdCBlcXVhbCB0byBpdHNlbGYuCQACAQIkU3RyaWN0IHZhbHVlIGlzIG5vdCBlcXVhbCB0byBpdHNlbGYuAwkAZgIFBHBtdEEAAAkAlgoEBQRwbXRBBQRwbXRCBQRwbXRBBQlwbXRBc3NldEEDCQBmAgUEcG10QgAACQCWCgQFBHBtdEEFBHBtdEIFBHBtdEIFCXBtdEFzc2V0QgkAAgECEHBtdHMgbXVzdCBiZSA+IDAECnBtdEFtb3VudEEIBQskdDA4MTQwODk4OQJfMQQKcG10QW1vdW50QggFCyR0MDgxNDA4OTg5Al8yBAZjaGFuZ2UIBQskdDA4MTQwODk4OQJfMwQNY2hhbmdlQXNzZXRJZAgFCyR0MDgxNDA4OTg5Al80BBJzaGFyZUJhbGFuY2VCZWZvcmUJAQ5hY2NvdW50QmFsYW5jZQEJANkEAQUHc2hhcmVJZAMJAAACBRJzaGFyZUJhbGFuY2VCZWZvcmUFEnNoYXJlQmFsYW5jZUJlZm9yZQQEaW52MQMDCQBmAgUKcG10QW1vdW50QQAACQBmAgUKcG10QW1vdW50QgAABwQIcGF5bWVudHMJAMwIAgkBD0F0dGFjaGVkUGF5bWVudAIJAQ5hc3NldElkRnJvbVN0cgEFCXBtdEFzc2V0QQUKcG10QW1vdW50QQkAzAgCCQEPQXR0YWNoZWRQYXltZW50AgkBDmFzc2V0SWRGcm9tU3RyAQUJcG10QXNzZXRCBQpwbXRBbW91bnRCBQNuaWwJAPwHBAUIcG9vbEFkZHICA3B1dAkAzAgCAMCEPQkAzAgCBwUDbmlsBQhwYXltZW50cwAAAwkAAAIFBGludjEFBGludjEEBGludjIDCQBmAgUGY2hhbmdlAAAECHBheW1lbnRzCQDMCAIJAQ9BdHRhY2hlZFBheW1lbnQCCQEOYXNzZXRJZEZyb21TdHIBBQ1jaGFuZ2VBc3NldElkBQZjaGFuZ2UFA25pbAkA/AcEBQhwb29sQWRkcgIJcHV0T25lVGtuCQDMCAIAAAkAzAgCBwUDbmlsBQhwYXltZW50cwAAAwkAAAIFBGludjIFBGludjIEEXNoYXJlQmFsYW5jZUFmdGVyCQEOYWNjb3VudEJhbGFuY2UBCQDZBAEFB3NoYXJlSWQEC3RvdGFsU3Rha2VkCQBlAgURc2hhcmVCYWxhbmNlQWZ0ZXIFEnNoYXJlQmFsYW5jZUJlZm9yZQQNYXhseUZlZUFtb3VudAkAawMFC3RvdGFsU3Rha2VkCQEKZ2V0QXhseUZlZQIFBHBvb2wFB2ZlZVR5cGUFCkZFRV9TQ0FMRTYEEXVzZXJTaGFyZUZvclN0YWtlCQBlAgULdG90YWxTdGFrZWQFDWF4bHlGZWVBbW91bnQDCQBnAgAABRF1c2VyU2hhcmVGb3JTdGFrZQkAAgECKGFtb3VudCBvZiBzdGFrZWQgc2hhcmV0b2tlbnMgbXVzdCBiZSA+IDAEBGludjMJAPwHBAkBEGdldFdYRmFybWluZ0FkZHIBBQhwb29sQWRkcgIFc3Rha2UFA25pbAkAzAgCCQEPQXR0YWNoZWRQYXltZW50AgkA2QQBBQdzaGFyZUlkBRF1c2VyU2hhcmVGb3JTdGFrZQUDbmlsAwkAAAIFBGludjMFBGludjMJAJQKAgURdXNlclNoYXJlRm9yU3Rha2UFDWF4bHlGZWVBbW91bnQJAAIBAiRTdHJpY3QgdmFsdWUgaXMgbm90IGVxdWFsIHRvIGl0c2VsZi4JAAIBAiRTdHJpY3QgdmFsdWUgaXMgbm90IGVxdWFsIHRvIGl0c2VsZi4JAAIBAiRTdHJpY3QgdmFsdWUgaXMgbm90IGVxdWFsIHRvIGl0c2VsZi4JAAIBAiRTdHJpY3QgdmFsdWUgaXMgbm90IGVxdWFsIHRvIGl0c2VsZi4BEHJlcGxlbmlzaEVudHJpZXMHBHBvb2wEdXNlcgxzdGFrZWRBbW91bnQNYXhseUZlZUFtb3VudAZwb3NOdW0Hc2hhcmVJZAR0eXBlBAt0b3RhbEFtb3VudAkBEWdldFBvb2xUb3RhbFNoYXJlAQUEcG9vbAQPY3VyUG9vbEludGVyZXN0CQERQGV4dHJOYXRpdmUoMTA1MCkCBQR0aGlzCQCsAgIFBHBvb2wFDWtQb29sSW50ZXJlc3QJAMwIAgkBDEludGVnZXJFbnRyeQIJAKwCAgUEcG9vbAUKa1Bvb2xUb3RhbAkAZAIFC3RvdGFsQW1vdW50BQxzdGFrZWRBbW91bnQJAMwIAgkBDEludGVnZXJFbnRyeQIJAKwCAgkArAICCQCsAgIJAKwCAgkArAICBQRwb29sAgFfBQR1c2VyAgFfCQCkAwEFBnBvc051bQUNa1VzZXJQb3NpdGlvbgUMc3Rha2VkQW1vdW50CQDMCAIJAQxJbnRlZ2VyRW50cnkCCQCsAgIJAKwCAgkArAICCQCsAgIJAKwCAgUEcG9vbAIBXwUEdXNlcgIBXwkApAMBBQZwb3NOdW0FFWtVc2VyUG9zaXRpb25JbnRlcmVzdAUPY3VyUG9vbEludGVyZXN0CQDMCAIJAQxJbnRlZ2VyRW50cnkCCQCsAgIJAKwCAgkArAICBQRwb29sAgFfBQR1c2VyBRBrVXNlclBvc2l0aW9uTnVtBQZwb3NOdW0JAMwIAgkBDlNjcmlwdFRyYW5zZmVyAwUIbW9uZXlCb3gFDWF4bHlGZWVBbW91bnQJANkEAQUHc2hhcmVJZAUDbmlsAQtjbGFpbUZhcm1lZAIEdHlwZQRwb29sAwkAAAIFBHR5cGUFB1NGX1BPT0wECWJhbEJlZm9yZQkBDmFjY291bnRCYWxhbmNlAQUGU1dPUElEAwkAAAIFCWJhbEJlZm9yZQUJYmFsQmVmb3JlBANpbnYJAPwHBAkBEGdldFNGRmFybWluZ0FkZHIAAgVjbGFpbQkAzAgCBQRwb29sBQNuaWwFA25pbAMJAAACBQNpbnYFA2ludgQIYmFsQWZ0ZXIJAQ5hY2NvdW50QmFsYW5jZQEFBlNXT1BJRAkAlAoCCQBlAgUIYmFsQWZ0ZXIFCWJhbEJlZm9yZQUGU1dPUElECQACAQIkU3RyaWN0IHZhbHVlIGlzIG5vdCBlcXVhbCB0byBpdHNlbGYuCQACAQIkU3RyaWN0IHZhbHVlIGlzIG5vdCBlcXVhbCB0byBpdHNlbGYuAwkAAAIFBHR5cGUFB1dYX1BPT0wECWJhbEJlZm9yZQkBDmFjY291bnRCYWxhbmNlAQUEV1hJRAMJAAACBQliYWxCZWZvcmUFCWJhbEJlZm9yZQQDaW52CQD8BwQJARBnZXRXWEZhcm1pbmdBZGRyAQkBB0FkZHJlc3MBCQDZBAEFBHBvb2wCB2NsYWltV1gJAMwIAgUEcG9vbAUDbmlsBQNuaWwDCQAAAgUDaW52BQNpbnYECGJhbEFmdGVyCQEOYWNjb3VudEJhbGFuY2UBBQRXWElECQCUCgIJAGUCBQhiYWxBZnRlcgUJYmFsQmVmb3JlBQRXWElECQACAQIkU3RyaWN0IHZhbHVlIGlzIG5vdCBlcXVhbCB0byBpdHNlbGYuCQACAQIkU3RyaWN0IHZhbHVlIGlzIG5vdCBlcXVhbCB0byBpdHNlbGYuCQACAQIPV3JvbmcgcG9vbCB0eXBlAQ5leGNoYW5nZUtlZXBlcgoHdG9Ub2tlbglwbXRBbW91bnQIcG10QXNzZXQJYW1vdW50c0luCWFkZHJlc3Nlcw9hc3NldHNUb1JlY2VpdmULZXN0UmVjZWl2ZWQRc2xpcHBhZ2VUb2xlcmFuY2ULbWluUmVjZWl2ZWQHb3B0aW9ucwQSdG9rZW5CYWxhbmNlQmVmb3JlCQEOYWNjb3VudEJhbGFuY2UBCQEOYXNzZXRJZEZyb21TdHIBBQd0b1Rva2VuAwkAAAIFEnRva2VuQmFsYW5jZUJlZm9yZQUSdG9rZW5CYWxhbmNlQmVmb3JlBANpbnYJAPwHBAUKZXhDb250cmFjdAIEc3dhcAkAzAgCBQlhbW91bnRzSW4JAMwIAgUJYWRkcmVzc2VzCQDMCAIFD2Fzc2V0c1RvUmVjZWl2ZQkAzAgCBQtlc3RSZWNlaXZlZAkAzAgCBRFzbGlwcGFnZVRvbGVyYW5jZQkAzAgCBQttaW5SZWNlaXZlZAkAzAgCBQdvcHRpb25zBQNuaWwJAMwIAgkBD0F0dGFjaGVkUGF5bWVudAIFCHBtdEFzc2V0BQlwbXRBbW91bnQFA25pbAMJAAACBQNpbnYFA2ludgkAZQIJAQ5hY2NvdW50QmFsYW5jZQEJAQ5hc3NldElkRnJvbVN0cgEFB3RvVG9rZW4FEnRva2VuQmFsYW5jZUJlZm9yZQkAAgECJFN0cmljdCB2YWx1ZSBpcyBub3QgZXF1YWwgdG8gaXRzZWxmLgkAAgECJFN0cmljdCB2YWx1ZSBpcyBub3QgZXF1YWwgdG8gaXRzZWxmLgEOZXhjaGFuZ2VQYXp6bGUGB3RvVG9rZW4JcG10QW1vdW50CHBtdEFzc2V0CXJvdXRlc1N0cgxtaW5Ub1JlY2VpdmUHb3B0aW9ucwQSdG9rZW5CYWxhbmNlQmVmb3JlCQEOYWNjb3VudEJhbGFuY2UBCQEOYXNzZXRJZEZyb21TdHIBBQd0b1Rva2VuAwkAAAIFEnRva2VuQmFsYW5jZUJlZm9yZQUSdG9rZW5CYWxhbmNlQmVmb3JlBANpbnYJAPwHBAUKZXhDb250cmFjdAIKcHV6emxlU3dhcAkAzAgCBQlyb3V0ZXNTdHIJAMwIAgUMbWluVG9SZWNlaXZlCQDMCAIFB29wdGlvbnMFA25pbAkAzAgCCQEPQXR0YWNoZWRQYXltZW50AgUIcG10QXNzZXQFCXBtdEFtb3VudAUDbmlsAwkAAAIFA2ludgUDaW52CQBlAgkBDmFjY291bnRCYWxhbmNlAQkBDmFzc2V0SWRGcm9tU3RyAQUHdG9Ub2tlbgUSdG9rZW5CYWxhbmNlQmVmb3JlCQACAQIkU3RyaWN0IHZhbHVlIGlzIG5vdCBlcXVhbCB0byBpdHNlbGYuCQACAQIkU3RyaWN0IHZhbHVlIGlzIG5vdCBlcXVhbCB0byBpdHNlbGYuAQ5leGNoYW5nZVN3b3BGaQoHdG9Ub2tlbglwbXRBbW91bnQIcG10QXNzZXQKZXhjaGFuZ2Vycw5leGNoYW5nZXJzVHlwZQVhcmdzMQVhcmdzMhFyb3V0aW5nQXNzZXRzS2V5cxJtaW5BbW91bnRUb1JlY2VpdmUHb3B0aW9ucwQSdG9rZW5CYWxhbmNlQmVmb3JlCQEOYWNjb3VudEJhbGFuY2UBCQEOYXNzZXRJZEZyb21TdHIBBQd0b1Rva2VuAwkAAAIFEnRva2VuQmFsYW5jZUJlZm9yZQUSdG9rZW5CYWxhbmNlQmVmb3JlBANpbnYJAPwHBAUKZXhDb250cmFjdAIKc3dvcGZpU3dhcAkAzAgCBQpleGNoYW5nZXJzCQDMCAIFDmV4Y2hhbmdlcnNUeXBlCQDMCAIFBWFyZ3MxCQDMCAIFBWFyZ3MyCQDMCAIFEXJvdXRpbmdBc3NldHNLZXlzCQDMCAIFEm1pbkFtb3VudFRvUmVjZWl2ZQkAzAgCBQdvcHRpb25zBQNuaWwJAMwIAgkBD0F0dGFjaGVkUGF5bWVudAIFCHBtdEFzc2V0BQlwbXRBbW91bnQFA25pbAMJAAACBQNpbnYFA2ludgkAZQIJAQ5hY2NvdW50QmFsYW5jZQEJAQ5hc3NldElkRnJvbVN0cgEFB3RvVG9rZW4FEnRva2VuQmFsYW5jZUJlZm9yZQkAAgECJFN0cmljdCB2YWx1ZSBpcyBub3QgZXF1YWwgdG8gaXRzZWxmLgkAAgECJFN0cmljdCB2YWx1ZSBpcyBub3QgZXF1YWwgdG8gaXRzZWxmLgEKY2FwaXRhbGl6ZQQEcG9vbAR0eXBlB3Rva2VuSWQLdG9rZW5BbW91bnQECHBvb2xBZGRyCQEHQWRkcmVzcwEJANkEAQUEcG9vbAQNJHQwMTMxOTAxMzI2OAkBC2dldFBvb2xEYXRhAgUIcG9vbEFkZHIFBHR5cGUEA0FJZAgFDSR0MDEzMTkwMTMyNjgCXzEEA0JJZAgFDSR0MDEzMTkwMTMyNjgCXzIEBGJhbEEIBQ0kdDAxMzE5MDEzMjY4Al8zBARiYWxCCAUNJHQwMTMxOTAxMzI2OAJfNAQHc2hhcmVJZAgFDSR0MDEzMTkwMTMyNjgCXzUEDSR0MDEzMjcxMTMzNTEDCQAAAgUHdG9rZW5JZAUDQUlkCQCUCgIFC3Rva2VuQW1vdW50AAAJAJQKAgAABQt0b2tlbkFtb3VudAQEcG10QQgFDSR0MDEzMjcxMTMzNTECXzEEBHBtdEIIBQ0kdDAxMzI3MTEzMzUxAl8yBA0kdDAxMzM1NDEzNzE1AwkAAAIFBHR5cGUFB1NGX1BPT0wJAQ9yZXBsZW5pc2hTd29wRmkJBQRwb29sBQdDQVBfRkVFBQRwbXRBBQNBSWQFBHBtdEIFA0JJZAUEYmFsQQUEYmFsQgUHc2hhcmVJZAkBC3JlcGxlbmlzaFdYBwUEcG9vbAUHQ0FQX0ZFRQUEcG10QQUDQUlkBQRwbXRCBQNCSWQFB3NoYXJlSWQEDHN0YWtlZEFtb3VudAgFDSR0MDEzMzU0MTM3MTUCXzEEB2F4bHlGZWUIBQ0kdDAxMzM1NDEzNzE1Al8yBA9jdXJQb29sSW50ZXJlc3QJAQt2YWx1ZU9yRWxzZQIJAJoIAgUEdGhpcwkArAICBQRwb29sBQ1rUG9vbEludGVyZXN0AAAEEHRvdGFsU2hhcmVBbW91bnQJARFnZXRQb29sVG90YWxTaGFyZQEFBHBvb2wEC25ld0ludGVyZXN0CQBkAgUPY3VyUG9vbEludGVyZXN0CQBrAwUMc3Rha2VkQW1vdW50BQdTQ0FMRTEwBRB0b3RhbFNoYXJlQW1vdW50CQDMCAIJAQxJbnRlZ2VyRW50cnkCCQCsAgIFBHBvb2wFDWtQb29sSW50ZXJlc3QFC25ld0ludGVyZXN0CQDMCAIJAQ5TY3JpcHRUcmFuc2ZlcgMFCG1vbmV5Qm94BQdheGx5RmVlCQDZBAEFB3NoYXJlSWQFA25pbAESZXhjaGFuZ2VEaXJlY3RseVNGBwRwb29sCGFzc2V0SWRBCGFzc2V0SWRCBGJhbEEEYmFsQhBhbW91bnRUb2tlblRvR2V0D2Fzc2V0VG9rZW5Ub0dldAQIcG9vbEFkZHIJAQdBZGRyZXNzAQkA2QQBBQRwb29sBAlmZWVTY2FsZTYAwIQ9BANmZWUJARFAZXh0ck5hdGl2ZSgxMDUwKQIFCHBvb2xBZGRyBQprU0ZQb29sRmVlBAxhbW50R2V0Tm9GZWUJAGsDBRBhbW91bnRUb2tlblRvR2V0BQlmZWVTY2FsZTYJAGUCBQlmZWVTY2FsZTYFA2ZlZQQNJHQwMTQ0MDgxNDY5NgMJAAACBQ9hc3NldFRva2VuVG9HZXQFCGFzc2V0SWRBBAthbW91bnRUb1BheQkAawMFBGJhbEEFDGFtbnRHZXROb0ZlZQkAZQIFBGJhbEIFDGFtbnRHZXROb0ZlZQkAlAoCBQthbW91bnRUb1BheQUIYXNzZXRJZEIEC2Ftb3VudFRvUGF5CQBrAwUEYmFsQgUMYW1udEdldE5vRmVlCQBlAgUEYmFsQQUMYW1udEdldE5vRmVlCQCUCgIFC2Ftb3VudFRvUGF5BQhhc3NldElkQQQLYW1vdW50VG9QYXkIBQ0kdDAxNDQwODE0Njk2Al8xBAphc3NldFRvUGF5CAUNJHQwMTQ0MDgxNDY5NgJfMgkA/AcEBQhwb29sQWRkcgIMY2FsbEZ1bmN0aW9uCQDMCAICCGV4Y2hhbmdlCQDMCAICATEFA25pbAkAzAgCCQEPQXR0YWNoZWRQYXltZW50AgkBDmFzc2V0SWRGcm9tU3RyAQUKYXNzZXRUb1BheQULYW1vdW50VG9QYXkFA25pbAESZXhjaGFuZ2VEaXJlY3RseVdYBwRwb29sCGFzc2V0SWRBCGFzc2V0SWRCBGJhbEEEYmFsQhBhbW91bnRUb2tlblRvR2V0D2Fzc2V0VG9rZW5Ub0dldAQIcG9vbEFkZHIJAQdBZGRyZXNzAQkA2QQBBQRwb29sBAVwckZlZQkBEUBleHRyTmF0aXZlKDEwNTApAgUOd3hTd2FwQ29udHJhY3QCDyVzX19wcm90b2NvbEZlZQQEcEZlZQkBEUBleHRyTmF0aXZlKDEwNTApAgUOd3hTd2FwQ29udHJhY3QCCyVzX19wb29sRmVlBAhmZWVTY2FsZQkAtgIBAIDC1y8EDSR0MDE1MTczMTU0ODEDCQAAAgUPYXNzZXRUb2tlblRvR2V0BQhhc3NldElkQQQLYW1vdW50VG9QYXkJAGsDBQRiYWxBBRBhbW91bnRUb2tlblRvR2V0CQBlAgUEYmFsQgUQYW1vdW50VG9rZW5Ub0dldAkAlAoCBQthbW91bnRUb1BheQUIYXNzZXRJZEIEC2Ftb3VudFRvUGF5CQBrAwUEYmFsQgUQYW1vdW50VG9rZW5Ub0dldAkAZQIFBGJhbEEFEGFtb3VudFRva2VuVG9HZXQJAJQKAgULYW1vdW50VG9QYXkFCGFzc2V0SWRBBAthbW91bnRUb1BheQgFDSR0MDE1MTczMTU0ODECXzEECmFzc2V0VG9QYXkIBQ0kdDAxNTE3MzE1NDgxAl8yBBJhbW91bnRUb1BheVdpdGhGZWUJAKADAQkAvAIDCQC2AgEFC2Ftb3VudFRvUGF5BQhmZWVTY2FsZQkAuAICBQhmZWVTY2FsZQkAtgIBCQBkAgUFcHJGZWUFBHBGZWUJAPwHBAUOd3hTd2FwQ29udHJhY3QCBHN3YXAJAMwIAgABCQDMCAIFD2Fzc2V0VG9rZW5Ub0dldAkAzAgCCQClCAEFBHRoaXMFA25pbAkAzAgCCQEPQXR0YWNoZWRQYXltZW50AgkBDmFzc2V0SWRGcm9tU3RyAQUKYXNzZXRUb1BheQUSYW1vdW50VG9QYXlXaXRoRmVlBQNuaWwBEGV4Y2hhbmdlRGlyZWN0bHkIBHR5cGUEcG9vbAhhc3NldElkQQhhc3NldElkQgRiYWxBBGJhbEIQYW1vdW50VG9rZW5Ub0dldA9hc3NldFRva2VuVG9HZXQDCQAAAgUEdHlwZQUHU0ZfUE9PTAkBEmV4Y2hhbmdlRGlyZWN0bHlTRgcFBHBvb2wFCGFzc2V0SWRBBQhhc3NldElkQgUEYmFsQQUEYmFsQgUQYW1vdW50VG9rZW5Ub0dldAUPYXNzZXRUb2tlblRvR2V0CQESZXhjaGFuZ2VEaXJlY3RseVdYBwUEcG9vbAUIYXNzZXRJZEEFCGFzc2V0SWRCBQRiYWxBBQRiYWxCBRBhbW91bnRUb2tlblRvR2V0BQ9hc3NldFRva2VuVG9HZXQBEndpdGhkcmF3QW1vdW50Q2FsYwQEcG9vbA91c2VyQ2FuV2l0aGRyYXcEZGVidAtib3Jyb3dBc3NldAQIcG9vbEFkZHIJAQdBZGRyZXNzAQkA2QQBBQRwb29sBAVwVHlwZQkBE3ZhbHVlT3JFcnJvck1lc3NhZ2UCCQCdCAIFBHRoaXMJAKwCAgUFa1Bvb2wFBHBvb2wCDFVua25vd24gcG9vbAQNJHQwMTYzNDYxNjQxMwkBC2dldFBvb2xEYXRhAgUIcG9vbEFkZHIFBXBUeXBlBAhhc3NldElkQQgFDSR0MDE2MzQ2MTY0MTMCXzEECGFzc2V0SWRCCAUNJHQwMTYzNDYxNjQxMwJfMgQEYmFsQQgFDSR0MDE2MzQ2MTY0MTMCXzMEBGJhbEIIBQ0kdDAxNjM0NjE2NDEzAl80BAtjQmFsQUJlZm9yZQkBDmFjY291bnRCYWxhbmNlAQkBDmFzc2V0SWRGcm9tU3RyAQUIYXNzZXRJZEEDCQAAAgULY0JhbEFCZWZvcmUFC2NCYWxBQmVmb3JlBAtjQmFsQkJlZm9yZQkBDmFjY291bnRCYWxhbmNlAQkBDmFzc2V0SWRGcm9tU3RyAQUIYXNzZXRJZEIDCQAAAgULY0JhbEJCZWZvcmUFC2NCYWxCQmVmb3JlBANpbnYDCQAAAgUFcFR5cGUFB1NGX1BPT0wJAPwHBAUIcG9vbEFkZHICDGNhbGxGdW5jdGlvbgkAzAgCAgh3aXRoZHJhdwkAzAgCCQDMCAIJAKQDAQUPdXNlckNhbldpdGhkcmF3BQNuaWwFA25pbAUDbmlsAwkAAAIFBXBUeXBlBQdXWF9QT09MCQD8BwQFCHBvb2xBZGRyAg11bnN0YWtlQW5kR2V0CQDMCAIFD3VzZXJDYW5XaXRoZHJhdwUDbmlsBQNuaWwJAAIBAhNXcm9uZyBwb3NpdGlvbiB0eXBlAwkAAAIFA2ludgUDaW52BApjQmFsQUFmdGVyCQEOYWNjb3VudEJhbGFuY2UBCQEOYXNzZXRJZEZyb21TdHIBBQhhc3NldElkQQQKY0JhbEJBZnRlcgkBDmFjY291bnRCYWxhbmNlAQkBDmFzc2V0SWRGcm9tU3RyAQUIYXNzZXRJZEIEDSR0MDE2OTI1MTcwMTQJAJQKAgkAZQIFCmNCYWxBQWZ0ZXIFC2NCYWxBQmVmb3JlCQBlAgUKY0JhbEJBZnRlcgULY0JhbEJCZWZvcmUEDXRva2Vuc0Ftb3VudEEIBQ0kdDAxNjkyNTE3MDE0Al8xBA10b2tlbnNBbW91bnRCCAUNJHQwMTY5MjUxNzAxNAJfMgQNJHQwMTcwMTcxNzcxMwMJAGYCBQRkZWJ0AAAEDWFtb3VudFRvR2V0RXgDAwkAAAIFC2JvcnJvd0Fzc2V0BQhhc3NldElkQQkAZgIFBGRlYnQFDXRva2Vuc0Ftb3VudEEHCQBlAgUEZGVidAUNdG9rZW5zQW1vdW50QQMDCQAAAgULYm9ycm93QXNzZXQFCGFzc2V0SWRCCQBmAgUEZGVidAUNdG9rZW5zQW1vdW50QgcJAGUCBQRkZWJ0BQ10b2tlbnNBbW91bnRCAAAEBWV4SW52AwkAZgIFDWFtb3VudFRvR2V0RXgAAAkBEGV4Y2hhbmdlRGlyZWN0bHkIBQVwVHlwZQUEcG9vbAUIYXNzZXRJZEEFCGFzc2V0SWRCBQRiYWxBBQRiYWxCBQ1hbW91bnRUb0dldEV4BQtib3Jyb3dBc3NldAAAAwkAAAIFBWV4SW52BQVleEludgQPY0JhbEFBZnRlclJlcGF5CQEOYWNjb3VudEJhbGFuY2UBCQEOYXNzZXRJZEZyb21TdHIBBQhhc3NldElkQQQPY0JhbEJBZnRlclJlcGF5CQEOYWNjb3VudEJhbGFuY2UBCQEOYXNzZXRJZEZyb21TdHIBBQhhc3NldElkQgkAlAoCCQBlAgUPY0JhbEFBZnRlclJlcGF5BQtjQmFsQUJlZm9yZQkAZQIFD2NCYWxCQWZ0ZXJSZXBheQULY0JhbEJCZWZvcmUJAAIBAiRTdHJpY3QgdmFsdWUgaXMgbm90IGVxdWFsIHRvIGl0c2VsZi4JAJQKAgUNdG9rZW5zQW1vdW50QQUNdG9rZW5zQW1vdW50QgQNdG9Vc2VyQW1vdW50QQgFDSR0MDE3MDE3MTc3MTMCXzEEDXRvVXNlckFtb3VudEIIBQ0kdDAxNzAxNzE3NzEzAl8yCQCWCgQFDXRvVXNlckFtb3VudEEFCGFzc2V0SWRBBQ10b1VzZXJBbW91bnRCBQhhc3NldElkQgkAAgECJFN0cmljdCB2YWx1ZSBpcyBub3QgZXF1YWwgdG8gaXRzZWxmLgkAAgECJFN0cmljdCB2YWx1ZSBpcyBub3QgZXF1YWwgdG8gaXRzZWxmLgkAAgECJFN0cmljdCB2YWx1ZSBpcyBub3QgZXF1YWwgdG8gaXRzZWxmLgkBaQERcmVwbGVuaXNoUkVBRE9OTFkDBHBvb2wIbGV2ZXJhZ2UNYm9ycm93QXNzZXRJZAMDCQBmAgBkBQhsZXZlcmFnZQYJAGYCBQhsZXZlcmFnZQCsAgkAAgECH0xldmVyYWdlIGNhbid0IGJlIDwxMDAgYW5kID4zMDAEBHR5cGUJARN2YWx1ZU9yRXJyb3JNZXNzYWdlAgkAnQgCBQR0aGlzCQCsAgIFBWtQb29sBQRwb29sAhJQb29sIGlzIG5vdCBpbml0ZWQEDSR0MDE4MDc2MTgxNjUJAQtnZXRQb29sRGF0YQIJAQdBZGRyZXNzAQkA2QQBBQRwb29sBQR0eXBlBANBSWQIBQ0kdDAxODA3NjE4MTY1Al8xBANCSWQIBQ0kdDAxODA3NjE4MTY1Al8yBARiYWxBCAUNJHQwMTgwNzYxODE2NQJfMwQEYmFsQggFDSR0MDE4MDc2MTgxNjUCXzQEB3NoYXJlSWQIBQ0kdDAxODA3NjE4MTY1Al81BA0kdDAxODE2ODE4ODA1AwkAAAIJAJADAQgFAWkIcGF5bWVudHMAAgMJAQIhPQIJAQxhc3NldElkVG9TdHIBCAkAkQMCCAUBaQhwYXltZW50cwAAB2Fzc2V0SWQFA0FJZAkAAgECFVdyb25nIHBheW1lbnQgYXNzZXQgQQMJAQIhPQIJAQxhc3NldElkVG9TdHIBCAkAkQMCCAUBaQhwYXltZW50cwABB2Fzc2V0SWQFA0JJZAkAAgECFVdyb25nIHBheW1lbnQgYXNzZXQgQgkAlgoECAkAkQMCCAUBaQhwYXltZW50cwAABmFtb3VudAUDQUlkCAkAkQMCCAUBaQhwYXltZW50cwABBmFtb3VudAUDQklkAwkAAAIJAJADAQgFAWkIcGF5bWVudHMAAQMJAAACCQEMYXNzZXRJZFRvU3RyAQgJAJEDAggFAWkIcGF5bWVudHMAAAdhc3NldElkBQNBSWQJAJYKBAgJAJEDAggFAWkIcGF5bWVudHMAAAZhbW91bnQFA0FJZAAABQNCSWQDCQAAAgkBDGFzc2V0SWRUb1N0cgEICQCRAwIIBQFpCHBheW1lbnRzAAAHYXNzZXRJZAUDQklkCQCWCgQAAAUDQUlkCAkAkQMCCAUBaQhwYXltZW50cwAABmFtb3VudAUDQklkCQACAQINV3JvbmcgcGF5bWVudAkAAgECHE9uZSBvciB0d28gcGF5bWVudHMgZXhwZWN0ZWQEBHBtdEEIBQ0kdDAxODE2ODE4ODA1Al8xBAlwbXRBc3NldEEIBQ0kdDAxODE2ODE4ODA1Al8yBARwbXRCCAUNJHQwMTgxNjgxODgwNQJfMwQJcG10QXNzZXRCCAUNJHQwMTgxNjgxODgwNQJfNAQNJHQwMTg4MDgxOTU2MQMJAGYCBQhsZXZlcmFnZQBkBAdkUHJpY2VBCAoAAUAJAPwHBAUPcHJpY2VPcmFjbGVBZGRyAglnZXRUV0FQNjAJAMwIAgUJcG10QXNzZXRBCQDMCAIHBQNuaWwFA25pbAMJAAECBQFAAgooSW50LCBJbnQpBQFACQACAQkArAICCQADAQUBQAIfIGNvdWxkbid0IGJlIGNhc3QgdG8gKEludCwgSW50KQJfMQQHZFByaWNlQggKAAFACQD8BwQFD3ByaWNlT3JhY2xlQWRkcgIJZ2V0VFdBUDYwCQDMCAIFCXBtdEFzc2V0QgkAzAgCBwUDbmlsBQNuaWwDCQABAgUBQAIKKEludCwgSW50KQUBQAkAAgEJAKwCAgkAAwEFAUACHyBjb3VsZG4ndCBiZSBjYXN0IHRvIChJbnQsIEludCkCXzEEDHBheWRJbkRvbGxhcgkAZAIJAGsDBQdkUHJpY2VBBQRwbXRBCQBsBgAKAAAJARBnZXRBc3NldERlY2ltYWxzAQUJcG10QXNzZXRBAAAAAAUERE9XTgkAawMFB2RQcmljZUIFBHBtdEIJAGwGAAoAAAkBEGdldEFzc2V0RGVjaW1hbHMBBQlwbXRBc3NldEIAAAAABQRET1dOBAxib3Jyb3dBbW91bnQJAGsDBQxwYXlkSW5Eb2xsYXIJAGUCBQhsZXZlcmFnZQBkAGQDCQAAAgUNYm9ycm93QXNzZXRJZAUJcG10QXNzZXRBCQCWCgQJAGQCBQRwbXRBBQxib3Jyb3dBbW91bnQFBHBtdEIFCExPQU5fRkVFBQxib3Jyb3dBbW91bnQJAJYKBAUEcG10QQkAZAIFBHBtdEIFDGJvcnJvd0Ftb3VudAUITE9BTl9GRUUFDGJvcnJvd0Ftb3VudAkAlgoEBQRwbXRBBQRwbXRCBQtOT19MT0FOX0ZFRQAABAhwYXltZW50QQgFDSR0MDE4ODA4MTk1NjECXzEECHBheW1lbnRCCAUNJHQwMTg4MDgxOTU2MQJfMgQHZmVlVHlwZQgFDSR0MDE4ODA4MTk1NjECXzMEDGJvcnJvd0Ftb3VudAgFDSR0MDE4ODA4MTk1NjECXzQEDSR0MDE5NTY0MTk5NTgDCQAAAgUEdHlwZQUHU0ZfUE9PTAkBD3JlcGxlbmlzaFN3b3BGaQkFBHBvb2wFB2ZlZVR5cGUFCHBheW1lbnRBBQlwbXRBc3NldEEFCHBheW1lbnRCBQlwbXRBc3NldEIFBGJhbEEFBGJhbEIFB3NoYXJlSWQJAQtyZXBsZW5pc2hXWAcFBHBvb2wFB2ZlZVR5cGUFBHBtdEEFCXBtdEFzc2V0QQUEcG10QgUJcG10QXNzZXRCBQdzaGFyZUlkBAp1c2VyU3Rha2VkCAUNJHQwMTk1NjQxOTk1OAJfMQQHYXhseUZlZQgFDSR0MDE5NTY0MTk5NTgCXzIEDSR0MDE5OTU5MjAwODQJARJ3aXRoZHJhd0Ftb3VudENhbGMEBQRwb29sBQp1c2VyU3Rha2VkBQxib3Jyb3dBbW91bnQFDWJvcnJvd0Fzc2V0SWQDCQAAAgUNJHQwMTk5NTkyMDA4NAUNJHQwMTk5NTkyMDA4NAQIYXNzZXRJZEIIBQ0kdDAxOTk1OTIwMDg0Al80BA10b1VzZXJBbW91bnRCCAUNJHQwMTk5NTkyMDA4NAJfMwQIYXNzZXRJZEEIBQ0kdDAxOTk1OTIwMDg0Al8yBA10b1VzZXJBbW91bnRBCAUNJHQwMTk5NTkyMDA4NAJfMQkAlAoCBQNuaWwJAJUKAwUKdXNlclN0YWtlZAUNdG9Vc2VyQW1vdW50QQUNdG9Vc2VyQW1vdW50QgkAAgECJFN0cmljdCB2YWx1ZSBpcyBub3QgZXF1YWwgdG8gaXRzZWxmLgFpAQlyZXBsZW5pc2gDBHBvb2wIbGV2ZXJhZ2UNYm9ycm93QXNzZXRJZAMDCQBmAgBkBQhsZXZlcmFnZQYJAGYCBQhsZXZlcmFnZQCsAgkAAgECH0xldmVyYWdlIGNhbid0IGJlIDwxMDAgYW5kID4zMDAEBHR5cGUJARN2YWx1ZU9yRXJyb3JNZXNzYWdlAgkAnQgCBQR0aGlzCQCsAgIFBWtQb29sBQRwb29sAhJQb29sIGlzIG5vdCBpbml0ZWQEDSR0MDIwNDQwMjA1MjkJAQtnZXRQb29sRGF0YQIJAQdBZGRyZXNzAQkA2QQBBQRwb29sBQR0eXBlBANBSWQIBQ0kdDAyMDQ0MDIwNTI5Al8xBANCSWQIBQ0kdDAyMDQ0MDIwNTI5Al8yBARiYWxBCAUNJHQwMjA0NDAyMDUyOQJfMwQEYmFsQggFDSR0MDIwNDQwMjA1MjkCXzQEB3NoYXJlSWQIBQ0kdDAyMDQ0MDIwNTI5Al81BA0kdDAyMDUzMjIxMTY5AwkAAAIJAJADAQgFAWkIcGF5bWVudHMAAgMJAQIhPQIJAQxhc3NldElkVG9TdHIBCAkAkQMCCAUBaQhwYXltZW50cwAAB2Fzc2V0SWQFA0FJZAkAAgECFVdyb25nIHBheW1lbnQgYXNzZXQgQQMJAQIhPQIJAQxhc3NldElkVG9TdHIBCAkAkQMCCAUBaQhwYXltZW50cwABB2Fzc2V0SWQFA0JJZAkAAgECFVdyb25nIHBheW1lbnQgYXNzZXQgQgkAlgoECAkAkQMCCAUBaQhwYXltZW50cwAABmFtb3VudAUDQUlkCAkAkQMCCAUBaQhwYXltZW50cwABBmFtb3VudAUDQklkAwkAAAIJAJADAQgFAWkIcGF5bWVudHMAAQMJAAACCQEMYXNzZXRJZFRvU3RyAQgJAJEDAggFAWkIcGF5bWVudHMAAAdhc3NldElkBQNBSWQJAJYKBAgJAJEDAggFAWkIcGF5bWVudHMAAAZhbW91bnQFA0FJZAAABQNCSWQDCQAAAgkBDGFzc2V0SWRUb1N0cgEICQCRAwIIBQFpCHBheW1lbnRzAAAHYXNzZXRJZAUDQklkCQCWCgQAAAUDQUlkCAkAkQMCCAUBaQhwYXltZW50cwAABmFtb3VudAUDQklkCQACAQINV3JvbmcgcGF5bWVudAkAAgECHE9uZSBvciB0d28gcGF5bWVudHMgZXhwZWN0ZWQEBHBtdEEIBQ0kdDAyMDUzMjIxMTY5Al8xBAlwbXRBc3NldEEIBQ0kdDAyMDUzMjIxMTY5Al8yBARwbXRCCAUNJHQwMjA1MzIyMTE2OQJfMwQJcG10QXNzZXRCCAUNJHQwMjA1MzIyMTE2OQJfNAQJbmV3UG9zTnVtCQEYZ2V0TmV3VXNlclBvc2l0aW9uTnVtYmVyAgUEcG9vbAkApQgBCAUBaQZjYWxsZXIDCQBmAgUIbGV2ZXJhZ2UAZAQHZFByaWNlQQgKAAFACQD8BwQFD3ByaWNlT3JhY2xlQWRkcgIJZ2V0VFdBUDYwCQDMCAIFCXBtdEFzc2V0QQkAzAgCBwUDbmlsBQNuaWwDCQABAgUBQAIKKEludCwgSW50KQUBQAkAAgEJAKwCAgkAAwEFAUACHyBjb3VsZG4ndCBiZSBjYXN0IHRvIChJbnQsIEludCkCXzEEB2RQcmljZUIICgABQAkA/AcEBQ9wcmljZU9yYWNsZUFkZHICCWdldFRXQVA2MAkAzAgCBQlwbXRBc3NldEIJAMwIAgcFA25pbAUDbmlsAwkAAQIFAUACCihJbnQsIEludCkFAUAJAAIBCQCsAgIJAAMBBQFAAh8gY291bGRuJ3QgYmUgY2FzdCB0byAoSW50LCBJbnQpAl8xBAxwYXlkSW5Eb2xsYXIJAGQCCQBrAwUHZFByaWNlQQUEcG10QQkAbAYACgAACQEQZ2V0QXNzZXREZWNpbWFscwEFCXBtdEFzc2V0QQAAAAAFBERPV04JAGsDBQdkUHJpY2VCBQRwbXRCCQBsBgAKAAAJARBnZXRBc3NldERlY2ltYWxzAQUJcG10QXNzZXRCAAAAAAUERE9XTgQMYm9ycm93QW1vdW50CQBrAwUMcGF5ZEluRG9sbGFyCQBlAgUIbGV2ZXJhZ2UAZABkBAdyZXF1ZXN0CQC5CQIJAMwIAgUEdHlwZQkAzAgCCQClCAEIBQFpBmNhbGxlcgkAzAgCBQRwb29sCQDMCAIJAKQDAQUEcG10QQkAzAgCBQlwbXRBc3NldEEJAMwIAgkApAMBBQRwbXRCCQDMCAIFCXBtdEFzc2V0QgkAzAgCCQCkAwEFBGJhbEEJAMwIAgkApAMBBQRiYWxCCQDMCAIFB3NoYXJlSWQJAMwIAgUNYm9ycm93QXNzZXRJZAkAzAgCCQCkAwEFDGJvcnJvd0Ftb3VudAkAzAgCCQCkAwEFCW5ld1Bvc051bQUDbmlsAgEsBAxuZXdSZXF1ZXN0SWQKAAFACQD8BwQFBHRoaXMCEGNyZWF0ZU5ld1JlcXVlc3QJAMwIAgUHcmVxdWVzdAUDbmlsBQNuaWwDCQABAgUBQAIDSW50BQFACQACAQkArAICCQADAQUBQAIYIGNvdWxkbid0IGJlIGNhc3QgdG8gSW50AwkAAAIFDG5ld1JlcXVlc3RJZAUMbmV3UmVxdWVzdElkBARhcmdzCQDMCAIJAKwCAgkArAICCQClCAEIBQFpBmNhbGxlcgIBXwkApAMBBQluZXdQb3NOdW0JAMwIAgUHc2hhcmVJZAkAzAgCBQ1ib3Jyb3dBc3NldElkCQDMCAIFDGJvcnJvd0Ftb3VudAkAzAgCCQClCAEFBHRoaXMJAMwIAgIRcmVwbGVuaXNoRnJvbUxhbmQJAMwIAgkApAMBCQETdmFsdWVPckVycm9yTWVzc2FnZQIFDG5ld1JlcXVlc3RJZAIYQ2FuJ3QgY3JlYXRlIG5ldyByZXF1ZXN0BQNuaWwEA2ludgkA/QcECQEOZ2V0TGVuZFNydkFkZHIAAg1mbGFzaFBvc2l0aW9uBQRhcmdzBQNuaWwDCQAAAgUDaW52BQNpbnYFA25pbAkAAgECJFN0cmljdCB2YWx1ZSBpcyBub3QgZXF1YWwgdG8gaXRzZWxmLgkAAgECJFN0cmljdCB2YWx1ZSBpcyBub3QgZXF1YWwgdG8gaXRzZWxmLgQNJHQwMjI1MTAyMjkwMQMJAAACBQR0eXBlBQdTRl9QT09MCQEPcmVwbGVuaXNoU3dvcEZpCQUEcG9vbAULTk9fTE9BTl9GRUUFBHBtdEEFCXBtdEFzc2V0QQUEcG10QgUJcG10QXNzZXRCBQRiYWxBBQRiYWxCBQdzaGFyZUlkCQELcmVwbGVuaXNoV1gHBQRwb29sBQtOT19MT0FOX0ZFRQUEcG10QQUJcG10QXNzZXRBBQRwbXRCBQlwbXRBc3NldEIFB3NoYXJlSWQECnVzZXJTdGFrZWQIBQ0kdDAyMjUxMDIyOTAxAl8xBAdheGx5RmVlCAUNJHQwMjI1MTAyMjkwMQJfMgkBEHJlcGxlbmlzaEVudHJpZXMHBQRwb29sCQClCAEIBQFpBmNhbGxlcgUKdXNlclN0YWtlZAUHYXhseUZlZQUJbmV3UG9zTnVtBQdzaGFyZUlkBQR0eXBlAWkBEXJlcGxlbmlzaEZyb21MYW5kAQlyZXF1ZXN0SWQEB3JlcXVlc3QJALUJAgkBE3ZhbHVlT3JFcnJvck1lc3NhZ2UCCQCdCAIFBHRoaXMJAKwCAgUJcmVxdWVzdElkBQprUmVxdWVzdElkCQCsAgICE05vIHJlcXVlc3Qgd2l0aCBpZCAFCXJlcXVlc3RJZAIBLAMJAQIhPQIJAJADAQgFAWkIcGF5bWVudHMAAQkAAgECEldyb25nIHBheW1lbnQgc2l6ZQMDCQECIT0CCQEMYXNzZXRJZFRvU3RyAQgJAJEDAggFAWkIcGF5bWVudHMAAAdhc3NldElkCQCRAwIFB3JlcXVlc3QACgYJAQIhPQIICQCRAwIIBQFpCHBheW1lbnRzAAAGYW1vdW50CQENcGFyc2VJbnRWYWx1ZQEJAJEDAgUHcmVxdWVzdAALCQACAQINV3JvbmcgcGF5bWVudAQEcG10QQMJAAACCQCRAwIFB3JlcXVlc3QABAkBDGFzc2V0SWRUb1N0cgEICQCRAwIIBQFpCHBheW1lbnRzAAAHYXNzZXRJZAkAZAIJAQ1wYXJzZUludFZhbHVlAQkAkQMCBQdyZXF1ZXN0AAMICQCRAwIIBQFpCHBheW1lbnRzAAAGYW1vdW50CQENcGFyc2VJbnRWYWx1ZQEJAJEDAgUHcmVxdWVzdAADBARwbXRCAwkAAAIJAJEDAgUHcmVxdWVzdAAGCQEMYXNzZXRJZFRvU3RyAQgJAJEDAggFAWkIcGF5bWVudHMAAAdhc3NldElkCQBkAgkBDXBhcnNlSW50VmFsdWUBCQCRAwIFB3JlcXVlc3QABQgJAJEDAggFAWkIcGF5bWVudHMAAAZhbW91bnQJAQ1wYXJzZUludFZhbHVlAQkAkQMCBQdyZXF1ZXN0AAMEBHBvb2wJAJEDAgUHcmVxdWVzdAACBAR1c2VyCQCRAwIFB3JlcXVlc3QAAQQHc2hhcmVJZAkAkQMCBQdyZXF1ZXN0AAkEBnBvc051bQkBDXBhcnNlSW50VmFsdWUBCQCRAwIFB3JlcXVlc3QADAQNJHQwMjM4NTkyNDM3NAMJAAACCQCRAwIFB3JlcXVlc3QAAAUHU0ZfUE9PTAkBD3JlcGxlbmlzaFN3b3BGaQkFBHBvb2wFCExPQU5fRkVFBQRwbXRBCQCRAwIFB3JlcXVlc3QABAUEcG10QgkAkQMCBQdyZXF1ZXN0AAYJAQ1wYXJzZUludFZhbHVlAQkAkQMCBQdyZXF1ZXN0AAcJAQ1wYXJzZUludFZhbHVlAQkAkQMCBQdyZXF1ZXN0AAgFB3NoYXJlSWQDCQAAAgkAkQMCBQdyZXF1ZXN0AAAFB1dYX1BPT0wJAQtyZXBsZW5pc2hXWAcFBHBvb2wFCExPQU5fRkVFBQRwbXRBCQCRAwIFB3JlcXVlc3QABAUEcG10QgkAkQMCBQdyZXF1ZXN0AAYFB3NoYXJlSWQJAAIBAhJXcm9uZyByZXF1ZXN0IHR5cGUECnVzZXJTdGFrZWQIBQ0kdDAyMzg1OTI0Mzc0Al8xBAdheGx5RmVlCAUNJHQwMjM4NTkyNDM3NAJfMgQNYm9ycm93RW50cmllcwkAzAgCCQEMSW50ZWdlckVudHJ5AgkArAICCQCsAgIJAKwCAgkArAICCQCsAgIJAJEDAgUHcmVxdWVzdAACAgFfCQCRAwIFB3JlcXVlc3QAAQIBXwkAkQMCBQdyZXF1ZXN0AAwFEWtVc2VyQm9ycm93QW1vdW50CAkAkQMCCAUBaQhwYXltZW50cwAABmFtb3VudAkAzAgCCQELU3RyaW5nRW50cnkCCQCsAgIJAKwCAgkArAICCQCsAgIJAKwCAgkAkQMCBQdyZXF1ZXN0AAICAV8JAJEDAgUHcmVxdWVzdAABAgFfCQCRAwIFB3JlcXVlc3QADAUSa1VzZXJCb3Jyb3dBc3NldElkCQCRAwIFB3JlcXVlc3QACgUDbmlsBAdlbnRyaWVzCQEQcmVwbGVuaXNoRW50cmllcwcFBHBvb2wFBHVzZXIFCnVzZXJTdGFrZWQFB2F4bHlGZWUFBnBvc051bQUHc2hhcmVJZAkAkQMCBQdyZXF1ZXN0AAAJAJQKAgkAzQgCCQDOCAIFB2VudHJpZXMFDWJvcnJvd0VudHJpZXMJAQtEZWxldGVFbnRyeQEJAKwCAgUJcmVxdWVzdElkBQprUmVxdWVzdElkBQp1c2VyU3Rha2VkAWkBCHdpdGhkcmF3AgRwb29sBXBvc0lkBAR1c2VyCQClCAEIBQFpBmNhbGxlcgQHcEFtb3VudAkBE3ZhbHVlT3JFcnJvck1lc3NhZ2UCCQCaCAIFBHRoaXMJAKwCAgkArAICCQCsAgIJAKwCAgkArAICBQRwb29sAgFfBQR1c2VyAgFfCQCkAwEFBXBvc0lkBQ1rVXNlclBvc2l0aW9uAhBVbmtub3duIHBvc2l0aW9uBAx1c2VySW50ZXJlc3QJARFAZXh0ck5hdGl2ZSgxMDUwKQIFBHRoaXMJAKwCAgkArAICCQCsAgIJAKwCAgkArAICBQRwb29sAgFfBQR1c2VyAgFfCQCkAwEFBXBvc0lkBRVrVXNlclBvc2l0aW9uSW50ZXJlc3QEC3Bvb2xJbnRlcnN0CQERQGV4dHJOYXRpdmUoMTA1MCkCBQR0aGlzCQCsAgIFBHBvb2wFDWtQb29sSW50ZXJlc3QEDnBvb2xUb3RhbFNoYXJlCQERZ2V0UG9vbFRvdGFsU2hhcmUBBQRwb29sBA91c2VyQ2FuV2l0aGRyYXcJAGQCBQdwQW1vdW50CQBrAwUHcEFtb3VudAkAZQIFC3Bvb2xJbnRlcnN0BQx1c2VySW50ZXJlc3QFB1NDQUxFMTAECHVzZXJBZGRyCQEHQWRkcmVzcwEJANkEAQUEdXNlcgQMYm9ycm93QW1vdW50CQERQGV4dHJOYXRpdmUoMTA1MCkCBQR0aGlzCQCsAgIJAKwCAgkArAICCQCsAgIJAKwCAgUEcG9vbAIBXwUEdXNlcgIBXwkApAMBBQVwb3NJZAURa1VzZXJCb3Jyb3dBbW91bnQEC2JvcnJvd0Fzc2V0CQERQGV4dHJOYXRpdmUoMTA1MykCBQR0aGlzCQCsAgIJAKwCAgkArAICCQCsAgIJAKwCAgUEcG9vbAIBXwUEdXNlcgIBXwkApAMBBQVwb3NJZAUSa1VzZXJCb3Jyb3dBc3NldElkBARkZWJ0AwkAZgIFDGJvcnJvd0Ftb3VudAAACgABQAkA/AcECQEOZ2V0TGVuZFNydkFkZHIAAgxnZXRBc3NldERlYnQJAMwIAgcJAMwIAgkArAICCQCsAgIJAKwCAgkArAICBQRwb29sAgFfBQR1c2VyAgFfCQCkAwEFBXBvc0lkCQDMCAIFC2JvcnJvd0Fzc2V0BQNuaWwFA25pbAMJAAECBQFAAgNJbnQFAUAJAAIBCQCsAgIJAAMBBQFAAhggY291bGRuJ3QgYmUgY2FzdCB0byBJbnQAAAQNJHQwMjU3ODEyNTkwMQkBEndpdGhkcmF3QW1vdW50Q2FsYwQFBHBvb2wFD3VzZXJDYW5XaXRoZHJhdwUEZGVidAULYm9ycm93QXNzZXQDCQAAAgUNJHQwMjU3ODEyNTkwMQUNJHQwMjU3ODEyNTkwMQQIYXNzZXRJZEIIBQ0kdDAyNTc4MTI1OTAxAl80BA10b1VzZXJBbW91bnRCCAUNJHQwMjU3ODEyNTkwMQJfMwQIYXNzZXRJZEEIBQ0kdDAyNTc4MTI1OTAxAl8yBA10b1VzZXJBbW91bnRBCAUNJHQwMjU3ODEyNTkwMQJfMQQLY2xvc2VEYnRJbnYDCQBmAgUEZGVidAAACQD8BwQJAQ5nZXRMZW5kU3J2QWRkcgACCHJlcGF5Rm9yCQDMCAIJAKwCAgkArAICBQR1c2VyAgFfCQCkAwEFBXBvc0lkBQNuaWwJAMwIAgkBD0F0dGFjaGVkUGF5bWVudAIJAQ5hc3NldElkRnJvbVN0cgEFC2JvcnJvd0Fzc2V0BQRkZWJ0BQNuaWwAAAMJAAACBQtjbG9zZURidEludgULY2xvc2VEYnRJbnYJAMwIAgkBC0RlbGV0ZUVudHJ5AQkArAICCQCsAgIJAKwCAgkArAICCQCsAgIFBHBvb2wCAV8FBHVzZXICAV8JAKQDAQUFcG9zSWQFDWtVc2VyUG9zaXRpb24JAMwIAgkBC0RlbGV0ZUVudHJ5AQkArAICCQCsAgIJAKwCAgkArAICCQCsAgIFBHBvb2wCAV8FBHVzZXICAV8JAKQDAQUFcG9zSWQFFWtVc2VyUG9zaXRpb25JbnRlcmVzdAkAzAgCCQEMSW50ZWdlckVudHJ5AgkArAICBQRwb29sBQprUG9vbFRvdGFsCQBlAgUOcG9vbFRvdGFsU2hhcmUFD3VzZXJDYW5XaXRoZHJhdwkAzAgCCQEOU2NyaXB0VHJhbnNmZXIDBQh1c2VyQWRkcgUNdG9Vc2VyQW1vdW50QQkBDmFzc2V0SWRGcm9tU3RyAQUIYXNzZXRJZEEJAMwIAgkBDlNjcmlwdFRyYW5zZmVyAwUIdXNlckFkZHIFDXRvVXNlckFtb3VudEIJAQ5hc3NldElkRnJvbVN0cgEFCGFzc2V0SWRCBQNuaWwJAAIBAiRTdHJpY3QgdmFsdWUgaXMgbm90IGVxdWFsIHRvIGl0c2VsZi4JAAIBAiRTdHJpY3QgdmFsdWUgaXMgbm90IGVxdWFsIHRvIGl0c2VsZi4BaQEQY3JlYXRlTmV3UmVxdWVzdAEGcGFyYW1zCQELdmFsdWVPckVsc2UCCQEKaXNTZWxmQ2FsbAEFAWkEDG5ld1JlcXVlc3RJZAkAZAIJAQt2YWx1ZU9yRWxzZQIJAJoIAgUEdGhpcwUMa1JlcXVlc3RJdGVyAAAAAQkAlAoCCQDMCAIJAQtTdHJpbmdFbnRyeQIJAKwCAgkApAMBBQxuZXdSZXF1ZXN0SWQFCmtSZXF1ZXN0SWQFBnBhcmFtcwkAzAgCCQEMSW50ZWdlckVudHJ5AgUMa1JlcXVlc3RJdGVyBQxuZXdSZXF1ZXN0SWQFA25pbAUMbmV3UmVxdWVzdElkAWkBEmNhcGl0YWxpemVFeEtlZXBlcgwEcG9vbAR0eXBlCXRva2VuVG9JZBBhbW91bnRUb0V4Y2hhbmdlBWNsYWltCWFtb3VudHNJbglhZGRyZXNzZXMPYXNzZXRzVG9SZWNlaXZlC2VzdFJlY2VpdmVkEXNsaXBwYWdlVG9sZXJhbmNlC21pblJlY2VpdmVkB29wdGlvbnMEDSR0MDI3MTk4MjczOTIDBQVjbGFpbQkBC2NsYWltRmFybWVkAgUEdHlwZQUEcG9vbAQMY2xhaW1lZEFzc2V0AwkAAAIFBHR5cGUFB1NGX1BPT0wFBlNXT1BJRAUEV1hJRAkAlAoCBRBhbW91bnRUb0V4Y2hhbmdlBQxjbGFpbWVkQXNzZXQEDWNsYWltZWRBbW91bnQIBQ0kdDAyNzE5ODI3MzkyAl8xBAxjbGFpbWVkQXNzZXQIBQ0kdDAyNzE5ODI3MzkyAl8yBA9leGNoYW5nZWRBbW91bnQJAQ5leGNoYW5nZUtlZXBlcgoFCXRva2VuVG9JZAUQYW1vdW50VG9FeGNoYW5nZQUMY2xhaW1lZEFzc2V0BQlhbW91bnRzSW4FCWFkZHJlc3NlcwUPYXNzZXRzVG9SZWNlaXZlBQtlc3RSZWNlaXZlZAURc2xpcHBhZ2VUb2xlcmFuY2UFC21pblJlY2VpdmVkBQdvcHRpb25zBAZjaGFuZ2UJAGUCBQ1jbGFpbWVkQW1vdW50BRBhbW91bnRUb0V4Y2hhbmdlBAtjaGFuZ2VFbnRyeQMJAGYCBQZjaGFuZ2UAAAkAzAgCCQEMSW50ZWdlckVudHJ5AgkArAICBQRwb29sBQ5rUG9vbENhcENoYW5nZQkAZAIFBmNoYW5nZQkBC3ZhbHVlT3JFbHNlAgkAmggCBQR0aGlzCQCsAgIFBHBvb2wFDmtQb29sQ2FwQ2hhbmdlAAAFA25pbAUDbmlsCQDOCAIJAQpjYXBpdGFsaXplBAUEcG9vbAUEdHlwZQUJdG9rZW5Ub0lkBQ9leGNoYW5nZWRBbW91bnQFC2NoYW5nZUVudHJ5AWkBEmNhcGl0YWxpemVFeFBhenpsZQgEcG9vbAR0eXBlCXRva2VuVG9JZBBhbW91bnRUb0V4Y2hhbmdlBWNsYWltCXJvdXRlc1N0cgxtaW5Ub1JlY2VpdmUHb3B0aW9ucwQNJHQwMjgwNDgyODI0MgMFBWNsYWltCQELY2xhaW1GYXJtZWQCBQR0eXBlBQRwb29sBAxjbGFpbWVkQXNzZXQDCQAAAgUEdHlwZQUHU0ZfUE9PTAUGU1dPUElEBQRXWElECQCUCgIFEGFtb3VudFRvRXhjaGFuZ2UFDGNsYWltZWRBc3NldAQNY2xhaW1lZEFtb3VudAgFDSR0MDI4MDQ4MjgyNDICXzEEDGNsYWltZWRBc3NldAgFDSR0MDI4MDQ4MjgyNDICXzIED2V4Y2hhbmdlZEFtb3VudAkBDmV4Y2hhbmdlUGF6emxlBgUJdG9rZW5Ub0lkBRBhbW91bnRUb0V4Y2hhbmdlBQxjbGFpbWVkQXNzZXQFCXJvdXRlc1N0cgUMbWluVG9SZWNlaXZlBQdvcHRpb25zBAZjaGFuZ2UJAGUCBQ1jbGFpbWVkQW1vdW50BRBhbW91bnRUb0V4Y2hhbmdlBAtjaGFuZ2VFbnRyeQMJAGYCBQZjaGFuZ2UAAAkAzAgCCQEMSW50ZWdlckVudHJ5AgkArAICBQRwb29sBQ5rUG9vbENhcENoYW5nZQkAZAIFBmNoYW5nZQkBC3ZhbHVlT3JFbHNlAgkAmggCBQR0aGlzCQCsAgIFBHBvb2wFDmtQb29sQ2FwQ2hhbmdlAAAFA25pbAUDbmlsCQDOCAIJAQpjYXBpdGFsaXplBAUEcG9vbAUEdHlwZQUJdG9rZW5Ub0lkBQ9leGNoYW5nZWRBbW91bnQFC2NoYW5nZUVudHJ5AWkBEmNhcGl0YWxpemVFeFN3b3BGaQwEcG9vbAR0eXBlCXRva2VuVG9JZBBhbW91bnRUb0V4Y2hhbmdlBWNsYWltCmV4Y2hhbmdlcnMOZXhjaGFuZ2Vyc1R5cGUFYXJnczEFYXJnczIRcm91dGluZ0Fzc2V0c0tleXMSbWluQW1vdW50VG9SZWNlaXZlB29wdGlvbnMEDSR0MDI4OTY1MjkxNTkDBQVjbGFpbQkBC2NsYWltRmFybWVkAgUEdHlwZQUEcG9vbAQMY2xhaW1lZEFzc2V0AwkAAAIFBHR5cGUFB1NGX1BPT0wFBlNXT1BJRAUEV1hJRAkAlAoCBRBhbW91bnRUb0V4Y2hhbmdlBQxjbGFpbWVkQXNzZXQEDWNsYWltZWRBbW91bnQIBQ0kdDAyODk2NTI5MTU5Al8xBAxjbGFpbWVkQXNzZXQIBQ0kdDAyODk2NTI5MTU5Al8yBA9leGNoYW5nZWRBbW91bnQJAQ5leGNoYW5nZVN3b3BGaQoFCXRva2VuVG9JZAUQYW1vdW50VG9FeGNoYW5nZQUMY2xhaW1lZEFzc2V0BQpleGNoYW5nZXJzBQ5leGNoYW5nZXJzVHlwZQUFYXJnczEFBWFyZ3MyBRFyb3V0aW5nQXNzZXRzS2V5cwUSbWluQW1vdW50VG9SZWNlaXZlBQdvcHRpb25zBAZjaGFuZ2UJAGUCBQ1jbGFpbWVkQW1vdW50BRBhbW91bnRUb0V4Y2hhbmdlBAtjaGFuZ2VFbnRyeQMJAGYCBQZjaGFuZ2UAAAkAzAgCCQEMSW50ZWdlckVudHJ5AgkArAICBQRwb29sBQ5rUG9vbENhcENoYW5nZQkAZAIFBmNoYW5nZQkBC3ZhbHVlT3JFbHNlAgkAmggCBQR0aGlzCQCsAgIFBHBvb2wFDmtQb29sQ2FwQ2hhbmdlAAAFA25pbAUDbmlsCQDOCAIJAQpjYXBpdGFsaXplBAUEcG9vbAUEdHlwZQUJdG9rZW5Ub0lkBQ9leGNoYW5nZWRBbW91bnQFC2NoYW5nZUVudHJ5AWkBC2luaXROZXdQb29sBQR0eXBlCHBvb2xBZGRyC2luRmVlTm9Mb2FuCWluRmVlTG9hbgZjYXBGZWUDAwkBAiE9AgUEdHlwZQUHU0ZfUE9PTAkBAiE9AgUEdHlwZQUHV1hfUE9PTAcJAAIBAgpXcm9uZyB0eXBlCQDMCAIJAQxJbnRlZ2VyRW50cnkCCQCsAgIFCHBvb2xBZGRyBRVrQXhseUluRmVlV2l0aG91dExvYW4FC2luRmVlTm9Mb2FuCQDMCAIJAQxJbnRlZ2VyRW50cnkCCQCsAgIFCHBvb2xBZGRyBRJrQXhseUluRmVlV2l0aExvYW4FCWluRmVlTG9hbgkAzAgCCQEMSW50ZWdlckVudHJ5AgkArAICBQhwb29sQWRkcgULa0F4bHlDYXBGZWUFBmNhcEZlZQkAzAgCCQEMSW50ZWdlckVudHJ5AgkArAICBQhwb29sQWRkcgUNa1Bvb2xJbnRlcmVzdAAACQDMCAIJAQtTdHJpbmdFbnRyeQIJAKwCAgUFa1Bvb2wFCHBvb2xBZGRyBQR0eXBlBQNuaWwBAnR4AQZ2ZXJpZnkACQD0AwMIBQJ0eAlib2R5Qnl0ZXMJAJEDAggFAnR4BnByb29mcwAACAUCdHgPc2VuZGVyUHVibGljS2V5qbGlsQ==", "height": 2539794, "applicationStatus": "succeeded", "spentComplexity": 0 } View: original | compacted Prev: 5DC9irA7VoBt7GYocYGE9q6omzp6KrEAKDU6yYu2wYr5 Next: BRGUuwmKsMY4YGncvLohaKebGnALhZaoJ1XW3Txh81pB Diff:
OldNewDifferences
501501 else ca(ad, bQ, bR, aw, ax, bS, bT)
502502
503503
504+func ch (ad,ci,cj,ck) = {
505+ 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))
514+ then {
515+ let co = Q(ao(bR))
516+ if ((co == co))
517+ 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)
522+ else throw("Wrong position type")
523+ if ((bg == bg))
524+ 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))
531+ then {
532+ let cv = if (if ((ck == bQ))
533+ then (cj > cs)
534+ else false)
535+ then (cj - cs)
536+ else if (if ((ck == bR))
537+ then (cj > ct)
538+ else false)
539+ then (cj - ct)
540+ else 0
541+ let cw = if ((cv > 0))
542+ then cg(cl, ad, bQ, bR, aw, ax, cv, ck)
543+ else 0
544+ if ((cw == cw))
545+ then {
546+ let cx = Q(ao(bQ))
547+ let cy = Q(ao(bR))
548+ $Tuple2((cx - cn), (cy - co))
549+ }
550+ else throw("Strict value is not equal to itself.")
551+ }
552+ else $Tuple2(cs, ct)
553+ let cz = cu._1
554+ let cA = cu._2
555+ $Tuple4(cz, bQ, cA, bR)
556+ }
557+ else throw("Strict value is not equal to itself.")
558+ }
559+ else throw("Strict value is not equal to itself.")
560+ }
561+ else throw("Strict value is not equal to itself.")
562+ }
563+
564+
504565 @Callable(P)
505-func replenishREADONLY (ad,ch,ci) = if (if ((100 > ch))
566+func replenishREADONLY (ad,cB,cC) = if (if ((100 > cB))
506567 then true
507- else (ch > 300))
568+ else (cB > 300))
508569 then throw("Leverage can't be <100 and >300")
509570 else {
510571 let ab = valueOrErrorMessage(getString(this, (A + ad)), "Pool is not inited")
511- let cj = aa(Address(fromBase58String(ad)), ab)
512- let bI = cj._1
513- let bJ = cj._2
514- let aw = cj._3
515- let ax = cj._4
516- let ay = cj._5
517- let ck = if ((size(P.payments) == 2))
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))
518579 then if ((an(P.payments[0].assetId) != bI))
519580 then throw("Wrong payment asset A")
520581 else if ((an(P.payments[1].assetId) != bJ))
527588 then $Tuple4(0, bI, P.payments[0].amount, bJ)
528589 else throw("Wrong payment")
529590 else throw("One or two payments expected")
530- let as = ck._1
531- let at = ck._2
532- let au = ck._3
533- let av = ck._4
534- let cl = if ((ch > 100))
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))
535596 then {
536- let cm = ( let Z = invoke(K, "getTWAP60", [at, false], nil)
597+ let cG = ( let Z = invoke(K, "getTWAP60", [at, false], nil)
537598 if ($isInstanceOf(Z, "(Int, Int)"))
538599 then Z
539600 else throw(($getType(Z) + " couldn't be cast to (Int, Int)")))._1
540- let cn = ( let Z = invoke(K, "getTWAP60", [av, false], nil)
601+ let cH = ( let Z = invoke(K, "getTWAP60", [av, false], nil)
541602 if ($isInstanceOf(Z, "(Int, Int)"))
542603 then Z
543604 else throw(($getType(Z) + " couldn't be cast to (Int, Int)")))._1
544- let co = (fraction(cm, as, pow(10, 0, ap(at), 0, 0, DOWN)) + fraction(cn, au, pow(10, 0, ap(av), 0, 0, DOWN)))
545- let cp = fraction(co, (ch - 100), 100)
546- if ((ci == at))
547- then $Tuple3((as + cp), au, d)
548- else $Tuple3(as, (au + cp), d)
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+ if ((cC == at))
608+ then $Tuple4((as + cJ), au, d, cJ)
609+ else $Tuple4(as, (au + cJ), d, cJ)
549610 }
550- else $Tuple3(as, au, e)
551- let cq = cl._1
552- let cr = cl._2
553- let ah = cl._3
554- let cs = if ((ab == a))
555- then ar(ad, ah, cq, at, cr, av, aw, ax, ay)
611+ else $Tuple4(as, au, e, 0)
612+ let cK = cF._1
613+ let cL = cF._2
614+ let ah = cF._3
615+ let cJ = cF._4
616+ let cM = if ((ab == a))
617+ then ar(ad, ah, cK, at, cL, av, aw, ax, ay)
556618 else aR(ad, ah, as, at, au, av, ay)
557- let ct = cs._1
558- let bM = cs._2
559- $Tuple2(nil, ct)
619+ let cN = cM._1
620+ let bM = cM._2
621+ let cO = ch(ad, cN, cJ, cC)
622+ if ((cO == cO))
623+ then {
624+ let bR = cO._4
625+ let cA = cO._3
626+ let bQ = cO._2
627+ let cz = cO._1
628+ $Tuple2(nil, $Tuple3(cN, cz, cA))
629+ }
630+ else throw("Strict value is not equal to itself.")
560631 }
561632
562633
563634
564635 @Callable(P)
565-func replenish (ad,ch,ci) = if (if ((100 > ch))
636+func replenish (ad,cB,cC) = if (if ((100 > cB))
566637 then true
567- else (ch > 300))
638+ else (cB > 300))
568639 then throw("Leverage can't be <100 and >300")
569640 else {
570641 let ab = valueOrErrorMessage(getString(this, (A + ad)), "Pool is not inited")
571- let cu = aa(Address(fromBase58String(ad)), ab)
572- let bI = cu._1
573- let bJ = cu._2
574- let aw = cu._3
575- let ax = cu._4
576- let ay = cu._5
577- let cv = if ((size(P.payments) == 2))
642+ let cP = aa(Address(fromBase58String(ad)), ab)
643+ let bI = cP._1
644+ let bJ = cP._2
645+ let aw = cP._3
646+ let ax = cP._4
647+ let ay = cP._5
648+ let cQ = if ((size(P.payments) == 2))
578649 then if ((an(P.payments[0].assetId) != bI))
579650 then throw("Wrong payment asset A")
580651 else if ((an(P.payments[1].assetId) != bJ))
587658 then $Tuple4(0, bI, P.payments[0].amount, bJ)
588659 else throw("Wrong payment")
589660 else throw("One or two payments expected")
590- let as = cv._1
591- let at = cv._2
592- let au = cv._3
593- let av = cv._4
594- let cw = ae(ad, toString(P.caller))
595- if ((ch > 100))
661+ let as = cQ._1
662+ let at = cQ._2
663+ let au = cQ._3
664+ let av = cQ._4
665+ let cR = ae(ad, toString(P.caller))
666+ if ((cB > 100))
596667 then {
597- let cm = ( let Z = invoke(K, "getTWAP60", [at, false], nil)
668+ let cG = ( let Z = invoke(K, "getTWAP60", [at, false], nil)
598669 if ($isInstanceOf(Z, "(Int, Int)"))
599670 then Z
600671 else throw(($getType(Z) + " couldn't be cast to (Int, Int)")))._1
601- let cn = ( let Z = invoke(K, "getTWAP60", [av, false], nil)
672+ let cH = ( let Z = invoke(K, "getTWAP60", [av, false], nil)
602673 if ($isInstanceOf(Z, "(Int, Int)"))
603674 then Z
604675 else throw(($getType(Z) + " couldn't be cast to (Int, Int)")))._1
605- let co = (fraction(cm, as, pow(10, 0, ap(at), 0, 0, DOWN)) + fraction(cn, au, pow(10, 0, ap(av), 0, 0, DOWN)))
606- let cp = fraction(co, (ch - 100), 100)
607- let cx = makeString([ab, toString(P.caller), ad, toString(as), at, toString(au), av, toString(aw), toString(ax), ay, ci, toString(cp), toString(cw)], ",")
608- let cy = {
609- let Z = invoke(this, "createNewRequest", [cx], nil)
676+ let cI = (fraction(cG, as, pow(10, 0, ap(at), 0, 0, DOWN)) + fraction(cH, au, pow(10, 0, ap(av), 0, 0, DOWN)))
677+ let cJ = fraction(cI, (cB - 100), 100)
678+ let cS = makeString([ab, toString(P.caller), ad, toString(as), at, toString(au), av, toString(aw), toString(ax), ay, cC, toString(cJ), toString(cR)], ",")
679+ let cT = {
680+ let Z = invoke(this, "createNewRequest", [cS], nil)
610681 if ($isInstanceOf(Z, "Int"))
611682 then Z
612683 else throw(($getType(Z) + " couldn't be cast to Int"))
613684 }
614- if ((cy == cy))
685+ if ((cT == cT))
615686 then {
616- let cz = [((toString(P.caller) + "_") + toString(cw)), ay, ci, cp, toString(this), "replenishFromLand", toString(valueOrErrorMessage(cy, "Can't create new request"))]
617- let bg = reentrantInvoke(am(), "flashPosition", cz, nil)
687+ let cU = [((toString(P.caller) + "_") + toString(cR)), ay, cC, cJ, toString(this), "replenishFromLand", toString(valueOrErrorMessage(cT, "Can't create new request"))]
688+ let bg = reentrantInvoke(am(), "flashPosition", cU, nil)
618689 if ((bg == bg))
619690 then nil
620691 else throw("Strict value is not equal to itself.")
622693 else throw("Strict value is not equal to itself.")
623694 }
624695 else {
625- let cA = if ((ab == a))
696+ let cV = if ((ab == a))
626697 then ar(ad, e, as, at, au, av, aw, ax, ay)
627698 else aR(ad, e, as, at, au, av, ay)
628- let ct = cA._1
629- let bM = cA._2
630- aZ(ad, toString(P.caller), ct, bM, cw, ay, ab)
699+ let cN = cV._1
700+ let bM = cV._2
701+ aZ(ad, toString(P.caller), cN, bM, cR, ay, ab)
631702 }
632703 }
633704
634705
635706
636707 @Callable(P)
637-func replenishFromLand (cB) = {
638- let cx = split(valueOrErrorMessage(getString(this, (cB + y)), ("No request with id " + cB)), ",")
708+func replenishFromLand (cW) = {
709+ let cS = split(valueOrErrorMessage(getString(this, (cW + y)), ("No request with id " + cW)), ",")
639710 if ((size(P.payments) != 1))
640711 then throw("Wrong payment size")
641- else if (if ((an(P.payments[0].assetId) != cx[10]))
712+ else if (if ((an(P.payments[0].assetId) != cS[10]))
642713 then true
643- else (P.payments[0].amount != parseIntValue(cx[11])))
714+ else (P.payments[0].amount != parseIntValue(cS[11])))
644715 then throw("Wrong payment")
645716 else {
646- let as = if ((cx[4] == an(P.payments[0].assetId)))
647- then (parseIntValue(cx[3]) + P.payments[0].amount)
648- else parseIntValue(cx[3])
649- let au = if ((cx[6] == an(P.payments[0].assetId)))
650- then (parseIntValue(cx[5]) + P.payments[0].amount)
651- else parseIntValue(cx[3])
652- let ad = cx[2]
653- let af = cx[1]
654- let ay = cx[9]
655- let bb = parseIntValue(cx[12])
656- let cC = if ((cx[0] == a))
657- then ar(ad, d, as, cx[4], au, cx[6], parseIntValue(cx[7]), parseIntValue(cx[8]), ay)
658- else if ((cx[0] == b))
659- then aR(ad, d, as, cx[4], au, cx[6], ay)
717+ let as = if ((cS[4] == an(P.payments[0].assetId)))
718+ then (parseIntValue(cS[3]) + P.payments[0].amount)
719+ else parseIntValue(cS[3])
720+ let au = if ((cS[6] == an(P.payments[0].assetId)))
721+ then (parseIntValue(cS[5]) + P.payments[0].amount)
722+ else parseIntValue(cS[3])
723+ let ad = cS[2]
724+ let af = cS[1]
725+ let ay = cS[9]
726+ let bb = parseIntValue(cS[12])
727+ let cX = if ((cS[0] == a))
728+ then ar(ad, d, as, cS[4], au, cS[6], parseIntValue(cS[7]), parseIntValue(cS[8]), ay)
729+ else if ((cS[0] == b))
730+ then aR(ad, d, as, cS[4], au, cS[6], ay)
660731 else throw("Wrong request type")
661- let ct = cC._1
662- let bM = cC._2
663- let cD = [IntegerEntry((((((cx[2] + "_") + cx[1]) + "_") + cx[12]) + p), P.payments[0].amount), StringEntry((((((cx[2] + "_") + cx[1]) + "_") + cx[12]) + q), cx[10])]
664- let cE = aZ(ad, af, ct, bM, bb, ay, cx[0])
665- $Tuple2(((cE ++ cD) :+ DeleteEntry((cB + y))), ct)
732+ let cN = cX._1
733+ let bM = cX._2
734+ let cY = [IntegerEntry((((((cS[2] + "_") + cS[1]) + "_") + cS[12]) + p), P.payments[0].amount), StringEntry((((((cS[2] + "_") + cS[1]) + "_") + cS[12]) + q), cS[10])]
735+ let cZ = aZ(ad, af, cN, bM, bb, ay, cS[0])
736+ $Tuple2(((cZ ++ cY) :+ DeleteEntry((cW + y))), cN)
666737 }
667738 }
668739
669740
670741
671742 @Callable(P)
672-func withdraw (ad,cF) = {
743+func withdraw (ad,da) = {
673744 let af = toString(P.caller)
674- let cG = valueOrErrorMessage(getString(this, (A + ad)), "Unknown pool")
675- let cH = valueOrErrorMessage(getInteger(this, (((((ad + "_") + af) + "_") + toString(cF)) + o)), "Unknown position")
676- let cI = getIntegerValue(this, (((((ad + "_") + af) + "_") + toString(cF)) + s))
677- let cJ = getIntegerValue(this, (ad + u))
678- let cK = ac(ad)
679- let cL = (cH + fraction(cH, (cJ - cI), g))
680- let W = Address(fromBase58String(ad))
681- let cM = Address(fromBase58String(af))
682- let cp = getIntegerValue(this, (((((ad + "_") + af) + "_") + toString(cF)) + p))
683- let cN = getStringValue(this, (((((ad + "_") + af) + "_") + toString(cF)) + q))
684- let cO = aa(Address(fromBase58String(ad)), cG)
685- let bQ = cO._1
686- let bR = cO._2
687- let aw = cO._3
688- let ax = cO._4
689- let ay = cO._5
690- let cP = Q(ao(bQ))
691- if ((cP == cP))
745+ let db = valueOrErrorMessage(getInteger(this, (((((ad + "_") + af) + "_") + toString(da)) + o)), "Unknown position")
746+ let dc = getIntegerValue(this, (((((ad + "_") + af) + "_") + toString(da)) + s))
747+ let dd = getIntegerValue(this, (ad + u))
748+ let de = ac(ad)
749+ let ci = (db + fraction(db, (dd - dc), g))
750+ let df = Address(fromBase58String(af))
751+ let cJ = getIntegerValue(this, (((((ad + "_") + af) + "_") + toString(da)) + p))
752+ let ck = getStringValue(this, (((((ad + "_") + af) + "_") + toString(da)) + q))
753+ let cj = if ((cJ > 0))
692754 then {
693- let cQ = Q(ao(bR))
694- if ((cQ == cQ))
695- then {
696- let bg = if ((cG == a))
697- then invoke(W, "callFunction", ["withdraw", [toString(cL)]], nil)
698- else if ((cG == b))
699- then invoke(W, "unstakeAndGet", [cL], nil)
700- else throw("Wrong position type")
701- if ((bg == bg))
702- then {
703- let cR = Q(ao(bQ))
704- let cS = Q(ao(bR))
705- let cT = $Tuple2((cR - cP), (cS - cQ))
706- let cU = cT._1
707- let cV = cT._2
708- let cW = if ((cp > 0))
709- then {
710- let cX = {
711- let Z = invoke(am(), "getAssetDebt", [false, ((((ad + "_") + af) + "_") + toString(cF)), cN], nil)
712- if ($isInstanceOf(Z, "Int"))
713- then Z
714- else throw(($getType(Z) + " couldn't be cast to Int"))
715- }
716- let cY = if (if ((cN == bQ))
717- then (cX > cU)
718- else false)
719- then (cX - cU)
720- else if (if ((cN == bR))
721- then (cX > cV)
722- else false)
723- then (cX - cV)
724- else 0
725- let cZ = if ((cY > 0))
726- then cg(cG, ad, bQ, bR, aw, ax, cY, cN)
727- else 0
728- if ((cZ == cZ))
729- then {
730- let da = invoke(am(), "repayFor", [((af + "_") + toString(cF))], [AttachedPayment(ao(cN), cX)])
731- if ((da == da))
732- then {
733- let db = Q(ao(bQ))
734- let dc = Q(ao(bR))
735- $Tuple2((db - cP), (dc - cQ))
736- }
737- else throw("Strict value is not equal to itself.")
738- }
739- else throw("Strict value is not equal to itself.")
740- }
741- else $Tuple2(cU, cV)
742- let dd = cW._1
743- let de = cW._2
744-[DeleteEntry((((((ad + "_") + af) + "_") + toString(cF)) + o)), DeleteEntry((((((ad + "_") + af) + "_") + toString(cF)) + s)), IntegerEntry((ad + t), (cK - cL)), ScriptTransfer(cM, cU, ao(bQ)), ScriptTransfer(cM, cV, ao(bR))]
745- }
746- else throw("Strict value is not equal to itself.")
747- }
755+ let Z = invoke(am(), "getAssetDebt", [false, ((((ad + "_") + af) + "_") + toString(da)), ck], nil)
756+ if ($isInstanceOf(Z, "Int"))
757+ then Z
758+ else throw(($getType(Z) + " couldn't be cast to Int"))
759+ }
760+ else 0
761+ let dg = ch(ad, ci, cj, ck)
762+ if ((dg == dg))
763+ then {
764+ let bR = dg._4
765+ let cA = dg._3
766+ let bQ = dg._2
767+ let cz = dg._1
768+ let dh = if ((cj > 0))
769+ then invoke(am(), "repayFor", [((af + "_") + toString(da))], [AttachedPayment(ao(ck), cj)])
770+ else 0
771+ if ((dh == dh))
772+ 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))]
748773 else throw("Strict value is not equal to itself.")
749774 }
750775 else throw("Strict value is not equal to itself.")
753778
754779
755780 @Callable(P)
756-func createNewRequest (df) = valueOrElse(O(P), {
757- let cy = (valueOrElse(getInteger(this, z), 0) + 1)
758- $Tuple2([StringEntry((toString(cy) + y), df), IntegerEntry(z, cy)], cy)
781+func createNewRequest (di) = valueOrElse(O(P), {
782+ let cT = (valueOrElse(getInteger(this, z), 0) + 1)
783+ $Tuple2([StringEntry((toString(cT) + y), di), IntegerEntry(z, cT)], cT)
759784 })
760785
761786
762787
763788 @Callable(P)
764-func capitalizeExKeeper (ad,ab,dg,dh,di,bm,bn,bo,bp,bq,br,bs) = {
765- let dj = if (di)
789+func capitalizeExKeeper (ad,ab,dj,dk,dl,bm,bn,bo,bp,bq,br,bs) = {
790+ let dm = if (dl)
766791 then be(ab, ad)
767792 else {
768- let dk = if ((ab == a))
793+ let dn = if ((ab == a))
769794 then M
770795 else N
771- $Tuple2(dh, dk)
796+ $Tuple2(dk, dn)
772797 }
773- let dl = dj._1
774- let dk = dj._2
775- let dm = bi(dg, dh, dk, bm, bn, bo, bp, bq, br, bs)
776- let aG = (dl - dh)
777- let dn = if ((aG > 0))
798+ let do = dm._1
799+ let dn = dm._2
800+ let dp = bi(dj, dk, dn, bm, bn, bo, bp, bq, br, bs)
801+ let aG = (do - dk)
802+ let dq = if ((aG > 0))
778803 then [IntegerEntry((ad + B), (aG + valueOrElse(getInteger(this, (ad + B)), 0)))]
779804 else nil
780- (bE(ad, ab, dg, dm) ++ dn)
805+ (bE(ad, ab, dj, dp) ++ dq)
781806 }
782807
783808
784809
785810 @Callable(P)
786-func capitalizeExPazzle (ad,ab,dg,dh,di,bv,bw,bs) = {
787- let do = if (di)
811+func capitalizeExPazzle (ad,ab,dj,dk,dl,bv,bw,bs) = {
812+ let dr = if (dl)
788813 then be(ab, ad)
789814 else {
790- let dk = if ((ab == a))
815+ let dn = if ((ab == a))
791816 then M
792817 else N
793- $Tuple2(dh, dk)
818+ $Tuple2(dk, dn)
794819 }
795- let dl = do._1
796- let dk = do._2
797- let dm = bu(dg, dh, dk, bv, bw, bs)
798- let aG = (dl - dh)
799- let dn = if ((aG > 0))
820+ let do = dr._1
821+ let dn = dr._2
822+ let dp = bu(dj, dk, dn, bv, bw, bs)
823+ let aG = (do - dk)
824+ let dq = if ((aG > 0))
800825 then [IntegerEntry((ad + B), (aG + valueOrElse(getInteger(this, (ad + B)), 0)))]
801826 else nil
802- (bE(ad, ab, dg, dm) ++ dn)
827+ (bE(ad, ab, dj, dp) ++ dq)
803828 }
804829
805830
806831
807832 @Callable(P)
808-func capitalizeExSwopFi (ad,ab,dg,dh,di,by,bz,bA,bB,bC,bD,bs) = {
809- let dp = if (di)
833+func capitalizeExSwopFi (ad,ab,dj,dk,dl,by,bz,bA,bB,bC,bD,bs) = {
834+ let ds = if (dl)
810835 then be(ab, ad)
811836 else {
812- let dk = if ((ab == a))
837+ let dn = if ((ab == a))
813838 then M
814839 else N
815- $Tuple2(dh, dk)
840+ $Tuple2(dk, dn)
816841 }
817- let dl = dp._1
818- let dk = dp._2
819- let dm = bx(dg, dh, dk, by, bz, bA, bB, bC, bD, bs)
820- let aG = (dl - dh)
821- let dn = if ((aG > 0))
842+ let do = ds._1
843+ let dn = ds._2
844+ let dp = bx(dj, dk, dn, by, bz, bA, bB, bC, bD, bs)
845+ let aG = (do - dk)
846+ let dq = if ((aG > 0))
822847 then [IntegerEntry((ad + B), (aG + valueOrElse(getInteger(this, (ad + B)), 0)))]
823848 else nil
824- (bE(ad, ab, dg, dm) ++ dn)
849+ (bE(ad, ab, dj, dp) ++ dq)
825850 }
826851
827852
828853
829854 @Callable(P)
830-func initNewPool (ab,W,dq,dr,ds) = if (if ((ab != a))
855+func initNewPool (ab,W,dt,du,dv) = if (if ((ab != a))
831856 then (ab != b)
832857 else false)
833858 then throw("Wrong type")
834- else [IntegerEntry((W + v), dq), IntegerEntry((W + w), dr), IntegerEntry((W + x), ds), IntegerEntry((W + u), 0), StringEntry((A + W), ab)]
859+ else [IntegerEntry((W + v), dt), IntegerEntry((W + w), du), IntegerEntry((W + x), dv), IntegerEntry((W + u), 0), StringEntry((A + W), ab)]
835860
836861
837-@Verifier(dt)
838-func du () = sigVerify(dt.bodyBytes, dt.proofs[0], dt.senderPublicKey)
862+@Verifier(dw)
863+func dx () = sigVerify(dw.bodyBytes, dw.proofs[0], dw.senderPublicKey)
839864
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
504+func ch (ad,ci,cj,ck) = {
505+ 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))
514+ then {
515+ let co = Q(ao(bR))
516+ if ((co == co))
517+ 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)
522+ else throw("Wrong position type")
523+ if ((bg == bg))
524+ 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))
531+ then {
532+ let cv = if (if ((ck == bQ))
533+ then (cj > cs)
534+ else false)
535+ then (cj - cs)
536+ else if (if ((ck == bR))
537+ then (cj > ct)
538+ else false)
539+ then (cj - ct)
540+ else 0
541+ let cw = if ((cv > 0))
542+ then cg(cl, ad, bQ, bR, aw, ax, cv, ck)
543+ else 0
544+ if ((cw == cw))
545+ then {
546+ let cx = Q(ao(bQ))
547+ let cy = Q(ao(bR))
548+ $Tuple2((cx - cn), (cy - co))
549+ }
550+ else throw("Strict value is not equal to itself.")
551+ }
552+ else $Tuple2(cs, ct)
553+ let cz = cu._1
554+ let cA = cu._2
555+ $Tuple4(cz, bQ, cA, bR)
556+ }
557+ else throw("Strict value is not equal to itself.")
558+ }
559+ else throw("Strict value is not equal to itself.")
560+ }
561+ else throw("Strict value is not equal to itself.")
562+ }
563+
564+
504565 @Callable(P)
505-func replenishREADONLY (ad,ch,ci) = if (if ((100 > ch))
566+func replenishREADONLY (ad,cB,cC) = if (if ((100 > cB))
506567 then true
507- else (ch > 300))
568+ else (cB > 300))
508569 then throw("Leverage can't be <100 and >300")
509570 else {
510571 let ab = valueOrErrorMessage(getString(this, (A + ad)), "Pool is not inited")
511- let cj = aa(Address(fromBase58String(ad)), ab)
512- let bI = cj._1
513- let bJ = cj._2
514- let aw = cj._3
515- let ax = cj._4
516- let ay = cj._5
517- let ck = if ((size(P.payments) == 2))
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))
518579 then if ((an(P.payments[0].assetId) != bI))
519580 then throw("Wrong payment asset A")
520581 else if ((an(P.payments[1].assetId) != bJ))
521582 then throw("Wrong payment asset B")
522583 else $Tuple4(P.payments[0].amount, bI, P.payments[1].amount, bJ)
523584 else if ((size(P.payments) == 1))
524585 then if ((an(P.payments[0].assetId) == bI))
525586 then $Tuple4(P.payments[0].amount, bI, 0, bJ)
526587 else if ((an(P.payments[0].assetId) == bJ))
527588 then $Tuple4(0, bI, P.payments[0].amount, bJ)
528589 else throw("Wrong payment")
529590 else throw("One or two payments expected")
530- let as = ck._1
531- let at = ck._2
532- let au = ck._3
533- let av = ck._4
534- let cl = if ((ch > 100))
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))
535596 then {
536- let cm = ( let Z = invoke(K, "getTWAP60", [at, false], nil)
597+ let cG = ( let Z = invoke(K, "getTWAP60", [at, false], nil)
537598 if ($isInstanceOf(Z, "(Int, Int)"))
538599 then Z
539600 else throw(($getType(Z) + " couldn't be cast to (Int, Int)")))._1
540- let cn = ( let Z = invoke(K, "getTWAP60", [av, false], nil)
601+ let cH = ( let Z = invoke(K, "getTWAP60", [av, false], nil)
541602 if ($isInstanceOf(Z, "(Int, Int)"))
542603 then Z
543604 else throw(($getType(Z) + " couldn't be cast to (Int, Int)")))._1
544- let co = (fraction(cm, as, pow(10, 0, ap(at), 0, 0, DOWN)) + fraction(cn, au, pow(10, 0, ap(av), 0, 0, DOWN)))
545- let cp = fraction(co, (ch - 100), 100)
546- if ((ci == at))
547- then $Tuple3((as + cp), au, d)
548- else $Tuple3(as, (au + cp), d)
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+ if ((cC == at))
608+ then $Tuple4((as + cJ), au, d, cJ)
609+ else $Tuple4(as, (au + cJ), d, cJ)
549610 }
550- else $Tuple3(as, au, e)
551- let cq = cl._1
552- let cr = cl._2
553- let ah = cl._3
554- let cs = if ((ab == a))
555- then ar(ad, ah, cq, at, cr, av, aw, ax, ay)
611+ else $Tuple4(as, au, e, 0)
612+ let cK = cF._1
613+ let cL = cF._2
614+ let ah = cF._3
615+ let cJ = cF._4
616+ let cM = if ((ab == a))
617+ then ar(ad, ah, cK, at, cL, av, aw, ax, ay)
556618 else aR(ad, ah, as, at, au, av, ay)
557- let ct = cs._1
558- let bM = cs._2
559- $Tuple2(nil, ct)
619+ let cN = cM._1
620+ let bM = cM._2
621+ let cO = ch(ad, cN, cJ, cC)
622+ if ((cO == cO))
623+ then {
624+ let bR = cO._4
625+ let cA = cO._3
626+ let bQ = cO._2
627+ let cz = cO._1
628+ $Tuple2(nil, $Tuple3(cN, cz, cA))
629+ }
630+ else throw("Strict value is not equal to itself.")
560631 }
561632
562633
563634
564635 @Callable(P)
565-func replenish (ad,ch,ci) = if (if ((100 > ch))
636+func replenish (ad,cB,cC) = if (if ((100 > cB))
566637 then true
567- else (ch > 300))
638+ else (cB > 300))
568639 then throw("Leverage can't be <100 and >300")
569640 else {
570641 let ab = valueOrErrorMessage(getString(this, (A + ad)), "Pool is not inited")
571- let cu = aa(Address(fromBase58String(ad)), ab)
572- let bI = cu._1
573- let bJ = cu._2
574- let aw = cu._3
575- let ax = cu._4
576- let ay = cu._5
577- let cv = if ((size(P.payments) == 2))
642+ let cP = aa(Address(fromBase58String(ad)), ab)
643+ let bI = cP._1
644+ let bJ = cP._2
645+ let aw = cP._3
646+ let ax = cP._4
647+ let ay = cP._5
648+ let cQ = if ((size(P.payments) == 2))
578649 then if ((an(P.payments[0].assetId) != bI))
579650 then throw("Wrong payment asset A")
580651 else if ((an(P.payments[1].assetId) != bJ))
581652 then throw("Wrong payment asset B")
582653 else $Tuple4(P.payments[0].amount, bI, P.payments[1].amount, bJ)
583654 else if ((size(P.payments) == 1))
584655 then if ((an(P.payments[0].assetId) == bI))
585656 then $Tuple4(P.payments[0].amount, bI, 0, bJ)
586657 else if ((an(P.payments[0].assetId) == bJ))
587658 then $Tuple4(0, bI, P.payments[0].amount, bJ)
588659 else throw("Wrong payment")
589660 else throw("One or two payments expected")
590- let as = cv._1
591- let at = cv._2
592- let au = cv._3
593- let av = cv._4
594- let cw = ae(ad, toString(P.caller))
595- if ((ch > 100))
661+ let as = cQ._1
662+ let at = cQ._2
663+ let au = cQ._3
664+ let av = cQ._4
665+ let cR = ae(ad, toString(P.caller))
666+ if ((cB > 100))
596667 then {
597- let cm = ( let Z = invoke(K, "getTWAP60", [at, false], nil)
668+ let cG = ( let Z = invoke(K, "getTWAP60", [at, false], nil)
598669 if ($isInstanceOf(Z, "(Int, Int)"))
599670 then Z
600671 else throw(($getType(Z) + " couldn't be cast to (Int, Int)")))._1
601- let cn = ( let Z = invoke(K, "getTWAP60", [av, false], nil)
672+ let cH = ( let Z = invoke(K, "getTWAP60", [av, false], nil)
602673 if ($isInstanceOf(Z, "(Int, Int)"))
603674 then Z
604675 else throw(($getType(Z) + " couldn't be cast to (Int, Int)")))._1
605- let co = (fraction(cm, as, pow(10, 0, ap(at), 0, 0, DOWN)) + fraction(cn, au, pow(10, 0, ap(av), 0, 0, DOWN)))
606- let cp = fraction(co, (ch - 100), 100)
607- let cx = makeString([ab, toString(P.caller), ad, toString(as), at, toString(au), av, toString(aw), toString(ax), ay, ci, toString(cp), toString(cw)], ",")
608- let cy = {
609- let Z = invoke(this, "createNewRequest", [cx], nil)
676+ let cI = (fraction(cG, as, pow(10, 0, ap(at), 0, 0, DOWN)) + fraction(cH, au, pow(10, 0, ap(av), 0, 0, DOWN)))
677+ let cJ = fraction(cI, (cB - 100), 100)
678+ let cS = makeString([ab, toString(P.caller), ad, toString(as), at, toString(au), av, toString(aw), toString(ax), ay, cC, toString(cJ), toString(cR)], ",")
679+ let cT = {
680+ let Z = invoke(this, "createNewRequest", [cS], nil)
610681 if ($isInstanceOf(Z, "Int"))
611682 then Z
612683 else throw(($getType(Z) + " couldn't be cast to Int"))
613684 }
614- if ((cy == cy))
685+ if ((cT == cT))
615686 then {
616- let cz = [((toString(P.caller) + "_") + toString(cw)), ay, ci, cp, toString(this), "replenishFromLand", toString(valueOrErrorMessage(cy, "Can't create new request"))]
617- let bg = reentrantInvoke(am(), "flashPosition", cz, nil)
687+ let cU = [((toString(P.caller) + "_") + toString(cR)), ay, cC, cJ, toString(this), "replenishFromLand", toString(valueOrErrorMessage(cT, "Can't create new request"))]
688+ let bg = reentrantInvoke(am(), "flashPosition", cU, nil)
618689 if ((bg == bg))
619690 then nil
620691 else throw("Strict value is not equal to itself.")
621692 }
622693 else throw("Strict value is not equal to itself.")
623694 }
624695 else {
625- let cA = if ((ab == a))
696+ let cV = if ((ab == a))
626697 then ar(ad, e, as, at, au, av, aw, ax, ay)
627698 else aR(ad, e, as, at, au, av, ay)
628- let ct = cA._1
629- let bM = cA._2
630- aZ(ad, toString(P.caller), ct, bM, cw, ay, ab)
699+ let cN = cV._1
700+ let bM = cV._2
701+ aZ(ad, toString(P.caller), cN, bM, cR, ay, ab)
631702 }
632703 }
633704
634705
635706
636707 @Callable(P)
637-func replenishFromLand (cB) = {
638- let cx = split(valueOrErrorMessage(getString(this, (cB + y)), ("No request with id " + cB)), ",")
708+func replenishFromLand (cW) = {
709+ let cS = split(valueOrErrorMessage(getString(this, (cW + y)), ("No request with id " + cW)), ",")
639710 if ((size(P.payments) != 1))
640711 then throw("Wrong payment size")
641- else if (if ((an(P.payments[0].assetId) != cx[10]))
712+ else if (if ((an(P.payments[0].assetId) != cS[10]))
642713 then true
643- else (P.payments[0].amount != parseIntValue(cx[11])))
714+ else (P.payments[0].amount != parseIntValue(cS[11])))
644715 then throw("Wrong payment")
645716 else {
646- let as = if ((cx[4] == an(P.payments[0].assetId)))
647- then (parseIntValue(cx[3]) + P.payments[0].amount)
648- else parseIntValue(cx[3])
649- let au = if ((cx[6] == an(P.payments[0].assetId)))
650- then (parseIntValue(cx[5]) + P.payments[0].amount)
651- else parseIntValue(cx[3])
652- let ad = cx[2]
653- let af = cx[1]
654- let ay = cx[9]
655- let bb = parseIntValue(cx[12])
656- let cC = if ((cx[0] == a))
657- then ar(ad, d, as, cx[4], au, cx[6], parseIntValue(cx[7]), parseIntValue(cx[8]), ay)
658- else if ((cx[0] == b))
659- then aR(ad, d, as, cx[4], au, cx[6], ay)
717+ let as = if ((cS[4] == an(P.payments[0].assetId)))
718+ then (parseIntValue(cS[3]) + P.payments[0].amount)
719+ else parseIntValue(cS[3])
720+ let au = if ((cS[6] == an(P.payments[0].assetId)))
721+ then (parseIntValue(cS[5]) + P.payments[0].amount)
722+ else parseIntValue(cS[3])
723+ let ad = cS[2]
724+ let af = cS[1]
725+ let ay = cS[9]
726+ let bb = parseIntValue(cS[12])
727+ let cX = if ((cS[0] == a))
728+ then ar(ad, d, as, cS[4], au, cS[6], parseIntValue(cS[7]), parseIntValue(cS[8]), ay)
729+ else if ((cS[0] == b))
730+ then aR(ad, d, as, cS[4], au, cS[6], ay)
660731 else throw("Wrong request type")
661- let ct = cC._1
662- let bM = cC._2
663- let cD = [IntegerEntry((((((cx[2] + "_") + cx[1]) + "_") + cx[12]) + p), P.payments[0].amount), StringEntry((((((cx[2] + "_") + cx[1]) + "_") + cx[12]) + q), cx[10])]
664- let cE = aZ(ad, af, ct, bM, bb, ay, cx[0])
665- $Tuple2(((cE ++ cD) :+ DeleteEntry((cB + y))), ct)
732+ let cN = cX._1
733+ let bM = cX._2
734+ let cY = [IntegerEntry((((((cS[2] + "_") + cS[1]) + "_") + cS[12]) + p), P.payments[0].amount), StringEntry((((((cS[2] + "_") + cS[1]) + "_") + cS[12]) + q), cS[10])]
735+ let cZ = aZ(ad, af, cN, bM, bb, ay, cS[0])
736+ $Tuple2(((cZ ++ cY) :+ DeleteEntry((cW + y))), cN)
666737 }
667738 }
668739
669740
670741
671742 @Callable(P)
672-func withdraw (ad,cF) = {
743+func withdraw (ad,da) = {
673744 let af = toString(P.caller)
674- let cG = valueOrErrorMessage(getString(this, (A + ad)), "Unknown pool")
675- let cH = valueOrErrorMessage(getInteger(this, (((((ad + "_") + af) + "_") + toString(cF)) + o)), "Unknown position")
676- let cI = getIntegerValue(this, (((((ad + "_") + af) + "_") + toString(cF)) + s))
677- let cJ = getIntegerValue(this, (ad + u))
678- let cK = ac(ad)
679- let cL = (cH + fraction(cH, (cJ - cI), g))
680- let W = Address(fromBase58String(ad))
681- let cM = Address(fromBase58String(af))
682- let cp = getIntegerValue(this, (((((ad + "_") + af) + "_") + toString(cF)) + p))
683- let cN = getStringValue(this, (((((ad + "_") + af) + "_") + toString(cF)) + q))
684- let cO = aa(Address(fromBase58String(ad)), cG)
685- let bQ = cO._1
686- let bR = cO._2
687- let aw = cO._3
688- let ax = cO._4
689- let ay = cO._5
690- let cP = Q(ao(bQ))
691- if ((cP == cP))
745+ let db = valueOrErrorMessage(getInteger(this, (((((ad + "_") + af) + "_") + toString(da)) + o)), "Unknown position")
746+ let dc = getIntegerValue(this, (((((ad + "_") + af) + "_") + toString(da)) + s))
747+ let dd = getIntegerValue(this, (ad + u))
748+ let de = ac(ad)
749+ let ci = (db + fraction(db, (dd - dc), g))
750+ let df = Address(fromBase58String(af))
751+ let cJ = getIntegerValue(this, (((((ad + "_") + af) + "_") + toString(da)) + p))
752+ let ck = getStringValue(this, (((((ad + "_") + af) + "_") + toString(da)) + q))
753+ let cj = if ((cJ > 0))
692754 then {
693- let cQ = Q(ao(bR))
694- if ((cQ == cQ))
695- then {
696- let bg = if ((cG == a))
697- then invoke(W, "callFunction", ["withdraw", [toString(cL)]], nil)
698- else if ((cG == b))
699- then invoke(W, "unstakeAndGet", [cL], nil)
700- else throw("Wrong position type")
701- if ((bg == bg))
702- then {
703- let cR = Q(ao(bQ))
704- let cS = Q(ao(bR))
705- let cT = $Tuple2((cR - cP), (cS - cQ))
706- let cU = cT._1
707- let cV = cT._2
708- let cW = if ((cp > 0))
709- then {
710- let cX = {
711- let Z = invoke(am(), "getAssetDebt", [false, ((((ad + "_") + af) + "_") + toString(cF)), cN], nil)
712- if ($isInstanceOf(Z, "Int"))
713- then Z
714- else throw(($getType(Z) + " couldn't be cast to Int"))
715- }
716- let cY = if (if ((cN == bQ))
717- then (cX > cU)
718- else false)
719- then (cX - cU)
720- else if (if ((cN == bR))
721- then (cX > cV)
722- else false)
723- then (cX - cV)
724- else 0
725- let cZ = if ((cY > 0))
726- then cg(cG, ad, bQ, bR, aw, ax, cY, cN)
727- else 0
728- if ((cZ == cZ))
729- then {
730- let da = invoke(am(), "repayFor", [((af + "_") + toString(cF))], [AttachedPayment(ao(cN), cX)])
731- if ((da == da))
732- then {
733- let db = Q(ao(bQ))
734- let dc = Q(ao(bR))
735- $Tuple2((db - cP), (dc - cQ))
736- }
737- else throw("Strict value is not equal to itself.")
738- }
739- else throw("Strict value is not equal to itself.")
740- }
741- else $Tuple2(cU, cV)
742- let dd = cW._1
743- let de = cW._2
744-[DeleteEntry((((((ad + "_") + af) + "_") + toString(cF)) + o)), DeleteEntry((((((ad + "_") + af) + "_") + toString(cF)) + s)), IntegerEntry((ad + t), (cK - cL)), ScriptTransfer(cM, cU, ao(bQ)), ScriptTransfer(cM, cV, ao(bR))]
745- }
746- else throw("Strict value is not equal to itself.")
747- }
755+ let Z = invoke(am(), "getAssetDebt", [false, ((((ad + "_") + af) + "_") + toString(da)), ck], nil)
756+ if ($isInstanceOf(Z, "Int"))
757+ then Z
758+ else throw(($getType(Z) + " couldn't be cast to Int"))
759+ }
760+ else 0
761+ let dg = ch(ad, ci, cj, ck)
762+ if ((dg == dg))
763+ then {
764+ let bR = dg._4
765+ let cA = dg._3
766+ let bQ = dg._2
767+ let cz = dg._1
768+ let dh = if ((cj > 0))
769+ then invoke(am(), "repayFor", [((af + "_") + toString(da))], [AttachedPayment(ao(ck), cj)])
770+ else 0
771+ if ((dh == dh))
772+ 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))]
748773 else throw("Strict value is not equal to itself.")
749774 }
750775 else throw("Strict value is not equal to itself.")
751776 }
752777
753778
754779
755780 @Callable(P)
756-func createNewRequest (df) = valueOrElse(O(P), {
757- let cy = (valueOrElse(getInteger(this, z), 0) + 1)
758- $Tuple2([StringEntry((toString(cy) + y), df), IntegerEntry(z, cy)], cy)
781+func createNewRequest (di) = valueOrElse(O(P), {
782+ let cT = (valueOrElse(getInteger(this, z), 0) + 1)
783+ $Tuple2([StringEntry((toString(cT) + y), di), IntegerEntry(z, cT)], cT)
759784 })
760785
761786
762787
763788 @Callable(P)
764-func capitalizeExKeeper (ad,ab,dg,dh,di,bm,bn,bo,bp,bq,br,bs) = {
765- let dj = if (di)
789+func capitalizeExKeeper (ad,ab,dj,dk,dl,bm,bn,bo,bp,bq,br,bs) = {
790+ let dm = if (dl)
766791 then be(ab, ad)
767792 else {
768- let dk = if ((ab == a))
793+ let dn = if ((ab == a))
769794 then M
770795 else N
771- $Tuple2(dh, dk)
796+ $Tuple2(dk, dn)
772797 }
773- let dl = dj._1
774- let dk = dj._2
775- let dm = bi(dg, dh, dk, bm, bn, bo, bp, bq, br, bs)
776- let aG = (dl - dh)
777- let dn = if ((aG > 0))
798+ let do = dm._1
799+ let dn = dm._2
800+ let dp = bi(dj, dk, dn, bm, bn, bo, bp, bq, br, bs)
801+ let aG = (do - dk)
802+ let dq = if ((aG > 0))
778803 then [IntegerEntry((ad + B), (aG + valueOrElse(getInteger(this, (ad + B)), 0)))]
779804 else nil
780- (bE(ad, ab, dg, dm) ++ dn)
805+ (bE(ad, ab, dj, dp) ++ dq)
781806 }
782807
783808
784809
785810 @Callable(P)
786-func capitalizeExPazzle (ad,ab,dg,dh,di,bv,bw,bs) = {
787- let do = if (di)
811+func capitalizeExPazzle (ad,ab,dj,dk,dl,bv,bw,bs) = {
812+ let dr = if (dl)
788813 then be(ab, ad)
789814 else {
790- let dk = if ((ab == a))
815+ let dn = if ((ab == a))
791816 then M
792817 else N
793- $Tuple2(dh, dk)
818+ $Tuple2(dk, dn)
794819 }
795- let dl = do._1
796- let dk = do._2
797- let dm = bu(dg, dh, dk, bv, bw, bs)
798- let aG = (dl - dh)
799- let dn = if ((aG > 0))
820+ let do = dr._1
821+ let dn = dr._2
822+ let dp = bu(dj, dk, dn, bv, bw, bs)
823+ let aG = (do - dk)
824+ let dq = if ((aG > 0))
800825 then [IntegerEntry((ad + B), (aG + valueOrElse(getInteger(this, (ad + B)), 0)))]
801826 else nil
802- (bE(ad, ab, dg, dm) ++ dn)
827+ (bE(ad, ab, dj, dp) ++ dq)
803828 }
804829
805830
806831
807832 @Callable(P)
808-func capitalizeExSwopFi (ad,ab,dg,dh,di,by,bz,bA,bB,bC,bD,bs) = {
809- let dp = if (di)
833+func capitalizeExSwopFi (ad,ab,dj,dk,dl,by,bz,bA,bB,bC,bD,bs) = {
834+ let ds = if (dl)
810835 then be(ab, ad)
811836 else {
812- let dk = if ((ab == a))
837+ let dn = if ((ab == a))
813838 then M
814839 else N
815- $Tuple2(dh, dk)
840+ $Tuple2(dk, dn)
816841 }
817- let dl = dp._1
818- let dk = dp._2
819- let dm = bx(dg, dh, dk, by, bz, bA, bB, bC, bD, bs)
820- let aG = (dl - dh)
821- let dn = if ((aG > 0))
842+ let do = ds._1
843+ let dn = ds._2
844+ let dp = bx(dj, dk, dn, by, bz, bA, bB, bC, bD, bs)
845+ let aG = (do - dk)
846+ let dq = if ((aG > 0))
822847 then [IntegerEntry((ad + B), (aG + valueOrElse(getInteger(this, (ad + B)), 0)))]
823848 else nil
824- (bE(ad, ab, dg, dm) ++ dn)
849+ (bE(ad, ab, dj, dp) ++ dq)
825850 }
826851
827852
828853
829854 @Callable(P)
830-func initNewPool (ab,W,dq,dr,ds) = if (if ((ab != a))
855+func initNewPool (ab,W,dt,du,dv) = if (if ((ab != a))
831856 then (ab != b)
832857 else false)
833858 then throw("Wrong type")
834- else [IntegerEntry((W + v), dq), IntegerEntry((W + w), dr), IntegerEntry((W + x), ds), IntegerEntry((W + u), 0), StringEntry((A + W), ab)]
859+ else [IntegerEntry((W + v), dt), IntegerEntry((W + w), du), IntegerEntry((W + x), dv), IntegerEntry((W + u), 0), StringEntry((A + W), ab)]
835860
836861
837-@Verifier(dt)
838-func du () = sigVerify(dt.bodyBytes, dt.proofs[0], dt.senderPublicKey)
862+@Verifier(dw)
863+func dx () = sigVerify(dw.bodyBytes, dw.proofs[0], dw.senderPublicKey)
839864

github/deemru/w8io/026f985 
142.34 ms