tx · 3LggXnJDpDSCWebvHSx4QwnoXa2u62TTdbnyb6BojeaU

3N2M4PztorHwrfENp7D6LhYGgGodjiD1fjn:  -0.02400000 Waves

2023.08.18 13:10 [2715902] smart account 3N2M4PztorHwrfENp7D6LhYGgGodjiD1fjn > SELF 0.00000000 Waves

{ "type": 13, "id": "3LggXnJDpDSCWebvHSx4QwnoXa2u62TTdbnyb6BojeaU", "fee": 2400000, "feeAssetId": null, "timestamp": 1692353401020, "version": 2, "chainId": 84, "sender": "3N2M4PztorHwrfENp7D6LhYGgGodjiD1fjn", "senderPublicKey": "Fj9LPkCtmW3pDnVU6wPQnvqpZJCBieWSvZqY5FAGeCyp", "proofs": [ "4ae3AQ6NsoEyGEf7M2sJAkbkNpXLABtmeDACs4bezTedkEt7h9JH6T5jAMDvDXoucAX22qiXyt9xxwF1a4UyJYNV", "3PKUYioikQyE3XKQ9EvMqWxPmbdsiJUxnjNPxTZhg8c52XComdaNokepeLfNDEX99s2MGLsxLQc5UvUR8G48kDxM" ], "script": "base64:BgIhCAISABIAEgQKAggIEgMKAQgSBwoFCAgIAQESAwoBCBIAUQAGU0NBTEU4AIDC1y8AC0xFTkRFUlNfQVBSCQDMCAIAlgEJAMwIAgB4CQDMCAIAZAkAzAgCAFAJAMwIAgA8CQDMCAIAKAkAzAgCAB4JAMwIAgAUCQDMCAIACgUDbmlsABNMRU5ERVJTX0FQUl9QRVJJT0RTCQDMCAICAzEtMQkAzAgCAgMyLTIJAMwIAgIDMy0zCQDMCAICAzQtNAkAzAgCAgM1LTgJAMwIAgIEOS0xMgkAzAgCAgUxNC0xNgkAzAgCAgUxNy0yMAkAzAgCAgYyMC0xMDQFA25pbAATTEVOREVSU19NQVhfUEVSSU9EUwBoAAZMUF9BUFIJAMwIAgCWAQkAzAgCAHgJAMwIAgBkCQDMCAIAUAkAzAgCADwJAMwIAgAoBQNuaWwADkxQX0FQUl9QRVJJT0RTCQDMCAICAzEtMQkAzAgCAgMyLTIJAMwIAgIDMy0zCQDMCAICAzQtNAkAzAgCAgM1LTgJAMwIAgIEOS0xMgUDbmlsAA5MUF9NQVhfUEVSSU9EUwAMAAxrU3RhcnRIZWlnaHQCC3N0YXJ0SGVpZ2h0AA1rUGVyaW9kTGVuZ3RoAgxwZXJpb2RMZW5ndGgAEWtMZW5kZXJzTWF4QW1vdW50AhFsZW5kUmV3YXJkc0Ftb3VudAAMa0xQTWF4QW1vdW50Ag5scFJld2FyZEFtb3VudAAHa1Rva2VucwIGdG9rZW5zAAtrVXNlclN1cHBseQIQX3VzZXJUb3RhbFN1cHBseQAOa1Rva2VuSW50ZXJlc3QCDl90b2tlbkludGVyZXN0ABRrVG9rZW5JbnRlcmVzdEhlaWdodAIUX3Rva2VuSW50ZXJlc3RIZWlnaHQAFGtUb2tlblJld2FyZFBlckJsb2NrAhRfdG9rZW5SZXdhcmRQZXJCbG9jawATa1Jld2FyZFVwZGF0ZUhlaWdodAIScmV3YXJkVXBkYXRlSGVpZ2h0ABFrVXNlckxlbmRJbnRlcmVzdAIRX3VzZXJMYW5kSW50ZXJlc3QAF2tVc2VyTGVuZEF2YWlsYWJsZUNsYWltAhdfdXNlckxlbmRBdmFpbGFibGVDbGFpbQAVa1VzZXJMcEF2YWlsYWJsZUNsYWltAhVfdXNlckxwQXZhaWxhYmxlQ2xhaW0AC2tMcEludGVyZXN0AgpscEludGVyZXN0ABFrTHBJbnRlcmVzdEhlaWdodAIQbHBJbnRlcmVzdEhlaWdodAANa1ByZXZMUFN1cHBseQIRcHJldkxQVG90YWxTdXBwbHkAEWtMcFJld2FyZFBlckJsb2NrAhBscFJld2FyZFBlckJsb2NrAA9rVXNlckxwSW50ZXJlc3QCD191c2VyTHBJbnRlcmVzdAAOa1ByaWNlSW5PcmFjbGUCB190d2FwNUIAFGtQcmV2TGVuZFRva2VuU3VwcGx5AhRfcHJldkxlbmRUb3RhbFN1cHBseQAMa0FYTFlUb2tlbklkAgtheGx5VG9rZW5JZAAQa0xlbmRUb2tlblN1cHBseQIPdG90YWxfc3VwcGxpZWRfAA9rTGVuZFVzZXJTdXBwbHkCCl9zdXBwbGllZF8AEGtMZW5kU2V0dXBUb2tlbnMCDHNldHVwX3Rva2VucwAOa1NGVG90YWxTdXBwbHkCGl90b3RhbF9zaGFyZV90b2tlbnNfbG9ja2VkABJrU0ZVc2VyVG90YWxTdXBwbHkCFF9zaGFyZV90b2tlbnNfbG9ja2VkAAlrQXhseVBvb2wCCGF4bHlQb29sAAVrTHBJZAIOc2hhcmVfYXNzZXRfaWQADGtQcmljZU9yYWNsZQIMcHJpY2Vfb3JhY2xlABFrQXhseU1haW5Db250cmFjdAIMbWFpbkNvbnRyYWN0ABZrQXhseVRva2Vub21pY0NvbnRyYWN0AhF0b2tlbm9taWNDb250cmFjdAASa1NGRmFybWluZ0NvbnRyYWN0AhNzd29wZmlfZmFybWluZ19hZGRyAA1rTGVuZENvbnRyYWN0AhFsZW5kX3NlcnZpY2VfYWRkcgAJa0FkbWluMVBLAhVncm91cDFfYWRtaW4xX3B1Yl9rZXkACWtBZG1pbjJQSwIVZ3JvdXAxX2FkbWluMl9wdWJfa2V5AAlrQWRtaW4zUEsCFWdyb3VwMV9hZG1pbjNfcHViX2tleQAPa09wZXJhdG9yQ2FsbFBLAhJhZG1pbl9jYWxsX3B1Yl9rZXkACGF4bHlQb29sCQETdmFsdWVPckVycm9yTWVzc2FnZQIJAJ0IAgUEdGhpcwUJa0F4bHlQb29sAhZDYW4ndCBnZXQgYXhseVBvb2wga2V5AAxtYWluQ29udHJhY3QJARFAZXh0ck5hdGl2ZSgxMDYyKQEJARN2YWx1ZU9yRXJyb3JNZXNzYWdlAgkAnQgCBQR0aGlzBRFrQXhseU1haW5Db250cmFjdAIZQ2FuJ3QgZ2V0IG1haW5Db250YWN0IGtleQANdG9rZW5Db250cmFjdAkBEUBleHRyTmF0aXZlKDEwNjIpAQkBE3ZhbHVlT3JFcnJvck1lc3NhZ2UCCQCdCAIFBHRoaXMFFmtBeGx5VG9rZW5vbWljQ29udHJhY3QCH0Nhbid0IGdldCB0b2tlbm9taWNDb250cmFjdCBrZXkADGxlbmRDb250cmFjdAkBEUBleHRyTmF0aXZlKDEwNjIpAQkBE3ZhbHVlT3JFcnJvck1lc3NhZ2UCCQCdCAIFDG1haW5Db250cmFjdAUNa0xlbmRDb250cmFjdAIfQ2FuJ3QgZ2V0IGxlbmRfc2VydmljZV9hZGRyIGtleQARc2ZGYXJtaW5nQ29udHJhY3QJARFAZXh0ck5hdGl2ZSgxMDYyKQEJARN2YWx1ZU9yRXJyb3JNZXNzYWdlAgkAnQgCBQxtYWluQ29udHJhY3QFEmtTRkZhcm1pbmdDb250cmFjdAIhQ2FuJ3QgZ2V0IHN3b3BmaV9mYXJtaW5nX2FkZHIga2V5AA9wcmljZU9yYWNsZUFkZHIJARFAZXh0ck5hdGl2ZSgxMDYyKQEJARN2YWx1ZU9yRXJyb3JNZXNzYWdlAgkAnQgCBQxtYWluQ29udHJhY3QFDGtQcmljZU9yYWNsZQIaQ2FuJ3QgZ2V0IHByaWNlX29yYWNsZSBrZXkACGFkbWluMVBLCQDZBAEJARN2YWx1ZU9yRXJyb3JNZXNzYWdlAgkAnQgCBQxtYWluQ29udHJhY3QFCWtBZG1pbjFQSwISQ2FuJ3QgZ2V0IGFkbWluMVBLAAhhZG1pbjJQSwkA2QQBCQETdmFsdWVPckVycm9yTWVzc2FnZQIJAJ0IAgUMbWFpbkNvbnRyYWN0BQlrQWRtaW4yUEsCEkNhbid0IGdldCBhZG1pbjJQSwAIYWRtaW4zUEsJANkEAQkBE3ZhbHVlT3JFcnJvck1lc3NhZ2UCCQCdCAIFDG1haW5Db250cmFjdAUJa0FkbWluM1BLAhRDYW4ndCBnZXQgb3BlcmF0b3JQSwAKb3BlcmF0b3JQSwkA2QQBCQETdmFsdWVPckVycm9yTWVzc2FnZQIJAJ0IAgUEdGhpcwUPa09wZXJhdG9yQ2FsbFBLAhRDYW4ndCBnZXQgb3BlcmF0b3JQSwAGYXhseUlkCQETdmFsdWVPckVycm9yTWVzc2FnZQIJAJ0IAgUNdG9rZW5Db250cmFjdAUMa0FYTFlUb2tlbklkAhdDYW4ndCBnZXQgQXhseSB0b2tlbiBpZAALc3RhcnRIZWlnaHQJARFAZXh0ck5hdGl2ZSgxMDUwKQIFBHRoaXMFDGtTdGFydEhlaWdodAAMcGVyaW9kTGVuZ3RoCQERQGV4dHJOYXRpdmUoMTA1MCkCBQR0aGlzBQ1rUGVyaW9kTGVuZ3RoAAljdXJQZXJpb2QJAJYDAQkAzAgCAAEJAMwIAgkAaQIJAGUCBQZoZWlnaHQFC3N0YXJ0SGVpZ2h0BQxwZXJpb2RMZW5ndGgFA25pbAANbGVuZE1heEFtb3VudAkBEUBleHRyTmF0aXZlKDEwNTApAgUNdG9rZW5Db250cmFjdAURa0xlbmRlcnNNYXhBbW91bnQAE2xlbmRNYXhQZXJpb2RBbW91bnQJAGkCBQ1sZW5kTWF4QW1vdW50BRNMRU5ERVJTX01BWF9QRVJJT0RTAAtscE1heEFtb3VudAkBEUBleHRyTmF0aXZlKDEwNTApAgUNdG9rZW5Db250cmFjdAUMa0xQTWF4QW1vdW50ABFscE1heFBlcmlvZEFtb3VudAkAaQIFC2xwTWF4QW1vdW50BQ5MUF9NQVhfUEVSSU9EUwELaXNBZG1pbkNhbGwBAWkDCQEPY29udGFpbnNFbGVtZW50AgkAzAgCBQhhZG1pbjFQSwkAzAgCBQhhZG1pbjJQSwkAzAgCBQhhZG1pbjNQSwUDbmlsCAUBaQ9jYWxsZXJQdWJsaWNLZXkFBHVuaXQJAAIBAihPbmx5IGFkbWluIGdyb3VwMSBjYW4gY2FsbCB0aGlzIGZ1bmN0aW9uAQppc1NlbGZDYWxsAQFpAwkAAAIIBQFpBmNhbGxlcgUEdGhpcwUEdW5pdAkAAgECK09ubHkgY29udHJhY3QgaXRzZWxmIGNhbiBjYWxsIHRoaXMgZnVuY3Rpb24BDmlzT3BlcmF0b3JDYWxsAQFpAwkAAAIIBQFpD2NhbGxlclB1YmxpY0tleQUKb3BlcmF0b3JQSwUEdW5pdAkAAgECJE9ubHkgb3BlcmF0b3IgY2FuIGNhbGwgdGhpcyBmdW5jdGlvbgEKaXNMYW5kQ2FsbAEBaQMJAAACCAUBaQZjYWxsZXIFDGxlbmRDb250cmFjdAUEdW5pdAkAAgECKU9ubHkgbGFuZCBjb250cmFjdCBjYW4gY2FsbCB0aGlzIGZ1bmN0aW9uAQ9pc1NGRmFybWluZ0NhbGwBAWkDCQAAAggFAWkGY2FsbGVyBRFzZkZhcm1pbmdDb250cmFjdAUEdW5pdAkAAgECKU9ubHkgbGFuZCBjb250cmFjdCBjYW4gY2FsbCB0aGlzIGZ1bmN0aW9uAQxnZXRBbGxUb2tlbnMABAZ0b2tlbnMJAQt2YWx1ZU9yRWxzZQIJAJ0IAgUEdGhpcwUHa1Rva2VucwIAAwkAAAIFBnRva2VucwIABQNuaWwJALUJAgUGdG9rZW5zAgEsAQ1nZXRBc3NldFByaWNlAQdhc3NldElkCQERQGV4dHJOYXRpdmUoMTA1MCkCBQ9wcmljZU9yYWNsZUFkZHIJAKwCAgUHYXNzZXRJZAUOa1ByaWNlSW5PcmFjbGUBEGdldEFzc2V0RGVjaW1hbHMBB2Fzc2V0SWQDCQAAAgUHYXNzZXRJZAIFV0FWRVMACAQHJG1hdGNoMAkA7AcBCQDZBAEFB2Fzc2V0SWQDCQABAgUHJG1hdGNoMAIFQXNzZXQEBWFzc2V0BQckbWF0Y2gwCAUFYXNzZXQIZGVjaW1hbHMJAAIBAhBDYW4ndCBmaW5kIGFzc2V0ARFnZXRBc3NldFByZWNpc2lvbgEHYXNzZXRJZAkAbAYACgAACQEQZ2V0QXNzZXREZWNpbWFscwEFB2Fzc2V0SWQAAAAABQRET1dOARVnZXRBZG9wdGVkQVBSQnlQZXJpb2QDBnBlcmlvZAphcHJQZXJpb2RzA2FwcgoBA2ZvcgIBYQdhcGVyaW9kBAskdDA1NDI5NTQ1MQUBYQQFaW5kZXgIBQskdDA1NDI5NTQ1MQJfMQQFZm91bmQIBQskdDA1NDI5NTQ1MQJfMgQCZnQJALUJAgUHYXBlcmlvZAIBLQQLJHQwNTQ4ODU1NTEJAJQKAgkBDXBhcnNlSW50VmFsdWUBCQCRAwIFAmZ0AAAJAQ1wYXJzZUludFZhbHVlAQkAkQMCBQJmdAABBARmcm9tCAULJHQwNTQ4ODU1NTECXzEEAnRvCAULJHQwNTQ4ODU1NTECXzIDBQVmb3VuZAUBYQMDCQBnAgUGcGVyaW9kBQRmcm9tCQBnAgUCdG8FBnBlcmlvZAcJAJQKAgUFaW5kZXgGCQCUCgIJAGQCBQVpbmRleAABBwQLJHQwNTY4ODU3NTQKAAIkbAUTTEVOREVSU19BUFJfUEVSSU9EUwoAAiRzCQCQAwEFAiRsCgAFJGFjYzAJAJQKAgAABwoBBSRmMF8xAgIkYQIkaQMJAGcCBQIkaQUCJHMFAiRhCQEDZm9yAgUCJGEJAJEDAgUCJGwFAiRpCgEFJGYwXzICAiRhAiRpAwkAZwIFAiRpBQIkcwUCJGEJAAIBAhNMaXN0IHNpemUgZXhjZWVkcyA5CQEFJGYwXzICCQEFJGYwXzECCQEFJGYwXzECCQEFJGYwXzECCQEFJGYwXzECCQEFJGYwXzECCQEFJGYwXzECCQEFJGYwXzECCQEFJGYwXzECCQEFJGYwXzECBQUkYWNjMAAAAAEAAgADAAQABQAGAAcACAAJBAVpbmRleAgFCyR0MDU2ODg1NzU0Al8xBAVmb3VuZAgFCyR0MDU2ODg1NzU0Al8yAwUFZm91bmQJAGsDCQBoAgkAkQMCBQtMRU5ERVJTX0FQUgUFaW5kZXgFBlNDQUxFOAAHAO0CAAABF2dldFRvdGFsU3VwcGx5QWxsVG9rZW5zAAoBA2ZvcgIBYQd0b2tlbklkBAskdDA1OTQyNTk5OAUBYQQLdG90YWxTdXBwbHkIBQskdDA1OTQyNTk5OAJfMQQOdG90YWxTdXBwbHlVc2QIBQskdDA1OTQyNTk5OAJfMgQRdG90YWxTdXBwbHlVc2RBbGwIBQskdDA1OTQyNTk5OAJfMwQHdFN1cHBseQkBC3ZhbHVlT3JFbHNlAgkAmggCBQxsZW5kQ29udHJhY3QJAKwCAgUQa0xlbmRUb2tlblN1cHBseQUHdG9rZW5JZAAABAphc3NldFByaWNlCQENZ2V0QXNzZXRQcmljZQEFB3Rva2VuSWQEDmFzc2V0UHJlY2lzaW9uCQERZ2V0QXNzZXRQcmVjaXNpb24BBQd0b2tlbklkBAp0U3VwcGx5VXNkCQBrAwUHdFN1cHBseQUKYXNzZXRQcmljZQUOYXNzZXRQcmVjaXNpb24JAJUKAwkAzQgCBQt0b3RhbFN1cHBseQUHdFN1cHBseQkAzQgCBQ50b3RhbFN1cHBseVVzZAUKdFN1cHBseVVzZAkAZAIFEXRvdGFsU3VwcGx5VXNkQWxsBQp0U3VwcGx5VXNkCgACJGwJAQxnZXRBbGxUb2tlbnMACgACJHMJAJADAQUCJGwKAAUkYWNjMAkAlQoDBQNuaWwFA25pbAAACgEFJGYwXzECAiRhAiRpAwkAZwIFAiRpBQIkcwUCJGEJAQNmb3ICBQIkYQkAkQMCBQIkbAUCJGkKAQUkZjBfMgICJGECJGkDCQBnAgUCJGkFAiRzBQIkYQkAAgECFExpc3Qgc2l6ZSBleGNlZWRzIDMwCQEFJGYwXzICCQEFJGYwXzECCQEFJGYwXzECCQEFJGYwXzECCQEFJGYwXzECCQEFJGYwXzECCQEFJGYwXzECCQEFJGYwXzECCQEFJGYwXzECCQEFJGYwXzECCQEFJGYwXzECCQEFJGYwXzECCQEFJGYwXzECCQEFJGYwXzECCQEFJGYwXzECCQEFJGYwXzECCQEFJGYwXzECCQEFJGYwXzECCQEFJGYwXzECCQEFJGYwXzECCQEFJGYwXzECCQEFJGYwXzECCQEFJGYwXzECCQEFJGYwXzECCQEFJGYwXzECCQEFJGYwXzECCQEFJGYwXzECCQEFJGYwXzECCQEFJGYwXzECCQEFJGYwXzECCQEFJGYwXzECBQUkYWNjMAAAAAEAAgADAAQABQAGAAcACAAJAAoACwAMAA0ADgAPABAAEQASABMAFAAVABYAFwAYABkAGgAbABwAHQAeARFnZXRUb3RhbFN1cHBseVVzZAEHdG9rZW5JZAQHdFN1cHBseQkBC3ZhbHVlT3JFbHNlAgkAmggCBQxsZW5kQ29udHJhY3QJAKwCAgUQa0xlbmRUb2tlblN1cHBseQUHdG9rZW5JZAAABAphc3NldFByaWNlCQENZ2V0QXNzZXRQcmljZQEFB3Rva2VuSWQEDmFzc2V0UHJlY2lzaW9uCQERZ2V0QXNzZXRQcmVjaXNpb24BBQd0b2tlbklkCQBrAwUHdFN1cHBseQUKYXNzZXRQcmljZQUOYXNzZXRQcmVjaXNpb24BFGNhbGNOZXdUb2tlbkludGVyZXN0Agd0b2tlbklkC3RvdGFsU3VwcGx5AwkAZwIFBmhlaWdodAULc3RhcnRIZWlnaHQAAAQOcmV3YXJkUGVyQmxvY2sJARFAZXh0ck5hdGl2ZSgxMDUwKQIFBHRoaXMJAKwCAgUHdG9rZW5JZAUUa1Rva2VuUmV3YXJkUGVyQmxvY2sEC29sZEludGVyZXN0CQERQGV4dHJOYXRpdmUoMTA1MCkCBQR0aGlzCQCsAgIFB3Rva2VuSWQFDmtUb2tlbkludGVyZXN0BAx1cGRhdGVIZWlnaHQJARFAZXh0ck5hdGl2ZSgxMDUwKQIFBHRoaXMJAKwCAgUHdG9rZW5JZAUUa1Rva2VuSW50ZXJlc3RIZWlnaHQEBnJld2FyZAkAaAIJAGUCBQZoZWlnaHQFDHVwZGF0ZUhlaWdodAUOcmV3YXJkUGVyQmxvY2sECGludGVyZXN0AwkAZgIFC3RvdGFsU3VwcGx5AAAJAGsDBQZyZXdhcmQFBlNDQUxFOAULdG90YWxTdXBwbHkAAAkAZAIFC29sZEludGVyZXN0BQhpbnRlcmVzdAERY2FsY05ld0xwSW50ZXJlc3QBC3RvdGFsU3VwcGx5AwkAZwIFBmhlaWdodAULc3RhcnRIZWlnaHQAAAQOcmV3YXJkUGVyQmxvY2sJAQt2YWx1ZU9yRWxzZQIJAJoIAgUEdGhpcwURa0xwUmV3YXJkUGVyQmxvY2sAAAQLb2xkSW50ZXJlc3QJAQt2YWx1ZU9yRWxzZQIJAJoIAgUEdGhpcwULa0xwSW50ZXJlc3QAAAQMdXBkYXRlSGVpZ2h0CQELdmFsdWVPckVsc2UCCQCaCAIFBHRoaXMFEWtMcEludGVyZXN0SGVpZ2h0BQZoZWlnaHQEBnJld2FyZAkAaAIJAGUCBQZoZWlnaHQFDHVwZGF0ZUhlaWdodAUOcmV3YXJkUGVyQmxvY2sECGludGVyZXN0AwkAZgIFC3RvdGFsU3VwcGx5AAAJAGsDBQZyZXdhcmQFBlNDQUxFOAULdG90YWxTdXBwbHkAAAkAZAIFC29sZEludGVyZXN0BQhpbnRlcmVzdAESY2FsY0xlbmRVc2VyUmV3YXJkAgR1c2VyB3Rva2VuSWQEC3RvdGFsU3VwcGx5CQELdmFsdWVPckVsc2UCCQCaCAIFDGxlbmRDb250cmFjdAkArAICBRBrTGVuZFRva2VuU3VwcGx5BQd0b2tlbklkAAAEDXRva2VuSW50ZXJlc3QJARRjYWxjTmV3VG9rZW5JbnRlcmVzdAIFB3Rva2VuSWQFC3RvdGFsU3VwcGx5BAp1c2VyU3VwcGx5CQELdmFsdWVPckVsc2UCCQCaCAIFDGxlbmRDb250cmFjdAkArAICCQCsAgIFBHVzZXIFD2tMZW5kVXNlclN1cHBseQUHdG9rZW5JZAAABBF1c2VyVG9rZW5JbnRlcmVzdAkBC3ZhbHVlT3JFbHNlAgkAmggCBQR0aGlzCQCsAgIJAKwCAgkArAICBQd0b2tlbklkAgFfBQR1c2VyBRFrVXNlckxlbmRJbnRlcmVzdAMJAAACBQp1c2VyU3VwcGx5AAAFDXRva2VuSW50ZXJlc3QAAAQGcmV3YXJkCQBrAwUKdXNlclN1cHBseQkAZQIFDXRva2VuSW50ZXJlc3QFEXVzZXJUb2tlbkludGVyZXN0BQZTQ0FMRTgJAJUKAwUGcmV3YXJkBQ10b2tlbkludGVyZXN0BQp1c2VyU3VwcGx5ARBjYWxjTHBVc2VyUmV3YXJkAQR1c2VyBAt0b3RhbFN1cHBseQkBC3ZhbHVlT3JFbHNlAgkAmggCBRFzZkZhcm1pbmdDb250cmFjdAkArAICBQhheGx5UG9vbAUOa1NGVG90YWxTdXBwbHkAAAQNdG9rZW5JbnRlcmVzdAkBEWNhbGNOZXdMcEludGVyZXN0AQULdG90YWxTdXBwbHkECnVzZXJTdXBwbHkJAQt2YWx1ZU9yRWxzZQIJAJoIAgUMbGVuZENvbnRyYWN0CQCsAgIJAKwCAgkArAICBQhheGx5UG9vbAIBXwUEdXNlcgUSa1NGVXNlclRvdGFsU3VwcGx5AAAEEXVzZXJUb2tlbkludGVyZXN0CQELdmFsdWVPckVsc2UCCQCaCAIFBHRoaXMJAKwCAgUEdXNlcgUPa1VzZXJMcEludGVyZXN0AwkAAAIFCnVzZXJTdXBwbHkAAAUNdG9rZW5JbnRlcmVzdAAABAZyZXdhcmQJAGsDBQp1c2VyU3VwcGx5CQBlAgUNdG9rZW5JbnRlcmVzdAURdXNlclRva2VuSW50ZXJlc3QFBlNDQUxFOAkAlQoDBQZyZXdhcmQFDXRva2VuSW50ZXJlc3QFCnVzZXJTdXBwbHkBGGNsYWltTGVuZGVyUmV3YXJkc0NvbW1vbgIEdXNlcghyZWFkT25seQoBBWNsYWltAgFhB3Rva2VuSWQECyR0MDg4ODI4OTI2BQFhBAh0b2tlbklkcwgFCyR0MDg4ODI4OTI2Al8xBAdjQW1vdW50CAULJHQwODg4Mjg5MjYCXzIEBXRvdGFsCAULJHQwODg4Mjg5MjYCXzMECGVudGVyaWVzCAULJHQwODg4Mjg5MjYCXzQEEnVzZXJBdmFpbGFibGVDbGFpbQkBC3ZhbHVlT3JFbHNlAgkAmggCBQR0aGlzCQCsAgIJAKwCAgkArAICBQd0b2tlbklkAgFfBQR1c2VyBRdrVXNlckxlbmRBdmFpbGFibGVDbGFpbQAABAskdDA5MDM5OTExOAkBEmNhbGNMZW5kVXNlclJld2FyZAIFBHVzZXIFB3Rva2VuSWQEB3VSZXdhcmQIBQskdDA5MDM5OTExOAJfMQQQbmV3VG9rZW5JbnRlcmVzdAgFCyR0MDkwMzk5MTE4Al8yBAp1c2VyU3VwcGx5CAULJHQwOTAzOTkxMTgCXzMEDHRvdGFsVG9DbGFpbQkAZAIFEnVzZXJBdmFpbGFibGVDbGFpbQUHdVJld2FyZAMDCQBmAgUMdG90YWxUb0NsYWltAAAGCQBmAgUKdXNlclN1cHBseQAABAxuZXdFbnRyZXJpZXMDAwUIcmVhZE9ubHkGCQAAAgUMdG90YWxUb0NsYWltAAAFCGVudGVyaWVzCQDOCAIFCGVudGVyaWVzCQDMCAIJAQxJbnRlZ2VyRW50cnkCCQCsAgIJAKwCAgkArAICBQd0b2tlbklkAgFfBQR1c2VyBRFrVXNlckxlbmRJbnRlcmVzdAUQbmV3VG9rZW5JbnRlcmVzdAkAzAgCCQEMSW50ZWdlckVudHJ5AgkArAICCQCsAgIJAKwCAgUHdG9rZW5JZAIBXwUEdXNlcgUXa1VzZXJMZW5kQXZhaWxhYmxlQ2xhaW0AAAkAzAgCCQEMSW50ZWdlckVudHJ5AgkArAICBQd0b2tlbklkBQ5rVG9rZW5JbnRlcmVzdAUQbmV3VG9rZW5JbnRlcmVzdAkAzAgCCQEMSW50ZWdlckVudHJ5AgkArAICBQd0b2tlbklkBRRrVG9rZW5JbnRlcmVzdEhlaWdodAUGaGVpZ2h0BQNuaWwJAJYKBAkAzQgCBQh0b2tlbklkcwUHdG9rZW5JZAkAzQgCBQdjQW1vdW50BQx0b3RhbFRvQ2xhaW0JAGQCBQV0b3RhbAUMdG90YWxUb0NsYWltBQxuZXdFbnRyZXJpZXMJAJYKBAUIdG9rZW5JZHMFB2NBbW91bnQFBXRvdGFsBQhlbnRlcmllcwoAAiRsCQEMZ2V0QWxsVG9rZW5zAAoAAiRzCQCQAwEFAiRsCgAFJGFjYzAJAJYKBAUDbmlsBQNuaWwAAAUDbmlsCgEFJGYwXzECAiRhAiRpAwkAZwIFAiRpBQIkcwUCJGEJAQVjbGFpbQIFAiRhCQCRAwIFAiRsBQIkaQoBBSRmMF8yAgIkYQIkaQMJAGcCBQIkaQUCJHMFAiRhCQACAQIUTGlzdCBzaXplIGV4Y2VlZHMgMzAJAQUkZjBfMgIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIFBSRhY2MwAAAAAQACAAMABAAFAAYABwAIAAkACgALAAwADQAOAA8AEAARABIAEwAUABUAFgAXABgAGQAaABsAHAAdAB4BFGNsYWltTHBSZXdhcmRzQ29tbW9uAgR1c2VyCHJlYWRPbmx5BBJ1c2VyQXZhaWxhYmxlQ2xhaW0JAQt2YWx1ZU9yRWxzZQIJAJoIAgUEdGhpcwkArAICBQR1c2VyBRVrVXNlckxwQXZhaWxhYmxlQ2xhaW0AAAQNJHQwMTAwNTAxMDExNQkBEGNhbGNMcFVzZXJSZXdhcmQBBQR1c2VyBAd1UmV3YXJkCAUNJHQwMTAwNTAxMDExNQJfMQQNbmV3THBJbnRlcmVzdAgFDSR0MDEwMDUwMTAxMTUCXzIECnVzZXJTdXBwbHkIBQ0kdDAxMDA1MDEwMTE1Al8zBAx0b3RhbFRvQ2xhaW0JAGQCBRJ1c2VyQXZhaWxhYmxlQ2xhaW0FB3VSZXdhcmQDAwUIcmVhZE9ubHkGCQAAAgUMdG90YWxUb0NsYWltAAAJAJQKAgUMdG90YWxUb0NsYWltBQNuaWwJAJQKAgUMdG90YWxUb0NsYWltCQDMCAIJAQxJbnRlZ2VyRW50cnkCCQCsAgIFBHVzZXIFD2tVc2VyTHBJbnRlcmVzdAUNbmV3THBJbnRlcmVzdAkAzAgCCQEMSW50ZWdlckVudHJ5AgkArAICBQR1c2VyBRVrVXNlckxwQXZhaWxhYmxlQ2xhaW0AAAkAzAgCCQEMSW50ZWdlckVudHJ5AgULa0xwSW50ZXJlc3QFDW5ld0xwSW50ZXJlc3QJAMwIAgkBDEludGVnZXJFbnRyeQIFEWtMcEludGVyZXN0SGVpZ2h0BQZoZWlnaHQFA25pbAENZ2V0VG9rZW5zQVBScwAECWF4bHlQcmljZQkBDWdldEFzc2V0UHJpY2UBBQZheGx5SWQEDWF4bHlQcmVjaXNpb24JARFnZXRBc3NldFByZWNpc2lvbgEFBmF4bHlJZAoBCnRva2Vuc0FwcnMCA2Fwcgd0b2tlbklkBARyd3BiCQELdmFsdWVPckVsc2UCCQCaCAIFBHRoaXMJAKwCAgUHdG9rZW5JZAUUa1Rva2VuUmV3YXJkUGVyQmxvY2sAAAQHcndwYlVzZAkAawMFBHJ3cGIFCWF4bHlQcmljZQUNYXhseVByZWNpc2lvbgQGcndZZWFyCQBoAgkAaAIFB3J3cGJVc2QFDHBlcmlvZExlbmd0aAA0BA50b3RhbFN1cHBseVVzZAkBEWdldFRvdGFsU3VwcGx5VXNkAQUHdG9rZW5JZAkAzQgCBQNhcHIJAGsDBQZyd1llYXIFBlNDQUxFOAUOdG90YWxTdXBwbHlVc2QEBGFwcnMKAAIkbAkBDGdldEFsbFRva2VucwAKAAIkcwkAkAMBBQIkbAoABSRhY2MwBQNuaWwKAQUkZjBfMQICJGECJGkDCQBnAgUCJGkFAiRzBQIkYQkBCnRva2Vuc0FwcnMCBQIkYQkAkQMCBQIkbAUCJGkKAQUkZjBfMgICJGECJGkDCQBnAgUCJGkFAiRzBQIkYQkAAgECFExpc3Qgc2l6ZSBleGNlZWRzIDMwCQEFJGYwXzICCQEFJGYwXzECCQEFJGYwXzECCQEFJGYwXzECCQEFJGYwXzECCQEFJGYwXzECCQEFJGYwXzECCQEFJGYwXzECCQEFJGYwXzECCQEFJGYwXzECCQEFJGYwXzECCQEFJGYwXzECCQEFJGYwXzECCQEFJGYwXzECCQEFJGYwXzECCQEFJGYwXzECCQEFJGYwXzECCQEFJGYwXzECCQEFJGYwXzECCQEFJGYwXzECCQEFJGYwXzECCQEFJGYwXzECCQEFJGYwXzECCQEFJGYwXzECCQEFJGYwXzECCQEFJGYwXzECCQEFJGYwXzECCQEFJGYwXzECCQEFJGYwXzECCQEFJGYwXzECCQEFJGYwXzECBQUkYWNjMAAAAAEAAgADAAQABQAGAAcACAAJAAoACwAMAA0ADgAPABAAEQASABMAFAAVABYAFwAYABkAGgAbABwAHQAeBA1scFRvdGFsU3VwcGx5CQERQGV4dHJOYXRpdmUoMTA1MCkCBRFzZkZhcm1pbmdDb250cmFjdAkArAICBQhheGx5UG9vbAUOa1NGVG90YWxTdXBwbHkEBGxwSWQJARFAZXh0ck5hdGl2ZSgxMDUzKQIJARFAZXh0ck5hdGl2ZSgxMDYyKQEFCGF4bHlQb29sBQVrTHBJZAQLbHBQcmVjaXNpb24JARFnZXRBc3NldFByZWNpc2lvbgEFBGxwSWQEB2xwUHJpY2UKAAFACQCRAwIKAAFACQD8BwQFDG1haW5Db250cmFjdAIaZ2V0U2hhcmVBc3NldFByaWNlUkVBRE9OTFkJAMwIAgkAzAgCBQRscElkBQNuaWwFA25pbAUDbmlsAwkAAQIFAUACCUxpc3RbQW55XQUBQAkAAgEJAKwCAgkAAwEFAUACHiBjb3VsZG4ndCBiZSBjYXN0IHRvIExpc3RbQW55XQAAAwkAAQIFAUACA0ludAUBQAkAAgEJAKwCAgkAAwEFAUACGCBjb3VsZG4ndCBiZSBjYXN0IHRvIEludAQQbHBUb3RhbFN1cHBseVVzZAkAawMFDWxwVG90YWxTdXBwbHkFB2xwUHJpY2UFC2xwUHJlY2lzaW9uBARyd3BiCQELdmFsdWVPckVsc2UCCQCaCAIFBHRoaXMFEWtMcFJld2FyZFBlckJsb2NrAAAEB3J3cGJVc2QJAGsDBQRyd3BiBQlheGx5UHJpY2UFDWF4bHlQcmVjaXNpb24EBnJ3WWVhcgkAaAIJAGgCBQdyd3BiVXNkBQxwZXJpb2RMZW5ndGgANAQFbHBBcHIJAGsDBQZyd1llYXIFBlNDQUxFOAUQbHBUb3RhbFN1cHBseVVzZAkAlQoDCQEMZ2V0QWxsVG9rZW5zAAUEYXBycwUFbHBBcHIHAWkBEmNsYWltTGVuZGVyUmV3YXJkcwAECGNsYWltUmVzCQEYY2xhaW1MZW5kZXJSZXdhcmRzQ29tbW9uAgkApQgBCAUBaQZjYWxsZXIHAwkAAAIIBQhjbGFpbVJlcwJfMwAACQACAQIjY2xhaW0gYW1vdW50IG11c3QgYmUgZ3JlYXRlciB0aGFuIDAEA2ludgkA/AcEBQ10b2tlbkNvbnRyYWN0AhJ3aXRoZHJhd0xlbmRSZXdhcmQJAMwIAggFCGNsYWltUmVzAl8zCQDMCAIJAKUIAQgFAWkGY2FsbGVyBQNuaWwFA25pbAMJAAACBQNpbnYFA2ludggFCGNsYWltUmVzAl80CQACAQIkU3RyaWN0IHZhbHVlIGlzIG5vdCBlcXVhbCB0byBpdHNlbGYuAWkBDmNsYWltTHBSZXdhcmRzAAQIY2xhaW1SZXMJARRjbGFpbUxwUmV3YXJkc0NvbW1vbgIJAKUIAQgFAWkGY2FsbGVyBwMJAAACCAUIY2xhaW1SZXMCXzEAAAkAAgECI2NsYWltIGFtb3VudCBtdXN0IGJlIGdyZWF0ZXIgdGhhbiAwBANpbnYJAPwHBAUNdG9rZW5Db250cmFjdAIQd2l0aGRyYXdMcFJld2FyZAkAzAgCCAUIY2xhaW1SZXMCXzEJAMwIAgkApQgBCAUBaQZjYWxsZXIFA25pbAUDbmlsAwkAAAIFA2ludgUDaW52CAUIY2xhaW1SZXMCXzIJAAIBAiRTdHJpY3QgdmFsdWUgaXMgbm90IGVxdWFsIHRvIGl0c2VsZi4BaQEKbGVuZEFjdGlvbgIEdXNlcgd0b2tlbklkCQELdmFsdWVPckVsc2UCCQEKaXNMYW5kQ2FsbAEFAWkEEnVzZXJBdmFpbGFibGVDbGFpbQkBC3ZhbHVlT3JFbHNlAgkAmggCBQR0aGlzCQCsAgIFB3Rva2VuSWQFF2tVc2VyTGVuZEF2YWlsYWJsZUNsYWltAAAEDSR0MDEyNDg3MTI1NTQJARJjYWxjTGVuZFVzZXJSZXdhcmQCBQR1c2VyBQd0b2tlbklkBAd1UmV3YXJkCAUNJHQwMTI0ODcxMjU1NAJfMQQQbmV3VG9rZW5JbnRlcmVzdAgFDSR0MDEyNDg3MTI1NTQCXzIJAMwIAgkBDEludGVnZXJFbnRyeQIJAKwCAgkArAICCQCsAgIFBHVzZXICAV8FB3Rva2VuSWQFEWtVc2VyTGVuZEludGVyZXN0BRBuZXdUb2tlbkludGVyZXN0CQDMCAIJAQxJbnRlZ2VyRW50cnkCCQCsAgIJAKwCAgkArAICBQR1c2VyAgFfBQd0b2tlbklkBRdrVXNlckxlbmRBdmFpbGFibGVDbGFpbQkAZAIFEnVzZXJBdmFpbGFibGVDbGFpbQUHdVJld2FyZAkAzAgCCQEMSW50ZWdlckVudHJ5AgkArAICBQd0b2tlbklkBQ5rVG9rZW5JbnRlcmVzdAUQbmV3VG9rZW5JbnRlcmVzdAkAzAgCCQEMSW50ZWdlckVudHJ5AgkArAICBQd0b2tlbklkBRRrVG9rZW5JbnRlcmVzdEhlaWdodAUGaGVpZ2h0BQNuaWwBaQEIbHBBY3Rpb24BBHVzZXIJAQt2YWx1ZU9yRWxzZQIJAQ9pc1NGRmFybWluZ0NhbGwBBQFpBBJ1c2VyQXZhaWxhYmxlQ2xhaW0JAQt2YWx1ZU9yRWxzZQIJAJoIAgUEdGhpcwUVa1VzZXJMcEF2YWlsYWJsZUNsYWltAAAEDSR0MDEzMDE5MTMwNzIJARBjYWxjTHBVc2VyUmV3YXJkAQUEdXNlcgQHdVJld2FyZAgFDSR0MDEzMDE5MTMwNzICXzEEDW5ld0xwSW50ZXJlc3QIBQ0kdDAxMzAxOTEzMDcyAl8yCQDMCAIJAQxJbnRlZ2VyRW50cnkCCQCsAgIFBHVzZXIFD2tVc2VyTHBJbnRlcmVzdAUNbmV3THBJbnRlcmVzdAkAzAgCCQEMSW50ZWdlckVudHJ5AgkArAICBQR1c2VyBRVrVXNlckxwQXZhaWxhYmxlQ2xhaW0JAGQCBRJ1c2VyQXZhaWxhYmxlQ2xhaW0FB3VSZXdhcmQJAMwIAgkBDEludGVnZXJFbnRyeQIJAKwCAgUEdXNlcgULa0xwSW50ZXJlc3QFDW5ld0xwSW50ZXJlc3QJAMwIAgkBDEludGVnZXJFbnRyeQIJAKwCAgUEdXNlcgURa0xwSW50ZXJlc3RIZWlnaHQFBmhlaWdodAUDbmlsAWkBBGluaXQFFGF4bHlNYWluQ29udHJhY3RBZGRyGWF4bHlUb2tlbm9taWNDb250cmFjdEFkZHIMYXhseVBvb2xBZGRyEmZhcm1pbmdTdGFydEhlaWdodAxwZXJpb2RMZW5ndGgJAQt2YWx1ZU9yRWxzZQIJAQppc1NlbGZDYWxsAQUBaQMJAQEhAQkBCWlzRGVmaW5lZAEJAKYIAQUUYXhseU1haW5Db250cmFjdEFkZHIJAAIBAhVXcm9uZyBmYXJtaW5nIGFkZHJlc3MDCQEBIQEJAQlpc0RlZmluZWQBCQCmCAEFGWF4bHlUb2tlbm9taWNDb250cmFjdEFkZHIJAAIBAhtXcm9uZyBtYWluIGNvbnRyYWN0IGFkZHJlc3MJAMwIAgkBC1N0cmluZ0VudHJ5AgURa0F4bHlNYWluQ29udHJhY3QFFGF4bHlNYWluQ29udHJhY3RBZGRyCQDMCAIJAQtTdHJpbmdFbnRyeQIFFmtBeGx5VG9rZW5vbWljQ29udHJhY3QFGWF4bHlUb2tlbm9taWNDb250cmFjdEFkZHIJAMwIAgkBC1N0cmluZ0VudHJ5AgUJa0F4bHlQb29sBQxheGx5UG9vbEFkZHIJAMwIAgkBDEludGVnZXJFbnRyeQIFDGtTdGFydEhlaWdodAUSZmFybWluZ1N0YXJ0SGVpZ2h0CQDMCAIJAQxJbnRlZ2VyRW50cnkCBQ1rUGVyaW9kTGVuZ3RoBQxwZXJpb2RMZW5ndGgFA25pbAFpAQxpbml0TmV3VG9rZW4BB3Rva2VuSWQJAQt2YWx1ZU9yRWxzZQIJAQtpc0FkbWluQ2FsbAEFAWkDCQEJaXNEZWZpbmVkAQkAmggCBQR0aGlzCQCsAgIFB3Rva2VuSWQFDmtUb2tlbkludGVyZXN0CQACAQIUdG9rZW4gYWxyZWFkeSBpbml0ZWQDCQEBIQEJAQhjb250YWlucwIJARFAZXh0ck5hdGl2ZSgxMDUzKQIFDGxlbmRDb250cmFjdAUQa0xlbmRTZXR1cFRva2VucwUHdG9rZW5JZAkAAgECE25vIHRva2VuIG9uIGxhbmRpbmcEDG5ld0FsbFRva2VucwkAzQgCCQEMZ2V0QWxsVG9rZW5zAAUHdG9rZW5JZAkAzAgCCQEMSW50ZWdlckVudHJ5AgkArAICBQd0b2tlbklkBQ5rVG9rZW5JbnRlcmVzdAAACQDMCAIJAQxJbnRlZ2VyRW50cnkCCQCsAgIFB3Rva2VuSWQFFGtUb2tlbkludGVyZXN0SGVpZ2h0CQCWAwEJAMwIAgULc3RhcnRIZWlnaHQJAMwIAgUGaGVpZ2h0BQNuaWwJAMwIAgkBC1N0cmluZ0VudHJ5AgUHa1Rva2VucwkAuQkCBQxuZXdBbGxUb2tlbnMCASwJAMwIAgkBDEludGVnZXJFbnRyeQIJAKwCAgUHdG9rZW5JZAUUa1Rva2VuUmV3YXJkUGVyQmxvY2sAAAUDbmlsAWkBDXVwZGF0ZVJld2FyZHMACQELdmFsdWVPckVsc2UCCQEOaXNPcGVyYXRvckNhbGwBBQFpBBBsYXN0VXBkYXRlSGVpZ2h0CQELdmFsdWVPckVsc2UCCQCaCAIFBHRoaXMFE2tSZXdhcmRVcGRhdGVIZWlnaHQAAAMJAGYCCQBkAgUQbGFzdFVwZGF0ZUhlaWdodAUMcGVyaW9kTGVuZ3RoBQZoZWlnaHQJAAIBAiVyZXdhcmRzIGFscmVkeSB1cGRhdGVkIGluIHRoaXMgcGVyaW9kBA0kdDAxNDgzOTE0OTE5CQEXZ2V0VG90YWxTdXBwbHlBbGxUb2tlbnMABAt0b3RhbFN1cHBseQgFDSR0MDE0ODM5MTQ5MTkCXzEEDnRvdGFsU3VwcGx5VXNkCAUNJHQwMTQ4MzkxNDkxOQJfMgQRdG90YWxTdXBwbHlVc2RBbGwIBQ0kdDAxNDgzOTE0OTE5Al8zBAlheGx5UHJpY2UJAQ1nZXRBc3NldFByaWNlAQUGYXhseUlkBA1heGx5UHJlY2lzaW9uCQERZ2V0QXNzZXRQcmVjaXNpb24BBQZheGx5SWQEBm1heEFQUgkBFWdldEFkb3B0ZWRBUFJCeVBlcmlvZAMFCWN1clBlcmlvZAUTTEVOREVSU19BUFJfUEVSSU9EUwULTEVOREVSU19BUFIKAQx1cGRhdGVSZXdhcmQCAWEHdG9rZW5JZAQNJHQwMTUxNjgxNTIxMgUBYQQIZW50ZXJpZXMIBQ0kdDAxNTE2ODE1MjEyAl8xBBF0b3RhbFBlcmlvZFJld2FyZAgFDSR0MDE1MTY4MTUyMTICXzIEBWluZGV4CAUNJHQwMTUxNjgxNTIxMgJfMwMJAAACCQCRAwIFC3RvdGFsU3VwcGx5BQVpbmRleAAACQCVCgMJAM4IAgUIZW50ZXJpZXMJAMwIAgkBDEludGVnZXJFbnRyeQIJAKwCAgUHdG9rZW5JZAUUa1ByZXZMZW5kVG9rZW5TdXBwbHkJAJEDAgULdG90YWxTdXBwbHkFBWluZGV4CQDMCAIJAQxJbnRlZ2VyRW50cnkCCQCsAgIFB3Rva2VuSWQFFGtUb2tlblJld2FyZFBlckJsb2NrAAAJAMwIAgkBDEludGVnZXJFbnRyeQIJAKwCAgUHdG9rZW5JZAUOa1Rva2VuSW50ZXJlc3QJARRjYWxjTmV3VG9rZW5JbnRlcmVzdAIFB3Rva2VuSWQJAJEDAgULdG90YWxTdXBwbHkFBWluZGV4CQDMCAIJAQxJbnRlZ2VyRW50cnkCCQCsAgIFB3Rva2VuSWQFFGtUb2tlbkludGVyZXN0SGVpZ2h0CQCWAwEJAMwIAgULc3RhcnRIZWlnaHQJAMwIAgUGaGVpZ2h0BQNuaWwFA25pbAURdG90YWxQZXJpb2RSZXdhcmQJAGQCBQVpbmRleAABBAVzaGFyZQkAawMJAJEDAgUOdG90YWxTdXBwbHlVc2QFBWluZGV4BQZTQ0FMRTgFEXRvdGFsU3VwcGx5VXNkQWxsBAltYXhSZXdhcmQJAGsDBQVzaGFyZQUTbGVuZE1heFBlcmlvZEFtb3VudAUGU0NBTEU4BAxtYXhSZXdhcmRVc2QJAGsDBQltYXhSZXdhcmQFCWF4bHlQcmljZQUNYXhseVByZWNpc2lvbgQPcHJldlRvdGFsU3VwcGx5CQELdmFsdWVPckVsc2UCCQCaCAIFBHRoaXMFFGtQcmV2TGVuZFRva2VuU3VwcGx5AAAEBnJ0Q29lZgMDCQAAAgUPcHJldlRvdGFsU3VwcGx5AAAGCQAAAgkAkQMCBQt0b3RhbFN1cHBseQUFaW5kZXgAAAAACQBrAwUPcHJldlRvdGFsU3VwcGx5BQZTQ0FMRTgJAJEDAgULdG90YWxTdXBwbHkFBWluZGV4BAZyZXdhcmQJAGkCCQBpAgkAlwMBCQDMCAIJAGgCBQZtYXhBUFIJAGQCBQZTQ0FMRTgFBnJ0Q29lZgkAzAgCCQBrAwUGbWF4QVBSCQBoAgAPBQZTQ0FMRTgACgUDbmlsBQZTQ0FMRTgAZAQJcmV3YXJkVXNkCQCXAwEJAMwIAgUMbWF4UmV3YXJkVXNkCQDMCAIJAGsDCQCRAwIFDnRvdGFsU3VwcGx5VXNkBQVpbmRleAUGcmV3YXJkBQZTQ0FMRTgFA25pbAQMcmV3YXJkUGVyaW9kCQBrAwUJcmV3YXJkVXNkBQ1heGx5UHJlY2lzaW9uBQlheGx5UHJpY2UEDnJld2FyZFBlckJsb2NrCQBpAgUMcmV3YXJkUGVyaW9kBQxwZXJpb2RMZW5ndGgJAJUKAwkAzggCBQhlbnRlcmllcwkAzAgCCQEMSW50ZWdlckVudHJ5AgkArAICBQd0b2tlbklkBRRrUHJldkxlbmRUb2tlblN1cHBseQkAkQMCBQt0b3RhbFN1cHBseQUFaW5kZXgJAMwIAgkBDEludGVnZXJFbnRyeQIJAKwCAgUHdG9rZW5JZAUUa1Rva2VuUmV3YXJkUGVyQmxvY2sFDnJld2FyZFBlckJsb2NrCQDMCAIJAQxJbnRlZ2VyRW50cnkCCQCsAgIFB3Rva2VuSWQFDmtUb2tlbkludGVyZXN0CQEUY2FsY05ld1Rva2VuSW50ZXJlc3QCBQd0b2tlbklkCQCRAwIFC3RvdGFsU3VwcGx5BQVpbmRleAkAzAgCCQEMSW50ZWdlckVudHJ5AgkArAICBQd0b2tlbklkBRRrVG9rZW5JbnRlcmVzdEhlaWdodAkAlgMBCQDMCAIFC3N0YXJ0SGVpZ2h0CQDMCAIFBmhlaWdodAUDbmlsBQNuaWwJAGQCBRF0b3RhbFBlcmlvZFJld2FyZAUMcmV3YXJkUGVyaW9kCQBkAgUFaW5kZXgAAQQNJHQwMTY4NzQxNjk3MgoAAiRsCQEMZ2V0QWxsVG9rZW5zAAoAAiRzCQCQAwEFAiRsCgAFJGFjYzAJAJUKAwUDbmlsAAAAAAoBBSRmMF8xAgIkYQIkaQMJAGcCBQIkaQUCJHMFAiRhCQEMdXBkYXRlUmV3YXJkAgUCJGEJAJEDAgUCJGwFAiRpCgEFJGYwXzICAiRhAiRpAwkAZwIFAiRpBQIkcwUCJGEJAAIBAhRMaXN0IHNpemUgZXhjZWVkcyAzMAkBBSRmMF8yAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgUFJGFjYzAAAAABAAIAAwAEAAUABgAHAAgACQAKAAsADAANAA4ADwAQABEAEgATABQAFQAWABcAGAAZABoAGwAcAB0AHgQOdG9rZW5zRW50ZXJpZXMIBQ0kdDAxNjg3NDE2OTcyAl8xBBB0b3RhbFRva2VuUmV3YXJkCAUNJHQwMTY4NzQxNjk3MgJfMgQFaW5kZXgIBQ0kdDAxNjg3NDE2OTcyAl8zBAhscE1heEFQUgkBFWdldEFkb3B0ZWRBUFJCeVBlcmlvZAMFCWN1clBlcmlvZAUOTFBfQVBSX1BFUklPRFMFBkxQX0FQUgQNbHBUb3RhbFN1cHBseQkBEUBleHRyTmF0aXZlKDEwNTApAgURc2ZGYXJtaW5nQ29udHJhY3QJAKwCAgUIYXhseVBvb2wFDmtTRlRvdGFsU3VwcGx5BAtwcmVMUFN1cHBseQkBC3ZhbHVlT3JFbHNlAgkAmggCBQR0aGlzBQ1rUHJldkxQU3VwcGx5AAAEBGxwSWQJARFAZXh0ck5hdGl2ZSgxMDUzKQIJARFAZXh0ck5hdGl2ZSgxMDYyKQEFCGF4bHlQb29sBQVrTHBJZAQLbHBQcmVjaXNpb24JARFnZXRBc3NldFByZWNpc2lvbgEFBGxwSWQEB2xwUHJpY2UKAAFACQD8BwQFDG1haW5Db250cmFjdAIaZ2V0U2hhcmVBc3NldFByaWNlUkVBRE9OTFkJAMwIAgUEbHBJZAUDbmlsBQNuaWwDCQABAgUBQAIDSW50BQFACQACAQkArAICCQADAQUBQAIYIGNvdWxkbid0IGJlIGNhc3QgdG8gSW50BBBscFRvdGFsU3VwcGx5VXNkCQBrAwUNbHBUb3RhbFN1cHBseQUHbHBQcmljZQULbHBQcmVjaXNpb24EDm1heExQUmV3YXJkVXNkCQBrAwURbHBNYXhQZXJpb2RBbW91bnQFCWF4bHlQcmljZQUNYXhseVByZWNpc2lvbgQIcnRMUENvZWYDAwkAAAIFC3ByZUxQU3VwcGx5AAAGCQAAAgUNbHBUb3RhbFN1cHBseQAAAAAJAGsDBQtwcmVMUFN1cHBseQUGU0NBTEU4BQ1scFRvdGFsU3VwcGx5BAhyZXdhcmRMcAkAaQIJAGkCCQCXAwEJAMwIAgkAaAIFCGxwTWF4QVBSCQBkAgUGU0NBTEU4BQhydExQQ29lZgkAzAgCCQBrAwUIbHBNYXhBUFIJAGgCAA8FBlNDQUxFOAAKBQNuaWwFBlNDQUxFOABkBAtyZXdhcmRMcFVzZAkAlwMBCQDMCAIFDm1heExQUmV3YXJkVXNkCQDMCAIJAGsDBRBscFRvdGFsU3VwcGx5VXNkBQhyZXdhcmRMcAUGU0NBTEU4BQNuaWwEDnJld2FyZExwUGVyaW9kCQBrAwULcmV3YXJkTHBVc2QFDWF4bHlQcmVjaXNpb24FCWF4bHlQcmljZQQQcmV3YXJkTHBQZXJCbG9jawkAaQIFDnJld2FyZExwUGVyaW9kBQxwZXJpb2RMZW5ndGgECmxwRW50ZXJpZXMJAMwIAgkBDEludGVnZXJFbnRyeQIFDWtQcmV2TFBTdXBwbHkFDWxwVG90YWxTdXBwbHkJAMwIAgkBDEludGVnZXJFbnRyeQIFEWtMcFJld2FyZFBlckJsb2NrBRByZXdhcmRMcFBlckJsb2NrCQDMCAIJAQxJbnRlZ2VyRW50cnkCBQtrTHBJbnRlcmVzdAkBEWNhbGNOZXdMcEludGVyZXN0AQUNbHBUb3RhbFN1cHBseQkAzAgCCQEMSW50ZWdlckVudHJ5AgURa0xwSW50ZXJlc3RIZWlnaHQJAJYDAQkAzAgCBQtzdGFydEhlaWdodAkAzAgCBQZoZWlnaHQFA25pbAkAzAgCCQEOU2NyaXB0VHJhbnNmZXIDCQEHQWRkcmVzcwEBGgFUJ5EsPDoJzQ7bvgXV083vCkgY+zYDPYa7CQBlAgUTbGVuZE1heFBlcmlvZEFtb3VudAUQdG90YWxUb2tlblJld2FyZAkA2QQBBQZheGx5SWQJAMwIAgkBDlNjcmlwdFRyYW5zZmVyAwkBB0FkZHJlc3MBARoBVCeRLDw6Cc0O274F1dPN7wpIGPs2Az2GuwkAZQIFEWxwTWF4UGVyaW9kQW1vdW50BQ5yZXdhcmRMcFBlcmlvZAkA2QQBBQZheGx5SWQFA25pbAkAzQgCCQDOCAIFCmxwRW50ZXJpZXMFDnRva2Vuc0VudGVyaWVzCQEMSW50ZWdlckVudHJ5AgUTa1Jld2FyZFVwZGF0ZUhlaWdodAkAlgMBCQDMCAIFC3N0YXJ0SGVpZ2h0CQDMCAIFBmhlaWdodAUDbmlsAQJ0eAEGdmVyaWZ5AAQTbXVsdGlTaWduZWRCeUFkbWlucwQSYWRtaW5QdWJLZXkxU2lnbmVkAwkA9AMDCAUCdHgJYm9keUJ5dGVzCQCRAwIIBQJ0eAZwcm9vZnMAAAUIYWRtaW4xUEsAAQAABBJhZG1pblB1YktleTJTaWduZWQDCQD0AwMIBQJ0eAlib2R5Qnl0ZXMJAJEDAggFAnR4BnByb29mcwABBQhhZG1pbjJQSwABAAAEEmFkbWluUHViS2V5M1NpZ25lZAMJAPQDAwgFAnR4CWJvZHlCeXRlcwkAkQMCCAUCdHgGcHJvb2ZzAAIFCGFkbWluM1BLAAEAAAkAZwIJAGQCCQBkAgUSYWRtaW5QdWJLZXkxU2lnbmVkBRJhZG1pblB1YktleTJTaWduZWQFEmFkbWluUHViS2V5M1NpZ25lZAACBAckbWF0Y2gwBQJ0eAMJAAECBQckbWF0Y2gwAhdJbnZva2VTY3JpcHRUcmFuc2FjdGlvbgQDaW52BQckbWF0Y2gwBAZpc1NlbGYJAPQDAwgFAnR4CWJvZHlCeXRlcwkAkQMCCAUCdHgGcHJvb2ZzAAAIBQJ0eA9zZW5kZXJQdWJsaWNLZXkECmlzUmlnaHRGZWUDCQAAAggFA2ludgNmZWUAoPc2CQAAAggFA2ludgpmZWVBc3NldElkBQR1bml0BwQKaXNJbml0Q2FsbAkAAAIIBQNpbnYIZnVuY3Rpb24CBGluaXQEDGlzbm9QYXltZW50cwkAAAIJAJADAQgFA2ludghwYXltZW50cwAAAwMDAwUKaXNSaWdodEZlZQUKaXNJbml0Q2FsbAcFBmlzU2VsZgcFDGlzbm9QYXltZW50cwcGBRNtdWx0aVNpZ25lZEJ5QWRtaW5zBRNtdWx0aVNpZ25lZEJ5QWRtaW5zK+d2OQ==", "height": 2715902, "applicationStatus": "succeeded", "spentComplexity": 0 } View: original | compacted Prev: D9gPRQnQT5egJPvEzxnn7P9N6VYeedeSjmoBVbkYFKic Next: J8vmkP69g86ykQZRqggHqLDULkvYKLy7xdHyijxUgehg Diff:
OldNewDifferences
499499 func ck (aD,aV) = {
500500 let cl = aD
501501 let bz = cl._1
502- let aG = cl._2
502+ let cm = cl._2
503+ let aG = cl._3
503504 if ((aX[aG] == 0))
504- then $Tuple2((bz ++ [IntegerEntry((aV + A), aX[aG]), IntegerEntry((aV + p), 0), IntegerEntry((aV + n), bf(aV, aX[aG])), IntegerEntry((aV + o), max([ad, height]))]), (aG + 1))
505+ then $Tuple3((bz ++ [IntegerEntry((aV + A), aX[aG]), IntegerEntry((aV + p), 0), IntegerEntry((aV + n), bf(aV, aX[aG])), IntegerEntry((aV + o), max([ad, height]))]), cm, (aG + 1))
505506 else {
506- let cm = fraction(aY[aG], a, aZ)
507- let cn = fraction(cm, ah, a)
508- let co = fraction(cn, bK, bL)
509- let cp = valueOrElse(getInteger(this, A), 0)
510- let cq = if (if ((cp == 0))
507+ let cn = fraction(aY[aG], a, aZ)
508+ let co = fraction(cn, ah, a)
509+ let cp = fraction(co, bK, bL)
510+ let cq = valueOrElse(getInteger(this, A), 0)
511+ let cr = if (if ((cq == 0))
511512 then true
512513 else (aX[aG] == 0))
513514 then 0
514- else fraction(cp, a, aX[aG])
515- let bj = ((min([(cj * (a + cq)), fraction(cj, (15 * a), 10)]) / a) / 100)
516- let cr = min([co, fraction(aY[aG], bj, a)])
517- let cs = fraction(cr, bL, bK)
518- let bg = (cs / ae)
519- $Tuple2((bz ++ [IntegerEntry((aV + A), aX[aG]), IntegerEntry((aV + p), bg), IntegerEntry((aV + n), bf(aV, aX[aG])), IntegerEntry((aV + o), max([ad, height]))]), (aG + 1))
515+ else fraction(cq, a, aX[aG])
516+ let bj = ((min([(cj * (a + cr)), fraction(cj, (15 * a), 10)]) / a) / 100)
517+ let cs = min([cp, fraction(aY[aG], bj, a)])
518+ let ct = fraction(cs, bL, bK)
519+ let bg = (ct / ae)
520+ $Tuple3((bz ++ [IntegerEntry((aV + A), aX[aG]), IntegerEntry((aV + p), bg), IntegerEntry((aV + n), bf(aV, aX[aG])), IntegerEntry((aV + o), max([ad, height]))]), (cm + ct), (aG + 1))
520521 }
521522 }
522523
523- let ct = {
524+ let cu = {
524525 let aN = aq()
525526 let aO = size(aN)
526- let aP = $Tuple2(nil, 0)
527+ let aP = $Tuple3(nil, 0, 0)
527528 func aQ (aR,aS) = if ((aS >= aO))
528529 then aR
529530 else ck(aR, aN[aS])
534535
535536 aT(aQ(aQ(aQ(aQ(aQ(aQ(aQ(aQ(aQ(aQ(aQ(aQ(aQ(aQ(aQ(aQ(aQ(aQ(aQ(aQ(aQ(aQ(aQ(aQ(aQ(aQ(aQ(aQ(aQ(aQ(aP, 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)
536537 }
537- let cu = ct._1
538- let aG = ct._2
539- let cv = ay(af, f, e)
538+ let cv = cu._1
539+ let cw = cu._2
540+ let aG = cu._3
541+ let cx = ay(af, f, e)
540542 let bR = getIntegerValue(W, (S + F))
541- let cw = valueOrElse(getInteger(this, w), 0)
543+ let cy = valueOrElse(getInteger(this, w), 0)
542544 let bS = getStringValue(addressFromStringValue(S), I)
543545 let bT = ax(bS)
544546 let bU = {
548550 else throw(($getType(bV) + " couldn't be cast to Int"))
549551 }
550552 let bW = fraction(bR, bU, bT)
551- let cx = fraction(aj, bK, bL)
552- let cy = if (if ((cw == 0))
553+ let cz = fraction(aj, bK, bL)
554+ let cA = if (if ((cy == 0))
553555 then true
554556 else (bR == 0))
555557 then 0
556- else fraction(cw, a, bR)
557- let cz = (min([(cv * (a + cy)), fraction(cv, (15 * a), 10)]) / a)
558- let cA = min([cx, fraction(bW, cz, a)])
559- let cB = fraction(cA, bL, bK)
560- let cC = (cB / ae)
561- let cD = [IntegerEntry(w, bR), IntegerEntry(x, cC), IntegerEntry(u, bl(bR)), IntegerEntry(v, max([ad, height]))]
562- ((cD ++ cu) :+ IntegerEntry(q, max([ad, height])))
558+ else fraction(cy, a, bR)
559+ let cB = ((min([(cx * (a + cA)), fraction(cx, (15 * a), 10)]) / a) / 100)
560+ let cC = min([cz, fraction(bW, cB, a)])
561+ let cD = fraction(cC, bL, bK)
562+ let cE = (cD / ae)
563+ let cF = [IntegerEntry(w, bR), IntegerEntry(x, cE), IntegerEntry(u, bl(bR)), IntegerEntry(v, max([ad, height])), ScriptTransfer(Address(base58'3MsXJ3BesPECkYejzBQGHZPJT8GVYy4Fd3Q'), (ah - cw), fromBase58String(ac)), ScriptTransfer(Address(base58'3MsXJ3BesPECkYejzBQGHZPJT8GVYy4Fd3Q'), (aj - cD), fromBase58String(ac))]
564+ ((cF ++ cv) :+ IntegerEntry(q, max([ad, height])))
563565 }
564566 })
565567
566568
567-@Verifier(cE)
568-func cF () = {
569- let cG = {
570- let cH = if (sigVerify(cE.bodyBytes, cE.proofs[0], Y))
569+@Verifier(cG)
570+func cH () = {
571+ let cI = {
572+ let cJ = if (sigVerify(cG.bodyBytes, cG.proofs[0], Y))
571573 then 1
572574 else 0
573- let cI = if (sigVerify(cE.bodyBytes, cE.proofs[1], Z))
575+ let cK = if (sigVerify(cG.bodyBytes, cG.proofs[1], Z))
574576 then 1
575577 else 0
576- let cJ = if (sigVerify(cE.bodyBytes, cE.proofs[2], aa))
578+ let cL = if (sigVerify(cG.bodyBytes, cG.proofs[2], aa))
577579 then 1
578580 else 0
579- (((cH + cI) + cJ) >= 2)
581+ (((cJ + cK) + cL) >= 2)
580582 }
581- let av = cE
583+ let av = cG
582584 if ($isInstanceOf(av, "InvokeScriptTransaction"))
583585 then {
584586 let bZ = av
585- let cK = sigVerify(cE.bodyBytes, cE.proofs[0], cE.senderPublicKey)
586- let cL = if ((bZ.fee == 900000))
587+ let cM = sigVerify(cG.bodyBytes, cG.proofs[0], cG.senderPublicKey)
588+ let cN = if ((bZ.fee == 900000))
587589 then (bZ.feeAssetId == unit)
588590 else false
589- let cM = (bZ.function == "init")
590- let cN = (size(bZ.payments) == 0)
591- if (if (if (if (cL)
591+ let cO = (bZ.function == "init")
592+ let cP = (size(bZ.payments) == 0)
593+ if (if (if (if (cN)
594+ then cO
595+ else false)
592596 then cM
593597 else false)
594- then cK
595- else false)
596- then cN
598+ then cP
597599 else false)
598600 then true
599- else cG
601+ else cI
600602 }
601- else cG
603+ else cI
602604 }
603605
Full:
OldNewDifferences
11 {-# STDLIB_VERSION 6 #-}
22 {-# SCRIPT_TYPE ACCOUNT #-}
33 {-# CONTENT_TYPE DAPP #-}
44 let a = 100000000
55
66 let b = [150, 120, 100, 80, 60, 40, 30, 20, 10]
77
88 let c = ["1-1", "2-2", "3-3", "4-4", "5-8", "9-12", "14-16", "17-20", "20-104"]
99
1010 let d = 104
1111
1212 let e = [150, 120, 100, 80, 60, 40]
1313
1414 let f = ["1-1", "2-2", "3-3", "4-4", "5-8", "9-12"]
1515
1616 let g = 12
1717
1818 let h = "startHeight"
1919
2020 let i = "periodLength"
2121
2222 let j = "lendRewardsAmount"
2323
2424 let k = "lpRewardAmount"
2525
2626 let l = "tokens"
2727
2828 let m = "_userTotalSupply"
2929
3030 let n = "_tokenInterest"
3131
3232 let o = "_tokenInterestHeight"
3333
3434 let p = "_tokenRewardPerBlock"
3535
3636 let q = "rewardUpdateHeight"
3737
3838 let r = "_userLandInterest"
3939
4040 let s = "_userLendAvailableClaim"
4141
4242 let t = "_userLpAvailableClaim"
4343
4444 let u = "lpInterest"
4545
4646 let v = "lpInterestHeight"
4747
4848 let w = "prevLPTotalSupply"
4949
5050 let x = "lpRewardPerBlock"
5151
5252 let y = "_userLpInterest"
5353
5454 let z = "_twap5B"
5555
5656 let A = "_prevLendTotalSupply"
5757
5858 let B = "axlyTokenId"
5959
6060 let C = "total_supplied_"
6161
6262 let D = "_supplied_"
6363
6464 let E = "setup_tokens"
6565
6666 let F = "_total_share_tokens_locked"
6767
6868 let G = "_share_tokens_locked"
6969
7070 let H = "axlyPool"
7171
7272 let I = "share_asset_id"
7373
7474 let J = "price_oracle"
7575
7676 let K = "mainContract"
7777
7878 let L = "tokenomicContract"
7979
8080 let M = "swopfi_farming_addr"
8181
8282 let N = "lend_service_addr"
8383
8484 let O = "group1_admin1_pub_key"
8585
8686 let P = "group1_admin2_pub_key"
8787
8888 let Q = "group1_admin3_pub_key"
8989
9090 let R = "admin_call_pub_key"
9191
9292 let S = valueOrErrorMessage(getString(this, H), "Can't get axlyPool key")
9393
9494 let T = addressFromStringValue(valueOrErrorMessage(getString(this, K), "Can't get mainContact key"))
9595
9696 let U = addressFromStringValue(valueOrErrorMessage(getString(this, L), "Can't get tokenomicContract key"))
9797
9898 let V = addressFromStringValue(valueOrErrorMessage(getString(T, N), "Can't get lend_service_addr key"))
9999
100100 let W = addressFromStringValue(valueOrErrorMessage(getString(T, M), "Can't get swopfi_farming_addr key"))
101101
102102 let X = addressFromStringValue(valueOrErrorMessage(getString(T, J), "Can't get price_oracle key"))
103103
104104 let Y = fromBase58String(valueOrErrorMessage(getString(T, O), "Can't get admin1PK"))
105105
106106 let Z = fromBase58String(valueOrErrorMessage(getString(T, P), "Can't get admin2PK"))
107107
108108 let aa = fromBase58String(valueOrErrorMessage(getString(T, Q), "Can't get operatorPK"))
109109
110110 let ab = fromBase58String(valueOrErrorMessage(getString(this, R), "Can't get operatorPK"))
111111
112112 let ac = valueOrErrorMessage(getString(U, B), "Can't get Axly token id")
113113
114114 let ad = getIntegerValue(this, h)
115115
116116 let ae = getIntegerValue(this, i)
117117
118118 let af = max([1, ((height - ad) / ae)])
119119
120120 let ag = getIntegerValue(U, j)
121121
122122 let ah = (ag / d)
123123
124124 let ai = getIntegerValue(U, k)
125125
126126 let aj = (ai / g)
127127
128128 func ak (al) = if (containsElement([Y, Z, aa], al.callerPublicKey))
129129 then unit
130130 else throw("Only admin group1 can call this function")
131131
132132
133133 func am (al) = if ((al.caller == this))
134134 then unit
135135 else throw("Only contract itself can call this function")
136136
137137
138138 func an (al) = if ((al.callerPublicKey == ab))
139139 then unit
140140 else throw("Only operator can call this function")
141141
142142
143143 func ao (al) = if ((al.caller == V))
144144 then unit
145145 else throw("Only land contract can call this function")
146146
147147
148148 func ap (al) = if ((al.caller == W))
149149 then unit
150150 else throw("Only land contract can call this function")
151151
152152
153153 func aq () = {
154154 let ar = valueOrElse(getString(this, l), "")
155155 if ((ar == ""))
156156 then nil
157157 else split(ar, ",")
158158 }
159159
160160
161161 func as (at) = getIntegerValue(X, (at + z))
162162
163163
164164 func au (at) = if ((at == "WAVES"))
165165 then 8
166166 else {
167167 let av = assetInfo(fromBase58String(at))
168168 if ($isInstanceOf(av, "Asset"))
169169 then {
170170 let aw = av
171171 aw.decimals
172172 }
173173 else throw("Can't find asset")
174174 }
175175
176176
177177 func ax (at) = pow(10, 0, au(at), 0, 0, DOWN)
178178
179179
180180 func ay (az,aA,aB) = {
181181 func aC (aD,aE) = {
182182 let aF = aD
183183 let aG = aF._1
184184 let aH = aF._2
185185 let aI = split(aE, "-")
186186 let aJ = $Tuple2(parseIntValue(aI[0]), parseIntValue(aI[1]))
187187 let aK = aJ._1
188188 let aL = aJ._2
189189 if (aH)
190190 then aD
191191 else if (if ((az >= aK))
192192 then (aL >= az)
193193 else false)
194194 then $Tuple2(aG, true)
195195 else $Tuple2((aG + 1), false)
196196 }
197197
198198 let aM = {
199199 let aN = c
200200 let aO = size(aN)
201201 let aP = $Tuple2(0, false)
202202 func aQ (aR,aS) = if ((aS >= aO))
203203 then aR
204204 else aC(aR, aN[aS])
205205
206206 func aT (aR,aS) = if ((aS >= aO))
207207 then aR
208208 else throw("List size exceeds 9")
209209
210210 aT(aQ(aQ(aQ(aQ(aQ(aQ(aQ(aQ(aQ(aP, 0), 1), 2), 3), 4), 5), 6), 7), 8), 9)
211211 }
212212 let aG = aM._1
213213 let aH = aM._2
214214 if (aH)
215215 then fraction((b[aG] * a), 7, 365)
216216 else 0
217217 }
218218
219219
220220 func aU () = {
221221 func aC (aD,aV) = {
222222 let aW = aD
223223 let aX = aW._1
224224 let aY = aW._2
225225 let aZ = aW._3
226226 let ba = valueOrElse(getInteger(V, (C + aV)), 0)
227227 let bb = as(aV)
228228 let bc = ax(aV)
229229 let bd = fraction(ba, bb, bc)
230230 $Tuple3((aX :+ ba), (aY :+ bd), (aZ + bd))
231231 }
232232
233233 let aN = aq()
234234 let aO = size(aN)
235235 let aP = $Tuple3(nil, nil, 0)
236236 func aQ (aR,aS) = if ((aS >= aO))
237237 then aR
238238 else aC(aR, aN[aS])
239239
240240 func aT (aR,aS) = if ((aS >= aO))
241241 then aR
242242 else throw("List size exceeds 30")
243243
244244 aT(aQ(aQ(aQ(aQ(aQ(aQ(aQ(aQ(aQ(aQ(aQ(aQ(aQ(aQ(aQ(aQ(aQ(aQ(aQ(aQ(aQ(aQ(aQ(aQ(aQ(aQ(aQ(aQ(aQ(aQ(aP, 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)
245245 }
246246
247247
248248 func be (aV) = {
249249 let ba = valueOrElse(getInteger(V, (C + aV)), 0)
250250 let bb = as(aV)
251251 let bc = ax(aV)
252252 fraction(ba, bb, bc)
253253 }
254254
255255
256256 func bf (aV,aX) = if ((height >= ad))
257257 then 0
258258 else {
259259 let bg = getIntegerValue(this, (aV + p))
260260 let bh = getIntegerValue(this, (aV + n))
261261 let bi = getIntegerValue(this, (aV + o))
262262 let bj = ((height - bi) * bg)
263263 let bk = if ((aX > 0))
264264 then fraction(bj, a, aX)
265265 else 0
266266 (bh + bk)
267267 }
268268
269269
270270 func bl (aX) = if ((height >= ad))
271271 then 0
272272 else {
273273 let bg = valueOrElse(getInteger(this, x), 0)
274274 let bh = valueOrElse(getInteger(this, u), 0)
275275 let bi = valueOrElse(getInteger(this, v), height)
276276 let bj = ((height - bi) * bg)
277277 let bk = if ((aX > 0))
278278 then fraction(bj, a, aX)
279279 else 0
280280 (bh + bk)
281281 }
282282
283283
284284 func bm (bn,aV) = {
285285 let aX = valueOrElse(getInteger(V, (C + aV)), 0)
286286 let bo = bf(aV, aX)
287287 let bp = valueOrElse(getInteger(V, ((bn + D) + aV)), 0)
288288 let bq = valueOrElse(getInteger(this, (((aV + "_") + bn) + r)), if ((bp == 0))
289289 then bo
290290 else 0)
291291 let bj = fraction(bp, (bo - bq), a)
292292 $Tuple3(bj, bo, bp)
293293 }
294294
295295
296296 func br (bn) = {
297297 let aX = valueOrElse(getInteger(W, (S + F)), 0)
298298 let bo = bl(aX)
299299 let bp = valueOrElse(getInteger(V, (((S + "_") + bn) + G)), 0)
300300 let bq = valueOrElse(getInteger(this, (bn + y)), if ((bp == 0))
301301 then bo
302302 else 0)
303303 let bj = fraction(bp, (bo - bq), a)
304304 $Tuple3(bj, bo, bp)
305305 }
306306
307307
308308 func bs (bn,bt) = {
309309 func bu (aD,aV) = {
310310 let bv = aD
311311 let bw = bv._1
312312 let bx = bv._2
313313 let by = bv._3
314314 let bz = bv._4
315315 let bA = valueOrElse(getInteger(this, (((aV + "_") + bn) + s)), 0)
316316 let bB = bm(bn, aV)
317317 let bC = bB._1
318318 let bD = bB._2
319319 let bp = bB._3
320320 let bE = (bA + bC)
321321 if (if ((bE > 0))
322322 then true
323323 else (bp > 0))
324324 then {
325325 let bF = if (if (bt)
326326 then true
327327 else (bE == 0))
328328 then bz
329329 else (bz ++ [IntegerEntry((((aV + "_") + bn) + r), bD), IntegerEntry((((aV + "_") + bn) + s), 0), IntegerEntry((aV + n), bD), IntegerEntry((aV + o), height)])
330330 $Tuple4((bw :+ aV), (bx :+ bE), (by + bE), bF)
331331 }
332332 else $Tuple4(bw, bx, by, bz)
333333 }
334334
335335 let aN = aq()
336336 let aO = size(aN)
337337 let aP = $Tuple4(nil, nil, 0, nil)
338338 func aQ (aR,aS) = if ((aS >= aO))
339339 then aR
340340 else bu(aR, aN[aS])
341341
342342 func aT (aR,aS) = if ((aS >= aO))
343343 then aR
344344 else throw("List size exceeds 30")
345345
346346 aT(aQ(aQ(aQ(aQ(aQ(aQ(aQ(aQ(aQ(aQ(aQ(aQ(aQ(aQ(aQ(aQ(aQ(aQ(aQ(aQ(aQ(aQ(aQ(aQ(aQ(aQ(aQ(aQ(aQ(aQ(aP, 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)
347347 }
348348
349349
350350 func bG (bn,bt) = {
351351 let bA = valueOrElse(getInteger(this, (bn + t)), 0)
352352 let bH = br(bn)
353353 let bC = bH._1
354354 let bI = bH._2
355355 let bp = bH._3
356356 let bE = (bA + bC)
357357 if (if (bt)
358358 then true
359359 else (bE == 0))
360360 then $Tuple2(bE, nil)
361361 else $Tuple2(bE, [IntegerEntry((bn + y), bI), IntegerEntry((bn + t), 0), IntegerEntry(u, bI), IntegerEntry(v, height)])
362362 }
363363
364364
365365 func bJ () = {
366366 let bK = as(ac)
367367 let bL = ax(ac)
368368 func bM (aB,aV) = {
369369 let bN = valueOrElse(getInteger(this, (aV + p)), 0)
370370 let bO = fraction(bN, bK, bL)
371371 let bP = ((bO * ae) * 52)
372372 let aY = be(aV)
373373 (aB :+ fraction(bP, a, aY))
374374 }
375375
376376 let bQ = {
377377 let aN = aq()
378378 let aO = size(aN)
379379 let aP = nil
380380 func aQ (aR,aS) = if ((aS >= aO))
381381 then aR
382382 else bM(aR, aN[aS])
383383
384384 func aT (aR,aS) = if ((aS >= aO))
385385 then aR
386386 else throw("List size exceeds 30")
387387
388388 aT(aQ(aQ(aQ(aQ(aQ(aQ(aQ(aQ(aQ(aQ(aQ(aQ(aQ(aQ(aQ(aQ(aQ(aQ(aQ(aQ(aQ(aQ(aQ(aQ(aQ(aQ(aQ(aQ(aQ(aQ(aP, 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)
389389 }
390390 let bR = getIntegerValue(W, (S + F))
391391 let bS = getStringValue(addressFromStringValue(S), I)
392392 let bT = ax(bS)
393393 let bU = {
394394 let bV = ({
395395 let bV = invoke(T, "getShareAssetPriceREADONLY", [[bS]], nil)
396396 if ($isInstanceOf(bV, "List[Any]"))
397397 then bV
398398 else throw(($getType(bV) + " couldn't be cast to List[Any]"))
399399 })[0]
400400 if ($isInstanceOf(bV, "Int"))
401401 then bV
402402 else throw(($getType(bV) + " couldn't be cast to Int"))
403403 }
404404 let bW = fraction(bR, bU, bT)
405405 let bN = valueOrElse(getInteger(this, x), 0)
406406 let bO = fraction(bN, bK, bL)
407407 let bP = ((bO * ae) * 52)
408408 let bX = fraction(bP, a, bW)
409409 $Tuple3(aq(), bQ, bX)
410410 }
411411
412412
413413 @Callable(al)
414414 func claimLenderRewards () = {
415415 let bY = bs(toString(al.caller), false)
416416 if ((bY._3 == 0))
417417 then throw("claim amount must be greater than 0")
418418 else {
419419 let bZ = invoke(U, "withdrawLendReward", [bY._3, toString(al.caller)], nil)
420420 if ((bZ == bZ))
421421 then bY._4
422422 else throw("Strict value is not equal to itself.")
423423 }
424424 }
425425
426426
427427
428428 @Callable(al)
429429 func claimLpRewards () = {
430430 let bY = bG(toString(al.caller), false)
431431 if ((bY._1 == 0))
432432 then throw("claim amount must be greater than 0")
433433 else {
434434 let bZ = invoke(U, "withdrawLpReward", [bY._1, toString(al.caller)], nil)
435435 if ((bZ == bZ))
436436 then bY._2
437437 else throw("Strict value is not equal to itself.")
438438 }
439439 }
440440
441441
442442
443443 @Callable(al)
444444 func lendAction (bn,aV) = valueOrElse(ao(al), {
445445 let bA = valueOrElse(getInteger(this, (aV + s)), 0)
446446 let ca = bm(bn, aV)
447447 let bC = ca._1
448448 let bD = ca._2
449449 [IntegerEntry((((bn + "_") + aV) + r), bD), IntegerEntry((((bn + "_") + aV) + s), (bA + bC)), IntegerEntry((aV + n), bD), IntegerEntry((aV + o), height)]
450450 })
451451
452452
453453
454454 @Callable(al)
455455 func lpAction (bn) = valueOrElse(ap(al), {
456456 let bA = valueOrElse(getInteger(this, t), 0)
457457 let cb = br(bn)
458458 let bC = cb._1
459459 let bI = cb._2
460460 [IntegerEntry((bn + y), bI), IntegerEntry((bn + t), (bA + bC)), IntegerEntry((bn + u), bI), IntegerEntry((bn + v), height)]
461461 })
462462
463463
464464
465465 @Callable(al)
466466 func init (cc,cd,ce,cf,ae) = valueOrElse(am(al), if (!(isDefined(addressFromString(cc))))
467467 then throw("Wrong farming address")
468468 else if (!(isDefined(addressFromString(cd))))
469469 then throw("Wrong main contract address")
470470 else [StringEntry(K, cc), StringEntry(L, cd), StringEntry(H, ce), IntegerEntry(h, cf), IntegerEntry(i, ae)])
471471
472472
473473
474474 @Callable(al)
475475 func initNewToken (aV) = valueOrElse(ak(al), if (isDefined(getInteger(this, (aV + n))))
476476 then throw("token already inited")
477477 else if (!(contains(getStringValue(V, E), aV)))
478478 then throw("no token on landing")
479479 else {
480480 let cg = (aq() :+ aV)
481481 [IntegerEntry((aV + n), 0), IntegerEntry((aV + o), max([ad, height])), StringEntry(l, makeString(cg, ",")), IntegerEntry((aV + p), 0)]
482482 })
483483
484484
485485
486486 @Callable(al)
487487 func updateRewards () = valueOrElse(an(al), {
488488 let ch = valueOrElse(getInteger(this, q), 0)
489489 if (((ch + ae) > height))
490490 then throw("rewards alredy updated in this period")
491491 else {
492492 let ci = aU()
493493 let aX = ci._1
494494 let aY = ci._2
495495 let aZ = ci._3
496496 let bK = as(ac)
497497 let bL = ax(ac)
498498 let cj = ay(af, c, b)
499499 func ck (aD,aV) = {
500500 let cl = aD
501501 let bz = cl._1
502- let aG = cl._2
502+ let cm = cl._2
503+ let aG = cl._3
503504 if ((aX[aG] == 0))
504- then $Tuple2((bz ++ [IntegerEntry((aV + A), aX[aG]), IntegerEntry((aV + p), 0), IntegerEntry((aV + n), bf(aV, aX[aG])), IntegerEntry((aV + o), max([ad, height]))]), (aG + 1))
505+ then $Tuple3((bz ++ [IntegerEntry((aV + A), aX[aG]), IntegerEntry((aV + p), 0), IntegerEntry((aV + n), bf(aV, aX[aG])), IntegerEntry((aV + o), max([ad, height]))]), cm, (aG + 1))
505506 else {
506- let cm = fraction(aY[aG], a, aZ)
507- let cn = fraction(cm, ah, a)
508- let co = fraction(cn, bK, bL)
509- let cp = valueOrElse(getInteger(this, A), 0)
510- let cq = if (if ((cp == 0))
507+ let cn = fraction(aY[aG], a, aZ)
508+ let co = fraction(cn, ah, a)
509+ let cp = fraction(co, bK, bL)
510+ let cq = valueOrElse(getInteger(this, A), 0)
511+ let cr = if (if ((cq == 0))
511512 then true
512513 else (aX[aG] == 0))
513514 then 0
514- else fraction(cp, a, aX[aG])
515- let bj = ((min([(cj * (a + cq)), fraction(cj, (15 * a), 10)]) / a) / 100)
516- let cr = min([co, fraction(aY[aG], bj, a)])
517- let cs = fraction(cr, bL, bK)
518- let bg = (cs / ae)
519- $Tuple2((bz ++ [IntegerEntry((aV + A), aX[aG]), IntegerEntry((aV + p), bg), IntegerEntry((aV + n), bf(aV, aX[aG])), IntegerEntry((aV + o), max([ad, height]))]), (aG + 1))
515+ else fraction(cq, a, aX[aG])
516+ let bj = ((min([(cj * (a + cr)), fraction(cj, (15 * a), 10)]) / a) / 100)
517+ let cs = min([cp, fraction(aY[aG], bj, a)])
518+ let ct = fraction(cs, bL, bK)
519+ let bg = (ct / ae)
520+ $Tuple3((bz ++ [IntegerEntry((aV + A), aX[aG]), IntegerEntry((aV + p), bg), IntegerEntry((aV + n), bf(aV, aX[aG])), IntegerEntry((aV + o), max([ad, height]))]), (cm + ct), (aG + 1))
520521 }
521522 }
522523
523- let ct = {
524+ let cu = {
524525 let aN = aq()
525526 let aO = size(aN)
526- let aP = $Tuple2(nil, 0)
527+ let aP = $Tuple3(nil, 0, 0)
527528 func aQ (aR,aS) = if ((aS >= aO))
528529 then aR
529530 else ck(aR, aN[aS])
530531
531532 func aT (aR,aS) = if ((aS >= aO))
532533 then aR
533534 else throw("List size exceeds 30")
534535
535536 aT(aQ(aQ(aQ(aQ(aQ(aQ(aQ(aQ(aQ(aQ(aQ(aQ(aQ(aQ(aQ(aQ(aQ(aQ(aQ(aQ(aQ(aQ(aQ(aQ(aQ(aQ(aQ(aQ(aQ(aQ(aP, 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)
536537 }
537- let cu = ct._1
538- let aG = ct._2
539- let cv = ay(af, f, e)
538+ let cv = cu._1
539+ let cw = cu._2
540+ let aG = cu._3
541+ let cx = ay(af, f, e)
540542 let bR = getIntegerValue(W, (S + F))
541- let cw = valueOrElse(getInteger(this, w), 0)
543+ let cy = valueOrElse(getInteger(this, w), 0)
542544 let bS = getStringValue(addressFromStringValue(S), I)
543545 let bT = ax(bS)
544546 let bU = {
545547 let bV = invoke(T, "getShareAssetPriceREADONLY", [bS], nil)
546548 if ($isInstanceOf(bV, "Int"))
547549 then bV
548550 else throw(($getType(bV) + " couldn't be cast to Int"))
549551 }
550552 let bW = fraction(bR, bU, bT)
551- let cx = fraction(aj, bK, bL)
552- let cy = if (if ((cw == 0))
553+ let cz = fraction(aj, bK, bL)
554+ let cA = if (if ((cy == 0))
553555 then true
554556 else (bR == 0))
555557 then 0
556- else fraction(cw, a, bR)
557- let cz = (min([(cv * (a + cy)), fraction(cv, (15 * a), 10)]) / a)
558- let cA = min([cx, fraction(bW, cz, a)])
559- let cB = fraction(cA, bL, bK)
560- let cC = (cB / ae)
561- let cD = [IntegerEntry(w, bR), IntegerEntry(x, cC), IntegerEntry(u, bl(bR)), IntegerEntry(v, max([ad, height]))]
562- ((cD ++ cu) :+ IntegerEntry(q, max([ad, height])))
558+ else fraction(cy, a, bR)
559+ let cB = ((min([(cx * (a + cA)), fraction(cx, (15 * a), 10)]) / a) / 100)
560+ let cC = min([cz, fraction(bW, cB, a)])
561+ let cD = fraction(cC, bL, bK)
562+ let cE = (cD / ae)
563+ let cF = [IntegerEntry(w, bR), IntegerEntry(x, cE), IntegerEntry(u, bl(bR)), IntegerEntry(v, max([ad, height])), ScriptTransfer(Address(base58'3MsXJ3BesPECkYejzBQGHZPJT8GVYy4Fd3Q'), (ah - cw), fromBase58String(ac)), ScriptTransfer(Address(base58'3MsXJ3BesPECkYejzBQGHZPJT8GVYy4Fd3Q'), (aj - cD), fromBase58String(ac))]
564+ ((cF ++ cv) :+ IntegerEntry(q, max([ad, height])))
563565 }
564566 })
565567
566568
567-@Verifier(cE)
568-func cF () = {
569- let cG = {
570- let cH = if (sigVerify(cE.bodyBytes, cE.proofs[0], Y))
569+@Verifier(cG)
570+func cH () = {
571+ let cI = {
572+ let cJ = if (sigVerify(cG.bodyBytes, cG.proofs[0], Y))
571573 then 1
572574 else 0
573- let cI = if (sigVerify(cE.bodyBytes, cE.proofs[1], Z))
575+ let cK = if (sigVerify(cG.bodyBytes, cG.proofs[1], Z))
574576 then 1
575577 else 0
576- let cJ = if (sigVerify(cE.bodyBytes, cE.proofs[2], aa))
578+ let cL = if (sigVerify(cG.bodyBytes, cG.proofs[2], aa))
577579 then 1
578580 else 0
579- (((cH + cI) + cJ) >= 2)
581+ (((cJ + cK) + cL) >= 2)
580582 }
581- let av = cE
583+ let av = cG
582584 if ($isInstanceOf(av, "InvokeScriptTransaction"))
583585 then {
584586 let bZ = av
585- let cK = sigVerify(cE.bodyBytes, cE.proofs[0], cE.senderPublicKey)
586- let cL = if ((bZ.fee == 900000))
587+ let cM = sigVerify(cG.bodyBytes, cG.proofs[0], cG.senderPublicKey)
588+ let cN = if ((bZ.fee == 900000))
587589 then (bZ.feeAssetId == unit)
588590 else false
589- let cM = (bZ.function == "init")
590- let cN = (size(bZ.payments) == 0)
591- if (if (if (if (cL)
591+ let cO = (bZ.function == "init")
592+ let cP = (size(bZ.payments) == 0)
593+ if (if (if (if (cN)
594+ then cO
595+ else false)
592596 then cM
593597 else false)
594- then cK
595- else false)
596- then cN
598+ then cP
597599 else false)
598600 then true
599- else cG
601+ else cI
600602 }
601- else cG
603+ else cI
602604 }
603605

github/deemru/w8io/026f985 
99.18 ms