tx · BDuVYzSWcXc3Vm6kdnQkVW56UbSDdKh6AJ7Frmmi5Fbo

3N8icXyy8nP599uu4C5Tydn7qwU8y9V2dP5:  -0.02100000 Waves

2023.01.06 03:15 [2392363] smart account 3N8icXyy8nP599uu4C5Tydn7qwU8y9V2dP5 > SELF 0.00000000 Waves

{ "type": 13, "id": "BDuVYzSWcXc3Vm6kdnQkVW56UbSDdKh6AJ7Frmmi5Fbo", "fee": 2100000, "feeAssetId": null, "timestamp": 1672964146485, "version": 2, "chainId": 84, "sender": "3N8icXyy8nP599uu4C5Tydn7qwU8y9V2dP5", "senderPublicKey": "7g2oH3HDdgHMD6FU9M7WneDyHy7VzFBYp8VswdpHQa85", "proofs": [ "4VgQEFUrPTdxkZZfmUf9ypNSFvkY9pY6J5NTNbhTPkTgGyvfY8XZSSaMetyvAG3qZuq7e8caKAB3SUQEjDkLo2Yd" ], "script": "base64:BgJHCAISBAoCCAgSBAoCCAgSBgoECAgIBBIFCgMICAESBQoDBAgIEgYKBAQICAESBAoCCAgSAwoBCBIDCgEIEgQKAgEIEgMKAQgsAAxhZG1pbkFkZHJlc3MCIzNOOFVhcXJDVGp5cEdQV1hTdkZKVlNMdjIzYmZ1aVBvSkFoAAVBZG1pbgkBB0FkZHJlc3MBCQDZBAEFDGFkbWluQWRkcmVzcwAFd2F2ZXMCBVdBVkVTAAZhV2F2ZXMCDGFjY2VwdF93YXZlcwAFV0FWRVMFBHVuaXQABm5mZXRBYwIMYWN0aXZhdGVfbmZ0AARtYWluAgptYWluX2Fzc2V0AAFsAglscF9hc3NldF8AA2FhMQIGcG9vbF9fAAJzYQIPU1RBS0lOR19BTU9VTlRfAAJsYQINTEVBU0VfQU1PVU5UXwACaXgCA0lEXwAHcmF0ZUZlZQIYcGVyY2VudGFnZV9yYXRlX2ZlZV9zd2FwAAxyYXRlRmVlTGltaXQCDnJhdGVfZmVlX2xpbWl0AA1yYXRlRmVlSGVpZ2h0Ag9yYXRlX2ZlZV9oZWlnaHQADmRlcG9zaXRfaGVpZ2h0AhJEZXBvc2l0X0hlaWdodF9PZl8AAmFjAghhY3RpdmF0ZQAGcG9vbEFjAg5hY3RpdmF0ZV9wb29scwAGc3dhcEFjAg1hY3RpdmF0ZV9zd2FwAAtsaXF1aWRpdHlBYwISYWN0aXZhdGVfbGlxdWlkaXR5AANiY0QCE2Jsb2NrX2Rpc3RyaWJ1aXRpb24AAkQ4CQBsBgAKAAAACAAAAAAFBkhBTEZVUAAMdG90YWxfbG9ja2VkAhRUb3RhbF9Ub2tlbnNfTG9ja2VkXwAIaW5pRXJyb3ICMlNtYXJ0IGNvbnRyYWN0IGFkbWluIGhhcyBub3QgeWV0IGJlZW4gaW5pdGlhbGl6ZWQuAQFEAQFpCAkBBXZhbHVlAQkA7AcBBQFpCGRlY2ltYWxzAQJkTQIBaQFvCQBsBgAKAAAJAGUCBQFpBQFvAAAAAAUGSEFMRlVQAQNEMTABAWkJAGwGAAoAAAgJAQV2YWx1ZQEJAOwHAQUBaQhkZWNpbWFscwAAAAAFBkhBTEZVUAENdmFsaWRhdGVBc3NldAMGYXNzZXRTC3N0cmluZ0Fzc2V0B2FjV2F2ZXMDAwkAAAIFBmFzc2V0UwUFV0FWRVMJAAACBQtzdHJpbmdBc3NldAUFd2F2ZXMHAwUHYWNXYXZlcwYJAAIBAjRUaGUgc21hcnQgY29udHJhY3QgZG9lcyBub3QgY3VycmVudGx5IHN1cHBvcnQgV2F2ZXMuAwkAAAIFBmFzc2V0UwkA2QQBBQtzdHJpbmdBc3NldAYHAQhnZXRBc3NldAEBYQQHJG1hdGNoMAUBYQMJAAECBQckbWF0Y2gwAgpCeXRlVmVjdG9yBAFhBQckbWF0Y2gwCQDYBAEFAWEJAAIBAiFSZXF1aXJlcyBORlQgYXMgcGF5bWVudCBmb3Igc2FsZS4BAmtwAgZhc3NldDEGYXNzZXQyCQCsAgIJAKwCAgkArAICBQNhYTEFBmFzc2V0MQIBXwUGYXNzZXQyAQp2YWxpZFBvb2xLAQNrZXkEByRtYXRjaDAJAJoIAgUEdGhpcwUDa2V5AwkAAQIFByRtYXRjaDACA0ludAQBaQUHJG1hdGNoMAUBaQcBCWtwQWRkcmVzcwIHYWRkcmVzcwNrZXkEByRtYXRjaDAJAJoIAgUEdGhpcwkArAICCQCsAgIFA2tleQIBXwUHYWRkcmVzcwMJAAECBQckbWF0Y2gwAgNJbnQEAXQFByRtYXRjaDAFAXQAAAEGcG9vbEFBAwdhZGRyZXNzA2tleQVhc3NldAQHJG1hdGNoMAkAmggCBQR0aGlzCQCsAgIJAKwCAgkArAICCQCsAgIFB2FkZHJlc3MCAV8FA2tleQIBXwUFYXNzZXQDCQABAgUHJG1hdGNoMAIDSW50BAFhBQckbWF0Y2gwBQFhAAABBmFzc2V0UAIDa2V5BWFzc2V0BAckbWF0Y2gwCQCaCAIFBHRoaXMJAKwCAgkArAICBQNrZXkCAV8FBWFzc2V0AwkAAQIFByRtYXRjaDACA0ludAQBYQUHJG1hdGNoMAUBYQABARV2ZXJpZmlDb2xsZWN0aW9uRXhpc3QBAWEEByRtYXRjaDAJARFAZXh0ck5hdGl2ZSgxMDUzKQIFBHRoaXMFAWEDCQABAgUHJG1hdGNoMAIGU3RyaW5nBAFvBQckbWF0Y2gwBgcBDGdldEFzc2V0TmFtZQEHYXNzZXRJZAQHJG1hdGNoMAkA7AcBBQdhc3NldElkAwkAAQIFByRtYXRjaDACBUFzc2V0BAVhc3NldAUHJG1hdGNoMAgFBWFzc2V0BG5hbWUJAAIBAhBDYW4ndCBmaW5kIGFzc2V0ARRnZXRBc3NldElzc3VlQWRkcmVzcwEBYQQHJG1hdGNoMAkA7AcBBQFhAwkAAQIFByRtYXRjaDACBUFzc2V0BAVhc3NldAUHJG1hdGNoMAgFBWFzc2V0Bmlzc3VlcgkAAgECEENhbid0IGZpbmQgYXNzZXQBDnRvdGFsQXNzZXRQb29sAgNrZXkHYXNzZXRMcAQHJG1hdGNoMAkAmggCBQR0aGlzBQNrZXkDCQABAgUHJG1hdGNoMAIDSW50BAFhBQckbWF0Y2gwBQFhAwUHYXNzZXRMcAUCRDgAAQEFdmFsaWQDCGFzc2V0UGF5BXBhaXIxBXBhaXIyBAhwYWlyMV81OAMJAAACBQVwYWlyMQUFd2F2ZXMFBVdBVkVTCQDZBAEFBXBhaXIxBAhwYWlyMl81OAMJAAACBQVwYWlyMgUFd2F2ZXMFBVdBVkVTCQDZBAEFBXBhaXIyAwkAAAIFCGFzc2V0UGF5BQhwYWlyMV81OAUIcGFpcjJfNTgFCHBhaXIxXzU4AQRwa2V5AwZBc3NldDEGQXNzZXQyB2FkZHJlc3MJAKwCAgkArAICCQCsAgIFDmRlcG9zaXRfaGVpZ2h0CQECa3ACBQZBc3NldDEFBkFzc2V0MgIBXwUHYWRkcmVzcwETZ2V0QW1vdW50QmxvY2tBc3NldAEHYXNzZXRJZAQHJG1hdGNoMAkAmggCBQR0aGlzBQdhc3NldElkAwkAAQIFByRtYXRjaDACA0ludAQBaQUHJG1hdGNoMAUBaQAAAQlNYWluQXNzZXQACQDZBAEJARFAZXh0ck5hdGl2ZSgxMDUzKQIFBUFkbWluBQRtYWluAQ5HZXRSYXRlRmVlU3dhcAAJARFAZXh0ck5hdGl2ZSgxMDUwKQIFBUFkbWluBQdyYXRlRmVlAQlscEJsb2NrZWQCB2FkZHJlc3MDa2V5BAckbWF0Y2gwCQCaCAIFBHRoaXMJAKwCAgkArAICCQCsAgICCVNUQUtFX0xQXwUHYWRkcmVzcwIBXwUDa2V5AwkAAQIFByRtYXRjaDACA0ludAQBYQUHJG1hdGNoMAUBYQAACwFpAQRTd2FwAgZBc3NldDEGQXNzZXQyBApjdXJyZW50S2V5CQDYBAEICAUBaQZjYWxsZXIFYnl0ZXMEB2FjV2F2ZXMJARFAZXh0ck5hdGl2ZSgxMDUxKQIFBUFkbWluBQZhV2F2ZXMEBXBvd2VyCQERQGV4dHJOYXRpdmUoMTA1MSkCBQVBZG1pbgUCYWMEDHN3YXBBY3RpdmF0ZQkBEUBleHRyTmF0aXZlKDEwNTEpAgUFQWRtaW4FBnN3YXBBYwQHcG9vbEtleQkBAmtwAgUGQXNzZXQxBQZBc3NldDIEA2tleQkBCnZhbGlkUG9vbEsBBQdwb29sS2V5BAZhc3NldDEICQCRAwIIBQFpCHBheW1lbnRzAAAHYXNzZXRJZAQGYXNzZXQyCAkAkQMCCAUBaQhwYXltZW50cwABB2Fzc2V0SWQECWxwQXNzZXRJZAkBEUBleHRyTmF0aXZlKDEwNTApAgUEdGhpcwkArAICBQFsCQECa3ACBQZBc3NldDEFBkFzc2V0MgQLdG90YWxBc3NldDEJAQ50b3RhbEFzc2V0UG9vbAIJAKwCAgkArAICCQECa3ACBQZBc3NldDEFBkFzc2V0MgIBXwUGQXNzZXQxBwQLdG90YWxBc3NldDIJAQ50b3RhbEFzc2V0UG9vbAIJAKwCAgkArAICCQECa3ACBQZBc3NldDEFBkFzc2V0MgIBXwUGQXNzZXQyBwQRZmVlUmF0ZVBlcmNlbnR1YWwJARFAZXh0ck5hdGl2ZSgxMDUwKQIFBUFkbWluBQdyYXRlRmVlBAhwckFzc2V0MQkAuQICCQC2AgEICQCRAwIIBQFpCHBheW1lbnRzAAAGYW1vdW50CQC8AgMJALYCAQUCRDgJALYCAQULdG90YWxBc3NldDIJALYCAQULdG90YWxBc3NldDEEC3ByaWNlQXNzZXQxCQCgAwEJALoCAgkAuAICBQhwckFzc2V0MQkAuQICCQC6AgIFCHByQXNzZXQxCQC2AgEFEWZlZVJhdGVQZXJjZW50dWFsCQC2AgEAZAkAtgIBBQJEOAQIcHJBc3NldDIJALkCAgkAtgIBCAkAkQMCCAUBaQhwYXltZW50cwAABmFtb3VudAkAvAIDCQC2AgEFAkQ4CQC2AgEFC3RvdGFsQXNzZXQxCQC2AgEFC3RvdGFsQXNzZXQyBAtwcmljZUFzc2V0MgkAoAMBCQC6AgIJALgCAgUIcHJBc3NldDIJALkCAgkAugICBQhwckFzc2V0MgkAtgIBBRFmZWVSYXRlUGVyY2VudHVhbAkAtgIBAGQJALYCAQUCRDgECXNlbmRWYWx1ZQMDCQAAAgUGYXNzZXQxBQVXQVZFUwkAAAIFBkFzc2V0MQUFd2F2ZXMHBQtwcmljZUFzc2V0MQMJAAACBQZhc3NldDEJANkEAQUGQXNzZXQxBQtwcmljZUFzc2V0MQULcHJpY2VBc3NldDIEDmFzc2V0VXBkYXRlUGF5AwkAAAIFBmFzc2V0MQUFV0FWRVMFBXdhdmVzAwkAAAIFBmFzc2V0MQkA2QQBBQZBc3NldDEFBkFzc2V0MQUGQXNzZXQyBA9hc3NldFVwZGF0ZVN3YXADCQAAAgUGYXNzZXQxBQVXQVZFUwUFd2F2ZXMDCQAAAgUGYXNzZXQxCQDZBAEFBkFzc2V0MQUGQXNzZXQyBQZBc3NldDEEDWFzc2V0U2VuZFN3YXAJAQV2YWxpZAMICQCRAwIIBQFpCHBheW1lbnRzAAAHYXNzZXRJZAUGQXNzZXQxBQZBc3NldDIEA24xcwkAZQIJAQZhc3NldFACCQECa3ACBQZBc3NldDEFBkFzc2V0MgUPYXNzZXRVcGRhdGVTd2FwBQlzZW5kVmFsdWUEAm53CQBlAgkBE2dldEFtb3VudEJsb2NrQXNzZXQBBQ9hc3NldFVwZGF0ZVN3YXAFCXNlbmRWYWx1ZQQHbmV3VXBkYQMJAGYCAAAFA24xcwAABQNuMXMEDW5ld1VwZGF0ZVN3YXADCQBmAgAABQJudwAABQJudwQCRHgEByRtYXRjaDAICQCRAwIIBQFpCHBheW1lbnRzAAAHYXNzZXRJZAMJAAECBQckbWF0Y2gwAgRVbml0BAFvBQckbWF0Y2gwCQBsBgAKAAAACAAAAAAFBkhBTEZVUAMJAAECBQckbWF0Y2gwAgpCeXRlVmVjdG9yBAF4BQckbWF0Y2gwCQBsBgAKAAAICQEFdmFsdWUBCQDsBwEFAXgIZGVjaW1hbHMAAAAABQZIQUxGVVAJAAIBAgtNYXRjaCBlcnJvcgMFBXBvd2VyAwkBASEBBQxzd2FwQWN0aXZhdGUDAwkBASEBCQAAAgUGQXNzZXQxBQZBc3NldDIDCQENdmFsaWRhdGVBc3NldAMFBmFzc2V0MQUGQXNzZXQxBQdhY1dhdmVzBgkBDXZhbGlkYXRlQXNzZXQDBQZhc3NldDEFBkFzc2V0MgUHYWNXYXZlcwcDCQECIT0CBQNrZXkHAwkAAAIICQCRAwIIBQFpCHBheW1lbnRzAAEHYXNzZXRJZAkBCU1haW5Bc3NldAADCQAAAggJAJEDAggFAWkIcGF5bWVudHMAAQZhbW91bnQJAQ5HZXRSYXRlRmVlU3dhcAADAwkAZgIFC3RvdGFsQXNzZXQxAAIGCQBmAgULdG90YWxBc3NldDIAAgQTb2xkUmF0ZUZlZVN3YXBUb3RhbAQHJG1hdGNoMAkAmggCBQR0aGlzCQCsAgIFB3Bvb2xLZXkCDl9yYXRlX2ZlZV9zd2FwAwkAAQIFByRtYXRjaDACA0ludAQBbwUHJG1hdGNoMAkAZAIFAW8JAQ5HZXRSYXRlRmVlU3dhcAAJAQ5HZXRSYXRlRmVlU3dhcAAJAMwIAgkBDlNjcmlwdFRyYW5zZmVyAwkBB0FkZHJlc3MBCAgFAWkGY2FsbGVyBWJ5dGVzAwkAZgIAAAUJc2VuZFZhbHVlBQJEeAUJc2VuZFZhbHVlBQ1hc3NldFNlbmRTd2FwCQDMCAIJAQxJbnRlZ2VyRW50cnkCBQ9hc3NldFVwZGF0ZVN3YXAFDW5ld1VwZGF0ZVN3YXAJAMwIAgkBDEludGVnZXJFbnRyeQIJAKwCAgkArAICCQECa3ACBQZBc3NldDEFBkFzc2V0MgIBXwUPYXNzZXRVcGRhdGVTd2FwBQduZXdVcGRhCQDMCAIJAQxJbnRlZ2VyRW50cnkCCQCsAgIJAKwCAgkBAmtwAgUGQXNzZXQxBQZBc3NldDICAV8FDmFzc2V0VXBkYXRlUGF5CQBkAgkBBmFzc2V0UAIJAQJrcAIFBkFzc2V0MQUGQXNzZXQyBQ5hc3NldFVwZGF0ZVBheQgJAJEDAggFAWkIcGF5bWVudHMAAAZhbW91bnQJAMwIAgkBDEludGVnZXJFbnRyeQIFDmFzc2V0VXBkYXRlUGF5CQBkAgkBE2dldEFtb3VudEJsb2NrQXNzZXQBBQ5hc3NldFVwZGF0ZVBheQgJAJEDAggFAWkIcGF5bWVudHMAAAZhbW91bnQJAMwIAgkBDEludGVnZXJFbnRyeQIJANgEAQkBCU1haW5Bc3NldAAJAGQCCQETZ2V0QW1vdW50QmxvY2tBc3NldAEJANgEAQkBCU1haW5Bc3NldAAICQCRAwIIBQFpCHBheW1lbnRzAAEGYW1vdW50CQDMCAIJAQxJbnRlZ2VyRW50cnkCCQCsAgIFB3Bvb2xLZXkCDl9yYXRlX2ZlZV9zd2FwBRNvbGRSYXRlRmVlU3dhcFRvdGFsBQNuaWwJAAIBAhZQb29sIGhhcyBubyBsaXF1aWRpdHkuCQACAQkArAICCQCsAgICDVN3YXAgZGVuaWVkISAJAKQDAQkBDkdldFJhdGVGZWVTd2FwAAIkIEJpY29uIGlzIHJlcXVpcmVkIGZvciB0aGUgc3dhcCBmZWUuCQACAQISSW52YWxpZCByYXRlIGFzc2V0CQACAQIRSW52YWxpZCBTd2FwIEtleS4JAAIBAiBBc3NldDEgY2Fubm90IGJlIGVxdWFsIHRvIEFzc2V0MgkAAgECJFN3YXAgaXMgY3VycmVudGx5IHVuZGVyIG1haW50ZW5hbmNlLgkAAgECJGRBcHAgaXMgY3VycmVudGx5IHVuZGVyIG1haW50ZW5hbmNlLgFpAQxBZGRMaXF1aWRpdHkCBkFzc2V0MQZBc3NldDIEBXBvd2VyCQERQGV4dHJOYXRpdmUoMTA1MSkCBQVBZG1pbgUCYWMEDHBvb2xBY3RpdmF0ZQkBEUBleHRyTmF0aXZlKDEwNTEpAgUFQWRtaW4FBnBvb2xBYwQHYWNXYXZlcwkBEUBleHRyTmF0aXZlKDEwNTEpAgUFQWRtaW4FBmFXYXZlcwQDa2V5CQEKdmFsaWRQb29sSwEJAQJrcAIFBkFzc2V0MQUGQXNzZXQyBAZhc3NldDEICQCRAwIIBQFpCHBheW1lbnRzAAAHYXNzZXRJZAQGYXNzZXQyCAkAkQMCCAUBaQhwYXltZW50cwABB2Fzc2V0SWQECWxwQXNzZXRJZAkBEUBleHRyTmF0aXZlKDEwNTMpAgUEdGhpcwkArAICBQFsCQECa3ACBQZBc3NldDEFBkFzc2V0MgQPdG90YWxBc3NldDFQb29sAwkAZgIAAgkBDnRvdGFsQXNzZXRQb29sAgkArAICCQCsAgIJAQJrcAIFBkFzc2V0MQUGQXNzZXQyAgFfBQZBc3NldDEHCAkAkQMCCAUBaQhwYXltZW50cwAABmFtb3VudAkBDnRvdGFsQXNzZXRQb29sAgkArAICCQCsAgIJAQJrcAIFBkFzc2V0MQUGQXNzZXQyAgFfBQZBc3NldDEHBA90b3RhbEFzc2V0MlBvb2wDCQBmAgACCQEOdG90YWxBc3NldFBvb2wCCQCsAgIJAKwCAgkBAmtwAgUGQXNzZXQxBQZBc3NldDICAV8FBkFzc2V0MQcICQCRAwIIBQFpCHBheW1lbnRzAAEGYW1vdW50CQEOdG90YWxBc3NldFBvb2wCCQCsAgIJAKwCAgkBAmtwAgUGQXNzZXQxBQZBc3NldDICAV8FBkFzc2V0MgcEB3RvdGFsTHAJAQ50b3RhbEFzc2V0UG9vbAIFCWxwQXNzZXRJZAYEDHByaWNlTHBBc3NldAkAaQIJAGQCBQ90b3RhbEFzc2V0MVBvb2wFD3RvdGFsQXNzZXQyUG9vbAUHdG90YWxMcAQOcXVhbnRpdHlBc3NldDIJAGgCCAkAkQMCCAUBaQhwYXltZW50cwAABmFtb3VudAkAaQIFD3RvdGFsQXNzZXQyUG9vbAUPdG90YWxBc3NldDFQb29sBAdyYXRlVG9wCQBkAggJAJEDAggFAWkIcGF5bWVudHMAAQZhbW91bnQJAGkCCQBoAggJAJEDAggFAWkIcGF5bWVudHMAAQZhbW91bnQAAgBkBApyYXRlQm90dG9tCQBlAggJAJEDAggFAWkIcGF5bWVudHMAAQZhbW91bnQJAGkCCQBoAggJAJEDAggFAWkIcGF5bWVudHMAAQZhbW91bnQAAgBkBAhWYWxpZGF0ZQMDAwkAAAIICQCRAwIIBQFpCHBheW1lbnRzAAEGYW1vdW50BQ5xdWFudGl0eUFzc2V0MgYJAGYCBQdyYXRlVG9wCAkAkQMCCAUBaQhwYXltZW50cwABBmFtb3VudAYJAGYCCAkAkQMCCAUBaQhwYXltZW50cwABBmFtb3VudAUKcmF0ZUJvdHRvbQYHAwUFcG93ZXIDCQEBIQEFDHBvb2xBY3RpdmF0ZQMDAwkBASEBCQAAAgUGYXNzZXQxBQZhc3NldDIJAQ12YWxpZGF0ZUFzc2V0AwUGYXNzZXQxBQZBc3NldDEFB2FjV2F2ZXMHCQENdmFsaWRhdGVBc3NldAMFBmFzc2V0MgUGQXNzZXQyBQdhY1dhdmVzBwMJAQIhPQIFA2tleQcDBQhWYWxpZGF0ZQQKY3VycmVudEtleQkA2AQBCAgFAWkGY2FsbGVyBWJ5dGVzBA1jdXJyZW50QW1vdW50CQEJa3BBZGRyZXNzAgUKY3VycmVudEtleQkBAmtwAgUGQXNzZXQxBQZBc3NldDIEE2N1cnJlbnRBbW91bnRBc3NldDEJAQZwb29sQUEDBQpjdXJyZW50S2V5CQECa3ACBQZBc3NldDEFBkFzc2V0MgUGQXNzZXQxBBNjdXJyZW50QW1vdW50QXNzZXQyCQEGcG9vbEFBAwUKY3VycmVudEtleQkBAmtwAgUGQXNzZXQxBQZBc3NldDIFBkFzc2V0MgQKYXNzZXQxcG9vbAkBBmFzc2V0UAIJAQJrcAIFBkFzc2V0MQUGQXNzZXQyBQZBc3NldDEECmFzc2V0MnBvb2wJAQZhc3NldFACCQECa3ACBQZBc3NldDEFBkFzc2V0MgUGQXNzZXQyBAlyZWNlaXZlTHADCQAAAgUPdG90YWxBc3NldDFQb29sCAkAkQMCCAUBaQhwYXltZW50cwAABmFtb3VudAkAaAIAAQUCRDgJAKADAQkAugICCQC3AgIJALkCAgkAtgIBCAkAkQMCCAUBaQhwYXltZW50cwAABmFtb3VudAkAtgIBBQJEOAkAuQICCQC2AgEICQCRAwIIBQFpCHBheW1lbnRzAAEGYW1vdW50CQC2AgEFAkQ4CQC6AgIJALcCAgkAuQICCQC2AgEFD3RvdGFsQXNzZXQxUG9vbAkAtgIBBQJEOAkAuQICCQC2AgEFD3RvdGFsQXNzZXQyUG9vbAkAtgIBBQJEOAkAtgIBBQd0b3RhbExwBBZuZXdjdXJyZW50QW1vdW50QXNzZXQxCQBkAgUTY3VycmVudEFtb3VudEFzc2V0MQgJAJEDAggFAWkIcGF5bWVudHMAAAZhbW91bnQEFm5ld2N1cnJlbnRBbW91bnRBc3NldDIJAGQCBRNjdXJyZW50QW1vdW50QXNzZXQyCAkAkQMCCAUBaQhwYXltZW50cwABBmFtb3VudAQQbmV3Y3VycmVudEFtb3VudAkAZAIFDWN1cnJlbnRBbW91bnQFCXJlY2VpdmVMcAQNbmV3YXNzZXQxcG9vbAkAZAIFCmFzc2V0MXBvb2wICQCRAwIIBQFpCHBheW1lbnRzAAAGYW1vdW50BA1uZXdhc3NldDJwb29sCQBkAgUKYXNzZXQycG9vbAgJAJEDAggFAWkIcGF5bWVudHMAAQZhbW91bnQJAMwIAgkBB1JlaXNzdWUDCQDZBAEFCWxwQXNzZXRJZAUJcmVjZWl2ZUxwBgkAzAgCCQEOU2NyaXB0VHJhbnNmZXIDCQEHQWRkcmVzcwEICAUBaQZjYWxsZXIFYnl0ZXMFCXJlY2VpdmVMcAkA2QQBBQlscEFzc2V0SWQJAMwIAgkBDEludGVnZXJFbnRyeQIJAQRwa2V5AwUGQXNzZXQxBQZBc3NldDIFCmN1cnJlbnRLZXkFBmhlaWdodAkAzAgCCQEMSW50ZWdlckVudHJ5AgkArAICCQCsAgIJAKwCAgkArAICBQpjdXJyZW50S2V5AgFfCQECa3ACBQZBc3NldDEFBkFzc2V0MgIBXwUGQXNzZXQxBRZuZXdjdXJyZW50QW1vdW50QXNzZXQxCQDMCAIJAQxJbnRlZ2VyRW50cnkCCQCsAgIJAKwCAgkArAICCQCsAgIFCmN1cnJlbnRLZXkCAV8JAQJrcAIFBkFzc2V0MQUGQXNzZXQyAgFfBQZBc3NldDIFFm5ld2N1cnJlbnRBbW91bnRBc3NldDIJAMwIAgkBDEludGVnZXJFbnRyeQIJAKwCAgkArAICCQECa3ACBQZBc3NldDEFBkFzc2V0MgIBXwUKY3VycmVudEtleQUQbmV3Y3VycmVudEFtb3VudAkAzAgCCQEMSW50ZWdlckVudHJ5AgkArAICCQCsAgIJAQJrcAIFBkFzc2V0MQUGQXNzZXQyAgFfBQZBc3NldDEFDW5ld2Fzc2V0MXBvb2wJAMwIAgkBDEludGVnZXJFbnRyeQIJAKwCAgkArAICCQECa3ACBQZBc3NldDEFBkFzc2V0MgIBXwUGQXNzZXQyBQ1uZXdhc3NldDJwb29sCQDMCAIJAQxJbnRlZ2VyRW50cnkCBQZBc3NldDEJAGQCCQETZ2V0QW1vdW50QmxvY2tBc3NldAEFBkFzc2V0MQgJAJEDAggFAWkIcGF5bWVudHMAAAZhbW91bnQJAMwIAgkBDEludGVnZXJFbnRyeQIFBkFzc2V0MgkAZAIJARNnZXRBbW91bnRCbG9ja0Fzc2V0AQUGQXNzZXQyCAkAkQMCCAUBaQhwYXltZW50cwABBmFtb3VudAkAzAgCCQEMSW50ZWdlckVudHJ5AgUJbHBBc3NldElkCQBkAgkBE2dldEFtb3VudEJsb2NrQXNzZXQBBQlscEFzc2V0SWQFCXJlY2VpdmVMcAUDbmlsCQACAQkArAICCQCsAgIJAKwCAgkArAICCQCsAgICP1BheW1lbnQgb2YgaW52YWxpZCAxLzEgYW1vdW50cyB0byB0aGUgUG9vbC4gVHJ5IEFzc2V0Mjoge3ZhbHVlOgkApAMBCQBoAggJAJEDAggFAWkIcGF5bWVudHMAAAZhbW91bnQJAGkCBQ90b3RhbEFzc2V0MlBvb2wFD3RvdGFsQXNzZXQxUG9vbAIMfSBSZWNlaXZlZDogCQCkAwEICQCRAwIIBQFpCHBheW1lbnRzAAEGYW1vdW50AgsgVmFsaWRhdGU6IAkApQMBBQhWYWxpZGF0ZQkAAgECEUludmFsaWQgUG9vbCBLZXkuCQACAQIgQXNzZXQxIGNhbm5vdCBiZSBlcXVhbCB0byBBc3NldDIJAAIBAilsaXF1aWRpdHkgaXMgY3VycmVudGx5IHVuZGVyIG1haW50ZW5hbmNlLgkAAgECJGRBcHAgaXMgY3VycmVudGx5IHVuZGVyIG1haW50ZW5hbmNlLgFpAQxBY3RpdmF0ZVBvb2wEBmFzc2V0MQZhc3NldDIETmFtZQpjdXN0b21OYW1lBApuYW1lQXNzZXQxAwkAAAIFBmFzc2V0MQUFd2F2ZXMFBXdhdmVzCQEMZ2V0QXNzZXROYW1lAQkA2QQBBQZhc3NldDEECm5hbWVBc3NldDIDCQAAAgUGYXNzZXQyBQV3YXZlcwUFd2F2ZXMJAQxnZXRBc3NldE5hbWUBCQDZBAEFBmFzc2V0MgQEbmFtZQMFCmN1c3RvbU5hbWUFBE5hbWUJAKwCAgkArAICBQpuYW1lQXNzZXQxAgFfBQpuYW1lQXNzZXQyBANrZXkJAQp2YWxpZFBvb2xLAQkBAmtwAgUGYXNzZXQxBQZhc3NldDIDCQAAAggFAWkGY2FsbGVyCQEUZ2V0QXNzZXRJc3N1ZUFkZHJlc3MBCQDZBAEFBmFzc2V0MQMJAQIhPQIFA2tleQcEDWFzc2V0THBDcmVhdGUJAMIIBQUEbmFtZQkArAICCQCsAgIJAKwCAgIuTFAgYXNzZXQgZm9yIHBvb2wgbGlxdWlkaXR5IGluIEJpY29uIERFWCBwYWlyIAUGYXNzZXQxAgFfBQZhc3NldDIJAGgCAAEFAkQ4AAgGBAlpZEFzc2V0THAJALgIAQUNYXNzZXRMcENyZWF0ZQkAzAgCCQELU3RyaW5nRW50cnkCCQCsAgIFAWwJAQJrcAIFBmFzc2V0MQUGYXNzZXQyCQDYBAEFCWlkQXNzZXRMcAkAzAgCBQ1hc3NldExwQ3JlYXRlBQNuaWwJAAIBAipJbnZhbGlkIFBvb2wgS2V5LiBUcnkgaW52ZXJ0aW5nIHRoZSBhc3NldHMJAAIBAkJPbmx5IHRoZSBpc3N1ZXIgYWRkcmVzcyBvZiBhc3NldDEgaXRzZWxmIGNhbiBpbnZva2UgdGhpcyBmdW5jdGlvbi4BaQEPUmVtb3ZlTGlxdWlkaXR5AwZBc3NldDEGQXNzZXQyBkFtb3VudAQKY3VycmVudEtleQkA2AQBCAgFAWkGY2FsbGVyBWJ5dGVzBAVwb3dlcgkBEUBleHRyTmF0aXZlKDEwNTEpAgUFQWRtaW4FAmFjBAxwb29sQWN0aXZhdGUJARFAZXh0ck5hdGl2ZSgxMDUxKQIFBUFkbWluBQZwb29sQWMEB2FjV2F2ZXMJARFAZXh0ck5hdGl2ZSgxMDUxKQIFBUFkbWluBQZhV2F2ZXMEB3Bvb2xLZXkJAQJrcAIFBkFzc2V0MQUGQXNzZXQyBANrZXkJAQp2YWxpZFBvb2xLAQUHcG9vbEtleQQGYXNzZXQxAwkAAAIFBkFzc2V0MQUFd2F2ZXMDBQdhY1dhdmVzBQVXQVZFUwkAAgECNFRoZSBzbWFydCBjb250cmFjdCBkb2VzIG5vdCBjdXJyZW50bHkgc3VwcG9ydCBXYXZlcy4JANkEAQUGQXNzZXQxBAZhc3NldDIDCQAAAgUGQXNzZXQyBQV3YXZlcwMFB2FjV2F2ZXMFBVdBVkVTCQACAQI0VGhlIHNtYXJ0IGNvbnRyYWN0IGRvZXMgbm90IGN1cnJlbnRseSBzdXBwb3J0IFdhdmVzLgkA2QQBBQZBc3NldDIECWxwQXNzZXRJZAkBEUBleHRyTmF0aXZlKDEwNTMpAgUEdGhpcwkArAICBQFsCQECa3ACBQZBc3NldDEFBkFzc2V0MgQNY3VycmVudEFtb3VudAkBCWtwQWRkcmVzcwIFCmN1cnJlbnRLZXkJAQJrcAIFBkFzc2V0MQUGQXNzZXQyBA9hbW91bnRMcEJsb2NrZWQJAQlscEJsb2NrZWQCBQpjdXJyZW50S2V5BQdwb29sS2V5BAd0b3RhbExQCQEOdG90YWxBc3NldFBvb2wCBQlscEFzc2V0SWQGBA90b3RhbEFzc2V0MVBvb2wJAQ50b3RhbEFzc2V0UG9vbAIJAKwCAgkArAICCQECa3ACBQZBc3NldDEFBkFzc2V0MgIBXwUGQXNzZXQxBwQPdG90YWxBc3NldDJQb29sCQEOdG90YWxBc3NldFBvb2wCCQCsAgIJAKwCAgkBAmtwAgUGQXNzZXQxBQZBc3NldDICAV8FBkFzc2V0MgcDBQVwb3dlcgMJAQEhAQUMcG9vbEFjdGl2YXRlAwkBASEBCQAAAgUGQXNzZXQxBQZBc3NldDIDCQECIT0CBQNrZXkHAwkBASEBCQAAAgUNY3VycmVudEFtb3VudAAAAwkAZwIJAGUCBQ1jdXJyZW50QW1vdW50BQ9hbW91bnRMcEJsb2NrZWQFBkFtb3VudAMDCQBmAgUPdG90YWxBc3NldDFQb29sAAIGCQBmAgUPdG90YWxBc3NldDJQb29sAAIEDXJlY2VpdmVBc3NldDEJAGUCCQCgAwEJALoCAgkAuQICCQC8AgMJALYCAQgJAJEDAggFAWkIcGF5bWVudHMAAAZhbW91bnQJALYCAQUCRDgJALYCAQUHdG90YWxMUAkAtgIBBQ90b3RhbEFzc2V0MVBvb2wJALYCAQUCRDgAAQQNcmVjZWl2ZUFzc2V0MgkAZQIJAKADAQkAugICCQC5AgIJALwCAwkAtgIBCAkAkQMCCAUBaQhwYXltZW50cwAABmFtb3VudAkAtgIBBQJEOAkAtgIBBQd0b3RhbExQCQC2AgEFD3RvdGFsQXNzZXQyUG9vbAkAtgIBBQJEOAABBAphc3NldDFwb29sCQEGYXNzZXRQAgkBAmtwAgUGQXNzZXQxBQZBc3NldDIFBkFzc2V0MQQKYXNzZXQycG9vbAkBBmFzc2V0UAIJAQJrcAIFBkFzc2V0MQUGQXNzZXQyBQZBc3NldDIEE2N1cnJlbnRBbW91bnRBc3NldDEJAQZwb29sQUEDBQpjdXJyZW50S2V5CQECa3ACBQZBc3NldDEFBkFzc2V0MgUGQXNzZXQxBBNjdXJyZW50QW1vdW50QXNzZXQyCQEGcG9vbEFBAwUKY3VycmVudEtleQkBAmtwAgUGQXNzZXQxBQZBc3NldDIFBkFzc2V0MgQWbmV3Y3VycmVudEFtb3VudEFzc2V0MQkAZQIFE2N1cnJlbnRBbW91bnRBc3NldDEFDXJlY2VpdmVBc3NldDEEFm5ld2N1cnJlbnRBbW91bnRBc3NldDIJAGUCBRNjdXJyZW50QW1vdW50QXNzZXQyBQ1yZWNlaXZlQXNzZXQyBBBuZXdjdXJyZW50QW1vdW50CQBlAgUNY3VycmVudEFtb3VudAUGQW1vdW50BA1uZXdhc3NldDFwb29sCQBlAgUKYXNzZXQxcG9vbAUNcmVjZWl2ZUFzc2V0MQQNbmV3YXNzZXQycG9vbAkAZQIFCmFzc2V0MnBvb2wFDXJlY2VpdmVBc3NldDIDCQAAAggJAJEDAggFAWkIcGF5bWVudHMAAAdhc3NldElkCQDZBAEFCWxwQXNzZXRJZAMJAAACBQZBbW91bnQICQCRAwIIBQFpCHBheW1lbnRzAAAGYW1vdW50CQDMCAIJAQRCdXJuAgkA2QQBBQlscEFzc2V0SWQFBkFtb3VudAkAzAgCCQEOU2NyaXB0VHJhbnNmZXIDCQEHQWRkcmVzcwEICAUBaQZjYWxsZXIFYnl0ZXMFDXJlY2VpdmVBc3NldDEFBmFzc2V0MQkAzAgCCQEOU2NyaXB0VHJhbnNmZXIDCQEHQWRkcmVzcwEICAUBaQZjYWxsZXIFYnl0ZXMFDXJlY2VpdmVBc3NldDIFBmFzc2V0MgkAzAgCCQEMSW50ZWdlckVudHJ5AgkBBHBrZXkDBQZBc3NldDEFBkFzc2V0MgUKY3VycmVudEtleQUGaGVpZ2h0CQDMCAIJAQxJbnRlZ2VyRW50cnkCCQCsAgIJAKwCAgkArAICCQCsAgIFCmN1cnJlbnRLZXkCAV8JAQJrcAIFBkFzc2V0MQUGQXNzZXQyAgFfBQZBc3NldDEFFm5ld2N1cnJlbnRBbW91bnRBc3NldDEJAMwIAgkBDEludGVnZXJFbnRyeQIJAKwCAgkArAICCQCsAgIJAKwCAgUKY3VycmVudEtleQIBXwkBAmtwAgUGQXNzZXQxBQZBc3NldDICAV8FBkFzc2V0MgUWbmV3Y3VycmVudEFtb3VudEFzc2V0MgkAzAgCCQEMSW50ZWdlckVudHJ5AgkArAICCQCsAgIJAQJrcAIFBkFzc2V0MQUGQXNzZXQyAgFfBQpjdXJyZW50S2V5BRBuZXdjdXJyZW50QW1vdW50CQDMCAIJAQxJbnRlZ2VyRW50cnkCCQCsAgIJAKwCAgkBAmtwAgUGQXNzZXQxBQZBc3NldDICAV8FBkFzc2V0MQUNbmV3YXNzZXQxcG9vbAkAzAgCCQEMSW50ZWdlckVudHJ5AgkArAICCQCsAgIJAQJrcAIFBkFzc2V0MQUGQXNzZXQyAgFfBQZBc3NldDIFDW5ld2Fzc2V0MnBvb2wJAMwIAgkBDEludGVnZXJFbnRyeQIFBkFzc2V0MQkAZQIJARNnZXRBbW91bnRCbG9ja0Fzc2V0AQUGQXNzZXQxBQ1yZWNlaXZlQXNzZXQxCQDMCAIJAQxJbnRlZ2VyRW50cnkCBQZBc3NldDIJAGUCCQETZ2V0QW1vdW50QmxvY2tBc3NldAEFBkFzc2V0MgUNcmVjZWl2ZUFzc2V0MgkAzAgCCQEMSW50ZWdlckVudHJ5AgUJbHBBc3NldElkCQBlAgkBE2dldEFtb3VudEJsb2NrQXNzZXQBBQlscEFzc2V0SWQFBkFtb3VudAUDbmlsCQACAQkArAICAkhXaXRoZHJhd2FsIGFtb3VudCBsb3dlciB0aGFuIGFzc2V0IGxwIGFtb3VudC4gWW91ciBMcCBhbW91bnQgYXZhaWxhYmxlOiAJAKQDAQUGQW1vdW50CQACAQI5UmVxdWlyZXMgYW4gbHAgYXNzZXQgYXMgcGF5bWVudCB0byByZW1vdmUgbG9ja2VkIGFtb3VudHMuCQACAQIWUG9vbCBoYXMgbm8gbGlxdWlkaXR5LgkAAgEJAKwCAgJUQW1vdW50IHRvIGJlIHdpdGhkcmF3biBncmVhdGVyIHRoYW4gdGhlIGFtb3VudCBhdmFpbGFibGUgZm9yIHdpdGhkcmF3YWwuIEF2YWlsYWJsZTogCQCkAwEFBkFtb3VudAkAAgECK1lvdSBoYXZlIG5vIGxvY2tlZCB2YWx1ZXMg4oCL4oCLaW4gdGhlIHBvb2wJAAIBAhFJbnZhbGlkIFBvb2wgS2V5LgkAAgECIEFzc2V0MSBjYW5ub3QgYmUgZXF1YWwgdG8gQXNzZXQyCQACAQIpbGlxdWlkaXR5IGlzIGN1cnJlbnRseSB1bmRlciBtYWludGVuYW5jZS4JAAIBAiRkQXBwIGlzIGN1cnJlbnRseSB1bmRlciBtYWludGVuYW5jZS4BaQEFU3Rha2UDBHBvb2wGQXNzZXQxBkFzc2V0MgQFcG93ZXIJARFAZXh0ck5hdGl2ZSgxMDUxKQIFBUFkbWluBQJhYwQObGlxdWlkaXR5UG93ZXIJARFAZXh0ck5hdGl2ZSgxMDUxKQIFBUFkbWluBQtsaXF1aWRpdHlBYwQJbHBBc3NldElkAwUEcG9vbAkBEUBleHRyTmF0aXZlKDEwNTMpAgUFQWRtaW4JAKwCAgUBbAkBAmtwAgUGQXNzZXQxBQZBc3NldDIJAQlNYWluQXNzZXQABAVscEFJZAQHJG1hdGNoMAUJbHBBc3NldElkAwkAAQIFByRtYXRjaDACBlN0cmluZwQCeGkFByRtYXRjaDAJANkEAQUCeGkDCQABAgUHJG1hdGNoMAIKQnl0ZVZlY3RvcgQBeAUHJG1hdGNoMAUBeAkAAgECC01hdGNoIGVycm9yAwUFcG93ZXIDCQEBIQEFDmxpcXVpZGl0eVBvd2VyAwkBAiE9AggJAJEDAggFAWkIcGF5bWVudHMAAAdhc3NldElkBQVscEFJZAkAAgEJAKwCAgkArAICAiNJbnZhbGlkIGFzc2V0ISBLaW5kbHkgRGVwb3NpdCBPbmx5IAkA2AQBCQEJTWFpbkFzc2V0AAISIG9yIHZhbGlkIGFzc2V0IGxwAwkBASEBBQRwb29sBApjdXJyZW50S2V5CQDYBAEICAUBaQZjYWxsZXIFYnl0ZXMEDWN1cnJlbnRBbW91bnQEByRtYXRjaDAJAJoIAgUEdGhpcwUKY3VycmVudEtleQMJAAECBQckbWF0Y2gwAgNJbnQEAWEFByRtYXRjaDAFAWEAAAQBaAMJAAACBQ1jdXJyZW50QW1vdW50AAAFBmhlaWdodAkBC3ZhbHVlT3JFbHNlAgkBEUBleHRyTmF0aXZlKDEwNTApAgUEdGhpcwkArAICBQ5kZXBvc2l0X2hlaWdodAUKY3VycmVudEtleQUGaGVpZ2h0BAluZXdBbW91bnQJAGQCBQ1jdXJyZW50QW1vdW50CAkAkQMCCAUBaQhwYXltZW50cwAABmFtb3VudAQKdXNlcmFtb3VudAkBDEludGVnZXJFbnRyeQIFCmN1cnJlbnRLZXkFCW5ld0Ftb3VudAQRdXNlcmRlcG9zaXRoZWlnaHQJAQxJbnRlZ2VyRW50cnkCCQCsAgIFDmRlcG9zaXRfaGVpZ2h0BQpjdXJyZW50S2V5BQFoBBNwcmV2aW91c2xvY2tiYWxhbmNlBAckbWF0Y2gwCQCaCAIFBHRoaXMCFFRvdGFsX1Rva2Vuc19Mb2NrZWQ6AwkAAQIFByRtYXRjaDACA0ludAQBYQUHJG1hdGNoMAUBYQAABAp0b3RhbHRva2VuCQBkAgUTcHJldmlvdXNsb2NrYmFsYW5jZQgJAJEDAggFAWkIcGF5bWVudHMAAAZhbW91bnQEA1RMVgkBDEludGVnZXJFbnRyeQICFFRvdGFsX1Rva2Vuc19Mb2NrZWQ6BQp0b3RhbHRva2VuCQDMCAIFCnVzZXJhbW91bnQJAMwIAgURdXNlcmRlcG9zaXRoZWlnaHQJAMwIAgUDVExWBQNuaWwEB3Bvb2xLZXkJAQJrcAIFBkFzc2V0MQUGQXNzZXQyBANrZXkJAQp2YWxpZFBvb2xLAQUHcG9vbEtleQMJAQIhPQIFA2tleQcECmN1cnJlbnRLZXkJANgEAQgIBQFpBmNhbGxlcgVieXRlcwQNY3VycmVudEFtb3VudAQHJG1hdGNoMAkAmggCBQR0aGlzCQCsAgIJAKwCAgkArAICAglTVEFLRV9MUF8FCmN1cnJlbnRLZXkCAV8FB3Bvb2xLZXkDCQABAgUHJG1hdGNoMAIDSW50BAFhBQckbWF0Y2gwBQFhAAAEAWgDCQAAAgUNY3VycmVudEFtb3VudAAABQZoZWlnaHQJAQt2YWx1ZU9yRWxzZQIJARFAZXh0ck5hdGl2ZSgxMDUwKQIFBHRoaXMJAKwCAgkArAICCQCsAgIJAKwCAgUOZGVwb3NpdF9oZWlnaHQCAV8FCmN1cnJlbnRLZXkCAV8FB3Bvb2xLZXkFBmhlaWdodAQJbmV3QW1vdW50CQBkAgUNY3VycmVudEFtb3VudAgJAJEDAggFAWkIcGF5bWVudHMAAAZhbW91bnQECnVzZXJhbW91bnQJAQxJbnRlZ2VyRW50cnkCCQCsAgIJAKwCAgkArAICAglTVEFLRV9MUF8FCmN1cnJlbnRLZXkCAV8FB3Bvb2xLZXkFCW5ld0Ftb3VudAQRdXNlcmRlcG9zaXRoZWlnaHQJAQxJbnRlZ2VyRW50cnkCCQCsAgIJAKwCAgkArAICCQCsAgIFDmRlcG9zaXRfaGVpZ2h0AgFfBQpjdXJyZW50S2V5AgFfBQdwb29sS2V5BQZoZWlnaHQEE3ByZXZpb3VzbG9ja2JhbGFuY2UEByRtYXRjaDAJAJoIAgUEdGhpcwkArAICAhdUb3RhbF9Ub2tlbnNfTFBfTG9ja2VkXwUHcG9vbEtleQMJAAECBQckbWF0Y2gwAgNJbnQEAWEFByRtYXRjaDAFAWEAAAQKdG90YWx0b2tlbgkAZAIFE3ByZXZpb3VzbG9ja2JhbGFuY2UICQCRAwIIBQFpCHBheW1lbnRzAAAGYW1vdW50BANUTFYJAQxJbnRlZ2VyRW50cnkCCQCsAgICF1RvdGFsX1Rva2Vuc19MUF9Mb2NrZWRfBQdwb29sS2V5BQp0b3RhbHRva2VuCQDMCAIFCnVzZXJhbW91bnQJAMwIAgURdXNlcmRlcG9zaXRoZWlnaHQJAMwIAgUDVExWBQNuaWwJAAIBAhFJbnZhbGlkIFBvb2wga2V5LgkAAgECKWxpcXVpZGl0eSBpcyBjdXJyZW50bHkgdW5kZXIgbWFpbnRlbmFuY2UuCQACAQIkZEFwcCBpcyBjdXJyZW50bHkgdW5kZXIgbWFpbnRlbmFuY2UuAWkBB1Vuc3Rha2UEBHBvb2wGQXNzZXQxBkFzc2V0MgZhbW91bnQEBXBvd2VyCQERQGV4dHJOYXRpdmUoMTA1MSkCBQVBZG1pbgUCYWMEDmxpcXVpZGl0eVBvd2VyCQERQGV4dHJOYXRpdmUoMTA1MSkCBQVBZG1pbgULbGlxdWlkaXR5QWMEB3Bvb2xLZXkJAQJrcAIFBkFzc2V0MQUGQXNzZXQyBANwbXQJAJEDAggFAWkIcGF5bWVudHMAAAMFBXBvd2VyAwkBASEBBQ5saXF1aWRpdHlQb3dlcgQKY3VycmVudEtleQkA2AQBCAgFAWkGY2FsbGVyBWJ5dGVzBA1jdXJyZW50QW1vdW50BAckbWF0Y2gwAwUEcG9vbAkBEUBleHRyTmF0aXZlKDEwNTApAgUEdGhpcwkArAICCQCsAgIJAKwCAgIJU1RBS0VfTFBfBQpjdXJyZW50S2V5AgFfCQECa3ACBQZBc3NldDEFBkFzc2V0MgkBEUBleHRyTmF0aXZlKDEwNTApAgUEdGhpcwUKY3VycmVudEtleQMJAAECBQckbWF0Y2gwAgNJbnQEAWEFByRtYXRjaDAFAWEAAAQRc3dhcGhlaWdodGtleW5hbWUDBQRwb29sCQCsAgIJAKwCAgkArAICCQCsAgIFDmRlcG9zaXRfaGVpZ2h0AgFfBQpjdXJyZW50S2V5AgFfCQECa3ACBQZBc3NldDEFBkFzc2V0MgkArAICBQ5kZXBvc2l0X2hlaWdodAUKY3VycmVudEtleQQTcHJldmlvdXNsb2NrYmFsYW5jZQMFBHBvb2wJARFAZXh0ck5hdGl2ZSgxMDUwKQIFBHRoaXMJAKwCAgIXVG90YWxfVG9rZW5zX0xQX0xvY2tlZF8JAQJrcAIFBkFzc2V0MQUGQXNzZXQyCQERQGV4dHJOYXRpdmUoMTA1MCkCBQR0aGlzAhRUb3RhbF9Ub2tlbnNfTG9ja2VkOgQKdG90YWx0b2tlbgkAZQIFE3ByZXZpb3VzbG9ja2JhbGFuY2UFBmFtb3VudAQEZGlmZgkAZQIFBmhlaWdodAkBEUBleHRyTmF0aXZlKDEwNTApAgUEdGhpcwURc3dhcGhlaWdodGtleW5hbWUEA2JjZAkBEUBleHRyTmF0aXZlKDEwNTApAgUEdGhpcwUDYmNEBAZyZXdhcmQJAGgCCQBoAgUEZGlmZgUDYmNkBQJEOAQDb29kBAckbWF0Y2gwCQCfCAEJAKwCAgUHcG9vbEtleQIOX3JhdGVfZmVlX3N3YXADCQABAgUHJG1hdGNoMAIDSW50BAJpdwUHJG1hdGNoMAUCaXcAAAQEb2xkVAQHJG1hdGNoMAkAnwgBCQCsAgIFB3Bvb2xLZXkCDl9yYXRlX2ZlZV9zd2FwAwkAAQIFByRtYXRjaDACA0ludAQDaWRkBQckbWF0Y2gwCQBpAgUDaWRkCQBpAgUTcHJldmlvdXNsb2NrYmFsYW5jZQUGYW1vdW50AAAEB2ZlZUNhbGMDCQAAAgUGQXNzZXQxCQERQGV4dHJOYXRpdmUoMTA1MykCBQR0aGlzBQRtYWluCQBpAgUGcmV3YXJkCQBpAgUTcHJldmlvdXNsb2NrYmFsYW5jZQUGYW1vdW50BQRvbGRUAwkAZgIAAAUGYW1vdW50CQACAQMFBHBvb2wJAKwCAgkArAICCQCsAgIJAKwCAgIYQ2FuJ3Qgd2l0aGRyYXcgbmVnYXRpdmUgBQZBc3NldDECAS8FBkFzc2V0MgIHIGFtb3VudAIjQ2FuJ3Qgd2l0aGRyYXcgbmVnYXRpdmUgQXhBaSBhbW91bnQECW5ld0Ftb3VudAkAZQIFDWN1cnJlbnRBbW91bnQFBmFtb3VudAMJAGYCAAAFCW5ld0Ftb3VudAkAAgEDBQRwb29sCQCsAgIJAKwCAgkArAICCQCsAgICFE5vdCBlbm91Z2ggQXNzZXQgTHAgBQZBc3NldDECAS8FBkFzc2V0MgIIIGJhbGFuY2UCF05vdCBlbm91Z2ggQXhBaSBiYWxhbmNlCQDMCAIJAQxJbnRlZ2VyRW50cnkCAwUEcG9vbAkArAICCQCsAgIJAKwCAgIJU1RBS0VfTFBfBQpjdXJyZW50S2V5AgFfCQECa3ACBQZBc3NldDEFBkFzc2V0MgUKY3VycmVudEtleQUJbmV3QW1vdW50CQDMCAIJAQxJbnRlZ2VyRW50cnkCAwUEcG9vbAkArAICAhdUb3RhbF9Ub2tlbnNfTFBfTG9ja2VkXwkBAmtwAgUGQXNzZXQxBQZBc3NldDICFFRvdGFsX1Rva2Vuc19Mb2NrZWQ6BQp0b3RhbHRva2VuCQDMCAIJAQ5TY3JpcHRUcmFuc2ZlcgMIBQFpBmNhbGxlcgUGYW1vdW50AwUEcG9vbAkA2QQBCQERQGV4dHJOYXRpdmUoMTA1MykCBQR0aGlzCQCsAgIFAWwJAQJrcAIFBkFzc2V0MQUGQXNzZXQyCQEJTWFpbkFzc2V0AAkAzAgCCQEOU2NyaXB0VHJhbnNmZXIDCAUBaQZjYWxsZXIFB2ZlZUNhbGMJAQlNYWluQXNzZXQACQDMCAIJAQxJbnRlZ2VyRW50cnkCCQCsAgIFB3Bvb2xLZXkCDl9yYXRlX2ZlZV9zd2FwCQBlAgUDb29kBQRvbGRUBQNuaWwJAAIBAilsaXF1aWRpdHkgaXMgY3VycmVudGx5IHVuZGVyIG1haW50ZW5hbmNlLgkAAgECJGRBcHAgaXMgY3VycmVudGx5IHVuZGVyIG1haW50ZW5hbmNlLgFpAQlDcmVhdGVORlQCBG5hbWUEaXBmcwQEc2hhaAkA9wMBCQDZBAEFBGlwZnMJAMwIAgkAwggFBQRuYW1lCQCsAgIJAKwCAgkArAICCQCsAgICCXsnaXBmcyc6JwUEaXBmcwIOJywnU0hBLUhBU0gnOicJANgEAQUEc2hhaAICJ30AAQAABwUDbmlsAWkBBkJ1eU5GVAEFTkZUSWQEBXBvd2VyCQERQGV4dHJOYXRpdmUoMTA1MSkCBQVBZG1pbgUCYWMEBG5mdG0JARFAZXh0ck5hdGl2ZSgxMDUxKQIFBUFkbWluBQZuZmV0QWMEA3BtdAkAkQMCCAUBaQhwYXltZW50cwAABAVwcmljZQQHJG1hdGNoMAkBEUBleHRyTmF0aXZlKDEwNTApAgUEdGhpcwkArAICBQVORlRJZAIHX3Rvc2FsZQMJAAECBQckbWF0Y2gwAgNJbnQEAmlzBQckbWF0Y2gwBQJpcwAABAVhc3NldAQHJG1hdGNoMAkBEUBleHRyTmF0aXZlKDEwNTMpAgUEdGhpcwkArAICBQVORlRJZAIKX2Fzc2V0c2FsZQMJAAECBQckbWF0Y2gwAgZTdHJpbmcEAXMFByRtYXRjaDADAwkAAAIFAXMCBVdBVkVTBgkAAAIFAXMCBXdhdmVzBQVXQVZFUwkA2QQBBQFzCQACAQIXTkZUIG5vdCBsaXN0ZWQgZm9yIHNhbGUECm9sZEFkZHJlc3MEByRtYXRjaDAJARFAZXh0ck5hdGl2ZSgxMDUzKQIFBHRoaXMJAKwCAgUFTkZUSWQCCF9hZGRyZXNzAwkAAQIFByRtYXRjaDACBlN0cmluZwQBcwUHJG1hdGNoMAUBcwkAAgECF05GVCBub3QgbGlzdGVkIGZvciBzYWxlAwUFcG93ZXIDCQEBIQEFBG5mdG0DCQECIT0CBQVwcmljZQAAAwkAAAIFBXByaWNlCAUDcG10BmFtb3VudAMJAAACCAUDcG10B2Fzc2V0SWQFBWFzc2V0CQDMCAIJAQxJbnRlZ2VyRW50cnkCCQCsAgIFBU5GVElkAgdfdG9zYWxlAAAJAMwIAgkBDEJvb2xlYW5FbnRyeQIJAKwCAgUFTkZUSWQCBl9zYWxlZAYJAMwIAgkBC1N0cmluZ0VudHJ5AgkArAICBQVORlRJZAINX2FkZHJlc3NfU0FsZQIACQDMCAIJAQtTdHJpbmdFbnRyeQIJAKwCAgUFTkZUSWQCCl9hc3NldHNhbGUFBU5GVElkCQDMCAIJAQtTdHJpbmdFbnRyeQIJAKwCAgUFTkZUSWQCCF9hZGRyZXNzCQDYBAEICAUBaQZjYWxsZXIFYnl0ZXMJAMwIAgkBDlNjcmlwdFRyYW5zZmVyAwgFAWkGY2FsbGVyAAEJANkEAQUFTkZUSWQJAMwIAgkBDlNjcmlwdFRyYW5zZmVyAwkBB0FkZHJlc3MBCQDZBAEFCm9sZEFkZHJlc3MIBQNwbXQGYW1vdW50BQVhc3NldAUDbmlsCQACAQJKQXNzZXQgbm90IGVxdWFsIHRvIHRoZSBhc3NldCBkZWZpbmVkIGFzIGEgcGF5bWVudCBtZXRob2QgYnkgdGhlIE5GVCBpc3N1ZXIJAAIBAh1WYWx1ZSBub3QgZXF1YWwgdG8gc2FsZSB2YWx1ZQkAAgECGVRoaXMgTkZUIGlzIG5vdCBmb3Igc2FsZS4JAAIBAiNORlQgaXMgY3VycmVudGx5IHVuZGVyIG1haW50ZW5hbmNlLgkAAgECJGRBcHAgaXMgY3VycmVudGx5IHVuZGVyIG1haW50ZW5hbmNlLgFpAQxSZW1vdmVUb1NlbGwBBU5GVElkBAVwb3dlcgkBEUBleHRyTmF0aXZlKDEwNTEpAgUFQWRtaW4FAmFjBARuZnRtCQERQGV4dHJOYXRpdmUoMTA1MSkCBQVBZG1pbgUGbmZldEFjBANwbXQJAJEDAggFAWkIcGF5bWVudHMAAAMFBXBvd2VyAwkBASEBBQRuZnRtAwkAAAIJARRnZXRBc3NldElzc3VlQWRkcmVzcwEJANkEAQUFTkZUSWQIBQFpBmNhbGxlcgkAzAgCCQELRGVsZXRlRW50cnkBCQCsAgIFBU5GVElkAgdfdG9zYWxlCQDMCAIJAQtEZWxldGVFbnRyeQEJAKwCAgUFTkZUSWQCBl9zYWxlZAkAzAgCCQELRGVsZXRlRW50cnkBCQCsAgIFBU5GVElkAg1fYWRkcmVzc19TQWxlCQDMCAIJAQtEZWxldGVFbnRyeQEJAKwCAgUFTkZUSWQCCl9hc3NldHNhbGUJAMwIAgkBC0RlbGV0ZUVudHJ5AQkArAICBQVORlRJZAIIX2FkZHJlc3MFA25pbAkAAgECNk9ubHkgdGhlIG93bmVyIG9mIHRoZSBORlQgY2FuIHJlbW92ZSBpdCBmcm9tIHRoZSBsaXN0LgkAAgECI05GVCBpcyBjdXJyZW50bHkgdW5kZXIgbWFpbnRlbmFuY2UuCQACAQIkZEFwcCBpcyBjdXJyZW50bHkgdW5kZXIgbWFpbnRlbmFuY2UuAWkBB1NlbGxORlQCBVByaWNlBWFzc2V0BAVwb3dlcgkBEUBleHRyTmF0aXZlKDEwNTEpAgUFQWRtaW4FAmFjBARuZnRtCQERQGV4dHJOYXRpdmUoMTA1MSkCBQVBZG1pbgUGbmZldEFjBANwbXQJAJEDAggFAWkIcGF5bWVudHMAAAMFBXBvd2VyAwkBASEBBQRuZnRtAwMJAAACCAUDcG10BmFtb3VudAAABgkAAAIIBQNwbXQHYXNzZXRJZAUFV0FWRVMJAAIBAipSZXF1aXJlcyBORlQgYXMgdHJhbnNmZXIgcGF5bWVudCBmb3Igc2FsZS4JAMwIAgkBDEludGVnZXJFbnRyeQIJAKwCAgkBCGdldEFzc2V0AQgFA3BtdAdhc3NldElkAgdfdG9zYWxlBQVQcmljZQkAzAgCCQEMQm9vbGVhbkVudHJ5AgkArAICCQEIZ2V0QXNzZXQBCAUDcG10B2Fzc2V0SWQCBl9zYWxlZAcJAMwIAgkBC1N0cmluZ0VudHJ5AgkArAICCQEIZ2V0QXNzZXQBCAUDcG10B2Fzc2V0SWQCDV9hZGRyZXNzX1NBbGUCAAkAzAgCCQELU3RyaW5nRW50cnkCCQCsAgIJAQhnZXRBc3NldAEIBQNwbXQHYXNzZXRJZAIKX2Fzc2V0c2FsZQUFYXNzZXQJAMwIAgkBC1N0cmluZ0VudHJ5AgkArAICCQEIZ2V0QXNzZXQBCAUDcG10B2Fzc2V0SWQCCF9hZGRyZXNzCQDYBAEICAUBaQZjYWxsZXIFYnl0ZXMFA25pbAkAAgECI05GVCBpcyBjdXJyZW50bHkgdW5kZXIgbWFpbnRlbmFuY2UuCQACAQIkZEFwcCBpcyBjdXJyZW50bHkgdW5kZXIgbWFpbnRlbmFuY2UuAWkBEENyZWF0ZUNvbGxlY3Rpb24BDmNvbGxlY3Rpb25OYW1lBApjdXJyZW50S2V5CQDYBAEICAUBaQZjYWxsZXIFYnl0ZXMEAnRjBAckbWF0Y2gwCQERQGV4dHJOYXRpdmUoMTA1MCkCBQR0aGlzCQCsAgIFCmN1cnJlbnRLZXkCEV90b3RhbF9jb2xsZWN0aW9uAwkAAQIFByRtYXRjaDACA0ludAQCYWkFByRtYXRjaDAFAmFpAAADCQEVdmVyaWZpQ29sbGVjdGlvbkV4aXN0AQUOY29sbGVjdGlvbk5hbWUJAAIBAkNFcnJvcjogQSBjb2xsZWN0aW9uIHdpdGggdGhhdCBuYW1lIGFscmVhZHkgZXhpc3RzLCB0cnkgYW5vdGhlciBvbmUuCQDMCAIJAQtTdHJpbmdFbnRyeQIFDmNvbGxlY3Rpb25OYW1lBQpjdXJyZW50S2V5CQDMCAIJAQxJbnRlZ2VyRW50cnkCCQCsAgIFCmN1cnJlbnRLZXkCEV90b3RhbF9jb2xsZWN0aW9uCQBkAgUCdGMAAQUDbmlsAQJ0eAEGdmVyaWZ5AAkA9AMDCAUCdHgJYm9keUJ5dGVzCQCRAwIIBQJ0eAZwcm9vZnMAAAgFAnR4D3NlbmRlclB1YmxpY0tleeWepNc=", "height": 2392363, "applicationStatus": "succeeded", "spentComplexity": 0 } View: original | compacted Prev: F7jSwEifyEzaJafyMkayZcDsHjn7NvNhVETn8miV9QcV Next: 5Jn3wXhXpmoKce1n3yALwz44ayyoBV8CTdeR2FwUksof Diff:
OldNewDifferences
11 {-# STDLIB_VERSION 6 #-}
22 {-# SCRIPT_TYPE ACCOUNT #-}
33 {-# CONTENT_TYPE DAPP #-}
4-let a = "3PLVPoB6KsXCtqowhzWJStijNw7SjsPKsq6"
4+let a = "3N8UaqrCTjypGPWXSvFJVSLv23bfuiPoJAh"
55
66 let b = Address(fromBase58String(a))
77
Full:
OldNewDifferences
11 {-# STDLIB_VERSION 6 #-}
22 {-# SCRIPT_TYPE ACCOUNT #-}
33 {-# CONTENT_TYPE DAPP #-}
4-let a = "3PLVPoB6KsXCtqowhzWJStijNw7SjsPKsq6"
4+let a = "3N8UaqrCTjypGPWXSvFJVSLv23bfuiPoJAh"
55
66 let b = Address(fromBase58String(a))
77
88 let c = "WAVES"
99
1010 let d = "accept_waves"
1111
1212 let e = unit
1313
1414 let f = "activate_nft"
1515
1616 let g = "main_asset"
1717
1818 let h = "lp_asset_"
1919
2020 let i = "pool__"
2121
2222 let j = "STAKING_AMOUNT_"
2323
2424 let k = "LEASE_AMOUNT_"
2525
2626 let l = "ID_"
2727
2828 let m = "percentage_rate_fee_swap"
2929
3030 let n = "rate_fee_limit"
3131
3232 let o = "rate_fee_height"
3333
3434 let p = "Deposit_Height_Of_"
3535
3636 let q = "activate"
3737
3838 let r = "activate_pools"
3939
4040 let s = "activate_swap"
4141
4242 let t = "activate_liquidity"
4343
4444 let u = "block_distribuition"
4545
4646 let v = pow(10, 0, 8, 0, 0, HALFUP)
4747
4848 let w = "Total_Tokens_Locked_"
4949
5050 let x = "Smart contract admin has not yet been initialized."
5151
5252 func y (z) = value(assetInfo(z)).decimals
5353
5454
5555 func A (z,B) = pow(10, 0, (z - B), 0, 0, HALFUP)
5656
5757
5858 func C (z) = pow(10, 0, value(assetInfo(z)).decimals, 0, 0, HALFUP)
5959
6060
6161 func D (E,F,G) = if (if ((E == e))
6262 then (F == c)
6363 else false)
6464 then if (G)
6565 then true
6666 else throw("The smart contract does not currently support Waves.")
6767 else if ((E == fromBase58String(F)))
6868 then true
6969 else false
7070
7171
7272 func H (I) = {
7373 let J = I
7474 if ($isInstanceOf(J, "ByteVector"))
7575 then {
7676 let I = J
7777 toBase58String(I)
7878 }
7979 else throw("Requires NFT as payment for sale.")
8080 }
8181
8282
8383 func K (L,M) = (((i + L) + "_") + M)
8484
8585
8686 func N (O) = {
8787 let J = getInteger(this, O)
8888 if ($isInstanceOf(J, "Int"))
8989 then {
9090 let z = J
9191 z
9292 }
9393 else false
9494 }
9595
9696
9797 func P (Q,O) = {
9898 let J = getInteger(this, ((O + "_") + Q))
9999 if ($isInstanceOf(J, "Int"))
100100 then {
101101 let R = J
102102 R
103103 }
104104 else 0
105105 }
106106
107107
108108 func S (Q,O,T) = {
109109 let J = getInteger(this, ((((Q + "_") + O) + "_") + T))
110110 if ($isInstanceOf(J, "Int"))
111111 then {
112112 let I = J
113113 I
114114 }
115115 else 0
116116 }
117117
118118
119119 func U (O,T) = {
120120 let J = getInteger(this, ((O + "_") + T))
121121 if ($isInstanceOf(J, "Int"))
122122 then {
123123 let I = J
124124 I
125125 }
126126 else 1
127127 }
128128
129129
130130 func V (I) = {
131131 let J = getStringValue(this, I)
132132 if ($isInstanceOf(J, "String"))
133133 then {
134134 let B = J
135135 true
136136 }
137137 else false
138138 }
139139
140140
141141 func W (X) = {
142142 let J = assetInfo(X)
143143 if ($isInstanceOf(J, "Asset"))
144144 then {
145145 let T = J
146146 T.name
147147 }
148148 else throw("Can't find asset")
149149 }
150150
151151
152152 func Y (I) = {
153153 let J = assetInfo(I)
154154 if ($isInstanceOf(J, "Asset"))
155155 then {
156156 let T = J
157157 T.issuer
158158 }
159159 else throw("Can't find asset")
160160 }
161161
162162
163163 func Z (O,aa) = {
164164 let J = getInteger(this, O)
165165 if ($isInstanceOf(J, "Int"))
166166 then {
167167 let I = J
168168 I
169169 }
170170 else if (aa)
171171 then v
172172 else 1
173173 }
174174
175175
176176 func ab (ac,ad,ae) = {
177177 let af = if ((ad == c))
178178 then e
179179 else fromBase58String(ad)
180180 let ag = if ((ae == c))
181181 then e
182182 else fromBase58String(ae)
183183 if ((ac == af))
184184 then ag
185185 else af
186186 }
187187
188188
189189 func ah (ai,aj,Q) = (((p + K(ai, aj)) + "_") + Q)
190190
191191
192192 func ak (X) = {
193193 let J = getInteger(this, X)
194194 if ($isInstanceOf(J, "Int"))
195195 then {
196196 let z = J
197197 z
198198 }
199199 else 0
200200 }
201201
202202
203203 func al () = fromBase58String(getStringValue(b, g))
204204
205205
206206 func am () = getIntegerValue(b, m)
207207
208208
209209 func an (Q,O) = {
210210 let J = getInteger(this, ((("STAKE_LP_" + Q) + "_") + O))
211211 if ($isInstanceOf(J, "Int"))
212212 then {
213213 let I = J
214214 I
215215 }
216216 else 0
217217 }
218218
219219
220220 @Callable(z)
221221 func Swap (ai,aj) = {
222222 let ao = toBase58String(z.caller.bytes)
223223 let G = getBooleanValue(b, d)
224224 let ap = getBooleanValue(b, q)
225225 let aq = getBooleanValue(b, s)
226226 let ar = K(ai, aj)
227227 let O = N(ar)
228228 let L = z.payments[0].assetId
229229 let M = z.payments[1].assetId
230230 let as = getIntegerValue(this, (h + K(ai, aj)))
231231 let at = Z(((K(ai, aj) + "_") + ai), false)
232232 let au = Z(((K(ai, aj) + "_") + aj), false)
233233 let av = getIntegerValue(b, m)
234234 let aw = (toBigInt(z.payments[0].amount) * fraction(toBigInt(v), toBigInt(au), toBigInt(at)))
235235 let ax = toInt(((aw - ((aw / toBigInt(av)) * toBigInt(100))) / toBigInt(v)))
236236 let ay = (toBigInt(z.payments[0].amount) * fraction(toBigInt(v), toBigInt(at), toBigInt(au)))
237237 let az = toInt(((ay - ((ay / toBigInt(av)) * toBigInt(100))) / toBigInt(v)))
238238 let aA = if (if ((L == e))
239239 then (ai == c)
240240 else false)
241241 then ax
242242 else if ((L == fromBase58String(ai)))
243243 then ax
244244 else az
245245 let aB = if ((L == e))
246246 then c
247247 else if ((L == fromBase58String(ai)))
248248 then ai
249249 else aj
250250 let aC = if ((L == e))
251251 then c
252252 else if ((L == fromBase58String(ai)))
253253 then aj
254254 else ai
255255 let aD = ab(z.payments[0].assetId, ai, aj)
256256 let aE = (U(K(ai, aj), aC) - aA)
257257 let aF = (ak(aC) - aA)
258258 let aG = if ((0 > aE))
259259 then 0
260260 else aE
261261 let aH = if ((0 > aF))
262262 then 0
263263 else aF
264264 let aI = {
265265 let J = z.payments[0].assetId
266266 if ($isInstanceOf(J, "Unit"))
267267 then {
268268 let B = J
269269 pow(10, 0, 8, 0, 0, HALFUP)
270270 }
271271 else if ($isInstanceOf(J, "ByteVector"))
272272 then {
273273 let aJ = J
274274 pow(10, 0, value(assetInfo(aJ)).decimals, 0, 0, HALFUP)
275275 }
276276 else throw("Match error")
277277 }
278278 if (ap)
279279 then if (!(aq))
280280 then if (if (!((ai == aj)))
281281 then if (D(L, ai, G))
282282 then true
283283 else D(L, aj, G)
284284 else false)
285285 then if ((O != false))
286286 then if ((z.payments[1].assetId == al()))
287287 then if ((z.payments[1].amount == am()))
288288 then if (if ((at > 2))
289289 then true
290290 else (au > 2))
291291 then {
292292 let aK = {
293293 let J = getInteger(this, (ar + "_rate_fee_swap"))
294294 if ($isInstanceOf(J, "Int"))
295295 then {
296296 let B = J
297297 (B + am())
298298 }
299299 else am()
300300 }
301301 [ScriptTransfer(Address(z.caller.bytes), if ((0 > aA))
302302 then aI
303303 else aA, aD), IntegerEntry(aC, aH), IntegerEntry(((K(ai, aj) + "_") + aC), aG), IntegerEntry(((K(ai, aj) + "_") + aB), (U(K(ai, aj), aB) + z.payments[0].amount)), IntegerEntry(aB, (ak(aB) + z.payments[0].amount)), IntegerEntry(toBase58String(al()), (ak(toBase58String(al())) + z.payments[1].amount)), IntegerEntry((ar + "_rate_fee_swap"), aK)]
304304 }
305305 else throw("Pool has no liquidity.")
306306 else throw((("Swap denied! " + toString(am())) + " Bicon is required for the swap fee."))
307307 else throw("Invalid rate asset")
308308 else throw("Invalid Swap Key.")
309309 else throw("Asset1 cannot be equal to Asset2")
310310 else throw("Swap is currently under maintenance.")
311311 else throw("dApp is currently under maintenance.")
312312 }
313313
314314
315315
316316 @Callable(z)
317317 func AddLiquidity (ai,aj) = {
318318 let ap = getBooleanValue(b, q)
319319 let aL = getBooleanValue(b, r)
320320 let G = getBooleanValue(b, d)
321321 let O = N(K(ai, aj))
322322 let L = z.payments[0].assetId
323323 let M = z.payments[1].assetId
324324 let as = getStringValue(this, (h + K(ai, aj)))
325325 let aM = if ((2 > Z(((K(ai, aj) + "_") + ai), false)))
326326 then z.payments[0].amount
327327 else Z(((K(ai, aj) + "_") + ai), false)
328328 let aN = if ((2 > Z(((K(ai, aj) + "_") + ai), false)))
329329 then z.payments[1].amount
330330 else Z(((K(ai, aj) + "_") + aj), false)
331331 let aO = Z(as, true)
332332 let aP = ((aM + aN) / aO)
333333 let aQ = (z.payments[0].amount * (aN / aM))
334334 let aR = (z.payments[1].amount + ((z.payments[1].amount * 2) / 100))
335335 let aS = (z.payments[1].amount - ((z.payments[1].amount * 2) / 100))
336336 let aT = if (if (if ((z.payments[1].amount == aQ))
337337 then true
338338 else (aR > z.payments[1].amount))
339339 then true
340340 else (z.payments[1].amount > aS))
341341 then true
342342 else false
343343 if (ap)
344344 then if (!(aL))
345345 then if (if (if (!((L == M)))
346346 then D(L, ai, G)
347347 else false)
348348 then D(M, aj, G)
349349 else false)
350350 then if ((O != false))
351351 then if (aT)
352352 then {
353353 let ao = toBase58String(z.caller.bytes)
354354 let aU = P(ao, K(ai, aj))
355355 let aV = S(ao, K(ai, aj), ai)
356356 let aW = S(ao, K(ai, aj), aj)
357357 let aX = U(K(ai, aj), ai)
358358 let aY = U(K(ai, aj), aj)
359359 let aZ = if ((aM == z.payments[0].amount))
360360 then (1 * v)
361361 else toInt((((toBigInt(z.payments[0].amount) * toBigInt(v)) + (toBigInt(z.payments[1].amount) * toBigInt(v))) / (((toBigInt(aM) * toBigInt(v)) + (toBigInt(aN) * toBigInt(v))) / toBigInt(aO))))
362362 let ba = (aV + z.payments[0].amount)
363363 let bb = (aW + z.payments[1].amount)
364364 let bc = (aU + aZ)
365365 let bd = (aX + z.payments[0].amount)
366366 let be = (aY + z.payments[1].amount)
367367 [Reissue(fromBase58String(as), aZ, true), ScriptTransfer(Address(z.caller.bytes), aZ, fromBase58String(as)), IntegerEntry(ah(ai, aj, ao), height), IntegerEntry(((((ao + "_") + K(ai, aj)) + "_") + ai), ba), IntegerEntry(((((ao + "_") + K(ai, aj)) + "_") + aj), bb), IntegerEntry(((K(ai, aj) + "_") + ao), bc), IntegerEntry(((K(ai, aj) + "_") + ai), bd), IntegerEntry(((K(ai, aj) + "_") + aj), be), IntegerEntry(ai, (ak(ai) + z.payments[0].amount)), IntegerEntry(aj, (ak(aj) + z.payments[1].amount)), IntegerEntry(as, (ak(as) + aZ))]
368368 }
369369 else throw(((((("Payment of invalid 1/1 amounts to the Pool. Try Asset2: {value:" + toString((z.payments[0].amount * (aN / aM)))) + "} Received: ") + toString(z.payments[1].amount)) + " Validate: ") + toString(aT)))
370370 else throw("Invalid Pool Key.")
371371 else throw("Asset1 cannot be equal to Asset2")
372372 else throw("liquidity is currently under maintenance.")
373373 else throw("dApp is currently under maintenance.")
374374 }
375375
376376
377377
378378 @Callable(z)
379379 func ActivatePool (L,M,bf,bg) = {
380380 let bh = if ((L == c))
381381 then c
382382 else W(fromBase58String(L))
383383 let bi = if ((M == c))
384384 then c
385385 else W(fromBase58String(M))
386386 let bj = if (bg)
387387 then bf
388388 else ((bh + "_") + bi)
389389 let O = N(K(L, M))
390390 if ((z.caller == Y(fromBase58String(L))))
391391 then if ((O != false))
392392 then {
393393 let bk = Issue(bj, ((("LP asset for pool liquidity in Bicon DEX pair " + L) + "_") + M), (1 * v), 8, true)
394394 let bl = calculateAssetId(bk)
395395 [StringEntry((h + K(L, M)), toBase58String(bl)), bk]
396396 }
397397 else throw("Invalid Pool Key. Try inverting the assets")
398398 else throw("Only the issuer address of asset1 itself can invoke this function.")
399399 }
400400
401401
402402
403403 @Callable(z)
404404 func RemoveLiquidity (ai,aj,bm) = {
405405 let ao = toBase58String(z.caller.bytes)
406406 let ap = getBooleanValue(b, q)
407407 let aL = getBooleanValue(b, r)
408408 let G = getBooleanValue(b, d)
409409 let ar = K(ai, aj)
410410 let O = N(ar)
411411 let L = if ((ai == c))
412412 then if (G)
413413 then e
414414 else throw("The smart contract does not currently support Waves.")
415415 else fromBase58String(ai)
416416 let M = if ((aj == c))
417417 then if (G)
418418 then e
419419 else throw("The smart contract does not currently support Waves.")
420420 else fromBase58String(aj)
421421 let as = getStringValue(this, (h + K(ai, aj)))
422422 let aU = P(ao, K(ai, aj))
423423 let bn = an(ao, ar)
424424 let bo = Z(as, true)
425425 let aM = Z(((K(ai, aj) + "_") + ai), false)
426426 let aN = Z(((K(ai, aj) + "_") + aj), false)
427427 if (ap)
428428 then if (!(aL))
429429 then if (!((ai == aj)))
430430 then if ((O != false))
431431 then if (!((aU == 0)))
432432 then if (((aU - bn) >= bm))
433433 then if (if ((aM > 2))
434434 then true
435435 else (aN > 2))
436436 then {
437437 let bp = (toInt(((fraction(toBigInt(z.payments[0].amount), toBigInt(v), toBigInt(bo)) * toBigInt(aM)) / toBigInt(v))) - 1)
438438 let bq = (toInt(((fraction(toBigInt(z.payments[0].amount), toBigInt(v), toBigInt(bo)) * toBigInt(aN)) / toBigInt(v))) - 1)
439439 let aX = U(K(ai, aj), ai)
440440 let aY = U(K(ai, aj), aj)
441441 let aV = S(ao, K(ai, aj), ai)
442442 let aW = S(ao, K(ai, aj), aj)
443443 let ba = (aV - bp)
444444 let bb = (aW - bq)
445445 let bc = (aU - bm)
446446 let bd = (aX - bp)
447447 let be = (aY - bq)
448448 if ((z.payments[0].assetId == fromBase58String(as)))
449449 then if ((bm == z.payments[0].amount))
450450 then [Burn(fromBase58String(as), bm), ScriptTransfer(Address(z.caller.bytes), bp, L), ScriptTransfer(Address(z.caller.bytes), bq, M), IntegerEntry(ah(ai, aj, ao), height), IntegerEntry(((((ao + "_") + K(ai, aj)) + "_") + ai), ba), IntegerEntry(((((ao + "_") + K(ai, aj)) + "_") + aj), bb), IntegerEntry(((K(ai, aj) + "_") + ao), bc), IntegerEntry(((K(ai, aj) + "_") + ai), bd), IntegerEntry(((K(ai, aj) + "_") + aj), be), IntegerEntry(ai, (ak(ai) - bp)), IntegerEntry(aj, (ak(aj) - bq)), IntegerEntry(as, (ak(as) - bm))]
451451 else throw(("Withdrawal amount lower than asset lp amount. Your Lp amount available: " + toString(bm)))
452452 else throw("Requires an lp asset as payment to remove locked amounts.")
453453 }
454454 else throw("Pool has no liquidity.")
455455 else throw(("Amount to be withdrawn greater than the amount available for withdrawal. Available: " + toString(bm)))
456456 else throw("You have no locked values ​​in the pool")
457457 else throw("Invalid Pool Key.")
458458 else throw("Asset1 cannot be equal to Asset2")
459459 else throw("liquidity is currently under maintenance.")
460460 else throw("dApp is currently under maintenance.")
461461 }
462462
463463
464464
465465 @Callable(z)
466466 func Stake (br,ai,aj) = {
467467 let ap = getBooleanValue(b, q)
468468 let bs = getBooleanValue(b, t)
469469 let as = if (br)
470470 then getStringValue(b, (h + K(ai, aj)))
471471 else al()
472472 let bt = {
473473 let J = as
474474 if ($isInstanceOf(J, "String"))
475475 then {
476476 let bu = J
477477 fromBase58String(bu)
478478 }
479479 else if ($isInstanceOf(J, "ByteVector"))
480480 then {
481481 let aJ = J
482482 aJ
483483 }
484484 else throw("Match error")
485485 }
486486 if (ap)
487487 then if (!(bs))
488488 then if ((z.payments[0].assetId != bt))
489489 then throw((("Invalid asset! Kindly Deposit Only " + toBase58String(al())) + " or valid asset lp"))
490490 else if (!(br))
491491 then {
492492 let ao = toBase58String(z.caller.bytes)
493493 let aU = {
494494 let J = getInteger(this, ao)
495495 if ($isInstanceOf(J, "Int"))
496496 then {
497497 let I = J
498498 I
499499 }
500500 else 0
501501 }
502502 let bv = if ((aU == 0))
503503 then height
504504 else valueOrElse(getIntegerValue(this, (p + ao)), height)
505505 let bw = (aU + z.payments[0].amount)
506506 let bx = IntegerEntry(ao, bw)
507507 let by = IntegerEntry((p + ao), bv)
508508 let bz = {
509509 let J = getInteger(this, "Total_Tokens_Locked:")
510510 if ($isInstanceOf(J, "Int"))
511511 then {
512512 let I = J
513513 I
514514 }
515515 else 0
516516 }
517517 let bA = (bz + z.payments[0].amount)
518518 let bB = IntegerEntry("Total_Tokens_Locked:", bA)
519519 [bx, by, bB]
520520 }
521521 else {
522522 let ar = K(ai, aj)
523523 let O = N(ar)
524524 if ((O != false))
525525 then {
526526 let ao = toBase58String(z.caller.bytes)
527527 let aU = {
528528 let J = getInteger(this, ((("STAKE_LP_" + ao) + "_") + ar))
529529 if ($isInstanceOf(J, "Int"))
530530 then {
531531 let I = J
532532 I
533533 }
534534 else 0
535535 }
536536 let bv = if ((aU == 0))
537537 then height
538538 else valueOrElse(getIntegerValue(this, ((((p + "_") + ao) + "_") + ar)), height)
539539 let bw = (aU + z.payments[0].amount)
540540 let bx = IntegerEntry(((("STAKE_LP_" + ao) + "_") + ar), bw)
541541 let by = IntegerEntry(((((p + "_") + ao) + "_") + ar), height)
542542 let bz = {
543543 let J = getInteger(this, ("Total_Tokens_LP_Locked_" + ar))
544544 if ($isInstanceOf(J, "Int"))
545545 then {
546546 let I = J
547547 I
548548 }
549549 else 0
550550 }
551551 let bA = (bz + z.payments[0].amount)
552552 let bB = IntegerEntry(("Total_Tokens_LP_Locked_" + ar), bA)
553553 [bx, by, bB]
554554 }
555555 else throw("Invalid Pool key.")
556556 }
557557 else throw("liquidity is currently under maintenance.")
558558 else throw("dApp is currently under maintenance.")
559559 }
560560
561561
562562
563563 @Callable(z)
564564 func Unstake (br,ai,aj,bC) = {
565565 let ap = getBooleanValue(b, q)
566566 let bs = getBooleanValue(b, t)
567567 let ar = K(ai, aj)
568568 let bD = z.payments[0]
569569 if (ap)
570570 then if (!(bs))
571571 then {
572572 let ao = toBase58String(z.caller.bytes)
573573 let aU = {
574574 let J = if (br)
575575 then getIntegerValue(this, ((("STAKE_LP_" + ao) + "_") + K(ai, aj)))
576576 else getIntegerValue(this, ao)
577577 if ($isInstanceOf(J, "Int"))
578578 then {
579579 let I = J
580580 I
581581 }
582582 else 0
583583 }
584584 let bE = if (br)
585585 then ((((p + "_") + ao) + "_") + K(ai, aj))
586586 else (p + ao)
587587 let bz = if (br)
588588 then getIntegerValue(this, ("Total_Tokens_LP_Locked_" + K(ai, aj)))
589589 else getIntegerValue(this, "Total_Tokens_Locked:")
590590 let bA = (bz - bC)
591591 let bF = (height - getIntegerValue(this, bE))
592592 let bG = getIntegerValue(this, u)
593593 let bH = ((bF * bG) * v)
594594 let bI = {
595595 let J = getInteger((ar + "_rate_fee_swap"))
596596 if ($isInstanceOf(J, "Int"))
597597 then {
598598 let bJ = J
599599 bJ
600600 }
601601 else 0
602602 }
603603 let bK = {
604604 let J = getInteger((ar + "_rate_fee_swap"))
605605 if ($isInstanceOf(J, "Int"))
606606 then {
607607 let bL = J
608608 (bL / (bz / bC))
609609 }
610610 else 0
611611 }
612612 let bM = if ((ai == getStringValue(this, g)))
613613 then (bH / (bz / bC))
614614 else bK
615615 if ((0 > bC))
616616 then throw(if (br)
617617 then (((("Can't withdraw negative " + ai) + "/") + aj) + " amount")
618618 else "Can't withdraw negative AxAi amount")
619619 else {
620620 let bw = (aU - bC)
621621 if ((0 > bw))
622622 then throw(if (br)
623623 then (((("Not enough Asset Lp " + ai) + "/") + aj) + " balance")
624624 else "Not enough AxAi balance")
625625 else [IntegerEntry(if (br)
626626 then ((("STAKE_LP_" + ao) + "_") + K(ai, aj))
627627 else ao, bw), IntegerEntry(if (br)
628628 then ("Total_Tokens_LP_Locked_" + K(ai, aj))
629629 else "Total_Tokens_Locked:", bA), ScriptTransfer(z.caller, bC, if (br)
630630 then fromBase58String(getStringValue(this, (h + K(ai, aj))))
631631 else al()), ScriptTransfer(z.caller, bM, al()), IntegerEntry((ar + "_rate_fee_swap"), (bI - bK))]
632632 }
633633 }
634634 else throw("liquidity is currently under maintenance.")
635635 else throw("dApp is currently under maintenance.")
636636 }
637637
638638
639639
640640 @Callable(z)
641641 func CreateNFT (bj,bN) = {
642642 let bO = sha256(fromBase58String(bN))
643643 [Issue(bj, (((("{'ipfs':'" + bN) + "','SHA-HASH':'") + toBase58String(bO)) + "'}"), 1, 0, false)]
644644 }
645645
646646
647647
648648 @Callable(z)
649649 func BuyNFT (bP) = {
650650 let ap = getBooleanValue(b, q)
651651 let bQ = getBooleanValue(b, f)
652652 let bD = z.payments[0]
653653 let bR = {
654654 let J = getIntegerValue(this, (bP + "_tosale"))
655655 if ($isInstanceOf(J, "Int"))
656656 then {
657657 let bS = J
658658 bS
659659 }
660660 else 0
661661 }
662662 let T = {
663663 let J = getStringValue(this, (bP + "_assetsale"))
664664 if ($isInstanceOf(J, "String"))
665665 then {
666666 let bT = J
667667 if (if ((bT == "WAVES"))
668668 then true
669669 else (bT == "waves"))
670670 then e
671671 else fromBase58String(bT)
672672 }
673673 else throw("NFT not listed for sale")
674674 }
675675 let bU = {
676676 let J = getStringValue(this, (bP + "_address"))
677677 if ($isInstanceOf(J, "String"))
678678 then {
679679 let bT = J
680680 bT
681681 }
682682 else throw("NFT not listed for sale")
683683 }
684684 if (ap)
685685 then if (!(bQ))
686686 then if ((bR != 0))
687687 then if ((bR == bD.amount))
688688 then if ((bD.assetId == T))
689689 then [IntegerEntry((bP + "_tosale"), 0), BooleanEntry((bP + "_saled"), true), StringEntry((bP + "_address_SAle"), ""), StringEntry((bP + "_assetsale"), bP), StringEntry((bP + "_address"), toBase58String(z.caller.bytes)), ScriptTransfer(z.caller, 1, fromBase58String(bP)), ScriptTransfer(Address(fromBase58String(bU)), bD.amount, T)]
690690 else throw("Asset not equal to the asset defined as a payment method by the NFT issuer")
691691 else throw("Value not equal to sale value")
692692 else throw("This NFT is not for sale.")
693693 else throw("NFT is currently under maintenance.")
694694 else throw("dApp is currently under maintenance.")
695695 }
696696
697697
698698
699699 @Callable(z)
700700 func RemoveToSell (bP) = {
701701 let ap = getBooleanValue(b, q)
702702 let bQ = getBooleanValue(b, f)
703703 let bD = z.payments[0]
704704 if (ap)
705705 then if (!(bQ))
706706 then if ((Y(fromBase58String(bP)) == z.caller))
707707 then [DeleteEntry((bP + "_tosale")), DeleteEntry((bP + "_saled")), DeleteEntry((bP + "_address_SAle")), DeleteEntry((bP + "_assetsale")), DeleteEntry((bP + "_address"))]
708708 else throw("Only the owner of the NFT can remove it from the list.")
709709 else throw("NFT is currently under maintenance.")
710710 else throw("dApp is currently under maintenance.")
711711 }
712712
713713
714714
715715 @Callable(z)
716716 func SellNFT (bV,T) = {
717717 let ap = getBooleanValue(b, q)
718718 let bQ = getBooleanValue(b, f)
719719 let bD = z.payments[0]
720720 if (ap)
721721 then if (!(bQ))
722722 then if (if ((bD.amount == 0))
723723 then true
724724 else (bD.assetId == e))
725725 then throw("Requires NFT as transfer payment for sale.")
726726 else [IntegerEntry((H(bD.assetId) + "_tosale"), bV), BooleanEntry((H(bD.assetId) + "_saled"), false), StringEntry((H(bD.assetId) + "_address_SAle"), ""), StringEntry((H(bD.assetId) + "_assetsale"), T), StringEntry((H(bD.assetId) + "_address"), toBase58String(z.caller.bytes))]
727727 else throw("NFT is currently under maintenance.")
728728 else throw("dApp is currently under maintenance.")
729729 }
730730
731731
732732
733733 @Callable(z)
734734 func CreateCollection (bW) = {
735735 let ao = toBase58String(z.caller.bytes)
736736 let bX = {
737737 let J = getIntegerValue(this, (ao + "_total_collection"))
738738 if ($isInstanceOf(J, "Int"))
739739 then {
740740 let bY = J
741741 bY
742742 }
743743 else 0
744744 }
745745 if (V(bW))
746746 then throw("Error: A collection with that name already exists, try another one.")
747747 else [StringEntry(bW, ao), IntegerEntry((ao + "_total_collection"), (bX + 1))]
748748 }
749749
750750
751751 @Verifier(bZ)
752752 func ca () = sigVerify(bZ.bodyBytes, bZ.proofs[0], bZ.senderPublicKey)
753753

github/deemru/w8io/03bedc9 
80.71 ms