tx · 34uXxfmT4NjEJ4uEruy3HeM3tVjhhyH6qyMEkvEmpTK1

3MvRWw2FPEimFCTGtK7qY9uAJbM7XJ4ZfJS:  -0.28000000 Waves

2023.05.26 17:00 [2595039] smart account 3MvRWw2FPEimFCTGtK7qY9uAJbM7XJ4ZfJS > SELF 0.00000000 Waves

{ "type": 13, "id": "34uXxfmT4NjEJ4uEruy3HeM3tVjhhyH6qyMEkvEmpTK1", "fee": 28000000, "feeAssetId": null, "timestamp": 1685109679760, "version": 2, "chainId": 84, "sender": "3MvRWw2FPEimFCTGtK7qY9uAJbM7XJ4ZfJS", "senderPublicKey": "HP8sssVq1866F7CaPQJwgFrt6fsqhQjKwM84cL1wjD2a", "proofs": [ "2gqdrwHs9P2MLL2vsSpEDhkeUubnb86y2XDjBeENH7PCw1E1GEZCcbXe881vmivvPpJxFH5ZTS4zssCT1ybseAWA" ], "script": "base64:BgKVAQgCEgUKAwgBCBIDCgEIEgMKAQgSBAoCCAgSBQoDCAEIEgMKAQgSBAoCCAESBgoEAQgIARIFCgMBCAgSAwoBCBIGCgQIAQgIEgYKBAgBCAESDgoMCAgIAQQRGBgRAQEYEgoKCAgICAEECAEYEg4KDAgICAEEGBgYGBgBGBIKCggICAEBAQEBARIGCgQICAgBEgQKAggIWgAHU0ZfUE9PTAICU0YAB1dYX1BPT0wCAldYAA9DQVBfRkVFX05PX0xPQU4CCWNhcE5vTG9hbgAMQ0FQX0ZFRV9MT0FOAgdjYXBMb2FuABRTVE9QTE9TU19GRUVfTk9fTE9BTgIJY2FwTm9Mb2FuAA1TVE9QTE9TU19MT0FOAgdjYXBMb2FuAAhMT0FOX0ZFRQIEbG9hbgALTk9fTE9BTl9GRUUCBm5vTG9hbgAGTk9fRkVFAgVub0ZlZQAGU0NBTEU4AIDC1y8AB1NDQUxFMTAAgMivoCUACkZFRV9TQ0FMRTYAwIQ9ABRrU0ZQb29sQUFzc2V0QmFsYW5jZQIPQV9hc3NldF9iYWxhbmNlABRrU0ZQb29sQkFzc2V0QmFsYW5jZQIPQl9hc3NldF9iYWxhbmNlAA9rU0ZQb29sQUFzc2V0SWQCCkFfYXNzZXRfaWQAD2tTRlBvb2xCQXNzZXRJZAIKQl9hc3NldF9pZAAOa1NGUG9vbFNoYXJlSWQCDnNoYXJlX2Fzc2V0X2lkABJrU0ZQb29sU2hhcmVTdXBwbHkCEnNoYXJlX2Fzc2V0X3N1cHBseQAKa1NGUG9vbEZlZQIKY29tbWlzc2lvbgANa1VzZXJQb3NpdGlvbgIOX3VzZXJfcG9zaXRpb24AEWtVc2VyUG9zaXRpb25Qb29sAhNfdXNlcl9wb3NpdGlvbl9wb29sABFrVXNlckJvcnJvd0Ftb3VudAIcX3VzZXJfcG9zaXRpb25fYm9ycm93X2Ftb3VudAASa1VzZXJCb3Jyb3dBc3NldElkAh5fdXNlcl9wb3NpdGlvbl9ib3Jyb3dfYXNzZXRfaWQAEGtVc2VyUG9zaXRpb25OdW0CFV91c2VyX3Bvc2l0aW9uX251bWJlcgAVa1VzZXJQb3NpdGlvbkludGVyZXN0AhdfdXNlcl9wb3NpdGlvbl9pbnRlcmVzdAAKa1Bvb2xUb3RhbAILX3Bvb2xfdG90YWwADmtQb29sVG90YWxMb2FuAhBfcG9vbF90b3RhbF9sb2FuABFrUG9vbEludGVyZXN0TG9hbgITX3Bvb2xfaW50ZXJlc3RfbG9hbgATa1Bvb2xJbnRlcmVzdE5vTG9hbgIWX3Bvb2xfaW50ZXJlc3Rfbm9fbG9hbgAVa0F4bHlJbkZlZVdpdGhvdXRMb2FuAhZfYXhseV9mZWVfd2l0aG91dF9sb2FuABJrQXhseUluRmVlV2l0aExvYW4CE19heGx5X2ZlZV93aXRoX2xvYW4AEWtBeGx5Tm9Mb2FuQ2FwRmVlAhdfYXhseV9mZWVfY2FwX3dpdGhfbG9hbgATa0F4bHlXaXRoTG9hbkNhcEZlZQIVX2F4bHlfZmVlX2NhcF9ub19sb2FuABZrQXhseVN0b3BMb3NzTm9Mb2FuRmVlAhxfYXhseV9mZWVfc3RvcGxvc3Nfd2l0aF9sb2FuABRrQXhseVN0b3BMb3NzTG9hbkZlZQIaX2F4bHlfZmVlX3N0b3Bsb3NzX25vX2xvYW4ACmtSZXF1ZXN0SWQCC19yZXF1ZXN0X2lkAAxrUmVxdWVzdEl0ZXICDXJlcXVlc3RzX2l0ZXIABWtQb29sAgVwb29sXwAKa1NoYXJlUG9vbAIOX3Bvb2xfc2hhcmVfaWQADmtQb29sQ2FwQ2hhbmdlAhBfcG9vbF9jYXBfY2hhbmdlAA9rVG9rZW5MYXN0UHJpY2UCC19sYXN0X3ByaWNlAA1rVXNlclN0b3BMb3NzAgpfc3RvcF9sb3NzAAlrTW9uZXlCb3gCDmF4bHlfbW9uZXlfYm94AA5rU0ZGYXJtaW5nQWRkcgITc3dvcGZpX2Zhcm1pbmdfYWRkcgAMa0xlbmRTZXJ2aWNlAhFsZW5kX3NlcnZpY2VfYWRkcgAMa1ByaWNlT3JhY2xlAgxwcmljZV9vcmFjbGUAC2tFeENvbnRyYWN0AhFleGNoYW5nZV9jb250cmFjdAAPa1d4U3dhcENvbnRyYWN0AhB3eF9zd2FwX2NvbnRyYWN0AAhtb25leUJveAkBB0FkZHJlc3MBCQDZBAEJARN2YWx1ZU9yRXJyb3JNZXNzYWdlAgkAnQgCBQR0aGlzBQlrTW9uZXlCb3gCGE5vIGF4bHkgbW9uZXlCb3ggYWRkcmVzcwAKZXhDb250cmFjdAkBB0FkZHJlc3MBCQDZBAEJARN2YWx1ZU9yRXJyb3JNZXNzYWdlAgkAnQgCBQR0aGlzBQtrRXhDb250cmFjdAIcTm8gZXhjaGFuZ2UgY29udHJhY3QgYWRkcmVzcwAPcHJpY2VPcmFjbGVBZGRyCQEHQWRkcmVzcwEJANkEAQkBE3ZhbHVlT3JFcnJvck1lc3NhZ2UCCQCdCAIFBHRoaXMFDGtQcmljZU9yYWNsZQIXTm8gcHJpY2Ugb3JhY2xlIGFkZHJlc3MADnd4U3dhcENvbnRyYWN0CQEHQWRkcmVzcwEJANkEAQkBE3ZhbHVlT3JFcnJvck1lc3NhZ2UCCQCdCAIFBHRoaXMFD2tXeFN3YXBDb250cmFjdAISTm8gd3ggc3dhcCBhZGRyZXNzAAZTV09QSUQBIDQBE1aOYEbiflupuAFHguexACYSm3bkTkuioHycbe6BAARXWElEASDGUh6BTupu4zzAl7AOXyzyauntnbKG0ZpCeKhgfT4bsQEKaXNTZWxmQ2FsbAEBaQMJAAACCAUBaQZjYWxsZXIFBHRoaXMFBHVuaXQJAAIBAitPbmx5IGNvbnRyYWN0IGl0c2VsZiBjYW4gY2FsbCB0aGlzIGZ1bmN0aW9uAQ5hY2NvdW50QmFsYW5jZQEHYXNzZXRJZAQHJG1hdGNoMAUHYXNzZXRJZAMJAAECBQckbWF0Y2gwAgpCeXRlVmVjdG9yBAJpZAUHJG1hdGNoMAkA8AcCBQR0aGlzBQJpZAMJAAECBQckbWF0Y2gwAgRVbml0BAV3YXZlcwUHJG1hdGNoMAgJAO8HAQUEdGhpcwlhdmFpbGFibGUJAAIBAgtNYXRjaCBlcnJvcgENZ2V0U0ZQb29sRGF0YQEIcG9vbEFkZHIJAJcKBQkBE3ZhbHVlT3JFcnJvck1lc3NhZ2UCCQCdCAIFCHBvb2xBZGRyBQ9rU0ZQb29sQUFzc2V0SWQCGUNhbid0IGdldCBwb29sIEEgYXNzZXQgaWQJARN2YWx1ZU9yRXJyb3JNZXNzYWdlAgkAnQgCBQhwb29sQWRkcgUPa1NGUG9vbEJBc3NldElkAhlDYW4ndCBnZXQgcG9vbCBCIGFzc2V0IGlkCQETdmFsdWVPckVycm9yTWVzc2FnZQIJAJoIAgUIcG9vbEFkZHIFFGtTRlBvb2xBQXNzZXRCYWxhbmNlAh5DYW4ndCBnZXQgcG9vbCBBIGFzc2V0IGJhbGFuY2UJARN2YWx1ZU9yRXJyb3JNZXNzYWdlAgkAmggCBQhwb29sQWRkcgUUa1NGUG9vbEJBc3NldEJhbGFuY2UCHkNhbid0IGdldCBwb29sIEIgYXNzZXQgYmFsYW5jZQkBE3ZhbHVlT3JFcnJvck1lc3NhZ2UCCQCdCAIFCHBvb2xBZGRyBQ5rU0ZQb29sU2hhcmVJZAIYQ2FuJ3QgZ2V0IHNoYXJlIGFzc2V0IGlkAQ1nZXRXWFBvb2xEYXRhAQhwb29sQWRkcgQDY2ZnCgABQAkA/AcEBQhwb29sQWRkcgIcZ2V0UG9vbENvbmZpZ1dyYXBwZXJSRUFET05MWQUDbmlsBQNuaWwDCQABAgUBQAIJTGlzdFtBbnldBQFACQACAQkArAICCQADAQUBQAIeIGNvdWxkbid0IGJlIGNhc3QgdG8gTGlzdFtBbnldAwkAAAIFA2NmZwUDY2ZnBANhSWQJARN2YWx1ZU9yRXJyb3JNZXNzYWdlAgoAAUAJAJEDAgUDY2ZnAAQDCQABAgUBQAIGU3RyaW5nBQFABQR1bml0AhlDYW4ndCBnZXQgcG9vbCBBIGFzc2V0IGlkBANiSWQJARN2YWx1ZU9yRXJyb3JNZXNzYWdlAgoAAUAJAJEDAgUDY2ZnAAUDCQABAgUBQAIGU3RyaW5nBQFABQR1bml0AhlDYW4ndCBnZXQgcG9vbCBCIGFzc2V0IGlkBAdzaGFyZUlkCQETdmFsdWVPckVycm9yTWVzc2FnZQIKAAFACQCRAwIFA2NmZwADAwkAAQIFAUACBlN0cmluZwUBQAUEdW5pdAIaQ2FuJ3QgZ2V0IHBvb2wgTFAgYXNzZXQgaWQEBGJhbEEKAAFACQD8BwQFCHBvb2xBZGRyAhxnZXRBY2NCYWxhbmNlV3JhcHBlclJFQURPTkxZCQDMCAIFA2FJZAUDbmlsBQNuaWwDCQABAgUBQAIDSW50BQFACQACAQkArAICCQADAQUBQAIYIGNvdWxkbid0IGJlIGNhc3QgdG8gSW50AwkAAAIFBGJhbEEFBGJhbEEEBGJhbEIKAAFACQD8BwQFCHBvb2xBZGRyAhxnZXRBY2NCYWxhbmNlV3JhcHBlclJFQURPTkxZCQDMCAIFA2JJZAUDbmlsBQNuaWwDCQABAgUBQAIDSW50BQFACQACAQkArAICCQADAQUBQAIYIGNvdWxkbid0IGJlIGNhc3QgdG8gSW50AwkAAAIFBGJhbEIFBGJhbEIJAJcKBQUDYUlkBQNiSWQFBGJhbEEFBGJhbEIFB3NoYXJlSWQJAAIBAiRTdHJpY3QgdmFsdWUgaXMgbm90IGVxdWFsIHRvIGl0c2VsZi4JAAIBAiRTdHJpY3QgdmFsdWUgaXMgbm90IGVxdWFsIHRvIGl0c2VsZi4JAAIBAiRTdHJpY3QgdmFsdWUgaXMgbm90IGVxdWFsIHRvIGl0c2VsZi4BC2dldFBvb2xEYXRhAghwb29sQWRkcgR0eXBlAwkAAAIFBHR5cGUFB1NGX1BPT0wJAQ1nZXRTRlBvb2xEYXRhAQUIcG9vbEFkZHIDCQAAAgUEdHlwZQUHV1hfUE9PTAkBDWdldFdYUG9vbERhdGEBBQhwb29sQWRkcgkAAgECD1dyb25nIHBvb2wgdHlwZQEOZ2V0U2hhcmVTdXBwbHkDCHBvb2xBZGRyBHR5cGUHc2hhcmVJZAMJAAACBQR0eXBlBQdTRl9QT09MCQETdmFsdWVPckVycm9yTWVzc2FnZQIJAJoIAgUIcG9vbEFkZHIFEmtTRlBvb2xTaGFyZVN1cHBseQIcQ2FuJ3QgZ2V0IHNoYXJlIGFzc2V0IHN1cHBseQMJAAACBQR0eXBlBQdXWF9QT09MCAkBE3ZhbHVlT3JFcnJvck1lc3NhZ2UCCQDsBwEJANkEAQUHc2hhcmVJZAINV3JvbmcgU2hhcmVJZAhxdWFudGl0eQkAAgECD1dyb25nIHBvb2wgdHlwZQERZ2V0UG9vbFRvdGFsU2hhcmUBBHBvb2wJAQt2YWx1ZU9yRWxzZQIJAJoIAgUEdGhpcwkArAICBQRwb29sBQprUG9vbFRvdGFsAAABGWdldFBvb2xUb3RhbFNoYXJlV2l0aExvYW4BBHBvb2wJAQt2YWx1ZU9yRWxzZQIJAJoIAgUEdGhpcwkArAICBQRwb29sBQ5rUG9vbFRvdGFsTG9hbgAAARhnZXROZXdVc2VyUG9zaXRpb25OdW1iZXICBHBvb2wEdXNlcgkAZAIJAQt2YWx1ZU9yRWxzZQIJAJoIAgUEdGhpcwkArAICBQR1c2VyBRBrVXNlclBvc2l0aW9uTnVtAAAAAQEKZ2V0QXhseUZlZQIEcG9vbAdmZWVUeXBlAwkAAAIFB2ZlZVR5cGUFDENBUF9GRUVfTE9BTgkBEUBleHRyTmF0aXZlKDEwNTApAgUEdGhpcwkArAICBQRwb29sBRNrQXhseVdpdGhMb2FuQ2FwRmVlAwkAAAIFB2ZlZVR5cGUFD0NBUF9GRUVfTk9fTE9BTgkBEUBleHRyTmF0aXZlKDEwNTApAgUEdGhpcwkArAICBQRwb29sBRFrQXhseU5vTG9hbkNhcEZlZQMJAAACBQdmZWVUeXBlBQhMT0FOX0ZFRQkBEUBleHRyTmF0aXZlKDEwNTApAgUEdGhpcwkArAICBQRwb29sBRJrQXhseUluRmVlV2l0aExvYW4DCQAAAgUHZmVlVHlwZQULTk9fTE9BTl9GRUUJARFAZXh0ck5hdGl2ZSgxMDUwKQIFBHRoaXMJAKwCAgUEcG9vbAUVa0F4bHlJbkZlZVdpdGhvdXRMb2FuCQACAQIOV3JvbmcgZmVlIHR5cGUBEGdldFNGRmFybWluZ0FkZHIACQEHQWRkcmVzcwEJANkEAQkBE3ZhbHVlT3JFcnJvck1lc3NhZ2UCCQCdCAIFBHRoaXMFDmtTRkZhcm1pbmdBZGRyAh1DYW4ndCBnZXQgc3dvcGZpIGZhcm1pbmcgYWRkcgEQZ2V0V1hGYXJtaW5nQWRkcgEIcG9vbEFkZHIECWZDb250cmFjdAkBB0FkZHJlc3MBCQDZBAEJARN2YWx1ZU9yRXJyb3JNZXNzYWdlAgkAnQgCBQhwb29sQWRkcgITJXNfX2ZhY3RvcnlDb250cmFjdAIiQ2FuJ3QgZ2V0IFdYIGZhY3RvcnkgY29udHJhY3QgYWRkcgQKZmFjdHJveUNmZwkAtQkCCQETdmFsdWVPckVycm9yTWVzc2FnZQIJAJ0IAgUJZkNvbnRyYWN0AhElc19fZmFjdG9yeUNvbmZpZwIYQ2FuJ3QgZ2V0IFdYIGZhY3RvcnkgY2ZnAgJfXwkBB0FkZHJlc3MBCQDZBAEJAJEDAgUKZmFjdHJveUNmZwABAQ5nZXRMZW5kU3J2QWRkcgAJAQdBZGRyZXNzAQkA2QQBCQETdmFsdWVPckVycm9yTWVzc2FnZQIJAJ0IAgUEdGhpcwUMa0xlbmRTZXJ2aWNlAhtDYW4ndCBnZXQgbGVuZCBzZXJ2aWNlIGFkZHIBDGFzc2V0SWRUb1N0cgEHYXNzZXRJZAQHJG1hdGNoMAUHYXNzZXRJZAMJAAECBQckbWF0Y2gwAgpCeXRlVmVjdG9yBAJpZAUHJG1hdGNoMAkA2AQBBQJpZAMJAAECBQckbWF0Y2gwAgRVbml0BAV3YXZlcwUHJG1hdGNoMAIFV0FWRVMJAAIBAgtNYXRjaCBlcnJvcgEOYXNzZXRJZEZyb21TdHIBB2Fzc2V0SWQDCQAAAgUHYXNzZXRJZAIFV0FWRVMFBHVuaXQJANkEAQUHYXNzZXRJZAEQZ2V0QXNzZXREZWNpbWFscwEHYXNzZXRJZAMJAAACBQdhc3NldElkAgVXQVZFUwAIBAckbWF0Y2gwCQDsBwEJANkEAQUHYXNzZXRJZAMJAAECBQckbWF0Y2gwAgVBc3NldAQFYXNzZXQFByRtYXRjaDAIBQVhc3NldAhkZWNpbWFscwkAAgECEENhbid0IGZpbmQgYXNzZXQBEWdldEFzc2V0UHJlY2l0aW9uAQdhc3NldElkCQBsBgAKAAAJARBnZXRBc3NldERlY2ltYWxzAQUHYXNzZXRJZAAAAAAFBERPV04BDmdldEFzc2V0c1ByaWNlAQhhc3NldElkcwoBCWdldFByaWNlcwIBYQdhc3NldElkBAphc3NldFByaWNlCAoAAUAJAPwHBAUPcHJpY2VPcmFjbGVBZGRyAglnZXRUV0FQNjAJAMwIAgUHYXNzZXRJZAkAzAgCBwUDbmlsBQNuaWwDCQABAgUBQAIKKEludCwgSW50KQUBQAkAAgEJAKwCAgkAAwEFAUACHyBjb3VsZG4ndCBiZSBjYXN0IHRvIChJbnQsIEludCkCXzIJAM0IAgUBYQUKYXNzZXRQcmljZQoAAiRsBQhhc3NldElkcwoAAiRzCQCQAwEFAiRsCgAFJGFjYzAFA25pbAoBBSRmMF8xAgIkYQIkaQMJAGcCBQIkaQUCJHMFAiRhCQEJZ2V0UHJpY2VzAgUCJGEJAJEDAgUCJGwFAiRpCgEFJGYwXzICAiRhAiRpAwkAZwIFAiRpBQIkcwUCJGEJAAIBAhVMaXN0IHNpemUgZXhjZWVkcyAxMDAJAQUkZjBfMgIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIFBSRhY2MwAAAAAQACAAMABAAFAAYABwAIAAkACgALAAwADQAOAA8AEAARABIAEwAUABUAFgAXABgAGQAaABsAHAAdAB4AHwAgACEAIgAjACQAJQAmACcAKAApACoAKwAsAC0ALgAvADAAMQAyADMANAA1ADYANwA4ADkAOgA7ADwAPQA+AD8AQABBAEIAQwBEAEUARgBHAEgASQBKAEsATABNAE4ATwBQAFEAUgBTAFQAVQBWAFcAWABZAFoAWwBcAF0AXgBfAGAAYQBiAGMAZAENZ2V0U2hhcmVQcmljZQEIc2hhcmVJZHMKAQlnZXRQcmljZXMCAWEHc2hhcmVJZAQEcG9vbAkBE3ZhbHVlT3JFcnJvck1lc3NhZ2UCCQCdCAIFBHRoaXMJAKwCAgUHc2hhcmVJZAUKa1NoYXJlUG9vbAIgQ2FuJ3QgZmluZCBwb29sIGFkZHIgYnkgc2hhcmUgaWQECHBvb2xBZGRyCQEHQWRkcmVzcwEJANkEAQUEcG9vbAQFcFR5cGUJARN2YWx1ZU9yRXJyb3JNZXNzYWdlAgkAnQgCBQR0aGlzCQCsAgIFBWtQb29sBQRwb29sAhJQb29sIGlzIG5vdCBpbml0ZWQECyR0MDgzNzY4NDQxCQELZ2V0UG9vbERhdGECBQhwb29sQWRkcgUFcFR5cGUEA2FJZAgFCyR0MDgzNzY4NDQxAl8xBANiSWQIBQskdDA4Mzc2ODQ0MQJfMgQIYUJhbGFuY2UIBQskdDA4Mzc2ODQ0MQJfMwQIYkJhbGFuY2UIBQskdDA4Mzc2ODQ0MQJfNAQHZFByaWNlQQgKAAFACQD8BwQFD3ByaWNlT3JhY2xlQWRkcgIJZ2V0VFdBUDYwCQDMCAIFA2FJZAkAzAgCBwUDbmlsBQNuaWwDCQABAgUBQAIKKEludCwgSW50KQUBQAkAAgEJAKwCAgkAAwEFAUACHyBjb3VsZG4ndCBiZSBjYXN0IHRvIChJbnQsIEludCkCXzIEB2RQcmljZUIICgABQAkA/AcEBQ9wcmljZU9yYWNsZUFkZHICCWdldFRXQVA2MAkAzAgCBQNiSWQJAMwIAgcFA25pbAUDbmlsAwkAAQIFAUACCihJbnQsIEludCkFAUAJAAIBCQCsAgIJAAMBBQFAAh8gY291bGRuJ3QgYmUgY2FzdCB0byAoSW50LCBJbnQpAl8yBAtzaGFyZVN1cHBseQkBDmdldFNoYXJlU3VwcGx5AwUIcG9vbEFkZHIFBXBUeXBlBQdzaGFyZUlkBApBUHJlY2lzaW9uCQBsBgAKAAAJARBnZXRBc3NldERlY2ltYWxzAQUDYUlkAAAAAAUERE9XTgQKQlByZWNpc2lvbgkAbAYACgAACQEQZ2V0QXNzZXREZWNpbWFscwEFA2JJZAAAAAAFBERPV04EDnNoYXJlUHJlY2lzaW9uCQBsBgAKAAAJARBnZXRBc3NldERlY2ltYWxzAQUHc2hhcmVJZAAAAAAFBERPV04EA3N1bQkAZAIJAGsDBQhhQmFsYW5jZQUHZFByaWNlQQUKQVByZWNpc2lvbgkAawMFCGJCYWxhbmNlBQdkUHJpY2VCBQpCUHJlY2lzaW9uBApzaGFyZVByaWNlCQBrAwUDc3VtBQ5zaGFyZVByZWNpc2lvbgULc2hhcmVTdXBwbHkJAM0IAgUBYQUKc2hhcmVQcmljZQoAAiRsBQhzaGFyZUlkcwoAAiRzCQCQAwEFAiRsCgAFJGFjYzAFA25pbAoBBSRmMF8xAgIkYQIkaQMJAGcCBQIkaQUCJHMFAiRhCQEJZ2V0UHJpY2VzAgUCJGEJAJEDAgUCJGwFAiRpCgEFJGYwXzICAiRhAiRpAwkAZwIFAiRpBQIkcwUCJGEJAAIBAhRMaXN0IHNpemUgZXhjZWVkcyA1MAkBBSRmMF8yAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgUFJGFjYzAAAAABAAIAAwAEAAUABgAHAAgACQAKAAsADAANAA4ADwAQABEAEgATABQAFQAWABcAGAAZABoAGwAcAB0AHgAfACAAIQAiACMAJAAlACYAJwAoACkAKgArACwALQAuAC8AMAAxADIBDmdldEN1cnNFbnRyaWVzAwNhSWQDYklkB3NoYXJlSWQEDGFzc2V0c1ByaWNlcwkBDmdldEFzc2V0c1ByaWNlAQkAzAgCBQNhSWQJAMwIAgUDYklkBQNuaWwECnNoYXJlUHJpY2UJAQ1nZXRTaGFyZVByaWNlAQkAzAgCBQdzaGFyZUlkBQNuaWwJAMwIAgkBDEludGVnZXJFbnRyeQIJAKwCAgUDYUlkBQ9rVG9rZW5MYXN0UHJpY2UJAJEDAgUMYXNzZXRzUHJpY2VzAAAJAMwIAgkBDEludGVnZXJFbnRyeQIJAKwCAgUDYklkBQ9rVG9rZW5MYXN0UHJpY2UJAJEDAgUMYXNzZXRzUHJpY2VzAAEJAMwIAgkBDEludGVnZXJFbnRyeQIJAKwCAgUHc2hhcmVJZAUPa1Rva2VuTGFzdFByaWNlCQCRAwIFCnNoYXJlUHJpY2UAAAUDbmlsAQ9yZXBsZW5pc2hTd29wRmkJBHBvb2wHZmVlVHlwZQRwbXRBCXBtdEFzc2V0QQRwbXRCCXBtdEFzc2V0QgRiYWxBBGJhbEIHc2hhcmVJZAQSc2hhcmVCYWxhbmNlQmVmb3JlCQEOYWNjb3VudEJhbGFuY2UBCQDZBAEFB3NoYXJlSWQDCQAAAgUSc2hhcmVCYWxhbmNlQmVmb3JlBRJzaGFyZUJhbGFuY2VCZWZvcmUECHBvb2xBZGRyCQEHQWRkcmVzcwEJANkEAQUEcG9vbAQGcmF0aW9BCQBrAwUGU0NBTEU4BQRwbXRBBQRiYWxBBAZyYXRpb0IJAGsDBQZTQ0FMRTgFBHBtdEIFBGJhbEIEDCR0MDk5NDYxMDIzOAMJAGYCBQZyYXRpb0IFBnJhdGlvQQQDcG10CQBuBAUEYmFsQgUGcmF0aW9BBQZTQ0FMRTgFB0NFSUxJTkcJAJYKBAUEcG10QQUDcG10CQBlAgUEcG10QgUDcG10BQlwbXRBc3NldEIEA3BtdAkAbgQFBGJhbEEFBnJhdGlvQgUGU0NBTEU4BQdDRUlMSU5HCQCWCgQFA3BtdAUEcG10QgkAZQIFBHBtdEEFA3BtdAUJcG10QXNzZXRBBApwbXRBbW91bnRBCAUMJHQwOTk0NjEwMjM4Al8xBApwbXRBbW91bnRCCAUMJHQwOTk0NjEwMjM4Al8yBAZjaGFuZ2UIBQwkdDA5OTQ2MTAyMzgCXzMEDWNoYW5nZUFzc2V0SWQIBQwkdDA5OTQ2MTAyMzgCXzQEBGludjEDAwkAZgIFCnBtdEFtb3VudEEAAAkAZgIFCnBtdEFtb3VudEIAAAcECHBheW1lbnRzCQDMCAIJAQ9BdHRhY2hlZFBheW1lbnQCCQEOYXNzZXRJZEZyb21TdHIBBQlwbXRBc3NldEEFCnBtdEFtb3VudEEJAMwIAgkBD0F0dGFjaGVkUGF5bWVudAIJAQ5hc3NldElkRnJvbVN0cgEFCXBtdEFzc2V0QgUKcG10QW1vdW50QgUDbmlsCQD8BwQFCHBvb2xBZGRyAgxjYWxsRnVuY3Rpb24JAMwIAgIWcmVwbGVuaXNoV2l0aFR3b1Rva2VucwkAzAgCCQDMCAICBWZhbHNlCQDMCAICATAFA25pbAUDbmlsBQhwYXltZW50cwAAAwkAAAIFBGludjEFBGludjEEBGludjIDCQBmAgUGY2hhbmdlAAAECHBheW1lbnRzCQDMCAIJAQ9BdHRhY2hlZFBheW1lbnQCCQEOYXNzZXRJZEZyb21TdHIBBQ1jaGFuZ2VBc3NldElkBQZjaGFuZ2UFA25pbAQEdmFycwkAzAgCAgEwCQDMCAICBWZhbHNlCQDMCAICATAFA25pbAkA/AcEBQhwb29sQWRkcgIMY2FsbEZ1bmN0aW9uCQDMCAICFXJlcGxlbmlzaFdpdGhPbmVUb2tlbgkAzAgCBQR2YXJzBQNuaWwFCHBheW1lbnRzAAADCQAAAgUEaW52MgUEaW52MgQRc2hhcmVCYWxhbmNlQWZ0ZXIJAQ5hY2NvdW50QmFsYW5jZQEJANkEAQUHc2hhcmVJZAQLdG90YWxTdGFrZWQJAGUCBRFzaGFyZUJhbGFuY2VBZnRlcgUSc2hhcmVCYWxhbmNlQmVmb3JlBA1heGx5RmVlQW1vdW50CQBrAwULdG90YWxTdGFrZWQJAQpnZXRBeGx5RmVlAgUEcG9vbAUHZmVlVHlwZQUKRkVFX1NDQUxFNgQRdXNlclNoYXJlRm9yU3Rha2UJAGUCBQt0b3RhbFN0YWtlZAUNYXhseUZlZUFtb3VudAMJAGcCAAAFEXVzZXJTaGFyZUZvclN0YWtlCQACAQIoYW1vdW50IG9mIHN0YWtlZCBzaGFyZXRva2VucyBtdXN0IGJlID4gMAQEaW52MwkA/AcECQEQZ2V0U0ZGYXJtaW5nQWRkcgACD2xvY2tTaGFyZVRva2VucwkAzAgCBQRwb29sCQDMCAIAAAUDbmlsCQDMCAIJAQ9BdHRhY2hlZFBheW1lbnQCCQDZBAEFB3NoYXJlSWQFEXVzZXJTaGFyZUZvclN0YWtlBQNuaWwDCQAAAgUEaW52MwUEaW52MwkAlAoCBRF1c2VyU2hhcmVGb3JTdGFrZQUNYXhseUZlZUFtb3VudAkAAgECJFN0cmljdCB2YWx1ZSBpcyBub3QgZXF1YWwgdG8gaXRzZWxmLgkAAgECJFN0cmljdCB2YWx1ZSBpcyBub3QgZXF1YWwgdG8gaXRzZWxmLgkAAgECJFN0cmljdCB2YWx1ZSBpcyBub3QgZXF1YWwgdG8gaXRzZWxmLgkAAgECJFN0cmljdCB2YWx1ZSBpcyBub3QgZXF1YWwgdG8gaXRzZWxmLgELcmVwbGVuaXNoV1gHBHBvb2wHZmVlVHlwZQRwbXRBCXBtdEFzc2V0QQRwbXRCCXBtdEFzc2V0QgdzaGFyZUlkBAhwb29sQWRkcgkBB0FkZHJlc3MBCQDZBAEFBHBvb2wEDSR0MDExNjg5MTI1MzgDAwkAZgIFBHBtdEEAAAkAZgIFBHBtdEIAAAcECmV2YWxQdXRJbkEJALUJAgoAAUAJAPwHBAUIcG9vbEFkZHICIGV2YWx1YXRlUHV0QnlBbW91bnRBc3NldFJFQURPTkxZCQDMCAIFBHBtdEEFA25pbAUDbmlsAwkAAQIFAUACBlN0cmluZwUBQAkAAgEJAKwCAgkAAwEFAUACGyBjb3VsZG4ndCBiZSBjYXN0IHRvIFN0cmluZwICX18DCQAAAgUKZXZhbFB1dEluQQUKZXZhbFB1dEluQQQKZXZhbFB1dEluQgkAtQkCCgABQAkA/AcEBQhwb29sQWRkcgIfZXZhbHVhdGVQdXRCeVByaWNlQXNzZXRSRUFET05MWQkAzAgCBQRwbXRCBQNuaWwFA25pbAMJAAECBQFAAgZTdHJpbmcFAUAJAAIBCQCsAgIJAAMBBQFAAhsgY291bGRuJ3QgYmUgY2FzdCB0byBTdHJpbmcCAl9fAwkAAAIFCmV2YWxQdXRJbkIFCmV2YWxQdXRJbkIEBWxwSW5BCQENcGFyc2VJbnRWYWx1ZQEJAJEDAgUKZXZhbFB1dEluQQABBAVscEluQgkBDXBhcnNlSW50VmFsdWUBCQCRAwIFCmV2YWxQdXRJbkIAAQMJAGYCBQVscEluQgUFbHBJbkEEBnBtdEluQgkBDXBhcnNlSW50VmFsdWUBCQCRAwIFCmV2YWxQdXRJbkEACAkAlgoEBQRwbXRBBQZwbXRJbkIJAGUCBQRwbXRCBQZwbXRJbkIFCXBtdEFzc2V0QgQGcG10SW5BCQENcGFyc2VJbnRWYWx1ZQEJAJEDAgUKZXZhbFB1dEluQgAHCQCWCgQFBnBtdEluQQUEcG10QgkAZQIFBHBtdEEFBnBtdEluQQUJcG10QXNzZXRBCQACAQIkU3RyaWN0IHZhbHVlIGlzIG5vdCBlcXVhbCB0byBpdHNlbGYuCQACAQIkU3RyaWN0IHZhbHVlIGlzIG5vdCBlcXVhbCB0byBpdHNlbGYuAwkAZgIFBHBtdEEAAAkAlgoEBQRwbXRBBQRwbXRCBQRwbXRBBQlwbXRBc3NldEEDCQBmAgUEcG10QgAACQCWCgQFBHBtdEEFBHBtdEIFBHBtdEIFCXBtdEFzc2V0QgkAAgECEHBtdHMgbXVzdCBiZSA+IDAECnBtdEFtb3VudEEIBQ0kdDAxMTY4OTEyNTM4Al8xBApwbXRBbW91bnRCCAUNJHQwMTE2ODkxMjUzOAJfMgQGY2hhbmdlCAUNJHQwMTE2ODkxMjUzOAJfMwQNY2hhbmdlQXNzZXRJZAgFDSR0MDExNjg5MTI1MzgCXzQEEnNoYXJlQmFsYW5jZUJlZm9yZQkBDmFjY291bnRCYWxhbmNlAQkA2QQBBQdzaGFyZUlkAwkAAAIFEnNoYXJlQmFsYW5jZUJlZm9yZQUSc2hhcmVCYWxhbmNlQmVmb3JlBARpbnYxAwMJAGYCBQpwbXRBbW91bnRBAAAJAGYCBQpwbXRBbW91bnRCAAAHBAhwYXltZW50cwkAzAgCCQEPQXR0YWNoZWRQYXltZW50AgkBDmFzc2V0SWRGcm9tU3RyAQUJcG10QXNzZXRBBQpwbXRBbW91bnRBCQDMCAIJAQ9BdHRhY2hlZFBheW1lbnQCCQEOYXNzZXRJZEZyb21TdHIBBQlwbXRBc3NldEIFCnBtdEFtb3VudEIFA25pbAkA/AcEBQhwb29sQWRkcgIDcHV0CQDMCAIAwIQ9CQDMCAIHBQNuaWwFCHBheW1lbnRzAAADCQAAAgUEaW52MQUEaW52MQQEaW52MgMJAGYCBQZjaGFuZ2UAAAQIcGF5bWVudHMJAMwIAgkBD0F0dGFjaGVkUGF5bWVudAIJAQ5hc3NldElkRnJvbVN0cgEFDWNoYW5nZUFzc2V0SWQFBmNoYW5nZQUDbmlsCQD8BwQFCHBvb2xBZGRyAglwdXRPbmVUa24JAMwIAgAACQDMCAIHBQNuaWwFCHBheW1lbnRzAAADCQAAAgUEaW52MgUEaW52MgQRc2hhcmVCYWxhbmNlQWZ0ZXIJAQ5hY2NvdW50QmFsYW5jZQEJANkEAQUHc2hhcmVJZAQLdG90YWxTdGFrZWQJAGUCBRFzaGFyZUJhbGFuY2VBZnRlcgUSc2hhcmVCYWxhbmNlQmVmb3JlBA1heGx5RmVlQW1vdW50CQBrAwULdG90YWxTdGFrZWQJAQpnZXRBeGx5RmVlAgUEcG9vbAUHZmVlVHlwZQUKRkVFX1NDQUxFNgQRdXNlclNoYXJlRm9yU3Rha2UJAGUCBQt0b3RhbFN0YWtlZAUNYXhseUZlZUFtb3VudAMJAGcCAAAFEXVzZXJTaGFyZUZvclN0YWtlCQACAQIoYW1vdW50IG9mIHN0YWtlZCBzaGFyZXRva2VucyBtdXN0IGJlID4gMAQEaW52MwkA/AcECQEQZ2V0V1hGYXJtaW5nQWRkcgEFCHBvb2xBZGRyAgVzdGFrZQUDbmlsCQDMCAIJAQ9BdHRhY2hlZFBheW1lbnQCCQDZBAEFB3NoYXJlSWQFEXVzZXJTaGFyZUZvclN0YWtlBQNuaWwDCQAAAgUEaW52MwUEaW52MwkAlAoCBRF1c2VyU2hhcmVGb3JTdGFrZQUNYXhseUZlZUFtb3VudAkAAgECJFN0cmljdCB2YWx1ZSBpcyBub3QgZXF1YWwgdG8gaXRzZWxmLgkAAgECJFN0cmljdCB2YWx1ZSBpcyBub3QgZXF1YWwgdG8gaXRzZWxmLgkAAgECJFN0cmljdCB2YWx1ZSBpcyBub3QgZXF1YWwgdG8gaXRzZWxmLgkAAgECJFN0cmljdCB2YWx1ZSBpcyBub3QgZXF1YWwgdG8gaXRzZWxmLgEPcmVwbGVuaXNoQnlUeXBlCgR0eXBlBHBvb2wHZmVlVHlwZQRwbXRBA0FJZARwbXRCA0JJZARiYWxBBGJhbEIHc2hhcmVJZAMJAAACBQR0eXBlBQdTRl9QT09MCQEPcmVwbGVuaXNoU3dvcEZpCQUEcG9vbAUHZmVlVHlwZQUEcG10QQUDQUlkBQRwbXRCBQNCSWQFBGJhbEEFBGJhbEIFB3NoYXJlSWQDCQAAAgUEdHlwZQUHV1hfUE9PTAkBC3JlcGxlbmlzaFdYBwUEcG9vbAUHZmVlVHlwZQUEcG10QQUDQUlkBQRwbXRCBQNCSWQFB3NoYXJlSWQJAAIBAg9Xcm9uZyBwb29sIHR5cGUBEHJlcGxlbmlzaEVudHJpZXMIBHBvb2wEdXNlcgxzdGFrZWRBbW91bnQNYXhseUZlZUFtb3VudAZwb3NOdW0Hc2hhcmVJZAR0eXBlCHdpdGhMb2FuBAt0b3RhbEFtb3VudAkBEWdldFBvb2xUb3RhbFNoYXJlAQUEcG9vbAQPdG90YWxBbW91bnRMb2FuCQEZZ2V0UG9vbFRvdGFsU2hhcmVXaXRoTG9hbgEFBHBvb2wEDSR0MDE0NTU2MTQ3OTQDBQh3aXRoTG9hbgkAlAoCCQERQGV4dHJOYXRpdmUoMTA1MCkCBQR0aGlzCQCsAgIFBHBvb2wFEWtQb29sSW50ZXJlc3RMb2FuCQBkAgUPdG90YWxBbW91bnRMb2FuBQxzdGFrZWRBbW91bnQJAJQKAgkBEUBleHRyTmF0aXZlKDEwNTApAgUEdGhpcwkArAICBQRwb29sBRNrUG9vbEludGVyZXN0Tm9Mb2FuBQ90b3RhbEFtb3VudExvYW4ED2N1clBvb2xJbnRlcmVzdAgFDSR0MDE0NTU2MTQ3OTQCXzEEE3RvdGFsU3Rha2VkV2l0aExvYW4IBQ0kdDAxNDU1NjE0Nzk0Al8yCQDMCAIJAQxJbnRlZ2VyRW50cnkCCQCsAgIFBHBvb2wFCmtQb29sVG90YWwJAGQCBQt0b3RhbEFtb3VudAUMc3Rha2VkQW1vdW50CQDMCAIJAQxJbnRlZ2VyRW50cnkCCQCsAgIFBHBvb2wFDmtQb29sVG90YWxMb2FuCQBkAgUPdG90YWxBbW91bnRMb2FuBQxzdGFrZWRBbW91bnQJAMwIAgkBDEludGVnZXJFbnRyeQIJAKwCAgkArAICCQCsAgIJAKwCAgkArAICBQRwb29sAgFfBQR1c2VyAgFfCQCkAwEFBnBvc051bQUNa1VzZXJQb3NpdGlvbgUMc3Rha2VkQW1vdW50CQDMCAIJAQxJbnRlZ2VyRW50cnkCCQCsAgIJAKwCAgkArAICCQCsAgIJAKwCAgUEcG9vbAIBXwUEdXNlcgIBXwkApAMBBQZwb3NOdW0FFWtVc2VyUG9zaXRpb25JbnRlcmVzdAUPY3VyUG9vbEludGVyZXN0CQDMCAIJAQtTdHJpbmdFbnRyeQIJAKwCAgkArAICCQCsAgIFBHVzZXICAV8JAKQDAQUGcG9zTnVtBRFrVXNlclBvc2l0aW9uUG9vbAUEcG9vbAkAzAgCCQEMSW50ZWdlckVudHJ5AgkArAICBQR1c2VyBRBrVXNlclBvc2l0aW9uTnVtBQZwb3NOdW0JAMwIAgkBDlNjcmlwdFRyYW5zZmVyAwUIbW9uZXlCb3gFDWF4bHlGZWVBbW91bnQJANkEAQUHc2hhcmVJZAUDbmlsAQtjbGFpbUZhcm1lZAIEdHlwZQRwb29sAwkAAAIFBHR5cGUFB1NGX1BPT0wECWJhbEJlZm9yZQkBDmFjY291bnRCYWxhbmNlAQUGU1dPUElEAwkAAAIFCWJhbEJlZm9yZQUJYmFsQmVmb3JlBANpbnYJAPwHBAkBEGdldFNGRmFybWluZ0FkZHIAAgVjbGFpbQkAzAgCBQRwb29sBQNuaWwFA25pbAMJAAACBQNpbnYFA2ludgQIYmFsQWZ0ZXIJAQ5hY2NvdW50QmFsYW5jZQEFBlNXT1BJRAkAlAoCCQBlAgUIYmFsQWZ0ZXIFCWJhbEJlZm9yZQUGU1dPUElECQACAQIkU3RyaWN0IHZhbHVlIGlzIG5vdCBlcXVhbCB0byBpdHNlbGYuCQACAQIkU3RyaWN0IHZhbHVlIGlzIG5vdCBlcXVhbCB0byBpdHNlbGYuAwkAAAIFBHR5cGUFB1dYX1BPT0wECWJhbEJlZm9yZQkBDmFjY291bnRCYWxhbmNlAQUEV1hJRAMJAAACBQliYWxCZWZvcmUFCWJhbEJlZm9yZQQDaW52CQD8BwQJARBnZXRXWEZhcm1pbmdBZGRyAQkBB0FkZHJlc3MBCQDZBAEFBHBvb2wCB2NsYWltV1gJAMwIAgUEcG9vbAUDbmlsBQNuaWwDCQAAAgUDaW52BQNpbnYECGJhbEFmdGVyCQEOYWNjb3VudEJhbGFuY2UBBQRXWElECQCUCgIJAGUCBQhiYWxBZnRlcgUJYmFsQmVmb3JlBQRXWElECQACAQIkU3RyaWN0IHZhbHVlIGlzIG5vdCBlcXVhbCB0byBpdHNlbGYuCQACAQIkU3RyaWN0IHZhbHVlIGlzIG5vdCBlcXVhbCB0byBpdHNlbGYuCQACAQIPV3JvbmcgcG9vbCB0eXBlAQ5leGNoYW5nZUtlZXBlcgoHdG9Ub2tlbglwbXRBbW91bnQIcG10QXNzZXQJYW1vdW50c0luCWFkZHJlc3Nlcw9hc3NldHNUb1JlY2VpdmULZXN0UmVjZWl2ZWQRc2xpcHBhZ2VUb2xlcmFuY2ULbWluUmVjZWl2ZWQHb3B0aW9ucwQSdG9rZW5CYWxhbmNlQmVmb3JlCQEOYWNjb3VudEJhbGFuY2UBCQEOYXNzZXRJZEZyb21TdHIBBQd0b1Rva2VuAwkAAAIFEnRva2VuQmFsYW5jZUJlZm9yZQUSdG9rZW5CYWxhbmNlQmVmb3JlBANpbnYJAPwHBAUKZXhDb250cmFjdAIEc3dhcAkAzAgCBQlhbW91bnRzSW4JAMwIAgUJYWRkcmVzc2VzCQDMCAIFD2Fzc2V0c1RvUmVjZWl2ZQkAzAgCBQtlc3RSZWNlaXZlZAkAzAgCBRFzbGlwcGFnZVRvbGVyYW5jZQkAzAgCBQttaW5SZWNlaXZlZAkAzAgCBQdvcHRpb25zBQNuaWwJAMwIAgkBD0F0dGFjaGVkUGF5bWVudAIFCHBtdEFzc2V0BQlwbXRBbW91bnQFA25pbAMJAAACBQNpbnYFA2ludgkAZQIJAQ5hY2NvdW50QmFsYW5jZQEJAQ5hc3NldElkRnJvbVN0cgEFB3RvVG9rZW4FEnRva2VuQmFsYW5jZUJlZm9yZQkAAgECJFN0cmljdCB2YWx1ZSBpcyBub3QgZXF1YWwgdG8gaXRzZWxmLgkAAgECJFN0cmljdCB2YWx1ZSBpcyBub3QgZXF1YWwgdG8gaXRzZWxmLgEOZXhjaGFuZ2VQdXp6bGUGB3RvVG9rZW4JcG10QW1vdW50CHBtdEFzc2V0CXJvdXRlc1N0cgxtaW5Ub1JlY2VpdmUHb3B0aW9ucwQSdG9rZW5CYWxhbmNlQmVmb3JlCQEOYWNjb3VudEJhbGFuY2UBCQEOYXNzZXRJZEZyb21TdHIBBQd0b1Rva2VuAwkAAAIFEnRva2VuQmFsYW5jZUJlZm9yZQUSdG9rZW5CYWxhbmNlQmVmb3JlBANpbnYJAPwHBAUKZXhDb250cmFjdAIKcHV6emxlU3dhcAkAzAgCBQlyb3V0ZXNTdHIJAMwIAgUMbWluVG9SZWNlaXZlCQDMCAIFB29wdGlvbnMFA25pbAkAzAgCCQEPQXR0YWNoZWRQYXltZW50AgUIcG10QXNzZXQFCXBtdEFtb3VudAUDbmlsAwkAAAIFA2ludgUDaW52CQBlAgkBDmFjY291bnRCYWxhbmNlAQkBDmFzc2V0SWRGcm9tU3RyAQUHdG9Ub2tlbgUSdG9rZW5CYWxhbmNlQmVmb3JlCQACAQIkU3RyaWN0IHZhbHVlIGlzIG5vdCBlcXVhbCB0byBpdHNlbGYuCQACAQIkU3RyaWN0IHZhbHVlIGlzIG5vdCBlcXVhbCB0byBpdHNlbGYuAQ5leGNoYW5nZVN3b3BGaQoHdG9Ub2tlbglwbXRBbW91bnQIcG10QXNzZXQKZXhjaGFuZ2Vycw5leGNoYW5nZXJzVHlwZQVhcmdzMQVhcmdzMhFyb3V0aW5nQXNzZXRzS2V5cxJtaW5BbW91bnRUb1JlY2VpdmUHb3B0aW9ucwQSdG9rZW5CYWxhbmNlQmVmb3JlCQEOYWNjb3VudEJhbGFuY2UBCQEOYXNzZXRJZEZyb21TdHIBBQd0b1Rva2VuAwkAAAIFEnRva2VuQmFsYW5jZUJlZm9yZQUSdG9rZW5CYWxhbmNlQmVmb3JlBANpbnYJAPwHBAUKZXhDb250cmFjdAIKc3dvcGZpU3dhcAkAzAgCBQpleGNoYW5nZXJzCQDMCAIFDmV4Y2hhbmdlcnNUeXBlCQDMCAIFBWFyZ3MxCQDMCAIFBWFyZ3MyCQDMCAIFEXJvdXRpbmdBc3NldHNLZXlzCQDMCAIFEm1pbkFtb3VudFRvUmVjZWl2ZQkAzAgCBQdvcHRpb25zBQNuaWwJAMwIAgkBD0F0dGFjaGVkUGF5bWVudAIFCHBtdEFzc2V0BQlwbXRBbW91bnQFA25pbAMJAAACBQNpbnYFA2ludgkAZQIJAQ5hY2NvdW50QmFsYW5jZQEJAQ5hc3NldElkRnJvbVN0cgEFB3RvVG9rZW4FEnRva2VuQmFsYW5jZUJlZm9yZQkAAgECJFN0cmljdCB2YWx1ZSBpcyBub3QgZXF1YWwgdG8gaXRzZWxmLgkAAgECJFN0cmljdCB2YWx1ZSBpcyBub3QgZXF1YWwgdG8gaXRzZWxmLgEKY2FwaXRhbGl6ZQQEcG9vbAVwVHlwZQd0b2tlbklkC3Rva2VuQW1vdW50BAhwb29sQWRkcgkBB0FkZHJlc3MBCQDZBAEFBHBvb2wEDSR0MDE3NzYwMTc4MzkJAQtnZXRQb29sRGF0YQIFCHBvb2xBZGRyBQVwVHlwZQQDQUlkCAUNJHQwMTc3NjAxNzgzOQJfMQQDQklkCAUNJHQwMTc3NjAxNzgzOQJfMgQEYmFsQQgFDSR0MDE3NzYwMTc4MzkCXzMEBGJhbEIIBQ0kdDAxNzc2MDE3ODM5Al80BAdzaGFyZUlkCAUNJHQwMTc3NjAxNzgzOQJfNQQNJHQwMTc4NDIxNzkyMgMJAAACBQd0b2tlbklkBQNBSWQJAJQKAgULdG9rZW5BbW91bnQAAAkAlAoCAAAFC3Rva2VuQW1vdW50BARwbXRBCAUNJHQwMTc4NDIxNzkyMgJfMQQEcG10QggFDSR0MDE3ODQyMTc5MjICXzIEDSR0MDE3OTI1MTgwMjkJAQ9yZXBsZW5pc2hCeVR5cGUKBQVwVHlwZQUEcG9vbAUGTk9fRkVFBQRwbXRBBQNBSWQFBHBtdEIFA0JJZAUEYmFsQQUEYmFsQgUHc2hhcmVJZAQMc3Rha2VkQW1vdW50CAUNJHQwMTc5MjUxODAyOQJfMQQCbmYIBQ0kdDAxNzkyNTE4MDI5Al8yBBNjdXJQb29sSW50ZXJlc3RMb2FuCQELdmFsdWVPckVsc2UCCQCaCAIFBHRoaXMJAKwCAgUEcG9vbAURa1Bvb2xJbnRlcmVzdExvYW4AAAQVY3VyUG9vbEludGVyZXN0Tm9Mb2FuCQELdmFsdWVPckVsc2UCCQCaCAIFBHRoaXMJAKwCAgUEcG9vbAUTa1Bvb2xJbnRlcmVzdE5vTG9hbgAABBB0b3RhbFNoYXJlQW1vdW50CQERZ2V0UG9vbFRvdGFsU2hhcmUBBQRwb29sBBh0b3RhbFNoYXJlQW1vdW50V2l0aExvYW4JARlnZXRQb29sVG90YWxTaGFyZVdpdGhMb2FuAQUEcG9vbAQLbG9hblBlcmNlbnQJAGsDBRh0b3RhbFNoYXJlQW1vdW50V2l0aExvYW4FBlNDQUxFOAUQdG90YWxTaGFyZUFtb3VudAQKc3Rha2VkTG9hbgkAawMFDHN0YWtlZEFtb3VudAULbG9hblBlcmNlbnQFBlNDQUxFOAQMc3Rha2VkTm9Mb2FuCQBlAgUMc3Rha2VkQW1vdW50BQpzdGFrZWRMb2FuBA9uZXdJbnRlcmVzdExvYW4JAGQCBRNjdXJQb29sSW50ZXJlc3RMb2FuCQBrAwUKc3Rha2VkTG9hbgUHU0NBTEUxMAUYdG90YWxTaGFyZUFtb3VudFdpdGhMb2FuBBFuZXdJbnRlcmVzdE5vTG9hbgkAZAIFFWN1clBvb2xJbnRlcmVzdE5vTG9hbgkAawMFDHN0YWtlZE5vTG9hbgUHU0NBTEUxMAkAZQIFEHRvdGFsU2hhcmVBbW91bnQFGHRvdGFsU2hhcmVBbW91bnRXaXRoTG9hbgQLYXhseUZlZUxvYW4JAGsDBQpzdGFrZWRMb2FuCQEKZ2V0QXhseUZlZQIFBHBvb2wFDENBUF9GRUVfTE9BTgUKRkVFX1NDQUxFNgQNYXhseUZlZU5vTG9hbgkAawMFDHN0YWtlZE5vTG9hbgkBCmdldEF4bHlGZWUCBQRwb29sBQ9DQVBfRkVFX05PX0xPQU4FCkZFRV9TQ0FMRTYJAM4IAgkAzAgCCQEMSW50ZWdlckVudHJ5AgkArAICBQRwb29sBRFrUG9vbEludGVyZXN0TG9hbgUPbmV3SW50ZXJlc3RMb2FuCQDMCAIJAQxJbnRlZ2VyRW50cnkCCQCsAgIFBHBvb2wFE2tQb29sSW50ZXJlc3ROb0xvYW4FEW5ld0ludGVyZXN0Tm9Mb2FuCQDMCAIJAQxJbnRlZ2VyRW50cnkCCQCsAgIFBHBvb2wFCmtQb29sVG90YWwJAGUCCQBlAgkAZAIFEHRvdGFsU2hhcmVBbW91bnQFDHN0YWtlZEFtb3VudAULYXhseUZlZUxvYW4FDWF4bHlGZWVOb0xvYW4JAMwIAgkBDEludGVnZXJFbnRyeQIJAKwCAgUEcG9vbAUOa1Bvb2xUb3RhbExvYW4JAGUCCQBkAgUYdG90YWxTaGFyZUFtb3VudFdpdGhMb2FuBQpzdGFrZWRMb2FuBQtheGx5RmVlTG9hbgkAzAgCCQEOU2NyaXB0VHJhbnNmZXIDBQhtb25leUJveAkAZAIFC2F4bHlGZWVMb2FuBQ1heGx5RmVlTm9Mb2FuCQDZBAEFB3NoYXJlSWQFA25pbAkBDmdldEN1cnNFbnRyaWVzAwUDQUlkBQNCSWQFB3NoYXJlSWQBEmV4Y2hhbmdlRGlyZWN0bHlTRgcEcG9vbAhhc3NldElkQQhhc3NldElkQgRiYWxBBGJhbEIQYW1vdW50VG9rZW5Ub0dldA9hc3NldFRva2VuVG9HZXQECHBvb2xBZGRyCQEHQWRkcmVzcwEJANkEAQUEcG9vbAQJZmVlU2NhbGU2AMCEPQQDZmVlCQERQGV4dHJOYXRpdmUoMTA1MCkCBQhwb29sQWRkcgUKa1NGUG9vbEZlZQQMYW1udEdldE5vRmVlCQBrAwUQYW1vdW50VG9rZW5Ub0dldAUJZmVlU2NhbGU2CQBlAgUJZmVlU2NhbGU2BQNmZWUEDSR0MDE5NzE3MjAwMDUDCQAAAgUPYXNzZXRUb2tlblRvR2V0BQhhc3NldElkQQQLYW1vdW50VG9QYXkJAGsDBQRiYWxBBQxhbW50R2V0Tm9GZWUJAGUCBQRiYWxCBQxhbW50R2V0Tm9GZWUJAJQKAgULYW1vdW50VG9QYXkFCGFzc2V0SWRCBAthbW91bnRUb1BheQkAawMFBGJhbEIFDGFtbnRHZXROb0ZlZQkAZQIFBGJhbEEFDGFtbnRHZXROb0ZlZQkAlAoCBQthbW91bnRUb1BheQUIYXNzZXRJZEEEC2Ftb3VudFRvUGF5CAUNJHQwMTk3MTcyMDAwNQJfMQQKYXNzZXRUb1BheQgFDSR0MDE5NzE3MjAwMDUCXzIJAPwHBAUIcG9vbEFkZHICDGNhbGxGdW5jdGlvbgkAzAgCAghleGNoYW5nZQkAzAgCCQDMCAICATEFA25pbAUDbmlsCQDMCAIJAQ9BdHRhY2hlZFBheW1lbnQCCQEOYXNzZXRJZEZyb21TdHIBBQphc3NldFRvUGF5BQthbW91bnRUb1BheQUDbmlsARJleGNoYW5nZURpcmVjdGx5V1gHBHBvb2wIYXNzZXRJZEEIYXNzZXRJZEIEYmFsQQRiYWxCEGFtb3VudFRva2VuVG9HZXQPYXNzZXRUb2tlblRvR2V0BAhwb29sQWRkcgkBB0FkZHJlc3MBCQDZBAEFBHBvb2wEBXByRmVlCQERQGV4dHJOYXRpdmUoMTA1MCkCBQ53eFN3YXBDb250cmFjdAIPJXNfX3Byb3RvY29sRmVlBARwRmVlCQERQGV4dHJOYXRpdmUoMTA1MCkCBQ53eFN3YXBDb250cmFjdAILJXNfX3Bvb2xGZWUECGZlZVNjYWxlCQC2AgEAgMLXLwQNJHQwMjA0ODQyMDc5MgMJAAACBQ9hc3NldFRva2VuVG9HZXQFCGFzc2V0SWRBBAthbW91bnRUb1BheQkAawMFBGJhbEEFEGFtb3VudFRva2VuVG9HZXQJAGUCBQRiYWxCBRBhbW91bnRUb2tlblRvR2V0CQCUCgIFC2Ftb3VudFRvUGF5BQhhc3NldElkQgQLYW1vdW50VG9QYXkJAGsDBQRiYWxCBRBhbW91bnRUb2tlblRvR2V0CQBlAgUEYmFsQQUQYW1vdW50VG9rZW5Ub0dldAkAlAoCBQthbW91bnRUb1BheQUIYXNzZXRJZEEEC2Ftb3VudFRvUGF5CAUNJHQwMjA0ODQyMDc5MgJfMQQKYXNzZXRUb1BheQgFDSR0MDIwNDg0MjA3OTICXzIEEmFtb3VudFRvUGF5V2l0aEZlZQkAoAMBCQC8AgMJALYCAQULYW1vdW50VG9QYXkFCGZlZVNjYWxlCQC4AgIFCGZlZVNjYWxlCQC2AgEJAGQCBQVwckZlZQUEcEZlZQkA/AcEBQ53eFN3YXBDb250cmFjdAIEc3dhcAkAzAgCAAEJAMwIAgUPYXNzZXRUb2tlblRvR2V0CQDMCAIJAKUIAQUEdGhpcwUDbmlsCQDMCAIJAQ9BdHRhY2hlZFBheW1lbnQCCQEOYXNzZXRJZEZyb21TdHIBBQphc3NldFRvUGF5BRJhbW91bnRUb1BheVdpdGhGZWUFA25pbAEQZXhjaGFuZ2VEaXJlY3RseQgEdHlwZQRwb29sCGFzc2V0SWRBCGFzc2V0SWRCBGJhbEEEYmFsQhBhbW91bnRUb2tlblRvR2V0D2Fzc2V0VG9rZW5Ub0dldAMJAAACBQR0eXBlBQdTRl9QT09MCQESZXhjaGFuZ2VEaXJlY3RseVNGBwUEcG9vbAUIYXNzZXRJZEEFCGFzc2V0SWRCBQRiYWxBBQRiYWxCBRBhbW91bnRUb2tlblRvR2V0BQ9hc3NldFRva2VuVG9HZXQJARJleGNoYW5nZURpcmVjdGx5V1gHBQRwb29sBQhhc3NldElkQQUIYXNzZXRJZEIFBGJhbEEFBGJhbEIFEGFtb3VudFRva2VuVG9HZXQFD2Fzc2V0VG9rZW5Ub0dldAESd2l0aGRyYXdBbW91bnRDYWxjBARwb29sD3VzZXJDYW5XaXRoZHJhdwRkZWJ0C2JvcnJvd0Fzc2V0BAhwb29sQWRkcgkBB0FkZHJlc3MBCQDZBAEFBHBvb2wEBXBUeXBlCQETdmFsdWVPckVycm9yTWVzc2FnZQIJAJ0IAgUEdGhpcwkArAICBQVrUG9vbAUEcG9vbAIMVW5rbm93biBwb29sBA0kdDAyMTY1NzIxNzMzCQELZ2V0UG9vbERhdGECBQhwb29sQWRkcgUFcFR5cGUECGFzc2V0SWRBCAUNJHQwMjE2NTcyMTczMwJfMQQIYXNzZXRJZEIIBQ0kdDAyMTY1NzIxNzMzAl8yBARiYWxBCAUNJHQwMjE2NTcyMTczMwJfMwQEYmFsQggFDSR0MDIxNjU3MjE3MzMCXzQEB3NoYXJlSWQIBQ0kdDAyMTY1NzIxNzMzAl81BAtjQmFsQUJlZm9yZQkBDmFjY291bnRCYWxhbmNlAQkBDmFzc2V0SWRGcm9tU3RyAQUIYXNzZXRJZEEDCQAAAgULY0JhbEFCZWZvcmUFC2NCYWxBQmVmb3JlBAtjQmFsQkJlZm9yZQkBDmFjY291bnRCYWxhbmNlAQkBDmFzc2V0SWRGcm9tU3RyAQUIYXNzZXRJZEIDCQAAAgULY0JhbEJCZWZvcmUFC2NCYWxCQmVmb3JlBANpbnYDCQAAAgUFcFR5cGUFB1NGX1BPT0wJAPwHBAUIcG9vbEFkZHICDGNhbGxGdW5jdGlvbgkAzAgCAgh3aXRoZHJhdwkAzAgCCQDMCAIJAKQDAQUPdXNlckNhbldpdGhkcmF3BQNuaWwFA25pbAUDbmlsAwkAAAIFBXBUeXBlBQdXWF9QT09MCQD8BwQFCHBvb2xBZGRyAg11bnN0YWtlQW5kR2V0CQDMCAIFD3VzZXJDYW5XaXRoZHJhdwUDbmlsBQNuaWwJAAIBAhNXcm9uZyBwb3NpdGlvbiB0eXBlAwkAAAIFA2ludgUDaW52BApjQmFsQUFmdGVyCQEOYWNjb3VudEJhbGFuY2UBCQEOYXNzZXRJZEZyb21TdHIBBQhhc3NldElkQQQKY0JhbEJBZnRlcgkBDmFjY291bnRCYWxhbmNlAQkBDmFzc2V0SWRGcm9tU3RyAQUIYXNzZXRJZEIEDSR0MDIyMjQ1MjIzMzQJAJQKAgkAZQIFCmNCYWxBQWZ0ZXIFC2NCYWxBQmVmb3JlCQBlAgUKY0JhbEJBZnRlcgULY0JhbEJCZWZvcmUEDXRva2Vuc0Ftb3VudEEIBQ0kdDAyMjI0NTIyMzM0Al8xBA10b2tlbnNBbW91bnRCCAUNJHQwMjIyNDUyMjMzNAJfMgQNJHQwMjIzMzcyMzAzMwMJAGYCBQRkZWJ0AAAEDWFtb3VudFRvR2V0RXgDAwkAAAIFC2JvcnJvd0Fzc2V0BQhhc3NldElkQQkAZgIFBGRlYnQFDXRva2Vuc0Ftb3VudEEHCQBlAgUEZGVidAUNdG9rZW5zQW1vdW50QQMDCQAAAgULYm9ycm93QXNzZXQFCGFzc2V0SWRCCQBmAgUEZGVidAUNdG9rZW5zQW1vdW50QgcJAGUCBQRkZWJ0BQ10b2tlbnNBbW91bnRCAAAEBWV4SW52AwkAZgIFDWFtb3VudFRvR2V0RXgAAAkBEGV4Y2hhbmdlRGlyZWN0bHkIBQVwVHlwZQUEcG9vbAUIYXNzZXRJZEEFCGFzc2V0SWRCBQRiYWxBBQRiYWxCBQ1hbW91bnRUb0dldEV4BQtib3Jyb3dBc3NldAAAAwkAAAIFBWV4SW52BQVleEludgQPY0JhbEFBZnRlclJlcGF5CQEOYWNjb3VudEJhbGFuY2UBCQEOYXNzZXRJZEZyb21TdHIBBQhhc3NldElkQQQPY0JhbEJBZnRlclJlcGF5CQEOYWNjb3VudEJhbGFuY2UBCQEOYXNzZXRJZEZyb21TdHIBBQhhc3NldElkQgkAlAoCCQBlAgUPY0JhbEFBZnRlclJlcGF5BQtjQmFsQUJlZm9yZQkAZQIFD2NCYWxCQWZ0ZXJSZXBheQULY0JhbEJCZWZvcmUJAAIBAiRTdHJpY3QgdmFsdWUgaXMgbm90IGVxdWFsIHRvIGl0c2VsZi4JAJQKAgUNdG9rZW5zQW1vdW50QQUNdG9rZW5zQW1vdW50QgQNdG9Vc2VyQW1vdW50QQgFDSR0MDIyMzM3MjMwMzMCXzEEDXRvVXNlckFtb3VudEIIBQ0kdDAyMjMzNzIzMDMzAl8yCQCZCgcFDXRvVXNlckFtb3VudEEFCGFzc2V0SWRBBQ10b1VzZXJBbW91bnRCBQhhc3NldElkQgUKY0JhbEFBZnRlcgUKY0JhbEJBZnRlcgUHc2hhcmVJZAkAAgECJFN0cmljdCB2YWx1ZSBpcyBub3QgZXF1YWwgdG8gaXRzZWxmLgkAAgECJFN0cmljdCB2YWx1ZSBpcyBub3QgZXF1YWwgdG8gaXRzZWxmLgkAAgECJFN0cmljdCB2YWx1ZSBpcyBub3QgZXF1YWwgdG8gaXRzZWxmLgEYdXNlckNhbldpdGhkcmF3U2hhcmVDYWxjBAR1c2VyBHBvb2wFcG9zSWQIYm9ycm93ZWQEB3BBbW91bnQJARN2YWx1ZU9yRXJyb3JNZXNzYWdlAgkAmggCBQR0aGlzCQCsAgIJAKwCAgkArAICCQCsAgIJAKwCAgUEcG9vbAIBXwUEdXNlcgIBXwUFcG9zSWQFDWtVc2VyUG9zaXRpb24CEFVua25vd24gcG9zaXRpb24EDHVzZXJJbnRlcmVzdAkBEUBleHRyTmF0aXZlKDEwNTApAgUEdGhpcwkArAICCQCsAgIJAKwCAgkArAICCQCsAgIFBHBvb2wCAV8FBHVzZXICAV8FBXBvc0lkBRVrVXNlclBvc2l0aW9uSW50ZXJlc3QEDHBvb2xJbnRlcmVzdAMFCGJvcnJvd2VkCQERQGV4dHJOYXRpdmUoMTA1MCkCBQR0aGlzCQCsAgIFBHBvb2wFEWtQb29sSW50ZXJlc3RMb2FuCQERQGV4dHJOYXRpdmUoMTA1MCkCBQR0aGlzCQCsAgIFBHBvb2wFE2tQb29sSW50ZXJlc3ROb0xvYW4JAGQCBQdwQW1vdW50CQBrAwUHcEFtb3VudAkAZQIFDHBvb2xJbnRlcmVzdAUMdXNlckludGVyZXN0BQdTQ0FMRTEwAQ53aXRoZHJhd1RvVXNlcgQEdXNlcgRwb29sBXBvc0lkCHN0b3BMb3NzBAdwQW1vdW50CQETdmFsdWVPckVycm9yTWVzc2FnZQIJAJoIAgUEdGhpcwkArAICCQCsAgIJAKwCAgkArAICCQCsAgIFBHBvb2wCAV8FBHVzZXICAV8FBXBvc0lkBQ1rVXNlclBvc2l0aW9uAhBVbmtub3duIHBvc2l0aW9uBAx1c2VySW50ZXJlc3QJARFAZXh0ck5hdGl2ZSgxMDUwKQIFBHRoaXMJAKwCAgkArAICCQCsAgIJAKwCAgkArAICBQRwb29sAgFfBQR1c2VyAgFfBQVwb3NJZAUVa1VzZXJQb3NpdGlvbkludGVyZXN0BAxib3Jyb3dBbW91bnQJARFAZXh0ck5hdGl2ZSgxMDUwKQIFBHRoaXMJAKwCAgkArAICCQCsAgIJAKwCAgkArAICBQRwb29sAgFfBQR1c2VyAgFfBQVwb3NJZAURa1VzZXJCb3Jyb3dBbW91bnQED3VzZXJDYW5XaXRoZHJhdwkBGHVzZXJDYW5XaXRoZHJhd1NoYXJlQ2FsYwQFBHVzZXIFBHBvb2wFBXBvc0lkCQBmAgUMYm9ycm93QW1vdW50AAAEDnBvb2xUb3RhbFNoYXJlCQERZ2V0UG9vbFRvdGFsU2hhcmUBBQRwb29sBAh1c2VyQWRkcgkBB0FkZHJlc3MBCQDZBAEFBHVzZXIEC2JvcnJvd0Fzc2V0CQERQGV4dHJOYXRpdmUoMTA1MykCBQR0aGlzCQCsAgIJAKwCAgkArAICCQCsAgIJAKwCAgUEcG9vbAIBXwUEdXNlcgIBXwUFcG9zSWQFEmtVc2VyQm9ycm93QXNzZXRJZAQEZGVidAMJAGYCBQxib3Jyb3dBbW91bnQAAAoAAUAJAPwHBAkBDmdldExlbmRTcnZBZGRyAAIMZ2V0QXNzZXREZWJ0CQDMCAIHCQDMCAIJAKwCAgkArAICCQCsAgIJAKwCAgUEcG9vbAIBXwUEdXNlcgIBXwUFcG9zSWQJAMwIAgULYm9ycm93QXNzZXQFA25pbAUDbmlsAwkAAQIFAUACA0ludAUBQAkAAgEJAKwCAgkAAwEFAUACGCBjb3VsZG4ndCBiZSBjYXN0IHRvIEludAAABA0kdDAyNDUyNDI0Njc3CQESd2l0aGRyYXdBbW91bnRDYWxjBAUEcG9vbAUPdXNlckNhbldpdGhkcmF3BQRkZWJ0BQtib3Jyb3dBc3NldAMJAAACBQ0kdDAyNDUyNDI0Njc3BQ0kdDAyNDUyNDI0Njc3BAdzaGFyZUlkCAUNJHQwMjQ1MjQyNDY3NwJfNwQKY0JhbEJBZnRlcggFDSR0MDI0NTI0MjQ2NzcCXzYECmNCYWxBQWZ0ZXIIBQ0kdDAyNDUyNDI0Njc3Al81BAhhc3NldElkQggFDSR0MDI0NTI0MjQ2NzcCXzQEDXRvVXNlckFtb3VudEIIBQ0kdDAyNDUyNDI0Njc3Al8zBAhhc3NldElkQQgFDSR0MDI0NTI0MjQ2NzcCXzIEDXRvVXNlckFtb3VudEEIBQ0kdDAyNDUyNDI0Njc3Al8xBAtjbG9zZURidEludgMJAGYCBQRkZWJ0AAAJAPwHBAkBDmdldExlbmRTcnZBZGRyAAIIcmVwYXlGb3IJAMwIAgkArAICCQCsAgIFBHVzZXICAV8FBXBvc0lkBQNuaWwJAMwIAgkBD0F0dGFjaGVkUGF5bWVudAIJAQ5hc3NldElkRnJvbVN0cgEFC2JvcnJvd0Fzc2V0BQRkZWJ0BQNuaWwAAAMJAAACBQtjbG9zZURidEludgULY2xvc2VEYnRJbnYJAM4IAgkAzAgCCQELRGVsZXRlRW50cnkBCQCsAgIJAKwCAgkArAICCQCsAgIJAKwCAgUEcG9vbAIBXwUEdXNlcgIBXwUFcG9zSWQFDWtVc2VyUG9zaXRpb24JAMwIAgkBC0RlbGV0ZUVudHJ5AQkArAICCQCsAgIJAKwCAgkArAICCQCsAgIFBHBvb2wCAV8FBHVzZXICAV8FBXBvc0lkBRVrVXNlclBvc2l0aW9uSW50ZXJlc3QJAMwIAgkBDEludGVnZXJFbnRyeQIJAKwCAgUEcG9vbAUKa1Bvb2xUb3RhbAkAZQIFDnBvb2xUb3RhbFNoYXJlBQ91c2VyQ2FuV2l0aGRyYXcJAMwIAgkBDlNjcmlwdFRyYW5zZmVyAwUIdXNlckFkZHIFDXRvVXNlckFtb3VudEEJAQ5hc3NldElkRnJvbVN0cgEFCGFzc2V0SWRBCQDMCAIJAQ5TY3JpcHRUcmFuc2ZlcgMFCHVzZXJBZGRyBQ10b1VzZXJBbW91bnRCCQEOYXNzZXRJZEZyb21TdHIBBQhhc3NldElkQgUDbmlsCQEOZ2V0Q3Vyc0VudHJpZXMDBQhhc3NldElkQQUIYXNzZXRJZEIFB3NoYXJlSWQJAAIBAiRTdHJpY3QgdmFsdWUgaXMgbm90IGVxdWFsIHRvIGl0c2VsZi4JAAIBAiRTdHJpY3QgdmFsdWUgaXMgbm90IGVxdWFsIHRvIGl0c2VsZi4BDHBhcnNlUmVxdWVzdAEJcmVxdWVzdElkBAdyZXF1ZXN0CQC1CQIJARN2YWx1ZU9yRXJyb3JNZXNzYWdlAgkAnQgCBQR0aGlzCQCsAgIFCXJlcXVlc3RJZAUKa1JlcXVlc3RJZAkArAICAhNObyByZXF1ZXN0IHdpdGggaWQgBQlyZXF1ZXN0SWQCASwEBHVzZXIJAJEDAgUHcmVxdWVzdAAABARwb29sCQCRAwIFB3JlcXVlc3QAAQQEcG10QQkBDXBhcnNlSW50VmFsdWUBCQCRAwIFB3JlcXVlc3QAAgQDQUlkCQCRAwIFB3JlcXVlc3QAAwQEcG10QgkBDXBhcnNlSW50VmFsdWUBCQCRAwIFB3JlcXVlc3QABAQDQklkCQCRAwIFB3JlcXVlc3QABQQEYmFsQQkBDXBhcnNlSW50VmFsdWUBCQCRAwIFB3JlcXVlc3QABgQEYmFsQgkBDXBhcnNlSW50VmFsdWUBCQCRAwIFB3JlcXVlc3QABwQHc2hhcmVJZAkAkQMCBQdyZXF1ZXN0AAgEB2J3QXNzZXQJAJEDAgUHcmVxdWVzdAAJBAhid0Ftb3VudAkBDXBhcnNlSW50VmFsdWUBCQCRAwIFB3JlcXVlc3QACgkAnQoLBQR1c2VyBQRwb29sBQRwbXRBBQNBSWQFBHBtdEIFA0JJZAUEYmFsQQUEYmFsQgUHc2hhcmVJZAUHYndBc3NldAUIYndBbW91bnQSAWkBEXJlcGxlbmlzaEVWQUxPTkxZAwRwb29sCGxldmVyYWdlDWJvcnJvd0Fzc2V0SWQDAwkAZgIAZAUIbGV2ZXJhZ2UGCQBmAgUIbGV2ZXJhZ2UArAIJAAIBAh9MZXZlcmFnZSBjYW4ndCBiZSA8MTAwIGFuZCA+MzAwBAVwVHlwZQkBE3ZhbHVlT3JFcnJvck1lc3NhZ2UCCQCdCAIFBHRoaXMJAKwCAgUFa1Bvb2wFBHBvb2wCElBvb2wgaXMgbm90IGluaXRlZAQNJHQwMjYxNjcyNjI1NwkBC2dldFBvb2xEYXRhAgkBB0FkZHJlc3MBCQDZBAEFBHBvb2wFBXBUeXBlBANBSWQIBQ0kdDAyNjE2NzI2MjU3Al8xBANCSWQIBQ0kdDAyNjE2NzI2MjU3Al8yBARiYWxBCAUNJHQwMjYxNjcyNjI1NwJfMwQEYmFsQggFDSR0MDI2MTY3MjYyNTcCXzQEB3NoYXJlSWQIBQ0kdDAyNjE2NzI2MjU3Al81BA0kdDAyNjI2MDI2ODk3AwkAAAIJAJADAQgFAWkIcGF5bWVudHMAAgMJAQIhPQIJAQxhc3NldElkVG9TdHIBCAkAkQMCCAUBaQhwYXltZW50cwAAB2Fzc2V0SWQFA0FJZAkAAgECFVdyb25nIHBheW1lbnQgYXNzZXQgQQMJAQIhPQIJAQxhc3NldElkVG9TdHIBCAkAkQMCCAUBaQhwYXltZW50cwABB2Fzc2V0SWQFA0JJZAkAAgECFVdyb25nIHBheW1lbnQgYXNzZXQgQgkAlgoECAkAkQMCCAUBaQhwYXltZW50cwAABmFtb3VudAUDQUlkCAkAkQMCCAUBaQhwYXltZW50cwABBmFtb3VudAUDQklkAwkAAAIJAJADAQgFAWkIcGF5bWVudHMAAQMJAAACCQEMYXNzZXRJZFRvU3RyAQgJAJEDAggFAWkIcGF5bWVudHMAAAdhc3NldElkBQNBSWQJAJYKBAgJAJEDAggFAWkIcGF5bWVudHMAAAZhbW91bnQFA0FJZAAABQNCSWQDCQAAAgkBDGFzc2V0SWRUb1N0cgEICQCRAwIIBQFpCHBheW1lbnRzAAAHYXNzZXRJZAUDQklkCQCWCgQAAAUDQUlkCAkAkQMCCAUBaQhwYXltZW50cwAABmFtb3VudAUDQklkCQACAQINV3JvbmcgcGF5bWVudAkAAgECHE9uZSBvciB0d28gcGF5bWVudHMgZXhwZWN0ZWQEBHBtdEEIBQ0kdDAyNjI2MDI2ODk3Al8xBAlwbXRBc3NldEEIBQ0kdDAyNjI2MDI2ODk3Al8yBARwbXRCCAUNJHQwMjYyNjAyNjg5NwJfMwQJcG10QXNzZXRCCAUNJHQwMjYyNjAyNjg5NwJfNAQNJHQwMjY5MDAyODM1MQMJAGYCBQhsZXZlcmFnZQBkBAdkUHJpY2VBCAoAAUAJAPwHBAUPcHJpY2VPcmFjbGVBZGRyAglnZXRUV0FQNjAJAMwIAgUJcG10QXNzZXRBCQDMCAIHBQNuaWwFA25pbAMJAAECBQFAAgooSW50LCBJbnQpBQFACQACAQkArAICCQADAQUBQAIfIGNvdWxkbid0IGJlIGNhc3QgdG8gKEludCwgSW50KQJfMgQHZFByaWNlQggKAAFACQD8BwQFD3ByaWNlT3JhY2xlQWRkcgIJZ2V0VFdBUDYwCQDMCAIFCXBtdEFzc2V0QgkAzAgCBwUDbmlsBQNuaWwDCQABAgUBQAIKKEludCwgSW50KQUBQAkAAgEJAKwCAgkAAwEFAUACHyBjb3VsZG4ndCBiZSBjYXN0IHRvIChJbnQsIEludCkCXzIEDHBheWRJbkRvbGxhcgkAZAIJAGsDBQdkUHJpY2VBBQRwbXRBCQBsBgAKAAAJARBnZXRBc3NldERlY2ltYWxzAQUJcG10QXNzZXRBAAAAAAUERE9XTgkAawMFB2RQcmljZUIFBHBtdEIJAGwGAAoAAAkBEGdldEFzc2V0RGVjaW1hbHMBBQlwbXRBc3NldEIAAAAABQRET1dOBAxib3Jyb3dBbW91bnQJAGsDBQxwYXlkSW5Eb2xsYXIJAGUCBQhsZXZlcmFnZQBkAGQEB3JlcXVlc3QJALkJAgkAzAgCCQClCAEIBQFpBmNhbGxlcgkAzAgCBQRwb29sCQDMCAIJAKQDAQUEcG10QQkAzAgCBQlwbXRBc3NldEEJAMwIAgkApAMBBQRwbXRCCQDMCAIFCXBtdEFzc2V0QgkAzAgCCQCkAwEFBGJhbEEJAMwIAgkApAMBBQRiYWxCCQDMCAIFB3NoYXJlSWQJAMwIAgUNYm9ycm93QXNzZXRJZAkAzAgCCQCkAwEFDGJvcnJvd0Ftb3VudAkAzAgCCQCkAwEAAQUDbmlsAgEsBAxuZXdSZXF1ZXN0SWQKAAFACQD8BwQFBHRoaXMCEGNyZWF0ZU5ld1JlcXVlc3QJAMwIAgUHcmVxdWVzdAUDbmlsBQNuaWwDCQABAgUBQAIDSW50BQFACQACAQkArAICCQADAQUBQAIYIGNvdWxkbid0IGJlIGNhc3QgdG8gSW50AwkAAAIFDG5ld1JlcXVlc3RJZAUMbmV3UmVxdWVzdElkBARhcmdzCQDMCAIJAKwCAgkArAICCQClCAEIBQFpBmNhbGxlcgIBXwkApAMBAAEJAMwIAgUHc2hhcmVJZAkAzAgCBQ1ib3Jyb3dBc3NldElkCQDMCAIFDGJvcnJvd0Ftb3VudAkAzAgCCQClCAEFBHRoaXMJAMwIAgIZcmVwbGVuaXNoRnJvbUxhbmRFVkFMT05MWQkAzAgCCQCkAwEJARN2YWx1ZU9yRXJyb3JNZXNzYWdlAgUMbmV3UmVxdWVzdElkAhhDYW4ndCBjcmVhdGUgbmV3IHJlcXVlc3QFA25pbAQDaW52CQD9BwQJAQ5nZXRMZW5kU3J2QWRkcgACDWZsYXNoUG9zaXRpb24FBGFyZ3MFA25pbAMJAAACBQNpbnYFA2ludgkAlAoCCQERQGV4dHJOYXRpdmUoMTA1MCkCBQR0aGlzAhVFVkFMT05MWV9TVEFLRURBTU9VTlQFDGJvcnJvd0Ftb3VudAkAAgECJFN0cmljdCB2YWx1ZSBpcyBub3QgZXF1YWwgdG8gaXRzZWxmLgkAAgECJFN0cmljdCB2YWx1ZSBpcyBub3QgZXF1YWwgdG8gaXRzZWxmLgkAlAoCCAkBD3JlcGxlbmlzaEJ5VHlwZQoFBXBUeXBlBQRwb29sBQtOT19MT0FOX0ZFRQUEcG10QQUDQUlkBQRwbXRCBQNCSWQFBGJhbEEFBGJhbEIFB3NoYXJlSWQCXzEAAAQKdXNlclN0YWtlZAgFDSR0MDI2OTAwMjgzNTECXzEEDGJvcnJvd0Ftb3VudAgFDSR0MDI2OTAwMjgzNTECXzIEDSR0MDI4MzU1Mjg1MjIJARJ3aXRoZHJhd0Ftb3VudENhbGMEBQRwb29sBQp1c2VyU3Rha2VkBQxib3Jyb3dBbW91bnQFDWJvcnJvd0Fzc2V0SWQDCQAAAgUNJHQwMjgzNTUyODUyMgUNJHQwMjgzNTUyODUyMgQTdXNlckdldEJCZWZvcmVSZXBheQgFDSR0MDI4MzU1Mjg1MjICXzYEE3VzZXJHZXRBQmVmb3JlUmVwYXkIBQ0kdDAyODM1NTI4NTIyAl81BAhhc3NldElkQggFDSR0MDI4MzU1Mjg1MjICXzQEDXRvVXNlckFtb3VudEIIBQ0kdDAyODM1NTI4NTIyAl8zBAhhc3NldElkQQgFDSR0MDI4MzU1Mjg1MjICXzIEDXRvVXNlckFtb3VudEEIBQ0kdDAyODM1NTI4NTIyAl8xBA0kdDAyODUyNTI4NjQwCQELZ2V0UG9vbERhdGECCQEHQWRkcmVzcwEJANkEAQUEcG9vbAUFcFR5cGUECEFJZEFmdGVyCAUNJHQwMjg1MjUyODY0MAJfMQQIQklkQWZ0ZXIIBQ0kdDAyODUyNTI4NjQwAl8yBAliYWxBQWZ0ZXIIBQ0kdDAyODUyNTI4NjQwAl8zBAliYWxCQWZ0ZXIIBQ0kdDAyODUyNTI4NjQwAl80BAxzaGFyZUlkQWZ0ZXIIBQ0kdDAyODUyNTI4NjQwAl81BAtyYXRpb0JlZm9yZQkAawMFBGJhbEIFBlNDQUxFOAUEYmFsQQQKcmF0aW9BZnRlcgkAawMFCWJhbEJBZnRlcgUGU0NBTEU4BQliYWxBQWZ0ZXIEBmltcGFjdAkAZQIFBlNDQUxFOAkAawMFC3JhdGlvQmVmb3JlBQZTQ0FMRTgFCnJhdGlvQWZ0ZXIECGltY2F0TW9kAwkAZgIAAAUGaW1wYWN0CQBoAgUGaW1wYWN0AP///////////wEFBmltcGFjdAkAlAoCBQNuaWwJAMwIAgUTdXNlckdldEFCZWZvcmVSZXBheQkAzAgCBRN1c2VyR2V0QkJlZm9yZVJlcGF5CQDMCAIFCGltY2F0TW9kBQNuaWwJAAIBAiRTdHJpY3QgdmFsdWUgaXMgbm90IGVxdWFsIHRvIGl0c2VsZi4BaQEZcmVwbGVuaXNoRnJvbUxhbmRFVkFMT05MWQEJcmVxdWVzdElkBA0kdDAyOTAxMDI5MTE0CQEMcGFyc2VSZXF1ZXN0AQUJcmVxdWVzdElkBAR1c2VyCAUNJHQwMjkwMTAyOTExNAJfMQQEcG9vbAgFDSR0MDI5MDEwMjkxMTQCXzIEBHBtdEEIBQ0kdDAyOTAxMDI5MTE0Al8zBANBSWQIBQ0kdDAyOTAxMDI5MTE0Al80BARwbXRCCAUNJHQwMjkwMTAyOTExNAJfNQQDQklkCAUNJHQwMjkwMTAyOTExNAJfNgQEYmFsQQgFDSR0MDI5MDEwMjkxMTQCXzcEBGJhbEIIBQ0kdDAyOTAxMDI5MTE0Al84BAdzaGFyZUlkCAUNJHQwMjkwMTAyOTExNAJfOQQHYndBc3NldAgFDSR0MDI5MDEwMjkxMTQDXzEwBAhid0Ftb3VudAgFDSR0MDI5MDEwMjkxMTQDXzExAwkBAiE9AgkAkAMBCAUBaQhwYXltZW50cwABCQACAQISV3JvbmcgcGF5bWVudCBzaXplAwMJAQIhPQIJAQxhc3NldElkVG9TdHIBCAkAkQMCCAUBaQhwYXltZW50cwAAB2Fzc2V0SWQFB2J3QXNzZXQGCQECIT0CCAkAkQMCCAUBaQhwYXltZW50cwAABmFtb3VudAUIYndBbW91bnQJAAIBAg1Xcm9uZyBwYXltZW50BA0kdDAyOTMwNDI5NDI4AwkAAAIFA0FJZAUHYndBc3NldAkAlAoCCQBkAgUEcG10QQgJAJEDAggFAWkIcGF5bWVudHMAAAZhbW91bnQFBHBtdEIJAJQKAgUEcG10QQkAZAIFBHBtdEIICQCRAwIIBQFpCHBheW1lbnRzAAAGYW1vdW50BAdwbXRBbGxBCAUNJHQwMjkzMDQyOTQyOAJfMQQHcG10QWxsQggFDSR0MDI5MzA0Mjk0MjgCXzIEBXBUeXBlCQETdmFsdWVPckVycm9yTWVzc2FnZQIJAJ0IAgUEdGhpcwkArAICBQVrUG9vbAUEcG9vbAIMVW5rbm93biBwb29sBA0kdDAyOTUxMDI5NjE5CQEPcmVwbGVuaXNoQnlUeXBlCgUFcFR5cGUFBHBvb2wFCExPQU5fRkVFBQRwbXRBBQNBSWQFBHBtdEIFA0JJZAUEYmFsQQUEYmFsQgUHc2hhcmVJZAQKdXNlclN0YWtlZAgFDSR0MDI5NTEwMjk2MTkCXzEEB2F4bHlGZWUIBQ0kdDAyOTUxMDI5NjE5Al8yCQCUCgIJAMwIAgkBDEludGVnZXJFbnRyeQICFUVWQUxPTkxZX1NUQUtFREFNT1VOVAUKdXNlclN0YWtlZAUDbmlsBQp1c2VyU3Rha2VkAWkBGmdldFNoYXJlQXNzZXRQcmljZVJFQURPTkxZAQdzaGFyZUlkBAtzaGFyZVByaWNlcwkBDWdldFNoYXJlUHJpY2UBCQDMCAIFB3NoYXJlSWQFA25pbAkAlAoCBQNuaWwJAJEDAgULc2hhcmVQcmljZXMAAAFpARpnZXRVc2VyUG9zaXRpb25TaGFyZUFtb3VudAIEdXNlcgZwb3NOdW0EBHBvb2wJARN2YWx1ZU9yRXJyb3JNZXNzYWdlAgkAnQgCBQR0aGlzCQCsAgIJAKwCAgkArAICBQR1c2VyAgFfBQZwb3NOdW0FEWtVc2VyUG9zaXRpb25Qb29sAhBVbmtub3duIHBvc2l0aW9uBAxib3Jyb3dBbW91bnQJARFAZXh0ck5hdGl2ZSgxMDUwKQIFBHRoaXMJAKwCAgkArAICCQCsAgIJAKwCAgkArAICBQRwb29sAgFfBQR1c2VyAgFfBQZwb3NOdW0FEWtVc2VyQm9ycm93QW1vdW50BA91c2VyQ2FuV2l0aGRyYXcJARh1c2VyQ2FuV2l0aGRyYXdTaGFyZUNhbGMEBQR1c2VyBQRwb29sBQZwb3NOdW0JAGYCBQxib3Jyb3dBbW91bnQAAAkAlAoCBQNuaWwFD3VzZXJDYW5XaXRoZHJhdwFpAQlyZXBsZW5pc2gDBHBvb2wIbGV2ZXJhZ2UNYm9ycm93QXNzZXRJZAMDCQBmAgBkBQhsZXZlcmFnZQYJAGYCBQhsZXZlcmFnZQCsAgkAAgECH0xldmVyYWdlIGNhbid0IGJlIDwxMDAgYW5kID4zMDAEBXBUeXBlCQETdmFsdWVPckVycm9yTWVzc2FnZQIJAJ0IAgUEdGhpcwkArAICBQVrUG9vbAUEcG9vbAISUG9vbCBpcyBub3QgaW5pdGVkBA0kdDAzMDUyNzMwNjE3CQELZ2V0UG9vbERhdGECCQEHQWRkcmVzcwEJANkEAQUEcG9vbAUFcFR5cGUEA0FJZAgFDSR0MDMwNTI3MzA2MTcCXzEEA0JJZAgFDSR0MDMwNTI3MzA2MTcCXzIEBGJhbEEIBQ0kdDAzMDUyNzMwNjE3Al8zBARiYWxCCAUNJHQwMzA1MjczMDYxNwJfNAQHc2hhcmVJZAgFDSR0MDMwNTI3MzA2MTcCXzUEDSR0MDMwNjIwMzEyNTcDCQAAAgkAkAMBCAUBaQhwYXltZW50cwACAwkBAiE9AgkBDGFzc2V0SWRUb1N0cgEICQCRAwIIBQFpCHBheW1lbnRzAAAHYXNzZXRJZAUDQUlkCQACAQIVV3JvbmcgcGF5bWVudCBhc3NldCBBAwkBAiE9AgkBDGFzc2V0SWRUb1N0cgEICQCRAwIIBQFpCHBheW1lbnRzAAEHYXNzZXRJZAUDQklkCQACAQIVV3JvbmcgcGF5bWVudCBhc3NldCBCCQCWCgQICQCRAwIIBQFpCHBheW1lbnRzAAAGYW1vdW50BQNBSWQICQCRAwIIBQFpCHBheW1lbnRzAAEGYW1vdW50BQNCSWQDCQAAAgkAkAMBCAUBaQhwYXltZW50cwABAwkAAAIJAQxhc3NldElkVG9TdHIBCAkAkQMCCAUBaQhwYXltZW50cwAAB2Fzc2V0SWQFA0FJZAkAlgoECAkAkQMCCAUBaQhwYXltZW50cwAABmFtb3VudAUDQUlkAAAFA0JJZAMJAAACCQEMYXNzZXRJZFRvU3RyAQgJAJEDAggFAWkIcGF5bWVudHMAAAdhc3NldElkBQNCSWQJAJYKBAAABQNBSWQICQCRAwIIBQFpCHBheW1lbnRzAAAGYW1vdW50BQNCSWQJAAIBAg1Xcm9uZyBwYXltZW50CQACAQIcT25lIG9yIHR3byBwYXltZW50cyBleHBlY3RlZAQEcG10QQgFDSR0MDMwNjIwMzEyNTcCXzEECXBtdEFzc2V0QQgFDSR0MDMwNjIwMzEyNTcCXzIEBHBtdEIIBQ0kdDAzMDYyMDMxMjU3Al8zBAlwbXRBc3NldEIIBQ0kdDAzMDYyMDMxMjU3Al80BAluZXdQb3NOdW0JARhnZXROZXdVc2VyUG9zaXRpb25OdW1iZXICBQRwb29sCQClCAEIBQFpBmNhbGxlcgMJAGYCBQhsZXZlcmFnZQBkBAdkUHJpY2VBCAoAAUAJAPwHBAUPcHJpY2VPcmFjbGVBZGRyAglnZXRUV0FQNjAJAMwIAgUJcG10QXNzZXRBCQDMCAIHBQNuaWwFA25pbAMJAAECBQFAAgooSW50LCBJbnQpBQFACQACAQkArAICCQADAQUBQAIfIGNvdWxkbid0IGJlIGNhc3QgdG8gKEludCwgSW50KQJfMgQHZFByaWNlQggKAAFACQD8BwQFD3ByaWNlT3JhY2xlQWRkcgIJZ2V0VFdBUDYwCQDMCAIFCXBtdEFzc2V0QgkAzAgCBwUDbmlsBQNuaWwDCQABAgUBQAIKKEludCwgSW50KQUBQAkAAgEJAKwCAgkAAwEFAUACHyBjb3VsZG4ndCBiZSBjYXN0IHRvIChJbnQsIEludCkCXzIEDHBheWRJbkRvbGxhcgkAZAIJAGsDBQdkUHJpY2VBBQRwbXRBCQBsBgAKAAAJARBnZXRBc3NldERlY2ltYWxzAQUJcG10QXNzZXRBAAAAAAUERE9XTgkAawMFB2RQcmljZUIFBHBtdEIJAGwGAAoAAAkBEGdldEFzc2V0RGVjaW1hbHMBBQlwbXRBc3NldEIAAAAABQRET1dOBAxib3Jyb3dBbW91bnQJAGsDBQxwYXlkSW5Eb2xsYXIJAGUCBQhsZXZlcmFnZQBkAGQEB3JlcXVlc3QJALkJAgkAzAgCCQClCAEIBQFpBmNhbGxlcgkAzAgCBQRwb29sCQDMCAIJAKQDAQUEcG10QQkAzAgCBQlwbXRBc3NldEEJAMwIAgkApAMBBQRwbXRCCQDMCAIFCXBtdEFzc2V0QgkAzAgCCQCkAwEFBGJhbEEJAMwIAgkApAMBBQRiYWxCCQDMCAIFB3NoYXJlSWQJAMwIAgUNYm9ycm93QXNzZXRJZAkAzAgCCQCkAwEFDGJvcnJvd0Ftb3VudAUDbmlsAgEsBAxuZXdSZXF1ZXN0SWQKAAFACQD8BwQFBHRoaXMCEGNyZWF0ZU5ld1JlcXVlc3QJAMwIAgUHcmVxdWVzdAUDbmlsBQNuaWwDCQABAgUBQAIDSW50BQFACQACAQkArAICCQADAQUBQAIYIGNvdWxkbid0IGJlIGNhc3QgdG8gSW50AwkAAAIFDG5ld1JlcXVlc3RJZAUMbmV3UmVxdWVzdElkBARhcmdzCQDMCAIJAKwCAgkArAICCQClCAEIBQFpBmNhbGxlcgIBXwkApAMBBQluZXdQb3NOdW0JAMwIAgUHc2hhcmVJZAkAzAgCBQ1ib3Jyb3dBc3NldElkCQDMCAIFDGJvcnJvd0Ftb3VudAkAzAgCCQClCAEFBHRoaXMJAMwIAgIRcmVwbGVuaXNoRnJvbUxhbmQJAMwIAgkApAMBCQETdmFsdWVPckVycm9yTWVzc2FnZQIFDG5ld1JlcXVlc3RJZAIYQ2FuJ3QgY3JlYXRlIG5ldyByZXF1ZXN0BQNuaWwEA2ludgkA/QcECQEOZ2V0TGVuZFNydkFkZHIAAg1mbGFzaFBvc2l0aW9uBQRhcmdzBQNuaWwDCQAAAgUDaW52BQNpbnYFA25pbAkAAgECJFN0cmljdCB2YWx1ZSBpcyBub3QgZXF1YWwgdG8gaXRzZWxmLgkAAgECJFN0cmljdCB2YWx1ZSBpcyBub3QgZXF1YWwgdG8gaXRzZWxmLgQNJHQwMzI1NTQzMjY2NgkBD3JlcGxlbmlzaEJ5VHlwZQoFBXBUeXBlBQRwb29sBQtOT19MT0FOX0ZFRQUEcG10QQUDQUlkBQRwbXRCBQNCSWQFBGJhbEEFBGJhbEIFB3NoYXJlSWQECnVzZXJTdGFrZWQIBQ0kdDAzMjU1NDMyNjY2Al8xBAdheGx5RmVlCAUNJHQwMzI1NTQzMjY2NgJfMgkAzggCCQEQcmVwbGVuaXNoRW50cmllcwgFBHBvb2wJAKUIAQgFAWkGY2FsbGVyBQp1c2VyU3Rha2VkBQdheGx5RmVlBQluZXdQb3NOdW0FB3NoYXJlSWQFBXBUeXBlBwkBDmdldEN1cnNFbnRyaWVzAwUDQUlkBQNCSWQFB3NoYXJlSWQBaQERcmVwbGVuaXNoRnJvbUxhbmQBCXJlcXVlc3RJZAQNJHQwMzI4NzczMjk4MQkBDHBhcnNlUmVxdWVzdAEFCXJlcXVlc3RJZAQEdXNlcggFDSR0MDMyODc3MzI5ODECXzEEBHBvb2wIBQ0kdDAzMjg3NzMyOTgxAl8yBARwbXRBCAUNJHQwMzI4NzczMjk4MQJfMwQDQUlkCAUNJHQwMzI4NzczMjk4MQJfNAQEcG10QggFDSR0MDMyODc3MzI5ODECXzUEA0JJZAgFDSR0MDMyODc3MzI5ODECXzYEBGJhbEEIBQ0kdDAzMjg3NzMyOTgxAl83BARiYWxCCAUNJHQwMzI4NzczMjk4MQJfOAQHc2hhcmVJZAgFDSR0MDMyODc3MzI5ODECXzkEB2J3QXNzZXQIBQ0kdDAzMjg3NzMyOTgxA18xMAQIYndBbW91bnQIBQ0kdDAzMjg3NzMyOTgxA18xMQMJAQIhPQIJAJADAQgFAWkIcGF5bWVudHMAAQkAAgECEldyb25nIHBheW1lbnQgc2l6ZQMDCQECIT0CCQEMYXNzZXRJZFRvU3RyAQgJAJEDAggFAWkIcGF5bWVudHMAAAdhc3NldElkBQdid0Fzc2V0BgkBAiE9AggJAJEDAggFAWkIcGF5bWVudHMAAAZhbW91bnQFCGJ3QW1vdW50CQACAQINV3JvbmcgcGF5bWVudAQNJHQwMzMxNzEzMzI5NQMJAAACBQNBSWQFB2J3QXNzZXQJAJQKAgkAZAIFBHBtdEEICQCRAwIIBQFpCHBheW1lbnRzAAAGYW1vdW50BQRwbXRCCQCUCgIFBHBtdEEJAGQCBQRwbXRCCAkAkQMCCAUBaQhwYXltZW50cwAABmFtb3VudAQHcG10QWxsQQgFDSR0MDMzMTcxMzMyOTUCXzEEB3BtdEFsbEIIBQ0kdDAzMzE3MTMzMjk1Al8yBAVwVHlwZQkBE3ZhbHVlT3JFcnJvck1lc3NhZ2UCCQCdCAIFBHRoaXMJAKwCAgUFa1Bvb2wFBHBvb2wCDFVua25vd24gcG9vbAQNJHQwMzMzNzczMzQ4NgkBD3JlcGxlbmlzaEJ5VHlwZQoFBXBUeXBlBQRwb29sBQhMT0FOX0ZFRQUEcG10QQUDQUlkBQRwbXRCBQNCSWQFBGJhbEEFBGJhbEIFB3NoYXJlSWQECnVzZXJTdGFrZWQIBQ0kdDAzMzM3NzMzNDg2Al8xBAdheGx5RmVlCAUNJHQwMzMzNzczMzQ4NgJfMgQGcG9zTnVtCQEYZ2V0TmV3VXNlclBvc2l0aW9uTnVtYmVyAgUEcG9vbAkApQgBCAUBaQZjYWxsZXIEDWJvcnJvd0VudHJpZXMJAMwIAgkBDEludGVnZXJFbnRyeQIJAKwCAgkArAICCQCsAgIJAKwCAgkArAICBQRwb29sAgFfBQR1c2VyAgFfCQCkAwEFBnBvc051bQURa1VzZXJCb3Jyb3dBbW91bnQFCGJ3QW1vdW50CQDMCAIJAQtTdHJpbmdFbnRyeQIJAKwCAgkArAICCQCsAgIJAKwCAgkArAICBQRwb29sAgFfBQR1c2VyAgFfCQCkAwEFBnBvc051bQUSa1VzZXJCb3Jyb3dBc3NldElkBQdid0Fzc2V0BQNuaWwEB2VudHJpZXMJARByZXBsZW5pc2hFbnRyaWVzCAUEcG9vbAUEdXNlcgUKdXNlclN0YWtlZAUHYXhseUZlZQUGcG9zTnVtBQdzaGFyZUlkBQVwVHlwZQYJAJQKAgkAzQgCCQDOCAIJAM4IAgUHZW50cmllcwkBDmdldEN1cnNFbnRyaWVzAwUDQUlkBQNCSWQFB3NoYXJlSWQFDWJvcnJvd0VudHJpZXMJAQtEZWxldGVFbnRyeQEJAKwCAgUJcmVxdWVzdElkBQprUmVxdWVzdElkBQp1c2VyU3Rha2VkAWkBCHdpdGhkcmF3AgRwb29sBXBvc0lkCQEOd2l0aGRyYXdUb1VzZXIECQClCAEIBQFpBmNhbGxlcgUEcG9vbAkApAMBBQVwb3NJZAcBaQEUY3JlYXRlVXBkYXRlU3RvcExvc3MEBXBvc0lkBnBvb2xJZAdhc3NldElkBXByaWNlBBB0b2tlbk9yYWNsZVByaWNlCAoAAUAJAPwHBAUPcHJpY2VPcmFjbGVBZGRyAglnZXRUV0FQNjAJAMwIAgUHYXNzZXRJZAkAzAgCBwUDbmlsBQNuaWwDCQABAgUBQAIKKEludCwgSW50KQUBQAkAAgEJAKwCAgkAAwEFAUACHyBjb3VsZG4ndCBiZSBjYXN0IHRvIChJbnQsIEludCkCXzEDCQEBIQEJAQlpc0RlZmluZWQBCQCaCAIFBHRoaXMJAKwCAgkArAICCQCsAgIJAKwCAgkArAICBQZwb29sSWQCAV8JAKUIAQgFAWkGY2FsbGVyAgFfCQCkAwEFBXBvc0lkBQ1rVXNlclBvc2l0aW9uCQACAQIaVGhlcmUgYXJlIG5vIHVzZXIgcG9zaXRpb24DCQBnAgAABQVwcmljZQkAAgECHFByaWNlIG11c3QgYmUgZ3JlYXRlciB0aGFuIDADCQBmAgUFcHJpY2UFEHRva2VuT3JhY2xlUHJpY2UJAAIBAitQcmljZSBtdXN0IGJlIGxlc3MgdGhhbiBjdXJyZW50IHRva2VuIHByaWNlCQDMCAIJAQxJbnRlZ2VyRW50cnkCCQCsAgIJAKwCAgkArAICCQCsAgIJAKwCAgkArAICCQCsAgIJAKUIAQgFAWkGY2FsbGVyAgFfCQCkAwEFBXBvc0lkAgFfBQZwb29sSWQCAV8FB2Fzc2V0SWQFDWtVc2VyU3RvcExvc3MFBXByaWNlBQNuaWwBaQEOZGVsZXRlU3RvcExvc3MDBXBvc0lkBnBvb2xJZAdhc3NldElkAwkBASEBCQEJaXNEZWZpbmVkAQkAmggCBQR0aGlzCQCsAgIJAKwCAgkArAICCQCsAgIJAKwCAgkArAICCQCsAgIJAKUIAQgFAWkGY2FsbGVyAgFfCQCkAwEFBXBvc0lkAgFfBQZwb29sSWQCAV8FB2Fzc2V0SWQFDWtVc2VyU3RvcExvc3MJAAIBAghObyBlbnRyeQkAzAgCCQELRGVsZXRlRW50cnkBCQCsAgIJAKwCAgkArAICCQCsAgIJAKwCAgkArAICCQCsAgIJAKUIAQgFAWkGY2FsbGVyAgFfCQCkAwEFBXBvc0lkAgFfBQZwb29sSWQCAV8FB2Fzc2V0SWQFDWtVc2VyU3RvcExvc3MFA25pbAFpARBjcmVhdGVOZXdSZXF1ZXN0AQZwYXJhbXMJAQt2YWx1ZU9yRWxzZQIJAQppc1NlbGZDYWxsAQUBaQQMbmV3UmVxdWVzdElkCQBkAgkBC3ZhbHVlT3JFbHNlAgkAmggCBQR0aGlzBQxrUmVxdWVzdEl0ZXIAAAABCQCUCgIJAMwIAgkBC1N0cmluZ0VudHJ5AgkArAICCQCkAwEFDG5ld1JlcXVlc3RJZAUKa1JlcXVlc3RJZAUGcGFyYW1zCQDMCAIJAQxJbnRlZ2VyRW50cnkCBQxrUmVxdWVzdEl0ZXIFDG5ld1JlcXVlc3RJZAUDbmlsBQxuZXdSZXF1ZXN0SWQBaQEIc3RvcExvc3MEBHVzZXIFcG9zSWQEcG9vbAdhc3NldElkBBB0b2tlbk9yYWNsZVByaWNlCAoAAUAJAPwHBAUPcHJpY2VPcmFjbGVBZGRyAglnZXRUV0FQNjAJAMwIAgUHYXNzZXRJZAkAzAgCBwUDbmlsBQNuaWwDCQABAgUBQAIKKEludCwgSW50KQUBQAkAAgEJAKwCAgkAAwEFAUACHyBjb3VsZG4ndCBiZSBjYXN0IHRvIChJbnQsIEludCkCXzEDCQEBIQEJAQlpc0RlZmluZWQBCQCaCAIFBHRoaXMJAKwCAgkArAICCQCsAgIJAKwCAgkArAICCQCsAgIJAKwCAgUEdXNlcgIBXwkApAMBBQVwb3NJZAIBXwUEcG9vbAIBXwUHYXNzZXRJZAUNa1VzZXJTdG9wTG9zcwkAAgECCE5vIGVudHJ5CQDNCAIJAQ53aXRoZHJhd1RvVXNlcgQJAKUIAQgFAWkGY2FsbGVyBQRwb29sCQCkAwEFBXBvc0lkBgkBC0RlbGV0ZUVudHJ5AQkArAICCQCsAgIJAKwCAgkArAICCQCsAgIJAKwCAgkArAICBQR1c2VyAgFfCQCkAwEFBXBvc0lkAgFfBQRwb29sAgFfBQdhc3NldElkBQ1rVXNlclN0b3BMb3NzAWkBCWxpcXVpZGF0ZQQEdXNlcgVwb3NJZARwb29sD2xpcXVpZGF0ZUFtb3VudAQFcFR5cGUJARN2YWx1ZU9yRXJyb3JNZXNzYWdlAgkAnQgCBQR0aGlzCQCsAgIFBWtQb29sBQRwb29sAhJQb29sIGlzIG5vdCBpbml0ZWQEDSR0MDM2MTc3MzYyNjcJAQtnZXRQb29sRGF0YQIJAQdBZGRyZXNzAQkA2QQBBQRwb29sBQVwVHlwZQQDQUlkCAUNJHQwMzYxNzczNjI2NwJfMQQDQklkCAUNJHQwMzYxNzczNjI2NwJfMgQEYmFsQQgFDSR0MDM2MTc3MzYyNjcCXzMEBGJhbEIIBQ0kdDAzNjE3NzM2MjY3Al80BAdzaGFyZUlkCAUNJHQwMzYxNzczNjI2NwJfNQQHcEFtb3VudAkBE3ZhbHVlT3JFcnJvck1lc3NhZ2UCCQCaCAIFBHRoaXMJAKwCAgkArAICCQCsAgIJAKwCAgkArAICBQRwb29sAgFfBQR1c2VyAgFfCQCkAwEFBXBvc0lkBQ1rVXNlclBvc2l0aW9uAhBVbmtub3duIHBvc2l0aW9uBAx1c2VySW50ZXJlc3QJARFAZXh0ck5hdGl2ZSgxMDUwKQIFBHRoaXMJAKwCAgkArAICCQCsAgIJAKwCAgkArAICBQRwb29sAgFfBQR1c2VyAgFfCQCkAwEFBXBvc0lkBRVrVXNlclBvc2l0aW9uSW50ZXJlc3QEDnBvb2xUb3RhbFNoYXJlCQERZ2V0UG9vbFRvdGFsU2hhcmUBBQRwb29sBAh1c2VyQWRkcgkBB0FkZHJlc3MBCQDZBAEFBHVzZXIEDGJvcnJvd0Ftb3VudAkBEUBleHRyTmF0aXZlKDEwNTApAgUEdGhpcwkArAICCQCsAgIJAKwCAgkArAICCQCsAgIFBHBvb2wCAV8FBHVzZXICAV8JAKQDAQUFcG9zSWQFEWtVc2VyQm9ycm93QW1vdW50BAtib3Jyb3dBc3NldAkBEUBleHRyTmF0aXZlKDEwNTMpAgUEdGhpcwkArAICCQCsAgIJAKwCAgkArAICCQCsAgIFBHBvb2wCAV8FBHVzZXICAV8JAKQDAQUFcG9zSWQFEmtVc2VyQm9ycm93QXNzZXRJZAQNJHQwMzY4MjEzNzE3NAMJAGYCBQxib3Jyb3dBbW91bnQAAAkAlAoCCgABQAkA/AcECQEOZ2V0TGVuZFNydkFkZHIAAgxnZXRBc3NldERlYnQJAMwIAgcJAMwIAgkArAICCQCsAgIJAKwCAgkArAICBQRwb29sAgFfBQR1c2VyAgFfCQCkAwEFBXBvc0lkCQDMCAIFC2JvcnJvd0Fzc2V0BQNuaWwFA25pbAMJAAECBQFAAgNJbnQFAUAJAAIBCQCsAgIJAAMBBQFAAhggY291bGRuJ3QgYmUgY2FzdCB0byBJbnQJARFAZXh0ck5hdGl2ZSgxMDUwKQIFBHRoaXMJAKwCAgUEcG9vbAURa1Bvb2xJbnRlcmVzdExvYW4JAJQKAgAACQERQGV4dHJOYXRpdmUoMTA1MCkCBQR0aGlzCQCsAgIFBHBvb2wFE2tQb29sSW50ZXJlc3ROb0xvYW4EBGRlYnQIBQ0kdDAzNjgyMTM3MTc0Al8xBAxwb29sSW50ZXJlc3QIBQ0kdDAzNjgyMTM3MTc0Al8yBA91c2VyQ2FuV2l0aGRyYXcJAGQCBQdwQW1vdW50CQBrAwUHcEFtb3VudAkAZQIFDHBvb2xJbnRlcmVzdAUMdXNlckludGVyZXN0BQdTQ0FMRTEwBApzaGFyZVByaWNlCQCRAwIJAQ1nZXRTaGFyZVByaWNlAQkAzAgCBQdzaGFyZUlkBQNuaWwAAAQQYm9ycm93QXNzZXRQcmljZQkAkQMCCQEOZ2V0QXNzZXRzUHJpY2UBCQDMCAIFC2JvcnJvd0Fzc2V0BQNuaWwAAAQSdXNlckNhbldpdGhkcmF3SW5ECQBrAwUPdXNlckNhbldpdGhkcmF3BQpzaGFyZVByaWNlCQEQZ2V0QXNzZXREZWNpbWFscwEFB3NoYXJlSWQED2JvcnJvd0Ftb3VudEluRAkAawMFDGJvcnJvd0Ftb3VudAUQYm9ycm93QXNzZXRQcmljZQkBEWdldEFzc2V0UHJlY2l0aW9uAQULYm9ycm93QXNzZXQEDXVzZXJBbW91bnRJbkQJAGUCBRJ1c2VyQ2FuV2l0aGRyYXdJbkQFD2JvcnJvd0Ftb3VudEluRAUDbmlsAWkBEmNhcGl0YWxpemVFeEtlZXBlcgwEcG9vbAR0eXBlCXRva2VuVG9JZBBhbW91bnRUb0V4Y2hhbmdlBWNsYWltCWFtb3VudHNJbglhZGRyZXNzZXMPYXNzZXRzVG9SZWNlaXZlC2VzdFJlY2VpdmVkEXNsaXBwYWdlVG9sZXJhbmNlC21pblJlY2VpdmVkB29wdGlvbnMEDSR0MDM3OTU5MzgxNTMDBQVjbGFpbQkBC2NsYWltRmFybWVkAgUEdHlwZQUEcG9vbAQMY2xhaW1lZEFzc2V0AwkAAAIFBHR5cGUFB1NGX1BPT0wFBlNXT1BJRAUEV1hJRAkAlAoCBRBhbW91bnRUb0V4Y2hhbmdlBQxjbGFpbWVkQXNzZXQEDWNsYWltZWRBbW91bnQIBQ0kdDAzNzk1OTM4MTUzAl8xBAxjbGFpbWVkQXNzZXQIBQ0kdDAzNzk1OTM4MTUzAl8yBA9leGNoYW5nZWRBbW91bnQJAQ5leGNoYW5nZUtlZXBlcgoFCXRva2VuVG9JZAUQYW1vdW50VG9FeGNoYW5nZQUMY2xhaW1lZEFzc2V0BQlhbW91bnRzSW4FCWFkZHJlc3NlcwUPYXNzZXRzVG9SZWNlaXZlBQtlc3RSZWNlaXZlZAURc2xpcHBhZ2VUb2xlcmFuY2UFC21pblJlY2VpdmVkBQdvcHRpb25zBAZjaGFuZ2UJAGUCBQ1jbGFpbWVkQW1vdW50BRBhbW91bnRUb0V4Y2hhbmdlBAtjaGFuZ2VFbnRyeQMJAGYCBQZjaGFuZ2UAAAkAzAgCCQEMSW50ZWdlckVudHJ5AgkArAICBQRwb29sBQ5rUG9vbENhcENoYW5nZQkAZAIFBmNoYW5nZQkBC3ZhbHVlT3JFbHNlAgkAmggCBQR0aGlzCQCsAgIFBHBvb2wFDmtQb29sQ2FwQ2hhbmdlAAAFA25pbAUDbmlsCQDOCAIJAQpjYXBpdGFsaXplBAUEcG9vbAUEdHlwZQUJdG9rZW5Ub0lkBQ9leGNoYW5nZWRBbW91bnQFC2NoYW5nZUVudHJ5AWkBEmNhcGl0YWxpemVFeFB1enpsZQgEcG9vbAR0eXBlCXRva2VuVG9JZBBhbW91bnRUb0V4Y2hhbmdlBWNsYWltCXJvdXRlc1N0cgxtaW5Ub1JlY2VpdmUHb3B0aW9ucwQNJHQwMzg4MTAzOTAwNAMFBWNsYWltCQELY2xhaW1GYXJtZWQCBQR0eXBlBQRwb29sBAxjbGFpbWVkQXNzZXQDCQAAAgUEdHlwZQUHU0ZfUE9PTAUGU1dPUElEBQRXWElECQCUCgIFEGFtb3VudFRvRXhjaGFuZ2UFDGNsYWltZWRBc3NldAQNY2xhaW1lZEFtb3VudAgFDSR0MDM4ODEwMzkwMDQCXzEEDGNsYWltZWRBc3NldAgFDSR0MDM4ODEwMzkwMDQCXzIED2V4Y2hhbmdlZEFtb3VudAkBDmV4Y2hhbmdlUHV6emxlBgUJdG9rZW5Ub0lkBRBhbW91bnRUb0V4Y2hhbmdlBQxjbGFpbWVkQXNzZXQFCXJvdXRlc1N0cgUMbWluVG9SZWNlaXZlBQdvcHRpb25zBAZjaGFuZ2UJAGUCBQ1jbGFpbWVkQW1vdW50BRBhbW91bnRUb0V4Y2hhbmdlBAtjaGFuZ2VFbnRyeQMJAGYCBQZjaGFuZ2UAAAkAzAgCCQEMSW50ZWdlckVudHJ5AgkArAICBQRwb29sBQ5rUG9vbENhcENoYW5nZQkAZAIFBmNoYW5nZQkBC3ZhbHVlT3JFbHNlAgkAmggCBQR0aGlzCQCsAgIFBHBvb2wFDmtQb29sQ2FwQ2hhbmdlAAAFA25pbAUDbmlsCQDOCAIJAQpjYXBpdGFsaXplBAUEcG9vbAUEdHlwZQUJdG9rZW5Ub0lkBQ9leGNoYW5nZWRBbW91bnQFC2NoYW5nZUVudHJ5AWkBEmNhcGl0YWxpemVFeFN3b3BGaQwEcG9vbAR0eXBlCXRva2VuVG9JZBBhbW91bnRUb0V4Y2hhbmdlBWNsYWltCmV4Y2hhbmdlcnMOZXhjaGFuZ2Vyc1R5cGUFYXJnczEFYXJnczIRcm91dGluZ0Fzc2V0c0tleXMSbWluQW1vdW50VG9SZWNlaXZlB29wdGlvbnMEDSR0MDM5NzI3Mzk5MjEDBQVjbGFpbQkBC2NsYWltRmFybWVkAgUEdHlwZQUEcG9vbAQMY2xhaW1lZEFzc2V0AwkAAAIFBHR5cGUFB1NGX1BPT0wFBlNXT1BJRAUEV1hJRAkAlAoCBRBhbW91bnRUb0V4Y2hhbmdlBQxjbGFpbWVkQXNzZXQEDWNsYWltZWRBbW91bnQIBQ0kdDAzOTcyNzM5OTIxAl8xBAxjbGFpbWVkQXNzZXQIBQ0kdDAzOTcyNzM5OTIxAl8yBA9leGNoYW5nZWRBbW91bnQJAQ5leGNoYW5nZVN3b3BGaQoFCXRva2VuVG9JZAUQYW1vdW50VG9FeGNoYW5nZQUMY2xhaW1lZEFzc2V0BQpleGNoYW5nZXJzBQ5leGNoYW5nZXJzVHlwZQUFYXJnczEFBWFyZ3MyBRFyb3V0aW5nQXNzZXRzS2V5cwUSbWluQW1vdW50VG9SZWNlaXZlBQdvcHRpb25zBAZjaGFuZ2UJAGUCBQ1jbGFpbWVkQW1vdW50BRBhbW91bnRUb0V4Y2hhbmdlBAtjaGFuZ2VFbnRyeQMJAGYCBQZjaGFuZ2UAAAkAzAgCCQEMSW50ZWdlckVudHJ5AgkArAICBQRwb29sBQ5rUG9vbENhcENoYW5nZQkAZAIFBmNoYW5nZQkBC3ZhbHVlT3JFbHNlAgkAmggCBQR0aGlzCQCsAgIFBHBvb2wFDmtQb29sQ2FwQ2hhbmdlAAAFA25pbAUDbmlsCQDOCAIJAQpjYXBpdGFsaXplBAUEcG9vbAUEdHlwZQUJdG9rZW5Ub0lkBQ9leGNoYW5nZWRBbW91bnQFC2NoYW5nZUVudHJ5AWkBC2luaXROZXdQb29sCAR0eXBlCHBvb2xBZGRyC2luRmVlTm9Mb2FuCWluRmVlTG9hbgxjYXBGZWVOb0xvYW4OY2FwRmVlV2l0aExvYW4Rc3RvcGxvc3NGZWVOb0xvYW4Tc3RvcGxvc3NGZWVXaXRoTG9hbgMDCQECIT0CBQR0eXBlBQdTRl9QT09MCQECIT0CBQR0eXBlBQdXWF9QT09MBwkAAgECCldyb25nIHR5cGUEDSR0MDQwNjE0NDA3MDgJAQtnZXRQb29sRGF0YQIJAQdBZGRyZXNzAQkA2QQBBQhwb29sQWRkcgUEdHlwZQQDYUlkCAUNJHQwNDA2MTQ0MDcwOAJfMQQDYklkCAUNJHQwNDA2MTQ0MDcwOAJfMgQEYUJhbAgFDSR0MDQwNjE0NDA3MDgCXzMEBGJCYWwIBQ0kdDA0MDYxNDQwNzA4Al80BAdzaGFyZUlkCAUNJHQwNDA2MTQ0MDcwOAJfNQkAzAgCCQEMSW50ZWdlckVudHJ5AgkArAICBQhwb29sQWRkcgUVa0F4bHlJbkZlZVdpdGhvdXRMb2FuBQtpbkZlZU5vTG9hbgkAzAgCCQEMSW50ZWdlckVudHJ5AgkArAICBQhwb29sQWRkcgUSa0F4bHlJbkZlZVdpdGhMb2FuBQlpbkZlZUxvYW4JAMwIAgkBDEludGVnZXJFbnRyeQIJAKwCAgUIcG9vbEFkZHIFEWtBeGx5Tm9Mb2FuQ2FwRmVlBQxjYXBGZWVOb0xvYW4JAMwIAgkBDEludGVnZXJFbnRyeQIJAKwCAgUIcG9vbEFkZHIFE2tBeGx5V2l0aExvYW5DYXBGZWUFDmNhcEZlZVdpdGhMb2FuCQDMCAIJAQxJbnRlZ2VyRW50cnkCCQCsAgIFCHBvb2xBZGRyBRZrQXhseVN0b3BMb3NzTm9Mb2FuRmVlBRFzdG9wbG9zc0ZlZU5vTG9hbgkAzAgCCQEMSW50ZWdlckVudHJ5AgkArAICBQhwb29sQWRkcgUUa0F4bHlTdG9wTG9zc0xvYW5GZWUFE3N0b3Bsb3NzRmVlV2l0aExvYW4JAMwIAgkBDEludGVnZXJFbnRyeQIJAKwCAgUIcG9vbEFkZHIFEWtQb29sSW50ZXJlc3RMb2FuAAAJAMwIAgkBDEludGVnZXJFbnRyeQIJAKwCAgUIcG9vbEFkZHIFE2tQb29sSW50ZXJlc3ROb0xvYW4AAAkAzAgCCQELU3RyaW5nRW50cnkCCQCsAgIFBWtQb29sBQhwb29sQWRkcgUEdHlwZQkAzAgCCQELU3RyaW5nRW50cnkCCQCsAgIFB3NoYXJlSWQFCmtTaGFyZVBvb2wFCHBvb2xBZGRyBQNuaWwBaQEOY2FwaXRhbGl6ZVRlc3QEBHBvb2wFcFR5cGUHdG9rZW5JZAt0b2tlbkFtb3VudAQIcG9vbEFkZHIJAQdBZGRyZXNzAQkA2QQBBQRwb29sBA0kdDA0MTUwNDQxNTgzCQELZ2V0UG9vbERhdGECBQhwb29sQWRkcgUFcFR5cGUEA0FJZAgFDSR0MDQxNTA0NDE1ODMCXzEEA0JJZAgFDSR0MDQxNTA0NDE1ODMCXzIEBGJhbEEIBQ0kdDA0MTUwNDQxNTgzAl8zBARiYWxCCAUNJHQwNDE1MDQ0MTU4MwJfNAQHc2hhcmVJZAgFDSR0MDQxNTA0NDE1ODMCXzUEDSR0MDQxNTg2NDE2NjYDCQAAAgUHdG9rZW5JZAUDQUlkCQCUCgIFC3Rva2VuQW1vdW50AAAJAJQKAgAABQt0b2tlbkFtb3VudAQEcG10QQgFDSR0MDQxNTg2NDE2NjYCXzEEBHBtdEIIBQ0kdDA0MTU4NjQxNjY2Al8yBA0kdDA0MTY2OTQxNzczCQEPcmVwbGVuaXNoQnlUeXBlCgUFcFR5cGUFBHBvb2wFBk5PX0ZFRQUEcG10QQUDQUlkBQRwbXRCBQNCSWQFBGJhbEEFBGJhbEIFB3NoYXJlSWQEDHN0YWtlZEFtb3VudAgFDSR0MDQxNjY5NDE3NzMCXzEEAm5mCAUNJHQwNDE2Njk0MTc3MwJfMgQTY3VyUG9vbEludGVyZXN0TG9hbgkBC3ZhbHVlT3JFbHNlAgkAmggCBQR0aGlzCQCsAgIFBHBvb2wFEWtQb29sSW50ZXJlc3RMb2FuAAAEFWN1clBvb2xJbnRlcmVzdE5vTG9hbgkBC3ZhbHVlT3JFbHNlAgkAmggCBQR0aGlzCQCsAgIFBHBvb2wFE2tQb29sSW50ZXJlc3ROb0xvYW4AAAQQdG90YWxTaGFyZUFtb3VudAkBEWdldFBvb2xUb3RhbFNoYXJlAQUEcG9vbAQYdG90YWxTaGFyZUFtb3VudFdpdGhMb2FuCQEZZ2V0UG9vbFRvdGFsU2hhcmVXaXRoTG9hbgEFBHBvb2wEC2xvYW5QZXJjZW50CQBrAwUYdG90YWxTaGFyZUFtb3VudFdpdGhMb2FuBQZTQ0FMRTgFEHRvdGFsU2hhcmVBbW91bnQECnN0YWtlZExvYW4JAGsDBQxzdGFrZWRBbW91bnQFC2xvYW5QZXJjZW50BQZTQ0FMRTgEDHN0YWtlZE5vTG9hbgkAZQIFDHN0YWtlZEFtb3VudAUKc3Rha2VkTG9hbgQPbmV3SW50ZXJlc3RMb2FuCQBkAgUTY3VyUG9vbEludGVyZXN0TG9hbgkAawMFCnN0YWtlZExvYW4FB1NDQUxFMTAFGHRvdGFsU2hhcmVBbW91bnRXaXRoTG9hbgQRbmV3SW50ZXJlc3ROb0xvYW4JAGQCBRVjdXJQb29sSW50ZXJlc3ROb0xvYW4JAGsDBQxzdGFrZWROb0xvYW4FB1NDQUxFMTAJAGUCBRB0b3RhbFNoYXJlQW1vdW50BRh0b3RhbFNoYXJlQW1vdW50V2l0aExvYW4EC2F4bHlGZWVMb2FuCQBrAwUKc3Rha2VkTG9hbgkBCmdldEF4bHlGZWUCBQRwb29sBQxDQVBfRkVFX0xPQU4FCkZFRV9TQ0FMRTYEDWF4bHlGZWVOb0xvYW4JAGsDBQxzdGFrZWROb0xvYW4JAQpnZXRBeGx5RmVlAgUEcG9vbAUPQ0FQX0ZFRV9OT19MT0FOBQpGRUVfU0NBTEU2CQDOCAIJAMwIAgkBDEludGVnZXJFbnRyeQIJAKwCAgUEcG9vbAURa1Bvb2xJbnRlcmVzdExvYW4FD25ld0ludGVyZXN0TG9hbgkAzAgCCQEMSW50ZWdlckVudHJ5AgkArAICBQRwb29sBRNrUG9vbEludGVyZXN0Tm9Mb2FuBRFuZXdJbnRlcmVzdE5vTG9hbgkAzAgCCQEMSW50ZWdlckVudHJ5AgkArAICBQRwb29sBQprUG9vbFRvdGFsCQBlAgkAZQIJAGQCBRB0b3RhbFNoYXJlQW1vdW50BQxzdGFrZWRBbW91bnQFC2F4bHlGZWVMb2FuBQ1heGx5RmVlTm9Mb2FuCQDMCAIJAQxJbnRlZ2VyRW50cnkCCQCsAgIFBHBvb2wFDmtQb29sVG90YWxMb2FuCQBlAgkAZAIFGHRvdGFsU2hhcmVBbW91bnRXaXRoTG9hbgUKc3Rha2VkTG9hbgULYXhseUZlZUxvYW4JAMwIAgkBDlNjcmlwdFRyYW5zZmVyAwUIbW9uZXlCb3gJAGQCBQtheGx5RmVlTG9hbgUNYXhseUZlZU5vTG9hbgkA2QQBBQdzaGFyZUlkBQNuaWwJAQ5nZXRDdXJzRW50cmllcwMFA0FJZAUDQklkBQdzaGFyZUlkAWkBD2NsYWltRmFybWVkVGVzdAIEdHlwZQRwb29sAwkAAAIFBHR5cGUFB1NGX1BPT0wECWJhbEJlZm9yZQkBDmFjY291bnRCYWxhbmNlAQUGU1dPUElEAwkAAAIFCWJhbEJlZm9yZQUJYmFsQmVmb3JlBANpbnYJAPwHBAkBEGdldFNGRmFybWluZ0FkZHIAAgVjbGFpbQkAzAgCBQRwb29sBQNuaWwFA25pbAMJAAACBQNpbnYFA2ludgQIYmFsQWZ0ZXIJAQ5hY2NvdW50QmFsYW5jZQEFBlNXT1BJRAkAlAoCBQNuaWwJAJQKAgkAZQIFCGJhbEFmdGVyBQliYWxCZWZvcmUFBlNXT1BJRAkAAgECJFN0cmljdCB2YWx1ZSBpcyBub3QgZXF1YWwgdG8gaXRzZWxmLgkAAgECJFN0cmljdCB2YWx1ZSBpcyBub3QgZXF1YWwgdG8gaXRzZWxmLgMJAAACBQR0eXBlBQdXWF9QT09MBAliYWxCZWZvcmUJAQ5hY2NvdW50QmFsYW5jZQEFBFdYSUQDCQAAAgUJYmFsQmVmb3JlBQliYWxCZWZvcmUEA2ludgkA/AcECQEQZ2V0V1hGYXJtaW5nQWRkcgEJAQdBZGRyZXNzAQkA2QQBBQRwb29sAgdjbGFpbVdYCQDMCAIFBHBvb2wFA25pbAUDbmlsAwkAAAIFA2ludgUDaW52BAhiYWxBZnRlcgkBDmFjY291bnRCYWxhbmNlAQUEV1hJRAkAlAoCBQNuaWwJAJQKAgkAZQIFCGJhbEFmdGVyBQliYWxCZWZvcmUFBFdYSUQJAAIBAiRTdHJpY3QgdmFsdWUgaXMgbm90IGVxdWFsIHRvIGl0c2VsZi4JAAIBAiRTdHJpY3QgdmFsdWUgaXMgbm90IGVxdWFsIHRvIGl0c2VsZi4JAAIBAg9Xcm9uZyBwb29sIHR5cGUBAnR4AQZ2ZXJpZnkACQD0AwMIBQJ0eAlib2R5Qnl0ZXMJAJEDAggFAnR4BnByb29mcwAACAUCdHgPc2VuZGVyUHVibGljS2V5bxProQ==", "height": 2595039, "applicationStatus": "succeeded", "spentComplexity": 0 } View: original | compacted Prev: 5NjufpnggLyQB99Abxsr37ytDCCWaVprj3WXLYnDbhWg Next: ETtGC1P8ePAT56tYtpKM1n92zYeMTc6xxKMrnRp8CATv Diff:
OldNewDifferences
4141
4242 let t = "_user_position"
4343
44-let u = "_user_position_borrow_amount"
44+let u = "_user_position_pool"
4545
46-let v = "_user_position_borrow_asset_id"
46+let v = "_user_position_borrow_amount"
4747
48-let w = "_user_position_number"
48+let w = "_user_position_borrow_asset_id"
4949
50-let x = "_user_position_interest"
50+let x = "_user_position_number"
5151
52-let y = "_pool_total"
52+let y = "_user_position_interest"
5353
54-let z = "_pool_total_loan"
54+let z = "_pool_total"
5555
56-let A = "_pool_interest_loan"
56+let A = "_pool_total_loan"
5757
58-let B = "_pool_interest_no_loan"
58+let B = "_pool_interest_loan"
5959
60-let C = "_axly_fee_without_loan"
60+let C = "_pool_interest_no_loan"
6161
62-let D = "_axly_fee_with_loan"
62+let D = "_axly_fee_without_loan"
6363
64-let E = "_axly_fee_cap_with_loan"
64+let E = "_axly_fee_with_loan"
6565
66-let F = "_axly_fee_cap_no_loan"
66+let F = "_axly_fee_cap_with_loan"
6767
68-let G = "_axly_fee_stoploss_with_loan"
68+let G = "_axly_fee_cap_no_loan"
6969
70-let H = "_axly_fee_stoploss_no_loan"
70+let H = "_axly_fee_stoploss_with_loan"
7171
72-let I = "_request_id"
72+let I = "_axly_fee_stoploss_no_loan"
7373
74-let J = "requests_iter"
74+let J = "_request_id"
7575
76-let K = "pool_"
76+let K = "requests_iter"
7777
78-let L = "_pool_share_id"
78+let L = "pool_"
7979
80-let M = "_pool_cap_change"
80+let M = "_pool_share_id"
8181
82-let N = "_last_price"
82+let N = "_pool_cap_change"
8383
84-let O = "_stop_loss"
84+let O = "_last_price"
8585
86-let P = "axly_money_box"
86+let P = "_stop_loss"
8787
88-let Q = "swopfi_farming_addr"
88+let Q = "axly_money_box"
8989
90-let R = "lend_service_addr"
90+let R = "swopfi_farming_addr"
9191
92-let S = "price_oracle"
92+let S = "lend_service_addr"
9393
94-let T = "exchange_contract"
94+let T = "price_oracle"
9595
96-let U = "wx_swap_contract"
96+let U = "exchange_contract"
9797
98-let V = Address(fromBase58String(valueOrErrorMessage(getString(this, P), "No axly moneyBox address")))
98+let V = "wx_swap_contract"
9999
100-let W = Address(fromBase58String(valueOrErrorMessage(getString(this, T), "No exchange contract address")))
100+let W = Address(fromBase58String(valueOrErrorMessage(getString(this, Q), "No axly moneyBox address")))
101101
102-let X = Address(fromBase58String(valueOrErrorMessage(getString(this, S), "No price oracle address")))
102+let X = Address(fromBase58String(valueOrErrorMessage(getString(this, U), "No exchange contract address")))
103103
104-let Y = Address(fromBase58String(valueOrErrorMessage(getString(this, U), "No wx swap address")))
104+let Y = Address(fromBase58String(valueOrErrorMessage(getString(this, T), "No price oracle address")))
105105
106-let Z = base58'4W19ndijcc2CsQa9HGW2dfXKTVXhnneWWttxXrtjPmEp'
106+let Z = Address(fromBase58String(valueOrErrorMessage(getString(this, V), "No wx swap address")))
107107
108-let aa = base58'EMAMLxDnv3xiz8RXg8Btj33jcEw3wLczL3JKYYmuubpc'
108+let aa = base58'4W19ndijcc2CsQa9HGW2dfXKTVXhnneWWttxXrtjPmEp'
109109
110-func ab (ac) = if ((ac.caller == this))
110+let ab = base58'EMAMLxDnv3xiz8RXg8Btj33jcEw3wLczL3JKYYmuubpc'
111+
112+func ac (ad) = if ((ad.caller == this))
111113 then unit
112114 else throw("Only contract itself can call this function")
113115
114116
115-func ad (ae) = {
116- let af = ae
117- if ($isInstanceOf(af, "ByteVector"))
117+func ae (af) = {
118+ let ag = af
119+ if ($isInstanceOf(ag, "ByteVector"))
118120 then {
119- let ag = af
120- assetBalance(this, ag)
121+ let ah = ag
122+ assetBalance(this, ah)
121123 }
122- else if ($isInstanceOf(af, "Unit"))
124+ else if ($isInstanceOf(ag, "Unit"))
123125 then {
124- let ah = af
126+ let ai = ag
125127 wavesBalance(this).available
126128 }
127129 else throw("Match error")
128130 }
129131
130132
131-func ai (aj) = $Tuple5(valueOrErrorMessage(getString(aj, o), "Can't get pool A asset id"), valueOrErrorMessage(getString(aj, p), "Can't get pool B asset id"), valueOrErrorMessage(getInteger(aj, m), "Can't get pool A asset balance"), valueOrErrorMessage(getInteger(aj, n), "Can't get pool B asset balance"), valueOrErrorMessage(getString(aj, q), "Can't get share asset id"))
133+func aj (ak) = $Tuple5(valueOrErrorMessage(getString(ak, o), "Can't get pool A asset id"), valueOrErrorMessage(getString(ak, p), "Can't get pool B asset id"), valueOrErrorMessage(getInteger(ak, m), "Can't get pool A asset balance"), valueOrErrorMessage(getInteger(ak, n), "Can't get pool B asset balance"), valueOrErrorMessage(getString(ak, q), "Can't get share asset id"))
132134
133135
134-func ak (aj) = {
135- let al = {
136- let am = invoke(aj, "getPoolConfigWrapperREADONLY", nil, nil)
137- if ($isInstanceOf(am, "List[Any]"))
138- then am
139- else throw(($getType(am) + " couldn't be cast to List[Any]"))
136+func al (ak) = {
137+ let am = {
138+ let an = invoke(ak, "getPoolConfigWrapperREADONLY", nil, nil)
139+ if ($isInstanceOf(an, "List[Any]"))
140+ then an
141+ else throw(($getType(an) + " couldn't be cast to List[Any]"))
140142 }
141- if ((al == al))
143+ if ((am == am))
142144 then {
143- let an = valueOrErrorMessage({
144- let am = al[4]
145- if ($isInstanceOf(am, "String"))
146- then am
145+ let ao = valueOrErrorMessage({
146+ let an = am[4]
147+ if ($isInstanceOf(an, "String"))
148+ then an
147149 else unit
148150 }, "Can't get pool A asset id")
149- let ao = valueOrErrorMessage({
150- let am = al[5]
151- if ($isInstanceOf(am, "String"))
152- then am
151+ let ap = valueOrErrorMessage({
152+ let an = am[5]
153+ if ($isInstanceOf(an, "String"))
154+ then an
153155 else unit
154156 }, "Can't get pool B asset id")
155- let ap = valueOrErrorMessage({
156- let am = al[3]
157- if ($isInstanceOf(am, "String"))
158- then am
157+ let aq = valueOrErrorMessage({
158+ let an = am[3]
159+ if ($isInstanceOf(an, "String"))
160+ then an
159161 else unit
160162 }, "Can't get pool LP asset id")
161- let aq = {
162- let am = invoke(aj, "getAccBalanceWrapperREADONLY", [an], nil)
163- if ($isInstanceOf(am, "Int"))
164- then am
165- else throw(($getType(am) + " couldn't be cast to Int"))
163+ let ar = {
164+ let an = invoke(ak, "getAccBalanceWrapperREADONLY", [ao], nil)
165+ if ($isInstanceOf(an, "Int"))
166+ then an
167+ else throw(($getType(an) + " couldn't be cast to Int"))
166168 }
167- if ((aq == aq))
169+ if ((ar == ar))
168170 then {
169- let ar = {
170- let am = invoke(aj, "getAccBalanceWrapperREADONLY", [ao], nil)
171- if ($isInstanceOf(am, "Int"))
172- then am
173- else throw(($getType(am) + " couldn't be cast to Int"))
171+ let as = {
172+ let an = invoke(ak, "getAccBalanceWrapperREADONLY", [ap], nil)
173+ if ($isInstanceOf(an, "Int"))
174+ then an
175+ else throw(($getType(an) + " couldn't be cast to Int"))
174176 }
175- if ((ar == ar))
176- then $Tuple5(an, ao, aq, ar, ap)
177+ if ((as == as))
178+ then $Tuple5(ao, ap, ar, as, aq)
177179 else throw("Strict value is not equal to itself.")
178180 }
179181 else throw("Strict value is not equal to itself.")
182184 }
183185
184186
185-func as (aj,at) = if ((at == a))
186- then ai(aj)
187- else if ((at == b))
188- then ak(aj)
187+func at (ak,au) = if ((au == a))
188+ then aj(ak)
189+ else if ((au == b))
190+ then al(ak)
189191 else throw("Wrong pool type")
190192
191193
192-func au (aj,at,ap) = if ((at == a))
193- then valueOrErrorMessage(getInteger(aj, r), "Can't get share asset supply")
194- else if ((at == b))
195- then valueOrErrorMessage(assetInfo(fromBase58String(ap)), "Wrong ShareId").quantity
194+func av (ak,au,aq) = if ((au == a))
195+ then valueOrErrorMessage(getInteger(ak, r), "Can't get share asset supply")
196+ else if ((au == b))
197+ then valueOrErrorMessage(assetInfo(fromBase58String(aq)), "Wrong ShareId").quantity
196198 else throw("Wrong pool type")
197199
198200
199-func av (aw) = valueOrElse(getInteger(this, (aw + y)), 0)
201+func aw (ax) = valueOrElse(getInteger(this, (ax + z)), 0)
200202
201203
202-func ax (aw) = valueOrElse(getInteger(this, (aw + z)), 0)
204+func ay (ax) = valueOrElse(getInteger(this, (ax + A)), 0)
203205
204206
205-func ay (aw,az) = (valueOrElse(getInteger(this, (((aw + "_") + az) + w)), 0) + 1)
207+func az (ax,aA) = (valueOrElse(getInteger(this, (aA + x)), 0) + 1)
206208
207209
208-func aA (aw,aB) = if ((aB == d))
209- then getIntegerValue(this, (aw + F))
210- else if ((aB == c))
211- then getIntegerValue(this, (aw + E))
212- else if ((aB == g))
213- then getIntegerValue(this, (aw + D))
214- else if ((aB == h))
215- then getIntegerValue(this, (aw + C))
210+func aB (ax,aC) = if ((aC == d))
211+ then getIntegerValue(this, (ax + G))
212+ else if ((aC == c))
213+ then getIntegerValue(this, (ax + F))
214+ else if ((aC == g))
215+ then getIntegerValue(this, (ax + E))
216+ else if ((aC == h))
217+ then getIntegerValue(this, (ax + D))
216218 else throw("Wrong fee type")
217219
218220
219-func aC () = Address(fromBase58String(valueOrErrorMessage(getString(this, Q), "Can't get swopfi farming addr")))
221+func aD () = Address(fromBase58String(valueOrErrorMessage(getString(this, R), "Can't get swopfi farming addr")))
220222
221223
222-func aD (aj) = {
223- let aE = Address(fromBase58String(valueOrErrorMessage(getString(aj, "%s__factoryContract"), "Can't get WX factory contract addr")))
224- let aF = split(valueOrErrorMessage(getString(aE, "%s__factoryConfig"), "Can't get WX factory cfg"), "__")
225- Address(fromBase58String(aF[1]))
224+func aE (ak) = {
225+ let aF = Address(fromBase58String(valueOrErrorMessage(getString(ak, "%s__factoryContract"), "Can't get WX factory contract addr")))
226+ let aG = split(valueOrErrorMessage(getString(aF, "%s__factoryConfig"), "Can't get WX factory cfg"), "__")
227+ Address(fromBase58String(aG[1]))
226228 }
227229
228230
229-func aG () = Address(fromBase58String(valueOrErrorMessage(getString(this, R), "Can't get lend service addr")))
231+func aH () = Address(fromBase58String(valueOrErrorMessage(getString(this, S), "Can't get lend service addr")))
230232
231233
232-func aH (ae) = {
233- let af = ae
234- if ($isInstanceOf(af, "ByteVector"))
234+func aI (af) = {
235+ let ag = af
236+ if ($isInstanceOf(ag, "ByteVector"))
235237 then {
236- let ag = af
237- toBase58String(ag)
238+ let ah = ag
239+ toBase58String(ah)
238240 }
239- else if ($isInstanceOf(af, "Unit"))
241+ else if ($isInstanceOf(ag, "Unit"))
240242 then {
241- let ah = af
243+ let ai = ag
242244 "WAVES"
243245 }
244246 else throw("Match error")
245247 }
246248
247249
248-func aI (ae) = if ((ae == "WAVES"))
250+func aJ (af) = if ((af == "WAVES"))
249251 then unit
250- else fromBase58String(ae)
252+ else fromBase58String(af)
251253
252254
253-func aJ (ae) = if ((ae == "WAVES"))
255+func aK (af) = if ((af == "WAVES"))
254256 then 8
255257 else {
256- let af = assetInfo(fromBase58String(ae))
257- if ($isInstanceOf(af, "Asset"))
258+ let ag = assetInfo(fromBase58String(af))
259+ if ($isInstanceOf(ag, "Asset"))
258260 then {
259- let aK = af
260- aK.decimals
261+ let aL = ag
262+ aL.decimals
261263 }
262264 else throw("Can't find asset")
263265 }
264266
265267
266-func aL (ae) = pow(10, 0, aJ(ae), 0, 0, DOWN)
268+func aM (af) = pow(10, 0, aK(af), 0, 0, DOWN)
267269
268270
269-func aM (aN) = {
270- func aO (aP,ae) = {
271- let aQ = ( let am = invoke(X, "getTWAP60", [ae, false], nil)
272- if ($isInstanceOf(am, "(Int, Int)"))
273- then am
274- else throw(($getType(am) + " couldn't be cast to (Int, Int)")))._2
275- (aP :+ aQ)
271+func aN (aO) = {
272+ func aP (aQ,af) = {
273+ let aR = ( let an = invoke(Y, "getTWAP60", [af, false], nil)
274+ if ($isInstanceOf(an, "(Int, Int)"))
275+ then an
276+ else throw(($getType(an) + " couldn't be cast to (Int, Int)")))._2
277+ (aQ :+ aR)
276278 }
277279
278- let aR = aN
279- let aS = size(aR)
280- let aT = nil
281- func aU (aV,aW) = if ((aW >= aS))
282- then aV
283- else aO(aV, aR[aW])
280+ let aS = aO
281+ let aT = size(aS)
282+ let aU = nil
283+ func aV (aW,aX) = if ((aX >= aT))
284+ then aW
285+ else aP(aW, aS[aX])
284286
285- func aX (aV,aW) = if ((aW >= aS))
286- then aV
287+ func aY (aW,aX) = if ((aX >= aT))
288+ then aW
287289 else throw("List size exceeds 100")
288290
289- aX(aU(aU(aU(aU(aU(aU(aU(aU(aU(aU(aU(aU(aU(aU(aU(aU(aU(aU(aU(aU(aU(aU(aU(aU(aU(aU(aU(aU(aU(aU(aU(aU(aU(aU(aU(aU(aU(aU(aU(aU(aU(aU(aU(aU(aU(aU(aU(aU(aU(aU(aU(aU(aU(aU(aU(aU(aU(aU(aU(aU(aU(aU(aU(aU(aU(aU(aU(aU(aU(aU(aU(aU(aU(aU(aU(aU(aU(aU(aU(aU(aU(aU(aU(aU(aU(aU(aU(aU(aU(aU(aU(aU(aU(aU(aU(aU(aU(aU(aU(aU(aT, 0), 1), 2), 3), 4), 5), 6), 7), 8), 9), 10), 11), 12), 13), 14), 15), 16), 17), 18), 19), 20), 21), 22), 23), 24), 25), 26), 27), 28), 29), 30), 31), 32), 33), 34), 35), 36), 37), 38), 39), 40), 41), 42), 43), 44), 45), 46), 47), 48), 49), 50), 51), 52), 53), 54), 55), 56), 57), 58), 59), 60), 61), 62), 63), 64), 65), 66), 67), 68), 69), 70), 71), 72), 73), 74), 75), 76), 77), 78), 79), 80), 81), 82), 83), 84), 85), 86), 87), 88), 89), 90), 91), 92), 93), 94), 95), 96), 97), 98), 99), 100)
291+ aY(aV(aV(aV(aV(aV(aV(aV(aV(aV(aV(aV(aV(aV(aV(aV(aV(aV(aV(aV(aV(aV(aV(aV(aV(aV(aV(aV(aV(aV(aV(aV(aV(aV(aV(aV(aV(aV(aV(aV(aV(aV(aV(aV(aV(aV(aV(aV(aV(aV(aV(aV(aV(aV(aV(aV(aV(aV(aV(aV(aV(aV(aV(aV(aV(aV(aV(aV(aV(aV(aV(aV(aV(aV(aV(aV(aV(aV(aV(aV(aV(aV(aV(aV(aV(aV(aV(aV(aV(aV(aV(aV(aV(aV(aV(aV(aV(aV(aV(aV(aV(aU, 0), 1), 2), 3), 4), 5), 6), 7), 8), 9), 10), 11), 12), 13), 14), 15), 16), 17), 18), 19), 20), 21), 22), 23), 24), 25), 26), 27), 28), 29), 30), 31), 32), 33), 34), 35), 36), 37), 38), 39), 40), 41), 42), 43), 44), 45), 46), 47), 48), 49), 50), 51), 52), 53), 54), 55), 56), 57), 58), 59), 60), 61), 62), 63), 64), 65), 66), 67), 68), 69), 70), 71), 72), 73), 74), 75), 76), 77), 78), 79), 80), 81), 82), 83), 84), 85), 86), 87), 88), 89), 90), 91), 92), 93), 94), 95), 96), 97), 98), 99), 100)
290292 }
291293
292294
293-func aY (aZ) = {
294- func aO (aP,ap) = {
295- let aw = valueOrErrorMessage(getString(this, (ap + L)), "Can't find pool addr by share id")
296- let aj = Address(fromBase58String(aw))
297- let ba = valueOrErrorMessage(getString(this, (K + aw)), "Pool is not inited")
298- let bb = as(aj, ba)
299- let an = bb._1
300- let ao = bb._2
301- let bc = bb._3
302- let bd = bb._4
303- let be = ( let am = invoke(X, "getTWAP60", [an, false], nil)
304- if ($isInstanceOf(am, "(Int, Int)"))
305- then am
306- else throw(($getType(am) + " couldn't be cast to (Int, Int)")))._2
307- let bf = ( let am = invoke(X, "getTWAP60", [ao, false], nil)
308- if ($isInstanceOf(am, "(Int, Int)"))
309- then am
310- else throw(($getType(am) + " couldn't be cast to (Int, Int)")))._2
311- let bg = au(aj, ba, ap)
312- let bh = pow(10, 0, aJ(an), 0, 0, DOWN)
313- let bi = pow(10, 0, aJ(ao), 0, 0, DOWN)
314- let bj = pow(10, 0, aJ(ap), 0, 0, DOWN)
315- let bk = (fraction(bc, be, bh) + fraction(bd, bf, bi))
316- let bl = fraction(bk, bj, bg)
317- (aP :+ bl)
295+func aZ (ba) = {
296+ func aP (aQ,aq) = {
297+ let ax = valueOrErrorMessage(getString(this, (aq + M)), "Can't find pool addr by share id")
298+ let ak = Address(fromBase58String(ax))
299+ let bb = valueOrErrorMessage(getString(this, (L + ax)), "Pool is not inited")
300+ let bc = at(ak, bb)
301+ let ao = bc._1
302+ let ap = bc._2
303+ let bd = bc._3
304+ let be = bc._4
305+ let bf = ( let an = invoke(Y, "getTWAP60", [ao, false], nil)
306+ if ($isInstanceOf(an, "(Int, Int)"))
307+ then an
308+ else throw(($getType(an) + " couldn't be cast to (Int, Int)")))._2
309+ let bg = ( let an = invoke(Y, "getTWAP60", [ap, false], nil)
310+ if ($isInstanceOf(an, "(Int, Int)"))
311+ then an
312+ else throw(($getType(an) + " couldn't be cast to (Int, Int)")))._2
313+ let bh = av(ak, bb, aq)
314+ let bi = pow(10, 0, aK(ao), 0, 0, DOWN)
315+ let bj = pow(10, 0, aK(ap), 0, 0, DOWN)
316+ let bk = pow(10, 0, aK(aq), 0, 0, DOWN)
317+ let bl = (fraction(bd, bf, bi) + fraction(be, bg, bj))
318+ let bm = fraction(bl, bk, bh)
319+ (aQ :+ bm)
318320 }
319321
320- let aR = aZ
321- let aS = size(aR)
322- let aT = nil
323- func aU (aV,aW) = if ((aW >= aS))
324- then aV
325- else aO(aV, aR[aW])
322+ let aS = ba
323+ let aT = size(aS)
324+ let aU = nil
325+ func aV (aW,aX) = if ((aX >= aT))
326+ then aW
327+ else aP(aW, aS[aX])
326328
327- func aX (aV,aW) = if ((aW >= aS))
328- then aV
329+ func aY (aW,aX) = if ((aX >= aT))
330+ then aW
329331 else throw("List size exceeds 50")
330332
331- aX(aU(aU(aU(aU(aU(aU(aU(aU(aU(aU(aU(aU(aU(aU(aU(aU(aU(aU(aU(aU(aU(aU(aU(aU(aU(aU(aU(aU(aU(aU(aU(aU(aU(aU(aU(aU(aU(aU(aU(aU(aU(aU(aU(aU(aU(aU(aU(aU(aU(aU(aT, 0), 1), 2), 3), 4), 5), 6), 7), 8), 9), 10), 11), 12), 13), 14), 15), 16), 17), 18), 19), 20), 21), 22), 23), 24), 25), 26), 27), 28), 29), 30), 31), 32), 33), 34), 35), 36), 37), 38), 39), 40), 41), 42), 43), 44), 45), 46), 47), 48), 49), 50)
333+ aY(aV(aV(aV(aV(aV(aV(aV(aV(aV(aV(aV(aV(aV(aV(aV(aV(aV(aV(aV(aV(aV(aV(aV(aV(aV(aV(aV(aV(aV(aV(aV(aV(aV(aV(aV(aV(aV(aV(aV(aV(aV(aV(aV(aV(aV(aV(aV(aV(aV(aV(aU, 0), 1), 2), 3), 4), 5), 6), 7), 8), 9), 10), 11), 12), 13), 14), 15), 16), 17), 18), 19), 20), 21), 22), 23), 24), 25), 26), 27), 28), 29), 30), 31), 32), 33), 34), 35), 36), 37), 38), 39), 40), 41), 42), 43), 44), 45), 46), 47), 48), 49), 50)
332334 }
333335
334336
335-func bm (an,ao,ap) = {
336- let bn = aM([an, ao])
337- let bl = aY([ap])
338-[IntegerEntry((an + N), bn[0]), IntegerEntry((ao + N), bn[1]), IntegerEntry((ap + N), bl[0])]
337+func bn (ao,ap,aq) = {
338+ let bo = aN([ao, ap])
339+ let bm = aZ([aq])
340+[IntegerEntry((ao + O), bo[0]), IntegerEntry((ap + O), bo[1]), IntegerEntry((aq + O), bm[0])]
339341 }
340342
341343
342-func bo (aw,aB,bp,bq,br,bs,aq,ar,ap) = {
343- let bt = ad(fromBase58String(ap))
344- if ((bt == bt))
344+func bp (ax,aC,bq,br,bs,bt,ar,as,aq) = {
345+ let bu = ae(fromBase58String(aq))
346+ if ((bu == bu))
345347 then {
346- let aj = Address(fromBase58String(aw))
347- let bu = fraction(j, bp, aq)
348- let bv = fraction(j, br, ar)
349- let bw = if ((bv > bu))
348+ let ak = Address(fromBase58String(ax))
349+ let bv = fraction(j, bq, ar)
350+ let bw = fraction(j, bs, as)
351+ let bx = if ((bw > bv))
350352 then {
351- let bx = fraction(ar, bu, j, CEILING)
352- $Tuple4(bp, bx, (br - bx), bs)
353+ let by = fraction(as, bv, j, CEILING)
354+ $Tuple4(bq, by, (bs - by), bt)
353355 }
354356 else {
355- let bx = fraction(aq, bv, j, CEILING)
356- $Tuple4(bx, br, (bp - bx), bq)
357+ let by = fraction(ar, bw, j, CEILING)
358+ $Tuple4(by, bs, (bq - by), br)
357359 }
358- let by = bw._1
359- let bz = bw._2
360- let bA = bw._3
361- let bB = bw._4
362- let bC = if (if ((by > 0))
363- then (bz > 0)
360+ let bz = bx._1
361+ let bA = bx._2
362+ let bB = bx._3
363+ let bC = bx._4
364+ let bD = if (if ((bz > 0))
365+ then (bA > 0)
364366 else false)
365367 then {
366- let bD = [AttachedPayment(aI(bq), by), AttachedPayment(aI(bs), bz)]
367- invoke(aj, "callFunction", ["replenishWithTwoTokens", ["false", "0"]], bD)
368+ let bE = [AttachedPayment(aJ(br), bz), AttachedPayment(aJ(bt), bA)]
369+ invoke(ak, "callFunction", ["replenishWithTwoTokens", ["false", "0"]], bE)
368370 }
369371 else 0
370- if ((bC == bC))
372+ if ((bD == bD))
371373 then {
372- let bE = if ((bA > 0))
374+ let bF = if ((bB > 0))
373375 then {
374- let bD = [AttachedPayment(aI(bB), bA)]
375- let bF = ["0", "false", "0"]
376- invoke(aj, "callFunction", ["replenishWithOneToken", bF], bD)
376+ let bE = [AttachedPayment(aJ(bC), bB)]
377+ let bG = ["0", "false", "0"]
378+ invoke(ak, "callFunction", ["replenishWithOneToken", bG], bE)
377379 }
378380 else 0
379- if ((bE == bE))
381+ if ((bF == bF))
380382 then {
381- let bG = ad(fromBase58String(ap))
382- let bH = (bG - bt)
383- let bI = fraction(bH, aA(aw, aB), l)
384- let bJ = (bH - bI)
385- if ((0 >= bJ))
383+ let bH = ae(fromBase58String(aq))
384+ let bI = (bH - bu)
385+ let bJ = fraction(bI, aB(ax, aC), l)
386+ let bK = (bI - bJ)
387+ if ((0 >= bK))
386388 then throw("amount of staked sharetokens must be > 0")
387389 else {
388- let bK = invoke(aC(), "lockShareTokens", [aw, 0], [AttachedPayment(fromBase58String(ap), bJ)])
389- if ((bK == bK))
390- then $Tuple2(bJ, bI)
390+ let bL = invoke(aD(), "lockShareTokens", [ax, 0], [AttachedPayment(fromBase58String(aq), bK)])
391+ if ((bL == bL))
392+ then $Tuple2(bK, bJ)
391393 else throw("Strict value is not equal to itself.")
392394 }
393395 }
399401 }
400402
401403
402-func bL (aw,aB,bp,bq,br,bs,ap) = {
403- let aj = Address(fromBase58String(aw))
404- let bM = if (if ((bp > 0))
405- then (br > 0)
404+func bM (ax,aC,bq,br,bs,bt,aq) = {
405+ let ak = Address(fromBase58String(ax))
406+ let bN = if (if ((bq > 0))
407+ then (bs > 0)
406408 else false)
407409 then {
408- let bN = split({
409- let am = invoke(aj, "evaluatePutByAmountAssetREADONLY", [bp], nil)
410- if ($isInstanceOf(am, "String"))
411- then am
412- else throw(($getType(am) + " couldn't be cast to String"))
410+ let bO = split({
411+ let an = invoke(ak, "evaluatePutByAmountAssetREADONLY", [bq], nil)
412+ if ($isInstanceOf(an, "String"))
413+ then an
414+ else throw(($getType(an) + " couldn't be cast to String"))
413415 }, "__")
414- if ((bN == bN))
416+ if ((bO == bO))
415417 then {
416- let bO = split({
417- let am = invoke(aj, "evaluatePutByPriceAssetREADONLY", [br], nil)
418- if ($isInstanceOf(am, "String"))
419- then am
420- else throw(($getType(am) + " couldn't be cast to String"))
418+ let bP = split({
419+ let an = invoke(ak, "evaluatePutByPriceAssetREADONLY", [bs], nil)
420+ if ($isInstanceOf(an, "String"))
421+ then an
422+ else throw(($getType(an) + " couldn't be cast to String"))
421423 }, "__")
422- if ((bO == bO))
424+ if ((bP == bP))
423425 then {
424- let bP = parseIntValue(bN[1])
425426 let bQ = parseIntValue(bO[1])
426- if ((bQ > bP))
427+ let bR = parseIntValue(bP[1])
428+ if ((bR > bQ))
427429 then {
428- let bR = parseIntValue(bN[8])
429- $Tuple4(bp, bR, (br - bR), bs)
430+ let bS = parseIntValue(bO[8])
431+ $Tuple4(bq, bS, (bs - bS), bt)
430432 }
431433 else {
432- let bS = parseIntValue(bO[7])
433- $Tuple4(bS, br, (bp - bS), bq)
434+ let bT = parseIntValue(bP[7])
435+ $Tuple4(bT, bs, (bq - bT), br)
434436 }
435437 }
436438 else throw("Strict value is not equal to itself.")
437439 }
438440 else throw("Strict value is not equal to itself.")
439441 }
440- else if ((bp > 0))
441- then $Tuple4(bp, br, bp, bq)
442- else if ((br > 0))
443- then $Tuple4(bp, br, br, bs)
442+ else if ((bq > 0))
443+ then $Tuple4(bq, bs, bq, br)
444+ else if ((bs > 0))
445+ then $Tuple4(bq, bs, bs, bt)
444446 else throw("pmts must be > 0")
445- let by = bM._1
446- let bz = bM._2
447- let bA = bM._3
448- let bB = bM._4
449- let bt = ad(fromBase58String(ap))
450- if ((bt == bt))
447+ let bz = bN._1
448+ let bA = bN._2
449+ let bB = bN._3
450+ let bC = bN._4
451+ let bu = ae(fromBase58String(aq))
452+ if ((bu == bu))
451453 then {
452- let bC = if (if ((by > 0))
453- then (bz > 0)
454+ let bD = if (if ((bz > 0))
455+ then (bA > 0)
454456 else false)
455457 then {
456- let bD = [AttachedPayment(aI(bq), by), AttachedPayment(aI(bs), bz)]
457- invoke(aj, "put", [1000000, false], bD)
458+ let bE = [AttachedPayment(aJ(br), bz), AttachedPayment(aJ(bt), bA)]
459+ invoke(ak, "put", [1000000, false], bE)
458460 }
459461 else 0
460- if ((bC == bC))
462+ if ((bD == bD))
461463 then {
462- let bE = if ((bA > 0))
464+ let bF = if ((bB > 0))
463465 then {
464- let bD = [AttachedPayment(aI(bB), bA)]
465- invoke(aj, "putOneTkn", [0, false], bD)
466+ let bE = [AttachedPayment(aJ(bC), bB)]
467+ invoke(ak, "putOneTkn", [0, false], bE)
466468 }
467469 else 0
468- if ((bE == bE))
470+ if ((bF == bF))
469471 then {
470- let bG = ad(fromBase58String(ap))
471- let bH = (bG - bt)
472- let bI = fraction(bH, aA(aw, aB), l)
473- let bJ = (bH - bI)
474- if ((0 >= bJ))
472+ let bH = ae(fromBase58String(aq))
473+ let bI = (bH - bu)
474+ let bJ = fraction(bI, aB(ax, aC), l)
475+ let bK = (bI - bJ)
476+ if ((0 >= bK))
475477 then throw("amount of staked sharetokens must be > 0")
476478 else {
477- let bK = invoke(aD(aj), "stake", nil, [AttachedPayment(fromBase58String(ap), bJ)])
478- if ((bK == bK))
479- then $Tuple2(bJ, bI)
479+ let bL = invoke(aE(ak), "stake", nil, [AttachedPayment(fromBase58String(aq), bK)])
480+ if ((bL == bL))
481+ then $Tuple2(bK, bJ)
480482 else throw("Strict value is not equal to itself.")
481483 }
482484 }
488490 }
489491
490492
491-func bT (at,aw,aB,bp,bU,br,bV,aq,ar,ap) = if ((at == a))
492- then bo(aw, aB, bp, bU, br, bV, aq, ar, ap)
493- else if ((at == b))
494- then bL(aw, aB, bp, bU, br, bV, ap)
493+func bU (au,ax,aC,bq,bV,bs,bW,ar,as,aq) = if ((au == a))
494+ then bp(ax, aC, bq, bV, bs, bW, ar, as, aq)
495+ else if ((au == b))
496+ then bM(ax, aC, bq, bV, bs, bW, aq)
495497 else throw("Wrong pool type")
496498
497499
498-func bW (aw,az,bX,bI,bY,ap,at,bZ) = {
499- let ca = av(aw)
500- let cb = ax(aw)
501- let cc = if (bZ)
502- then $Tuple2(getIntegerValue(this, (aw + A)), (cb + bX))
503- else $Tuple2(getIntegerValue(this, (aw + B)), cb)
504- let cd = cc._1
505- let ce = cc._2
506-[IntegerEntry((aw + y), (ca + bX)), IntegerEntry((aw + z), (cb + bX)), IntegerEntry((((((aw + "_") + az) + "_") + toString(bY)) + t), bX), IntegerEntry((((((aw + "_") + az) + "_") + toString(bY)) + x), cd), IntegerEntry((((aw + "_") + az) + w), bY), ScriptTransfer(V, bI, fromBase58String(ap))]
500+func bX (ax,aA,bY,bJ,bZ,aq,au,ca) = {
501+ let cb = aw(ax)
502+ let cc = ay(ax)
503+ let cd = if (ca)
504+ then $Tuple2(getIntegerValue(this, (ax + B)), (cc + bY))
505+ else $Tuple2(getIntegerValue(this, (ax + C)), cc)
506+ let ce = cd._1
507+ let cf = cd._2
508+[IntegerEntry((ax + z), (cb + bY)), IntegerEntry((ax + A), (cc + bY)), IntegerEntry((((((ax + "_") + aA) + "_") + toString(bZ)) + t), bY), IntegerEntry((((((ax + "_") + aA) + "_") + toString(bZ)) + y), ce), StringEntry((((aA + "_") + toString(bZ)) + u), ax), IntegerEntry((aA + x), bZ), ScriptTransfer(W, bJ, fromBase58String(aq))]
507509 }
508510
509511
510-func cf (at,aw) = if ((at == a))
512+func cg (au,ax) = if ((au == a))
511513 then {
512- let cg = ad(Z)
513- if ((cg == cg))
514+ let ch = ae(aa)
515+ if ((ch == ch))
514516 then {
515- let ch = invoke(aC(), "claim", [aw], nil)
516- if ((ch == ch))
517+ let ci = invoke(aD(), "claim", [ax], nil)
518+ if ((ci == ci))
517519 then {
518- let ci = ad(Z)
519- $Tuple2((ci - cg), Z)
520+ let cj = ae(aa)
521+ $Tuple2((cj - ch), aa)
520522 }
521523 else throw("Strict value is not equal to itself.")
522524 }
523525 else throw("Strict value is not equal to itself.")
524526 }
525- else if ((at == b))
527+ else if ((au == b))
526528 then {
527- let cg = ad(aa)
528- if ((cg == cg))
529+ let ch = ae(ab)
530+ if ((ch == ch))
529531 then {
530- let ch = invoke(aD(Address(fromBase58String(aw))), "claimWX", [aw], nil)
531- if ((ch == ch))
532+ let ci = invoke(aE(Address(fromBase58String(ax))), "claimWX", [ax], nil)
533+ if ((ci == ci))
532534 then {
533- let ci = ad(aa)
534- $Tuple2((ci - cg), aa)
535+ let cj = ae(ab)
536+ $Tuple2((cj - ch), ab)
535537 }
536538 else throw("Strict value is not equal to itself.")
537539 }
540542 else throw("Wrong pool type")
541543
542544
543-func cj (ck,cl,cm,cn,co,cp,cq,cr,cs,ct) = {
544- let cu = ad(aI(ck))
545- if ((cu == cu))
545+func ck (cl,cm,cn,co,cp,cq,cr,cs,ct,cu) = {
546+ let cv = ae(aJ(cl))
547+ if ((cv == cv))
546548 then {
547- let ch = invoke(W, "swap", [cn, co, cp, cq, cr, cs, ct], [AttachedPayment(cm, cl)])
548- if ((ch == ch))
549- then (ad(aI(ck)) - cu)
549+ let ci = invoke(X, "swap", [co, cp, cq, cr, cs, ct, cu], [AttachedPayment(cn, cm)])
550+ if ((ci == ci))
551+ then (ae(aJ(cl)) - cv)
550552 else throw("Strict value is not equal to itself.")
551553 }
552554 else throw("Strict value is not equal to itself.")
553555 }
554556
555557
556-func cv (ck,cl,cm,cw,cx,ct) = {
557- let cu = ad(aI(ck))
558- if ((cu == cu))
558+func cw (cl,cm,cn,cx,cy,cu) = {
559+ let cv = ae(aJ(cl))
560+ if ((cv == cv))
559561 then {
560- let ch = invoke(W, "puzzleSwap", [cw, cx, ct], [AttachedPayment(cm, cl)])
561- if ((ch == ch))
562- then (ad(aI(ck)) - cu)
562+ let ci = invoke(X, "puzzleSwap", [cx, cy, cu], [AttachedPayment(cn, cm)])
563+ if ((ci == ci))
564+ then (ae(aJ(cl)) - cv)
563565 else throw("Strict value is not equal to itself.")
564566 }
565567 else throw("Strict value is not equal to itself.")
566568 }
567569
568570
569-func cy (ck,cl,cm,cz,cA,cB,cC,cD,cE,ct) = {
570- let cu = ad(aI(ck))
571- if ((cu == cu))
571+func cz (cl,cm,cn,cA,cB,cC,cD,cE,cF,cu) = {
572+ let cv = ae(aJ(cl))
573+ if ((cv == cv))
572574 then {
573- let ch = invoke(W, "swopfiSwap", [cz, cA, cB, cC, cD, cE, ct], [AttachedPayment(cm, cl)])
574- if ((ch == ch))
575- then (ad(aI(ck)) - cu)
575+ let ci = invoke(X, "swopfiSwap", [cA, cB, cC, cD, cE, cF, cu], [AttachedPayment(cn, cm)])
576+ if ((ci == ci))
577+ then (ae(aJ(cl)) - cv)
576578 else throw("Strict value is not equal to itself.")
577579 }
578580 else throw("Strict value is not equal to itself.")
579581 }
580582
581583
582-func cF (aw,ba,cG,cH) = {
583- let aj = Address(fromBase58String(aw))
584- let cI = as(aj, ba)
585- let bU = cI._1
586- let bV = cI._2
587- let aq = cI._3
588- let ar = cI._4
589- let ap = cI._5
590- let cJ = if ((cG == bU))
591- then $Tuple2(cH, 0)
592- else $Tuple2(0, cH)
593- let bp = cJ._1
594- let br = cJ._2
595- let cK = bT(ba, aw, i, bp, bU, br, bV, aq, ar, ap)
596- let bX = cK._1
597- let cL = cK._2
598- let cM = valueOrElse(getInteger(this, (aw + A)), 0)
599- let cN = valueOrElse(getInteger(this, (aw + B)), 0)
600- let cO = av(aw)
601- let cP = ax(aw)
602- let cQ = fraction(cP, j, cO)
603- let cR = fraction(bX, cQ, j)
604- let cS = (bX - cR)
605- let cT = (cM + fraction(cR, k, cP))
606- let cU = (cN + fraction(cS, k, (cO - cP)))
607- let cV = fraction(cR, aA(aw, d), l)
608- let cW = fraction(cS, aA(aw, c), l)
609- ([IntegerEntry((aw + A), cT), IntegerEntry((aw + B), cU), IntegerEntry((aw + y), (((cO + bX) - cV) - cW)), IntegerEntry((aw + z), ((cP + cR) - cV)), ScriptTransfer(V, (cV + cW), fromBase58String(ap))] ++ bm(bU, bV, ap))
584+func cG (ax,bb,cH,cI) = {
585+ let ak = Address(fromBase58String(ax))
586+ let cJ = at(ak, bb)
587+ let bV = cJ._1
588+ let bW = cJ._2
589+ let ar = cJ._3
590+ let as = cJ._4
591+ let aq = cJ._5
592+ let cK = if ((cH == bV))
593+ then $Tuple2(cI, 0)
594+ else $Tuple2(0, cI)
595+ let bq = cK._1
596+ let bs = cK._2
597+ let cL = bU(bb, ax, i, bq, bV, bs, bW, ar, as, aq)
598+ let bY = cL._1
599+ let cM = cL._2
600+ let cN = valueOrElse(getInteger(this, (ax + B)), 0)
601+ let cO = valueOrElse(getInteger(this, (ax + C)), 0)
602+ let cP = aw(ax)
603+ let cQ = ay(ax)
604+ let cR = fraction(cQ, j, cP)
605+ let cS = fraction(bY, cR, j)
606+ let cT = (bY - cS)
607+ let cU = (cN + fraction(cS, k, cQ))
608+ let cV = (cO + fraction(cT, k, (cP - cQ)))
609+ let cW = fraction(cS, aB(ax, d), l)
610+ let cX = fraction(cT, aB(ax, c), l)
611+ ([IntegerEntry((ax + B), cU), IntegerEntry((ax + C), cV), IntegerEntry((ax + z), (((cP + bY) - cW) - cX)), IntegerEntry((ax + A), ((cQ + cS) - cW)), ScriptTransfer(W, (cW + cX), fromBase58String(aq))] ++ bn(bV, bW, aq))
610612 }
611613
612614
613-func cX (aw,cY,cZ,aq,ar,da,db) = {
614- let aj = Address(fromBase58String(aw))
615- let dc = 1000000
616- let dd = getIntegerValue(aj, s)
617- let de = fraction(da, dc, (dc - dd))
618- let df = if ((db == cY))
615+func cY (ax,cZ,da,ar,as,db,dc) = {
616+ let ak = Address(fromBase58String(ax))
617+ let dd = 1000000
618+ let de = getIntegerValue(ak, s)
619+ let df = fraction(db, dd, (dd - de))
620+ let dg = if ((dc == cZ))
619621 then {
620- let dg = fraction(aq, de, (ar - de))
621- $Tuple2(dg, cZ)
622+ let dh = fraction(ar, df, (as - df))
623+ $Tuple2(dh, da)
622624 }
623625 else {
624- let dg = fraction(ar, de, (aq - de))
625- $Tuple2(dg, cY)
626+ let dh = fraction(as, df, (ar - df))
627+ $Tuple2(dh, cZ)
626628 }
627- let dg = df._1
628- let dh = df._2
629- invoke(aj, "callFunction", ["exchange", ["1"]], [AttachedPayment(aI(dh), dg)])
629+ let dh = dg._1
630+ let di = dg._2
631+ invoke(ak, "callFunction", ["exchange", ["1"]], [AttachedPayment(aJ(di), dh)])
630632 }
631633
632634
633-func di (aw,cY,cZ,aq,ar,da,db) = {
634- let aj = Address(fromBase58String(aw))
635- let dj = getIntegerValue(Y, "%s__protocolFee")
636- let dk = getIntegerValue(Y, "%s__poolFee")
637- let dl = toBigInt(100000000)
638- let dm = if ((db == cY))
635+func dj (ax,cZ,da,ar,as,db,dc) = {
636+ let ak = Address(fromBase58String(ax))
637+ let dk = getIntegerValue(Z, "%s__protocolFee")
638+ let dl = getIntegerValue(Z, "%s__poolFee")
639+ let dm = toBigInt(100000000)
640+ let dn = if ((dc == cZ))
639641 then {
640- let dg = fraction(aq, da, (ar - da))
641- $Tuple2(dg, cZ)
642+ let dh = fraction(ar, db, (as - db))
643+ $Tuple2(dh, da)
642644 }
643645 else {
644- let dg = fraction(ar, da, (aq - da))
645- $Tuple2(dg, cY)
646+ let dh = fraction(as, db, (ar - db))
647+ $Tuple2(dh, cZ)
646648 }
647- let dg = dm._1
648- let dh = dm._2
649- let dn = toInt(fraction(toBigInt(dg), dl, (dl - toBigInt((dj + dk)))))
650- invoke(Y, "swap", [1, db, toString(this)], [AttachedPayment(aI(dh), dn)])
649+ let dh = dn._1
650+ let di = dn._2
651+ let do = toInt(fraction(toBigInt(dh), dm, (dm - toBigInt((dk + dl)))))
652+ invoke(Z, "swap", [1, dc, toString(this)], [AttachedPayment(aJ(di), do)])
651653 }
652654
653655
654-func do (at,aw,cY,cZ,aq,ar,da,db) = if ((at == a))
655- then cX(aw, cY, cZ, aq, ar, da, db)
656- else di(aw, cY, cZ, aq, ar, da, db)
656+func dp (au,ax,cZ,da,ar,as,db,dc) = if ((au == a))
657+ then cY(ax, cZ, da, ar, as, db, dc)
658+ else dj(ax, cZ, da, ar, as, db, dc)
657659
658660
659-func dp (aw,dq,dr,ds) = {
660- let aj = Address(fromBase58String(aw))
661- let ba = valueOrErrorMessage(getString(this, (K + aw)), "Unknown pool")
662- let dt = as(aj, ba)
663- let cY = dt._1
664- let cZ = dt._2
665- let aq = dt._3
666- let ar = dt._4
667- let ap = dt._5
668- let du = ad(aI(cY))
669- if ((du == du))
661+func dq (ax,dr,ds,dt) = {
662+ let ak = Address(fromBase58String(ax))
663+ let bb = valueOrErrorMessage(getString(this, (L + ax)), "Unknown pool")
664+ let du = at(ak, bb)
665+ let cZ = du._1
666+ let da = du._2
667+ let ar = du._3
668+ let as = du._4
669+ let aq = du._5
670+ let dv = ae(aJ(cZ))
671+ if ((dv == dv))
670672 then {
671- let dv = ad(aI(cZ))
672- if ((dv == dv))
673+ let dw = ae(aJ(da))
674+ if ((dw == dw))
673675 then {
674- let ch = if ((ba == a))
675- then invoke(aj, "callFunction", ["withdraw", [toString(dq)]], nil)
676- else if ((ba == b))
677- then invoke(aj, "unstakeAndGet", [dq], nil)
676+ let ci = if ((bb == a))
677+ then invoke(ak, "callFunction", ["withdraw", [toString(dr)]], nil)
678+ else if ((bb == b))
679+ then invoke(ak, "unstakeAndGet", [dr], nil)
678680 else throw("Wrong position type")
679- if ((ch == ch))
681+ if ((ci == ci))
680682 then {
681- let dw = ad(aI(cY))
682- let dx = ad(aI(cZ))
683- let dy = $Tuple2((dw - du), (dx - dv))
684- let dz = dy._1
685- let dA = dy._2
686- let dB = if ((dr > 0))
683+ let dx = ae(aJ(cZ))
684+ let dy = ae(aJ(da))
685+ let dz = $Tuple2((dx - dv), (dy - dw))
686+ let dA = dz._1
687+ let dB = dz._2
688+ let dC = if ((ds > 0))
687689 then {
688- let dC = if (if ((ds == cY))
689- then (dr > dz)
690+ let dD = if (if ((dt == cZ))
691+ then (ds > dA)
690692 else false)
691- then (dr - dz)
692- else if (if ((ds == cZ))
693- then (dr > dA)
693+ then (ds - dA)
694+ else if (if ((dt == da))
695+ then (ds > dB)
694696 else false)
695- then (dr - dA)
697+ then (ds - dB)
696698 else 0
697- let dD = if ((dC > 0))
698- then do(ba, aw, cY, cZ, aq, ar, dC, ds)
699+ let dE = if ((dD > 0))
700+ then dp(bb, ax, cZ, da, ar, as, dD, dt)
699701 else 0
700- if ((dD == dD))
702+ if ((dE == dE))
701703 then {
702- let dE = ad(aI(cY))
703- let dF = ad(aI(cZ))
704- $Tuple2((dE - du), (dF - dv))
704+ let dF = ae(aJ(cZ))
705+ let dG = ae(aJ(da))
706+ $Tuple2((dF - dv), (dG - dw))
705707 }
706708 else throw("Strict value is not equal to itself.")
707709 }
708- else $Tuple2(dz, dA)
709- let dG = dB._1
710- let dH = dB._2
711- $Tuple7(dG, cY, dH, cZ, dw, dx, ap)
710+ else $Tuple2(dA, dB)
711+ let dH = dC._1
712+ let dI = dC._2
713+ $Tuple7(dH, cZ, dI, da, dx, dy, aq)
712714 }
713715 else throw("Strict value is not equal to itself.")
714716 }
718720 }
719721
720722
721-func dI (az,aw,dJ,dK) = {
722- let dL = valueOrErrorMessage(getInteger(this, (((((aw + "_") + az) + "_") + dJ) + t)), "Unknown position")
723- let dM = getIntegerValue(this, (((((aw + "_") + az) + "_") + dJ) + x))
724- let dN = av(aw)
725- let dO = Address(fromBase58String(az))
726- let dP = getIntegerValue(this, (((((aw + "_") + az) + "_") + dJ) + u))
727- let ds = getStringValue(this, (((((aw + "_") + az) + "_") + dJ) + v))
728- let dQ = if ((dP > 0))
729- then $Tuple2({
730- let am = invoke(aG(), "getAssetDebt", [false, ((((aw + "_") + az) + "_") + dJ), ds], nil)
731- if ($isInstanceOf(am, "Int"))
732- then am
733- else throw(($getType(am) + " couldn't be cast to Int"))
734- }, getIntegerValue(this, (aw + A)))
735- else $Tuple2(0, getIntegerValue(this, (aw + B)))
736- let dr = dQ._1
737- let dR = dQ._2
738- let dq = (dL + fraction(dL, (dR - dM), k))
739- let dS = dp(aw, dq, dr, ds)
740- if ((dS == dS))
723+func dJ (aA,ax,dK,dL) = {
724+ let dM = valueOrErrorMessage(getInteger(this, (((((ax + "_") + aA) + "_") + dK) + t)), "Unknown position")
725+ let dN = getIntegerValue(this, (((((ax + "_") + aA) + "_") + dK) + y))
726+ let dO = if (dL)
727+ then getIntegerValue(this, (ax + B))
728+ else getIntegerValue(this, (ax + C))
729+ (dM + fraction(dM, (dO - dN), k))
730+ }
731+
732+
733+func dP (aA,ax,dK,dQ) = {
734+ let dM = valueOrErrorMessage(getInteger(this, (((((ax + "_") + aA) + "_") + dK) + t)), "Unknown position")
735+ let dN = getIntegerValue(this, (((((ax + "_") + aA) + "_") + dK) + y))
736+ let dR = getIntegerValue(this, (((((ax + "_") + aA) + "_") + dK) + v))
737+ let dr = dJ(aA, ax, dK, (dR > 0))
738+ let dS = aw(ax)
739+ let dT = Address(fromBase58String(aA))
740+ let dt = getStringValue(this, (((((ax + "_") + aA) + "_") + dK) + w))
741+ let ds = if ((dR > 0))
741742 then {
742- let ap = dS._7
743- let dx = dS._6
744- let dw = dS._5
745- let cZ = dS._4
746- let dH = dS._3
747- let cY = dS._2
748- let dG = dS._1
749- let dT = if ((dr > 0))
750- then invoke(aG(), "repayFor", [((az + "_") + dJ)], [AttachedPayment(aI(ds), dr)])
743+ let an = invoke(aH(), "getAssetDebt", [false, ((((ax + "_") + aA) + "_") + dK), dt], nil)
744+ if ($isInstanceOf(an, "Int"))
745+ then an
746+ else throw(($getType(an) + " couldn't be cast to Int"))
747+ }
748+ else 0
749+ let dU = dq(ax, dr, ds, dt)
750+ if ((dU == dU))
751+ then {
752+ let aq = dU._7
753+ let dy = dU._6
754+ let dx = dU._5
755+ let da = dU._4
756+ let dI = dU._3
757+ let cZ = dU._2
758+ let dH = dU._1
759+ let dV = if ((ds > 0))
760+ then invoke(aH(), "repayFor", [((aA + "_") + dK)], [AttachedPayment(aJ(dt), ds)])
751761 else 0
752- if ((dT == dT))
753- then ([DeleteEntry((((((aw + "_") + az) + "_") + dJ) + t)), DeleteEntry((((((aw + "_") + az) + "_") + dJ) + x)), IntegerEntry((aw + y), (dN - dq)), ScriptTransfer(dO, dG, aI(cY)), ScriptTransfer(dO, dH, aI(cZ))] ++ bm(cY, cZ, ap))
762+ if ((dV == dV))
763+ then ([DeleteEntry((((((ax + "_") + aA) + "_") + dK) + t)), DeleteEntry((((((ax + "_") + aA) + "_") + dK) + y)), IntegerEntry((ax + z), (dS - dr)), ScriptTransfer(dT, dH, aJ(cZ)), ScriptTransfer(dT, dI, aJ(da))] ++ bn(cZ, da, aq))
754764 else throw("Strict value is not equal to itself.")
755765 }
756766 else throw("Strict value is not equal to itself.")
757767 }
758768
759769
760-func dU (dV) = {
761- let dW = split(valueOrErrorMessage(getString(this, (dV + I)), ("No request with id " + dV)), ",")
762- let az = dW[0]
763- let aw = dW[1]
764- let bp = parseIntValue(dW[2])
765- let bU = dW[3]
766- let br = parseIntValue(dW[4])
767- let bV = dW[5]
768- let aq = parseIntValue(dW[6])
769- let ar = parseIntValue(dW[7])
770- let ap = dW[8]
771- let dX = dW[9]
772- let dY = parseIntValue(dW[10])
773- $Tuple11(az, aw, bp, bU, br, bV, aq, ar, ap, dX, dY)
770+func dW (dX) = {
771+ let dY = split(valueOrErrorMessage(getString(this, (dX + J)), ("No request with id " + dX)), ",")
772+ let aA = dY[0]
773+ let ax = dY[1]
774+ let bq = parseIntValue(dY[2])
775+ let bV = dY[3]
776+ let bs = parseIntValue(dY[4])
777+ let bW = dY[5]
778+ let ar = parseIntValue(dY[6])
779+ let as = parseIntValue(dY[7])
780+ let aq = dY[8]
781+ let dZ = dY[9]
782+ let ea = parseIntValue(dY[10])
783+ $Tuple11(aA, ax, bq, bV, bs, bW, ar, as, aq, dZ, ea)
774784 }
775785
776786
777-@Callable(ac)
778-func replenishEVALONLY (aw,dZ,ea) = if (if ((100 > dZ))
787+@Callable(ad)
788+func replenishEVALONLY (ax,eb,ec) = if (if ((100 > eb))
779789 then true
780- else (dZ > 300))
790+ else (eb > 300))
781791 then throw("Leverage can't be <100 and >300")
782792 else {
783- let ba = valueOrErrorMessage(getString(this, (K + aw)), "Pool is not inited")
784- let eb = as(Address(fromBase58String(aw)), ba)
785- let bU = eb._1
786- let bV = eb._2
787- let aq = eb._3
788- let ar = eb._4
789- let ap = eb._5
790- let ec = if ((size(ac.payments) == 2))
791- then if ((aH(ac.payments[0].assetId) != bU))
793+ let bb = valueOrErrorMessage(getString(this, (L + ax)), "Pool is not inited")
794+ let ed = at(Address(fromBase58String(ax)), bb)
795+ let bV = ed._1
796+ let bW = ed._2
797+ let ar = ed._3
798+ let as = ed._4
799+ let aq = ed._5
800+ let ee = if ((size(ad.payments) == 2))
801+ then if ((aI(ad.payments[0].assetId) != bV))
792802 then throw("Wrong payment asset A")
793- else if ((aH(ac.payments[1].assetId) != bV))
803+ else if ((aI(ad.payments[1].assetId) != bW))
794804 then throw("Wrong payment asset B")
795- else $Tuple4(ac.payments[0].amount, bU, ac.payments[1].amount, bV)
796- else if ((size(ac.payments) == 1))
797- then if ((aH(ac.payments[0].assetId) == bU))
798- then $Tuple4(ac.payments[0].amount, bU, 0, bV)
799- else if ((aH(ac.payments[0].assetId) == bV))
800- then $Tuple4(0, bU, ac.payments[0].amount, bV)
805+ else $Tuple4(ad.payments[0].amount, bV, ad.payments[1].amount, bW)
806+ else if ((size(ad.payments) == 1))
807+ then if ((aI(ad.payments[0].assetId) == bV))
808+ then $Tuple4(ad.payments[0].amount, bV, 0, bW)
809+ else if ((aI(ad.payments[0].assetId) == bW))
810+ then $Tuple4(0, bV, ad.payments[0].amount, bW)
801811 else throw("Wrong payment")
802812 else throw("One or two payments expected")
803- let bp = ec._1
804- let bq = ec._2
805- let br = ec._3
806- let bs = ec._4
807- let ed = if ((dZ > 100))
813+ let bq = ee._1
814+ let br = ee._2
815+ let bs = ee._3
816+ let bt = ee._4
817+ let ef = if ((eb > 100))
808818 then {
809- let be = ( let am = invoke(X, "getTWAP60", [bq, false], nil)
810- if ($isInstanceOf(am, "(Int, Int)"))
811- then am
812- else throw(($getType(am) + " couldn't be cast to (Int, Int)")))._2
813- let bf = ( let am = invoke(X, "getTWAP60", [bs, false], nil)
814- if ($isInstanceOf(am, "(Int, Int)"))
815- then am
816- else throw(($getType(am) + " couldn't be cast to (Int, Int)")))._2
817- let ee = (fraction(be, bp, pow(10, 0, aJ(bq), 0, 0, DOWN)) + fraction(bf, br, pow(10, 0, aJ(bs), 0, 0, DOWN)))
818- let dP = fraction(ee, (dZ - 100), 100)
819- let dW = makeString([toString(ac.caller), aw, toString(bp), bq, toString(br), bs, toString(aq), toString(ar), ap, ea, toString(dP), toString(1)], ",")
820- let ef = {
821- let am = invoke(this, "createNewRequest", [dW], nil)
822- if ($isInstanceOf(am, "Int"))
823- then am
824- else throw(($getType(am) + " couldn't be cast to Int"))
819+ let bf = ( let an = invoke(Y, "getTWAP60", [br, false], nil)
820+ if ($isInstanceOf(an, "(Int, Int)"))
821+ then an
822+ else throw(($getType(an) + " couldn't be cast to (Int, Int)")))._2
823+ let bg = ( let an = invoke(Y, "getTWAP60", [bt, false], nil)
824+ if ($isInstanceOf(an, "(Int, Int)"))
825+ then an
826+ else throw(($getType(an) + " couldn't be cast to (Int, Int)")))._2
827+ let eg = (fraction(bf, bq, pow(10, 0, aK(br), 0, 0, DOWN)) + fraction(bg, bs, pow(10, 0, aK(bt), 0, 0, DOWN)))
828+ let dR = fraction(eg, (eb - 100), 100)
829+ let dY = makeString([toString(ad.caller), ax, toString(bq), br, toString(bs), bt, toString(ar), toString(as), aq, ec, toString(dR), toString(1)], ",")
830+ let eh = {
831+ let an = invoke(this, "createNewRequest", [dY], nil)
832+ if ($isInstanceOf(an, "Int"))
833+ then an
834+ else throw(($getType(an) + " couldn't be cast to Int"))
825835 }
826- if ((ef == ef))
836+ if ((eh == eh))
827837 then {
828- let eg = [((toString(ac.caller) + "_") + toString(1)), ap, ea, dP, toString(this), "replenishFromLandEVALONLY", toString(valueOrErrorMessage(ef, "Can't create new request"))]
829- let ch = reentrantInvoke(aG(), "flashPosition", eg, nil)
830- if ((ch == ch))
831- then $Tuple2(getIntegerValue(this, "EVALONLY_STAKEDAMOUNT"), dP)
838+ let ei = [((toString(ad.caller) + "_") + toString(1)), aq, ec, dR, toString(this), "replenishFromLandEVALONLY", toString(valueOrErrorMessage(eh, "Can't create new request"))]
839+ let ci = reentrantInvoke(aH(), "flashPosition", ei, nil)
840+ if ((ci == ci))
841+ then $Tuple2(getIntegerValue(this, "EVALONLY_STAKEDAMOUNT"), dR)
832842 else throw("Strict value is not equal to itself.")
833843 }
834844 else throw("Strict value is not equal to itself.")
835845 }
836- else $Tuple2(bT(ba, aw, h, bp, bU, br, bV, aq, ar, ap)._1, 0)
837- let eh = ed._1
838- let dP = ed._2
839- let ei = dp(aw, eh, dP, ea)
840- if ((ei == ei))
846+ else $Tuple2(bU(bb, ax, h, bq, bV, bs, bW, ar, as, aq)._1, 0)
847+ let ej = ef._1
848+ let dR = ef._2
849+ let ek = dq(ax, ej, dR, ec)
850+ if ((ek == ek))
841851 then {
842- let ej = ei._6
843- let ek = ei._5
844- let cZ = ei._4
845- let dH = ei._3
846- let cY = ei._2
847- let dG = ei._1
848- let el = as(Address(fromBase58String(aw)), ba)
849- let em = el._1
850- let en = el._2
851- let eo = el._3
852- let ep = el._4
853- let eq = el._5
854- let er = fraction(ar, j, aq)
855- let es = fraction(ep, j, eo)
856- let et = (j - fraction(er, j, es))
857- let eu = if ((0 > et))
858- then (et * -1)
859- else et
860- $Tuple2(nil, [ek, ej, eu])
852+ let el = ek._6
853+ let em = ek._5
854+ let da = ek._4
855+ let dI = ek._3
856+ let cZ = ek._2
857+ let dH = ek._1
858+ let en = at(Address(fromBase58String(ax)), bb)
859+ let eo = en._1
860+ let ep = en._2
861+ let eq = en._3
862+ let er = en._4
863+ let es = en._5
864+ let et = fraction(as, j, ar)
865+ let eu = fraction(er, j, eq)
866+ let ev = (j - fraction(et, j, eu))
867+ let ew = if ((0 > ev))
868+ then (ev * -1)
869+ else ev
870+ $Tuple2(nil, [em, el, ew])
861871 }
862872 else throw("Strict value is not equal to itself.")
863873 }
864874
865875
866876
867-@Callable(ac)
868-func replenishFromLandEVALONLY (dV) = {
869- let ev = dU(dV)
870- let az = ev._1
871- let aw = ev._2
872- let bp = ev._3
873- let bU = ev._4
874- let br = ev._5
875- let bV = ev._6
876- let aq = ev._7
877- let ar = ev._8
878- let ap = ev._9
879- let dX = ev._10
880- let dY = ev._11
881- if ((size(ac.payments) != 1))
877+@Callable(ad)
878+func replenishFromLandEVALONLY (dX) = {
879+ let ex = dW(dX)
880+ let aA = ex._1
881+ let ax = ex._2
882+ let bq = ex._3
883+ let bV = ex._4
884+ let bs = ex._5
885+ let bW = ex._6
886+ let ar = ex._7
887+ let as = ex._8
888+ let aq = ex._9
889+ let dZ = ex._10
890+ let ea = ex._11
891+ if ((size(ad.payments) != 1))
882892 then throw("Wrong payment size")
883- else if (if ((aH(ac.payments[0].assetId) != dX))
893+ else if (if ((aI(ad.payments[0].assetId) != dZ))
884894 then true
885- else (ac.payments[0].amount != dY))
895+ else (ad.payments[0].amount != ea))
886896 then throw("Wrong payment")
887897 else {
888- let ew = if ((bU == dX))
889- then $Tuple2((bp + ac.payments[0].amount), br)
890- else $Tuple2(bp, (br + ac.payments[0].amount))
891- let ex = ew._1
892- let ey = ew._2
893- let ba = valueOrErrorMessage(getString(this, (K + aw)), "Unknown pool")
894- let ez = bT(ba, aw, g, bp, bU, br, bV, aq, ar, ap)
895- let eh = ez._1
896- let eA = ez._2
897- $Tuple2([IntegerEntry("EVALONLY_STAKEDAMOUNT", eh)], eh)
898+ let ey = if ((bV == dZ))
899+ then $Tuple2((bq + ad.payments[0].amount), bs)
900+ else $Tuple2(bq, (bs + ad.payments[0].amount))
901+ let ez = ey._1
902+ let eA = ey._2
903+ let bb = valueOrErrorMessage(getString(this, (L + ax)), "Unknown pool")
904+ let eB = bU(bb, ax, g, bq, bV, bs, bW, ar, as, aq)
905+ let ej = eB._1
906+ let eC = eB._2
907+ $Tuple2([IntegerEntry("EVALONLY_STAKEDAMOUNT", ej)], ej)
898908 }
899909 }
900910
901911
902912
903-@Callable(ac)
904-func replenish (aw,dZ,ea) = if (if ((100 > dZ))
913+@Callable(ad)
914+func getShareAssetPriceREADONLY (aq) = {
915+ let eD = aZ([aq])
916+ $Tuple2(nil, eD[0])
917+ }
918+
919+
920+
921+@Callable(ad)
922+func getUserPositionShareAmount (aA,bZ) = {
923+ let ax = valueOrErrorMessage(getString(this, (((aA + "_") + bZ) + u)), "Unknown position")
924+ let dR = getIntegerValue(this, (((((ax + "_") + aA) + "_") + bZ) + v))
925+ let dr = dJ(aA, ax, bZ, (dR > 0))
926+ $Tuple2(nil, dr)
927+ }
928+
929+
930+
931+@Callable(ad)
932+func replenish (ax,eb,ec) = if (if ((100 > eb))
905933 then true
906- else (dZ > 300))
934+ else (eb > 300))
907935 then throw("Leverage can't be <100 and >300")
908936 else {
909- let ba = valueOrErrorMessage(getString(this, (K + aw)), "Pool is not inited")
910- let eB = as(Address(fromBase58String(aw)), ba)
911- let bU = eB._1
912- let bV = eB._2
913- let aq = eB._3
914- let ar = eB._4
915- let ap = eB._5
916- let eC = if ((size(ac.payments) == 2))
917- then if ((aH(ac.payments[0].assetId) != bU))
937+ let bb = valueOrErrorMessage(getString(this, (L + ax)), "Pool is not inited")
938+ let eE = at(Address(fromBase58String(ax)), bb)
939+ let bV = eE._1
940+ let bW = eE._2
941+ let ar = eE._3
942+ let as = eE._4
943+ let aq = eE._5
944+ let eF = if ((size(ad.payments) == 2))
945+ then if ((aI(ad.payments[0].assetId) != bV))
918946 then throw("Wrong payment asset A")
919- else if ((aH(ac.payments[1].assetId) != bV))
947+ else if ((aI(ad.payments[1].assetId) != bW))
920948 then throw("Wrong payment asset B")
921- else $Tuple4(ac.payments[0].amount, bU, ac.payments[1].amount, bV)
922- else if ((size(ac.payments) == 1))
923- then if ((aH(ac.payments[0].assetId) == bU))
924- then $Tuple4(ac.payments[0].amount, bU, 0, bV)
925- else if ((aH(ac.payments[0].assetId) == bV))
926- then $Tuple4(0, bU, ac.payments[0].amount, bV)
949+ else $Tuple4(ad.payments[0].amount, bV, ad.payments[1].amount, bW)
950+ else if ((size(ad.payments) == 1))
951+ then if ((aI(ad.payments[0].assetId) == bV))
952+ then $Tuple4(ad.payments[0].amount, bV, 0, bW)
953+ else if ((aI(ad.payments[0].assetId) == bW))
954+ then $Tuple4(0, bV, ad.payments[0].amount, bW)
927955 else throw("Wrong payment")
928956 else throw("One or two payments expected")
929- let bp = eC._1
930- let bq = eC._2
931- let br = eC._3
932- let bs = eC._4
933- let eD = ay(aw, toString(ac.caller))
934- if ((dZ > 100))
957+ let bq = eF._1
958+ let br = eF._2
959+ let bs = eF._3
960+ let bt = eF._4
961+ let eG = az(ax, toString(ad.caller))
962+ if ((eb > 100))
935963 then {
936- let be = ( let am = invoke(X, "getTWAP60", [bq, false], nil)
937- if ($isInstanceOf(am, "(Int, Int)"))
938- then am
939- else throw(($getType(am) + " couldn't be cast to (Int, Int)")))._2
940- let bf = ( let am = invoke(X, "getTWAP60", [bs, false], nil)
941- if ($isInstanceOf(am, "(Int, Int)"))
942- then am
943- else throw(($getType(am) + " couldn't be cast to (Int, Int)")))._2
944- let ee = (fraction(be, bp, pow(10, 0, aJ(bq), 0, 0, DOWN)) + fraction(bf, br, pow(10, 0, aJ(bs), 0, 0, DOWN)))
945- let dP = fraction(ee, (dZ - 100), 100)
946- let dW = makeString([toString(ac.caller), aw, toString(bp), bq, toString(br), bs, toString(aq), toString(ar), ap, ea, toString(dP)], ",")
947- let ef = {
948- let am = invoke(this, "createNewRequest", [dW], nil)
949- if ($isInstanceOf(am, "Int"))
950- then am
951- else throw(($getType(am) + " couldn't be cast to Int"))
964+ let bf = ( let an = invoke(Y, "getTWAP60", [br, false], nil)
965+ if ($isInstanceOf(an, "(Int, Int)"))
966+ then an
967+ else throw(($getType(an) + " couldn't be cast to (Int, Int)")))._2
968+ let bg = ( let an = invoke(Y, "getTWAP60", [bt, false], nil)
969+ if ($isInstanceOf(an, "(Int, Int)"))
970+ then an
971+ else throw(($getType(an) + " couldn't be cast to (Int, Int)")))._2
972+ let eg = (fraction(bf, bq, pow(10, 0, aK(br), 0, 0, DOWN)) + fraction(bg, bs, pow(10, 0, aK(bt), 0, 0, DOWN)))
973+ let dR = fraction(eg, (eb - 100), 100)
974+ let dY = makeString([toString(ad.caller), ax, toString(bq), br, toString(bs), bt, toString(ar), toString(as), aq, ec, toString(dR)], ",")
975+ let eh = {
976+ let an = invoke(this, "createNewRequest", [dY], nil)
977+ if ($isInstanceOf(an, "Int"))
978+ then an
979+ else throw(($getType(an) + " couldn't be cast to Int"))
952980 }
953- if ((ef == ef))
981+ if ((eh == eh))
954982 then {
955- let eg = [((toString(ac.caller) + "_") + toString(eD)), ap, ea, dP, toString(this), "replenishFromLand", toString(valueOrErrorMessage(ef, "Can't create new request"))]
956- let ch = reentrantInvoke(aG(), "flashPosition", eg, nil)
957- if ((ch == ch))
983+ let ei = [((toString(ad.caller) + "_") + toString(eG)), aq, ec, dR, toString(this), "replenishFromLand", toString(valueOrErrorMessage(eh, "Can't create new request"))]
984+ let ci = reentrantInvoke(aH(), "flashPosition", ei, nil)
985+ if ((ci == ci))
958986 then nil
959987 else throw("Strict value is not equal to itself.")
960988 }
961989 else throw("Strict value is not equal to itself.")
962990 }
963991 else {
964- let eE = bT(ba, aw, h, bp, bU, br, bV, aq, ar, ap)
965- let eh = eE._1
966- let eA = eE._2
967- (bW(aw, toString(ac.caller), eh, eA, eD, ap, ba, false) ++ bm(bU, bV, ap))
992+ let eH = bU(bb, ax, h, bq, bV, bs, bW, ar, as, aq)
993+ let ej = eH._1
994+ let eC = eH._2
995+ (bX(ax, toString(ad.caller), ej, eC, eG, aq, bb, false) ++ bn(bV, bW, aq))
968996 }
969997 }
970998
971999
9721000
973-@Callable(ac)
974-func replenishFromLand (dV) = {
975- let eF = dU(dV)
976- let az = eF._1
977- let aw = eF._2
978- let bp = eF._3
979- let bU = eF._4
980- let br = eF._5
981- let bV = eF._6
982- let aq = eF._7
983- let ar = eF._8
984- let ap = eF._9
985- let dX = eF._10
986- let dY = eF._11
987- if ((size(ac.payments) != 1))
1001+@Callable(ad)
1002+func replenishFromLand (dX) = {
1003+ let eI = dW(dX)
1004+ let aA = eI._1
1005+ let ax = eI._2
1006+ let bq = eI._3
1007+ let bV = eI._4
1008+ let bs = eI._5
1009+ let bW = eI._6
1010+ let ar = eI._7
1011+ let as = eI._8
1012+ let aq = eI._9
1013+ let dZ = eI._10
1014+ let ea = eI._11
1015+ if ((size(ad.payments) != 1))
9881016 then throw("Wrong payment size")
989- else if (if ((aH(ac.payments[0].assetId) != dX))
1017+ else if (if ((aI(ad.payments[0].assetId) != dZ))
9901018 then true
991- else (ac.payments[0].amount != dY))
1019+ else (ad.payments[0].amount != ea))
9921020 then throw("Wrong payment")
9931021 else {
994- let eG = if ((bU == dX))
995- then $Tuple2((bp + ac.payments[0].amount), br)
996- else $Tuple2(bp, (br + ac.payments[0].amount))
997- let ex = eG._1
998- let ey = eG._2
999- let ba = valueOrErrorMessage(getString(this, (K + aw)), "Unknown pool")
1000- let eH = bT(ba, aw, g, bp, bU, br, bV, aq, ar, ap)
1001- let eh = eH._1
1002- let eA = eH._2
1003- let bY = ay(aw, toString(ac.caller))
1004- let eI = [IntegerEntry((((((aw + "_") + az) + "_") + toString(bY)) + u), dY), StringEntry((((((aw + "_") + az) + "_") + toString(bY)) + v), dX)]
1005- let eJ = bW(aw, az, eh, eA, bY, ap, ba, true)
1006- $Tuple2((((eJ ++ bm(bU, bV, ap)) ++ eI) :+ DeleteEntry((dV + I))), eh)
1022+ let eJ = if ((bV == dZ))
1023+ then $Tuple2((bq + ad.payments[0].amount), bs)
1024+ else $Tuple2(bq, (bs + ad.payments[0].amount))
1025+ let ez = eJ._1
1026+ let eA = eJ._2
1027+ let bb = valueOrErrorMessage(getString(this, (L + ax)), "Unknown pool")
1028+ let eK = bU(bb, ax, g, bq, bV, bs, bW, ar, as, aq)
1029+ let ej = eK._1
1030+ let eC = eK._2
1031+ let bZ = az(ax, toString(ad.caller))
1032+ let eL = [IntegerEntry((((((ax + "_") + aA) + "_") + toString(bZ)) + v), ea), StringEntry((((((ax + "_") + aA) + "_") + toString(bZ)) + w), dZ)]
1033+ let eM = bX(ax, aA, ej, eC, bZ, aq, bb, true)
1034+ $Tuple2((((eM ++ bn(bV, bW, aq)) ++ eL) :+ DeleteEntry((dX + J))), ej)
10071035 }
10081036 }
10091037
10101038
10111039
1012-@Callable(ac)
1013-func withdraw (aw,dJ) = dI(toString(ac.caller), aw, toString(dJ), false)
1040+@Callable(ad)
1041+func withdraw (ax,dK) = dP(toString(ad.caller), ax, toString(dK), false)
10141042
10151043
10161044
1017-@Callable(ac)
1018-func createUpdateStopLoss (dJ,eK,ae,eL) = {
1019- let eM = ( let am = invoke(X, "getTWAP60", [ae, false], nil)
1020- if ($isInstanceOf(am, "(Int, Int)"))
1021- then am
1022- else throw(($getType(am) + " couldn't be cast to (Int, Int)")))._1
1023- if (!(isDefined(getInteger(this, (((((eK + "_") + toString(ac.caller)) + "_") + toString(dJ)) + t)))))
1045+@Callable(ad)
1046+func createUpdateStopLoss (dK,eN,af,eO) = {
1047+ let eP = ( let an = invoke(Y, "getTWAP60", [af, false], nil)
1048+ if ($isInstanceOf(an, "(Int, Int)"))
1049+ then an
1050+ else throw(($getType(an) + " couldn't be cast to (Int, Int)")))._1
1051+ if (!(isDefined(getInteger(this, (((((eN + "_") + toString(ad.caller)) + "_") + toString(dK)) + t)))))
10241052 then throw("There are no user position")
1025- else if ((0 >= eL))
1053+ else if ((0 >= eO))
10261054 then throw("Price must be greater than 0")
1027- else if ((eL > eM))
1055+ else if ((eO > eP))
10281056 then throw("Price must be less than current token price")
1029- else [IntegerEntry((((((((toString(ac.caller) + "_") + toString(dJ)) + "_") + eK) + "_") + ae) + O), eL)]
1057+ else [IntegerEntry((((((((toString(ad.caller) + "_") + toString(dK)) + "_") + eN) + "_") + af) + P), eO)]
10301058 }
10311059
10321060
10331061
1034-@Callable(ac)
1035-func deleteStopLoss (dJ,eK,ae) = if (!(isDefined(getInteger(this, (((((((toString(ac.caller) + "_") + toString(dJ)) + "_") + eK) + "_") + ae) + O)))))
1062+@Callable(ad)
1063+func deleteStopLoss (dK,eN,af) = if (!(isDefined(getInteger(this, (((((((toString(ad.caller) + "_") + toString(dK)) + "_") + eN) + "_") + af) + P)))))
10361064 then throw("No entry")
1037- else [DeleteEntry((((((((toString(ac.caller) + "_") + toString(dJ)) + "_") + eK) + "_") + ae) + O))]
1065+ else [DeleteEntry((((((((toString(ad.caller) + "_") + toString(dK)) + "_") + eN) + "_") + af) + P))]
10381066
10391067
10401068
1041-@Callable(ac)
1042-func createNewRequest (eN) = valueOrElse(ab(ac), {
1043- let ef = (valueOrElse(getInteger(this, J), 0) + 1)
1044- $Tuple2([StringEntry((toString(ef) + I), eN), IntegerEntry(J, ef)], ef)
1069+@Callable(ad)
1070+func createNewRequest (eQ) = valueOrElse(ac(ad), {
1071+ let eh = (valueOrElse(getInteger(this, K), 0) + 1)
1072+ $Tuple2([StringEntry((toString(eh) + J), eQ), IntegerEntry(K, eh)], eh)
10451073 })
10461074
10471075
10481076
1049-@Callable(ac)
1050-func stopLoss (az,dJ,aw,ae) = {
1051- let eM = ( let am = invoke(X, "getTWAP60", [ae, false], nil)
1052- if ($isInstanceOf(am, "(Int, Int)"))
1053- then am
1054- else throw(($getType(am) + " couldn't be cast to (Int, Int)")))._1
1055- if (!(isDefined(getInteger(this, (((((((az + "_") + toString(dJ)) + "_") + aw) + "_") + ae) + O)))))
1077+@Callable(ad)
1078+func stopLoss (aA,dK,ax,af) = {
1079+ let eP = ( let an = invoke(Y, "getTWAP60", [af, false], nil)
1080+ if ($isInstanceOf(an, "(Int, Int)"))
1081+ then an
1082+ else throw(($getType(an) + " couldn't be cast to (Int, Int)")))._1
1083+ if (!(isDefined(getInteger(this, (((((((aA + "_") + toString(dK)) + "_") + ax) + "_") + af) + P)))))
10561084 then throw("No entry")
1057- else (dI(toString(ac.caller), aw, toString(dJ), true) :+ DeleteEntry((((((((az + "_") + toString(dJ)) + "_") + aw) + "_") + ae) + O)))
1085+ else (dP(toString(ad.caller), ax, toString(dK), true) :+ DeleteEntry((((((((aA + "_") + toString(dK)) + "_") + ax) + "_") + af) + P)))
10581086 }
10591087
10601088
10611089
1062-@Callable(ac)
1063-func liquidate (az,dJ,aw,eO) = {
1064- let ba = valueOrErrorMessage(getString(this, (K + aw)), "Pool is not inited")
1065- let eP = as(Address(fromBase58String(aw)), ba)
1066- let bU = eP._1
1067- let bV = eP._2
1068- let aq = eP._3
1069- let ar = eP._4
1070- let ap = eP._5
1071- let dL = valueOrErrorMessage(getInteger(this, (((((aw + "_") + az) + "_") + toString(dJ)) + t)), "Unknown position")
1072- let dM = getIntegerValue(this, (((((aw + "_") + az) + "_") + toString(dJ)) + x))
1073- let dN = av(aw)
1074- let dO = Address(fromBase58String(az))
1075- let dP = getIntegerValue(this, (((((aw + "_") + az) + "_") + toString(dJ)) + u))
1076- let ds = getStringValue(this, (((((aw + "_") + az) + "_") + toString(dJ)) + v))
1077- let eQ = if ((dP > 0))
1090+@Callable(ad)
1091+func liquidate (aA,dK,ax,eR) = {
1092+ let bb = valueOrErrorMessage(getString(this, (L + ax)), "Pool is not inited")
1093+ let eS = at(Address(fromBase58String(ax)), bb)
1094+ let bV = eS._1
1095+ let bW = eS._2
1096+ let ar = eS._3
1097+ let as = eS._4
1098+ let aq = eS._5
1099+ let dM = valueOrErrorMessage(getInteger(this, (((((ax + "_") + aA) + "_") + toString(dK)) + t)), "Unknown position")
1100+ let dN = getIntegerValue(this, (((((ax + "_") + aA) + "_") + toString(dK)) + y))
1101+ let dS = aw(ax)
1102+ let dT = Address(fromBase58String(aA))
1103+ let dR = getIntegerValue(this, (((((ax + "_") + aA) + "_") + toString(dK)) + v))
1104+ let dt = getStringValue(this, (((((ax + "_") + aA) + "_") + toString(dK)) + w))
1105+ let eT = if ((dR > 0))
10781106 then $Tuple2({
1079- let am = invoke(aG(), "getAssetDebt", [false, ((((aw + "_") + az) + "_") + toString(dJ)), ds], nil)
1080- if ($isInstanceOf(am, "Int"))
1081- then am
1082- else throw(($getType(am) + " couldn't be cast to Int"))
1083- }, getIntegerValue(this, (aw + A)))
1084- else $Tuple2(0, getIntegerValue(this, (aw + B)))
1085- let dr = eQ._1
1086- let dR = eQ._2
1087- let dq = (dL + fraction(dL, (dR - dM), k))
1088- let bl = aY([ap])[0]
1089- let eR = aM([ds])[0]
1090- let eS = fraction(dq, bl, aJ(ap))
1091- let eT = fraction(dP, eR, aL(ds))
1092- let eU = (eS - eT)
1107+ let an = invoke(aH(), "getAssetDebt", [false, ((((ax + "_") + aA) + "_") + toString(dK)), dt], nil)
1108+ if ($isInstanceOf(an, "Int"))
1109+ then an
1110+ else throw(($getType(an) + " couldn't be cast to Int"))
1111+ }, getIntegerValue(this, (ax + B)))
1112+ else $Tuple2(0, getIntegerValue(this, (ax + C)))
1113+ let ds = eT._1
1114+ let dO = eT._2
1115+ let dr = (dM + fraction(dM, (dO - dN), k))
1116+ let bm = aZ([aq])[0]
1117+ let eU = aN([dt])[0]
1118+ let eV = fraction(dr, bm, aK(aq))
1119+ let eW = fraction(dR, eU, aM(dt))
1120+ let eX = (eV - eW)
10931121 nil
10941122 }
10951123
10961124
10971125
1098-@Callable(ac)
1099-func capitalizeExKeeper (aw,at,eV,eW,eX,cn,co,cp,cq,cr,cs,ct) = {
1100- let eY = if (eX)
1101- then cf(at, aw)
1126+@Callable(ad)
1127+func capitalizeExKeeper (ax,au,eY,eZ,fa,co,cp,cq,cr,cs,ct,cu) = {
1128+ let fb = if (fa)
1129+ then cg(au, ax)
11021130 else {
1103- let eZ = if ((at == a))
1104- then Z
1105- else aa
1106- $Tuple2(eW, eZ)
1131+ let fc = if ((au == a))
1132+ then aa
1133+ else ab
1134+ $Tuple2(eZ, fc)
11071135 }
1108- let fa = eY._1
1109- let eZ = eY._2
1110- let fb = cj(eV, eW, eZ, cn, co, cp, cq, cr, cs, ct)
1111- let bA = (fa - eW)
1112- let fc = if ((bA > 0))
1113- then [IntegerEntry((aw + M), (bA + valueOrElse(getInteger(this, (aw + M)), 0)))]
1136+ let fd = fb._1
1137+ let fc = fb._2
1138+ let fe = ck(eY, eZ, fc, co, cp, cq, cr, cs, ct, cu)
1139+ let bB = (fd - eZ)
1140+ let ff = if ((bB > 0))
1141+ then [IntegerEntry((ax + N), (bB + valueOrElse(getInteger(this, (ax + N)), 0)))]
11141142 else nil
1115- (cF(aw, at, eV, fb) ++ fc)
1143+ (cG(ax, au, eY, fe) ++ ff)
11161144 }
11171145
11181146
11191147
1120-@Callable(ac)
1121-func capitalizeExPuzzle (aw,at,eV,eW,eX,cw,cx,ct) = {
1122- let fd = if (eX)
1123- then cf(at, aw)
1148+@Callable(ad)
1149+func capitalizeExPuzzle (ax,au,eY,eZ,fa,cx,cy,cu) = {
1150+ let fg = if (fa)
1151+ then cg(au, ax)
11241152 else {
1125- let eZ = if ((at == a))
1126- then Z
1127- else aa
1128- $Tuple2(eW, eZ)
1153+ let fc = if ((au == a))
1154+ then aa
1155+ else ab
1156+ $Tuple2(eZ, fc)
11291157 }
1130- let fa = fd._1
1131- let eZ = fd._2
1132- let fb = cv(eV, eW, eZ, cw, cx, ct)
1133- let bA = (fa - eW)
1134- let fc = if ((bA > 0))
1135- then [IntegerEntry((aw + M), (bA + valueOrElse(getInteger(this, (aw + M)), 0)))]
1158+ let fd = fg._1
1159+ let fc = fg._2
1160+ let fe = cw(eY, eZ, fc, cx, cy, cu)
1161+ let bB = (fd - eZ)
1162+ let ff = if ((bB > 0))
1163+ then [IntegerEntry((ax + N), (bB + valueOrElse(getInteger(this, (ax + N)), 0)))]
11361164 else nil
1137- (cF(aw, at, eV, fb) ++ fc)
1165+ (cG(ax, au, eY, fe) ++ ff)
11381166 }
11391167
11401168
11411169
1142-@Callable(ac)
1143-func capitalizeExSwopFi (aw,at,eV,eW,eX,cz,cA,cB,cC,cD,cE,ct) = {
1144- let fe = if (eX)
1145- then cf(at, aw)
1170+@Callable(ad)
1171+func capitalizeExSwopFi (ax,au,eY,eZ,fa,cA,cB,cC,cD,cE,cF,cu) = {
1172+ let fh = if (fa)
1173+ then cg(au, ax)
11461174 else {
1147- let eZ = if ((at == a))
1148- then Z
1149- else aa
1150- $Tuple2(eW, eZ)
1175+ let fc = if ((au == a))
1176+ then aa
1177+ else ab
1178+ $Tuple2(eZ, fc)
11511179 }
1152- let fa = fe._1
1153- let eZ = fe._2
1154- let fb = cy(eV, eW, eZ, cz, cA, cB, cC, cD, cE, ct)
1155- let bA = (fa - eW)
1156- let fc = if ((bA > 0))
1157- then [IntegerEntry((aw + M), (bA + valueOrElse(getInteger(this, (aw + M)), 0)))]
1180+ let fd = fh._1
1181+ let fc = fh._2
1182+ let fe = cz(eY, eZ, fc, cA, cB, cC, cD, cE, cF, cu)
1183+ let bB = (fd - eZ)
1184+ let ff = if ((bB > 0))
1185+ then [IntegerEntry((ax + N), (bB + valueOrElse(getInteger(this, (ax + N)), 0)))]
11581186 else nil
1159- (cF(aw, at, eV, fb) ++ fc)
1187+ (cG(ax, au, eY, fe) ++ ff)
11601188 }
11611189
11621190
11631191
1164-@Callable(ac)
1165-func initNewPool (at,aj,ff,fg,fh,fi,fj,fk) = if (if ((at != a))
1166- then (at != b)
1192+@Callable(ad)
1193+func initNewPool (au,ak,fi,fj,fk,fl,fm,fn) = if (if ((au != a))
1194+ then (au != b)
11671195 else false)
11681196 then throw("Wrong type")
11691197 else {
1170- let fl = as(Address(fromBase58String(aj)), at)
1171- let an = fl._1
1172- let ao = fl._2
1173- let fm = fl._3
1174- let fn = fl._4
1175- let ap = fl._5
1176-[IntegerEntry((aj + C), ff), IntegerEntry((aj + D), fg), IntegerEntry((aj + E), fh), IntegerEntry((aj + F), fi), IntegerEntry((aj + G), fj), IntegerEntry((aj + H), fk), IntegerEntry((aj + A), 0), IntegerEntry((aj + B), 0), StringEntry((K + aj), at), StringEntry((ap + L), aj)]
1198+ let fo = at(Address(fromBase58String(ak)), au)
1199+ let ao = fo._1
1200+ let ap = fo._2
1201+ let fp = fo._3
1202+ let fq = fo._4
1203+ let aq = fo._5
1204+[IntegerEntry((ak + D), fi), IntegerEntry((ak + E), fj), IntegerEntry((ak + F), fk), IntegerEntry((ak + G), fl), IntegerEntry((ak + H), fm), IntegerEntry((ak + I), fn), IntegerEntry((ak + B), 0), IntegerEntry((ak + C), 0), StringEntry((L + ak), au), StringEntry((aq + M), ak)]
11771205 }
11781206
11791207
11801208
1181-@Callable(ac)
1182-func capitalizeTest (aw,ba,cG,cH) = {
1183- let aj = Address(fromBase58String(aw))
1184- let fo = as(aj, ba)
1185- let bU = fo._1
1186- let bV = fo._2
1187- let aq = fo._3
1188- let ar = fo._4
1189- let ap = fo._5
1190- let fp = if ((cG == bU))
1191- then $Tuple2(cH, 0)
1192- else $Tuple2(0, cH)
1193- let bp = fp._1
1194- let br = fp._2
1195- let fq = bT(ba, aw, i, bp, bU, br, bV, aq, ar, ap)
1196- let bX = fq._1
1197- let cL = fq._2
1198- let cM = valueOrElse(getInteger(this, (aw + A)), 0)
1199- let cN = valueOrElse(getInteger(this, (aw + B)), 0)
1200- let cO = av(aw)
1201- let cP = ax(aw)
1202- let cQ = fraction(cP, j, cO)
1203- let cR = fraction(bX, cQ, j)
1204- let cS = (bX - cR)
1205- let cT = (cM + fraction(cR, k, cP))
1206- let cU = (cN + fraction(cS, k, (cO - cP)))
1207- let cV = fraction(cR, aA(aw, d), l)
1208- let cW = fraction(cS, aA(aw, c), l)
1209- ([IntegerEntry((aw + A), cT), IntegerEntry((aw + B), cU), IntegerEntry((aw + y), (((cO + bX) - cV) - cW)), IntegerEntry((aw + z), ((cP + cR) - cV)), ScriptTransfer(V, (cV + cW), fromBase58String(ap))] ++ bm(bU, bV, ap))
1209+@Callable(ad)
1210+func capitalizeTest (ax,bb,cH,cI) = {
1211+ let ak = Address(fromBase58String(ax))
1212+ let fr = at(ak, bb)
1213+ let bV = fr._1
1214+ let bW = fr._2
1215+ let ar = fr._3
1216+ let as = fr._4
1217+ let aq = fr._5
1218+ let fs = if ((cH == bV))
1219+ then $Tuple2(cI, 0)
1220+ else $Tuple2(0, cI)
1221+ let bq = fs._1
1222+ let bs = fs._2
1223+ let ft = bU(bb, ax, i, bq, bV, bs, bW, ar, as, aq)
1224+ let bY = ft._1
1225+ let cM = ft._2
1226+ let cN = valueOrElse(getInteger(this, (ax + B)), 0)
1227+ let cO = valueOrElse(getInteger(this, (ax + C)), 0)
1228+ let cP = aw(ax)
1229+ let cQ = ay(ax)
1230+ let cR = fraction(cQ, j, cP)
1231+ let cS = fraction(bY, cR, j)
1232+ let cT = (bY - cS)
1233+ let cU = (cN + fraction(cS, k, cQ))
1234+ let cV = (cO + fraction(cT, k, (cP - cQ)))
1235+ let cW = fraction(cS, aB(ax, d), l)
1236+ let cX = fraction(cT, aB(ax, c), l)
1237+ ([IntegerEntry((ax + B), cU), IntegerEntry((ax + C), cV), IntegerEntry((ax + z), (((cP + bY) - cW) - cX)), IntegerEntry((ax + A), ((cQ + cS) - cW)), ScriptTransfer(W, (cW + cX), fromBase58String(aq))] ++ bn(bV, bW, aq))
12101238 }
12111239
12121240
12131241
1214-@Callable(ac)
1215-func claimFarmedTest (at,aw) = if ((at == a))
1242+@Callable(ad)
1243+func claimFarmedTest (au,ax) = if ((au == a))
12161244 then {
1217- let cg = ad(Z)
1218- if ((cg == cg))
1245+ let ch = ae(aa)
1246+ if ((ch == ch))
12191247 then {
1220- let ch = invoke(aC(), "claim", [aw], nil)
1221- if ((ch == ch))
1248+ let ci = invoke(aD(), "claim", [ax], nil)
1249+ if ((ci == ci))
12221250 then {
1223- let ci = ad(Z)
1224- $Tuple2(nil, $Tuple2((ci - cg), Z))
1251+ let cj = ae(aa)
1252+ $Tuple2(nil, $Tuple2((cj - ch), aa))
12251253 }
12261254 else throw("Strict value is not equal to itself.")
12271255 }
12281256 else throw("Strict value is not equal to itself.")
12291257 }
1230- else if ((at == b))
1258+ else if ((au == b))
12311259 then {
1232- let cg = ad(aa)
1233- if ((cg == cg))
1260+ let ch = ae(ab)
1261+ if ((ch == ch))
12341262 then {
1235- let ch = invoke(aD(Address(fromBase58String(aw))), "claimWX", [aw], nil)
1236- if ((ch == ch))
1263+ let ci = invoke(aE(Address(fromBase58String(ax))), "claimWX", [ax], nil)
1264+ if ((ci == ci))
12371265 then {
1238- let ci = ad(aa)
1239- $Tuple2(nil, $Tuple2((ci - cg), aa))
1266+ let cj = ae(ab)
1267+ $Tuple2(nil, $Tuple2((cj - ch), ab))
12401268 }
12411269 else throw("Strict value is not equal to itself.")
12421270 }
12451273 else throw("Wrong pool type")
12461274
12471275
1248-@Verifier(fr)
1249-func fs () = sigVerify(fr.bodyBytes, fr.proofs[0], fr.senderPublicKey)
1276+@Verifier(fu)
1277+func fv () = sigVerify(fu.bodyBytes, fu.proofs[0], fu.senderPublicKey)
12501278
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 = "capNoLoan"
99
1010 let d = "capLoan"
1111
1212 let e = "capNoLoan"
1313
1414 let f = "capLoan"
1515
1616 let g = "loan"
1717
1818 let h = "noLoan"
1919
2020 let i = "noFee"
2121
2222 let j = 100000000
2323
2424 let k = 10000000000
2525
2626 let l = 1000000
2727
2828 let m = "A_asset_balance"
2929
3030 let n = "B_asset_balance"
3131
3232 let o = "A_asset_id"
3333
3434 let p = "B_asset_id"
3535
3636 let q = "share_asset_id"
3737
3838 let r = "share_asset_supply"
3939
4040 let s = "commission"
4141
4242 let t = "_user_position"
4343
44-let u = "_user_position_borrow_amount"
44+let u = "_user_position_pool"
4545
46-let v = "_user_position_borrow_asset_id"
46+let v = "_user_position_borrow_amount"
4747
48-let w = "_user_position_number"
48+let w = "_user_position_borrow_asset_id"
4949
50-let x = "_user_position_interest"
50+let x = "_user_position_number"
5151
52-let y = "_pool_total"
52+let y = "_user_position_interest"
5353
54-let z = "_pool_total_loan"
54+let z = "_pool_total"
5555
56-let A = "_pool_interest_loan"
56+let A = "_pool_total_loan"
5757
58-let B = "_pool_interest_no_loan"
58+let B = "_pool_interest_loan"
5959
60-let C = "_axly_fee_without_loan"
60+let C = "_pool_interest_no_loan"
6161
62-let D = "_axly_fee_with_loan"
62+let D = "_axly_fee_without_loan"
6363
64-let E = "_axly_fee_cap_with_loan"
64+let E = "_axly_fee_with_loan"
6565
66-let F = "_axly_fee_cap_no_loan"
66+let F = "_axly_fee_cap_with_loan"
6767
68-let G = "_axly_fee_stoploss_with_loan"
68+let G = "_axly_fee_cap_no_loan"
6969
70-let H = "_axly_fee_stoploss_no_loan"
70+let H = "_axly_fee_stoploss_with_loan"
7171
72-let I = "_request_id"
72+let I = "_axly_fee_stoploss_no_loan"
7373
74-let J = "requests_iter"
74+let J = "_request_id"
7575
76-let K = "pool_"
76+let K = "requests_iter"
7777
78-let L = "_pool_share_id"
78+let L = "pool_"
7979
80-let M = "_pool_cap_change"
80+let M = "_pool_share_id"
8181
82-let N = "_last_price"
82+let N = "_pool_cap_change"
8383
84-let O = "_stop_loss"
84+let O = "_last_price"
8585
86-let P = "axly_money_box"
86+let P = "_stop_loss"
8787
88-let Q = "swopfi_farming_addr"
88+let Q = "axly_money_box"
8989
90-let R = "lend_service_addr"
90+let R = "swopfi_farming_addr"
9191
92-let S = "price_oracle"
92+let S = "lend_service_addr"
9393
94-let T = "exchange_contract"
94+let T = "price_oracle"
9595
96-let U = "wx_swap_contract"
96+let U = "exchange_contract"
9797
98-let V = Address(fromBase58String(valueOrErrorMessage(getString(this, P), "No axly moneyBox address")))
98+let V = "wx_swap_contract"
9999
100-let W = Address(fromBase58String(valueOrErrorMessage(getString(this, T), "No exchange contract address")))
100+let W = Address(fromBase58String(valueOrErrorMessage(getString(this, Q), "No axly moneyBox address")))
101101
102-let X = Address(fromBase58String(valueOrErrorMessage(getString(this, S), "No price oracle address")))
102+let X = Address(fromBase58String(valueOrErrorMessage(getString(this, U), "No exchange contract address")))
103103
104-let Y = Address(fromBase58String(valueOrErrorMessage(getString(this, U), "No wx swap address")))
104+let Y = Address(fromBase58String(valueOrErrorMessage(getString(this, T), "No price oracle address")))
105105
106-let Z = base58'4W19ndijcc2CsQa9HGW2dfXKTVXhnneWWttxXrtjPmEp'
106+let Z = Address(fromBase58String(valueOrErrorMessage(getString(this, V), "No wx swap address")))
107107
108-let aa = base58'EMAMLxDnv3xiz8RXg8Btj33jcEw3wLczL3JKYYmuubpc'
108+let aa = base58'4W19ndijcc2CsQa9HGW2dfXKTVXhnneWWttxXrtjPmEp'
109109
110-func ab (ac) = if ((ac.caller == this))
110+let ab = base58'EMAMLxDnv3xiz8RXg8Btj33jcEw3wLczL3JKYYmuubpc'
111+
112+func ac (ad) = if ((ad.caller == this))
111113 then unit
112114 else throw("Only contract itself can call this function")
113115
114116
115-func ad (ae) = {
116- let af = ae
117- if ($isInstanceOf(af, "ByteVector"))
117+func ae (af) = {
118+ let ag = af
119+ if ($isInstanceOf(ag, "ByteVector"))
118120 then {
119- let ag = af
120- assetBalance(this, ag)
121+ let ah = ag
122+ assetBalance(this, ah)
121123 }
122- else if ($isInstanceOf(af, "Unit"))
124+ else if ($isInstanceOf(ag, "Unit"))
123125 then {
124- let ah = af
126+ let ai = ag
125127 wavesBalance(this).available
126128 }
127129 else throw("Match error")
128130 }
129131
130132
131-func ai (aj) = $Tuple5(valueOrErrorMessage(getString(aj, o), "Can't get pool A asset id"), valueOrErrorMessage(getString(aj, p), "Can't get pool B asset id"), valueOrErrorMessage(getInteger(aj, m), "Can't get pool A asset balance"), valueOrErrorMessage(getInteger(aj, n), "Can't get pool B asset balance"), valueOrErrorMessage(getString(aj, q), "Can't get share asset id"))
133+func aj (ak) = $Tuple5(valueOrErrorMessage(getString(ak, o), "Can't get pool A asset id"), valueOrErrorMessage(getString(ak, p), "Can't get pool B asset id"), valueOrErrorMessage(getInteger(ak, m), "Can't get pool A asset balance"), valueOrErrorMessage(getInteger(ak, n), "Can't get pool B asset balance"), valueOrErrorMessage(getString(ak, q), "Can't get share asset id"))
132134
133135
134-func ak (aj) = {
135- let al = {
136- let am = invoke(aj, "getPoolConfigWrapperREADONLY", nil, nil)
137- if ($isInstanceOf(am, "List[Any]"))
138- then am
139- else throw(($getType(am) + " couldn't be cast to List[Any]"))
136+func al (ak) = {
137+ let am = {
138+ let an = invoke(ak, "getPoolConfigWrapperREADONLY", nil, nil)
139+ if ($isInstanceOf(an, "List[Any]"))
140+ then an
141+ else throw(($getType(an) + " couldn't be cast to List[Any]"))
140142 }
141- if ((al == al))
143+ if ((am == am))
142144 then {
143- let an = valueOrErrorMessage({
144- let am = al[4]
145- if ($isInstanceOf(am, "String"))
146- then am
145+ let ao = valueOrErrorMessage({
146+ let an = am[4]
147+ if ($isInstanceOf(an, "String"))
148+ then an
147149 else unit
148150 }, "Can't get pool A asset id")
149- let ao = valueOrErrorMessage({
150- let am = al[5]
151- if ($isInstanceOf(am, "String"))
152- then am
151+ let ap = valueOrErrorMessage({
152+ let an = am[5]
153+ if ($isInstanceOf(an, "String"))
154+ then an
153155 else unit
154156 }, "Can't get pool B asset id")
155- let ap = valueOrErrorMessage({
156- let am = al[3]
157- if ($isInstanceOf(am, "String"))
158- then am
157+ let aq = valueOrErrorMessage({
158+ let an = am[3]
159+ if ($isInstanceOf(an, "String"))
160+ then an
159161 else unit
160162 }, "Can't get pool LP asset id")
161- let aq = {
162- let am = invoke(aj, "getAccBalanceWrapperREADONLY", [an], nil)
163- if ($isInstanceOf(am, "Int"))
164- then am
165- else throw(($getType(am) + " couldn't be cast to Int"))
163+ let ar = {
164+ let an = invoke(ak, "getAccBalanceWrapperREADONLY", [ao], nil)
165+ if ($isInstanceOf(an, "Int"))
166+ then an
167+ else throw(($getType(an) + " couldn't be cast to Int"))
166168 }
167- if ((aq == aq))
169+ if ((ar == ar))
168170 then {
169- let ar = {
170- let am = invoke(aj, "getAccBalanceWrapperREADONLY", [ao], nil)
171- if ($isInstanceOf(am, "Int"))
172- then am
173- else throw(($getType(am) + " couldn't be cast to Int"))
171+ let as = {
172+ let an = invoke(ak, "getAccBalanceWrapperREADONLY", [ap], nil)
173+ if ($isInstanceOf(an, "Int"))
174+ then an
175+ else throw(($getType(an) + " couldn't be cast to Int"))
174176 }
175- if ((ar == ar))
176- then $Tuple5(an, ao, aq, ar, ap)
177+ if ((as == as))
178+ then $Tuple5(ao, ap, ar, as, aq)
177179 else throw("Strict value is not equal to itself.")
178180 }
179181 else throw("Strict value is not equal to itself.")
180182 }
181183 else throw("Strict value is not equal to itself.")
182184 }
183185
184186
185-func as (aj,at) = if ((at == a))
186- then ai(aj)
187- else if ((at == b))
188- then ak(aj)
187+func at (ak,au) = if ((au == a))
188+ then aj(ak)
189+ else if ((au == b))
190+ then al(ak)
189191 else throw("Wrong pool type")
190192
191193
192-func au (aj,at,ap) = if ((at == a))
193- then valueOrErrorMessage(getInteger(aj, r), "Can't get share asset supply")
194- else if ((at == b))
195- then valueOrErrorMessage(assetInfo(fromBase58String(ap)), "Wrong ShareId").quantity
194+func av (ak,au,aq) = if ((au == a))
195+ then valueOrErrorMessage(getInteger(ak, r), "Can't get share asset supply")
196+ else if ((au == b))
197+ then valueOrErrorMessage(assetInfo(fromBase58String(aq)), "Wrong ShareId").quantity
196198 else throw("Wrong pool type")
197199
198200
199-func av (aw) = valueOrElse(getInteger(this, (aw + y)), 0)
201+func aw (ax) = valueOrElse(getInteger(this, (ax + z)), 0)
200202
201203
202-func ax (aw) = valueOrElse(getInteger(this, (aw + z)), 0)
204+func ay (ax) = valueOrElse(getInteger(this, (ax + A)), 0)
203205
204206
205-func ay (aw,az) = (valueOrElse(getInteger(this, (((aw + "_") + az) + w)), 0) + 1)
207+func az (ax,aA) = (valueOrElse(getInteger(this, (aA + x)), 0) + 1)
206208
207209
208-func aA (aw,aB) = if ((aB == d))
209- then getIntegerValue(this, (aw + F))
210- else if ((aB == c))
211- then getIntegerValue(this, (aw + E))
212- else if ((aB == g))
213- then getIntegerValue(this, (aw + D))
214- else if ((aB == h))
215- then getIntegerValue(this, (aw + C))
210+func aB (ax,aC) = if ((aC == d))
211+ then getIntegerValue(this, (ax + G))
212+ else if ((aC == c))
213+ then getIntegerValue(this, (ax + F))
214+ else if ((aC == g))
215+ then getIntegerValue(this, (ax + E))
216+ else if ((aC == h))
217+ then getIntegerValue(this, (ax + D))
216218 else throw("Wrong fee type")
217219
218220
219-func aC () = Address(fromBase58String(valueOrErrorMessage(getString(this, Q), "Can't get swopfi farming addr")))
221+func aD () = Address(fromBase58String(valueOrErrorMessage(getString(this, R), "Can't get swopfi farming addr")))
220222
221223
222-func aD (aj) = {
223- let aE = Address(fromBase58String(valueOrErrorMessage(getString(aj, "%s__factoryContract"), "Can't get WX factory contract addr")))
224- let aF = split(valueOrErrorMessage(getString(aE, "%s__factoryConfig"), "Can't get WX factory cfg"), "__")
225- Address(fromBase58String(aF[1]))
224+func aE (ak) = {
225+ let aF = Address(fromBase58String(valueOrErrorMessage(getString(ak, "%s__factoryContract"), "Can't get WX factory contract addr")))
226+ let aG = split(valueOrErrorMessage(getString(aF, "%s__factoryConfig"), "Can't get WX factory cfg"), "__")
227+ Address(fromBase58String(aG[1]))
226228 }
227229
228230
229-func aG () = Address(fromBase58String(valueOrErrorMessage(getString(this, R), "Can't get lend service addr")))
231+func aH () = Address(fromBase58String(valueOrErrorMessage(getString(this, S), "Can't get lend service addr")))
230232
231233
232-func aH (ae) = {
233- let af = ae
234- if ($isInstanceOf(af, "ByteVector"))
234+func aI (af) = {
235+ let ag = af
236+ if ($isInstanceOf(ag, "ByteVector"))
235237 then {
236- let ag = af
237- toBase58String(ag)
238+ let ah = ag
239+ toBase58String(ah)
238240 }
239- else if ($isInstanceOf(af, "Unit"))
241+ else if ($isInstanceOf(ag, "Unit"))
240242 then {
241- let ah = af
243+ let ai = ag
242244 "WAVES"
243245 }
244246 else throw("Match error")
245247 }
246248
247249
248-func aI (ae) = if ((ae == "WAVES"))
250+func aJ (af) = if ((af == "WAVES"))
249251 then unit
250- else fromBase58String(ae)
252+ else fromBase58String(af)
251253
252254
253-func aJ (ae) = if ((ae == "WAVES"))
255+func aK (af) = if ((af == "WAVES"))
254256 then 8
255257 else {
256- let af = assetInfo(fromBase58String(ae))
257- if ($isInstanceOf(af, "Asset"))
258+ let ag = assetInfo(fromBase58String(af))
259+ if ($isInstanceOf(ag, "Asset"))
258260 then {
259- let aK = af
260- aK.decimals
261+ let aL = ag
262+ aL.decimals
261263 }
262264 else throw("Can't find asset")
263265 }
264266
265267
266-func aL (ae) = pow(10, 0, aJ(ae), 0, 0, DOWN)
268+func aM (af) = pow(10, 0, aK(af), 0, 0, DOWN)
267269
268270
269-func aM (aN) = {
270- func aO (aP,ae) = {
271- let aQ = ( let am = invoke(X, "getTWAP60", [ae, false], nil)
272- if ($isInstanceOf(am, "(Int, Int)"))
273- then am
274- else throw(($getType(am) + " couldn't be cast to (Int, Int)")))._2
275- (aP :+ aQ)
271+func aN (aO) = {
272+ func aP (aQ,af) = {
273+ let aR = ( let an = invoke(Y, "getTWAP60", [af, false], nil)
274+ if ($isInstanceOf(an, "(Int, Int)"))
275+ then an
276+ else throw(($getType(an) + " couldn't be cast to (Int, Int)")))._2
277+ (aQ :+ aR)
276278 }
277279
278- let aR = aN
279- let aS = size(aR)
280- let aT = nil
281- func aU (aV,aW) = if ((aW >= aS))
282- then aV
283- else aO(aV, aR[aW])
280+ let aS = aO
281+ let aT = size(aS)
282+ let aU = nil
283+ func aV (aW,aX) = if ((aX >= aT))
284+ then aW
285+ else aP(aW, aS[aX])
284286
285- func aX (aV,aW) = if ((aW >= aS))
286- then aV
287+ func aY (aW,aX) = if ((aX >= aT))
288+ then aW
287289 else throw("List size exceeds 100")
288290
289- aX(aU(aU(aU(aU(aU(aU(aU(aU(aU(aU(aU(aU(aU(aU(aU(aU(aU(aU(aU(aU(aU(aU(aU(aU(aU(aU(aU(aU(aU(aU(aU(aU(aU(aU(aU(aU(aU(aU(aU(aU(aU(aU(aU(aU(aU(aU(aU(aU(aU(aU(aU(aU(aU(aU(aU(aU(aU(aU(aU(aU(aU(aU(aU(aU(aU(aU(aU(aU(aU(aU(aU(aU(aU(aU(aU(aU(aU(aU(aU(aU(aU(aU(aU(aU(aU(aU(aU(aU(aU(aU(aU(aU(aU(aU(aU(aU(aU(aU(aU(aU(aT, 0), 1), 2), 3), 4), 5), 6), 7), 8), 9), 10), 11), 12), 13), 14), 15), 16), 17), 18), 19), 20), 21), 22), 23), 24), 25), 26), 27), 28), 29), 30), 31), 32), 33), 34), 35), 36), 37), 38), 39), 40), 41), 42), 43), 44), 45), 46), 47), 48), 49), 50), 51), 52), 53), 54), 55), 56), 57), 58), 59), 60), 61), 62), 63), 64), 65), 66), 67), 68), 69), 70), 71), 72), 73), 74), 75), 76), 77), 78), 79), 80), 81), 82), 83), 84), 85), 86), 87), 88), 89), 90), 91), 92), 93), 94), 95), 96), 97), 98), 99), 100)
291+ aY(aV(aV(aV(aV(aV(aV(aV(aV(aV(aV(aV(aV(aV(aV(aV(aV(aV(aV(aV(aV(aV(aV(aV(aV(aV(aV(aV(aV(aV(aV(aV(aV(aV(aV(aV(aV(aV(aV(aV(aV(aV(aV(aV(aV(aV(aV(aV(aV(aV(aV(aV(aV(aV(aV(aV(aV(aV(aV(aV(aV(aV(aV(aV(aV(aV(aV(aV(aV(aV(aV(aV(aV(aV(aV(aV(aV(aV(aV(aV(aV(aV(aV(aV(aV(aV(aV(aV(aV(aV(aV(aV(aV(aV(aV(aV(aV(aV(aV(aV(aV(aU, 0), 1), 2), 3), 4), 5), 6), 7), 8), 9), 10), 11), 12), 13), 14), 15), 16), 17), 18), 19), 20), 21), 22), 23), 24), 25), 26), 27), 28), 29), 30), 31), 32), 33), 34), 35), 36), 37), 38), 39), 40), 41), 42), 43), 44), 45), 46), 47), 48), 49), 50), 51), 52), 53), 54), 55), 56), 57), 58), 59), 60), 61), 62), 63), 64), 65), 66), 67), 68), 69), 70), 71), 72), 73), 74), 75), 76), 77), 78), 79), 80), 81), 82), 83), 84), 85), 86), 87), 88), 89), 90), 91), 92), 93), 94), 95), 96), 97), 98), 99), 100)
290292 }
291293
292294
293-func aY (aZ) = {
294- func aO (aP,ap) = {
295- let aw = valueOrErrorMessage(getString(this, (ap + L)), "Can't find pool addr by share id")
296- let aj = Address(fromBase58String(aw))
297- let ba = valueOrErrorMessage(getString(this, (K + aw)), "Pool is not inited")
298- let bb = as(aj, ba)
299- let an = bb._1
300- let ao = bb._2
301- let bc = bb._3
302- let bd = bb._4
303- let be = ( let am = invoke(X, "getTWAP60", [an, false], nil)
304- if ($isInstanceOf(am, "(Int, Int)"))
305- then am
306- else throw(($getType(am) + " couldn't be cast to (Int, Int)")))._2
307- let bf = ( let am = invoke(X, "getTWAP60", [ao, false], nil)
308- if ($isInstanceOf(am, "(Int, Int)"))
309- then am
310- else throw(($getType(am) + " couldn't be cast to (Int, Int)")))._2
311- let bg = au(aj, ba, ap)
312- let bh = pow(10, 0, aJ(an), 0, 0, DOWN)
313- let bi = pow(10, 0, aJ(ao), 0, 0, DOWN)
314- let bj = pow(10, 0, aJ(ap), 0, 0, DOWN)
315- let bk = (fraction(bc, be, bh) + fraction(bd, bf, bi))
316- let bl = fraction(bk, bj, bg)
317- (aP :+ bl)
295+func aZ (ba) = {
296+ func aP (aQ,aq) = {
297+ let ax = valueOrErrorMessage(getString(this, (aq + M)), "Can't find pool addr by share id")
298+ let ak = Address(fromBase58String(ax))
299+ let bb = valueOrErrorMessage(getString(this, (L + ax)), "Pool is not inited")
300+ let bc = at(ak, bb)
301+ let ao = bc._1
302+ let ap = bc._2
303+ let bd = bc._3
304+ let be = bc._4
305+ let bf = ( let an = invoke(Y, "getTWAP60", [ao, false], nil)
306+ if ($isInstanceOf(an, "(Int, Int)"))
307+ then an
308+ else throw(($getType(an) + " couldn't be cast to (Int, Int)")))._2
309+ let bg = ( let an = invoke(Y, "getTWAP60", [ap, false], nil)
310+ if ($isInstanceOf(an, "(Int, Int)"))
311+ then an
312+ else throw(($getType(an) + " couldn't be cast to (Int, Int)")))._2
313+ let bh = av(ak, bb, aq)
314+ let bi = pow(10, 0, aK(ao), 0, 0, DOWN)
315+ let bj = pow(10, 0, aK(ap), 0, 0, DOWN)
316+ let bk = pow(10, 0, aK(aq), 0, 0, DOWN)
317+ let bl = (fraction(bd, bf, bi) + fraction(be, bg, bj))
318+ let bm = fraction(bl, bk, bh)
319+ (aQ :+ bm)
318320 }
319321
320- let aR = aZ
321- let aS = size(aR)
322- let aT = nil
323- func aU (aV,aW) = if ((aW >= aS))
324- then aV
325- else aO(aV, aR[aW])
322+ let aS = ba
323+ let aT = size(aS)
324+ let aU = nil
325+ func aV (aW,aX) = if ((aX >= aT))
326+ then aW
327+ else aP(aW, aS[aX])
326328
327- func aX (aV,aW) = if ((aW >= aS))
328- then aV
329+ func aY (aW,aX) = if ((aX >= aT))
330+ then aW
329331 else throw("List size exceeds 50")
330332
331- aX(aU(aU(aU(aU(aU(aU(aU(aU(aU(aU(aU(aU(aU(aU(aU(aU(aU(aU(aU(aU(aU(aU(aU(aU(aU(aU(aU(aU(aU(aU(aU(aU(aU(aU(aU(aU(aU(aU(aU(aU(aU(aU(aU(aU(aU(aU(aU(aU(aU(aU(aT, 0), 1), 2), 3), 4), 5), 6), 7), 8), 9), 10), 11), 12), 13), 14), 15), 16), 17), 18), 19), 20), 21), 22), 23), 24), 25), 26), 27), 28), 29), 30), 31), 32), 33), 34), 35), 36), 37), 38), 39), 40), 41), 42), 43), 44), 45), 46), 47), 48), 49), 50)
333+ aY(aV(aV(aV(aV(aV(aV(aV(aV(aV(aV(aV(aV(aV(aV(aV(aV(aV(aV(aV(aV(aV(aV(aV(aV(aV(aV(aV(aV(aV(aV(aV(aV(aV(aV(aV(aV(aV(aV(aV(aV(aV(aV(aV(aV(aV(aV(aV(aV(aV(aV(aU, 0), 1), 2), 3), 4), 5), 6), 7), 8), 9), 10), 11), 12), 13), 14), 15), 16), 17), 18), 19), 20), 21), 22), 23), 24), 25), 26), 27), 28), 29), 30), 31), 32), 33), 34), 35), 36), 37), 38), 39), 40), 41), 42), 43), 44), 45), 46), 47), 48), 49), 50)
332334 }
333335
334336
335-func bm (an,ao,ap) = {
336- let bn = aM([an, ao])
337- let bl = aY([ap])
338-[IntegerEntry((an + N), bn[0]), IntegerEntry((ao + N), bn[1]), IntegerEntry((ap + N), bl[0])]
337+func bn (ao,ap,aq) = {
338+ let bo = aN([ao, ap])
339+ let bm = aZ([aq])
340+[IntegerEntry((ao + O), bo[0]), IntegerEntry((ap + O), bo[1]), IntegerEntry((aq + O), bm[0])]
339341 }
340342
341343
342-func bo (aw,aB,bp,bq,br,bs,aq,ar,ap) = {
343- let bt = ad(fromBase58String(ap))
344- if ((bt == bt))
344+func bp (ax,aC,bq,br,bs,bt,ar,as,aq) = {
345+ let bu = ae(fromBase58String(aq))
346+ if ((bu == bu))
345347 then {
346- let aj = Address(fromBase58String(aw))
347- let bu = fraction(j, bp, aq)
348- let bv = fraction(j, br, ar)
349- let bw = if ((bv > bu))
348+ let ak = Address(fromBase58String(ax))
349+ let bv = fraction(j, bq, ar)
350+ let bw = fraction(j, bs, as)
351+ let bx = if ((bw > bv))
350352 then {
351- let bx = fraction(ar, bu, j, CEILING)
352- $Tuple4(bp, bx, (br - bx), bs)
353+ let by = fraction(as, bv, j, CEILING)
354+ $Tuple4(bq, by, (bs - by), bt)
353355 }
354356 else {
355- let bx = fraction(aq, bv, j, CEILING)
356- $Tuple4(bx, br, (bp - bx), bq)
357+ let by = fraction(ar, bw, j, CEILING)
358+ $Tuple4(by, bs, (bq - by), br)
357359 }
358- let by = bw._1
359- let bz = bw._2
360- let bA = bw._3
361- let bB = bw._4
362- let bC = if (if ((by > 0))
363- then (bz > 0)
360+ let bz = bx._1
361+ let bA = bx._2
362+ let bB = bx._3
363+ let bC = bx._4
364+ let bD = if (if ((bz > 0))
365+ then (bA > 0)
364366 else false)
365367 then {
366- let bD = [AttachedPayment(aI(bq), by), AttachedPayment(aI(bs), bz)]
367- invoke(aj, "callFunction", ["replenishWithTwoTokens", ["false", "0"]], bD)
368+ let bE = [AttachedPayment(aJ(br), bz), AttachedPayment(aJ(bt), bA)]
369+ invoke(ak, "callFunction", ["replenishWithTwoTokens", ["false", "0"]], bE)
368370 }
369371 else 0
370- if ((bC == bC))
372+ if ((bD == bD))
371373 then {
372- let bE = if ((bA > 0))
374+ let bF = if ((bB > 0))
373375 then {
374- let bD = [AttachedPayment(aI(bB), bA)]
375- let bF = ["0", "false", "0"]
376- invoke(aj, "callFunction", ["replenishWithOneToken", bF], bD)
376+ let bE = [AttachedPayment(aJ(bC), bB)]
377+ let bG = ["0", "false", "0"]
378+ invoke(ak, "callFunction", ["replenishWithOneToken", bG], bE)
377379 }
378380 else 0
379- if ((bE == bE))
381+ if ((bF == bF))
380382 then {
381- let bG = ad(fromBase58String(ap))
382- let bH = (bG - bt)
383- let bI = fraction(bH, aA(aw, aB), l)
384- let bJ = (bH - bI)
385- if ((0 >= bJ))
383+ let bH = ae(fromBase58String(aq))
384+ let bI = (bH - bu)
385+ let bJ = fraction(bI, aB(ax, aC), l)
386+ let bK = (bI - bJ)
387+ if ((0 >= bK))
386388 then throw("amount of staked sharetokens must be > 0")
387389 else {
388- let bK = invoke(aC(), "lockShareTokens", [aw, 0], [AttachedPayment(fromBase58String(ap), bJ)])
389- if ((bK == bK))
390- then $Tuple2(bJ, bI)
390+ let bL = invoke(aD(), "lockShareTokens", [ax, 0], [AttachedPayment(fromBase58String(aq), bK)])
391+ if ((bL == bL))
392+ then $Tuple2(bK, bJ)
391393 else throw("Strict value is not equal to itself.")
392394 }
393395 }
394396 else throw("Strict value is not equal to itself.")
395397 }
396398 else throw("Strict value is not equal to itself.")
397399 }
398400 else throw("Strict value is not equal to itself.")
399401 }
400402
401403
402-func bL (aw,aB,bp,bq,br,bs,ap) = {
403- let aj = Address(fromBase58String(aw))
404- let bM = if (if ((bp > 0))
405- then (br > 0)
404+func bM (ax,aC,bq,br,bs,bt,aq) = {
405+ let ak = Address(fromBase58String(ax))
406+ let bN = if (if ((bq > 0))
407+ then (bs > 0)
406408 else false)
407409 then {
408- let bN = split({
409- let am = invoke(aj, "evaluatePutByAmountAssetREADONLY", [bp], nil)
410- if ($isInstanceOf(am, "String"))
411- then am
412- else throw(($getType(am) + " couldn't be cast to String"))
410+ let bO = split({
411+ let an = invoke(ak, "evaluatePutByAmountAssetREADONLY", [bq], nil)
412+ if ($isInstanceOf(an, "String"))
413+ then an
414+ else throw(($getType(an) + " couldn't be cast to String"))
413415 }, "__")
414- if ((bN == bN))
416+ if ((bO == bO))
415417 then {
416- let bO = split({
417- let am = invoke(aj, "evaluatePutByPriceAssetREADONLY", [br], nil)
418- if ($isInstanceOf(am, "String"))
419- then am
420- else throw(($getType(am) + " couldn't be cast to String"))
418+ let bP = split({
419+ let an = invoke(ak, "evaluatePutByPriceAssetREADONLY", [bs], nil)
420+ if ($isInstanceOf(an, "String"))
421+ then an
422+ else throw(($getType(an) + " couldn't be cast to String"))
421423 }, "__")
422- if ((bO == bO))
424+ if ((bP == bP))
423425 then {
424- let bP = parseIntValue(bN[1])
425426 let bQ = parseIntValue(bO[1])
426- if ((bQ > bP))
427+ let bR = parseIntValue(bP[1])
428+ if ((bR > bQ))
427429 then {
428- let bR = parseIntValue(bN[8])
429- $Tuple4(bp, bR, (br - bR), bs)
430+ let bS = parseIntValue(bO[8])
431+ $Tuple4(bq, bS, (bs - bS), bt)
430432 }
431433 else {
432- let bS = parseIntValue(bO[7])
433- $Tuple4(bS, br, (bp - bS), bq)
434+ let bT = parseIntValue(bP[7])
435+ $Tuple4(bT, bs, (bq - bT), br)
434436 }
435437 }
436438 else throw("Strict value is not equal to itself.")
437439 }
438440 else throw("Strict value is not equal to itself.")
439441 }
440- else if ((bp > 0))
441- then $Tuple4(bp, br, bp, bq)
442- else if ((br > 0))
443- then $Tuple4(bp, br, br, bs)
442+ else if ((bq > 0))
443+ then $Tuple4(bq, bs, bq, br)
444+ else if ((bs > 0))
445+ then $Tuple4(bq, bs, bs, bt)
444446 else throw("pmts must be > 0")
445- let by = bM._1
446- let bz = bM._2
447- let bA = bM._3
448- let bB = bM._4
449- let bt = ad(fromBase58String(ap))
450- if ((bt == bt))
447+ let bz = bN._1
448+ let bA = bN._2
449+ let bB = bN._3
450+ let bC = bN._4
451+ let bu = ae(fromBase58String(aq))
452+ if ((bu == bu))
451453 then {
452- let bC = if (if ((by > 0))
453- then (bz > 0)
454+ let bD = if (if ((bz > 0))
455+ then (bA > 0)
454456 else false)
455457 then {
456- let bD = [AttachedPayment(aI(bq), by), AttachedPayment(aI(bs), bz)]
457- invoke(aj, "put", [1000000, false], bD)
458+ let bE = [AttachedPayment(aJ(br), bz), AttachedPayment(aJ(bt), bA)]
459+ invoke(ak, "put", [1000000, false], bE)
458460 }
459461 else 0
460- if ((bC == bC))
462+ if ((bD == bD))
461463 then {
462- let bE = if ((bA > 0))
464+ let bF = if ((bB > 0))
463465 then {
464- let bD = [AttachedPayment(aI(bB), bA)]
465- invoke(aj, "putOneTkn", [0, false], bD)
466+ let bE = [AttachedPayment(aJ(bC), bB)]
467+ invoke(ak, "putOneTkn", [0, false], bE)
466468 }
467469 else 0
468- if ((bE == bE))
470+ if ((bF == bF))
469471 then {
470- let bG = ad(fromBase58String(ap))
471- let bH = (bG - bt)
472- let bI = fraction(bH, aA(aw, aB), l)
473- let bJ = (bH - bI)
474- if ((0 >= bJ))
472+ let bH = ae(fromBase58String(aq))
473+ let bI = (bH - bu)
474+ let bJ = fraction(bI, aB(ax, aC), l)
475+ let bK = (bI - bJ)
476+ if ((0 >= bK))
475477 then throw("amount of staked sharetokens must be > 0")
476478 else {
477- let bK = invoke(aD(aj), "stake", nil, [AttachedPayment(fromBase58String(ap), bJ)])
478- if ((bK == bK))
479- then $Tuple2(bJ, bI)
479+ let bL = invoke(aE(ak), "stake", nil, [AttachedPayment(fromBase58String(aq), bK)])
480+ if ((bL == bL))
481+ then $Tuple2(bK, bJ)
480482 else throw("Strict value is not equal to itself.")
481483 }
482484 }
483485 else throw("Strict value is not equal to itself.")
484486 }
485487 else throw("Strict value is not equal to itself.")
486488 }
487489 else throw("Strict value is not equal to itself.")
488490 }
489491
490492
491-func bT (at,aw,aB,bp,bU,br,bV,aq,ar,ap) = if ((at == a))
492- then bo(aw, aB, bp, bU, br, bV, aq, ar, ap)
493- else if ((at == b))
494- then bL(aw, aB, bp, bU, br, bV, ap)
493+func bU (au,ax,aC,bq,bV,bs,bW,ar,as,aq) = if ((au == a))
494+ then bp(ax, aC, bq, bV, bs, bW, ar, as, aq)
495+ else if ((au == b))
496+ then bM(ax, aC, bq, bV, bs, bW, aq)
495497 else throw("Wrong pool type")
496498
497499
498-func bW (aw,az,bX,bI,bY,ap,at,bZ) = {
499- let ca = av(aw)
500- let cb = ax(aw)
501- let cc = if (bZ)
502- then $Tuple2(getIntegerValue(this, (aw + A)), (cb + bX))
503- else $Tuple2(getIntegerValue(this, (aw + B)), cb)
504- let cd = cc._1
505- let ce = cc._2
506-[IntegerEntry((aw + y), (ca + bX)), IntegerEntry((aw + z), (cb + bX)), IntegerEntry((((((aw + "_") + az) + "_") + toString(bY)) + t), bX), IntegerEntry((((((aw + "_") + az) + "_") + toString(bY)) + x), cd), IntegerEntry((((aw + "_") + az) + w), bY), ScriptTransfer(V, bI, fromBase58String(ap))]
500+func bX (ax,aA,bY,bJ,bZ,aq,au,ca) = {
501+ let cb = aw(ax)
502+ let cc = ay(ax)
503+ let cd = if (ca)
504+ then $Tuple2(getIntegerValue(this, (ax + B)), (cc + bY))
505+ else $Tuple2(getIntegerValue(this, (ax + C)), cc)
506+ let ce = cd._1
507+ let cf = cd._2
508+[IntegerEntry((ax + z), (cb + bY)), IntegerEntry((ax + A), (cc + bY)), IntegerEntry((((((ax + "_") + aA) + "_") + toString(bZ)) + t), bY), IntegerEntry((((((ax + "_") + aA) + "_") + toString(bZ)) + y), ce), StringEntry((((aA + "_") + toString(bZ)) + u), ax), IntegerEntry((aA + x), bZ), ScriptTransfer(W, bJ, fromBase58String(aq))]
507509 }
508510
509511
510-func cf (at,aw) = if ((at == a))
512+func cg (au,ax) = if ((au == a))
511513 then {
512- let cg = ad(Z)
513- if ((cg == cg))
514+ let ch = ae(aa)
515+ if ((ch == ch))
514516 then {
515- let ch = invoke(aC(), "claim", [aw], nil)
516- if ((ch == ch))
517+ let ci = invoke(aD(), "claim", [ax], nil)
518+ if ((ci == ci))
517519 then {
518- let ci = ad(Z)
519- $Tuple2((ci - cg), Z)
520+ let cj = ae(aa)
521+ $Tuple2((cj - ch), aa)
520522 }
521523 else throw("Strict value is not equal to itself.")
522524 }
523525 else throw("Strict value is not equal to itself.")
524526 }
525- else if ((at == b))
527+ else if ((au == b))
526528 then {
527- let cg = ad(aa)
528- if ((cg == cg))
529+ let ch = ae(ab)
530+ if ((ch == ch))
529531 then {
530- let ch = invoke(aD(Address(fromBase58String(aw))), "claimWX", [aw], nil)
531- if ((ch == ch))
532+ let ci = invoke(aE(Address(fromBase58String(ax))), "claimWX", [ax], nil)
533+ if ((ci == ci))
532534 then {
533- let ci = ad(aa)
534- $Tuple2((ci - cg), aa)
535+ let cj = ae(ab)
536+ $Tuple2((cj - ch), ab)
535537 }
536538 else throw("Strict value is not equal to itself.")
537539 }
538540 else throw("Strict value is not equal to itself.")
539541 }
540542 else throw("Wrong pool type")
541543
542544
543-func cj (ck,cl,cm,cn,co,cp,cq,cr,cs,ct) = {
544- let cu = ad(aI(ck))
545- if ((cu == cu))
545+func ck (cl,cm,cn,co,cp,cq,cr,cs,ct,cu) = {
546+ let cv = ae(aJ(cl))
547+ if ((cv == cv))
546548 then {
547- let ch = invoke(W, "swap", [cn, co, cp, cq, cr, cs, ct], [AttachedPayment(cm, cl)])
548- if ((ch == ch))
549- then (ad(aI(ck)) - cu)
549+ let ci = invoke(X, "swap", [co, cp, cq, cr, cs, ct, cu], [AttachedPayment(cn, cm)])
550+ if ((ci == ci))
551+ then (ae(aJ(cl)) - cv)
550552 else throw("Strict value is not equal to itself.")
551553 }
552554 else throw("Strict value is not equal to itself.")
553555 }
554556
555557
556-func cv (ck,cl,cm,cw,cx,ct) = {
557- let cu = ad(aI(ck))
558- if ((cu == cu))
558+func cw (cl,cm,cn,cx,cy,cu) = {
559+ let cv = ae(aJ(cl))
560+ if ((cv == cv))
559561 then {
560- let ch = invoke(W, "puzzleSwap", [cw, cx, ct], [AttachedPayment(cm, cl)])
561- if ((ch == ch))
562- then (ad(aI(ck)) - cu)
562+ let ci = invoke(X, "puzzleSwap", [cx, cy, cu], [AttachedPayment(cn, cm)])
563+ if ((ci == ci))
564+ then (ae(aJ(cl)) - cv)
563565 else throw("Strict value is not equal to itself.")
564566 }
565567 else throw("Strict value is not equal to itself.")
566568 }
567569
568570
569-func cy (ck,cl,cm,cz,cA,cB,cC,cD,cE,ct) = {
570- let cu = ad(aI(ck))
571- if ((cu == cu))
571+func cz (cl,cm,cn,cA,cB,cC,cD,cE,cF,cu) = {
572+ let cv = ae(aJ(cl))
573+ if ((cv == cv))
572574 then {
573- let ch = invoke(W, "swopfiSwap", [cz, cA, cB, cC, cD, cE, ct], [AttachedPayment(cm, cl)])
574- if ((ch == ch))
575- then (ad(aI(ck)) - cu)
575+ let ci = invoke(X, "swopfiSwap", [cA, cB, cC, cD, cE, cF, cu], [AttachedPayment(cn, cm)])
576+ if ((ci == ci))
577+ then (ae(aJ(cl)) - cv)
576578 else throw("Strict value is not equal to itself.")
577579 }
578580 else throw("Strict value is not equal to itself.")
579581 }
580582
581583
582-func cF (aw,ba,cG,cH) = {
583- let aj = Address(fromBase58String(aw))
584- let cI = as(aj, ba)
585- let bU = cI._1
586- let bV = cI._2
587- let aq = cI._3
588- let ar = cI._4
589- let ap = cI._5
590- let cJ = if ((cG == bU))
591- then $Tuple2(cH, 0)
592- else $Tuple2(0, cH)
593- let bp = cJ._1
594- let br = cJ._2
595- let cK = bT(ba, aw, i, bp, bU, br, bV, aq, ar, ap)
596- let bX = cK._1
597- let cL = cK._2
598- let cM = valueOrElse(getInteger(this, (aw + A)), 0)
599- let cN = valueOrElse(getInteger(this, (aw + B)), 0)
600- let cO = av(aw)
601- let cP = ax(aw)
602- let cQ = fraction(cP, j, cO)
603- let cR = fraction(bX, cQ, j)
604- let cS = (bX - cR)
605- let cT = (cM + fraction(cR, k, cP))
606- let cU = (cN + fraction(cS, k, (cO - cP)))
607- let cV = fraction(cR, aA(aw, d), l)
608- let cW = fraction(cS, aA(aw, c), l)
609- ([IntegerEntry((aw + A), cT), IntegerEntry((aw + B), cU), IntegerEntry((aw + y), (((cO + bX) - cV) - cW)), IntegerEntry((aw + z), ((cP + cR) - cV)), ScriptTransfer(V, (cV + cW), fromBase58String(ap))] ++ bm(bU, bV, ap))
584+func cG (ax,bb,cH,cI) = {
585+ let ak = Address(fromBase58String(ax))
586+ let cJ = at(ak, bb)
587+ let bV = cJ._1
588+ let bW = cJ._2
589+ let ar = cJ._3
590+ let as = cJ._4
591+ let aq = cJ._5
592+ let cK = if ((cH == bV))
593+ then $Tuple2(cI, 0)
594+ else $Tuple2(0, cI)
595+ let bq = cK._1
596+ let bs = cK._2
597+ let cL = bU(bb, ax, i, bq, bV, bs, bW, ar, as, aq)
598+ let bY = cL._1
599+ let cM = cL._2
600+ let cN = valueOrElse(getInteger(this, (ax + B)), 0)
601+ let cO = valueOrElse(getInteger(this, (ax + C)), 0)
602+ let cP = aw(ax)
603+ let cQ = ay(ax)
604+ let cR = fraction(cQ, j, cP)
605+ let cS = fraction(bY, cR, j)
606+ let cT = (bY - cS)
607+ let cU = (cN + fraction(cS, k, cQ))
608+ let cV = (cO + fraction(cT, k, (cP - cQ)))
609+ let cW = fraction(cS, aB(ax, d), l)
610+ let cX = fraction(cT, aB(ax, c), l)
611+ ([IntegerEntry((ax + B), cU), IntegerEntry((ax + C), cV), IntegerEntry((ax + z), (((cP + bY) - cW) - cX)), IntegerEntry((ax + A), ((cQ + cS) - cW)), ScriptTransfer(W, (cW + cX), fromBase58String(aq))] ++ bn(bV, bW, aq))
610612 }
611613
612614
613-func cX (aw,cY,cZ,aq,ar,da,db) = {
614- let aj = Address(fromBase58String(aw))
615- let dc = 1000000
616- let dd = getIntegerValue(aj, s)
617- let de = fraction(da, dc, (dc - dd))
618- let df = if ((db == cY))
615+func cY (ax,cZ,da,ar,as,db,dc) = {
616+ let ak = Address(fromBase58String(ax))
617+ let dd = 1000000
618+ let de = getIntegerValue(ak, s)
619+ let df = fraction(db, dd, (dd - de))
620+ let dg = if ((dc == cZ))
619621 then {
620- let dg = fraction(aq, de, (ar - de))
621- $Tuple2(dg, cZ)
622+ let dh = fraction(ar, df, (as - df))
623+ $Tuple2(dh, da)
622624 }
623625 else {
624- let dg = fraction(ar, de, (aq - de))
625- $Tuple2(dg, cY)
626+ let dh = fraction(as, df, (ar - df))
627+ $Tuple2(dh, cZ)
626628 }
627- let dg = df._1
628- let dh = df._2
629- invoke(aj, "callFunction", ["exchange", ["1"]], [AttachedPayment(aI(dh), dg)])
629+ let dh = dg._1
630+ let di = dg._2
631+ invoke(ak, "callFunction", ["exchange", ["1"]], [AttachedPayment(aJ(di), dh)])
630632 }
631633
632634
633-func di (aw,cY,cZ,aq,ar,da,db) = {
634- let aj = Address(fromBase58String(aw))
635- let dj = getIntegerValue(Y, "%s__protocolFee")
636- let dk = getIntegerValue(Y, "%s__poolFee")
637- let dl = toBigInt(100000000)
638- let dm = if ((db == cY))
635+func dj (ax,cZ,da,ar,as,db,dc) = {
636+ let ak = Address(fromBase58String(ax))
637+ let dk = getIntegerValue(Z, "%s__protocolFee")
638+ let dl = getIntegerValue(Z, "%s__poolFee")
639+ let dm = toBigInt(100000000)
640+ let dn = if ((dc == cZ))
639641 then {
640- let dg = fraction(aq, da, (ar - da))
641- $Tuple2(dg, cZ)
642+ let dh = fraction(ar, db, (as - db))
643+ $Tuple2(dh, da)
642644 }
643645 else {
644- let dg = fraction(ar, da, (aq - da))
645- $Tuple2(dg, cY)
646+ let dh = fraction(as, db, (ar - db))
647+ $Tuple2(dh, cZ)
646648 }
647- let dg = dm._1
648- let dh = dm._2
649- let dn = toInt(fraction(toBigInt(dg), dl, (dl - toBigInt((dj + dk)))))
650- invoke(Y, "swap", [1, db, toString(this)], [AttachedPayment(aI(dh), dn)])
649+ let dh = dn._1
650+ let di = dn._2
651+ let do = toInt(fraction(toBigInt(dh), dm, (dm - toBigInt((dk + dl)))))
652+ invoke(Z, "swap", [1, dc, toString(this)], [AttachedPayment(aJ(di), do)])
651653 }
652654
653655
654-func do (at,aw,cY,cZ,aq,ar,da,db) = if ((at == a))
655- then cX(aw, cY, cZ, aq, ar, da, db)
656- else di(aw, cY, cZ, aq, ar, da, db)
656+func dp (au,ax,cZ,da,ar,as,db,dc) = if ((au == a))
657+ then cY(ax, cZ, da, ar, as, db, dc)
658+ else dj(ax, cZ, da, ar, as, db, dc)
657659
658660
659-func dp (aw,dq,dr,ds) = {
660- let aj = Address(fromBase58String(aw))
661- let ba = valueOrErrorMessage(getString(this, (K + aw)), "Unknown pool")
662- let dt = as(aj, ba)
663- let cY = dt._1
664- let cZ = dt._2
665- let aq = dt._3
666- let ar = dt._4
667- let ap = dt._5
668- let du = ad(aI(cY))
669- if ((du == du))
661+func dq (ax,dr,ds,dt) = {
662+ let ak = Address(fromBase58String(ax))
663+ let bb = valueOrErrorMessage(getString(this, (L + ax)), "Unknown pool")
664+ let du = at(ak, bb)
665+ let cZ = du._1
666+ let da = du._2
667+ let ar = du._3
668+ let as = du._4
669+ let aq = du._5
670+ let dv = ae(aJ(cZ))
671+ if ((dv == dv))
670672 then {
671- let dv = ad(aI(cZ))
672- if ((dv == dv))
673+ let dw = ae(aJ(da))
674+ if ((dw == dw))
673675 then {
674- let ch = if ((ba == a))
675- then invoke(aj, "callFunction", ["withdraw", [toString(dq)]], nil)
676- else if ((ba == b))
677- then invoke(aj, "unstakeAndGet", [dq], nil)
676+ let ci = if ((bb == a))
677+ then invoke(ak, "callFunction", ["withdraw", [toString(dr)]], nil)
678+ else if ((bb == b))
679+ then invoke(ak, "unstakeAndGet", [dr], nil)
678680 else throw("Wrong position type")
679- if ((ch == ch))
681+ if ((ci == ci))
680682 then {
681- let dw = ad(aI(cY))
682- let dx = ad(aI(cZ))
683- let dy = $Tuple2((dw - du), (dx - dv))
684- let dz = dy._1
685- let dA = dy._2
686- let dB = if ((dr > 0))
683+ let dx = ae(aJ(cZ))
684+ let dy = ae(aJ(da))
685+ let dz = $Tuple2((dx - dv), (dy - dw))
686+ let dA = dz._1
687+ let dB = dz._2
688+ let dC = if ((ds > 0))
687689 then {
688- let dC = if (if ((ds == cY))
689- then (dr > dz)
690+ let dD = if (if ((dt == cZ))
691+ then (ds > dA)
690692 else false)
691- then (dr - dz)
692- else if (if ((ds == cZ))
693- then (dr > dA)
693+ then (ds - dA)
694+ else if (if ((dt == da))
695+ then (ds > dB)
694696 else false)
695- then (dr - dA)
697+ then (ds - dB)
696698 else 0
697- let dD = if ((dC > 0))
698- then do(ba, aw, cY, cZ, aq, ar, dC, ds)
699+ let dE = if ((dD > 0))
700+ then dp(bb, ax, cZ, da, ar, as, dD, dt)
699701 else 0
700- if ((dD == dD))
702+ if ((dE == dE))
701703 then {
702- let dE = ad(aI(cY))
703- let dF = ad(aI(cZ))
704- $Tuple2((dE - du), (dF - dv))
704+ let dF = ae(aJ(cZ))
705+ let dG = ae(aJ(da))
706+ $Tuple2((dF - dv), (dG - dw))
705707 }
706708 else throw("Strict value is not equal to itself.")
707709 }
708- else $Tuple2(dz, dA)
709- let dG = dB._1
710- let dH = dB._2
711- $Tuple7(dG, cY, dH, cZ, dw, dx, ap)
710+ else $Tuple2(dA, dB)
711+ let dH = dC._1
712+ let dI = dC._2
713+ $Tuple7(dH, cZ, dI, da, dx, dy, aq)
712714 }
713715 else throw("Strict value is not equal to itself.")
714716 }
715717 else throw("Strict value is not equal to itself.")
716718 }
717719 else throw("Strict value is not equal to itself.")
718720 }
719721
720722
721-func dI (az,aw,dJ,dK) = {
722- let dL = valueOrErrorMessage(getInteger(this, (((((aw + "_") + az) + "_") + dJ) + t)), "Unknown position")
723- let dM = getIntegerValue(this, (((((aw + "_") + az) + "_") + dJ) + x))
724- let dN = av(aw)
725- let dO = Address(fromBase58String(az))
726- let dP = getIntegerValue(this, (((((aw + "_") + az) + "_") + dJ) + u))
727- let ds = getStringValue(this, (((((aw + "_") + az) + "_") + dJ) + v))
728- let dQ = if ((dP > 0))
729- then $Tuple2({
730- let am = invoke(aG(), "getAssetDebt", [false, ((((aw + "_") + az) + "_") + dJ), ds], nil)
731- if ($isInstanceOf(am, "Int"))
732- then am
733- else throw(($getType(am) + " couldn't be cast to Int"))
734- }, getIntegerValue(this, (aw + A)))
735- else $Tuple2(0, getIntegerValue(this, (aw + B)))
736- let dr = dQ._1
737- let dR = dQ._2
738- let dq = (dL + fraction(dL, (dR - dM), k))
739- let dS = dp(aw, dq, dr, ds)
740- if ((dS == dS))
723+func dJ (aA,ax,dK,dL) = {
724+ let dM = valueOrErrorMessage(getInteger(this, (((((ax + "_") + aA) + "_") + dK) + t)), "Unknown position")
725+ let dN = getIntegerValue(this, (((((ax + "_") + aA) + "_") + dK) + y))
726+ let dO = if (dL)
727+ then getIntegerValue(this, (ax + B))
728+ else getIntegerValue(this, (ax + C))
729+ (dM + fraction(dM, (dO - dN), k))
730+ }
731+
732+
733+func dP (aA,ax,dK,dQ) = {
734+ let dM = valueOrErrorMessage(getInteger(this, (((((ax + "_") + aA) + "_") + dK) + t)), "Unknown position")
735+ let dN = getIntegerValue(this, (((((ax + "_") + aA) + "_") + dK) + y))
736+ let dR = getIntegerValue(this, (((((ax + "_") + aA) + "_") + dK) + v))
737+ let dr = dJ(aA, ax, dK, (dR > 0))
738+ let dS = aw(ax)
739+ let dT = Address(fromBase58String(aA))
740+ let dt = getStringValue(this, (((((ax + "_") + aA) + "_") + dK) + w))
741+ let ds = if ((dR > 0))
741742 then {
742- let ap = dS._7
743- let dx = dS._6
744- let dw = dS._5
745- let cZ = dS._4
746- let dH = dS._3
747- let cY = dS._2
748- let dG = dS._1
749- let dT = if ((dr > 0))
750- then invoke(aG(), "repayFor", [((az + "_") + dJ)], [AttachedPayment(aI(ds), dr)])
743+ let an = invoke(aH(), "getAssetDebt", [false, ((((ax + "_") + aA) + "_") + dK), dt], nil)
744+ if ($isInstanceOf(an, "Int"))
745+ then an
746+ else throw(($getType(an) + " couldn't be cast to Int"))
747+ }
748+ else 0
749+ let dU = dq(ax, dr, ds, dt)
750+ if ((dU == dU))
751+ then {
752+ let aq = dU._7
753+ let dy = dU._6
754+ let dx = dU._5
755+ let da = dU._4
756+ let dI = dU._3
757+ let cZ = dU._2
758+ let dH = dU._1
759+ let dV = if ((ds > 0))
760+ then invoke(aH(), "repayFor", [((aA + "_") + dK)], [AttachedPayment(aJ(dt), ds)])
751761 else 0
752- if ((dT == dT))
753- then ([DeleteEntry((((((aw + "_") + az) + "_") + dJ) + t)), DeleteEntry((((((aw + "_") + az) + "_") + dJ) + x)), IntegerEntry((aw + y), (dN - dq)), ScriptTransfer(dO, dG, aI(cY)), ScriptTransfer(dO, dH, aI(cZ))] ++ bm(cY, cZ, ap))
762+ if ((dV == dV))
763+ then ([DeleteEntry((((((ax + "_") + aA) + "_") + dK) + t)), DeleteEntry((((((ax + "_") + aA) + "_") + dK) + y)), IntegerEntry((ax + z), (dS - dr)), ScriptTransfer(dT, dH, aJ(cZ)), ScriptTransfer(dT, dI, aJ(da))] ++ bn(cZ, da, aq))
754764 else throw("Strict value is not equal to itself.")
755765 }
756766 else throw("Strict value is not equal to itself.")
757767 }
758768
759769
760-func dU (dV) = {
761- let dW = split(valueOrErrorMessage(getString(this, (dV + I)), ("No request with id " + dV)), ",")
762- let az = dW[0]
763- let aw = dW[1]
764- let bp = parseIntValue(dW[2])
765- let bU = dW[3]
766- let br = parseIntValue(dW[4])
767- let bV = dW[5]
768- let aq = parseIntValue(dW[6])
769- let ar = parseIntValue(dW[7])
770- let ap = dW[8]
771- let dX = dW[9]
772- let dY = parseIntValue(dW[10])
773- $Tuple11(az, aw, bp, bU, br, bV, aq, ar, ap, dX, dY)
770+func dW (dX) = {
771+ let dY = split(valueOrErrorMessage(getString(this, (dX + J)), ("No request with id " + dX)), ",")
772+ let aA = dY[0]
773+ let ax = dY[1]
774+ let bq = parseIntValue(dY[2])
775+ let bV = dY[3]
776+ let bs = parseIntValue(dY[4])
777+ let bW = dY[5]
778+ let ar = parseIntValue(dY[6])
779+ let as = parseIntValue(dY[7])
780+ let aq = dY[8]
781+ let dZ = dY[9]
782+ let ea = parseIntValue(dY[10])
783+ $Tuple11(aA, ax, bq, bV, bs, bW, ar, as, aq, dZ, ea)
774784 }
775785
776786
777-@Callable(ac)
778-func replenishEVALONLY (aw,dZ,ea) = if (if ((100 > dZ))
787+@Callable(ad)
788+func replenishEVALONLY (ax,eb,ec) = if (if ((100 > eb))
779789 then true
780- else (dZ > 300))
790+ else (eb > 300))
781791 then throw("Leverage can't be <100 and >300")
782792 else {
783- let ba = valueOrErrorMessage(getString(this, (K + aw)), "Pool is not inited")
784- let eb = as(Address(fromBase58String(aw)), ba)
785- let bU = eb._1
786- let bV = eb._2
787- let aq = eb._3
788- let ar = eb._4
789- let ap = eb._5
790- let ec = if ((size(ac.payments) == 2))
791- then if ((aH(ac.payments[0].assetId) != bU))
793+ let bb = valueOrErrorMessage(getString(this, (L + ax)), "Pool is not inited")
794+ let ed = at(Address(fromBase58String(ax)), bb)
795+ let bV = ed._1
796+ let bW = ed._2
797+ let ar = ed._3
798+ let as = ed._4
799+ let aq = ed._5
800+ let ee = if ((size(ad.payments) == 2))
801+ then if ((aI(ad.payments[0].assetId) != bV))
792802 then throw("Wrong payment asset A")
793- else if ((aH(ac.payments[1].assetId) != bV))
803+ else if ((aI(ad.payments[1].assetId) != bW))
794804 then throw("Wrong payment asset B")
795- else $Tuple4(ac.payments[0].amount, bU, ac.payments[1].amount, bV)
796- else if ((size(ac.payments) == 1))
797- then if ((aH(ac.payments[0].assetId) == bU))
798- then $Tuple4(ac.payments[0].amount, bU, 0, bV)
799- else if ((aH(ac.payments[0].assetId) == bV))
800- then $Tuple4(0, bU, ac.payments[0].amount, bV)
805+ else $Tuple4(ad.payments[0].amount, bV, ad.payments[1].amount, bW)
806+ else if ((size(ad.payments) == 1))
807+ then if ((aI(ad.payments[0].assetId) == bV))
808+ then $Tuple4(ad.payments[0].amount, bV, 0, bW)
809+ else if ((aI(ad.payments[0].assetId) == bW))
810+ then $Tuple4(0, bV, ad.payments[0].amount, bW)
801811 else throw("Wrong payment")
802812 else throw("One or two payments expected")
803- let bp = ec._1
804- let bq = ec._2
805- let br = ec._3
806- let bs = ec._4
807- let ed = if ((dZ > 100))
813+ let bq = ee._1
814+ let br = ee._2
815+ let bs = ee._3
816+ let bt = ee._4
817+ let ef = if ((eb > 100))
808818 then {
809- let be = ( let am = invoke(X, "getTWAP60", [bq, false], nil)
810- if ($isInstanceOf(am, "(Int, Int)"))
811- then am
812- else throw(($getType(am) + " couldn't be cast to (Int, Int)")))._2
813- let bf = ( let am = invoke(X, "getTWAP60", [bs, false], nil)
814- if ($isInstanceOf(am, "(Int, Int)"))
815- then am
816- else throw(($getType(am) + " couldn't be cast to (Int, Int)")))._2
817- let ee = (fraction(be, bp, pow(10, 0, aJ(bq), 0, 0, DOWN)) + fraction(bf, br, pow(10, 0, aJ(bs), 0, 0, DOWN)))
818- let dP = fraction(ee, (dZ - 100), 100)
819- let dW = makeString([toString(ac.caller), aw, toString(bp), bq, toString(br), bs, toString(aq), toString(ar), ap, ea, toString(dP), toString(1)], ",")
820- let ef = {
821- let am = invoke(this, "createNewRequest", [dW], nil)
822- if ($isInstanceOf(am, "Int"))
823- then am
824- else throw(($getType(am) + " couldn't be cast to Int"))
819+ let bf = ( let an = invoke(Y, "getTWAP60", [br, false], nil)
820+ if ($isInstanceOf(an, "(Int, Int)"))
821+ then an
822+ else throw(($getType(an) + " couldn't be cast to (Int, Int)")))._2
823+ let bg = ( let an = invoke(Y, "getTWAP60", [bt, false], nil)
824+ if ($isInstanceOf(an, "(Int, Int)"))
825+ then an
826+ else throw(($getType(an) + " couldn't be cast to (Int, Int)")))._2
827+ let eg = (fraction(bf, bq, pow(10, 0, aK(br), 0, 0, DOWN)) + fraction(bg, bs, pow(10, 0, aK(bt), 0, 0, DOWN)))
828+ let dR = fraction(eg, (eb - 100), 100)
829+ let dY = makeString([toString(ad.caller), ax, toString(bq), br, toString(bs), bt, toString(ar), toString(as), aq, ec, toString(dR), toString(1)], ",")
830+ let eh = {
831+ let an = invoke(this, "createNewRequest", [dY], nil)
832+ if ($isInstanceOf(an, "Int"))
833+ then an
834+ else throw(($getType(an) + " couldn't be cast to Int"))
825835 }
826- if ((ef == ef))
836+ if ((eh == eh))
827837 then {
828- let eg = [((toString(ac.caller) + "_") + toString(1)), ap, ea, dP, toString(this), "replenishFromLandEVALONLY", toString(valueOrErrorMessage(ef, "Can't create new request"))]
829- let ch = reentrantInvoke(aG(), "flashPosition", eg, nil)
830- if ((ch == ch))
831- then $Tuple2(getIntegerValue(this, "EVALONLY_STAKEDAMOUNT"), dP)
838+ let ei = [((toString(ad.caller) + "_") + toString(1)), aq, ec, dR, toString(this), "replenishFromLandEVALONLY", toString(valueOrErrorMessage(eh, "Can't create new request"))]
839+ let ci = reentrantInvoke(aH(), "flashPosition", ei, nil)
840+ if ((ci == ci))
841+ then $Tuple2(getIntegerValue(this, "EVALONLY_STAKEDAMOUNT"), dR)
832842 else throw("Strict value is not equal to itself.")
833843 }
834844 else throw("Strict value is not equal to itself.")
835845 }
836- else $Tuple2(bT(ba, aw, h, bp, bU, br, bV, aq, ar, ap)._1, 0)
837- let eh = ed._1
838- let dP = ed._2
839- let ei = dp(aw, eh, dP, ea)
840- if ((ei == ei))
846+ else $Tuple2(bU(bb, ax, h, bq, bV, bs, bW, ar, as, aq)._1, 0)
847+ let ej = ef._1
848+ let dR = ef._2
849+ let ek = dq(ax, ej, dR, ec)
850+ if ((ek == ek))
841851 then {
842- let ej = ei._6
843- let ek = ei._5
844- let cZ = ei._4
845- let dH = ei._3
846- let cY = ei._2
847- let dG = ei._1
848- let el = as(Address(fromBase58String(aw)), ba)
849- let em = el._1
850- let en = el._2
851- let eo = el._3
852- let ep = el._4
853- let eq = el._5
854- let er = fraction(ar, j, aq)
855- let es = fraction(ep, j, eo)
856- let et = (j - fraction(er, j, es))
857- let eu = if ((0 > et))
858- then (et * -1)
859- else et
860- $Tuple2(nil, [ek, ej, eu])
852+ let el = ek._6
853+ let em = ek._5
854+ let da = ek._4
855+ let dI = ek._3
856+ let cZ = ek._2
857+ let dH = ek._1
858+ let en = at(Address(fromBase58String(ax)), bb)
859+ let eo = en._1
860+ let ep = en._2
861+ let eq = en._3
862+ let er = en._4
863+ let es = en._5
864+ let et = fraction(as, j, ar)
865+ let eu = fraction(er, j, eq)
866+ let ev = (j - fraction(et, j, eu))
867+ let ew = if ((0 > ev))
868+ then (ev * -1)
869+ else ev
870+ $Tuple2(nil, [em, el, ew])
861871 }
862872 else throw("Strict value is not equal to itself.")
863873 }
864874
865875
866876
867-@Callable(ac)
868-func replenishFromLandEVALONLY (dV) = {
869- let ev = dU(dV)
870- let az = ev._1
871- let aw = ev._2
872- let bp = ev._3
873- let bU = ev._4
874- let br = ev._5
875- let bV = ev._6
876- let aq = ev._7
877- let ar = ev._8
878- let ap = ev._9
879- let dX = ev._10
880- let dY = ev._11
881- if ((size(ac.payments) != 1))
877+@Callable(ad)
878+func replenishFromLandEVALONLY (dX) = {
879+ let ex = dW(dX)
880+ let aA = ex._1
881+ let ax = ex._2
882+ let bq = ex._3
883+ let bV = ex._4
884+ let bs = ex._5
885+ let bW = ex._6
886+ let ar = ex._7
887+ let as = ex._8
888+ let aq = ex._9
889+ let dZ = ex._10
890+ let ea = ex._11
891+ if ((size(ad.payments) != 1))
882892 then throw("Wrong payment size")
883- else if (if ((aH(ac.payments[0].assetId) != dX))
893+ else if (if ((aI(ad.payments[0].assetId) != dZ))
884894 then true
885- else (ac.payments[0].amount != dY))
895+ else (ad.payments[0].amount != ea))
886896 then throw("Wrong payment")
887897 else {
888- let ew = if ((bU == dX))
889- then $Tuple2((bp + ac.payments[0].amount), br)
890- else $Tuple2(bp, (br + ac.payments[0].amount))
891- let ex = ew._1
892- let ey = ew._2
893- let ba = valueOrErrorMessage(getString(this, (K + aw)), "Unknown pool")
894- let ez = bT(ba, aw, g, bp, bU, br, bV, aq, ar, ap)
895- let eh = ez._1
896- let eA = ez._2
897- $Tuple2([IntegerEntry("EVALONLY_STAKEDAMOUNT", eh)], eh)
898+ let ey = if ((bV == dZ))
899+ then $Tuple2((bq + ad.payments[0].amount), bs)
900+ else $Tuple2(bq, (bs + ad.payments[0].amount))
901+ let ez = ey._1
902+ let eA = ey._2
903+ let bb = valueOrErrorMessage(getString(this, (L + ax)), "Unknown pool")
904+ let eB = bU(bb, ax, g, bq, bV, bs, bW, ar, as, aq)
905+ let ej = eB._1
906+ let eC = eB._2
907+ $Tuple2([IntegerEntry("EVALONLY_STAKEDAMOUNT", ej)], ej)
898908 }
899909 }
900910
901911
902912
903-@Callable(ac)
904-func replenish (aw,dZ,ea) = if (if ((100 > dZ))
913+@Callable(ad)
914+func getShareAssetPriceREADONLY (aq) = {
915+ let eD = aZ([aq])
916+ $Tuple2(nil, eD[0])
917+ }
918+
919+
920+
921+@Callable(ad)
922+func getUserPositionShareAmount (aA,bZ) = {
923+ let ax = valueOrErrorMessage(getString(this, (((aA + "_") + bZ) + u)), "Unknown position")
924+ let dR = getIntegerValue(this, (((((ax + "_") + aA) + "_") + bZ) + v))
925+ let dr = dJ(aA, ax, bZ, (dR > 0))
926+ $Tuple2(nil, dr)
927+ }
928+
929+
930+
931+@Callable(ad)
932+func replenish (ax,eb,ec) = if (if ((100 > eb))
905933 then true
906- else (dZ > 300))
934+ else (eb > 300))
907935 then throw("Leverage can't be <100 and >300")
908936 else {
909- let ba = valueOrErrorMessage(getString(this, (K + aw)), "Pool is not inited")
910- let eB = as(Address(fromBase58String(aw)), ba)
911- let bU = eB._1
912- let bV = eB._2
913- let aq = eB._3
914- let ar = eB._4
915- let ap = eB._5
916- let eC = if ((size(ac.payments) == 2))
917- then if ((aH(ac.payments[0].assetId) != bU))
937+ let bb = valueOrErrorMessage(getString(this, (L + ax)), "Pool is not inited")
938+ let eE = at(Address(fromBase58String(ax)), bb)
939+ let bV = eE._1
940+ let bW = eE._2
941+ let ar = eE._3
942+ let as = eE._4
943+ let aq = eE._5
944+ let eF = if ((size(ad.payments) == 2))
945+ then if ((aI(ad.payments[0].assetId) != bV))
918946 then throw("Wrong payment asset A")
919- else if ((aH(ac.payments[1].assetId) != bV))
947+ else if ((aI(ad.payments[1].assetId) != bW))
920948 then throw("Wrong payment asset B")
921- else $Tuple4(ac.payments[0].amount, bU, ac.payments[1].amount, bV)
922- else if ((size(ac.payments) == 1))
923- then if ((aH(ac.payments[0].assetId) == bU))
924- then $Tuple4(ac.payments[0].amount, bU, 0, bV)
925- else if ((aH(ac.payments[0].assetId) == bV))
926- then $Tuple4(0, bU, ac.payments[0].amount, bV)
949+ else $Tuple4(ad.payments[0].amount, bV, ad.payments[1].amount, bW)
950+ else if ((size(ad.payments) == 1))
951+ then if ((aI(ad.payments[0].assetId) == bV))
952+ then $Tuple4(ad.payments[0].amount, bV, 0, bW)
953+ else if ((aI(ad.payments[0].assetId) == bW))
954+ then $Tuple4(0, bV, ad.payments[0].amount, bW)
927955 else throw("Wrong payment")
928956 else throw("One or two payments expected")
929- let bp = eC._1
930- let bq = eC._2
931- let br = eC._3
932- let bs = eC._4
933- let eD = ay(aw, toString(ac.caller))
934- if ((dZ > 100))
957+ let bq = eF._1
958+ let br = eF._2
959+ let bs = eF._3
960+ let bt = eF._4
961+ let eG = az(ax, toString(ad.caller))
962+ if ((eb > 100))
935963 then {
936- let be = ( let am = invoke(X, "getTWAP60", [bq, false], nil)
937- if ($isInstanceOf(am, "(Int, Int)"))
938- then am
939- else throw(($getType(am) + " couldn't be cast to (Int, Int)")))._2
940- let bf = ( let am = invoke(X, "getTWAP60", [bs, false], nil)
941- if ($isInstanceOf(am, "(Int, Int)"))
942- then am
943- else throw(($getType(am) + " couldn't be cast to (Int, Int)")))._2
944- let ee = (fraction(be, bp, pow(10, 0, aJ(bq), 0, 0, DOWN)) + fraction(bf, br, pow(10, 0, aJ(bs), 0, 0, DOWN)))
945- let dP = fraction(ee, (dZ - 100), 100)
946- let dW = makeString([toString(ac.caller), aw, toString(bp), bq, toString(br), bs, toString(aq), toString(ar), ap, ea, toString(dP)], ",")
947- let ef = {
948- let am = invoke(this, "createNewRequest", [dW], nil)
949- if ($isInstanceOf(am, "Int"))
950- then am
951- else throw(($getType(am) + " couldn't be cast to Int"))
964+ let bf = ( let an = invoke(Y, "getTWAP60", [br, false], nil)
965+ if ($isInstanceOf(an, "(Int, Int)"))
966+ then an
967+ else throw(($getType(an) + " couldn't be cast to (Int, Int)")))._2
968+ let bg = ( let an = invoke(Y, "getTWAP60", [bt, false], nil)
969+ if ($isInstanceOf(an, "(Int, Int)"))
970+ then an
971+ else throw(($getType(an) + " couldn't be cast to (Int, Int)")))._2
972+ let eg = (fraction(bf, bq, pow(10, 0, aK(br), 0, 0, DOWN)) + fraction(bg, bs, pow(10, 0, aK(bt), 0, 0, DOWN)))
973+ let dR = fraction(eg, (eb - 100), 100)
974+ let dY = makeString([toString(ad.caller), ax, toString(bq), br, toString(bs), bt, toString(ar), toString(as), aq, ec, toString(dR)], ",")
975+ let eh = {
976+ let an = invoke(this, "createNewRequest", [dY], nil)
977+ if ($isInstanceOf(an, "Int"))
978+ then an
979+ else throw(($getType(an) + " couldn't be cast to Int"))
952980 }
953- if ((ef == ef))
981+ if ((eh == eh))
954982 then {
955- let eg = [((toString(ac.caller) + "_") + toString(eD)), ap, ea, dP, toString(this), "replenishFromLand", toString(valueOrErrorMessage(ef, "Can't create new request"))]
956- let ch = reentrantInvoke(aG(), "flashPosition", eg, nil)
957- if ((ch == ch))
983+ let ei = [((toString(ad.caller) + "_") + toString(eG)), aq, ec, dR, toString(this), "replenishFromLand", toString(valueOrErrorMessage(eh, "Can't create new request"))]
984+ let ci = reentrantInvoke(aH(), "flashPosition", ei, nil)
985+ if ((ci == ci))
958986 then nil
959987 else throw("Strict value is not equal to itself.")
960988 }
961989 else throw("Strict value is not equal to itself.")
962990 }
963991 else {
964- let eE = bT(ba, aw, h, bp, bU, br, bV, aq, ar, ap)
965- let eh = eE._1
966- let eA = eE._2
967- (bW(aw, toString(ac.caller), eh, eA, eD, ap, ba, false) ++ bm(bU, bV, ap))
992+ let eH = bU(bb, ax, h, bq, bV, bs, bW, ar, as, aq)
993+ let ej = eH._1
994+ let eC = eH._2
995+ (bX(ax, toString(ad.caller), ej, eC, eG, aq, bb, false) ++ bn(bV, bW, aq))
968996 }
969997 }
970998
971999
9721000
973-@Callable(ac)
974-func replenishFromLand (dV) = {
975- let eF = dU(dV)
976- let az = eF._1
977- let aw = eF._2
978- let bp = eF._3
979- let bU = eF._4
980- let br = eF._5
981- let bV = eF._6
982- let aq = eF._7
983- let ar = eF._8
984- let ap = eF._9
985- let dX = eF._10
986- let dY = eF._11
987- if ((size(ac.payments) != 1))
1001+@Callable(ad)
1002+func replenishFromLand (dX) = {
1003+ let eI = dW(dX)
1004+ let aA = eI._1
1005+ let ax = eI._2
1006+ let bq = eI._3
1007+ let bV = eI._4
1008+ let bs = eI._5
1009+ let bW = eI._6
1010+ let ar = eI._7
1011+ let as = eI._8
1012+ let aq = eI._9
1013+ let dZ = eI._10
1014+ let ea = eI._11
1015+ if ((size(ad.payments) != 1))
9881016 then throw("Wrong payment size")
989- else if (if ((aH(ac.payments[0].assetId) != dX))
1017+ else if (if ((aI(ad.payments[0].assetId) != dZ))
9901018 then true
991- else (ac.payments[0].amount != dY))
1019+ else (ad.payments[0].amount != ea))
9921020 then throw("Wrong payment")
9931021 else {
994- let eG = if ((bU == dX))
995- then $Tuple2((bp + ac.payments[0].amount), br)
996- else $Tuple2(bp, (br + ac.payments[0].amount))
997- let ex = eG._1
998- let ey = eG._2
999- let ba = valueOrErrorMessage(getString(this, (K + aw)), "Unknown pool")
1000- let eH = bT(ba, aw, g, bp, bU, br, bV, aq, ar, ap)
1001- let eh = eH._1
1002- let eA = eH._2
1003- let bY = ay(aw, toString(ac.caller))
1004- let eI = [IntegerEntry((((((aw + "_") + az) + "_") + toString(bY)) + u), dY), StringEntry((((((aw + "_") + az) + "_") + toString(bY)) + v), dX)]
1005- let eJ = bW(aw, az, eh, eA, bY, ap, ba, true)
1006- $Tuple2((((eJ ++ bm(bU, bV, ap)) ++ eI) :+ DeleteEntry((dV + I))), eh)
1022+ let eJ = if ((bV == dZ))
1023+ then $Tuple2((bq + ad.payments[0].amount), bs)
1024+ else $Tuple2(bq, (bs + ad.payments[0].amount))
1025+ let ez = eJ._1
1026+ let eA = eJ._2
1027+ let bb = valueOrErrorMessage(getString(this, (L + ax)), "Unknown pool")
1028+ let eK = bU(bb, ax, g, bq, bV, bs, bW, ar, as, aq)
1029+ let ej = eK._1
1030+ let eC = eK._2
1031+ let bZ = az(ax, toString(ad.caller))
1032+ let eL = [IntegerEntry((((((ax + "_") + aA) + "_") + toString(bZ)) + v), ea), StringEntry((((((ax + "_") + aA) + "_") + toString(bZ)) + w), dZ)]
1033+ let eM = bX(ax, aA, ej, eC, bZ, aq, bb, true)
1034+ $Tuple2((((eM ++ bn(bV, bW, aq)) ++ eL) :+ DeleteEntry((dX + J))), ej)
10071035 }
10081036 }
10091037
10101038
10111039
1012-@Callable(ac)
1013-func withdraw (aw,dJ) = dI(toString(ac.caller), aw, toString(dJ), false)
1040+@Callable(ad)
1041+func withdraw (ax,dK) = dP(toString(ad.caller), ax, toString(dK), false)
10141042
10151043
10161044
1017-@Callable(ac)
1018-func createUpdateStopLoss (dJ,eK,ae,eL) = {
1019- let eM = ( let am = invoke(X, "getTWAP60", [ae, false], nil)
1020- if ($isInstanceOf(am, "(Int, Int)"))
1021- then am
1022- else throw(($getType(am) + " couldn't be cast to (Int, Int)")))._1
1023- if (!(isDefined(getInteger(this, (((((eK + "_") + toString(ac.caller)) + "_") + toString(dJ)) + t)))))
1045+@Callable(ad)
1046+func createUpdateStopLoss (dK,eN,af,eO) = {
1047+ let eP = ( let an = invoke(Y, "getTWAP60", [af, false], nil)
1048+ if ($isInstanceOf(an, "(Int, Int)"))
1049+ then an
1050+ else throw(($getType(an) + " couldn't be cast to (Int, Int)")))._1
1051+ if (!(isDefined(getInteger(this, (((((eN + "_") + toString(ad.caller)) + "_") + toString(dK)) + t)))))
10241052 then throw("There are no user position")
1025- else if ((0 >= eL))
1053+ else if ((0 >= eO))
10261054 then throw("Price must be greater than 0")
1027- else if ((eL > eM))
1055+ else if ((eO > eP))
10281056 then throw("Price must be less than current token price")
1029- else [IntegerEntry((((((((toString(ac.caller) + "_") + toString(dJ)) + "_") + eK) + "_") + ae) + O), eL)]
1057+ else [IntegerEntry((((((((toString(ad.caller) + "_") + toString(dK)) + "_") + eN) + "_") + af) + P), eO)]
10301058 }
10311059
10321060
10331061
1034-@Callable(ac)
1035-func deleteStopLoss (dJ,eK,ae) = if (!(isDefined(getInteger(this, (((((((toString(ac.caller) + "_") + toString(dJ)) + "_") + eK) + "_") + ae) + O)))))
1062+@Callable(ad)
1063+func deleteStopLoss (dK,eN,af) = if (!(isDefined(getInteger(this, (((((((toString(ad.caller) + "_") + toString(dK)) + "_") + eN) + "_") + af) + P)))))
10361064 then throw("No entry")
1037- else [DeleteEntry((((((((toString(ac.caller) + "_") + toString(dJ)) + "_") + eK) + "_") + ae) + O))]
1065+ else [DeleteEntry((((((((toString(ad.caller) + "_") + toString(dK)) + "_") + eN) + "_") + af) + P))]
10381066
10391067
10401068
1041-@Callable(ac)
1042-func createNewRequest (eN) = valueOrElse(ab(ac), {
1043- let ef = (valueOrElse(getInteger(this, J), 0) + 1)
1044- $Tuple2([StringEntry((toString(ef) + I), eN), IntegerEntry(J, ef)], ef)
1069+@Callable(ad)
1070+func createNewRequest (eQ) = valueOrElse(ac(ad), {
1071+ let eh = (valueOrElse(getInteger(this, K), 0) + 1)
1072+ $Tuple2([StringEntry((toString(eh) + J), eQ), IntegerEntry(K, eh)], eh)
10451073 })
10461074
10471075
10481076
1049-@Callable(ac)
1050-func stopLoss (az,dJ,aw,ae) = {
1051- let eM = ( let am = invoke(X, "getTWAP60", [ae, false], nil)
1052- if ($isInstanceOf(am, "(Int, Int)"))
1053- then am
1054- else throw(($getType(am) + " couldn't be cast to (Int, Int)")))._1
1055- if (!(isDefined(getInteger(this, (((((((az + "_") + toString(dJ)) + "_") + aw) + "_") + ae) + O)))))
1077+@Callable(ad)
1078+func stopLoss (aA,dK,ax,af) = {
1079+ let eP = ( let an = invoke(Y, "getTWAP60", [af, false], nil)
1080+ if ($isInstanceOf(an, "(Int, Int)"))
1081+ then an
1082+ else throw(($getType(an) + " couldn't be cast to (Int, Int)")))._1
1083+ if (!(isDefined(getInteger(this, (((((((aA + "_") + toString(dK)) + "_") + ax) + "_") + af) + P)))))
10561084 then throw("No entry")
1057- else (dI(toString(ac.caller), aw, toString(dJ), true) :+ DeleteEntry((((((((az + "_") + toString(dJ)) + "_") + aw) + "_") + ae) + O)))
1085+ else (dP(toString(ad.caller), ax, toString(dK), true) :+ DeleteEntry((((((((aA + "_") + toString(dK)) + "_") + ax) + "_") + af) + P)))
10581086 }
10591087
10601088
10611089
1062-@Callable(ac)
1063-func liquidate (az,dJ,aw,eO) = {
1064- let ba = valueOrErrorMessage(getString(this, (K + aw)), "Pool is not inited")
1065- let eP = as(Address(fromBase58String(aw)), ba)
1066- let bU = eP._1
1067- let bV = eP._2
1068- let aq = eP._3
1069- let ar = eP._4
1070- let ap = eP._5
1071- let dL = valueOrErrorMessage(getInteger(this, (((((aw + "_") + az) + "_") + toString(dJ)) + t)), "Unknown position")
1072- let dM = getIntegerValue(this, (((((aw + "_") + az) + "_") + toString(dJ)) + x))
1073- let dN = av(aw)
1074- let dO = Address(fromBase58String(az))
1075- let dP = getIntegerValue(this, (((((aw + "_") + az) + "_") + toString(dJ)) + u))
1076- let ds = getStringValue(this, (((((aw + "_") + az) + "_") + toString(dJ)) + v))
1077- let eQ = if ((dP > 0))
1090+@Callable(ad)
1091+func liquidate (aA,dK,ax,eR) = {
1092+ let bb = valueOrErrorMessage(getString(this, (L + ax)), "Pool is not inited")
1093+ let eS = at(Address(fromBase58String(ax)), bb)
1094+ let bV = eS._1
1095+ let bW = eS._2
1096+ let ar = eS._3
1097+ let as = eS._4
1098+ let aq = eS._5
1099+ let dM = valueOrErrorMessage(getInteger(this, (((((ax + "_") + aA) + "_") + toString(dK)) + t)), "Unknown position")
1100+ let dN = getIntegerValue(this, (((((ax + "_") + aA) + "_") + toString(dK)) + y))
1101+ let dS = aw(ax)
1102+ let dT = Address(fromBase58String(aA))
1103+ let dR = getIntegerValue(this, (((((ax + "_") + aA) + "_") + toString(dK)) + v))
1104+ let dt = getStringValue(this, (((((ax + "_") + aA) + "_") + toString(dK)) + w))
1105+ let eT = if ((dR > 0))
10781106 then $Tuple2({
1079- let am = invoke(aG(), "getAssetDebt", [false, ((((aw + "_") + az) + "_") + toString(dJ)), ds], nil)
1080- if ($isInstanceOf(am, "Int"))
1081- then am
1082- else throw(($getType(am) + " couldn't be cast to Int"))
1083- }, getIntegerValue(this, (aw + A)))
1084- else $Tuple2(0, getIntegerValue(this, (aw + B)))
1085- let dr = eQ._1
1086- let dR = eQ._2
1087- let dq = (dL + fraction(dL, (dR - dM), k))
1088- let bl = aY([ap])[0]
1089- let eR = aM([ds])[0]
1090- let eS = fraction(dq, bl, aJ(ap))
1091- let eT = fraction(dP, eR, aL(ds))
1092- let eU = (eS - eT)
1107+ let an = invoke(aH(), "getAssetDebt", [false, ((((ax + "_") + aA) + "_") + toString(dK)), dt], nil)
1108+ if ($isInstanceOf(an, "Int"))
1109+ then an
1110+ else throw(($getType(an) + " couldn't be cast to Int"))
1111+ }, getIntegerValue(this, (ax + B)))
1112+ else $Tuple2(0, getIntegerValue(this, (ax + C)))
1113+ let ds = eT._1
1114+ let dO = eT._2
1115+ let dr = (dM + fraction(dM, (dO - dN), k))
1116+ let bm = aZ([aq])[0]
1117+ let eU = aN([dt])[0]
1118+ let eV = fraction(dr, bm, aK(aq))
1119+ let eW = fraction(dR, eU, aM(dt))
1120+ let eX = (eV - eW)
10931121 nil
10941122 }
10951123
10961124
10971125
1098-@Callable(ac)
1099-func capitalizeExKeeper (aw,at,eV,eW,eX,cn,co,cp,cq,cr,cs,ct) = {
1100- let eY = if (eX)
1101- then cf(at, aw)
1126+@Callable(ad)
1127+func capitalizeExKeeper (ax,au,eY,eZ,fa,co,cp,cq,cr,cs,ct,cu) = {
1128+ let fb = if (fa)
1129+ then cg(au, ax)
11021130 else {
1103- let eZ = if ((at == a))
1104- then Z
1105- else aa
1106- $Tuple2(eW, eZ)
1131+ let fc = if ((au == a))
1132+ then aa
1133+ else ab
1134+ $Tuple2(eZ, fc)
11071135 }
1108- let fa = eY._1
1109- let eZ = eY._2
1110- let fb = cj(eV, eW, eZ, cn, co, cp, cq, cr, cs, ct)
1111- let bA = (fa - eW)
1112- let fc = if ((bA > 0))
1113- then [IntegerEntry((aw + M), (bA + valueOrElse(getInteger(this, (aw + M)), 0)))]
1136+ let fd = fb._1
1137+ let fc = fb._2
1138+ let fe = ck(eY, eZ, fc, co, cp, cq, cr, cs, ct, cu)
1139+ let bB = (fd - eZ)
1140+ let ff = if ((bB > 0))
1141+ then [IntegerEntry((ax + N), (bB + valueOrElse(getInteger(this, (ax + N)), 0)))]
11141142 else nil
1115- (cF(aw, at, eV, fb) ++ fc)
1143+ (cG(ax, au, eY, fe) ++ ff)
11161144 }
11171145
11181146
11191147
1120-@Callable(ac)
1121-func capitalizeExPuzzle (aw,at,eV,eW,eX,cw,cx,ct) = {
1122- let fd = if (eX)
1123- then cf(at, aw)
1148+@Callable(ad)
1149+func capitalizeExPuzzle (ax,au,eY,eZ,fa,cx,cy,cu) = {
1150+ let fg = if (fa)
1151+ then cg(au, ax)
11241152 else {
1125- let eZ = if ((at == a))
1126- then Z
1127- else aa
1128- $Tuple2(eW, eZ)
1153+ let fc = if ((au == a))
1154+ then aa
1155+ else ab
1156+ $Tuple2(eZ, fc)
11291157 }
1130- let fa = fd._1
1131- let eZ = fd._2
1132- let fb = cv(eV, eW, eZ, cw, cx, ct)
1133- let bA = (fa - eW)
1134- let fc = if ((bA > 0))
1135- then [IntegerEntry((aw + M), (bA + valueOrElse(getInteger(this, (aw + M)), 0)))]
1158+ let fd = fg._1
1159+ let fc = fg._2
1160+ let fe = cw(eY, eZ, fc, cx, cy, cu)
1161+ let bB = (fd - eZ)
1162+ let ff = if ((bB > 0))
1163+ then [IntegerEntry((ax + N), (bB + valueOrElse(getInteger(this, (ax + N)), 0)))]
11361164 else nil
1137- (cF(aw, at, eV, fb) ++ fc)
1165+ (cG(ax, au, eY, fe) ++ ff)
11381166 }
11391167
11401168
11411169
1142-@Callable(ac)
1143-func capitalizeExSwopFi (aw,at,eV,eW,eX,cz,cA,cB,cC,cD,cE,ct) = {
1144- let fe = if (eX)
1145- then cf(at, aw)
1170+@Callable(ad)
1171+func capitalizeExSwopFi (ax,au,eY,eZ,fa,cA,cB,cC,cD,cE,cF,cu) = {
1172+ let fh = if (fa)
1173+ then cg(au, ax)
11461174 else {
1147- let eZ = if ((at == a))
1148- then Z
1149- else aa
1150- $Tuple2(eW, eZ)
1175+ let fc = if ((au == a))
1176+ then aa
1177+ else ab
1178+ $Tuple2(eZ, fc)
11511179 }
1152- let fa = fe._1
1153- let eZ = fe._2
1154- let fb = cy(eV, eW, eZ, cz, cA, cB, cC, cD, cE, ct)
1155- let bA = (fa - eW)
1156- let fc = if ((bA > 0))
1157- then [IntegerEntry((aw + M), (bA + valueOrElse(getInteger(this, (aw + M)), 0)))]
1180+ let fd = fh._1
1181+ let fc = fh._2
1182+ let fe = cz(eY, eZ, fc, cA, cB, cC, cD, cE, cF, cu)
1183+ let bB = (fd - eZ)
1184+ let ff = if ((bB > 0))
1185+ then [IntegerEntry((ax + N), (bB + valueOrElse(getInteger(this, (ax + N)), 0)))]
11581186 else nil
1159- (cF(aw, at, eV, fb) ++ fc)
1187+ (cG(ax, au, eY, fe) ++ ff)
11601188 }
11611189
11621190
11631191
1164-@Callable(ac)
1165-func initNewPool (at,aj,ff,fg,fh,fi,fj,fk) = if (if ((at != a))
1166- then (at != b)
1192+@Callable(ad)
1193+func initNewPool (au,ak,fi,fj,fk,fl,fm,fn) = if (if ((au != a))
1194+ then (au != b)
11671195 else false)
11681196 then throw("Wrong type")
11691197 else {
1170- let fl = as(Address(fromBase58String(aj)), at)
1171- let an = fl._1
1172- let ao = fl._2
1173- let fm = fl._3
1174- let fn = fl._4
1175- let ap = fl._5
1176-[IntegerEntry((aj + C), ff), IntegerEntry((aj + D), fg), IntegerEntry((aj + E), fh), IntegerEntry((aj + F), fi), IntegerEntry((aj + G), fj), IntegerEntry((aj + H), fk), IntegerEntry((aj + A), 0), IntegerEntry((aj + B), 0), StringEntry((K + aj), at), StringEntry((ap + L), aj)]
1198+ let fo = at(Address(fromBase58String(ak)), au)
1199+ let ao = fo._1
1200+ let ap = fo._2
1201+ let fp = fo._3
1202+ let fq = fo._4
1203+ let aq = fo._5
1204+[IntegerEntry((ak + D), fi), IntegerEntry((ak + E), fj), IntegerEntry((ak + F), fk), IntegerEntry((ak + G), fl), IntegerEntry((ak + H), fm), IntegerEntry((ak + I), fn), IntegerEntry((ak + B), 0), IntegerEntry((ak + C), 0), StringEntry((L + ak), au), StringEntry((aq + M), ak)]
11771205 }
11781206
11791207
11801208
1181-@Callable(ac)
1182-func capitalizeTest (aw,ba,cG,cH) = {
1183- let aj = Address(fromBase58String(aw))
1184- let fo = as(aj, ba)
1185- let bU = fo._1
1186- let bV = fo._2
1187- let aq = fo._3
1188- let ar = fo._4
1189- let ap = fo._5
1190- let fp = if ((cG == bU))
1191- then $Tuple2(cH, 0)
1192- else $Tuple2(0, cH)
1193- let bp = fp._1
1194- let br = fp._2
1195- let fq = bT(ba, aw, i, bp, bU, br, bV, aq, ar, ap)
1196- let bX = fq._1
1197- let cL = fq._2
1198- let cM = valueOrElse(getInteger(this, (aw + A)), 0)
1199- let cN = valueOrElse(getInteger(this, (aw + B)), 0)
1200- let cO = av(aw)
1201- let cP = ax(aw)
1202- let cQ = fraction(cP, j, cO)
1203- let cR = fraction(bX, cQ, j)
1204- let cS = (bX - cR)
1205- let cT = (cM + fraction(cR, k, cP))
1206- let cU = (cN + fraction(cS, k, (cO - cP)))
1207- let cV = fraction(cR, aA(aw, d), l)
1208- let cW = fraction(cS, aA(aw, c), l)
1209- ([IntegerEntry((aw + A), cT), IntegerEntry((aw + B), cU), IntegerEntry((aw + y), (((cO + bX) - cV) - cW)), IntegerEntry((aw + z), ((cP + cR) - cV)), ScriptTransfer(V, (cV + cW), fromBase58String(ap))] ++ bm(bU, bV, ap))
1209+@Callable(ad)
1210+func capitalizeTest (ax,bb,cH,cI) = {
1211+ let ak = Address(fromBase58String(ax))
1212+ let fr = at(ak, bb)
1213+ let bV = fr._1
1214+ let bW = fr._2
1215+ let ar = fr._3
1216+ let as = fr._4
1217+ let aq = fr._5
1218+ let fs = if ((cH == bV))
1219+ then $Tuple2(cI, 0)
1220+ else $Tuple2(0, cI)
1221+ let bq = fs._1
1222+ let bs = fs._2
1223+ let ft = bU(bb, ax, i, bq, bV, bs, bW, ar, as, aq)
1224+ let bY = ft._1
1225+ let cM = ft._2
1226+ let cN = valueOrElse(getInteger(this, (ax + B)), 0)
1227+ let cO = valueOrElse(getInteger(this, (ax + C)), 0)
1228+ let cP = aw(ax)
1229+ let cQ = ay(ax)
1230+ let cR = fraction(cQ, j, cP)
1231+ let cS = fraction(bY, cR, j)
1232+ let cT = (bY - cS)
1233+ let cU = (cN + fraction(cS, k, cQ))
1234+ let cV = (cO + fraction(cT, k, (cP - cQ)))
1235+ let cW = fraction(cS, aB(ax, d), l)
1236+ let cX = fraction(cT, aB(ax, c), l)
1237+ ([IntegerEntry((ax + B), cU), IntegerEntry((ax + C), cV), IntegerEntry((ax + z), (((cP + bY) - cW) - cX)), IntegerEntry((ax + A), ((cQ + cS) - cW)), ScriptTransfer(W, (cW + cX), fromBase58String(aq))] ++ bn(bV, bW, aq))
12101238 }
12111239
12121240
12131241
1214-@Callable(ac)
1215-func claimFarmedTest (at,aw) = if ((at == a))
1242+@Callable(ad)
1243+func claimFarmedTest (au,ax) = if ((au == a))
12161244 then {
1217- let cg = ad(Z)
1218- if ((cg == cg))
1245+ let ch = ae(aa)
1246+ if ((ch == ch))
12191247 then {
1220- let ch = invoke(aC(), "claim", [aw], nil)
1221- if ((ch == ch))
1248+ let ci = invoke(aD(), "claim", [ax], nil)
1249+ if ((ci == ci))
12221250 then {
1223- let ci = ad(Z)
1224- $Tuple2(nil, $Tuple2((ci - cg), Z))
1251+ let cj = ae(aa)
1252+ $Tuple2(nil, $Tuple2((cj - ch), aa))
12251253 }
12261254 else throw("Strict value is not equal to itself.")
12271255 }
12281256 else throw("Strict value is not equal to itself.")
12291257 }
1230- else if ((at == b))
1258+ else if ((au == b))
12311259 then {
1232- let cg = ad(aa)
1233- if ((cg == cg))
1260+ let ch = ae(ab)
1261+ if ((ch == ch))
12341262 then {
1235- let ch = invoke(aD(Address(fromBase58String(aw))), "claimWX", [aw], nil)
1236- if ((ch == ch))
1263+ let ci = invoke(aE(Address(fromBase58String(ax))), "claimWX", [ax], nil)
1264+ if ((ci == ci))
12371265 then {
1238- let ci = ad(aa)
1239- $Tuple2(nil, $Tuple2((ci - cg), aa))
1266+ let cj = ae(ab)
1267+ $Tuple2(nil, $Tuple2((cj - ch), ab))
12401268 }
12411269 else throw("Strict value is not equal to itself.")
12421270 }
12431271 else throw("Strict value is not equal to itself.")
12441272 }
12451273 else throw("Wrong pool type")
12461274
12471275
1248-@Verifier(fr)
1249-func fs () = sigVerify(fr.bodyBytes, fr.proofs[0], fr.senderPublicKey)
1276+@Verifier(fu)
1277+func fv () = sigVerify(fu.bodyBytes, fu.proofs[0], fu.senderPublicKey)
12501278

github/deemru/w8io/169f3d6 
483.86 ms