tx · 8NByfqanwCqdiaefVdpq4Zjij92Tj4hLAJLNhPphwPhV

3N8y4wxX3JC4TdrCJBXX16SjWf6X256hrep:  -0.03600000 Waves

2023.09.02 15:52 [2737769] smart account 3N8y4wxX3JC4TdrCJBXX16SjWf6X256hrep > SELF 0.00000000 Waves

{ "type": 13, "id": "8NByfqanwCqdiaefVdpq4Zjij92Tj4hLAJLNhPphwPhV", "fee": 3600000, "feeAssetId": null, "timestamp": 1693659227567, "version": 2, "chainId": 84, "sender": "3N8y4wxX3JC4TdrCJBXX16SjWf6X256hrep", "senderPublicKey": "7v5L7QkXxfkirALdyqmox38QCsa9jtfAtgUfHTh34eWq", "proofs": [ "3cQsyUUMKa3ifS8XeGmtPnJTAeDpAmBcvHA6F8rUq4HYASdcn9LwSq5GnHafwE8fcc2gzBinLRSSDs1eijpYhwBZ" ], "script": "base64:BgI7CAISBAoCCBgSAwoBCBIECgIRERIECgIRERIDCgEREgQKAgEBEgQKAggIEgUKAwgICBIDCgEREgMKAQhTAAd4cFRyYWRlAJBOAAd4cENyYWZ0AJBOAAp4cFNlbGxUb0VzAJBOAAZ4cFNob3AAkE4ACkxBTkRQUkVGSVgCBExBTkQABk5VTVJFUwAGAA9ERUZBVUxUTE9DQVRJT04CD0FmcmljYV9GX0FmcmljYQAQUkVTT1VSQ0VQUklDRU1JTgDVtQIADUVTTUFYUEFDS0FHRVMAAwAJRVNCVVlDT0VGAAQACHJlc1R5cGVzCQDMCAICA09pbAkAzAgCAgNPcmUJAMwIAgIEV29vZAkAzAgCAgRTYW5kCQDMCAICBENsYXkJAMwIAgIHT3JnYW5pYwUDbmlsAAhtYXRUeXBlcwkAzAgCAgRGdWVsCQDMCAICBU1ldGFsCQDMCAICBVBsYW5rCQDMCAICBUdsYXNzCQDMCAICB1BsYXN0aWMJAMwIAgIHUHJvdGVpbgUDbmlsAAlwcm9kVHlwZXMJAMwIAgIQRmlyc3QgQWlkIEtpdCBMMQkAzAgCAhBGaXJzdCBBaWQgS2l0IEwyCQDMCAICEEZpcnN0IEFpZCBLaXQgTDMJAMwIAgILQmFja3BhY2sgTDEJAMwIAgILQmFja3BhY2sgTDIJAMwIAgILQmFja3BhY2sgTDMJAMwIAgIORm9vZCBSYXRpb24gTDEJAMwIAgIORm9vZCBSYXRpb24gTDIJAMwIAgIORm9vZCBSYXRpb24gTDMJAMwIAgILSmV0IFBhY2sgTDEJAMwIAgILSmV0IFBhY2sgTDIJAMwIAgILSmV0IFBhY2sgTDMJAMwIAgIJU2hpZWxkIEwxCQDMCAICCVNoaWVsZCBMMgkAzAgCAglTaGllbGQgTDMJAMwIAgIHTWluZSBMMQkAzAgCAgdNaW5lIEwyCQDMCAICB01pbmUgTDMJAMwIAgIHVHJhcCBMMQkAzAgCAgdUcmFwIEwyCQDMCAICB1RyYXAgTDMFA25pbAAKY29udGluZW50cwkAzAgCAghBbWVyaWNhcwkAzAgCAgZFdXJvcGUJAMwIAgIEQXNpYQkAzAgCAgZBZnJpY2EJAMwIAgIHT2NlYW5pYQUDbmlsAAlDT0VGRjJNQVQAgK3iBAAQcHJvZHVjdGlvbk1hdHJpeAkAzAgCAiU4XzhfOF8xN18xN180Ml8xMl8wXzMwXzAsMCwwLDAsMCwwLDBfCQDMCAICJThfOF84XzE3XzE3XzQyXzI0XzBfNjBfMCwwLDUsMiwwLDAsMF8JAMwIAgInOF84XzhfMTdfMTdfNDJfMzZfMF8xMjBfMCwwLDEwLDQsMCwwLDBfCQDMCAICKThfMTlfMTlfOF8yN18xOV8yNl8xXzIwXzAsMCwwLDAsMCwwLDBfMDAxCQDMCAICKThfMTlfMTlfOF8yN18xOV81Ml8xXzQwXzAsMCwwLDAsMCwwLDBfMDAxCQDMCAICKThfMTlfMTlfOF8yN18xOV83OF8xXzgwXzAsMCwwLDAsMCwwLDBfMDAxCQDMCAICJThfOF84XzhfOF82MF8xM18yXzJfMCwwLDAsMCwwLDAsMF8wMTEJAMwIAgIlOF84XzhfOF84XzYwXzI2XzJfNF8wLDAsMCwwLDAsMCwwXzAxMQkAzAgCAiU4XzhfOF84XzhfNjBfMzlfMl84XzAsMCwwLDAsMCwwLDBfMDExCQDMCAICKTMwXzMwXzNfMTdfMTdfM18zMF8zXzMwXzAsMCwwLDAsMCwwLDBfMTExCQDMCAICKTMwXzMwXzNfMTdfMTdfM182MF8zXzUwXzAsMCwwLDAsMCwwLDBfMTExCQDMCAICKTMwXzMwXzNfMTdfMTdfM185MF8zXzcwXzAsMCwwLDAsMCwwLDBfMTExCQDMCAICKzE4XzE4XzEwXzE4XzE4XzE4XzExXzRfMTBfMCwwLDAsMCwwLDAsMF8yMDEJAMwIAgIrMThfMThfMTBfMThfMThfMThfMjJfNF8yMF8wLDAsMCwwLDAsMCwwXzIwMQkAzAgCAisxOF8xOF8xMF8xOF8xOF8xOF8zM180XzMwXzAsMCwwLDAsMCwwLDBfMjAxCQDMCAICKjRfMTNfMjJfNF8zNV8yMl8yM18wXzUwLDEsMF8wLDAsMCwwLDAsMCwwXwkAzAgCAio0XzEzXzIyXzRfMzVfMjJfNDZfMF81MCwxLDFfMCwyLDUsMCwwLDAsMF8JAMwIAgIrNF8xM18yMl80XzM1XzIyXzY5XzBfNTAsMiwxXzAsNSwxMCwwLDAsMCwwXwkAzAgCAio1XzI1XzQwXzVfMTBfMTVfMjBfMV8zMCwxLDFfMCwwLDAsMCwwLDAsMF8JAMwIAgIqNV8yNV80MF81XzEwXzE1XzQwXzFfMzAsMSwyXzIsMSwzLDAsMCwwLDBfCQDMCAICKjVfMjVfNDBfNV8xMF8xNV82MF8xXzMwLDEsM181LDIsOCwwLDAsMCwwXwUDbmlsAAlySWR4Q29lZmYABgANcklkeENvbnRpbmVudAAHAApSRUNJUEVTSVpFAAsADlBST0RVQ1RQS0dTSVpFAAoAC3doSWR4TGV2ZWxzAAAACHdoSWR4UmVzAAEACHdoSWR4TWF0AAIACXdoSWR4UHJvZAADAAl3aElkeExPRlQABAAJdm9sTG9ja2VkAAAACHZvbFRvdGFsAAMACmJwSWR4TGV2ZWwAAAAIYnBJZHhSZXMAAQAIYnBJZHhNYXQAAgAJYnBJZHhQcm9kAAMBFWtleUxhbmRBc3NldElkVG9Pd25lcgEHYXNzZXRJZAkArAICAgluZnRPd25lcl8FB2Fzc2V0SWQBFmtleVN0YWtlZFRpbWVCeUFzc2V0SWQBB2Fzc2V0SWQJAKwCAgILc3Rha2VkVGltZV8FB2Fzc2V0SWQBD2tleUFkZHJlc3NSZWZCeQEEYWRkcgkArAICAglhY2NSZWZCeV8FBGFkZHIBFGtleVN0YWtlZER1Y2tCeU93bmVyAQlvd25lckFkZHIJAKwCAgISc3Rha2VkRHVja0J5T3duZXJfBQlvd25lckFkZHIBEWtleUJhY2twYWNrQnlEdWNrAQtkdWNrQXNzZXRJZAkArAICAgliYWNrUGFja18FC2R1Y2tBc3NldElkAQ9rZXlEdWNrTG9jYXRpb24BC2R1Y2tBc3NldElkCQCsAgICDWR1Y2tMb2NhdGlvbl8FC2R1Y2tBc3NldElkAQ5rZXlPcmRlckJ5TGFuZAELbGFuZEFzc2V0SWQJAKwCAgIKbGFuZE9yZGVyXwULbGFuZEFzc2V0SWQBDmtleUVzV2FyZWhvdXNlAAIaZW1lcmdlbmN5V2FyZWhvdXNlUHJvZHVjdHMAD2xvY0lkeENvbnRpbmVudAAAAApsb2NJZHhUeXBlAAEACGxvY0lkeElkAAIBEmdldFJlY2lwZU1hdGVyaWFscwEGcmVjaXBlCQBoAgkBDXBhcnNlSW50VmFsdWUBCQCRAwIFBnJlY2lwZQUJcklkeENvZWZmBQlDT0VGRjJNQVQABWNoYWluCQDJAQIJAMoBAggFBHRoaXMFYnl0ZXMAAQABAAt1c2R0QXNzZXRJZAQHJG1hdGNoMAUFY2hhaW4DCQAAAgEBVwUHJG1hdGNoMAEghNp6sggDP07Ru8qO7ouTvMmC3Qtd+geWqNQj+agP/7kDCQAAAgEBVAUHJG1hdGNoMAEgVbHYn3KHgu/l41uNrAWrZd6aQ6EvFrsF8xq3h6XxxRgJAAIBAg1Vbmtub3duIGNoYWluABVkZWZhdWx0UmVzdEFkZHJlc3NTdHIEByRtYXRjaDAFBWNoYWluAwkAAAIBAVcFByRtYXRjaDACIzNQUUN1dkZidmg0TGtQVW5yblUxejNqbmJBMXA5bTNXTmh2AwkAAAIBAVQFByRtYXRjaDACIzNNdW1rR0d6dENLQVhwV0RxeGtkZG9mcVhTVWJxUWt2U0p5CQACAQINVW5rbm93biBjaGFpbgADU0VQAgJfXwAFTVVMVDYAwIQ9AAVNVUxUOACAwtcvAAZNVUxUMTAAgMivoCUADk1JTlNIT1BQQVlNRU5UAKCNBgAFSVRFUjYJAMwIAgAACQDMCAIAAQkAzAgCAAIJAMwIAgADCQDMCAIABAkAzAgCAAUFA25pbAEPZ2V0U3RyaW5nT3JGYWlsAgdhZGRyZXNzA2tleQkBE3ZhbHVlT3JFcnJvck1lc3NhZ2UCCQCdCAIFB2FkZHJlc3MFA2tleQkAuQkCCQDMCAICCm1hbmRhdG9yeSAJAMwIAgkApQgBBQdhZGRyZXNzCQDMCAICAS4JAMwIAgUDa2V5CQDMCAICDyBpcyBub3QgZGVmaW5lZAUDbmlsAgAAEUlkeENmZ1N0YWtpbmdEYXBwAAEBCmtleVJlc3RDZmcAAg4lc19fcmVzdENvbmZpZwEOa2V5UmVzdEFkZHJlc3MAAgwlc19fcmVzdEFkZHIBEXJlYWRSZXN0Q2ZnT3JGYWlsAQRyZXN0CQC8CQIJAQ9nZXRTdHJpbmdPckZhaWwCBQRyZXN0CQEKa2V5UmVzdENmZwAFA1NFUAEYZ2V0Q29udHJhY3RBZGRyZXNzT3JGYWlsAgdyZXN0Q2ZnA2lkeAkBE3ZhbHVlT3JFcnJvck1lc3NhZ2UCCQCmCAEJAJEDAgUHcmVzdENmZwUDaWR4CQCsAgICKlJlc3QgY2ZnIGRvZXNuJ3QgY29udGFpbiBhZGRyZXNzIGF0IGluZGV4IAkApAMBBQNpZHgADHJlc3RDb250cmFjdAkBEUBleHRyTmF0aXZlKDEwNjIpAQkBC3ZhbHVlT3JFbHNlAgkAnQgCBQR0aGlzCQEOa2V5UmVzdEFkZHJlc3MABRVkZWZhdWx0UmVzdEFkZHJlc3NTdHIAB3Jlc3RDZmcJARFyZWFkUmVzdENmZ09yRmFpbAEFDHJlc3RDb250cmFjdAAPc3Rha2luZ0NvbnRyYWN0CQEYZ2V0Q29udHJhY3RBZGRyZXNzT3JGYWlsAgUHcmVzdENmZwURSWR4Q2ZnU3Rha2luZ0RhcHABCGFzU3RyaW5nAQF2BAckbWF0Y2gwBQF2AwkAAQIFByRtYXRjaDACBlN0cmluZwQBcwUHJG1hdGNoMAUBcwkAAgECGGZhaWwgdG8gY2FzdCBpbnRvIFN0cmluZwEFYXNJbnQBAXYEByRtYXRjaDAFAXYDCQABAgUHJG1hdGNoMAIDSW50BAFuBQckbWF0Y2gwBQFuCQACAQIVZmFpbCB0byBjYXN0IGludG8gSW50AQprZXlCbG9ja2VkAAIQY29udHJhY3RzQmxvY2tlZAEKZml4ZWRQb2ludAIDdmFsCGRlY2ltYWxzBAZ0ZW5Qb3cJAGwGAAoAAAUIZGVjaW1hbHMAAAAABQRET1dOBAdsb3dQYXJ0CQCkAwEJAGoCBQN2YWwFBnRlblBvdwQGemVyb2VzCQCwAgIJAKQDAQUGdGVuUG93CQBkAgABCQCxAgEFB2xvd1BhcnQJAKwCAgkArAICCQCsAgIJAKQDAQkAaQIFA3ZhbAUGdGVuUG93AgEuBQZ6ZXJvZXMFB2xvd1BhcnQAE0ZBQ1RPUllNQVhXQVJFSE9VU0UAgMivoCUADlNFTExNVUxUSVBMSUVSAMgBAA1CVVlNVUxUSVBMSUVSAKwCAApBVUNUSU9ORkVFAJBOAR5rZXlGYWN0b3J5V2FyZWhvdXNlQnlJZEFuZFR5cGUCCWZhY3RvcnlJZAdyZXNUeXBlCQCsAgIJAKwCAgkArAICAhtmYWN0b3J5V2hCeUNvbnRpbmVudEFuZFJlc18FCWZhY3RvcnlJZAIBXwkApAMBBQdyZXNUeXBlAAlvcmRJZHhSZXMAAAAJb3JkSWR4TWF0AAEACm9yZElkeFByb2QAAgEIZ2V0T3JkZXIBBm9yZEtleQQBcAkAtQkCCQELdmFsdWVPckVsc2UCCQCiCAEFBm9yZEtleQIwMEAwXzBAMF8wQDBfMEAwXzBAMF8wQDA6MEAwXzBAMF8wQDBfMEAwXzBAMF8wQDA6AgE6CQDMCAIDCQAAAgkAkAMBCQC1CQIJAJEDAgUBcAUJb3JkSWR4UmVzAgFfBQZOVU1SRVMJAJEDAgUBcAUJb3JkSWR4UmVzAhcwQDBfMEAwXzBAMF8wQDBfMEAwXzBAMAkAzAgCAwkAAAIJAJADAQkAtQkCCQCRAwIFAXAFCW9yZElkeE1hdAIBXwUGTlVNUkVTCQCRAwIFAXAFCW9yZElkeE1hdAIXMEAwXzBAMF8wQDBfMEAwXzBAMF8wQDAJAMwIAgkAkQMCBQFwBQpvcmRJZHhQcm9kBQNuaWwBCHRvVm9sdW1lAwZhbW91bnQHcGtnU2l6ZQlpc1Byb2R1Y3QDBQlpc1Byb2R1Y3QEBHBrZ3MDCQBnAgUGYW1vdW50AAAJAGkCCQBlAgkAZAIFBmFtb3VudAUHcGtnU2l6ZQABBQdwa2dTaXplCQEBLQEJAGkCCQBlAgkAZAIJAQEtAQUGYW1vdW50BQdwa2dTaXplAAEFB3BrZ1NpemUJAGgCBQRwa2dzBQVNVUxUOAUGYW1vdW50AQxzZWxsSW50ZXJuYWwEBWxvY0lkB3Jlc1R5cGUGYW1vdW50CG1pblByaWNlBAV3aEtleQkBHmtleUZhY3RvcnlXYXJlaG91c2VCeUlkQW5kVHlwZQIFBWxvY0lkBQdyZXNUeXBlBAJ3MAkBC3ZhbHVlT3JFbHNlAgkAnwgBBQV3aEtleQAABAJyMAMJAGYCBQJ3MAUTRkFDVE9SWU1BWFdBUkVIT1VTRQAAAwkAZgIJAGQCBQJ3MAUGYW1vdW50BRNGQUNUT1JZTUFYV0FSRUhPVVNFCQBlAgUTRkFDVE9SWU1BWFdBUkVIT1VTRQUCdzAFBmFtb3VudAQMdXNkdFJlY2VpdmVkCQBkAgkAawMFAnIwCQBlAgkAaAIFDlNFTExNVUxUSVBMSUVSBRBSRVNPVVJDRVBSSUNFTUlOCQBrAwkAZAIJAGgCAGQFAncwCQBoAgAyBQJyMAUQUkVTT1VSQ0VQUklDRU1JTgUTRkFDVE9SWU1BWFdBUkVIT1VTRQUGTVVMVDEwCQBrAwkAZQIFBmFtb3VudAUCcjAFEFJFU09VUkNFUFJJQ0VNSU4FBU1VTFQ4BAVtaW45OQkAZQIFCG1pblByaWNlCQBpAgUIbWluUHJpY2UAZAMJAGYCCQBoAgUFbWluOTkFBmFtb3VudAkAaAIFDHVzZHRSZWNlaXZlZAUFTVVMVDgJAAIBCQCsAgIJAKwCAgkArAICCQCsAgIJAKwCAgkArAICCQCsAgIJAKwCAgkArAICCQCsAgICD0FjdHVhbCBwcmljZSA9IAkApAMBBQx1c2R0UmVjZWl2ZWQCAyAvIAkApAMBBQZhbW91bnQCDiA8IG1pblByaWNlID0gCQCkAwEFCG1pblByaWNlAgMsICgFBWxvY0lkAgIsIAkAkQMCBQhyZXNUeXBlcwUHcmVzVHlwZQIBKQkAlAoCCQEMSW50ZWdlckVudHJ5AgUFd2hLZXkJAGQCBQJ3MAUGYW1vdW50BQx1c2R0UmVjZWl2ZWQBC2J1eUludGVybmFsBAVsb2NJZAdtYXRUeXBlBmFtb3VudAhtYXhQcmljZQQFd2hLZXkJAR5rZXlGYWN0b3J5V2FyZWhvdXNlQnlJZEFuZFR5cGUCBQVsb2NJZAUHbWF0VHlwZQQCdzAJAQt2YWx1ZU9yRWxzZQIJAJ8IAQUFd2hLZXkAAAQCbTEDCQBmAgUCdzAFE0ZBQ1RPUllNQVhXQVJFSE9VU0UJAJcDAQkAzAgCBQZhbW91bnQJAMwIAgkAZQIFAncwBRNGQUNUT1JZTUFYV0FSRUhPVVNFBQNuaWwAAAQCbTAJAJcDAQkAzAgCBQJ3MAkAzAgCCQBlAgUGYW1vdW50BQJtMQUDbmlsBAFtCQBkAgUCbTAFAm0xBAl1c2R0U3BlbnQJAGQCCQBrAwUCbTAJAGUCCQBoAgUNQlVZTVVMVElQTElFUgUQUkVTT1VSQ0VQUklDRU1JTgkAawMJAGUCCQBoAgBkBQJ3MAkAaAIAMgUCbTAFEFJFU09VUkNFUFJJQ0VNSU4FE0ZBQ1RPUllNQVhXQVJFSE9VU0UFBk1VTFQxMAkAawMFAm0xCQBoAgACBRBSRVNPVVJDRVBSSUNFTUlOBQVNVUxUOAQGbWF4MTAxCQBkAgUIbWF4UHJpY2UJAGkCBQhtYXhQcmljZQBkAwkAZgIJAGgCBQl1c2R0U3BlbnQFBU1VTFQ4CQBoAgUGbWF4MTAxBQFtCQACAQkArAICCQCsAgIJAKwCAgkArAICCQCsAgIJAKwCAgkArAICCQCsAgIJAKwCAgkArAICAg9BY3R1YWwgcHJpY2UgPSAJAKQDAQUJdXNkdFNwZW50AgMgLyAJAKQDAQUBbQIOID4gbWF4UHJpY2UgPSAJAKQDAQUIbWF4UHJpY2UCAywgKAUFbG9jSWQCAiwgCQCRAwIFCG1hdFR5cGVzBQdtYXRUeXBlAgEpCQCVCgMJAQxJbnRlZ2VyRW50cnkCBQV3aEtleQkAZQIFAncwBQFtBQl1c2R0U3BlbnQFAW0BC2dldEJhY2twYWNrAQVicEtleQQBcAkAtQkCCQELdmFsdWVPckVsc2UCCQCdCAIFD3N0YWtpbmdDb250cmFjdAUFYnBLZXkCGjA6MF8wXzBfMF8wXzA6MF8wXzBfMF8wXzA6AgE6CQDMCAIJAKQDAQkBC3ZhbHVlT3JFbHNlAgkAtgkBCQCRAwIFAXAFCmJwSWR4TGV2ZWwAAAkAzAgCAwkAAAIJAJADAQkAtQkCCQCRAwIFAXAFCGJwSWR4UmVzAgFfBQZOVU1SRVMJAJEDAgUBcAUIYnBJZHhSZXMCCzBfMF8wXzBfMF8wCQDMCAIDCQAAAgkAkAMBCQC1CQIJAJEDAgUBcAUIYnBJZHhNYXQCAV8FBk5VTVJFUwkAkQMCBQFwBQhicElkeE1hdAILMF8wXzBfMF8wXzAJAMwIAgkAkQMCBQFwBQlicElkeFByb2QFA25pbAEMY2hlY2tCbG9ja2VkAAMJAQt2YWx1ZU9yRWxzZQIJAJsIAgUPc3Rha2luZ0NvbnRyYWN0CQEKa2V5QmxvY2tlZAAHCQACAQIfQ29udHJhY3RzIGFyZSB1bmRlciBtYWludGVuYW5jZQUEdW5pdAEGcHJvbG9nAAkBBWFzSW50AQkA/AcEBQ9zdGFraW5nQ29udHJhY3QCCnNhdmVMYXN0VHgFA25pbAUDbmlsAQlzZXRDb21tb24CA2FjYwRpdGVtBAFqCAUDYWNjAl8xBAZpc1Byb2QIBQNhY2MCXzgECWl0ZW1QYXJ0cwkAtQkCBQRpdGVtAgFAAwkBAiE9AgkAkAMBBQlpdGVtUGFydHMAAgkAAgECLkluY29ycmVjdCBvcmRlciBmb3JtYXQsIHNob3VsZCBiZSBhbW91bnRAcHJpY2UECG5ld09yZEFtCQENcGFyc2VJbnRWYWx1ZQEJAJEDAgUJaXRlbVBhcnRzAAAECG5ld09yZFByCQENcGFyc2VJbnRWYWx1ZQEJAJEDAgUJaXRlbVBhcnRzAAEECW5ld09yZFVzZAkAawMFCG5ld09yZEFtBQhuZXdPcmRQcgUFTVVMVDgECW5ld09yZFZvbAkBCHRvVm9sdW1lAwUIbmV3T3JkQW0FDlBST0RVQ1RQS0dTSVpFBQZpc1Byb2QEBndoSW5pdAMJAGYCCQCQAwEIBQNhY2MCXzYFAWoJAQ1wYXJzZUludFZhbHVlAQkAkQMCCAUDYWNjAl82BQFqAAAEC2N1ck9yZFBhcnRzCQC1CQIDCQBmAgkAkAMBCAUDYWNjAl83BQFqCQCRAwIIBQNhY2MCXzcFAWoCAzBAMAIBQAQIY3VyT3JkQW0JAQ1wYXJzZUludFZhbHVlAQkAkQMCBQtjdXJPcmRQYXJ0cwAABAhjdXJPcmRQcgkBDXBhcnNlSW50VmFsdWUBCQCRAwIFC2N1ck9yZFBhcnRzAAEDAwkAZgIAAAUIY3VyT3JkUHIGCQBmAgAABQhuZXdPcmRQcgkAAgECF1ByaWNlIGNhbid0IGJlIG5lZ2F0aXZlBAljdXJPcmRVc2QJAGsDBQhjdXJPcmRBbQUIY3VyT3JkUHIFBU1VTFQ4AwkAAAIFCG5ld09yZEFtAAADCQBmAgUIY3VyT3JkQW0AAAkAmwoJCQBkAgUBagABCQDNCAIIBQNhY2MCXzIJAKQDAQUGd2hJbml0CAUDYWNjAl8zCAUDYWNjAl80CQBlAggFA2FjYwJfNQUJY3VyT3JkVXNkCAUDYWNjAl82CAUDYWNjAl83BQZpc1Byb2QJAGQCCAUDYWNjAl85CQEIdG9Wb2x1bWUDBQZ3aEluaXQFDlBST0RVQ1RQS0dTSVpFBQZpc1Byb2QJAJsKCQkAZAIFAWoAAQkAzQgCCAUDYWNjAl8yCQCkAwEJAGUCBQZ3aEluaXQFCGN1ck9yZEFtCAUDYWNjAl8zCAUDYWNjAl80CAUDYWNjAl81CAUDYWNjAl82CAUDYWNjAl83BQZpc1Byb2QJAGQCCAUDYWNjAl85CQEIdG9Wb2x1bWUDCQBlAgUGd2hJbml0BQhjdXJPcmRBbQUOUFJPRFVDVFBLR1NJWkUFBmlzUHJvZAMJAGYCBQhuZXdPcmRBbQAAAwkAZgIAAAUIY3VyT3JkQW0JAJsKCQkAZAIFAWoAAQkAzQgCCAUDYWNjAl8yCQCkAwEJAGUCBQZ3aEluaXQFCGN1ck9yZEFtCQBkAggFA2FjYwJfMwUJbmV3T3JkVm9sCAUDYWNjAl80CQBkAggFA2FjYwJfNQUJbmV3T3JkVXNkCAUDYWNjAl82CAUDYWNjAl83BQZpc1Byb2QJAQh0b1ZvbHVtZQMJAGUCBQZ3aEluaXQFCGN1ck9yZEFtBQ5QUk9EVUNUUEtHU0laRQUGaXNQcm9kCQCbCgkJAGQCBQFqAAEJAM0IAggFA2FjYwJfMgkApAMBBQZ3aEluaXQJAGQCCAUDYWNjAl8zBQluZXdPcmRWb2wIBQNhY2MCXzQJAGUCCQBkAggFA2FjYwJfNQUJbmV3T3JkVXNkBQljdXJPcmRVc2QIBQNhY2MCXzYIBQNhY2MCXzcFBmlzUHJvZAkBCHRvVm9sdW1lAwUGd2hJbml0BQ5QUk9EVUNUUEtHU0laRQUGaXNQcm9kAwkAZgIAAAUIY3VyT3JkQW0EBmFtRGlmZgkAZQIFCGN1ck9yZEFtBQhuZXdPcmRBbQMJAGYCAAAJAGUCBQZ3aEluaXQFBmFtRGlmZgkAAgEJAKwCAgkArAICCQCsAgIJAKwCAgIQQXR0ZW1wdCB0byB0YWtlIAkApAMBBQZhbURpZmYCGiBmcm9tIHdhcmVob3VzZSwgYnV0IG9ubHkgCQCkAwEFBndoSW5pdAIKIGF2YWlsYWJsZQkAmwoJCQBkAgUBagABCQDNCAIIBQNhY2MCXzIJAKQDAQkAZQIFBndoSW5pdAUGYW1EaWZmCAUDYWNjAl8zCQBlAggFA2FjYwJfNAUJbmV3T3JkVm9sCAUDYWNjAl81CAUDYWNjAl82CAUDYWNjAl83BQZpc1Byb2QJAQh0b1ZvbHVtZQMJAGUCBQZ3aEluaXQFBmFtRGlmZgUOUFJPRFVDVFBLR1NJWkUFBmlzUHJvZAMJAGYCAAAJAGQCBQZ3aEluaXQFCG5ld09yZEFtCQACAQkArAICCQCsAgIJAKwCAgkArAICAhBBdHRlbXB0IHRvIHRha2UgCQCkAwEJAQEtAQUIbmV3T3JkQW0CGiBmcm9tIHdhcmVob3VzZSwgYnV0IG9ubHkgCQCkAwEFBndoSW5pdAIKIGF2YWlsYWJsZQkAmwoJCQBkAgUBagABCQDNCAIIBQNhY2MCXzIJAKQDAQkAZAIFBndoSW5pdAUIbmV3T3JkQW0IBQNhY2MCXzMJAGUCCAUDYWNjAl80BQluZXdPcmRWb2wJAGUCCAUDYWNjAl81BQljdXJPcmRVc2QIBQNhY2MCXzYIBQNhY2MCXzcFBmlzUHJvZAkBCHRvVm9sdW1lAwkAZAIFBndoSW5pdAUIbmV3T3JkQW0FDlBST0RVQ1RQS0dTSVpFBQZpc1Byb2QBC3NldEludGVybmFsAwljdXJyZW50V2gKY3VycmVudE9yZAZuZXdPcmQECWN1cnJXaFJlcwkAtQkCCQCRAwIFCWN1cnJlbnRXaAUId2hJZHhSZXMCAV8ECWN1cnJXaE1hdAkAtQkCCQCRAwIFCWN1cnJlbnRXaAUId2hJZHhNYXQCAV8ECmN1cnJXaFByb2QDCQAAAgkAkQMCBQljdXJyZW50V2gFCXdoSWR4UHJvZAIABQNuaWwJALwJAgkAkQMCBQljdXJyZW50V2gFCXdoSWR4UHJvZAIBXwQNY3VycmVudE9yZFJlcwkAtQkCCQCRAwIFCmN1cnJlbnRPcmQFCW9yZElkeFJlcwIBXwQNY3VycmVudE9yZE1hdAkAtQkCCQCRAwIFCmN1cnJlbnRPcmQFCW9yZElkeE1hdAIBXwQOY3VycmVudE9yZFByb2QDCQAAAgkAkQMCBQpjdXJyZW50T3JkBQpvcmRJZHhQcm9kAgAFA25pbAkAvAkCCQCRAwIFCmN1cnJlbnRPcmQFCm9yZElkeFByb2QCAV8DCQECIT0CCQCQAwEFBm5ld09yZAADCQACAQIzbmV3T3JkZXJTdHIgc2hvdWxkIGNvbnRhaW4gZXhhY3RseSAyICc6JyBzZXBhcmF0b3JzBAhyZXNQYXJ0cwkAtQkCCQCRAwIFBm5ld09yZAAAAgFfBAhtYXRQYXJ0cwkAtQkCCQCRAwIFBm5ld09yZAABAgFfBAlwcm9kUGFydHMDCQAAAgkAkQMCBQZuZXdPcmQAAgIABQNuaWwJALwJAgkAkQMCBQZuZXdPcmQAAgIBXwMJAQIhPQIJAJADAQUIcmVzUGFydHMFBk5VTVJFUwkAAgECIEFsbCA2IHJlc291cmNlcyBzaG91bGQgYmUgcGFzc2VkAwkBAiE9AgkAkAMBBQhtYXRQYXJ0cwUGTlVNUkVTCQACAQIgQWxsIDYgbWF0ZXJpYWxzIHNob3VsZCBiZSBwYXNzZWQEAXIKAAIkbAUIcmVzUGFydHMKAAIkcwkAkAMBBQIkbAoABSRhY2MwCQCbCgkAAAUDbmlsAAAAAAAABQljdXJyV2hSZXMFDWN1cnJlbnRPcmRSZXMHAAAKAQUkZjBfMQICJGECJGkDCQBnAgUCJGkFAiRzBQIkYQkBCXNldENvbW1vbgIFAiRhCQCRAwIFAiRsBQIkaQoBBSRmMF8yAgIkYQIkaQMJAGcCBQIkaQUCJHMFAiRhCQACAQITTGlzdCBzaXplIGV4Y2VlZHMgNgkBBSRmMF8yAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgUFJGFjYzAAAAABAAIAAwAEAAUABgQBbQoAAiRsBQhtYXRQYXJ0cwoAAiRzCQCQAwEFAiRsCgAFJGFjYzAJAJsKCQAABQNuaWwIBQFyAl8zCAUBcgJfNAgFAXICXzUFCWN1cnJXaE1hdAUNY3VycmVudE9yZE1hdAcIBQFyAl85CgEFJGYxXzECAiRhAiRpAwkAZwIFAiRpBQIkcwUCJGEJAQlzZXRDb21tb24CBQIkYQkAkQMCBQIkbAUCJGkKAQUkZjFfMgICJGECJGkDCQBnAgUCJGkFAiRzBQIkYQkAAgECE0xpc3Qgc2l6ZSBleGNlZWRzIDYJAQUkZjFfMgIJAQUkZjFfMQIJAQUkZjFfMQIJAQUkZjFfMQIJAQUkZjFfMQIJAQUkZjFfMQIJAQUkZjFfMQIFBSRhY2MwAAAAAQACAAMABAAFAAYEAXADCQECIT0CCQCQAwEFCXByb2RQYXJ0cwAACgACJGwFCXByb2RQYXJ0cwoAAiRzCQCQAwEFAiRsCgAFJGFjYzAJAJsKCQAABQNuaWwIBQFtAl8zCAUBbQJfNAgFAW0CXzUFCmN1cnJXaFByb2QFDmN1cnJlbnRPcmRQcm9kBggFAW0CXzkKAQUkZjJfMQICJGECJGkDCQBnAgUCJGkFAiRzBQIkYQkBCXNldENvbW1vbgIFAiRhCQCRAwIFAiRsBQIkaQoBBSRmMl8yAgIkYQIkaQMJAGcCBQIkaQUCJHMFAiRhCQACAQIUTGlzdCBzaXplIGV4Y2VlZHMgNTAJAQUkZjJfMgIJAQUkZjJfMQIJAQUkZjJfMQIJAQUkZjJfMQIJAQUkZjJfMQIJAQUkZjJfMQIJAQUkZjJfMQIJAQUkZjJfMQIJAQUkZjJfMQIJAQUkZjJfMQIJAQUkZjJfMQIJAQUkZjJfMQIJAQUkZjJfMQIJAQUkZjJfMQIJAQUkZjJfMQIJAQUkZjJfMQIJAQUkZjJfMQIJAQUkZjJfMQIJAQUkZjJfMQIJAQUkZjJfMQIJAQUkZjJfMQIJAQUkZjJfMQIJAQUkZjJfMQIJAQUkZjJfMQIJAQUkZjJfMQIJAQUkZjJfMQIJAQUkZjJfMQIJAQUkZjJfMQIJAQUkZjJfMQIJAQUkZjJfMQIJAQUkZjJfMQIJAQUkZjJfMQIJAQUkZjJfMQIJAQUkZjJfMQIJAQUkZjJfMQIJAQUkZjJfMQIJAQUkZjJfMQIJAQUkZjJfMQIJAQUkZjJfMQIJAQUkZjJfMQIJAQUkZjJfMQIJAQUkZjJfMQIJAQUkZjJfMQIJAQUkZjJfMQIJAQUkZjJfMQIJAQUkZjJfMQIJAQUkZjJfMQIJAQUkZjJfMQIJAQUkZjJfMQIJAQUkZjJfMQIJAQUkZjJfMQIFBSRhY2MwAAAAAQACAAMABAAFAAYABwAIAAkACgALAAwADQAOAA8AEAARABIAEwAUABUAFgAXABgAGQAaABsAHAAdAB4AHwAgACEAIgAjACQAJQAmACcAKAApACoAKwAsAC0ALgAvADAAMQAyCQCbCgkAAAUKY3VycldoUHJvZAgFAW0CXzMIBQFtAl80CAUBbQJfNQUKY3VycldoUHJvZAUOY3VycmVudE9yZFByb2QGCAUBbQJfOQkAmQoHCAUBcgJfMggFAW0CXzIIBQFwAl8yCAUBcAJfMwgFAXACXzQIBQFwAl81CAUBcAJfOQEMYWNjZXB0Q29tbW9uAgNhY2MJYnBPcmRJdGVtBAFqCAUDYWNjAl83BAZpc1Byb2QIBQNhY2MDXzEyBApicE9yZFBhcnRzCQC1CQIFCWJwT3JkSXRlbQIBQAMJAQIhPQIJAJADAQUKYnBPcmRQYXJ0cwACCQACAQIuSW5jb3JyZWN0IG9yZGVyIGZvcm1hdCwgc2hvdWxkIGJlIGFtb3VudEBwcmljZQQHYnBPcmRBbQkBDXBhcnNlSW50VmFsdWUBCQCRAwIFCmJwT3JkUGFydHMAAAQHYnBPcmRQcgkBDXBhcnNlSW50VmFsdWUBCQCRAwIFCmJwT3JkUGFydHMAAQMJAGYCAAAFB2JwT3JkUHIJAAIBAhdQcmljZSBjYW4ndCBiZSBuZWdhdGl2ZQQIYnBPcmRVc2QJAGsDBQdicE9yZEFtBQdicE9yZFByBQVNVUxUOAQGYnBJbml0AwkAZgIJAJADAQgFA2FjYwJfOAUBagkBDXBhcnNlSW50VmFsdWUBCQCRAwIIBQNhY2MCXzgFAWoAAAQGd2hJbml0AwkAZgIJAJADAQgFA2FjYwJfOQUBagkBDXBhcnNlSW50VmFsdWUBCQCRAwIIBQNhY2MCXzkFAWoAAAQJd2hPcmRJbml0AwkAZgIJAJADAQgFA2FjYwNfMTAFAWoJAJEDAggFA2FjYwNfMTAFAWoCAzBAMAQKd2hPcmRQYXJ0cwkAtQkCBQl3aE9yZEluaXQCAUAEB3doT3JkQW0JAQ1wYXJzZUludFZhbHVlAQkAkQMCBQp3aE9yZFBhcnRzAAAEB3doT3JkUHIJAQ1wYXJzZUludFZhbHVlAQkAkQMCBQp3aE9yZFBhcnRzAAEDAwkBAiE9AgUHYnBPcmRBbQAACQECIT0CBQdicE9yZFByBQd3aE9yZFByBwkAAgEJAKwCAgkArAICCQCsAgIJAKwCAgkArAICAgpQcmljZXMgb2YgCQCRAwIIBQNhY2MDXzExBQFqAhcgZG9uJ3QgbWF0Y2ghIFdIIHByaWNlPQkApAMBBQd3aE9yZFByAg0sIHlvdXIgcHJpY2U9CQCkAwEFB2JwT3JkUHIECHdoT3JkVXNkCQBrAwUHd2hPcmRBbQUHd2hPcmRQcgUFTVVMVDgECGRlbHRhVm9sCQEIdG9Wb2x1bWUDBQdicE9yZEFtBQ5QUk9EVUNUUEtHU0laRQUGaXNQcm9kAwkAAAIFB2JwT3JkQW0AAAkAnwoNCQDNCAIIBQNhY2MCXzEJAKQDAQUGd2hJbml0CQDNCAIIBQNhY2MCXzIFCXdoT3JkSW5pdAkAzQgCCAUDYWNjAl8zCQCkAwEFBmJwSW5pdAgFA2FjYwJfNAgFA2FjYwJfNQgFA2FjYwJfNgkAZAIIBQNhY2MCXzcAAQgFA2FjYwJfOAgFA2FjYwJfOQgFA2FjYwNfMTAIBQNhY2MDXzExBQZpc1Byb2QIBQNhY2MDXzEzAwkAZgIFB2JwT3JkQW0AAAMJAGYCAAAFB3doT3JkQW0DCQBmAgUHYnBPcmRBbQkBAS0BBQd3aE9yZEFtCQACAQkArAICCQCsAgIJAKwCAgkArAICCQCsAgICD0F0dGVtcHQgdG8gYnV5IAkApAMBBQdicE9yZEFtAgQgb2YgCQCRAwIIBQNhY2MDXzExBQFqAhssIGJ1dCB3YXJlaG91c2Ugb25seSBzZWxscyAJAKQDAQkBAS0BBQd3aE9yZEFtCQCfCg0JAM0IAggFA2FjYwJfMQkApAMBBQZ3aEluaXQJAM0IAggFA2FjYwJfMgkArAICCQCsAgIJAKQDAQkAZAIFB3doT3JkQW0FB2JwT3JkQW0CAUAJAKQDAQUHd2hPcmRQcgkAzQgCCAUDYWNjAl8zCQCkAwEJAGQCBQZicEluaXQFB2JwT3JkQW0JAGQCCAUDYWNjAl80BQhkZWx0YVZvbAgFA2FjYwJfNQkAZAIIBQNhY2MCXzYFCGJwT3JkVXNkCQBkAggFA2FjYwJfNwABCAUDYWNjAl84CAUDYWNjAl85CAUDYWNjA18xMAgFA2FjYwNfMTEFBmlzUHJvZAkAZAIIBQNhY2MDXzEzAwUGaXNQcm9kCQBoAgUHYnBPcmRBbQUFTVVMVDgFB2JwT3JkQW0JAAIBCQCsAgIJAKwCAgIPQXR0ZW1wdCB0byBidXkgCQCRAwIIBQNhY2MDXzExBQFqAiAgd2hpbGUgd2FyZWhvdXNlIGRvZXNuJ3Qgc2VsbCBpdAMJAGYCBQd3aE9yZEFtAAADCQBmAgkBAS0BBQdicE9yZEFtBQd3aE9yZEFtCQACAQkArAICCQCsAgIJAKwCAgkArAICCQCsAgICEEF0dGVtcHQgdG8gc2VsbCAJAKQDAQkBAS0BBQdicE9yZEFtAgQgb2YgCQCRAwIIBQNhY2MDXzExBQFqAhosIGJ1dCB3YXJlaG91c2Ugb25seSBidXlzIAkApAMBBQd3aE9yZEFtAwkAZgIJAQEtAQUHYnBPcmRBbQUGYnBJbml0CQACAQkArAICCQCsAgIJAKwCAgkArAICCQCsAgICEEF0dGVtcHQgdG8gc2VsbCAJAKQDAQkBAS0BBQdicE9yZEFtAhQsIGJ1dCB5b3Ugb25seSBoYXZlIAkApAMBBQZicEluaXQCBCBvZiAJAJEDAggFA2FjYwNfMTEFAWoJAJ8KDQkAzQgCCAUDYWNjAl8xCQCkAwEJAGUCBQZ3aEluaXQFB2JwT3JkQW0JAM0IAggFA2FjYwJfMgkArAICCQCsAgIJAKQDAQkAZAIFB3doT3JkQW0FB2JwT3JkQW0CAUAJAKQDAQUHd2hPcmRQcgkAzQgCCAUDYWNjAl8zCQCkAwEJAGQCBQZicEluaXQFB2JwT3JkQW0JAGUCCAUDYWNjAl80BQhkZWx0YVZvbAkAZQIIBQNhY2MCXzUFCGJwT3JkVXNkCAUDYWNjAl82CQBkAggFA2FjYwJfNwABCAUDYWNjAl84CAUDYWNjAl85CAUDYWNjA18xMAgFA2FjYwNfMTEFBmlzUHJvZAkAZQIIBQNhY2MDXzEzAwUGaXNQcm9kCQBoAgUHYnBPcmRBbQUFTVVMVDgFB2JwT3JkQW0JAAIBCQCsAgIJAKwCAgIQQXR0ZW1wdCB0byBzZWxsIAkAkQMCCAUDYWNjA18xMQUBagIfIHdoaWxlIHdhcmVob3VzZSBkb2Vzbid0IGJ1eSBpdAoBaQEacmVjYWxjTG9ja2VkVm9sdW1lUkVBRE9OTFkCC2xhbmRBc3NldElkAndoBApjdXJyZW50T3JkCQEIZ2V0T3JkZXIBCQEOa2V5T3JkZXJCeUxhbmQBBQtsYW5kQXNzZXRJZAQBegkBC3NldEludGVybmFsAwUCd2gFCmN1cnJlbnRPcmQFCmN1cnJlbnRPcmQJAJQKAgUDbmlsCQBkAggFAXoCXzQIBQF6Al81AWkBDWNvbnN0cnVjdG9yVjEBCHJlc3RBZGRyAwkBAiE9AggFAWkGY2FsbGVyBQR0aGlzCQACAQIRUGVybWlzc2lvbiBkZW5pZWQJAMwIAgkBC1N0cmluZ0VudHJ5AgkBDmtleVJlc3RBZGRyZXNzAAUIcmVzdEFkZHIFA25pbAFpAQ1zZWxsUmVzb3VyY2VzAgdhbW91bnRzCW1pblByaWNlcwQMcHJvbG9nUmVzdWx0CQEGcHJvbG9nAAQLZHVja0Fzc2V0SWQJARN2YWx1ZU9yRXJyb3JNZXNzYWdlAgkAnQgCBQ9zdGFraW5nQ29udHJhY3QJARRrZXlTdGFrZWREdWNrQnlPd25lcgEJAKUIAQgFAWkGY2FsbGVyAhxZb3UgZG9uJ3QgaGF2ZSBhIGR1Y2sgc3Rha2VkAwkBAiE9AgkAkAMBCAUBaQhwYXltZW50cwAACQACAQIqc2VsbFJlc291cmNlcyBkb2Vzbid0IHJlcXVpcmUgYW55IHBheW1lbnRzBAtjdXJMb2NhdGlvbgkAtQkCCQELdmFsdWVPckVsc2UCCQCdCAIFD3N0YWtpbmdDb250cmFjdAkBD2tleUR1Y2tMb2NhdGlvbgEFC2R1Y2tBc3NldElkBQ9ERUZBVUxUTE9DQVRJT04CAV8DCQECIT0CCQCRAwIFC2N1ckxvY2F0aW9uBQpsb2NJZHhUeXBlAgFGCQACAQkArAICAi1EdWNrIGxvY2F0aW9uIHR5cGUgc2hvdWxkIGJlIEZhY3RvcnksIGJ1dCBpcyAJAJEDAgULY3VyTG9jYXRpb24FCmxvY0lkeFR5cGUEBWxvY0lkCQCRAwIFC2N1ckxvY2F0aW9uBQhsb2NJZHhJZAQLY3VycmVudFBhY2sJAQtnZXRCYWNrcGFjawEJARFrZXlCYWNrcGFja0J5RHVjawEFC2R1Y2tBc3NldElkBAdyZXNMaXN0CQC1CQIJAJEDAgULY3VycmVudFBhY2sFCGJwSWR4UmVzAgFfCgEFYWRkZXICA2FjYwFqAwkAZgIJAJEDAgUHYW1vdW50cwUBagkBDXBhcnNlSW50VmFsdWUBCQCRAwIFB3Jlc0xpc3QFAWoJAAIBCQCsAgIJAKwCAgkArAICCQCsAgIJAKwCAgIJWW91IGhhdmUgCQCRAwIFB3Jlc0xpc3QFAWoCBCBvZiAJAJEDAgUIcmVzVHlwZXMFAWoCFCwgYnV0IHRyaWVkIHRvIHNlbGwgCQCkAwEJAJEDAgUHYW1vdW50cwUBagMJAGYCAAAJAJEDAgUHYW1vdW50cwUBagkAAgEJAKwCAgkArAICCQCsAgICJVlvdSB0cmllZCB0byBzZWxsIG5lZ2F0aXZlIGFtb3VudCBvZiAJAJEDAgUIcmVzVHlwZXMFAWoCAjogCQCkAwEJAJEDAgUHYW1vdW50cwUBagMJAGYCCQCRAwIFB2Ftb3VudHMFAWoAAAQBYgkBDHNlbGxJbnRlcm5hbAQFBWxvY0lkBQFqCQCRAwIFB2Ftb3VudHMFAWoJAJEDAgUJbWluUHJpY2VzBQFqCQCWCgQJAM0IAggFA2FjYwJfMQgFAWICXzEJAM0IAggFA2FjYwJfMgkApAMBCQBlAgkBDXBhcnNlSW50VmFsdWUBCQCRAwIFB3Jlc0xpc3QFAWoJAJEDAgUHYW1vdW50cwUBagkAZAIIBQNhY2MCXzMIBQFiAl8yCQBkAggFA2FjYwJfNAkAkQMCBQdhbW91bnRzBQFqCQCWCgQIBQNhY2MCXzEJAM0IAggFA2FjYwJfMgkAkQMCBQdyZXNMaXN0BQFqCAUDYWNjAl8zCAUDYWNjAl80BAZtZXJnZWQKAAIkbAUFSVRFUjYKAAIkcwkAkAMBBQIkbAoABSRhY2MwCQCWCgQFA25pbAUDbmlsAAAAAAoBBSRmMF8xAgIkYQIkaQMJAGcCBQIkaQUCJHMFAiRhCQEFYWRkZXICBQIkYQkAkQMCBQIkbAUCJGkKAQUkZjBfMgICJGECJGkDCQBnAgUCJGkFAiRzBQIkYQkAAgECE0xpc3Qgc2l6ZSBleGNlZWRzIDYJAQUkZjBfMgIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIFBSRhY2MwAAAAAQACAAMABAAFAAYEB25ld1BhY2sJALkJAgkAzAgCCQCRAwIFC2N1cnJlbnRQYWNrBQpicElkeExldmVsCQDMCAIJALkJAggFBm1lcmdlZAJfMgIBXwkAzAgCCQCRAwIFC2N1cnJlbnRQYWNrBQhicElkeE1hdAkAzAgCCQCRAwIFC2N1cnJlbnRQYWNrBQlicElkeFByb2QFA25pbAIBOgQGcmVzdWx0CQEIYXNTdHJpbmcBCQD8BwQFD3N0YWtpbmdDb250cmFjdAIOdXBkYXRlQmFja3BhY2sJAMwIAgULZHVja0Fzc2V0SWQJAMwIAgUHbmV3UGFjawUDbmlsBQNuaWwEC3N0YXRzUmVzdWx0CQEFYXNJbnQBCQD8BwQFD3N0YWtpbmdDb250cmFjdAIPdXBkYXRlRHVja1N0YXRzCQDMCAIFC2R1Y2tBc3NldElkCQDMCAIJAGsDBQd4cFRyYWRlCAUGbWVyZ2VkAl80BQVNVUxUOAUDbmlsBQNuaWwJAJQKAgkAzQgCCAUGbWVyZ2VkAl8xCQEOU2NyaXB0VHJhbnNmZXIDCAUBaQZjYWxsZXIIBQZtZXJnZWQCXzMFC3VzZHRBc3NldElkCQCVCgMFBnJlc3VsdAUMcHJvbG9nUmVzdWx0BQtzdGF0c1Jlc3VsdAFpAQxidXlNYXRlcmlhbHMCB2Ftb3VudHMJbWF4UHJpY2VzBAxwcm9sb2dSZXN1bHQJAQZwcm9sb2cABAtkdWNrQXNzZXRJZAkBE3ZhbHVlT3JFcnJvck1lc3NhZ2UCCQCdCAIFD3N0YWtpbmdDb250cmFjdAkBFGtleVN0YWtlZER1Y2tCeU93bmVyAQkApQgBCAUBaQZjYWxsZXICHFlvdSBkb24ndCBoYXZlIGEgZHVjayBzdGFrZWQDCQECIT0CCQCQAwEIBQFpCHBheW1lbnRzAAEJAAIBAiJleGFjdGx5IDEgcGF5bWVudCBtdXN0IGJlIGF0dGFjaGVkBANwbXQJAJEDAggFAWkIcGF5bWVudHMAAAQDYW10CAUDcG10BmFtb3VudAQKcG10QXNzZXRJZAkBE3ZhbHVlT3JFcnJvck1lc3NhZ2UCCAUDcG10B2Fzc2V0SWQCHldBVkVTIGNhbid0IGJlIHVzZWQgYXMgcGF5bWVudAMJAQIhPQIFCnBtdEFzc2V0SWQFC3VzZHRBc3NldElkCQACAQITVVNEVCBwYXltZW50cyBvbmx5IQQLY3VyTG9jYXRpb24JALUJAgkBC3ZhbHVlT3JFbHNlAgkAnQgCBQ9zdGFraW5nQ29udHJhY3QJAQ9rZXlEdWNrTG9jYXRpb24BBQtkdWNrQXNzZXRJZAUPREVGQVVMVExPQ0FUSU9OAgFfAwkBAiE9AgkAkQMCBQtjdXJMb2NhdGlvbgUKbG9jSWR4VHlwZQIBRgkAAgEJAKwCAgItRHVjayBsb2NhdGlvbiB0eXBlIHNob3VsZCBiZSBGYWN0b3J5LCBidXQgaXMgCQCRAwIFC2N1ckxvY2F0aW9uBQpsb2NJZHhUeXBlBAVsb2NJZAkAkQMCBQtjdXJMb2NhdGlvbgUIbG9jSWR4SWQEC2N1cnJlbnRQYWNrCQELZ2V0QmFja3BhY2sBCQERa2V5QmFja3BhY2tCeUR1Y2sBBQtkdWNrQXNzZXRJZAQHbWF0TGlzdAkAtQkCCQCRAwIFC2N1cnJlbnRQYWNrBQhicElkeE1hdAIBXwoBCG1VcGRhdGVyAgNhY2MBagMJAGYCAAAJAJEDAgUHYW1vdW50cwUBagkAAgEJAKwCAgkArAICCQCsAgICJFlvdSB0cmllZCB0byBidXkgbmVnYXRpdmUgYW1vdW50IG9mIAkAkQMCBQhtYXRUeXBlcwUBagICOiAJAKQDAQkAkQMCBQdhbW91bnRzBQFqAwkAZgIJAJEDAgUHYW1vdW50cwUBagAABAFiCQELYnV5SW50ZXJuYWwEBQVsb2NJZAUBagkAkQMCBQdhbW91bnRzBQFqCQCRAwIFCW1heFByaWNlcwUBagkAlgoECQDNCAIIBQNhY2MCXzEIBQFiAl8xCQDNCAIIBQNhY2MCXzIJAKQDAQkAZAIJAQ1wYXJzZUludFZhbHVlAQkAkQMCBQdtYXRMaXN0BQFqCAUBYgJfMwkAZAIIBQNhY2MCXzMIBQFiAl8yCQBkAggFA2FjYwJfNAkAkQMCBQdhbW91bnRzBQFqCQCWCgQIBQNhY2MCXzEJAM0IAggFA2FjYwJfMgkAkQMCBQdtYXRMaXN0BQFqCAUDYWNjAl8zCAUDYWNjAl80BAZtZXJnZWQKAAIkbAUFSVRFUjYKAAIkcwkAkAMBBQIkbAoABSRhY2MwCQCWCgQFA25pbAUDbmlsAAAAAAoBBSRmMF8xAgIkYQIkaQMJAGcCBQIkaQUCJHMFAiRhCQEIbVVwZGF0ZXICBQIkYQkAkQMCBQIkbAUCJGkKAQUkZjBfMgICJGECJGkDCQBnAgUCJGkFAiRzBQIkYQkAAgECE0xpc3Qgc2l6ZSBleGNlZWRzIDYJAQUkZjBfMgIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIFBSRhY2MwAAAAAQACAAMABAAFAAYDCQBmAggFBm1lcmdlZAJfMwUDYW10CQACAQkArAICCQCsAgIJAKwCAgIfSW5zdWZmaWNpZW50IHBheW1lbnQhIEF0dGFjaGVkPQkApAMBBQNhbXQCCywgcmVxdWlyZWQ9CQCkAwEIBQZtZXJnZWQCXzMEB25ld1BhY2sJALkJAgkAzAgCCQCRAwIFC2N1cnJlbnRQYWNrBQpicElkeExldmVsCQDMCAIJAJEDAgULY3VycmVudFBhY2sFCGJwSWR4UmVzCQDMCAIJALkJAggFBm1lcmdlZAJfMgIBXwkAzAgCCQCRAwIFC2N1cnJlbnRQYWNrBQlicElkeFByb2QFA25pbAIBOgQGcmVzdWx0CQEIYXNTdHJpbmcBCQD8BwQFD3N0YWtpbmdDb250cmFjdAIOdXBkYXRlQmFja3BhY2sJAMwIAgULZHVja0Fzc2V0SWQJAMwIAgUHbmV3UGFjawUDbmlsBQNuaWwEBHJlc3QDCQBmAgkAZQIFA2FtdAgFBm1lcmdlZAJfMwAACQDMCAIJAQ5TY3JpcHRUcmFuc2ZlcgMIBQFpBmNhbGxlcgkAZQIFA2FtdAgFBm1lcmdlZAJfMwULdXNkdEFzc2V0SWQFA25pbAUDbmlsBBBhY3Rpdml0aWVzQW1vdW50CQBpAggFBm1lcmdlZAJfMwBkBAtzdGF0c1Jlc3VsdAkBBWFzSW50AQkA/AcEBQ9zdGFraW5nQ29udHJhY3QCD3VwZGF0ZUR1Y2tTdGF0cwkAzAgCBQtkdWNrQXNzZXRJZAkAzAgCCQBrAwUHeHBUcmFkZQgFBm1lcmdlZAJfNAUFTVVMVDgFA25pbAUDbmlsCQCUCgIJAM0IAgkAzggCCAUGbWVyZ2VkAl8xBQRyZXN0CQEOU2NyaXB0VHJhbnNmZXIDBQxyZXN0Q29udHJhY3QFEGFjdGl2aXRpZXNBbW91bnQFC3VzZHRBc3NldElkCQCVCgMFBnJlc3VsdAUMcHJvbG9nUmVzdWx0BQtzdGF0c1Jlc3VsdAFpARFleGNoYW5nZVJlc291cmNlcwEHYW1vdW50cwQMcHJvbG9nUmVzdWx0CQEGcHJvbG9nAAQLZHVja0Fzc2V0SWQJARN2YWx1ZU9yRXJyb3JNZXNzYWdlAgkAnQgCBQ9zdGFraW5nQ29udHJhY3QJARRrZXlTdGFrZWREdWNrQnlPd25lcgEJAKUIAQgFAWkGY2FsbGVyAhxZb3UgZG9uJ3QgaGF2ZSBhIGR1Y2sgc3Rha2VkAwkBAiE9AgkAkAMBCAUBaQhwYXltZW50cwABCQACAQIiZXhhY3RseSAxIHBheW1lbnQgbXVzdCBiZSBhdHRhY2hlZAQDcG10CQCRAwIIBQFpCHBheW1lbnRzAAAEA2FtdAgFA3BtdAZhbW91bnQECnBtdEFzc2V0SWQJARN2YWx1ZU9yRXJyb3JNZXNzYWdlAggFA3BtdAdhc3NldElkAh5XQVZFUyBjYW4ndCBiZSB1c2VkIGFzIHBheW1lbnQDCQECIT0CBQpwbXRBc3NldElkBQt1c2R0QXNzZXRJZAkAAgECE1VTRFQgcGF5bWVudHMgb25seSEEC2N1ckxvY2F0aW9uCQC1CQIJAQt2YWx1ZU9yRWxzZQIJAJ0IAgUPc3Rha2luZ0NvbnRyYWN0CQEPa2V5RHVja0xvY2F0aW9uAQULZHVja0Fzc2V0SWQFD0RFRkFVTFRMT0NBVElPTgIBXwMJAQIhPQIJAJEDAgULY3VyTG9jYXRpb24FCmxvY0lkeFR5cGUCAUYJAAIBCQCsAgICLUR1Y2sgbG9jYXRpb24gdHlwZSBzaG91bGQgYmUgRmFjdG9yeSwgYnV0IGlzIAkAkQMCBQtjdXJMb2NhdGlvbgUKbG9jSWR4VHlwZQQFbG9jSWQJAJEDAgULY3VyTG9jYXRpb24FCGxvY0lkeElkBAtjdXJyZW50UGFjawkBC2dldEJhY2twYWNrAQkBEWtleUJhY2twYWNrQnlEdWNrAQULZHVja0Fzc2V0SWQEB3Jlc0xpc3QJALUJAgkAkQMCBQtjdXJyZW50UGFjawUIYnBJZHhSZXMCAV8EB21hdExpc3QJALUJAgkAkQMCBQtjdXJyZW50UGFjawUIYnBJZHhNYXQCAV8KAQlleGNoYW5nZXICA2FjYwFqBAV3aEtleQkBHmtleUZhY3RvcnlXYXJlaG91c2VCeUlkQW5kVHlwZQIFBWxvY0lkBQFqBAJ3MAkBC3ZhbHVlT3JFbHNlAgkAnwgBBQV3aEtleQAABANhbWoJAJEDAgUHYW1vdW50cwUBagMJAGYCBQNhbWoJAQ1wYXJzZUludFZhbHVlAQkAkQMCBQdyZXNMaXN0BQFqCQACAQkArAICCQCsAgIJAKwCAgkArAICCQCsAgICCVlvdSBoYXZlIAkAkQMCBQdyZXNMaXN0BQFqAgQgb2YgCQCRAwIFCHJlc1R5cGVzBQFqAhgsIGJ1dCB0cmllZCB0byBleGNoYW5nZSAJAKQDAQUDYW1qAwkAZgIAAAUDYW1qCQACAQkArAICCQCsAgIJAKwCAgIpWW91IHRyaWVkIHRvIGV4Y2hhbmdlIG5lZ2F0aXZlIGFtb3VudCBvZiAJAJEDAgUIcmVzVHlwZXMFAWoCAjogCQCkAwEFA2FtagMJAGYCBQNhbWoAAAkAlwoFCQDNCAIIBQNhY2MCXzEJAKQDAQkAZQIJAQ1wYXJzZUludFZhbHVlAQkAkQMCBQdyZXNMaXN0BQFqBQNhbWoJAM0IAggFA2FjYwJfMgkApAMBCQBkAgkBDXBhcnNlSW50VmFsdWUBCQCRAwIFB21hdExpc3QFAWoFA2FtagkAZAIIBQNhY2MCXzMJAGsDBQNhbWoFEFJFU09VUkNFUFJJQ0VNSU4FBU1VTFQ4CQDNCAIIBQNhY2MCXzQJAQxJbnRlZ2VyRW50cnkCBQV3aEtleQUCdzAJAGQCCAUDYWNjAl81BQNhbWoJAJcKBQkAzQgCCAUDYWNjAl8xCQCRAwIFB3Jlc0xpc3QFAWoJAM0IAggFA2FjYwJfMgkAkQMCBQdtYXRMaXN0BQFqCAUDYWNjAl8zCAUDYWNjAl80CAUDYWNjAl81BAZtZXJnZWQKAAIkbAUFSVRFUjYKAAIkcwkAkAMBBQIkbAoABSRhY2MwCQCXCgUFA25pbAUDbmlsAAAFA25pbAAACgEFJGYwXzECAiRhAiRpAwkAZwIFAiRpBQIkcwUCJGEJAQlleGNoYW5nZXICBQIkYQkAkQMCBQIkbAUCJGkKAQUkZjBfMgICJGECJGkDCQBnAgUCJGkFAiRzBQIkYQkAAgECE0xpc3Qgc2l6ZSBleGNlZWRzIDYJAQUkZjBfMgIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIFBSRhY2MwAAAAAQACAAMABAAFAAYDCQBmAggFBm1lcmdlZAJfMwUDYW10CQACAQkArAICCQCsAgIJAKwCAgIfSW5zdWZmaWNpZW50IHBheW1lbnQhIEF0dGFjaGVkPQkApAMBBQNhbXQCCywgcmVxdWlyZWQ9CQCkAwEIBQZtZXJnZWQCXzMEB25ld1BhY2sJALkJAgkAzAgCCQCRAwIFC2N1cnJlbnRQYWNrBQpicElkeExldmVsCQDMCAIJALkJAggFBm1lcmdlZAJfMQIBXwkAzAgCCQC5CQIIBQZtZXJnZWQCXzICAV8JAMwIAgkAkQMCBQtjdXJyZW50UGFjawUJYnBJZHhQcm9kBQNuaWwCAToEBnJlc3VsdAkBCGFzU3RyaW5nAQkA/AcEBQ9zdGFraW5nQ29udHJhY3QCDnVwZGF0ZUJhY2twYWNrCQDMCAIFC2R1Y2tBc3NldElkCQDMCAIFB25ld1BhY2sFA25pbAUDbmlsBARyZXN0AwkAZgIJAGUCBQNhbXQIBQZtZXJnZWQCXzMAAAkAzAgCCQEOU2NyaXB0VHJhbnNmZXIDCAUBaQZjYWxsZXIJAGUCBQNhbXQIBQZtZXJnZWQCXzMFC3VzZHRBc3NldElkBQNuaWwFA25pbAQQYWN0aXZpdGllc0Ftb3VudAkAaQIIBQZtZXJnZWQCXzMAZAQLc3RhdHNSZXN1bHQJAQVhc0ludAEJAPwHBAUPc3Rha2luZ0NvbnRyYWN0Ag91cGRhdGVEdWNrU3RhdHMJAMwIAgULZHVja0Fzc2V0SWQJAMwIAgkAawMFB3hwVHJhZGUIBQZtZXJnZWQCXzUFBU1VTFQ4BQNuaWwFA25pbAkAlAoCCQDNCAIJAM4IAgUEcmVzdAgFBm1lcmdlZAJfNAkBDlNjcmlwdFRyYW5zZmVyAwUMcmVzdENvbnRyYWN0BRBhY3Rpdml0aWVzQW1vdW50BQt1c2R0QXNzZXRJZAkAlQoDBQZyZXN1bHQFDHByb2xvZ1Jlc3VsdAULc3RhdHNSZXN1bHQBaQEKY3JhZnRHb29kcwIKcHJvZHVjdElkeAhxdWFudGl0eQQMcHJvbG9nUmVzdWx0CQEGcHJvbG9nAAMJAQIhPQIJAJADAQgFAWkIcGF5bWVudHMAAQkAAgECImV4YWN0bHkgMSBwYXltZW50IG11c3QgYmUgYXR0YWNoZWQEA3BtdAkAkQMCCAUBaQhwYXltZW50cwAABANhbXQIBQNwbXQGYW1vdW50BApwbXRBc3NldElkCQETdmFsdWVPckVycm9yTWVzc2FnZQIIBQNwbXQHYXNzZXRJZAIeV0FWRVMgY2FuJ3QgYmUgdXNlZCBhcyBwYXltZW50AwkBAiE9AgUKcG10QXNzZXRJZAULdXNkdEFzc2V0SWQJAAIBAhNVU0RUIHBheW1lbnRzIG9ubHkhAwkBAiE9AgUDYW10BQVNVUxUNgkAAgECKmV4YWN0bHkgMSBVU0RUIG11c3QgYmUgYXR0YWNoZWQgYXMgcGF5bWVudAMJAGcCAAAFCHF1YW50aXR5CQACAQIbUXVhbnRpdHkgc2hvdWxkIGJlIHBvc2l0aXZlBAtkdWNrQXNzZXRJZAkBE3ZhbHVlT3JFcnJvck1lc3NhZ2UCCQCdCAIFD3N0YWtpbmdDb250cmFjdAkBFGtleVN0YWtlZER1Y2tCeU93bmVyAQkApQgBCAUBaQZjYWxsZXICHFlvdSBkb24ndCBoYXZlIGEgZHVjayBzdGFrZWQEC2N1ckxvY2F0aW9uCQC1CQIJAQt2YWx1ZU9yRWxzZQIJAJ0IAgUPc3Rha2luZ0NvbnRyYWN0CQEPa2V5RHVja0xvY2F0aW9uAQULZHVja0Fzc2V0SWQFD0RFRkFVTFRMT0NBVElPTgIBXwMJAQIhPQIJAJEDAgULY3VyTG9jYXRpb24FCmxvY0lkeFR5cGUCAU0JAAIBCQCsAgICMUR1Y2sgbG9jYXRpb24gdHlwZSBzaG91bGQgYmUgTWFudWZhY3RvcnksIGJ1dCBpcyAJAJEDAgULY3VyTG9jYXRpb24FCmxvY0lkeFR5cGUEBGNvbnQJAJEDAgULY3VyTG9jYXRpb24FD2xvY0lkeENvbnRpbmVudAQLY3VycmVudFBhY2sJAQtnZXRCYWNrcGFjawEJARFrZXlCYWNrcGFja0J5RHVjawEFC2R1Y2tBc3NldElkBAdtYXRMaXN0CQC1CQIJAJEDAgULY3VycmVudFBhY2sFCGJwSWR4TWF0AgFfAwMJAGYCAAAFCnByb2R1Y3RJZHgGCQBnAgUKcHJvZHVjdElkeAkAkAMBBRBwcm9kdWN0aW9uTWF0cml4CQACAQkArAICAhRVbmtub3duIHByb2R1Y3QgaWR4PQkApAMBBQpwcm9kdWN0SWR4BAZyZWNpcGUJALUJAgkAkQMCBRBwcm9kdWN0aW9uTWF0cml4BQpwcm9kdWN0SWR4AgFfAwkBAiE9AgkAkAMBBQZyZWNpcGUFClJFQ0lQRVNJWkUJAAIBCQCsAgICF0ZhdGFsOiB1bmtub3duIHJlY2lwZTogCQCRAwIFEHByb2R1Y3Rpb25NYXRyaXgFCnByb2R1Y3RJZHgEDnByb2R1Y3RDb250SWR4CQENcGFyc2VJbnRWYWx1ZQEJAJEDAgUGcmVjaXBlBQ1ySWR4Q29udGluZW50AwkBAiE9AgkAkQMCBQpjb250aW5lbnRzBQ5wcm9kdWN0Q29udElkeAUEY29udAkAAgEJAKwCAgkArAICCQCsAgICHVRoaXMg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AQUkZjFfMQIJAQUkZjFfMQIJAQUkZjFfMQIJAQUkZjFfMQIJAQUkZjFfMQIFBSRhY2MwAAAAAQACAAMABAAFAAYEB25ld1BhY2sJALkJAgkAzAgCCQCRAwIFC2N1cnJlbnRQYWNrBQpicElkeExldmVsCQDMCAIJAJEDAgULY3VycmVudFBhY2sFCGJwSWR4UmVzCQDMCAIJALkJAggFBm1lcmdlZAJfMQIBXwkAzAgCCQC6CQIFBmJwUHJvZAIBXwUDbmlsAgE6BAZyZXN1bHQJAQhhc1N0cmluZwEJAPwHBAUPc3Rha2luZ0NvbnRyYWN0Ag51cGRhdGVCYWNrcGFjawkAzAgCBQtkdWNrQXNzZXRJZAkAzAgCBQduZXdQYWNrBQNuaWwFA25pbAQLc3RhdHNSZXN1bHQJAQVhc0ludAEJAPwHBAUPc3Rha2luZ0NvbnRyYWN0Ag91cGRhdGVEdWNrU3RhdHMJAMwIAgULZHVja0Fzc2V0SWQJAMwIAgkAawMFB3hwQ3JhZnQIBQZtZXJnZWQCXzIFBU1VTFQ4BQNuaWwFA25pbAkAlAoCBQNuaWwJAJUKAwUGcmVzdWx0BQxwcm9sb2dSZXN1bHQFC3N0YXRzUmVzdWx0AWkBEXNldFdhcmVob3VzZU9yZGVyAgtuZXdPcmRlclN0cgtsYW5kQXNzZXRJZAQEdXNlcggFAWkMb3JpZ2luQ2FsbGVyBARhZGRyCQClCAEFBHVzZXIEBnJlc3VsdAMJAQIhPQIFBHVzZXIFDHJlc3RDb250cmFjdAkBDGNoZWNrQmxvY2tlZAAHBAVhc3NldAkBBXZhbHVlAQkA7AcBCQDZBAEFC2xhbmRBc3NldElkAwkBASEBCQEJaXNEZWZpbmVkAQkAmggCBQ9zdGFraW5nQ29udHJhY3QJARZrZXlTdGFrZWRUaW1lQnlBc3NldElkAQULbGFuZEFzc2V0SWQJAAIBCQCsAgIJAKwCAgIETkZUIAgFBWFzc2V0BG5hbWUCDiBpcyBub3Qgc3Rha2VkBAVvd25lcgkBE3ZhbHVlT3JFcnJvck1lc3NhZ2UCCQCdCAIFD3N0YWtpbmdDb250cmFjdAkBFWtleUxhbmRBc3NldElkVG9Pd25lcgEFC2xhbmRBc3NldElkCQCsAgIJAKwCAgIETkZUIAgFBWFzc2V0BG5hbWUCDCBpcyBvcnBoYW5lZAMDCQECIT0CBQR1c2VyBQxyZXN0Q29udHJhY3QJAQIhPQIFBW93bmVyBQRhZGRyBwkAAgEJAKwCAgUKTEFORFBSRUZJWAINIGlzIG5vdCB5b3VycwQIbmV3T3JkZXIJALwJAgULbmV3T3JkZXJTdHICAToEAndoCQEIYXNTdHJpbmcBCQD8BwQFD3N0YWtpbmdDb250cmFjdAIUZ2V0V2FyZWhvdXNlUkVBRE9OTFkJAMwIAgULbGFuZEFzc2V0SWQFA25pbAUDbmlsBAljdXJyZW50V2gJALwJAgUCd2gCAToEBGxvZnQJALUJAgkAkQMCBQljdXJyZW50V2gFCXdoSWR4TE9GVAIBXwQHd2hUb3RhbAkBDXBhcnNlSW50VmFsdWUBCQCRAwIFBGxvZnQFCHZvbFRvdGFsBAZvcmRLZXkJAQ5rZXlPcmRlckJ5TGFuZAEFC2xhbmRBc3NldElkBApjdXJyZW50T3JkCQEIZ2V0T3JkZXIBBQZvcmRLZXkEAXoJAQtzZXRJbnRlcm5hbAMFCWN1cnJlbnRXaAUKY3VycmVudE9yZAUIbmV3T3JkZXIEC2J1eVZvbFNhbGRvCAUBegJfNAQMc2VsbFZvbFNhbGRvCAUBegJfNQQKd2hPY2N1cGllZAgFAXoCXzcECHdoTG9ja2VkCQBkAgULYnV5Vm9sU2FsZG8FDHNlbGxWb2xTYWxkbwQGd2hGcmVlCQBlAgkAZQIFB3doVG90YWwFCndoT2NjdXBpZWQFCHdoTG9ja2VkAwkAZgIAAAUGd2hGcmVlCQACAQkArAICCQCsAgIJAKwCAgkArAICCQCsAgIJAKwCAgITQXR0ZW1wdCB0byByZXNlcnZlIAkApAMBBQtidXlWb2xTYWxkbwIbIHNwYWNlIGZvciBidXkgb3JkZXJzLCBhbmQgCQCkAwEFDHNlbGxWb2xTYWxkbwIlIHNwYWNlIGZvciBzZWxsIG9yZGVycyAoYW5kIG9jY3VwaWVkPQkApAMBBQp3aE9jY3VwaWVkAh8pLCBsZWFkcyB0byBuZWdhdGl2ZSBmcmVlIHNwYWNlBAV3aFN0cgkAugkCCQDMCAIJAJEDAgUJY3VycmVudFdoBQt3aElkeExldmVscwkAzAgCCQC5CQIIBQF6Al8xAgFfCQDMCAIJALkJAggFAXoCXzICAV8JAMwIAgkAugkCCAUBegJfMwIBXwkAzAgCCQCkAwEFCHdoTG9ja2VkBQNuaWwCAToEBndoU2F2ZQkBCGFzU3RyaW5nAQkA/AcEBQ9zdGFraW5nQ29udHJhY3QCDXNhdmVXYXJlaG91c2UJAMwIAgUFd2hTdHIJAMwIAgULbGFuZEFzc2V0SWQFA25pbAUDbmlsBAh1c2RTYWxkbwgFAXoCXzYEB2FjdGlvbnMDCQBmAgUIdXNkU2FsZG8AAAMJAQIhPQIJAJADAQgFAWkIcGF5bWVudHMAAQkAAgECImV4YWN0bHkgMSBwYXltZW50IG11c3QgYmUgYXR0YWNoZWQEA3BtdAkAkQMCCAUBaQhwYXltZW50cwAABANhbXQIBQNwbXQGYW1vdW50BApwbXRBc3NldElkCQETdmFsdWVPckVycm9yTWVzc2FnZQIIBQNwbXQHYXNzZXRJZAIeV0FWRVMgY2FuJ3QgYmUgdXNlZCBhcyBwYXltZW50AwkBAiE9AgUKcG10QXNzZXRJZAULdXNkdEFzc2V0SWQJAAIBAhNVU0RUIHBheW1lbnRzIG9ubHkhAwkBAiE9AgUDYW10BQh1c2RTYWxkbwkAAgEJAKwCAgISUGF5bWVudCBuZWVkZWQgaXMgCQCkAwEFCHVzZFNhbGRvCQDMCAIJAQtTdHJpbmdFbnRyeQIFBm9yZEtleQULbmV3T3JkZXJTdHIFA25pbAMJAAACBQh1c2RTYWxkbwAAAwkBAiE9AgkAkAMBCAUBaQhwYXltZW50cwAACQACAQISTm8gcGF5bWVudHMgbmVlZGVkCQDMCAIJAQtTdHJpbmdFbnRyeQIFBm9yZEtleQULbmV3T3JkZXJTdHIFA25pbAMJAQIhPQIJAJADAQgFAWkIcGF5bWVudHMAAAkAAgECEk5vIHBheW1lbnRzIG5lZWRlZAkAzAgCCQEOU2NyaXB0VHJhbnNmZXIDCQERQGV4dHJOYXRpdmUoMTA2MikBBQVvd25lcgkBAS0BBQh1c2RTYWxkbwULdXNkdEFzc2V0SWQJAMwIAgkBC1N0cmluZ0VudHJ5AgUGb3JkS2V5BQtuZXdPcmRlclN0cgUDbmlsCQCUCgIFB2FjdGlvbnMJAJQKAgUGcmVzdWx0BQZ3aFNhdmUBaQEUYWNjZXB0V2FyZWhvdXNlT3JkZXIDCmJwT3JkZXJTdHILbGFuZEFzc2V0SWQLZHVja0Fzc2V0SWQEDHByb2xvZ1Jlc3VsdAkBBnByb2xvZwAEBmNhbGxlcggFAWkMb3JpZ2luQ2FsbGVyBApjYWxsZXJBZGRyCQClCAEFBmNhbGxlcgQRc3Rha2VkRHVja0Fzc2V0SWQJARN2YWx1ZU9yRXJyb3JNZXNzYWdlAgkAnQgCBQ9zdGFraW5nQ29udHJhY3QJARRrZXlTdGFrZWREdWNrQnlPd25lcgEFCmNhbGxlckFkZHICHFlvdSBkb24ndCBoYXZlIGEgZHVjayBzdGFrZWQEC2N1ckxvY2F0aW9uCQELdmFsdWVPckVsc2UCCQCdCAIFD3N0YWtpbmdDb250cmFjdAkBD2tleUR1Y2tMb2NhdGlvbgEFEXN0YWtlZER1Y2tBc3NldElkBQ9ERUZBVUxUTE9DQVRJT04EA2xvYwkAtQkCCQEFdmFsdWUBBQtjdXJMb2NhdGlvbgIBXwMJAQIhPQIJAJEDAgUDbG9jBQpsb2NJZHhUeXBlAgFMCQACAQkArAICCQCsAgICFkR1Y2sgbG9jYXRpb24gdHlwZSBpcyAJAJEDAgUDbG9jBQpsb2NJZHhUeXBlAhEsIGJ1dCBzaG91bGQgYmUgTAMJAQIhPQIFEXN0YWtlZER1Y2tBc3NldElkBQtkdWNrQXNzZXRJZAkAAgEJAKwCAgkArAICCQCsAgICFFlvdXIgc3Rha2VkIGR1Y2sgaXMgBRFzdGFrZWREdWNrQXNzZXRJZAINLCBidXQgcGFzc2VkIAULZHVja0Fzc2V0SWQECWxhbmRBc3NldAkBBXZhbHVlAQkA7AcBCQDZBAEFC2xhbmRBc3NldElkAwkBASEBCQEJaXNEZWZpbmVkAQkAmggCBQ9zdGFraW5nQ29udHJhY3QJARZrZXlTdGFrZWRUaW1lQnlBc3NldElkAQULbGFuZEFzc2V0SWQJAAIBCQCsAgIJAKwCAgIETkZUIAgFCWxhbmRBc3NldARuYW1lAg4gaXMgbm90IHN0YWtlZAQJbGFuZE93bmVyCQETdmFsdWVPckVycm9yTWVzc2FnZQIJAJ0IAgUPc3Rha2luZ0NvbnRyYWN0CQEVa2V5TGFuZEFzc2V0SWRUb093bmVyAQULbGFuZEFzc2V0SWQJAKwCAgkArAICAgRORlQgCAUJbGFuZEFzc2V0BG5hbWUCDCBpcyBvcnBoYW5lZAMJAAACBQlsYW5kT3duZXIFCmNhbGxlckFkZHIJAAIBAh5Zb3UgY2Fubm90IHRyYWRlIHdpdGggeW91cnNlbGYEDGJwT3JkZXJQYXJ0cwkAvAkCBQpicE9yZGVyU3RyAgE6AwkBAiE9AgkAkAMBBQxicE9yZGVyUGFydHMAAwkAAgECMmJwT3JkZXJTdHIgc2hvdWxkIGNvbnRhaW4gZXhhY3RseSAyICc6JyBzZXBhcmF0b3JzBAhicE9yZFJlcwkAtQkCCQCRAwIFDGJwT3JkZXJQYXJ0cwAAAgFfBAhicE9yZE1hdAkAtQkCCQCRAwIFDGJwT3JkZXJQYXJ0cwABAgFfBAlicE9yZFByb2QDCQAAAgkAkQMCBQxicE9yZGVyUGFydHMAAgIABQNuaWwJALwJAgkAkQMCBQxicE9yZGVyUGFydHMAAgIBXwMJAQIhPQIJAJADAQUIYnBPcmRSZXMFBk5VTVJFUwkAAgECIEFsbCA2IHJlc291cmNlcyBzaG91bGQgYmUgcGFzc2VkAwkBAiE9AgkAkAMBBQhicE9yZE1hdAUGTlVNUkVTCQACAQIgQWxsIDYgbWF0ZXJpYWxzIHNob3VsZCBiZSBwYXNzZWQEAndoCQEIYXNTdHJpbmcBCQD8BwQFD3N0YWtpbmdDb250cmFjdAIUZ2V0V2FyZWhvdXNlUkVBRE9OTFkJAMwIAgULbGFuZEFzc2V0SWQFA25pbAUDbmlsBAljdXJyZW50V2gJALwJAgUCd2gCAToECWN1cnJXaFJlcwkAtQkCCQCRAwIFCWN1cnJlbnRXaAUId2hJZHhSZXMCAV8ECWN1cnJXaE1hdAkAtQkCCQCRAwIFCWN1cnJlbnRXaAUId2hJZHhNYXQCAV8ECmN1cnJXaFByb2QDCQAAAgkAkQMCBQljdXJyZW50V2gFCXdoSWR4UHJvZAIABQNuaWwJALwJAgkAkQMCBQljdXJyZW50V2gFCXdoSWR4UHJvZAIBXwQPY3VycldoTG9ja2VkVm9sCQENcGFyc2VJbnRWYWx1ZQEJAJEDAgkAtQkCCQCRAwIFCWN1cnJlbnRXaAUJd2hJZHhMT0ZUAgFfBQl2b2xMb2NrZWQEBWJwS2V5CQERa2V5QmFj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Y2sJAMwIAgULZHVja0Fzc2V0SWQJAMwIAgUIbmV3QnBTdHIFA25pbAUDbmlsBA9kdWNrU3RhdHNSZXN1bHQJAQVhc0ludAEJAPwHBAUPc3Rha2luZ0NvbnRyYWN0Ag91cGRhdGVEdWNrU3RhdHMJAMwIAgULZHVja0Fzc2V0SWQJAMwIAgkAawMFBnhwU2hvcAgFAXADXzEzBQVNVUxUOAUDbmlsBQNuaWwEDmFjY1N0YXRzUmVzdWx0CQEFYXNJbnQBCQD8BwQFD3N0YWtpbmdDb250cmFjdAIOdXBkYXRlQWNjU3RhdHMJAMwIAgUJbGFuZE93bmVyCQDMCAIJAGsDBQZ4cFNob3AIBQFwA18xMwUFTVVMVDgFA25pbAUDbmlsBAdhY3Rpb25zCQDMCAIJAQtTdHJpbmdFbnRyeQIFBm9yZEtleQULbmV3V2hPcmRTdHIFA25pbAQNdXNkV2gyQnBTYWxkbwgFAXACXzUECGFjdGlvbnMxAwkAZgIFDXVzZFdoMkJwU2FsZG8AAAQLdXNkV2gyQnBGZWUJAGsDCAUBcAJfNQUKQVVDVElPTkZFRQUFTVVMVDYECHJlZkJ5S2V5CQEPa2V5QWRkcmVzc1JlZkJ5AQUKY2FsbGVyQWRkcgQFcmVmQnkJAJ0IAgUPc3Rha2luZ0NvbnRyYWN0BQhyZWZCeUtleQMJAQlpc0RlZmluZWQBBQVyZWZCeQkAzQgCCQDNCAIJAM0IAgUHYWN0aW9ucwkBDlNjcmlwdFRyYW5zZmVyAwUGY2FsbGVyCQBlAggFAXACXzUJAGgCAAMFC3VzZFdoMkJwRmVlBQt1c2R0QXNzZXRJZAkBDlNjcmlwdFRyYW5zZmVyAwUMcmVzdENvbnRyYWN0BQt1c2RXaDJCcEZlZQULdXNkdEFzc2V0SWQJAQ5TY3JpcHRUcmFuc2ZlcgMJARFAZXh0ck5hdGl2ZSgxMDYyKQEJAQV2YWx1ZQEFBXJlZkJ5BQt1c2RXaDJCcEZlZQULdXNkdEFzc2V0SWQJAM0IAgkAzQgCBQdhY3Rpb25zCQEOU2NyaXB0VHJhbnNmZXIDBQZjYWxsZXIJAGUCCAUBcAJfNQkAaAIAAwULdXNkV2gyQnBGZWUFC3VzZHRBc3NldElkCQEOU2NyaXB0VHJhbnNmZXIDBQxyZXN0Q29udHJhY3QFC3VzZFdoMkJwRmVlBQt1c2R0QXNzZXRJZAUHYWN0aW9ucwQNdXNkQnAyV2hTYWxkbwgFAXACXzYECGFjdGlvbnMyAwkAZgIFDXVzZEJwMldoU2FsZG8AAAMJAQIhPQIJAJADAQgFAWkIcGF5bWVudHMAAQkAAgECImV4YWN0bHkgMSBwYXltZW50IG11c3QgYmUgYXR0YWNoZWQEA3BtdAkAkQMCCAUBaQhwYXltZW50cwAABANhbXQIBQNwbXQGYW1vdW50BApwbXRBc3NldElkCQETdmFsdWVPckVycm9yTWVzc2FnZQIIBQNwbXQHYXNzZXRJZAIeV0FWRVMgY2FuJ3QgYmUgdXNlZCBhcyBwYXltZW50AwkBAiE9AgUKcG10QXNzZXRJZAULdXNkdEFzc2V0SWQJAAIBAhNVU0RUIHBheW1lbnRzIG9ubHkhAwkBAiE9AgUDYW10BQ11c2RCcDJXaFNhbGRvCQACAQkArAICAhJQYXltZW50IG5lZWRlZCBpcyAJAKQDAQUNdXNkQnAyV2hTYWxkbwMJAGYCBQ5NSU5TSE9QUEFZTUVOVAUDYW10CQACAQkArAICAhtQYXltZW50IHNob3VsZCBiZSBhdCBsZWFzdCAJAKQDAQUOTUlOU0hPUFBBWU1FTlQEC3VzZEJwMldoRmVlCQBrAwgFAXACXzYFCkFVQ1RJT05GRUUFBU1VTFQ2BAhyZWZCeUtleQkBD2tleUFkZHJlc3NSZWZCeQEFCWxhbmRPd25lcgQFcmVmQnkJAJ0IAgUPc3Rha2luZ0NvbnRyYWN0BQhyZWZCeUtleQMJAQlpc0RlZmluZWQBBQVyZWZCeQkAzQgCCQDNCAIJAM0IAgUIYWN0aW9uczEJAQ5TY3JpcHRUcmFuc2ZlcgMJARFAZXh0ck5hdGl2ZSgxMDYyKQEFCWxhbmRPd25lcgkAZQIIBQFwAl82CQBoAgADBQt1c2RCcDJXaEZlZQULdXNkdEFzc2V0SWQJAQ5TY3JpcHRUcmFuc2ZlcgMFDHJlc3RDb250cmFjdAULdXNkQnAyV2hGZWUFC3VzZHRBc3NldElkCQEOU2NyaXB0VHJhbnNmZXIDCQERQGV4dHJOYXRpdmUoMTA2MikBCQEFdmFsdWUBBQVyZWZCeQULdXNkQnAyV2hGZWUFC3VzZHRBc3NldElkCQDNCAIJAM0IAgUIYWN0aW9uczEJAQ5TY3JpcHRUcmFuc2ZlcgMJARFAZXh0ck5hdGl2ZSgxMDYyKQEFCWxhbmRPd25lcgkAZQIIBQFwAl82CQBoAgADBQt1c2RCcDJXaEZlZQULdXNkdEFzc2V0SWQJAQ5TY3JpcHRUcmFuc2ZlcgMFDHJlc3RDb250cmFjdAULdXNkQnAyV2hGZWUFC3VzZHRBc3NldElkAwkBAiE9AgkAkAMBCAUBaQhwYXltZW50cwAACQACAQISTm8gcGF5bWVudHMgbmVlZGVkBQhhY3Rpb25zMQkAlAoCBQhhY3Rpb25zMgkAlwoFBQxwcm9sb2dSZXN1bHQFBndoU2F2ZQUGYnBTYXZlBQ9kdWNrU3RhdHNSZXN1bHQFDmFjY1N0YXRzUmVzdWx0AWkBEHNlbGxQcm9kdWN0c1RvRVMBB2Ftb3VudHMEDHByb2xvZ1Jlc3VsdAkBBnByb2xvZwADCQECIT0CCQCQAwEIBQFpCHBheW1lbnRzAAAJAAIBAhJObyBwYXltZW50cyBuZWVkZWQEC2R1Y2tBc3NldElkCQETdmFsdWVPckVycm9yTWVzc2FnZQIJAJ0IAgUPc3Rha2luZ0NvbnRyYWN0CQEUa2V5U3Rha2VkRHVja0J5T3duZXIBCQClCAEIBQFpBmNhbGxlcgIcWW91IGRvbid0IGhhdmUgYSBkdWNrIHN0YWtlZAQLY3VyTG9jYXRpb24JALUJAgkBC3ZhbHVlT3JFbHNlAgkAnQgCBQ9zdGFraW5nQ29udHJhY3QJAQ9rZXlEdWNrTG9jYXRpb24BBQtkdWNrQXNzZXRJZAUPREVGQVVMVExPQ0FUSU9OAgFfAwkBAiE9AgkAkQMCBQtjdXJMb2NhdGlvbgUKbG9jSWR4VHlwZQIBQQkAAgEJAKwCAgItRHVjayBsb2NhdGlvbiB0eXBlIHNob3VsZCBiZSBBaXJwb3J0LCBidXQgaXMgCQCRAwIFC2N1ckxvY2F0aW9uBQpsb2NJZHhUeXBlBAtjdXJyZW50UGFjawkBC2dldEJhY2twYWNrAQkBEWtleUJhY2twYWNrQnlEdWNrAQULZHVja0Fzc2V0SWQECHByb2RMaXN0AwkAAAIJAJEDAgULY3VycmVudFBhY2sFCWJwSWR4UHJvZAIABQNuaWwJALwJAgkAkQMCBQtjdXJyZW50UGFjawUJYnBJZHhQcm9kAgFfBAVlc0tleQkBDmtleUVzV2FyZWhvdXNlAAQIZXhpc3RTdHIJAKIIAQUFZXNLZXkEDGV4aXN0QW1vdW50cwMJAQlpc0RlZmluZWQBBQhleGlzdFN0cgkAtQkCCQEFdmFsdWUBBQhleGlzdFN0cgIBXwUDbmlsCgEIbW92ZVByb2QCA2FjYwlyZWNpcGVTdHIEAWoIBQNhY2MCXzEECHF1YW50aXR5AwkAZgIJAJADAQUHYW1vdW50cwUBagkAkQMCBQdhbW91bnRzBQFqAAADCQBmAgAABQhxdWFudGl0eQkAAgECG1F1YW50aXR5IGNhbm5vdCBiZSBuZWdhdGl2ZQQGcmVjaXBlCQC1CQIFCXJlY2lwZVN0cgIBXwMJAQIhPQIJAJADAQUGcmVjaXBlBQpSRUNJUEVTSVpFCQACAQkArAICAhdGYXRhbDogdW5rbm93biByZWNpcGU6IAUJcmVjaXBlU3RyBAltYXhBbW91bnQJAGgCBQ1FU01BWFBBQ0tBR0VTBQ5QUk9EVUNUUEtHU0laRQQLZXhpc3RBbW91bnQDCQBmAgkAkAMBBQxleGlzdEFtb3VudHMFAWoJAQ1wYXJzZUludFZhbHVlAQkAkQMCBQxleGlzdEFtb3VudHMFAWoAAAQGY2FuQnV5CQBlAgUJbWF4QW1vdW50BQtleGlzdEFtb3VudAMJAGYCBQhxdWFudGl0eQUGY2FuQnV5CQACAQkArAICCQCsAgIJAKwCAgIXV2FyZWhvdXNlIGNhbiBidXkgb25seSAJAKQDAQUGY2FuQnV5AgQgb2YgCQCRAwIFCXByb2RUeXBlcwUBagQIdG90YWxNYXQJARJnZXRSZWNpcGVNYXRlcmlhbHMBBQZyZWNpcGUECXVuaXRQcmljZQkAawMJAGgCBQh0b3RhbE1hdAUJRVNCVVlDT0VGBRBSRVNPVVJDRVBSSUNFTUlOCQBoAgUFTVVMVDgFDlBST0RVQ1RQS0dTSVpFBAxicFByb2RBbW91bnQDCQBmAgkAkAMBBQhwcm9kTGlzdAUBagkBDXBhcnNlSW50VmFsdWUBCQCRAwIFCHByb2RMaXN0BQFqAAADCQBmAgUIcXVhbnRpdHkFDGJwUHJvZEFtb3VudAkAAgEJAKwCAgkArAICCQCsAgICDllvdSBoYXZlIG9ubHkgCQCkAwEFDGJwUHJvZEFtb3VudAIEIG9mIAkAkQMCBQlwcm9kVHlwZXMFAWoJAJcKBQkAZAIFAWoAAQkAZAIIBQNhY2MCXzIJAGgCBQl1bml0UHJpY2UFCHF1YW50aXR5CQDNCAIIBQNhY2MCXzMJAKQDAQkAZQIFDGJwUHJvZEFtb3VudAUIcXVhbnRpdHkJAM0IAggFA2FjYwJfNAkApAMBCQBkAgULZXhpc3RBbW91bnQFCHF1YW50aXR5CQBkAggFA2FjYwJfNQkAaAIFCHRvdGFsTWF0BQhxdWFudGl0eQQGbWVyZ2VkCgACJGwFEHByb2R1Y3Rpb25NYXRyaXgKAAIkcwkAkAMBBQIkbAoABSRhY2MwCQCXCgUAAAAABQNuaWwFA25pbAAACgEFJGYwXzECAiRhAiRpAwkAZwIFAiRpBQIkcwUCJGEJAQhtb3ZlUHJvZAIFAiRhCQCRAwIFAiRsBQIkaQoBBSRmMF8yAgIkYQIkaQMJAGcCBQIkaQUCJHMFAiRhCQACAQIUTGlzdCBzaXplIGV4Y2VlZHMgNTAJAQUkZjBfMgIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIFBSRhY2MwAAAAAQACAAMABAAFAAYABwAIAAkACgALAAwADQAOAA8AEAARABIAEwAUABUAFgAXABgAGQAaABsAHAAdAB4AHwAgACEAIgAjACQAJQAmACcAKAApACoAKwAsAC0ALgAvADAAMQAyBAhuZXdCcFN0cgkAugkCCQDMCAIJAJEDAgULY3VycmVudFBhY2sFCmJwSWR4TGV2ZWwJAMwIAgkAkQMCBQtjdXJyZW50UGFjawUIYnBJZHhSZXMJAMwIAgkAkQMCBQtjdXJyZW50UGFjawUIYnBJZHhNYXQJAMwIAgkAugkCCAUGbWVyZ2VkAl8zAgFfBQNuaWwCAToEBmJwU2F2ZQkBCGFzU3RyaW5nAQkA/AcEBQ9zdGFraW5nQ29udHJhY3QCDnVwZGF0ZUJhY2twYWNrCQDMCAIFC2R1Y2tBc3NldElkCQDMCAIFCG5ld0JwU3RyBQNuaWwFA25pbAQLc3RhdHNSZXN1bHQJAQVhc0ludAEJAPwHBAUPc3Rha2luZ0NvbnRyYWN0Ag91cGRhdGVEdWNrU3RhdHMJAMwIAgULZHVja0Fzc2V0SWQJAMwIAgkAawMFCnhwU2VsbFRvRXMIBQZtZXJnZWQCXzUJAGgCBQVNVUxUOAAKBQNuaWwFA25pbAkAlAoCCQDMCAIJAQtTdHJpbmdFbnRyeQIFBWVzS2V5CQC5CQIIBQZtZXJnZWQCXzQCAV8JAMwIAgkBDlNjcmlwdFRyYW5zZmVyAwgFAWkGY2FsbGVyCAUGbWVyZ2VkAl8yBQt1c2R0QXNzZXRJZAUDbmlsCQCVCgMFBmJwU2F2ZQUMcHJvbG9nUmVzdWx0BQtzdGF0c1Jlc3VsdAFpAQ91cGRhdGVFc1N0b3JhZ2UBCm5ld1N0b3JhZ2UDCQECIT0CCAUBaQZjYWxsZXIFD3N0YWtpbmdDb250cmFjdAkAAgECEVBlcm1pc3Npb24gZGVuaWVkCQCUCgIJAMwIAgkBC1N0cmluZ0VudHJ5AgkBDmtleUVzV2FyZWhvdXNlAAUKbmV3U3RvcmFnZQUDbmlsBQpuZXdTdG9yYWdlAD2k+xs=", "height": 2737769, "applicationStatus": "succeeded", "spentComplexity": 0 } View: original | compacted Prev: C9wvppKJz23u8PPEUYHJsVqj6nnFTQ75KJCqFtickoxc Next: CXvTAkVN8av4LCYe7SA3iSPL31q5jKqjKjju94S5P7fU Diff:
OldNewDifferences
8181 func O (N) = ("duckLocation_" + N)
8282
8383
84-func P () = "contractsBlocked"
84+func P (Q) = ("landOrder_" + Q)
8585
8686
87-func Q (R) = ("landOrder_" + R)
87+func R () = "emergencyWarehouseProducts"
8888
8989
90-func S () = "emergencyWarehouseProducts"
90+let S = 0
91+
92+let T = 1
93+
94+let U = 2
95+
96+func V (W) = (parseIntValue(W[q]) * o)
9197
9298
93-let T = 0
99+let X = take(drop(this.bytes, 1), 1)
94100
95-let U = 1
96-
97-let V = 2
98-
99-func W (X) = (parseIntValue(X[q]) * o)
100-
101-
102-let Y = take(drop(this.bytes, 1), 1)
103-
104-let Z = {
105- let aa = Y
106- if ((base58'2W' == aa))
101+let Y = {
102+ let Z = X
103+ if ((base58'2W' == Z))
107104 then base58'9wc3LXNA4TEBsXyKtoLE9mrbDD7WMHXvXrCjZvabLAsi'
108- else if ((base58'2T' == aa))
105+ else if ((base58'2T' == Z))
109106 then base58'6mWwf9mZBjVgkC54idpyaZLQfAosD914wT8fGf2iiY63'
110107 else throw("Unknown chain")
111108 }
112109
113-let ab = {
114- let aa = Y
115- if ((base58'2W' == aa))
110+let aa = {
111+ let Z = X
112+ if ((base58'2W' == Z))
116113 then "3PQCuvFbvh4LkPUnrnU1z3jnbA1p9m3WNhv"
117- else if ((base58'2T' == aa))
114+ else if ((base58'2T' == Z))
118115 then "3MumkGGztCKAXpWDqxkddofqXSUbqQkvSJy"
119116 else throw("Unknown chain")
120117 }
121118
122-let ac = "__"
119+let ab = "__"
123120
124-let ad = 1000000
121+let ac = 1000000
125122
126-let ae = 100000000
123+let ad = 100000000
127124
128-let af = 10000000000
125+let ae = 10000000000
129126
130-let ag = 100000
127+let af = 100000
131128
132-let ah = [0, 1, 2, 3, 4, 5]
129+let ag = [0, 1, 2, 3, 4, 5]
133130
134-func ai (aj,ak) = valueOrErrorMessage(getString(aj, ak), makeString(["mandatory ", toString(aj), ".", ak, " is not defined"], ""))
131+func ah (ai,aj) = valueOrErrorMessage(getString(ai, aj), makeString(["mandatory ", toString(ai), ".", aj, " is not defined"], ""))
135132
136133
137-let al = 1
134+let ak = 1
138135
139-func am () = "%s__restConfig"
136+func al () = "%s__restConfig"
140137
141138
142-func an () = "%s__restAddr"
139+func am () = "%s__restAddr"
143140
144141
145-func ao (ap) = split_4C(ai(ap, am()), ac)
142+func an (ao) = split_4C(ah(ao, al()), ab)
146143
147144
148-func aq (ar,as) = valueOrErrorMessage(addressFromString(ar[as]), ("Rest cfg doesn't contain address at index " + toString(as)))
145+func ap (aq,ar) = valueOrErrorMessage(addressFromString(aq[ar]), ("Rest cfg doesn't contain address at index " + toString(ar)))
149146
150147
151-let at = addressFromStringValue(valueOrElse(getString(this, an()), ab))
148+let as = addressFromStringValue(valueOrElse(getString(this, am()), aa))
152149
153-let ar = ao(at)
150+let aq = an(as)
154151
155-let au = aq(ar, al)
152+let at = ap(aq, ak)
156153
157-func av (aw) = {
158- let aa = aw
159- if ($isInstanceOf(aa, "String"))
154+func au (av) = {
155+ let Z = av
156+ if ($isInstanceOf(Z, "String"))
160157 then {
161- let ax = aa
162- ax
158+ let aw = Z
159+ aw
163160 }
164161 else throw("fail to cast into String")
165162 }
166163
167164
168-func ay (aw) = {
169- let aa = aw
170- if ($isInstanceOf(aa, "Int"))
165+func ax (av) = {
166+ let Z = av
167+ if ($isInstanceOf(Z, "Int"))
171168 then {
172- let az = aa
173- az
169+ let ay = Z
170+ ay
174171 }
175172 else throw("fail to cast into Int")
176173 }
174+
175+
176+func az () = "contractsBlocked"
177177
178178
179179 func aA (aB,aC) = {
216216 let aX = if ((aU >= 0))
217217 then (((aU + aV) - 1) / aV)
218218 else -((((-(aU) + aV) - 1) / aV))
219- (aX * ae)
219+ (aX * ad)
220220 }
221221 else aU
222222
229229 else if (((bc + aU) > aG))
230230 then (aG - bc)
231231 else aU
232- let be = (fraction(bd, ((aH * h) - fraction(((100 * bc) + (50 * bd)), h, aG)), af) + fraction((aU - bd), h, ae))
232+ let be = (fraction(bd, ((aH * h) - fraction(((100 * bc) + (50 * bd)), h, aG)), ae) + fraction((aU - bd), h, ad))
233233 let bf = (ba - (ba / 100))
234- if (((bf * aU) > (be * ae)))
234+ if (((bf * aU) > (be * ad)))
235235 then throw((((((((((("Actual price = " + toString(be)) + " / ") + toString(aU)) + " < minPrice = ") + toString(ba)) + ", (") + aZ) + ", ") + k[aM]) + ")"))
236236 else $Tuple2(IntegerEntry(bb, (bc + aU)), be)
237237 }
245245 else 0
246246 let bk = min([bc, (aU - bj)])
247247 let bl = (bk + bj)
248- let bm = (fraction(bk, ((aI * h) - fraction(((100 * bc) - (50 * bk)), h, aG)), af) + fraction(bj, (2 * h), ae))
248+ let bm = (fraction(bk, ((aI * h) - fraction(((100 * bc) - (50 * bk)), h, aG)), ae) + fraction(bj, (2 * h), ad))
249249 let bn = (bi + (bi / 100))
250- if (((bm * ae) > (bn * bl)))
250+ if (((bm * ad) > (bn * bl)))
251251 then throw((((((((((("Actual price = " + toString(bm)) + " / ") + toString(bl)) + " > maxPrice = ") + toString(bi)) + ", (") + aZ) + ", ") + l[bh]) + ")"))
252252 else $Tuple3(IntegerEntry(bb, (bc - bl)), bm, bl)
253253 }
254254
255255
256256 func bo (bp) = {
257- let aS = split(valueOrElse(getString(au, bp), "0:0_0_0_0_0_0:0_0_0_0_0_0:"), ":")
257+ let aS = split(valueOrElse(getString(at, bp), "0:0_0_0_0_0_0:0_0_0_0_0_0:"), ":")
258258 [toString(valueOrElse(parseInt(aS[B]), 0)), if ((size(split(aS[C], "_")) == f))
259259 then aS[C]
260260 else "0_0_0_0_0_0", if ((size(split(aS[D], "_")) == f))
263263 }
264264
265265
266-func bq () = if (valueOrElse(getBoolean(au, P()), false))
266+func bq () = if (valueOrElse(getBoolean(at, az()), false))
267267 then throw("Contracts are under maintenance")
268268 else unit
269269
270270
271-func br () = ay(invoke(au, "saveLastTx", nil, nil))
271+func br () = ax(invoke(at, "saveLastTx", nil, nil))
272272
273273
274274 func bs (bt,bu) = {
280280 else {
281281 let by = parseIntValue(bx[0])
282282 let bz = parseIntValue(bx[1])
283- let bA = fraction(by, bz, ae)
283+ let bA = fraction(by, bz, ad)
284284 let bB = aT(by, t, bw)
285285 let bC = if ((size(bt._6) > bv))
286286 then parseIntValue(bt._6[bv])
295295 else (0 > bz))
296296 then throw("Price can't be negative")
297297 else {
298- let bG = fraction(bE, bF, ae)
298+ let bG = fraction(bE, bF, ad)
299299 if ((by == 0))
300300 then if ((bE > 0))
301301 then $Tuple9((bv + 1), (bt._2 :+ toString(bC)), bt._3, bt._4, (bt._5 - bG), bt._6, bt._7, bw, (bt._9 + aT(bC, t, bw)))
405405 if ((0 > cl))
406406 then throw("Price can't be negative")
407407 else {
408- let cm = fraction(ck, cl, ae)
408+ let cm = fraction(ck, cl, ad)
409409 let cn = if ((size(bt._8) > bv))
410410 then parseIntValue(bt._8[bv])
411411 else 0
423423 else false)
424424 then throw(((((("Prices of " + bt._11[bv]) + " don't match! WH price=") + toString(cr)) + ", your price=") + toString(cl)))
425425 else {
426- let cs = fraction(cq, cr, ae)
426+ let cs = fraction(cq, cr, ad)
427427 let ct = aT(ck, t, bw)
428428 if ((ck == 0))
429429 then $Tuple13((bt._1 :+ toString(bC)), (bt._2 :+ co), (bt._3 :+ toString(cn)), bt._4, bt._5, bt._6, (bt._7 + 1), bt._8, bt._9, bt._10, bt._11, bw, bt._13)
432432 then if ((ck > -(cq)))
433433 then throw(((((("Attempt to buy " + toString(ck)) + " of ") + bt._11[bv]) + ", but warehouse only sells ") + toString(-(cq))))
434434 else $Tuple13((bt._1 :+ toString(bC)), (bt._2 :+ ((toString((cq + ck)) + "@") + toString(cr))), (bt._3 :+ toString((cn + ck))), (bt._4 + ct), bt._5, (bt._6 + cm), (bt._7 + 1), bt._8, bt._9, bt._10, bt._11, bw, (bt._13 + (if (bw)
435- then (ck * ae)
435+ then (ck * ad)
436436 else ck)))
437437 else throw((("Attempt to buy " + bt._11[bv]) + " while warehouse doesn't sell it"))
438438 else if ((cq > 0))
441441 else if ((-(ck) > cn))
442442 then throw(((((("Attempt to sell " + toString(-(ck))) + ", but you only have ") + toString(cn)) + " of ") + bt._11[bv]))
443443 else $Tuple13((bt._1 :+ toString((bC - ck))), (bt._2 :+ ((toString((cq + ck)) + "@") + toString(cr))), (bt._3 :+ toString((cn + ck))), (bt._4 - ct), (bt._5 - cm), bt._6, (bt._7 + 1), bt._8, bt._9, bt._10, bt._11, bw, (bt._13 - (if (bw)
444- then (ck * ae)
444+ then (ck * ad)
445445 else ck)))
446446 else throw((("Attempt to sell " + bt._11[bv]) + " while warehouse doesn't buy it"))
447447 }
451451
452452
453453 @Callable(cu)
454-func recalcLockedVolumeREADONLY (R,cv) = {
455- let bK = aQ(Q(R))
454+func recalcLockedVolumeREADONLY (Q,cv) = {
455+ let bK = aQ(P(Q))
456456 let cw = bI(cv, bK, bK)
457457 $Tuple2(nil, (cw._4 + cw._5))
458458 }
462462 @Callable(cu)
463463 func constructorV1 (cx) = if ((cu.caller != this))
464464 then throw("Permission denied")
465- else [StringEntry(an(), cx)]
465+ else [StringEntry(am(), cx)]
466466
467467
468468
469469 @Callable(cu)
470470 func sellResources (cy,cz) = {
471471 let cA = br()
472- let N = valueOrErrorMessage(getString(au, K(toString(cu.caller))), "You don't have a duck staked")
472+ let N = valueOrErrorMessage(getString(at, K(toString(cu.caller))), "You don't have a duck staked")
473473 if ((size(cu.payments) != 0))
474474 then throw("sellResources doesn't require any payments")
475475 else {
476- let cB = split(valueOrElse(getString(au, O(N)), g), "_")
477- if ((cB[U] != "F"))
478- then throw(("Duck location type should be Factory, but is " + cB[U]))
476+ let cB = split(valueOrElse(getString(at, O(N)), g), "_")
477+ if ((cB[T] != "F"))
478+ then throw(("Duck location type should be Factory, but is " + cB[T]))
479479 else {
480- let aZ = cB[V]
480+ let aZ = cB[U]
481481 let cC = bo(M(N))
482482 let cD = split(cC[C], "_")
483483 func cE (bt,bv) = if ((cy[bv] > parseIntValue(cD[bv])))
492492 else $Tuple4(bt._1, (bt._2 :+ cD[bv]), bt._3, bt._4)
493493
494494 let cG = {
495- let bW = ah
495+ let bW = ag
496496 let bX = size(bW)
497497 let bY = $Tuple4(nil, nil, 0, 0)
498498 func bZ (ca,cb) = if ((cb >= bX))
506506 cc(bZ(bZ(bZ(bZ(bZ(bZ(bY, 0), 1), 2), 3), 4), 5), 6)
507507 }
508508 let cH = makeString([cC[B], makeString(cG._2, "_"), cC[D], cC[E]], ":")
509- let cI = av(invoke(au, "updateBackpack", [N, cH], nil))
510- let cJ = ay(invoke(au, "updateDuckStats", [N, fraction(a, cG._4, ae)], nil))
511- $Tuple2((cG._1 :+ ScriptTransfer(cu.caller, cG._3, Z)), $Tuple3(cI, cA, cJ))
509+ let cI = au(invoke(at, "updateBackpack", [N, cH], nil))
510+ let cJ = ax(invoke(at, "updateDuckStats", [N, fraction(a, cG._4, ad)], nil))
511+ $Tuple2((cG._1 :+ ScriptTransfer(cu.caller, cG._3, Y)), $Tuple3(cI, cA, cJ))
512512 }
513513 }
514514 }
518518 @Callable(cu)
519519 func buyMaterials (cy,cK) = {
520520 let cA = br()
521- let N = valueOrErrorMessage(getString(au, K(toString(cu.caller))), "You don't have a duck staked")
521+ let N = valueOrErrorMessage(getString(at, K(toString(cu.caller))), "You don't have a duck staked")
522522 if ((size(cu.payments) != 1))
523523 then throw("exactly 1 payment must be attached")
524524 else {
525525 let cL = cu.payments[0]
526526 let cM = cL.amount
527527 let cN = valueOrErrorMessage(cL.assetId, "WAVES can't be used as payment")
528- if ((cN != Z))
528+ if ((cN != Y))
529529 then throw("USDT payments only!")
530530 else {
531- let cB = split(valueOrElse(getString(au, O(N)), g), "_")
532- if ((cB[U] != "F"))
533- then throw(("Duck location type should be Factory, but is " + cB[U]))
531+ let cB = split(valueOrElse(getString(at, O(N)), g), "_")
532+ if ((cB[T] != "F"))
533+ then throw(("Duck location type should be Factory, but is " + cB[T]))
534534 else {
535- let aZ = cB[V]
535+ let aZ = cB[U]
536536 let cC = bo(M(N))
537537 let cO = split(cC[D], "_")
538538 func cP (bt,bv) = if ((0 > cy[bv]))
545545 else $Tuple4(bt._1, (bt._2 :+ cO[bv]), bt._3, bt._4)
546546
547547 let cG = {
548- let bW = ah
548+ let bW = ag
549549 let bX = size(bW)
550550 let bY = $Tuple4(nil, nil, 0, 0)
551551 func bZ (ca,cb) = if ((cb >= bX))
562562 then throw(((("Insufficient payment! Attached=" + toString(cM)) + ", required=") + toString(cG._3)))
563563 else {
564564 let cH = makeString([cC[B], cC[C], makeString(cG._2, "_"), cC[E]], ":")
565- let cI = av(invoke(au, "updateBackpack", [N, cH], nil))
566- let ap = if (((cM - cG._3) > 0))
567- then [ScriptTransfer(cu.caller, (cM - cG._3), Z)]
565+ let cI = au(invoke(at, "updateBackpack", [N, cH], nil))
566+ let ao = if (((cM - cG._3) > 0))
567+ then [ScriptTransfer(cu.caller, (cM - cG._3), Y)]
568568 else nil
569569 let cQ = (cG._3 / 100)
570- let cJ = ay(invoke(au, "updateDuckStats", [N, fraction(a, cG._4, ae)], nil))
571- $Tuple2(((cG._1 ++ ap) :+ ScriptTransfer(at, cQ, Z)), $Tuple3(cI, cA, cJ))
570+ let cJ = ax(invoke(at, "updateDuckStats", [N, fraction(a, cG._4, ad)], nil))
571+ $Tuple2(((cG._1 ++ ao) :+ ScriptTransfer(as, cQ, Y)), $Tuple3(cI, cA, cJ))
572572 }
573573 }
574574 }
580580 @Callable(cu)
581581 func exchangeResources (cy) = {
582582 let cA = br()
583- let N = valueOrErrorMessage(getString(au, K(toString(cu.caller))), "You don't have a duck staked")
583+ let N = valueOrErrorMessage(getString(at, K(toString(cu.caller))), "You don't have a duck staked")
584584 if ((size(cu.payments) != 1))
585585 then throw("exactly 1 payment must be attached")
586586 else {
587587 let cL = cu.payments[0]
588588 let cM = cL.amount
589589 let cN = valueOrErrorMessage(cL.assetId, "WAVES can't be used as payment")
590- if ((cN != Z))
590+ if ((cN != Y))
591591 then throw("USDT payments only!")
592592 else {
593- let cB = split(valueOrElse(getString(au, O(N)), g), "_")
594- if ((cB[U] != "F"))
595- then throw(("Duck location type should be Factory, but is " + cB[U]))
593+ let cB = split(valueOrElse(getString(at, O(N)), g), "_")
594+ if ((cB[T] != "F"))
595+ then throw(("Duck location type should be Factory, but is " + cB[T]))
596596 else {
597- let aZ = cB[V]
597+ let aZ = cB[U]
598598 let cC = bo(M(N))
599599 let cD = split(cC[C], "_")
600600 let cO = split(cC[D], "_")
607607 else if ((0 > cS))
608608 then throw(((("You tried to exchange negative amount of " + k[bv]) + ": ") + toString(cS)))
609609 else if ((cS > 0))
610- then $Tuple5((bt._1 :+ toString((parseIntValue(cD[bv]) - cS))), (bt._2 :+ toString((parseIntValue(cO[bv]) + cS))), (bt._3 + fraction(cS, h, ae)), (bt._4 :+ IntegerEntry(bb, bc)), (bt._5 + cS))
610+ then $Tuple5((bt._1 :+ toString((parseIntValue(cD[bv]) - cS))), (bt._2 :+ toString((parseIntValue(cO[bv]) + cS))), (bt._3 + fraction(cS, h, ad)), (bt._4 :+ IntegerEntry(bb, bc)), (bt._5 + cS))
611611 else $Tuple5((bt._1 :+ cD[bv]), (bt._2 :+ cO[bv]), bt._3, bt._4, bt._5)
612612 }
613613
614614 let cG = {
615- let bW = ah
615+ let bW = ag
616616 let bX = size(bW)
617617 let bY = $Tuple5(nil, nil, 0, nil, 0)
618618 func bZ (ca,cb) = if ((cb >= bX))
629629 then throw(((("Insufficient payment! Attached=" + toString(cM)) + ", required=") + toString(cG._3)))
630630 else {
631631 let cH = makeString([cC[B], makeString(cG._1, "_"), makeString(cG._2, "_"), cC[E]], ":")
632- let cI = av(invoke(au, "updateBackpack", [N, cH], nil))
633- let ap = if (((cM - cG._3) > 0))
634- then [ScriptTransfer(cu.caller, (cM - cG._3), Z)]
632+ let cI = au(invoke(at, "updateBackpack", [N, cH], nil))
633+ let ao = if (((cM - cG._3) > 0))
634+ then [ScriptTransfer(cu.caller, (cM - cG._3), Y)]
635635 else nil
636636 let cQ = (cG._3 / 100)
637- let cJ = ay(invoke(au, "updateDuckStats", [N, fraction(a, cG._5, ae)], nil))
638- $Tuple2(((ap ++ cG._4) :+ ScriptTransfer(at, cQ, Z)), $Tuple3(cI, cA, cJ))
637+ let cJ = ax(invoke(at, "updateDuckStats", [N, fraction(a, cG._5, ad)], nil))
638+ $Tuple2(((ao ++ cG._4) :+ ScriptTransfer(as, cQ, Y)), $Tuple3(cI, cA, cJ))
639639 }
640640 }
641641 }
653653 let cL = cu.payments[0]
654654 let cM = cL.amount
655655 let cN = valueOrErrorMessage(cL.assetId, "WAVES can't be used as payment")
656- if ((cN != Z))
656+ if ((cN != Y))
657657 then throw("USDT payments only!")
658- else if ((cM != ad))
658+ else if ((cM != ac))
659659 then throw("exactly 1 USDT must be attached as payment")
660660 else if ((0 >= cU))
661661 then throw("Quantity should be positive")
662662 else {
663- let N = valueOrErrorMessage(getString(au, K(toString(cu.caller))), "You don't have a duck staked")
664- let cB = split(valueOrElse(getString(au, O(N)), g), "_")
665- if ((cB[U] != "M"))
666- then throw(("Duck location type should be Manufactory, but is " + cB[U]))
663+ let N = valueOrErrorMessage(getString(at, K(toString(cu.caller))), "You don't have a duck staked")
664+ let cB = split(valueOrElse(getString(at, O(N)), g), "_")
665+ if ((cB[T] != "M"))
666+ then throw(("Duck location type should be Manufactory, but is " + cB[T]))
667667 else {
668- let cV = cB[T]
668+ let cV = cB[S]
669669 let cC = bo(M(N))
670670 let cO = split(cC[D], "_")
671671 if (if ((0 > cT))
673673 else (cT >= size(p)))
674674 then throw(("Unknown product idx=" + toString(cT)))
675675 else {
676- let X = split(p[cT], "_")
677- if ((size(X) != s))
676+ let W = split(p[cT], "_")
677+ if ((size(W) != s))
678678 then throw(("Fatal: unknown recipe: " + p[cT]))
679679 else {
680- let cW = parseIntValue(X[r])
680+ let cW = parseIntValue(W[r])
681681 if ((n[cW] != cV))
682682 then throw(((("This product is available in " + n[cW]) + ", but you are in ") + cV))
683683 else {
685685 then nil
686686 else split_4C(cC[E], "_")
687687 func cY (bt,cZ) = {
688- let az = bt._2
689- let da = if ((size(cX) > az))
690- then cX[az]
688+ let ay = bt._2
689+ let da = if ((size(cX) > ay))
690+ then cX[ay]
691691 else "0"
692692 let db = parseIntValue(da)
693693 let aU = (cU * t)
694- let dc = if ((az == cT))
694+ let dc = if ((ay == cT))
695695 then toString((db + aU))
696696 else da
697- $Tuple2((bt._1 :+ dc), (az + 1))
697+ $Tuple2((bt._1 :+ dc), (ay + 1))
698698 }
699699
700700 let dd = ( let bW = p
710710
711711 cc(bZ(bZ(bZ(bZ(bZ(bZ(bZ(bZ(bZ(bZ(bZ(bZ(bZ(bZ(bZ(bZ(bZ(bZ(bZ(bZ(bZ(bZ(bZ(bZ(bZ(bZ(bZ(bZ(bZ(bZ(bZ(bZ(bZ(bZ(bZ(bZ(bZ(bZ(bZ(bZ(bZ(bZ(bZ(bZ(bZ(bZ(bZ(bZ(bZ(bZ(bY, 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
712712 func de (bt,bv) = {
713- let df = ((parseIntValue(X[bv]) * ad) * cU)
713+ let df = ((parseIntValue(W[bv]) * ac) * cU)
714714 let dg = parseIntValue(cO[bv])
715715 if ((df > dg))
716716 then throw(((((((("You have " + aA(dg, 8)) + " of ") + l[bv]) + ", but recipe requires ") + aA(df, 8)) + " for quantity ") + toString(cU)))
720720 }
721721
722722 let cG = {
723- let bW = ah
723+ let bW = ag
724724 let bX = size(bW)
725725 let bY = $Tuple2(nil, 0)
726726 func cd (ca,cb) = if ((cb >= bX))
734734 ce(cd(cd(cd(cd(cd(cd(bY, 0), 1), 2), 3), 4), 5), 6)
735735 }
736736 let cH = makeString([cC[B], cC[C], makeString(cG._1, "_"), makeString_2C(dd, "_")], ":")
737- let cI = av(invoke(au, "updateBackpack", [N, cH], nil))
738- let cJ = ay(invoke(au, "updateDuckStats", [N, fraction(b, cG._2, ae)], nil))
737+ let cI = au(invoke(at, "updateBackpack", [N, cH], nil))
738+ let cJ = ax(invoke(at, "updateDuckStats", [N, fraction(b, cG._2, ad)], nil))
739739 $Tuple2(nil, $Tuple3(cI, cA, cJ))
740740 }
741741 }
748748
749749
750750 @Callable(cu)
751-func setWarehouseOrder (dh,R) = {
751+func setWarehouseOrder (dh,Q) = {
752752 let di = cu.originCaller
753753 let J = toString(di)
754- let cI = if ((di != at))
754+ let cI = if ((di != as))
755755 then bq()
756756 else false
757- let dj = value(assetInfo(fromBase58String(R)))
758- if (!(isDefined(getInteger(au, H(R)))))
757+ let dj = value(assetInfo(fromBase58String(Q)))
758+ if (!(isDefined(getInteger(at, H(Q)))))
759759 then throw((("NFT " + dj.name) + " is not staked"))
760760 else {
761- let dk = valueOrErrorMessage(getString(au, F(R)), (("NFT " + dj.name) + " is orphaned"))
762- if (if ((di != at))
761+ let dk = valueOrErrorMessage(getString(at, F(Q)), (("NFT " + dj.name) + " is orphaned"))
762+ if (if ((di != as))
763763 then (dk != J)
764764 else false)
765765 then throw((e + " is not yours"))
766766 else {
767767 let dl = split_4C(dh, ":")
768- let cv = av(invoke(au, "getWarehouseREADONLY", [R], nil))
768+ let cv = au(invoke(at, "getWarehouseREADONLY", [Q], nil))
769769 let bJ = split_4C(cv, ":")
770770 let dm = split(bJ[y], "_")
771771 let dn = parseIntValue(dm[A])
772- let aR = Q(R)
772+ let aR = P(Q)
773773 let bK = aQ(aR)
774774 let cw = bI(bJ, bK, dl)
775775 let do = cw._4
781781 then throw((((((("Attempt to reserve " + toString(do)) + " space for buy orders, and ") + toString(dp)) + " space for sell orders (and occupied=") + toString(dq)) + "), leads to negative free space"))
782782 else {
783783 let dt = makeString_2C([bJ[u], makeString(cw._1, "_"), makeString(cw._2, "_"), makeString_2C(cw._3, "_"), toString(dr)], ":")
784- let du = av(invoke(au, "saveWarehouse", [dt, R], nil))
784+ let du = au(invoke(at, "saveWarehouse", [dt, Q], nil))
785785 let dv = cw._6
786786 let dw = if ((dv > 0))
787787 then if ((size(cu.payments) != 1))
790790 let cL = cu.payments[0]
791791 let cM = cL.amount
792792 let cN = valueOrErrorMessage(cL.assetId, "WAVES can't be used as payment")
793- if ((cN != Z))
793+ if ((cN != Y))
794794 then throw("USDT payments only!")
795795 else if ((cM != dv))
796796 then throw(("Payment needed is " + toString(dv)))
802802 else [StringEntry(aR, dh)]
803803 else if ((size(cu.payments) != 0))
804804 then throw("No payments needed")
805- else [ScriptTransfer(addressFromStringValue(dk), -(dv), Z), StringEntry(aR, dh)]
805+ else [ScriptTransfer(addressFromStringValue(dk), -(dv), Y), StringEntry(aR, dh)]
806806 $Tuple2(dw, $Tuple2(cI, du))
807807 }
808808 }
812812
813813
814814 @Callable(cu)
815-func acceptWarehouseOrder (dx,R,N) = {
815+func acceptWarehouseOrder (dx,Q,N) = {
816816 let cA = br()
817817 let dy = cu.originCaller
818818 let dz = toString(dy)
819- let dA = valueOrErrorMessage(getString(au, K(dz)), "You don't have a duck staked")
820- let cB = valueOrElse(getString(au, O(dA)), g)
819+ let dA = valueOrErrorMessage(getString(at, K(dz)), "You don't have a duck staked")
820+ let cB = valueOrElse(getString(at, O(dA)), g)
821821 let dB = split(value(cB), "_")
822- if ((dB[U] != "L"))
823- then throw((("Duck location type is " + dB[U]) + ", but should be L"))
822+ if ((dB[T] != "L"))
823+ then throw((("Duck location type is " + dB[T]) + ", but should be L"))
824824 else if ((dA != N))
825825 then throw(((("Your staked duck is " + dA) + ", but passed ") + N))
826826 else {
827- let dC = value(assetInfo(fromBase58String(R)))
828- if (!(isDefined(getInteger(au, H(R)))))
827+ let dC = value(assetInfo(fromBase58String(Q)))
828+ if (!(isDefined(getInteger(at, H(Q)))))
829829 then throw((("NFT " + dC.name) + " is not staked"))
830830 else {
831- let dD = valueOrErrorMessage(getString(au, F(R)), (("NFT " + dC.name) + " is orphaned"))
831+ let dD = valueOrErrorMessage(getString(at, F(Q)), (("NFT " + dC.name) + " is orphaned"))
832832 if ((dD == dz))
833833 then throw("You cannot trade with yourself")
834834 else {
846846 else if ((size(dG) != f))
847847 then throw("All 6 materials should be passed")
848848 else {
849- let cv = av(invoke(au, "getWarehouseREADONLY", [R], nil))
849+ let cv = au(invoke(at, "getWarehouseREADONLY", [Q], nil))
850850 let bJ = split_4C(cv, ":")
851851 let bM = split(bJ[v], "_")
852852 let bN = split(bJ[w], "_")
861861 let dL = if ((cC[E] == ""))
862862 then nil
863863 else split_4C(cC[E], "_")
864- let aR = Q(R)
864+ let aR = P(Q)
865865 let dM = aQ(aR)
866866 let dN = split(dM[aN], "_")
867867 let dO = split(dM[aO], "_")
919919 let dt = makeString_2C([bJ[u], makeString(bV._1, "_"), makeString(bl._1, "_"), makeString_2C(aS._1, "_"), toString(dR)], ":")
920920 let dS = makeString_2C([makeString(bV._2, "_"), makeString(bl._2, "_"), makeString_2C(aS._2, "_")], ":")
921921 let dT = makeString_2C([cC[B], makeString(bV._3, "_"), makeString(bl._3, "_"), makeString_2C(aS._3, "_")], ":")
922- let du = av(invoke(au, "saveWarehouse", [dt, R], nil))
923- let dU = av(invoke(au, "updateBackpack", [N, dT], nil))
924- let dV = ay(invoke(au, "updateDuckStats", [N, fraction(d, aS._13, ae)], nil))
925- let dW = ay(invoke(au, "updateAccStats", [dD, fraction(d, aS._13, ae)], nil))
922+ let du = au(invoke(at, "saveWarehouse", [dt, Q], nil))
923+ let dU = au(invoke(at, "updateBackpack", [N, dT], nil))
924+ let dV = ax(invoke(at, "updateDuckStats", [N, fraction(d, aS._13, ad)], nil))
925+ let dW = ax(invoke(at, "updateAccStats", [dD, fraction(d, aS._13, ad)], nil))
926926 let dw = [StringEntry(aR, dS)]
927927 let dX = aS._5
928928 let dY = if ((dX > 0))
929929 then {
930- let dZ = fraction(aS._5, aJ, ad)
930+ let dZ = fraction(aS._5, aJ, ac)
931931 let ea = I(dz)
932- let eb = getString(au, ea)
932+ let eb = getString(at, ea)
933933 if (isDefined(eb))
934- then (((dw :+ ScriptTransfer(dy, (aS._5 - (3 * dZ)), Z)) :+ ScriptTransfer(at, dZ, Z)) :+ ScriptTransfer(addressFromStringValue(value(eb)), dZ, Z))
935- else ((dw :+ ScriptTransfer(dy, (aS._5 - (3 * dZ)), Z)) :+ ScriptTransfer(at, dZ, Z))
934+ then (((dw :+ ScriptTransfer(dy, (aS._5 - (3 * dZ)), Y)) :+ ScriptTransfer(as, dZ, Y)) :+ ScriptTransfer(addressFromStringValue(value(eb)), dZ, Y))
935+ else ((dw :+ ScriptTransfer(dy, (aS._5 - (3 * dZ)), Y)) :+ ScriptTransfer(as, dZ, Y))
936936 }
937937 else dw
938938 let ec = aS._6
943943 let cL = cu.payments[0]
944944 let cM = cL.amount
945945 let cN = valueOrErrorMessage(cL.assetId, "WAVES can't be used as payment")
946- if ((cN != Z))
946+ if ((cN != Y))
947947 then throw("USDT payments only!")
948948 else if ((cM != ec))
949949 then throw(("Payment needed is " + toString(ec)))
950- else if ((ag > cM))
951- then throw(("Payment should be at least " + toString(ag)))
950+ else if ((af > cM))
951+ then throw(("Payment should be at least " + toString(af)))
952952 else {
953- let ee = fraction(aS._6, aJ, ad)
953+ let ee = fraction(aS._6, aJ, ac)
954954 let ea = I(dD)
955- let eb = getString(au, ea)
955+ let eb = getString(at, ea)
956956 if (isDefined(eb))
957- then (((dY :+ ScriptTransfer(addressFromStringValue(dD), (aS._6 - (3 * ee)), Z)) :+ ScriptTransfer(at, ee, Z)) :+ ScriptTransfer(addressFromStringValue(value(eb)), ee, Z))
958- else ((dY :+ ScriptTransfer(addressFromStringValue(dD), (aS._6 - (3 * ee)), Z)) :+ ScriptTransfer(at, ee, Z))
957+ then (((dY :+ ScriptTransfer(addressFromStringValue(dD), (aS._6 - (3 * ee)), Y)) :+ ScriptTransfer(as, ee, Y)) :+ ScriptTransfer(addressFromStringValue(value(eb)), ee, Y))
958+ else ((dY :+ ScriptTransfer(addressFromStringValue(dD), (aS._6 - (3 * ee)), Y)) :+ ScriptTransfer(as, ee, Y))
959959 }
960960 }
961961 else if ((size(cu.payments) != 0))
977977 if ((size(cu.payments) != 0))
978978 then throw("No payments needed")
979979 else {
980- let N = valueOrErrorMessage(getString(au, K(toString(cu.caller))), "You don't have a duck staked")
981- let cB = split(valueOrElse(getString(au, O(N)), g), "_")
982- if ((cB[U] != "A"))
983- then throw(("Duck location type should be Airport, but is " + cB[U]))
980+ let N = valueOrErrorMessage(getString(at, K(toString(cu.caller))), "You don't have a duck staked")
981+ let cB = split(valueOrElse(getString(at, O(N)), g), "_")
982+ if ((cB[T] != "A"))
983+ then throw(("Duck location type should be Airport, but is " + cB[T]))
984984 else {
985985 let cC = bo(M(N))
986986 let cX = if ((cC[E] == ""))
987987 then nil
988988 else split_4C(cC[E], "_")
989- let ef = S()
989+ let ef = R()
990990 let eg = getString(ef)
991991 let eh = if (isDefined(eg))
992992 then split(value(eg), "_")
999999 if ((0 > cU))
10001000 then throw("Quantity cannot be negative")
10011001 else {
1002- let X = split(ej, "_")
1003- if ((size(X) != s))
1002+ let W = split(ej, "_")
1003+ if ((size(W) != s))
10041004 then throw(("Fatal: unknown recipe: " + ej))
10051005 else {
10061006 let ek = (i * t)
10111011 if ((cU > em))
10121012 then throw(((("Warehouse can buy only " + toString(em)) + " of ") + m[bv]))
10131013 else {
1014- let en = W(X)
1015- let eo = fraction((en * j), h, (ae * t))
1014+ let en = V(W)
1015+ let eo = fraction((en * j), h, (ad * t))
10161016 let ep = if ((size(cX) > bv))
10171017 then parseIntValue(cX[bv])
10181018 else 0
10391039 cc(bZ(bZ(bZ(bZ(bZ(bZ(bZ(bZ(bZ(bZ(bZ(bZ(bZ(bZ(bZ(bZ(bZ(bZ(bZ(bZ(bZ(bZ(bZ(bZ(bZ(bZ(bZ(bZ(bZ(bZ(bZ(bZ(bZ(bZ(bZ(bZ(bZ(bZ(bZ(bZ(bZ(bZ(bZ(bZ(bZ(bZ(bZ(bZ(bZ(bZ(bY, 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)
10401040 }
10411041 let dT = makeString_2C([cC[B], cC[C], cC[D], makeString_2C(cG._3, "_")], ":")
1042- let dU = av(invoke(au, "updateBackpack", [N, dT], nil))
1043- let cJ = ay(invoke(au, "updateDuckStats", [N, fraction(c, cG._5, (ae * 10))], nil))
1044- $Tuple2([StringEntry(ef, makeString(cG._4, "_")), ScriptTransfer(cu.caller, cG._2, Z)], $Tuple3(dU, cA, cJ))
1042+ let dU = au(invoke(at, "updateBackpack", [N, dT], nil))
1043+ let cJ = ax(invoke(at, "updateDuckStats", [N, fraction(c, cG._5, (ad * 10))], nil))
1044+ $Tuple2([StringEntry(ef, makeString(cG._4, "_")), ScriptTransfer(cu.caller, cG._2, Y)], $Tuple3(dU, cA, cJ))
10451045 }
10461046 }
10471047 }
10491049
10501050
10511051 @Callable(cu)
1052-func updateEsStorage (eq) = if ((cu.caller != au))
1052+func updateEsStorage (eq) = if ((cu.caller != at))
10531053 then throw("Permission denied")
1054- else $Tuple2([StringEntry(S(), eq)], eq)
1054+ else $Tuple2([StringEntry(R(), eq)], eq)
10551055
10561056
Full:
OldNewDifferences
11 {-# STDLIB_VERSION 6 #-}
22 {-# SCRIPT_TYPE ACCOUNT #-}
33 {-# CONTENT_TYPE DAPP #-}
44 let a = 10000
55
66 let b = 10000
77
88 let c = 10000
99
1010 let d = 10000
1111
1212 let e = "LAND"
1313
1414 let f = 6
1515
1616 let g = "Africa_F_Africa"
1717
1818 let h = 39637
1919
2020 let i = 3
2121
2222 let j = 4
2323
2424 let k = ["Oil", "Ore", "Wood", "Sand", "Clay", "Organic"]
2525
2626 let l = ["Fuel", "Metal", "Plank", "Glass", "Plastic", "Protein"]
2727
2828 let m = ["First Aid Kit L1", "First Aid Kit L2", "First Aid Kit L3", "Backpack L1", "Backpack L2", "Backpack L3", "Food Ration L1", "Food Ration L2", "Food Ration L3", "Jet Pack L1", "Jet Pack L2", "Jet Pack L3", "Shield L1", "Shield L2", "Shield L3", "Mine L1", "Mine L2", "Mine L3", "Trap L1", "Trap L2", "Trap L3"]
2929
3030 let n = ["Americas", "Europe", "Asia", "Africa", "Oceania"]
3131
3232 let o = 10000000
3333
3434 let p = ["8_8_8_17_17_42_12_0_30_0,0,0,0,0,0,0_", "8_8_8_17_17_42_24_0_60_0,0,5,2,0,0,0_", "8_8_8_17_17_42_36_0_120_0,0,10,4,0,0,0_", "8_19_19_8_27_19_26_1_20_0,0,0,0,0,0,0_001", "8_19_19_8_27_19_52_1_40_0,0,0,0,0,0,0_001", "8_19_19_8_27_19_78_1_80_0,0,0,0,0,0,0_001", "8_8_8_8_8_60_13_2_2_0,0,0,0,0,0,0_011", "8_8_8_8_8_60_26_2_4_0,0,0,0,0,0,0_011", "8_8_8_8_8_60_39_2_8_0,0,0,0,0,0,0_011", "30_30_3_17_17_3_30_3_30_0,0,0,0,0,0,0_111", "30_30_3_17_17_3_60_3_50_0,0,0,0,0,0,0_111", "30_30_3_17_17_3_90_3_70_0,0,0,0,0,0,0_111", "18_18_10_18_18_18_11_4_10_0,0,0,0,0,0,0_201", "18_18_10_18_18_18_22_4_20_0,0,0,0,0,0,0_201", "18_18_10_18_18_18_33_4_30_0,0,0,0,0,0,0_201", "4_13_22_4_35_22_23_0_50,1,0_0,0,0,0,0,0,0_", "4_13_22_4_35_22_46_0_50,1,1_0,2,5,0,0,0,0_", "4_13_22_4_35_22_69_0_50,2,1_0,5,10,0,0,0,0_", "5_25_40_5_10_15_20_1_30,1,1_0,0,0,0,0,0,0_", "5_25_40_5_10_15_40_1_30,1,2_2,1,3,0,0,0,0_", "5_25_40_5_10_15_60_1_30,1,3_5,2,8,0,0,0,0_"]
3535
3636 let q = 6
3737
3838 let r = 7
3939
4040 let s = 11
4141
4242 let t = 10
4343
4444 let u = 0
4545
4646 let v = 1
4747
4848 let w = 2
4949
5050 let x = 3
5151
5252 let y = 4
5353
5454 let z = 0
5555
5656 let A = 3
5757
5858 let B = 0
5959
6060 let C = 1
6161
6262 let D = 2
6363
6464 let E = 3
6565
6666 func F (G) = ("nftOwner_" + G)
6767
6868
6969 func H (G) = ("stakedTime_" + G)
7070
7171
7272 func I (J) = ("accRefBy_" + J)
7373
7474
7575 func K (L) = ("stakedDuckByOwner_" + L)
7676
7777
7878 func M (N) = ("backPack_" + N)
7979
8080
8181 func O (N) = ("duckLocation_" + N)
8282
8383
84-func P () = "contractsBlocked"
84+func P (Q) = ("landOrder_" + Q)
8585
8686
87-func Q (R) = ("landOrder_" + R)
87+func R () = "emergencyWarehouseProducts"
8888
8989
90-func S () = "emergencyWarehouseProducts"
90+let S = 0
91+
92+let T = 1
93+
94+let U = 2
95+
96+func V (W) = (parseIntValue(W[q]) * o)
9197
9298
93-let T = 0
99+let X = take(drop(this.bytes, 1), 1)
94100
95-let U = 1
96-
97-let V = 2
98-
99-func W (X) = (parseIntValue(X[q]) * o)
100-
101-
102-let Y = take(drop(this.bytes, 1), 1)
103-
104-let Z = {
105- let aa = Y
106- if ((base58'2W' == aa))
101+let Y = {
102+ let Z = X
103+ if ((base58'2W' == Z))
107104 then base58'9wc3LXNA4TEBsXyKtoLE9mrbDD7WMHXvXrCjZvabLAsi'
108- else if ((base58'2T' == aa))
105+ else if ((base58'2T' == Z))
109106 then base58'6mWwf9mZBjVgkC54idpyaZLQfAosD914wT8fGf2iiY63'
110107 else throw("Unknown chain")
111108 }
112109
113-let ab = {
114- let aa = Y
115- if ((base58'2W' == aa))
110+let aa = {
111+ let Z = X
112+ if ((base58'2W' == Z))
116113 then "3PQCuvFbvh4LkPUnrnU1z3jnbA1p9m3WNhv"
117- else if ((base58'2T' == aa))
114+ else if ((base58'2T' == Z))
118115 then "3MumkGGztCKAXpWDqxkddofqXSUbqQkvSJy"
119116 else throw("Unknown chain")
120117 }
121118
122-let ac = "__"
119+let ab = "__"
123120
124-let ad = 1000000
121+let ac = 1000000
125122
126-let ae = 100000000
123+let ad = 100000000
127124
128-let af = 10000000000
125+let ae = 10000000000
129126
130-let ag = 100000
127+let af = 100000
131128
132-let ah = [0, 1, 2, 3, 4, 5]
129+let ag = [0, 1, 2, 3, 4, 5]
133130
134-func ai (aj,ak) = valueOrErrorMessage(getString(aj, ak), makeString(["mandatory ", toString(aj), ".", ak, " is not defined"], ""))
131+func ah (ai,aj) = valueOrErrorMessage(getString(ai, aj), makeString(["mandatory ", toString(ai), ".", aj, " is not defined"], ""))
135132
136133
137-let al = 1
134+let ak = 1
138135
139-func am () = "%s__restConfig"
136+func al () = "%s__restConfig"
140137
141138
142-func an () = "%s__restAddr"
139+func am () = "%s__restAddr"
143140
144141
145-func ao (ap) = split_4C(ai(ap, am()), ac)
142+func an (ao) = split_4C(ah(ao, al()), ab)
146143
147144
148-func aq (ar,as) = valueOrErrorMessage(addressFromString(ar[as]), ("Rest cfg doesn't contain address at index " + toString(as)))
145+func ap (aq,ar) = valueOrErrorMessage(addressFromString(aq[ar]), ("Rest cfg doesn't contain address at index " + toString(ar)))
149146
150147
151-let at = addressFromStringValue(valueOrElse(getString(this, an()), ab))
148+let as = addressFromStringValue(valueOrElse(getString(this, am()), aa))
152149
153-let ar = ao(at)
150+let aq = an(as)
154151
155-let au = aq(ar, al)
152+let at = ap(aq, ak)
156153
157-func av (aw) = {
158- let aa = aw
159- if ($isInstanceOf(aa, "String"))
154+func au (av) = {
155+ let Z = av
156+ if ($isInstanceOf(Z, "String"))
160157 then {
161- let ax = aa
162- ax
158+ let aw = Z
159+ aw
163160 }
164161 else throw("fail to cast into String")
165162 }
166163
167164
168-func ay (aw) = {
169- let aa = aw
170- if ($isInstanceOf(aa, "Int"))
165+func ax (av) = {
166+ let Z = av
167+ if ($isInstanceOf(Z, "Int"))
171168 then {
172- let az = aa
173- az
169+ let ay = Z
170+ ay
174171 }
175172 else throw("fail to cast into Int")
176173 }
174+
175+
176+func az () = "contractsBlocked"
177177
178178
179179 func aA (aB,aC) = {
180180 let aD = pow(10, 0, aC, 0, 0, DOWN)
181181 let aE = toString((aB % aD))
182182 let aF = drop(toString(aD), (1 + size(aE)))
183183 (((toString((aB / aD)) + ".") + aF) + aE)
184184 }
185185
186186
187187 let aG = 10000000000
188188
189189 let aH = 200
190190
191191 let aI = 300
192192
193193 let aJ = 10000
194194
195195 func aK (aL,aM) = ((("factoryWhByContinentAndRes_" + aL) + "_") + toString(aM))
196196
197197
198198 let aN = 0
199199
200200 let aO = 1
201201
202202 let aP = 2
203203
204204 func aQ (aR) = {
205205 let aS = split(valueOrElse(getString(aR), "0@0_0@0_0@0_0@0_0@0_0@0:0@0_0@0_0@0_0@0_0@0_0@0:"), ":")
206206 [if ((size(split(aS[aN], "_")) == f))
207207 then aS[aN]
208208 else "0@0_0@0_0@0_0@0_0@0_0@0", if ((size(split(aS[aO], "_")) == f))
209209 then aS[aO]
210210 else "0@0_0@0_0@0_0@0_0@0_0@0", aS[aP]]
211211 }
212212
213213
214214 func aT (aU,aV,aW) = if (aW)
215215 then {
216216 let aX = if ((aU >= 0))
217217 then (((aU + aV) - 1) / aV)
218218 else -((((-(aU) + aV) - 1) / aV))
219- (aX * ae)
219+ (aX * ad)
220220 }
221221 else aU
222222
223223
224224 func aY (aZ,aM,aU,ba) = {
225225 let bb = aK(aZ, aM)
226226 let bc = valueOrElse(getInteger(bb), 0)
227227 let bd = if ((bc > aG))
228228 then 0
229229 else if (((bc + aU) > aG))
230230 then (aG - bc)
231231 else aU
232- let be = (fraction(bd, ((aH * h) - fraction(((100 * bc) + (50 * bd)), h, aG)), af) + fraction((aU - bd), h, ae))
232+ let be = (fraction(bd, ((aH * h) - fraction(((100 * bc) + (50 * bd)), h, aG)), ae) + fraction((aU - bd), h, ad))
233233 let bf = (ba - (ba / 100))
234- if (((bf * aU) > (be * ae)))
234+ if (((bf * aU) > (be * ad)))
235235 then throw((((((((((("Actual price = " + toString(be)) + " / ") + toString(aU)) + " < minPrice = ") + toString(ba)) + ", (") + aZ) + ", ") + k[aM]) + ")"))
236236 else $Tuple2(IntegerEntry(bb, (bc + aU)), be)
237237 }
238238
239239
240240 func bg (aZ,bh,aU,bi) = {
241241 let bb = aK(aZ, bh)
242242 let bc = valueOrElse(getInteger(bb), 0)
243243 let bj = if ((bc > aG))
244244 then min([aU, (bc - aG)])
245245 else 0
246246 let bk = min([bc, (aU - bj)])
247247 let bl = (bk + bj)
248- let bm = (fraction(bk, ((aI * h) - fraction(((100 * bc) - (50 * bk)), h, aG)), af) + fraction(bj, (2 * h), ae))
248+ let bm = (fraction(bk, ((aI * h) - fraction(((100 * bc) - (50 * bk)), h, aG)), ae) + fraction(bj, (2 * h), ad))
249249 let bn = (bi + (bi / 100))
250- if (((bm * ae) > (bn * bl)))
250+ if (((bm * ad) > (bn * bl)))
251251 then throw((((((((((("Actual price = " + toString(bm)) + " / ") + toString(bl)) + " > maxPrice = ") + toString(bi)) + ", (") + aZ) + ", ") + l[bh]) + ")"))
252252 else $Tuple3(IntegerEntry(bb, (bc - bl)), bm, bl)
253253 }
254254
255255
256256 func bo (bp) = {
257- let aS = split(valueOrElse(getString(au, bp), "0:0_0_0_0_0_0:0_0_0_0_0_0:"), ":")
257+ let aS = split(valueOrElse(getString(at, bp), "0:0_0_0_0_0_0:0_0_0_0_0_0:"), ":")
258258 [toString(valueOrElse(parseInt(aS[B]), 0)), if ((size(split(aS[C], "_")) == f))
259259 then aS[C]
260260 else "0_0_0_0_0_0", if ((size(split(aS[D], "_")) == f))
261261 then aS[D]
262262 else "0_0_0_0_0_0", aS[E]]
263263 }
264264
265265
266-func bq () = if (valueOrElse(getBoolean(au, P()), false))
266+func bq () = if (valueOrElse(getBoolean(at, az()), false))
267267 then throw("Contracts are under maintenance")
268268 else unit
269269
270270
271-func br () = ay(invoke(au, "saveLastTx", nil, nil))
271+func br () = ax(invoke(at, "saveLastTx", nil, nil))
272272
273273
274274 func bs (bt,bu) = {
275275 let bv = bt._1
276276 let bw = bt._8
277277 let bx = split(bu, "@")
278278 if ((size(bx) != 2))
279279 then throw("Incorrect order format, should be amount@price")
280280 else {
281281 let by = parseIntValue(bx[0])
282282 let bz = parseIntValue(bx[1])
283- let bA = fraction(by, bz, ae)
283+ let bA = fraction(by, bz, ad)
284284 let bB = aT(by, t, bw)
285285 let bC = if ((size(bt._6) > bv))
286286 then parseIntValue(bt._6[bv])
287287 else 0
288288 let bD = split(if ((size(bt._7) > bv))
289289 then bt._7[bv]
290290 else "0@0", "@")
291291 let bE = parseIntValue(bD[0])
292292 let bF = parseIntValue(bD[1])
293293 if (if ((0 > bF))
294294 then true
295295 else (0 > bz))
296296 then throw("Price can't be negative")
297297 else {
298- let bG = fraction(bE, bF, ae)
298+ let bG = fraction(bE, bF, ad)
299299 if ((by == 0))
300300 then if ((bE > 0))
301301 then $Tuple9((bv + 1), (bt._2 :+ toString(bC)), bt._3, bt._4, (bt._5 - bG), bt._6, bt._7, bw, (bt._9 + aT(bC, t, bw)))
302302 else $Tuple9((bv + 1), (bt._2 :+ toString((bC - bE))), bt._3, bt._4, bt._5, bt._6, bt._7, bw, (bt._9 + aT((bC - bE), t, bw)))
303303 else if ((by > 0))
304304 then if ((0 > bE))
305305 then $Tuple9((bv + 1), (bt._2 :+ toString((bC - bE))), (bt._3 + bB), bt._4, (bt._5 + bA), bt._6, bt._7, bw, aT((bC - bE), t, bw))
306306 else $Tuple9((bv + 1), (bt._2 :+ toString(bC)), (bt._3 + bB), bt._4, ((bt._5 + bA) - bG), bt._6, bt._7, bw, aT(bC, t, bw))
307307 else if ((0 > bE))
308308 then {
309309 let bH = (bE - by)
310310 if ((0 > (bC - bH)))
311311 then throw((((("Attempt to take " + toString(bH)) + " from warehouse, but only ") + toString(bC)) + " available"))
312312 else $Tuple9((bv + 1), (bt._2 :+ toString((bC - bH))), bt._3, (bt._4 - bB), bt._5, bt._6, bt._7, bw, aT((bC - bH), t, bw))
313313 }
314314 else if ((0 > (bC + by)))
315315 then throw((((("Attempt to take " + toString(-(by))) + " from warehouse, but only ") + toString(bC)) + " available"))
316316 else $Tuple9((bv + 1), (bt._2 :+ toString((bC + by))), bt._3, (bt._4 - bB), (bt._5 - bG), bt._6, bt._7, bw, aT((bC + by), t, bw))
317317 }
318318 }
319319 }
320320
321321
322322 func bI (bJ,bK,bL) = {
323323 let bM = split(bJ[v], "_")
324324 let bN = split(bJ[w], "_")
325325 let bO = if ((bJ[x] == ""))
326326 then nil
327327 else split_4C(bJ[x], "_")
328328 let bP = split(bK[aN], "_")
329329 let bQ = split(bK[aO], "_")
330330 let bR = if ((bK[aP] == ""))
331331 then nil
332332 else split_4C(bK[aP], "_")
333333 if ((size(bL) != 3))
334334 then throw("newOrderStr should contain exactly 2 ':' separators")
335335 else {
336336 let bS = split(bL[0], "_")
337337 let bT = split(bL[1], "_")
338338 let bU = if ((bL[2] == ""))
339339 then nil
340340 else split_4C(bL[2], "_")
341341 if ((size(bS) != f))
342342 then throw("All 6 resources should be passed")
343343 else if ((size(bT) != f))
344344 then throw("All 6 materials should be passed")
345345 else {
346346 let bV = {
347347 let bW = bS
348348 let bX = size(bW)
349349 let bY = $Tuple9(0, nil, 0, 0, 0, bM, bP, false, 0)
350350 func bZ (ca,cb) = if ((cb >= bX))
351351 then ca
352352 else bs(ca, bW[cb])
353353
354354 func cc (ca,cb) = if ((cb >= bX))
355355 then ca
356356 else throw("List size exceeds 6")
357357
358358 cc(bZ(bZ(bZ(bZ(bZ(bZ(bY, 0), 1), 2), 3), 4), 5), 6)
359359 }
360360 let bl = {
361361 let bW = bT
362362 let bX = size(bW)
363363 let bY = $Tuple9(0, nil, bV._3, bV._4, bV._5, bN, bQ, false, bV._9)
364364 func cd (ca,cb) = if ((cb >= bX))
365365 then ca
366366 else bs(ca, bW[cb])
367367
368368 func ce (ca,cb) = if ((cb >= bX))
369369 then ca
370370 else throw("List size exceeds 6")
371371
372372 ce(cd(cd(cd(cd(cd(cd(bY, 0), 1), 2), 3), 4), 5), 6)
373373 }
374374 let aS = if ((size(bU) != 0))
375375 then {
376376 let bW = bU
377377 let bX = size(bW)
378378 let bY = $Tuple9(0, nil, bl._3, bl._4, bl._5, bO, bR, true, bl._9)
379379 func cf (ca,cb) = if ((cb >= bX))
380380 then ca
381381 else bs(ca, bW[cb])
382382
383383 func cg (ca,cb) = if ((cb >= bX))
384384 then ca
385385 else throw("List size exceeds 50")
386386
387387 cg(cf(cf(cf(cf(cf(cf(cf(cf(cf(cf(cf(cf(cf(cf(cf(cf(cf(cf(cf(cf(cf(cf(cf(cf(cf(cf(cf(cf(cf(cf(cf(cf(cf(cf(cf(cf(cf(cf(cf(cf(cf(cf(cf(cf(cf(cf(cf(cf(cf(cf(bY, 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)
388388 }
389389 else $Tuple9(0, bO, bl._3, bl._4, bl._5, bO, bR, true, bl._9)
390390 $Tuple7(bV._2, bl._2, aS._2, aS._3, aS._4, aS._5, aS._9)
391391 }
392392 }
393393 }
394394
395395
396396 func ch (bt,ci) = {
397397 let bv = bt._7
398398 let bw = bt._12
399399 let cj = split(ci, "@")
400400 if ((size(cj) != 2))
401401 then throw("Incorrect order format, should be amount@price")
402402 else {
403403 let ck = parseIntValue(cj[0])
404404 let cl = parseIntValue(cj[1])
405405 if ((0 > cl))
406406 then throw("Price can't be negative")
407407 else {
408- let cm = fraction(ck, cl, ae)
408+ let cm = fraction(ck, cl, ad)
409409 let cn = if ((size(bt._8) > bv))
410410 then parseIntValue(bt._8[bv])
411411 else 0
412412 let bC = if ((size(bt._9) > bv))
413413 then parseIntValue(bt._9[bv])
414414 else 0
415415 let co = if ((size(bt._10) > bv))
416416 then bt._10[bv]
417417 else "0@0"
418418 let cp = split(co, "@")
419419 let cq = parseIntValue(cp[0])
420420 let cr = parseIntValue(cp[1])
421421 if (if ((ck != 0))
422422 then (cl != cr)
423423 else false)
424424 then throw(((((("Prices of " + bt._11[bv]) + " don't match! WH price=") + toString(cr)) + ", your price=") + toString(cl)))
425425 else {
426- let cs = fraction(cq, cr, ae)
426+ let cs = fraction(cq, cr, ad)
427427 let ct = aT(ck, t, bw)
428428 if ((ck == 0))
429429 then $Tuple13((bt._1 :+ toString(bC)), (bt._2 :+ co), (bt._3 :+ toString(cn)), bt._4, bt._5, bt._6, (bt._7 + 1), bt._8, bt._9, bt._10, bt._11, bw, bt._13)
430430 else if ((ck > 0))
431431 then if ((0 > cq))
432432 then if ((ck > -(cq)))
433433 then throw(((((("Attempt to buy " + toString(ck)) + " of ") + bt._11[bv]) + ", but warehouse only sells ") + toString(-(cq))))
434434 else $Tuple13((bt._1 :+ toString(bC)), (bt._2 :+ ((toString((cq + ck)) + "@") + toString(cr))), (bt._3 :+ toString((cn + ck))), (bt._4 + ct), bt._5, (bt._6 + cm), (bt._7 + 1), bt._8, bt._9, bt._10, bt._11, bw, (bt._13 + (if (bw)
435- then (ck * ae)
435+ then (ck * ad)
436436 else ck)))
437437 else throw((("Attempt to buy " + bt._11[bv]) + " while warehouse doesn't sell it"))
438438 else if ((cq > 0))
439439 then if ((-(ck) > cq))
440440 then throw(((((("Attempt to sell " + toString(-(ck))) + " of ") + bt._11[bv]) + ", but warehouse only buys ") + toString(cq)))
441441 else if ((-(ck) > cn))
442442 then throw(((((("Attempt to sell " + toString(-(ck))) + ", but you only have ") + toString(cn)) + " of ") + bt._11[bv]))
443443 else $Tuple13((bt._1 :+ toString((bC - ck))), (bt._2 :+ ((toString((cq + ck)) + "@") + toString(cr))), (bt._3 :+ toString((cn + ck))), (bt._4 - ct), (bt._5 - cm), bt._6, (bt._7 + 1), bt._8, bt._9, bt._10, bt._11, bw, (bt._13 - (if (bw)
444- then (ck * ae)
444+ then (ck * ad)
445445 else ck)))
446446 else throw((("Attempt to sell " + bt._11[bv]) + " while warehouse doesn't buy it"))
447447 }
448448 }
449449 }
450450 }
451451
452452
453453 @Callable(cu)
454-func recalcLockedVolumeREADONLY (R,cv) = {
455- let bK = aQ(Q(R))
454+func recalcLockedVolumeREADONLY (Q,cv) = {
455+ let bK = aQ(P(Q))
456456 let cw = bI(cv, bK, bK)
457457 $Tuple2(nil, (cw._4 + cw._5))
458458 }
459459
460460
461461
462462 @Callable(cu)
463463 func constructorV1 (cx) = if ((cu.caller != this))
464464 then throw("Permission denied")
465- else [StringEntry(an(), cx)]
465+ else [StringEntry(am(), cx)]
466466
467467
468468
469469 @Callable(cu)
470470 func sellResources (cy,cz) = {
471471 let cA = br()
472- let N = valueOrErrorMessage(getString(au, K(toString(cu.caller))), "You don't have a duck staked")
472+ let N = valueOrErrorMessage(getString(at, K(toString(cu.caller))), "You don't have a duck staked")
473473 if ((size(cu.payments) != 0))
474474 then throw("sellResources doesn't require any payments")
475475 else {
476- let cB = split(valueOrElse(getString(au, O(N)), g), "_")
477- if ((cB[U] != "F"))
478- then throw(("Duck location type should be Factory, but is " + cB[U]))
476+ let cB = split(valueOrElse(getString(at, O(N)), g), "_")
477+ if ((cB[T] != "F"))
478+ then throw(("Duck location type should be Factory, but is " + cB[T]))
479479 else {
480- let aZ = cB[V]
480+ let aZ = cB[U]
481481 let cC = bo(M(N))
482482 let cD = split(cC[C], "_")
483483 func cE (bt,bv) = if ((cy[bv] > parseIntValue(cD[bv])))
484484 then throw(((((("You have " + cD[bv]) + " of ") + k[bv]) + ", but tried to sell ") + toString(cy[bv])))
485485 else if ((0 > cy[bv]))
486486 then throw(((("You tried to sell negative amount of " + k[bv]) + ": ") + toString(cy[bv])))
487487 else if ((cy[bv] > 0))
488488 then {
489489 let cF = aY(aZ, bv, cy[bv], cz[bv])
490490 $Tuple4((bt._1 :+ cF._1), (bt._2 :+ toString((parseIntValue(cD[bv]) - cy[bv]))), (bt._3 + cF._2), (bt._4 + cy[bv]))
491491 }
492492 else $Tuple4(bt._1, (bt._2 :+ cD[bv]), bt._3, bt._4)
493493
494494 let cG = {
495- let bW = ah
495+ let bW = ag
496496 let bX = size(bW)
497497 let bY = $Tuple4(nil, nil, 0, 0)
498498 func bZ (ca,cb) = if ((cb >= bX))
499499 then ca
500500 else cE(ca, bW[cb])
501501
502502 func cc (ca,cb) = if ((cb >= bX))
503503 then ca
504504 else throw("List size exceeds 6")
505505
506506 cc(bZ(bZ(bZ(bZ(bZ(bZ(bY, 0), 1), 2), 3), 4), 5), 6)
507507 }
508508 let cH = makeString([cC[B], makeString(cG._2, "_"), cC[D], cC[E]], ":")
509- let cI = av(invoke(au, "updateBackpack", [N, cH], nil))
510- let cJ = ay(invoke(au, "updateDuckStats", [N, fraction(a, cG._4, ae)], nil))
511- $Tuple2((cG._1 :+ ScriptTransfer(cu.caller, cG._3, Z)), $Tuple3(cI, cA, cJ))
509+ let cI = au(invoke(at, "updateBackpack", [N, cH], nil))
510+ let cJ = ax(invoke(at, "updateDuckStats", [N, fraction(a, cG._4, ad)], nil))
511+ $Tuple2((cG._1 :+ ScriptTransfer(cu.caller, cG._3, Y)), $Tuple3(cI, cA, cJ))
512512 }
513513 }
514514 }
515515
516516
517517
518518 @Callable(cu)
519519 func buyMaterials (cy,cK) = {
520520 let cA = br()
521- let N = valueOrErrorMessage(getString(au, K(toString(cu.caller))), "You don't have a duck staked")
521+ let N = valueOrErrorMessage(getString(at, K(toString(cu.caller))), "You don't have a duck staked")
522522 if ((size(cu.payments) != 1))
523523 then throw("exactly 1 payment must be attached")
524524 else {
525525 let cL = cu.payments[0]
526526 let cM = cL.amount
527527 let cN = valueOrErrorMessage(cL.assetId, "WAVES can't be used as payment")
528- if ((cN != Z))
528+ if ((cN != Y))
529529 then throw("USDT payments only!")
530530 else {
531- let cB = split(valueOrElse(getString(au, O(N)), g), "_")
532- if ((cB[U] != "F"))
533- then throw(("Duck location type should be Factory, but is " + cB[U]))
531+ let cB = split(valueOrElse(getString(at, O(N)), g), "_")
532+ if ((cB[T] != "F"))
533+ then throw(("Duck location type should be Factory, but is " + cB[T]))
534534 else {
535- let aZ = cB[V]
535+ let aZ = cB[U]
536536 let cC = bo(M(N))
537537 let cO = split(cC[D], "_")
538538 func cP (bt,bv) = if ((0 > cy[bv]))
539539 then throw(((("You tried to buy negative amount of " + l[bv]) + ": ") + toString(cy[bv])))
540540 else if ((cy[bv] > 0))
541541 then {
542542 let cF = bg(aZ, bv, cy[bv], cK[bv])
543543 $Tuple4((bt._1 :+ cF._1), (bt._2 :+ toString((parseIntValue(cO[bv]) + cF._3))), (bt._3 + cF._2), (bt._4 + cy[bv]))
544544 }
545545 else $Tuple4(bt._1, (bt._2 :+ cO[bv]), bt._3, bt._4)
546546
547547 let cG = {
548- let bW = ah
548+ let bW = ag
549549 let bX = size(bW)
550550 let bY = $Tuple4(nil, nil, 0, 0)
551551 func bZ (ca,cb) = if ((cb >= bX))
552552 then ca
553553 else cP(ca, bW[cb])
554554
555555 func cc (ca,cb) = if ((cb >= bX))
556556 then ca
557557 else throw("List size exceeds 6")
558558
559559 cc(bZ(bZ(bZ(bZ(bZ(bZ(bY, 0), 1), 2), 3), 4), 5), 6)
560560 }
561561 if ((cG._3 > cM))
562562 then throw(((("Insufficient payment! Attached=" + toString(cM)) + ", required=") + toString(cG._3)))
563563 else {
564564 let cH = makeString([cC[B], cC[C], makeString(cG._2, "_"), cC[E]], ":")
565- let cI = av(invoke(au, "updateBackpack", [N, cH], nil))
566- let ap = if (((cM - cG._3) > 0))
567- then [ScriptTransfer(cu.caller, (cM - cG._3), Z)]
565+ let cI = au(invoke(at, "updateBackpack", [N, cH], nil))
566+ let ao = if (((cM - cG._3) > 0))
567+ then [ScriptTransfer(cu.caller, (cM - cG._3), Y)]
568568 else nil
569569 let cQ = (cG._3 / 100)
570- let cJ = ay(invoke(au, "updateDuckStats", [N, fraction(a, cG._4, ae)], nil))
571- $Tuple2(((cG._1 ++ ap) :+ ScriptTransfer(at, cQ, Z)), $Tuple3(cI, cA, cJ))
570+ let cJ = ax(invoke(at, "updateDuckStats", [N, fraction(a, cG._4, ad)], nil))
571+ $Tuple2(((cG._1 ++ ao) :+ ScriptTransfer(as, cQ, Y)), $Tuple3(cI, cA, cJ))
572572 }
573573 }
574574 }
575575 }
576576 }
577577
578578
579579
580580 @Callable(cu)
581581 func exchangeResources (cy) = {
582582 let cA = br()
583- let N = valueOrErrorMessage(getString(au, K(toString(cu.caller))), "You don't have a duck staked")
583+ let N = valueOrErrorMessage(getString(at, K(toString(cu.caller))), "You don't have a duck staked")
584584 if ((size(cu.payments) != 1))
585585 then throw("exactly 1 payment must be attached")
586586 else {
587587 let cL = cu.payments[0]
588588 let cM = cL.amount
589589 let cN = valueOrErrorMessage(cL.assetId, "WAVES can't be used as payment")
590- if ((cN != Z))
590+ if ((cN != Y))
591591 then throw("USDT payments only!")
592592 else {
593- let cB = split(valueOrElse(getString(au, O(N)), g), "_")
594- if ((cB[U] != "F"))
595- then throw(("Duck location type should be Factory, but is " + cB[U]))
593+ let cB = split(valueOrElse(getString(at, O(N)), g), "_")
594+ if ((cB[T] != "F"))
595+ then throw(("Duck location type should be Factory, but is " + cB[T]))
596596 else {
597- let aZ = cB[V]
597+ let aZ = cB[U]
598598 let cC = bo(M(N))
599599 let cD = split(cC[C], "_")
600600 let cO = split(cC[D], "_")
601601 func cR (bt,bv) = {
602602 let bb = aK(aZ, bv)
603603 let bc = valueOrElse(getInteger(bb), 0)
604604 let cS = cy[bv]
605605 if ((cS > parseIntValue(cD[bv])))
606606 then throw(((((("You have " + cD[bv]) + " of ") + k[bv]) + ", but tried to exchange ") + toString(cS)))
607607 else if ((0 > cS))
608608 then throw(((("You tried to exchange negative amount of " + k[bv]) + ": ") + toString(cS)))
609609 else if ((cS > 0))
610- then $Tuple5((bt._1 :+ toString((parseIntValue(cD[bv]) - cS))), (bt._2 :+ toString((parseIntValue(cO[bv]) + cS))), (bt._3 + fraction(cS, h, ae)), (bt._4 :+ IntegerEntry(bb, bc)), (bt._5 + cS))
610+ then $Tuple5((bt._1 :+ toString((parseIntValue(cD[bv]) - cS))), (bt._2 :+ toString((parseIntValue(cO[bv]) + cS))), (bt._3 + fraction(cS, h, ad)), (bt._4 :+ IntegerEntry(bb, bc)), (bt._5 + cS))
611611 else $Tuple5((bt._1 :+ cD[bv]), (bt._2 :+ cO[bv]), bt._3, bt._4, bt._5)
612612 }
613613
614614 let cG = {
615- let bW = ah
615+ let bW = ag
616616 let bX = size(bW)
617617 let bY = $Tuple5(nil, nil, 0, nil, 0)
618618 func bZ (ca,cb) = if ((cb >= bX))
619619 then ca
620620 else cR(ca, bW[cb])
621621
622622 func cc (ca,cb) = if ((cb >= bX))
623623 then ca
624624 else throw("List size exceeds 6")
625625
626626 cc(bZ(bZ(bZ(bZ(bZ(bZ(bY, 0), 1), 2), 3), 4), 5), 6)
627627 }
628628 if ((cG._3 > cM))
629629 then throw(((("Insufficient payment! Attached=" + toString(cM)) + ", required=") + toString(cG._3)))
630630 else {
631631 let cH = makeString([cC[B], makeString(cG._1, "_"), makeString(cG._2, "_"), cC[E]], ":")
632- let cI = av(invoke(au, "updateBackpack", [N, cH], nil))
633- let ap = if (((cM - cG._3) > 0))
634- then [ScriptTransfer(cu.caller, (cM - cG._3), Z)]
632+ let cI = au(invoke(at, "updateBackpack", [N, cH], nil))
633+ let ao = if (((cM - cG._3) > 0))
634+ then [ScriptTransfer(cu.caller, (cM - cG._3), Y)]
635635 else nil
636636 let cQ = (cG._3 / 100)
637- let cJ = ay(invoke(au, "updateDuckStats", [N, fraction(a, cG._5, ae)], nil))
638- $Tuple2(((ap ++ cG._4) :+ ScriptTransfer(at, cQ, Z)), $Tuple3(cI, cA, cJ))
637+ let cJ = ax(invoke(at, "updateDuckStats", [N, fraction(a, cG._5, ad)], nil))
638+ $Tuple2(((ao ++ cG._4) :+ ScriptTransfer(as, cQ, Y)), $Tuple3(cI, cA, cJ))
639639 }
640640 }
641641 }
642642 }
643643 }
644644
645645
646646
647647 @Callable(cu)
648648 func craftGoods (cT,cU) = {
649649 let cA = br()
650650 if ((size(cu.payments) != 1))
651651 then throw("exactly 1 payment must be attached")
652652 else {
653653 let cL = cu.payments[0]
654654 let cM = cL.amount
655655 let cN = valueOrErrorMessage(cL.assetId, "WAVES can't be used as payment")
656- if ((cN != Z))
656+ if ((cN != Y))
657657 then throw("USDT payments only!")
658- else if ((cM != ad))
658+ else if ((cM != ac))
659659 then throw("exactly 1 USDT must be attached as payment")
660660 else if ((0 >= cU))
661661 then throw("Quantity should be positive")
662662 else {
663- let N = valueOrErrorMessage(getString(au, K(toString(cu.caller))), "You don't have a duck staked")
664- let cB = split(valueOrElse(getString(au, O(N)), g), "_")
665- if ((cB[U] != "M"))
666- then throw(("Duck location type should be Manufactory, but is " + cB[U]))
663+ let N = valueOrErrorMessage(getString(at, K(toString(cu.caller))), "You don't have a duck staked")
664+ let cB = split(valueOrElse(getString(at, O(N)), g), "_")
665+ if ((cB[T] != "M"))
666+ then throw(("Duck location type should be Manufactory, but is " + cB[T]))
667667 else {
668- let cV = cB[T]
668+ let cV = cB[S]
669669 let cC = bo(M(N))
670670 let cO = split(cC[D], "_")
671671 if (if ((0 > cT))
672672 then true
673673 else (cT >= size(p)))
674674 then throw(("Unknown product idx=" + toString(cT)))
675675 else {
676- let X = split(p[cT], "_")
677- if ((size(X) != s))
676+ let W = split(p[cT], "_")
677+ if ((size(W) != s))
678678 then throw(("Fatal: unknown recipe: " + p[cT]))
679679 else {
680- let cW = parseIntValue(X[r])
680+ let cW = parseIntValue(W[r])
681681 if ((n[cW] != cV))
682682 then throw(((("This product is available in " + n[cW]) + ", but you are in ") + cV))
683683 else {
684684 let cX = if ((cC[E] == ""))
685685 then nil
686686 else split_4C(cC[E], "_")
687687 func cY (bt,cZ) = {
688- let az = bt._2
689- let da = if ((size(cX) > az))
690- then cX[az]
688+ let ay = bt._2
689+ let da = if ((size(cX) > ay))
690+ then cX[ay]
691691 else "0"
692692 let db = parseIntValue(da)
693693 let aU = (cU * t)
694- let dc = if ((az == cT))
694+ let dc = if ((ay == cT))
695695 then toString((db + aU))
696696 else da
697- $Tuple2((bt._1 :+ dc), (az + 1))
697+ $Tuple2((bt._1 :+ dc), (ay + 1))
698698 }
699699
700700 let dd = ( let bW = p
701701 let bX = size(bW)
702702 let bY = $Tuple2(nil, 0)
703703 func bZ (ca,cb) = if ((cb >= bX))
704704 then ca
705705 else cY(ca, bW[cb])
706706
707707 func cc (ca,cb) = if ((cb >= bX))
708708 then ca
709709 else throw("List size exceeds 50")
710710
711711 cc(bZ(bZ(bZ(bZ(bZ(bZ(bZ(bZ(bZ(bZ(bZ(bZ(bZ(bZ(bZ(bZ(bZ(bZ(bZ(bZ(bZ(bZ(bZ(bZ(bZ(bZ(bZ(bZ(bZ(bZ(bZ(bZ(bZ(bZ(bZ(bZ(bZ(bZ(bZ(bZ(bZ(bZ(bZ(bZ(bZ(bZ(bZ(bZ(bZ(bZ(bY, 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
712712 func de (bt,bv) = {
713- let df = ((parseIntValue(X[bv]) * ad) * cU)
713+ let df = ((parseIntValue(W[bv]) * ac) * cU)
714714 let dg = parseIntValue(cO[bv])
715715 if ((df > dg))
716716 then throw(((((((("You have " + aA(dg, 8)) + " of ") + l[bv]) + ", but recipe requires ") + aA(df, 8)) + " for quantity ") + toString(cU)))
717717 else if ((df > 0))
718718 then $Tuple2((bt._1 :+ toString((dg - df))), (bt._2 + df))
719719 else $Tuple2((bt._1 :+ cO[bv]), bt._2)
720720 }
721721
722722 let cG = {
723- let bW = ah
723+ let bW = ag
724724 let bX = size(bW)
725725 let bY = $Tuple2(nil, 0)
726726 func cd (ca,cb) = if ((cb >= bX))
727727 then ca
728728 else de(ca, bW[cb])
729729
730730 func ce (ca,cb) = if ((cb >= bX))
731731 then ca
732732 else throw("List size exceeds 6")
733733
734734 ce(cd(cd(cd(cd(cd(cd(bY, 0), 1), 2), 3), 4), 5), 6)
735735 }
736736 let cH = makeString([cC[B], cC[C], makeString(cG._1, "_"), makeString_2C(dd, "_")], ":")
737- let cI = av(invoke(au, "updateBackpack", [N, cH], nil))
738- let cJ = ay(invoke(au, "updateDuckStats", [N, fraction(b, cG._2, ae)], nil))
737+ let cI = au(invoke(at, "updateBackpack", [N, cH], nil))
738+ let cJ = ax(invoke(at, "updateDuckStats", [N, fraction(b, cG._2, ad)], nil))
739739 $Tuple2(nil, $Tuple3(cI, cA, cJ))
740740 }
741741 }
742742 }
743743 }
744744 }
745745 }
746746 }
747747
748748
749749
750750 @Callable(cu)
751-func setWarehouseOrder (dh,R) = {
751+func setWarehouseOrder (dh,Q) = {
752752 let di = cu.originCaller
753753 let J = toString(di)
754- let cI = if ((di != at))
754+ let cI = if ((di != as))
755755 then bq()
756756 else false
757- let dj = value(assetInfo(fromBase58String(R)))
758- if (!(isDefined(getInteger(au, H(R)))))
757+ let dj = value(assetInfo(fromBase58String(Q)))
758+ if (!(isDefined(getInteger(at, H(Q)))))
759759 then throw((("NFT " + dj.name) + " is not staked"))
760760 else {
761- let dk = valueOrErrorMessage(getString(au, F(R)), (("NFT " + dj.name) + " is orphaned"))
762- if (if ((di != at))
761+ let dk = valueOrErrorMessage(getString(at, F(Q)), (("NFT " + dj.name) + " is orphaned"))
762+ if (if ((di != as))
763763 then (dk != J)
764764 else false)
765765 then throw((e + " is not yours"))
766766 else {
767767 let dl = split_4C(dh, ":")
768- let cv = av(invoke(au, "getWarehouseREADONLY", [R], nil))
768+ let cv = au(invoke(at, "getWarehouseREADONLY", [Q], nil))
769769 let bJ = split_4C(cv, ":")
770770 let dm = split(bJ[y], "_")
771771 let dn = parseIntValue(dm[A])
772- let aR = Q(R)
772+ let aR = P(Q)
773773 let bK = aQ(aR)
774774 let cw = bI(bJ, bK, dl)
775775 let do = cw._4
776776 let dp = cw._5
777777 let dq = cw._7
778778 let dr = (do + dp)
779779 let ds = ((dn - dq) - dr)
780780 if ((0 > ds))
781781 then throw((((((("Attempt to reserve " + toString(do)) + " space for buy orders, and ") + toString(dp)) + " space for sell orders (and occupied=") + toString(dq)) + "), leads to negative free space"))
782782 else {
783783 let dt = makeString_2C([bJ[u], makeString(cw._1, "_"), makeString(cw._2, "_"), makeString_2C(cw._3, "_"), toString(dr)], ":")
784- let du = av(invoke(au, "saveWarehouse", [dt, R], nil))
784+ let du = au(invoke(at, "saveWarehouse", [dt, Q], nil))
785785 let dv = cw._6
786786 let dw = if ((dv > 0))
787787 then if ((size(cu.payments) != 1))
788788 then throw("exactly 1 payment must be attached")
789789 else {
790790 let cL = cu.payments[0]
791791 let cM = cL.amount
792792 let cN = valueOrErrorMessage(cL.assetId, "WAVES can't be used as payment")
793- if ((cN != Z))
793+ if ((cN != Y))
794794 then throw("USDT payments only!")
795795 else if ((cM != dv))
796796 then throw(("Payment needed is " + toString(dv)))
797797 else [StringEntry(aR, dh)]
798798 }
799799 else if ((dv == 0))
800800 then if ((size(cu.payments) != 0))
801801 then throw("No payments needed")
802802 else [StringEntry(aR, dh)]
803803 else if ((size(cu.payments) != 0))
804804 then throw("No payments needed")
805- else [ScriptTransfer(addressFromStringValue(dk), -(dv), Z), StringEntry(aR, dh)]
805+ else [ScriptTransfer(addressFromStringValue(dk), -(dv), Y), StringEntry(aR, dh)]
806806 $Tuple2(dw, $Tuple2(cI, du))
807807 }
808808 }
809809 }
810810 }
811811
812812
813813
814814 @Callable(cu)
815-func acceptWarehouseOrder (dx,R,N) = {
815+func acceptWarehouseOrder (dx,Q,N) = {
816816 let cA = br()
817817 let dy = cu.originCaller
818818 let dz = toString(dy)
819- let dA = valueOrErrorMessage(getString(au, K(dz)), "You don't have a duck staked")
820- let cB = valueOrElse(getString(au, O(dA)), g)
819+ let dA = valueOrErrorMessage(getString(at, K(dz)), "You don't have a duck staked")
820+ let cB = valueOrElse(getString(at, O(dA)), g)
821821 let dB = split(value(cB), "_")
822- if ((dB[U] != "L"))
823- then throw((("Duck location type is " + dB[U]) + ", but should be L"))
822+ if ((dB[T] != "L"))
823+ then throw((("Duck location type is " + dB[T]) + ", but should be L"))
824824 else if ((dA != N))
825825 then throw(((("Your staked duck is " + dA) + ", but passed ") + N))
826826 else {
827- let dC = value(assetInfo(fromBase58String(R)))
828- if (!(isDefined(getInteger(au, H(R)))))
827+ let dC = value(assetInfo(fromBase58String(Q)))
828+ if (!(isDefined(getInteger(at, H(Q)))))
829829 then throw((("NFT " + dC.name) + " is not staked"))
830830 else {
831- let dD = valueOrErrorMessage(getString(au, F(R)), (("NFT " + dC.name) + " is orphaned"))
831+ let dD = valueOrErrorMessage(getString(at, F(Q)), (("NFT " + dC.name) + " is orphaned"))
832832 if ((dD == dz))
833833 then throw("You cannot trade with yourself")
834834 else {
835835 let dE = split_4C(dx, ":")
836836 if ((size(dE) != 3))
837837 then throw("bpOrderStr should contain exactly 2 ':' separators")
838838 else {
839839 let dF = split(dE[0], "_")
840840 let dG = split(dE[1], "_")
841841 let dH = if ((dE[2] == ""))
842842 then nil
843843 else split_4C(dE[2], "_")
844844 if ((size(dF) != f))
845845 then throw("All 6 resources should be passed")
846846 else if ((size(dG) != f))
847847 then throw("All 6 materials should be passed")
848848 else {
849- let cv = av(invoke(au, "getWarehouseREADONLY", [R], nil))
849+ let cv = au(invoke(at, "getWarehouseREADONLY", [Q], nil))
850850 let bJ = split_4C(cv, ":")
851851 let bM = split(bJ[v], "_")
852852 let bN = split(bJ[w], "_")
853853 let bO = if ((bJ[x] == ""))
854854 then nil
855855 else split_4C(bJ[x], "_")
856856 let dI = parseIntValue(split(bJ[y], "_")[z])
857857 let bp = M(N)
858858 let cC = bo(bp)
859859 let dJ = split(cC[C], "_")
860860 let dK = split(cC[D], "_")
861861 let dL = if ((cC[E] == ""))
862862 then nil
863863 else split_4C(cC[E], "_")
864- let aR = Q(R)
864+ let aR = P(Q)
865865 let dM = aQ(aR)
866866 let dN = split(dM[aN], "_")
867867 let dO = split(dM[aO], "_")
868868 let dP = if ((dM[aP] == ""))
869869 then nil
870870 else split_4C(dM[aP], "_")
871871 let bV = {
872872 let bW = dF
873873 let bX = size(bW)
874874 let bY = $Tuple13(nil, nil, nil, 0, 0, 0, 0, dJ, bM, dN, k, false, 0)
875875 func bZ (ca,cb) = if ((cb >= bX))
876876 then ca
877877 else ch(ca, bW[cb])
878878
879879 func cc (ca,cb) = if ((cb >= bX))
880880 then ca
881881 else throw("List size exceeds 6")
882882
883883 cc(bZ(bZ(bZ(bZ(bZ(bZ(bY, 0), 1), 2), 3), 4), 5), 6)
884884 }
885885 let bl = {
886886 let bW = dG
887887 let bX = size(bW)
888888 let bY = $Tuple13(nil, nil, nil, bV._4, bV._5, bV._6, 0, dK, bN, dO, l, false, bV._13)
889889 func cd (ca,cb) = if ((cb >= bX))
890890 then ca
891891 else ch(ca, bW[cb])
892892
893893 func ce (ca,cb) = if ((cb >= bX))
894894 then ca
895895 else throw("List size exceeds 6")
896896
897897 ce(cd(cd(cd(cd(cd(cd(bY, 0), 1), 2), 3), 4), 5), 6)
898898 }
899899 let aS = if ((size(dH) != 0))
900900 then {
901901 let bW = dH
902902 let bX = size(bW)
903903 let bY = $Tuple13(nil, nil, nil, bl._4, bl._5, bl._6, 0, dL, bO, dP, m, true, bl._13)
904904 func cf (ca,cb) = if ((cb >= bX))
905905 then ca
906906 else ch(ca, bW[cb])
907907
908908 func cg (ca,cb) = if ((cb >= bX))
909909 then ca
910910 else throw("List size exceeds 50")
911911
912912 cg(cf(cf(cf(cf(cf(cf(cf(cf(cf(cf(cf(cf(cf(cf(cf(cf(cf(cf(cf(cf(cf(cf(cf(cf(cf(cf(cf(cf(cf(cf(cf(cf(cf(cf(cf(cf(cf(cf(cf(cf(cf(cf(cf(cf(cf(cf(cf(cf(cf(cf(bY, 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)
913913 }
914914 else $Tuple13(bO, dP, dL, bl._4, bl._5, bl._6, 0, dL, bO, dP, m, true, bl._13)
915915 let dQ = aS._4
916916 let dR = if ((0 > (dI - dQ)))
917917 then 0
918918 else (dI - dQ)
919919 let dt = makeString_2C([bJ[u], makeString(bV._1, "_"), makeString(bl._1, "_"), makeString_2C(aS._1, "_"), toString(dR)], ":")
920920 let dS = makeString_2C([makeString(bV._2, "_"), makeString(bl._2, "_"), makeString_2C(aS._2, "_")], ":")
921921 let dT = makeString_2C([cC[B], makeString(bV._3, "_"), makeString(bl._3, "_"), makeString_2C(aS._3, "_")], ":")
922- let du = av(invoke(au, "saveWarehouse", [dt, R], nil))
923- let dU = av(invoke(au, "updateBackpack", [N, dT], nil))
924- let dV = ay(invoke(au, "updateDuckStats", [N, fraction(d, aS._13, ae)], nil))
925- let dW = ay(invoke(au, "updateAccStats", [dD, fraction(d, aS._13, ae)], nil))
922+ let du = au(invoke(at, "saveWarehouse", [dt, Q], nil))
923+ let dU = au(invoke(at, "updateBackpack", [N, dT], nil))
924+ let dV = ax(invoke(at, "updateDuckStats", [N, fraction(d, aS._13, ad)], nil))
925+ let dW = ax(invoke(at, "updateAccStats", [dD, fraction(d, aS._13, ad)], nil))
926926 let dw = [StringEntry(aR, dS)]
927927 let dX = aS._5
928928 let dY = if ((dX > 0))
929929 then {
930- let dZ = fraction(aS._5, aJ, ad)
930+ let dZ = fraction(aS._5, aJ, ac)
931931 let ea = I(dz)
932- let eb = getString(au, ea)
932+ let eb = getString(at, ea)
933933 if (isDefined(eb))
934- then (((dw :+ ScriptTransfer(dy, (aS._5 - (3 * dZ)), Z)) :+ ScriptTransfer(at, dZ, Z)) :+ ScriptTransfer(addressFromStringValue(value(eb)), dZ, Z))
935- else ((dw :+ ScriptTransfer(dy, (aS._5 - (3 * dZ)), Z)) :+ ScriptTransfer(at, dZ, Z))
934+ then (((dw :+ ScriptTransfer(dy, (aS._5 - (3 * dZ)), Y)) :+ ScriptTransfer(as, dZ, Y)) :+ ScriptTransfer(addressFromStringValue(value(eb)), dZ, Y))
935+ else ((dw :+ ScriptTransfer(dy, (aS._5 - (3 * dZ)), Y)) :+ ScriptTransfer(as, dZ, Y))
936936 }
937937 else dw
938938 let ec = aS._6
939939 let ed = if ((ec > 0))
940940 then if ((size(cu.payments) != 1))
941941 then throw("exactly 1 payment must be attached")
942942 else {
943943 let cL = cu.payments[0]
944944 let cM = cL.amount
945945 let cN = valueOrErrorMessage(cL.assetId, "WAVES can't be used as payment")
946- if ((cN != Z))
946+ if ((cN != Y))
947947 then throw("USDT payments only!")
948948 else if ((cM != ec))
949949 then throw(("Payment needed is " + toString(ec)))
950- else if ((ag > cM))
951- then throw(("Payment should be at least " + toString(ag)))
950+ else if ((af > cM))
951+ then throw(("Payment should be at least " + toString(af)))
952952 else {
953- let ee = fraction(aS._6, aJ, ad)
953+ let ee = fraction(aS._6, aJ, ac)
954954 let ea = I(dD)
955- let eb = getString(au, ea)
955+ let eb = getString(at, ea)
956956 if (isDefined(eb))
957- then (((dY :+ ScriptTransfer(addressFromStringValue(dD), (aS._6 - (3 * ee)), Z)) :+ ScriptTransfer(at, ee, Z)) :+ ScriptTransfer(addressFromStringValue(value(eb)), ee, Z))
958- else ((dY :+ ScriptTransfer(addressFromStringValue(dD), (aS._6 - (3 * ee)), Z)) :+ ScriptTransfer(at, ee, Z))
957+ then (((dY :+ ScriptTransfer(addressFromStringValue(dD), (aS._6 - (3 * ee)), Y)) :+ ScriptTransfer(as, ee, Y)) :+ ScriptTransfer(addressFromStringValue(value(eb)), ee, Y))
958+ else ((dY :+ ScriptTransfer(addressFromStringValue(dD), (aS._6 - (3 * ee)), Y)) :+ ScriptTransfer(as, ee, Y))
959959 }
960960 }
961961 else if ((size(cu.payments) != 0))
962962 then throw("No payments needed")
963963 else dY
964964 $Tuple2(ed, $Tuple5(cA, du, dU, dV, dW))
965965 }
966966 }
967967 }
968968 }
969969 }
970970 }
971971
972972
973973
974974 @Callable(cu)
975975 func sellProductsToES (cy) = {
976976 let cA = br()
977977 if ((size(cu.payments) != 0))
978978 then throw("No payments needed")
979979 else {
980- let N = valueOrErrorMessage(getString(au, K(toString(cu.caller))), "You don't have a duck staked")
981- let cB = split(valueOrElse(getString(au, O(N)), g), "_")
982- if ((cB[U] != "A"))
983- then throw(("Duck location type should be Airport, but is " + cB[U]))
980+ let N = valueOrErrorMessage(getString(at, K(toString(cu.caller))), "You don't have a duck staked")
981+ let cB = split(valueOrElse(getString(at, O(N)), g), "_")
982+ if ((cB[T] != "A"))
983+ then throw(("Duck location type should be Airport, but is " + cB[T]))
984984 else {
985985 let cC = bo(M(N))
986986 let cX = if ((cC[E] == ""))
987987 then nil
988988 else split_4C(cC[E], "_")
989- let ef = S()
989+ let ef = R()
990990 let eg = getString(ef)
991991 let eh = if (isDefined(eg))
992992 then split(value(eg), "_")
993993 else nil
994994 func ei (bt,ej) = {
995995 let bv = bt._1
996996 let cU = if ((size(cy) > bv))
997997 then cy[bv]
998998 else 0
999999 if ((0 > cU))
10001000 then throw("Quantity cannot be negative")
10011001 else {
1002- let X = split(ej, "_")
1003- if ((size(X) != s))
1002+ let W = split(ej, "_")
1003+ if ((size(W) != s))
10041004 then throw(("Fatal: unknown recipe: " + ej))
10051005 else {
10061006 let ek = (i * t)
10071007 let el = if ((size(eh) > bv))
10081008 then parseIntValue(eh[bv])
10091009 else 0
10101010 let em = (ek - el)
10111011 if ((cU > em))
10121012 then throw(((("Warehouse can buy only " + toString(em)) + " of ") + m[bv]))
10131013 else {
1014- let en = W(X)
1015- let eo = fraction((en * j), h, (ae * t))
1014+ let en = V(W)
1015+ let eo = fraction((en * j), h, (ad * t))
10161016 let ep = if ((size(cX) > bv))
10171017 then parseIntValue(cX[bv])
10181018 else 0
10191019 if ((cU > ep))
10201020 then throw(((("You have only " + toString(ep)) + " of ") + m[bv]))
10211021 else $Tuple5((bv + 1), (bt._2 + (eo * cU)), (bt._3 :+ toString((ep - cU))), (bt._4 :+ toString((el + cU))), (bt._5 + (en * cU)))
10221022 }
10231023 }
10241024 }
10251025 }
10261026
10271027 let cG = {
10281028 let bW = p
10291029 let bX = size(bW)
10301030 let bY = $Tuple5(0, 0, nil, nil, 0)
10311031 func bZ (ca,cb) = if ((cb >= bX))
10321032 then ca
10331033 else ei(ca, bW[cb])
10341034
10351035 func cc (ca,cb) = if ((cb >= bX))
10361036 then ca
10371037 else throw("List size exceeds 50")
10381038
10391039 cc(bZ(bZ(bZ(bZ(bZ(bZ(bZ(bZ(bZ(bZ(bZ(bZ(bZ(bZ(bZ(bZ(bZ(bZ(bZ(bZ(bZ(bZ(bZ(bZ(bZ(bZ(bZ(bZ(bZ(bZ(bZ(bZ(bZ(bZ(bZ(bZ(bZ(bZ(bZ(bZ(bZ(bZ(bZ(bZ(bZ(bZ(bZ(bZ(bZ(bZ(bY, 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)
10401040 }
10411041 let dT = makeString_2C([cC[B], cC[C], cC[D], makeString_2C(cG._3, "_")], ":")
1042- let dU = av(invoke(au, "updateBackpack", [N, dT], nil))
1043- let cJ = ay(invoke(au, "updateDuckStats", [N, fraction(c, cG._5, (ae * 10))], nil))
1044- $Tuple2([StringEntry(ef, makeString(cG._4, "_")), ScriptTransfer(cu.caller, cG._2, Z)], $Tuple3(dU, cA, cJ))
1042+ let dU = au(invoke(at, "updateBackpack", [N, dT], nil))
1043+ let cJ = ax(invoke(at, "updateDuckStats", [N, fraction(c, cG._5, (ad * 10))], nil))
1044+ $Tuple2([StringEntry(ef, makeString(cG._4, "_")), ScriptTransfer(cu.caller, cG._2, Y)], $Tuple3(dU, cA, cJ))
10451045 }
10461046 }
10471047 }
10481048
10491049
10501050
10511051 @Callable(cu)
1052-func updateEsStorage (eq) = if ((cu.caller != au))
1052+func updateEsStorage (eq) = if ((cu.caller != at))
10531053 then throw("Permission denied")
1054- else $Tuple2([StringEntry(S(), eq)], eq)
1054+ else $Tuple2([StringEntry(R(), eq)], eq)
10551055
10561056

github/deemru/w8io/169f3d6 
320.05 ms