tx · AreAx8kG7V8V5i5rwFUViSjZrBAJnypDtxCYXezDVzG1

3N8y4wxX3JC4TdrCJBXX16SjWf6X256hrep:  -0.05700000 Waves

2023.09.30 19:40 [2778415] smart account 3N8y4wxX3JC4TdrCJBXX16SjWf6X256hrep > SELF 0.00000000 Waves

{ "type": 13, "id": "AreAx8kG7V8V5i5rwFUViSjZrBAJnypDtxCYXezDVzG1", "fee": 5700000, "feeAssetId": null, "timestamp": 1696092047061, "version": 2, "chainId": 84, "sender": "3N8y4wxX3JC4TdrCJBXX16SjWf6X256hrep", "senderPublicKey": "7v5L7QkXxfkirALdyqmox38QCsa9jtfAtgUfHTh34eWq", "proofs": [ "4vX1cvTjXXjUaN8RrSL3j8V3D12G5X7DU7B3YQujPUyzNANFFuxXnNBWHrx2ZooWvNTF9hF3nK7xsyGvjDx6iJ5a" ], "script": "base64:BgKGAQgCEgQKAggYEgMKAQgSBAoCERESBAoCCAESAwoBARIFCgMREQgSBgoEEREICBIECgIRERIFCgMREQgSBgoEEREICBIDCgEREgMKARESBAoCEQgSBAoCAQESBAoCCAgSBQoDCAgIEgQKAggIEgUKAwgICBIDCgEREgMKAQgSAwoBARIDCgEIZgAHeHBUcmFkZQCQTgAHeHBDcmFmdACQTgAKeHBTZWxsVG9FcwCQTgAGeHBTaG9wAJBOAApMQU5EUFJFRklYAgRMQU5EAAZOVU1SRVMABgAPREVGQVVMVExPQ0FUSU9OAg9BZnJpY2FfRl9BZnJpY2EAEFJFU09VUkNFUFJJQ0VNSU4A1bUCAA1FU01BWFBBQ0tBR0VTAAoACUVTQlVZQ09FRgAEABVNSU5fVVNEVF9GRUVfREVMSVZFUlkA0IYDABdNSU5fVVNEVF9GRUVfREVMSVZFUlkxNQD4yQQACHJlc1R5cGVzCQDMCAICA09pbAkAzAgCAgNPcmUJAMwIAgIEV29vZAkAzAgCAgRTYW5kCQDMCAICBENsYXkJAMwIAgIHT3JnYW5pYwUDbmlsAAhtYXRUeXBlcwkAzAgCAgRGdWVsCQDMCAICBU1ldGFsCQDMCAICBVBsYW5rCQDMCAICBUdsYXNzCQDMCAICB1BsYXN0aWMJAMwIAgIHUHJvdGVpbgUDbmlsAAlwcm9kVHlwZXMJAMwIAgIQRmlyc3QgQWlkIEtpdCBMMQkAzAgCAhBGaXJzdCBBaWQgS2l0IEwyCQDMCAICEEZpcnN0IEFpZCBLaXQgTDMJAMwIAgILQmFja3BhY2sgTDEJAMwIAgILQmFja3BhY2sgTDIJAMwIAgILQmFja3BhY2sgTDMJAMwIAgIORm9vZCBSYXRpb24gTDEJAMwIAgIORm9vZCBSYXRpb24gTDIJAMwIAgIORm9vZCBSYXRpb24gTDMJAMwIAgILSmV0IFBhY2sgTDEJAMwIAgILSmV0IFBhY2sgTDIJAMwIAgILSmV0IFBhY2sgTDMJAMwIAgIJU2hpZWxkIEwxCQDMCAICCVNoaWVsZCBMMgkAzAgCAglTaGllbGQgTDMJAMwIAgIHTWluZSBMMQkAzAgCAgdNaW5lIEwyCQDMCAICB01pbmUgTDMJAMwIAgIHVHJhcCBMMQkAzAgCAgdUcmFwIEwyCQDMCAICB1RyYXAgTDMFA25pbAAKY29udGluZW50cwkAzAgCAghBbWVyaWNhcwkAzAgCAgZFdXJvcGUJAMwIAgIEQXNpYQkAzAgCAgZBZnJpY2EJAMwIAgIHT2NlYW5pYQUDbmlsAAlDT0VGRjJNQVQAgK3iBAAQcHJvZHVjdGlvbk1hdHJpeAkAzAgCAiU4XzhfOF8xN18xN180Ml8xMl8wXzMwXzAsMCwwLDAsMCwwLDBfCQDMCAICJThfOF84XzE3XzE3XzQyXzI0XzBfNjBfMCwwLDUsMiwwLDAsMF8JAMwIAgInOF84XzhfMTdfMTdfNDJfMzZfMF8xMjBfMCwwLDEwLDQsMCwwLDBfCQDMCAICKThfMTlfMTlfOF8yN18xOV8yNl8xXzIwXzAsMCwwLDAsMCwwLDBfMDAxCQDMCAICKThfMTlfMTlfOF8yN18xOV81Ml8xXzQwXzAsMCwwLDAsMCwwLDBfMDAxCQDMCAICKThfMTlfMTlfOF8yN18xOV83OF8xXzgwXzAsMCwwLDAsMCwwLDBfMDAxCQDMCAICJThfOF84XzhfOF82MF8xM18yXzJfMCwwLDAsMCwwLDAsMF8wMTEJAMwIAgIlOF84XzhfOF84XzYwXzI2XzJfNF8wLDAsMCwwLDAsMCwwXzAxMQkAzAgCAiU4XzhfOF84XzhfNjBfMzlfMl84XzAsMCwwLDAsMCwwLDBfMDExCQDMCAICKTMwXzMwXzNfMTdfMTdfM18zMF8zXzMwXzAsMCwwLDAsMCwwLDBfMTExCQDMCAICKTMwXzMwXzNfMTdfMTdfM182MF8zXzUwXzAsMCwwLDAsMCwwLDBfMTExCQDMCAICKTMwXzMwXzNfMTdfMTdfM185MF8zXzcwXzAsMCwwLDAsMCwwLDBfMTExCQDMCAICKzE4XzE4XzEwXzE4XzE4XzE4XzExXzRfMTBfMCwwLDAsMCwwLDAsMF8yMDEJAMwIAgIrMThfMThfMTBfMThfMThfMThfMjJfNF8yMF8wLDAsMCwwLDAsMCwwXzIwMQkAzAgCAisxOF8xOF8xMF8xOF8xOF8xOF8zM180XzMwXzAsMCwwLDAsMCwwLDBfMjAxCQDMCAICKjRfMTNfMjJfNF8zNV8yMl8yM18wXzUwLDEsMF8wLDAsMCwwLDAsMCwwXwkAzAgCAio0XzEzXzIyXzRfMzVfMjJfNDZfMF81MCwxLDFfMCwyLDUsMCwwLDAsMF8JAMwIAgIrNF8xM18yMl80XzM1XzIyXzY5XzBfNTAsMiwxXzAsNSwxMCwwLDAsMCwwXwkAzAgCAio1XzI1XzQwXzVfMTBfMTVfMjBfMV8zMCwxLDFfMCwwLDAsMCwwLDAsMF8JAMwIAgIqNV8yNV80MF81XzEwXzE1XzQwXzFfMzAsMSwyXzIsMSwzLDAsMCwwLDBfCQDMCAICKjVfMjVfNDBfNV8xMF8xNV82MF8xXzMwLDEsM181LDIsOCwwLDAsMCwwXwUDbmlsAAlySWR4Q29lZmYABgANcklkeENvbnRpbmVudAAHAApSRUNJUEVTSVpFAAsADlBST0RVQ1RQS0dTSVpFAAoAC3doSWR4TGV2ZWxzAAAACHdoSWR4UmVzAAEACHdoSWR4TWF0AAIACXdoSWR4UHJvZAADAAl3aElkeExPRlQABAAJdm9sTG9ja2VkAAAACHZvbFRvdGFsAAMACmJwSWR4TGV2ZWwAAAAIYnBJZHhSZXMAAQAIYnBJZHhNYXQAAgAJYnBJZHhQcm9kAAMAD2xvY0lkeENvbnRpbmVudAAAAApsb2NJZHhUeXBlAAEACGxvY0lkeElkAAIBFWtleUxhbmRBc3NldElkVG9Pd25lcgEHYXNzZXRJZAkArAICAgNub18FB2Fzc2V0SWQBFmtleVN0YWtlZFRpbWVCeUFzc2V0SWQBB2Fzc2V0SWQJAKwCAgIDc3RfBQdhc3NldElkAQ9rZXlBZGRyZXNzUmVmQnkBBGFkZHIJAKwCAgIJYWNjUmVmQnlfBQRhZGRyARRrZXlTdGFrZWREdWNrQnlPd25lcgEJb3duZXJBZGRyCQCsAgICEnN0YWtlZER1Y2tCeU93bmVyXwUJb3duZXJBZGRyARFrZXlCYWNrcGFja0J5RHVjawELZHVja0Fzc2V0SWQJAKwCAgIJYmFja1BhY2tfBQtkdWNrQXNzZXRJZAEPa2V5RHVja0xvY2F0aW9uAQtkdWNrQXNzZXRJZAkArAICAg1kdWNrTG9jYXRpb25fBQtkdWNrQXNzZXRJZAEOa2V5T3JkZXJCeUxhbmQBC2xhbmRBc3NldElkCQCsAgICCmxhbmRPcmRlcl8FC2xhbmRBc3NldElkAQ5rZXlFc1dhcmVob3VzZQACGmVtZXJnZW5jeVdhcmVob3VzZVByb2R1Y3RzAA9kZWxpdmVyeUZ1bmRLZXkCDGRlbGl2ZXJ5RnVuZAARZGVsaXZlcnlMb2NrZWRLZXkCDmRlbGl2ZXJ5TG9ja2VkARJnZXRSZWNpcGVNYXRlcmlhbHMBBnJlY2lwZQkAaAIJAQ1wYXJzZUludFZhbHVlAQkAkQMCBQZyZWNpcGUFCXJJZHhDb2VmZgUJQ09FRkYyTUFUABFLU19BTExPV19ERUxJVkVSWQcABWNoYWluCQDJAQIJAMoBAggFBHRoaXMFYnl0ZXMAAQABAAt1c2R0QXNzZXRJZAQHJG1hdGNoMAUFY2hhaW4DCQAAAgEBVwUHJG1hdGNoMAEghNp6sggDP07Ru8qO7ouTvMmC3Qtd+geWqNQj+agP/7kDCQAAAgEBVAUHJG1hdGNoMAEgVbHYn3KHgu/l41uNrAWrZd6aQ6EvFrsF8xq3h6XxxRgJAAIBAg1Vbmtub3duIGNoYWluABVkZWZhdWx0UmVzdEFkZHJlc3NTdHIEByRtYXRjaDAFBWNoYWluAwkAAAIBAVcFByRtYXRjaDACIzNQUUN1dkZidmg0TGtQVW5yblUxejNqbmJBMXA5bTNXTmh2AwkAAAIBAVQFByRtYXRjaDACIzNNdW1rR0d6dENLQVhwV0RxeGtkZG9mcVhTVWJxUWt2U0p5CQACAQINVW5rbm93biBjaGFpbgADU0VQAgJfXwAFTVVMVDUAoI0GAAVNVUxUNgDAhD0ABU1VTFQ4AIDC1y8ABk1VTFQxMACAyK+gJQAOTUlOU0hPUFBBWU1FTlQAoI0GAAVJVEVSNgkAzAgCAAAJAMwIAgABCQDMCAIAAgkAzAgCAAMJAMwIAgAECQDMCAIABQUDbmlsAQ9nZXRTdHJpbmdPckZhaWwCB2FkZHJlc3MDa2V5CQETdmFsdWVPckVycm9yTWVzc2FnZQIJAJ0IAgUHYWRkcmVzcwUDa2V5CQC5CQIJAMwIAgIKbWFuZGF0b3J5IAkAzAgCCQClCAEFB2FkZHJlc3MJAMwIAgIBLgkAzAgCBQNrZXkJAMwIAgIPIGlzIG5vdCBkZWZpbmVkBQNuaWwCAAARSWR4Q2ZnU3Rha2luZ0RhcHAAAQAUSWR4Q2ZnSW52ZXN0RnVuZERhcHAABgAPSWR4Q2ZnQWNyZXNEYXBwAAgBCmtleVJlc3RDZmcAAg4lc19fcmVzdENvbmZpZwEOa2V5UmVzdEFkZHJlc3MAAgwlc19fcmVzdEFkZHIBEXJlYWRSZXN0Q2ZnT3JGYWlsAQRyZXN0CQC8CQIJAQ9nZXRTdHJpbmdPckZhaWwCBQRyZXN0CQEKa2V5UmVzdENmZwAFA1NFUAEYZ2V0Q29udHJhY3RBZGRyZXNzT3JGYWlsAgdyZXN0Q2ZnA2lkeAkBE3ZhbHVlT3JFcnJvck1lc3NhZ2UCCQCmCAEJAJEDAgUHcmVzdENmZwUDaWR4CQCsAgICKlJlc3QgY2ZnIGRvZXNuJ3QgY29udGFpbiBhZGRyZXNzIGF0IGluZGV4IAkApAMBBQNpZHgADHJlc3RDb250cmFjdAkBEUBleHRyTmF0aXZlKDEwNjIpAQkBC3ZhbHVlT3JFbHNlAgkAnQgCBQR0aGlzCQEOa2V5UmVzdEFkZHJlc3MABRVkZWZhdWx0UmVzdEFkZHJlc3NTdHIAB3Jlc3RDZmcJARFyZWFkUmVzdENmZ09yRmFpbAEFDHJlc3RDb250cmFjdAAPc3Rha2luZ0NvbnRyYWN0CQEYZ2V0Q29udHJhY3RBZGRyZXNzT3JGYWlsAgUHcmVzdENmZwURSWR4Q2ZnU3Rha2luZ0RhcHAAEmludmVzdEZ1bmRDb250cmFjdAkBGGdldENvbnRyYWN0QWRkcmVzc09yRmFpbAIFB3Jlc3RDZmcFFElkeENmZ0ludmVzdEZ1bmREYXBwAA1hY3Jlc0NvbnRyYWN0CQEYZ2V0Q29udHJhY3RBZGRyZXNzT3JGYWlsAgUHcmVzdENmZwUPSWR4Q2ZnQWNyZXNEYXBwAQhhc1N0cmluZwEBdgQHJG1hdGNoMAUBdgMJAAECBQckbWF0Y2gwAgZTdHJpbmcEAXMFByRtYXRjaDAFAXMJAAIBAhhmYWlsIHRvIGNhc3QgaW50byBTdHJpbmcBBWFzSW50AQF2BAckbWF0Y2gwBQF2AwkAAQIFByRtYXRjaDACA0ludAQBbgUHJG1hdGNoMAUBbgkAAgECFWZhaWwgdG8gY2FzdCBpbnRvIEludAEKa2V5QmxvY2tlZAACEGNvbnRyYWN0c0Jsb2NrZWQBCmZpeGVkUG9pbnQCA3ZhbAhkZWNpbWFscwQGdGVuUG93CQBsBgAKAAAFCGRlY2ltYWxzAAAAAAUERE9XTgQHbG93UGFydAkApAMBCQBqAgUDdmFsBQZ0ZW5Qb3cEBnplcm9lcwkAsAICCQCkAwEFBnRlblBvdwkAZAIAAQkAsQIBBQdsb3dQYXJ0CQCsAgIJAKwCAgkArAICCQCkAwEJAGkCBQN2YWwFBnRlblBvdwIBLgUGemVyb2VzBQdsb3dQYXJ0ABNGQUNUT1JZTUFYV0FSRUhPVVNFAIDIr6AlAA5TRUxMTVVMVElQTElFUgDIAQANQlVZTVVMVElQTElFUgCsAgAKQVVDVElPTkZFRQCQTgAMREVMSVZFUllfRkVFAJBOAA5ERUxJVkVSWV9GRUUxNQCYdQEea2V5RmFjdG9yeVdhcmVob3VzZUJ5SWRBbmRUeXBlAglmYWN0b3J5SWQHcmVzVHlwZQkArAICCQCsAgIJAKwCAgIbZmFjdG9yeVdoQnlDb250aW5lbnRBbmRSZXNfBQlmYWN0b3J5SWQCAV8JAKQDAQUHcmVzVHlwZQAJb3JkSWR4UmVzAAAACW9yZElkeE1hdAABAApvcmRJZHhQcm9kAAIBCGdldE9yZGVyAQZvcmRLZXkEAXAJALUJAgkBC3ZhbHVlT3JFbHNlAgkAoggBBQZvcmRLZXkCMDBAMF8wQDBfMEAwXzBAMF8wQDBfMEAwOjBAMF8wQDBfMEAwXzBAMF8wQDBfMEAwOgIBOgkAzAgCAwkAAAIJAJADAQkAtQkCCQCRAwIFAXAFCW9yZElkeFJlcwIBXwUGTlVNUkVTCQCRAwIFAXAFCW9yZElkeFJlcwIXMEAwXzBAMF8wQDBfMEAwXzBAMF8wQDAJAMwIAgMJAAACCQCQAwEJALUJAgkAkQMCBQFwBQlvcmRJZHhNYXQCAV8FBk5VTVJFUwkAkQMCBQFwBQlvcmRJZHhNYXQCFzBAMF8wQDBfMEAwXzBAMF8wQDBfMEAwCQDMCAIJAJEDAgUBcAUKb3JkSWR4UHJvZAUDbmlsAQh0b1ZvbHVtZQMGYW1vdW50B3BrZ1NpemUJaXNQcm9kdWN0AwUJaXNQcm9kdWN0BARwa2dzAwkAZwIFBmFtb3VudAAACQBpAgkAZQIJAGQCBQZhbW91bnQFB3BrZ1NpemUAAQUHcGtnU2l6ZQkBAS0BCQBpAgkAZQIJAGQCCQEBLQEFBmFtb3VudAUHcGtnU2l6ZQABBQdwa2dTaXplCQBoAgUEcGtncwUFTVVMVDgFBmFtb3VudAEMc2VsbEludGVybmFsBAVsb2NJZAdyZXNUeXBlBmFtb3VudAhtaW5QcmljZQQFd2hLZXkJAR5rZXlGYWN0b3J5V2FyZWhvdXNlQnlJZEFuZFR5cGUCBQVsb2NJZAUHcmVzVHlwZQQCdzAJAQt2YWx1ZU9yRWxzZQIJAJ8IAQUFd2hLZXkAAAQCcjADCQBmAgUCdzAFE0ZBQ1RPUllNQVhXQVJFSE9VU0UAAAMJAGYCCQBkAgUCdzAFBmFtb3VudAUTRkFDVE9SWU1BWFdBUkVIT1VTRQkAZQIFE0ZBQ1RPUllNQVhXQVJFSE9VU0UFAncwBQZhbW91bnQEDHVzZHRSZWNlaXZlZAkAZAIJAGsDBQJyMAkAZQIJAGgCBQ5TRUxMTVVMVElQTElFUgUQUkVTT1VSQ0VQUklDRU1JTgkAawMJAGQCCQBoAgBkBQJ3MAkAaAIAMgUCcjAFEFJFU09VUkNFUFJJQ0VNSU4FE0ZBQ1RPUllNQVhXQVJFSE9VU0UFBk1VTFQxMAkAawMJAGUCBQZhbW91bnQFAnIwBRBSRVNPVVJDRVBSSUNFTUlOBQVNVUxUOAQFbWluOTkJAGUCBQhtaW5QcmljZQkAaQIFCG1pblByaWNlAGQDCQBmAgkAaAIFBW1pbjk5BQZhbW91bnQJAGgCBQx1c2R0UmVjZWl2ZWQFBU1VTFQ4CQACAQkArAICCQCsAgIJAKwCAgkArAICCQCsAgIJAKwCAgkArAICCQCsAgIJAKwCAgkArAICAg9BY3R1YWwgcHJpY2UgPSAJAKQDAQUMdXNkdFJlY2VpdmVkAgMgLyAJAKQDAQUGYW1vdW50Ag4gPCBtaW5QcmljZSA9IAkApAMBBQhtaW5QcmljZQIDLCAoBQVsb2NJZAICLCAJAJEDAgUIcmVzVHlwZXMFB3Jlc1R5cGUCASkJAJQKAgkBDEludGVnZXJFbnRyeQIFBXdoS2V5CQBkAgUCdzAFBmFtb3VudAUMdXNkdFJlY2VpdmVkAQtidXlJbnRlcm5hbAQFbG9jSWQHbWF0VHlwZQZhbW91bnQIbWF4UHJpY2UEBXdoS2V5CQEea2V5RmFjdG9yeVdhcmVob3VzZUJ5SWRBbmRUeXBlAgUFbG9jSWQFB21hdFR5cGUEAncwCQELdmFsdWVPckVsc2UCCQCfCAEFBXdoS2V5AAAEAm0xAwkAZgIFAncwBRNGQUNUT1JZTUFYV0FSRUhPVVNFCQCXAwEJAMwIAgUGYW1vdW50CQDMCAIJAGUCBQJ3MAUTRkFDVE9SWU1BWFdBUkVIT1VTRQUDbmlsAAAEAm0wCQCXAwEJAMwIAgUCdzAJAMwIAgkAZQIFBmFtb3VudAUCbTEFA25pbAQBbQkAZAIFAm0wBQJtMQQFdzBtaW4JAJcDAQkAzAgCBQJ3MAkAzAgCBRNGQUNUT1JZTUFYV0FSRUhPVVNFBQNuaWwECXVzZHRTcGVudAkAZAIJAGsDBQJtMAkAZQIJAGgCBQ1CVVlNVUxUSVBMSUVSBRBSRVNPVVJDRVBSSUNFTUlOCQBrAwkAZQIJAGgCAGQFBXcwbWluCQBoAgAyBQJtMAUQUkVTT1VSQ0VQUklDRU1JTgUTRkFDVE9SWU1BWFdBUkVIT1VTRQUGTVVMVDEwCQBrAwUCbTEJAGgCAAIFEFJFU09VUkNFUFJJQ0VNSU4FBU1VTFQ4BAZtYXgxMDEJAGQCBQhtYXhQcmljZQkAaQIFCG1heFByaWNlAGQDCQBmAgkAaAIFCXVzZHRTcGVudAUFTVVMVDgJAGgCBQZtYXgxMDEFAW0JAAIBCQCsAgIJAKwCAgkArAICCQCsAgIJAKwCAgkArAICCQCsAgIJAKwCAgkArAICCQCsAgICD0FjdHVhbCBwcmljZSA9IAkApAMBBQl1c2R0U3BlbnQCAyAvIAkApAMBBQFtAg4gPiBtYXhQcmljZSA9IAkApAMBBQhtYXhQcmljZQIDLCAoBQVsb2NJZAICLCAJAJEDAgUIbWF0VHlwZXMFB21hdFR5cGUCASkJAJUKAwkBDEludGVnZXJFbnRyeQIFBXdoS2V5CQBlAgUCdzAFAW0FCXVzZHRTcGVudAUBbQELZ2V0QmFja3BhY2sBBWJwS2V5BAFwCQC8CQIJAQt2YWx1ZU9yRWxzZQIJAJ0IAgUPc3Rha2luZ0NvbnRyYWN0BQVicEtleQIaMDowXzBfMF8wXzBfMDowXzBfMF8wXzBfMDoCAToJAMwIAgkApAMBCQELdmFsdWVPckVsc2UCCQC2CQEJAJEDAgUBcAUKYnBJZHhMZXZlbAAACQDMCAIDCQAAAgkAkAMBCQC1CQIJAJEDAgUBcAUIYnBJZHhSZXMCAV8FBk5VTVJFUwkAkQMCBQFwBQhicElkeFJlcwILMF8wXzBfMF8wXzAJAMwIAgMJAAACCQCQAwEJALUJAgkAkQMCBQFwBQhicElkeE1hdAIBXwUGTlVNUkVTCQCRAwIFAXAFCGJwSWR4TWF0AgswXzBfMF8wXzBfMAkAzAgCCQCRAwIFAXAFCWJwSWR4UHJvZAUDbmlsAQxjaGVja0Jsb2NrZWQAAwkBC3ZhbHVlT3JFbHNlAgkAmwgCBQ9zdGFraW5nQ29udHJhY3QJAQprZXlCbG9ja2VkAAcJAAIBAh9Db250cmFjdHMgYXJlIHVuZGVyIG1haW50ZW5hbmNlBQR1bml0AQZwcm9sb2cACQEFYXNJbnQBCQD8BwQFD3N0YWtpbmdDb250cmFjdAIKc2F2ZUxhc3RUeAUDbmlsBQNuaWwBCXNldENvbW1vbgIDYWNjD2lnbm9yZWRJdGVyYXRvcgQBaggFA2FjYwJfMQQEaXRlbQMJAGYCCQCQAwEIBQNhY2MDXzEwBQFqCQCRAwIIBQNhY2MDXzEwBQFqAgMwQDAEBmlzUHJvZAgFA2FjYwJfOAQJaXRlbVBhcnRzCQC1CQIFBGl0ZW0CAUADCQECIT0CCQCQAwEFCWl0ZW1QYXJ0cwACCQACAQIuSW5jb3JyZWN0IG9yZGVyIGZvcm1hdCwgc2hvdWxkIGJlIGFtb3VudEBwcmljZQQIbmV3T3JkQW0JAQ1wYXJzZUludFZhbHVlAQkAkQMCBQlpdGVtUGFydHMAAAQIbmV3T3JkUHIJAQ1wYXJzZUludFZhbHVlAQkAkQMCBQlpdGVtUGFydHMAAQQJbmV3T3JkVXNkAwUGaXNQcm9kCQBoAgUIbmV3T3JkQW0FCG5ld09yZFByCQBrAwUIbmV3T3JkQW0FCG5ld09yZFByBQVNVUxUOAQJbmV3T3JkVm9sCQEIdG9Wb2x1bWUDBQhuZXdPcmRBbQUOUFJPRFVDVFBLR1NJWkUFBmlzUHJvZAQGd2hJbml0AwkAZgIJAJADAQgFA2FjYwJfNgUBagkBDXBhcnNlSW50VmFsdWUBCQCRAwIIBQNhY2MCXzYFAWoAAAQLY3VyT3JkUGFydHMJALUJAgMJAGYCCQCQAwEIBQNhY2MCXzcFAWoJAJEDAggFA2FjYwJfNwUBagIDMEAwAgFABAhjdXJPcmRBbQkBDXBhcnNlSW50VmFsdWUBCQCRAwIFC2N1ck9yZFBhcnRzAAAECGN1ck9yZFByCQENcGFyc2VJbnRWYWx1ZQEJAJEDAgULY3VyT3JkUGFydHMAAQMDCQBmAgAABQhjdXJPcmRQcgYJAGYCAAAFCG5ld09yZFByCQACAQIXUHJpY2UgY2FuJ3QgYmUgbmVnYXRpdmUECWN1ck9yZFVzZAMFBmlzUHJvZAkAaAIFCGN1ck9yZEFtBQhjdXJPcmRQcgkAawMFCGN1ck9yZEFtBQhjdXJPcmRQcgUFTVVMVDgDCQAAAgUIbmV3T3JkQW0AAAMJAGYCBQhjdXJPcmRBbQAACQCcCgoJAGQCBQFqAAEJAM0IAggFA2FjYwJfMgkApAMBBQZ3aEluaXQIBQNhY2MCXzMIBQNhY2MCXzQJAGUCCAUDYWNjAl81BQljdXJPcmRVc2QIBQNhY2MCXzYIBQNhY2MCXzcFBmlzUHJvZAkAZAIIBQNhY2MCXzkJAQh0b1ZvbHVtZQMFBndoSW5pdAUOUFJPRFVDVFBLR1NJWkUFBmlzUHJvZAgFA2FjYwNfMTAJAJwKCgkAZAIFAWoAAQkAzQgCCAUDYWNjAl8yCQCkAwEJAGUCBQZ3aEluaXQFCGN1ck9yZEFtCAUDYWNjAl8zCAUDYWNjAl80CAUDYWNjAl81CAUDYWNjAl82CAUDYWNjAl83BQZpc1Byb2QJAGQCCAUDYWNjAl85CQEIdG9Wb2x1bWUDCQBlAgUGd2hJbml0BQhjdXJPcmRBbQUOUFJPRFVDVFBLR1NJWkUFBmlzUHJvZAgFA2FjYwNfMTADCQBmAgUIbmV3T3JkQW0AAAMJAGYCAAAFCGN1ck9yZEFtCQCcCgoJAGQCBQFqAAEJAM0IAggFA2FjYwJfMgkApAMBCQBlAgUGd2hJbml0BQhjdXJPcmRBbQkAZAIIBQNhY2MCXzMFCW5ld09yZFZvbAgFA2FjYwJfNAkAZAIIBQNhY2MCXzUFCW5ld09yZFVzZAgFA2FjYwJfNggFA2FjYwJfNwUGaXNQcm9kCQEIdG9Wb2x1bWUDCQBlAgUGd2hJbml0BQhjdXJPcmRBbQUOUFJPRFVDVFBLR1NJWkUFBmlzUHJvZAgFA2FjYwNfMTAJAJwKCgkAZAIFAWoAAQkAzQgCCAUDYWNjAl8yCQCkAwEFBndoSW5pdAkAZAIIBQNhY2MCXzMFCW5ld09yZFZvbAgFA2FjYwJfNAkAZQIJAGQCCAUDYWNjAl81BQluZXdPcmRVc2QFCWN1ck9yZFVzZAgFA2FjYwJfNggFA2FjYwJfNwUGaXNQcm9kCQEIdG9Wb2x1bWUDBQZ3aEluaXQFDlBST0RVQ1RQS0dTSVpFBQZpc1Byb2QIBQNhY2MDXzEwAwkAZgIAAAUIY3VyT3JkQW0EBmFtRGlmZgkAZQIFCGN1ck9yZEFtBQhuZXdPcmRBbQMJAGYCAAAJAGUCBQZ3aEluaXQFBmFtRGlmZgkAAgEJAKwCAgkArAICCQCsAgIJAKwCAgIQQXR0ZW1wdCB0byB0YWtlIAkApAMBBQZhbURpZmYCGiBmcm9tIHdhcmVob3VzZSwgYnV0IG9ubHkgCQCkAwEFBndoSW5pdAIKIGF2YWlsYWJsZQkAnAoKCQBkAgUBagABCQDNCAIIBQNhY2MCXzIJAKQDAQkAZQIFBndoSW5pdAUGYW1EaWZmCAUDYWNjAl8zCQBlAggFA2FjYwJfNAUJbmV3T3JkVm9sCAUDYWNjAl81CAUDYWNjAl82CAUDYWNjAl83BQZpc1Byb2QJAQh0b1ZvbHVtZQMJAGUCBQZ3aEluaXQFBmFtRGlmZgUOUFJPRFVDVFBLR1NJWkUFBmlzUHJvZAgFA2FjYwNfMTADCQBmAgAACQBkAgUGd2hJbml0BQhuZXdPcmRBbQkAAgEJAKwCAgkArAICCQCsAgIJAKwCAgIQQXR0ZW1wdCB0byB0YWtlIAkApAMBCQEBLQEFCG5ld09yZEFtAhogZnJvbSB3YXJlaG91c2UsIGJ1dCBvbmx5IAkApAMBBQZ3aEluaXQCCiBhdmFpbGFibGUJAJwKCgkAZAIFAWoAAQkAzQgCCAUDYWNjAl8yCQCkAwEJAGQCBQZ3aEluaXQFCG5ld09yZEFtCAUDYWNjAl8zCQBlAggFA2FjYwJfNAUJbmV3T3JkVm9sCQBlAggFA2FjYwJfNQUJY3VyT3JkVXNkCAUDYWNjAl82CAUDYWNjAl83BQZpc1Byb2QJAQh0b1ZvbHVtZQMJAGQCBQZ3aEluaXQFCG5ld09yZEFtBQ5QUk9EVUNUUEtHU0laRQUGaXNQcm9kCAUDYWNjA18xMAELc2V0SW50ZXJuYWwDCWN1cnJlbnRXaApjdXJyZW50T3JkBm5ld09yZAQJY3VycldoUmVzCQC1CQIJAJEDAgUJY3VycmVudFdoBQh3aElkeFJlcwIBXwQJY3VycldoTWF0CQC1CQIJAJEDAgUJY3VycmVudFdoBQh3aElkeE1hdAIBXwQKY3VycldoUHJvZAMJAAACCQCRAwIFCWN1cnJlbnRXaAUJd2hJZHhQcm9kAgAFA25pbAkAvAkCCQCRAwIFCWN1cnJlbnRXaAUJd2hJZHhQcm9kAgFfBA1jdXJyZW50T3JkUmVzCQC1CQIJAJEDAgUKY3VycmVudE9yZAUJb3JkSWR4UmVzAgFfBA1jdXJyZW50T3JkTWF0CQC1CQIJAJEDAgUKY3VycmVudE9yZAUJb3JkSWR4TWF0AgFfBA5jdXJyZW50T3JkUHJvZAMJAAACCQCRAwIFCmN1cnJlbnRPcmQFCm9yZElkeFByb2QCAAUDbmlsCQC8CQIJAJEDAgUKY3VycmVudE9yZAUKb3JkSWR4UHJvZAIBXwMJAQIhPQIJAJADAQUGbmV3T3JkAAMJAAIBAjNuZXdPcmRlclN0ciBzaG91bGQgY29udGFpbiBleGFjdGx5IDIgJzonIHNlcGFyYXRvcnMECHJlc1BhcnRzCQC1CQIJAJEDAgUGbmV3T3JkAAACAV8ECG1hdFBhcnRzCQC1CQIJAJEDAgUGbmV3T3JkAAECAV8ECXByb2RQYXJ0cwMJAAACCQCRAwIFBm5ld09yZAACAgAFA25pbAkAvAkCCQCRAwIFBm5ld09yZAACAgFfAwkBAiE9AgkAkAMBBQhyZXNQYXJ0cwUGTlVNUkVTCQACAQIgQWxsIDYgcmVzb3VyY2VzIHNob3VsZCBiZSBwYXNzZWQDCQECIT0CCQCQAwEFCG1hdFBhcnRzBQZOVU1SRVMJAAIBAiBBbGwgNiBtYXRlcmlhbHMgc2hvdWxkIGJlIHBhc3NlZAQBcgoAAiRsBQhyZXNUeXBlcwoAAiRzCQCQAwEFAiRsCgAFJGFjYzAJAJwKCgAABQNuaWwAAAAAAAAFCWN1cnJXaFJlcwUNY3VycmVudE9yZFJlcwcAAAUIcmVzUGFydHMKAQUkZjBfMQICJGECJGkDCQBnAgUCJGkFAiRzBQIkYQkBCXNldENvbW1vbgIFAiRhCQCRAwIFAiRsBQIkaQoBBSRmMF8yAgIkYQIkaQMJAGcCBQIkaQUCJHMFAiRhCQACAQITTGlzdCBzaXplIGV4Y2VlZHMgNgkBBSRmMF8yAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgUFJGFjYzAAAAABAAIAAwAEAAUABgQBbQoAAiRsBQhtYXRUeXBlcwoAAiRzCQCQAwEFAiRsCgAFJGFjYzAJAJwKCgAABQNuaWwIBQFyAl8zCAUBcgJfNAgFAXICXzUFCWN1cnJXaE1hdAUNY3VycmVudE9yZE1hdAcIBQFyAl85BQhtYXRQYXJ0cwoBBSRmMV8xAgIkYQIkaQMJAGcCBQIkaQUCJHMFAiRhCQEJc2V0Q29tbW9uAgUCJGEJAJEDAgUCJGwFAiRpCgEFJGYxXzICAiRhAiRpAwkAZwIFAiRpBQIkcwUCJGEJAAIBAhNMaXN0IHNpemUgZXhjZWVkcyA2CQEFJGYxXzICCQEFJGYxXzECCQEFJGYxXzECCQEFJGYxXzECCQEFJGYxXzECCQEFJGYxXzECCQEFJGYxXzECBQUkYWNjMAAAAAEAAgADAAQABQAGBAFwCgACJGwFCXByb2RUeXBlcwoAAiRzCQCQAwEFAiRsCgAFJGFjYzAJAJwKCgAABQNuaWwIBQFtAl8zCAUBbQJfNAgFAW0CXzUFCmN1cnJXaFByb2QFDmN1cnJlbnRPcmRQcm9kBggFAW0CXzkFCXByb2RQYXJ0cwoBBSRmMl8xAgIkYQIkaQMJAGcCBQIkaQUCJHMFAiRhCQEJc2V0Q29tbW9uAgUCJGEJAJEDAgUCJGwFAiRpCgEFJGYyXzICAiRhAiRpAwkAZwIFAiRpBQIkcwUCJGEJAAIBAhRMaXN0IHNpemUgZXhjZWVkcyA1MAkBBSRmMl8yAgkBBSRmMl8xAgkBBSRmMl8xAgkBBSRmMl8xAgkBBSRmMl8xAgkBBSRmMl8xAgkBBSRmMl8xAgkBBSRmMl8xAgkBBSRmMl8xAgkBBSRmMl8xAgkBBSRmMl8xAgkBBSRmMl8xAgkBBSRmMl8xAgkBBSRmMl8xAgkBBSRmMl8xAgkBBSRmMl8xAgkBBSRmMl8xAgkBBSRmMl8xAgkBBSRmMl8xAgkBBSRmMl8xAgkBBSRmMl8xAgkBBSRmMl8xAgkBBSRmMl8xAgkBBSRmMl8xAgkBBSRmMl8xAgkBBSRmMl8xAgkBBSRmMl8xAgkBBSRmMl8xAgkBBSRmMl8xAgkBBSRmMl8xAgkBBSRmMl8xAgkBBSRmMl8xAgkBBSRmMl8xAgkBBSRmMl8xAgkBBSRmMl8xAgkBBSRmMl8xAgkBBSRmMl8xAgkBBSRmMl8xAgkBBSRmMl8xAgkBBSRmMl8xAgkBBSRmMl8xAgkBBSRmMl8xAgkBBSRmMl8xAgkBBSRmMl8xAgkBBSRmMl8xAgkBBSRmMl8xAgkBBSRmMl8xAgkBBSRmMl8xAgkBBSRmMl8xAgkBBSRmMl8xAgkBBSRmMl8xAgUFJGFjYzAAAAABAAIAAwAEAAUABgAHAAgACQAKAAsADAANAA4ADwAQABEAEgATABQAFQAWABcAGAAZABoAGwAcAB0AHgAfACAAIQAiACMAJAAlACYAJwAoACkAKgArACwALQAuAC8AMAAxADIJAJkKBwgFAXICXzIIBQFtAl8yCAUBcAJfMggFAXACXzMIBQFwAl80CAUBcAJfNQgFAXACXzkBDGFjY2VwdENvbW1vbgIDYWNjCWJwT3JkSXRlbQQBaggFA2FjYwJfNwQGaXNQcm9kCAUDYWNjA18xMgQKYnBPcmRQYXJ0cwkAtQkCBQlicE9yZEl0ZW0CAUADCQECIT0CCQCQAwEFCmJwT3JkUGFydHMAAgkAAgECLkluY29ycmVjdCBvcmRlciBmb3JtYXQsIHNob3VsZCBiZSBhbW91bnRAcHJpY2UEB2JwT3JkQW0JAQ1wYXJzZUludFZhbHVlAQkAkQMCBQpicE9yZFBhcnRzAAAEB2JwT3JkUHIJAQ1wYXJzZUludFZhbHVlAQkAkQMCBQpicE9yZFBhcnRzAAEDCQBmAgAABQdicE9yZFByCQACAQIXUHJpY2UgY2FuJ3QgYmUgbmVnYXRpdmUECGJwT3JkVXNkAwUGaXNQcm9kCQBoAgUHYnBPcmRBbQUHYnBPcmRQcgkAawMFB2JwT3JkQW0FB2JwT3JkUHIFBU1VTFQ4BAZicEluaXQDCQBmAgkAkAMBCAUDYWNjAl84BQFqCQENcGFyc2VJbnRWYWx1ZQEJAJEDAggFA2FjYwJfOAUBagAABAZ3aEluaXQDCQBmAgkAkAMBCAUDYWNjAl85BQFqCQENcGFyc2VJbnRWYWx1ZQEJAJEDAggFA2FjYwJfOQUBagAABAl3aE9yZEluaXQDCQBmAgkAkAMBCAUDYWNjA18xMAUBagkAkQMCCAUDYWNjA18xMAUBagIDMEAwBAp3aE9yZFBhcnRzCQC1CQIFCXdoT3JkSW5pdAIBQAQHd2hPcmRBbQkBDXBhcnNlSW50VmFsdWUBCQCRAwIFCndoT3JkUGFydHMAAAQHd2hPcmRQcgkBDXBhcnNlSW50VmFsdWUBCQCRAwIFCndoT3JkUGFydHMAAQMDCQECIT0CBQdicE9yZEFtAAAJAQIhPQIFB2JwT3JkUHIFB3doT3JkUHIHCQACAQkArAICCQCsAgIJAKwCAgkArAICCQCsAgICClByaWNlcyBvZiAJAJEDAggFA2FjYwNfMTEFAWoCFyBkb24ndCBtYXRjaCEgV0ggcHJpY2U9CQCkAwEFB3doT3JkUHICDSwgeW91ciBwcmljZT0JAKQDAQUHYnBPcmRQcgQId2hPcmRVc2QDBQZpc1Byb2QJAGgCBQd3aE9yZEFtBQd3aE9yZFByCQBrAwUHd2hPcmRBbQUHd2hPcmRQcgUFTVVMVDgECGRlbHRhVm9sCQEIdG9Wb2x1bWUDBQdicE9yZEFtBQ5QUk9EVUNUUEtHU0laRQUGaXNQcm9kAwkAAAIFB2JwT3JkQW0AAAkAnwoNCQDNCAIIBQNhY2MCXzEJAKQDAQUGd2hJbml0CQDNCAIIBQNhY2MCXzIFCXdoT3JkSW5pdAkAzQgCCAUDYWNjAl8zCQCkAwEFBmJwSW5pdAgFA2FjYwJfNAgFA2FjYwJfNQgFA2FjYwJfNgkAZAIIBQNhY2MCXzcAAQgFA2FjYwJfOAgFA2FjYwJfOQgFA2FjYwNfMTAIBQNhY2MDXzExBQZpc1Byb2QIBQNhY2MDXzEzAwkAZgIFB2JwT3JkQW0AAAMJAGYCAAAFB3doT3JkQW0DCQBmAgUHYnBPcmRBbQkBAS0BBQd3aE9yZEFtCQACAQkArAICCQCsAgIJAKwCAgkArAICCQCsAgICD0F0dGVtcHQgdG8gYnV5IAkApAMBBQdicE9yZEFtAgQgb2YgCQCRAwIIBQNhY2MDXzExBQFqAhssIGJ1dCB3YXJlaG91c2Ugb25seSBzZWxscyAJAKQDAQkBAS0BBQd3aE9yZEFtCQCfCg0JAM0IAggFA2FjYwJfMQkApAMBBQZ3aEluaXQJAM0IAggFA2FjYwJfMgkArAICCQCsAgIJAKQDAQkAZAIFB3doT3JkQW0FB2JwT3JkQW0CAUAJAKQDAQUHd2hPcmRQcgkAzQgCCAUDYWNjAl8zCQCkAwEJAGQCBQZicEluaXQFB2JwT3JkQW0JAGQCCAUDYWNjAl80BQhkZWx0YVZvbAgFA2FjYwJfNQkAZAIIBQNhY2MCXzYFCGJwT3JkVXNkCQBkAggFA2FjYwJfNwABCAUDYWNjAl84CAUDYWNjAl85CAUDYWNjA18xMAgFA2FjYwNfMTEFBmlzUHJvZAkAZAIIBQNhY2MDXzEzAwUGaXNQcm9kCQBoAgUHYnBPcmRBbQUFTVVMVDgFB2JwT3JkQW0JAAIBCQCsAgIJAKwCAgIPQXR0ZW1wdCB0byBidXkgCQCRAwIIBQNhY2MDXzExBQFqAiAgd2hpbGUgd2FyZWhvdXNlIGRvZXNuJ3Qgc2VsbCBpdAMJAGYCBQd3aE9yZEFtAAADCQBmAgkBAS0BBQdicE9yZEFtBQd3aE9yZEFtCQACAQkArAICCQCsAgIJAKwCAgkArAICCQCsAgICEEF0dGVtcHQgdG8gc2VsbCAJAKQDAQkBAS0BBQdicE9yZEFtAgQgb2YgCQCRAwIIBQNhY2MDXzExBQFqAhosIGJ1dCB3YXJlaG91c2Ugb25seSBidXlzIAkApAMBBQd3aE9yZEFtAwkAZgIJAQEtAQUHYnBPcmRBbQUGYnBJbml0CQACAQkArAICCQCsAgIJAKwCAgkArAICCQCsAgICEEF0dGVtcHQgdG8gc2VsbCAJAKQDAQkBAS0BBQdicE9yZEFtAhQsIGJ1dCB5b3Ugb25seSBoYXZlIAkApAMBBQZicEluaXQCBCBvZiAJAJEDAggFA2FjYwNfMTEFAWoJAJ8KDQkAzQgCCAUDYWNjAl8xCQCkAwEJAGUCBQZ3aEluaXQFB2JwT3JkQW0JAM0IAggFA2FjYwJfMgkArAICCQCsAgIJAKQDAQkAZAIFB3doT3JkQW0FB2JwT3JkQW0CAUAJAKQDAQUHd2hPcmRQcgkAzQgCCAUDYWNjAl8zCQCkAwEJAGQCBQZicEluaXQFB2JwT3JkQW0JAGUCCAUDYWNjAl80BQhkZWx0YVZvbAkAZQIIBQNhY2MCXzUFCGJwT3JkVXNkCAUDYWNjAl82CQBkAggFA2FjYwJfNwABCAUDYWNjAl84CAUDYWNjAl85CAUDYWNjA18xMAgFA2FjYwNfMTEFBmlzUHJvZAkAZQIIBQNhY2MDXzEzAwUGaXNQcm9kCQBoAgUHYnBPcmRBbQUFTVVMVDgFB2JwT3JkQW0JAAIBCQCsAgIJAKwCAgIQQXR0ZW1wdCB0byBzZWxsIAkAkQMCCAUDYWNjA18xMQUBagIfIHdoaWxlIHdhcmVob3VzZSBkb2Vzbid0IGJ1eSBpdAETc2VsbFJlc291cmNlc0NvbW1vbgQHcmVzTGlzdAxmYWN0b3J5TG9jSWQHYW1vdW50cwltaW5QcmljZXMKAQVhZGRlcgIDYWNjAWoDCQBmAgkAkQMCBQdhbW91bnRzBQFqCQENcGFyc2VJbnRWYWx1ZQEJAJEDAgUHcmVzTGlzdAUBagkAAgEJAKwCAgkArAICCQCsAgIJAKwCAgkArAICAglZb3UgaGF2ZSAJAJEDAgUHcmVzTGlzdAUBagIEIG9mIAkAkQMCBQhyZXNUeXBlcwUBagIULCBidXQgdHJpZWQgdG8gc2VsbCAJAKQDAQkAkQMCBQdhbW91bnRzBQFqAwkAZgIAAAkAkQMCBQdhbW91bnRzBQFqCQACAQkArAICCQCsAgIJAKwCAgIlWW91IHRyaWVkIHRvIHNlbGwgbmVnYXRpdmUgYW1vdW50IG9mIAkAkQMCBQhyZXNUeXBlcwUBagICOiAJAKQDAQkAkQMCBQdhbW91bnRzBQFqAwkAZgIJAJEDAgUHYW1vdW50cwUBagAABAFiCQEMc2VsbEludGVybmFsBAUMZmFjdG9yeUxvY0lkBQFqCQCRAwIFB2Ftb3VudHMFAWoJAJEDAgUJbWluUHJpY2VzBQFqCQCWCgQJAM0IAggFA2FjYwJfMQgFAWICXzEJAM0IAggFA2FjYwJfMgkApAMBCQBlAgkBDXBhcnNlSW50VmFsdWUBCQCRAwIFB3Jlc0xpc3QFAWoJAJEDAgUHYW1vdW50cwUBagkAZAIIBQNhY2MCXzMIBQFiAl8yCQBkAggFA2FjYwJfNAkAkQMCBQdhbW91bnRzBQFqCQCWCgQIBQNhY2MCXzEJAM0IAggFA2FjYwJfMgkAkQMCBQdy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AQUkZjBfMgICJGECJGkDCQBnAgUCJGkFAiRzBQIkYQkAAgECE0xpc3Qgc2l6ZSBleGNlZWRzIDYJAQUkZjBfMgIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIFBSRhY2MwAAAAAQACAAMABAAFAAYBEHNob3AydXNlckFjdGlvbnMDDXVzZFdoMkJwU2FsZG8KY2FsbGVyQWRkcgtyZWNlaXZlZEZlZQMJAGYCBQ11c2RXaDJCcFNhbGRvAAAEC3VzZFdoMkJwRmVlCQBrAwUNdXNkV2gyQnBTYWxkbwUKQVVDVElPTkZFRQUFTVVMVDYDCQBnAgULcmVjZWl2ZWRGZWUJAGUCBQ11c2RXaDJCcFNhbGRvCQBoAgADBQt1c2RXaDJCcEZlZQkAAgEJAKwCAgIrVGhpcyB0cmFkZSBkb2VzIG5vdCBjb3ZlciBkZWxpdmVyeSBjb3N0IG9mIAkBCmZpeGVkUG9pbnQCBQtyZWNlaXZlZEZlZQAGBAhyZWZCeUtleQkBD2tleUFkZHJlc3NSZWZCeQEFCmNhbGxlckFkZHIEBXJlZkJ5CQCdCAIFD3N0YWtpbmdDb250cmFjdAUIcmVmQnlLZXkEBmNhbGxlcgkBEUBleHRyTmF0aXZlKDEwNjIpAQUKY2FsbGVyQWRkcgkAzQgCCQDNCAIDCQEJaXNEZWZpbmVkAQUFcmVmQnkJAMwIAgkBDlNjcmlwdFRyYW5zZmVyAwkBEUBleHRyTmF0aXZlKDEwNjIpAQkBBXZhbHVlAQUFcmVmQnkFC3VzZFdoMkJwRmVlBQt1c2R0QXNzZXRJZAUDbmlsBQNuaWwJAQ5TY3JpcHRUcmFuc2ZlcgMFBmNhbGxlcgkAZQIJAGUCBQ11c2RXaDJCcFNhbGRvCQBoAgADBQt1c2RXaDJCcEZlZQULcmVjZWl2ZWRGZWUFC3VzZHRBc3NldElkCQEOU2NyaXB0VHJhbnNmZXIDBQxyZXN0Q29udHJhY3QFC3VzZFdoMkJwRmVlBQt1c2R0QXNzZXRJZAUDbmlsARB1c2VyMnNob3BBY3Rpb25zBA11c2RCcDJXaFNhbGRvBHBtdHMNc2hvcExhbmRPd25lcghzcGVudEZlZQMJAGYCBQ11c2RCcDJXaFNhbGRvAAADCQECIT0CCQCQAwEFBHBtdHMAAQkAAgECImV4YWN0bHkgMSBwYXltZW50IG11c3QgYmUgYXR0YWNoZWQEA3BtdAkAkQMCBQRwbXRzAAAEA2FtdAgFA3BtdAZhbW91bnQDAwkBASEBCQEJaXNEZWZpbmVkAQgFA3BtdAdhc3NldElkBgkBAiE9AgkBBXZhbHVlAQgFA3BtdAdhc3NldElkBQt1c2R0QXNzZXRJZAkAAgECE1VTRFQgcGF5bWVudHMgb25seSEEEHVzZHRTcGVudFdpdGhGZWUJAGQCBQ11c2RCcDJXaFNhbGRvBQhzcGVudEZlZQMJAQIhPQIFA2FtdAUQdXNkdFNwZW50V2l0aEZlZQkAAgEJAKwCAgkArAICCQCsAgIJAKwCAgkArAICCQCsAgICH0luc3VmZmljaWVudCBwYXltZW50ISBBdHRhY2hlZD0JAQpmaXhlZFBvaW50AgUDYW10AAYCCywgcmVxdWlyZWQ9CQEKZml4ZWRQb2ludAIFDXVzZEJwMldoU2FsZG8ABgIBKwkBCmZpeGVkUG9pbnQCBQhzcGVudEZlZQAGAg4oZGVsaXZlcnkgZmVlKQMJAGYCBQ5NSU5TSE9QUEFZTUVOVAUNdXNkQnAyV2hTYWxkbwkAAgEJAKwCAgISTWluIHNob3AgdHJhZGUgaXMgCQEKZml4ZWRQb2ludAIFDk1JTlNIT1BQQVlNRU5UAAYEC3VzZEJwMldoRmVlCQBrAwUNdXNkQnAyV2hTYWxkbwUKQVVDVElPTkZFRQUFTVVMVDYECHJlZkJ5S2V5CQEPa2V5QWRkcmVzc1JlZkJ5AQUNc2hvcExhbmRPd25lcgQFcmVmQnkJAJ0IAgUPc3Rha2luZ0NvbnRyYWN0BQhyZWZCeUtleQkAzQgCCQDNCAIDCQEJaXNEZWZpbmVkAQUFcmVmQnkJAMwIAgkBDlNjcmlwdFRyYW5zZmVyAwkBEUBleHRyTmF0aXZlKDEwNjIpAQkBBXZhbHVlAQUFcmVmQnkFC3VzZEJwMldoRmVlBQt1c2R0QXNzZXRJZAUDbmlsBQNuaWwJAQ5TY3JpcHRUcmFuc2ZlcgMJARFAZXh0ck5hdGl2ZSgxMDYyKQEFDXNob3BMYW5kT3duZXIJAGUCBQ11c2RCcDJXaFNhbGRvCQBoAgADBQt1c2RCcDJXaEZlZQULdXNkdEFzc2V0SWQJAQ5TY3JpcHRUcmFuc2ZlcgMFDHJlc3RDb250cmFjdAULdXNkQnAyV2hGZWUFC3VzZHRBc3NldElkAwkBAiE9AgkAkAMBBQRwbXRzAAAJAAIBAhJObyBwYXltZW50cyBuZWVkZWQFA25pbAEVYWNjZXB0U2hvcE9yZGVyQ29tbW9uBg9zaG9wTGFuZEFzc2V0SWQKY2FsbGVyQWRkcgpicE9yZGVyU3RyCWJwUmVzTGlzdAlicE1hdExpc3QKYnBQcm9kTGlzdAQJbGFuZEFzc2V0CQEFdmFsdWUBCQDsBwEJANkEAQUPc2hvcExhbmRBc3NldElkAwkBASEBCQEJaXNEZWZpbmVkAQkAmggCBQ9zdGFraW5nQ29udHJhY3QJARZrZXlTdGFrZWRUaW1lQnlBc3NldElkAQUPc2hvcExhbmRBc3NldElkCQACAQkArAICCQCsAgICBE5GVCAIBQlsYW5kQXNzZXQEbmFtZQIOIGlzIG5vdCBzdGFrZWQEDXNob3BMYW5kT3duZXIJARN2YWx1ZU9yRXJyb3JNZXNzYWdlAgkAnQgCBQ9zdGFraW5nQ29udHJhY3QJARVrZXlMYW5kQXNzZXRJZFRvT3duZXIBBQ9zaG9wTGFuZEFzc2V0SWQJAKwCAgkArAICAgRORlQgCAUJbGFuZEFzc2V0BG5hbWUCDCBpcyBvcnBoYW5lZAMJAAACBQ1zaG9wTGFuZE93bmVyBQpjYWxsZXJBZGRyCQACAQIeWW91IGNhbm5vdCB0cmFkZSB3aXRoIHlvdXJzZWxmBAxicE9yZGVyUGFydHMJALwJAgUKYnBPcmRlclN0cgIBOgMJAQIhPQIJAJADAQUMYnBPcmRlclBhcnRzAAMJAAIBAjJicE9yZGVyU3RyIHNob3VsZCBjb250YWluIGV4YWN0bHkgMiAnOicgc2VwYXJhdG9ycwQIYnBPcmRSZXMJALUJAgkAkQMCBQxicE9yZGVyUGFydHMAAAIBXwQIYnBPcmRNYXQJALUJAgkAkQMCBQxicE9yZGVyUGFydHMAAQIBXwQJYnBPcmRQcm9kAwkAAAIJAJEDAgUMYnBPcmRlclBhcnRzAAICAAUDbmlsCQC8CQIJAJEDAgUMYnBPcmRlclBhcnRzAAICAV8DCQECIT0CCQCQAwEFCGJwT3JkUmVzBQZOVU1SRVMJAAIBAiBBbGwgNiByZXNvdXJjZXMgc2hvdWxkIGJlIHBhc3NlZAMJAQIhPQIJAJADAQUIYnBPcmRNYXQFBk5VTVJFUwkAAgECIEFsbCA2IG1hdGVyaWFscyBzaG91bGQgYmUgcGFzc2VkBAJ3aAkBCGFzU3RyaW5nAQkA/AcEBQ9zdGFraW5nQ29udHJhY3QCFGdldFdhcmVob3VzZVJFQURPTkxZCQDMCAIFD3Nob3BMYW5kQXNzZXRJZAUDbmlsBQNuaWwECWN1cnJlbnRXaAkAvAkCBQJ3aAIBOgQJY3VycldoUmVzCQC1CQIJAJEDAgUJY3VycmVudFdoBQh3aElkeFJlcwIBXwQJY3VycldoTWF0CQC1CQIJAJEDAgUJY3VycmVudFdoBQh3aElkeE1hdAIBXwQKY3VycldoUHJvZAMJAAACCQCRAwIFCWN1cnJlbnRXaAUJd2hJZHhQcm9kAgAFA25pbAkAvAkCCQCRAwIFCWN1cnJlbnRXaAUJd2hJZHhQcm9kAgFfBA9jdXJyV2hMb2NrZWRWb2wJAQ1wYXJzZUludFZhbHVlAQkAkQMCCQC1CQIJAJEDAgUJY3VycmVudFdoBQl3aElkeExPRlQCAV8FCXZvbExvY2tlZAQGb3JkS2V5CQEOa2V5T3JkZXJCeUxhbmQBBQ9zaG9wTGFuZEFzc2V0SWQEBXdoT3JkCQEIZ2V0T3JkZXIBBQZvcmRLZXkECHdoT3JkUmVzCQC1CQIJAJEDAgUFd2hPcmQFCW9yZElkeFJlcwIBXwQId2hPcmRNYXQJALUJAgkAkQMCBQV3aE9yZAUJb3JkSWR4TWF0AgFfBAl3aE9yZFByb2QDCQAAAgkAkQMCBQV3aE9yZAUKb3JkSWR4UHJvZAIABQNuaWwJALwJAgkAkQMCBQV3aE9yZAUKb3JkSWR4UHJvZAIBXwQBcgoAAiRsBQhicE9yZFJlcwoAAiRzCQCQAwEFAiRsCgAFJGFjYzAJAJ8KDQUDbmlsBQNuaWwFA25pbAAAAAAAAAAABQlicFJlc0xpc3QFCWN1cnJXaFJlcwUId2hPcmRSZXMFCHJlc1R5cGVzBwAACgEFJGYwXzECAiRhAiRpAwkAZwIFAiRpBQIkcwUCJGEJAQxhY2NlcHRDb21tb24CBQIkYQkAkQMCBQIkbAUC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ZwEJAPwHBAUPc3Rha2luZ0NvbnRyYWN0Ag1zYXZlV2FyZWhvdXNlCQDMCAIFBXdoU3RyCQDMCAIFD3Nob3BMYW5kQXNzZXRJZAUDbmlsBQNuaWwEDmFjY1N0YXRzUmVzdWx0CQEFYXNJbnQBCQD8BwQFD3N0YWtpbmdDb250cmFjdAIOdXBkYXRlQWNjU3RhdHMJAMwIAgUNc2hvcExhbmRPd25lcgkAzAgCCQBrAwUGeHBTaG9wCAUBcANfMTMFBU1VTFQ4BQNuaWwFA25pbAkAnAoKCQELU3RyaW5nRW50cnkCBQZvcmRLZXkFC25ld1doT3JkU3RyCAUBcgJfMwgFAW0CXzMIBQFwAl8zCAUBcAJfNQgFAXACXzYIBQFwA18xMwUNc2hvcExhbmRPd25lcgUGd2hTYXZlBQ5hY2NTdGF0c1Jlc3VsdAEac2VsbFJlc291cmNlc1dvcmxkSW50ZXJuYWwBBmFtb3VudAQGb25lUmVzCQBpAgUGYW1vdW50AB4EEW9uZUZhY3RvcnlBbW91bnRzCQDMCAIFBm9uZVJlcwkAzAgCBQZvbmVSZXMJAMwIAgUGb25lUmVzCQDMCAIFBm9uZVJlcwkAzAgCBQZvbmVSZXMJAMwIAgUGb25lUmVzBQNuaWwEAXMJAKQDAQUGb25lUmVzBAdyZXNMaXN0CQDMCAIFAXMJAMwIAgUBcwkAzAgCBQFzCQDMCAIFAXMJAMwIAgUBcwkAzAgCBQFzBQNuaWwECW1pblByaWNlcwkAzAgCAAAJAMwIAgAACQDMCAIAAAkAzAgCAAAJAMwIAgAACQDMCAIAAAUDbmlsCgEKb25lRmFjdG9yeQIDYWNjCWNvbnRpbmVudAQBeAkBE3NlbGxSZXNvdXJjZXNDb21tb24EBQdyZXNMaXN0BQljb250aW5lbnQFEW9uZUZhY3RvcnlBbW91bnRzBQltaW5QcmljZXMJAJUKAwkAzggCCAUDYWNjAl8xCAUBeAJfMQkAZAIIBQNhY2MCXzIIBQF4Al8zCQBkAggFA2FjYwJfMwgFAXgCXzQEDSR0MDI1MjYxMjUzNTEKAAIkbAUKY29udGluZW50cwoAAiRzCQCQAwEFAiRsCgAFJGFjYzAJAJUKAwUDbmlsAAAAAAoBBSRmMF8xAgIkYQIkaQMJAGcCBQIkaQUCJHMFAiRhCQEKb25lRmFjdG9yeQIFAiRhCQCRAwIFAiRsBQIkaQoBBSRmMF8yAgIkYQIkaQMJAGcCBQIkaQUCJHMFAiRhCQACAQITTGlzdCBzaXplIGV4Y2VlZHMgNQkBBSRmMF8yAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgUFJGFjYzAAAAABAAIAAwAEAAUEDmZhY3RvcnlBY3Rpb25zCAUNJHQwMjUyNjEyNTM1MQJfMQQMdXNkdFJlY2VpdmVkCAUNJHQwMjUyNjEyNTM1MQJfMgQIdG90YWxSZXMIBQ0kdDAyNTI2MTI1MzUxAl8zBANmZWUJAGsDBQx1c2R0UmVjZWl2ZWQFDERFTElWRVJZX0ZFRQUFTVVMVDYEEGFjdGl2aXRpZXNBbW91bnQJAGkCBQx1c2R0UmVjZWl2ZWQAZAQIdXNkdExlZnQJAGUCCQBlAgUMdXNkdFJlY2VpdmVkBRBhY3Rpdml0aWVzQW1vdW50BQNmZWUJAJcKBQUOZmFjdG9yeUFjdGlvbnMFCHVzZHRMZWZ0BQNmZWUFEGFjdGl2aXRpZXNBbW91bnQFCHRvdGFsUmVzFgFpARpyZWNhbGNMb2NrZWRWb2x1bWVSRUFET05MWQILbGFuZEFzc2V0SWQCd2gECmN1cnJlbnRPcmQJAQhnZXRPcmRlcgEJAQ5rZXlPcmRlckJ5TGFuZAEFC2xhbmRBc3NldElkBAF6CQELc2V0SW50ZXJuYWwDBQJ3aAUKY3VycmVudE9yZAUKY3VycmVudE9yZAkAlAoCBQNuaWwJAGQCCAUBegJfNAgFAXoCXzUBaQENY29uc3RydWN0b3JWMQEIcmVzdEFkZHIDCQECIT0CCAUBaQZjYWxsZXIFBHRoaXMJAAIBAhFQZXJtaXNzaW9uIGRlbmllZAkAzAgCCQELU3RyaW5nRW50cnkCCQEOa2V5UmVzdEFkZHJlc3MABQhyZXN0QWRkcgUDbmlsAWkBDXNlbGxSZXNvdXJjZXMCB2Ftb3VudHMJbWluUHJpY2VzBAxwcm9sb2dSZXN1bHQJAQZwcm9sb2cABAtkdWNrQXNzZXRJZAkBE3ZhbHVlT3JFcnJvck1lc3NhZ2UCCQCdCAIFD3N0YWtpbmdDb250cmFjdAkBFGtleVN0YWtlZER1Y2tCeU93bmVyAQkApQgBCAUBaQZjYWxsZXICHFlvdSBkb24ndCBoYXZlIGEgZHVjayBzdGFrZWQDCQECIT0CCQCQAwEIBQFpCHBheW1lbnRzAAAJAAIBAipzZWxsUmVzb3VyY2VzIGRvZXNuJ3QgcmVxdWlyZSBhbnkgcGF5bWVudHMEC2N1ckxvY2F0aW9uCQC1CQIJAQt2YWx1ZU9yRWxzZQIJAJ0IAgUPc3Rha2luZ0NvbnRyYWN0CQEPa2V5RHVja0xvY2F0aW9uAQULZHVja0Fzc2V0SWQFD0RFRkFVTFRMT0NBVElPTgIBXwMJAQIhPQIJAJEDAgULY3VyTG9jYXRpb24FCmxvY0lkeFR5cGUCAUYJAAIBCQCsAgICLUR1Y2sgbG9jYXRpb24gdHlwZSBzaG91bGQgYmUgRmFjdG9yeSwgYnV0IGlzIAkAkQMCBQtjdXJMb2NhdGlvbgUKbG9jSWR4VHlwZQQLY3VycmVudFBhY2sJAQtnZXRCYWNrcGFjawEJARFrZXlCYWNrcGFja0J5RHVjawEFC2R1Y2tBc3NldElkBAdyZXNMaXN0CQC1CQIJAJEDAgULY3VycmVudFBhY2sFCGJwSWR4UmVzAgFfBA0kdDAyNjgwMzI2OTI5CQETc2VsbFJlc291cmNlc0NvbW1vbgQFB3Jlc0xpc3QJAJEDAgULY3VyTG9jYXRpb24FCGxvY0lkeElkBQdhbW91bnRzBQltaW5QcmljZXMEDmZhY3RvcnlBY3Rpb25zCAUNJHQwMjY4MDMyNjkyOQJfMQQGbmV3UmVzCAUNJHQwMjY4MDMyNjkyOQJfMgQMdXNkdFJlY2VpdmVkCAUNJHQwMjY4MDMyNjkyOQJfMwQIdG90YWxSZXMIBQ0kdDAyNjgwMzI2OTI5Al80BBBhY3Rpdml0aWVzQW1vdW50CQBpAgUMdXNkdFJlY2VpdmVkAGQEB25ld1BhY2sJALoJAgkAzAgCCQCRAwIFC2N1cnJlbnRQYWNrBQpicElkeExldmVsCQDMCAIJALkJAgUGbmV3UmVzAgFfCQDMCAIJAJEDAgULY3VycmVudFBhY2sFCGJwSWR4TWF0CQDMCAIJAJEDAgULY3VycmVudFBhY2sFCWJwSWR4UHJvZAUDbmlsAgE6BA5iYWNrcGFja1Jlc3VsdAkBCGFzU3RyaW5nAQkA/AcEBQ9zdGFraW5nQ29udHJhY3QCDnVwZGF0ZUJhY2twYWNrCQDMCAIFC2R1Y2tBc3NldElkCQDMCAIFB25ld1BhY2sFA25pbAUDbmlsBAtzdGF0c1Jlc3VsdAkBBWFzSW50AQkA/AcEBQ9zdGFraW5nQ29udHJhY3QCD3VwZGF0ZUR1Y2tTdGF0cwkAzAgCBQtkdWNrQXNzZXRJZAkAzAgCCQBrAwUHeHBUcmFkZQUIdG90YWxSZXMFBU1VTFQ4BQNuaWwFA25pbAkAlAoCCQDNCAIJAM0IAgUOZmFjdG9yeUFjdGlvbnMJAQ5TY3JpcHRUcmFuc2ZlcgMIBQFpBmNhbGxlcgkAZQIFDHVzZHRSZWNlaXZlZAUQYWN0aXZpdGllc0Ftb3VudAULdXNkdEFzc2V0SWQJAQ5TY3JpcHRUcmFuc2ZlcgMFDHJlc3RDb250cmFjdAUQYWN0aXZpdGllc0Ftb3VudAULdXNkdEFzc2V0SWQJAJUKAwUOYmFja3BhY2tSZXN1bHQFDHByb2xvZ1Jlc3VsdAULc3RhdHNSZXN1bHQBaQESc2VsbFJlc291cmNlc1dvcmxkAgRhZGRyBmFtb3VudAMJAQIhPQIIBQFpBmNhbGxlcgUNYWNyZXNDb250cmFjdAkAAgECEVBlcm1pc3Npb24gZGVuaWVkBA0kdDAyNzcyMTI3ODc4CQEac2VsbFJlc291cmNlc1dvcmxkSW50ZXJuYWwBBQZhbW91bnQEDmZhY3RvcnlBY3Rpb25zCAUNJHQwMjc3MjEyNzg3OAJfMQQIdXNkdExlZnQIBQ0kdDAyNzcyMTI3ODc4Al8yBANmZWUIBQ0kdDAyNzcyMTI3ODc4Al8zBBBhY3Rpdml0aWVzQW1vdW50CAUNJHQwMjc3MjEyNzg3OAJfNAQIdG90YWxSZXMIBQ0kdDAyNzcyMTI3ODc4Al81AwkAZwIAAAUIdXNkdExlZnQJAAIBCQCsAgICK1RoaXMgdHJhZGUgZG9lcyBub3QgY292ZXIgZGVsaXZlcnkgY29zdCBvZiAJAQpmaXhlZFBvaW50AgUDZmVlAAYEC3N0YXRzUmVzdWx0CQEFYXNJbnQBCQD8BwQFD3N0YWtpbmdDb250cmFjdAIOdXBkYXRlQWNjU3RhdHMJAMwIAgUEYWRkcgkAzAgCCQBrAwUHeHBUcmFkZQUIdG90YWxSZXMFBU1VTFQ4BQNuaWwFA25pbAkAlAoCCQDNCAIJAM0IAgkAzQgCBQ5mYWN0b3J5QWN0aW9ucwkBDEludGVnZXJFbnRyeQIFD2RlbGl2ZXJ5RnVuZEtleQkAZAIJAQt2YWx1ZU9yRWxzZQIJAJ8IAQUPZGVsaXZlcnlGdW5kS2V5AAAFA2ZlZQkBDlNjcmlwdFRyYW5zZmVyAwUMcmVzdENvbnRyYWN0BRBhY3Rpdml0aWVzQW1vdW50BQt1c2R0QXNzZXRJZAkBDlNjcmlwdFRyYW5zZmVyAwUSaW52ZXN0RnVuZENvbnRyYWN0BQh1c2R0TGVmdAULdXNkdEFzc2V0SWQJAJQKAgUIdXNkdExlZnQFC3N0YXRzUmVzdWx0AWkBGnNlbGxSZXNvdXJjZXNXb3JsZFJFQURPTkxZAQZhbW91bnQECHVzZHRMZWZ0CAkBGnNlbGxSZXNvdXJjZXNXb3JsZEludGVybmFsAQUGYW1vdW50Al8yCQCUCgIFA25pbAUIdXNkdExlZnQBaQEZc2VsbFJlc291cmNlc0R1Y2tEZWxpdmVyeQMHYW1vdW50cwltaW5QcmljZXMQZmFjdG9yeUNvbnRpbmVudAMJAQEhAQURS1NfQUxMT1dfREVMSVZFUlkJAAIBAh9EZWxpdmVyeSBmZWF0dXJlIGlzIHR1cm5lZCBvZmYhBAxwcm9sb2dSZXN1bHQJAQZwcm9sb2cABAtkdWNrQXNzZXRJZAkBE3ZhbHVlT3JFcnJvck1lc3NhZ2UCCQCdCAIFD3N0YWtpbmdDb250cmFjdAkBFGtleVN0YWtlZER1Y2tCeU93bmVyAQkApQgBCAUBaQZjYWxsZXICHFlvdSBkb24ndCBoYXZlIGEgZHVjayBzdGFrZWQDCQECIT0CCQCQAwEIBQFpCHBheW1lbnRzAAAJAAIBAipzZWxsUmVzb3VyY2VzIGRvZXNuJ3QgcmVxdWlyZSBhbnkgcGF5bWVudHMEC2N1cnJlbnRQYWNrCQELZ2V0QmFja3BhY2sBCQERa2V5QmFja3BhY2tCeUR1Y2sBBQtkdWNrQXNzZXRJZAQHcmVzTGlzdAkAtQkCCQCRAwIFC2N1cnJlbnRQYWNrBQhicElkeFJlcwIBXwQNJHQwMjkxMTEyOTIzMgkBE3NlbGxSZXNvdXJjZXNDb21tb24EBQdyZXNMaXN0BRBmYWN0b3J5Q29udGluZW50BQdhbW91bnRzBQltaW5QcmljZXMEDmZhY3RvcnlBY3Rpb25zCAUNJHQwMjkxMTEyOTIzMgJfMQQGbmV3UmVzCAUNJHQwMjkxMTEyOTIzMgJfMgQMdXNkdFJlY2VpdmVkCAUNJHQwMjkxMTEyOTIzMgJfMwQIdG90YWxSZXMIBQ0kdDAyOTExMTI5MjMyAl80BAduZXdQYWNrCQC6CQIJAMwIAgkAkQMCBQtjdXJyZW50UGFjawUKYnBJZHhMZXZlbAkAzAgCCQC5CQIFBm5ld1JlcwIBXwkAzAgCCQCRAwIFC2N1cnJlbnRQYWNrBQhicElkeE1hdAkAzAgCCQCRAwIFC2N1cnJlbnRQYWNrBQlicElkeFByb2QFA25pbAIBOgQOYmFja3BhY2tSZXN1bHQJAQhhc1N0cmluZwEJAPwHBAUPc3Rha2luZ0NvbnRyYWN0Ag51cGRhdGVCYWNrcGFjawkAzAgCBQtkdWNrQXNzZXRJZAkAzAgCBQduZXdQYWNrBQNuaWwFA25pbAQLc3RhdHNSZXN1bHQJAQVhc0ludAEJAPwHBAUPc3Rha2luZ0NvbnRyYWN0Ag91cGRhdGVEdWNrU3RhdHMJAMwIAgULZHVja0Fzc2V0SWQJAMwIAgkAawMFB3hwVHJhZGUFCHRvdGFsUmVzBQVNVUxUOAUDbmlsBQNuaWwEB2ZlZVBhcnQJAGsDBQx1c2R0UmVjZWl2ZWQFDERFTElWRVJZX0ZFRQUFTVVMVDYEA2ZlZQMJAGYCBRVNSU5fVVNEVF9GRUVfREVMSVZFUlkFB2ZlZVBhcnQFFU1JTl9VU0RUX0ZFRV9ERUxJVkVSWQUHZmVlUGFydAQQYWN0aXZpdGllc0Ftb3VudAkAaQIFDHVzZHRSZWNlaXZlZABkAwkAZwIFA2ZlZQkAZQIFDHVzZHRSZWNlaXZlZAUQYWN0aXZpdGllc0Ftb3VudAkAAgEJAKwCAgIrVGhpcyB0cmFkZSBkb2VzIG5vdCBjb3ZlciBkZWxpdmVyeSBjb3N0IG9mIAkBCmZpeGVkUG9pbnQCBQNmZWUABgQJZnVuZFRvdGFsCQELdmFsdWVPckVsc2UCCQCfCAEFD2RlbGl2ZXJ5RnVuZEtleQAACQCUCgIJAM0IAgkAzQgCCQDNCAIFDmZhY3RvcnlBY3Rpb25zCQEOU2NyaXB0VHJhbnNmZXIDCAUBaQZjYWxsZXIJAGUCCQBlAgUMdXNkdFJlY2VpdmVkBRBhY3Rpdml0aWVzQW1vdW50BQNmZWUFC3VzZHRBc3NldElkCQEMSW50ZWdlckVudHJ5AgUPZGVsaXZlcnlGdW5kS2V5CQBkAgUJZnVuZFRvdGFsBQNmZWUJAQ5TY3JpcHRUcmFuc2ZlcgMFDHJlc3RDb250cmFjdAUQYWN0aXZpdGllc0Ftb3VudAULdXNkdEFzc2V0SWQJAJUKAwUOYmFja3BhY2tSZXN1bHQFDHByb2xvZ1Jlc3VsdAULc3RhdHNSZXN1bHQBaQEZc2VsbFJlc291cmNlc0xhbmREZWxpdmVyeQQHYW1vdW50cwltaW5QcmljZXMLbGFuZEFzc2V0SWQQZmFjdG9yeUNvbnRpbmVudAMJAQEhAQURS1NfQUxMT1dfREVMSVZFUlkJAAIBAh9EZWxpdmVyeSBmZWF0dXJlIGlzIHR1cm5lZCBvZmYhBAxwcm9sb2dSZXN1bHQJAQZwcm9sb2cAAwkBAiE9AgkAkAMBCAUBaQhwYXltZW50cwAACQACAQIqc2VsbFJlc291cmNlcyBkb2Vzbid0IHJlcXVpcmUgYW55IHBheW1lbnRzBAR1c2VyCAUBaQZjYWxsZXIEBGFkZHIJAKUIAQUEdXNlcgQFYXNzZXQJAQV2YWx1ZQEJAOwHAQkA2QQBBQtsYW5kQXNzZXRJZAMJAQEhAQkBCWlzRGVmaW5lZAEJAJoIAgUPc3Rha2luZ0NvbnRyYWN0CQEWa2V5U3Rha2VkVGltZUJ5QXNzZXRJZAEFC2xhbmRBc3NldElkCQACAQkArAICCQCsAgICBE5GVCAIBQVhc3NldARuYW1lAg4gaXMgbm90IHN0YWtlZAQFb3duZXIJARN2YWx1ZU9yRXJyb3JNZXNzYWdlAgkAnQgCBQ9zdGFraW5nQ29udHJhY3QJARVrZXlMYW5kQXNzZXRJZFRvT3duZXIBBQtsYW5kQXNzZXRJZAkArAICCQCsAgICBE5GVCAIBQVhc3NldARuYW1lAgwgaXMgb3JwaGFuZWQDCQECIT0CBQVvd25lcgUEYWRkcgkAAgEJAKwCAgUKTEFORFBSRUZJWAINIGlzIG5vdCB5b3VycwQCd2gJAQhhc1N0cmluZwEJAPwHBAUPc3Rha2luZ0NvbnRyYWN0AhRnZXRXYXJlaG91c2VSRUFET05MWQkAzAgCBQtsYW5kQXNzZXRJZAUDbmlsBQNuaWwECWN1cnJlbnRXaAkAvAkCBQJ3aAIBOgQHcmVzTGlzdAkAtQkCCQCRAwIFCWN1cnJlbnRXaAUId2hJZHhSZXMCAV8EDSR0MDMxMjU5MzEzODAJARNzZWxsUmVzb3VyY2VzQ29tbW9uBAUHcmVzTGlzdAUQZmFjdG9yeUNvbnRpbmVudAUHYW1vdW50cwUJbWluUHJpY2VzBA5mYWN0b3J5QWN0aW9ucwgFDSR0MDMxMjU5MzEzODACXzEEBm5ld1JlcwgFDSR0MDMxMjU5MzEzODACXzIEDHVzZHRSZWNlaXZlZAgFDSR0MDMxMjU5MzEzODACXzMECHRvdGFsUmVzCAUNJHQwMzEyNTkzMTM4MAJfNAQFd2hTdHIJALoJAgkAzAgCCQCRAwIFCWN1cnJlbnRXaAULd2hJZHhMZXZlbHMJAMwIAgkAuQkCBQZuZXdSZXMCAV8JAMwIAgkAkQMCBQljdXJyZW50V2gFCHdoSWR4TWF0CQDMCAIJAJEDAgUJY3VycmVudFdoBQl3aElkeFByb2QJAMwIAgkAkQMCBQljdXJyZW50V2gFCXdoSWR4TE9GVAUDbmlsAgE6BAZ3aFNhdmUJAQhhc1N0cmluZwEJAPwHBAUPc3Rha2luZ0NvbnRyYWN0Ag1zYXZlV2FyZWhvdXNlCQDMCAIFBXdoU3RyCQDMCAIFC2xhbmRBc3NldElkBQNuaWwFA25pbAQLc3RhdHNSZXN1bHQJAQVhc0ludAEJAPwHBAUPc3Rha2luZ0NvbnRyYWN0Ag51cGRhdGVBY2NTdGF0cwkAzAgCBQRhZGRyCQDMCAIJAGsDBQd4cFRyYWRlBQh0b3RhbFJlcwUFTVVMVDgFA25pbAUDbmlsBAdmZWVQYXJ0CQBrAwUMdXNkdFJlY2VpdmVkBQxERUxJVkVSWV9GRUUFBU1VTFQ2BANmZWUDCQBmAgUVTUlOX1VTRFRfRkVFX0RFTElWRVJZBQdmZWVQYXJ0BRVNSU5fVVNEVF9GRUVfREVMSVZFUlkFB2ZlZVBhcnQEEGFjdGl2aXRpZXNBbW91bnQJAGkCBQx1c2R0UmVjZWl2ZWQAZAMJAGcCBQNmZWUJAGUCBQx1c2R0UmVjZWl2ZWQFEGFjdGl2aXRpZXNBbW91bnQJAAIBCQCsAgICK1RoaXMgdHJhZGUgZG9lcyBub3QgY292ZXIgZGVsaXZlcnkgY29zdCBvZiAJAQpmaXhlZFBvaW50AgUDZmVlAAYECWZ1bmRUb3RhbAkBC3ZhbHVlT3JFbHNlAgkAnwgBBQ9kZWxpdmVyeUZ1bmRLZXkAAAkAlAoCCQDNCAIJAM0IAgkAzQgCBQ5mYWN0b3J5QWN0aW9ucwkBDlNjcmlwdFRyYW5zZmVyAwgFAWkGY2FsbGVyCQBlAgkAZQIFDHVzZHRSZWNlaXZlZAUQYWN0aXZpdGllc0Ftb3VudAUDZmVlBQt1c2R0QXNzZXRJZAkBDEludGVnZXJFbnRyeQIFD2RlbGl2ZXJ5RnVuZEtleQkAZAIFCWZ1bmRUb3RhbAUDZmVlCQEOU2NyaXB0VHJhbnNmZXIDBQxyZXN0Q29udHJhY3QFEGFjdGl2aXRpZXNBbW91bnQFC3VzZHRBc3NldElkCQCVCgMFBndoU2F2ZQUMcHJvbG9nUmVzdWx0BQtzdGF0c1Jlc3VsdAFpAQxidXlNYXRlcmlhbHMCB2Ftb3VudHMJbWF4UHJpY2VzBAxwcm9sb2dSZXN1bHQJAQZwcm9sb2cABAtkdWNrQXNzZXRJZAkBE3ZhbHVlT3JFcnJvck1lc3NhZ2UCCQCdCAIFD3N0YWtpbmdDb250cmFjdAkBFGtleVN0YWtlZER1Y2tCeU93bmVyAQkApQgBCAUBaQZjYWxsZXICHFlvdSBkb24ndCBoYXZlIGEgZHVjayBzdGFrZWQDCQECIT0CCQCQAwEIBQFpCHBheW1lbnRzAAEJAAIBAiJleGFjdGx5IDEgcGF5bWVudCBtdXN0IGJlIGF0dGFjaGVkBANwbXQJAJEDAggFAWkIcGF5bWVudHMAAAQDYW10CAUDcG10BmFtb3VudAMDCQEBIQEJAQlpc0RlZmluZWQBCAUDcG10B2Fzc2V0SWQGCQECIT0CCQEFdmFsdWUBCAUDcG10B2Fzc2V0SWQFC3VzZHRBc3NldElkCQACAQITVVNEVCBwYXltZW50cyBvbmx5IQQLY3VyTG9jYXRpb24JALUJAgkBC3ZhbHVlT3JFbHNlAgkAnQgCBQ9zdGFraW5nQ29udHJhY3QJAQ9rZXlEdWNrTG9jYXRpb24BBQtkdWNrQXNzZXRJZAUPREVGQVVMVExPQ0FUSU9OAgFfAwkBAiE9AgkAkQMCBQtjdXJMb2NhdGlvbgUKbG9jSWR4VHlwZQIBRgkAAgEJAKwCAgItRHVjayBsb2NhdGlvbiB0eXBlIHNob3VsZCBiZSBGYWN0b3J5LCBidXQgaXMgCQCRAwIFC2N1ckxvY2F0aW9uBQpsb2NJZHhUeXBlBAtjdXJyZW50UGFjawkBC2dldEJhY2twYWNrAQkBEWtleUJhY2twYWNrQnlEdWNrAQULZHVja0Fzc2V0SWQEB21hdExpc3QJALUJAgkAkQMCBQtjdXJyZW50UGFjawUIYnBJZHhNYXQCAV8EDSR0MDMzMjQwMzMzNjIJARJidXlNYXRlcmlhbHNDb21tb24EBQdtYXRMaXN0CQCRAwIFC2N1ckxvY2F0aW9uBQhsb2NJZHhJZAUHYW1vdW50cwUJbWF4UHJpY2VzBA5mYWN0b3J5QWN0aW9ucwgFDSR0MDMzMjQwMzMzNjICXzEEBm5ld01hdAgFDSR0MDMzMjQwMzMzNjICXzIECXVzZHRTcGVudAgFDSR0MDMzMjQwMzMzNjICXzMECHRvdGFsTWF0CAUNJHQwMzMyNDAzMzM2MgJfNAMJAGYCBQl1c2R0U3BlbnQFA2FtdAkAAgEJAKwCAgkArAICCQCsAgICH0luc3VmZmljaWVudCBwYXltZW50ISBBdHRhY2hlZD0JAQpmaXhlZFBvaW50AgUDYW10AAYCCywgcmVxdWlyZWQ9CQEKZml4ZWRQb2ludAIFCXVzZHRTcGVudAAGBAduZXdQYWNrCQC5CQIJAMwIAgkAkQMCBQtjdXJyZW50UGFjawUKYnBJZHhMZXZlbAkAzAgCCQCRAwIFC2N1cnJlbnRQYWNrBQhicElkeFJlcwkAzAgCCQC5CQIFBm5ld01hdAIBXwkAzAgCCQCRAwIFC2N1cnJlbnRQYWNrBQlicElkeFByb2QFA25pbAIBOgQOYmFja3BhY2tSZXN1bHQJAQhhc1N0cmluZwEJAPwHBAUPc3Rha2luZ0NvbnRyYWN0Ag51cGRhdGVCYWNrcGFjawkAzAgCBQtkdWNrQXNzZXRJZAkAzAgCBQduZXdQYWNrBQNuaWwFA25pbAQEcmVzdAMJAGYCCQBlAgUDYW10BQl1c2R0U3BlbnQAAAkAzAgCCQEOU2NyaXB0VHJhbnNmZXIDCAUBaQZjYWxsZXIJAGUCBQNhbXQFCXVzZHRTcGVudAULdXNkdEFzc2V0SWQFA25pbAUDbmlsBBBhY3Rpdml0aWVzQW1vdW50CQBpAgUJdXNkdFNwZW50AGQEC3N0YXRzUmVzdWx0CQEFYXNJbnQBCQD8BwQFD3N0YWtpbmdDb250cmFjdAIPdXBkYXRlRHVja1N0YXRzCQDMCAIFC2R1Y2tBc3NldElkCQDMCAIJAGsDBQd4cFRyYWRlBQh0b3RhbE1hdAUFTVVMVDgFA25pbAUDbmlsCQCUCgIJAM0IAgkAzggCBQ5mYWN0b3J5QWN0aW9ucwUEcmVzdAkBDlNjcmlwdFRyYW5zZmVyAwUMcmVzdENvbnRyYWN0BRBhY3Rpdml0aWVzQW1vdW50BQt1c2R0QXNzZXRJZAkAlQoDBQ5iYWNrcGFja1Jlc3VsdAUMcHJvbG9nUmVzdWx0BQtzdGF0c1Jlc3VsdAFpARhidXlNYXRlcmlhbHNEdWNrRGVsaXZlcnkDB2Ftb3VudHMJbWF4UHJpY2VzEGZhY3RvcnlDb250aW5lbnQDCQEBIQEFEUtTX0FMTE9XX0RFTElWRVJZCQACAQIfRGVsaXZlcnkgZmVhdHVyZSBpcyB0dXJuZWQgb2ZmIQQMcHJvbG9nUmVzdWx0CQEGcHJvbG9nAAQLZHVja0Fzc2V0SWQJARN2YWx1ZU9yRXJyb3JNZXNzYWdlAgkAnQgCBQ9zdGFraW5nQ29udHJhY3QJARRrZXlTdGFrZWREdWNrQnlPd25lcgEJAKUIAQgFAWkGY2FsbGVyAhxZb3UgZG9uJ3QgaGF2ZSBhIGR1Y2sgc3Rha2VkAwkBAiE9AgkAkAMBCAUBaQhwYXltZW50cwABCQACAQIiZXhhY3RseSAxIHBheW1lbnQgbXVzdCBiZSBhdHRhY2hlZAQDcG10CQCRAwIIBQFpCHBheW1lbnRzAAAEA2FtdAgFA3BtdAZhbW91bnQDAwkBASEBCQEJaXNEZWZpbmVkAQgFA3BtdAdhc3NldElkBgkBAiE9AgkBBXZhbHVlAQgFA3BtdAdhc3NldElkBQt1c2R0QXNzZXRJZAkAAgECE1VTRFQgcGF5bWVudHMgb25seSEEC2N1cnJlbnRQYWNrCQELZ2V0QmFja3BhY2sBCQERa2V5QmFja3BhY2tCeUR1Y2sBBQtkdWNrQXNzZXRJZAQHbWF0TGlzdAkAtQkCCQCRAwIFC2N1cnJlbnRQYWNrBQhicElkeE1hdAIBXwQNJHQwMzQ4ODAzNDk5NwkBEmJ1eU1hdGVyaWFsc0NvbW1vbgQFB21hdExpc3QFEGZhY3RvcnlDb250aW5lbnQFB2Ftb3VudHMFCW1heFByaWNlcwQOZmFjdG9yeUFjdGlvbnMIBQ0kdDAzNDg4MDM0OTk3Al8xBAZuZXdNYXQIBQ0kdDAzNDg4MDM0OTk3Al8yBAl1c2R0U3BlbnQIBQ0kdDAzNDg4MDM0OTk3Al8zBAh0b3RhbE1hdAgFDSR0MDM0ODgwMzQ5OTcCXzQEB25ld1BhY2sJALkJAgkAzAgCCQCRAwIFC2N1cnJlbnRQYWNrBQpicElkeExldmVsCQDMCAIJAJEDAgULY3VycmVudFBhY2sFCGJwSWR4UmVzCQDMCAIJALkJAgUGbmV3TWF0AgFfCQDMCAIJAJEDAgULY3VycmVudFBhY2sFCWJwSWR4UHJvZAUDbmlsAgE6BA5iYWNrcGFja1Jlc3VsdAkBCGFzU3RyaW5nAQkA/AcEBQ9zdGFraW5nQ29udHJhY3QCDnVwZGF0ZUJhY2twYWNrCQDMCAIFC2R1Y2tBc3NldElkCQDMCAIFB25ld1BhY2sFA25pbAUDbmlsBAtzdGF0c1Jlc3VsdAkBBWFzSW50AQkA/AcEBQ9zdGFraW5nQ29udHJhY3QCD3VwZGF0ZUR1Y2tTdGF0cwkAzAgCBQtkdWNrQXNzZXRJZAkAzAgCCQBrAwUHeHBUcmFkZQUIdG90YWxNYXQFBU1VTFQ4BQNuaWwFA25pbAQHZmVlUGFydAkAawMFCXVzZHRTcGVudAUMREVMSVZFUllfRkVFBQVNVUxUNgQDZmVlAwkAZgIFFU1JTl9VU0RUX0ZFRV9ERUxJVkVSWQUHZmVlUGFydAUVTUlOX1VTRFRfRkVFX0RFTElWRVJZBQdmZWVQYXJ0BBB1c2R0U3BlbnRXaXRoRmVlCQBkAgUJdXNkdFNwZW50BQNmZWUDCQBmAgUQdXNkdFNwZW50V2l0aEZlZQUDYW10CQACAQkArAICCQCsAgIJAKwCAgkArAICCQCsAgIJAKwCAgIfSW5zdWZmaWNpZW50IHBheW1lbnQhIEF0dGFjaGVkPQkBCmZpeGVkUG9pbnQCBQNhbXQABgILLCByZXF1aXJlZD0JAQpmaXhlZFBvaW50AgUJdXNkdFNwZW50AAYCASsJAQpmaXhlZFBvaW50AgUDZmVlAAYCDihkZWxpdmVyeSBmZWUpBARyZXN0AwkAZgIJAGUCBQNhbXQFEHVzZHRTcGVudFdpdGhGZWUAAAkAzAgCCQEOU2NyaXB0VHJhbnNmZXIDCAUBaQZjYWxsZXIJAGUCBQNhbXQFEHVzZHRTcGVudFdpdGhGZWUFC3VzZHRBc3NldElkBQNuaWwFA25pbAQQYWN0aXZpdGllc0Ftb3VudAkAaQIFCXVzZHRTcGVudABkBAlmdW5kVG90YWwJAQt2YWx1ZU9yRWxzZQIJAJ8IAQUPZGVsaXZlcnlGdW5kS2V5AAAJAJQKAgkAzQgCCQDNCAIJAM4IAgUOZmFjdG9yeUFjdGlvbnMFBHJlc3QJAQ5TY3JpcHRUcmFuc2ZlcgMFDHJlc3RDb250cmFjdAUQYWN0aXZpdGllc0Ftb3VudAULdXNkdEFzc2V0SWQJAQxJbnRlZ2VyRW50cnkCBQ9kZWxpdmVyeUZ1bmRLZXkJAGQCBQlmdW5kVG90YWwFA2ZlZQkAlQoDBQ5iYWNrcGFja1Jlc3VsdAUMcHJvbG9nUmVzdWx0BQtzdGF0c1Jlc3VsdAFpARhidXlNYXRlcmlhbHNMYW5kRGVsaXZlcnkEB2Ftb3VudHMJbWF4UHJpY2VzC2xhbmRBc3NldElkEGZhY3RvcnlDb250aW5lbnQDCQEBIQEFEUtTX0FMTE9XX0RFTElWRVJZCQACAQIfRGVsaXZlcnkgZmVhdHVyZSBpcyB0dXJuZWQgb2ZmIQQMcHJvbG9nUmVzdWx0CQEGcHJvbG9nAAMJAQIhPQIJAJADAQgFAWkIcGF5bWVudHMAAQkAAgECImV4YWN0bHkgMSBwYXltZW50IG11c3QgYmUgYXR0YWNoZWQEA3BtdAkAkQMCCAUBaQhwYXltZW50cwAABANhbXQIBQNwbXQGYW1vdW50AwMJAQEhAQkBCWlzRGVmaW5lZAEIBQNwbXQHYXNzZXRJZAYJAQIhPQIJAQV2YWx1ZQEIBQNwbXQHYXNzZXRJZAULdXNkdEFzc2V0SWQJAAIBAhNVU0RUIHBheW1lbnRzIG9ubHkhBAR1c2VyCAUBaQZjYWxsZXIEBGFkZHIJAKUIAQUEdXNlcgQFYXNzZXQJAQV2YWx1ZQEJAOwHAQkA2QQBBQtsYW5kQXNzZXRJZAMJAQEhAQkBCWlzRGVmaW5lZAEJAJoIAgUPc3Rha2luZ0NvbnRyYWN0CQEWa2V5U3Rha2VkVGltZUJ5QXNzZXRJZAEFC2xhbmRBc3NldElkCQACAQkArAICCQCsAgICBE5GVCAIBQVhc3NldARuYW1lAg4gaXMgbm90IHN0YWtlZAQFb3duZXIJARN2YWx1ZU9yRXJyb3JNZXNzYWdlAgkAnQgCBQ9zdGFraW5nQ29udHJhY3QJARVrZXlMYW5kQXNzZXRJZFRvT3duZXIBBQtsYW5kQXNzZXRJZAkArAICCQCsAgICBE5GVCAIBQVhc3NldARuYW1lAgwgaXMgb3JwaGFuZWQDCQECIT0CBQVvd25lcgUEYWRkcgkAAgEJAKwCAgUKTEFORFBSRUZJWAINIGlzIG5vdCB5b3VycwQCd2gJAQhhc1N0cmluZwEJAPwHBAUPc3Rha2luZ0NvbnRyYWN0AhRnZXRXYXJlaG91c2VSRUFET05MWQkAzAgCBQtsYW5kQXNzZXRJZAUDbmlsBQNuaWwECWN1cnJlbnRXaAkAvAkCBQJ3aAIBOgQHbWF0TGlzdAkAtQkCCQCRAwIFCWN1cnJlbnRXaAUId2hJZHhNYXQCAV8EDSR0MDM3Mjc1MzczOTIJARJidXlNYXRlcmlhbHNDb21tb24EBQdtYXRMaXN0BRBmYWN0b3J5Q29udGluZW50BQdhbW91bnRzBQltYXhQcmljZXMEDmZhY3RvcnlBY3Rpb25zCAUNJHQwMzcyNzUzNzM5MgJfMQQGbmV3TWF0CAUNJHQwMzcyNzUzNzM5MgJfMgQJdXNkdFNwZW50CAUNJHQwMzcyNzUzNzM5MgJfMwQIdG90YWxNYXQIBQ0kdDAzNzI3NTM3MzkyAl80BAV3aFN0cgkAugkCCQDMCAIJAJEDAgUJY3VycmVudFdoBQt3aElkeExldmVscwkAzAgCCQCRAwIFCWN1cnJlbnRXaAUId2hJZHhSZXMJAMwIAgkAuQkCBQZuZXdNYXQCAV8JAMwIAgkAkQMCBQljdXJyZW50V2gFCXdoSWR4UHJvZAkAzAgCCQCRAwIFCWN1cnJlbnRXaAUJd2hJZHhMT0ZUBQNuaWwCAToEBndoU2F2ZQkBCGFzU3RyaW5nAQkA/AcEBQ9zdGFraW5nQ29udHJhY3QCDXNhdmVXYXJlaG91c2UJAMwIAgUFd2hTdHIJAMwIAgULbGFuZEFzc2V0SWQFA25pbAUDbmlsBAtzdGF0c1Jlc3VsdAkBBWFzSW50AQkA/AcEBQ9zdGFraW5nQ29udHJhY3QCDnVwZGF0ZUFjY1N0YXRzCQDMCAIFBGFkZHIJAMwIAgkAawMFB3hwVHJhZGUFCHRvdGFsTWF0BQVNVUxUOAUDbmlsBQNuaWwEB2ZlZVBhcnQJAGsDBQl1c2R0U3BlbnQFDERFTElWRVJZX0ZFRQUFTVVMVDYEA2ZlZQMJAGYCBRVNSU5fVVNEVF9GRUVfREVMSVZFUlkFB2ZlZVBhcnQFFU1JTl9VU0RUX0ZFRV9ERUxJVkVSWQUHZmVlUGFydAQQdXNkdFNwZW50V2l0aEZlZQkAZAIFCXVzZHRTcGVudAUDZmVlAwkAZgIFEHVzZHRTcGVudFdpdGhGZWUFA2FtdAkAAgEJAKwCAgkArAICCQCsAgIJAKwCAgkArAICCQCsAgICH0luc3VmZmljaWVudCBwYXltZW50ISBBdHRhY2hlZD0JAQpmaXhlZFBvaW50AgUDYW10AAYCCywgcmVxdWlyZWQ9CQEKZml4ZWRQb2ludAIFCXVzZHRTcGVudAAGAgErCQEKZml4ZWRQb2ludAIFA2ZlZQAGAg4oZGVsaXZlcnkgZmVlKQQEcmVzdAMJAGYCCQBlAgUDYW10BRB1c2R0U3BlbnRXaXRoRmVlAAAJAMwIAgkBDlNjcmlwdFRyYW5zZmVyAwgFAWkGY2FsbGVyCQBlAgUDYW10BRB1c2R0U3BlbnRXaXRoRmVlBQt1c2R0QXNzZXRJZAUDbmlsBQNuaWwEEGFjdGl2aXRpZXNBbW91bnQJAGkCBQl1c2R0U3BlbnQAZAQJZnVuZFRvdGFsCQELdmFsdWVPckVsc2UCCQCfCAEFD2RlbGl2ZXJ5RnVuZEtleQAACQCUCgIJAM0IAgkAzQgCCQDOCAIFDmZhY3RvcnlBY3Rpb25zBQRyZXN0CQEOU2NyaXB0VHJhbnNmZXIDBQxyZXN0Q29udHJhY3QFEGFjdGl2aXRpZXNBbW91bnQFC3VzZHRBc3NldElkCQEMSW50ZWdlckVudHJ5AgUPZGVsaXZlcnlGdW5kS2V5CQBkAgUJZnVuZFRvdGFsBQNmZWUJAJUKAwUGd2hTYXZlBQxwcm9sb2dSZXN1bHQFC3N0YXRzUmVzdWx0AWkBEWV4Y2hhbmdlUmVzb3VyY2VzAQdhbW91bnRzBAxwcm9sb2dSZXN1bHQJAQZwcm9sb2cABAtkdWNrQXNzZXRJZAkBE3ZhbHVlT3JFcnJvck1lc3NhZ2UCCQCdCAIFD3N0YWtpbmdDb250cmFjdAkBFGtleVN0YWtlZER1Y2tCeU93bmVyAQkApQgBCAUBaQZjYWxsZXICHFlvdSBkb24ndCBoYXZlIGEgZHVjayBzdGFrZWQDCQECIT0CCQCQAwEIBQFpCHBheW1lbnRzAAEJAAIBAiJleGFjdGx5IDEgcGF5bWVudCBtdXN0IGJlIGF0dGFjaGVkBANwbXQJAJEDAggFAWkIcGF5bWVudHMAAAQDYW10CAUDcG10BmFtb3VudAMDCQEBIQEJAQlpc0RlZmluZWQBCAUDcG10B2Fzc2V0SWQGCQECIT0CCQEFdmFsdWUBCAUDcG10B2Fzc2V0SWQFC3VzZHRBc3NldElkCQACAQITVVNEVCBwYXltZW50cyBvbmx5IQQLY3VyTG9jYXRpb24JALUJAgkBC3ZhbHVlT3JFbHNlAgkAnQgCBQ9zdGFraW5nQ29udHJhY3QJAQ9rZXlEdWNrTG9jYXRpb24BBQtkdWNrQXNzZXRJZAUPREVGQVVMVExPQ0FUSU9OAgFfAwkBAiE9AgkAkQMCBQtjdXJMb2NhdGlvbgUKbG9jSWR4VHlwZQIBRgkAAgEJAKwCAgItRHVjayBsb2NhdGlvbiB0eXBlIHNob3VsZCBiZSBGYWN0b3J5LCBidXQgaXMgCQCRAwIFC2N1ckxvY2F0aW9uBQpsb2NJZHhUeXBlBAtjdXJyZW50UGFjawkBC2dldEJhY2twYWNrAQkBEWtleUJhY2twYWNrQnlEdWNrAQULZHVja0Fzc2V0SWQEB3Jlc0xpc3QJALUJAgkAkQMCBQtjdXJyZW50UGFjawUIYnBJZHhSZXMCAV8EB21hdExpc3QJALUJAgkAkQMCBQtjdXJyZW50UGFjawUIYnBJZHhNYXQCAV8EDSR0MDM5NTA2Mzk2MTIJARdleGNoYW5nZVJlc291cmNlc0NvbW1vbgMFB3Jlc0xpc3QFB21hdExpc3QFB2Ftb3VudHMEBm5ld1JlcwgFDSR0MDM5NTA2Mzk2MTICXzEEBm5ld01hdAgFDSR0MDM5NTA2Mzk2MTICXzIECXVzZHRTcGVudAgFDSR0MDM5NTA2Mzk2MTICXzMEFHRvdGFsQW1vdW50Q29udmVydGVkCAUNJHQwMzk1MDYzOTYxMgJfNAMJAGYCBQl1c2R0U3BlbnQFA2FtdAkAAgEJAKwCAgkArAICCQCsAgICH0luc3VmZmljaWVudCBwYXltZW50ISBBdHRhY2hlZD0JAQpmaXhlZFBvaW50AgUDYW10AAYCCywgcmVxdWlyZWQ9CQEKZml4ZWRQb2ludAIFCXVzZHRTcGVudAAGBAduZXdQYWNrCQC5CQIJAMwIAgkAkQMCBQtjdXJyZW50UGFjawUKYnBJZHhMZXZlbAkAzAgCCQC5CQIFBm5ld1JlcwIBXwkAzAgCCQC5CQIFBm5ld01hdAIBXwkAzAgCCQCRAwIFC2N1cnJlbnRQYWNrBQlicElkeFByb2QFA25pbAIBOgQOYmFja3BhY2tSZXN1bHQJAQhhc1N0cmluZwEJAPwHBAUPc3Rha2luZ0NvbnRyYWN0Ag51cGRhdGVCYWNrcGFjawkAzAgCBQtkdWNrQXNzZXRJZAkAzAgCBQduZXdQYWNrBQNuaWwFA25pbAQEcmVzdAMJAGYCCQBlAgUDYW10BQl1c2R0U3BlbnQAAAkAzAgCCQEOU2NyaXB0VHJhbnNmZXIDCAUBaQZjYWxsZXIJAGUCBQNhbXQFCXVzZHRTcGVudAULdXNkdEFzc2V0SWQFA25pbAUDbmlsBBBhY3Rpdml0aWVzQW1vdW50CQBpAgUJdXNkdFNwZW50AGQEC3N0YXRzUmVzdWx0CQEFYXNJbnQBCQD8BwQFD3N0YWtpbmdDb250cmFjdAIPdXBkYXRlRHVja1N0YXRzCQDMCAIFC2R1Y2tBc3NldElkCQDMCAIJAGsDBQd4cFRyYWRlBRR0b3RhbEFtb3VudENvbnZlcnRlZAUFTVVMVDgFA25pbAUDbmlsCQCUCgIJAM0IAgUEcmVzdAkBDlNjcmlwdFRyYW5zZmVyAwUMcmVzdENvbnRyYWN0BRBhY3Rpdml0aWVzQW1vdW50BQt1c2R0QXNzZXRJZAkAlQoDBQ5iYWNrcGFja1Jlc3VsdAUMcHJvbG9nUmVzdWx0BQtzdGF0c1Jlc3VsdAFpAR1leGNoYW5nZVJlc291cmNlc0R1Y2tEZWxpdmVyeQEHYW1vdW50cwMJAQEhAQURS1NfQUxMT1dfREVMSVZFUlkJAAIBAh9EZWxpdmVyeSBmZWF0dXJlIGlzIHR1cm5lZCBvZmYhBAxwcm9sb2dSZXN1bHQJAQZwcm9sb2cABAtkdWNrQXNzZXRJZAkBE3ZhbHVlT3JFcnJvck1lc3NhZ2UCCQCdCAIFD3N0YWtpbmdDb250cmFjdAkBFGtleVN0YWtlZER1Y2tCeU93bmVyAQkApQgBCAUBaQZjYWxsZXICHFlvdSBkb24ndCBoYXZlIGEgZHVjayBzdGFrZWQDCQECIT0CCQCQAwEIBQFpCHBheW1lbnRzAAEJAAIBAiJleGFjdGx5IDEgcGF5bWVudCBtdXN0IGJlIGF0dGFjaGVkBANwbXQJAJEDAggFAWkIcGF5bWVudHMAAAQDYW10CAUDcG10BmFtb3VudAMDCQEBIQEJAQlpc0RlZmluZWQBCAUDcG10B2Fzc2V0SWQGCQECIT0CCQEFdmFsdWUBCAUDcG10B2Fzc2V0SWQFC3VzZHRBc3NldElkCQACAQITVVNEVCBwYXltZW50cyBvbmx5IQQLY3VycmVudFBhY2sJAQtnZXRCYWNrcGFjawEJARFrZXlCYWNrcGFja0J5RHVjawEFC2R1Y2tBc3NldElkBAdyZXNMaXN0CQC1CQIJAJEDAgULY3VycmVudFBhY2sFCGJwSWR4UmVzAgFfBAdtYXRMaXN0CQC1CQIJAJEDAgULY3VycmVudFBhY2sFCGJwSWR4TWF0AgFfBA0kdDA0MTEyNDQxMjMwCQEXZXhjaGFuZ2VSZXNvdXJjZXNDb21tb24DBQdyZXNMaXN0BQdtYXRMaXN0BQdhbW91bnRzBAZuZXdSZXMIBQ0kdDA0MTEyNDQxMjMwAl8xBAZuZXdNYXQIBQ0kdDA0MTEyNDQxMjMwAl8yBAl1c2R0U3BlbnQIBQ0kdDA0MTEyNDQxMjMwAl8zBBR0b3RhbEFtb3VudENvbnZlcnRlZAgFDSR0MDQxMTI0NDEyMzACXzQEB2ZlZVBhcnQJAGsDBQl1c2R0U3BlbnQFDkRFTElWRVJZX0ZFRTE1BQVNVUxUNgQDZmVlAwkAZgIFF01JTl9VU0RUX0ZFRV9ERUxJVkVSWTE1BQdmZWVQYXJ0BRdNSU5fVVNEVF9GRUVfREVMSVZFUlkxNQUHZmVlUGFydAQQdXNkdFNwZW50V2l0aEZlZQkAZAIFCXVzZHRTcGVudAUDZmVlAwkAZgIFEHVzZHRTcGVudFdpdGhGZWUFA2FtdAkAAgEJAKwCAgkArAICCQCsAgIJAKwCAgkArAICCQCsAgICH0luc3VmZmljaWVudCBwYXltZW50ISBBdHRhY2hlZD0JAQpmaXhlZFBvaW50AgUDYW10AAYCCywgcmVxdWlyZWQ9CQEKZml4ZWRQb2ludAIFCXVzZHRTcGVudAAGAgErCQEKZml4ZWRQb2ludAIFA2ZlZQAGAg4oZGVsaXZlcnkgZmVlKQQHbmV3UGFjawkAuQkCCQDMCAIJAJEDAgULY3VycmVudFBhY2sFCmJwSWR4TGV2ZWwJAMwIAgkAuQkCBQZuZXdSZXMCAV8JAMwIAgkAuQkCBQZuZXdNYXQCAV8JAMwIAgkAkQMCBQtjdXJyZW50UGFjawUJYnBJZHhQcm9kBQNuaWwCAToEDmJhY2twYWNrUmVzdWx0CQEIYXNTdHJpbmcBCQD8BwQFD3N0YWtpbmdDb250cmFjdAIOdXBkYXRlQmFja3BhY2sJAMwIAgULZHVja0Fzc2V0SWQJAMwIAgUHbmV3UGFjawUDbmlsBQNuaWwEBHJlc3QDCQBmAgkAZQIFA2FtdAUQdXNkdFNwZW50V2l0aEZlZQAACQDMCAIJAQ5TY3JpcHRUcmFuc2ZlcgMIBQFpBmNhbGxlcgkAZQIFA2FtdAUQdXNkdFNwZW50V2l0aEZlZQULdXNkdEFzc2V0SWQFA25pbAUDbmlsBBBhY3Rpdml0aWVzQW1vdW50CQBpAgUJdXNkdFNwZW50AGQEC3N0YXRzUmVzdWx0CQEFYXNJbnQBCQD8BwQFD3N0YWtpbmdDb250cmFjdAIPdXBkYXRlRHVja1N0YXRzCQDMCAIFC2R1Y2tBc3NldElkCQDMCAIJAGsDBQd4cFRyYWRlBRR0b3RhbEFtb3VudENvbnZlcnRlZAUFTVVMVDgFA25pbAUDbmlsBAlmdW5kVG90YWwJAQt2YWx1ZU9yRWxzZQIJAJ8IAQUPZGVsaXZlcnlGdW5kS2V5AAAJAJQKAgkAzQgCCQDNCAIFBHJlc3QJAQ5TY3JpcHRUcmFuc2ZlcgMFDHJlc3RDb250cmFjdAUQYWN0aXZpdGllc0Ftb3VudAULdXNkdEFzc2V0SWQJAQxJbnRlZ2VyRW50cnkCBQ9kZWxpdmVyeUZ1bmRLZXkJAGQCBQlmdW5kVG90YWwFA2ZlZQkAlQoDBQ5iYWNrcGFja1Jlc3VsdAUMcHJvbG9nUmVzdWx0BQtzdGF0c1Jlc3VsdAFpAR1leGNoYW5nZVJlc291cmNlc0xhbmREZWxpdmVyeQIHYW1vdW50cwtsYW5kQXNzZXRJZAMJAQEhAQURS1NfQUxMT1dfREVMSVZFUlkJAAIBAh9EZWxpdmVyeSBmZWF0dXJlIGlzIHR1cm5lZCBvZmYhBAxwcm9sb2dSZXN1bHQJAQZwcm9sb2cAAwkBAiE9AgkAkAMBCAUBaQhwYXltZW50cwABCQACAQIiZXhhY3RseSAxIHBheW1lbnQgbXVzdCBiZSBhdHRhY2hlZAQDcG10CQCRAwIIBQFpCHBheW1lbnRzAAAEA2FtdAgFA3BtdAZhbW91bnQDAwkBASEBCQEJaXNEZWZpbmVkAQgFA3BtdAdhc3NldElkBgkBAiE9AgkBBXZhbHVlAQgFA3BtdAdhc3NldElkBQt1c2R0QXNzZXRJZAkAAgECE1VTRFQgcGF5bWVudHMgb25seSEEBHVzZXIIBQFpBmNhbGxlcgQEYWRkcgkApQgBBQR1c2VyBAVhc3NldAkBBXZhbHVlAQkA7AcBCQDZBAEFC2xhbmRBc3NldElkAwkBASEBCQEJaXNEZWZpbmVkAQkAmggCBQ9zdGFraW5nQ29udHJhY3QJARZrZXlTdGFrZWRUaW1lQnlBc3NldElkAQULbGFuZEFzc2V0SWQJAAIBCQCsAgIJAKwCAgIETkZUIAgFBWFzc2V0BG5hbWUCDiBpcyBub3Qgc3Rha2VkBAVvd25lcgkBE3ZhbHVlT3JFcnJvck1lc3NhZ2UCCQCdCAIFD3N0YWtpbmdDb250cmFjdAkBFWtleUxhbmRBc3NldElkVG9Pd25lcgEFC2xhbmRBc3NldElkCQCsAgIJAKwCAgIETkZUIAgFBWFzc2V0BG5hbWUCDCBpcyBvcnBoYW5lZAMJAQIhPQIFBW93bmVyBQRhZGRyCQACAQkArAICBQpMQU5EUFJFRklYAg0gaXMgbm90IHlvdXJzBAJ3aAkBCGFzU3RyaW5nAQkA/AcEBQ9zdGFraW5nQ29udHJhY3QCFGdldFdhcmVob3VzZVJFQURPTkxZCQDMCAIFC2xhbmRBc3NldElkBQNuaWwFA25pbAQJY3VycmVudFdoCQC8CQIFAndoAgE6BAdyZXNMaXN0CQC1CQIJAJEDAgUJY3VycmVudFdoBQh3aElkeFJlcwIBXwQHbWF0TGlzdAkAtQkCCQCRAwIFCWN1cnJlbnRXaAUId2hJZHhNYXQCAV8EDSR0MDQzNTMwNDM2MzYJARdleGNoYW5nZVJlc291cmNlc0NvbW1vbgMFB3Jlc0xpc3QFB21hdExpc3QFB2Ftb3VudHMEBm5ld1JlcwgFDSR0MDQzNTMwNDM2MzYCXzEEBm5ld01hdAgFDSR0MDQzNTMwNDM2MzYCXzIECXVzZHRTcGVudAgFDSR0MDQzNTMwNDM2MzYCXzMEFHRvdGFsQW1vdW50Q29udmVydGVkCAUNJHQwNDM1MzA0MzYzNgJfNAQFd2hTdHIJALoJAgkAzAgCCQCRAwIFCWN1cnJlbnRXaAULd2hJZHhMZXZlbHMJAMwIAgkAuQkCBQZuZXdSZXMCAV8JAMwIAgkAuQkCBQZuZXdNYXQCAV8JAMwIAgkAkQMCBQljdXJyZW50V2gFCXdoSWR4UHJvZAkAzAgCCQCRAwIFCWN1cnJlbnRXaAUJd2hJZHhMT0ZUBQNuaWwCAToEBndoU2F2ZQkBCGFzU3RyaW5nAQkA/AcEBQ9zdGFraW5nQ29udHJhY3QCDXNhdmVXYXJlaG91c2UJAMwIAgUFd2hTdHIJAMwIAgULbGFuZEFzc2V0SWQFA25pbAUDbmlsBAtzdGF0c1Jlc3VsdAkBBWFzSW50AQkA/AcEBQ9zdGFraW5nQ29udHJhY3QCDnVwZGF0ZUFjY1N0YXRzCQDMCAIFBGFkZHIJAMwIAgkAawMFB3hwVHJhZGUFFHRvdGFsQW1vdW50Q29udmVydGVkBQVNVUxUOAUDbmlsBQNuaWwEB2ZlZVBhcnQJAGsDBQl1c2R0U3BlbnQFDkRFTElWRVJZX0ZFRTE1BQVNVUxUNgQDZmVlAwkAZgIFF01JTl9VU0RUX0ZFRV9ERUxJVkVSWTE1BQdmZWVQYXJ0BRdNSU5fVVNEVF9GRUVfREVMSVZFUlkxNQUHZmVlUGFydAQQdXNkdFNwZW50V2l0aEZlZQkAZAIFCXVzZHRTcGVudAUDZmVlAwkAZgIFEHVzZHRTcGVudFdpdGhGZWUFA2FtdAkAAgEJAKwCAgkArAICCQCsAgIJAKwCAgkArAICCQCsAgICH0luc3VmZmljaWVudCBwYXltZW50ISBBdHRhY2hlZD0JAQpmaXhlZFBvaW50AgUDYW10AAYCCywgcmVxdWlyZWQ9CQEKZml4ZWRQb2ludAIFCXVzZHRTcGVudAAGAgErCQEKZml4ZWRQb2ludAIFA2ZlZQAGAg4oZGVsaXZlcnkgZmVlKQQEcmVzdAMJAGYCCQBlAgUDYW10BRB1c2R0U3BlbnRXaXRoRmVlAAAJAMwIAgkBDlNjcmlwdFRyYW5zZmVyAwgFAWkGY2FsbGVyCQBlAgUDYW10BRB1c2R0U3BlbnRXaXRoRmVlBQt1c2R0QXNzZXRJZAUDbmlsBQNuaWwEEGFjdGl2aXRpZXNBbW91bnQJAGkCBQl1c2R0U3BlbnQAZAQJZnVuZFRvdGFsCQELdmFsdWVPckVsc2UCCQCfCAEFD2RlbGl2ZXJ5RnVuZEtleQAACQCUCgIJAM0IAgkAzQgCBQRyZXN0CQEOU2NyaXB0VHJhbnNmZXIDBQxyZXN0Q29udHJhY3QFEGFjdGl2aXRpZXNBbW91bnQFC3VzZHRBc3NldElkCQEMSW50ZWdlckVudHJ5AgUPZGVsaXZlcnlGdW5kS2V5CQBkAgUJZnVuZFRvdGFsBQNmZWUJAJUKAwUGd2hTYXZlBQxwcm9sb2dSZXN1bHQFC3N0YXRzUmVzdWx0AWkBCmNyYWZ0R29vZHMCCnByb2R1Y3RJZHgIcXVhbnRpdHkEDHByb2xvZ1Jlc3VsdAkBBnByb2xvZwADCQECIT0CCQCQAwEIBQFpCHBheW1lbnRzAAEJAAIBAiJleGFjdGx5IDEgcGF5bWVudCBtdXN0IGJlIGF0dGFjaGVkBANwbXQJAJEDAggFAWkIcGF5bWVudHMAAAQDYW10CAUDcG10BmFtb3VudAQKcG10QXNzZXRJZAkBE3ZhbHVlT3JFcnJvck1lc3NhZ2UCCAUDcG10B2Fzc2V0SWQCHldBVkVTIGNhbid0IGJlIHVzZWQgYXMgcGF5bWVudAMJAQIhPQIFCnBtdEFzc2V0SWQFC3VzZHRBc3NldElkCQACAQITVVNEVCBwYXltZW50cyBvbmx5IQMJAQIhPQIFA2FtdAUFTVVMVDYJAAIBAipleGFjdGx5IDEgVVNEVCBtdXN0IGJlIGF0dGFjaGVkIGFzIHBheW1lbnQDCQBnAgAABQhxdWFudGl0eQkAAgECG1F1YW50aXR5IHNob3VsZCBiZSBwb3NpdGl2ZQQLZHVja0Fzc2V0SWQJARN2YWx1ZU9yRXJyb3JNZXNzYWdlAgkAnQgCBQ9zdGFraW5nQ29udHJhY3QJARRrZXlTdGFrZWREdWNrQnlPd25lcgEJAKUIAQgFAWkGY2FsbGVyAhxZb3UgZG9uJ3QgaGF2ZSBhIGR1Y2sgc3Rha2VkBAtjdXJMb2NhdGlvbgkAtQkCCQELdmFsdWVPckVsc2UCCQCdCAIFD3N0YWtpbmdDb250cmFjdAkBD2tleUR1Y2tMb2NhdGlvbgEFC2R1Y2tBc3NldElkBQ9ERUZBVUxUTE9DQVRJT04CAV8DCQECIT0CCQCRAwIFC2N1ckxvY2F0aW9uBQpsb2NJZHhUeXBlAgFNCQACAQkArAICAjFEdWNrIGxvY2F0aW9uIHR5cGUgc2hvdWxkIGJlIE1hbnVmYWN0b3J5LCBidXQgaXMgCQCRAwIFC2N1ckxvY2F0aW9uBQpsb2NJZHhUeXBlBARjb250CQCRAwIFC2N1ckxvY2F0aW9uBQ9sb2NJZHhDb250aW5lbnQEC2N1cnJlbnRQYWNrCQELZ2V0QmFja3BhY2sBCQERa2V5QmFja3BhY2tCeUR1Y2sBBQtkdWNrQXNzZXRJZAQHbWF0TGlzdAkAtQkCCQCRAwIFC2N1cnJlbnRQYWNrBQhicElkeE1hdAIBXwMDCQBmAgAABQpwcm9kdWN0SWR4BgkAZwIFCnByb2R1Y3RJZHgJAJADAQUQcHJvZHVjdGlvbk1hdHJpeAkAAgEJAKwCAgIUVW5rbm93biBwcm9kdWN0IGlkeD0JAKQDAQUKcHJvZHVjdElkeAQGcmVjaXBlCQC1CQIJAJEDAgUQcHJvZHVjdGlvbk1hdHJpeAUKcHJvZHVjdElkeAIBXwMJAQIhPQIJAJADAQUGcmVj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2QQBBQtsYW5kQXNzZXRJZAMJAQEhAQkBCWlzRGVmaW5lZAEJAJoIAgUPc3Rha2luZ0NvbnRyYWN0CQEWa2V5U3Rha2VkVGltZUJ5QXNzZXRJZAEFC2xhbmRBc3NldElkCQACAQkArAICCQCsAgICBE5GVCAIBQVhc3NldARuYW1lAg4gaXMgbm90IHN0YWtlZAQFb3duZXIJARN2YWx1ZU9yRXJyb3JNZXNzYWdlAgkAnQgCBQ9zdGFraW5nQ29udHJhY3QJARVrZXlMYW5kQXNzZXRJZFRvT3duZXIBBQtsYW5kQXNzZXRJZAkArAICCQCsAgICBE5GVCAIBQVhc3NldARuYW1lAgwgaXMgb3JwaGFuZWQDAwkBAiE9AgUEdXNlcgUMcmVzdENvbnRyYWN0CQECIT0CBQVvd25lcgUEYWRkcgcJAAIBCQCsAgIFCkxBTkRQUkVGSVgCDSBpcyBub3QgeW91cnMECG5ld09yZGVyCQC8CQIFC25ld09yZGVyU3RyAgE6BAJ3aAkBCGFzU3RyaW5nAQkA/AcEBQ9zdGFraW5nQ29udHJhY3QCFGdldFdhcmVob3VzZVJFQURPTkxZCQDMCAIFC2xhbmRBc3NldElkBQNuaWwFA25pbAQJY3VycmVudFdoCQC8CQIFAndoAgE6BARsb2Z0CQC1CQIJAJEDAgUJY3VycmVudFdoBQl3aElkeExPRlQCAV8EB3doVG90YWwJAQ1wYXJzZUludFZhbHVlAQkAkQMCBQRsb2Z0BQh2b2xUb3RhbAQGb3JkS2V5CQEOa2V5T3JkZXJCeUxhbmQBBQtsYW5kQXNzZXRJZAQKY3VycmVudE9yZAkBCGdldE9yZGVyAQUGb3JkS2V5BAF6CQELc2V0SW50ZXJuYWwDBQljdXJyZW50V2gFCmN1cnJlbnRPcmQFCG5ld09yZGVyBAtidXlWb2xTYWxkbwgFAXoCXzQEDHNlbGxWb2xTYWxkbwgFAXoCXzUECndoT2NjdXBpZWQIBQF6Al83BAh3aExvY2tlZAkAZAIFC2J1eVZvbFNhbGRvBQxzZWxsVm9sU2FsZG8EBndoRnJlZQkAZQIJAGUCBQd3aFRvdGFsBQp3aE9jY3VwaWVkBQh3aExvY2tlZAMJAGYCAAAFBndoRnJlZQkAAgEJAKwCAgkArAICCQCsAgIJAKwCAgkArAICCQCsAgICE0F0dGVtcHQgdG8gcmVzZXJ2ZSAJAKQDAQULYnV5Vm9sU2FsZG8CGyBzcGFjZSBmb3IgYnV5IG9yZGVycywgYW5kIAkApAMBBQxzZWxsVm9sU2FsZG8CJSBzcGFjZSBmb3Igc2VsbCBvcmRlcnMgKGFuZCBvY2N1cGllZD0JAKQDAQUKd2hPY2N1cGllZAIfKSwgbGVhZHMgdG8gbmVnYXRpdmUgZnJlZSBzcGFjZQQFd2hTdHIJALoJAgkAzAgCCQCRAwIFCWN1cnJlbnRXaAULd2hJZHhMZXZlbHMJAMwIAgkAuQkCCAUBegJfMQIBXwkAzAgCCQC5CQIIBQF6Al8yAgFfCQDMCAIJALoJAggFAXoCXzMCAV8JAMwIAgkApAMBBQh3aExvY2tlZAUDbmlsAgE6BAZ3aFNhdmUJAQhhc1N0cmluZwEJAPwHBAUPc3Rha2luZ0NvbnRyYWN0Ag1zYXZlV2FyZWhvdXNlCQDMCAIFBXdoU3RyCQDMCAIFC2xhbmRBc3NldElkBQNuaWwFA25pbAQIdXNkU2FsZG8IBQF6Al82BAdhY3Rpb25zAwkAZgIFCHVzZFNhbGRvAAADCQECIT0CCQCQAwEIBQFpCHBheW1lbnRzAAEJAAIBAiJleGFjdGx5IDEgcGF5bWVudCBtdXN0IGJlIGF0dGFjaGVkBANwbXQJAJEDAggFAWkIcGF5bWVudHMAAAQDYW10CAUDcG10BmFtb3VudAQKcG10QXNzZXRJZAkBE3ZhbHVlT3JFcnJvck1lc3NhZ2UCCAUDcG10B2Fzc2V0SWQCHldBVkVTIGNhbid0IGJlIHVzZWQgYXMgcGF5bWVudAMJAQIhPQIFCnBtdEFzc2V0SWQFC3VzZHRBc3NldElkCQACAQITVVNEVCBwYXltZW50cyBvbmx5IQMJAQIhPQIFA2FtdAUIdXNkU2FsZG8JAAIBCQCsAgICElBheW1lbnQgbmVlZGVkIGlzIAkApAMBBQh1c2RTYWxkbwkAzAgCCQELU3RyaW5nRW50cnkCBQZvcmRLZXkFC25ld09yZGVyU3RyBQNuaWwDCQAAAgUIdXNkU2FsZG8AAAMJAQIhPQIJAJADAQgFAWkIcGF5bWVudHMAAAkAAgECEk5vIHBheW1lbnRzIG5lZWRlZAkAzAgCCQELU3RyaW5nRW50cnkCBQZvcmRLZXkFC25ld09yZGVyU3RyBQNuaWwDCQECIT0CCQCQAwEIBQFpCHBheW1lbnRzAAAJAAIBAhJObyBwYXltZW50cyBuZWVkZWQJAMwIAgkBDlNjcmlwdFRyYW5zZmVyAwkBEUBleHRyTmF0aXZlKDEwNjIpAQUFb3duZXIJAQEtAQUIdXNkU2FsZG8FC3VzZHRBc3NldElkCQDMCAIJAQtTdHJpbmdFbnRyeQIFBm9yZEtleQULbmV3T3JkZXJTdHIFA25pbAkAlAoCBQdhY3Rpb25zCQCUCgIFBnJlc3VsdAUGd2hTYXZlAWkBFGFjY2VwdFdhcmVob3VzZU9yZGVyAwpicE9yZGVyU3RyD3Nob3BMYW5kQXNzZXRJZAtkdWNrQXNzZXRJZAQMcHJvbG9nUmVzdWx0CQEGcHJvbG9nAAQGY2FsbGVyCAUBaQxvcmlnaW5DYWxsZXIECmNhbGxlckFkZHIJAKUIAQUGY2FsbGVyBBFzdGFrZWREdWNrQXNzZXRJZAkBE3ZhbHVlT3JFcnJvck1lc3NhZ2UCCQCdCAIFD3N0YWtpbmdDb250cmFjdAkBFGtleVN0YWtlZER1Y2tCeU93bmVyAQUKY2FsbGVyQWRkcgIcWW91IGRvbid0IGhhdmUgYSBkdWNrIHN0YWtlZAQLY3VyTG9jYXRpb24JAQt2YWx1ZU9yRWxzZQIJAJ0IAgUPc3Rha2luZ0NvbnRyYWN0CQEPa2V5RHVja0xvY2F0aW9uAQURc3Rha2VkRHVja0Fzc2V0SWQFD0RFRkFVTFRMT0NBVElPTgQDbG9jCQC1CQIJAQV2YWx1ZQEFC2N1ckxvY2F0aW9uAgFfAwkBAiE9AgkAkQMCBQNsb2MFCmxvY0lkeFR5cGUCAUwJAAIBCQCsAgIJAKwCAgIWRHVjayBsb2NhdGlvbiB0eXBlIGlzIAkAkQMCBQNsb2MFCmxvY0lkeFR5cGUCESwgYnV0IHNob3VsZCBiZSBMAwkBAiE9AgURc3Rha2VkRHVja0Fzc2V0SWQFC2R1Y2tBc3NldElkCQACAQkArAICCQCsAgIJAKwCAgIUWW91ciBzdGFrZWQgZHVjayBpcyAFEXN0YWtlZER1Y2tBc3NldElkAg0sIGJ1dCBwYXNzZWQgBQtkdWNrQXNzZXRJZAQFYnBLZXkJARFrZXlCYWNrcGFja0J5RHVjawEFC2R1Y2tBc3NldElkBAtjdXJyZW50UGFjawkBC2dldEJhY2twYWNrAQUFYnBLZXkECWJwUmVzTGlzdAkAtQkCCQCRAwIFC2N1cnJlbnRQYWNrBQhicElkeFJlcwIBXwQJYnBNYXRMaXN0CQC1CQIJAJEDAgULY3VycmVudFBhY2sFCGJwSWR4TWF0AgFfBApicFByb2RMaXN0AwkAAAIJAJEDAgULY3VycmVudFBhY2sFCWJwSWR4UHJvZAIABQNuaWwJALwJAgkAkQMCBQtjdXJyZW50UGFjawUJYnBJZHhQcm9kAgFfBA0kdDA1MzE0ODUzMzg4CQEVYWNjZXB0U2hvcE9yZGVyQ29tbW9uBgUPc2hvcExhbmRBc3NldElkBQpjYWxsZXJBZGRyBQpicE9yZGVyU3RyBQlicFJlc0xpc3QFCWJwTWF0TGlzdAUKYnBQcm9kTGlzdAQKc2hvcEFjdGlvbggFDSR0MDUzMTQ4NTMzODgCXzEECm5ld1VzZXJSZXMIBQ0kdDA1MzE0ODUzMzg4Al8yBApuZXdVc2VyTWF0CAUNJHQwNTMxNDg1MzM4OAJfMwQLbmV3VXNlclByb2QIBQ0kdDA1MzE0ODUzMzg4Al80BA11c2RXaDJCcFNhbGRvCAUNJHQwNTMxNDg1MzM4OAJfNQQNdXNkQnAyV2hTYWxkbwgFDSR0MDUzMTQ4NTMzODgCXzYECHhwQW1vdW50CAUNJHQwNTMxNDg1MzM4OAJfNwQNc2hvcExhbmRPd25lcggFDSR0MDUzMTQ4NTMzODgCXzgECnNob3BXaFNhdmUIBQ0kdDA1MzE0ODUzMzg4Al85BA5hY2NTdGF0c1Jlc3VsdAgFDSR0MDUzMTQ4NTMzODgDXzEwBAhhY3Rpb25zMQkAzAgCBQpzaG9wQWN0aW9uCQEQc2hvcDJ1c2VyQWN0aW9ucwMFDXVzZFdoMkJwU2FsZG8FCmNhbGxlckFkZHIAAAQIYWN0aW9uczIJARB1c2VyMnNob3BBY3Rpb25zBAUNdXNkQnAyV2hTYWxkbwgFAWkIcGF5bWVudHMFDXNob3BMYW5kT3duZXIAAAQIbmV3QnBTdHIJALoJAgkAzAgCCQCRAwIFC2N1cnJlbnRQYWNrBQpicElkeExldmVsCQDMCAIJALkJAgUKbmV3VXNlclJlcwIBXwkAzAgCCQC5CQIFCm5ld1VzZXJNYXQCAV8JAMwIAgkAugkCBQtuZXdVc2VyUHJvZAIBXwUDbmlsAgE6BAZicFNhdmUJAQhhc1N0cmluZwEJAPwHBAUPc3Rha2luZ0NvbnRyYWN0Ag51cGRhdGVCYWNrcGFjawkAzAgCBQtkdWNrQXNzZXRJZAkAzAgCBQhuZXdCcFN0cgUDbmlsBQNuaWwED2R1Y2tTdGF0c1Jlc3VsdAkBBWFzSW50AQkA/AcEBQ9zdGFraW5nQ29udHJhY3QCD3VwZGF0ZUR1Y2tTdGF0cwkAzAgCBQtkdWNrQXNzZXRJZAkAzAgCCQBrAwUGeHBTaG9wBQh4cEFtb3VudAUFTVVMVDgFA25pbAUDbmlsCQCUCgIJAM4IAgUIYWN0aW9uczEFCGFjdGlvbnMyCQCXCgUFDHByb2xvZ1Jlc3VsdAUKc2hvcFdoU2F2ZQUGYnBTYXZlBQ9kdWNrU3RhdHNSZXN1bHQFDmFjY1N0YXRzUmVzdWx0AWkBG2FjY2VwdFNob3BPcmRlckR1Y2tEZWxpdmVyeQIIb3JkZXJTdHIPc2hvcExhbmRBc3NldElkAwkBASEBBRFLU19BTExPV19ERUxJVkVSWQkAAgECH0RlbGl2ZXJ5IGZlYXR1cmUgaXMgdHVybmVkIG9mZiEEDHByb2xvZ1Jlc3VsdAkBBnByb2xvZwAEBmNhbGxlcggFAWkMb3JpZ2luQ2FsbGVyBApjYWxsZXJBZGRyCQClCAEFBmNhbGxlcgQLZHVja0Fzc2V0SWQJARN2YWx1ZU9yRXJyb3JNZXNzYWdlAgkAnQgCBQ9zdGFraW5nQ29udHJhY3QJARRrZXlTdGFrZWREdWNrQnlPd25lcgEFCmNhbGxlckFkZHICHFlvdSBkb24ndCBoYXZlIGEgZHVjayBzdGFrZWQEBWJwS2V5CQERa2V5QmFja3BhY2tCeUR1Y2sBBQtkdWNrQXNzZXRJZAQLY3VycmVudFBhY2sJAQtnZXRCYWNrcGFjawEFBWJwS2V5BAlicFJlc0xpc3QJALUJAgkAkQMCBQtjdXJyZW50UGFjawUIYnBJZHhSZXMCAV8ECWJwTWF0TGlzdAkAtQkCCQCRAwIFC2N1cnJlbnRQYWNrBQhicElkeE1hdAIBXwQKYnBQcm9kTGlzdAMJAAACCQCRAwIFC2N1cnJlbnRQYWNrBQlicElkeFByb2QCAAUDbmlsCQC8CQIJAJEDAgULY3VycmVudFBhY2sFCWJwSWR4UHJvZAIBXwQNJHQwNTQ4Mjc1NTA2NQkBFWFjY2VwdFNob3BPcmRlckNvbW1vbgYFD3Nob3BMYW5kQXNzZXRJZAUKY2FsbGVyQWRkcgUIb3JkZXJTdHIFCWJwUmVzTGlzdAUJYnBNYXRMaXN0BQpicFByb2RMaXN0BApzaG9wQWN0aW9uCAUNJHQwNTQ4Mjc1NTA2NQJfMQQKbmV3VXNlclJlcwgFDSR0MDU0ODI3NTUwNjUCXzIECm5ld1VzZXJNYXQIBQ0kdDA1NDgyNzU1MDY1Al8zBAtuZXdVc2VyUHJvZAgFDSR0MDU0ODI3NTUwNjUCXzQEDXVzZFdoMkJwU2FsZG8IBQ0kdDA1NDgyNzU1MDY1Al81BA11c2RCcDJXaFNhbGRvCAUNJHQwNTQ4Mjc1NTA2NQJfNgQIeHBBbW91bnQIBQ0kdDA1NDgyNzU1MDY1Al83BA1zaG9wTGFuZE93bmVyCAUNJHQwNTQ4Mjc1NTA2NQJfOAQKc2hvcFdoU2F2ZQgFDSR0MDU0ODI3NTUwNjUCXzkEDmFjY1N0YXRzUmVzdWx0CAUNJHQwNTQ4Mjc1NTA2NQNfMTAED2RlbGl2ZXJ5RmVlUGFydAkAawMJAGQCBQ11c2RCcDJXaFNhbGRvBQ11c2RXaDJCcFNhbGRvBQxERUxJVkVSWV9GRUUFBU1VTFQ2BAtkZWxpdmVyeUZlZQMJAGYCBRVNSU5fVVNEVF9GRUVfREVMSVZFUlkFD2RlbGl2ZXJ5RmVlUGFydAUVTUlOX1VTRFRfRkVFX0RFTElWRVJZBQ9kZWxpdmVyeUZlZVBhcnQECHNwZW50RmVlCQBrAwULZGVsaXZlcnlGZWUFDXVzZEJwMldoU2FsZG8JAGQCBQ11c2RCcDJXaFNhbGRvBQ11c2RXaDJCcFNhbGRvBAtyZWNlaXZlZEZlZQkAZQIFC2RlbGl2ZXJ5RmVlBQhzcGVudEZlZQQJZnVuZFRvdGFsCQELdmFsdWVPckVsc2UCCQCfCAEFD2RlbGl2ZXJ5RnVuZEtleQAABAhhY3Rpb25zMQkAzAgCBQpzaG9wQWN0aW9uCQEQc2hvcDJ1c2VyQWN0aW9ucwMFDXVzZFdoMkJwU2FsZG8FCmNhbGxlckFkZHIFC3JlY2VpdmVkRmVlBAhhY3Rpb25zMgkBEHVzZXIyc2hvcEFjdGlvbnMEBQ11c2RCcDJXaFNhbGRvCAUBaQhwYXltZW50cwUNc2hvcExhbmRPd25lcgUIc3BlbnRGZWUECG5ld0JwU3RyCQC6CQIJAMwIAgkAkQMCBQtjdXJyZW50UGFjawUKYnBJZHhMZXZlbAkAzAgCCQC5CQIFCm5ld1VzZXJSZXMCAV8JAMwIAgkAuQkCBQpuZXdVc2VyTWF0AgFfCQDMCAIJALoJAgULbmV3VXNlclByb2QCAV8FA25pbAIBOgQGYnBTYXZlCQEIYXNTdHJpbmcBCQD8BwQFD3N0YWtpbmdDb250cmFjdAIOdXBkYXRlQmFja3BhY2sJAMwIAgULZHVja0Fzc2V0SWQJAMwIAgUIbmV3QnBTdHIFA25pbAUDbmlsBA9kdWNrU3RhdHNSZXN1bHQJAQVhc0ludAEJAPwHBAUPc3Rha2luZ0NvbnRyYWN0Ag91cGRhdGVEdWNrU3RhdHMJAMwIAgULZHVja0Fzc2V0SWQJAMwIAgkAawMFBnhwU2hvcAUIeHBBbW91bnQFBU1VTFQ4BQNuaWwFA25pbAkAlAoCCQDNCAIJAM4IAgUIYWN0aW9uczEFCGFjdGlvbnMyCQEMSW50ZWdlckVudHJ5AgUPZGVsaXZlcnlGdW5kS2V5CQBkAgUJZnVuZFRvdGFsBQtkZWxpdmVyeUZlZQkAlwoFBQxwcm9sb2dSZXN1bHQFCnNob3BXaFNhdmUFBmJwU2F2ZQUPZHVja1N0YXRzUmVzdWx0BQ5hY2NTdGF0c1Jlc3VsdAFpARthY2NlcHRTaG9wT3JkZXJMYW5kRGVsaXZlcnkDCG9yZGVyU3RyD3Nob3BMYW5kQXNzZXRJZA1teUxhbmRBc3NldElkAwkBASEBBRFLU19BTExPV19ERUxJVkVSWQkAAgECH0RlbGl2ZXJ5IGZlYXR1cmUgaXMgdHVybmVkIG9mZiEEDHByb2xvZ1Jlc3VsdAkBBnByb2xvZwAEBmNhbGxlcggFAWkMb3JpZ2luQ2FsbGVyBApjYWxsZXJBZGRyCQClCAEFBmNhbGxlcgQFYXNzZXQJAQV2YWx1ZQEJAOwHAQkA2QQBBQ1teUxhbmRBc3NldElkAwkBASEBCQEJaXNEZWZpbmVkAQkAmggCBQ9zdGFraW5nQ29udHJhY3QJARZrZXlTdGFrZWRUaW1lQnlBc3NldElkAQUNbXlMYW5kQXNzZXRJZAkAAgEJAKwCAgkArAICAgRORlQgCAUFYXNzZXQEbmFtZQIOIGlzIG5vdCBzdGFrZWQEBW93bmVyCQETdmFsdWVPckVycm9yTWVzc2FnZQIJAJ0IAgUPc3Rha2luZ0NvbnRyYWN0CQEVa2V5TGFuZEFzc2V0SWRUb093bmVyAQUNbXlMYW5kQXNzZXRJZAkArAICCQCsAgICBE5GVCAIBQVhc3NldARuYW1lAgwgaXMgb3JwaGFuZWQDCQECIT0CBQVvd25lcgUKY2FsbGVyQWRkcgkAAgEJAKwCAgUKTEFORFBSRUZJWAINIGlzIG5vdCB5b3VycwQCd2gJAQhhc1N0cmluZwEJAPwHBAUPc3Rha2luZ0NvbnRyYWN0AhRnZXRXYXJlaG91c2VSRUFET05MWQkAzAgCBQ1teUxhbmRBc3NldElkBQNuaWwFA25pbAQJY3VycmVudFdoCQC8CQIFAndoAgE6BAdyZXNMaXN0CQC1CQIJAJEDAgUJY3VycmVudFdoBQh3aElkeFJlcwIBXwQHbWF0TGlzdAkAtQkCCQCRAwIFCWN1cnJlbnRXaAUId2hJZHhNYXQCAV8ECHByb2RMaXN0AwkAAAIJAJEDAgUJY3VycmVudFdoBQl3aElkeFByb2QCAAUDbmlsCQC1CQIJAJEDAgUJY3VycmVudFdoBQl3aElkeFByb2QCAV8EDSR0MDU3MzA0NTc1MzYJARVhY2NlcHRTaG9wT3JkZXJDb21tb24GBQ9zaG9wTGFuZEFzc2V0SWQFCmNhbGxlckFkZHIFCG9yZGVyU3RyBQdyZXNMaXN0BQdtYXRMaXN0BQhwcm9kTGlzdAQKc2hvcEFjdGlvbggFDSR0MDU3MzA0NTc1MzYCXzEECm5ld1VzZXJSZXMIBQ0kdDA1NzMwNDU3NTM2Al8yBApuZXdVc2VyTWF0CAUNJHQwNTczMDQ1NzUzNgJfMwQLbmV3VXNlclByb2QIBQ0kdDA1NzMwNDU3NTM2Al80BA11c2RXaDJCcFNhbGRvCAUNJHQwNTczMDQ1NzUzNgJfNQQNdXNkQnAyV2hTYWxkbwgFDSR0MDU3MzA0NTc1MzYCXzYECHhwQW1vdW50CAUNJHQwNTczMDQ1NzUzNgJfNwQNc2hvcExhbmRPd25lcggFDSR0MDU3MzA0NTc1MzYCXzgECnNob3BXaFNhdmUIBQ0kdDA1NzMwNDU3NTM2Al85BA5hY2NTdGF0c1Jlc3VsdAgFDSR0MDU3MzA0NTc1MzYDXzEwBA9kZWxpdmVyeUZlZVBhcnQJAGsDCQBkAgUNdXNkQnAyV2hTYWxkbwUNdXNkV2gyQnBTYWxkbwUMREVMSVZFUllfRkVFBQVNVUxUNgQLZGVsaXZlcnlGZWUDCQBmAgUVTUlOX1VTRFRfRkVFX0RFTElWRVJZBQ9kZWxpdmVyeUZlZVBhcnQFFU1JTl9VU0RUX0ZFRV9ERUxJVkVSWQUPZGVsaXZlcnlGZWVQYXJ0BAhzcGVudEZlZQkAawMFC2RlbGl2ZXJ5RmVlBQ11c2RCcDJXaFNhbGRvCQBkAgUNdXNkQnAyV2hTYWxkbwUNdXNkV2gyQnBTYWxkbwQLcmVjZWl2ZWRGZWUJAGUCBQtkZWxpdmVyeUZlZQUIc3BlbnRGZWUECWZ1bmRUb3RhbAkBC3ZhbHVlT3JFbHNlAgkAnwgBBQ9kZWxpdmVyeUZ1bmRLZXkAAAQIYWN0aW9uczEJAMwIAgUKc2hvcEFjdGlvbgkBEHNob3AydXNlckFjdGlvbnMDBQ11c2RXaDJCcFNhbGRvBQpjYWxsZXJBZGRyBQtyZWNlaXZlZEZlZQQIYWN0aW9uczIJARB1c2VyMnNob3BBY3Rpb25zBAUNdXNkQnAyV2hTYWxkbwgFAWkIcGF5bWVudHMFDXNob3BMYW5kT3duZXIFCHNwZW50RmVlBAV3aFN0cgkAugkCCQDMCAIJAJEDAgUJY3VycmVudFdoBQt3aElkeExldmVscwkAzAgCCQC5CQIFCm5ld1VzZXJSZXMCAV8JAMwIAgkAuQkCBQpuZXdVc2VyTWF0AgFfCQDMCAIJALkJAgULbmV3VXNlclByb2QCAV8JAMwIAgkAkQMCBQljdXJyZW50V2gFCXdoSWR4TE9GVAUDbmlsAgE6BAZ3aFNhdmUJAQhhc1N0cmluZwEJAPwHBAUPc3Rha2luZ0NvbnRyYWN0Ag1zYXZlV2FyZWhvdXNlCQDMCAIFBXdoU3RyCQDMCAIFDW15TGFuZEFzc2V0SWQFA25pbAUDbmlsBAtzdGF0c1Jlc3VsdAkBBWFzSW50AQkA/AcEBQ9zdGFraW5nQ29udHJhY3QCDnVwZGF0ZUFjY1N0YXRzCQDMCAIFCmNhbGxlckFkZHIJAMwIAgkAawMFBnhwU2hvcAUIeHBBbW91bnQFBU1VTFQ4BQNuaWwFA25pbAkAlAoCCQDNCAIJAM4IAgUIYWN0aW9uczEFCGFjdGlvbnMyCQEMSW50ZWdlckVudHJ5AgUPZGVsaXZlcnlGdW5kS2V5CQBkAgUJZnVuZFRvdGFsBQtkZWxpdmVyeUZlZQkAlwoFBQxwcm9sb2dSZXN1bHQFCnNob3BXaFNhdmUFBndoU2F2ZQULc3RhdHNSZXN1bHQFDmFjY1N0YXRzUmVzdWx0AWkBEHNlbGxQcm9kdWN0c1RvRVMBB2Ftb3VudHMEDHByb2xvZ1Jlc3VsdAkBBnByb2xvZwADCQECIT0CCQCQAwEIBQFpCHBheW1lbnRzAAAJAAIBAhJObyBwYXltZW50cyBuZWVkZWQEC2R1Y2tBc3NldElkCQETdmFsdWVPckVycm9yTWVzc2FnZQIJAJ0IAgUPc3Rha2luZ0NvbnRyYWN0CQEUa2V5U3Rha2VkRHVja0J5T3duZXIBCQClCAEIBQFpBmNhbGxlcgIcWW91IGRvbid0IGhhdmUgYSBkdWNrIHN0YWtlZAQLY3VyTG9jYXRpb24JALUJAgkBC3ZhbHVlT3JFbHNlAgkAnQgCBQ9zdGFraW5nQ29udHJhY3QJAQ9rZXlEdWNrTG9jYXRpb24BBQtkdWNrQXNzZXRJZAUPREVGQVVMVExPQ0FUSU9OAgFfAwkBAiE9AgkAkQMCBQtjdXJMb2NhdGlvbgUKbG9jSWR4VHlwZQIBQQkAAgEJAKwCAgItRHVjayBsb2NhdGlvbiB0eXBlIHNob3VsZCBiZSBBaXJwb3J0LCBidXQgaXMgCQCRAwIFC2N1ckxvY2F0aW9uBQpsb2NJZHhUeXBlBAtjdXJyZW50UGFjawkBC2dldEJhY2twYWNrAQkBEWtleUJhY2twYWNrQnlEdWNrAQULZHVja0Fzc2V0SWQECHByb2RMaXN0AwkAAAIJAJEDAgULY3VycmVudFBhY2sFCWJwSWR4UHJvZAIABQNuaWwJALwJAgkAkQMCBQtjdXJyZW50UGFjawUJYnBJZHhQcm9kAgFfBAVlc0tleQkBDmtleUVzV2FyZWhvdXNlAAQIZXhpc3RTdHIJAKIIAQUFZXNLZXkEDGV4aXN0QW1vdW50cwMJAQlpc0RlZmluZWQBBQhleGlzdFN0cgkAvAkCCQEFdmFsdWUBBQhleGlzdFN0cgIBXwUDbmlsCgEIbW92ZVByb2QCA2FjYwlyZWNpcGVTdHIEAWoIBQNhY2MCXzEECHF1YW50aXR5AwkAZgIJAJADAQUHYW1vdW50cwUBagkAkQMCBQdhbW91bnRzBQFqAAADCQBmAgAABQhxdWFudGl0eQkAAgECG1F1YW50aXR5IGNhbm5vdCBiZSBuZWdhdGl2ZQQGcmVjaXBlCQC1CQIFCXJlY2lwZVN0cgIBXwMJAQIhPQIJAJADAQUGcmVjaXBlBQpSRUNJUEVTSVpFCQACAQkArAICAhdGYXRhbDogdW5rbm93biByZWNpcGU6IAUJcmVjaXBlU3RyBAltYXhBbW91bnQJAGgCBQ1FU01BWFBBQ0tBR0VTBQ5QUk9EVUNUUEtHU0laRQQLZXhpc3RBbW91bnQDCQBmAgkAkAMBBQxleGlzdEFtb3VudHMFAWoJAQ1wYXJzZUludFZhbHVlAQkAkQMCBQxleGlzdEFtb3VudHMFAWoAAAQGY2FuQnV5CQBlAgUJbWF4QW1vdW50BQtleGlzdEFtb3VudAMJAGYCBQhxdWFudGl0eQUGY2FuQnV5CQACAQkArAICCQCsAgIJAKwCAgIXV2FyZWhvdXNlIGNhbiBidXkgb25seSAJAKQDAQUGY2FuQnV5AgQgb2YgCQCRAwIFCXByb2RUeXBlcwUBagQIdG90YWxNYXQJARJnZXRSZWNpcGVNYXRlcmlhbHMBBQZyZWNpcGUECXVuaXRQcmljZQkAawMJAGgCBQh0b3RhbE1hdAUJRVNCVVlDT0VGBRBSRVNPVVJDRVBSSUNFTUlOCQBoAgUFTVVMVDgFDlBST0RVQ1RQS0dTSVpFBAxicFByb2RBbW91bnQDCQBmAgkAkAMBBQhwcm9kTGlzdAUBagkBDXBhcnNlSW50VmFsdWUBCQCRAwIFCHByb2RMaXN0BQFqAAADCQBmAgUIcXVhbnRpdHkFDGJwUHJvZEFtb3VudAkAAgEJAKwCAgkArAICCQCsAgICDllvdSBoYXZlIG9ubHkgCQCkAwEFDGJwUHJvZEFtb3VudAIEIG9mIAkAkQMCBQlwcm9kVHlwZXMFAWoJAJcKBQkAZAIFAWoAAQkAZAIIBQNhY2MCXzIJAGgCBQl1bml0UHJpY2UFCHF1YW50aXR5CQDNCAIIBQNhY2MCXzMJAKQDAQkAZQIFDGJwUHJvZEFtb3VudAUIcXVhbnRpdHkJAM0IAggFA2FjYwJfNAkApAMBCQBkAgULZXhpc3RBbW91bnQFCHF1YW50aXR5CQBkAggFA2FjYwJfNQkAaAIFCHRvdGFsTWF0BQhxdWFudGl0eQQGbWVyZ2VkCgACJGwFEHByb2R1Y3Rpb25NYXRyaXgKAAIkcwkAkAMBBQIkbAoABSRhY2MwCQCXCgUAAAAABQNuaWwFA25pbAAACgEFJGYwXzECAiRhAiRpAwkAZwIFAiRpBQIkcwUCJGEJAQhtb3ZlUHJvZAIFAiRhCQCRAwIFAiRsBQIkaQoBBSRmMF8yAgIkYQIkaQMJAGcCBQIkaQUCJHMFAiRhCQACAQIUTGlzdCBzaXplIGV4Y2VlZHMgNTAJAQUkZjBfMgIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIFBSRhY2MwAAAAAQACAAMABAAFAAYABwAIAAkACgALAAwADQAOAA8AEAARABIAEwAUABUAFgAXABgAGQAaABsAHAAdAB4AHwAgACEAIgAjACQAJQAmACcAKAApACoAKwAsAC0ALgAvADAAMQAyBAhuZXdCcFN0cgkAugkCCQDMCAIJAJEDAgULY3VycmVudFBhY2sFCmJwSWR4TGV2ZWwJAMwIAgkAkQMCBQtjdXJyZW50UGFjawUIYnBJZHhSZXMJAMwIAgkAkQMCBQtjdXJyZW50UGFjawUIYnBJZHhNYXQJAMwIAgkAugkCCAUGbWVyZ2VkAl8zAgFfBQNuaWwCAToEBmJwU2F2ZQkBCGFzU3RyaW5nAQkA/AcEBQ9zdGFraW5nQ29udHJhY3QCDnVwZGF0ZUJhY2twYWNrCQDMCAIFC2R1Y2tBc3NldElkCQDMCAIFCG5ld0JwU3RyBQNuaWwFA25pbAQLc3RhdHNSZXN1bHQJAQVhc0ludAEJAPwHBAUPc3Rha2luZ0NvbnRyYWN0Ag91cGRhdGVEdWNrU3RhdHMJAMwIAgULZHVja0Fzc2V0SWQJAMwIAgkAawMFCnhwU2VsbFRvRXMIBQZtZXJnZWQCXzUJAGgCBQVNVUxUOAAKBQNuaWwFA25pbAkAlAoCCQDMCAIJAQtTdHJpbmdFbnRyeQIFBWVzS2V5CQC6CQIIBQZtZXJnZWQCXzQCAV8JAMwIAgkBDlNjcmlwdFRyYW5zZmVyAwgFAWkGY2FsbGVyCAUGbWVyZ2VkAl8yBQt1c2R0QXNzZXRJZAUDbmlsCQCVCgMFBmJwU2F2ZQUMcHJvbG9nUmVzdWx0BQtzdGF0c1Jlc3VsdAFpAQ91cGRhdGVFc1N0b3JhZ2UBCm5ld1N0b3JhZ2UDCQECIT0CCAUBaQZjYWxsZXIFD3N0YWtpbmdDb250cmFjdAkAAgECEVBlcm1pc3Npb24gZGVuaWVkCQCUCgIJAMwIAgkBC1N0cmluZ0VudHJ5AgkBDmtleUVzV2FyZWhvdXNlAAUKbmV3U3RvcmFnZQUDbmlsBQpuZXdTdG9yYWdlAWkBFHVwZGF0ZURlbGl2ZXJ5TG9ja2VkAQluZXdBbW91bnQDCQECIT0CCAUBaQZjYWxsZXIFD3N0YWtpbmdDb250cmFjdAkAAgECEVBlcm1pc3Npb24gZGVuaWVkCQCUCgIJAMwIAgkBDEludGVnZXJFbnRyeQIFEWRlbGl2ZXJ5TG9ja2VkS2V5BQluZXdBbW91bnQFA25pbAUJbmV3QW1vdW50AWkBEnNlbmREZWxpdmVyeVJld2FyZAEEYWRkcgMJAQIhPQIIBQFpBmNhbGxlcgUPc3Rha2luZ0NvbnRyYWN0CQACAQIRUGVybWlzc2lvbiBkZW5pZWQECWZ1bmRUb3RhbAkBC3ZhbHVlT3JFbHNlAgkAnwgBBQ9kZWxpdmVyeUZ1bmRLZXkAAAQLbG9ja2VkVG90YWwJAQt2YWx1ZU9yRWxzZQIJAJ8IAQURZGVsaXZlcnlMb2NrZWRLZXkAAAkAlAoCCQDMCAIJAQ5TY3JpcHRUcmFuc2ZlcgMJARFAZXh0ck5hdGl2ZSgxMDYyKQEFBGFkZHIFFU1JTl9VU0RUX0ZFRV9ERUxJVkVSWQULdXNkdEFzc2V0SWQJAMwIAgkBDEludGVnZXJFbnRyeQIFD2RlbGl2ZXJ5RnVuZEtleQkAZQIFCWZ1bmRUb3RhbAUVTUlOX1VTRFRfRkVFX0RFTElWRVJZCQDMCAIJAQxJbnRlZ2VyRW50cnkCBRFkZWxpdmVyeUxvY2tlZEtleQkAZQIFC2xvY2tlZFRvdGFsBRVNSU5fVVNEVF9GRUVfREVMSVZFUlkFA25pbAUVTUlOX1VTRFRfRkVFX0RFTElWRVJZACq43xA=", "height": 2778415, "applicationStatus": "succeeded", "spentComplexity": 0 } View: original | compacted Prev: DvVvyG9sqjPTU9da2MW29vLvDsT3PB8anjZd2Xqp6TnB Next: CFCvr7Be2F22wqM8hoaisFpj9fxdubE8Kyu98mxqVrAB Diff:
OldNewDifferences
104104 func Z (aa) = (parseIntValue(aa[s]) * q)
105105
106106
107-let ab = true
107+let ab = false
108108
109109 let ac = take(drop(this.bytes, 1), 1)
110110
10951095
10961096
10971097 @Callable(dW)
1098-func exchangeResourcesDuckDelivery (cL) = {
1099- let dZ = bE()
1100- let S = valueOrErrorMessage(getString(aB, P(toString(dW.caller))), "You don't have a duck staked")
1101- if ((size(dW.payments) != 1))
1102- then throw("exactly 1 payment must be attached")
1103- else {
1104- let dj = dW.payments[0]
1105- let dk = dj.amount
1106- if (if (!(isDefined(dj.assetId)))
1107- then true
1108- else (value(dj.assetId) != ad))
1109- then throw("USDT payments only!")
1110- else {
1111- let eb = bB(R(S))
1112- let cJ = split(eb[E], "_")
1113- let cQ = split(eb[F], "_")
1114- let ex = cT(cJ, cQ, cL)
1115- let ed = ex._1
1116- let er = ex._2
1117- let bz = ex._3
1118- let ew = ex._4
1119- let ek = fraction(bz, aV, ai)
1120- let dT = if ((l > ek))
1121- then l
1122- else ek
1123- let dl = (bz + dT)
1124- if ((dl > dk))
1125- then throw((((((("Insufficient payment! Attached=" + aK(dk, 6)) + ", required=") + aK(bz, 6)) + "+") + aK(dT, 6)) + "(delivery fee)"))
1126- else {
1127- let ee = makeString([eb[D], makeString(ed, "_"), makeString(er, "_"), eb[G]], ":")
1128- let ef = aE(invoke(aB, "updateBackpack", [S, ee], nil))
1129- let aw = if (((dk - dl) > 0))
1130- then [ScriptTransfer(dW.caller, (dk - dl), ad)]
1131- else nil
1132- let dU = (bz / 100)
1133- let eg = aH(invoke(aB, "updateDuckStats", [S, fraction(a, ew, aj)], nil))
1134- let el = valueOrElse(getInteger(X), 0)
1135- $Tuple2(((aw :+ ScriptTransfer(aA, dU, ad)) :+ IntegerEntry(X, (el + dT))), $Tuple3(ef, dZ, eg))
1136- }
1137- }
1138- }
1139- }
1098+func exchangeResourcesDuckDelivery (cL) = if (!(ab))
1099+ then throw("Delivery feature is turned off!")
1100+ else {
1101+ let dZ = bE()
1102+ let S = valueOrErrorMessage(getString(aB, P(toString(dW.caller))), "You don't have a duck staked")
1103+ if ((size(dW.payments) != 1))
1104+ then throw("exactly 1 payment must be attached")
1105+ else {
1106+ let dj = dW.payments[0]
1107+ let dk = dj.amount
1108+ if (if (!(isDefined(dj.assetId)))
1109+ then true
1110+ else (value(dj.assetId) != ad))
1111+ then throw("USDT payments only!")
1112+ else {
1113+ let eb = bB(R(S))
1114+ let cJ = split(eb[E], "_")
1115+ let cQ = split(eb[F], "_")
1116+ let ex = cT(cJ, cQ, cL)
1117+ let ed = ex._1
1118+ let er = ex._2
1119+ let bz = ex._3
1120+ let ew = ex._4
1121+ let ek = fraction(bz, aV, ai)
1122+ let dT = if ((l > ek))
1123+ then l
1124+ else ek
1125+ let dl = (bz + dT)
1126+ if ((dl > dk))
1127+ then throw((((((("Insufficient payment! Attached=" + aK(dk, 6)) + ", required=") + aK(bz, 6)) + "+") + aK(dT, 6)) + "(delivery fee)"))
1128+ else {
1129+ let ee = makeString([eb[D], makeString(ed, "_"), makeString(er, "_"), eb[G]], ":")
1130+ let ef = aE(invoke(aB, "updateBackpack", [S, ee], nil))
1131+ let aw = if (((dk - dl) > 0))
1132+ then [ScriptTransfer(dW.caller, (dk - dl), ad)]
1133+ else nil
1134+ let dU = (bz / 100)
1135+ let eg = aH(invoke(aB, "updateDuckStats", [S, fraction(a, ew, aj)], nil))
1136+ let el = valueOrElse(getInteger(X), 0)
1137+ $Tuple2(((aw :+ ScriptTransfer(aA, dU, ad)) :+ IntegerEntry(X, (el + dT))), $Tuple3(ef, dZ, eg))
1138+ }
1139+ }
1140+ }
1141+ }
11401142
11411143
11421144
11431145 @Callable(dW)
1144-func exchangeResourcesLandDelivery (cL,V) = {
1145- let dZ = bE()
1146- if ((size(dW.payments) != 1))
1147- then throw("exactly 1 payment must be attached")
1148- else {
1149- let dj = dW.payments[0]
1150- let dk = dj.amount
1151- if (if (!(isDefined(dj.assetId)))
1152- then true
1153- else (value(dj.assetId) != ad))
1154- then throw("USDT payments only!")
1155- else {
1156- let em = dW.caller
1157- let O = toString(em)
1158- let en = value(assetInfo(fromBase58String(V)))
1159- if (!(isDefined(getInteger(aB, M(V)))))
1160- then throw((("NFT " + en.name) + " is not staked"))
1161- else {
1162- let eo = valueOrErrorMessage(getString(aB, K(V)), (("NFT " + en.name) + " is orphaned"))
1163- if ((eo != O))
1164- then throw((e + " is not yours"))
1165- else {
1166- let dy = aE(invoke(aB, "getWarehouseREADONLY", [V], nil))
1167- let bX = split_4C(dy, ":")
1168- let cJ = split(bX[x], "_")
1169- let cQ = split(bX[y], "_")
1170- let ey = cT(cJ, cQ, cL)
1171- let ed = ey._1
1172- let er = ey._2
1173- let bz = ey._3
1174- let ew = ey._4
1175- let dG = makeString_2C([bX[w], makeString(ed, "_"), makeString(er, "_"), bX[z], bX[A]], ":")
1176- let dI = aE(invoke(aB, "saveWarehouse", [dG, V], nil))
1177- let eg = aH(invoke(aB, "updateAccStats", [O, fraction(a, ew, aj)], nil))
1178- let ek = fraction(bz, aV, ai)
1179- let dT = if ((l > ek))
1180- then l
1181- else ek
1182- let dl = (bz + dT)
1183- if ((dl > dk))
1184- then throw((((((("Insufficient payment! Attached=" + aK(dk, 6)) + ", required=") + aK(bz, 6)) + "+") + aK(dT, 6)) + "(delivery fee)"))
1185- else {
1186- let aw = if (((dk - dl) > 0))
1187- then [ScriptTransfer(dW.caller, (dk - dl), ad)]
1188- else nil
1189- let dU = (bz / 100)
1190- let el = valueOrElse(getInteger(X), 0)
1191- $Tuple2(((aw :+ ScriptTransfer(aA, dU, ad)) :+ IntegerEntry(X, (el + dT))), $Tuple3(dI, dZ, eg))
1192- }
1193- }
1194- }
1195- }
1196- }
1197- }
1146+func exchangeResourcesLandDelivery (cL,V) = if (!(ab))
1147+ then throw("Delivery feature is turned off!")
1148+ else {
1149+ let dZ = bE()
1150+ if ((size(dW.payments) != 1))
1151+ then throw("exactly 1 payment must be attached")
1152+ else {
1153+ let dj = dW.payments[0]
1154+ let dk = dj.amount
1155+ if (if (!(isDefined(dj.assetId)))
1156+ then true
1157+ else (value(dj.assetId) != ad))
1158+ then throw("USDT payments only!")
1159+ else {
1160+ let em = dW.caller
1161+ let O = toString(em)
1162+ let en = value(assetInfo(fromBase58String(V)))
1163+ if (!(isDefined(getInteger(aB, M(V)))))
1164+ then throw((("NFT " + en.name) + " is not staked"))
1165+ else {
1166+ let eo = valueOrErrorMessage(getString(aB, K(V)), (("NFT " + en.name) + " is orphaned"))
1167+ if ((eo != O))
1168+ then throw((e + " is not yours"))
1169+ else {
1170+ let dy = aE(invoke(aB, "getWarehouseREADONLY", [V], nil))
1171+ let bX = split_4C(dy, ":")
1172+ let cJ = split(bX[x], "_")
1173+ let cQ = split(bX[y], "_")
1174+ let ey = cT(cJ, cQ, cL)
1175+ let ed = ey._1
1176+ let er = ey._2
1177+ let bz = ey._3
1178+ let ew = ey._4
1179+ let dG = makeString_2C([bX[w], makeString(ed, "_"), makeString(er, "_"), bX[z], bX[A]], ":")
1180+ let dI = aE(invoke(aB, "saveWarehouse", [dG, V], nil))
1181+ let eg = aH(invoke(aB, "updateAccStats", [O, fraction(a, ew, aj)], nil))
1182+ let ek = fraction(bz, aV, ai)
1183+ let dT = if ((l > ek))
1184+ then l
1185+ else ek
1186+ let dl = (bz + dT)
1187+ if ((dl > dk))
1188+ then throw((((((("Insufficient payment! Attached=" + aK(dk, 6)) + ", required=") + aK(bz, 6)) + "+") + aK(dT, 6)) + "(delivery fee)"))
1189+ else {
1190+ let aw = if (((dk - dl) > 0))
1191+ then [ScriptTransfer(dW.caller, (dk - dl), ad)]
1192+ else nil
1193+ let dU = (bz / 100)
1194+ let el = valueOrElse(getInteger(X), 0)
1195+ $Tuple2(((aw :+ ScriptTransfer(aA, dU, ad)) :+ IntegerEntry(X, (el + dT))), $Tuple3(dI, dZ, eg))
1196+ }
1197+ }
1198+ }
1199+ }
1200+ }
1201+ }
11981202
11991203
12001204
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 = 10
2121
2222 let j = 4
2323
2424 let k = 50000
2525
2626 let l = 75000
2727
2828 let m = ["Oil", "Ore", "Wood", "Sand", "Clay", "Organic"]
2929
3030 let n = ["Fuel", "Metal", "Plank", "Glass", "Plastic", "Protein"]
3131
3232 let o = ["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"]
3333
3434 let p = ["Americas", "Europe", "Asia", "Africa", "Oceania"]
3535
3636 let q = 10000000
3737
3838 let r = ["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_"]
3939
4040 let s = 6
4141
4242 let t = 7
4343
4444 let u = 11
4545
4646 let v = 10
4747
4848 let w = 0
4949
5050 let x = 1
5151
5252 let y = 2
5353
5454 let z = 3
5555
5656 let A = 4
5757
5858 let B = 0
5959
6060 let C = 3
6161
6262 let D = 0
6363
6464 let E = 1
6565
6666 let F = 2
6767
6868 let G = 3
6969
7070 let H = 0
7171
7272 let I = 1
7373
7474 let J = 2
7575
7676 func K (L) = ("no_" + L)
7777
7878
7979 func M (L) = ("st_" + L)
8080
8181
8282 func N (O) = ("accRefBy_" + O)
8383
8484
8585 func P (Q) = ("stakedDuckByOwner_" + Q)
8686
8787
8888 func R (S) = ("backPack_" + S)
8989
9090
9191 func T (S) = ("duckLocation_" + S)
9292
9393
9494 func U (V) = ("landOrder_" + V)
9595
9696
9797 func W () = "emergencyWarehouseProducts"
9898
9999
100100 let X = "deliveryFund"
101101
102102 let Y = "deliveryLocked"
103103
104104 func Z (aa) = (parseIntValue(aa[s]) * q)
105105
106106
107-let ab = true
107+let ab = false
108108
109109 let ac = take(drop(this.bytes, 1), 1)
110110
111111 let ad = {
112112 let ae = ac
113113 if ((base58'2W' == ae))
114114 then base58'9wc3LXNA4TEBsXyKtoLE9mrbDD7WMHXvXrCjZvabLAsi'
115115 else if ((base58'2T' == ae))
116116 then base58'6mWwf9mZBjVgkC54idpyaZLQfAosD914wT8fGf2iiY63'
117117 else throw("Unknown chain")
118118 }
119119
120120 let af = {
121121 let ae = ac
122122 if ((base58'2W' == ae))
123123 then "3PQCuvFbvh4LkPUnrnU1z3jnbA1p9m3WNhv"
124124 else if ((base58'2T' == ae))
125125 then "3MumkGGztCKAXpWDqxkddofqXSUbqQkvSJy"
126126 else throw("Unknown chain")
127127 }
128128
129129 let ag = "__"
130130
131131 let ah = 100000
132132
133133 let ai = 1000000
134134
135135 let aj = 100000000
136136
137137 let ak = 10000000000
138138
139139 let al = 100000
140140
141141 let am = [0, 1, 2, 3, 4, 5]
142142
143143 func an (ao,ap) = valueOrErrorMessage(getString(ao, ap), makeString(["mandatory ", toString(ao), ".", ap, " is not defined"], ""))
144144
145145
146146 let aq = 1
147147
148148 let ar = 6
149149
150150 let as = 8
151151
152152 func at () = "%s__restConfig"
153153
154154
155155 func au () = "%s__restAddr"
156156
157157
158158 func av (aw) = split_4C(an(aw, at()), ag)
159159
160160
161161 func ax (ay,az) = valueOrErrorMessage(addressFromString(ay[az]), ("Rest cfg doesn't contain address at index " + toString(az)))
162162
163163
164164 let aA = addressFromStringValue(valueOrElse(getString(this, au()), af))
165165
166166 let ay = av(aA)
167167
168168 let aB = ax(ay, aq)
169169
170170 let aC = ax(ay, ar)
171171
172172 let aD = ax(ay, as)
173173
174174 func aE (aF) = {
175175 let ae = aF
176176 if ($isInstanceOf(ae, "String"))
177177 then {
178178 let aG = ae
179179 aG
180180 }
181181 else throw("fail to cast into String")
182182 }
183183
184184
185185 func aH (aF) = {
186186 let ae = aF
187187 if ($isInstanceOf(ae, "Int"))
188188 then {
189189 let aI = ae
190190 aI
191191 }
192192 else throw("fail to cast into Int")
193193 }
194194
195195
196196 func aJ () = "contractsBlocked"
197197
198198
199199 func aK (aL,aM) = {
200200 let aN = pow(10, 0, aM, 0, 0, DOWN)
201201 let aO = toString((aL % aN))
202202 let aP = drop(toString(aN), (1 + size(aO)))
203203 (((toString((aL / aN)) + ".") + aP) + aO)
204204 }
205205
206206
207207 let aQ = 10000000000
208208
209209 let aR = 200
210210
211211 let aS = 300
212212
213213 let aT = 10000
214214
215215 let aU = 10000
216216
217217 let aV = 15000
218218
219219 func aW (aX,aY) = ((("factoryWhByContinentAndRes_" + aX) + "_") + toString(aY))
220220
221221
222222 let aZ = 0
223223
224224 let ba = 1
225225
226226 let bb = 2
227227
228228 func bc (bd) = {
229229 let be = split(valueOrElse(getString(bd), "0@0_0@0_0@0_0@0_0@0_0@0:0@0_0@0_0@0_0@0_0@0_0@0:"), ":")
230230 [if ((size(split(be[aZ], "_")) == f))
231231 then be[aZ]
232232 else "0@0_0@0_0@0_0@0_0@0_0@0", if ((size(split(be[ba], "_")) == f))
233233 then be[ba]
234234 else "0@0_0@0_0@0_0@0_0@0_0@0", be[bb]]
235235 }
236236
237237
238238 func bf (bg,bh,bi) = if (bi)
239239 then {
240240 let bj = if ((bg >= 0))
241241 then (((bg + bh) - 1) / bh)
242242 else -((((-(bg) + bh) - 1) / bh))
243243 (bj * aj)
244244 }
245245 else bg
246246
247247
248248 func bk (bl,aY,bg,bm) = {
249249 let bn = aW(bl, aY)
250250 let bo = valueOrElse(getInteger(bn), 0)
251251 let bp = if ((bo > aQ))
252252 then 0
253253 else if (((bo + bg) > aQ))
254254 then (aQ - bo)
255255 else bg
256256 let bq = (fraction(bp, ((aR * h) - fraction(((100 * bo) + (50 * bp)), h, aQ)), ak) + fraction((bg - bp), h, aj))
257257 let br = (bm - (bm / 100))
258258 if (((br * bg) > (bq * aj)))
259259 then throw((((((((((("Actual price = " + toString(bq)) + " / ") + toString(bg)) + " < minPrice = ") + toString(bm)) + ", (") + bl) + ", ") + m[aY]) + ")"))
260260 else $Tuple2(IntegerEntry(bn, (bo + bg)), bq)
261261 }
262262
263263
264264 func bs (bl,bt,bg,bu) = {
265265 let bn = aW(bl, bt)
266266 let bo = valueOrElse(getInteger(bn), 0)
267267 let bv = if ((bo > aQ))
268268 then min([bg, (bo - aQ)])
269269 else 0
270270 let bw = min([bo, (bg - bv)])
271271 let bx = (bw + bv)
272272 let by = min([bo, aQ])
273273 let bz = (fraction(bw, ((aS * h) - fraction(((100 * by) - (50 * bw)), h, aQ)), ak) + fraction(bv, (2 * h), aj))
274274 let bA = (bu + (bu / 100))
275275 if (((bz * aj) > (bA * bx)))
276276 then throw((((((((((("Actual price = " + toString(bz)) + " / ") + toString(bx)) + " > maxPrice = ") + toString(bu)) + ", (") + bl) + ", ") + n[bt]) + ")"))
277277 else $Tuple3(IntegerEntry(bn, (bo - bx)), bz, bx)
278278 }
279279
280280
281281 func bB (bC) = {
282282 let be = split_4C(valueOrElse(getString(aB, bC), "0:0_0_0_0_0_0:0_0_0_0_0_0:"), ":")
283283 [toString(valueOrElse(parseInt(be[D]), 0)), if ((size(split(be[E], "_")) == f))
284284 then be[E]
285285 else "0_0_0_0_0_0", if ((size(split(be[F], "_")) == f))
286286 then be[F]
287287 else "0_0_0_0_0_0", be[G]]
288288 }
289289
290290
291291 func bD () = if (valueOrElse(getBoolean(aB, aJ()), false))
292292 then throw("Contracts are under maintenance")
293293 else unit
294294
295295
296296 func bE () = aH(invoke(aB, "saveLastTx", nil, nil))
297297
298298
299299 func bF (bG,bH) = {
300300 let bI = bG._1
301301 let bJ = if ((size(bG._10) > bI))
302302 then bG._10[bI]
303303 else "0@0"
304304 let bK = bG._8
305305 let bL = split(bJ, "@")
306306 if ((size(bL) != 2))
307307 then throw("Incorrect order format, should be amount@price")
308308 else {
309309 let bM = parseIntValue(bL[0])
310310 let bN = parseIntValue(bL[1])
311311 let bO = if (bK)
312312 then (bM * bN)
313313 else fraction(bM, bN, aj)
314314 let bP = bf(bM, v, bK)
315315 let bQ = if ((size(bG._6) > bI))
316316 then parseIntValue(bG._6[bI])
317317 else 0
318318 let bR = split(if ((size(bG._7) > bI))
319319 then bG._7[bI]
320320 else "0@0", "@")
321321 let bS = parseIntValue(bR[0])
322322 let bT = parseIntValue(bR[1])
323323 if (if ((0 > bT))
324324 then true
325325 else (0 > bN))
326326 then throw("Price can't be negative")
327327 else {
328328 let bU = if (bK)
329329 then (bS * bT)
330330 else fraction(bS, bT, aj)
331331 if ((bM == 0))
332332 then if ((bS > 0))
333333 then $Tuple10((bI + 1), (bG._2 :+ toString(bQ)), bG._3, bG._4, (bG._5 - bU), bG._6, bG._7, bK, (bG._9 + bf(bQ, v, bK)), bG._10)
334334 else $Tuple10((bI + 1), (bG._2 :+ toString((bQ - bS))), bG._3, bG._4, bG._5, bG._6, bG._7, bK, (bG._9 + bf((bQ - bS), v, bK)), bG._10)
335335 else if ((bM > 0))
336336 then if ((0 > bS))
337337 then $Tuple10((bI + 1), (bG._2 :+ toString((bQ - bS))), (bG._3 + bP), bG._4, (bG._5 + bO), bG._6, bG._7, bK, bf((bQ - bS), v, bK), bG._10)
338338 else $Tuple10((bI + 1), (bG._2 :+ toString(bQ)), (bG._3 + bP), bG._4, ((bG._5 + bO) - bU), bG._6, bG._7, bK, bf(bQ, v, bK), bG._10)
339339 else if ((0 > bS))
340340 then {
341341 let bV = (bS - bM)
342342 if ((0 > (bQ - bV)))
343343 then throw((((("Attempt to take " + toString(bV)) + " from warehouse, but only ") + toString(bQ)) + " available"))
344344 else $Tuple10((bI + 1), (bG._2 :+ toString((bQ - bV))), bG._3, (bG._4 - bP), bG._5, bG._6, bG._7, bK, bf((bQ - bV), v, bK), bG._10)
345345 }
346346 else if ((0 > (bQ + bM)))
347347 then throw((((("Attempt to take " + toString(-(bM))) + " from warehouse, but only ") + toString(bQ)) + " available"))
348348 else $Tuple10((bI + 1), (bG._2 :+ toString((bQ + bM))), bG._3, (bG._4 - bP), (bG._5 - bU), bG._6, bG._7, bK, bf((bQ + bM), v, bK), bG._10)
349349 }
350350 }
351351 }
352352
353353
354354 func bW (bX,bY,bZ) = {
355355 let ca = split(bX[x], "_")
356356 let cb = split(bX[y], "_")
357357 let cc = if ((bX[z] == ""))
358358 then nil
359359 else split_4C(bX[z], "_")
360360 let cd = split(bY[aZ], "_")
361361 let ce = split(bY[ba], "_")
362362 let cf = if ((bY[bb] == ""))
363363 then nil
364364 else split_4C(bY[bb], "_")
365365 if ((size(bZ) != 3))
366366 then throw("newOrderStr should contain exactly 2 ':' separators")
367367 else {
368368 let cg = split(bZ[0], "_")
369369 let ch = split(bZ[1], "_")
370370 let ci = if ((bZ[2] == ""))
371371 then nil
372372 else split_4C(bZ[2], "_")
373373 if ((size(cg) != f))
374374 then throw("All 6 resources should be passed")
375375 else if ((size(ch) != f))
376376 then throw("All 6 materials should be passed")
377377 else {
378378 let cj = {
379379 let ck = m
380380 let cl = size(ck)
381381 let cm = $Tuple10(0, nil, 0, 0, 0, ca, cd, false, 0, cg)
382382 func cn (co,cp) = if ((cp >= cl))
383383 then co
384384 else bF(co, ck[cp])
385385
386386 func cq (co,cp) = if ((cp >= cl))
387387 then co
388388 else throw("List size exceeds 6")
389389
390390 cq(cn(cn(cn(cn(cn(cn(cm, 0), 1), 2), 3), 4), 5), 6)
391391 }
392392 let bx = {
393393 let ck = n
394394 let cl = size(ck)
395395 let cm = $Tuple10(0, nil, cj._3, cj._4, cj._5, cb, ce, false, cj._9, ch)
396396 func cr (co,cp) = if ((cp >= cl))
397397 then co
398398 else bF(co, ck[cp])
399399
400400 func cs (co,cp) = if ((cp >= cl))
401401 then co
402402 else throw("List size exceeds 6")
403403
404404 cs(cr(cr(cr(cr(cr(cr(cm, 0), 1), 2), 3), 4), 5), 6)
405405 }
406406 let be = {
407407 let ck = o
408408 let cl = size(ck)
409409 let cm = $Tuple10(0, nil, bx._3, bx._4, bx._5, cc, cf, true, bx._9, ci)
410410 func ct (co,cp) = if ((cp >= cl))
411411 then co
412412 else bF(co, ck[cp])
413413
414414 func cu (co,cp) = if ((cp >= cl))
415415 then co
416416 else throw("List size exceeds 50")
417417
418418 cu(ct(ct(ct(ct(ct(ct(ct(ct(ct(ct(ct(ct(ct(ct(ct(ct(ct(ct(ct(ct(ct(ct(ct(ct(ct(ct(ct(ct(ct(ct(ct(ct(ct(ct(ct(ct(ct(ct(ct(ct(ct(ct(ct(ct(ct(ct(ct(ct(ct(ct(cm, 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)
419419 }
420420 $Tuple7(cj._2, bx._2, be._2, be._3, be._4, be._5, be._9)
421421 }
422422 }
423423 }
424424
425425
426426 func cv (bG,cw) = {
427427 let bI = bG._7
428428 let bK = bG._12
429429 let cx = split(cw, "@")
430430 if ((size(cx) != 2))
431431 then throw("Incorrect order format, should be amount@price")
432432 else {
433433 let cy = parseIntValue(cx[0])
434434 let cz = parseIntValue(cx[1])
435435 if ((0 > cz))
436436 then throw("Price can't be negative")
437437 else {
438438 let cA = if (bK)
439439 then (cy * cz)
440440 else fraction(cy, cz, aj)
441441 let cB = if ((size(bG._8) > bI))
442442 then parseIntValue(bG._8[bI])
443443 else 0
444444 let bQ = if ((size(bG._9) > bI))
445445 then parseIntValue(bG._9[bI])
446446 else 0
447447 let cC = if ((size(bG._10) > bI))
448448 then bG._10[bI]
449449 else "0@0"
450450 let cD = split(cC, "@")
451451 let cE = parseIntValue(cD[0])
452452 let cF = parseIntValue(cD[1])
453453 if (if ((cy != 0))
454454 then (cz != cF)
455455 else false)
456456 then throw(((((("Prices of " + bG._11[bI]) + " don't match! WH price=") + toString(cF)) + ", your price=") + toString(cz)))
457457 else {
458458 let cG = if (bK)
459459 then (cE * cF)
460460 else fraction(cE, cF, aj)
461461 let cH = bf(cy, v, bK)
462462 if ((cy == 0))
463463 then $Tuple13((bG._1 :+ toString(bQ)), (bG._2 :+ cC), (bG._3 :+ toString(cB)), bG._4, bG._5, bG._6, (bG._7 + 1), bG._8, bG._9, bG._10, bG._11, bK, bG._13)
464464 else if ((cy > 0))
465465 then if ((0 > cE))
466466 then if ((cy > -(cE)))
467467 then throw(((((("Attempt to buy " + toString(cy)) + " of ") + bG._11[bI]) + ", but warehouse only sells ") + toString(-(cE))))
468468 else $Tuple13((bG._1 :+ toString(bQ)), (bG._2 :+ ((toString((cE + cy)) + "@") + toString(cF))), (bG._3 :+ toString((cB + cy))), (bG._4 + cH), bG._5, (bG._6 + cA), (bG._7 + 1), bG._8, bG._9, bG._10, bG._11, bK, (bG._13 + (if (bK)
469469 then (cy * aj)
470470 else cy)))
471471 else throw((("Attempt to buy " + bG._11[bI]) + " while warehouse doesn't sell it"))
472472 else if ((cE > 0))
473473 then if ((-(cy) > cE))
474474 then throw(((((("Attempt to sell " + toString(-(cy))) + " of ") + bG._11[bI]) + ", but warehouse only buys ") + toString(cE)))
475475 else if ((-(cy) > cB))
476476 then throw(((((("Attempt to sell " + toString(-(cy))) + ", but you only have ") + toString(cB)) + " of ") + bG._11[bI]))
477477 else $Tuple13((bG._1 :+ toString((bQ - cy))), (bG._2 :+ ((toString((cE + cy)) + "@") + toString(cF))), (bG._3 :+ toString((cB + cy))), (bG._4 - cH), (bG._5 - cA), bG._6, (bG._7 + 1), bG._8, bG._9, bG._10, bG._11, bK, (bG._13 - (if (bK)
478478 then (cy * aj)
479479 else cy)))
480480 else throw((("Attempt to sell " + bG._11[bI]) + " while warehouse doesn't buy it"))
481481 }
482482 }
483483 }
484484 }
485485
486486
487487 func cI (cJ,cK,cL,cM) = {
488488 func cN (bG,bI) = if ((cL[bI] > parseIntValue(cJ[bI])))
489489 then throw(((((("You have " + cJ[bI]) + " of ") + m[bI]) + ", but tried to sell ") + toString(cL[bI])))
490490 else if ((0 > cL[bI]))
491491 then throw(((("You tried to sell negative amount of " + m[bI]) + ": ") + toString(cL[bI])))
492492 else if ((cL[bI] > 0))
493493 then {
494494 let cO = bk(cK, bI, cL[bI], cM[bI])
495495 $Tuple4((bG._1 :+ cO._1), (bG._2 :+ toString((parseIntValue(cJ[bI]) - cL[bI]))), (bG._3 + cO._2), (bG._4 + cL[bI]))
496496 }
497497 else $Tuple4(bG._1, (bG._2 :+ cJ[bI]), bG._3, bG._4)
498498
499499 let ck = am
500500 let cl = size(ck)
501501 let cm = $Tuple4(nil, nil, 0, 0)
502502 func cn (co,cp) = if ((cp >= cl))
503503 then co
504504 else cN(co, ck[cp])
505505
506506 func cq (co,cp) = if ((cp >= cl))
507507 then co
508508 else throw("List size exceeds 6")
509509
510510 cq(cn(cn(cn(cn(cn(cn(cm, 0), 1), 2), 3), 4), 5), 6)
511511 }
512512
513513
514514 func cP (cQ,cK,cL,cR) = {
515515 func cS (bG,bI) = if ((0 > cL[bI]))
516516 then throw(((("You tried to buy negative amount of " + n[bI]) + ": ") + toString(cL[bI])))
517517 else if ((cL[bI] > 0))
518518 then {
519519 let cO = bs(cK, bI, cL[bI], cR[bI])
520520 $Tuple4((bG._1 :+ cO._1), (bG._2 :+ toString((parseIntValue(cQ[bI]) + cO._3))), (bG._3 + cO._2), (bG._4 + cL[bI]))
521521 }
522522 else $Tuple4(bG._1, (bG._2 :+ cQ[bI]), bG._3, bG._4)
523523
524524 let ck = am
525525 let cl = size(ck)
526526 let cm = $Tuple4(nil, nil, 0, 0)
527527 func cn (co,cp) = if ((cp >= cl))
528528 then co
529529 else cS(co, ck[cp])
530530
531531 func cq (co,cp) = if ((cp >= cl))
532532 then co
533533 else throw("List size exceeds 6")
534534
535535 cq(cn(cn(cn(cn(cn(cn(cm, 0), 1), 2), 3), 4), 5), 6)
536536 }
537537
538538
539539 func cT (cJ,cQ,cL) = {
540540 func cU (bG,bI) = {
541541 let cV = cL[bI]
542542 if ((cV > parseIntValue(cJ[bI])))
543543 then throw(((((("You have " + cJ[bI]) + " of ") + m[bI]) + ", but tried to exchange ") + toString(cV)))
544544 else if ((0 > cV))
545545 then throw(((("You tried to exchange negative amount of " + m[bI]) + ": ") + toString(cV)))
546546 else if ((cV > 0))
547547 then $Tuple4((bG._1 :+ toString((parseIntValue(cJ[bI]) - cV))), (bG._2 :+ toString((parseIntValue(cQ[bI]) + cV))), (bG._3 + fraction(cV, h, aj)), (bG._4 + cV))
548548 else $Tuple4((bG._1 :+ cJ[bI]), (bG._2 :+ cQ[bI]), bG._3, bG._4)
549549 }
550550
551551 let ck = am
552552 let cl = size(ck)
553553 let cm = $Tuple4(nil, nil, 0, 0)
554554 func cn (co,cp) = if ((cp >= cl))
555555 then co
556556 else cU(co, ck[cp])
557557
558558 func cq (co,cp) = if ((cp >= cl))
559559 then co
560560 else throw("List size exceeds 6")
561561
562562 cq(cn(cn(cn(cn(cn(cn(cm, 0), 1), 2), 3), 4), 5), 6)
563563 }
564564
565565
566566 func cW (cX,cY,cZ) = if ((cX > 0))
567567 then {
568568 let da = fraction(cX, aT, ai)
569569 if ((cZ >= (cX - (3 * da))))
570570 then throw(("This trade does not cover delivery cost of " + aK(cZ, 6)))
571571 else {
572572 let db = N(cY)
573573 let dc = getString(aB, db)
574574 let dd = addressFromStringValue(cY)
575575 (((if (isDefined(dc))
576576 then [ScriptTransfer(addressFromStringValue(value(dc)), da, ad)]
577577 else nil) :+ ScriptTransfer(dd, ((cX - (3 * da)) - cZ), ad)) :+ ScriptTransfer(aA, da, ad))
578578 }
579579 }
580580 else nil
581581
582582
583583 func de (df,dg,dh,di) = if ((df > 0))
584584 then if ((size(dg) != 1))
585585 then throw("exactly 1 payment must be attached")
586586 else {
587587 let dj = dg[0]
588588 let dk = dj.amount
589589 if (if (!(isDefined(dj.assetId)))
590590 then true
591591 else (value(dj.assetId) != ad))
592592 then throw("USDT payments only!")
593593 else {
594594 let dl = (df + di)
595595 if ((dk != dl))
596596 then throw((((((("Insufficient payment! Attached=" + aK(dk, 6)) + ", required=") + aK(df, 6)) + "+") + aK(di, 6)) + "(delivery fee)"))
597597 else if ((al > df))
598598 then throw(("Min shop trade is " + aK(al, 6)))
599599 else {
600600 let dm = fraction(df, aT, ai)
601601 let db = N(dh)
602602 let dc = getString(aB, db)
603603 (((if (isDefined(dc))
604604 then [ScriptTransfer(addressFromStringValue(value(dc)), dm, ad)]
605605 else nil) :+ ScriptTransfer(addressFromStringValue(dh), (df - (3 * dm)), ad)) :+ ScriptTransfer(aA, dm, ad))
606606 }
607607 }
608608 }
609609 else if ((size(dg) != 0))
610610 then throw("No payments needed")
611611 else nil
612612
613613
614614 func dn (do,cY,dp,dq,dr,ds) = {
615615 let dt = value(assetInfo(fromBase58String(do)))
616616 if (!(isDefined(getInteger(aB, M(do)))))
617617 then throw((("NFT " + dt.name) + " is not staked"))
618618 else {
619619 let dh = valueOrErrorMessage(getString(aB, K(do)), (("NFT " + dt.name) + " is orphaned"))
620620 if ((dh == cY))
621621 then throw("You cannot trade with yourself")
622622 else {
623623 let du = split_4C(dp, ":")
624624 if ((size(du) != 3))
625625 then throw("bpOrderStr should contain exactly 2 ':' separators")
626626 else {
627627 let dv = split(du[0], "_")
628628 let dw = split(du[1], "_")
629629 let dx = if ((du[2] == ""))
630630 then nil
631631 else split_4C(du[2], "_")
632632 if ((size(dv) != f))
633633 then throw("All 6 resources should be passed")
634634 else if ((size(dw) != f))
635635 then throw("All 6 materials should be passed")
636636 else {
637637 let dy = aE(invoke(aB, "getWarehouseREADONLY", [do], nil))
638638 let bX = split_4C(dy, ":")
639639 let ca = split(bX[x], "_")
640640 let cb = split(bX[y], "_")
641641 let cc = if ((bX[z] == ""))
642642 then nil
643643 else split_4C(bX[z], "_")
644644 let dz = parseIntValue(split(bX[A], "_")[B])
645645 let bd = U(do)
646646 let dA = bc(bd)
647647 let dB = split(dA[aZ], "_")
648648 let dC = split(dA[ba], "_")
649649 let dD = if ((dA[bb] == ""))
650650 then nil
651651 else split_4C(dA[bb], "_")
652652 let cj = {
653653 let ck = dv
654654 let cl = size(ck)
655655 let cm = $Tuple13(nil, nil, nil, 0, 0, 0, 0, dq, ca, dB, m, false, 0)
656656 func cn (co,cp) = if ((cp >= cl))
657657 then co
658658 else cv(co, ck[cp])
659659
660660 func cq (co,cp) = if ((cp >= cl))
661661 then co
662662 else throw("List size exceeds 6")
663663
664664 cq(cn(cn(cn(cn(cn(cn(cm, 0), 1), 2), 3), 4), 5), 6)
665665 }
666666 let bx = {
667667 let ck = dw
668668 let cl = size(ck)
669669 let cm = $Tuple13(nil, nil, nil, cj._4, cj._5, cj._6, 0, dr, cb, dC, n, false, cj._13)
670670 func cr (co,cp) = if ((cp >= cl))
671671 then co
672672 else cv(co, ck[cp])
673673
674674 func cs (co,cp) = if ((cp >= cl))
675675 then co
676676 else throw("List size exceeds 6")
677677
678678 cs(cr(cr(cr(cr(cr(cr(cm, 0), 1), 2), 3), 4), 5), 6)
679679 }
680680 let be = if ((size(dx) != 0))
681681 then {
682682 let ck = dx
683683 let cl = size(ck)
684684 let cm = $Tuple13(nil, nil, nil, bx._4, bx._5, bx._6, 0, ds, cc, dD, o, true, bx._13)
685685 func ct (co,cp) = if ((cp >= cl))
686686 then co
687687 else cv(co, ck[cp])
688688
689689 func cu (co,cp) = if ((cp >= cl))
690690 then co
691691 else throw("List size exceeds 50")
692692
693693 cu(ct(ct(ct(ct(ct(ct(ct(ct(ct(ct(ct(ct(ct(ct(ct(ct(ct(ct(ct(ct(ct(ct(ct(ct(ct(ct(ct(ct(ct(ct(ct(ct(ct(ct(ct(ct(ct(ct(ct(ct(ct(ct(ct(ct(ct(ct(ct(ct(ct(ct(cm, 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)
694694 }
695695 else $Tuple13(cc, dD, ds, bx._4, bx._5, bx._6, 0, ds, cc, dD, o, true, bx._13)
696696 let dE = be._4
697697 let dF = if ((0 > (dz - dE)))
698698 then 0
699699 else (dz - dE)
700700 let dG = makeString_2C([bX[w], makeString(cj._1, "_"), makeString(bx._1, "_"), makeString_2C(be._1, "_"), toString(dF)], ":")
701701 let dH = makeString_2C([makeString(cj._2, "_"), makeString(bx._2, "_"), makeString_2C(be._2, "_")], ":")
702702 let dI = aE(invoke(aB, "saveWarehouse", [dG, do], nil))
703703 let dJ = aH(invoke(aB, "updateAccStats", [dh, fraction(d, be._13, aj)], nil))
704704 $Tuple10(StringEntry(bd, dH), cj._3, bx._3, be._3, be._5, be._6, be._13, dh, dI, dJ)
705705 }
706706 }
707707 }
708708 }
709709 }
710710
711711
712712 func dK (bg) = {
713713 let dL = (bg / 30)
714714 let dM = [dL, dL, dL, dL, dL, dL]
715715 let aG = toString(dL)
716716 let cJ = [aG, aG, aG, aG, aG, aG]
717717 let cM = [0, 0, 0, 0, 0, 0]
718718 func dN (bG,dO) = {
719719 let dP = cI(cJ, dO, dM, cM)
720720 $Tuple3((bG._1 ++ dP._1), (bG._2 + dP._3), (bG._3 + dP._4))
721721 }
722722
723723 let dQ = {
724724 let ck = p
725725 let cl = size(ck)
726726 let cm = $Tuple3(nil, 0, 0)
727727 func cn (co,cp) = if ((cp >= cl))
728728 then co
729729 else dN(co, ck[cp])
730730
731731 func cq (co,cp) = if ((cp >= cl))
732732 then co
733733 else throw("List size exceeds 5")
734734
735735 cq(cn(cn(cn(cn(cn(cm, 0), 1), 2), 3), 4), 5)
736736 }
737737 let dR = dQ._1
738738 let bq = dQ._2
739739 let dS = dQ._3
740740 let dT = fraction(bq, aU, ai)
741741 let dU = (bq / 100)
742742 let dV = ((bq - dU) - dT)
743743 $Tuple5(dR, dV, dT, dU, dS)
744744 }
745745
746746
747747 @Callable(dW)
748748 func recalcLockedVolumeREADONLY (V,dy) = {
749749 let bY = bc(U(V))
750750 let dX = bW(dy, bY, bY)
751751 $Tuple2(nil, (dX._4 + dX._5))
752752 }
753753
754754
755755
756756 @Callable(dW)
757757 func constructorV1 (dY) = if ((dW.caller != this))
758758 then throw("Permission denied")
759759 else [StringEntry(au(), dY)]
760760
761761
762762
763763 @Callable(dW)
764764 func sellResources (cL,cM) = {
765765 let dZ = bE()
766766 let S = valueOrErrorMessage(getString(aB, P(toString(dW.caller))), "You don't have a duck staked")
767767 if ((size(dW.payments) != 0))
768768 then throw("sellResources doesn't require any payments")
769769 else {
770770 let ea = split(valueOrElse(getString(aB, T(S)), g), "_")
771771 if ((ea[I] != "F"))
772772 then throw(("Duck location type should be Factory, but is " + ea[I]))
773773 else {
774774 let eb = bB(R(S))
775775 let cJ = split(eb[E], "_")
776776 let ec = cI(cJ, ea[J], cL, cM)
777777 let dR = ec._1
778778 let ed = ec._2
779779 let bq = ec._3
780780 let dS = ec._4
781781 let dU = (bq / 100)
782782 let ee = makeString_2C([eb[D], makeString(ed, "_"), eb[F], eb[G]], ":")
783783 let ef = aE(invoke(aB, "updateBackpack", [S, ee], nil))
784784 let eg = aH(invoke(aB, "updateDuckStats", [S, fraction(a, dS, aj)], nil))
785785 $Tuple2(((dR :+ ScriptTransfer(dW.caller, (bq - dU), ad)) :+ ScriptTransfer(aA, dU, ad)), $Tuple3(ef, dZ, eg))
786786 }
787787 }
788788 }
789789
790790
791791
792792 @Callable(dW)
793793 func sellResourcesWorld (O,bg) = if ((dW.caller != aD))
794794 then throw("Permission denied")
795795 else {
796796 let eh = dK(bg)
797797 let dR = eh._1
798798 let dV = eh._2
799799 let dT = eh._3
800800 let dU = eh._4
801801 let dS = eh._5
802802 if ((0 >= dV))
803803 then throw(("This trade does not cover delivery cost of " + aK(dT, 6)))
804804 else {
805805 let eg = aH(invoke(aB, "updateAccStats", [O, fraction(a, dS, aj)], nil))
806806 $Tuple2((((dR :+ IntegerEntry(X, (valueOrElse(getInteger(X), 0) + dT))) :+ ScriptTransfer(aA, dU, ad)) :+ ScriptTransfer(aC, dV, ad)), $Tuple2(dV, eg))
807807 }
808808 }
809809
810810
811811
812812 @Callable(dW)
813813 func sellResourcesWorldREADONLY (bg) = {
814814 let dV = dK(bg)._2
815815 $Tuple2(nil, dV)
816816 }
817817
818818
819819
820820 @Callable(dW)
821821 func sellResourcesDuckDelivery (cL,cM,ei) = if (!(ab))
822822 then throw("Delivery feature is turned off!")
823823 else {
824824 let dZ = bE()
825825 let S = valueOrErrorMessage(getString(aB, P(toString(dW.caller))), "You don't have a duck staked")
826826 if ((size(dW.payments) != 0))
827827 then throw("sellResources doesn't require any payments")
828828 else {
829829 let eb = bB(R(S))
830830 let cJ = split(eb[E], "_")
831831 let ej = cI(cJ, ei, cL, cM)
832832 let dR = ej._1
833833 let ed = ej._2
834834 let bq = ej._3
835835 let dS = ej._4
836836 let ee = makeString_2C([eb[D], makeString(ed, "_"), eb[F], eb[G]], ":")
837837 let ef = aE(invoke(aB, "updateBackpack", [S, ee], nil))
838838 let eg = aH(invoke(aB, "updateDuckStats", [S, fraction(a, dS, aj)], nil))
839839 let ek = fraction(bq, aU, ai)
840840 let dT = if ((k > ek))
841841 then k
842842 else ek
843843 let dU = (bq / 100)
844844 if ((dT >= (bq - dU)))
845845 then throw(("This trade does not cover delivery cost of " + aK(dT, 6)))
846846 else {
847847 let el = valueOrElse(getInteger(X), 0)
848848 $Tuple2((((dR :+ ScriptTransfer(dW.caller, ((bq - dU) - dT), ad)) :+ IntegerEntry(X, (el + dT))) :+ ScriptTransfer(aA, dU, ad)), $Tuple3(ef, dZ, eg))
849849 }
850850 }
851851 }
852852
853853
854854
855855 @Callable(dW)
856856 func sellResourcesLandDelivery (cL,cM,V,ei) = if (!(ab))
857857 then throw("Delivery feature is turned off!")
858858 else {
859859 let dZ = bE()
860860 if ((size(dW.payments) != 0))
861861 then throw("sellResources doesn't require any payments")
862862 else {
863863 let em = dW.caller
864864 let O = toString(em)
865865 let en = value(assetInfo(fromBase58String(V)))
866866 if (!(isDefined(getInteger(aB, M(V)))))
867867 then throw((("NFT " + en.name) + " is not staked"))
868868 else {
869869 let eo = valueOrErrorMessage(getString(aB, K(V)), (("NFT " + en.name) + " is orphaned"))
870870 if ((eo != O))
871871 then throw((e + " is not yours"))
872872 else {
873873 let dy = aE(invoke(aB, "getWarehouseREADONLY", [V], nil))
874874 let bX = split_4C(dy, ":")
875875 let cJ = split(bX[x], "_")
876876 let ep = cI(cJ, ei, cL, cM)
877877 let dR = ep._1
878878 let ed = ep._2
879879 let bq = ep._3
880880 let dS = ep._4
881881 let dG = makeString_2C([bX[w], makeString(ed, "_"), bX[y], bX[z], bX[A]], ":")
882882 let dI = aE(invoke(aB, "saveWarehouse", [dG, V], nil))
883883 let eg = aH(invoke(aB, "updateAccStats", [O, fraction(a, dS, aj)], nil))
884884 let ek = fraction(bq, aU, ai)
885885 let dT = if ((k > ek))
886886 then k
887887 else ek
888888 let dU = (bq / 100)
889889 if ((dT >= (bq - dU)))
890890 then throw(("This trade does not cover delivery cost of " + aK(dT, 6)))
891891 else {
892892 let el = valueOrElse(getInteger(X), 0)
893893 $Tuple2((((dR :+ ScriptTransfer(dW.caller, ((bq - dU) - dT), ad)) :+ IntegerEntry(X, (el + dT))) :+ ScriptTransfer(aA, dU, ad)), $Tuple3(dI, dZ, eg))
894894 }
895895 }
896896 }
897897 }
898898 }
899899
900900
901901
902902 @Callable(dW)
903903 func buyMaterials (cL,cR) = {
904904 let dZ = bE()
905905 let S = valueOrErrorMessage(getString(aB, P(toString(dW.caller))), "You don't have a duck staked")
906906 if ((size(dW.payments) != 1))
907907 then throw("exactly 1 payment must be attached")
908908 else {
909909 let dj = dW.payments[0]
910910 let dk = dj.amount
911911 if (if (!(isDefined(dj.assetId)))
912912 then true
913913 else (value(dj.assetId) != ad))
914914 then throw("USDT payments only!")
915915 else {
916916 let ea = split(valueOrElse(getString(aB, T(S)), g), "_")
917917 if ((ea[I] != "F"))
918918 then throw(("Duck location type should be Factory, but is " + ea[I]))
919919 else {
920920 let eb = bB(R(S))
921921 let cQ = split(eb[F], "_")
922922 let eq = cP(cQ, ea[J], cL, cR)
923923 let dR = eq._1
924924 let er = eq._2
925925 let bz = eq._3
926926 let es = eq._4
927927 if ((bz > dk))
928928 then throw(((("Insufficient payment! Attached=" + aK(dk, 6)) + ", required=") + aK(bz, 6)))
929929 else {
930930 let ee = makeString([eb[D], eb[E], makeString(er, "_"), eb[G]], ":")
931931 let ef = aE(invoke(aB, "updateBackpack", [S, ee], nil))
932932 let aw = if (((dk - bz) > 0))
933933 then [ScriptTransfer(dW.caller, (dk - bz), ad)]
934934 else nil
935935 let dU = (bz / 100)
936936 let eg = aH(invoke(aB, "updateDuckStats", [S, fraction(a, es, aj)], nil))
937937 $Tuple2(((dR ++ aw) :+ ScriptTransfer(aA, dU, ad)), $Tuple3(ef, dZ, eg))
938938 }
939939 }
940940 }
941941 }
942942 }
943943
944944
945945
946946 @Callable(dW)
947947 func buyMaterialsDuckDelivery (cL,cR,ei) = if (!(ab))
948948 then throw("Delivery feature is turned off!")
949949 else {
950950 let dZ = bE()
951951 let S = valueOrErrorMessage(getString(aB, P(toString(dW.caller))), "You don't have a duck staked")
952952 if ((size(dW.payments) != 1))
953953 then throw("exactly 1 payment must be attached")
954954 else {
955955 let dj = dW.payments[0]
956956 let dk = dj.amount
957957 if (if (!(isDefined(dj.assetId)))
958958 then true
959959 else (value(dj.assetId) != ad))
960960 then throw("USDT payments only!")
961961 else {
962962 let eb = bB(R(S))
963963 let cQ = split(eb[F], "_")
964964 let et = cP(cQ, ei, cL, cR)
965965 let dR = et._1
966966 let er = et._2
967967 let bz = et._3
968968 let es = et._4
969969 let ee = makeString([eb[D], eb[E], makeString(er, "_"), eb[G]], ":")
970970 let ef = aE(invoke(aB, "updateBackpack", [S, ee], nil))
971971 let eg = aH(invoke(aB, "updateDuckStats", [S, fraction(a, es, aj)], nil))
972972 let ek = fraction(bz, aU, ai)
973973 let dT = if ((k > ek))
974974 then k
975975 else ek
976976 let dl = (bz + dT)
977977 if ((dl > dk))
978978 then throw((((((("Insufficient payment! Attached=" + aK(dk, 6)) + ", required=") + aK(bz, 6)) + "+") + aK(dT, 6)) + "(delivery fee)"))
979979 else {
980980 let aw = if (((dk - dl) > 0))
981981 then [ScriptTransfer(dW.caller, (dk - dl), ad)]
982982 else nil
983983 let dU = (bz / 100)
984984 let el = valueOrElse(getInteger(X), 0)
985985 $Tuple2((((dR ++ aw) :+ ScriptTransfer(aA, dU, ad)) :+ IntegerEntry(X, (el + dT))), $Tuple3(ef, dZ, eg))
986986 }
987987 }
988988 }
989989 }
990990
991991
992992
993993 @Callable(dW)
994994 func buyMaterialsLandDelivery (cL,cR,V,ei) = if (!(ab))
995995 then throw("Delivery feature is turned off!")
996996 else {
997997 let dZ = bE()
998998 if ((size(dW.payments) != 1))
999999 then throw("exactly 1 payment must be attached")
10001000 else {
10011001 let dj = dW.payments[0]
10021002 let dk = dj.amount
10031003 if (if (!(isDefined(dj.assetId)))
10041004 then true
10051005 else (value(dj.assetId) != ad))
10061006 then throw("USDT payments only!")
10071007 else {
10081008 let em = dW.caller
10091009 let O = toString(em)
10101010 let en = value(assetInfo(fromBase58String(V)))
10111011 if (!(isDefined(getInteger(aB, M(V)))))
10121012 then throw((("NFT " + en.name) + " is not staked"))
10131013 else {
10141014 let eo = valueOrErrorMessage(getString(aB, K(V)), (("NFT " + en.name) + " is orphaned"))
10151015 if ((eo != O))
10161016 then throw((e + " is not yours"))
10171017 else {
10181018 let dy = aE(invoke(aB, "getWarehouseREADONLY", [V], nil))
10191019 let bX = split_4C(dy, ":")
10201020 let cQ = split(bX[y], "_")
10211021 let eu = cP(cQ, ei, cL, cR)
10221022 let dR = eu._1
10231023 let er = eu._2
10241024 let bz = eu._3
10251025 let es = eu._4
10261026 let dG = makeString_2C([bX[w], bX[x], makeString(er, "_"), bX[z], bX[A]], ":")
10271027 let dI = aE(invoke(aB, "saveWarehouse", [dG, V], nil))
10281028 let eg = aH(invoke(aB, "updateAccStats", [O, fraction(a, es, aj)], nil))
10291029 let ek = fraction(bz, aU, ai)
10301030 let dT = if ((k > ek))
10311031 then k
10321032 else ek
10331033 let dl = (bz + dT)
10341034 if ((dl > dk))
10351035 then throw((((((("Insufficient payment! Attached=" + aK(dk, 6)) + ", required=") + aK(bz, 6)) + "+") + aK(dT, 6)) + "(delivery fee)"))
10361036 else {
10371037 let aw = if (((dk - dl) > 0))
10381038 then [ScriptTransfer(dW.caller, (dk - dl), ad)]
10391039 else nil
10401040 let dU = (bz / 100)
10411041 let el = valueOrElse(getInteger(X), 0)
10421042 $Tuple2((((dR ++ aw) :+ ScriptTransfer(aA, dU, ad)) :+ IntegerEntry(X, (el + dT))), $Tuple3(dI, dZ, eg))
10431043 }
10441044 }
10451045 }
10461046 }
10471047 }
10481048 }
10491049
10501050
10511051
10521052 @Callable(dW)
10531053 func exchangeResources (cL) = {
10541054 let dZ = bE()
10551055 let S = valueOrErrorMessage(getString(aB, P(toString(dW.caller))), "You don't have a duck staked")
10561056 if ((size(dW.payments) != 1))
10571057 then throw("exactly 1 payment must be attached")
10581058 else {
10591059 let dj = dW.payments[0]
10601060 let dk = dj.amount
10611061 if (if (!(isDefined(dj.assetId)))
10621062 then true
10631063 else (value(dj.assetId) != ad))
10641064 then throw("USDT payments only!")
10651065 else {
10661066 let ea = split(valueOrElse(getString(aB, T(S)), g), "_")
10671067 if ((ea[I] != "F"))
10681068 then throw(("Duck location type should be Factory, but is " + ea[I]))
10691069 else {
10701070 let eb = bB(R(S))
10711071 let cJ = split(eb[E], "_")
10721072 let cQ = split(eb[F], "_")
10731073 let ev = cT(cJ, cQ, cL)
10741074 let ed = ev._1
10751075 let er = ev._2
10761076 let bz = ev._3
10771077 let ew = ev._4
10781078 if ((bz > dk))
10791079 then throw(((("Insufficient payment! Attached=" + aK(dk, 6)) + ", required=") + aK(bz, 6)))
10801080 else {
10811081 let ee = makeString([eb[D], makeString(ed, "_"), makeString(er, "_"), eb[G]], ":")
10821082 let ef = aE(invoke(aB, "updateBackpack", [S, ee], nil))
10831083 let aw = if (((dk - bz) > 0))
10841084 then [ScriptTransfer(dW.caller, (dk - bz), ad)]
10851085 else nil
10861086 let dU = (bz / 100)
10871087 let eg = aH(invoke(aB, "updateDuckStats", [S, fraction(a, ew, aj)], nil))
10881088 $Tuple2((aw :+ ScriptTransfer(aA, dU, ad)), $Tuple3(ef, dZ, eg))
10891089 }
10901090 }
10911091 }
10921092 }
10931093 }
10941094
10951095
10961096
10971097 @Callable(dW)
1098-func exchangeResourcesDuckDelivery (cL) = {
1099- let dZ = bE()
1100- let S = valueOrErrorMessage(getString(aB, P(toString(dW.caller))), "You don't have a duck staked")
1101- if ((size(dW.payments) != 1))
1102- then throw("exactly 1 payment must be attached")
1103- else {
1104- let dj = dW.payments[0]
1105- let dk = dj.amount
1106- if (if (!(isDefined(dj.assetId)))
1107- then true
1108- else (value(dj.assetId) != ad))
1109- then throw("USDT payments only!")
1110- else {
1111- let eb = bB(R(S))
1112- let cJ = split(eb[E], "_")
1113- let cQ = split(eb[F], "_")
1114- let ex = cT(cJ, cQ, cL)
1115- let ed = ex._1
1116- let er = ex._2
1117- let bz = ex._3
1118- let ew = ex._4
1119- let ek = fraction(bz, aV, ai)
1120- let dT = if ((l > ek))
1121- then l
1122- else ek
1123- let dl = (bz + dT)
1124- if ((dl > dk))
1125- then throw((((((("Insufficient payment! Attached=" + aK(dk, 6)) + ", required=") + aK(bz, 6)) + "+") + aK(dT, 6)) + "(delivery fee)"))
1126- else {
1127- let ee = makeString([eb[D], makeString(ed, "_"), makeString(er, "_"), eb[G]], ":")
1128- let ef = aE(invoke(aB, "updateBackpack", [S, ee], nil))
1129- let aw = if (((dk - dl) > 0))
1130- then [ScriptTransfer(dW.caller, (dk - dl), ad)]
1131- else nil
1132- let dU = (bz / 100)
1133- let eg = aH(invoke(aB, "updateDuckStats", [S, fraction(a, ew, aj)], nil))
1134- let el = valueOrElse(getInteger(X), 0)
1135- $Tuple2(((aw :+ ScriptTransfer(aA, dU, ad)) :+ IntegerEntry(X, (el + dT))), $Tuple3(ef, dZ, eg))
1136- }
1137- }
1138- }
1139- }
1098+func exchangeResourcesDuckDelivery (cL) = if (!(ab))
1099+ then throw("Delivery feature is turned off!")
1100+ else {
1101+ let dZ = bE()
1102+ let S = valueOrErrorMessage(getString(aB, P(toString(dW.caller))), "You don't have a duck staked")
1103+ if ((size(dW.payments) != 1))
1104+ then throw("exactly 1 payment must be attached")
1105+ else {
1106+ let dj = dW.payments[0]
1107+ let dk = dj.amount
1108+ if (if (!(isDefined(dj.assetId)))
1109+ then true
1110+ else (value(dj.assetId) != ad))
1111+ then throw("USDT payments only!")
1112+ else {
1113+ let eb = bB(R(S))
1114+ let cJ = split(eb[E], "_")
1115+ let cQ = split(eb[F], "_")
1116+ let ex = cT(cJ, cQ, cL)
1117+ let ed = ex._1
1118+ let er = ex._2
1119+ let bz = ex._3
1120+ let ew = ex._4
1121+ let ek = fraction(bz, aV, ai)
1122+ let dT = if ((l > ek))
1123+ then l
1124+ else ek
1125+ let dl = (bz + dT)
1126+ if ((dl > dk))
1127+ then throw((((((("Insufficient payment! Attached=" + aK(dk, 6)) + ", required=") + aK(bz, 6)) + "+") + aK(dT, 6)) + "(delivery fee)"))
1128+ else {
1129+ let ee = makeString([eb[D], makeString(ed, "_"), makeString(er, "_"), eb[G]], ":")
1130+ let ef = aE(invoke(aB, "updateBackpack", [S, ee], nil))
1131+ let aw = if (((dk - dl) > 0))
1132+ then [ScriptTransfer(dW.caller, (dk - dl), ad)]
1133+ else nil
1134+ let dU = (bz / 100)
1135+ let eg = aH(invoke(aB, "updateDuckStats", [S, fraction(a, ew, aj)], nil))
1136+ let el = valueOrElse(getInteger(X), 0)
1137+ $Tuple2(((aw :+ ScriptTransfer(aA, dU, ad)) :+ IntegerEntry(X, (el + dT))), $Tuple3(ef, dZ, eg))
1138+ }
1139+ }
1140+ }
1141+ }
11401142
11411143
11421144
11431145 @Callable(dW)
1144-func exchangeResourcesLandDelivery (cL,V) = {
1145- let dZ = bE()
1146- if ((size(dW.payments) != 1))
1147- then throw("exactly 1 payment must be attached")
1148- else {
1149- let dj = dW.payments[0]
1150- let dk = dj.amount
1151- if (if (!(isDefined(dj.assetId)))
1152- then true
1153- else (value(dj.assetId) != ad))
1154- then throw("USDT payments only!")
1155- else {
1156- let em = dW.caller
1157- let O = toString(em)
1158- let en = value(assetInfo(fromBase58String(V)))
1159- if (!(isDefined(getInteger(aB, M(V)))))
1160- then throw((("NFT " + en.name) + " is not staked"))
1161- else {
1162- let eo = valueOrErrorMessage(getString(aB, K(V)), (("NFT " + en.name) + " is orphaned"))
1163- if ((eo != O))
1164- then throw((e + " is not yours"))
1165- else {
1166- let dy = aE(invoke(aB, "getWarehouseREADONLY", [V], nil))
1167- let bX = split_4C(dy, ":")
1168- let cJ = split(bX[x], "_")
1169- let cQ = split(bX[y], "_")
1170- let ey = cT(cJ, cQ, cL)
1171- let ed = ey._1
1172- let er = ey._2
1173- let bz = ey._3
1174- let ew = ey._4
1175- let dG = makeString_2C([bX[w], makeString(ed, "_"), makeString(er, "_"), bX[z], bX[A]], ":")
1176- let dI = aE(invoke(aB, "saveWarehouse", [dG, V], nil))
1177- let eg = aH(invoke(aB, "updateAccStats", [O, fraction(a, ew, aj)], nil))
1178- let ek = fraction(bz, aV, ai)
1179- let dT = if ((l > ek))
1180- then l
1181- else ek
1182- let dl = (bz + dT)
1183- if ((dl > dk))
1184- then throw((((((("Insufficient payment! Attached=" + aK(dk, 6)) + ", required=") + aK(bz, 6)) + "+") + aK(dT, 6)) + "(delivery fee)"))
1185- else {
1186- let aw = if (((dk - dl) > 0))
1187- then [ScriptTransfer(dW.caller, (dk - dl), ad)]
1188- else nil
1189- let dU = (bz / 100)
1190- let el = valueOrElse(getInteger(X), 0)
1191- $Tuple2(((aw :+ ScriptTransfer(aA, dU, ad)) :+ IntegerEntry(X, (el + dT))), $Tuple3(dI, dZ, eg))
1192- }
1193- }
1194- }
1195- }
1196- }
1197- }
1146+func exchangeResourcesLandDelivery (cL,V) = if (!(ab))
1147+ then throw("Delivery feature is turned off!")
1148+ else {
1149+ let dZ = bE()
1150+ if ((size(dW.payments) != 1))
1151+ then throw("exactly 1 payment must be attached")
1152+ else {
1153+ let dj = dW.payments[0]
1154+ let dk = dj.amount
1155+ if (if (!(isDefined(dj.assetId)))
1156+ then true
1157+ else (value(dj.assetId) != ad))
1158+ then throw("USDT payments only!")
1159+ else {
1160+ let em = dW.caller
1161+ let O = toString(em)
1162+ let en = value(assetInfo(fromBase58String(V)))
1163+ if (!(isDefined(getInteger(aB, M(V)))))
1164+ then throw((("NFT " + en.name) + " is not staked"))
1165+ else {
1166+ let eo = valueOrErrorMessage(getString(aB, K(V)), (("NFT " + en.name) + " is orphaned"))
1167+ if ((eo != O))
1168+ then throw((e + " is not yours"))
1169+ else {
1170+ let dy = aE(invoke(aB, "getWarehouseREADONLY", [V], nil))
1171+ let bX = split_4C(dy, ":")
1172+ let cJ = split(bX[x], "_")
1173+ let cQ = split(bX[y], "_")
1174+ let ey = cT(cJ, cQ, cL)
1175+ let ed = ey._1
1176+ let er = ey._2
1177+ let bz = ey._3
1178+ let ew = ey._4
1179+ let dG = makeString_2C([bX[w], makeString(ed, "_"), makeString(er, "_"), bX[z], bX[A]], ":")
1180+ let dI = aE(invoke(aB, "saveWarehouse", [dG, V], nil))
1181+ let eg = aH(invoke(aB, "updateAccStats", [O, fraction(a, ew, aj)], nil))
1182+ let ek = fraction(bz, aV, ai)
1183+ let dT = if ((l > ek))
1184+ then l
1185+ else ek
1186+ let dl = (bz + dT)
1187+ if ((dl > dk))
1188+ then throw((((((("Insufficient payment! Attached=" + aK(dk, 6)) + ", required=") + aK(bz, 6)) + "+") + aK(dT, 6)) + "(delivery fee)"))
1189+ else {
1190+ let aw = if (((dk - dl) > 0))
1191+ then [ScriptTransfer(dW.caller, (dk - dl), ad)]
1192+ else nil
1193+ let dU = (bz / 100)
1194+ let el = valueOrElse(getInteger(X), 0)
1195+ $Tuple2(((aw :+ ScriptTransfer(aA, dU, ad)) :+ IntegerEntry(X, (el + dT))), $Tuple3(dI, dZ, eg))
1196+ }
1197+ }
1198+ }
1199+ }
1200+ }
1201+ }
11981202
11991203
12001204
12011205 @Callable(dW)
12021206 func craftGoods (ez,eA) = {
12031207 let dZ = bE()
12041208 if ((size(dW.payments) != 1))
12051209 then throw("exactly 1 payment must be attached")
12061210 else {
12071211 let dj = dW.payments[0]
12081212 let dk = dj.amount
12091213 let eB = valueOrErrorMessage(dj.assetId, "WAVES can't be used as payment")
12101214 if ((eB != ad))
12111215 then throw("USDT payments only!")
12121216 else if ((dk != ai))
12131217 then throw("exactly 1 USDT must be attached as payment")
12141218 else if ((0 >= eA))
12151219 then throw("Quantity should be positive")
12161220 else {
12171221 let S = valueOrErrorMessage(getString(aB, P(toString(dW.caller))), "You don't have a duck staked")
12181222 let ea = split(valueOrElse(getString(aB, T(S)), g), "_")
12191223 if ((ea[I] != "M"))
12201224 then throw(("Duck location type should be Manufactory, but is " + ea[I]))
12211225 else {
12221226 let eC = ea[H]
12231227 let eb = bB(R(S))
12241228 let cQ = split(eb[F], "_")
12251229 if (if ((0 > ez))
12261230 then true
12271231 else (ez >= size(r)))
12281232 then throw(("Unknown product idx=" + toString(ez)))
12291233 else {
12301234 let aa = split(r[ez], "_")
12311235 if ((size(aa) != u))
12321236 then throw(("Fatal: unknown recipe: " + r[ez]))
12331237 else {
12341238 let eD = parseIntValue(aa[t])
12351239 if ((p[eD] != eC))
12361240 then throw(((("This product is available in " + p[eD]) + ", but you are in ") + eC))
12371241 else {
12381242 let eE = if ((eb[G] == ""))
12391243 then nil
12401244 else split_4C(eb[G], "_")
12411245 func eF (bG,eG) = {
12421246 let aI = bG._2
12431247 let eH = if ((size(eE) > aI))
12441248 then eE[aI]
12451249 else "0"
12461250 let dP = parseIntValue(eH)
12471251 let bg = (eA * v)
12481252 let eI = if ((aI == ez))
12491253 then toString((dP + bg))
12501254 else eH
12511255 $Tuple2((bG._1 :+ eI), (aI + 1))
12521256 }
12531257
12541258 let eJ = ( let ck = r
12551259 let cl = size(ck)
12561260 let cm = $Tuple2(nil, 0)
12571261 func cn (co,cp) = if ((cp >= cl))
12581262 then co
12591263 else eF(co, ck[cp])
12601264
12611265 func cq (co,cp) = if ((cp >= cl))
12621266 then co
12631267 else throw("List size exceeds 50")
12641268
12651269 cq(cn(cn(cn(cn(cn(cn(cn(cn(cn(cn(cn(cn(cn(cn(cn(cn(cn(cn(cn(cn(cn(cn(cn(cn(cn(cn(cn(cn(cn(cn(cn(cn(cn(cn(cn(cn(cn(cn(cn(cn(cn(cn(cn(cn(cn(cn(cn(cn(cn(cn(cm, 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
12661270 func eK (bG,bI) = {
12671271 let eL = (((parseIntValue(aa[bI]) * ah) * eA) * parseIntValue(aa[s]))
12681272 let eM = parseIntValue(cQ[bI])
12691273 if ((eL > eM))
12701274 then throw(((((((("You have " + aK(eM, 8)) + " of ") + n[bI]) + ", but recipe requires ") + aK(eL, 8)) + " for quantity ") + toString(eA)))
12711275 else if ((eL > 0))
12721276 then $Tuple2((bG._1 :+ toString((eM - eL))), (bG._2 + eL))
12731277 else $Tuple2((bG._1 :+ cQ[bI]), bG._2)
12741278 }
12751279
12761280 let eN = {
12771281 let ck = am
12781282 let cl = size(ck)
12791283 let cm = $Tuple2(nil, 0)
12801284 func cr (co,cp) = if ((cp >= cl))
12811285 then co
12821286 else eK(co, ck[cp])
12831287
12841288 func cs (co,cp) = if ((cp >= cl))
12851289 then co
12861290 else throw("List size exceeds 6")
12871291
12881292 cs(cr(cr(cr(cr(cr(cr(cm, 0), 1), 2), 3), 4), 5), 6)
12891293 }
12901294 let ee = makeString([eb[D], eb[E], makeString(eN._1, "_"), makeString_2C(eJ, "_")], ":")
12911295 let eO = aE(invoke(aB, "updateBackpack", [S, ee], nil))
12921296 let eg = aH(invoke(aB, "updateDuckStats", [S, fraction(b, eN._2, aj)], nil))
12931297 $Tuple2(nil, $Tuple3(eO, dZ, eg))
12941298 }
12951299 }
12961300 }
12971301 }
12981302 }
12991303 }
13001304 }
13011305
13021306
13031307
13041308 @Callable(dW)
13051309 func setWarehouseOrder (eP,V) = {
13061310 let em = dW.originCaller
13071311 let O = toString(em)
13081312 let eO = if ((em != aA))
13091313 then bD()
13101314 else false
13111315 let en = value(assetInfo(fromBase58String(V)))
13121316 if (!(isDefined(getInteger(aB, M(V)))))
13131317 then throw((("NFT " + en.name) + " is not staked"))
13141318 else {
13151319 let eo = valueOrErrorMessage(getString(aB, K(V)), (("NFT " + en.name) + " is orphaned"))
13161320 if (if ((em != aA))
13171321 then (eo != O)
13181322 else false)
13191323 then throw((e + " is not yours"))
13201324 else {
13211325 let eQ = split_4C(eP, ":")
13221326 let dy = aE(invoke(aB, "getWarehouseREADONLY", [V], nil))
13231327 let bX = split_4C(dy, ":")
13241328 let eR = split(bX[A], "_")
13251329 let eS = parseIntValue(eR[C])
13261330 let bd = U(V)
13271331 let bY = bc(bd)
13281332 let dX = bW(bX, bY, eQ)
13291333 let eT = dX._4
13301334 let eU = dX._5
13311335 let eV = dX._7
13321336 let eW = (eT + eU)
13331337 let eX = ((eS - eV) - eW)
13341338 if ((0 > eX))
13351339 then throw((((((("Attempt to reserve " + toString(eT)) + " space for buy orders, and ") + toString(eU)) + " space for sell orders (and occupied=") + toString(eV)) + "), leads to negative free space"))
13361340 else {
13371341 let dG = makeString_2C([bX[w], makeString(dX._1, "_"), makeString(dX._2, "_"), makeString_2C(dX._3, "_"), toString(eW)], ":")
13381342 let dI = aE(invoke(aB, "saveWarehouse", [dG, V], nil))
13391343 let eY = dX._6
13401344 let eZ = if ((eY > 0))
13411345 then if ((size(dW.payments) != 1))
13421346 then throw("exactly 1 payment must be attached")
13431347 else {
13441348 let dj = dW.payments[0]
13451349 let dk = dj.amount
13461350 let eB = valueOrErrorMessage(dj.assetId, "WAVES can't be used as payment")
13471351 if ((eB != ad))
13481352 then throw("USDT payments only!")
13491353 else if ((dk != eY))
13501354 then throw(("Payment needed is " + toString(eY)))
13511355 else [StringEntry(bd, eP)]
13521356 }
13531357 else if ((eY == 0))
13541358 then if ((size(dW.payments) != 0))
13551359 then throw("No payments needed")
13561360 else [StringEntry(bd, eP)]
13571361 else if ((size(dW.payments) != 0))
13581362 then throw("No payments needed")
13591363 else [ScriptTransfer(addressFromStringValue(eo), -(eY), ad), StringEntry(bd, eP)]
13601364 $Tuple2(eZ, $Tuple2(eO, dI))
13611365 }
13621366 }
13631367 }
13641368 }
13651369
13661370
13671371
13681372 @Callable(dW)
13691373 func acceptWarehouseOrder (dp,do,S) = {
13701374 let dZ = bE()
13711375 let dd = dW.originCaller
13721376 let cY = toString(dd)
13731377 let fa = valueOrErrorMessage(getString(aB, P(cY)), "You don't have a duck staked")
13741378 let ea = valueOrElse(getString(aB, T(fa)), g)
13751379 let fb = split(value(ea), "_")
13761380 if ((fb[I] != "L"))
13771381 then throw((("Duck location type is " + fb[I]) + ", but should be L"))
13781382 else if ((fa != S))
13791383 then throw(((("Your staked duck is " + fa) + ", but passed ") + S))
13801384 else {
13811385 let bC = R(S)
13821386 let eb = bB(bC)
13831387 let dq = split(eb[E], "_")
13841388 let dr = split(eb[F], "_")
13851389 let ds = if ((eb[G] == ""))
13861390 then nil
13871391 else split_4C(eb[G], "_")
13881392 let fc = dn(do, cY, dp, dq, dr, ds)
13891393 let fd = fc._1
13901394 let fe = fc._2
13911395 let ff = fc._3
13921396 let fg = fc._4
13931397 let cX = fc._5
13941398 let df = fc._6
13951399 let fh = fc._7
13961400 let dh = fc._8
13971401 let fi = fc._9
13981402 let dJ = fc._10
13991403 let fj = [fd, cW(cX, cY, 0)]
14001404 let fk = de(df, dW.payments, dh, 0)
14011405 let fl = makeString_2C([eb[D], makeString(fe, "_"), makeString(ff, "_"), makeString_2C(fg, "_")], ":")
14021406 let fm = aE(invoke(aB, "updateBackpack", [S, fl], nil))
14031407 let fn = aH(invoke(aB, "updateDuckStats", [S, fraction(d, fh, aj)], nil))
14041408 $Tuple2((fj ++ fk), $Tuple5(dZ, fi, fm, fn, dJ))
14051409 }
14061410 }
14071411
14081412
14091413
14101414 @Callable(dW)
14111415 func acceptShopOrderDuckDelivery (fo,do) = if (!(ab))
14121416 then throw("Delivery feature is turned off!")
14131417 else {
14141418 let dZ = bE()
14151419 let dd = dW.originCaller
14161420 let cY = toString(dd)
14171421 let S = valueOrErrorMessage(getString(aB, P(cY)), "You don't have a duck staked")
14181422 let bC = R(S)
14191423 let eb = bB(bC)
14201424 let dq = split(eb[E], "_")
14211425 let dr = split(eb[F], "_")
14221426 let ds = if ((eb[G] == ""))
14231427 then nil
14241428 else split_4C(eb[G], "_")
14251429 let fp = dn(do, cY, fo, dq, dr, ds)
14261430 let fd = fp._1
14271431 let fe = fp._2
14281432 let ff = fp._3
14291433 let fg = fp._4
14301434 let cX = fp._5
14311435 let df = fp._6
14321436 let fh = fp._7
14331437 let dh = fp._8
14341438 let fi = fp._9
14351439 let dJ = fp._10
14361440 let fq = fraction((df + cX), aU, ai)
14371441 let fr = if ((k > fq))
14381442 then k
14391443 else fq
14401444 let di = fraction(fr, df, (df + cX))
14411445 let cZ = (fr - di)
14421446 let el = valueOrElse(getInteger(X), 0)
14431447 let fj = [fd, cW(cX, cY, cZ)]
14441448 let fk = de(df, dW.payments, dh, di)
14451449 let fl = makeString_2C([eb[D], makeString(fe, "_"), makeString(ff, "_"), makeString_2C(fg, "_")], ":")
14461450 let fm = aE(invoke(aB, "updateBackpack", [S, fl], nil))
14471451 let fn = aH(invoke(aB, "updateDuckStats", [S, fraction(d, fh, aj)], nil))
14481452 $Tuple2(((fj ++ fk) :+ IntegerEntry(X, (el + fr))), $Tuple5(dZ, fi, fm, fn, dJ))
14491453 }
14501454
14511455
14521456
14531457 @Callable(dW)
14541458 func acceptShopOrderLandDelivery (fo,do,fs) = if (!(ab))
14551459 then throw("Delivery feature is turned off!")
14561460 else {
14571461 let dZ = bE()
14581462 let dd = dW.originCaller
14591463 let cY = toString(dd)
14601464 let en = value(assetInfo(fromBase58String(fs)))
14611465 if (!(isDefined(getInteger(aB, M(fs)))))
14621466 then throw((("NFT " + en.name) + " is not staked"))
14631467 else {
14641468 let eo = valueOrErrorMessage(getString(aB, K(fs)), (("NFT " + en.name) + " is orphaned"))
14651469 if ((eo != cY))
14661470 then throw((e + " is not yours"))
14671471 else {
14681472 let dy = aE(invoke(aB, "getWarehouseREADONLY", [fs], nil))
14691473 let bX = split_4C(dy, ":")
14701474 let cJ = split(bX[x], "_")
14711475 let cQ = split(bX[y], "_")
14721476 let eE = if ((bX[z] == ""))
14731477 then nil
14741478 else split(bX[z], "_")
14751479 let ft = dn(do, cY, fo, cJ, cQ, eE)
14761480 let fd = ft._1
14771481 let fe = ft._2
14781482 let ff = ft._3
14791483 let fg = ft._4
14801484 let cX = ft._5
14811485 let df = ft._6
14821486 let fh = ft._7
14831487 let dh = ft._8
14841488 let fi = ft._9
14851489 let dJ = ft._10
14861490 let fq = fraction((df + cX), aU, ai)
14871491 let fr = if ((k > fq))
14881492 then k
14891493 else fq
14901494 let di = fraction(fr, df, (df + cX))
14911495 let cZ = (fr - di)
14921496 let el = valueOrElse(getInteger(X), 0)
14931497 let fj = [fd, cW(cX, cY, cZ)]
14941498 let fk = de(df, dW.payments, dh, di)
14951499 let dG = makeString_2C([bX[w], makeString(fe, "_"), makeString(ff, "_"), makeString(fg, "_"), bX[A]], ":")
14961500 let dI = aE(invoke(aB, "saveWarehouse", [dG, fs], nil))
14971501 let eg = aH(invoke(aB, "updateAccStats", [cY, fraction(d, fh, aj)], nil))
14981502 $Tuple2(((fj ++ fk) :+ IntegerEntry(X, (el + fr))), $Tuple5(dZ, fi, dI, eg, dJ))
14991503 }
15001504 }
15011505 }
15021506
15031507
15041508
15051509 @Callable(dW)
15061510 func sellProductsToES (cL) = {
15071511 let dZ = bE()
15081512 if ((size(dW.payments) != 0))
15091513 then throw("No payments needed")
15101514 else {
15111515 let S = valueOrErrorMessage(getString(aB, P(toString(dW.caller))), "You don't have a duck staked")
15121516 let ea = split(valueOrElse(getString(aB, T(S)), g), "_")
15131517 if ((ea[I] != "A"))
15141518 then throw(("Duck location type should be Airport, but is " + ea[I]))
15151519 else {
15161520 let eb = bB(R(S))
15171521 let eE = if ((eb[G] == ""))
15181522 then nil
15191523 else split_4C(eb[G], "_")
15201524 let fu = W()
15211525 let fv = getString(fu)
15221526 let fw = if (isDefined(fv))
15231527 then split_4C(value(fv), "_")
15241528 else nil
15251529 func fx (bG,fy) = {
15261530 let bI = bG._1
15271531 let eA = if ((size(cL) > bI))
15281532 then cL[bI]
15291533 else 0
15301534 if ((0 > eA))
15311535 then throw("Quantity cannot be negative")
15321536 else {
15331537 let aa = split(fy, "_")
15341538 if ((size(aa) != u))
15351539 then throw(("Fatal: unknown recipe: " + fy))
15361540 else {
15371541 let fz = (i * v)
15381542 let fA = if ((size(fw) > bI))
15391543 then parseIntValue(fw[bI])
15401544 else 0
15411545 let fB = (fz - fA)
15421546 if ((eA > fB))
15431547 then throw(((("Warehouse can buy only " + toString(fB)) + " of ") + o[bI]))
15441548 else {
15451549 let es = Z(aa)
15461550 let fC = fraction((es * j), h, (aj * v))
15471551 let fD = if ((size(eE) > bI))
15481552 then parseIntValue(eE[bI])
15491553 else 0
15501554 if ((eA > fD))
15511555 then throw(((("You have only " + toString(fD)) + " of ") + o[bI]))
15521556 else $Tuple5((bI + 1), (bG._2 + (fC * eA)), (bG._3 :+ toString((fD - eA))), (bG._4 :+ toString((fA + eA))), (bG._5 + (es * eA)))
15531557 }
15541558 }
15551559 }
15561560 }
15571561
15581562 let eN = {
15591563 let ck = r
15601564 let cl = size(ck)
15611565 let cm = $Tuple5(0, 0, nil, nil, 0)
15621566 func cn (co,cp) = if ((cp >= cl))
15631567 then co
15641568 else fx(co, ck[cp])
15651569
15661570 func cq (co,cp) = if ((cp >= cl))
15671571 then co
15681572 else throw("List size exceeds 50")
15691573
15701574 cq(cn(cn(cn(cn(cn(cn(cn(cn(cn(cn(cn(cn(cn(cn(cn(cn(cn(cn(cn(cn(cn(cn(cn(cn(cn(cn(cn(cn(cn(cn(cn(cn(cn(cn(cn(cn(cn(cn(cn(cn(cn(cn(cn(cn(cn(cn(cn(cn(cn(cn(cm, 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)
15711575 }
15721576 let fl = makeString_2C([eb[D], eb[E], eb[F], makeString_2C(eN._3, "_")], ":")
15731577 let fm = aE(invoke(aB, "updateBackpack", [S, fl], nil))
15741578 let eg = aH(invoke(aB, "updateDuckStats", [S, fraction(c, eN._5, (aj * 10))], nil))
15751579 $Tuple2([StringEntry(fu, makeString_2C(eN._4, "_")), ScriptTransfer(dW.caller, eN._2, ad)], $Tuple3(fm, dZ, eg))
15761580 }
15771581 }
15781582 }
15791583
15801584
15811585
15821586 @Callable(dW)
15831587 func updateEsStorage (fE) = if ((dW.caller != aB))
15841588 then throw("Permission denied")
15851589 else $Tuple2([StringEntry(W(), fE)], fE)
15861590
15871591
15881592
15891593 @Callable(dW)
15901594 func updateDeliveryLocked (fF) = if ((dW.caller != aB))
15911595 then throw("Permission denied")
15921596 else $Tuple2([IntegerEntry(Y, fF)], fF)
15931597
15941598
15951599
15961600 @Callable(dW)
15971601 func sendDeliveryReward (O) = if ((dW.caller != aB))
15981602 then throw("Permission denied")
15991603 else {
16001604 let el = valueOrElse(getInteger(X), 0)
16011605 let fG = valueOrElse(getInteger(Y), 0)
16021606 $Tuple2([ScriptTransfer(addressFromStringValue(O), k, ad), IntegerEntry(X, (el - k)), IntegerEntry(Y, (fG - k))], k)
16031607 }
16041608
16051609

github/deemru/w8io/c3f4982 
161.15 ms