tx · AyhzvFQeNbLSeaLq5z1UEcTGbpMRYAba7CrywXMMaqQo

3MvRWw2FPEimFCTGtK7qY9uAJbM7XJ4ZfJS:  -0.04500000 Waves

2023.06.14 08:13 [2621902] smart account 3MvRWw2FPEimFCTGtK7qY9uAJbM7XJ4ZfJS > SELF 0.00000000 Waves

{ "type": 13, "id": "AyhzvFQeNbLSeaLq5z1UEcTGbpMRYAba7CrywXMMaqQo", "fee": 4500000, "feeAssetId": null, "timestamp": 1686719646536, "version": 2, "chainId": 84, "sender": "3MvRWw2FPEimFCTGtK7qY9uAJbM7XJ4ZfJS", "senderPublicKey": "HP8sssVq1866F7CaPQJwgFrt6fsqhQjKwM84cL1wjD2a", "proofs": [ "4h3mbmYfmBBX3yKPtqunzq7THjpz72A5dorH9XwKhkBHMq9yZibc2kArqKKzYoab7jAZembMymYkVmaJkh3GrUub" ], "script": "base64:BgKYAQgCEgcKBQgBCAEBEgMKAQgSBAoCCAgSBQoDCBgYEgUKAwgBCBIDCgEIEgQKAggBEgYKBAEICAESBQoDAQgIEgMKAQgSBgoECAEICBIFCgMICAESDgoMCAgIAQQRGBgRAQEYEgoKCAgICAEECAEYEg4KDAgICAEEGBgYGBgBGBIKCggICAEBAQEBARIGCgQICAgBEgQKAggIYQAHU0ZfUE9PTAICU0YAB1dYX1BPT0wCAldYAA9DQVBfRkVFX05PX0xPQU4CCWNhcE5vTG9hbgAMQ0FQX0ZFRV9MT0FOAgdjYXBMb2FuABRTVE9QTE9TU19GRUVfTk9fTE9BTgIOc3RvcExvc3NOb0xvYW4ADVNUT1BMT1NTX0xPQU4CDHN0b3BMb3NzTG9hbgAITE9BTl9GRUUCBGxvYW4AC05PX0xPQU5fRkVFAgZub0xvYW4ABk5PX0ZFRQIFbm9GZWUABlNDQUxFOACAwtcvAAdTQ0FMRTEwAIDIr6AlAApGRUVfU0NBTEU2AMCEPQAUa1NGUG9vbEFBc3NldEJhbGFuY2UCD0FfYXNzZXRfYmFsYW5jZQAUa1NGUG9vbEJBc3NldEJhbGFuY2UCD0JfYXNzZXRfYmFsYW5jZQAPa1NGUG9vbEFBc3NldElkAgpBX2Fzc2V0X2lkAA9rU0ZQb29sQkFzc2V0SWQCCkJfYXNzZXRfaWQADmtTRlBvb2xTaGFyZUlkAg5zaGFyZV9hc3NldF9pZAASa1NGUG9vbFNoYXJlU3VwcGx5AhJzaGFyZV9hc3NldF9zdXBwbHkACmtTRlBvb2xGZWUCCmNvbW1pc3Npb24ADWtVc2VyUG9zaXRpb24CDl91c2VyX3Bvc2l0aW9uABFrVXNlclBvc2l0aW9uUG9vbAITX3VzZXJfcG9zaXRpb25fcG9vbAARa1VzZXJCb3Jyb3dBbW91bnQCHF91c2VyX3Bvc2l0aW9uX2JvcnJvd19hbW91bnQAEmtVc2VyQm9ycm93QXNzZXRJZAIeX3VzZXJfcG9zaXRpb25fYm9ycm93X2Fzc2V0X2lkABBrVXNlclBvc2l0aW9uTnVtAhVfdXNlcl9wb3NpdGlvbl9udW1iZXIAFWtVc2VyUG9zaXRpb25JbnRlcmVzdAIXX3VzZXJfcG9zaXRpb25faW50ZXJlc3QACmtQb29sVG90YWwCC19wb29sX3RvdGFsAA5rUG9vbFRvdGFsTG9hbgIQX3Bvb2xfdG90YWxfbG9hbgARa1Bvb2xJbnRlcmVzdExvYW4CE19wb29sX2ludGVyZXN0X2xvYW4AE2tQb29sSW50ZXJlc3ROb0xvYW4CFl9wb29sX2ludGVyZXN0X25vX2xvYW4AFWtBeGx5SW5GZWVXaXRob3V0TG9hbgIWX2F4bHlfZmVlX3dpdGhvdXRfbG9hbgASa0F4bHlJbkZlZVdpdGhMb2FuAhNfYXhseV9mZWVfd2l0aF9sb2FuABFrQXhseU5vTG9hbkNhcEZlZQIXX2F4bHlfZmVlX2NhcF93aXRoX2xvYW4AE2tBeGx5V2l0aExvYW5DYXBGZWUCFV9heGx5X2ZlZV9jYXBfbm9fbG9hbgAWa0F4bHlTdG9wTG9zc05vTG9hbkZlZQIcX2F4bHlfZmVlX3N0b3Bsb3NzX3dpdGhfbG9hbgAUa0F4bHlTdG9wTG9zc0xvYW5GZWUCGl9heGx5X2ZlZV9zdG9wbG9zc19ub19sb2FuAAprUmVxdWVzdElkAgtfcmVxdWVzdF9pZAAMa1JlcXVlc3RJdGVyAg1yZXF1ZXN0c19pdGVyAAVrUG9vbAIFcG9vbF8ACmtTaGFyZVBvb2wCDl9wb29sX3NoYXJlX2lkAA5rUG9vbENhcENoYW5nZQIQX3Bvb2xfY2FwX2NoYW5nZQAPa1Rva2VuTGFzdFByaWNlAgpsYXN0X3ByaWNlAA1rVXNlclN0b3BMb3NzAgpfc3RvcF9sb3NzAAlrTW9uZXlCb3gCDmF4bHlfbW9uZXlfYm94AA5rU0ZGYXJtaW5nQWRkcgITc3dvcGZpX2Zhcm1pbmdfYWRkcgAMa0xlbmRTZXJ2aWNlAhFsZW5kX3NlcnZpY2VfYWRkcgAMa1ByaWNlT3JhY2xlAgxwcmljZV9vcmFjbGUAC2tFeENvbnRyYWN0AhFleGNoYW5nZV9jb250cmFjdAAPa1d4U3dhcENvbnRyYWN0AhB3eF9zd2FwX2NvbnRyYWN0AAhtb25leUJveAkBB0FkZHJlc3MBCQDZBAEJARN2YWx1ZU9yRXJyb3JNZXNzYWdlAgkAnQgCBQR0aGlzBQlrTW9uZXlCb3gCGE5vIGF4bHkgbW9uZXlCb3ggYWRkcmVzcwAKZXhDb250cmFjdAkBB0FkZHJlc3MBCQDZBAEJARN2YWx1ZU9yRXJyb3JNZXNzYWdlAgkAnQgCBQR0aGlzBQtrRXhDb250cmFjdAIcTm8gZXhjaGFuZ2UgY29udHJhY3QgYWRkcmVzcwAPcHJpY2VPcmFjbGVBZGRyCQEHQWRkcmVzcwEJANkEAQkBE3ZhbHVlT3JFcnJvck1lc3NhZ2UCCQCdCAIFBHRoaXMFDGtQcmljZU9yYWNsZQIXTm8gcHJpY2Ugb3JhY2xlIGFkZHJlc3MADnd4U3dhcENvbnRyYWN0CQEHQWRkcmVzcwEJANkEAQkBE3ZhbHVlT3JFcnJvck1lc3NhZ2UCCQCdCAIFBHRoaXMFD2tXeFN3YXBDb250cmFjdAISTm8gd3ggc3dhcCBhZGRyZXNzAAZTV09QSUQBIDQBE1aOYEbiflupuAFHguexACYSm3bkTkuioHycbe6BAARXWElEASDGUh6BTupu4zzAl7AOXyzyauntnbKG0ZpCeKhgfT4bsQEKaXNTZWxmQ2FsbAEBaQMJAAACCAUBaQZjYWxsZXIFBHRoaXMFBHVuaXQJAAIBAitPbmx5IGNvbnRyYWN0IGl0c2VsZiBjYW4gY2FsbCB0aGlzIGZ1bmN0aW9uAQ5hY2NvdW50QmFsYW5jZQEHYXNzZXRJZAQHJG1hdGNoMAUHYXNzZXRJZAMJAAECBQckbWF0Y2gwAgpCeXRlVmVjdG9yBAJpZAUHJG1hdGNoMAkA8AcCBQR0aGlzBQJpZAMJAAECBQckbWF0Y2gwAgRVbml0BAV3YXZlcwUHJG1hdGNoMAgJAO8HAQUEdGhpcwlhdmFpbGFibGUJAAIBAgtNYXRjaCBlcnJvcgENZ2V0U0ZQb29sRGF0YQEIcG9vbEFkZHIJAJcKBQkBE3ZhbHVlT3JFcnJvck1lc3NhZ2UCCQCdCAIFCHBvb2xBZGRyBQ9rU0ZQb29sQUFzc2V0SWQCGUNhbid0IGdldCBwb29sIEEgYXNzZXQgaWQJARN2YWx1ZU9yRXJyb3JNZXNzYWdlAgkAnQgCBQhwb29sQWRkcgUPa1NGUG9vbEJBc3NldElkAhlDYW4ndCBnZXQgcG9vbCBCIGFzc2V0IGlkCQETdmFsdWVPckVycm9yTWVzc2FnZQIJAJoIAgUIcG9vbEFkZHIFFGtTRlBvb2xBQXNzZXRCYWxhbmNlAh5DYW4ndCBnZXQgcG9vbCBBIGFzc2V0IGJhbGFuY2UJARN2YWx1ZU9yRXJyb3JNZXNzYWdlAgkAmggCBQhwb29sQWRkcgUUa1NGUG9vbEJBc3NldEJhbGFuY2UCHkNhbid0IGdldCBwb29sIEIgYXNzZXQgYmFsYW5jZQkBE3ZhbHVlT3JFcnJvck1lc3NhZ2UCCQCdCAIFCHBvb2xBZGRyBQ5rU0ZQb29sU2hhcmVJZAIYQ2FuJ3QgZ2V0IHNoYXJlIGFzc2V0IGlkAQ1nZXRXWFBvb2xEYXRhAQhwb29sQWRkcgQDY2ZnCgABQAkA/AcEBQhwb29sQWRkcgIcZ2V0UG9vbENvbmZpZ1dyYXBwZXJSRUFET05MWQUDbmlsBQNuaWwDCQABAgUBQAIJTGlzdFtBbnldBQFACQACAQkArAICCQADAQUBQAIeIGNvdWxkbid0IGJlIGNhc3QgdG8gTGlzdFtBbnldAwkAAAIFA2NmZwUDY2ZnBANhSWQJARN2YWx1ZU9yRXJyb3JNZXNzYWdlAgoAAUAJAJEDAgUDY2ZnAAQDCQABAgUBQAIGU3RyaW5nBQFABQR1bml0AhlDYW4ndCBnZXQgcG9vbCBBIGFzc2V0IGlkBANiSWQJARN2YWx1ZU9yRXJyb3JNZXNzYWdlAgoAAUAJAJEDAgUDY2ZnAAUDCQABAgUBQAIGU3RyaW5nBQFABQR1bml0AhlDYW4ndCBnZXQgcG9vbCBCIGFzc2V0IGlkBAdzaGFyZUlkCQETdmFsdWVPckVycm9yTWVzc2FnZQIKAAFACQCRAwIFA2NmZwADAwkAAQIFAUACBlN0cmluZwUBQAUEdW5pdAIaQ2FuJ3QgZ2V0IHBvb2wgTFAgYXNzZXQgaWQEBGJhbEEKAAFACQD8BwQFCHBvb2xBZGRyAhxnZXRBY2NCYWxhbmNlV3JhcHBlclJFQURPTkxZCQDMCAIFA2FJZAUDbmlsBQNuaWwDCQABAgUBQAIDSW50BQFACQACAQkArAICCQADAQUBQAIYIGNvdWxkbid0IGJlIGNhc3QgdG8gSW50AwkAAAIFBGJhbEEFBGJhbEEEBGJhbEIKAAFACQD8BwQFCHBvb2xBZGRyAhxnZXRBY2NCYWxhbmNlV3JhcHBlclJFQURPTkxZCQDMCAIFA2JJZAUDbmlsBQNuaWwDCQABAgUBQAIDSW50BQFACQACAQkArAICCQADAQUBQAIYIGNvdWxkbid0IGJlIGNhc3QgdG8gSW50AwkAAAIFBGJhbEIFBGJhbEIJAJcKBQUDYUlkBQNiSWQFBGJhbEEFBGJhbEIFB3NoYXJlSWQJAAIBAiRTdHJpY3QgdmFsdWUgaXMgbm90IGVxdWFsIHRvIGl0c2VsZi4JAAIBAiRTdHJpY3QgdmFsdWUgaXMgbm90IGVxdWFsIHRvIGl0c2VsZi4JAAIBAiRTdHJpY3QgdmFsdWUgaXMgbm90IGVxdWFsIHRvIGl0c2VsZi4BC2dldFBvb2xEYXRhAghwb29sQWRkcgR0eXBlAwkAAAIFBHR5cGUFB1NGX1BPT0wJAQ1nZXRTRlBvb2xEYXRhAQUIcG9vbEFkZHIDCQAAAgUEdHlwZQUHV1hfUE9PTAkBDWdldFdYUG9vbERhdGEBBQhwb29sQWRkcgkAAgECD1dyb25nIHBvb2wgdHlwZQEOZ2V0U2hhcmVTdXBwbHkDCHBvb2xBZGRyBHR5cGUHc2hhcmVJZAMJAAACBQR0eXBlBQdTRl9QT09MCQETdmFsdWVPckVycm9yTWVzc2FnZQIJAJoIAgUIcG9vbEFkZHIFEmtTRlBvb2xTaGFyZVN1cHBseQIcQ2FuJ3QgZ2V0IHNoYXJlIGFzc2V0IHN1cHBseQMJAAACBQR0eXBlBQdXWF9QT09MCAkBE3ZhbHVlT3JFcnJvck1lc3NhZ2UCCQDsBwEJANkEAQUHc2hhcmVJZAINV3JvbmcgU2hhcmVJZAhxdWFudGl0eQkAAgECD1dyb25nIHBvb2wgdHlwZQERZ2V0UG9vbFRvdGFsU2hhcmUBBHBvb2wJAQt2YWx1ZU9yRWxzZQIJAJoIAgUEdGhpcwkArAICBQRwb29sBQprUG9vbFRvdGFsAAABGWdldFBvb2xUb3RhbFNoYXJlV2l0aExvYW4BBHBvb2wJAQt2YWx1ZU9yRWxzZQIJAJoIAgUEdGhpcwkArAICBQRwb29sBQ5rUG9vbFRvdGFsTG9hbgAAARhnZXROZXdVc2VyUG9zaXRpb25OdW1iZXIBBHVzZXIJAGQCCQELdmFsdWVPckVsc2UCCQCaCAIFBHRoaXMJAKwCAgUEdXNlcgUQa1VzZXJQb3NpdGlvbk51bQAAAAEBCmdldEF4bHlGZWUCBHBvb2wHZmVlVHlwZQMJAAACBQdmZWVUeXBlBQxDQVBfRkVFX0xPQU4JARFAZXh0ck5hdGl2ZSgxMDUwKQIFBHRoaXMJAKwCAgUEcG9vbAUTa0F4bHlXaXRoTG9hbkNhcEZlZQMJAAACBQdmZWVUeXBlBQ9DQVBfRkVFX05PX0xPQU4JARFAZXh0ck5hdGl2ZSgxMDUwKQIFBHRoaXMJAKwCAgUEcG9vbAURa0F4bHlOb0xvYW5DYXBGZWUDCQAAAgUHZmVlVHlwZQUITE9BTl9GRUUJARFAZXh0ck5hdGl2ZSgxMDUwKQIFBHRoaXMJAKwCAgUEcG9vbAUSa0F4bHlJbkZlZVdpdGhMb2FuAwkAAAIFB2ZlZVR5cGUFC05PX0xPQU5fRkVFCQERQGV4dHJOYXRpdmUoMTA1MCkCBQR0aGlzCQCsAgIFBHBvb2wFFWtBeGx5SW5GZWVXaXRob3V0TG9hbgMJAAACBQdmZWVUeXBlBQZOT19GRUUAAAkAAgECDldyb25nIGZlZSB0eXBlARBnZXRTRkZhcm1pbmdBZGRyAAkBB0FkZHJlc3MBCQDZBAEJARN2YWx1ZU9yRXJyb3JNZXNzYWdlAgkAnQgCBQR0aGlzBQ5rU0ZGYXJtaW5nQWRkcgIdQ2FuJ3QgZ2V0IHN3b3BmaSBmYXJtaW5nIGFkZHIBEGdldFdYRmFybWluZ0FkZHIBCHBvb2xBZGRyBAlmQ29udHJhY3QJAQdBZGRyZXNzAQkA2QQBCQETdmFsdWVPckVycm9yTWVzc2FnZQIJAJ0IAgUIcG9vbEFkZHICEyVzX19mYWN0b3J5Q29udHJhY3QCIkNhbid0IGdldCBXWCBmYWN0b3J5IGNvbnRyYWN0IGFkZHIECmZhY3Ryb3lDZmcJALUJAgkBE3ZhbHVlT3JFcnJvck1lc3NhZ2UCCQCdCAIFCWZDb250cmFjdAIRJXNfX2ZhY3RvcnlDb25maWcCGENhbid0IGdldCBXWCBmYWN0b3J5IGNmZwICX18JAQdBZGRyZXNzAQkA2QQBCQCRAwIFCmZhY3Ryb3lDZmcAAQEOZ2V0TGVuZFNydkFkZHIACQEHQWRkcmVzcwEJANkEAQkBE3ZhbHVlT3JFcnJvck1lc3NhZ2UCCQCdCAIFBHRoaXMFDGtMZW5kU2VydmljZQIbQ2FuJ3QgZ2V0IGxlbmQgc2VydmljZSBhZGRyAQxhc3NldElkVG9TdHIBB2Fzc2V0SWQEByRtYXRjaDAFB2Fzc2V0SWQDCQABAgUHJG1hdGNoMAIKQnl0ZVZlY3RvcgQCaWQFByRtYXRjaDAJANgEAQUCaWQDCQABAgUHJG1hdGNoMAIEVW5pdAQFd2F2ZXMFByRtYXRjaDACBVdBVkVTCQACAQILTWF0Y2ggZXJyb3IBDmFzc2V0SWRGcm9tU3RyAQdhc3NldElkAwkAAAIFB2Fzc2V0SWQCBVdBVkVTBQR1bml0CQDZBAEFB2Fzc2V0SWQBEGdldEFzc2V0RGVjaW1hbHMBB2Fzc2V0SWQDCQAAAgUHYXNzZXRJZAIFV0FWRVMACAQHJG1hdGNoMAkA7AcBCQDZBAEFB2Fzc2V0SWQDCQABAgUHJG1hdGNoMAIFQXNzZXQEBWFzc2V0BQckbWF0Y2gwCAUFYXNzZXQIZGVjaW1hbHMJAAIBAhBDYW4ndCBmaW5kIGFzc2V0ARFnZXRBc3NldFByZWNpdGlvbgEHYXNzZXRJZAkAbAYACgAACQEQZ2V0QXNzZXREZWNpbWFscwEFB2Fzc2V0SWQAAAAABQRET1dOAQ5nZXRBc3NldHNQcmljZQEIYXNzZXRJZHMKAQlnZXRQcmljZXMCAWEHYXNzZXRJZAQKYXNzZXRQcmljZQgKAAFACQD8BwQFD3ByaWNlT3JhY2xlQWRkcgIJZ2V0VFdBUDYwCQDMCAIFB2Fzc2V0SWQJAMwIAgcFA25pbAUDbmlsAwkAAQIFAUACCihJbnQsIEludCkFAUAJAAIBCQCsAgIJAAMBBQFAAh8gY291bGRuJ3QgYmUgY2FzdCB0byAoSW50LCBJbnQpAl8yCQDNCAIFAWEFCmFzc2V0UHJpY2UKAAIkbAUIYXNzZXRJZHMKAAIkcwkAkAMBBQIkbAoABSRhY2MwBQNuaWwKAQUkZjBfMQICJGECJGkDCQBnAgUCJGkFAiRzBQIkYQkBCWdldFByaWNlcwIFAiRhCQCRAwIFAiRsBQIkaQoBBSRmMF8yAgIkYQIkaQMJAGcCBQIkaQUCJHMFAiRhCQACAQIUTGlzdCBzaXplIGV4Y2VlZHMgNTAJAQUkZjBfMgIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJ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ZG4ndCBiZSBjYXN0IHRvIFN0cmluZwICX18DCQAAAgULJHQwOTY0MDk5NDUFCyR0MDk2NDA5OTQ1BApldmFsUHV0SW5CCAULJHQwOTY0MDk5NDUCXzIECmV2YWxQdXRJbkEIBQskdDA5NjQwOTk0NQJfMQQMJHQwOTk1NTEwMTUxAwkAAAIFBXBUeXBlBQdTRl9QT09MCQCUCgIJAGsDBQZTQ0FMRTgFBHBtdEEFBGJhbEEJAGsDBQZTQ0FMRTgFBHBtdEIFBGJhbEIJAJQKAgkBDXBhcnNlSW50VmFsdWUBCQCRAwIFCmV2YWxQdXRJbkEAAQkBDXBhcnNlSW50VmFsdWUBCQCRAwIFCmV2YWxQdXRJbkIAAQQGcmF0aW9BCAUMJHQwOTk1NTEwMTUxAl8xBAZyYXRpb0IIBQwkdDA5OTU1MTAxNTECXzIEDSR0MDEwMTU3MTA2MzkDCQBmAgUGcmF0aW9CBQZyYXRpb0EEA3BtdAMJAAACBQVwVHlwZQUHU0ZfUE9PTAkAbgQFBGJhbEIFBnJhdGlvQQUGU0NBTEU4BQdDRUlMSU5HCQENcGFyc2VJbnRWYWx1ZQEJAJEDAgUKZXZhbFB1dEluQQAICQCXCgUFBHBtdEEFA3BtdAkAZQIFBHBtdEIFA3BtdAUDYklkBQZyYXRpb0IEA3BtdAMJAAACBQVwVHlwZQUHU0ZfUE9PTAkAbgQFBGJhbEEFBnJhdGlvQgUGU0NBTEU4BQdDRUlMSU5HCQENcGFyc2VJbnRWYWx1ZQEJAJEDAgUKZXZhbFB1dEluQgAHCQCXCgUFA3BtdAUEcG10QgkAZQIFBHBtdEEFA3BtdAUDYUlkBQZyYXRpb0EEBnBtdEluQQgFDSR0MDEwMTU3MTA2MzkCXzEEBnBtdEluQggFDSR0MDEwMTU3MTA2MzkCXzIEBmNoYW5nZQgFDSR0MDEwMTU3MTA2MzkCXzMEDWNoYW5nZUFzc2V0SWQIBQ0kdDAxMDE1NzEwNjM5Al80BAJscAgFDSR0MDEwMTU3MTA2MzkCXzUJAJcKBQUGcG10SW5BBQZwbXRJbkIFBmNoYW5nZQUNY2hhbmdlQXNzZXRJZAUCbHAJAAIBAiRTdHJpY3QgdmFsdWUgaXMgbm90IGVxdWFsIHRvIGl0c2VsZi4BGHJlcGxlbmlzaFR3b1Rva2Vuc0J5VHlwZQYIcG9vbEFkZHIFcFR5cGUEcG10QQNhSWQEcG10QgNiSWQECHBheW1lbnRzCQDMCAIJAQ9BdHRhY2hlZFBheW1lbnQCCQEOYXNzZXRJZEZyb21TdHIBBQNhSWQFBHBtdEEJAMwIAgkBD0F0dGFjaGVkUGF5bWVudAIJAQ5hc3NldElkRnJvbVN0cgEFA2JJZAUEcG10QgUDbmlsAwkAAAIFBXBUeXBlBQdTRl9QT09MCQD8BwQFCHBvb2xBZGRyAgxjYWxsRnVuY3Rpb24JAMwIAgIWcmVwbGVuaXNoV2l0aFR3b1Rva2VucwkAzAgCCQDMCAICBWZhbHNlCQDMCAICATAFA25pbAUDbmlsBQhwYXltZW50cwkA/AcEBQhwb29sQWRkcgIDcHV0CQDMCAIAwIQ9CQDMCAIHBQNuaWwFCHBheW1lbnRzARdyZXBsZW5pc2hPbmVUb2tlbkJ5VHlwZQQIcG9vbEFkZHIFcFR5cGUDcG10BXBtdElkBAhwYXltZW50cwkAzAgCCQEPQXR0YWNoZWRQYXltZW50AgkBDmFzc2V0SWRGcm9tU3RyAQUFcG10SWQFA3BtdAUDbmlsAwkAAAIFBXBUeXBlBQdTRl9QT09MCQD8BwQFCHBvb2xBZGRyAgxjYWxsRnVuY3Rpb24JAMwIAgIVcmVwbGVuaXNoV2l0aE9uZVRva2VuCQDMCAIJAMwIAgIBMAkAzAgCAgVmYWxzZQkAzAgCAgEwBQNuaWwFA25pbAUIcGF5bWVudHMJAPwHBAUIcG9vbEFkZHICCXB1dE9uZVRrbgkAzAgCAAAJAMwIAgcFA25pbAUIcGF5bWVudHMBB3N0YWtlTFAEBHBvb2wFcFR5cGUHc2hhcmVJZAZhbW91bnQECHBheW1lbnRzCQDMCAIJAQ9BdHRhY2hlZFBheW1lbnQCCQDZBAEFB3NoYXJlSWQFBmFtb3VudAUDbmlsAwkAAAIFBXBUeXBlBQdTRl9QT09MCQD8BwQJARBnZXRTRkZhcm1pbmdBZGRyAAIPbG9ja1NoYXJlVG9rZW5zCQDMCAIFBHBvb2wJAMwIAgAABQNuaWwFCHBheW1lbnRzCQD8BwQJARBnZXRXWEZhcm1pbmdBZGRyAQkBEUBleHRyTmF0aXZlKDEwNjIpAQUEcG9vbAIFc3Rha2UFA25pbAUIcGF5bWVudHMBCXVuc3Rha2VMUAQEcG9vbAVwVHlwZQdzaGFyZUlkBmFtb3VudAQNJHQwMTE4NjkxMjIyNgMJAAACBQVwVHlwZQUHU0ZfUE9PTAkAlQoDCQEQZ2V0U0ZGYXJtaW5nQWRkcgACE3dpdGhkcmF3U2hhcmVUb2tlbnMJAMwIAgUEcG9vbAkAzAgCBQZhbW91bnQFA25pbAMJAAACBQVwVHlwZQUHV1hfUE9PTAkAlQoDCQEQZ2V0V1hGYXJtaW5nQWRkcgEJAQdBZGRyZXNzAQkA2QQBBQRwb29sAgd1bnN0YWtlCQDMCAIFB3NoYXJlSWQJAMwIAgUGYW1vdW50BQNuaWwJAAIBAg9Xcm9uZyBwb29sIHR5cGUECGZhcm1BZGRyCAUNJHQwMTE4NjkxMjIyNgJfMQQFZk5hbWUIBQ0kdDAxMTg2OTEyMjI2Al8yBAZwYXJhbXMIBQ0kdDAxMTg2OTEyMjI2Al8zBANpbnYJAPwHBAUIZmFybUFkZHIFBWZOYW1lBQZwYXJhbXMFA25pbAMJAAACBQNpbnYFA2ludgUGYW1vdW50CQACAQIkU3RyaWN0IHZhbHVlIGlzIG5vdCBlcXVhbCB0byBpdHNlbGYuARFjYWxjQW1vdW50VG9QYXlTRgcEcG9vbAhhc3NldElkQQhhc3NldElkQgRiYWxBBGJhbEIQYW1vdW50VG9rZW5Ub0dldA9hc3NldFRva2VuVG9HZXQECHBvb2xBZGRyCQEHQWRkcmVzcwEJANkEAQUEcG9vbAQJZmVlU2NhbGU2AMCEPQQDZmVlCQERQGV4dHJOYXRpdmUoMTA1MCkCBQhwb29sQWRkcgUKa1NGUG9vbEZlZQQMYW1udEdldE5vRmVlCQBrAwUQYW1vdW50VG9rZW5Ub0dldAUJZmVlU2NhbGU2CQBlAgUJZmVlU2NhbGU2BQNmZWUEDSR0MDEyNjM5MTI5MjcDCQAAAgUPYXNzZXRUb2tlblRvR2V0BQhhc3NldElkQQQLYW1vdW50VG9QYXkJAGsDBQRiYWxBBQxhbW50R2V0Tm9GZWUJAGUCBQRiYWxCBQxhbW50R2V0Tm9GZWUJAJQKAgULYW1vdW50VG9QYXkFCGFzc2V0SWRCBAthbW91bnRUb1BheQkAawMFBGJhbEIFDGFtbnRHZXROb0ZlZQkAZQIFBGJhbEEFDGFtbnRHZXROb0ZlZQkAlAoCBQthbW91bnRUb1BheQUIYXNzZXRJZEEEC2Ftb3VudFRvUGF5CAUNJHQwMTI2MzkxMjkyNwJfMQQKYXNzZXRUb1BheQgFDSR0MDEyNjM5MTI5MjcCXzIJAJQKAgUKYXNzZXRUb1BheQULYW1vdW50VG9QYXkBEWNhbGNBbW91bnRUb1BheVdYBwRwb29sCGFzc2V0SWRBCGFzc2V0SWRCBGJhbEEEYmFsQhBhbW91bnRUb2tlblRvR2V0D2Fzc2V0VG9rZW5Ub0dldAQFcHJGZWUJARFAZXh0ck5hdGl2ZSgxMDUwKQIFDnd4U3dhcENvbnRyYWN0Ag8lc19fcHJvdG9jb2xGZWUEBHBGZWUJARFAZXh0ck5hdGl2ZSgxMDUwKQIFDnd4U3dhcENvbnRyYWN0Agslc19fcG9vbEZlZQQIZmVlU2NhbGUJALYCAQCAwtcvBA0kdDAxMzI2NjEzNTc0AwkAAAIFD2Fzc2V0VG9rZW5Ub0dldAUIYXNzZXRJZEEEC2Ftb3VudFRvUGF5CQBrAwUEYmFsQQUQYW1vdW50VG9rZW5Ub0dldAkAZQIFBGJhbEIFEGFtb3VudFRva2VuVG9HZXQJAJQKAgULYW1vdW50VG9QYXkFCGFzc2V0SWRCBAthbW91bnRUb1BheQkAawMFBGJhbEIFEGFtb3VudFRva2VuVG9HZXQJAGUCBQRiYWxBBRBhbW91bnRUb2tlblRvR2V0CQCUCgIFC2Ftb3VudFRvUGF5BQhhc3NldElkQQQLYW1vdW50VG9QYXkIBQ0kdDAxMzI2NjEzNTc0Al8xBAphc3NldFRvUGF5CAUNJHQwMTMyNjYxMzU3NAJfMgQSYW1vdW50VG9QYXlXaXRoRmVlCQCgAwEJALwCAwkAtgIBBQthbW91bnRUb1BheQUIZmVlU2NhbGUJALgCAgUIZmVlU2NhbGUJALYCAQkAZAIFBXByRmVlBQRwRmVlCQCUCgIFCmFzc2V0VG9QYXkFEmFtb3VudFRvUGF5V2l0aEZlZQEQZXhjaGFuZ2VEaXJlY3RseQgEdHlwZQRwb29sCGFzc2V0SWRBCGFzc2V0SWRCBGJhbEEEYmFsQhBhbW91bnRUb2tlblRvR2V0D2Fzc2V0VG9rZW5Ub0dldAMJAAACBQR0eXBlBQdTRl9QT09MBA0kdDAxMzkxMjE0MDM0CQERY2FsY0Ftb3VudFRvUGF5U0YHBQRwb29sBQhhc3NldElkQQUIYXNzZXRJZEIFBGJhbEEFBGJhbEIFEGFtb3VudFRva2VuVG9HZXQFD2Fzc2V0VG9rZW5Ub0dldAQKYXNzZXRUb1BheQgFDSR0MDEzOTEyMTQwMzQCXzEEC2Ftb3VudFRvUGF5CAUNJHQwMTM5MTIxNDAzNAJfMgkA/AcECQERQGV4dHJOYXRpdmUoMTA2MikBBQRwb29sAgxjYWxsRnVuY3Rpb24JAMwIAgIIZXhjaGFuZ2UJAMwIAgkAzAgCAgExBQNuaWwFA25pbAkAzAgCCQEPQXR0YWNoZWRQYXltZW50AgkBDmFzc2V0SWRGcm9tU3RyAQUKYXNzZXRUb1BheQULYW1vdW50VG9QYXkFA25pbAQNJHQwMTQxODUxNDMwNwkBEWNhbGNBbW91bnRUb1BheVdYBwUEcG9vbAUIYXNzZXRJZEEFCGFzc2V0SWRCBQRiYWxBBQRiYWxCBRBhbW91bnRUb2tlblRvR2V0BQ9hc3NldFRva2VuVG9HZXQECmFzc2V0VG9QYXkIBQ0kdDAxNDE4NTE0MzA3Al8xBAthbW91bnRUb1BheQgFDSR0MDE0MTg1MTQzMDcCXzIJAPwHBAUOd3hTd2FwQ29udHJhY3QCBHN3YXAJAMwIAgABCQDMCAIFD2Fzc2V0VG9rZW5Ub0dldAkAzAgCCQClCAEFBHRoaXMFA25pbAkAzAgCCQEPQXR0YWNoZWRQYXltZW50AgkBDmFzc2V0SWRGcm9tU3RyAQUKYXNzZXRUb1BheQULYW1vdW50VG9QYXkFA25pbAETY2FsY1JlcGxlbmlzaExQVmlydAgFcFR5cGUEcG9vbARwbXRBA2FJZARwbXRCA2JJZARiYWxBBGJhbEIECHBvb2xBZGRyCQERQGV4dHJOYXRpdmUoMTA2MikBBQRwb29sAwkAAAIFBXBUeXBlBQdTRl9QT09MBANpbnYKAAFACQD8BwQFCHBvb2xBZGRyAgxjYWxsRnVuY3Rpb24JAMwIAgIfY2FsY0xQUmVwbGVuaXNoRGlmZlByb3BSRUFET05MWQkAzAgCCQDMCAIJAKQDAQUEcG10QQkAzAgCCQCkAwEFBHBtdEIJAMwIAgIBMAUDbmls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AAIBAiRTdHJpY3QgdmFsdWUgaXMgbm90IGVxdWFsIHRvIGl0c2VsZi4JAAIBAg9Xcm9uZyBwb29sIHR5cGUECmdldEFtb3VudEEIBQ0kdDAxNTY5OTE2MTk5Al8xBApnZXRBbW91bnRCCAUNJHQwMTU2OTkxNjE5OQJfMgMJAGYCBQxib3Jyb3dBbW91bnQAAAQNYW1vdW50VG9HZXRFeAMDCQAAAgUNYm9ycm93QXNzZXRJZAUDYUlkCQBmAgUMYm9ycm93QW1vdW50BQpnZXRBbW91bnRBBwkAZQIFDGJvcnJvd0Ftb3VudAUKZ2V0QW1vdW50QQMDCQAAAgUNYm9ycm93QXNzZXRJZAUDYklkCQBmAgUMYm9ycm93QW1vdW50BQpnZXRBbW91bnRCBwkAZQIFDGJvcnJvd0Ftb3VudAUKZ2V0QW1vdW50QgAABA0kdDAxNjUwMjE2ODE3AwkAZgIFDWFtb3VudFRvR2V0RXgAAAMJAAACBQVwVHlwZQUHU0ZfUE9PTAkBEWNhbGNBbW91bnRUb1BheVNGBwUEcG9vbAUDYUlkBQNiSWQFBGJhbEEFBGJhbEIFDWFtb3VudFRvR2V0RXgFDWJvcnJvd0Fzc2V0SWQJARFjYWxjQW1vdW50VG9QYXlXWAcFBHBvb2wFA2FJZAUDYklkBQRiYWxBBQRiYWxCBQ1hbW91bnRUb0dldEV4BQ1ib3Jyb3dBc3NldElkCQCUCgICAAAABAphc3NldFRvUGF5CAUNJHQwMTY1MDIxNjgxNwJfMQQLYW1vdW50VG9QYXkIBQ0kdDAxNjUwMjE2ODE3Al8yAwkAAAIFDWJvcnJvd0Fzc2V0SWQFA2FJZAkAlAoCCQBlAgkAZAIFCmdldEFtb3VudEEFDWFtb3VudFRvR2V0RXgFDGJvcnJvd0Ftb3VudAkAZQIFCmdldEFtb3VudEIFC2Ftb3VudFRvUGF5CQCUCgIJAGUCBQpnZXRBbW91bnRBBQthbW91bnRUb1BheQkAZQIJAGQCBQpnZXRBbW91bnRCBQ1hbW91bnRUb0dldEV4BQxib3Jyb3dBbW91bnQJAJQKAgUKZ2V0QW1vdW50QQUKZ2V0QW1vdW50QgELY2xhaW1GYXJtZWQCBHR5cGUEcG9vbAMJAAACBQR0eXBlBQdTRl9QT09MBAliYWxCZWZvcmUJAQ5hY2NvdW50QmFsYW5jZQEFBlNXT1BJRAMJAAACBQliYWxCZWZvcmUFCWJhbEJlZm9yZQQDaW52CQD8BwQJARBnZXRTRkZhcm1pbmdBZGRyAAIFY2xhaW0JAMwIAgUEcG9vbAUDbmlsBQNuaWwDCQAAAgUDaW52BQNpbnYECGJhbEFmdGVyCQEOYWNjb3VudEJhbGFuY2UBBQZTV09QSUQJAJQKAgkAZQIFCGJhbEFmdGVyBQliYWxCZWZvcmUFBlNXT1BJRAkAAgECJFN0cmljdCB2YWx1ZSBpcyBub3QgZXF1YWwgdG8gaXRzZWxmLgkAAgECJFN0cmljdCB2YWx1ZSBpcyBub3QgZXF1YWwgdG8gaXRzZWxmLgMJAAACBQR0eXBlBQdXWF9QT09MBAliYWxCZWZvcmUJAQ5hY2NvdW50QmFsYW5jZQEFBFdYSUQDCQAAAgUJYmFsQmVmb3JlBQliYWxCZWZvcmUEA2ludgkA/AcECQEQZ2V0V1hGYXJtaW5nQWRkcgEJAQdBZGRyZXNzAQkA2QQBBQRwb29sAgdjbGFpbVdYCQDMCAIFBHBvb2wFA25pbAUDbmlsAwkAAAIFA2ludgUDaW52BAhiYWxBZnRlcgkBDmFjY291bnRCYWxhbmNlAQUEV1hJRAkAlAoCCQBlAgUIYmFsQWZ0ZXIFCWJhbEJlZm9yZQUEV1hJRAkAAgECJFN0cmljdCB2YWx1ZSBpcyBub3QgZXF1YWwgdG8gaXRzZWxmLgkAAgECJFN0cmljdCB2YWx1ZSBpcyBub3QgZXF1YWwgdG8gaXRzZWxmLgkAAgECD1dyb25nIHBvb2wgdHlwZQEPcmVwbGVuaXNoQnlUeXBlCgVwVHlwZQRwb29sB2ZlZVR5cGUEcG10QQNhSWQEcG10QgNiSWQEYmFsQQRiYWxCBExQSWQED2xwQmFsYW5jZUJlZm9yZQkBDmFjY291bnRCYWxhbmNlAQkA2QQBBQRMUElkAwkAAAIFD2xwQmFsYW5jZUJlZm9yZQUPbHBCYWxhbmNlQmVmb3JlBAhwb29sQWRkcgkBEUBleHRyTmF0aXZlKDEwNjIpAQUEcG9vbAQNJHQwMTgwMjYxODQ0MgMDCQBmAgUEcG10QQAACQBmAgUEcG10QgAABwQNJHQwMTgwOTIxODIwOAkBGGNhbGNSZXBsZW5pc2hCeVR3b1Rva2VucwgFBXBUeXBlBQhwb29sQWRkcgUEcG10QQUDYUlkBQRwbXRCBQNiSWQFBGJhbEEFBGJhbEIEBnBtdEluQQgFDSR0MDE4MDkyMTgyMDgCXzEEBnBtdEluQggFDSR0MDE4MDkyMTgyMDgCXzIEBmNoYW5nZQgFDSR0MDE4MDkyMTgyMDgCXzMECGNoYW5nZUlkCAUNJHQwMTgwOTIxODIwOAJfNAQDaW52CQEYcmVwbGVuaXNoVHdvVG9rZW5zQnlUeXBlBgUIcG9vbEFkZHIFBXBUeXBlBQZwbXRJbkEFA2FJZAUGcG10SW5CBQNiSWQDCQAAAgUDaW52BQNpbnYJAJQKAgUGY2hhbmdlBQhjaGFuZ2VJZAkAAgECJFN0cmljdCB2YWx1ZSBpcyBub3QgZXF1YWwgdG8gaXRzZWxmLgMJAGYCBQRwbXRBAAAJAJQKAgUEcG10QQUDYUlkAwkAZgIFBHBtdEIAAAkAlAoCBQRwbXRCBQNiSWQJAAIBAhBwbXRzIG11c3QgYmUgPiAwBAZjaGFuZ2UIBQ0kdDAxODAyNjE4NDQyAl8xBAhjaGFuZ2VJZAgFDSR0MDE4MDI2MTg0NDICXzIEA2ludgMJAGYCBQZjaGFuZ2UAAAkBF3JlcGxlbmlzaE9uZVRva2VuQnlUeXBlBAUIcG9vbEFkZHIFBXBUeXBlBQZjaGFuZ2UFCGNoYW5nZUlkBQNuaWwDCQAAAgUDaW52BQNpbnYEDmxwQmFsYW5jZUFmdGVyCQEOYWNjb3VudEJhbGFuY2UBCQDZBAEFBExQSWQEC3RvdGFsU3Rha2VkCQBlAgUObHBCYWxhbmNlQWZ0ZXIFD2xwQmFsYW5jZUJlZm9yZQQNYXhseUZlZUFtb3VudAkAawMFC3RvdGFsU3Rha2VkCQEKZ2V0QXhseUZlZQIFBHBvb2wFB2ZlZVR5cGUFCkZFRV9TQ0FMRTYEEXVzZXJTaGFyZUZvclN0YWtlCQBlAgULdG90YWxTdGFrZWQFDWF4bHlGZWVBbW91bnQDCQBnAgAABRF1c2VyU2hhcmVGb3JTdGFrZQkAAgECKGFtb3VudCBvZiBzdGFrZWQgc2hhcmV0b2tlbnMgbXVzdCBiZSA+IDAEBWludkxQCQEHc3Rha2VMUAQFBHBvb2wFBXBUeXBlBQRMUElkBRF1c2VyU2hhcmVGb3JTdGFrZQMJAAACBQVpbnZMUAUFaW52TFAJAJQKAgURdXNlclNoYXJlRm9yU3Rha2UFDWF4bHlGZWVBbW91bnQJAAIBAiRTdHJpY3QgdmFsdWUgaXMgbm90IGVxdWFsIHRvIGl0c2VsZi4JAAIBAiRTdHJpY3QgdmFsdWUgaXMgbm90IGVxdWFsIHRvIGl0c2VsZi4JAAIBAiRTdHJpY3QgdmFsdWUgaXMgbm90IGVxdWFsIHRvIGl0c2VsZi4BEHJlcGxlbmlzaEVudHJpZXMIBHBvb2wEdXNlcgxzdGFrZWRBbW91bnQNYXhseUZlZUFtb3VudAZwb3NOdW0Hc2hhcmVJZAR0eXBlCHdpdGhMb2FuBAt0b3RhbEFtb3VudAkBEWdldFBvb2xUb3RhbFNoYXJlAQUEcG9vbAQPdG90YWxBbW91bnRMb2FuCQEZZ2V0UG9vbFRvdGFsU2hhcmVXaXRoTG9hbgEFBHBvb2wEDSR0MDE5MzAwMTk1MzgDBQh3aXRoTG9hbgkAlAoCCQERQGV4dHJOYXRpdmUoMTA1MCkCBQR0aGlzCQCsAgIFBHBvb2wFEWtQb29sSW50ZXJlc3RMb2FuCQBkAgUPdG90YWxBbW91bnRMb2FuBQxzdGFrZWRBbW91bnQJAJQKAgkBEUBleHRyTmF0aXZlKDEwNTApAgUEdGhpcwkArAICBQRwb29sBRNrUG9vbEludGVyZXN0Tm9Mb2FuBQ90b3RhbEFtb3VudExvYW4ED2N1clBvb2xJbnRlcmVzdAgFDSR0MDE5MzAwMTk1MzgCXzEEE3RvdGFsU3Rha2VkV2l0aExvYW4IBQ0kdDAxOTMwMDE5NTM4Al8yCQDMCAIJAQxJbnRlZ2VyRW50cnkCCQCsAgIFBHBvb2wFCmtQb29sVG90YWwJAGQCBQt0b3RhbEFtb3VudAUMc3Rha2VkQW1vdW50CQDMCAIJAQxJbnRlZ2VyRW50cnkCCQCsAgIFBHBvb2wFDmtQb29sVG90YWxMb2FuBRN0b3RhbFN0YWtlZFdpdGhMb2FuCQDMCAIJAQxJbnRlZ2VyRW50cnkCCQCsAgIJAKwCAgkArAICCQCsAgIJAKwCAgUEcG9vbAIBXwUEdXNlcgIBXwkApAMBBQZwb3NOdW0FDWtVc2VyUG9zaXRpb24FDHN0YWtlZEFtb3VudAkAzAgCCQEMSW50ZWdlckVudHJ5AgkArAICCQCsAgIJAKwCAgkArAICCQCsAgIFBHBvb2wCAV8FBHVzZXICAV8JAKQDAQUGcG9zTnVtBRVrVXNlclBvc2l0aW9uSW50ZXJlc3QFD2N1clBvb2xJbnRlcmVzdAkAzAgCCQELU3RyaW5nRW50cnkCCQCsAgIJAKwCAgkArAICBQR1c2VyAgFfCQCkAwEFBnBvc051bQURa1VzZXJQb3NpdGlvblBvb2wFBHBvb2wJAMwIAgkBDEludGVnZXJFbnRyeQIJAKwCAgUEdXNlcgUQa1VzZXJQb3NpdGlvbk51bQUGcG9zTnVtCQDMCAIJAQ5TY3JpcHRUcmFuc2ZlcgMFCG1vbmV5Qm94BQ1heGx5RmVlQW1vdW50CQDZBAEFB3NoYXJlSWQFA25pbAEOZXhjaGFuZ2VLZWVwZXIKB3RvVG9rZW4JcG10QW1vdW50CHBtdEFzc2V0CWFtb3VudHNJbglhZGRyZXNzZXMPYXNzZXRzVG9SZWNlaXZlC2VzdFJlY2VpdmVkEXNsaXBwYWdlVG9sZXJhbmNlC21pblJlY2VpdmVkB29wdGlvbnMEEnRva2VuQmFsYW5jZUJlZm9yZQkBDmFjY291bnRCYWxhbmNlAQkBDmFzc2V0SWRGcm9tU3RyAQUHdG9Ub2tlbgMJAAACBRJ0b2tlbkJhbGFuY2VCZWZvcmUFEnRva2VuQmFsYW5jZUJlZm9yZQQDaW52CQD8BwQFCmV4Q29udHJhY3QCBHN3YXAJAMwIAgUJYW1vdW50c0luCQDMCAIFCWFkZHJlc3NlcwkAzAgCBQ9hc3NldHNUb1JlY2VpdmUJAMwIAgULZXN0UmVjZWl2ZWQJAMwIAgURc2xpcHBhZ2VUb2xlcmFuY2UJAMwIAgULbWluUmVjZWl2ZWQJAMwIAgUHb3B0aW9ucwUDbmlsCQDMCAIJAQ9BdHRhY2hlZFBheW1lbnQCBQhwbXRBc3NldAUJcG10QW1vdW50BQNuaWwDCQAAAgUDaW52BQNpbnYJAGUCCQEOYWNjb3VudEJhbGFuY2UBCQEOYXNzZXRJZEZyb21TdHIBBQd0b1Rva2VuBRJ0b2tlbkJhbGFuY2VCZWZvcmUJAAIBAiRTdHJpY3QgdmFsdWUgaXMgbm90IGVxdWFsIHRvIGl0c2VsZi4JAAIBAiRTdHJpY3QgdmFsdWUgaXMgbm90IGVxdWFsIHRvIGl0c2VsZi4BDmV4Y2hhbmdlUHV6emxlBgd0b1Rva2VuCXBtdEFtb3VudAhwbXRBc3NldAlyb3V0ZXNTdHIMbWluVG9SZWNlaXZlB29wdGlvbnMEEnRva2VuQmFsYW5jZUJlZm9yZQkBDmFjY291bnRCYWxhbmNlAQkBDmFzc2V0SWRGcm9tU3RyAQUHdG9Ub2tlbgMJAAACBRJ0b2tlbkJhbGFuY2VCZWZvcmUFEnRva2VuQmFsYW5jZUJlZm9yZQQDaW52CQD8BwQFCmV4Q29udHJhY3QCCnB1enpsZVN3YXAJAMwIAgUJcm91dGVzU3RyCQDMCAIFDG1pblRvUmVjZWl2ZQkAzAgCBQdvcHRpb25zBQNuaWwJAMwIAgkBD0F0dGFjaGVkUGF5bWVudAIFCHBtdEFzc2V0BQlwbXRBbW91bnQFA25pbAMJAAACBQNpbnYFA2ludgkAZQIJAQ5hY2NvdW50QmFsYW5jZQEJAQ5hc3NldElkRnJvbVN0cgEFB3RvVG9rZW4FEnRva2VuQmFsYW5jZUJlZm9yZQkAAgECJFN0cmljdCB2YWx1ZSBpcyBub3QgZXF1YWwgdG8gaXRzZWxmLgkAAgECJFN0cmljdCB2YWx1ZSBpcyBub3QgZXF1YWwgdG8gaXRzZWxmLgEOZXhjaGFuZ2VTd29wRmkKB3RvVG9rZW4JcG10QW1vdW50CHBtdEFzc2V0CmV4Y2hhbmdlcnMOZXhjaGFuZ2Vyc1R5cGUFYXJnczEFYXJnczIRcm91dGluZ0Fzc2V0c0tleXMSbWluQW1vdW50VG9SZWNlaXZlB29wdGlvbnMEEnRva2VuQmFsYW5jZUJlZm9yZQkBDmFjY291bnRCYWxhbmNlAQkBDmFzc2V0SWRGcm9tU3RyAQUHdG9Ub2tlbgMJAAACBRJ0b2tlbkJhbGFuY2VCZWZvcmUFEnRva2VuQmFsYW5jZUJlZm9yZQQDaW52CQD8BwQFCmV4Q29udHJhY3QCCnN3b3BmaVN3YXAJAMwIAgUKZXhjaGFuZ2VycwkAzAgCBQ5leGNoYW5nZXJzVHlwZQkAzAgCBQVhcmdzMQkAzAgCBQVhcmdzMgkAzAgCBRFyb3V0aW5nQXNzZXRzS2V5cwkAzAgCBRJtaW5BbW91bnRUb1JlY2VpdmUJAMwIAgUHb3B0aW9ucwUDbmlsCQDMCAIJAQ9BdHRhY2hlZFBheW1lbnQCBQhwbXRBc3NldAUJcG10QW1vdW50BQNuaWwDCQAAAgUDaW52BQNpbnYJAGUCCQEOYWNjb3VudEJhbGFuY2UBCQEOYXNzZXRJZEZyb21TdHIBBQd0b1Rva2VuBRJ0b2tlbkJhbGFuY2VCZWZvcmUJAAIBAiRTdHJpY3QgdmFsdWUgaXMgbm90IGVxdWFsIHRvIGl0c2VsZi4JAAIBAiRTdHJpY3QgdmFsdWUgaXMgbm90IGVxdWFsIHRvIGl0c2VsZi4BCmNhcGl0YWxpemUEBHBvb2wFcFR5cGUHdG9rZW5JZAt0b2tlbkFtb3VudAQIcG9vbEFkZHIJAQdBZGRyZXNzAQkA2QQBBQRwb29sBA0kdDAyMTg4OTIxOTU1CQELZ2V0UG9vbERhdGECBQhwb29sQWRkcgUFcFR5cGUEA0FJZAgFDSR0MDIxODg5MjE5NTUCXzEEA0JJZAgFDSR0MDIxODg5MjE5NTUCXzIEBGJhbEEIBQ0kdDAyMTg4OTIxOTU1Al8zBARiYWxCCAUNJHQwMjE4ODkyMTk1NQJfNAQHc2hhcmVJZAgFDSR0MDIxODg5MjE5NTUCXzUDAwkBAiE9AgUHdG9rZW5JZAUDQUlkCQECIT0CBQd0b2tlbklkBQNCSWQHCQACAQILV3JvbmcgYXNzZXQEDSR0MDIyMDQwMjIxMjADCQAAAgUHdG9rZW5JZAUDQUlkCQCUCgIFC3Rva2VuQW1vdW50AAAJAJQKAgAABQt0b2tlbkFtb3VudAQEcG10QQgFDSR0MDIyMDQwMjIxMjACXzEEBHBtdEIIBQ0kdDAyMjA0MDIyMTIwAl8yBA0kdDAyMjEyMzIyMjI3CQEPcmVwbGVuaXNoQnlUeXBlCgUFcFR5cGUFBHBvb2wFBk5PX0ZFRQUEcG10QQUDQUlkBQRwbXRCBQNCSWQFBGJhbEEFBGJhbEIFB3NoYXJlSWQEDHN0YWtlZEFtb3VudAgFDSR0MDIyMTIzMjIyMjcCXzEEAm5mCAUNJHQwMjIxMjMyMjIyNwJfMgQTY3VyUG9vbEludGVyZXN0TG9hbgkBC3ZhbHVlT3JFbHNlAgkAmggCBQR0aGlzCQCsAgIFBHBvb2wFEWtQb29sSW50ZXJlc3RMb2FuAAAEFWN1clBvb2xJbnRlcmVzdE5vTG9hbgkBC3ZhbHVlT3JFbHNlAgkAmggCBQR0aGlzCQCsAgIFBHBvb2wFE2tQb29sSW50ZXJlc3ROb0xvYW4AAAQQdG90YWxTaGFyZUFtb3VudAkBEWdldFBvb2xUb3RhbFNoYXJlAQUEcG9vbAQYdG90YWxTaGFyZUFtb3VudFdpdGhMb2FuCQEZZ2V0UG9vbFRvdGFsU2hhcmVXaXRoTG9hbgEFBHBvb2wEC2xvYW5QZXJjZW50CQBrAwUYdG90YWxTaGFyZUFtb3VudFdpdGhMb2FuBQZTQ0FMRTgFEHRvdGFsU2hhcmVBbW91bnQECnN0YWtlZExvYW4JAGsDBQxzdGFrZWRBbW91bnQFC2xvYW5QZXJjZW50BQZTQ0FMRTgEDHN0YWtlZE5vTG9hbgkAZQIFDHN0YWtlZEFtb3VudAUKc3Rha2VkTG9hbgQPbmV3SW50ZXJlc3RMb2FuAwkAZgIFGHRvdGFsU2hhcmVBbW91bnRXaXRoTG9hbgAACQBkAgUTY3VyUG9vbEludGVyZXN0TG9hbgkAawMFCnN0YWtlZExvYW4FB1NDQUxFMTAFGHRvdGFsU2hhcmVBbW91bnRXaXRoTG9hbgAABBFuZXdJbnRlcmVzdE5vTG9hbgMJAGYCCQBlAgUQdG90YWxTaGFyZUFtb3VudAUYdG90YWxTaGFyZUFtb3VudFdpdGhMb2FuAAAJAGQCBRVjdXJQb29sSW50ZXJlc3ROb0xvYW4JAGsDBQxzdGFrZWROb0xvYW4FB1NDQUxFMTAJAGUCBRB0b3RhbFNoYXJlQW1vdW50BRh0b3RhbFNoYXJlQW1vdW50V2l0aExvYW4AAAQLYXhseUZlZUxvYW4JAGsDBQpzdGFrZWRMb2FuCQEKZ2V0QXhseUZlZQIFBHBvb2wFDENBUF9GRUVfTE9BTgUKRkVFX1NDQUxFNgQNYXhseUZlZU5vTG9hbgkAawMFDHN0YWtlZE5vTG9hbgkBCmdldEF4bHlGZWUCBQRwb29sBQ9DQVBfRkVFX05PX0xPQU4FCkZFRV9TQ0FMRTYEB2F4bHlGZWUJAQl1bnN0YWtlTFAEBQRwb29sBQVwVHlwZQUHc2hhcmVJZAkAZAIFC2F4bHlGZWVMb2FuBQ1heGx5RmVlTm9Mb2FuAwkAAAIFB2F4bHlGZWUFB2F4bHlGZWUJAM4IAgkAzAgCCQEMSW50ZWdlckVudHJ5AgkArAICBQRwb29sBRFrUG9vbEludGVyZXN0TG9hbgUPbmV3SW50ZXJlc3RMb2FuCQDMCAIJAQxJbnRlZ2VyRW50cnkCCQCsAgIFBHBvb2wFE2tQb29sSW50ZXJlc3ROb0xvYW4FEW5ld0ludGVyZXN0Tm9Mb2FuCQDMCAIJAQxJbnRlZ2VyRW50cnkCCQCsAgIFBHBvb2wFCmtQb29sVG90YWwJAGUCCQBkAgUQdG90YWxTaGFyZUFtb3VudAUMc3Rha2VkQW1vdW50BQdheGx5RmVlCQDMCAIJAQxJbnRlZ2VyRW50cnkCCQCsAgIFBHBvb2wFDmtQb29sVG90YWxMb2FuCQBlAgkAZAIFGHRvdGFsU2hhcmVBbW91bnRXaXRoTG9hbgUKc3Rha2VkTG9hbgULYXhseUZlZUxvYW4JAMwIAgkBDlNjcmlwdFRyYW5zZmVyAwUIbW9uZXlCb3gJAGQCBQtheGx5RmVlTG9hbgUNYXhseUZlZU5vTG9hbgkA2QQBBQdzaGFyZUlkBQNuaWwJAQ5nZXRDdXJzRW50cmllcwMFA0FJZAUDQklkBQdzaGFyZUlkCQACAQIkU3RyaWN0IHZhbHVlIGlzIG5vdCBlcXVhbCB0byBpdHNlbGYuARJ3aXRoZHJhd0Ftb3VudENhbGMEBHBvb2wPdXNlckNhbldpdGhkcmF3BGRlYnQLYm9ycm93QXNzZXQECHBvb2xBZGRyCQEHQWRkcmVzcwEJANkEAQUEcG9vbAQFcFR5cGUJARN2YWx1ZU9yRXJyb3JNZXNzYWdlAgkAnQgCBQR0aGlzCQCsAgIFBWtQb29sBQRwb29sAgxVbmtub3duIHBvb2wEDSR0MDIzOTk1MjQwNzEJAQtnZXRQb29sRGF0YQIFCHBvb2xBZGRyBQVwVHlwZQQIYXNzZXRJZEEIBQ0kdDAyMzk5NTI0MDcxAl8xBAhhc3NldElkQggFDSR0MDIzOTk1MjQwNzECXzIEBGJhbEEIBQ0kdDAyMzk5NTI0MDcxAl8zBARiYWxCCAUNJHQwMjM5OTUyNDA3MQJfNAQHc2hhcmVJZAgFDSR0MDIzOTk1MjQwNzECXzUEC2NCYWxBQmVmb3JlCQEOYWNjb3VudEJhbGFuY2UBCQEOYXNzZXRJZEZyb21TdHIBBQhhc3NldElkQQMJAAACBQtjQmFsQUJlZm9yZQULY0JhbEFCZWZvcmUEC2NCYWxCQmVmb3JlCQEOYWNjb3VudEJhbGFuY2UBCQEOYXNzZXRJZEZyb21TdHIBBQhhc3NldElkQgMJAAACBQtjQmFsQkJlZm9yZQULY0JhbEJCZWZvcmUEA2ludgMJAAACBQVwVHlwZQUHU0ZfUE9PTAkA/AcEBQhwb29sQWRkcgIMY2FsbEZ1bmN0aW9uCQDMCAICCHdpdGhkcmF3CQDMCAIJAMwIAgkApAMBBQ91c2VyQ2FuV2l0aGRyYXcFA25pbAUDbmlsBQNuaWwEA2ludgkBCXVuc3Rha2VMUAQFBHBvb2wFBXBUeXBlBQdzaGFyZUlkBQ91c2VyQ2FuV2l0aGRyYXcDCQAAAgUDaW52BQNpbnYJAPwHBAUIcG9vbEFkZHICA2dldAUDbmlsCQDMCAIJAQ9BdHRhY2hlZFBheW1lbnQCCQEOYXNzZXRJZEZyb21TdHIBBQdzaGFyZUlkBQ91c2VyQ2FuV2l0aGRyYXcFA25pbAkAAgECJFN0cmljdCB2YWx1ZSBpcyBub3QgZXF1YWwgdG8gaXRzZWxmLgMJAAACBQNpbnYFA2ludgQKY0JhbEFBZnRlcgkBDmFjY291bnRCYWxhbmNlAQkBDmFzc2V0SWRGcm9tU3RyAQUIYXNzZXRJZEEECmNCYWxCQWZ0ZXIJAQ5hY2NvdW50QmFsYW5jZQEJAQ5hc3NldElkRnJvbVN0cgEFCGFzc2V0SWRCBA0kdDAyNDYzNDI0NzIzCQCUCgIJAGUCBQpjQmFsQUFmdGVyBQtjQmFsQUJlZm9yZQkAZQIFCmNCYWxCQWZ0ZXIFC2NCYWxCQmVmb3JlBA10b2tlbnNBbW91bnRBCAUNJHQwMjQ2MzQyNDcyMwJfMQQNdG9rZW5zQW1vdW50QggFDSR0MDI0NjM0MjQ3MjMCXzIEDSR0MDI0NzI2MjU0MjIDCQBmAgUEZGVidAAABA1hbW91bnRUb0dldEV4AwMJAAACBQtib3Jyb3dBc3NldAUIYXNzZXRJZEEJAGYCBQRkZWJ0BQ10b2tlbnNBbW91bnRBBwkAZQIFBGRlYnQFDXRva2Vuc0Ftb3VudEEDAwkAAAIFC2JvcnJvd0Fzc2V0BQhhc3NldElkQgkAZgIFBGRlYnQFDXRva2Vuc0Ftb3VudEIHCQBlAgUEZGVidAUNdG9rZW5zQW1vdW50QgAABAVleEludgMJAGYCBQ1hbW91bnRUb0dldEV4AAAJARBleGNoYW5nZURpcmVjdGx5CAUFcFR5cGUFBHBvb2wFCGFzc2V0SWRBBQhhc3NldElkQgUEYmFsQQUEYmFsQgUNYW1vdW50VG9HZXRFeAULYm9ycm93QXNzZXQAAAMJAAACBQVleEludgUFZXhJbnYED2NCYWxBQWZ0ZXJSZXBheQkBDmFjY291bnRCYWxhbmNlAQkBDmFzc2V0SWRGcm9tU3RyAQUIYXNzZXRJZEEED2NCYWxCQWZ0ZXJSZXBheQkBDmFjY291bnRCYWxhbmNlAQkBDmFzc2V0SWRGcm9tU3RyAQUIYXNzZXRJZEIJAJQKAgkAZQIFD2NCYWxBQWZ0ZXJSZXBheQULY0JhbEFCZWZvcmUJAGUCBQ9jQmFsQkFmdGVyUmVwYXkFC2NCYWxCQmVmb3JlCQACAQIkU3RyaWN0IHZhbHVlIGlzIG5vdCBlcXVhbCB0byBpdHNlbGYuCQCUCgIFDXRva2Vuc0Ftb3VudEEFDXRva2Vuc0Ftb3VudEIEDXRvVXNlckFtb3VudEEIBQ0kdDAyNDcyNjI1NDIyAl8xBA10b1VzZXJBbW91bnRCCAUNJHQwMjQ3MjYyNTQyMgJfMgkAmQoHBQ10b1VzZXJBbW91bnRBBQhhc3NldElkQQUNdG9Vc2VyQW1vdW50QgUIYXNzZXRJZEIFCmNCYWxBQWZ0ZXIFCmNCYWxCQWZ0ZXIFB3NoYXJlSWQJAAIBAiRTdHJpY3QgdmFsdWUgaXMgbm90IGVxdWFsIHRvIGl0c2VsZi4JAAIBAiRTdHJpY3QgdmFsdWUgaXMgbm90IGVxdWFsIHRvIGl0c2VsZi4JAAIBAiRTdHJpY3QgdmFsdWUgaXMgbm90IGVxdWFsIHRvIGl0c2VsZi4BGHVzZXJDYW5XaXRoZHJhd1NoYXJlQ2FsYwQEdXNlcgRwb29sBXBvc0lkCGJvcnJvd2VkBAdwQW1vdW50CQETdmFsdWVPckVycm9yTWVzc2FnZQIJAJoIAgUEdGhpcwkArAICCQCsAgIJAKwCAgkArAICCQCsAgIFBHBvb2wCAV8FBHVzZXICAV8FBXBvc0lkBQ1rVXNlclBvc2l0aW9uAhBVbmtub3duIHBvc2l0aW9uBAx1c2VySW50ZXJlc3QJARFAZXh0ck5hdGl2ZSgxMDUwKQIFBHRoaXMJAKwCAgkArAICCQCsAgIJAKwCAgkArAICBQRwb29sAgFfBQR1c2VyAgFfBQVwb3NJZAUVa1VzZXJQb3NpdGlvbkludGVyZXN0BAxwb29sSW50ZXJlc3QDBQhib3Jyb3dlZAkBEUBleHRyTmF0aXZlKDEwNTApAgUEdGhpcwkArAICBQRwb29sBRFrUG9vbEludGVyZXN0TG9hbgkBEUBleHRyTmF0aXZlKDEwNTApAgUEdGhpcwkArAICBQRwb29sBRNrUG9vbEludGVyZXN0Tm9Mb2FuCQBkAgUHcEFtb3VudAkAawMFB3BBbW91bnQJAGUCBQxwb29sSW50ZXJlc3QFDHVzZXJJbnRlcmVzdAUHU0NBTEUxMAEOd2l0aGRyYXdUb1VzZXIEBHVzZXIEcG9vbAVwb3NJZAhzdG9wTG9zcwQHcEFtb3VudAkBE3ZhbHVlT3JFcnJvck1lc3NhZ2UCCQCaCAIFBHRoaXMJAKwCAgkArAICCQCsAgIJAKwCAgkArAICBQRwb29sAgFfBQR1c2VyAgFfBQVwb3NJZAUNa1VzZXJQb3NpdGlvbgIQVW5rbm93biBwb3NpdGlvbgQMdXNlckludGVyZXN0CQERQGV4dHJOYXRpdmUoMTA1MCkCBQR0aGlzCQCsAgIJAKwCAgkArAICCQCsAgIJAKwCAgUEcG9vbAIBXwUEdXNlcgIBXwUFcG9zSWQFFWtVc2VyUG9zaXRpb25JbnRlcmVzdAQMYm9ycm93QW1vdW50CQELdmFsdWVPckVsc2UCCQCaCAIFBHRoaXMJAKwCAgkArAICCQCsAgIJAKwCAgkArAICBQRwb29sAgFfBQR1c2VyAgFfBQVwb3NJZAURa1VzZXJCb3Jyb3dBbW91bnQAAAQPdXNlckNhbldpdGhkcmF3CQEYdXNlckNhbldpdGhkcmF3U2hhcmVDYWxjBAUEdXNlcgUEcG9vbAUFcG9zSWQJAGYCBQxib3Jyb3dBbW91bnQAAAQOcG9vbFRvdGFsU2hhcmUJARFnZXRQb29sVG90YWxTaGFyZQEFBHBvb2wECHVzZXJBZGRyCQEHQWRkcmVzcwEJANkEAQUEdXNlcgQLYm9ycm93QXNzZXQJAQt2YWx1ZU9yRWxzZQIJAJ0IAgUEdGhpcwkArAICCQCsAgIJAKwCAgkArAICCQCsAgIFBHBvb2wCAV8FBHVzZXICAV8FBXBvc0lkBRJrVXNlckJvcnJvd0Fzc2V0SWQCAAQEZGVidAMJAGYCBQxib3Jyb3dBbW91bnQAAAoAAUAJAPwHBAkBDmdldExlbmRTcnZBZGRyAAIMZ2V0QXNzZXREZWJ0CQDMCAIHCQDMCAIJAKwCAgkArAICCQCsAgIJAKwCAgUEcG9vbAIBXwUEdXNlcgIBXwUFcG9zSWQJAMwIAgULYm9ycm93QXNzZXQFA25pbAUDbmlsAwkAAQIFAUACA0ludAUBQAkAAgEJAKwCAgkAAwEFAUACGCBjb3VsZG4ndCBiZSBjYXN0IHRvIEludAAABA0kdDAyNjkzNDI3MDg3CQESd2l0aGRyYXdBbW91bnRDYWxjBAUEcG9vbAUPdXNlckNhbldpdGhkcmF3BQRkZWJ0BQtib3Jyb3dBc3NldAMJAAACBQ0kdDAyNjkzNDI3MDg3BQ0kdDAyNjkzNDI3MDg3BAdzaGFyZUlkCAUNJHQwMjY5MzQyNzA4NwJfNwQKY0JhbEJBZnRlcggFDSR0MDI2OTM0MjcwODcCXzYECmNCYWxBQWZ0ZXIIBQ0kdDAyNjkzNDI3MDg3Al81BAhhc3NldElkQggFDSR0MDI2OTM0MjcwODcCXzQEDXRvVXNlckFtb3VudEIIBQ0kdDAyNjkzNDI3MDg3Al8zBAhhc3NldElkQQgFDSR0MDI2OTM0MjcwODcCXzIEDXRvVXNlckFtb3VudEEIBQ0kdDAyNjkzNDI3MDg3Al8xBAtjbG9zZURidEludgMJAGYCBQRkZWJ0AAAJAPwHBAkBDmdldExlbmRTcnZBZGRyAAIIcmVwYXlGb3IJAMwIAgkArAICCQCsAgIFBHVzZXICAV8FBXBvc0lkBQNuaWwJAMwIAgkBD0F0dGFjaGVkUGF5bWVudAIJAQ5hc3NldElkRnJvbVN0cgEFC2JvcnJvd0Fzc2V0BQRkZWJ0BQNuaWwAAAMJAAACBQtjbG9zZURidEludgULY2xvc2VEYnRJbnYJAM4IAgkAzAgCCQELRGVsZXRlRW50cnkBCQCsAgIJAKwCAgkArAICCQCsAgIJAKwCAgUEcG9vbAIBXwUEdXNlcgIBXwUFcG9zSWQFDWtVc2VyUG9zaXRpb24JAMwIAgkBC0RlbGV0ZUVudHJ5AQkArAICCQCsAgIJAKwCAgkArAICCQCsAgIFBHBvb2wCAV8FBHVzZXICAV8FBXBvc0lkBRVrVXNlclBvc2l0aW9uSW50ZXJlc3QJAMwIAgkBDEludGVnZXJFbnRyeQIJAKwCAgUEcG9vbAUKa1Bvb2xUb3RhbAkAZQIFDnBvb2xUb3RhbFNoYXJlBQ91c2VyQ2FuV2l0aGRyYXcJAMwIAgkBDlNjcmlwdFRyYW5zZmVyAwUIdXNlckFkZHIFDXRvVXNlckFtb3VudEEJAQ5hc3NldElkRnJvbVN0cgEFCGFzc2V0SWRBCQDMCAIJAQ5TY3JpcHRUcmFuc2ZlcgMFCHVzZXJBZGRyBQ10b1VzZXJBbW91bnRCCQEOYXNzZXRJZEZyb21TdHIBBQhhc3NldElkQgUDbmlsCQEOZ2V0Q3Vyc0VudHJpZXMDBQhhc3NldElkQQUIYXNzZXRJZEIFB3NoYXJlSWQJAAIBAiRTdHJpY3QgdmFsdWUgaXMgbm90IGVxdWFsIHRvIGl0c2VsZi4JAAIBAiRTdHJpY3QgdmFsdWUgaXMgbm90IGVxdWFsIHRvIGl0c2VsZi4BDHBhcnNlUmVxdWVzdAEJcmVxdWVzdElkBAdyZXF1ZXN0CQC1CQIJARN2YWx1ZU9yRXJyb3JNZXNzYWdlAgkAnQgCBQR0aGlzCQCsAgIFCXJlcXVlc3RJZAUKa1JlcXVlc3RJZAkArAICAhNObyByZXF1ZXN0IHdpdGggaWQgBQlyZXF1ZXN0SWQCASwEBHVzZXIJAJEDAgUHcmVxdWVzdAAABARwb29sCQCRAwIFB3JlcXVlc3QAAQQEcG10QQkBDXBhcnNlSW50VmFsdWUBCQCRAwIFB3JlcXVlc3QAAgQDQUlkCQCRAwIFB3JlcXVlc3QAAwQEcG10QgkBDXBhcnNlSW50VmFsdWUBCQCRAwIFB3JlcXVlc3QABAQDQklkCQCRAwIFB3JlcXVlc3QABQQEYmFsQQkBDXBhcnNlSW50VmFsdWUBCQCRAwIFB3JlcXVlc3QABgQEYmFsQgkBDXBhcnNlSW50VmFsdWUBCQCRAwIFB3JlcXVlc3QABwQHc2hhcmVJZAkAkQMCBQdyZXF1ZXN0AAgEB2J3QXNzZXQJAJEDAgUHcmVxdWVzdAAJBAhid0Ftb3VudAkBDXBhcnNlSW50VmFsdWUBCQCRAwIFB3JlcXVlc3QACgkAnQoLBQR1c2VyBQRwb29sBQRwbXRBBQNBSWQFBHBtdEIFA0JJZAUEYmFsQQUEYmFsQgUHc2hhcmVJZAUHYndBc3NldAUIYndBbW91bnQBEGNhbGNCb3Jyb3dBbW91bnQGBHBtdEEEcG10QgNhSWQDYklkCGxldmVyYWdlCGJvcnJvd0lkBAdkUHJpY2VBCAoAAUAJAPwHBAUPcHJpY2VPcmFjbGVBZGRyAglnZXRUV0FQNjAJAMwIAgUDYUlkCQDMCAIHBQNuaWwFA25pbAMJAAECBQFAAgooSW50LCBJbnQpBQFACQACAQkArAICCQADAQUBQAIfIGNvdWxkbid0IGJlIGNhc3QgdG8gKEludCwgSW50KQJfMgQHZFByaWNlQggKAAFACQD8BwQFD3ByaWNlT3JhY2xlQWRkcgIJZ2V0VFdBUDYwCQDMCAIFA2JJZAkAzAgCBwUDbmlsBQNuaWwDCQABAgUBQAIKKEludCwgSW50KQUBQAkAAgEJAKwCAgkAAwEFAUACHyBjb3VsZG4ndCBiZSBjYXN0IHRvIChJbnQsIEludCkCXzIEBmRlY1ByQQkAbAYACgAACQEQZ2V0QXNzZXREZWNpbWFscwEFA2FJZAAAAAAFBERPV04EBmRlY1ByQgkAbAYACgAACQEQZ2V0QXNzZXREZWNpbWFscwEFA2JJZAAAAAAFBERPV04EDHBheWRJbkRvbGxhcgkAZAIJAGsDBQdkUHJpY2VBBQRwbXRBBQZkZWNQckEJAGsDBQdkUHJpY2VCBQRwbXRCBQZkZWNQckIEDSR0MDI4NzczMjg4NzADCQAAAgUIYm9ycm93SWQFA2FJZAkAlAoCBQdkUHJpY2VBBQZkZWNQckEJAJQKAgUHZFByaWNlQgUGZGVjUHJCBAtib3Jyb3dQcmljZQgFDSR0MDI4NzczMjg4NzACXzEEC2JvcnJvd0RlY1ByCAUNJHQwMjg3NzMyODg3MAJfMgkAawMJAGsDBQxwYXlkSW5Eb2xsYXIJAGUCBQhsZXZlcmFnZQBkAGQFC2JvcnJvd0RlY1ByBQtib3Jyb3dQcmljZRIBaQERcmVwbGVuaXNoRVZBTE9OTFkFBHBvb2wIbGV2ZXJhZ2UIYm9ycm93SWQEcG10QQRwbXRCAwMJAGYCAGQFCGxldmVyYWdlBgkAZgIFCGxldmVyYWdlAKwCCQACAQIfTGV2ZXJhZ2UgY2FuJ3QgYmUgPDEwMCBhbmQgPjMwMAQFcFR5cGUJARN2YWx1ZU9yRXJyb3JNZXNzYWdlAgkAnQgCBQR0aGlzCQCsAgIFBWtQb29sBQRwb29sAhJQb29sIGlzIG5vdCBpbml0ZWQEDSR0MDI5MjgyMjkzNzIJAQtnZXRQb29sRGF0YQIJAQdBZGRyZXNzAQkA2QQBBQRwb29sBQVwVHlwZQQDQUlkCAUNJHQwMjkyODIyOTM3MgJfMQQDQklkCAUNJHQwMjkyODIyOTM3MgJfMgQEYmFsQQgFDSR0MDI5MjgyMjkzNzICXzMEBGJhbEIIBQ0kdDAyOTI4MjI5MzcyAl80BAdzaGFyZUlkCAUNJHQwMjkyODIyOTM3MgJfNQQMYm9ycm93QW1vdW50AwkAZgIFCGxldmVyYWdlAGQJARBjYWxjQm9ycm93QW1vdW50BgUEcG10QQUEcG10QgUDQUlkBQNCSWQFCGxldmVyYWdlBQhib3Jyb3dJZAAABA0kdDAyOTUwNzI5NjE0AwkAAAIFCGJvcnJvd0lkBQNBSWQJAJQKAgkAZAIFBHBtdEEFDGJvcnJvd0Ftb3VudAUEcG10QgkAlAoCBQRwbXRBCQBkAgUEcG10QgUMYm9ycm93QW1vdW50BAZwYXlJbkEIBQ0kdDAyOTUwNzI5NjE0Al8xBAZwYXlJbkIIBQ0kdDAyOTUwNzI5NjE0Al8yBAhscEFtb3VudAkBE2NhbGNSZXBsZW5pc2hMUFZpcnQIBQVwVHlwZQUEcG9vbAUGcGF5SW5BBQNBSWQFBnBheUluQgUDQklkBQRiYWxBBQRiYWxCBAduZXdCYWxBCQBkAgUEYmFsQQUGcGF5SW5BBAduZXdCYWxCCQBkAgUEYmFsQgUGcGF5SW5CBA0kdDAyOTc3MTI5OTA3CQESY2FsY1dpdGhkcmF3TFBWaXJ0CgUFcFR5cGUFBHBvb2wFCGxwQW1vdW50BQdzaGFyZUlkBQNBSWQFA0JJZAUHbmV3QmFsQQUHbmV3QmFsQgUMYm9ycm93QW1vdW50BQhib3Jyb3dJZAMJAAACBQ0kdDAyOTc3MTI5OTA3BQ0kdDAyOTc3MTI5OTA3BAphbW91bnRHZXRCCAUNJHQwMjk3NzEyOTkwNwJfMgQKYW1vdW50R2V0QQgFDSR0MDI5NzcxMjk5MDcCXzEEC3JhdGlvQmVmb3JlCQBrAwUEYmFsQgUGU0NBTEU4BQRiYWxBBApyYXRpb0FmdGVyCQBrAwkAZQIFB25ld0JhbEIFCmFtb3VudEdldEIFBlNDQUxFOAkAZQIFB25ld0JhbEEFCmFtb3VudEdldEEEBmltcGFjdAkAZQIFBlNDQUxFOAkAawMFC3JhdGlvQmVmb3JlBQZTQ0FMRTgFCnJhdGlvQWZ0ZXIECWltcGFjdE1vZAMJAGYCAAAFBmltcGFjdAkAaAIFBmltcGFjdAD///////////8BBQZpbXBhY3QJAJQKAgUDbmlsCQDMCAIFCmFtb3VudEdldEEJAMwIAgUKYW1vdW50R2V0QgkAzAgCBQlpbXBhY3RNb2QFA25pbAkAAgECJFN0cmljdCB2YWx1ZSBpcyBub3QgZXF1YWwgdG8gaXRzZWxmLgFpARpnZXRTaGFyZUFzc2V0UHJpY2VSRUFET05MWQEHc2hhcmVJZAQLc2hhcmVQcmljZXMJAQ1nZXRTaGFyZVByaWNlAQUHc2hhcmVJZAkAlAoCBQNuaWwFC3NoYXJlUHJpY2VzAWkBImdldFVzZXJQb3NpdGlvblNoYXJlQW1vdW50UkVBRE9OTFkCBHVzZXIGcG9zTnVtBARwb29sCQETdmFsdWVPckVycm9yTWVzc2FnZQIJAJ0IAgUEdGhpcwkArAICCQCsAgIJAKwCAgUEdXNlcgIBXwUGcG9zTnVtBRFrVXNlclBvc2l0aW9uUG9vbAIQVW5rbm93biBwb3NpdGlvbgQMYm9ycm93QW1vdW50CQERQGV4dHJOYXRpdmUoMTA1MCkCBQR0aGlzCQCsAgIJAKwCAgkArAICCQCsAgIJAKwCAgUEcG9vbAIBXwUEdXNlcgIBXwUGcG9zTnVtBRFrVXNlckJvcnJvd0Ftb3VudAQPdXNlckNhbldpdGhkcmF3CQEYdXNlckNhbldpdGhkcmF3U2hhcmVDYWxjBAUEdXNlcgUEcG9vbAUGcG9zTnVtCQBmAgUMYm9ycm93QW1vdW50AAAJAJQKAgUDbmlsBQ91c2VyQ2FuV2l0aGRyYXcBaQEgZ2V0VXNlclBvc2l0aW9uSW5Eb2xsYXJzUkVBRE9OTFkDBHVzZXIFcG9vbHMGcG9zTnVtCgEHdXNlclBvcwIBYQRwb29sBA0kdDAzMDk0NTMwOTc5BQFhBAh0b3RhbFBvcwgFDSR0MDMwOTQ1MzA5NzkCXzEEB3Bvc0RlYnQIBQ0kdDAzMDk0NTMwOTc5Al8yBAVpbmRleAgFDSR0MDMwOTQ1MzA5NzkCXzMEBXBUeXBlCQETdmFsdWVPckVycm9yTWVzc2FnZQIJAJ0IAgUEdGhpcwkArAICBQVrUG9vbAUEcG9vbAISUG9vbCBpcyBub3QgaW5pdGVkBA0kdDAzMTA3MTMxMTYxCQELZ2V0UG9vbERhdGECCQEHQWRkcmVzcwEJANkEAQUEcG9vbAUFcFR5cGUEA0FJZAgFDSR0MDMxMDcxMzExNjECXzEEA0JJZAgFDSR0MDMxMDcxMzExNjECXzIEBGJhbEEIBQ0kdDAzMTA3MTMxMTYxAl8zBARiYWxCCAUNJHQwMzEwNzEzMTE2MQJfNAQHc2hhcmVJZAgFDSR0MDMxMDcxMzExNjECXzUEDGJvcnJvd0Ftb3VudAkBC3ZhbHVlT3JFbHNlAgkAmggCBQR0aGlzCQCsAgIJAKwCAgkArAICCQCsAgIJAKwCAgUEcG9vbAIBXwUEdXNlcgIBXwkAkQMCBQZwb3NOdW0FBWluZGV4BRFrVXNlckJvcnJvd0Ftb3VudAAABA91c2VyQ2FuV2l0aGRyYXcJARh1c2VyQ2FuV2l0aGRyYXdTaGFyZUNhbGMEBQR1c2VyBQRwb29sCQCRAwIFBnBvc051bQUFaW5kZXgJAGYCBQxib3Jyb3dBbW91bnQAAAQLc2hhcmVQcmljZXMJAQ1nZXRTaGFyZVByaWNlAQUHc2hhcmVJZAQKZGVjUHJTaGFyZQkAbAYACgAACQEQZ2V0QXNzZXREZWNpbWFscwEFB3NoYXJlSWQAAAAABQRET1dOBAZzaGFyZUQJAGsDBQ91c2VyQ2FuV2l0aGRyYXcFC3NoYXJlUHJpY2VzBQpkZWNQclNoYXJlAwkAAAIFDGJvcnJvd0Ftb3VudAAACQCVCgMJAM0IAgUIdG90YWxQb3MF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YXltZW50cwAABmFtb3VudAUDQUlkCAkAkQMCCAUBaQhwYXltZW50cwABBmFtb3VudAUDQklkAwkAAAIJAJADAQgFAWkIcGF5bWVudHMAAQMJAAACCQEMYXNzZXRJZFRvU3RyAQgJAJEDAggFAWkIcGF5bWVudHMAAAdhc3NldElkBQNBSWQJAJYKBAgJAJEDAggFAWkIcGF5bWVudHMAAAZhbW91bnQFA0FJZAAABQNCSWQDCQAAAgkBDGFzc2V0SWRUb1N0cgEICQCRAwIIBQFpCHBheW1lbnRzAAAHYXNzZXRJZAUDQklkCQCWCgQAAAUDQUlkCAkAkQMCCAUBaQhwYXltZW50cwAABmFtb3VudAUDQklkCQACAQINV3JvbmcgcGF5bWVudAkAAgECHE9uZSBvciB0d28gcGF5bWVudHMgZXhwZWN0ZWQEBHBtdEEIBQ0kdDAzMjY4ODMzMzI1Al8xBAlwbXRBc3NldEEIBQ0kdDAzMjY4ODMzMzI1Al8yBARwbXRCCAUNJHQwMzI2ODgzMzMyNQJfMwQJcG10QXNzZXRCCAUNJHQwMzI2ODgzMzMyNQJfNAQJbmV3UG9zTnVtCQEYZ2V0TmV3VXNlclBvc2l0aW9uTnVtYmVyAQkApQgBCAUBaQZjYWxsZXIDCQBmAgUIbGV2ZXJhZ2UAZAQMYm9ycm93QW1vdW50CQEQY2FsY0JvcnJvd0Ftb3VudAYFBHBtdEEFBHBtdEIFCXBtdEFzc2V0QQUJcG10QXNzZXRCBQhsZXZlcmFnZQUIYm9ycm93SWQEB3JlcXVlc3QJALkJAgkAzAgCCQClCAEIBQFpBmNhbGxlcgkAzAgCBQRwb29sCQDMCAIJAKQDAQUEcG10QQkAzAgCBQlwbXRBc3NldEEJAMwIAgkApAMBBQRwbXRCCQDMCAIFCXBtdEFzc2V0QgkAzAgCCQCkAwEFBGJhbEEJAMwIAgkApAMBBQRiYWxCCQDMCAIFB3NoYXJlSWQJAMwIAgUIYm9ycm93SWQJAMwIAgkApAMBBQxib3Jyb3dBbW91bnQFA25pbAIBLAQMbmV3UmVxdWVzdElkCgABQAkA/AcEBQR0aGlzAhBjcmVhdGVOZXdSZXF1ZXN0CQDMCAIFB3JlcXVlc3QFA25pbAUDbmlsAwkAAQIFAUACA0ludAUBQAkAAgEJAKwCAgkAAwEFAUACGCBjb3VsZG4ndCBiZSBjYXN0IHRvIEludAMJAAACBQxuZXdSZXF1ZXN0SWQFDG5ld1JlcXVlc3RJZAQEYXJncwkAzAgCCQCsAgIJAKwCAgkApQgBCAUBaQZjYWxsZXICAV8JAKQDAQUJbmV3UG9zTnVtCQDMCAIFB3NoYXJlSWQJAMwIAgUIYm9ycm93SWQJAMwIAgUMYm9ycm93QW1vdW50CQDMCAIJAKUIAQUEdGhpcwkAzAgCAhFyZXBsZW5pc2hGcm9tTGFuZAkAzAgCCQCkAwEJARN2YWx1ZU9yRXJyb3JNZXNzYWdlAgUMbmV3UmVxdWVzdElkAhhDYW4ndCBjcmVhdGUgbmV3IHJlcXVlc3QFA25pbAQDaW52CQD9BwQJAQ5nZXRMZW5kU3J2QWRkcgACDWZsYXNoUG9zaXRpb24FBGFyZ3MFA25pbAMJAAACBQNpbnYFA2ludgUDbmlsCQACAQIkU3RyaWN0IHZhbHVlIGlzIG5vdCBlcXVhbCB0byBpdHNlbGYuCQACAQIkU3RyaWN0IHZhbHVlIGlzIG5vdCBlcXVhbCB0byBpdHNlbGYuBA0kdDAzNDI1MzM0MzY1CQEPcmVwbGVuaXNoQnlUeXBlCgUFcFR5cGUFBHBvb2wFC05PX0xPQU5fRkVFBQRwbXRBBQNBSWQFBHBtdEIFA0JJZAUEYmFsQQUEYmFsQgUHc2hhcmVJZAQKdXNlclN0YWtlZAgFDSR0MDM0MjUzMzQzNjUCXzEEB2F4bHlGZWUIBQ0kdDAzNDI1MzM0MzY1Al8yCQDOCAIJARByZXBsZW5pc2hFbnRyaWVzCAUEcG9vbAkApQgBCAUBaQZjYWxsZXIFCnVzZXJTdGFrZWQFB2F4bHlGZWUFCW5ld1Bvc051bQUHc2hhcmVJZAUFcFR5cGUHCQEOZ2V0Q3Vyc0VudHJpZXMDBQNBSWQFA0JJZAUHc2hhcmVJZAFpARFyZXBsZW5pc2hGcm9tTGFuZAEJcmVxdWVzdElkBA0kdDAzNDU3NjM0NjgwCQEMcGFyc2VSZXF1ZXN0AQUJcmVxdWVzdElkBAR1c2VyCAUNJHQwMzQ1NzYzNDY4MAJfMQQEcG9vbAgFDSR0MDM0NTc2MzQ2ODACXzIEBHBtdEEIBQ0kdDAzNDU3NjM0NjgwAl8zBANBSWQIBQ0kdDAzNDU3NjM0NjgwAl80BARwbXRCCAUNJHQwMzQ1NzYzNDY4MAJfNQQDQklkCAUNJHQwMzQ1NzYzNDY4MAJfNgQEYmFsQQgFDSR0MDM0NTc2MzQ2ODACXzcEBGJhbEIIBQ0kdDAzNDU3NjM0NjgwAl84BAdzaGFyZUlkCAUNJHQwMzQ1NzYzNDY4MAJfOQQHYndBc3NldAgFDSR0MDM0NTc2MzQ2ODADXzEwBAhid0Ftb3VudAgFDSR0MDM0NTc2MzQ2ODADXzExAwkBAiE9AgkAkAMBCAUBaQhwYXltZW50cwABCQACAQISV3JvbmcgcGF5bWVudCBzaXplAwMJAQIhPQIJAQxhc3NldElkVG9TdHIBCAkAkQMCCAUBaQhwYXltZW50cwAAB2Fzc2V0SWQFB2J3QXNzZXQGCQECIT0CCAkAkQMCCAUBaQhwYXltZW50cwAABmFtb3VudAUIYndBbW91bnQJAAIBAg1Xcm9uZyBwYXltZW50BA0kdDAzNDg3MDM0OTk0AwkAAAIFA0FJZAUHYndBc3NldAkAlAoCCQBkAgUEcG10QQgJAJEDAggFAWkIcGF5bWVudHMAAAZhbW91bnQFBHBtdEIJAJQKAgUEcG10QQkAZAIFBHBtdEIICQCRAwIIBQFpCHBheW1lbnRzAAAGYW1vdW50BAdwbXRBbGxBCAUNJHQwMzQ4NzAzNDk5NAJfMQQHcG10QWxsQggFDSR0MDM0ODcwMzQ5OTQCXzIEBXBUeXBlCQETdmFsdWVPckVycm9yTWVzc2FnZQIJAJ0IAgUEdGhpcwkArAICBQVrUG9vbAUEcG9vbAIMVW5rbm93biBwb29sBA0kdDAzNTA3NjM1MTg1CQEPcmVwbGVuaXNoQnlUeXBlCgUFcFR5cGUFBHBvb2wFCExPQU5fRkVFBQRwbXRBBQNBSWQFBHBtdEIFA0JJZAUEYmFsQQUEYmFsQgUHc2hhcmVJZAQKdXNlclN0YWtlZAgFDSR0MDM1MDc2MzUxODUCXzEEB2F4bHlGZWUIBQ0kdDAzNTA3NjM1MTg1Al8yBAZwb3NOdW0JARhnZXROZXdVc2VyUG9zaXRpb25OdW1iZXIBCQClCAEIBQFpBmNhbGxlcgQNYm9ycm93RW50cmllcwkAzAgCCQEMSW50ZWdlckVudHJ5AgkArAICCQCsAgIJAKwCAgkArAICCQCsAgIFBHBvb2wCAV8FBHVzZXICAV8JAKQDAQUGcG9zTnVtBRFrVXNlckJvcnJvd0Ftb3VudAUIYndBbW91bnQJAMwIAgkBC1N0cmluZ0VudHJ5AgkArAICCQCsAgIJAKwCAgkArAICCQCsAgIFBHBvb2wCAV8FBHVzZXICAV8JAKQDAQUGcG9zTnVtBRJrVXNlckJvcnJvd0Fzc2V0SWQFB2J3QXNzZXQFA25pbAQHZW50cmllcwkBEHJlcGxlbmlzaEVudHJpZXMIBQRwb29sBQR1c2VyBQp1c2VyU3Rha2VkBQdheGx5RmVlBQZwb3NOdW0FB3NoYXJlSWQFBXBUeXBlBgkAlAoCCQDNCAIJAM4IAgkAzggCBQdlbnRyaWVzCQEOZ2V0Q3Vyc0VudHJpZXMDBQNBSWQFA0JJZAUHc2hhcmVJZAUNYm9ycm93RW50cmllcwkBC0RlbGV0ZUVudHJ5AQkArAICBQlyZXF1ZXN0SWQFCmtSZXF1ZXN0SWQFCnVzZXJTdGFrZWQBaQEId2l0aGRyYXcCBHBvb2wFcG9zSWQJAQ53aXRoZHJhd1RvVXNlcgQJAKUIAQgFAWkGY2FsbGVyBQRwb29sCQCkAwEFBXBvc0lkBwFpARRjcmVhdGVVcGRhdGVTdG9wTG9zcwQFcG9zSWQGcG9vbElkB2Fzc2V0SWQFcHJpY2UEEHRva2VuT3JhY2xlUHJpY2UICgABQAkA/AcEBQ9wcmljZU9yYWNsZUFkZHICCWdldFRXQVA2MAkAzAgCBQdhc3NldElkCQDMCAIHBQNuaWwFA25pbAMJAAECBQFAAgooSW50LCBJbnQpBQFACQACAQkArAICCQADAQUBQAIfIGNvdWxkbid0IGJlIGNhc3QgdG8gKEludCwgSW50KQJfMQMJAQEhAQkBCWlzRGVmaW5lZAEJAJoIAgUEdGhpcwkArAICCQCsAgIJAKwCAgkArAICCQCsAgIFBnBvb2xJZAIBXwkApQgBCAUBaQZjYWxsZXICAV8JAKQDAQUFcG9zSWQFDWtVc2VyUG9zaXRpb24JAAIBAhpUaGVyZSBhcmUgbm8gdXNlciBwb3NpdGlvbgMJAGcCAAAFBXByaWNlCQACAQIcUHJpY2UgbXVzdCBiZSBncmVhdGVyIHRoYW4gMAMJAGYCBQVwcmljZQUQdG9rZW5PcmFjbGVQcmljZQkAAgECK1ByaWNlIG11c3QgYmUgbGVzcyB0aGFuIGN1cnJlbnQgdG9rZW4gcHJpY2UJAMwIAgkBDEludGVnZXJFbnRyeQIJAKwCAgkArAICCQCsAgIJAKwCAgkArAICCQCsAgIJAKwCAgkApQgBCAUBaQZjYWxsZXICAV8JAKQDAQUFcG9zSWQCAV8FBnBvb2xJZAIBXwUHYXNzZXRJZAUNa1VzZXJTdG9wTG9zcwUFcHJpY2UFA25pbAFpAQ5kZWxldGVTdG9wTG9zcwMFcG9zSWQGcG9vbElkB2Fzc2V0SWQDCQEBIQEJAQlpc0RlZmluZWQBCQCaCAIFBHRoaXMJAKwCAgkArAICCQCsAgIJAKwCAgkArAICCQCsAgIJAKwCAgkApQgBCAUBaQZjYWxsZXICAV8JAKQDAQUFcG9zSWQCAV8FBnBvb2xJZAIBXwUHYXNzZXRJZAUNa1VzZXJTdG9wTG9zcwkAAgECCE5vIGVudHJ5CQDMCAIJAQtEZWxldGVFbnRyeQEJAKwCAgkArAICCQCsAgIJAKwCAgkArAICCQCsAgIJAKwCAgkApQgBCAUBaQZjYWxsZXICAV8JAKQDAQUFcG9zSWQCAV8FBnBvb2xJZAIBXwUHYXNzZXRJZAUNa1VzZXJTdG9wTG9zcwUDbmlsAWkBEGNyZWF0ZU5ld1JlcXVlc3QBBnBhcmFtcwkBC3ZhbHVlT3JFbHNlAgkBCmlzU2VsZkNhbGwBBQFpBAxuZXdSZXF1ZXN0SWQJAGQCCQELdmFsdWVPckVsc2UCCQCaCAIFBHRoaXMFDGtSZXF1ZXN0SXRlcgAAAAEJAJQKAgkAzAgCCQELU3RyaW5nRW50cnkCCQCsAgIJAKQDAQUMbmV3UmVxdWVzdElkBQprUmVxdWVzdElkBQZwYXJhbXMJAMwIAgkBDEludGVnZXJFbnRyeQIFDGtSZXF1ZXN0SXRlcgUMbmV3UmVxdWVzdElkBQNuaWwFDG5ld1JlcXVlc3RJZAFpAQhzdG9wTG9zcwQEdXNlcgVwb3NJZARwb29sB2Fzc2V0SWQEEHRva2VuT3JhY2xlUHJpY2UICgABQAkA/AcEBQ9wcmljZU9yYWNsZUFkZHICCWdldFRXQVA2MAkAzAgCBQdhc3NldElkCQDMCAIHBQNuaWwFA25pbAMJAAECBQFAAgooSW50LCBJbnQpBQFACQACAQkArAICCQADAQUBQAIfIGNvdWxkbid0IGJlIGNhc3QgdG8gKEludCwgSW50KQJfMQMJAQEhAQkBCWlzRGVmaW5lZAEJAJoIAgUEdGhpcwkArAICCQCsAgIJAKwCAgkArAICCQCsAgIJAKwCAgkArAICBQR1c2VyAgFfCQCkAwEFBXBvc0lkAgFfBQRwb29sAgFfBQdhc3NldElkBQ1rVXNlclN0b3BMb3NzCQACAQIITm8gZW50cnkJAM0IAgkBDndpdGhkcmF3VG9Vc2VyBAkApQgBCAUBaQZjYWxsZXIFBHBvb2wJAKQDAQUFcG9zSWQGCQELRGVsZXRlRW50cnkBCQCsAgIJAKwCAgkArAICCQCsAgIJAKwCAgkArAICCQCsAgIFBHVzZXICAV8JAKQDAQUFcG9zSWQCAV8FBHBvb2wCAV8FB2Fzc2V0SWQFDWtVc2VyU3RvcExvc3MBaQEJbGlxdWlkYXRlAwR1c2VyBXBvc0lkD2xpcXVpZGF0ZUFtb3VudAQEcG9vbAkBE3ZhbHVlT3JFcnJvck1lc3NhZ2UCCQCdCAIFBHRoaXMJAKwCAgkArAICCQCsAgIFBHVzZXICAV8FBXBvc0lkBRFrVXNlclBvc2l0aW9uUG9vbAILbm8gcG9zaXRpb24EBXBUeXBlCQETdmFsdWVPckVycm9yTWVzc2FnZQIJAJ0IAgUEdGhpcwkArAICBQVrUG9vbAUEcG9vbAISUG9vbCBpcyBub3QgaW5pdGVkBA0kdDAzNzk2MjM4MDUyCQELZ2V0UG9vbERhdGECCQEHQWRkcmVzcwEJANkEAQUEcG9vbAUFcFR5cGUEA0FJZAgFDSR0MDM3OTYyMzgwNTICXzEEA0JJZAgFDSR0MDM3OTYyMzgwNTICXzIEBGJhbEEIBQ0kdDAzNzk2MjM4MDUyAl8zBARiYWxCCAUNJHQwMzc5NjIzODA1MgJfNAQHc2hhcmVJZAgFDSR0MDM3OTYyMzgwNTICXzUEBmFtb3VudAkBCXVuc3Rha2VMUAQFBHBvb2wFBXBUeXBlBQdzaGFyZUlkBQ9saXF1aWRhdGVBbW91bnQEDGJvcnJvd0Ftb3VudAkBEUBleHRyTmF0aXZlKDEwNTApAgUEdGhpcwkArAICCQCsAgIJAKwCAgkArAICCQCsAgIFBHBvb2wCAV8FBHVzZXICAV8FBXBvc0lkBRFrVXNlckJvcnJvd0Ftb3VudAQLYm9ycm93QXNzZXQJARFAZXh0ck5hdGl2ZSgxMDUzKQIFBHRoaXMJAKwCAgkArAICCQCsAgIJAKwCAgkArAICBQRwb29sAgFfBQR1c2VyAgFfBQVwb3NJZAUSa1VzZXJCb3Jyb3dBc3NldElkBA91c2VyQ2FuV2l0aGRyYXcJARh1c2VyQ2FuV2l0aGRyYXdTaGFyZUNhbGMEBQR1c2VyBQRwb29sBQVwb3NJZAkAZgIFDGJvcnJvd0Ftb3VudAAAAwkAAAIFDGJvcnJvd0Ftb3VudAAACQACAQIrWW91IGNhbid0IGxpcXVpZGF0ZSBwb3NpdGlvbiB3aXRob3V0IGJvcnJvdwkAzAgCCQEMSW50ZWdlckVudHJ5AgkArAICCQCsAgIJAKwCAgkArAICCQCsAgIFBHBvb2wCAV8FBHVzZXICAV8FBXBvc0lkBRVrVXNlclBvc2l0aW9uSW50ZXJlc3QJARFAZXh0ck5hdGl2ZSgxMDUwKQIFBHRoaXMJAKwCAgUEcG9vbAURa1Bvb2xJbnRlcmVzdExvYW4JAMwIAgkBDEludGVnZXJFbnRyeQIJAKwCAgUEcG9vbAUOa1Bvb2xUb3RhbExvYW4JAGUCCQEZZ2V0UG9vbFRvdGFsU2hhcmVXaXRoTG9hbgEFBHBvb2wFD2xpcXVpZGF0ZUFtb3VudAkAzAgCCQEMSW50ZWdlckVudHJ5AgkArAICBQRwb29sBQprUG9vbFRvdGFsCQBlAgkBEWdldFBvb2xUb3RhbFNoYXJlAQUEcG9vbAUPbGlxdWlkYXRlQW1vdW50CQDMCAIJAQxJbnRlZ2VyRW50cnkCCQCsAgIJAKwCAgkArAICCQCsAgIJAKwCAgUEcG9vbAIBXwUEdXNlcgIBXwUFcG9zSWQFDWtVc2VyUG9zaXRpb24JAGUCBQ91c2VyQ2FuV2l0aGRyYXcFD2xpcXVpZGF0ZUFtb3VudAkAzAgCCQEOU2NyaXB0VHJhbnNmZXIDCAUBaQZjYWxsZXIFBmFtb3VudAkA2QQBBQdzaGFyZUlkBQNuaWwBaQESY2FwaXRhbGl6ZUV4S2VlcGVyDARwb29sBHR5cGUJdG9rZW5Ub0lkEGFtb3VudFRvRXhjaGFuZ2UFY2xhaW0JYW1vdW50c0luCWFkZHJlc3Nlcw9hc3NldHNUb1JlY2VpdmULZXN0UmVjZWl2ZWQRc2xpcHBhZ2VUb2xlcmFuY2ULbWluUmVjZWl2ZWQHb3B0aW9ucwQNJHQwMzkyODczOTQ4MQMFBWNsYWltCQELY2xhaW1GYXJtZWQCBQR0eXBlBQRwb29sBAxjbGFpbWVkQXNzZXQDCQAAAgUEdHlwZQUHU0ZfUE9PTAUGU1dPUElEBQRXWElECQCUCgIFEGFtb3VudFRvRXhjaGFuZ2UFDGNsYWltZWRBc3NldAQNY2xhaW1lZEFtb3VudAgFDSR0MDM5Mjg3Mzk0ODECXzEEDGNsYWltZWRBc3NldAgFDSR0MDM5Mjg3Mzk0ODECXzIED2V4Y2hhbmdlZEFtb3VudAkBDmV4Y2hhbmdlS2VlcGVyCgUJdG9rZW5Ub0lkBRBhbW91bnRUb0V4Y2hhbmdlBQxjbGFpbWVkQXNzZXQFCWFtb3VudHNJbgUJYWRkcmVzc2VzBQ9hc3NldHNUb1JlY2VpdmUFC2VzdFJlY2VpdmVkBRFzbGlwcGFnZVRvbGVyYW5jZQULbWluUmVjZWl2ZWQFB29wdGlvbnMEBmNoYW5nZQkAZQIFDWNsYWltZWRBbW91bnQFEGFtb3VudFRvRXhjaGFuZ2UEC2NoYW5nZUVudHJ5AwkAZgIFBmNoYW5nZQAACQDMCAIJAQxJbnRlZ2VyRW50cnkCCQCsAgIFBHBvb2wFDmtQb29sQ2FwQ2hhbmdlCQBkAgUGY2hhbmdlCQELdmFsdWVPckVsc2UCCQCaCAIFBHRoaXMJAKwCAgUEcG9vbAUOa1Bvb2xDYXBDaGFuZ2UAAAUDbmlsBQNuaWwJAM4IAgkBCmNhcGl0YWxpemUEBQRwb29sBQR0eXBlBQl0b2tlblRvSWQFD2V4Y2hhbmdlZEFtb3VudAULY2hhbmdlRW50cnkBaQESY2FwaXRhbGl6ZUV4UHV6emxlCARwb29sBHR5cGUJdG9rZW5Ub0lkEGFtb3VudFRvRXhjaGFuZ2UFY2xhaW0Jcm91dGVzU3RyDG1pblRvUmVjZWl2ZQdvcHRpb25zBA0kdDA0MDEzODQwMzMyAwUFY2xhaW0JAQtjbGFpbUZhcm1lZAIFBHR5cGUFBHBvb2wEDGNsYWltZWRBc3NldAMJAAACBQR0eXBlBQdTRl9QT09MBQZTV09QSUQFBFdYSUQJAJQKAgUQYW1vdW50VG9FeGNoYW5nZQUMY2xhaW1lZEFzc2V0BA1jbGFpbWVkQW1vdW50CAUNJHQwNDAxMzg0MDMzMgJfMQQMY2xhaW1lZEFzc2V0CAUNJHQwNDAxMzg0MDMzMgJfMgQPZXhjaGFuZ2VkQW1vdW50CQEOZXhjaGFuZ2VQdXp6bGUGBQl0b2tlblRvSWQFEGFtb3VudFRvRXhjaGFuZ2UFDGNsYWltZWRBc3NldAUJcm91dGVzU3RyBQxtaW5Ub1JlY2VpdmUFB29wdGlvbnMEBmNoYW5nZQkAZQIFDWNsYWltZWRBbW91bnQFEGFtb3VudFRvRXhjaGFuZ2UEC2NoYW5nZUVudHJ5AwkAZgIFBmNoYW5nZQAACQDMCAIJAQxJbnRlZ2VyRW50cnkCCQCsAgIFBHBvb2wFDmtQb29sQ2FwQ2hhbmdlCQBkAgUGY2hhbmdlCQELdmFsdWVPckVsc2UCCQCaCAIFBHRoaXMJAKwCAgUEcG9vbAUOa1Bvb2xDYXBDaGFuZ2UAAAUDbmlsBQNuaWwJAM4IAgkBCmNhcGl0YWxpemUEBQRwb29sBQR0eXBlBQl0b2tlblRvSWQFD2V4Y2hhbmdlZEFtb3VudAULY2hhbmdlRW50cnkBaQESY2FwaXRhbGl6ZUV4U3dvcEZpDARwb29sBHR5cGUJdG9rZW5Ub0lkEGFtb3VudFRvRXhjaGFuZ2UFY2xhaW0KZXhjaGFuZ2Vycw5leGNoYW5nZXJzVHlwZQVhcmdzMQVhcmdzMhFyb3V0aW5nQXNzZXRzS2V5cxJtaW5BbW91bnRUb1JlY2VpdmUHb3B0aW9ucwQNJHQwNDEwNTU0MTI0OQMFBWNsYWltCQELY2xhaW1GYXJtZWQCBQR0eXBlBQRwb29sBAxjbGFpbWVkQXNzZXQDCQAAAgUEdHlwZQUHU0ZfUE9PTAUGU1dPUElEBQRXWElECQCUCgIFEGFtb3VudFRvRXhjaGFuZ2UFDGNsYWltZWRBc3NldAQNY2xhaW1lZEFtb3VudAgFDSR0MDQxMDU1NDEyNDkCXzEEDGNsYWltZWRBc3NldAgFDSR0MDQxMDU1NDEyNDkCXzIED2V4Y2hhbmdlZEFtb3VudAkBDmV4Y2hhbmdlU3dvcEZpCgUJdG9rZW5Ub0lkBRBhbW91bnRUb0V4Y2hhbmdlBQxjbGFpbWVkQXNzZXQFCmV4Y2hhbmdlcnMFDmV4Y2hhbmdlcnNUeXBlBQVhcmdzMQUFYXJnczIFEXJvdXRpbmdBc3NldHNLZXlzBRJtaW5BbW91bnRUb1JlY2VpdmUFB29wdGlvbnMEBmNoYW5nZQkAZQIFDWNsYWltZWRBbW91bnQFEGFtb3VudFRvRXhjaGFuZ2UEC2NoYW5nZUVudHJ5AwkAZgIFBmNoYW5nZQAACQDMCAIJAQxJbnRlZ2VyRW50cnkCCQCsAgIFBHBvb2wFDmtQb29sQ2FwQ2hhbmdlCQBkAgUGY2hhbmdlCQELdmFsdWVPckVsc2UCCQCaCAIFBHRoaXMJAKwCAgUEcG9vbAUOa1Bvb2xDYXBDaGFuZ2UAAAUDbmlsBQNuaWwJAM4IAgkBCmNhcGl0YWxpemUEBQRwb29sBQR0eXBlBQl0b2tlblRvSWQFD2V4Y2hhbmdlZEFtb3VudAULY2hhbmdlRW50cnkBaQELaW5pdE5ld1Bvb2wIBHR5cGUIcG9vbEFkZHILaW5GZWVOb0xvYW4JaW5GZWVMb2FuDGNhcEZlZU5vTG9hbg5jYXBGZWVXaXRoTG9hbhFzdG9wbG9zc0ZlZU5vTG9hbhNzdG9wbG9zc0ZlZVdpdGhMb2FuAwMJAQIhPQIFBHR5cGUFB1NGX1BPT0wJAQIhPQIFBHR5cGUFB1dYX1BPT0wHCQACAQIKV3JvbmcgdHlwZQQNJHQwNDE5NDI0MjAzNgkBC2dldFBvb2xEYXRhAgkBB0FkZHJlc3MBCQDZBAEFCHBvb2xBZGRyBQR0eXBlBANhSWQIBQ0kdDA0MTk0MjQyMDM2Al8xBANiSWQIBQ0kdDA0MTk0MjQyMDM2Al8yBARhQmFsCAUNJHQwNDE5NDI0MjAzNgJfMwQEYkJhbAgFDSR0MDQxOTQyNDIwMzYCXzQEB3NoYXJlSWQIBQ0kdDA0MTk0MjQyMDM2Al81CQDMCAIJAQxJbnRlZ2VyRW50cnkCCQCsAgIFCHBvb2xBZGRyBRVrQXhseUluRmVlV2l0aG91dExvYW4FC2luRmVlTm9Mb2FuCQDMCAIJAQxJbnRlZ2VyRW50cnkCCQCsAgIFCHBvb2xBZGRyBRJrQXhseUluRmVlV2l0aExvYW4FCWluRmVlTG9hbgkAzAgCCQEMSW50ZWdlckVudHJ5AgkArAICBQhwb29sQWRkcgURa0F4bHlOb0xvYW5DYXBGZWUFDGNhcEZlZU5vTG9hbgkAzAgCCQEMSW50ZWdlckVudHJ5AgkArAICBQhwb29sQWRkcgUTa0F4bHlXaXRoTG9hbkNhcEZlZQUOY2FwRmVlV2l0aExvYW4JAMwIAgkBDEludGVnZXJFbnRyeQIJAKwCAgUIcG9vbEFkZHIFFmtBeGx5U3RvcExvc3NOb0xvYW5GZWUFEXN0b3Bsb3NzRmVlTm9Mb2FuCQDMCAIJAQxJbnRlZ2VyRW50cnkCCQCsAgIFCHBvb2xBZGRyBRRrQXhseVN0b3BMb3NzTG9hbkZlZQUTc3RvcGxvc3NGZWVXaXRoTG9hbgkAzAgCCQEMSW50ZWdlckVudHJ5AgkArAICBQhwb29sQWRkcgURa1Bvb2xJbnRlcmVzdExvYW4AAAkAzAgCCQEMSW50ZWdlckVudHJ5AgkArAICBQhwb29sQWRkcgUTa1Bvb2xJbnRlcmVzdE5vTG9hbgAACQDMCAIJAQtTdHJpbmdFbnRyeQIJAKwCAgUFa1Bvb2wFCHBvb2xBZGRyBQR0eXBlCQDMCAIJAQtTdHJpbmdFbnRyeQIJAKwCAgUHc2hhcmVJZAUKa1NoYXJlUG9vbAUIcG9vbEFkZHIFA25pbAFpAQ5jYXBpdGFsaXplVGVzdAQEcG9vbAVwVHlwZQd0b2tlbklkC3Rva2VuQW1vdW50BAhwb29sQWRkcgkBB0FkZHJlc3MBCQDZBAEFBHBvb2wEDSR0MDQyODMyNDI5MTEJAQtnZXRQb29sRGF0YQIFCHBvb2xBZGRyBQVwVHlwZQQDQUlkCAUNJHQwNDI4MzI0MjkxMQJfMQQDQklkCAUNJHQwNDI4MzI0MjkxMQJfMgQEYmFsQQgFDSR0MDQyODMyNDI5MTECXzMEBGJhbEIIBQ0kdDA0MjgzMjQyOTExAl80BAdzaGFyZUlkCAUNJHQwNDI4MzI0MjkxMQJfNQQNJHQwNDI5MTQ0Mjk5NAMJAAACBQd0b2tlbklkBQNBSWQJAJQKAgULdG9rZW5BbW91bnQAAAkAlAoCAAAFC3Rva2VuQW1vdW50BARwbXRBCAUNJHQwNDI5MTQ0Mjk5NAJfMQQEcG10QggFDSR0MDQyOTE0NDI5OTQCXzIEDSR0MDQyOTk3NDMxMDEJAQ9yZXBsZW5pc2hCeVR5cGUKBQVwVHlwZQUEcG9vbAUGTk9fRkVFBQRwbXRBBQNBSWQFBHBtdEIFA0JJZAUEYmFsQQUEYmFsQgUHc2hhcmVJZAQMc3Rha2VkQW1vdW50CAUNJHQwNDI5OTc0MzEwMQJfMQQCbmYIBQ0kdDA0Mjk5NzQzMTAxAl8yBBNjdXJQb29sSW50ZXJlc3RMb2FuCQELdmFsdWVPckVsc2UCCQCaCAIFBHRoaXMJAKwCAgUEcG9vbAURa1Bvb2xJbnRlcmVzdExvYW4AAAQVY3VyUG9vbEludGVyZXN0Tm9Mb2FuCQELdmFsdWVPckVsc2UCCQCaCAIFBHRoaXMJAKwCAgUEcG9vbAUTa1Bvb2xJbnRlcmVzdE5vTG9hbgAABBB0b3RhbFNoYXJlQW1vdW50CQERZ2V0UG9vbFRvdGFsU2hhcmUBBQRwb29sBBh0b3RhbFNoYXJlQW1vdW50V2l0aExvYW4JARlnZXRQb29sVG90YWxTaGFyZVdpdGhMb2FuAQUEcG9vbAQLbG9hblBlcmNlbnQJAGsDBRh0b3RhbFNoYXJlQW1vdW50V2l0aExvYW4FBlNDQUxFOAUQdG90YWxTaGFyZUFtb3VudAQKc3Rha2VkTG9hbgkAawMFDHN0YWtlZEFtb3VudAULbG9hblBlcmNlbnQFBlNDQUxFOAQMc3Rha2VkTm9Mb2FuCQBlAgUMc3Rha2VkQW1vdW50BQpzdGFrZWRMb2FuBA9uZXdJbnRlcmVzdExvYW4DCQBmAgUYdG90YWxTaGFyZUFtb3VudFdpdGhMb2FuAAAJAGQCBRNjdXJQb29sSW50ZXJlc3RMb2FuCQBrAwUKc3Rha2VkTG9hbgUHU0NBTEUxMAUYdG90YWxTaGFyZUFtb3VudFdpdGhMb2FuAAAEEW5ld0ludGVyZXN0Tm9Mb2FuAwkAZgIJAGUCBRB0b3RhbFNoYXJlQW1vdW50BRh0b3RhbFNoYXJlQW1vdW50V2l0aExvYW4AAAkAZAIFFWN1clBvb2xJbnRlcmVzdE5vTG9hbgkAawMFDHN0YWtlZE5vTG9hbgUHU0NBTEUxMAkAZQIFEHRvdGFsU2hhcmVBbW91bnQFGHRvdGFsU2hhcmVBbW91bnRXaXRoTG9hbgAABAtheGx5RmVlTG9hbgkAawMFCnN0YWtlZExvYW4JAQpnZXRBeGx5RmVlAgUEcG9vbAUMQ0FQX0ZFRV9MT0FOBQpGRUVfU0NBTEU2BA1heGx5RmVlTm9Mb2FuCQBrAwUMc3Rha2VkTm9Mb2FuCQEKZ2V0QXhseUZlZQIFBHBvb2wFD0NBUF9GRUVfTk9fTE9BTgUKRkVFX1NDQUxFNgQHYXhseUZlZQkBCXVuc3Rha2VMUAQFBHBvb2wFBXBUeXBlBQdzaGFyZUlkCQBkAgULYXhseUZlZUxvYW4FDWF4bHlGZWVOb0xvYW4DCQAAAgUHYXhseUZlZQUHYXhseUZlZQkAzggCCQDMCAIJAQxJbnRlZ2VyRW50cnkCCQCsAgIFBHBvb2wFEWtQb29sSW50ZXJlc3RMb2FuBQ9uZXdJbnRlcmVzdExvYW4JAMwIAgkBDEludGVnZXJFbnRyeQIJAKwCAgUEcG9vbAUTa1Bvb2xJbnRlcmVzdE5vTG9hbgURbmV3SW50ZXJlc3ROb0xvYW4JAMwIAgkBDEludGVnZXJFbnRyeQIJAKwCAgUEcG9vbAUKa1Bvb2xUb3RhbAkAZQIJAGQCBRB0b3RhbFNoYXJlQW1vdW50BQxzdGFrZWRBbW91bnQFB2F4bHlGZWUJAMwIAgkBDEludGVnZXJFbnRyeQIJAKwCAgUEcG9vbAUOa1Bvb2xUb3RhbExvYW4JAGUCCQBkAgUYdG90YWxTaGFyZUFtb3VudFdpdGhMb2FuBQpzdGFrZWRMb2FuBQtheGx5RmVlTG9hbgkAzAgCCQEOU2NyaXB0VHJhbnNmZXIDBQhtb25leUJveAkAZAIFC2F4bHlGZWVMb2FuBQ1heGx5RmVlTm9Mb2FuCQDZBAEFB3NoYXJlSWQFA25pbAkBDmdldEN1cnNFbnRyaWVzAwUDQUlkBQNCSWQFB3NoYXJlSWQJAAIBAiRTdHJpY3QgdmFsdWUgaXMgbm90IGVxdWFsIHRvIGl0c2VsZi4BaQEPY2xhaW1GYXJtZWRUZXN0AgR0eXBlBHBvb2wDCQAAAgUEdHlwZQUHU0ZfUE9PTAQJYmFsQmVmb3JlCQEOYWNjb3VudEJhbGFuY2UBBQZTV09QSUQDCQAAAgUJYmFsQmVmb3JlBQliYWxCZWZvcmUEA2ludgkA/AcECQEQZ2V0U0ZGYXJtaW5nQWRkcgACBWNsYWltCQDMCAIFBHBvb2wFA25pbAUDbmlsAwkAAAIFA2ludgUDaW52BAhiYWxBZnRlcgkBDmFjY291bnRCYWxhbmNlAQUGU1dPUElECQCUCgIFA25pbAkAlAoCCQBlAgUIYmFsQWZ0ZXIFCWJhbEJlZm9yZQUGU1dPUElECQACAQIkU3RyaWN0IHZhbHVlIGlzIG5vdCBlcXVhbCB0byBpdHNlbGYuCQACAQIkU3RyaWN0IHZhbHVlIGlzIG5vdCBlcXVhbCB0byBpdHNlbGYuAwkAAAIFBHR5cGUFB1dYX1BPT0wECWJhbEJlZm9yZQkBDmFjY291bnRCYWxhbmNlAQUEV1hJRAMJAAACBQliYWxCZWZvcmUFCWJhbEJlZm9yZQQDaW52CQD8BwQJARBnZXRXWEZhcm1pbmdBZGRyAQkBB0FkZHJlc3MBCQDZBAEFBHBvb2wCB2NsYWltV1gJAMwIAgUEcG9vbAUDbmlsBQNuaWwDCQAAAgUDaW52BQNpbnYECGJhbEFmdGVyCQEOYWNjb3VudEJhbGFuY2UBBQRXWElECQCUCgIFA25pbAkAlAoCCQBlAgUIYmFsQWZ0ZXIFCWJhbEJlZm9yZQUEV1hJRAkAAgECJFN0cmljdCB2YWx1ZSBpcyBub3QgZXF1YWwgdG8gaXRzZWxmLgkAAgECJFN0cmljdCB2YWx1ZSBpcyBub3QgZXF1YWwgdG8gaXRzZWxmLgkAAgECD1dyb25nIHBvb2wgdHlwZQECdHgBBnZlcmlmeQAJAPQDAwgFAnR4CWJvZHlCeXRlcwkAkQMCCAUCdHgGcHJvb2ZzAAAIBQJ0eA9zZW5kZXJQdWJsaWNLZXkTBUkl", "height": 2621902, "applicationStatus": "succeeded", "spentComplexity": 0 } View: original | compacted Prev: 3qpmxjEJDyLxnAnwC6JH8HkcoShp1w8USfxK2td5XV7c Next: 5xMJoKavkFVxdBvFQXTXsnvdqvFWjGpAhQ8JZMJtYGB Diff:
OldNewDifferences
204204 func ay (ax) = valueOrElse(getInteger(this, (ax + A)), 0)
205205
206206
207-func az (ax,aA) = (valueOrElse(getInteger(this, (aA + x)), 0) + 1)
207+func az (aA) = (valueOrElse(getInteger(this, (aA + x)), 0) + 1)
208208
209209
210210 func aB (ax,aC) = if ((aC == d))
551551 let cx = if ((ba == a))
552552 then {
553553 let bS = {
554- let an = invoke(ak, "callFunction", ["withdrawREADONLY", [toString(cr)]], nil)
554+ let an = invoke(ak, "callFunction", ["withdrawREADONLY", [toString(cr), toString(ar), toString(as)]], nil)
555555 if ($isInstanceOf(an, "List[Any]"))
556556 then an
557557 else throw(($getType(an) + " couldn't be cast to List[Any]"))
10891089 let fm = fl._2
10901090 let bt = fl._3
10911091 let fn = fl._4
1092- let fo = az(ax, toString(ad.caller))
1092+ let fo = az(toString(ad.caller))
10931093 if ((eA > 100))
10941094 then {
10951095 let cv = ez(bs, bt, fm, fn, eA, eB)
11501150 let fx = cG(ba, ax, g, bs, dz, bt, dA, ar, as, aq)
11511151 let fs = fx._1
11521152 let dP = fx._2
1153- let cS = az(ax, toString(ad.caller))
1153+ let cS = az(toString(ad.caller))
11541154 let fy = [IntegerEntry((((((ax + "_") + aA) + "_") + toString(cS)) + v), ey), StringEntry((((((ax + "_") + aA) + "_") + toString(cS)) + w), ex)]
11551155 let fz = cQ(ax, aA, fs, dP, cS, aq, ba, true)
11561156 $Tuple2((((fz ++ bn(dz, dA, aq)) ++ fy) :+ DeleteEntry((ev + J))), fs)
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 = "stopLossNoLoan"
1313
1414 let f = "stopLossLoan"
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
4444 let u = "_user_position_pool"
4545
4646 let v = "_user_position_borrow_amount"
4747
4848 let w = "_user_position_borrow_asset_id"
4949
5050 let x = "_user_position_number"
5151
5252 let y = "_user_position_interest"
5353
5454 let z = "_pool_total"
5555
5656 let A = "_pool_total_loan"
5757
5858 let B = "_pool_interest_loan"
5959
6060 let C = "_pool_interest_no_loan"
6161
6262 let D = "_axly_fee_without_loan"
6363
6464 let E = "_axly_fee_with_loan"
6565
6666 let F = "_axly_fee_cap_with_loan"
6767
6868 let G = "_axly_fee_cap_no_loan"
6969
7070 let H = "_axly_fee_stoploss_with_loan"
7171
7272 let I = "_axly_fee_stoploss_no_loan"
7373
7474 let J = "_request_id"
7575
7676 let K = "requests_iter"
7777
7878 let L = "pool_"
7979
8080 let M = "_pool_share_id"
8181
8282 let N = "_pool_cap_change"
8383
8484 let O = "last_price"
8585
8686 let P = "_stop_loss"
8787
8888 let Q = "axly_money_box"
8989
9090 let R = "swopfi_farming_addr"
9191
9292 let S = "lend_service_addr"
9393
9494 let T = "price_oracle"
9595
9696 let U = "exchange_contract"
9797
9898 let V = "wx_swap_contract"
9999
100100 let W = Address(fromBase58String(valueOrErrorMessage(getString(this, Q), "No axly moneyBox address")))
101101
102102 let X = Address(fromBase58String(valueOrErrorMessage(getString(this, U), "No exchange contract address")))
103103
104104 let Y = Address(fromBase58String(valueOrErrorMessage(getString(this, T), "No price oracle address")))
105105
106106 let Z = Address(fromBase58String(valueOrErrorMessage(getString(this, V), "No wx swap address")))
107107
108108 let aa = base58'4W19ndijcc2CsQa9HGW2dfXKTVXhnneWWttxXrtjPmEp'
109109
110110 let ab = base58'EMAMLxDnv3xiz8RXg8Btj33jcEw3wLczL3JKYYmuubpc'
111111
112112 func ac (ad) = if ((ad.caller == this))
113113 then unit
114114 else throw("Only contract itself can call this function")
115115
116116
117117 func ae (af) = {
118118 let ag = af
119119 if ($isInstanceOf(ag, "ByteVector"))
120120 then {
121121 let ah = ag
122122 assetBalance(this, ah)
123123 }
124124 else if ($isInstanceOf(ag, "Unit"))
125125 then {
126126 let ai = ag
127127 wavesBalance(this).available
128128 }
129129 else throw("Match error")
130130 }
131131
132132
133133 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"))
134134
135135
136136 func al (ak) = {
137137 let am = {
138138 let an = invoke(ak, "getPoolConfigWrapperREADONLY", nil, nil)
139139 if ($isInstanceOf(an, "List[Any]"))
140140 then an
141141 else throw(($getType(an) + " couldn't be cast to List[Any]"))
142142 }
143143 if ((am == am))
144144 then {
145145 let ao = valueOrErrorMessage({
146146 let an = am[4]
147147 if ($isInstanceOf(an, "String"))
148148 then an
149149 else unit
150150 }, "Can't get pool A asset id")
151151 let ap = valueOrErrorMessage({
152152 let an = am[5]
153153 if ($isInstanceOf(an, "String"))
154154 then an
155155 else unit
156156 }, "Can't get pool B asset id")
157157 let aq = valueOrErrorMessage({
158158 let an = am[3]
159159 if ($isInstanceOf(an, "String"))
160160 then an
161161 else unit
162162 }, "Can't get pool LP asset id")
163163 let ar = {
164164 let an = invoke(ak, "getAccBalanceWrapperREADONLY", [ao], nil)
165165 if ($isInstanceOf(an, "Int"))
166166 then an
167167 else throw(($getType(an) + " couldn't be cast to Int"))
168168 }
169169 if ((ar == ar))
170170 then {
171171 let as = {
172172 let an = invoke(ak, "getAccBalanceWrapperREADONLY", [ap], nil)
173173 if ($isInstanceOf(an, "Int"))
174174 then an
175175 else throw(($getType(an) + " couldn't be cast to Int"))
176176 }
177177 if ((as == as))
178178 then $Tuple5(ao, ap, ar, as, aq)
179179 else throw("Strict value is not equal to itself.")
180180 }
181181 else throw("Strict value is not equal to itself.")
182182 }
183183 else throw("Strict value is not equal to itself.")
184184 }
185185
186186
187187 func at (ak,au) = if ((au == a))
188188 then aj(ak)
189189 else if ((au == b))
190190 then al(ak)
191191 else throw("Wrong pool type")
192192
193193
194194 func av (ak,au,aq) = if ((au == a))
195195 then valueOrErrorMessage(getInteger(ak, r), "Can't get share asset supply")
196196 else if ((au == b))
197197 then valueOrErrorMessage(assetInfo(fromBase58String(aq)), "Wrong ShareId").quantity
198198 else throw("Wrong pool type")
199199
200200
201201 func aw (ax) = valueOrElse(getInteger(this, (ax + z)), 0)
202202
203203
204204 func ay (ax) = valueOrElse(getInteger(this, (ax + A)), 0)
205205
206206
207-func az (ax,aA) = (valueOrElse(getInteger(this, (aA + x)), 0) + 1)
207+func az (aA) = (valueOrElse(getInteger(this, (aA + x)), 0) + 1)
208208
209209
210210 func aB (ax,aC) = if ((aC == d))
211211 then getIntegerValue(this, (ax + G))
212212 else if ((aC == c))
213213 then getIntegerValue(this, (ax + F))
214214 else if ((aC == g))
215215 then getIntegerValue(this, (ax + E))
216216 else if ((aC == h))
217217 then getIntegerValue(this, (ax + D))
218218 else if ((aC == i))
219219 then 0
220220 else throw("Wrong fee type")
221221
222222
223223 func aD () = Address(fromBase58String(valueOrErrorMessage(getString(this, R), "Can't get swopfi farming addr")))
224224
225225
226226 func aE (ak) = {
227227 let aF = Address(fromBase58String(valueOrErrorMessage(getString(ak, "%s__factoryContract"), "Can't get WX factory contract addr")))
228228 let aG = split(valueOrErrorMessage(getString(aF, "%s__factoryConfig"), "Can't get WX factory cfg"), "__")
229229 Address(fromBase58String(aG[1]))
230230 }
231231
232232
233233 func aH () = Address(fromBase58String(valueOrErrorMessage(getString(this, S), "Can't get lend service addr")))
234234
235235
236236 func aI (af) = {
237237 let ag = af
238238 if ($isInstanceOf(ag, "ByteVector"))
239239 then {
240240 let ah = ag
241241 toBase58String(ah)
242242 }
243243 else if ($isInstanceOf(ag, "Unit"))
244244 then {
245245 let ai = ag
246246 "WAVES"
247247 }
248248 else throw("Match error")
249249 }
250250
251251
252252 func aJ (af) = if ((af == "WAVES"))
253253 then unit
254254 else fromBase58String(af)
255255
256256
257257 func aK (af) = if ((af == "WAVES"))
258258 then 8
259259 else {
260260 let ag = assetInfo(fromBase58String(af))
261261 if ($isInstanceOf(ag, "Asset"))
262262 then {
263263 let aL = ag
264264 aL.decimals
265265 }
266266 else throw("Can't find asset")
267267 }
268268
269269
270270 func aM (af) = pow(10, 0, aK(af), 0, 0, DOWN)
271271
272272
273273 func aN (aO) = {
274274 func aP (aQ,af) = {
275275 let aR = ( let an = invoke(Y, "getTWAP60", [af, false], nil)
276276 if ($isInstanceOf(an, "(Int, Int)"))
277277 then an
278278 else throw(($getType(an) + " couldn't be cast to (Int, Int)")))._2
279279 (aQ :+ aR)
280280 }
281281
282282 let aS = aO
283283 let aT = size(aS)
284284 let aU = nil
285285 func aV (aW,aX) = if ((aX >= aT))
286286 then aW
287287 else aP(aW, aS[aX])
288288
289289 func aY (aW,aX) = if ((aX >= aT))
290290 then aW
291291 else throw("List size exceeds 50")
292292
293293 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)
294294 }
295295
296296
297297 func aZ (aq) = {
298298 let ax = valueOrErrorMessage(getString(this, (aq + M)), "Can't find pool addr by share id")
299299 let ak = Address(fromBase58String(ax))
300300 let ba = valueOrErrorMessage(getString(this, (L + ax)), "Pool is not inited")
301301 let bb = at(ak, ba)
302302 let ao = bb._1
303303 let ap = bb._2
304304 let bc = bb._3
305305 let bd = bb._4
306306 let be = ( let an = invoke(Y, "getTWAP60", [ao, false], nil)
307307 if ($isInstanceOf(an, "(Int, Int)"))
308308 then an
309309 else throw(($getType(an) + " couldn't be cast to (Int, Int)")))._2
310310 let bf = ( let an = invoke(Y, "getTWAP60", [ap, false], nil)
311311 if ($isInstanceOf(an, "(Int, Int)"))
312312 then an
313313 else throw(($getType(an) + " couldn't be cast to (Int, Int)")))._2
314314 let bg = av(ak, ba, aq)
315315 let bh = pow(10, 0, aK(ao), 0, 0, DOWN)
316316 let bi = pow(10, 0, aK(ap), 0, 0, DOWN)
317317 let bj = pow(10, 0, aK(aq), 0, 0, DOWN)
318318 let bk = (fraction(bc, be, bh) + fraction(bd, bf, bi))
319319 fraction(bk, bj, bg)
320320 }
321321
322322
323323 func bl (bm) = {
324324 func aP (aQ,aq) = (aQ :+ aZ(aq))
325325
326326 let aS = bm
327327 let aT = size(aS)
328328 let aU = nil
329329 func aV (aW,aX) = if ((aX >= aT))
330330 then aW
331331 else aP(aW, aS[aX])
332332
333333 func aY (aW,aX) = if ((aX >= aT))
334334 then aW
335335 else throw("List size exceeds 20")
336336
337337 aY(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)
338338 }
339339
340340
341341 func bn (ao,ap,aq) = {
342342 let bo = aN([ao, ap])
343343 let bp = aZ(aq)
344344 let bq = [toString(bo[0]), toString(bo[1]), toString(bp)]
345345 [StringEntry(O, makeString(bq, ","))]
346346 }
347347
348348
349349 func br (ba,ak,bs,ao,bt,ap,ar,as) = {
350350 let bu = if ((ba == a))
351351 then $Tuple2(nil, nil)
352352 else $Tuple2(split({
353353 let an = invoke(ak, "evaluatePutByAmountAssetREADONLY", [bs], nil)
354354 if ($isInstanceOf(an, "String"))
355355 then an
356356 else throw(($getType(an) + " couldn't be cast to String"))
357357 }, "__"), split({
358358 let an = invoke(ak, "evaluatePutByPriceAssetREADONLY", [bt], nil)
359359 if ($isInstanceOf(an, "String"))
360360 then an
361361 else throw(($getType(an) + " couldn't be cast to String"))
362362 }, "__"))
363363 if ((bu == bu))
364364 then {
365365 let bv = bu._2
366366 let bw = bu._1
367367 let bx = if ((ba == a))
368368 then $Tuple2(fraction(j, bs, ar), fraction(j, bt, as))
369369 else $Tuple2(parseIntValue(bw[1]), parseIntValue(bv[1]))
370370 let by = bx._1
371371 let bz = bx._2
372372 let bA = if ((bz > by))
373373 then {
374374 let bB = if ((ba == a))
375375 then fraction(as, by, j, CEILING)
376376 else parseIntValue(bw[8])
377377 $Tuple5(bs, bB, (bt - bB), ap, bz)
378378 }
379379 else {
380380 let bB = if ((ba == a))
381381 then fraction(ar, bz, j, CEILING)
382382 else parseIntValue(bv[7])
383383 $Tuple5(bB, bt, (bs - bB), ao, by)
384384 }
385385 let bC = bA._1
386386 let bD = bA._2
387387 let bE = bA._3
388388 let bF = bA._4
389389 let bG = bA._5
390390 $Tuple5(bC, bD, bE, bF, bG)
391391 }
392392 else throw("Strict value is not equal to itself.")
393393 }
394394
395395
396396 func bH (ak,ba,bs,ao,bt,ap) = {
397397 let bI = [AttachedPayment(aJ(ao), bs), AttachedPayment(aJ(ap), bt)]
398398 if ((ba == a))
399399 then invoke(ak, "callFunction", ["replenishWithTwoTokens", ["false", "0"]], bI)
400400 else invoke(ak, "put", [1000000, false], bI)
401401 }
402402
403403
404404 func bJ (ak,ba,bB,bK) = {
405405 let bI = [AttachedPayment(aJ(bK), bB)]
406406 if ((ba == a))
407407 then invoke(ak, "callFunction", ["replenishWithOneToken", ["0", "false", "0"]], bI)
408408 else invoke(ak, "putOneTkn", [0, false], bI)
409409 }
410410
411411
412412 func bL (ax,ba,aq,bM) = {
413413 let bI = [AttachedPayment(fromBase58String(aq), bM)]
414414 if ((ba == a))
415415 then invoke(aD(), "lockShareTokens", [ax, 0], bI)
416416 else invoke(aE(addressFromStringValue(ax)), "stake", nil, bI)
417417 }
418418
419419
420420 func bN (ax,ba,aq,bM) = {
421421 let bO = if ((ba == a))
422422 then $Tuple3(aD(), "withdrawShareTokens", [ax, bM])
423423 else if ((ba == b))
424424 then $Tuple3(aE(Address(fromBase58String(ax))), "unstake", [aq, bM])
425425 else throw("Wrong pool type")
426426 let bP = bO._1
427427 let bQ = bO._2
428428 let bR = bO._3
429429 let bS = invoke(bP, bQ, bR, nil)
430430 if ((bS == bS))
431431 then bM
432432 else throw("Strict value is not equal to itself.")
433433 }
434434
435435
436436 func bT (ax,bU,bV,ar,as,bW,bX) = {
437437 let ak = Address(fromBase58String(ax))
438438 let bY = 1000000
439439 let bZ = getIntegerValue(ak, s)
440440 let ca = fraction(bW, bY, (bY - bZ))
441441 let cb = if ((bX == bU))
442442 then {
443443 let cc = fraction(ar, ca, (as - ca))
444444 $Tuple2(cc, bV)
445445 }
446446 else {
447447 let cc = fraction(as, ca, (ar - ca))
448448 $Tuple2(cc, bU)
449449 }
450450 let cc = cb._1
451451 let cd = cb._2
452452 $Tuple2(cd, cc)
453453 }
454454
455455
456456 func ce (ax,bU,bV,ar,as,bW,bX) = {
457457 let cf = getIntegerValue(Z, "%s__protocolFee")
458458 let cg = getIntegerValue(Z, "%s__poolFee")
459459 let ch = toBigInt(100000000)
460460 let ci = if ((bX == bU))
461461 then {
462462 let cc = fraction(ar, bW, (as - bW))
463463 $Tuple2(cc, bV)
464464 }
465465 else {
466466 let cc = fraction(as, bW, (ar - bW))
467467 $Tuple2(cc, bU)
468468 }
469469 let cc = ci._1
470470 let cd = ci._2
471471 let cj = toInt(fraction(toBigInt(cc), ch, (ch - toBigInt((cf + cg)))))
472472 $Tuple2(cd, cj)
473473 }
474474
475475
476476 func ck (au,ax,bU,bV,ar,as,bW,bX) = if ((au == a))
477477 then {
478478 let cl = bT(ax, bU, bV, ar, as, bW, bX)
479479 let cd = cl._1
480480 let cc = cl._2
481481 invoke(addressFromStringValue(ax), "callFunction", ["exchange", ["1"]], [AttachedPayment(aJ(cd), cc)])
482482 }
483483 else {
484484 let cm = ce(ax, bU, bV, ar, as, bW, bX)
485485 let cd = cm._1
486486 let cc = cm._2
487487 invoke(Z, "swap", [1, bX, toString(this)], [AttachedPayment(aJ(cd), cc)])
488488 }
489489
490490
491491 func cn (ba,ax,bs,ao,bt,ap,ar,as) = {
492492 let ak = addressFromStringValue(ax)
493493 if ((ba == a))
494494 then {
495495 let bS = {
496496 let an = invoke(ak, "callFunction", ["calcLPReplenishDiffPropREADONLY", [toString(bs), toString(bt), "0"]], nil)
497497 if ($isInstanceOf(an, "List[Any]"))
498498 then an
499499 else throw(($getType(an) + " couldn't be cast to List[Any]"))
500500 }
501501 if ((bS == bS))
502502 then {
503503 let an = bS[0]
504504 if ($isInstanceOf(an, "Int"))
505505 then an
506506 else throw(($getType(an) + " couldn't be cast to Int"))
507507 }
508508 else throw("Strict value is not equal to itself.")
509509 }
510510 else if ((ba == b))
511511 then {
512512 let co = if (if ((bs > 0))
513513 then (bt > 0)
514514 else false)
515515 then {
516516 let cp = br(ba, ak, bs, ao, bt, ap, ar, as)
517517 let bC = cp._1
518518 let bD = cp._2
519519 let bE = cp._3
520520 let cq = cp._4
521521 let cr = cp._5
522522 $Tuple3(bE, cq, cr)
523523 }
524524 else if ((bs > 0))
525525 then $Tuple3(bs, ao, 0)
526526 else $Tuple3(bt, ap, 0)
527527 let bE = co._1
528528 let cq = co._2
529529 let cs = co._3
530530 let ct = if ((bE > 0))
531531 then {
532532 let bS = {
533533 let an = invoke(ak, "putOneTknREADONLY", [cq, bE], nil)
534534 if ($isInstanceOf(an, "(Int, Int, Int)"))
535535 then an
536536 else throw(($getType(an) + " couldn't be cast to (Int, Int, Int)"))
537537 }
538538 if ((bS == bS))
539539 then bS._1
540540 else throw("Strict value is not equal to itself.")
541541 }
542542 else 0
543543 (cs + ct)
544544 }
545545 else throw("Wrong pool type")
546546 }
547547
548548
549549 func cu (ba,ax,cr,aq,ao,ap,ar,as,cv,cw) = {
550550 let ak = addressFromStringValue(ax)
551551 let cx = if ((ba == a))
552552 then {
553553 let bS = {
554- let an = invoke(ak, "callFunction", ["withdrawREADONLY", [toString(cr)]], nil)
554+ let an = invoke(ak, "callFunction", ["withdrawREADONLY", [toString(cr), toString(ar), toString(as)]], nil)
555555 if ($isInstanceOf(an, "List[Any]"))
556556 then an
557557 else throw(($getType(an) + " couldn't be cast to List[Any]"))
558558 }
559559 if ((bS == bS))
560560 then $Tuple2({
561561 let an = bS[0]
562562 if ($isInstanceOf(an, "Int"))
563563 then an
564564 else throw(($getType(an) + " couldn't be cast to Int"))
565565 }, {
566566 let an = bS[1]
567567 if ($isInstanceOf(an, "Int"))
568568 then an
569569 else throw(($getType(an) + " couldn't be cast to Int"))
570570 })
571571 else throw("Strict value is not equal to itself.")
572572 }
573573 else if ((ba == b))
574574 then {
575575 let cy = split({
576576 let an = invoke(ak, "evaluateGetREADONLY", [aq, cr], nil)
577577 if ($isInstanceOf(an, "String"))
578578 then an
579579 else throw(($getType(an) + " couldn't be cast to String"))
580580 }, "__")
581581 if ((cy == cy))
582582 then $Tuple2(parseIntValue(cy[1]), parseIntValue(cy[2]))
583583 else throw("Strict value is not equal to itself.")
584584 }
585585 else throw("Wrong pool type")
586586 let cz = cx._1
587587 let cA = cx._2
588588 if ((cv > 0))
589589 then {
590590 let cB = if (if ((cw == ao))
591591 then (cv > cz)
592592 else false)
593593 then (cv - cz)
594594 else if (if ((cw == ap))
595595 then (cv > cA)
596596 else false)
597597 then (cv - cA)
598598 else 0
599599 let cC = if ((cB > 0))
600600 then if ((ba == a))
601601 then bT(ax, ao, ap, ar, as, cB, cw)
602602 else ce(ax, ao, ap, ar, as, cB, cw)
603603 else $Tuple2("", 0)
604604 let cd = cC._1
605605 let cc = cC._2
606606 if ((cw == ao))
607607 then $Tuple2(((cz + cB) - cv), (cA - cc))
608608 else $Tuple2((cz - cc), ((cA + cB) - cv))
609609 }
610610 else $Tuple2(cz, cA)
611611 }
612612
613613
614614 func cD (au,ax) = if ((au == a))
615615 then {
616616 let cE = ae(aa)
617617 if ((cE == cE))
618618 then {
619619 let bS = invoke(aD(), "claim", [ax], nil)
620620 if ((bS == bS))
621621 then {
622622 let cF = ae(aa)
623623 $Tuple2((cF - cE), aa)
624624 }
625625 else throw("Strict value is not equal to itself.")
626626 }
627627 else throw("Strict value is not equal to itself.")
628628 }
629629 else if ((au == b))
630630 then {
631631 let cE = ae(ab)
632632 if ((cE == cE))
633633 then {
634634 let bS = invoke(aE(Address(fromBase58String(ax))), "claimWX", [ax], nil)
635635 if ((bS == bS))
636636 then {
637637 let cF = ae(ab)
638638 $Tuple2((cF - cE), ab)
639639 }
640640 else throw("Strict value is not equal to itself.")
641641 }
642642 else throw("Strict value is not equal to itself.")
643643 }
644644 else throw("Wrong pool type")
645645
646646
647647 func cG (ba,ax,aC,bs,ao,bt,ap,ar,as,cH) = {
648648 let cI = ae(fromBase58String(cH))
649649 if ((cI == cI))
650650 then {
651651 let ak = addressFromStringValue(ax)
652652 let cJ = if (if ((bs > 0))
653653 then (bt > 0)
654654 else false)
655655 then {
656656 let cK = br(ba, ak, bs, ao, bt, ap, ar, as)
657657 let bC = cK._1
658658 let bD = cK._2
659659 let bE = cK._3
660660 let cq = cK._4
661661 let bS = bH(ak, ba, bC, ao, bD, ap)
662662 if ((bS == bS))
663663 then $Tuple2(bE, cq)
664664 else throw("Strict value is not equal to itself.")
665665 }
666666 else if ((bs > 0))
667667 then $Tuple2(bs, ao)
668668 else if ((bt > 0))
669669 then $Tuple2(bt, ap)
670670 else throw("pmts must be > 0")
671671 let bE = cJ._1
672672 let cq = cJ._2
673673 let bS = if ((bE > 0))
674674 then bJ(ak, ba, bE, cq)
675675 else nil
676676 if ((bS == bS))
677677 then {
678678 let cL = ae(fromBase58String(cH))
679679 let cM = (cL - cI)
680680 let cN = fraction(cM, aB(ax, aC), l)
681681 let cO = (cM - cN)
682682 if ((0 >= cO))
683683 then throw("amount of staked sharetokens must be > 0")
684684 else {
685685 let cP = bL(ax, ba, cH, cO)
686686 if ((cP == cP))
687687 then $Tuple2(cO, cN)
688688 else throw("Strict value is not equal to itself.")
689689 }
690690 }
691691 else throw("Strict value is not equal to itself.")
692692 }
693693 else throw("Strict value is not equal to itself.")
694694 }
695695
696696
697697 func cQ (ax,aA,cR,cN,cS,aq,au,cT) = {
698698 let cU = aw(ax)
699699 let cV = ay(ax)
700700 let cW = if (cT)
701701 then $Tuple2(getIntegerValue(this, (ax + B)), (cV + cR))
702702 else $Tuple2(getIntegerValue(this, (ax + C)), cV)
703703 let cX = cW._1
704704 let cY = cW._2
705705 [IntegerEntry((ax + z), (cU + cR)), IntegerEntry((ax + A), cY), IntegerEntry((((((ax + "_") + aA) + "_") + toString(cS)) + t), cR), IntegerEntry((((((ax + "_") + aA) + "_") + toString(cS)) + y), cX), StringEntry((((aA + "_") + toString(cS)) + u), ax), IntegerEntry((aA + x), cS), ScriptTransfer(W, cN, fromBase58String(aq))]
706706 }
707707
708708
709709 func cZ (da,db,dc,dd,de,df,dg,dh,di,dj) = {
710710 let dk = ae(aJ(da))
711711 if ((dk == dk))
712712 then {
713713 let bS = invoke(X, "swap", [dd, de, df, dg, dh, di, dj], [AttachedPayment(dc, db)])
714714 if ((bS == bS))
715715 then (ae(aJ(da)) - dk)
716716 else throw("Strict value is not equal to itself.")
717717 }
718718 else throw("Strict value is not equal to itself.")
719719 }
720720
721721
722722 func dl (da,db,dc,dm,dn,dj) = {
723723 let dk = ae(aJ(da))
724724 if ((dk == dk))
725725 then {
726726 let bS = invoke(X, "puzzleSwap", [dm, dn, dj], [AttachedPayment(dc, db)])
727727 if ((bS == bS))
728728 then (ae(aJ(da)) - dk)
729729 else throw("Strict value is not equal to itself.")
730730 }
731731 else throw("Strict value is not equal to itself.")
732732 }
733733
734734
735735 func do (da,db,dc,dp,dq,dr,ds,dt,du,dj) = {
736736 let dk = ae(aJ(da))
737737 if ((dk == dk))
738738 then {
739739 let bS = invoke(X, "swopfiSwap", [dp, dq, dr, ds, dt, du, dj], [AttachedPayment(dc, db)])
740740 if ((bS == bS))
741741 then (ae(aJ(da)) - dk)
742742 else throw("Strict value is not equal to itself.")
743743 }
744744 else throw("Strict value is not equal to itself.")
745745 }
746746
747747
748748 func dv (ax,ba,dw,dx) = {
749749 let ak = Address(fromBase58String(ax))
750750 let dy = at(ak, ba)
751751 let dz = dy._1
752752 let dA = dy._2
753753 let ar = dy._3
754754 let as = dy._4
755755 let aq = dy._5
756756 if (if ((dw != dz))
757757 then (dw != dA)
758758 else false)
759759 then throw("Wrong asset")
760760 else {
761761 let dB = if ((dw == dz))
762762 then $Tuple2(dx, 0)
763763 else $Tuple2(0, dx)
764764 let bs = dB._1
765765 let bt = dB._2
766766 let dC = cG(ba, ax, i, bs, dz, bt, dA, ar, as, aq)
767767 let cR = dC._1
768768 let dD = dC._2
769769 let dE = valueOrElse(getInteger(this, (ax + B)), 0)
770770 let dF = valueOrElse(getInteger(this, (ax + C)), 0)
771771 let dG = aw(ax)
772772 let dH = ay(ax)
773773 let dI = fraction(dH, j, dG)
774774 let dJ = fraction(cR, dI, j)
775775 let dK = (cR - dJ)
776776 let dL = if ((dH > 0))
777777 then (dE + fraction(dJ, k, dH))
778778 else 0
779779 let dM = if (((dG - dH) > 0))
780780 then (dF + fraction(dK, k, (dG - dH)))
781781 else 0
782782 let dN = fraction(dJ, aB(ax, d), l)
783783 let dO = fraction(dK, aB(ax, c), l)
784784 let dP = bN(ax, ba, aq, (dN + dO))
785785 if ((dP == dP))
786786 then ([IntegerEntry((ax + B), dL), IntegerEntry((ax + C), dM), IntegerEntry((ax + z), ((dG + cR) - dP)), IntegerEntry((ax + A), ((dH + dJ) - dN)), ScriptTransfer(W, (dN + dO), fromBase58String(aq))] ++ bn(dz, dA, aq))
787787 else throw("Strict value is not equal to itself.")
788788 }
789789 }
790790
791791
792792 func dQ (ax,dR,dS,dT) = {
793793 let ak = Address(fromBase58String(ax))
794794 let ba = valueOrErrorMessage(getString(this, (L + ax)), "Unknown pool")
795795 let dU = at(ak, ba)
796796 let bU = dU._1
797797 let bV = dU._2
798798 let ar = dU._3
799799 let as = dU._4
800800 let aq = dU._5
801801 let dV = ae(aJ(bU))
802802 if ((dV == dV))
803803 then {
804804 let dW = ae(aJ(bV))
805805 if ((dW == dW))
806806 then {
807807 let bS = if ((ba == a))
808808 then invoke(ak, "callFunction", ["withdraw", [toString(dR)]], nil)
809809 else {
810810 let bS = bN(ax, ba, aq, dR)
811811 if ((bS == bS))
812812 then invoke(ak, "get", nil, [AttachedPayment(aJ(aq), dR)])
813813 else throw("Strict value is not equal to itself.")
814814 }
815815 if ((bS == bS))
816816 then {
817817 let dX = ae(aJ(bU))
818818 let dY = ae(aJ(bV))
819819 let dZ = $Tuple2((dX - dV), (dY - dW))
820820 let ea = dZ._1
821821 let eb = dZ._2
822822 let ec = if ((dS > 0))
823823 then {
824824 let cB = if (if ((dT == bU))
825825 then (dS > ea)
826826 else false)
827827 then (dS - ea)
828828 else if (if ((dT == bV))
829829 then (dS > eb)
830830 else false)
831831 then (dS - eb)
832832 else 0
833833 let ed = if ((cB > 0))
834834 then ck(ba, ax, bU, bV, ar, as, cB, dT)
835835 else 0
836836 if ((ed == ed))
837837 then {
838838 let ee = ae(aJ(bU))
839839 let ef = ae(aJ(bV))
840840 $Tuple2((ee - dV), (ef - dW))
841841 }
842842 else throw("Strict value is not equal to itself.")
843843 }
844844 else $Tuple2(ea, eb)
845845 let eg = ec._1
846846 let eh = ec._2
847847 $Tuple7(eg, bU, eh, bV, dX, dY, aq)
848848 }
849849 else throw("Strict value is not equal to itself.")
850850 }
851851 else throw("Strict value is not equal to itself.")
852852 }
853853 else throw("Strict value is not equal to itself.")
854854 }
855855
856856
857857 func ei (aA,ax,ej,ek) = {
858858 let el = valueOrErrorMessage(getInteger(this, (((((ax + "_") + aA) + "_") + ej) + t)), "Unknown position")
859859 let em = getIntegerValue(this, (((((ax + "_") + aA) + "_") + ej) + y))
860860 let en = if (ek)
861861 then getIntegerValue(this, (ax + B))
862862 else getIntegerValue(this, (ax + C))
863863 (el + fraction(el, (en - em), k))
864864 }
865865
866866
867867 func eo (aA,ax,ej,ep) = {
868868 let el = valueOrErrorMessage(getInteger(this, (((((ax + "_") + aA) + "_") + ej) + t)), "Unknown position")
869869 let em = getIntegerValue(this, (((((ax + "_") + aA) + "_") + ej) + y))
870870 let cv = valueOrElse(getInteger(this, (((((ax + "_") + aA) + "_") + ej) + v)), 0)
871871 let dR = ei(aA, ax, ej, (cv > 0))
872872 let eq = aw(ax)
873873 let er = Address(fromBase58String(aA))
874874 let dT = valueOrElse(getString(this, (((((ax + "_") + aA) + "_") + ej) + w)), "")
875875 let dS = if ((cv > 0))
876876 then {
877877 let an = invoke(aH(), "getAssetDebt", [false, ((((ax + "_") + aA) + "_") + ej), dT], nil)
878878 if ($isInstanceOf(an, "Int"))
879879 then an
880880 else throw(($getType(an) + " couldn't be cast to Int"))
881881 }
882882 else 0
883883 let es = dQ(ax, dR, dS, dT)
884884 if ((es == es))
885885 then {
886886 let aq = es._7
887887 let dY = es._6
888888 let dX = es._5
889889 let bV = es._4
890890 let eh = es._3
891891 let bU = es._2
892892 let eg = es._1
893893 let et = if ((dS > 0))
894894 then invoke(aH(), "repayFor", [((aA + "_") + ej)], [AttachedPayment(aJ(dT), dS)])
895895 else 0
896896 if ((et == et))
897897 then ([DeleteEntry((((((ax + "_") + aA) + "_") + ej) + t)), DeleteEntry((((((ax + "_") + aA) + "_") + ej) + y)), IntegerEntry((ax + z), (eq - dR)), ScriptTransfer(er, eg, aJ(bU)), ScriptTransfer(er, eh, aJ(bV))] ++ bn(bU, bV, aq))
898898 else throw("Strict value is not equal to itself.")
899899 }
900900 else throw("Strict value is not equal to itself.")
901901 }
902902
903903
904904 func eu (ev) = {
905905 let ew = split(valueOrErrorMessage(getString(this, (ev + J)), ("No request with id " + ev)), ",")
906906 let aA = ew[0]
907907 let ax = ew[1]
908908 let bs = parseIntValue(ew[2])
909909 let dz = ew[3]
910910 let bt = parseIntValue(ew[4])
911911 let dA = ew[5]
912912 let ar = parseIntValue(ew[6])
913913 let as = parseIntValue(ew[7])
914914 let aq = ew[8]
915915 let ex = ew[9]
916916 let ey = parseIntValue(ew[10])
917917 $Tuple11(aA, ax, bs, dz, bt, dA, ar, as, aq, ex, ey)
918918 }
919919
920920
921921 func ez (bs,bt,ao,ap,eA,eB) = {
922922 let be = ( let an = invoke(Y, "getTWAP60", [ao, false], nil)
923923 if ($isInstanceOf(an, "(Int, Int)"))
924924 then an
925925 else throw(($getType(an) + " couldn't be cast to (Int, Int)")))._2
926926 let bf = ( let an = invoke(Y, "getTWAP60", [ap, false], nil)
927927 if ($isInstanceOf(an, "(Int, Int)"))
928928 then an
929929 else throw(($getType(an) + " couldn't be cast to (Int, Int)")))._2
930930 let eC = pow(10, 0, aK(ao), 0, 0, DOWN)
931931 let eD = pow(10, 0, aK(ap), 0, 0, DOWN)
932932 let eE = (fraction(be, bs, eC) + fraction(bf, bt, eD))
933933 let eF = if ((eB == ao))
934934 then $Tuple2(be, eC)
935935 else $Tuple2(bf, eD)
936936 let eG = eF._1
937937 let eH = eF._2
938938 fraction(fraction(eE, (eA - 100), 100), eH, eG)
939939 }
940940
941941
942942 @Callable(ad)
943943 func replenishEVALONLY (ax,eA,eB,bs,bt) = if (if ((100 > eA))
944944 then true
945945 else (eA > 300))
946946 then throw("Leverage can't be <100 and >300")
947947 else {
948948 let ba = valueOrErrorMessage(getString(this, (L + ax)), "Pool is not inited")
949949 let eI = at(Address(fromBase58String(ax)), ba)
950950 let dz = eI._1
951951 let dA = eI._2
952952 let ar = eI._3
953953 let as = eI._4
954954 let aq = eI._5
955955 let cv = if ((eA > 100))
956956 then ez(bs, bt, dz, dA, eA, eB)
957957 else 0
958958 let eJ = if ((eB == dz))
959959 then $Tuple2((bs + cv), bt)
960960 else $Tuple2(bs, (bt + cv))
961961 let eK = eJ._1
962962 let eL = eJ._2
963963 let cr = cn(ba, ax, eK, dz, eL, dA, ar, as)
964964 let eM = (ar + eK)
965965 let eN = (as + eL)
966966 let eO = cu(ba, ax, cr, aq, dz, dA, eM, eN, cv, eB)
967967 if ((eO == eO))
968968 then {
969969 let eP = eO._2
970970 let eQ = eO._1
971971 let eR = fraction(as, j, ar)
972972 let eS = fraction((eN - eP), j, (eM - eQ))
973973 let eT = (j - fraction(eR, j, eS))
974974 let eU = if ((0 > eT))
975975 then (eT * -1)
976976 else eT
977977 $Tuple2(nil, [eQ, eP, eU])
978978 }
979979 else throw("Strict value is not equal to itself.")
980980 }
981981
982982
983983
984984 @Callable(ad)
985985 func getShareAssetPriceREADONLY (aq) = {
986986 let eV = aZ(aq)
987987 $Tuple2(nil, eV)
988988 }
989989
990990
991991
992992 @Callable(ad)
993993 func getUserPositionShareAmountREADONLY (aA,cS) = {
994994 let ax = valueOrErrorMessage(getString(this, (((aA + "_") + cS) + u)), "Unknown position")
995995 let cv = getIntegerValue(this, (((((ax + "_") + aA) + "_") + cS) + v))
996996 let dR = ei(aA, ax, cS, (cv > 0))
997997 $Tuple2(nil, dR)
998998 }
999999
10001000
10011001
10021002 @Callable(ad)
10031003 func getUserPositionInDollarsREADONLY (aA,eW,cS) = {
10041004 func eX (aQ,ax) = {
10051005 let eY = aQ
10061006 let eZ = eY._1
10071007 let fa = eY._2
10081008 let fb = eY._3
10091009 let ba = valueOrErrorMessage(getString(this, (L + ax)), "Pool is not inited")
10101010 let fc = at(Address(fromBase58String(ax)), ba)
10111011 let dz = fc._1
10121012 let dA = fc._2
10131013 let ar = fc._3
10141014 let as = fc._4
10151015 let aq = fc._5
10161016 let cv = valueOrElse(getInteger(this, (((((ax + "_") + aA) + "_") + cS[fb]) + v)), 0)
10171017 let dR = ei(aA, ax, cS[fb], (cv > 0))
10181018 let eV = aZ(aq)
10191019 let fd = pow(10, 0, aK(aq), 0, 0, DOWN)
10201020 let fe = fraction(dR, eV, fd)
10211021 if ((cv == 0))
10221022 then $Tuple3((eZ :+ fe), (fa :+ 0), (fb + 1))
10231023 else {
10241024 let dT = getStringValue(this, (((((ax + "_") + aA) + "_") + cS[fb]) + w))
10251025 let dS = {
10261026 let an = invoke(aH(), "getAssetDebt", [false, ((((ax + "_") + aA) + "_") + cS[fb]), dT], nil)
10271027 if ($isInstanceOf(an, "Int"))
10281028 then an
10291029 else throw(($getType(an) + " couldn't be cast to Int"))
10301030 }
10311031 let ff = ( let an = invoke(Y, "getTWAP60", [dT, false], nil)
10321032 if ($isInstanceOf(an, "(Int, Int)"))
10331033 then an
10341034 else throw(($getType(an) + " couldn't be cast to (Int, Int)")))._1
10351035 let fg = pow(10, 0, aK(dT), 0, 0, DOWN)
10361036 let fh = fraction(dS, ff, fg)
10371037 $Tuple3((eZ :+ fe), (fa :+ fh), (fb + 1))
10381038 }
10391039 }
10401040
10411041 let fi = {
10421042 let aS = eW
10431043 let aT = size(aS)
10441044 let aU = $Tuple3(nil, nil, 0)
10451045 func aV (aW,aX) = if ((aX >= aT))
10461046 then aW
10471047 else eX(aW, aS[aX])
10481048
10491049 func aY (aW,aX) = if ((aX >= aT))
10501050 then aW
10511051 else throw("List size exceeds 20")
10521052
10531053 aY(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)
10541054 }
10551055 let fj = fi._1
10561056 let dS = fi._2
10571057 $Tuple2(nil, $Tuple2(fj, dS))
10581058 }
10591059
10601060
10611061
10621062 @Callable(ad)
10631063 func replenish (ax,eA,eB) = if (if ((100 > eA))
10641064 then true
10651065 else (eA > 300))
10661066 then throw("Leverage can't be <100 and >300")
10671067 else {
10681068 let ba = valueOrErrorMessage(getString(this, (L + ax)), "Pool is not inited")
10691069 let fk = at(Address(fromBase58String(ax)), ba)
10701070 let dz = fk._1
10711071 let dA = fk._2
10721072 let ar = fk._3
10731073 let as = fk._4
10741074 let aq = fk._5
10751075 let fl = if ((size(ad.payments) == 2))
10761076 then if ((aI(ad.payments[0].assetId) != dz))
10771077 then throw("Wrong payment asset A")
10781078 else if ((aI(ad.payments[1].assetId) != dA))
10791079 then throw("Wrong payment asset B")
10801080 else $Tuple4(ad.payments[0].amount, dz, ad.payments[1].amount, dA)
10811081 else if ((size(ad.payments) == 1))
10821082 then if ((aI(ad.payments[0].assetId) == dz))
10831083 then $Tuple4(ad.payments[0].amount, dz, 0, dA)
10841084 else if ((aI(ad.payments[0].assetId) == dA))
10851085 then $Tuple4(0, dz, ad.payments[0].amount, dA)
10861086 else throw("Wrong payment")
10871087 else throw("One or two payments expected")
10881088 let bs = fl._1
10891089 let fm = fl._2
10901090 let bt = fl._3
10911091 let fn = fl._4
1092- let fo = az(ax, toString(ad.caller))
1092+ let fo = az(toString(ad.caller))
10931093 if ((eA > 100))
10941094 then {
10951095 let cv = ez(bs, bt, fm, fn, eA, eB)
10961096 let ew = makeString([toString(ad.caller), ax, toString(bs), fm, toString(bt), fn, toString(ar), toString(as), aq, eB, toString(cv)], ",")
10971097 let fp = {
10981098 let an = invoke(this, "createNewRequest", [ew], nil)
10991099 if ($isInstanceOf(an, "Int"))
11001100 then an
11011101 else throw(($getType(an) + " couldn't be cast to Int"))
11021102 }
11031103 if ((fp == fp))
11041104 then {
11051105 let fq = [((toString(ad.caller) + "_") + toString(fo)), aq, eB, cv, toString(this), "replenishFromLand", toString(valueOrErrorMessage(fp, "Can't create new request"))]
11061106 let bS = reentrantInvoke(aH(), "flashPosition", fq, nil)
11071107 if ((bS == bS))
11081108 then nil
11091109 else throw("Strict value is not equal to itself.")
11101110 }
11111111 else throw("Strict value is not equal to itself.")
11121112 }
11131113 else {
11141114 let fr = cG(ba, ax, h, bs, dz, bt, dA, ar, as, aq)
11151115 let fs = fr._1
11161116 let dP = fr._2
11171117 (cQ(ax, toString(ad.caller), fs, dP, fo, aq, ba, false) ++ bn(dz, dA, aq))
11181118 }
11191119 }
11201120
11211121
11221122
11231123 @Callable(ad)
11241124 func replenishFromLand (ev) = {
11251125 let ft = eu(ev)
11261126 let aA = ft._1
11271127 let ax = ft._2
11281128 let bs = ft._3
11291129 let dz = ft._4
11301130 let bt = ft._5
11311131 let dA = ft._6
11321132 let ar = ft._7
11331133 let as = ft._8
11341134 let aq = ft._9
11351135 let ex = ft._10
11361136 let ey = ft._11
11371137 if ((size(ad.payments) != 1))
11381138 then throw("Wrong payment size")
11391139 else if (if ((aI(ad.payments[0].assetId) != ex))
11401140 then true
11411141 else (ad.payments[0].amount != ey))
11421142 then throw("Wrong payment")
11431143 else {
11441144 let fu = if ((dz == ex))
11451145 then $Tuple2((bs + ad.payments[0].amount), bt)
11461146 else $Tuple2(bs, (bt + ad.payments[0].amount))
11471147 let fv = fu._1
11481148 let fw = fu._2
11491149 let ba = valueOrErrorMessage(getString(this, (L + ax)), "Unknown pool")
11501150 let fx = cG(ba, ax, g, bs, dz, bt, dA, ar, as, aq)
11511151 let fs = fx._1
11521152 let dP = fx._2
1153- let cS = az(ax, toString(ad.caller))
1153+ let cS = az(toString(ad.caller))
11541154 let fy = [IntegerEntry((((((ax + "_") + aA) + "_") + toString(cS)) + v), ey), StringEntry((((((ax + "_") + aA) + "_") + toString(cS)) + w), ex)]
11551155 let fz = cQ(ax, aA, fs, dP, cS, aq, ba, true)
11561156 $Tuple2((((fz ++ bn(dz, dA, aq)) ++ fy) :+ DeleteEntry((ev + J))), fs)
11571157 }
11581158 }
11591159
11601160
11611161
11621162 @Callable(ad)
11631163 func withdraw (ax,ej) = eo(toString(ad.caller), ax, toString(ej), false)
11641164
11651165
11661166
11671167 @Callable(ad)
11681168 func createUpdateStopLoss (ej,fA,af,fB) = {
11691169 let fC = ( let an = invoke(Y, "getTWAP60", [af, false], nil)
11701170 if ($isInstanceOf(an, "(Int, Int)"))
11711171 then an
11721172 else throw(($getType(an) + " couldn't be cast to (Int, Int)")))._1
11731173 if (!(isDefined(getInteger(this, (((((fA + "_") + toString(ad.caller)) + "_") + toString(ej)) + t)))))
11741174 then throw("There are no user position")
11751175 else if ((0 >= fB))
11761176 then throw("Price must be greater than 0")
11771177 else if ((fB > fC))
11781178 then throw("Price must be less than current token price")
11791179 else [IntegerEntry((((((((toString(ad.caller) + "_") + toString(ej)) + "_") + fA) + "_") + af) + P), fB)]
11801180 }
11811181
11821182
11831183
11841184 @Callable(ad)
11851185 func deleteStopLoss (ej,fA,af) = if (!(isDefined(getInteger(this, (((((((toString(ad.caller) + "_") + toString(ej)) + "_") + fA) + "_") + af) + P)))))
11861186 then throw("No entry")
11871187 else [DeleteEntry((((((((toString(ad.caller) + "_") + toString(ej)) + "_") + fA) + "_") + af) + P))]
11881188
11891189
11901190
11911191 @Callable(ad)
11921192 func createNewRequest (bR) = valueOrElse(ac(ad), {
11931193 let fp = (valueOrElse(getInteger(this, K), 0) + 1)
11941194 $Tuple2([StringEntry((toString(fp) + J), bR), IntegerEntry(K, fp)], fp)
11951195 })
11961196
11971197
11981198
11991199 @Callable(ad)
12001200 func stopLoss (aA,ej,ax,af) = {
12011201 let fC = ( let an = invoke(Y, "getTWAP60", [af, false], nil)
12021202 if ($isInstanceOf(an, "(Int, Int)"))
12031203 then an
12041204 else throw(($getType(an) + " couldn't be cast to (Int, Int)")))._1
12051205 if (!(isDefined(getInteger(this, (((((((aA + "_") + toString(ej)) + "_") + ax) + "_") + af) + P)))))
12061206 then throw("No entry")
12071207 else (eo(toString(ad.caller), ax, toString(ej), true) :+ DeleteEntry((((((((aA + "_") + toString(ej)) + "_") + ax) + "_") + af) + P)))
12081208 }
12091209
12101210
12111211
12121212 @Callable(ad)
12131213 func liquidate (aA,ej,fD) = {
12141214 let ax = valueOrErrorMessage(getString(this, (((aA + "_") + ej) + u)), "no position")
12151215 let ba = valueOrErrorMessage(getString(this, (L + ax)), "Pool is not inited")
12161216 let fE = at(Address(fromBase58String(ax)), ba)
12171217 let dz = fE._1
12181218 let dA = fE._2
12191219 let ar = fE._3
12201220 let as = fE._4
12211221 let aq = fE._5
12221222 let bM = bN(ax, ba, aq, fD)
12231223 let cv = getIntegerValue(this, (((((ax + "_") + aA) + "_") + ej) + v))
12241224 let dT = getStringValue(this, (((((ax + "_") + aA) + "_") + ej) + w))
12251225 let dR = ei(aA, ax, ej, (cv > 0))
12261226 if ((cv == 0))
12271227 then throw("You can't liquidate position without borrow")
12281228 else [IntegerEntry((((((ax + "_") + aA) + "_") + ej) + y), getIntegerValue(this, (ax + B))), IntegerEntry((ax + A), (ay(ax) - fD)), IntegerEntry((ax + z), (aw(ax) - fD)), IntegerEntry((((((ax + "_") + aA) + "_") + ej) + t), (dR - fD)), ScriptTransfer(ad.caller, bM, fromBase58String(aq))]
12291229 }
12301230
12311231
12321232
12331233 @Callable(ad)
12341234 func capitalizeExKeeper (ax,au,fF,fG,fH,dd,de,df,dg,dh,di,dj) = {
12351235 let fI = if (fH)
12361236 then cD(au, ax)
12371237 else {
12381238 let fJ = if ((au == a))
12391239 then aa
12401240 else ab
12411241 $Tuple2(fG, fJ)
12421242 }
12431243 let fK = fI._1
12441244 let fJ = fI._2
12451245 let fL = cZ(fF, fG, fJ, dd, de, df, dg, dh, di, dj)
12461246 let bE = (fK - fG)
12471247 let fM = if ((bE > 0))
12481248 then [IntegerEntry((ax + N), (bE + valueOrElse(getInteger(this, (ax + N)), 0)))]
12491249 else nil
12501250 (dv(ax, au, fF, fL) ++ fM)
12511251 }
12521252
12531253
12541254
12551255 @Callable(ad)
12561256 func capitalizeExPuzzle (ax,au,fF,fG,fH,dm,dn,dj) = {
12571257 let fN = if (fH)
12581258 then cD(au, ax)
12591259 else {
12601260 let fJ = if ((au == a))
12611261 then aa
12621262 else ab
12631263 $Tuple2(fG, fJ)
12641264 }
12651265 let fK = fN._1
12661266 let fJ = fN._2
12671267 let fL = dl(fF, fG, fJ, dm, dn, dj)
12681268 let bE = (fK - fG)
12691269 let fM = if ((bE > 0))
12701270 then [IntegerEntry((ax + N), (bE + valueOrElse(getInteger(this, (ax + N)), 0)))]
12711271 else nil
12721272 (dv(ax, au, fF, fL) ++ fM)
12731273 }
12741274
12751275
12761276
12771277 @Callable(ad)
12781278 func capitalizeExSwopFi (ax,au,fF,fG,fH,dp,dq,dr,ds,dt,du,dj) = {
12791279 let fO = if (fH)
12801280 then cD(au, ax)
12811281 else {
12821282 let fJ = if ((au == a))
12831283 then aa
12841284 else ab
12851285 $Tuple2(fG, fJ)
12861286 }
12871287 let fK = fO._1
12881288 let fJ = fO._2
12891289 let fL = do(fF, fG, fJ, dp, dq, dr, ds, dt, du, dj)
12901290 let bE = (fK - fG)
12911291 let fM = if ((bE > 0))
12921292 then [IntegerEntry((ax + N), (bE + valueOrElse(getInteger(this, (ax + N)), 0)))]
12931293 else nil
12941294 (dv(ax, au, fF, fL) ++ fM)
12951295 }
12961296
12971297
12981298
12991299 @Callable(ad)
13001300 func initNewPool (au,ak,fP,fQ,fR,fS,fT,fU) = if (if ((au != a))
13011301 then (au != b)
13021302 else false)
13031303 then throw("Wrong type")
13041304 else {
13051305 let fV = at(Address(fromBase58String(ak)), au)
13061306 let ao = fV._1
13071307 let ap = fV._2
13081308 let fW = fV._3
13091309 let fX = fV._4
13101310 let aq = fV._5
13111311 [IntegerEntry((ak + D), fP), IntegerEntry((ak + E), fQ), IntegerEntry((ak + F), fR), IntegerEntry((ak + G), fS), IntegerEntry((ak + H), fT), IntegerEntry((ak + I), fU), IntegerEntry((ak + B), 0), IntegerEntry((ak + C), 0), StringEntry((L + ak), au), StringEntry((aq + M), ak)]
13121312 }
13131313
13141314
13151315
13161316 @Callable(ad)
13171317 func capitalizeTest (ax,ba,dw,dx) = {
13181318 let ak = Address(fromBase58String(ax))
13191319 let fY = at(ak, ba)
13201320 let dz = fY._1
13211321 let dA = fY._2
13221322 let ar = fY._3
13231323 let as = fY._4
13241324 let aq = fY._5
13251325 let fZ = if ((dw == dz))
13261326 then $Tuple2(dx, 0)
13271327 else $Tuple2(0, dx)
13281328 let bs = fZ._1
13291329 let bt = fZ._2
13301330 let ga = cG(ba, ax, i, bs, dz, bt, dA, ar, as, aq)
13311331 let cR = ga._1
13321332 let dD = ga._2
13331333 let dE = valueOrElse(getInteger(this, (ax + B)), 0)
13341334 let dF = valueOrElse(getInteger(this, (ax + C)), 0)
13351335 let dG = aw(ax)
13361336 let dH = ay(ax)
13371337 let dI = fraction(dH, j, dG)
13381338 let dJ = fraction(cR, dI, j)
13391339 let dK = (cR - dJ)
13401340 let dL = if ((dH > 0))
13411341 then (dE + fraction(dJ, k, dH))
13421342 else 0
13431343 let dM = if (((dG - dH) > 0))
13441344 then (dF + fraction(dK, k, (dG - dH)))
13451345 else 0
13461346 let dN = fraction(dJ, aB(ax, d), l)
13471347 let dO = fraction(dK, aB(ax, c), l)
13481348 let dP = bN(ax, ba, aq, (dN + dO))
13491349 if ((dP == dP))
13501350 then ([IntegerEntry((ax + B), dL), IntegerEntry((ax + C), dM), IntegerEntry((ax + z), ((dG + cR) - dP)), IntegerEntry((ax + A), ((dH + dJ) - dN)), ScriptTransfer(W, (dN + dO), fromBase58String(aq))] ++ bn(dz, dA, aq))
13511351 else throw("Strict value is not equal to itself.")
13521352 }
13531353
13541354
13551355
13561356 @Callable(ad)
13571357 func claimFarmedTest (au,ax) = if ((au == a))
13581358 then {
13591359 let cE = ae(aa)
13601360 if ((cE == cE))
13611361 then {
13621362 let bS = invoke(aD(), "claim", [ax], nil)
13631363 if ((bS == bS))
13641364 then {
13651365 let cF = ae(aa)
13661366 $Tuple2(nil, $Tuple2((cF - cE), aa))
13671367 }
13681368 else throw("Strict value is not equal to itself.")
13691369 }
13701370 else throw("Strict value is not equal to itself.")
13711371 }
13721372 else if ((au == b))
13731373 then {
13741374 let cE = ae(ab)
13751375 if ((cE == cE))
13761376 then {
13771377 let bS = invoke(aE(Address(fromBase58String(ax))), "claimWX", [ax], nil)
13781378 if ((bS == bS))
13791379 then {
13801380 let cF = ae(ab)
13811381 $Tuple2(nil, $Tuple2((cF - cE), ab))
13821382 }
13831383 else throw("Strict value is not equal to itself.")
13841384 }
13851385 else throw("Strict value is not equal to itself.")
13861386 }
13871387 else throw("Wrong pool type")
13881388
13891389
13901390 @Verifier(gb)
13911391 func gc () = sigVerify(gb.bodyBytes, gb.proofs[0], gb.senderPublicKey)
13921392

github/deemru/w8io/026f985 
129.74 ms