tx · GG5QmcoPMci7LsaazkmLsZNNrfEcXUEqWWyDWMDVRScU

3N8y4wxX3JC4TdrCJBXX16SjWf6X256hrep:  -0.03100000 Waves

2023.04.30 01:06 [2556433] smart account 3N8y4wxX3JC4TdrCJBXX16SjWf6X256hrep > SELF 0.00000000 Waves

{ "type": 13, "id": "GG5QmcoPMci7LsaazkmLsZNNrfEcXUEqWWyDWMDVRScU", "fee": 3100000, "feeAssetId": null, "timestamp": 1682806086798, "version": 2, "chainId": 84, "sender": "3N8y4wxX3JC4TdrCJBXX16SjWf6X256hrep", "senderPublicKey": "7v5L7QkXxfkirALdyqmox38QCsa9jtfAtgUfHTh34eWq", "proofs": [ "3xWxnSysykXNd6L7w6a4YpVFQvN8ysV57s4dycQaWyQLvGYQweSSacp2cytSynCXdiUZsS318wo3CqzTePCNxqcS" ], "script": "base64:BgIxCAISAwoBCBIECgIRERIECgIRERIDCgEREgUKAwEBARIDCgEIEgQKAggIEgUKAwgICEsAA1NFUAICX18ABU1VTFQ2AMCEPQAFTVVMVDgAgMLXLwAGTVVMVDEwAIDIr6AlAAVjaGFpbgkAyQECCQDKAQIIBQR0aGlzBWJ5dGVzAAEAAQALdXNkdEFzc2V0SWQEByRtYXRjaDAFBWNoYWluAwkAAAIBAVcFByRtYXRjaDABIITaerIIAz9O0bvKju6Lk7zJgt0LXfoHlqjUI/moD/+5AwkAAAIBAVQFByRtYXRjaDABIFWx2J9yh4Lv5eNbjawFq2XemkOhLxa7BfMat4el8cUYCQACAQINVW5rbm93biBjaGFpbgAVZGVmYXVsdFJlc3RBZGRyZXNzU3RyBAckbWF0Y2gwBQVjaGFpbgMJAAACAQFXBQckbWF0Y2gwAiMzUFFDdXZGYnZoNExrUFVucm5VMXozam5iQTFwOW0zV05odgMJAAACAQFUBQckbWF0Y2gwAiMzTXVta0dHenRDS0FYcFdEcXhrZGRvZnFYU1VicVFrdlNKeQkAAgECDVVua25vd24gY2hhaW4BD2dldFN0cmluZ09yRmFpbAIHYWRkcmVzcwNrZXkJARN2YWx1ZU9yRXJyb3JNZXNzYWdlAgkAnQgCBQdhZGRyZXNzBQNrZXkJALkJAgkAzAgCAgptYW5kYXRvcnkgCQDMCAIJAKUIAQUHYWRkcmVzcwkAzAgCAgEuCQDMCAIFA2tleQkAzAgCAg8gaXMgbm90IGRlZmluZWQFA25pbAIAAQxnZXRJbnRPckVsc2UCA2tleQpkZWZhdWx0VmFsCQELdmFsdWVPckVsc2UCCQCaCAIFBHRoaXMFA2tleQUKZGVmYXVsdFZhbAARSWR4Q2ZnU3Rha2luZ0RhcHAAAQARSWR4Q2ZnRWNvbm9teURhcHAAAgAUSWR4Q2ZnR292ZXJuYW5jZURhcHAAAwEKa2V5UmVzdENmZwACDiVzX19yZXN0Q29uZmlnAQ5rZXlSZXN0QWRkcmVzcwACDCVzX19yZXN0QWRkcgERcmVhZFJlc3RDZmdPckZhaWwBBHJlc3QJALwJAgkBD2dldFN0cmluZ09yRmFpbAIFBHJlc3QJAQprZXlSZXN0Q2ZnAAUDU0VQARhnZXRDb250cmFjdEFkZHJlc3NPckZhaWwCB3Jlc3RDZmcDaWR4CQETdmFsdWVPckVycm9yTWVzc2FnZQIJAKYIAQkAkQMCBQdyZXN0Q2ZnBQNpZHgJAKwCAgIqUmVzdCBjZmcgZG9lc24ndCBjb250YWluIGFkZHJlc3MgYXQgaW5kZXggCQCkAwEFA2lkeAAMcmVzdENvbnRyYWN0CQERQGV4dHJOYXRpdmUoMTA2MikBCQELdmFsdWVPckVsc2UCCQCdCAIFBHRoaXMJAQ5rZXlSZXN0QWRkcmVzcwAFFWRlZmF1bHRSZXN0QWRkcmVzc1N0cgAHcmVzdENmZwkBEXJlYWRSZXN0Q2ZnT3JGYWlsAQUMcmVzdENvbnRyYWN0AA9zdGFraW5nQ29udHJhY3QJARhnZXRDb250cmFjdEFkZHJlc3NPckZhaWwCBQdyZXN0Q2ZnBRFJZHhDZmdTdGFraW5nRGFwcAAPREVGQVVMVExPQ0FUSU9OAg9BZnJpY2FfRl9BZnJpY2EABk5VTVJFUwAGABNGQUNUT1JZTUFYV0FSRUhPVVNFAIDIr6AlABBSRVNPVVJDRVBSSUNFTUlOANW1AgAKTUlOUEFZTUVOVACQTgAOU0VMTE1VTFRJUExJRVIAyAEADUJVWU1VTFRJUExJRVIArAIACkxBTkRQUkVGSVgCBExBTkQACkRVQ0tQUkVGSVgCBERVQ0sADFdITVVMVElQTElFUgCAyK+gJQAKQVVDVElPTkZFRQCQTgAIcmVzVHlwZXMJAMwIAgIDT2lsCQDMCAICA09yZQkAzAgCAgRXb29kCQDMCAICBFNhbmQJAMwIAgIEQ2xheQkAzAgCAgdPcmdhbmljBQNuaWwACG1hdFR5cGVzCQDMCAICBEZ1ZWwJAMwIAgIFTWV0YWwJAMwIAgIFUGxhbmsJAMwIAgIFR2xhc3MJAMwIAgIHUGxhc3RpYwkAzAgCAgdQcm90ZWluBQNuaWwACXByb2RUeXBlcwkAzAgCAg1GaXJzdCBBaWQgS2l0CQDMCAICCEJhY2twYWNrCQDMCAICC0Zvb2QgUmF0aW9uCQDMCAICCEpldCBQYWNrCQDMCAICBlNoaWVsZAUDbmlsAApjb250aW5lbnRzCQDMCAICCEFtZXJpY2FzCQDMCAICBkV1cm9wZQkAzAgCAgRBc2lhCQDMCAICBkFmcmljYQkAzAgCAgdPY2VhbmlhBQNuaWwAEHByb2R1Y3Rpb25NYXRyaXgJAMwIAgIQMV8xXzFfMl8yXzVfMV8xMAkAzAgCAhEyXzVfNV8yXzdfNV8yXzEwMAkAzAgCAhAxXzFfMV8yXzJfNV8xXzEwCQDMCAICETlfOV8xXzVfNV8xXzVfMTAwCQDMCAICEDJfMl8xXzJfMl8yXzFfMTAFA25pbAAPY29udElkeEFtZXJpY2FzAAAADWNvbnRJZHhFdXJvcGUAAQALY29udElkeEFzaWEAAgANY29udElkeEFmcmljYQADAA5jb250SWR4T2NlYW5pYQAEAR5rZXlGYWN0b3J5V2FyZWhvdXNlQnlJZEFuZFR5cGUCCWZhY3RvcnlJZAdyZXNUeXBlCQCsAgIJAKwCAgkArAICAhtmYWN0b3J5V2hCeUNvbnRpbmVudEFuZFJlc18FCWZhY3RvcnlJZAIBXwkApAMBBQdyZXNUeXBlAQ5rZXlPcmRlckJ5TGFuZAELbGFuZEFzc2V0SWQJAKwCAgIKbGFuZE9yZGVyXwULbGFuZEFzc2V0SWQBFGtleVN0YWtlZER1Y2tCeU93bmVyAQlvd25lckFkZHIJAKwCAgISc3Rha2VkRHVja0J5T3duZXJfBQlvd25lckFkZHIBEWtleUJhY2twYWNrQnlEdWNrAQtkdWNrQXNzZXRJZAkArAICAgliYWNrUGFja18FC2R1Y2tBc3NldElkAQ9rZXlEdWNrTG9jYXRpb24BC2R1Y2tBc3NldElkCQCsAgICDWR1Y2tMb2NhdGlvbl8FC2R1Y2tBc3NldElkAQprZXlCbG9ja2VkAAIQY29udHJhY3RzQmxvY2tlZAEVa2V5TGFuZEFzc2V0SWRUb093bmVyAQdhc3NldElkCQCsAgICCW5mdE93bmVyXwUHYXNzZXRJZAEWa2V5U3Rha2VkVGltZUJ5QXNzZXRJZAEHYXNzZXRJZAkArAICAgtzdGFrZWRUaW1lXwUHYXNzZXRJZAAPbG9jSWR4Q29udGluZW50AAAACmxvY0lkeFR5cGUAAQAIbG9jSWR4SWQAAgAKYnBJZHhMZXZlbAAAAAhicElkeFJlcwABAAhicElkeE1hdAACAAlicElkeFByb2QAAwAId2hJZHhWb2wAAAAId2hJZHhSZXMAAQAId2hJZHhNYXQAAgAJd2hJZHhQcm9kAAMADndoSWR4TG9ja2VkVm9sAAQACW9yZElkeFJlcwAAAAlvcmRJZHhNYXQAAQAKb3JkSWR4UHJvZAACAQhhc1N0cmluZwEBdgQHJG1hdGNoMAUBdgMJAAECBQckbWF0Y2gwAgZTdHJpbmcEAXMFByRtYXRjaDAFAXMJAAIBAhhmYWlsIHRvIGNhc3QgaW50byBTdHJpbmcBCGdldE9yZGVyAQZvcmRLZXkEAXAJALUJAgkBC3ZhbHVlT3JFbHNlAgkAoggBBQZvcmRLZXkCMDBAMF8wQDBfMEAwXzBAMF8wQDBfMEAwOjBAMF8wQDBfMEAwXzBAMF8wQDBfMEAwOgIBOgkAzAgCAwkAAAIJAJADAQkAtQkCCQCRAwIFAXAFCW9yZElkeFJlcwIBXwUGTlVNUkVTCQCRAwIFAXAFCW9yZElkeFJlcwIXMEAwXzBAMF8wQDBfMEAwXzBAMF8wQDAJAMwIAgMJAAACCQCQAwEJALUJAgkAkQMCBQFwBQlvcmRJZHhNYXQCAV8FBk5VTVJFUwkAkQMCBQFwBQlvcmRJZHhNYXQCFzBAMF8wQDBfMEAwXzBAMF8wQDBfMEAwCQDMCAIJAJEDAgUBcAUKb3JkSWR4UHJvZAUDbmlsARJnZXRXYXJlaG91c2VWb2x1bWUBCXZvbFByZWZpeAQFcGFydHMJALUJAgUJdm9sUHJlZml4AgFfCQBoAgkAaAIFDFdITVVMVElQTElFUgkAZAIJAQ1wYXJzZUludFZhbHVlAQkAkQMCBQVwYXJ0cwABAAEJAQ1wYXJzZUludFZhbHVlAQkAkQMCBQVwYXJ0cwAAARlnZXRXYXJlaG91c2VDdXJyUmVzVm9sdW1lAQljdXJyZW50V2gKAQNzdW0CA2FjYwRpdGVtCQBkAgUDYWNjCQENcGFyc2VJbnRWYWx1ZQEFBGl0ZW0KAAIkbAkAtQkCCQCRAwIFCWN1cnJlbnRXaAUId2hJZHhSZXMCAV8KAAIkcwkAkAMBBQIkbAoABSRhY2MwAAAKAQUkZjBfMQICJGECJGkDCQBnAgUCJGkFAiRzBQIkYQkBA3N1bQIFAiRhCQCRAwIFAiRsBQIkaQoBBSRmMF8yAgIkYQIkaQMJAGcCBQIkaQUCJHMFAiRhCQACAQITTGlzdCBzaXplIGV4Y2VlZHMgNgkBBSRmMF8y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YXhQcmljZSA9IAkApAMBBQhtYXhQcmljZQIDLCAoBQVsb2NJZAICLCAJAJEDAgUIbWF0VHlwZXMFB21hdFR5cGUCASkJAJUKAwkBDEludGVnZXJFbnRyeQIFBXdoS2V5CQBlAgUCdzAFAW0FCXVzZHRTcGVudAUBbQELZ2V0QmFja3BhY2sBBWJwS2V5BAFwCQC1CQIJAQt2YWx1ZU9yRWxzZQIJAJ0IAgUPc3Rha2luZ0NvbnRyYWN0BQVicEtleQIaMDowXzBfMF8wXzBfMDowXzBfMF8wXzBfMDoCAToJAMwIAgkApAMBCQELdmFsdWVPckVsc2UCCQC2CQEJAJEDAgUBcAUKYnBJZHhMZXZlbAAACQDMCAIDCQAAAgkAkAMBCQC1CQIJAJEDAgUBcAUIYnBJZHhSZXMCAV8FBk5VTVJFUwkAkQMCBQFwBQhicElkeFJlcwILMF8wXzBfMF8wXzAJAMwIAgMJAAACCQCQAwEJALUJAgkAkQMCBQFwBQhicElkeE1hdAIBXwUGTlVNUkVTCQCRAwIFAXAFCGJwSWR4TWF0AgswXzBfMF8wXzBfMAkAzAgCCQCRAwIFAXAFCWJwSWR4UHJvZAUDbmlsAQxjaGVja0Jsb2NrZWQAAwkBC3ZhbHVlT3JFbHNlAgkAmwgCBQ9zdGFraW5nQ29udHJhY3QJAQprZXlCbG9ja2VkAAcJAAIBAh9Db250cmFjdHMgYXJlIHVuZGVyIG1haW50ZW5hbmNlBQR1bml0AQlzZXRDb21tb24CA2FjYwRpdGVtBAFqCAUDYWNjAl8xBAlpdGVtUGFydHMJALUJAgUEaXRlbQIBQAMJAQIhPQIJAJADAQUJaXRlbVBhcnRzAAIJAAIBAi5JbmNvcnJlY3Qgb3JkZXIgZm9ybWF0LCBzaG91bGQgYmUgYW1vdW50QHByaWNlBAhuZXdPcmRBbQkBDXBhcnNlSW50VmFsdWUBCQCRAwIFCWl0ZW1QYXJ0cwAABAhuZXdPcmRQcgkBDXBhcnNlSW50VmFsdWUBCQCRAwIFCWl0ZW1QYXJ0cwABBAluZXdPcmRVc2QJAGsDBQhuZXdPcmRBbQUIbmV3T3JkUHIFBU1VTFQ4BAN3aHAJAQ1wYXJzZUludFZhbHVlAQkAkQMCCAUDYWNjAl81BQFqBAtjdXJPcmRQYXJ0cwkAtQkCCQCRAwIIBQNhY2MCXzYFAWoCAUAECGN1ck9yZEFtCQENcGFyc2VJbnRWYWx1ZQEJAJEDAgULY3VyT3JkUGFydHMAAAQIY3VyT3JkUHIJAQ1wYXJzZUludFZhbHVlAQkAkQMCBQtjdXJPcmRQYXJ0cwABAwkAZgIAAAUIY3VyT3JkUHIJAAIBAhdQcmljZSBjYW4ndCBiZSBuZWdhdGl2ZQQJY3VyT3JkVXNkCQBrAwUIY3VyT3JkQW0FCGN1ck9yZFByBQVNVUxUOAMJAAACBQhuZXdPcmRBbQAAAwkAZgIFCGN1ck9yZEFtAAAJAJgKBgkAZAIFAWoAAQkAzQgCCAUDYWNjAl8yCQCkAwEFA3docAkAZQIIBQNhY2MCXzMFCGN1ck9yZEFtCQBlAggFA2FjYwJfNAUJY3VyT3JkVXNkCAUDYWNjAl81CAUDYWNjAl82CQCYCgYJAGQCBQFqAAEJAM0IAggFA2FjYwJfMgkApAMBCQBlAgUDd2hwBQhjdXJPcmRBbQkAZAIIBQNhY2MCXzMFCGN1ck9yZEFtCAUDYWNjAl80CAUDYWNjAl81CAUDYWNjAl82AwkAZgIFCG5ld09yZEFtAAADCQBmAgAABQhjdXJPcmRBbQQGYW1EaWZmCQBkAgUIbmV3T3JkQW0FCGN1ck9yZEFtCQCYCgYJAGQCBQFqAAEJAM0IAggFA2FjYwJfMgkApAMBCQBlAgUDd2hwBQhjdXJPcmRBbQkAZAIIBQNhY2MCXzMFBmFtRGlmZgkAZAIIBQNhY2MCXzQFCW5ld09yZFVzZAgFA2FjYwJfNQgFA2FjYwJfNgkAmAoGCQBkAgUBagABCQDNCAIIBQNhY2MCXzIJAKQDAQUDd2hwCQBlAgkAZAIIBQNhY2MCXzMFCG5ld09yZEFtBQhjdXJPcmRBbQkAZQIJAGQCCAUDYWNjAl80BQluZXdPcmRVc2QFCWN1ck9yZFVzZAgFA2FjYwJfNQgFA2FjYwJfNgMJAGYCAAAFCGN1ck9yZEFtBAZhbURpZmYJAGUCBQhjdXJPcmRBbQUIbmV3T3JkQW0DCQBmAgAACQBlAgUDd2hwBQZhbURpZmYJAAIBCQCsAgIJAKwCAgkArAICCQCsAgICEEF0dGVtcHQgdG8gdGFrZSAJAKQDAQUGYW1EaWZmAhogZnJvbSB3YXJlaG91c2UsIGJ1dCBvbmx5IAkApAMBBQN3aHACCiBhdmFpbGFibGUJAJgKBgkAZAIFAWoAAQkAzQgCCAUDYWNjAl8yCQCkAwEJAGUCBQN3aHAFBmFtRGlmZgkAZAIIBQNhY2MCXzMFBmFtRGlmZggFA2FjYwJfNAgFA2FjYwJfNQgFA2FjYwJfNgMJAGYCAAAJAGQCBQN3aHAFCG5ld09yZEFtCQACAQkArAICCQCsAgIJAKwCAgkArAICAhBBdHRlbXB0IHRvIHRha2UgCQCkAwEJAQEtAQUIbmV3T3JkQW0CGiBmcm9tIHdhcmVob3VzZSwgYnV0IG9ubHkgCQCkAwEFA3docAIKIGF2YWlsYWJsZQkAmAoGCQBkAgUBagABCQDNCAIIBQNhY2MCXzIJAKQDAQkAZAIFA3docAUIbmV3T3JkQW0JAGUCCQBlAggFA2FjYwJfMwUIbmV3T3JkQW0FCGN1ck9yZEFtCQBlAggFA2FjYwJfNAUJY3VyT3JkVXNkCAUDYWNjAl81CAUDYWNjAl82AQxhY2NlcHRDb21tb24CA2FjYw1icE9yZFByb2RJdGVtBAFqCAUDYWNjAl83BA5icE9yZFByb2RQYXJ0cwkAtQkCBQ1icE9yZFByb2RJdGVtAgFAAwkBAiE9AgkAkAMBBQ5icE9yZFByb2RQYXJ0cwACCQACAQIuSW5jb3JyZWN0IG9yZGVyIGZvcm1hdCwgc2hvdWxkIGJlIGFtb3VudEBwcmljZQQHYnBPcmRBbQkBDXBhcnNlSW50VmFsdWUBCQCRAwIFDmJwT3JkUHJvZFBhcnRzAAAEB2JwT3JkUHIJAQ1wYXJzZUludFZhbHVlAQkAkQMCBQ5icE9yZFByb2RQYXJ0cwABAwkAZgIAAAUHYnBPcmRQcgkAAgECF1ByaWNlIGNhbid0IGJlIG5lZ2F0aXZlBAhicE9yZFVzZAkAawMFB2JwT3JkQW0FB2JwT3JkUHIFBU1VTFQ4BANicHAJAQ1wYXJzZUludFZhbHVlAQkAkQMCCAUDYWNjAl84BQFqBAN3aHAJAQ1wYXJzZUludFZhbHVlAQkAkQMCCAUDYWNjAl85BQFqBAp3aE9yZFBhcnRzCQC1CQIJAJEDAggFA2FjYwNfMTAFAWoCAUAEB3doT3JkQW0JAQ1wYXJzZUludFZhbHVlAQkAkQMCBQp3aE9yZFBhcnRzAAAEB3doT3JkUHIJAQ1wYXJzZUludFZhbHVlAQkAkQMCBQp3aE9yZFBhcnRzAAEDAwkBAiE9AgUHYnBPcmRBbQAACQECIT0CBQdicE9yZFByBQd3aE9yZFByBwkAAgEJAKwCAgkArAICCQCsAgIJAKwCAgkArAICAgpQcmljZXMgb2YgCQCRAwIFCXByb2RUeXBlcwUBagIXIGRvbid0IG1hdGNoISBXSCBwcmljZT0JAKQDAQUHd2hPcmRQcgINLCB5b3VyIHByaWNlPQkApAMBBQdicE9yZFByBAh3aE9yZFVzZAkAawMFB3doT3JkQW0FB3doT3JkUHIFBU1VTFQ4AwkAAAIFB2JwT3JkQW0AAAkAnAoKCQDNCAIIBQNhY2MCXzEJAKQDAQUDd2hwCQDNCAIIBQNhY2MCXzIJAJEDAggFA2FjYwNfMTAFAWoJAM0IAggFA2FjYwJfMwkApAMBBQNicHAIBQNhY2MCXzQIBQNhY2MCXzUIBQNhY2MCXzYJAGQCCAUDYWNjAl83AAEIBQNhY2MCXzgIBQNhY2MCXzkIBQNhY2MDXzEwAwkAZgIFB2JwT3JkQW0AAAMJAGYCAAAFB3doT3JkQW0DCQBmAgUHYnBPcmRBbQkBAS0BBQd3aE9yZEFtCQACAQkArAICCQCsAgIJAKwCAgkArAICCQCsAgICD0F0dGVtcHQgdG8gYnV5IAkApAMBBQdicE9yZEFtAgQgb2YgCQCRAwIFCXByb2RUeXBlcwUBagIbLCBidXQgd2FyZWhvdXNlIG9ubHkgc2VsbHMgCQCkAwEJAQEtAQUHd2hPcmRBbQkAnAoKCQDNCAIIBQNhY2MCXzEJAKQDAQUDd2hwCQDNCAIIBQNhY2MCXzIJAKwCAgkArAICCQCkAwEJAGQCBQd3aE9yZEFtBQdicE9yZEFtAgFACQCkAwEFB3doT3JkUHIJAM0IAggFA2FjYwJfMwkApAMBCQBkAgUDYnBwBQdicE9yZEFtCQBkAggFA2FjYwJfNAUHYnBPcmRBbQgFA2FjYwJfNQkAZAIIBQNhY2MCXzYFCGJwT3JkVXNkCQBkAggFA2FjYwJfNwABCAUDYWNjAl84CAUDYWNjAl85CAUDYWNjA18xMAkAAgEJAKwCAgkArAICAg9BdHRlbXB0IHRvIGJ1eSAJAJEDAgUJcHJvZFR5cGVzBQFqAiAgd2hpbGUgd2FyZWhvdXNlIGRvZXNuJ3Qgc2VsbCBpdAMJAGYCBQd3aE9yZEFtAAADCQBmAgkBAS0BBQdicE9yZEFtBQd3aE9yZEFtCQACAQkArAICCQCsAgIJAKwCAgkArAICCQCsAgICEEF0dGVtcHQgdG8gc2VsbCAJAKQDAQkBAS0BBQdicE9yZEFtAgQgb2YgCQCRAwIFCXByb2RUeXBlcwUBagIaLCBidXQgd2FyZWhvdXNlIG9ubHkgYnV5cyAJAKQDAQUHd2hPcmRBbQMJAGYCCQEBLQEFB2JwT3JkQW0FA2JwcAkAAgEJAKwCAgkArAICCQCsAgIJAKwCAgkArAICAhBBdHRlbXB0IHRvIHNlbGwgCQCkAwEJAQEtAQUHYnBPcmRBbQIULCBidXQgeW91IG9ubHkgaGF2ZSAJAKQDAQUDYnBwAgQgb2YgCQCRAwIFCXByb2RUeXBlcwUBagkAnAoKCQDNCAIIBQNhY2MCXzEJAKQDAQkAZQIFA3docAUHYnBPcmRBbQkAzQgCCAUDYWNjAl8yCQCsAgIJAKwCAgkApAMBCQBkAgUHd2hPcmRBbQUHYnBPcmRBbQIBQAkApAMBBQd3aE9yZFByCQDNCAIIBQNhY2MCXzMJAKQDAQkAZAIFA2JwcAUHYnBPcmRBbQkAZQIIBQNhY2MCXzQFB2JwT3JkQW0JAGUCCAUDYWNjAl81BQhicE9yZFVzZAgFA2FjYwJfNgkAZAIIBQNhY2MCXzcAAQgFA2FjYwJfOAgFA2FjYwJfOQgFA2FjYwNfMTAJAAIBCQCsAgIJAKwCAgIQQXR0ZW1wdCB0byBzZWxsIAkAkQMCBQlwcm9kVHlwZXMFAWoCHyB3aGlsZSB3YXJlaG91c2UgZG9lc24ndCBidXkgaXQIAWkBDWNvbnN0cnVjdG9yVjEBCHJlc3RBZGRyAwkBAiE9AggFAWkGY2FsbGVyBQR0aGlzCQACAQIRUGVybWlzc2lvbiBkZW5pZWQJAMwIAgkBC1N0cmluZ0VudHJ5AgkBDmtleVJlc3RBZGRyZXNzAAUIcmVzdEFkZHIFA25pbAFpAQ1zZWxsUmVzb3VyY2VzAgdhbW91bnRzCW1pblByaWNlcwQHYmxvY2tlZAkBDGNoZWNrQmxvY2tlZAADCQAAAgUHYmxvY2tlZAUHYmxvY2tlZAQLZHVja0Fzc2V0SWQJARN2YWx1ZU9yRXJyb3JNZXNzYWdlAgkAnQgCBQ9zdGFraW5nQ29udHJhY3QJARRrZXlTdGFrZWREdWNrQnlPd25lcgEJAKUIAQgFAWkGY2FsbGVyAhxZb3UgZG9uJ3QgaGF2ZSBhIGR1Y2sgc3Rha2VkAwkBAiE9AgkAkAMBCAUBaQhwYXltZW50cwAACQACAQIqc2VsbFJlc291cmNlcyBkb2Vzbid0IHJlcXVpcmUgYW55IHBheW1lbnRzBAtjdXJMb2NhdGlvbgkAtQkCCQELdmFsdWVPckVsc2UCCQCdCAIFD3N0YWtpbmdDb250cmFjdAkBD2tleUR1Y2tMb2NhdGlvbgEFC2R1Y2tBc3NldElkBQ9ERUZBVUxUTE9DQVRJT04CAV8DCQECIT0CCQCRAwIFC2N1ckxvY2F0aW9uBQpsb2NJZHhUeXBlAgFGCQACAQkArAICAi1EdWNrIGxvY2F0aW9uIHR5cGUgc2hvdWxkIGJlIEZhY3RvcnksIGJ1dCBpcyAJAJEDAgULY3VyTG9jYXRpb24FCmxvY0lkeFR5cGUEBWxvY0lkCQCRAwIFC2N1ckxvY2F0aW9uBQhsb2NJZHhJZAQLY3VycmVudFBhY2sJAQtnZXRCYWNrcGFjawEJARFrZXlCYWNrcGFja0J5RHVjawEFC2R1Y2tBc3NldElkBAdyZXNMaXN0CQC1CQIJAJEDAgULY3VycmVudFBhY2sFCGJwSWR4UmVzAgFfCgEFYWRkZXICA2FjYwFqAwkAZgIJAJEDAgUHYW1vdW50cwUBagkBDXBhcnNlSW50VmFsdWUBCQCRAwIFB3Jlc0xpc3QFAWoJAAIBCQCsAgIJAKwCAgkArAICCQCsAgIJAKwCAgIJWW91IGhhdmUgCQCRAwIFB3Jlc0xpc3QFAWoCBCBvZiAJAJEDAgUIcmVzVHlwZXMFAWoCFCwgYnV0IHRyaWVkIHRvIHNlbGwgCQCkAwEJAJEDAgUHYW1vdW50cwUBagMJAGYCAAAJAJEDAgUHYW1vdW50cwUBagkAAgEJAKwCAgkArAICCQCsAgICJVlvdSB0cmllZCB0byBzZWxsIG5lZ2F0aXZlIGFtb3VudCBvZiAJAJEDAgUIcmVzVHlwZXMFAWoCAjogCQCkAwEJAJEDAgUHYW1vdW50cwUBagMJAGYCCQCRAwIFB2Ftb3VudHMFAWoAAAQBYgkBDHNlbGxJbnRlcm5hbAQFBWxvY0lkBQFqCQCRAwIFB2Ftb3VudHMFAWoJAJEDAgUJbWluUHJpY2VzBQFqCQCVCgMJAM0IAggFA2FjYwJfMQgFAWICXzEJAM0IAggFA2FjYwJfMgkApAMBCQBlAgkBDXBhcnNlSW50VmFsdWUBCQCRAwIFB3Jlc0xpc3QFAWoJAJEDAgUHYW1vdW50cwUBagkAZAIIBQNhY2MCXzMIBQFiAl8yCQCVCgMIBQNhY2MCXzEJAM0IAggFA2FjYwJfMgkAkQMCBQdyZXNMaXN0BQFqCAUDYWNjAl8zBAZtZXJnZWQKAAIkbAkAzAgCAAAJAMwIAgABCQDMCAIAAgkAzAgCAAMJAMwIAgAECQDMCAIABQUDbmlsCgACJHMJAJADAQUCJGwKAAUkYWNjMAkAlQoDBQNuaWwFA25pbAAACgEFJGYwXzECAiRhAiRpAwkAZwIFAiRpBQIkcwUCJGEJAQVhZGRlcgIFAiRhCQCRAwIFAiRsBQIkaQoBBSRmMF8yAgIkYQIkaQMJAGcCBQIkaQUCJHMFAiRhCQACAQITTGlzdCBzaXplIGV4Y2VlZHMgNgkBBSRmMF8yAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgUFJGFjYzAAAAABAAIAAwAEAAUABgQHbmV3UGFjawkAuQkCCQDMCAIJAJEDAgULY3VycmVudFBhY2sFCmJwSWR4TGV2ZWwJAMwIAgkAuQkCCAUGbWVyZ2VkAl8yAgFfCQDMCAIJAJEDAgULY3VycmVudFBhY2sFCGJwSWR4TWF0CQDMCAIJAJEDAgULY3VycmVudFBhY2sFCWJwSWR4UHJvZAUDbmlsAgE6BAZyZXN1bHQJAQhhc1N0cmluZwEJAPwHBAUPc3Rha2luZ0NvbnRyYWN0Ag51cGRhdGVCYWNrcGFjawkAzAgCBQtkdWNrQXNzZXRJZAkAzAgCBQduZXdQYWNrBQNuaWwFA25pbAkAlAoCCQDNCAIIBQZtZXJnZWQCXzEJAQ5TY3JpcHRUcmFuc2ZlcgMIBQFpBmNhbGxlcggFBm1lcmdlZAJfMwULdXNkdEFzc2V0SWQFBnJlc3VsdAkAAgECJFN0cmljdCB2YWx1ZSBpcyBub3QgZXF1YWwgdG8gaXRzZWxmLgFpAQxidXlNYXRlcmlhbHMCB2Ftb3VudHMJbWF4UHJpY2VzBAdibG9ja2VkCQEMY2hlY2tCbG9ja2VkAAMJAAACBQdibG9ja2VkBQdibG9ja2VkBAtkdWNrQXNzZXRJZAkBE3ZhbHVlT3JFcnJvck1lc3NhZ2UCCQCdCAIFD3N0YWtpbmdDb250cmFjdAkBFGtleVN0YWtlZER1Y2tCeU93bmVyAQkApQgBCAUBaQZjYWxsZXICHFlvdSBkb24ndCBoYXZlIGEgZHVjayBzdGFrZWQDCQECIT0CCQCQAwEIBQFpCHBheW1lbnRzAAEJAAIBAiJleGFjdGx5IDEgcGF5bWVudCBtdXN0IGJlIGF0dGFjaGVkBANwbXQJAJEDAggFAWkIcGF5bWVudHMAAAQDYW10CAUDcG10BmFtb3VudAQKcG10QXNzZXRJZAkBE3ZhbHVlT3JFcnJvck1lc3NhZ2UCCAUDcG10B2Fzc2V0SWQCHldBVkVTIGNhbid0IGJlIHVzZWQgYXMgcGF5bWVudAMJAQIhPQIFCnBtdEFzc2V0SWQFC3VzZHRBc3NldElkCQACAQITVVNEVCBwYXltZW50cyBvbmx5IQQLY3VyTG9jYXRpb24JALUJAgkBC3ZhbHVlT3JFbHNlAgkAnQgCBQ9zdGFraW5nQ29udHJhY3QJAQ9rZXlEdWNrTG9jYXRpb24BBQtkdWNrQXNzZXRJZAUPREVGQVVMVExPQ0FUSU9OAgFfAwkBAiE9AgkAkQMCBQtjdXJMb2NhdGlvbgUKbG9jSWR4VHlwZQIBRgkAAgEJAKwCAgItRHVjayBsb2NhdGlvbiB0eXBlIHNob3VsZCBiZSBGYWN0b3J5LCBidXQgaXMgCQCRAwIFC2N1ckxvY2F0aW9uBQpsb2NJZHhUeXBlBAVsb2NJZAkAkQMCBQtjdXJMb2NhdGlvbgUIbG9jSWR4SWQEC2N1cnJlbnRQYWNrCQELZ2V0QmFja3BhY2sBCQERa2V5QmFja3BhY2tCeUR1Y2sBBQtkdWNrQXNzZXRJZAQHbWF0TGlzdAkAtQkCCQCRAwIFC2N1cnJlbnRQYWNrBQhicElkeE1hdAIBXwoBCG1VcGRhdGVyAgNhY2MBagMJAGYCAAAJAJEDAgUHYW1vdW50cwUBagkAAgEJAKwCAgkArAICCQCsAgICJFlvdSB0cmllZCB0byBidXkgbmVnYXRpdmUgYW1vdW50IG9mIAkAkQMCBQhtYXRUeXBlcwUBagICOiAJAKQDAQkAkQMCBQdhbW91bnRzBQFqAwkAZgIJAJEDAgUHYW1vdW50cwUBagAABAFiCQELYnV5SW50ZXJuYWwEBQVsb2NJZAUBagkAkQMCBQdhbW91bnRzBQFqCQCRAwIFCW1heFByaWNlcwUBagkAlQoDCQDNCAIIBQNhY2MCXzEIBQFiAl8xCQDNCAIIBQNhY2MCXzIJAKQDAQkAZAIJAQ1wYXJzZUludFZhbHVlAQkAkQMCBQdtYXRMaXN0BQFqCAUBYgJfMwkAZAIIBQNhY2MCXzMIBQFiAl8yCQCVCgMIBQNhY2MCXzEJAM0IAggFA2FjYwJfMgkAkQMCBQdtYXRMaXN0BQFqCAUDYWNjAl8zBAZtZXJnZWQKAAIkbAkAzAgCAAAJAMwIAgABCQDMCAIAAgkAzAgCAAMJAMwIAgAECQDMCAIABQUDbmlsCgACJHMJAJADAQUCJGwKAAUkYWNjMAkAlQoDBQNuaWwFA25pbAAACgEFJGYwXzECAiRhAiRpAwkAZwIFAiRpBQIkcwUCJGEJAQhtVXBkYXRlcgIFAiRhCQCRAwIFAiRsBQIkaQoBBSRmMF8yAgIkYQIkaQMJAGcCBQIkaQUCJHMFAiRhCQACAQITTGlzdCBzaXplIGV4Y2VlZHMgNgkBBSRmMF8yAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgUFJGFjYzAAAAABAAIAAwAEAAUABgMJAGYCCAUGbWVyZ2VkAl8zBQNhbXQJAAIBCQCsAgIJAKwCAgkArAICAh9JbnN1ZmZpY2llbnQgcGF5bWVudCEgQXR0YWNoZWQ9CQCkAwEFA2FtdAILLCByZXF1aXJlZD0JAKQDAQgFBm1lcmdlZAJfMwQHbmV3UGFjawkAuQkCCQDMCAIJAJEDAgULY3VycmVudFBhY2sFCmJwSWR4TGV2ZWwJAMwIAgkAkQMCBQtjdXJyZW50UGFjawUIYnBJZHhSZXMJAMwIAgkAuQkCCAUGbWVyZ2VkAl8yAgFfCQDMCAIJAJEDAgULY3VycmVudFBhY2sFCWJwSWR4UHJvZAUDbmlsAgE6BAZyZXN1bHQJAQhhc1N0cmluZwEJAPwHBAUPc3Rha2luZ0NvbnRyYWN0Ag51cGRhdGVCYWNrcGFjawkAzAgCBQtkdWNrQXNzZXRJZAkAzAgCBQduZXdQYWNrBQNuaWwFA25pbAQEcmVzdAMJAGYCCQBlAgUDYW10CAUGbWVyZ2VkAl8zAAAJAMwIAgkBDlNjcmlwdFRyYW5zZmVyAwgFAWkGY2FsbGVyCQBlAgUDYW10CAUGbWVyZ2VkAl8zBQt1c2R0QXNzZXRJZAUDbmlsBQNuaWwJAJQKAgkAzggCCAUGbWVyZ2VkAl8xBQRyZXN0BQZyZXN1bHQJAAIBAiRTdHJpY3QgdmFsdWUgaXMgbm90IGVxdWFsIHRvIGl0c2VsZi4BaQERZXhjaGFuZ2VSZXNvdXJjZXMBB2Ftb3VudHMEB2Jsb2NrZWQJAQxjaGVja0Jsb2NrZWQAAwkAAAIFB2Jsb2NrZWQFB2Jsb2NrZWQEC2R1Y2tBc3NldElkCQETdmFsdWVPckVycm9yTWVzc2FnZQIJAJ0IAgUPc3Rha2luZ0NvbnRyYWN0CQEUa2V5U3Rha2VkRHVja0J5T3duZXIBCQClCAEIBQFpBmNhbGxlcgIcWW91IGRvbid0IGhhdmUgYSBkdWNrIHN0YWtlZAMJAQIhPQIJAJADAQgFAWkIcGF5bWVudHMAAQkAAgECImV4YWN0bHkgMSBwYXltZW50IG11c3QgYmUgYXR0YWNoZWQEA3BtdAkAkQMCCAUBaQhwYXltZW50cwAABANhbXQIBQNwbXQGYW1vdW50BApwbXRBc3NldElkCQETdmFsdWVPckVycm9yTWVzc2FnZQIIBQNwbXQHYXNzZXRJZAIeV0FWRVMgY2FuJ3QgYmUgdXNlZCBhcyBwYXltZW50AwkBAiE9AgUKcG10QXNzZXRJZAULdXNkdEFzc2V0SWQJAAIBAhNVU0RUIHBheW1lbnRzIG9ubHkhBAtjdXJMb2NhdGlvbgkAtQkCCQELdmFsdWVPckVsc2UCCQCdCAIFD3N0YWtpbmdDb250cmFjdAkBD2tleUR1Y2tMb2NhdGlvbgEFC2R1Y2tBc3NldElkBQ9ERUZBVUxUTE9DQVRJT04CAV8DCQECIT0CCQCRAwIFC2N1ckxvY2F0aW9uBQpsb2NJZHhUeXBlAgFGCQACAQkArAICAi1EdWNrIGxvY2F0aW9uIHR5cGUgc2hvdWxkIGJlIEZhY3RvcnksIGJ1dCBpcyAJAJEDAgULY3VyTG9jYXRpb24FCmxvY0lkeFR5cGUEBWxvY0lkCQCRAwIFC2N1ckxvY2F0aW9uBQhsb2NJZHhJZAQLY3VycmVudFBhY2sJAQtnZXRCYWNrcGFjawEJARFrZXlCYWNrcGFja0J5RHVjawEFC2R1Y2tBc3NldElkBAdyZXNMaXN0CQC1CQIJAJEDAgULY3VycmVudFBhY2sFCGJwSWR4UmVzAgFfBAdtYXRMaXN0CQC1CQIJAJEDAgULY3VycmVudFBhY2sFCGJwSWR4TWF0AgFfCgEJZXhjaGFuZ2VyAgNhY2MBagQFd2hLZXkJAR5rZXlGYWN0b3J5V2FyZWhvdXNlQnlJZEFuZFR5cGUCBQVsb2NJZAUBagQCdzAJAQt2YWx1ZU9yRWxzZQIJAJ8IAQUFd2hLZXkAAAQDYW1qCQCRAwIFB2Ftb3VudHMFAWoDCQBmAgUDYW1qCQENcGFyc2VJbnRWYWx1ZQEJAJEDAgUHcmVzTGlzdAUBagkAAgEJAKwCAgkArAICCQCsAgIJAKwCAgkArAICAglZb3UgaGF2ZSAJAJEDAgUHcmVzTGlzdAUBagIEIG9mIAkAkQMCBQhyZXNUeXBlcwUBagIYLCBidXQgdHJpZWQgdG8gZXhjaGFuZ2UgCQCkAwEFA2FtagMJAGYCAAAFA2FtagkAAgEJAKwCAgkArAICCQCsAgICKVlvdSB0cmllZCB0byBleGNoYW5nZSBuZWdhdGl2ZSBhbW91bnQgb2YgCQCRAwIFCHJlc1R5cGVzBQFqAgI6IAkApAMBBQNhbWoDCQBmAgUDYW1qAAAJAJYKBAkAzQgCCAUDYWNjAl8xCQCkAwEJAGUCCQENcGFyc2VJbnRWYWx1ZQEJAJEDAgUHcmVzTGlzdAUBagUDYW1qCQDNCAIIBQNhY2MCXzIJAKQDAQkAZAIJAQ1wYXJzZUludFZhbHVlAQkAkQMCBQdtYXRMaXN0BQFqBQNhbWoJAGQCCAUDYWNjAl8zCQBrAwUDYW1qBRBSRVNPVVJDRVBSSUNFTUlOBQVNVUxUOAkAzQgCCAUDYWNjAl80CQEMSW50ZWdlckVudHJ5AgUFd2hLZXkFAncwCQCWCgQJAM0IAggFA2FjYwJfMQkAkQMCBQdyZXNMaXN0BQFqCQDNCAIIBQNhY2MCXzIJAJEDAgUHbWF0TGlzdAUBaggFA2FjYwJfMwgFA2FjYwJfNAQGbWVyZ2VkCgACJGwJAMwIAgAACQDMCAIAAQkAzAgCAAIJAMwIAgADCQDMCAIABAkAzAgCAAUFA25pbAoAAiRzCQCQAwEFAiRsCgAFJGFjYzAJAJYKBAUDbmlsBQNuaWwAAAUDbmlsCgEFJGYwXzECAiRhAiRpAwkAZwIFAiRpBQIkcwUCJGEJAQlleGNoYW5nZXICBQIkYQkAkQMCBQIkbAUCJGkKAQUkZjBfMgICJGECJGkDCQBnAgUCJGkFAiRzBQIkYQkAAgECE0xpc3Qgc2l6ZSBleGNlZWRzIDYJAQUkZjBfMgIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIFBSRhY2MwAAAAAQACAAMABAAFAAYDCQBmAggFBm1lcmdlZAJfMwUDYW10CQACAQkArAICCQCsAgIJAKwCAgIfSW5zdWZmaWNpZW50IHBheW1lbnQhIEF0dGFjaGVkPQkApAMBBQNhbXQCCywgcmVxdWlyZWQ9CQCkAwEIBQZtZXJnZWQCXzMEB25ld1BhY2sJALkJAgkAzAgCCQCRAwIFC2N1cnJlbnRQYWNrBQpicElkeExldmVsCQDMCAIJALkJAggFBm1lcmdlZAJfMQIBXwkAzAgCCQC5CQIIBQZtZXJnZWQCXzICAV8JAMwIAgkAkQMCBQtjdXJyZW50UGFjawUJYnBJZHhQcm9kBQNuaWwCAToEBnJlc3VsdAkBCGFzU3RyaW5nAQkA/AcEBQ9zdGFraW5nQ29udHJhY3QCDnVwZGF0ZUJhY2twYWNrCQDMCAIFC2R1Y2tBc3NldElkCQDMCAIFB25ld1BhY2sFA25pbAUDbmlsBARyZXN0AwkAZgIJAGUCBQNhbXQIBQZtZXJnZWQCXzMAAAkAzAgCCQEOU2NyaXB0VHJhbnNmZXIDCAUBaQZjYWxsZXIJAGUCBQNhbXQIBQZtZXJnZWQCXzMFC3VzZHRBc3NldElkBQNuaWwFA25pbAkAlAoCCQDOCAIFBHJlc3QIBQZtZXJnZWQCXzQFBnJlc3VsdAkAAgECJFN0cmljdCB2YWx1ZSBpcyBub3QgZXF1YWwgdG8gaXRzZWxmLgFpAQpjcmFmdEdvb2RzAwpwcm9kdWN0SWR4BWxldmVsCHF1YW50aXR5BAdibG9ja2VkCQEMY2hlY2tCbG9ja2VkAAMJAAACBQdibG9ja2VkBQdibG9ja2VkAwkBAiE9AgkAkAMBCAUBaQhwYXltZW50cwAACQACAQIlYnV5R29vZHMgZG9lc24ndCByZXF1aXJlIGFueSBwYXltZW50cwMJAGYCAAAFCHF1YW50aXR5CQACAQIbUXVhbnRpdHkgc2hvdWxkIGJlIHBvc2l0aXZlBAtkdWNrQXNzZXRJZAkBE3ZhbHVlT3JFcnJvck1lc3NhZ2UCCQCdCAIFD3N0YWtpbmdDb250cmFjdAkBFGtleVN0YWtlZER1Y2tCeU93bmVyAQkApQgBCAUBaQZjYWxsZXICHFlvdSBkb24ndCBoYXZlIGEgZHVjayBzdGFrZWQEC2N1ckxvY2F0aW9uCQC1CQIJAQt2YWx1ZU9yRWxzZQIJAJ0IAgUPc3Rha2luZ0NvbnRyYWN0CQEPa2V5RHVja0xvY2F0aW9uAQULZHVja0Fzc2V0SWQFD0RFRkFVTFRMT0NBVElPTgIBXwMJAQIhPQIJAJEDAgULY3VyTG9jYXRpb24FCmxvY0lkeFR5cGUCAU0JAAIBCQCsAgICMUR1Y2sgbG9jYXRpb24gdHlwZSBzaG91bGQgYmUgTWFudWZhY3RvcnksIGJ1dCBpcyAJAJEDAgULY3VyTG9jYXRpb24FCmxvY0lkeFR5cGUEBGNvbnQJAJEDAgULY3VyTG9jYXRpb24FD2xvY0lkeENvbnRpbmVudAQLY3VycmVudFBhY2sJAQtnZXRCYWNrcGFjawEJARFrZXlCYWNrcGFja0J5RHVjawEFC2R1Y2tBc3NldElkBAdtYXRMaXN0CQC1CQIJAJEDAgULY3VycmVudFBhY2sFCGJwSWR4TWF0AgFfAwMJAGYCAAAFCnByb2R1Y3RJZHgGCQBnAgUKcHJvZHVjdElkeAkAkAMBBRBwcm9kdWN0aW9uTWF0cml4CQACAQkArAICAhRVbmtub3duIHByb2R1Y3QgaWR4PQkApAMBBQpwcm9kdWN0SWR4BA5wcm9kdWN0Q29udElkeAkAagIFCnByb2R1Y3RJZHgJAJADAQUKY29udGluZW50cwMJAQIhPQIJAJEDAgUKY29udGluZW50cwUOcHJvZHVjdENvbnRJZHgFBGNvbnQJAAIBCQCsAgIJAKwCAgkArAICAh1UaGlzIHByb2R1Y3QgaXMgYXZhaWxhYmxlIGluIAkAkQMCBQpjb250aW5lbnRzBQ5wcm9kdWN0Q29udElkeAIRLCBidXQgeW91IGFyZSBpbiAFBGNvbnQEBnJlY2lwZQkAtQkCCQCRAwIFEHByb2R1Y3Rpb25NYXRyaXgFCnByb2R1Y3RJZHgCAV8DCQECIT0CCQCQAwEFBnJlY2lwZQkAZAIFBk5VTVJFUwACCQACAQkArAICAhdGYXRhbDogdW5rbm93biByZWNpcGU6IAkAkQMCBRBwcm9kdWN0aW9uTWF0cml4BQpwcm9kdWN0SWR4BAhwcm9kTGlzdAMJAAACCQCRAwIFC2N1cnJlbnRQYWNrBQlicElkeFByb2QCAAUDbmlsCQC1CQIJAJEDAgULY3VycmVudFBhY2sFCWJwSWR4UHJvZAIBXwoBBmZpbGxlcgIDYWNjC2lnbm9yZWRJdGVtBAFuCAUDYWNjAl8yBAF4AwkAZgIJAJADAQUIcHJvZExpc3QFAW4JALUJAgkAkQMCBQhwcm9kTGlzdAUBbgIBLAkAzAgCAgEwCQDMCAICATAJAMwIAgIBMAUDbmlsBAN4MXMJAJEDAgUBeAAABAJ4MQkBDXBhcnNlSW50VmFsdWUBBQN4MXMEA3gycwkAkQMCBQF4AAEEAngyCQENcGFyc2VJbnRWYWx1ZQEFA3gycwQDeDNzCQCRAwIFAXgAAgQCeDMJAQ1wYXJzZUludFZhbHVlAQUDeDNzBAZhbW91bnQJAGgCBQhxdWFudGl0eQkBDXBhcnNlSW50VmFsdWUBCQCRAwIFBnJlY2lwZQAHBAF5AwkAAAIFAW4FCnByb2R1Y3RJZHgEByRtYXRjaDAFBWxldmVsAwkAAAIAAQUHJG1hdGNoMAkArAICCQCsAgIJAKwCAgkArAICCQCkAwEJAGQCBQJ4MQUGYW1vdW50AgEsBQN4MnMCASwFA3gzcwMJAAACAAIFByRtYXRjaDAJAKwCAgkArAICCQCsAgIJAKwCAgUDeDFzAgEsCQCkAwEJAGQCBQJ4MgUG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YWtpbmdDb250cmFjdAIOdXBkYXRlQmFja3BhY2sJAMwIAgULZHVja0Fzc2V0SWQJAMwIAgUHbmV3UGFjawUDbmlsBQNuaWwJAJQKAgUDbmlsBQZyZXN1bHQJAAIBAiRTdHJpY3QgdmFsdWUgaXMgbm90IGVxdWFsIHRvIGl0c2VsZi4BaQEUYWNjZXB0U2VydmljZVBheW1lbnQBB3NlcnZpY2UEB2Jsb2NrZWQJAQxjaGVja0Jsb2NrZWQAAwkAAAIFB2Jsb2NrZWQFB2Jsb2NrZWQDCQECIT0CCQCQAwEIBQFpCHBheW1lbnRzAAEJAAIBAiJleGFjdGx5IDEgcGF5bWVudCBtdXN0IGJlIGF0dGFjaGVkBANwbXQJAJEDAggFAWkIcGF5bWVudHMAAAQDYW10CAUDcG10BmFtb3VudAQKcG10QXNzZXRJZAkBE3ZhbHVlT3JFcnJvck1lc3NhZ2UCCAUDcG10B2Fzc2V0SWQCHldBVkVTIGNhbid0IGJlIHVzZWQgYXMgcGF5bWVudAMJAQIhPQIFCnBtdEFzc2V0SWQFC3VzZHRBc3NldElkCQACAQITVVNEVCBwYXltZW50cyBvbmx5IQQEbmVlZAQHJG1hdGNoMAUHc2VydmljZQMJAAACAgtMQU5EX1JFTkFNRQUHJG1hdGNoMACAreIECQACAQIQVW5rbm93biBzZXJ2aWNlIQMJAQIhPQIFA2FtdAUEbmVlZAkAAgEJAKwCAgkArAICCQCsAgIFB3NlcnZpY2UCByBjb3N0cyAJAKQDAQUEbmVlZAIFIFVTRFQJAJQKAgUDbmlsBQNhbXQJAAIBAiRTdHJpY3QgdmFsdWUgaXMgbm90IGVxdWFsIHRvIGl0c2VsZi4BaQERc2V0V2FyZWhvdXNlT3JkZXICDGNhcmdvTGlzdFN0cgtsYW5kQXNzZXRJZAQEdXNlcggFAWkMb3JpZ2luQ2FsbGVyBARhZGRyCQClCAEFBHVzZXIEBnJlc3VsdAMJAQIhPQIFBHVzZXIFDHJlc3RDb250cmFjdAkBDGNoZWNrQmxvY2tlZAAHBAVhc3NldAkBBXZhbHVlAQkA7AcBCQDZBAEFC2xhbmRBc3NldElkAwkBASEBCQEJaXNEZWZpbmVkAQkAmggCBQ9zdGFraW5nQ29udHJhY3QJARZrZXlTdGFrZWRUaW1lQnlBc3NldElkAQULbGFuZEFzc2V0SWQJAAIBCQCsAgIJAKwCAgIETkZUIAgFBWFzc2V0BG5hbWUCDiBpcyBub3Qgc3Rha2VkBAVvd25lcgkBE3ZhbHVlT3JFcnJvck1lc3NhZ2UCCQCdCAIFD3N0YWtpbmdDb250cmFjdAkBFWtleUxhbmRBc3NldElkVG9Pd25lcgEFC2xhbmRBc3NldElkCQCsAgIJAKwCAgIETkZUIAgFBWFzc2V0BG5hbWUCDCBpcyBvcnBoYW5lZAMDCQECIT0CBQR1c2VyBQxyZXN0Q29udHJhY3QJAQIhPQIFBW93bmVyBQRhZGRyBwkAAgEJAKwCAgUKTEFORFBSRUZJWAINIGlzIG5vdCB5b3VycwQKY2FyZ29QYXJ0cwkAvAkCBQxjYXJnb0xpc3RTdHICAToDCQECIT0CCQCQAwEFCmNhcmdvUGFydHMAAwkAAgECNGNhcmdvTGlzdFN0ciBzaG91bGQgY29udGFpbiBleGFjdGx5IDIgJzonIHNlcGFyYXRvcnMECHJlc1BhcnRzCQC1CQIJAJEDAgUKY2FyZ29QYXJ0cwAAAgFfBAhtYXRQYXJ0cwkAtQkCCQCRAwIFCmNhcmdvUGFydHMAAQIBXwQJcHJvZFBhcnRzAwkAAAIJAJEDAgUKY2FyZ29QYXJ0cwACAgAFA25pbAkAtQkCCQCRAwIFCmNhcmdvUGFydHMAAgIBXwMJAQIhPQIJAJADAQUIcmVzUGFydHMFBk5VTVJFUwkAAgECIEFsbCA2IHJlc291cmNlcyBzaG91bGQgYmUgcGFzc2VkAwkBAiE9AgkAkAMBBQhtYXRQYXJ0cwUGTlVNUkVTCQACAQIgQWxsIDYgbWF0ZXJpYWxzIHNob3VsZCBiZSBwYXNzZWQEAndoCQEIYXNTdHJpbmcBCQD8BwQFD3N0YWtpbmdDb250cmFjdAIUZ2V0V2FyZWhvdXNlUkVBRE9OTFkJAMwIAgULbGFuZEFzc2V0SWQFA25pbAUDbmlsBAljdXJyZW50V2gJALwJAgUCd2gCAToECWN1cnJXaFJlcwkAtQkCCQCRAwIFCWN1cnJlbnRXaAUId2hJZHhSZXMCAV8ECWN1cnJXaE1hdAkAtQkCCQCRAwIFCWN1cnJlbnRXaAUId2hJZHhNYXQCAV8ECmN1cnJXaFBy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BQh2b2xTYWxkbwUFd2hWb2wJAAIBCQCsAgIJAKwCAgkArAICCQCsAgICE0F0dGVtcHQgdG8gcmVzZXJ2ZSAJAKQDAQUIdm9sU2FsZG8CESBzcGFjZSwgYnV0IG9ubHkgCQCkAwEFBXdoVm9sAhUgd2FyZWhvdXNlIHNwYWNlIGxlZnQEBXdoU3RyCQC6CQIJAMwIAgkAkQMCBQljdXJyZW50V2gFCHdoSWR4Vm9sCQDMCAIJALkJAggFAXICXzICAV8JAMwIAgkAuQkCCAUBbQJfMgIBXwkAzAgCCQC5CQIIBQFwAl8yAgFfCQDMCAIJAKQDAQUIdm9sU2FsZG8FA25pbAIBOgQGd2hTYXZlCQD8BwQFD3N0YWtpbmdDb250cmFjdAINc2F2ZVdhcmVob3VzZQkAzAgCBQV3aFN0cgkAzAgCBQtsYW5kQXNzZXRJZAUDbmlsBQNuaWwDCQAAAgUGd2hTYXZlBQZ3aFNhdmUECHVzZFNhbGRvCAUBcAJfNAQHYWN0aW9ucwMJAGYCBQh1c2RTYWxkbwAAAwkBAiE9AgkAkAMBCAUBaQhwYXltZW50cwABCQACAQIiZXhhY3RseSAxIHBheW1lbnQgbXVzdCBiZSBhdHRhY2hlZAQDcG10CQCRAwIIBQFpCHBheW1lbnRzAAAEA2FtdAgFA3BtdAZhbW91bnQECnBtdEFzc2V0SWQJARN2YWx1ZU9yRXJyb3JNZXNzYWdlAggFA3BtdAdhc3NldElkAh5XQVZFUyBjYW4ndCBiZSB1c2VkIGFzIHBheW1lbnQDCQECIT0CBQpwbXRBc3NldElkBQt1c2R0QXNzZXRJZAkAAgECE1VTRFQgcGF5bWVudHMgb25seSEDCQECIT0CBQNhbXQFCHVzZFNhbGRvCQACAQkArAICAhJQYXltZW50IG5lZWRlZCBpcyAJAKQDAQUIdXNkU2FsZG8JAMwIAgkBC1N0cmluZ0VudHJ5AgUGb3JkS2V5BQxjYXJnb0xpc3RTdHIFA25pbAMJAAACBQh1c2RTYWxkbwAAAwkBAiE9AgkAkAMBCAUBaQhwYXltZW50cwAACQACAQISTm8gcGF5bWVudHMgbmVlZGVkCQDMCAIJAQtTdHJpbmdFbnRyeQIFBm9yZEtleQUMY2FyZ29MaXN0U3RyBQNuaWwDCQECIT0CCQCQAwEIBQFpCHBheW1lbnRzAAAJAAIBAhJObyBwYXltZW50cyBuZWVkZWQJAMwIAgkBDlNjcmlwdFRyYW5zZmVyAwkBEUBleHRyTmF0aXZlKDEwNjIpAQUFb3duZXIJAQEtAQUIdXNkU2FsZG8FC3VzZHRBc3NldElkCQDMCAIJAQtTdHJpbmdFbnRyeQIFBm9yZEtleQUMY2FyZ29MaXN0U3RyBQNuaWwJAJQKAgUHYWN0aW9ucwUGcmVzdWx0CQACAQIkU3RyaWN0IHZhbHVlIGlzIG5vdCBlcXVhbCB0byBpdHNlbGYuAWkBFGFjY2VwdFdhcmVob3VzZU9yZGVyAwpicE9yZGVyU3RyC2xhbmRBc3NldElkC2R1Y2tBc3NldElkBAdibG9ja2VkCQEMY2hlY2tCbG9ja2VkAAMJAAACBQdibG9ja2VkBQdibG9ja2VkBAZjYWxsZXIIBQFpDG9yaWdpbkNhbGxlcgQKY2FsbGVyQWRkcgkApQgBBQZjYWxsZXIEEXN0YWtlZER1Y2tBc3NldElkCQETdmFsdWVPckVycm9yTWVzc2FnZQIJAJ0IAgUPc3Rha2luZ0NvbnRyYWN0CQEUa2V5U3Rha2VkRHVja0J5T3duZXIBBQpjYWxsZXJBZGRyAhxZb3UgZG9uJ3QgaGF2ZSBhIGR1Y2sgc3Rha2VkBAtjdXJMb2NhdGlvbgkBC3ZhbHVlT3JFbHNlAgkAnQgCBQ9zdGFraW5nQ29udHJhY3QJAQ9rZXlEdWNrTG9jYXRpb24BBRFzdGFrZWREdWNrQXNzZXRJZAUPREVGQVVMVExPQ0FUSU9OBANsb2MJALUJAgkBBXZhbHVlAQULY3VyTG9jYXRpb24CAV8DCQECIT0CCQCRAwIFA2xvYwUKbG9jSWR4VHlwZQIBTAkAAgEJAKwCAgkArAICAhZEdWNrIGxvY2F0aW9uIHR5cGUgaXMgCQCRAwIFA2xvYwUKbG9jSWR4VHlwZQIRLCBidXQgc2hvdWxkIGJlIEwDCQECIT0CBRFzdGFrZWREdWNrQXNzZXRJZAULZHVja0Fzc2V0SWQJAAIBCQCsAgIJAKwCAgkArAICAhRZb3VyIHN0YWtlZCBkdWNrIGlzIAURc3Rha2VkRHVja0Fzc2V0SWQCDSwgYnV0IHBhc3NlZCAFC2R1Y2tBc3NldElkBAlsYW5kQXNzZXQJAQV2YWx1ZQEJAOwHAQkA2QQBBQtsYW5kQXNzZXRJZAMJAQEhAQkBCWlzRGVmaW5lZAEJAJoIAgUPc3Rha2luZ0NvbnRyYWN0CQEWa2V5U3Rha2VkVGltZUJ5QXNzZXRJZAEFC2xhbmRBc3NldElkCQACAQkArAICCQCsAgICBE5GVCAIBQlsYW5kQXNzZXQEbmFtZQIOIGlzIG5vdCBzdGFrZWQECWxhbmRPd25lcgkBE3ZhbHVlT3JFcnJvck1lc3NhZ2UCCQCdCAIFD3N0YWtpbmdDb250cmFjdAkBFWtleUxhbmRBc3NldElkVG9Pd25lcgEFC2xhbmRBc3NldElkCQCsAgIJAKwCAgIETkZUIAgFCWxhbmRBc3NldARuYW1lAgwgaXMgb3JwaGFuZWQDCQAAAgUJbGFuZE93bmVyBQpjYWxsZXJBZGRyCQACAQIeWW91IGNhbm5vdCB0cmFkZSB3aXRoIHlvdXJzZWxmBAxicE9yZGVyUGFydHMJALwJAgUKYnBPcmRlclN0cgIBOgMJAQIhPQIJAJADAQUMYnBPcmRlclBhcnRzAAMJAAIBAjJicE9yZGVyU3RyIHNob3VsZCBjb250YWluIGV4YWN0bHkgMiAnOicgc2VwYXJhdG9ycwQIYnBPcmRSZXMJALUJAgkAkQMCBQxicE9yZGVyUGFydHMAAAIBXwQIYnBPcmRNYXQJALUJAgkAkQMCBQxicE9yZGVyUGFydHMAAQIBXwQJYnBPcmRQcm9kAwkAAAIJAJEDAgUMYnBPcmRlclBhcnRzAAICAAUDbmlsCQC1CQIJAJEDAgUMYnBPcmRlclBhcnRzAAICAV8DCQECIT0CCQCQAwEFCGJwT3JkUmVzBQZOVU1SRVMJAAIBAiBBbGwgNiByZXNvdXJjZXMgc2hvdWxkIGJlIHBhc3NlZAMJAQIhPQIJAJADAQUIYnBPcmRNYXQFBk5VTVJFUwkAAgECIEFsbCA2IG1hdGVyaWFscyBzaG91bGQgYmUgcGFzc2VkBAJ3aAkBCGFzU3RyaW5nAQkA/AcEBQ9zdGFraW5nQ29udHJhY3QCFGdldFdhcmVob3VzZVJFQURPTkxZCQDMCAIFC2xhbmRBc3NldElkBQNuaWwFA25pbAQJY3VycmVudFdoCQC8CQIFAndoAgE6BAljdXJyV2hSZXMJALUJAgkAkQMCBQljdXJyZW50V2gFCHdoSWR4UmVzAgFfBAljdXJyV2hNYXQJALUJAgkAkQMCBQljdXJyZW50V2gFCHdoSWR4TWF0AgFfBApjdXJyV2hQcm9kAwkAAAIJAJEDAgUJY3VycmVudFdoBQl3aElkeFByb2QCAAUDbmlsCQC1CQIJAJEDAgUJY3VycmVudFdoBQl3aElkeFByb2QCAV8EDGN1cnJXaFJlc1ZvbAkBGWdldFdhcmVob3VzZUN1cnJSZXNWb2x1bWUBBQljdXJyZW50V2gEDGN1cnJXaE1hdFZvbAkBGWdldFdhcmVob3VzZUN1cnJNYXRWb2x1bWUBBQljdXJyZW50V2gEDmN1cnJXaEdvb2RzVm9sCQEbZ2V0V2FyZWhvdXNlQ3Vyckdvb2RzVm9sdW1lAQUJY3VycmVudFdoBA9jdXJyV2hMb2NrZWRWb2wJAQ1wYXJzZUludFZhbHVlAQkAkQMCBQljdXJyZW50V2gFDndoSWR4TG9ja2VkVm9sBAt3aFNwYWNlTGVmdAkAZQIJAGUCCQBlAgkAZQIJARJnZXRXYXJlaG91c2VWb2x1bWUBCQCRAwIFCWN1cnJlbnRXaAUId2hJZHhWb2wFDGN1cnJXaFJlc1ZvbAUMY3VycldoTWF0Vm9sBQ5jdXJyV2hHb29kc1ZvbAUPY3VycldoTG9ja2VkVm9sBAVicEtleQkBEWtleUJhY2twYWNrQnlEdWNrAQULZHVja0Fzc2V0SWQEC2N1cnJlbnRQYWNrCQELZ2V0QmFja3BhY2sBBQVicEtleQQJYnBSZXNMaXN0CQC1CQIJAJEDAgULY3VycmVudFBhY2sFCGJwSWR4UmVzAgFfBAlicE1hdExpc3QJALUJAgkAkQMCBQtjdXJyZW50UGFjawUIYnBJZHhNYXQCAV8ECmJwUHJvZExpc3QDCQAAAgkAkQMCBQtjdXJyZW50UGFjawUJYnBJZHhQcm9kAgAFA25pbAkAtQkCCQCRAwIFC2N1cnJlbnRQYWNrBQlicElkeFByb2QCAV8EBm9yZEtleQkBDmtleU9yZGVyQnlMYW5kAQULbGFuZEFzc2V0SWQEBXdoT3JkCQEIZ2V0T3JkZXIBBQZvcmRLZXkECHdoT3JkUmVzCQC1CQIJAJEDAgUFd2hPcmQFCW9yZElkeFJl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Y2tlZFZvbAUDbmlsAgE6BAtuZXdXaE9yZFN0cgkAugkCCQDMCAIJALkJAggFAXICXzICAV8JAMwIAgkAuQkCCAUBbQJfMgIBXwkAzAgCCQC5CQIIBQFwAl8yAgFfBQNuaWwCAToECG5ld0JwU3RyCQC6CQIJAMwIAgkAkQMCBQtjdXJyZW50UGFjawUKYnBJZHhMZXZlbAkAzAgCCQC5CQIIBQFyAl8zAgFfCQDMCAIJALkJAggFAW0CXzMCAV8JAMwIAgkAuQkCCAUBcAJfMwIBXwUDbmlsAgE6BAZ3aFNhdmUJAPwHBAUPc3Rha2luZ0NvbnRyYWN0Ag1zYXZlV2FyZWhvdXNlCQDMCAIFBXdoU3RyCQDMCAIFC2xhbmRBc3NldElkBQNuaWwFA25pbAMJAAACBQZ3aFNhdmUFBndoU2F2ZQQGYnBTYXZlCQD8BwQFD3N0YWtpbmdDb250cmFjdAIOdXBkYXRlQmFja3BhY2sJAMwIAgULZHVja0Fzc2V0SWQJAMwIAgUIbmV3QnBTdHIFA25pbAUDbmlsAwkAAAIFBmJwU2F2ZQUGYnBTYXZlBAdhY3Rpb25zCQDMCAIJAQtTdHJpbmdFbnRyeQIFBm9yZEtleQULbmV3V2hPcmRTdHIFA25pbAQLdXNkV2gyQnBGZWUJAGsDCAUBcAJfNQUKQVVDVElPTkZFRQUFTVVMVDYEDXVzZFdoMkJwU2FsZG8IBQFwAl81BAhhY3Rpb25zMQMJAGYCBQ11c2RXaDJCcFNhbGRvAAAJAM0IAgUHYWN0aW9ucwkBDlNjcmlwdFRyYW5zZmVyAwUGY2FsbGVyCQBlAggFAXACXzUFC3VzZFdoMkJwRmVlBQt1c2R0QXNzZXRJZAUHYWN0aW9ucwQLdXNkQnAyV2hGZWUJAGsDCAUBcAJfNgUKQVVDVElPTkZFRQUFTVVMVDYEDXVzZEJwMldoU2FsZG8IBQFwAl82AwkAZgIFDXVzZEJwMldoU2FsZG8AAAMJAQIhPQIJAJADAQgFAWkIcGF5bWVudHMAAQkAAgECImV4YWN0bHkgMSBwYXltZW50IG11c3QgYmUgYXR0YWNoZWQEA3BtdAkAkQMCCAUBaQhwYXltZW50cwAABANhbXQIBQNwbXQGYW1vdW50BApwbXRBc3NldElkCQETdmFsdWVPckVycm9yTWVzc2FnZQIIBQNwbXQHYXNzZXRJZAIeV0FWRVMgY2FuJ3QgYmUgdXNlZCBhcyBwYXltZW50AwkBAiE9AgUKcG10QXNzZXRJZAULdXNkdEFzc2V0SWQJAAIBAhNVU0RUIHBheW1lbnRzIG9ubHkhAwkBAiE9AgUDYW10BQ11c2RCcDJXaFNhbGRvCQACAQkArAICAhJQYXltZW50IG5lZWRlZCBpcyAJAKQDAQUNdXNkQnAyV2hTYWxkbwkAzQgCBQhhY3Rpb25zMQkBDlNjcmlwdFRyYW5zZmVyAwkBEUBleHRyTmF0aXZlKDEwNjIpAQUJbGFuZE93bmVyCQBlAggFAXACXzYFC3VzZEJwMldoRmVlBQt1c2R0QXNzZXRJZAMJAQIhPQIJAJADAQgFAWkIcGF5bWVudHMAAAkAAgECEk5vIHBheW1lbnRzIG5lZWRlZAUIYWN0aW9uczEJAAIBAiRTdHJpY3QgdmFsdWUgaXMgbm90IGVxdWFsIHRvIGl0c2VsZi4JAAIBAiRTdHJpY3QgdmFsdWUgaXMgbm90IGVxdWFsIHRvIGl0c2VsZi4JAAIBAiRTdHJpY3QgdmFsdWUgaXMgbm90IGVxdWFsIHRvIGl0c2VsZi4AvSY1wg==", "height": 2556433, "applicationStatus": "succeeded", "spentComplexity": 0 } View: original | compacted Prev: 21G3qTgN3b1b1twfksvLy23eN4TpNTHJTm3wFFWBsm86 Next: EbNGzX2iLaMBNkT8R3b5wE96FLoaZDpuX4z5oZPAXU8K Diff:
OldNewDifferences
1414 let f = {
1515 let g = e
1616 if ((base58'2W' == g))
17- then base58'DG2xFkPdDwKUoBkzGAhQtLpSGzfXLiCYPEzeKH2Ad24p'
17+ then base58'9wc3LXNA4TEBsXyKtoLE9mrbDD7WMHXvXrCjZvabLAsi'
1818 else if ((base58'2T' == g))
19- then base58'HezsdQuRDtzksAYUy97gfhKy7Z1NW2uXYSHA3bgqenNZ'
19+ then base58'6mWwf9mZBjVgkC54idpyaZLQfAosD914wT8fGf2iiY63'
2020 else throw("Unknown chain")
2121 }
2222
6565
6666 let B = 10000000000
6767
68-let C = 158549
68+let C = 39637
6969
7070 let D = 10000
7171
447447 let cb = ca.amount
448448 let cc = valueOrErrorMessage(ca.assetId, "WAVES can't be used as payment")
449449 if ((cc != f))
450- then throw("USDN payments only!")
450+ then throw("USDT payments only!")
451451 else {
452452 let bR = split(valueOrElse(getString(y, ad(ac)), z), "_")
453453 if ((bR[aj] != "F"))
511511 let cb = ca.amount
512512 let cc = valueOrErrorMessage(ca.assetId, "WAVES can't be used as payment")
513513 if ((cc != f))
514- then throw("USDN payments only!")
514+ then throw("USDT payments only!")
515515 else {
516516 let bR = split(valueOrElse(getString(y, ad(ac)), z), "_")
517517 if ((bR[aj] != "F"))
687687 let cb = ca.amount
688688 let cc = valueOrErrorMessage(ca.assetId, "WAVES can't be used as payment")
689689 if ((cc != f))
690- then throw("USDN payments only!")
690+ then throw("USDT payments only!")
691691 else {
692692 let cG = {
693693 let g = cF
696696 else throw("Unknown service!")
697697 }
698698 if ((cb != cG))
699- then throw((((cF + " costs ") + toString(cG)) + " USDN"))
699+ then throw((((cF + " costs ") + toString(cG)) + " USDT"))
700700 else $Tuple2(nil, cb)
701701 }
702702 }
811811 let cb = ca.amount
812812 let cc = valueOrErrorMessage(ca.assetId, "WAVES can't be used as payment")
813813 if ((cc != f))
814- then throw("USDN payments only!")
814+ then throw("USDT payments only!")
815815 else if ((cb != dg))
816816 then throw(("Payment needed is " + toString(dg)))
817817 else [StringEntry(aB, cH)]
970970 let cb = ca.amount
971971 let cc = valueOrErrorMessage(ca.assetId, "WAVES can't be used as payment")
972972 if ((cc != f))
973- then throw("USDN payments only!")
973+ then throw("USDT payments only!")
974974 else if ((cb != dN))
975975 then throw(("Payment needed is " + toString(dN)))
976976 else (dL :+ ScriptTransfer(addressFromStringValue(do), (aC._6 - dM), f))
Full:
OldNewDifferences
11 {-# STDLIB_VERSION 6 #-}
22 {-# SCRIPT_TYPE ACCOUNT #-}
33 {-# CONTENT_TYPE DAPP #-}
44 let a = "__"
55
66 let b = 1000000
77
88 let c = 100000000
99
1010 let d = 10000000000
1111
1212 let e = take(drop(this.bytes, 1), 1)
1313
1414 let f = {
1515 let g = e
1616 if ((base58'2W' == g))
17- then base58'DG2xFkPdDwKUoBkzGAhQtLpSGzfXLiCYPEzeKH2Ad24p'
17+ then base58'9wc3LXNA4TEBsXyKtoLE9mrbDD7WMHXvXrCjZvabLAsi'
1818 else if ((base58'2T' == g))
19- then base58'HezsdQuRDtzksAYUy97gfhKy7Z1NW2uXYSHA3bgqenNZ'
19+ then base58'6mWwf9mZBjVgkC54idpyaZLQfAosD914wT8fGf2iiY63'
2020 else throw("Unknown chain")
2121 }
2222
2323 let h = {
2424 let g = e
2525 if ((base58'2W' == g))
2626 then "3PQCuvFbvh4LkPUnrnU1z3jnbA1p9m3WNhv"
2727 else if ((base58'2T' == g))
2828 then "3MumkGGztCKAXpWDqxkddofqXSUbqQkvSJy"
2929 else throw("Unknown chain")
3030 }
3131
3232 func i (j,k) = valueOrErrorMessage(getString(j, k), makeString(["mandatory ", toString(j), ".", k, " is not defined"], ""))
3333
3434
3535 func l (k,m) = valueOrElse(getInteger(this, k), m)
3636
3737
3838 let n = 1
3939
4040 let o = 2
4141
4242 let p = 3
4343
4444 func q () = "%s__restConfig"
4545
4646
4747 func r () = "%s__restAddr"
4848
4949
5050 func s (t) = split_4C(i(t, q()), a)
5151
5252
5353 func u (v,w) = valueOrErrorMessage(addressFromString(v[w]), ("Rest cfg doesn't contain address at index " + toString(w)))
5454
5555
5656 let x = addressFromStringValue(valueOrElse(getString(this, r()), h))
5757
5858 let v = s(x)
5959
6060 let y = u(v, n)
6161
6262 let z = "Africa_F_Africa"
6363
6464 let A = 6
6565
6666 let B = 10000000000
6767
68-let C = 158549
68+let C = 39637
6969
7070 let D = 10000
7171
7272 let E = 200
7373
7474 let F = 300
7575
7676 let G = "LAND"
7777
7878 let H = "DUCK"
7979
8080 let I = 10000000000
8181
8282 let J = 10000
8383
8484 let K = ["Oil", "Ore", "Wood", "Sand", "Clay", "Organic"]
8585
8686 let L = ["Fuel", "Metal", "Plank", "Glass", "Plastic", "Protein"]
8787
8888 let M = ["First Aid Kit", "Backpack", "Food Ration", "Jet Pack", "Shield"]
8989
9090 let N = ["Americas", "Europe", "Asia", "Africa", "Oceania"]
9191
9292 let O = ["1_1_1_2_2_5_1_10", "2_5_5_2_7_5_2_100", "1_1_1_2_2_5_1_10", "9_9_1_5_5_1_5_100", "2_2_1_2_2_2_1_10"]
9393
9494 let P = 0
9595
9696 let Q = 1
9797
9898 let R = 2
9999
100100 let S = 3
101101
102102 let T = 4
103103
104104 func U (V,W) = ((("factoryWhByContinentAndRes_" + V) + "_") + toString(W))
105105
106106
107107 func X (Y) = ("landOrder_" + Y)
108108
109109
110110 func Z (aa) = ("stakedDuckByOwner_" + aa)
111111
112112
113113 func ab (ac) = ("backPack_" + ac)
114114
115115
116116 func ad (ac) = ("duckLocation_" + ac)
117117
118118
119119 func ae () = "contractsBlocked"
120120
121121
122122 func af (ag) = ("nftOwner_" + ag)
123123
124124
125125 func ah (ag) = ("stakedTime_" + ag)
126126
127127
128128 let ai = 0
129129
130130 let aj = 1
131131
132132 let ak = 2
133133
134134 let al = 0
135135
136136 let am = 1
137137
138138 let an = 2
139139
140140 let ao = 3
141141
142142 let ap = 0
143143
144144 let aq = 1
145145
146146 let ar = 2
147147
148148 let as = 3
149149
150150 let at = 4
151151
152152 let au = 0
153153
154154 let av = 1
155155
156156 let aw = 2
157157
158158 func ax (ay) = {
159159 let g = ay
160160 if ($isInstanceOf(g, "String"))
161161 then {
162162 let az = g
163163 az
164164 }
165165 else throw("fail to cast into String")
166166 }
167167
168168
169169 func aA (aB) = {
170170 let aC = split(valueOrElse(getString(aB), "0@0_0@0_0@0_0@0_0@0_0@0:0@0_0@0_0@0_0@0_0@0_0@0:"), ":")
171171 [if ((size(split(aC[au], "_")) == A))
172172 then aC[au]
173173 else "0@0_0@0_0@0_0@0_0@0_0@0", if ((size(split(aC[av], "_")) == A))
174174 then aC[av]
175175 else "0@0_0@0_0@0_0@0_0@0_0@0", aC[aw]]
176176 }
177177
178178
179179 func aD (aE) = {
180180 let aF = split(aE, "_")
181181 ((I * (parseIntValue(aF[1]) + 1)) * parseIntValue(aF[0]))
182182 }
183183
184184
185185 func aG (aH) = {
186186 func aI (aJ,aK) = (aJ + parseIntValue(aK))
187187
188188 let aL = split(aH[aq], "_")
189189 let aM = size(aL)
190190 let aN = 0
191191 func aO (aP,aQ) = if ((aQ >= aM))
192192 then aP
193193 else aI(aP, aL[aQ])
194194
195195 func aR (aP,aQ) = if ((aQ >= aM))
196196 then aP
197197 else throw("List size exceeds 6")
198198
199199 aR(aO(aO(aO(aO(aO(aO(aN, 0), 1), 2), 3), 4), 5), 6)
200200 }
201201
202202
203203 func aS (aH) = {
204204 func aI (aJ,aK) = (aJ + parseIntValue(aK))
205205
206206 let aL = split(aH[ar], "_")
207207 let aM = size(aL)
208208 let aN = 0
209209 func aO (aP,aQ) = if ((aQ >= aM))
210210 then aP
211211 else aI(aP, aL[aQ])
212212
213213 func aR (aP,aQ) = if ((aQ >= aM))
214214 then aP
215215 else throw("List size exceeds 6")
216216
217217 aR(aO(aO(aO(aO(aO(aO(aN, 0), 1), 2), 3), 4), 5), 6)
218218 }
219219
220220
221221 func aT (aH) = {
222222 let aU = aH[as]
223223 if ((aU == ""))
224224 then 0
225225 else {
226226 func aI (aJ,aK) = (aJ + parseIntValue(aK))
227227
228228 let aL = split_4C(aU, "_")
229229 let aM = size(aL)
230230 let aN = 0
231231 func aO (aP,aQ) = if ((aQ >= aM))
232232 then aP
233233 else aI(aP, aL[aQ])
234234
235235 func aR (aP,aQ) = if ((aQ >= aM))
236236 then aP
237237 else throw("List size exceeds 50")
238238
239239 aR(aO(aO(aO(aO(aO(aO(aO(aO(aO(aO(aO(aO(aO(aO(aO(aO(aO(aO(aO(aO(aO(aO(aO(aO(aO(aO(aO(aO(aO(aO(aO(aO(aO(aO(aO(aO(aO(aO(aO(aO(aO(aO(aO(aO(aO(aO(aO(aO(aO(aO(aN, 0), 1), 2), 3), 4), 5), 6), 7), 8), 9), 10), 11), 12), 13), 14), 15), 16), 17), 18), 19), 20), 21), 22), 23), 24), 25), 26), 27), 28), 29), 30), 31), 32), 33), 34), 35), 36), 37), 38), 39), 40), 41), 42), 43), 44), 45), 46), 47), 48), 49), 50)
240240 }
241241 }
242242
243243
244244 func aV (aW,W,aX,aY) = {
245245 let aZ = U(aW, W)
246246 let ba = valueOrElse(getInteger(aZ), 0)
247247 let bb = if ((ba > B))
248248 then 0
249249 else if (((ba + aX) > B))
250250 then (B - ba)
251251 else aX
252252 let bc = (fraction(bb, ((E * C) - fraction(((100 * ba) + (50 * bb)), C, B)), d) + fraction((aX - bb), C, c))
253253 let bd = (aY - (aY / 100))
254254 if (((bd * aX) > (bc * c)))
255255 then throw((((((((((("Actual price = " + toString(bc)) + " / ") + toString(aX)) + " < minPrice = ") + toString(aY)) + ", (") + aW) + ", ") + K[W]) + ")"))
256256 else $Tuple2(IntegerEntry(aZ, (ba + aX)), bc)
257257 }
258258
259259
260260 func be (aW,bf,aX,bg) = {
261261 let aZ = U(aW, bf)
262262 let ba = valueOrElse(getInteger(aZ), 0)
263263 let bh = if ((ba > B))
264264 then min([aX, (ba - B)])
265265 else 0
266266 let bi = min([ba, (aX - bh)])
267267 let bj = (bi + bh)
268268 let bk = (fraction(bi, ((F * C) - fraction(((100 * ba) - (50 * bi)), C, B)), d) + fraction(bh, (2 * C), c))
269269 let bl = (bg + (bg / 100))
270270 if (((bk * c) > (bl * bj)))
271271 then throw((((((((((("Actual price = " + toString(bk)) + " / ") + toString(bj)) + " > maxPrice = ") + toString(bg)) + ", (") + aW) + ", ") + L[bf]) + ")"))
272272 else $Tuple3(IntegerEntry(aZ, (ba - bj)), bk, bj)
273273 }
274274
275275
276276 func bm (bn) = {
277277 let aC = split(valueOrElse(getString(y, bn), "0:0_0_0_0_0_0:0_0_0_0_0_0:"), ":")
278278 [toString(valueOrElse(parseInt(aC[al]), 0)), if ((size(split(aC[am], "_")) == A))
279279 then aC[am]
280280 else "0_0_0_0_0_0", if ((size(split(aC[an], "_")) == A))
281281 then aC[an]
282282 else "0_0_0_0_0_0", aC[ao]]
283283 }
284284
285285
286286 func bo () = if (valueOrElse(getBoolean(y, ae()), false))
287287 then throw("Contracts are under maintenance")
288288 else unit
289289
290290
291291 func bp (aJ,aK) = {
292292 let bq = aJ._1
293293 let br = split(aK, "@")
294294 if ((size(br) != 2))
295295 then throw("Incorrect order format, should be amount@price")
296296 else {
297297 let bs = parseIntValue(br[0])
298298 let bt = parseIntValue(br[1])
299299 let bu = fraction(bs, bt, c)
300300 let bv = parseIntValue(aJ._5[bq])
301301 let bw = split(aJ._6[bq], "@")
302302 let bx = parseIntValue(bw[0])
303303 let by = parseIntValue(bw[1])
304304 if ((0 > by))
305305 then throw("Price can't be negative")
306306 else {
307307 let bz = fraction(bx, by, c)
308308 if ((bs == 0))
309309 then if ((bx > 0))
310310 then $Tuple6((bq + 1), (aJ._2 :+ toString(bv)), (aJ._3 - bx), (aJ._4 - bz), aJ._5, aJ._6)
311311 else $Tuple6((bq + 1), (aJ._2 :+ toString((bv - bx))), (aJ._3 + bx), aJ._4, aJ._5, aJ._6)
312312 else if ((bs > 0))
313313 then if ((0 > bx))
314314 then {
315315 let bA = (bs + bx)
316316 $Tuple6((bq + 1), (aJ._2 :+ toString((bv - bx))), (aJ._3 + bA), (aJ._4 + bu), aJ._5, aJ._6)
317317 }
318318 else $Tuple6((bq + 1), (aJ._2 :+ toString(bv)), ((aJ._3 + bs) - bx), ((aJ._4 + bu) - bz), aJ._5, aJ._6)
319319 else if ((0 > bx))
320320 then {
321321 let bA = (bx - bs)
322322 if ((0 > (bv - bA)))
323323 then throw((((("Attempt to take " + toString(bA)) + " from warehouse, but only ") + toString(bv)) + " available"))
324324 else $Tuple6((bq + 1), (aJ._2 :+ toString((bv - bA))), (aJ._3 + bA), aJ._4, aJ._5, aJ._6)
325325 }
326326 else if ((0 > (bv + bs)))
327327 then throw((((("Attempt to take " + toString(-(bs))) + " from warehouse, but only ") + toString(bv)) + " available"))
328328 else $Tuple6((bq + 1), (aJ._2 :+ toString((bv + bs))), ((aJ._3 - bs) - bx), (aJ._4 - bz), aJ._5, aJ._6)
329329 }
330330 }
331331 }
332332
333333
334334 func bB (aJ,bC) = {
335335 let bq = aJ._7
336336 let bD = split(bC, "@")
337337 if ((size(bD) != 2))
338338 then throw("Incorrect order format, should be amount@price")
339339 else {
340340 let bE = parseIntValue(bD[0])
341341 let bF = parseIntValue(bD[1])
342342 if ((0 > bF))
343343 then throw("Price can't be negative")
344344 else {
345345 let bG = fraction(bE, bF, c)
346346 let bH = parseIntValue(aJ._8[bq])
347347 let bv = parseIntValue(aJ._9[bq])
348348 let bI = split(aJ._10[bq], "@")
349349 let bJ = parseIntValue(bI[0])
350350 let bK = parseIntValue(bI[1])
351351 if (if ((bE != 0))
352352 then (bF != bK)
353353 else false)
354354 then throw(((((("Prices of " + M[bq]) + " don't match! WH price=") + toString(bK)) + ", your price=") + toString(bF)))
355355 else {
356356 let bL = fraction(bJ, bK, c)
357357 if ((bE == 0))
358358 then $Tuple10((aJ._1 :+ toString(bv)), (aJ._2 :+ aJ._10[bq]), (aJ._3 :+ toString(bH)), aJ._4, aJ._5, aJ._6, (aJ._7 + 1), aJ._8, aJ._9, aJ._10)
359359 else if ((bE > 0))
360360 then if ((0 > bJ))
361361 then if ((bE > -(bJ)))
362362 then throw(((((("Attempt to buy " + toString(bE)) + " of ") + M[bq]) + ", but warehouse only sells ") + toString(-(bJ))))
363363 else $Tuple10((aJ._1 :+ toString(bv)), (aJ._2 :+ ((toString((bJ + bE)) + "@") + toString(bK))), (aJ._3 :+ toString((bH + bE))), (aJ._4 + bE), aJ._5, (aJ._6 + bG), (aJ._7 + 1), aJ._8, aJ._9, aJ._10)
364364 else throw((("Attempt to buy " + M[bq]) + " while warehouse doesn't sell it"))
365365 else if ((bJ > 0))
366366 then if ((-(bE) > bJ))
367367 then throw(((((("Attempt to sell " + toString(-(bE))) + " of ") + M[bq]) + ", but warehouse only buys ") + toString(bJ)))
368368 else if ((-(bE) > bH))
369369 then throw(((((("Attempt to sell " + toString(-(bE))) + ", but you only have ") + toString(bH)) + " of ") + M[bq]))
370370 else $Tuple10((aJ._1 :+ toString((bv - bE))), (aJ._2 :+ ((toString((bJ + bE)) + "@") + toString(bK))), (aJ._3 :+ toString((bH + bE))), (aJ._4 - bE), (aJ._5 - bG), aJ._6, (aJ._7 + 1), aJ._8, aJ._9, aJ._10)
371371 else throw((("Attempt to sell " + M[bq]) + " while warehouse doesn't buy it"))
372372 }
373373 }
374374 }
375375 }
376376
377377
378378 @Callable(bM)
379379 func constructorV1 (bN) = if ((bM.caller != this))
380380 then throw("Permission denied")
381381 else [StringEntry(r(), bN)]
382382
383383
384384
385385 @Callable(bM)
386386 func sellResources (bO,bP) = {
387387 let bQ = bo()
388388 if ((bQ == bQ))
389389 then {
390390 let ac = valueOrErrorMessage(getString(y, Z(toString(bM.caller))), "You don't have a duck staked")
391391 if ((size(bM.payments) != 0))
392392 then throw("sellResources doesn't require any payments")
393393 else {
394394 let bR = split(valueOrElse(getString(y, ad(ac)), z), "_")
395395 if ((bR[aj] != "F"))
396396 then throw(("Duck location type should be Factory, but is " + bR[aj]))
397397 else {
398398 let aW = bR[ak]
399399 let bS = bm(ab(ac))
400400 let bT = split(bS[am], "_")
401401 func bU (aJ,bq) = if ((bO[bq] > parseIntValue(bT[bq])))
402402 then throw(((((("You have " + bT[bq]) + " of ") + K[bq]) + ", but tried to sell ") + toString(bO[bq])))
403403 else if ((0 > bO[bq]))
404404 then throw(((("You tried to sell negative amount of " + K[bq]) + ": ") + toString(bO[bq])))
405405 else if ((bO[bq] > 0))
406406 then {
407407 let bV = aV(aW, bq, bO[bq], bP[bq])
408408 $Tuple3((aJ._1 :+ bV._1), (aJ._2 :+ toString((parseIntValue(bT[bq]) - bO[bq]))), (aJ._3 + bV._2))
409409 }
410410 else $Tuple3(aJ._1, (aJ._2 :+ bT[bq]), aJ._3)
411411
412412 let bW = {
413413 let aL = [0, 1, 2, 3, 4, 5]
414414 let aM = size(aL)
415415 let aN = $Tuple3(nil, nil, 0)
416416 func aO (aP,aQ) = if ((aQ >= aM))
417417 then aP
418418 else bU(aP, aL[aQ])
419419
420420 func aR (aP,aQ) = if ((aQ >= aM))
421421 then aP
422422 else throw("List size exceeds 6")
423423
424424 aR(aO(aO(aO(aO(aO(aO(aN, 0), 1), 2), 3), 4), 5), 6)
425425 }
426426 let bX = makeString([bS[al], makeString(bW._2, "_"), bS[an], bS[ao]], ":")
427427 let bY = ax(invoke(y, "updateBackpack", [ac, bX], nil))
428428 $Tuple2((bW._1 :+ ScriptTransfer(bM.caller, bW._3, f)), bY)
429429 }
430430 }
431431 }
432432 else throw("Strict value is not equal to itself.")
433433 }
434434
435435
436436
437437 @Callable(bM)
438438 func buyMaterials (bO,bZ) = {
439439 let bQ = bo()
440440 if ((bQ == bQ))
441441 then {
442442 let ac = valueOrErrorMessage(getString(y, Z(toString(bM.caller))), "You don't have a duck staked")
443443 if ((size(bM.payments) != 1))
444444 then throw("exactly 1 payment must be attached")
445445 else {
446446 let ca = bM.payments[0]
447447 let cb = ca.amount
448448 let cc = valueOrErrorMessage(ca.assetId, "WAVES can't be used as payment")
449449 if ((cc != f))
450- then throw("USDN payments only!")
450+ then throw("USDT payments only!")
451451 else {
452452 let bR = split(valueOrElse(getString(y, ad(ac)), z), "_")
453453 if ((bR[aj] != "F"))
454454 then throw(("Duck location type should be Factory, but is " + bR[aj]))
455455 else {
456456 let aW = bR[ak]
457457 let bS = bm(ab(ac))
458458 let cd = split(bS[an], "_")
459459 func ce (aJ,bq) = if ((0 > bO[bq]))
460460 then throw(((("You tried to buy negative amount of " + L[bq]) + ": ") + toString(bO[bq])))
461461 else if ((bO[bq] > 0))
462462 then {
463463 let bV = be(aW, bq, bO[bq], bZ[bq])
464464 $Tuple3((aJ._1 :+ bV._1), (aJ._2 :+ toString((parseIntValue(cd[bq]) + bV._3))), (aJ._3 + bV._2))
465465 }
466466 else $Tuple3(aJ._1, (aJ._2 :+ cd[bq]), aJ._3)
467467
468468 let bW = {
469469 let aL = [0, 1, 2, 3, 4, 5]
470470 let aM = size(aL)
471471 let aN = $Tuple3(nil, nil, 0)
472472 func aO (aP,aQ) = if ((aQ >= aM))
473473 then aP
474474 else ce(aP, aL[aQ])
475475
476476 func aR (aP,aQ) = if ((aQ >= aM))
477477 then aP
478478 else throw("List size exceeds 6")
479479
480480 aR(aO(aO(aO(aO(aO(aO(aN, 0), 1), 2), 3), 4), 5), 6)
481481 }
482482 if ((bW._3 > cb))
483483 then throw(((("Insufficient payment! Attached=" + toString(cb)) + ", required=") + toString(bW._3)))
484484 else {
485485 let bX = makeString([bS[al], bS[am], makeString(bW._2, "_"), bS[ao]], ":")
486486 let bY = ax(invoke(y, "updateBackpack", [ac, bX], nil))
487487 let t = if (((cb - bW._3) > 0))
488488 then [ScriptTransfer(bM.caller, (cb - bW._3), f)]
489489 else nil
490490 $Tuple2((bW._1 ++ t), bY)
491491 }
492492 }
493493 }
494494 }
495495 }
496496 else throw("Strict value is not equal to itself.")
497497 }
498498
499499
500500
501501 @Callable(bM)
502502 func exchangeResources (bO) = {
503503 let bQ = bo()
504504 if ((bQ == bQ))
505505 then {
506506 let ac = valueOrErrorMessage(getString(y, Z(toString(bM.caller))), "You don't have a duck staked")
507507 if ((size(bM.payments) != 1))
508508 then throw("exactly 1 payment must be attached")
509509 else {
510510 let ca = bM.payments[0]
511511 let cb = ca.amount
512512 let cc = valueOrErrorMessage(ca.assetId, "WAVES can't be used as payment")
513513 if ((cc != f))
514- then throw("USDN payments only!")
514+ then throw("USDT payments only!")
515515 else {
516516 let bR = split(valueOrElse(getString(y, ad(ac)), z), "_")
517517 if ((bR[aj] != "F"))
518518 then throw(("Duck location type should be Factory, but is " + bR[aj]))
519519 else {
520520 let aW = bR[ak]
521521 let bS = bm(ab(ac))
522522 let bT = split(bS[am], "_")
523523 let cd = split(bS[an], "_")
524524 func cf (aJ,bq) = {
525525 let aZ = U(aW, bq)
526526 let ba = valueOrElse(getInteger(aZ), 0)
527527 let cg = bO[bq]
528528 if ((cg > parseIntValue(bT[bq])))
529529 then throw(((((("You have " + bT[bq]) + " of ") + K[bq]) + ", but tried to exchange ") + toString(cg)))
530530 else if ((0 > cg))
531531 then throw(((("You tried to exchange negative amount of " + K[bq]) + ": ") + toString(cg)))
532532 else if ((cg > 0))
533533 then $Tuple4((aJ._1 :+ toString((parseIntValue(bT[bq]) - cg))), (aJ._2 :+ toString((parseIntValue(cd[bq]) + cg))), (aJ._3 + fraction(cg, C, c)), (aJ._4 :+ IntegerEntry(aZ, ba)))
534534 else $Tuple4((aJ._1 :+ bT[bq]), (aJ._2 :+ cd[bq]), aJ._3, aJ._4)
535535 }
536536
537537 let bW = {
538538 let aL = [0, 1, 2, 3, 4, 5]
539539 let aM = size(aL)
540540 let aN = $Tuple4(nil, nil, 0, nil)
541541 func aO (aP,aQ) = if ((aQ >= aM))
542542 then aP
543543 else cf(aP, aL[aQ])
544544
545545 func aR (aP,aQ) = if ((aQ >= aM))
546546 then aP
547547 else throw("List size exceeds 6")
548548
549549 aR(aO(aO(aO(aO(aO(aO(aN, 0), 1), 2), 3), 4), 5), 6)
550550 }
551551 if ((bW._3 > cb))
552552 then throw(((("Insufficient payment! Attached=" + toString(cb)) + ", required=") + toString(bW._3)))
553553 else {
554554 let bX = makeString([bS[al], makeString(bW._1, "_"), makeString(bW._2, "_"), bS[ao]], ":")
555555 let bY = ax(invoke(y, "updateBackpack", [ac, bX], nil))
556556 let t = if (((cb - bW._3) > 0))
557557 then [ScriptTransfer(bM.caller, (cb - bW._3), f)]
558558 else nil
559559 $Tuple2((t ++ bW._4), bY)
560560 }
561561 }
562562 }
563563 }
564564 }
565565 else throw("Strict value is not equal to itself.")
566566 }
567567
568568
569569
570570 @Callable(bM)
571571 func craftGoods (ch,ci,cj) = {
572572 let bQ = bo()
573573 if ((bQ == bQ))
574574 then if ((size(bM.payments) != 0))
575575 then throw("buyGoods doesn't require any payments")
576576 else if ((0 > cj))
577577 then throw("Quantity should be positive")
578578 else {
579579 let ac = valueOrErrorMessage(getString(y, Z(toString(bM.caller))), "You don't have a duck staked")
580580 let bR = split(valueOrElse(getString(y, ad(ac)), z), "_")
581581 if ((bR[aj] != "M"))
582582 then throw(("Duck location type should be Manufactory, but is " + bR[aj]))
583583 else {
584584 let ck = bR[ai]
585585 let bS = bm(ab(ac))
586586 let cd = split(bS[an], "_")
587587 if (if ((0 > ch))
588588 then true
589589 else (ch >= size(O)))
590590 then throw(("Unknown product idx=" + toString(ch)))
591591 else {
592592 let cl = (ch % size(N))
593593 if ((N[cl] != ck))
594594 then throw(((("This product is available in " + N[cl]) + ", but you are in ") + ck))
595595 else {
596596 let cm = split(O[ch], "_")
597597 if ((size(cm) != (A + 2)))
598598 then throw(("Fatal: unknown recipe: " + O[ch]))
599599 else {
600600 let cn = if ((bS[ao] == ""))
601601 then nil
602602 else split(bS[ao], "_")
603603 func co (aJ,cp) = {
604604 let cq = aJ._2
605605 let cr = if ((size(cn) > cq))
606606 then split(cn[cq], ",")
607607 else ["0", "0", "0"]
608608 let cs = cr[0]
609609 let ct = parseIntValue(cs)
610610 let cu = cr[1]
611611 let cv = parseIntValue(cu)
612612 let cw = cr[2]
613613 let cx = parseIntValue(cw)
614614 let aX = (cj * parseIntValue(cm[7]))
615615 let cy = if ((cq == ch))
616616 then {
617617 let g = ci
618618 if ((1 == g))
619619 then ((((toString((ct + aX)) + ",") + cu) + ",") + cw)
620620 else if ((2 == g))
621621 then ((((cs + ",") + toString((cv + aX))) + ",") + cw)
622622 else if ((3 == g))
623623 then ((((cs + ",") + cu) + ",") + toString((cx + aX)))
624624 else throw(("Product level should be 1..3, not " + toString(ci)))
625625 }
626626 else ((((cs + ",") + cu) + ",") + cw)
627627 $Tuple2((aJ._1 :+ cy), (cq + 1))
628628 }
629629
630630 let cz = ( let aL = O
631631 let aM = size(aL)
632632 let aN = $Tuple2(nil, 0)
633633 func aO (aP,aQ) = if ((aQ >= aM))
634634 then aP
635635 else co(aP, aL[aQ])
636636
637637 func aR (aP,aQ) = if ((aQ >= aM))
638638 then aP
639639 else throw("List size exceeds 50")
640640
641641 aR(aO(aO(aO(aO(aO(aO(aO(aO(aO(aO(aO(aO(aO(aO(aO(aO(aO(aO(aO(aO(aO(aO(aO(aO(aO(aO(aO(aO(aO(aO(aO(aO(aO(aO(aO(aO(aO(aO(aO(aO(aO(aO(aO(aO(aO(aO(aO(aO(aO(aO(aN, 0), 1), 2), 3), 4), 5), 6), 7), 8), 9), 10), 11), 12), 13), 14), 15), 16), 17), 18), 19), 20), 21), 22), 23), 24), 25), 26), 27), 28), 29), 30), 31), 32), 33), 34), 35), 36), 37), 38), 39), 40), 41), 42), 43), 44), 45), 46), 47), 48), 49), 50))._1
642642 func cA (aJ,bq) = {
643643 let cB = (parseIntValue(cm[bq]) * cj)
644644 let cC = parseIntValue(cd[bq])
645645 if ((cB > cC))
646646 then throw(((((((("You have " + cd[bq]) + " of ") + L[bq]) + ", but recipe requires ") + toString(cB)) + " for quantity ") + toString(cj)))
647647 else if ((cB > 0))
648648 then (aJ :+ toString((cC - cB)))
649649 else (aJ :+ cd[bq])
650650 }
651651
652652 let bW = {
653653 let aL = [0, 1, 2, 3, 4, 5]
654654 let aM = size(aL)
655655 let aN = nil
656656 func cD (aP,aQ) = if ((aQ >= aM))
657657 then aP
658658 else cA(aP, aL[aQ])
659659
660660 func cE (aP,aQ) = if ((aQ >= aM))
661661 then aP
662662 else throw("List size exceeds 6")
663663
664664 cE(cD(cD(cD(cD(cD(cD(aN, 0), 1), 2), 3), 4), 5), 6)
665665 }
666666 let bX = makeString([bS[al], bS[am], makeString(bW, "_"), makeString(cz, "_")], ":")
667667 let bY = ax(invoke(y, "updateBackpack", [ac, bX], nil))
668668 $Tuple2(nil, bY)
669669 }
670670 }
671671 }
672672 }
673673 }
674674 else throw("Strict value is not equal to itself.")
675675 }
676676
677677
678678
679679 @Callable(bM)
680680 func acceptServicePayment (cF) = {
681681 let bQ = bo()
682682 if ((bQ == bQ))
683683 then if ((size(bM.payments) != 1))
684684 then throw("exactly 1 payment must be attached")
685685 else {
686686 let ca = bM.payments[0]
687687 let cb = ca.amount
688688 let cc = valueOrErrorMessage(ca.assetId, "WAVES can't be used as payment")
689689 if ((cc != f))
690- then throw("USDN payments only!")
690+ then throw("USDT payments only!")
691691 else {
692692 let cG = {
693693 let g = cF
694694 if (("LAND_RENAME" == g))
695695 then 10000000
696696 else throw("Unknown service!")
697697 }
698698 if ((cb != cG))
699- then throw((((cF + " costs ") + toString(cG)) + " USDN"))
699+ then throw((((cF + " costs ") + toString(cG)) + " USDT"))
700700 else $Tuple2(nil, cb)
701701 }
702702 }
703703 else throw("Strict value is not equal to itself.")
704704 }
705705
706706
707707
708708 @Callable(bM)
709709 func setWarehouseOrder (cH,Y) = {
710710 let cI = bM.originCaller
711711 let cJ = toString(cI)
712712 let bY = if ((cI != x))
713713 then bo()
714714 else false
715715 let cK = value(assetInfo(fromBase58String(Y)))
716716 if (!(isDefined(getInteger(y, ah(Y)))))
717717 then throw((("NFT " + cK.name) + " is not staked"))
718718 else {
719719 let cL = valueOrErrorMessage(getString(y, af(Y)), (("NFT " + cK.name) + " is orphaned"))
720720 if (if ((cI != x))
721721 then (cL != cJ)
722722 else false)
723723 then throw((G + " is not yours"))
724724 else {
725725 let cM = split_4C(cH, ":")
726726 if ((size(cM) != 3))
727727 then throw("cargoListStr should contain exactly 2 ':' separators")
728728 else {
729729 let cN = split(cM[0], "_")
730730 let cO = split(cM[1], "_")
731731 let cP = if ((cM[2] == ""))
732732 then nil
733733 else split(cM[2], "_")
734734 if ((size(cN) != A))
735735 then throw("All 6 resources should be passed")
736736 else if ((size(cO) != A))
737737 then throw("All 6 materials should be passed")
738738 else {
739739 let cQ = ax(invoke(y, "getWarehouseREADONLY", [Y], nil))
740740 let aH = split_4C(cQ, ":")
741741 let cR = split(aH[aq], "_")
742742 let cS = split(aH[ar], "_")
743743 let cT = if ((aH[as] == ""))
744744 then nil
745745 else split(aH[as], "_")
746746 let cU = aD(aH[ap])
747747 let aB = X(Y)
748748 let cV = aA(aB)
749749 let cW = split(cV[au], "_")
750750 let cX = split(cV[av], "_")
751751 let cY = if ((cV[aw] == ""))
752752 then nil
753753 else split(cV[aw], "_")
754754 let cZ = 0
755755 let da = {
756756 let aL = cN
757757 let aM = size(aL)
758758 let aN = $Tuple6(0, nil, 0, 0, cR, cW)
759759 func aO (aP,aQ) = if ((aQ >= aM))
760760 then aP
761761 else bp(aP, aL[aQ])
762762
763763 func aR (aP,aQ) = if ((aQ >= aM))
764764 then aP
765765 else throw("List size exceeds 6")
766766
767767 aR(aO(aO(aO(aO(aO(aO(aN, 0), 1), 2), 3), 4), 5), 6)
768768 }
769769 let bj = {
770770 let aL = cO
771771 let aM = size(aL)
772772 let aN = $Tuple6(0, nil, da._3, da._4, cS, cX)
773773 func cD (aP,aQ) = if ((aQ >= aM))
774774 then aP
775775 else bp(aP, aL[aQ])
776776
777777 func cE (aP,aQ) = if ((aQ >= aM))
778778 then aP
779779 else throw("List size exceeds 6")
780780
781781 cE(cD(cD(cD(cD(cD(cD(aN, 0), 1), 2), 3), 4), 5), 6)
782782 }
783783 let aC = {
784784 let aL = cP
785785 let aM = size(aL)
786786 let aN = $Tuple6(0, nil, bj._3, bj._4, cT, cY)
787787 func db (aP,aQ) = if ((aQ >= aM))
788788 then aP
789789 else bp(aP, aL[aQ])
790790
791791 func dc (aP,aQ) = if ((aQ >= aM))
792792 then aP
793793 else throw("List size exceeds 50")
794794
795795 dc(db(db(db(db(db(db(db(db(db(db(db(db(db(db(db(db(db(db(db(db(db(db(db(db(db(db(db(db(db(db(db(db(db(db(db(db(db(db(db(db(db(db(db(db(db(db(db(db(db(db(aN, 0), 1), 2), 3), 4), 5), 6), 7), 8), 9), 10), 11), 12), 13), 14), 15), 16), 17), 18), 19), 20), 21), 22), 23), 24), 25), 26), 27), 28), 29), 30), 31), 32), 33), 34), 35), 36), 37), 38), 39), 40), 41), 42), 43), 44), 45), 46), 47), 48), 49), 50)
796796 }
797797 let dd = aC._3
798798 if ((dd > cU))
799799 then throw((((("Attempt to reserve " + toString(dd)) + " space, but only ") + toString(cU)) + " warehouse space left"))
800800 else {
801801 let de = makeString_2C([aH[ap], makeString(da._2, "_"), makeString(bj._2, "_"), makeString(aC._2, "_"), toString(dd)], ":")
802802 let df = invoke(y, "saveWarehouse", [de, Y], nil)
803803 if ((df == df))
804804 then {
805805 let dg = aC._4
806806 let dh = if ((dg > 0))
807807 then if ((size(bM.payments) != 1))
808808 then throw("exactly 1 payment must be attached")
809809 else {
810810 let ca = bM.payments[0]
811811 let cb = ca.amount
812812 let cc = valueOrErrorMessage(ca.assetId, "WAVES can't be used as payment")
813813 if ((cc != f))
814- then throw("USDN payments only!")
814+ then throw("USDT payments only!")
815815 else if ((cb != dg))
816816 then throw(("Payment needed is " + toString(dg)))
817817 else [StringEntry(aB, cH)]
818818 }
819819 else if ((dg == 0))
820820 then if ((size(bM.payments) != 0))
821821 then throw("No payments needed")
822822 else [StringEntry(aB, cH)]
823823 else if ((size(bM.payments) != 0))
824824 then throw("No payments needed")
825825 else [ScriptTransfer(addressFromStringValue(cL), -(dg), f), StringEntry(aB, cH)]
826826 $Tuple2(dh, bY)
827827 }
828828 else throw("Strict value is not equal to itself.")
829829 }
830830 }
831831 }
832832 }
833833 }
834834 }
835835
836836
837837
838838 @Callable(bM)
839839 func acceptWarehouseOrder (di,Y,ac) = {
840840 let bQ = bo()
841841 if ((bQ == bQ))
842842 then {
843843 let dj = bM.originCaller
844844 let dk = toString(dj)
845845 let dl = valueOrErrorMessage(getString(y, Z(dk)), "You don't have a duck staked")
846846 let bR = valueOrElse(getString(y, ad(dl)), z)
847847 let dm = split(value(bR), "_")
848848 if ((dm[aj] != "L"))
849849 then throw((("Duck location type is " + dm[aj]) + ", but should be L"))
850850 else if ((dl != ac))
851851 then throw(((("Your staked duck is " + dl) + ", but passed ") + ac))
852852 else {
853853 let dn = value(assetInfo(fromBase58String(Y)))
854854 if (!(isDefined(getInteger(y, ah(Y)))))
855855 then throw((("NFT " + dn.name) + " is not staked"))
856856 else {
857857 let do = valueOrErrorMessage(getString(y, af(Y)), (("NFT " + dn.name) + " is orphaned"))
858858 if ((do == dk))
859859 then throw("You cannot trade with yourself")
860860 else {
861861 let dp = split_4C(di, ":")
862862 if ((size(dp) != 3))
863863 then throw("bpOrderStr should contain exactly 2 ':' separators")
864864 else {
865865 let dq = split(dp[0], "_")
866866 let dr = split(dp[1], "_")
867867 let ds = if ((dp[2] == ""))
868868 then nil
869869 else split(dp[2], "_")
870870 if ((size(dq) != A))
871871 then throw("All 6 resources should be passed")
872872 else if ((size(dr) != A))
873873 then throw("All 6 materials should be passed")
874874 else {
875875 let cQ = ax(invoke(y, "getWarehouseREADONLY", [Y], nil))
876876 let aH = split_4C(cQ, ":")
877877 let cR = split(aH[aq], "_")
878878 let cS = split(aH[ar], "_")
879879 let cT = if ((aH[as] == ""))
880880 then nil
881881 else split(aH[as], "_")
882882 let dt = aG(aH)
883883 let du = aS(aH)
884884 let dv = aT(aH)
885885 let dw = parseIntValue(aH[at])
886886 let dx = ((((aD(aH[ap]) - dt) - du) - dv) - dw)
887887 let bn = ab(ac)
888888 let bS = bm(bn)
889889 let dy = split(bS[am], "_")
890890 let dz = split(bS[an], "_")
891891 let dA = if ((bS[ao] == ""))
892892 then nil
893893 else split(bS[ao], "_")
894894 let aB = X(Y)
895895 let dB = aA(aB)
896896 let dC = split(dB[au], "_")
897897 let dD = split(dB[av], "_")
898898 let dE = if ((dB[aw] == ""))
899899 then nil
900900 else split(dB[aw], "_")
901901 let cZ = 0
902902 let da = {
903903 let aL = dq
904904 let aM = size(aL)
905905 let aN = $Tuple10(nil, nil, nil, 0, 0, 0, 0, dy, cR, dC)
906906 func aO (aP,aQ) = if ((aQ >= aM))
907907 then aP
908908 else bB(aP, aL[aQ])
909909
910910 func aR (aP,aQ) = if ((aQ >= aM))
911911 then aP
912912 else throw("List size exceeds 6")
913913
914914 aR(aO(aO(aO(aO(aO(aO(aN, 0), 1), 2), 3), 4), 5), 6)
915915 }
916916 let bj = {
917917 let aL = dr
918918 let aM = size(aL)
919919 let aN = $Tuple10(nil, nil, nil, da._4, da._5, da._6, 0, dz, cS, dD)
920920 func cD (aP,aQ) = if ((aQ >= aM))
921921 then aP
922922 else bB(aP, aL[aQ])
923923
924924 func cE (aP,aQ) = if ((aQ >= aM))
925925 then aP
926926 else throw("List size exceeds 6")
927927
928928 cE(cD(cD(cD(cD(cD(cD(aN, 0), 1), 2), 3), 4), 5), 6)
929929 }
930930 let aC = {
931931 let aL = ds
932932 let aM = size(aL)
933933 let aN = $Tuple10(nil, nil, nil, bj._4, bj._5, bj._6, 0, dA, cT, dE)
934934 func db (aP,aQ) = if ((aQ >= aM))
935935 then aP
936936 else bB(aP, aL[aQ])
937937
938938 func dc (aP,aQ) = if ((aQ >= aM))
939939 then aP
940940 else throw("List size exceeds 50")
941941
942942 dc(db(db(db(db(db(db(db(db(db(db(db(db(db(db(db(db(db(db(db(db(db(db(db(db(db(db(db(db(db(db(db(db(db(db(db(db(db(db(db(db(db(db(db(db(db(db(db(db(db(db(aN, 0), 1), 2), 3), 4), 5), 6), 7), 8), 9), 10), 11), 12), 13), 14), 15), 16), 17), 18), 19), 20), 21), 22), 23), 24), 25), 26), 27), 28), 29), 30), 31), 32), 33), 34), 35), 36), 37), 38), 39), 40), 41), 42), 43), 44), 45), 46), 47), 48), 49), 50)
943943 }
944944 let dd = aC._4
945945 let dF = if ((0 > (dw - dd)))
946946 then 0
947947 else (dw - dd)
948948 let de = makeString_2C([aH[ap], makeString(da._1, "_"), makeString(bj._1, "_"), makeString(aC._1, "_"), toString(dF)], ":")
949949 let dG = makeString_2C([makeString(da._2, "_"), makeString(bj._2, "_"), makeString(aC._2, "_")], ":")
950950 let dH = makeString_2C([bS[al], makeString(da._3, "_"), makeString(bj._3, "_"), makeString(aC._3, "_")], ":")
951951 let df = invoke(y, "saveWarehouse", [de, Y], nil)
952952 if ((df == df))
953953 then {
954954 let dI = invoke(y, "updateBackpack", [ac, dH], nil)
955955 if ((dI == dI))
956956 then {
957957 let dh = [StringEntry(aB, dG)]
958958 let dJ = fraction(aC._5, J, b)
959959 let dK = aC._5
960960 let dL = if ((dK > 0))
961961 then (dh :+ ScriptTransfer(dj, (aC._5 - dJ), f))
962962 else dh
963963 let dM = fraction(aC._6, J, b)
964964 let dN = aC._6
965965 if ((dN > 0))
966966 then if ((size(bM.payments) != 1))
967967 then throw("exactly 1 payment must be attached")
968968 else {
969969 let ca = bM.payments[0]
970970 let cb = ca.amount
971971 let cc = valueOrErrorMessage(ca.assetId, "WAVES can't be used as payment")
972972 if ((cc != f))
973- then throw("USDN payments only!")
973+ then throw("USDT payments only!")
974974 else if ((cb != dN))
975975 then throw(("Payment needed is " + toString(dN)))
976976 else (dL :+ ScriptTransfer(addressFromStringValue(do), (aC._6 - dM), f))
977977 }
978978 else if ((size(bM.payments) != 0))
979979 then throw("No payments needed")
980980 else dL
981981 }
982982 else throw("Strict value is not equal to itself.")
983983 }
984984 else throw("Strict value is not equal to itself.")
985985 }
986986 }
987987 }
988988 }
989989 }
990990 }
991991 else throw("Strict value is not equal to itself.")
992992 }
993993
994994

github/deemru/w8io/169f3d6 
147.61 ms