tx · FHa36LfMYarpM1x3WUjRJ1NWedUUQoocCnCMmokTWDCp

3N8y4wxX3JC4TdrCJBXX16SjWf6X256hrep:  -0.06200000 Waves

2023.11.14 16:57 [2843108] smart account 3N8y4wxX3JC4TdrCJBXX16SjWf6X256hrep > SELF 0.00000000 Waves

{ "type": 13, "id": "FHa36LfMYarpM1x3WUjRJ1NWedUUQoocCnCMmokTWDCp", "fee": 6200000, "feeAssetId": null, "timestamp": 1699970234460, "version": 2, "chainId": 84, "sender": "3N8y4wxX3JC4TdrCJBXX16SjWf6X256hrep", "senderPublicKey": "7v5L7QkXxfkirALdyqmox38QCsa9jtfAtgUfHTh34eWq", "proofs": [ "5Yw6hGqoQhUxq4nkZUSWvRBaSjmDjFSaS5synRfMDU4iXaCecZpAHhuts2HuJGVEQ1tr6sf1JSFY2Uk8ZXEbyDFd" ], "script": "base64:BgKVAQgCEgQKAggYEgMKAQgSBAoCERESBAoCCAESAwoBARIFCgMREQgSBgoEEREICBIECgIRERIFCgMREQgSBgoEEREICBIDCgEREgMKARESBAoCEQgSBAoCAQESBQoDAQEIEgYKBAEBCAgSBAoCCAgSBQoDCAgIEgQKAggIEgUKAwgICBIDCgEREgMKAQgSAwoBARIDCgEIaQAHeHBUcmFkZQCQTgAHeHBDcmFmdACQTgAKeHBTZWxsVG9FcwCQTgAGeHBTaG9wAJBOAApMQU5EUFJFRklYAgRMQU5EAAZOVU1SRVMABgAPREVGQVVMVExPQ0FUSU9OAg9BZnJpY2FfRl9BZnJpY2EAEFJFU09VUkNFUFJJQ0VNSU4A1bUCAA1FU01BWFBBQ0tBR0VTAAoACUVTQlVZQ09FRgAEABVNSU5fVVNEVF9GRUVfREVMSVZFUlkA0IYDABdNSU5fVVNEVF9GRUVfREVMSVZFUlkxNQD4yQQAD0NSQUZUX1VTRFRfQ09TVADAhD0AFENSQUZUX0RFTElWRVJZX0NPRUZGAAoAFVVTRFQyQUNSRVNfTVVMVElQTElFUgAKAAhyZXNUeXBlcwkAzAgCAgNPaWwJAMwIAgIDT3JlCQDMCAICBFdvb2QJAMwIAgIEU2FuZAkAzAgCAgRDbGF5CQDMCAICB09yZ2FuaWMFA25pbAAIbWF0VHlwZXMJAMwIAgIERnVlbAkAzAgCAgVNZXRhbAkAzAgCAgVQbGFuawkAzAgCAgVHbGFzcwkAzAgCAgdQbGFzdGljCQDMCAICB1Byb3RlaW4FA25pbAAJcHJvZFR5cGVzCQDMCAICEEZpcnN0IEFpZCBLaXQgTDEJAMwIAgIQRmlyc3QgQWlkIEtpdCBMMgkAzAgCAhBGaXJzdCBBaWQgS2l0IEwzCQDMCAICC0JhY2twYWNrIEwxCQDMCAICC0JhY2twYWNrIEwyCQDMCAICC0JhY2twYWNrIEwzCQDMCAICDkZvb2QgUmF0aW9uIEwxCQDMCAICDkZvb2QgUmF0aW9uIEwyCQDMCAICDkZvb2QgUmF0aW9uIEwzCQDMCAICC0pldCBQYWNrIEwxCQDMCAICC0pldCBQYWNrIEwyCQDMCAICC0pldCBQYWNrIEwzCQDMCAICCVNoaWVsZCBMMQkAzAgCAglTaGllbGQgTDIJAMwIAgIJU2hpZWxkIEwzCQDMCAICB01pbmUgTDEJAMwIAgIHTWluZSBMMgkAzAgCAgdNaW5lIEwzCQDMCAICB1RyYXAgTDEJAMwIAgIHVHJhcCBMMgkAzAgCAgdUcmFwIEwzCQDMCAICDEthYm9vbURvZyBMMQkAzAgCAgxLYWJvb21Eb2cgTDIJAMwIAgIMS2Fib29tRG9nIEwzBQNuaWwACmNvbnRpbmVudHMJAMwIAgIIQW1lcmljYXMJAMwIAgIGRXVyb3BlCQDMCAICBEFzaWEJAMwIAgIGQWZyaWNhCQDMCAICB09jZWFuaWEFA25pbAAJQ09FRkYyTUFUAICt4gQAEHByb2R1Y3Rpb25NYXRyaXgJAMwIAgIlOF84XzhfMTdfMTdfNDJfMTJfMF8zMF8wLDAsMCwwLDAsMCwwXwkAzAgCAiU4XzhfOF8xN18xN180Ml8yNF8wXzYwXzAsMCw1LDIsMCwwLDBfCQDMCAICJzhfOF84XzE3XzE3XzQyXzM2XzBfMTIwXzAsMCwxMCw0LDAsMCwwXwkAzAgCAik4XzE5XzE5XzhfMjdfMTlfMjZfMV8yMF8wLDAsMCwwLDAsMCwwXzAwMQkAzAgCAik4XzE5XzE5XzhfMjdfMTlfNTJfMV80MF8wLDAsMCwwLDAsMCwwXzAwMQkAzAgCAik4XzE5XzE5XzhfMjdfMTlfNzhfMV84MF8wLDAsMCwwLDAsMCwwXzAwMQkAzAgCAiU4XzhfOF84XzhfNjBfMTNfMl8yXzAsMCwwLDAsMCwwLDBfMDExCQDMCAICJThfOF84XzhfOF82MF8yNl8yXzRfMCwwLDAsMCwwLDAsMF8wMTEJAMwIAgIlOF84XzhfOF84XzYwXzM5XzJfOF8wLDAsMCwwLDAsMCwwXzAxMQkAzAgCAikzMF8zMF8zXzE3XzE3XzNfMzBfM18zMF8wLDAsMCwwLDAsMCwwXzExMQkAzAgCAikzMF8zMF8zXzE3XzE3XzNfNjBfM181MF8wLDAsMCwwLDAsMCwwXzExMQkAzAgCAikzMF8zMF8zXzE3XzE3XzNfOTBfM183MF8wLDAsMCwwLDAsMCwwXzExMQkAzAgCAisxOF8xOF8xMF8xOF8xOF8xOF8xMV80XzEwXzAsMCwwLDAsMCwwLDBfMjAxCQDMCAICKzE4XzE4XzEwXzE4XzE4XzE4XzIyXzRfMjBfMCwwLDAsMCwwLDAsMF8yMDEJAMwIAgIrMThfMThfMTBfMThfMThfMThfMzNfNF8zMF8wLDAsMCwwLDAsMCwwXzIwMQkAzAgCAio0XzEzXzIyXzRfMzVfMjJfMjNfMF81MCwxLDBfMCwwLDAsMCwwLDAsMF8JAMwIAgIqNF8xM18yMl80XzM1XzIyXzQ2XzBfNTAsMSwxXzAsMiw1LDAsMCwwLDBfCQDMCAICKzRfMTNfMjJfNF8zNV8yMl82OV8wXzUwLDIsMV8wLDUsMTAsMCwwLDAsMF8JAMwIAgIqNV8yNV80MF81XzEwXzE1XzIwXzFfMzAsMSwxXzAsMCwwLDAsMCwwLDBfCQDMCAICKjVfMjVfNDBfNV8xMF8xNV80MF8xXzMwLDEsMl8yLDEsMywwLDAsMCwwXwkAzAgCAio1XzI1XzQwXzVfMTBfMTVfNjBfMV8zMCwxLDNfNSwyLDgsMCwwLDAsMF8JAMwIAgIlMjNfMjNfNV8yMF8yM182XzM1XzJfMF8wLDAsMCwwLDAsMCwwXwkAzAgCAiUyM18yM181XzIwXzIzXzZfNzBfMl8wXzAsMCwwLDAsMCwwLDBfCQDMCAICJjIzXzIzXzVfMjBfMjNfNl8xMDVfMl8wXzAsMCwwLDAsMCwwLDBfBQNuaWwACXJJZHhDb2VmZgAGAA1ySWR4Q29udGluZW50AAcAClJFQ0lQRVNJWkUACwAOUFJPRFVDVFBLR1NJWkUACgALd2hJZHhMZXZlbHMAAAAId2hJZHhSZXMAAQAId2hJZHhNYXQAAgAJd2hJZHhQcm9kAAMACXdoSWR4TE9GVAAEAAl2b2xMb2NrZWQAAAAIdm9sVG90YWwAAwAKYnBJZHhMZXZlbAAAAAhicElkeFJlcwABAAhicElkeE1hdAACAAlicElkeFByb2QAAwAPbG9jSWR4Q29udGluZW50AAAACmxvY0lkeFR5cGUAAQAIbG9jSWR4SWQAAgEVa2V5TGFuZEFzc2V0SWRUb093bmVyAQdhc3NldElkCQCsAgICA25vXwUHYXNzZXRJZAEWa2V5U3Rha2VkVGltZUJ5QXNzZXRJZAEHYXNzZXRJZAkArAICAgNzdF8FB2Fzc2V0SWQBD2tleUFkZHJlc3NSZWZCeQEEYWRkcgkArAICAglhY2NSZWZCeV8FBGFkZHIBFGtleVN0YWtlZER1Y2tCeU93bmVyAQlvd25lckFkZHIJAKwCAgISc3Rha2VkRHVja0J5T3duZXJfBQlvd25lckFkZHIBEWtleUJhY2twYWNrQnlEdWNrAQtkdWNrQXNzZXRJZAkArAICAgliYWNrUGFja18FC2R1Y2tBc3NldElkAQ9rZXlEdWNrTG9jYXRpb24BC2R1Y2tBc3NldElkCQCsAgICDWR1Y2tMb2NhdGlvbl8FC2R1Y2tBc3NldElkAQ5rZXlPcmRlckJ5TGFuZAELbGFuZEFzc2V0SWQJAKwCAgIKbGFuZE9yZGVyXwULbGFuZEFzc2V0SWQBDmtleUVzV2FyZWhvdXNlAAIaZW1lcmdlbmN5V2FyZWhvdXNlUHJvZHVjdHMAD2RlbGl2ZXJ5RnVuZEtleQIMZGVsaXZlcnlGdW5kABFkZWxpdmVyeUxvY2tlZEtleQIOZGVsaXZlcnlMb2NrZWQBEmdldFJlY2lwZU1hdGVyaWFscwEGcmVjaXBlCQBoAgkBDXBhcnNlSW50VmFsdWUBCQCRAwIFBnJlY2lwZQUJcklkeENvZWZmBQlDT0VGRjJNQVQABWNoYWluCQDJAQIJAMoBAggFBHRoaXMFYnl0ZXMAAQABAAt1c2R0QXNzZXRJZAQHJG1hdGNoMAUFY2hhaW4DCQAAAgEBVwUHJG1hdGNoMAEghNp6sggDP07Ru8qO7ouTvMmC3Qtd+geWqNQj+agP/7kDCQAAAgEBVAUHJG1hdGNoMAEgVbHYn3KHgu/l41uNrAWrZd6aQ6EvFrsF8xq3h6XxxRgJAAIBAg1Vbmtub3duIGNoYWluABVkZWZhdWx0UmVzdEFkZHJlc3NTdHIEByRtYXRjaDAFBWNoYWluAwkAAAIBAVcFByRtYXRjaDACIzNQUUN1dkZidmg0TGtQVW5yblUxejNqbmJBMXA5bTNXTmh2AwkAAAIBAVQFByRtYXRjaDACIzNNdW1rR0d6dENLQVhwV0RxeGtkZG9mcVhTVWJxUWt2U0p5CQACAQINVW5rbm93biBjaGFpbgADU0VQAgJfXwAFTVVMVDUAoI0GAAVNVUxUNgDAhD0ABU1VTFQ4AIDC1y8ABk1VTFQxMACAyK+gJQAOTUlOU0hPUFBBWU1FTlQAoI0GAAVJVEVSNgkAzAgCAAAJAMwIAgABCQDMCAIAAgkAzAgCAAMJAMwIAgAECQDMCAIABQUDbmlsAQ9nZXRTdHJpbmdPckZhaWwCB2FkZHJlc3MDa2V5CQETdmFsdWVPckVycm9yTWVzc2FnZQIJAJ0IAgUHYWRkcmVzcwUDa2V5CQC5CQIJAMwIAgIKbWFuZGF0b3J5IAkAzAgCCQClCAEFB2FkZHJlc3MJAMwIAgIBLgkAzAgCBQNrZXkJAMwIAgIPIGlzIG5vdCBkZWZpbmVkBQNuaWwCAAARSWR4Q2ZnU3Rha2luZ0RhcHAAAQAUSWR4Q2ZnSW52ZXN0RnVuZERhcHAABgAPSWR4Q2ZnQWNyZXNEYXBwAAgBCmtleVJlc3RDZmcAAg4lc19fcmVzdENvbmZpZwEOa2V5UmVzdEFkZHJlc3MAAgwlc19fcmVzdEFkZHIBEXJlYWRSZXN0Q2ZnT3JGYWlsAQRyZXN0CQC8CQIJAQ9nZXRTdHJpbmdPckZhaWwCBQRyZXN0CQEKa2V5UmVzdENmZwAFA1NFUAEYZ2V0Q29udHJhY3RBZGRyZXNzT3JGYWlsAgdyZXN0Q2ZnA2lkeAkBE3ZhbHVlT3JFcnJvck1lc3NhZ2UCCQCmCAEJAJEDAgUHcmVzdENmZwUDaWR4CQCsAgICKlJlc3QgY2ZnIGRvZXNuJ3QgY29udGFpbiBhZGRyZXNzIGF0IGluZGV4IAkApAMBBQNpZHgADHJlc3RDb250cmFjdAkBEUBleHRyTmF0aXZlKDEwNjIpAQkBC3ZhbHVlT3JFbHNlAgkAnQgCBQR0aGlzCQEOa2V5UmVzdEFkZHJlc3MABRVkZWZhdWx0UmVzdEFkZHJlc3NTdHIAB3Jlc3RDZmcJARFyZWFkUmVzdENmZ09yRmFpbAEFDHJlc3RDb250cmFjdAAPc3Rha2luZ0NvbnRyYWN0CQEYZ2V0Q29udHJhY3RBZGRyZXNzT3JGYWlsAgUHcmVzdENmZwURSWR4Q2ZnU3Rha2luZ0RhcHAAEmludmVzdEZ1bmRDb250cmFjdAkBGGdldENvbnRyYWN0QWRkcmVzc09yRmFpbAIFB3Jlc3RDZmcFFElkeENmZ0ludmVzdEZ1bmREYXBwAA1hY3Jlc0NvbnRyYWN0CQEYZ2V0Q29udHJhY3RBZGRyZXNzT3JGYWlsAgUHcmVzdENmZwUPSWR4Q2ZnQWNyZXNEYXBwAQhhc1N0cmluZwEBdgQHJG1hdGNoMAUBdgMJAAECBQckbWF0Y2gwAgZTdHJpbmcEAXMFByRtYXRjaDAFAXMJAAIBAhhmYWlsIHRvIGNhc3QgaW50byBTdHJpbmcBBWFzSW50AQF2BAckbWF0Y2gwBQF2AwkAAQIFByRtYXRjaDACA0ludAQBbgUHJG1hdGNoMAUBbgkAAgECFWZhaWwgdG8gY2FzdCBpbnRvIEludAEKa2V5QmxvY2tlZAACEGNvbnRyYWN0c0Jsb2NrZWQBCmZpeGVkUG9pbnQCA3ZhbAhkZWNpbWFscwQGdGVuUG93CQBsBgAKAAAFCGRlY2ltYWxzAAAAAAUERE9XTgQHbG93UGFydAkApAMBCQBqAgUDdmFsBQZ0ZW5Qb3cEBnplcm9lcwkAsAICCQCkAwEFBnRlblBvdwkAZAIAAQkAsQIBBQdsb3dQYXJ0CQCsAgIJAKwCAgkArAICCQCkAwEJAGkCBQN2YWwFBnRlblBvdwIBLgUGemVyb2VzBQdsb3dQYXJ0ABNGQUNUT1JZTUFYV0FSRUhPVVNFAIDIr6AlAA5TRUxMTVVMVElQTElFUgDIAQANQlVZTVVMVElQTElFUgCsAgAKQVVDVElPTkZFRQCQTgAMREVMSVZFUllfRkVFAJBOAA5ERUxJVkVSWV9GRUUxNQCYdQEea2V5RmFjdG9yeVdhcmVob3VzZUJ5SWRBbmRUeXBlAglmYWN0b3J5SWQHcmVzVHlwZQkArAICCQCsAgIJAKwCAgIbZmFjdG9yeVdoQnlDb250aW5lbnRBbmRSZXNfBQlmYWN0b3J5SWQCAV8JAKQDAQUHcmVzVHlwZQAJb3JkSWR4UmVzAAAACW9yZElkeE1hdAABAApvcmRJZHhQcm9kAAIBCGdldE9yZGVyAQZvcmRLZXkEAXAJALUJAgkBC3ZhbHVlT3JFbHNlAgkAoggBBQZvcmRLZXkCMDBAMF8wQDBfMEAwXzBAMF8wQDBfMEAwOjBAMF8wQDBfMEAwXzBAMF8wQDBfMEAwOgIBOgkAzAgCAwkAAAIJAJADAQkAtQkCCQCRAwIFAXAFCW9yZElkeFJlcwIBXwUGTlVNUkVTCQCRAwIFAXAFCW9yZElkeFJlcwIXMEAwXzBAMF8wQDBfMEAwXzBAMF8wQDAJAMwIAgMJAAACCQCQAwEJALUJAgkAkQMCBQFwBQlvcmRJZHhNYXQCAV8FBk5VTVJFUwkAkQMCBQFwBQlvcmRJZHhNYXQCFzBAMF8wQDBfMEAwXzBAMF8wQDBfMEAwCQDMCAIJAJEDAgUBcAUKb3JkSWR4UHJvZAUDbmlsAQh0b1ZvbHVtZQMGYW1vdW50B3BrZ1NpemUJaXNQcm9kdWN0AwUJaXNQcm9kdWN0BARwa2dzAwkAZwIFBmFtb3VudAAACQBpAgkAZQIJAGQCBQZhbW91bnQFB3BrZ1NpemUAAQUHcGtnU2l6ZQkBAS0BCQBpAgkAZQIJAGQCCQEBLQEFBmFtb3VudAUHcGtnU2l6ZQABBQdwa2dTaXplCQBoAgUEcGtncwUFTVVMVDgFBmFtb3VudAEMc2VsbEludGVybmFsBAVsb2NJZAdyZXNUeXBlBmFtb3VudAhtaW5QcmljZQQFd2hLZXkJAR5rZXlGYWN0b3J5V2FyZWhvdXNlQnlJZEFuZFR5cGUCBQVsb2NJZAUHcmVzVHlwZQQCdzAJAQt2YWx1ZU9yRWxzZQIJAJ8IAQUFd2hLZXkAAAQCcjADCQBmAgUCdzAFE0ZBQ1RPUllNQVhXQVJFSE9VU0UAAAMJAGYCCQBkAgUCdzAFBmFtb3VudAUTRkFDVE9SWU1BWFdBUkVIT1VTRQkAZQIFE0ZBQ1RPUllNQVhXQVJFSE9VU0UFAncwBQZhbW91bnQEDHVzZHRSZWNlaXZlZAkAZAIJAGsDBQJyMAkAZQIJAGgCBQ5TRUxMTVVMVElQTElFUgUQUkVTT1VSQ0VQUklDRU1JTgkAawMJAGQCCQBoAgBkBQJ3MAkAaAIAMgUCcjAFEFJFU09VUkNFUFJJQ0VNSU4FE0ZBQ1RPUllNQVhXQVJFSE9VU0UFBk1VTFQxMAkAawMJAGUCBQZhbW91bnQFAnIwBRBSRVNPVVJDRVBSSUNFTUlOBQVNVUxUOAQFbWluOTkJAGUCBQhtaW5QcmljZQkAaQIFCG1pblByaWNlAGQDCQBmAgkAaAIFBW1pbjk5BQZhbW91bnQJAGgCBQx1c2R0UmVjZWl2ZWQFBU1VTFQ4CQACAQkArAICCQCsAgIJAKwCAgkArAICCQCsAgIJAKwCAgkArAICCQCsAgIJAKwCAgkArAICAg9BY3R1YWwgcHJpY2UgPSAJAKQDAQUMdXNkdFJlY2VpdmVkAgMgLyAJAKQDAQUGYW1vdW50Ag4gPCBtaW5QcmljZSA9IAkApAMBBQhtaW5QcmljZQIDLCAoBQVsb2NJZAICLCAJAJEDAgUIcmVzVHlwZXMFB3Jlc1R5cGUCASkJAJQKAgkBDEludGVnZXJFbnRyeQIFBXdoS2V5CQBkAgUCdzAFBmFtb3VudAUMdXNkdFJlY2VpdmVkAQtidXlJbnRlcm5hbAQFbG9jSWQHbWF0VHlwZQZhbW91bnQIbWF4UHJpY2UEBXdoS2V5CQEea2V5RmFjdG9yeVdhcmVob3VzZUJ5SWRBbmRUeXBlAgUFbG9jSWQFB21hdFR5cGUEAncwCQELdmFsdWVPckVsc2UCCQCfCAEFBXdoS2V5AAAEAm0xAwkAZgIFAncwBRNGQUNUT1JZTUFYV0FSRUhPVVNFCQCXAwEJAMwIAgUGYW1vdW50CQDMCAIJAGUCBQJ3MAUTRkFDVE9SWU1BWFdBUkVIT1VTRQUDbmlsAAAEAm0wCQCXAwEJAMwIAgUCdzAJAMwIAgkAZQIFBmFtb3VudAUCbTEFA25pbAQBbQkAZAIFAm0wBQJtMQQFdzBtaW4JAJcDAQkAzAgCBQJ3MAkAzAgCBRNGQUNUT1JZTUFYV0FSRUhPVVNFBQNuaWwECXVzZHRTcGVudAkAZAIJAGsDBQJtMAkAZQIJAGgCBQ1CVVlNVUxUSVBMSUVSBRBSRVNPVVJDRVBSSUNFTUlOCQBrAwkAZQIJAGgCAGQFBXcwbWluCQBoAgAyBQJtMAUQUkVTT1VSQ0VQUklDRU1JTgUTRkFDVE9SWU1BWFdBUkVIT1VTRQUGTVVMVDEwCQBrAwUCbTEJAGgCAAIFEFJFU09VUkNFUFJJQ0VNSU4FBU1VTFQ4BAZtYXgxMDEJAGQCBQhtYXhQcmljZQkAaQIFCG1heFByaWNlAGQDCQBmAgkAaAIFCXVzZHRTcGVudAUFTVVMVDgJAGgCBQZtYXgxMDEFAW0JAAIBCQCsAgIJAKwCAgkArAICCQCsAgIJAKwCAgkArAICCQCsAgIJAKwCAgkArAICCQCsAgICD0FjdHVhbCBwcmljZSA9IAkApAMBBQl1c2R0U3BlbnQCAyAvIAkApAMBBQFtAg4gPiBtYXhQcmljZSA9IAkApAMBBQhtYXhQcmljZQIDLCAoBQVsb2NJZAICLCAJAJEDAgUIbWF0VHlwZXMFB21hdFR5cGUCASkJAJUKAwkBDEludGVnZXJFbnRyeQIFBXdoS2V5CQBlAgUCdzAFAW0FCXVzZHRTcGVudAUBbQELZ2V0QmFja3BhY2sBBWJwS2V5BAFwCQC8CQIJAQt2YWx1ZU9yRWxzZQIJAJ0IAgUPc3Rha2luZ0NvbnRyYWN0BQVicEtleQIaMDowXzBfMF8wXzBfMDowXzBfMF8wXzBfMDoCAToJAMwIAgkApAMBCQELdmFsdWVPckVsc2UCCQC2CQEJAJEDAgUBcAUKYnBJZHhMZXZlbAAACQDMCAIDCQAAAgkAkAMBCQC1CQIJAJEDAgUBcAUIYnBJZHhSZXMCAV8FBk5VTVJFUwkAkQMCBQFwBQhicElkeFJlcwILMF8wXzBfMF8wXzAJAMwIAgMJAAACCQCQAwEJALUJAgkAkQMCBQFwBQhicElkeE1hdAIBXwUGTlVNUkVTCQCRAwIFAXAFCGJwSWR4TWF0AgswXzBfMF8wXzBfMAkAzAgCCQCRAwIFAXAFCWJwSWR4UHJvZAUDbmlsAQxjaGVja0Jsb2NrZWQAAwkBC3ZhbHVlT3JFbHNlAgkAmwgCBQ9zdGFraW5nQ29udHJhY3QJAQprZXlCbG9ja2VkAAcJAAIBAh9Db250cmFjdHMgYXJlIHVuZGVyIG1haW50ZW5hbmNlBQR1bml0AQZwcm9sb2cACQEFYXNJbnQBCQD9BwQFD3N0YWtpbmdDb250cmFjdAIKc2F2ZUxhc3RUeAUDbmlsBQNuaWwBCXNldENvbW1vbgIDYWNjD2lnbm9yZWRJdGVyYXRvcgQBaggFA2FjYwJfMQQEaXRlbQMJAGYCCQCQAwEIBQNhY2MDXzEwBQFqCQCRAwIIBQNhY2MDXzEwBQFqAgMwQDAEBmlzUHJvZAgFA2FjYwJfOAQJaXRlbVBhcnRzCQC1CQIFBGl0ZW0CAUADCQECIT0CCQCQAwEFCWl0ZW1QYXJ0cwACCQACAQIuSW5jb3JyZWN0IG9yZGVyIGZvcm1hdCwgc2hvdWxkIGJlIGFtb3VudEBwcmljZQQIbmV3T3JkQW0JAQ1wYXJzZUludFZhbHVlAQkAkQMCBQlpdGVtUGFydHMAAAQIbmV3T3JkUHIJAQ1wYXJzZUludFZhbHVlAQkAkQMCBQlpdGVtUGFydHMAAQQJbmV3T3JkVXNkAwUGaXNQcm9kCQBoAgUIbmV3T3JkQW0FCG5ld09yZFByCQBrAwUIbmV3T3JkQW0FCG5ld09yZFByBQVNVUxUOAQJbmV3T3JkVm9sCQEIdG9Wb2x1bWUDBQhuZXdPcmRBbQUOUFJPRFVDVFBLR1NJWkUFBmlzUHJvZAQGd2hJbml0AwkAZgIJAJADAQgFA2FjYwJfNgUBagkBDXBhcnNlSW50VmFsdWUBCQCRAwIIBQNhY2MCXzYFAWoAAAQLY3VyT3JkUGFydHMJALUJAgMJAGYCCQCQAwEIBQNhY2MCXzcFAWoJAJEDAggFA2FjYwJfNwUBagIDMEAwAgFABAhjdXJPcmRBbQkBDXBhcnNlSW50VmFsdWUBCQCRAwIFC2N1ck9yZFBhcnRzAAAECGN1ck9yZFByCQENcGFyc2VJbnRWYWx1ZQEJAJEDAgULY3VyT3JkUGFydHMAAQMDCQBmAgAABQhjdXJPcmRQcgYJAGYCAAAFCG5ld09yZFByCQACAQIXUHJpY2UgY2FuJ3QgYmUgbmVnYXRpdmUECWN1ck9yZFVzZAMFBmlzUHJvZAkAaAIFCGN1ck9yZEFtBQhjdXJPcmRQcgkAawMFCGN1ck9yZEFtBQhjdXJPcmRQcgUFTVVMVDgDCQAAAgUIbmV3T3JkQW0AAAMJAGYCBQhjdXJPcmRBbQAACQCcCgoJAGQCBQFqAAEJAM0IAggFA2FjYwJfMgkApAMBBQZ3aEluaXQIBQNhY2MCXzMIBQNhY2MCXzQJAGUCCAUDYWNjAl81BQljdXJPcmRVc2QIBQNhY2MCXzYIBQNhY2MCXzcFBmlzUHJvZAkAZAIIBQNhY2MCXzkJAQh0b1ZvbHVtZQMFBndoSW5pdAUOUFJPRFVDVFBLR1NJWkUFBmlzUHJvZAgFA2FjYwNfMTAJAJwKCgkAZAIFAWoAAQkAzQgCCAUDYWNjAl8yCQCkAwEJAGUCBQZ3aEluaXQFCGN1ck9yZEFtCAUDYWNjAl8zCAUDYWNjAl80CAUDYWNjAl81CAUDYWNjAl82CAUDYWNjAl83BQZpc1Byb2QJAGQCCAUDYWNjAl85CQEIdG9Wb2x1bWUDCQBlAgUGd2hJbml0BQhjdXJPcmRBbQUOUFJPRFVDVFBLR1NJWkUFBmlzUHJvZAgFA2FjYwNfMTADCQBmAgUIbmV3T3JkQW0AAAMJAGYCAAAFCGN1ck9yZEFtCQCcCgoJAGQCBQFqAAEJAM0IAggFA2FjYwJfMgkApAMBCQBlAgUGd2hJbml0BQhjdXJPcmRBbQkAZAIIBQNhY2MCXzMFCW5ld09yZFZvbAgFA2FjYwJfNAkAZAIIBQNhY2MCXzUFCW5ld09yZFVzZAgFA2FjYwJfNggFA2FjYwJfNwUGaXNQcm9kCQEIdG9Wb2x1bWUDCQBlAgUGd2hJbml0BQhjdXJPcmRBbQUOUFJPRFVDVFBLR1NJWkUFBmlzUHJvZAgFA2FjYwNfMTAJAJwKCgkAZAIFAWoAAQkAzQgCCAUDYWNjAl8yCQCkAwEFBndoSW5pdAkAZAIIBQNhY2MCXzMFCW5ld09yZFZvbAgFA2FjYwJfNAkAZQIJAGQCCAUDYWNjAl81BQluZXdPcmRVc2QFCWN1ck9yZFVzZAgFA2FjYwJfNggFA2FjYwJfNwUGaXNQcm9kCQEIdG9Wb2x1bWUDBQZ3aEluaXQFDlBST0RVQ1RQS0dTSVpFBQZpc1Byb2QIBQNhY2MDXzEwAwkAZgIAAAUIY3VyT3JkQW0EBmFtRGlmZgkAZQIFCGN1ck9yZEFtBQhuZXdPcmRBbQMJAGYCAAAJAGUCBQZ3aEluaXQFBmFtRGlmZgkAAgEJAKwCAgkArAICCQCsAgIJAKwCAgIQQXR0ZW1wdCB0byB0YWtlIAkApAMBBQZhbURpZmYCGiBmcm9tIHdhcmVob3VzZSwgYnV0IG9ubHkgCQCkAwEFBndoSW5pdAIKIGF2YWlsYWJsZQkAnAoKCQBkAgUBagABCQDNCAIIBQNhY2MCXzIJAKQDAQkAZQIFBndoSW5pdAUGYW1EaWZmCAUDYWNjAl8zCQBlAggFA2FjYwJfNAUJbmV3T3JkVm9sCAUDYWNjAl81CAUDYWNjAl82CAUDYWNjAl83BQZpc1Byb2QJAQh0b1ZvbHVtZQMJAGUCBQZ3aEluaXQFBmFtRGlmZgUOUFJPRFVDVFBLR1NJWkUFBmlzUHJvZAgFA2FjYwNfMTADCQBmAgAACQBkAgUGd2hJbml0BQhuZXdPcmRBbQkAAgEJAKwCAgkArAICCQCsAgIJAKwCAgIQQXR0ZW1wdCB0byB0YWtlIAkApAMBCQEBLQEFCG5ld09yZEFtAhogZnJvbSB3YXJlaG91c2UsIGJ1dCBvbmx5IAkApAMBBQZ3aEluaXQCCiBhdmFpbGFibGUJAJwKCgkAZAIFAWoAAQkAzQgCCAUDYWNjAl8yCQCkAwEJAGQCBQZ3aEluaXQFCG5ld09yZEFtCAUDYWNjAl8zCQBlAggFA2FjYwJfNAUJbmV3T3JkVm9sCQBlAggFA2FjYwJfNQUJY3VyT3JkVXNkCAUDYWNjAl82CAUDYWNjAl83BQZpc1Byb2QJAQh0b1ZvbHVtZQMJAGQCBQZ3aEluaXQFCG5ld09yZEFtBQ5QUk9EVUNUUEtHU0laRQUGaXNQcm9kCAUDYWNjA18xMAELc2V0SW50ZXJuYWwDCWN1cnJlbnRXaApjdXJyZW50T3JkBm5ld09yZAQJY3VycldoUmVzCQC1CQIJAJEDAgUJY3VycmVudFdoBQh3aElkeFJlcwIBXwQJY3VycldoTWF0CQC1CQIJAJEDAgUJY3VycmVudFdoBQh3aElkeE1hdAIBXwQKY3VycldoUHJvZAMJAAACCQCRAwIFCWN1cnJlbnRXaAUJd2hJZHhQcm9kAgAFA25pbAkAvAkCCQCRAwIFCWN1cnJlbnRXaAUJd2hJZHhQcm9kAgFfBA1jdXJyZW50T3JkUmVzCQC1CQIJAJEDAgUKY3VycmVudE9yZAUJb3JkSWR4UmVzAgFfBA1jdXJyZW50T3JkTWF0CQC1CQIJAJEDAgUKY3VycmVudE9yZAUJb3JkSWR4TWF0AgFfBA5jdXJyZW50T3JkUHJvZAMJAAACCQCRAwIFCmN1cnJlbnRPcmQFCm9yZElkeFByb2QCAAUDbmlsCQC8CQIJAJEDAgUKY3VycmVudE9yZAUKb3JkSWR4UHJvZAIBXwMJAQIhPQIJAJADAQUGbmV3T3JkAAMJAAIBAjNuZXdPcmRlclN0ciBzaG91bGQgY29udGFpbiBleGFjdGx5IDIgJzonIHNlcGFyYXRvcnMECHJlc1BhcnRzCQC1CQIJAJEDAgUGbmV3T3JkAAACAV8ECG1hdFBhcnRzCQC1CQIJAJEDAgUGbmV3T3JkAAECAV8ECXByb2RQYXJ0cwMJAAACCQCRAwIFBm5ld09yZAACAgAFA25pbAkAvAkCCQCRAwIFBm5ld09yZAACAgFfAwkBAiE9AgkAkAMBBQhyZXNQYXJ0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cE9yZFBhcnRzAAAEB2JwT3JkUHIJAQ1wYXJzZUludFZhbHVlAQkAkQMCBQpicE9yZFBhcnRzAAEDCQBmAgAABQdicE9yZFByCQACAQIXUHJpY2UgY2FuJ3QgYmUgbmVnYXRpdmUECGJwT3JkVXNkAwUGaXNQcm9kCQBoAgUHYnBPcmRBbQUHYnBPcmRQcgkAawMFB2JwT3JkQW0FB2JwT3JkUHIFBU1VTFQ4BAZicEluaXQDCQBmAgkAkAMBCAUDYWNjAl84BQFqCQENcGFyc2VJbnRWYWx1ZQEJAJEDAggFA2FjYwJfOAUBagAABAZ3aEluaXQDCQBmAgkAkAMBCAUDYWNjAl85BQFqCQENcGFyc2VJbnRWYWx1ZQEJAJEDAggFA2FjYwJfOQUBagAABAl3aE9yZEluaXQDCQBmAgkAkAMBCAUDYWNjA18xMAUBagkAkQMCCAUDYWNjA18xMAUBagIDMEAwBAp3aE9yZFBhcnRzCQC1CQIFCXdoT3JkSW5pdAIBQAQHd2hPcmRBbQkBDXBhcnNlSW50VmFsdWUBCQCRAwIFCndoT3JkUGFydHMAAAQHd2hPcmRQcgkBDXBhcnNlSW50VmFsdWUBCQCRAwIFCndoT3JkUGFydHMAAQMDCQECIT0CBQdicE9yZEFtAAAJAQIhPQIFB2JwT3JkUHIFB3doT3JkUHIHCQACAQkArAICCQCsAgIJAKwCAgkArAICCQCsAgICClByaWNlcyBvZiAJAJEDAggFA2FjYwNfMTEFAWoCFyBkb24ndCBtYXRjaCEgV0ggcHJpY2U9CQCkAwEFB3doT3JkUHICDSwgeW91ciBwcmljZT0JAKQDAQUHYnBPcmRQcgQId2hPcmRVc2QDBQZpc1Byb2QJAGgCBQd3aE9yZEFtBQd3aE9yZFByCQBrAwUHd2hPcmRBbQUHd2hPcmRQcgUFTVVMVDgECGRlbHRhVm9sCQEIdG9Wb2x1bWUDBQdicE9yZEFtBQ5QUk9EVUNUUEtHU0laRQUGaXNQcm9kAwkAAAIFB2JwT3JkQW0AAAkAnwoNCQDNCAIIBQNhY2MCXzEJAKQDAQUGd2hJbml0CQDNCAIIBQNhY2MCXzIFCXdoT3JkSW5pdAkAzQgCCAUDYWNjAl8zCQCkAwEFBmJwSW5pdAgFA2FjYwJfNAgFA2FjYwJfNQgFA2FjYwJfNgkAZAIIBQNhY2MCXzcAAQgFA2FjYwJfOAgFA2FjYwJfOQgFA2FjYwNfMTAIBQNhY2MDXzExBQZpc1Byb2QIBQNhY2MDXzEzAwkAZgIFB2JwT3JkQW0AAAMJAGYCAAAFB3doT3JkQW0DCQBmAgUHYnBPcmRBbQkBAS0BBQd3aE9yZEFtCQACAQkArAICCQCsAgIJAKwCAgkArAICCQCsAgICD0F0dGVtcHQgdG8gYnV5IAkApAMBBQdicE9yZEFtAgQgb2YgCQCRAwIIBQNhY2MDXzExBQFqAhssIGJ1dCB3YXJlaG91c2Ugb25seSBzZWxscyAJAKQDAQkBAS0BBQd3aE9yZEFtCQCfCg0JAM0IAggFA2FjYwJfMQkApAMBBQZ3aEluaXQJAM0IAggFA2FjYwJfMgkArAICCQCsAgIJAKQDAQkAZAIFB3doT3JkQW0FB2JwT3JkQW0CAUAJAKQDAQUHd2hPcmRQcgkAzQgCCAUDYWNjAl8zCQCkAwEJAGQCBQZicEluaXQFB2JwT3JkQW0JAGQCCAUDYWNjAl80BQhkZWx0YVZvbAgFA2FjYwJfNQkAZAIIBQNhY2MCXzYFCGJwT3JkVXNkCQBkAggFA2FjYwJfNwABCAUDYWNjAl84CAUDYWNjAl85CAUDYWNjA18xMAgFA2FjYwNfMTEFBmlzUHJvZAkAZAIIBQNhY2MDXzEzAwUGaXNQcm9kCQBoAgUHYnBPcmRBbQUFTVVMVDgFB2JwT3JkQW0JAAIBCQCsAgIJAKwCAgIPQXR0ZW1wdCB0byBidXkgCQCRAwIIBQNhY2MDXzExBQFqAiAgd2hpbGUgd2FyZWhvdXNlIGRvZXNuJ3Qgc2VsbCBpdAMJAGYCBQd3aE9yZEFtAAADCQBmAgkBAS0BBQdicE9yZEFtBQd3aE9yZEFtCQACAQkArAICCQCsAgIJAKwCAgkArAICCQCsAgICEEF0dGVtcHQgdG8gc2VsbCAJAKQDAQkBAS0BBQdicE9yZEFtAgQgb2YgCQCRAwIIBQNhY2MDXzExBQFqAhosIGJ1dCB3YXJlaG91c2Ugb25seSBidXlzIAkApAMBBQd3aE9yZEFtAwkAZgIJAQEtAQUHYnBPcmRBbQUGYnBJbml0CQACAQkArAICCQCsAgIJAKwCAgkArAICCQCsAgICEEF0dGVtcHQgdG8gc2VsbCAJAKQDAQkBAS0BBQdicE9yZEFtAhQsIGJ1dCB5b3Ugb25seSBoYXZlIAkApAMBBQZicEluaXQCBCBvZiAJAJEDAggFA2FjYwNfMTEFAWoJAJ8KDQkAzQgCCAUDYWNjAl8xCQCkAwEJAGUCBQZ3aEluaXQFB2JwT3JkQW0JAM0IAggFA2FjYwJfMgkArAICCQCsAgIJAKQDAQkAZAIFB3doT3JkQW0FB2JwT3JkQW0CAUAJAKQDAQUHd2hPcmRQcgkAzQgCCAUDYWNjAl8zCQCkAwEJAGQCBQZicEluaXQFB2JwT3JkQW0JAGUCCAUDYWNjAl80BQhkZWx0YVZvbAkAZQIIBQNhY2MCXzUFCGJwT3JkVXNkCAUDYWNjAl82CQBkAggFA2FjYwJfNwABCAUDYWNjAl84CAUDYWNjAl85CAUDYWNjA18xMAgFA2FjYwNfMTEFBmlzUHJvZAkAZQIIBQNhY2MDXzEzAwUGaXNQcm9kCQBoAgUHYnBPcmRBbQUFTVVMVDgFB2JwT3JkQW0JAAIBCQCsAgIJAKwCAgIQQXR0ZW1wdCB0byBzZWxsIAkAkQMCCAUDYWNjA18xMQUBagIfIHdoaWxlIHdhcmVob3VzZSBkb2Vzbid0IGJ1eSBpdAETc2VsbFJlc291cmNlc0NvbW1vbgQHcmVzTGlzdAxmYWN0b3J5TG9jSWQHYW1vdW50cwltaW5QcmljZXMKAQVhZGRlcgIDYWNjAWoDCQBmAgkAkQMCBQdhbW91bnRzBQFqCQENcGFyc2VJbnRWYWx1ZQEJAJEDAgUHcmVzTGlzdAUBagkAAgEJAKwCAgkArAICCQCsAgIJAKwCAgkArAICAglZb3UgaGF2ZSAJAJEDAgUHcmVzTGlzdAUBagIEIG9mIAkAkQMCBQhyZXNUeXBlcwUBagIULCBidXQgdHJpZWQgdG8gc2VsbCAJAKQDAQkAkQMCBQdhbW91bnRzBQFqAwkAZgIAAAkAkQMCBQdhbW91bnRzBQFqCQACAQkArAICCQCsAgIJAKwCAgIlWW91IHRyaWVkIHRvIHNlbGwgbmVnYXRpdmUgYW1vdW50IG9mIAkAkQMCBQhyZXNUeXBlcwUBagICOiAJAKQDAQkAkQMCBQdhbW91bnRzBQFqAwkAZgIJAJEDAgUHYW1vdW50cwUBagAABAFiCQEMc2VsbEludGVybmFsBAUMZmFjdG9yeUxvY0lkBQFqCQCRAwIFB2Ftb3VudHMFAWoJAJEDAgUJbWluUHJpY2VzBQFqCQCWCgQJAM0IAggFA2FjYwJfMQgFAWICXzEJAM0IAggFA2FjYwJfMgkApAMBCQBlAgkBDXBhcnNlSW50VmFsdWUBCQCRAwIFB3Jlc0xpc3QFAWoJAJEDAgUHYW1vdW50cwUBagkAZAIIBQNhY2MCXzMIBQFiAl8yCQBkAggFA2FjYwJfNAkAkQMCBQdhbW91bnRzBQFqCQCWCgQIBQNhY2MCXzEJAM0IAggFA2FjYwJfMgkAkQMCBQdyZXNMaXN0BQFqCAUDYWNjAl8zCAUDYWNjAl80CgACJGwFBUlURVI2CgACJHMJAJADAQUCJGwKAAUkYWNjMAkAlgoEBQNuaWwFA25pbAAAAAAKAQUkZjBfMQICJGECJGkDCQBnAgUCJGkFAiRzBQIkYQkBBWFkZGVyAgUCJGEJAJEDAgUCJGwFAiRpCgEFJGYwXzICAiRhAiRpAwkAZwIFAiRpBQIkcwUCJGEJAAIBAhNMaXN0IHNpemUgZXhjZWVkcyA2CQEFJGYwXzICCQEFJGYwXzECCQEFJGYwXzECCQEFJGYwXzECCQEFJGYwXzECCQEFJGYwXzECCQEFJGYwXzECBQUkYWNjMAAAAAEAAgADAAQABQAGARJidXlNYXRlcmlhbHNDb21tb24EB21hdExpc3QMZmFjdG9yeUxvY0lkB2Ftb3VudHMJbWF4UHJpY2VzCgEIbVVwZGF0ZXICA2FjYwFqAwkAZgIAAAkAkQMCBQdhbW91bnRzBQFqCQACAQkArAICCQCsAgIJAKwCAgIkWW91IHRyaWVkIHRvIGJ1eSBuZWdhdGl2ZSBhbW91bnQgb2YgCQCRAwIFCG1hdFR5cGVzBQFqAgI6IAkApAMBCQCRAwIFB2Ftb3VudHMFAWoDCQBmAgkAkQMCBQdhbW91bnRzBQFqAAAEAWIJAQtidXlJbnRlcm5hbAQFDGZhY3RvcnlMb2NJZAUBagkAkQMCBQdhbW91bnRzBQFqCQCRAwIFCW1heFByaWNlcwUBagkAlgoECQDNCAIIBQNhY2MCXzEIBQFiAl8xCQDNCAIIBQNhY2MCXzIJAKQDAQkAZAIJAQ1wYXJzZUludFZhbHVlAQkAkQMCBQdtYXRMaXN0BQFqCAUBYgJfMwkAZAIIBQNhY2MCXzMIBQFiAl8yCQBkAggFA2FjYwJfNAkAkQMCBQdhbW91bnRzBQFqCQCWCgQIBQNhY2MCXzEJAM0IAggFA2FjYwJfMgkAkQMCBQdtYXRMaXN0BQFqCAUDYWNjAl8zCAUDYWNjAl80CgACJGwFBUlURVI2CgACJHMJAJADAQUCJGwKAAUkYWNjMAkAlgoEBQNuaWwFA25pbAAAAAAKAQUkZjBfMQICJGECJGkDCQBnAgUCJGkFAiRzBQIkYQkBCG1VcGRhdGVyAgUCJGEJAJEDAgUCJGwFAiRpCgEFJGYwXzICAiRhAiRpAwkAZwIFAiRpBQIkcwUCJGEJAAIBAhNMaXN0IHNpemUgZXhjZWVkcyA2CQEFJGYwXzICCQEFJGYwXzECCQEFJGYwXzECCQEFJGYwXzECCQEFJGYwXzECCQEFJGYwXzECCQEFJGYwXzECBQUkYWNjMAAAAAEAAgADAAQABQAGARdleGNoYW5nZVJlc291cmNlc0NvbW1vbgMHcmVzTGlzdAdtYXRMaXN0B2Ftb3VudHMKAQlleGNoYW5nZXICA2FjYwFqBANhbWoJAJEDAgUHYW1vdW50cwUBagMJAGYCBQNhbWoJAQ1wYXJzZUludFZhbHVlAQkAkQMCBQdyZXNMaXN0BQFqCQACAQkArAICCQCsAgIJAKwCAgkArAICCQCsAgICCVlvdSBoYXZlIAkAkQMCBQdyZXNMaXN0BQFqAgQgb2YgCQCRAwIFCHJlc1R5cGVzBQFqAhgsIGJ1dCB0cmllZCB0byBleGNoYW5nZSAJAKQDAQUDYW1qAwkAZgIAAAUDYW1qCQACAQkArAICCQCsAgIJAKwCAgIpWW91IHRyaWVkIHRvIGV4Y2hhbmdlIG5lZ2F0aXZlIGFtb3VudCBvZiAJAJEDAgUIcmVzVHlwZXMFAWoCAjogCQCkAwEFA2FtagMJAGYCBQNhbWoAAAkAlgoECQDNCAIIBQNhY2MCXzEJAKQDAQkAZQIJAQ1wYXJzZUludFZhbHVlAQkAkQMCBQdyZXNMaXN0BQFqBQNhbWoJAM0IAggFA2FjYwJfMgkApAMBCQBkAgkBDXBhcnNlSW50VmFsdWUBCQCRAwIFB21hdExpc3QFAWoFA2FtagkAZAIIBQNhY2MCXzMJAGsDBQNhbWoFEFJFU09VUkNFUFJJQ0VNSU4FBU1VTFQ4CQBkAggFA2FjYwJfNAUDYW1qCQCWCgQJAM0IAggFA2FjYwJfMQkAkQMCBQdyZXNMaXN0BQFqCQDNCAIIBQNhY2MCXzIJAJEDAgUHbWF0TGlzdAUBaggFA2FjYwJfMwgFA2FjYwJfNAoAAiRsBQVJVEVSNgoAAiRzCQCQAwEFAiRsCgAFJGFjYzAJAJYKBAUDbmlsBQNuaWwAAAAACgEFJGYwXzECAiRhAiRpAwkAZwIFAiRpBQIkcwUCJGEJAQlleGNoYW5nZXICBQIkYQkAkQMCBQIkbAUCJGkKAQUkZjBfMgICJGECJGkDCQBnAgUCJGkFAiRzBQIkYQkAAgECE0xpc3Qgc2l6ZSBleGNlZWRzIDYJAQUkZjBfMgIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIFBSRhY2MwAAAAAQACAAMABAAFAAYBEHNob3AydXNlckFjdGlvbnMDDXVzZFdoMkJwU2FsZG8KY2FsbGVyQWRkcgtyZWNlaXZlZEZlZQMJAGYCBQ11c2RXaDJCcFNhbGRvAAAEC3VzZFdoMkJwRmVlCQBrAwUNdXNkV2gyQnBTYWxkbwUKQVVDVElPTkZFRQUFTVVMVDYDCQBnAgULcmVjZWl2ZWRGZWUJAGUCBQ11c2RXaDJCcFNhbGRvCQBoAgADBQt1c2RXaDJCcEZlZQkAAgEJAKwCAgIrVGhpcyB0cmFkZSBkb2VzIG5vdCBjb3ZlciBkZWxpdmVyeSBjb3N0IG9mIAkBCmZpeGVkUG9pbnQCBQtyZWNlaXZlZEZlZQAGBAhyZWZCeUtleQkBD2tleUFkZHJlc3NSZWZCeQEFCmNhbGxlckFkZHIEBXJlZkJ5CQCdCAIFD3N0YWtpbmdDb250cmFjdAUIcmVmQnlLZXkEBmNhbGxlcgkBEUBleHRyTmF0aXZlKDEwNjIpAQUKY2FsbGVyQWRkcgkAzQgCCQDNCAIDCQEJaXNEZWZpbmVkAQUFcmVmQnkJAMwIAgkBDlNjcmlwdFRyYW5zZmVyAwkBEUBleHRyTmF0aXZlKDEwNjIpAQkBBXZhbHVlAQUFcmVmQnkFC3VzZFdoMkJwRmVlBQt1c2R0QXNzZXRJZAUDbmlsBQNuaWwJAQ5TY3JpcHRUcmFuc2ZlcgMFBmNhbGxlcgkAZQIJAGUCBQ11c2RXaDJCcFNhbGRvCQBoAgADBQt1c2RXaDJCcEZlZQULcmVjZWl2ZWRGZWUFC3VzZHRBc3NldElkCQEOU2NyaXB0VHJhbnNmZXIDBQxyZXN0Q29udHJhY3QFC3VzZFdoMkJwRmVlBQt1c2R0QXNzZXRJZAUDbmlsARB1c2VyMnNob3BBY3Rpb25zBA11c2RCcDJXaFNhbGRvBHBtdHMNc2hvcExhbmRPd25lcghzcGVudEZlZQMJAGYCBQ11c2RCcDJXaFNhbGRvAAADCQECIT0CCQCQAwEFBHBtdHMAAQkAAgECImV4YWN0bHkgMSBwYXltZW50IG11c3QgYmUgYXR0YWNoZWQEA3BtdAkAkQMCBQRwbXRzAAAEA2FtdAgFA3BtdAZhbW91bnQDAwkBASEBCQEJaXNEZWZpbmVkAQgFA3BtdAdhc3NldElkBgkBAiE9AgkBBXZhbHVlAQgFA3BtdAdhc3NldElkBQt1c2R0QXNzZXRJZAkAAgECE1VTRFQgcGF5bWVudHMgb25seSEEEHVzZHRTcGVudFdpdGhGZWUJAGQCBQ11c2RCcDJXaFNhbGRvBQhzcGVudEZlZQMJAQIhPQIFA2FtdAUQdXNkdFNwZW50V2l0aEZlZQkAAgEJAKwCAgkArAICCQCsAgIJAKwCAgkArAICCQCsAgICH0luc3VmZmljaWVudCBwYXltZW50ISBBdHRhY2hlZD0JAQpmaXhlZFBvaW50AgUDYW10AAYCCywgcmVxdWlyZWQ9CQEKZml4ZWRQb2ludAIFDXVzZEJwMldoU2FsZG8ABgIBKwkBCmZpeGVkUG9pbnQCBQhzcGVudEZlZQAGAg4oZGVsaXZlcnkgZmVlKQMJAGYCBQ5NSU5TSE9QUEFZTUVOVAUNdXNkQnAyV2hTYWxkbwkAAgEJAKwCAgISTWluIHNob3AgdHJhZGUgaXMgCQEKZml4ZWRQb2ludAIFDk1JTlNIT1BQQVlNRU5UAAYEC3VzZEJwMldoRmVlCQBrAwUNdXNkQnAyV2hTYWxkbwUKQVVDVElPTkZFRQUFTVVMVDYECHJlZkJ5S2V5CQEPa2V5QWRkcmVzc1JlZkJ5AQUNc2hvcExhbmRPd25lcgQFcmVmQnkJAJ0IAgUPc3Rha2luZ0NvbnRyYWN0BQhyZWZCeUtleQkAzQgCCQDNCAIDCQEJaXNEZWZpbmVkAQUFcmVmQnkJAMwIAgkBDlNjcmlwdFRyYW5zZmVyAwkBEUBleHRyTmF0aXZlKDEwNjIpAQkBBXZhbHVlAQUFcmVmQnkFC3VzZEJwMldoRmVlBQt1c2R0QXNzZXRJZAUDbmlsBQNuaWwJAQ5TY3JpcHRUcmFuc2ZlcgMJARFAZXh0ck5hdGl2ZSgxMDYyKQEFDXNob3BMYW5kT3duZXIJAGUCBQ11c2RCcDJXaFNhbGRvCQBoAgADBQt1c2RCcDJXaEZlZQULdXNkdEFzc2V0SWQJAQ5TY3JpcHRUcmFuc2ZlcgMFDHJlc3RDb250cmFjdAULdXNkQnAyV2hGZWUFC3VzZHRBc3NldElkAwkBAiE9AgkAkAMBBQRwbXRzAAAJAAIBAhJObyBwYXltZW50cyBuZWVkZWQFA25pbAEVYWNjZXB0U2hvcE9yZGVyQ29tbW9uBg9zaG9wTGFuZEFzc2V0SWQKY2FsbGVyQWRkcgpicE9yZGVyU3RyCWJwUmVzTGlzdAlicE1hdExpc3QKYnBQcm9kTGlzdAQJbGFuZEFzc2V0CQEFdmFsdWUBCQDsBwEJANkEAQUPc2hvcExhbmRBc3NldElkAwkBASEBCQEJaXNEZWZpbmVkAQkAmggCBQ9zdGFraW5nQ29udHJhY3QJARZrZXlTdGFrZWRUaW1lQnlBc3NldElkAQUPc2hvcExhbmRBc3NldElkCQACAQkArAICCQCsAgICBE5GVCAIBQlsYW5kQXNzZXQEbmFtZQIOIGlzIG5vdCBzdGFrZWQEDXNob3BMYW5kT3duZXIJARN2YWx1ZU9yRXJyb3JNZXNzYWdlAgkAnQgCBQ9zdGFraW5nQ29udHJhY3QJARVrZXlMYW5kQXNzZXRJZFRvT3duZXIBBQ9zaG9wTGFuZEFzc2V0SWQJAKwCAgkArAICAgRORlQgCAUJbGFuZEFzc2V0BG5hbWUCDCBpcyBvcnBoYW5lZAMJAAACBQ1zaG9wTGFuZE93bmVyBQpjYWxsZXJBZGRyCQACAQIeWW91IGNhbm5vdCB0cmFkZSB3aXRoIHlvdXJzZWxmBAxicE9yZGVyUGFydHMJALwJAgUKYnBPcmRlclN0cgIBOgMJAQIhPQIJAJADAQUMYnBPcmRlclBhcnRzAAMJAAIBAjJicE9yZGVyU3RyIHNob3VsZCBjb250YWluIGV4YWN0bHkgMiAnOicgc2VwYXJhdG9ycwQIYnBPcmRSZXMJALUJAgkAkQMCBQxicE9yZGVyUGFydHMAAAIBXwQIYnBPcmRNYXQJALUJAgkAkQMCBQxicE9yZGVyUGFydHMAAQIBXwQJYnBPcmRQcm9kAwkAAAIJAJEDAgUMYnBPcmRlclBhcnRzAAICAAUDbmlsCQC8CQIJAJEDAgUMYnBPcmRlclBhcnRzAAICAV8DCQECIT0CCQCQAwEFCGJwT3JkUmVzBQZOVU1SRVMJAAIBAiBBbGwgNiByZXNvdXJjZXMgc2hvdWxkIGJlIHBhc3NlZAMJAQIhPQIJAJADAQUIYnBPcmRNYXQFBk5VTVJFUwkAAgECIEFsbCA2IG1hdGVyaWFscyBzaG91bGQgYmUgcGFzc2VkBAJ3aAkBCGFzU3RyaW5nAQkA/AcEBQ9zdGFraW5nQ29udHJhY3QCFGdldFdhcmVob3VzZVJFQURPTkxZCQDMCAIFD3Nob3BMYW5kQXNzZXRJZAUDbmlsBQNuaWwECWN1cnJlbnRXaAkAvAkCBQJ3aAIBOgQJY3VycldoUmVzCQC1CQIJAJEDAgUJY3VycmVudFdoBQh3aElkeFJlcwIBXwQJY3VycldoTWF0CQC1CQIJAJEDAgUJY3VycmVudFdoBQh3aElkeE1hdAIBXwQKY3VycldoUHJvZAMJAAACCQCRAwIFCWN1cnJlbnRXaAUJd2hJZHhQcm9kAgAFA25pbAkAvAkCCQCRAwIFCWN1cnJlbnRXaAUJd2hJZHhQcm9kAgFfBA9jdXJyV2hMb2NrZWRWb2wJAQ1wYXJzZUludFZhbHVlAQkAkQMCCQC1CQIJAJEDAgUJY3VycmVudFdoBQl3aElkeExPRlQCAV8FCXZvbExvY2tlZAQGb3JkS2V5CQEOa2V5T3JkZXJCeUxhbmQBBQ9zaG9wTGFuZEFzc2V0SWQEBXdoT3JkCQEIZ2V0T3JkZXIBBQZvcmRLZXkECHdoT3JkUmVzCQC1CQIJAJEDAgUFd2hPcmQFCW9yZElkeFJlcwIBXwQId2hPcmRNYXQJALUJAgkAkQMCBQV3aE9yZAUJb3JkSWR4TWF0AgFf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Vm9sBQh2b2xTYWxkbwQFd2hTdHIJALoJAgkAzAgCCQCRAwIFCWN1cnJlbnRXaAULd2hJZHhMZXZlbHMJAMwIAgkAuQkCCAUBcgJfMQIBXwkAzAgCCQC5CQIIBQFtAl8xAgFfCQDMCAIJALoJAggFAXACXzECAV8JAMwIAgkApAMBBQxuZXdMb2NrZWRWb2wFA25pbAIBOgQLbmV3V2hPcmRTdHIJALoJAgkAzAgCCQC5CQIIBQFyAl8yAgFfCQDMCAIJALkJAggFAW0CXzICAV8JAMwIAgkAugkCCAUBcAJfMgIBXwUDbmlsAgE6BAZ3aFNhdmUJAQhhc1N0cmluZwEJAPwHBAUPc3Rha2luZ0NvbnRyYWN0Ag1zYXZlV2FyZWhvdXNlCQDMCAIFBXdoU3RyCQDMCAIFD3Nob3BMYW5kQXNzZXRJZAUDbmlsBQNuaWwEDmFjY1N0YXRzUmVzdWx0CQEFYXNJbnQBCQD8BwQFD3N0YWtpbmdDb250cmFjdAIOdXBkYXRlQWNjU3RhdHMJAMwIAgUNc2hvcExhbmRPd25lcgkAzAgCCQBrAwUGeHBTaG9wCAUBcANfMTMFBU1VTFQ4BQNuaWwFA25pbAkAnAoKCQELU3RyaW5nRW50cnkCBQZvcmRLZXkFC25ld1doT3JkU3RyCAUBcgJfMwgFAW0CXzMIBQFwAl8zCAUBcAJfNQgFAXACXzYIBQFwA18xMwUNc2hvcExhbmRPd25lcgUGd2hTYXZlBQ5hY2NTdGF0c1Jlc3VsdAEac2VsbFJlc291cmNlc1dvcmxkSW50ZXJuYWwBBmFtb3VudAQGb25lUmVzCQBpAgUGYW1vdW50AB4EEW9uZUZhY3RvcnlBbW91bnRzCQDMCAIFBm9uZVJlcwkAzAgCBQZvbmVSZXMJAMwIAgUGb25lUmVzCQDMCAIFBm9uZVJlcwkAzAgCBQZvbmVSZXMJAMwIAgUGb25lUmVzBQNuaWwEAXMJAKQDAQUGb25lUmVzBAdyZXNMaXN0CQDMCAIFAXMJAMwIAgUBcwkAzAgCBQFzCQDMCAIFAXMJAMwIAgUBcwkAzAgCBQFzBQNuaWwECW1pblByaWNlcwkAzAgCAAAJAMwIAgAACQDMCAIAAAkAzAgCAAAJAMwIAgAACQDMCAIAAAUDbmlsCgEKb25lRmFjdG9yeQIDYWNjCWNvbnRpbmVudAQBeAkBE3NlbGxSZXNvdXJjZXNDb21tb24EBQdyZXNMaXN0BQljb250aW5lbnQFEW9uZUZhY3RvcnlBbW91bnRzBQltaW5QcmljZXMJAJUKAwkAzggCCAUDYWNjAl8xCAUBeAJfMQkAZAIIBQNhY2MCXzIIBQF4Al8zCQBkAggFA2FjYwJfMwgFAXgCXzQEDSR0MDI1MjkyMjUzODIKAAIkbAUKY29udGluZW50cwoAAiRzCQCQAwEFAiRsCgAFJGFjYzAJAJUKAwUDbmlsAAAAAAoBBSRmMF8xAgIkYQIkaQMJAGcCBQIkaQUCJHMFAiRhCQEKb25lRmFjdG9yeQIFAiRhCQCRAwIFAiRsBQIkaQoBBSRmMF8yAgIkYQIkaQMJAGcCBQIkaQUCJHMFAiRhCQACAQITTGlzdCBzaXplIGV4Y2VlZHMgNQkBBSRmMF8yAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgUFJGFjYzAAAAABAAIAAwAEAAUEDmZhY3RvcnlBY3Rpb25zCAUNJHQwMjUyOTIyNTM4MgJfMQQMdXNkdFJlY2VpdmVkCAUNJHQwMjUyOTIyNTM4MgJfMgQIdG90YWxSZXMIBQ0kdDAyNTI5MjI1MzgyAl8zBANmZWUJAGsDBQx1c2R0UmVjZWl2ZWQFDERFTElWRVJZX0ZFRQUFTVVMVDYEEGFjdGl2aXRpZXNBbW91bnQJAGkCBQx1c2R0UmVjZWl2ZWQAZAQIdXNkdExlZnQJAGUCCQBlAgUMdXNkdFJlY2VpdmVkBRBhY3Rpdml0aWVzQW1vdW50BQNmZWUJAJcKBQUOZmFjdG9yeUFjdGlvbnMFCHVzZHRMZWZ0BQNmZWUFEGFjdGl2aXRpZXNBbW91bnQFCHRvdGFsUmVzARBjcmFmdEdvb2RzQ29tbW9uBQdtYXRMaXN0CHByb2RMaXN0FG1hbnVmYWN0b3J5Q29udGluZW50CnByb2R1Y3RJZHgIcXVhbnRpdHkDCQBnAgAABQhxdWFudGl0eQkAAgECG1F1YW50aXR5IHNob3VsZCBiZSBwb3NpdGl2ZQMDCQBmAgAABQpwcm9kdWN0SWR4BgkAZwIFCnByb2R1Y3RJZHgJAJADAQUQcHJvZHVjdGlvbk1hdHJpeAkA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bmVlZE1hdAAACQCUCgIJAM0IAggFA2FjYwJfMQkApAMBCQBlAgUHaGF2ZU1hdAUHbmVlZE1hdAkAZAIIBQNhY2MCXzIFB25lZWRNYXQJAJQKAgkAzQgCCAUDYWNjAl8xCQCRAwIFB21hdExpc3QFAWoIBQNhY2MCXzIEBm1lcmdlZAoAAiRsBQVJVEVSNgoAAiRzCQCQAwEFAiRsCgAFJGFjYzAJAJQKAgUDbmlsAAAKAQUkZjFfMQICJGECJGkDCQBnAgUCJGkFAiRzBQIkYQkBCHByb2R1Y2VyAgUCJGEJAJEDAgUCJGwFAiRpCgEFJGYxXzICAiRhAiRpAwkAZwIFAiRpBQIkcwUCJGEJAAIBAhNMaXN0IHNpemUgZXhjZWVkcyA2CQEFJGYxXzICCQEFJGYxXzECCQEFJGYxXzECCQEFJGYxXzECCQEFJGYxXzECCQEFJGYxXzECCQEFJGYxXzECBQUkYWNjMAAAAAEAAgADAAQABQAGCQCVCgMIBQZtZXJnZWQCXzEFB25ld1Byb2QIBQZtZXJnZWQCXzIYAWkBGnJlY2FsY0xvY2tlZFZvbHVtZVJFQURPTkxZAgtsYW5kQXNzZXRJZAJ3aAQKY3VycmVudE9yZAkBCGdldE9yZGVyAQkBDmtleU9yZGVyQnlMYW5kAQULbGFuZEFzc2V0SWQEAXoJAQtzZXRJbnRlcm5hbAMFAndoBQpjdXJyZW50T3JkBQpjdXJyZW50T3JkCQCUCgIFA25pbAkAZAIIBQF6Al80CAUBegJfNQFpAQ1jb25zdHJ1Y3RvclYxAQhyZXN0QWRkcgMJAQIhPQIIBQFpBmNhbGxlcgUEdGhpcwkAAgECEVBlcm1pc3Npb24gZGVuaWVkCQDMCAIJAQtTdHJpbmdFbnRyeQIJAQ5rZXlSZXN0QWRkcmVzcwAFCHJlc3RBZGRyBQNuaWwBaQENc2VsbFJlc291cmNlcwIHYW1vdW50cwltaW5QcmljZXMEDHByb2xvZ1Jlc3VsdAkBBnByb2xvZwADCQAAAgUMcHJvbG9nUmVzdWx0BQxwcm9sb2dSZXN1bHQEC2R1Y2tBc3NldElkCQETdmFsdWVPckVycm9yTWVzc2FnZQIJAJ0IAgUPc3Rha2luZ0NvbnRyYWN0CQEUa2V5U3Rha2VkRHVja0J5T3duZXIBCQClCAEIBQFpBmNhbGxlcgIcWW91IGRvbid0IGhhdmUgYSBkdWNrIHN0YWtlZAMJAQIhPQIJAJADAQgFAWkIcGF5bWVudHMAAAkAAgECKnNlbGxSZXNvdXJjZXMgZG9lc24ndCByZXF1aXJlIGFueSBwYXltZW50cwQLY3VyTG9jYXRpb24JALUJAgkBC3ZhbHVlT3JFbHNlAgkAnQgCBQ9zdGFraW5nQ29udHJhY3QJAQ9rZXlEdWNrTG9jYXRpb24BBQtkdWNrQXNzZXRJZAUPREVGQVVMVExPQ0FUSU9OAgFfAwkBAiE9AgkAkQMCBQtjdXJMb2NhdGlvbgUKbG9jSWR4VHlwZQIBRgkAAgEJAKwCAgItRHVjayBsb2NhdGlvbiB0eXBlIHNob3VsZCBiZSBGYWN0b3J5LCBidXQgaXMgCQCRAwIFC2N1ckxvY2F0aW9uBQpsb2NJZHhUeXBlBAtjdXJyZW50UGFjawkBC2dldEJhY2twYWNrAQkBEWtleUJhY2twYWNrQnlEdWNrAQULZHVja0Fzc2V0SWQEB3Jlc0xpc3QJALUJAgkAkQMCBQtjdXJyZW50UGFjawUIYnBJZHhSZXMCAV8EDSR0MDI4OTE1MjkwNDEJARNzZWxsUmVzb3VyY2VzQ29tbW9uBAUHcmVzTGlzdAkAkQMCBQtjdXJMb2NhdGlvbgUIbG9jSWR4SWQFB2Ftb3VudHMFCW1pblByaWNlcwQOZmFjdG9yeUFjdGlvbnMIBQ0kdDAyODkxNTI5MDQxAl8xBAZuZXdSZXMIBQ0kdDAyODkxNTI5MDQxAl8yBAx1c2R0UmVjZWl2ZWQIBQ0kdDAyODkxNTI5MDQxAl8zBAh0b3RhbFJlcwgFDSR0MDI4OTE1MjkwNDECXzQEEGFjdGl2aXRpZXNBbW91bnQJAGkCBQx1c2R0UmVjZWl2ZWQAZAQHbmV3UGFjawkAugkCCQDMCAIJAJEDAgULY3VycmVudFBhY2sFCmJwSWR4TGV2ZWwJAMwIAgkAuQkCBQZuZXdSZXMCAV8JAMwIAgkAkQMCBQtjdXJyZW50UGFjawUIYnBJZHhNYXQJAMwIAgkAkQMCBQtjdXJyZW50UGFjawUJYnBJZHhQcm9kBQNuaWwCAToEDmJhY2twYWNrUmVzdWx0CQEIYXNTdHJpbmcBCQD8BwQFD3N0YWtpbmdDb250cmFjdAIOdXBkYXRlQmFja3BhY2sJAMwIAgULZHVja0Fzc2V0SWQJAMwIAgUHbmV3UGFjawUDbmlsBQNuaWwEC3N0YXRzUmVzdWx0CQEFYXNJbnQBCQD8BwQFD3N0YWtpbmdDb250cmFjdAIPdXBkYXRlRHVja1N0YXRzCQDMCAIFC2R1Y2tBc3NldElkCQDMCAIJAGsDBQd4cFRyYWRlBQh0b3RhbFJlcwUFTVVMVDgFA25pbAUDbmlsCQCUCgIJAM0IAgkAzQgCBQ5mYWN0b3J5QWN0aW9ucwkBDlNjcmlwdFRyYW5zZmVyAwgFAWkGY2FsbGVyCQBlAgUMdXNkdFJlY2VpdmVkBRBhY3Rpdml0aWVzQW1vdW50BQt1c2R0QXNzZXRJZAkBDlNjcmlwdFRyYW5zZmVyAwUMcmVzdENvbnRyYWN0BRBhY3Rpdml0aWVzQW1vdW50BQt1c2R0QXNzZXRJZAkAlQoDBQ5iYWNrcGFja1Jlc3VsdAUMcHJvbG9nUmVzdWx0BQtzdGF0c1Jlc3VsdAkAAgECJFN0cmljdCB2YWx1ZSBpcyBub3QgZXF1YWwgdG8gaXRzZWxmLgFpARJzZWxsUmVzb3VyY2VzV29ybGQCBGFkZHIGYW1vdW50AwkBAiE9AggFAWkGY2FsbGVyBQ1hY3Jlc0NvbnRyYWN0CQACAQIRUGVybWlzc2lvbiBkZW5pZWQEDSR0MDI5ODMzMjk5OTAJARpzZWxsUmVzb3VyY2VzV29ybGRJbnRlcm5hbAEFBmFtb3VudAQOZmFjdG9yeUFjdGlvbnMIBQ0kdDAyOTgzMzI5OTkwAl8xBAh1c2R0TGVmdAgFDSR0MDI5ODMzMjk5OTACXzIEA2ZlZQgFDSR0MDI5ODMzMjk5OTACXzMEEGFjdGl2aXRpZXNBbW91bnQIBQ0kdDAyOTgzMzI5OTkwAl80BAh0b3RhbFJlcwgFDSR0MDI5ODMzMjk5OTACXzUDCQBnAgAABQh1c2R0TGVmdAkAAgEJAKwCAgIrVGhpcyB0cmFkZSBkb2VzIG5vdCBjb3ZlciBkZWxpdmVyeSBjb3N0IG9mIAkBCmZpeGVkUG9pbnQCBQNmZWUABgQLc3RhdHNSZXN1bHQJAQVhc0ludAEJAPwHBAUPc3Rha2luZ0NvbnRyYWN0Ag51cGRhdGVBY2NTdGF0cwkAzAgCBQRhZGRyCQDMCAIJAGsDBQd4cFRyYWRlBQh0b3RhbFJlcwUFTVVMVDgFA25pbAUDbmlsCQCUCgIJAM0IAgkAzQgCCQDNCAIFDmZhY3RvcnlBY3Rpb25zCQEMSW50ZWdlckVudHJ5AgUPZGVsaXZlcnlGdW5kS2V5CQBkAgkBC3ZhbHVlT3JFbHNlAgkAnwgBBQ9kZWxpdmVyeUZ1bmRLZXkAAAUDZmVlCQEOU2NyaXB0VHJhbnNmZXIDBQxyZXN0Q29udHJhY3QFEGFjdGl2aXRpZXNBbW91bnQFC3VzZHRBc3NldElkCQEOU2NyaXB0VHJhbnNmZXIDBRJpbnZlc3RGdW5kQ29udHJhY3QFCHVzZHRMZWZ0BQt1c2R0QXNzZXRJZAkAlAoCBQh1c2R0TGVmdAULc3RhdHNSZXN1bHQBaQEac2VsbFJlc291cmNlc1dvcmxkUkVBRE9OTFkBBmFtb3VudAQIdXNkdExlZnQICQEac2VsbFJlc291cmNlc1dvcmxkSW50ZXJuYWwBBQZhbW91bnQCXzIJAJQKAgUDbmlsBQh1c2R0TGVmdAFpARlzZWxsUmVzb3VyY2VzRHVja0RlbGl2ZXJ5AwdhbW91bnRzCW1pblByaWNlcxBmYWN0b3J5Q29udGluZW50BAxwcm9sb2dSZXN1bHQJAQZwcm9sb2cAAwkAAAIFDHByb2xvZ1Jlc3VsdAUMcHJvbG9nUmVzdWx0BAtkdWNrQXNzZXRJZAkBE3ZhbHVlT3JFcnJvck1lc3NhZ2UCCQCdCAIFD3N0YWtpbmdDb250cmFjdAkBFGtleVN0YWtlZER1Y2tCeU93bmVyAQkApQgBCAUBaQZjYWxsZXICHFlvdSBkb24ndCBoYXZlIGEgZHVjayBzdGFrZWQDCQECIT0CCQCQAwEIBQFpCHBheW1lbnRzAAAJAAIBAipzZWxsUmVzb3VyY2VzIGRvZXNuJ3QgcmVxdWlyZSBhbnkgcGF5bWVudHMEC2N1cnJlbnRQYWNrCQELZ2V0QmFja3BhY2sBCQERa2V5QmFja3BhY2tCeUR1Y2sBBQtkdWNrQXNzZXRJZAQHcmVzTGlzdAkAtQkCCQCRAwIFC2N1cnJlbnRQYWNrBQhicElkeFJlcwIBXwQNJHQwMzExNDkzMTI3MAkBE3NlbGxSZXNvdXJjZXNDb21tb24EBQdyZXNMaXN0BRBmYWN0b3J5Q29udGluZW50BQdhbW91bnRzBQltaW5QcmljZXMEDmZhY3RvcnlBY3Rpb25zCAUNJHQwMzExNDkzMTI3MAJfMQQGbmV3UmVzCAUNJHQwMzExNDkzMTI3MAJfMgQMdXNkdFJlY2VpdmVkCAUNJHQwMzExNDkzMTI3MAJfMwQIdG90YWxSZXMIBQ0kdDAzMTE0OTMxMjcwAl80BAduZXdQYWNrCQC6CQIJAMwIAgkAkQMCBQtjdXJyZW50UGFjawUKYnBJZHhMZXZlbAkAzAgCCQC5CQIFBm5ld1JlcwIBXwkAzAgCCQCRAwIFC2N1cnJlbnRQYWNrBQhicElkeE1hdAkAzAgCCQCRAwIFC2N1cnJlbnRQYWNrBQlicElkeFByb2QFA25pbAIBOgQOYmFja3BhY2tSZXN1bHQJAQhhc1N0cmluZwEJAPwHBAUPc3Rha2luZ0NvbnRyYWN0Ag51cGRhdGVCYWNrcGFjawkAzAgCBQtkdWNrQXNzZXRJZAkAzAgCBQduZXdQYWNrBQNuaWwFA25pbAQLc3RhdHNSZXN1bHQJAQVhc0ludAEJAPwHBAUPc3Rha2luZ0NvbnRyYWN0Ag91cGRhdGVEdWNrU3RhdHMJAMwIAgULZHVja0Fzc2V0SWQJAMwIAgkAawMFB3hwVHJhZGUFCHRvdGFsUmVzBQVNVUxUOAUDbmlsBQNuaWwEB2ZlZVBhcnQJAGsDBQx1c2R0UmVjZWl2ZWQFDERFTElWRVJZX0ZFRQUFTVVMVDYEA2ZlZQkAlgMBCQDMCAIFB2ZlZVBhcnQJAMwIAgUVTUlOX1VTRFRfRkVFX0RFTElWRVJZBQNuaWwEEGFjdGl2aXRpZXNBbW91bnQJAGkCBQx1c2R0UmVjZWl2ZWQAZAMJAGcCBQNmZWUJAGUCBQx1c2R0UmVjZWl2ZWQFEGFjdGl2aXRpZXNBbW91bnQJAAIBCQCsAgICK1RoaXMgdHJhZGUgZG9lcyBub3QgY292ZXIgZGVsaXZlcnkgY29zdCBvZiAJAQpmaXhlZFBvaW50AgUDZmVlAAYECWZ1bmRUb3RhbAkBC3ZhbHVlT3JFbHNlAgkAnwgBBQ9kZWxpdmVyeUZ1bmRLZXkAAAkAlAoCCQDNCAIJAM0IAgkAzQgCBQ5mYWN0b3J5QWN0aW9ucwkBDlNjcmlwdFRyYW5zZmVyAwgFAWkGY2FsbGVyCQBlAgkAZQIFDHVzZHRSZWNlaXZlZAUQYWN0aXZpdGllc0Ftb3VudAUDZmVlBQt1c2R0QXNzZXRJZAkBDEludGVnZXJFbnRyeQIFD2RlbGl2ZXJ5RnVuZEtleQkAZAIFCWZ1bmRUb3RhbAUDZmVlCQEOU2NyaXB0VHJhbnNmZXIDBQxyZXN0Q29udHJhY3QFEGFjdGl2aXRpZXNBbW91bnQFC3VzZHRBc3NldElkCQCVCgMFDmJhY2twYWNrUmVzdWx0BQxwcm9sb2dSZXN1bHQFC3N0YXRzUmVzdWx0CQACAQIkU3RyaWN0IHZhbHVlIGlzIG5vdCBlcXVhbCB0byBpdHNlbGYuAWkBGXNlbGxSZXNvdXJjZXNMYW5kRGVsaXZlcnkEB2Ftb3VudHMJbWluUHJpY2VzC2xhbmRBc3NldElkEGZhY3RvcnlDb250aW5lbnQEDHByb2xvZ1Jlc3VsdAkBBnByb2xvZwADCQAAAgUMcHJvbG9nUmVzdWx0BQxwcm9sb2dSZXN1bHQDCQECIT0CCQCQAwEIBQFpCHBheW1lbnRzAAAJAAIBAipzZWxsUmVzb3VyY2VzIGRvZXNuJ3QgcmVxdWlyZSBhbnkgcGF5bWVudHMEBHVzZXIIBQFpBmNhbGxlcgQEYWRkcgkApQgBBQR1c2VyBAVhc3NldAkBBXZhbHVlAQkA7AcBCQDZBAEFC2xhbmRBc3NldElkAwkBASEBCQEJaXNEZWZpbmVkAQkAmggCBQ9zdGFraW5nQ29udHJhY3QJARZrZXlTdGFrZWRUaW1lQnlBc3NldElkAQULbGFuZEFzc2V0SWQJAAIBCQCsAgIJAKwCAgIETkZUIAgFBWFzc2V0BG5hbWUCDiBpcyBub3Qgc3Rha2VkBAVvd25lcgkBE3ZhbHVlT3JFcnJvck1lc3NhZ2UCCQCdCAIFD3N0YWtpbmdDb250cmFjdAkBFWtleUxhbmRBc3NldElkVG9Pd25lcgEFC2xhbmRBc3NldElkCQCsAgIJAKwCAgIETkZUIAgFBWFzc2V0BG5hbWUCDCBpcyBvcnBoYW5lZAMJAQIhPQIFBW93bmVyBQRhZGRyCQACAQkArAICBQpMQU5EUFJFRklYAg0gaXMgbm90IHlvdXJzBAJ3aAkBCGFzU3RyaW5nAQkA/AcEBQ9zdGFraW5nQ29udHJhY3QCFGdldFdhcmVob3VzZVJFQURPTkxZCQDMCAIFC2xhbmRBc3NldElkBQNuaWwFA25pbAQJY3VycmVudFdoCQC8CQIFAndoAgE6BAdyZXNMaXN0CQC1CQIJAJEDAgUJY3VycmVudFdoBQh3aElkeFJlcwIBXwQNJHQwMzMxODQzMzMwNQkBE3NlbGxSZXNvdXJjZXNDb21tb24EBQdyZXNMaXN0BRBmYWN0b3J5Q29udGluZW50BQdhbW91bnRzBQltaW5QcmljZXMEDmZhY3RvcnlBY3Rpb25zCAUNJHQwMzMxODQzMzMwNQJfMQQGbmV3UmVzCAUNJHQwMzMxODQzMzMwNQJfMgQMdXNkdFJlY2VpdmVkCAUNJHQwMzMxODQzMzMwNQJfMwQIdG90YWxSZXMIBQ0kdDAzMzE4NDMzMzA1Al80BAV3aFN0cgkAugkCCQDMCAIJAJEDAgUJY3VycmVudFdoBQt3aElkeExldmVscwkAzAgCCQC5CQIFBm5ld1JlcwIBXwkAzAgCCQCRAwIFCWN1cnJlbnRXaAUId2hJZHhNYXQJAMwIAgkAkQMCBQljdXJyZW50V2gFCXdoSWR4UHJvZAkAzAgCCQCRAwIFCWN1cnJlbnRXaAUJd2hJZHhMT0ZUBQNuaWwCAToEBndoU2F2ZQkBCGFzU3RyaW5nAQkA/AcEBQ9zdGFraW5nQ29udHJhY3QCDXNhdmVXYXJlaG91c2UJAMwIAgUFd2hTdHIJAMwIAgULbGFuZEFzc2V0SWQFA25pbAUDbmlsBAtzdGF0c1Jlc3VsdAkBBWFzSW50AQkA/AcEBQ9zdGFraW5nQ29udHJhY3QCDnVwZGF0ZUFjY1N0YXRzCQDMCAIFBGFkZHIJAMwIAgkAawMFB3hwVHJhZGUFCHRvdGFsUmVzBQVNVUxUOAUDbmlsBQNuaWwEB2ZlZVBhcnQJAGsDBQx1c2R0UmVjZWl2ZWQFDERFTElWRVJZX0ZFRQUFTVVMVDYEA2ZlZQkAlgMBCQDMCAIFB2ZlZVBhcnQJAMwIAgUVTUlOX1VTRFRfRkVFX0RFTElWRVJZBQNuaWwEEGFjdGl2aXRpZXNBbW91bnQJAGkCBQx1c2R0UmVjZWl2ZWQAZAMJAGcCBQNmZWUJAGUCBQx1c2R0UmVjZWl2ZWQFEGFjdGl2aXRpZXNBbW91bnQJAAIBCQCsAgICK1RoaXMgdHJhZGUgZG9lcyBub3QgY292ZXIgZGVsaXZlcnkgY29zdCBvZiAJAQpmaXhlZFBvaW50AgUDZmVlAAYECWZ1bmRUb3RhbAkBC3ZhbHVlT3JFbHNlAgkAnwgBBQ9kZWxpdmVyeUZ1bmRLZXkAAAkAlAoCCQDNCAIJAM0IAgkAzQgCBQ5mYWN0b3J5QWN0aW9ucwkBDlNjcmlwdFRyYW5zZmVyAwgFAWkGY2FsbGVyCQBlAgkAZQIFDHVzZHRSZWNlaXZlZAUQYWN0aXZpdGllc0Ftb3VudAUDZmVlBQt1c2R0QXNzZXRJZAkBDEludGVnZXJFbnRyeQIFD2RlbGl2ZXJ5RnVuZEtleQkAZAIFCWZ1bmRUb3RhbAUDZmVlCQEOU2NyaXB0VHJhbnNmZXIDBQxyZXN0Q29udHJhY3QFEGFjdGl2aXRpZXNBbW91bnQFC3VzZHRBc3NldElkCQCVCgMFBndoU2F2ZQUMcHJvbG9nUmVzdWx0BQtzdGF0c1Jlc3VsdAkAAgECJFN0cmljdCB2YWx1ZSBpcyBub3QgZXF1YWwgdG8gaXRzZWxmLgFpAQxidXlNYXRlcmlhbHMCB2Ftb3VudHMJbWF4UHJpY2VzBAxwcm9sb2dSZXN1bHQJAQZwcm9sb2cAAwkAAAIFDHByb2xvZ1Jlc3VsdAUMcHJvbG9nUmVzdWx0BAtkdWNrQXNzZXRJZAkBE3ZhbHVlT3JFcnJvck1lc3NhZ2UCCQCdCAIFD3N0YWtpbmdDb250cmFjdAkBFGtleVN0YWtlZER1Y2tCeU93bmVyAQkApQgBCAUBaQZjYWxsZXICHFlvdSBkb24ndCBoYXZlIGEgZHVjayBzdGFrZWQDCQECIT0CCQCQAwEIBQFpCHBheW1lbnRzAAEJAAIBAiJleGFjdGx5IDEgcGF5bWVudCBtdXN0IGJlIGF0dGFjaGVkBANwbXQJAJEDAggFAWkIcGF5bWVudHMAAAQDYW10CAUDcG10BmFtb3VudAMDCQEBIQEJAQlpc0RlZmluZWQBCAUDcG10B2Fzc2V0SWQGCQECIT0CCQEFdmFsdWUBCAUDcG10B2Fzc2V0SWQFC3VzZHRBc3NldElkCQACAQITVVNEVCBwYXltZW50cyBvbmx5IQQLY3VyTG9jYXRpb24JALUJAgkBC3ZhbHVlT3JFbHNlAgkAnQgCBQ9zdGFraW5nQ29udHJhY3QJAQ9rZXlEdWNrTG9jYXRpb24BBQtkdWNrQXNzZXRJZAUPREVGQVVMVExPQ0FUSU9OAgFfAwkBAiE9AgkAkQMCBQtjdXJMb2NhdGlvbgUKbG9jSWR4VHlwZQIBRgkAAgEJAKwCAgItRHVjayBsb2NhdGlvbiB0eXBlIHNob3VsZCBiZSBGYWN0b3J5LCBidXQgaXMgCQCRAwIFC2N1ckxvY2F0aW9uBQpsb2NJZHhUeXBlBAtjdXJyZW50UGFjawkBC2dldEJhY2twYWNrAQkBEWtleUJhY2twYWNrQnlEdWNrAQULZHVja0Fzc2V0SWQEB21hdExpc3QJALUJAgkAkQMCBQtjdXJyZW50UGFjawUIYnBJZHhNYXQCAV8EDSR0MDM1MTI5MzUyNTEJARJidXlNYXRlcmlhbHNDb21tb24EBQdtYXRMaXN0CQCRAwIFC2N1ckxvY2F0aW9uBQhsb2NJZHhJZAUHYW1vdW50cwUJbWF4UHJpY2VzBA5mYWN0b3J5QWN0aW9ucwgFDSR0MDM1MTI5MzUyNTECXzEEBm5ld01hdAgFDSR0MDM1MTI5MzUyNTECXzIECXVzZHRTcGVudAgFDSR0MDM1MTI5MzUyNTECXzMECHRvdGFsTWF0CAUNJHQwMzUxMjkzNTI1MQJfNAMJAGYCBQl1c2R0U3BlbnQFA2FtdAkAAgEJAKwCAgkArAICCQCsAgICH0luc3VmZmljaWVudCBwYXltZW50ISBBdHRhY2hlZD0JAQpmaXhlZFBvaW50AgUDYW10AAYCCywgcmVxdWlyZWQ9CQEKZml4ZWRQb2ludAIFCXVzZHRTcGVudAAGBAduZXdQYWNrCQC5CQIJAMwIAgkAkQMCBQtjdXJyZW50UGFjawUKYnBJZHhMZXZlbAkAzAgCCQCRAwIFC2N1cnJlbnRQYWNrBQhicElkeFJlcwkAzAgCCQC5CQIFBm5ld01hdAIBXwkAzAgCCQCRAwIFC2N1cnJlbnRQYWNrBQlicElkeFByb2QFA25pbAIBOgQOYmFja3BhY2tSZXN1bHQJAQhhc1N0cmluZwEJAPwHBAUPc3Rha2luZ0NvbnRyYWN0Ag51cGRhdGVCYWNrcGFjawkAzAgCBQtkdWNrQXNzZXRJZAkAzAgCBQduZXdQYWNrBQNuaWwFA25pbAQEcmVzdAMJAGYCCQBlAgUDYW10BQl1c2R0U3BlbnQAAAkAzAgCCQEOU2NyaXB0VHJhbnNmZXIDCAUBaQZjYWxsZXIJAGUCBQNhbXQFCXVzZHRTcGVudAULdXNkdEFzc2V0SWQFA25pbAUDbmlsBBBhY3Rpdml0aWVzQW1vdW50CQBpAgUJdXNkdFNwZW50AGQEC3N0YXRzUmVzdWx0CQEFYXNJbnQBCQD8BwQFD3N0YWtpbmdDb250cmFjdAIPdXBkYXRlRHVja1N0YXRzCQDMCAIFC2R1Y2tBc3NldElkCQDMCAIJAGsDBQd4cFRyYWRlBQh0b3RhbE1hdAUFTVVMVDgFA25pbAUDbmlsCQCUCgIJAM0IAgkAzggCBQ5mYWN0b3J5QWN0aW9ucwUEcmVzdAkBDlNjcmlwdFRyYW5zZmVyAwUMcmVzdENvbnRyYWN0BRBhY3Rpdml0aWVzQW1vdW50BQt1c2R0QXNzZXRJZAkAlQoDBQ5iYWNrcGFja1Jlc3VsdAUMcHJvbG9nUmVzdWx0BQtzdGF0c1Jlc3VsdAkAAgECJFN0cmljdCB2YWx1ZSBpcyBub3QgZXF1YWwgdG8gaXRzZWxmLgFpARhidXlNYXRlcmlhbHNEdWNrRGVsaXZlcnkDB2Ftb3VudHMJbWF4UHJpY2VzEGZhY3RvcnlDb250aW5lbnQEDHByb2xvZ1Jlc3VsdAkBBnByb2xvZwADCQAAAgUMcHJvbG9nUmVzdWx0BQxwcm9sb2dSZXN1bHQEC2R1Y2tBc3NldElkCQETdmFsdWVPckVycm9yTWVzc2FnZQIJAJ0IAgUPc3Rha2luZ0NvbnRyYWN0CQEUa2V5U3Rha2VkRHVja0J5T3duZXIBCQClCAEIBQFpBmNhbGxlcgIcWW91IGRvbid0IGhhdmUgYSBkdWNrIHN0YWtlZAMJAQIhPQIJAJADAQgFAWkIcGF5bWVudHMAAQkAAgECImV4YWN0bHkgMSBwYXltZW50IG11c3QgYmUgYXR0YWNoZWQEA3BtdAkAkQMCCAUBaQhwYXltZW50cwAABANhbXQIBQNwbXQGYW1vdW50AwMJAQEhAQkBCWlzRGVmaW5lZAEIBQNwbXQHYXNzZXRJZAYJAQIhPQIJAQV2YWx1ZQEIBQNwbXQHYXNzZXRJZAULdXNkdEFzc2V0SWQJAAIBAhNVU0RUIHBheW1lbnRzIG9ubHkhBAtjdXJyZW50UGFjawkBC2dldEJhY2twYWNrAQkBEWtleUJhY2twYWNrQnlEdWNrAQULZHVja0Fzc2V0SWQEB21hdExpc3QJALUJAgkAkQMCBQtjdXJyZW50UGFjawUIYnBJZHhNYXQCAV8EDSR0MDM2Njk1MzY4MTIJARJidXlNYXRlcmlhbHNDb21tb24EBQdtYXRMaXN0BRBmYWN0b3J5Q29udGluZW50BQdhbW91bnRzBQltYXhQcmljZXMEDmZhY3RvcnlBY3Rpb25zCAUNJHQwMzY2OTUzNjgxMgJfMQQGbmV3TWF0CAUNJHQwMzY2OTUzNjgxMgJfMgQJdXNkdFNwZW50CAUNJHQwMzY2OTUzNjgxMgJfMwQIdG90YWxNYXQIBQ0kdDAzNjY5NTM2ODEyAl80BAduZXdQYWNrCQC5CQIJAMwIAgkAkQMCBQtjdXJyZW50UGFjawUKYnBJZHhMZXZlbAkAzAgCCQCRAwIFC2N1cnJlbnRQYWNrBQhicElkeFJlcwkAzAgCCQC5CQIFBm5ld01hdAIBXwkAzAgCCQCRAwIFC2N1cnJlbnRQYWNrBQlicElkeFByb2QFA25pbAIBOgQOYmFja3BhY2tSZXN1bHQJAQhhc1N0cmluZwEJAPwHBAUPc3Rha2luZ0NvbnRyYWN0Ag51cGRhdGVCYWNrcGFjawkAzAgCBQtkdWNrQXNzZXRJZAkAzAgCBQduZXdQYWNrBQNuaWwFA25pbAQLc3RhdHNSZXN1bHQJAQVhc0ludAEJAPwHBAUPc3Rha2luZ0NvbnRyYWN0Ag91cGRhdGVEdWNrU3RhdHMJAMwIAgULZHVja0Fzc2V0SWQJAMwIAgkAawMFB3hwVHJhZGUFCHRvdGFsTWF0BQVNVUxUOAUDbmlsBQNuaWwEB2ZlZVBhcnQJAGsDBQl1c2R0U3BlbnQFDERFTElWRVJZX0ZFRQUFTVVMVDYEA2ZlZQkAlgMBCQDMCAIFB2ZlZVBhcnQJAMwIAgUVTUlOX1VTRFRfRkVFX0RFTElWRVJZBQNuaWwEEHVzZHRTcGVudFdpdGhGZWUJAGQCBQl1c2R0U3BlbnQFA2ZlZQMJAGYCBRB1c2R0U3BlbnRXaXRoRmVlBQNhbXQJAAIBCQCsAgIJAKwCAgkArAICCQCsAgIJAKwCAgkArAICAh9JbnN1ZmZpY2llbnQgcGF5bWVudCEgQXR0YWNoZWQ9CQEKZml4ZWRQb2ludAIFA2FtdAAGAgssIHJlcXVpcmVkPQkBCmZpeGVkUG9pbnQCBQl1c2R0U3BlbnQABgIBKwkBCmZpeGVkUG9pbnQCBQNmZWUABgIOKGRlbGl2ZXJ5IGZlZSkEBHJlc3QDCQBmAgkAZQIFA2FtdAUQdXNkdFNwZW50V2l0aEZlZQAACQDMCAIJAQ5TY3JpcHRUcmFuc2ZlcgMIBQFpBmNhbGxlcgkAZQIFA2FtdAUQdXNkdFNwZW50V2l0aEZlZQULdXNkdEFzc2V0SWQFA25pbAUDbmlsBBBhY3Rpdml0aWVzQW1vdW50CQBpAgUJdXNkdFNwZW50AGQECWZ1bmRUb3RhbAkBC3ZhbHVlT3JFbHNlAgkAnwgBBQ9kZWxpdmVyeUZ1bmRLZXkAAAkAlAoCCQDNCAIJAM0IAgkAzggCBQ5mYWN0b3J5QWN0aW9ucwUEcmVzdAkBDlNjcmlwdFRyYW5zZmVyAwUMcmVzdENvbnRyYWN0BRBhY3Rpdml0aWVzQW1vdW50BQt1c2R0QXNzZXRJZAkBDEludGVnZXJFbnRyeQIFD2RlbGl2ZXJ5RnVuZEtleQkAZAIFCWZ1bmRUb3RhbAUDZmVlCQCVCgMFDmJhY2twYWNrUmVzdWx0BQxwcm9sb2dSZXN1bHQFC3N0YXRzUmVzdWx0CQACAQIkU3RyaWN0IHZhbHVlIGlzIG5vdCBlcXVhbCB0byBpdHNlbGYuAWkBGGJ1eU1hdGVyaWFsc0xhbmREZWxpdmVyeQQHYW1vdW50cwltYXhQcmljZXMLbGFuZEFzc2V0SWQQZmFjdG9yeUNvbnRpbmVudAQMcHJvbG9nUmVzdWx0CQEGcHJvbG9nAAMJAAACBQxwcm9sb2dSZXN1bHQFDHByb2xvZ1Jlc3VsdAMJAQIhPQIJAJADAQgFAWkIcGF5bWVudHMAAQkAAgECImV4YWN0bHkgMSBwYXltZW50IG11c3QgYmUgYXR0YWNoZWQEA3BtdAkAkQMCCAUBaQhwYXltZW50cwAABANhbXQIBQNwbXQGYW1vdW50AwMJAQEhAQkBCWlzRGVmaW5lZAEIBQNwbXQHYXNzZXRJZAYJAQIhPQIJAQV2YWx1ZQEIBQNwbXQHYXNzZXRJZAULdXNkdEFzc2V0SWQJAAIBAhNVU0RUIHBheW1lbnRzIG9ubHkhBAR1c2VyCAUBaQZjYWxsZXIEBGFkZHIJAKUIAQUEdXNlcgQFYXNzZXQJAQV2YWx1ZQEJAOwHAQkA2QQBBQtsYW5kQXNzZXRJZAMJAQEhAQkBCWlzRGVmaW5lZAEJAJoIAgUPc3Rha2luZ0NvbnRyYWN0CQEWa2V5U3Rha2VkVGltZUJ5QXNzZXRJZAEFC2xhbmRBc3NldElkCQACAQkArAICCQCsAgICBE5GVCAIBQVhc3NldARuYW1lAg4gaXMgbm90IHN0YWtlZAQFb3duZXIJARN2YWx1ZU9yRXJyb3JNZXNzYWdlAgkAnQgCBQ9zdGFraW5nQ29udHJhY3QJARVrZXlMYW5kQXNzZXRJZFRvT3duZXIBBQtsYW5kQXNzZXRJZAkArAICCQCsAgICBE5GVCAIBQVhc3NldARuYW1lAgwgaXMgb3JwaGFuZWQDCQECIT0CBQVvd25lcgUEYWRkcgkAAgEJAKwCAgUKTEFORFBSRUZJWAINIGlzIG5vdCB5b3VycwQCd2gJAQhhc1N0cmluZwEJAPwHBAUPc3Rha2luZ0NvbnRyYWN0AhRnZXRXYXJlaG91c2VSRUFET05MWQkAzAgCBQtsYW5kQXNzZXRJZAUDbmlsBQNuaWwECWN1cnJlbnRXaAkAvAkCBQJ3aAIBOgQHbWF0TGlzdAkAtQkCCQCRAwIFCWN1cnJlbnRXaAUId2hJZHhNYXQCAV8EDSR0MDM4OTc3MzkwOTQJARJidXlNYXRlcmlhbHNDb21tb24EBQdtYXRMaXN0BRBmYWN0b3J5Q29udGluZW50BQdhbW91bnRzBQltYXhQcmljZXMEDmZhY3RvcnlBY3Rpb25zCAUNJHQwMzg5NzczOTA5NAJfMQQGbmV3TWF0CAUNJHQwMzg5NzczOTA5NAJfMgQJdXNkdFNwZW50CAUNJHQwMzg5NzczOTA5NAJfMwQIdG90YWxNYXQIBQ0kdDAzODk3NzM5MDk0Al80BAV3aFN0cgkAugkCCQDMCAIJAJEDAgUJY3VycmVudFdoBQt3aElkeExldmVscwkAzAgCCQCRAwIFCWN1cnJlbnRXaAUId2hJZHhSZXMJAMwIAgkAuQkCBQZuZXdNYXQCAV8JAMwIAgkAkQMCBQljdXJyZW50V2gFCXdoSWR4UHJvZAkAzAgCCQCRAwIFCWN1cnJlbnRXaAUJd2hJZHhMT0ZUBQNuaWwCAToEBndoU2F2ZQkBCGFzU3RyaW5nAQkA/AcEBQ9zdGFraW5nQ29udHJhY3QCDXNhdmVXYXJlaG91c2UJAMwIAgUFd2hTdHIJAMwIAgULbGFuZEFzc2V0SWQFA25pbAUDbmlsBAtzdGF0c1Jlc3VsdAkBBWFzSW50AQkA/AcEBQ9zdGFraW5nQ29udHJhY3QCDnVwZGF0ZUFjY1N0YXRzCQDMCAIFBGFkZHIJAMwIAgkAawMFB3hwVHJhZGUFCHRvdGFsTWF0BQVNVUxUOAUDbmlsBQNuaWwEB2ZlZVBhcnQJAGsDBQl1c2R0U3BlbnQFDERFTElWRVJZX0ZFRQUFTVVMVDYEA2ZlZQkAlgMBCQDMCAIFB2ZlZVBhcnQJAMwIAgUVTUlOX1VTRFRfRkVFX0RFTElWRVJZBQNuaWwEEHVzZHRTcGVudFdpdGhGZWUJAGQCBQl1c2R0U3BlbnQFA2ZlZQMJAGYCBRB1c2R0U3BlbnRXaXRoRmVlBQNhbXQJAAIBCQCsAgIJAKwCAgkArAICCQCsAgIJAKwCAgkArAICAh9JbnN1ZmZpY2llbnQgcGF5bWVudCEgQXR0YWNoZWQ9CQEKZml4ZWRQb2ludAIFA2FtdAAGAgssIHJlcXVpcmVkPQkBCmZpeGVkUG9pbnQCBQl1c2R0U3BlbnQABgIBKwkBCmZpeGVkUG9pbnQCBQNmZWUABgIOKGRlbGl2ZXJ5IGZlZSkEBHJlc3QDCQBmAgkAZQIFA2FtdAUQdXNkdFNwZW50V2l0aEZlZQAACQDMCAIJAQ5TY3JpcHRUcmFuc2ZlcgMIBQFpBmNhbGxlcgkAZQIFA2FtdAUQdXNkdFNwZW50V2l0aEZlZQULdXNkdEFzc2V0SWQFA25pbAUDbmlsBBBhY3Rpdml0aWVzQW1vdW50CQBpAgUJdXNkdFNwZW50AGQECWZ1bmRUb3RhbAkBC3ZhbHVlT3JFbHNlAgkAnwgBBQ9kZWxpdmVyeUZ1bmRLZXkAAAkAlAoCCQDNCAIJAM0IAgkAzggCBQ5mYWN0b3J5QWN0aW9ucwUEcmVzdAkBDlNjcmlwdFRyYW5zZmVyAwUMcmVzdENvbnRyYWN0BRBhY3Rpdml0aWVzQW1vdW50BQt1c2R0QXNzZXRJZAkBDEludGVnZXJFbnRyeQIFD2RlbGl2ZXJ5RnVuZEtleQkAZAIFCWZ1bmRUb3RhbAUDZmVlCQCVCgMFBndoU2F2ZQUMcHJvbG9nUmVzdWx0BQtzdGF0c1Jlc3VsdAkAAgECJFN0cmljdCB2YWx1ZSBpcyBub3QgZXF1YWwgdG8gaXRzZWxmLgFpARFleGNoYW5nZVJlc291cmNlcwEHYW1vdW50cwQMcHJvbG9nUmVzdWx0CQEGcHJvbG9nAAMJAAACBQxwcm9sb2dSZXN1bHQFDHByb2xvZ1Jlc3VsdAQLZHVja0Fzc2V0SWQJARN2YWx1ZU9yRXJyb3JNZXNzYWdlAgkAnQgCBQ9zdGFraW5nQ29udHJhY3QJARRrZXlTdGFrZWREdWNrQnlPd25lcgEJAKUIAQgFAWkGY2FsbGVyAhxZb3UgZG9uJ3QgaGF2ZSBhIGR1Y2sgc3Rha2VkAwkBAiE9AgkAkAMBCAUBaQhwYXltZW50cwABCQACAQIiZXhhY3RseSAxIHBheW1lbnQgbXVzdCBiZSBhdHRhY2hlZAQDcG10CQCRAwIIBQFpCHBheW1lbnRzAAAEA2FtdAgFA3BtdAZhbW91bnQDAwkBASEBCQEJaXNEZWZpbmVkAQgFA3BtdAdhc3NldElkBgkBAiE9AgkBBXZhbHVlAQgFA3BtdAdhc3NldElkBQt1c2R0QXNzZXRJZAkAAgECE1VTRFQgcGF5bWVudHMgb25seSEEC2N1ckxvY2F0aW9uCQC1CQIJAQt2YWx1ZU9yRWxzZQIJAJ0IAgUPc3Rha2luZ0NvbnRyYWN0CQEPa2V5RHVja0xvY2F0aW9uAQULZHVja0Fzc2V0SWQFD0RFRkFVTFRMT0NBVElPTgIBXwMJAQIhPQIJAJEDAgULY3VyTG9jYXRpb24FCmxvY0lkeFR5cGUCAUYJAAIBCQCsAgICLUR1Y2sgbG9jYXRpb24gdHlwZSBzaG91bGQgYmUgRmFjdG9yeSwgYnV0IGlzIAkAkQMCBQtjdXJMb2NhdGlvbgUKbG9jSWR4VHlwZQQLY3VycmVudFBhY2sJAQtnZXRCYWNrcGFjawEJARFrZXlCYWNrcGFja0J5RHVjawEFC2R1Y2tBc3NldElkBAdyZXNMaXN0CQC1CQIJAJEDAgULY3VycmVudFBhY2sFCGJwSWR4UmVzAgFfBAdtYXRMaXN0CQC1CQIJAJEDAgULY3VycmVudFBhY2sFCGJwSWR4TWF0AgFfBA0kdDA0MTE3MjQxMjc4CQEXZXhjaGFuZ2VSZXNvdXJjZXNDb21tb24DBQdyZXNMaXN0BQdtYXRMaXN0BQdhbW91bnRzBAZuZXdSZXMIBQ0kdDA0MTE3MjQxMjc4Al8xBAZuZXdNYXQIBQ0kdDA0MTE3MjQxMjc4Al8yBAl1c2R0U3BlbnQIBQ0kdDA0MTE3MjQxMjc4Al8zBBR0b3RhbEFtb3VudENvbnZlcnRlZAgFDSR0MDQxMTcyNDEyNzgCXzQDCQBmAgUJdXNkdFNwZW50BQNhbXQJAAIBCQCsAgIJAKwCAgkArAICAh9JbnN1ZmZpY2llbnQgcGF5bWVudCEgQXR0YWNoZWQ9CQEKZml4ZWRQb2ludAIFA2FtdAAGAgssIHJlcXVpcmVkPQkBCmZpeGVkUG9pbnQCBQl1c2R0U3BlbnQABgQHbmV3UGFjawkAuQkCCQDMCAIJAJEDAgULY3VycmVudFBhY2sFCmJwSWR4TGV2ZWwJAMwIAgkAuQkCBQZuZXdSZXMCAV8JAMwIAgkAuQkCBQZuZXdNYXQCAV8JAMwIAgkAkQMCBQtjdXJyZW50UGFjawUJYnBJZHhQcm9kBQNuaWwCAToEDmJhY2twYWNrUmVzdWx0CQEIYXNTdHJpbmcBCQD8BwQFD3N0YWtpbmdDb250cmFjdAIOdXBkYXRlQmFja3BhY2sJAMwIAgULZHVja0Fzc2V0SWQJAMwIAgUHbmV3UGFjawUDbmlsBQNuaWwEBHJlc3QDCQBmAgkAZQIFA2FtdAUJdXNkdFNwZW50AAAJAMwIAgkBDlNjcmlwdFRyYW5zZmVyAwgFAWkGY2FsbGVyCQBlAgUDYW10BQl1c2R0U3BlbnQFC3VzZHRBc3NldElkBQNuaWwFA25pbAQQYWN0aXZpdGllc0Ftb3VudAkAaQIFCXVzZHRTcGVudABkBAtzdGF0c1Jlc3VsdAkBBWFzSW50AQkA/AcEBQ9zdGFraW5nQ29udHJhY3QCD3VwZGF0ZUR1Y2tTdGF0cwkAzAgCBQtkdWNrQXNzZXRJZAkAzAgCCQBrAwUHeHBUcmFkZQUUdG90YWxBbW91bnRDb252ZXJ0ZWQFBU1VTFQ4BQNuaWwFA25pbAkAlAoCCQDNCAIFBHJlc3QJAQ5TY3JpcHRUcmFuc2ZlcgMFDHJlc3RDb250cmFjdAUQYWN0aXZpdGllc0Ftb3VudAULdXNkdEFzc2V0SWQJAJUKAwUOYmFja3BhY2tSZXN1bHQFDHByb2xvZ1Jlc3VsdAULc3RhdHNSZXN1bHQJAAIBAiRTdHJpY3QgdmFsdWUgaXMgbm90IGVxdWFsIHRvIGl0c2VsZi4BaQEdZXhjaGFuZ2VSZXNvdXJjZXNEdWNrRGVsaXZlcnkBB2Ftb3VudHMEDHByb2xvZ1Jlc3VsdAkBBnByb2xvZwADCQAAAgUMcHJvbG9nUmVzdWx0BQxwcm9sb2dSZXN1bHQEC2R1Y2tBc3NldElkCQETdmFsdWVPckVycm9yTWVzc2FnZQIJAJ0IAgUPc3Rha2luZ0NvbnRyYWN0CQEUa2V5U3Rha2VkRHVja0J5T3duZXIBCQClCAEIBQFpBmNhbGxlcgIcWW91IGRvbid0IGhhdmUgYSBkdWNrIHN0YWtlZAMJAQIhPQIJAJADAQgFAWkIcGF5bWVudHMAAQkAAgECImV4YWN0bHkgMSBwYXltZW50IG11c3QgYmUgYXR0YWNoZWQEA3BtdAkAkQMCCAUBaQhwYXltZW50cwAABANhbXQIBQNwbXQGYW1vdW50AwMJAQEhAQkBCWlzRGVmaW5lZAEIBQNwbXQHYXNzZXRJZAYJAQIhPQIJAQV2YWx1ZQEIBQNwbXQHYXNzZXRJZAULdXNkdEFzc2V0SWQJAAIBAhNVU0RUIHBheW1lbnRzIG9ubHkhBAtjdXJyZW50UGFjawkBC2dldEJhY2twYWNrAQkBEWtleUJhY2twYWNrQnlEdWNrAQULZHVja0Fzc2V0SWQEB3Jlc0xpc3QJALUJAgkAkQMCBQtjdXJyZW50UGFjawUIYnBJZHhSZXMCAV8EB21hdExpc3QJALUJAgkAkQMCBQtjdXJyZW50UGFjawUIYnBJZHhNYXQCAV8EDSR0MDQyNzE2NDI4MjIJARdleGNoYW5nZVJlc291cmNlc0NvbW1vbgMFB3Jlc0xpc3QFB21hdExpc3QFB2Ftb3VudHMEBm5ld1JlcwgFDSR0MDQyNzE2NDI4MjICXzEEBm5ld01hdAgFDSR0MDQyNzE2NDI4MjICXzIECXVzZHRTcGVudAgFDSR0MDQyNzE2NDI4MjICXzMEFHRvdGFsQW1vdW50Q29udmVydGVkCAUNJHQwNDI3MTY0MjgyMgJfNAQHZmVlUGFydAkAawMFCXVzZHRTcGVudAUOREVMSVZFUllfRkVFMTUFBU1VTFQ2BANmZWUJAJYDAQkAzAgCBQdmZWVQYXJ0CQDMCAIFF01JTl9VU0RUX0ZFRV9ERUxJVkVSWTE1BQNuaWwEEHVzZHRTcGVudFdpdGhGZWUJAGQCBQl1c2R0U3BlbnQFA2ZlZQMJAGYCBRB1c2R0U3BlbnRXaXRoRmVlBQNhbXQJAAIBCQCsAgIJAKwCAgkArAICCQCsAgIJAKwCAgkArAICAh9JbnN1ZmZpY2llbnQgcGF5bWVudCEgQXR0YWNoZWQ9CQEKZml4ZWRQb2ludAIFA2FtdAAGAgssIHJlcXVpcmVkPQkBCmZpeGVkUG9pbnQCBQl1c2R0U3BlbnQABgIBKwkBCmZpeGVkUG9pbnQCBQNmZWUABgIOKGRlbGl2ZXJ5IGZlZSkEB25ld1BhY2sJALkJAgkAzAgCCQCRAwIFC2N1cnJlbnRQYWNrBQpicElkeExldmVsCQDMCAIJALkJAgUGbmV3UmVzAgFfCQDMCAIJALkJAgUGbmV3TWF0AgFfCQDMCAIJAJEDAgULY3VycmVudFBhY2sFCWJwSWR4UHJvZAUDbmlsAgE6BA5iYWNrcGFja1Jlc3VsdAkBCGFzU3RyaW5nAQkA/AcEBQ9zdGFraW5nQ29udHJhY3QCDnVwZGF0ZUJhY2twYWNrCQDMCAIFC2R1Y2tBc3NldElkCQDMCAIFB25ld1BhY2sFA25pbAUDbmlsBARyZXN0AwkAZgIJAGUCBQNhbXQFEHVzZHRTcGVudFdpdGhGZWUAAAkAzAgCCQEOU2NyaXB0VHJhbnNmZXIDCAUBaQZjYWxsZXIJAGUCBQNhbXQFEHVzZHRTcGVudFdpdGhGZWUFC3VzZHRBc3NldElkBQNuaWwFA25pbAQQYWN0aXZpdGllc0Ftb3VudAkAaQIFCXVzZHRTcGVudABkBAtzdGF0c1Jlc3VsdAkBBWFzSW50AQkA/AcEBQ9zdGFraW5nQ29udHJhY3QCD3VwZGF0ZUR1Y2tTdGF0cwkAzAgCBQtkdWNrQXNzZXRJZAkAzAgCCQBrAwUHeHBUcmFkZQUUdG90YWxBbW91bnRDb252ZXJ0ZWQFBU1VTFQ4BQNuaWwFA25pbAQJZnVuZFRvdGFsCQELdmFsdWVPckVsc2UCCQCfCAEFD2RlbGl2ZXJ5RnVuZEtleQAACQCUCgIJAM0IAgkAzQgCBQRyZXN0CQEOU2NyaXB0VHJhbnNmZXIDBQxyZXN0Q29udHJhY3QFEGFjdGl2aXRpZXNBbW91bnQFC3VzZHRBc3NldElkCQEMSW50ZWdlckVudHJ5AgUPZGVsaXZlcnlGdW5kS2V5CQBkAgUJZnVuZFRvdGFsBQNmZWUJAJUKAwUOYmFja3BhY2tSZXN1bHQFDHByb2xvZ1Jlc3VsdAULc3RhdHNSZXN1bHQJAAIBAiRTdHJpY3QgdmFsdWUgaXMgbm90IGVxdWFsIHRvIGl0c2VsZi4BaQEdZXhjaGFuZ2VSZXNvdXJjZXNMYW5kRGVsaXZlcnkCB2Ftb3VudHMLbGFuZEFzc2V0SWQEDHByb2xvZ1Jlc3VsdAkBBnByb2xvZwADCQAAAgUMcHJvbG9nUmVzdWx0BQxwcm9sb2dSZXN1bHQDCQECIT0CCQCQAwEIBQFpCHBheW1lbnRzAAEJAAIBAiJleGFjdGx5IDEgcGF5bWVudCBtdXN0IGJlIGF0dGFjaGVkBANwbXQJAJEDAggFAWkIcGF5bWVudHMAAAQDYW10CAUDcG10BmFtb3VudAMDCQEBIQEJAQlpc0RlZmluZWQBCAUDcG10B2Fzc2V0SWQGCQECIT0CCQEFdmFsdWUBCAUDcG10B2Fzc2V0SWQFC3VzZHRBc3NldElkCQACAQITVVNEVCBwYXltZW50cyBvbmx5IQQEdXNlcggFAWkGY2FsbGVyBARhZGRyCQClCAEFBHVzZXIEBWFzc2V0CQEFdmFsdWUBCQDsBwEJANkEAQULbGFuZEFzc2V0SWQDCQEBIQEJAQlpc0RlZmluZWQBCQCaCAIFD3N0YWtpbmdDb250cmFjdAkBFmtleVN0YWtlZFRpbWVCeUFzc2V0SWQBBQtsYW5kQXNzZXRJZAkAAgEJAKwCAgkArAICAgRORlQgCAUFYXNzZXQEbmFtZQIOIGlzIG5vdCBzdGFrZWQEBW93bmVyCQETdmFsdWVPckVycm9yTWVzc2FnZQIJAJ0IAgUPc3Rha2luZ0NvbnRyYWN0CQEVa2V5TGFuZEFzc2V0SWRUb093bmVyAQULbGFuZEFzc2V0SWQJAKwCAgkArAICAgRORlQgCAUFYXNzZXQEbmFtZQIMIGlzIG9ycGhhbmVkAwkBAiE9AgUFb3duZXIFBGFkZHIJAAIBCQCsAgIFCkxBTkRQUkVGSVgCDSBpcyBub3QgeW91cnMEAndoCQEIYXNTdHJpbmcBCQD8BwQFD3N0YWtpbmdDb250cmFjdAIUZ2V0V2FyZWhvdXNlUkVBRE9OTFkJAMwIAgULbGFuZEFzc2V0SWQFA25pbAUDbmlsBAljdXJyZW50V2gJALwJAgUCd2gCAToEB3Jlc0xpc3QJALUJAgkAkQMCBQljdXJyZW50V2gFCHdoSWR4UmVzAgFfBAdtYXRMaXN0CQC1CQIJAJEDAgUJY3VycmVudFdoBQh3aElkeE1hdAIBXwQNJHQwNDUwMDc0NTExMwkBF2V4Y2hhbmdlUmVzb3VyY2VzQ29tbW9uAwUHcmVzTGlzdAUHbWF0TGlzdAUHYW1vdW50cwQGbmV3UmVzCAUNJHQwNDUwMDc0NTExMwJfMQQGbmV3TWF0CAUNJHQwNDUwMDc0NTExMwJfMgQJdXNkdFNwZW50CAUNJHQwNDUwMDc0NTExMwJfMwQUdG90YWxBbW91bnRDb252ZXJ0ZWQIBQ0kdDA0NTAwNzQ1MTEzAl80BAV3aFN0cgkAugkCCQDMCAIJAJEDAgUJY3VycmVudFdoBQt3aElkeExldmVscwkAzAgCCQC5CQIFBm5ld1JlcwIBXwkAzAgCCQC5CQIFBm5ld01hdAIBXwkAzAgCCQCRAwIFCWN1cnJlbnRXaAUJd2hJZHhQcm9kCQDMCAIJAJEDAgUJY3VycmVudFdoBQl3aElkeExPRlQFA25pbAIBOgQGd2hTYXZlCQEIYXNTdHJpbmcBCQD8BwQFD3N0YWtpbmdDb250cmFjdAINc2F2ZVdhcmVob3VzZQkAzAgCBQV3aFN0cgkAzAgCBQtsYW5kQXNzZXRJZAUDbmlsBQNuaWwEC3N0YXRzUmVzdWx0CQEFYXNJbnQBCQD8BwQFD3N0YWtpbmdDb250cmFjdAIOdXBkYXRlQWNjU3RhdHMJAMwIAgUEYWRkcgkAzAgCCQBrAwUHeHBUcmFkZQUUdG90YWxBbW91bnRDb252ZXJ0ZWQFBU1VTFQ4BQNuaWwFA25pbAQHZmVlUGFydAkAawMFCXVzZHRTcGVudAUOREVMSVZFUllfRkVFMTUFBU1VTFQ2BANmZWUJAJYDAQkAzAgCBQdmZWVQYXJ0CQDMCAIFF01JTl9VU0RUX0ZFRV9ERUxJVkVSWTE1BQNuaWwEEHVzZHRTcGVudFdpdGhGZWUJAGQCBQl1c2R0U3BlbnQFA2ZlZQMJAGYCBRB1c2R0U3BlbnRXaXRoRmVlBQNhbXQJAAIBCQCsAgIJAKwCAgkArAICCQCsAgIJAKwCAgkArAICAh9JbnN1ZmZpY2llbnQgcGF5bWVudCEgQXR0YWNoZWQ9CQEKZml4ZWRQb2ludAIFA2FtdAAGAgssIHJlcXVpcmVkPQkBCmZpeGVkUG9pbnQCBQl1c2R0U3BlbnQABgIBKwkBCmZpeGVkUG9pbnQCBQNmZWUABgIOKGRlbGl2ZXJ5IGZlZSkEBHJlc3QDCQBmAgkAZQIFA2FtdAUQdXNkdFNwZW50V2l0aEZlZQAACQDMCAIJAQ5TY3JpcHRUcmFuc2ZlcgMIBQFpBmNhbGxlcgkAZQIFA2FtdAUQdXNkdFNwZW50V2l0aEZlZQULdXNkdEFzc2V0SWQFA25pbAUDbmlsBBBhY3Rpdml0aWVzQW1vdW50CQBpAgUJdXNkdFNwZW50AGQECWZ1bmRUb3RhbAkBC3ZhbHVlT3JFbHNlAgkAnwgBBQ9kZWxpdmVyeUZ1bmRLZXkAAAkAlAoCCQDNCAIJAM0IAgUEcmVzdAkBDlNjcmlwdFRyYW5zZmVyAwUMcmVzdENvbnRyYWN0BRBhY3Rpdml0aWVzQW1vdW50BQt1c2R0QXNzZXRJZAkBDEludGVnZXJFbnRyeQIFD2RlbGl2ZXJ5RnVuZEtleQkAZAIFCWZ1bmRUb3RhbAUDZmVlCQCVCgMFBndoU2F2ZQUMcHJvbG9nUmVzdWx0BQtzdGF0c1Jlc3VsdAkAAgECJFN0cmljdCB2YWx1ZSBpcyBub3QgZXF1YWwgdG8gaXRzZWxmLgFpAQpjcmFmdEdvb2RzAgpwcm9kdWN0SWR4CHF1YW50aXR5BAxwcm9sb2dSZXN1bHQJAQZwcm9sb2cAAwkAAAIFDHByb2xvZ1Jlc3VsdAUMcHJvbG9nUmVzdWx0AwkBAiE9AgkAkAMBCAUBaQhwYXltZW50cwABCQACAQIiZXhhY3RseSAxIHBheW1lbnQgbXVzdCBiZSBhdHRhY2hlZAQDcG10CQCRAwIIBQFpCHBheW1lbnRzAAAEA2FtdAgFA3BtdAZhbW91bnQDAwkBASEBCQEJaXNEZWZpbmVkAQgFA3BtdAdhc3NldElkBgkBAiE9AgkBBXZhbHVlAQgFA3BtdAdhc3NldElkBQt1c2R0QXNzZXRJZAkAAgECE1VTRFQgcGF5bWVudHMgb25seSEDCQECIT0CBQNhbXQFBU1VTFQ2CQACAQkArAICCQCsAgICCGV4YWN0bHkgCQEKZml4ZWRQb2ludAIFD0NSQUZUX1VTRFRfQ09TVAAGAiEgVVNEVCBtdXN0IGJlIGF0dGFjaGVkIGFzIHBheW1lbnQEC2R1Y2tBc3NldElkCQETdmFsdWVPckVycm9yTWVzc2FnZQIJAJ0IAgUPc3Rha2luZ0NvbnRyYWN0CQEUa2V5U3Rha2VkRHVja0J5T3duZXIBCQClCAEIBQFpBmNhbGxlcgIcWW91IGRvbid0IGhhdmUgYSBkdWNrIHN0YWtlZAQLY3VyTG9jYXRpb24JALUJAgkBC3ZhbHVlT3JFbHNlAgkAnQgCBQ9zdGFraW5nQ29udHJhY3QJAQ9rZXlEdWNrTG9jYXRpb24BBQtkdWNrQXNzZXRJZAUPREVGQVVMVExPQ0FUSU9OAgFfAwkBAiE9AgkAkQMCBQtjdXJMb2NhdGlvbgUKbG9jSWR4VHlwZQIBTQkAAgEJAKwCAgIxRHVjayBsb2NhdGlvbiB0eXBlIHNob3VsZCBiZSBNYW51ZmFjdG9yeSwgYnV0IGlzIAkAkQMCBQtjdXJMb2NhdGlvbgUKbG9jSWR4VHlwZQQEY29udAkAkQMCBQtjdXJMb2NhdGlvbgUPbG9jSWR4Q29udGluZW50BAtjdXJyZW50UGFjawkBC2dldEJhY2twYWNrAQkBEWtleUJhY2twYWNrQnlEdWNrAQULZHVja0Fzc2V0SWQEB21hdExpc3QJALUJAgkAkQMCBQtjdXJyZW50UGFjawUIYnBJZHhNYXQCAV8ECHByb2RMaXN0AwkAAAIJAJEDAgULY3VycmVudFBhY2sFCWJwSWR4UHJvZAIABQNuaWwJALwJAgkAkQMCBQtjdXJyZW50UGFjawUJYnBJZHhQcm9kAgFfBA0kdDA0NzQzODQ3NTM1CQEQY3JhZnRHb29kc0NvbW1vbgUFB21hdExpc3QFCHByb2RMaXN0BQRjb250BQpwcm9kdWN0SWR4BQhxdWFudGl0eQQGbmV3TWF0CAUNJHQwNDc0Mzg0NzUzNQJfMQQHbmV3UHJvZAgFDSR0MDQ3NDM4NDc1MzUCXzIECG1hdFNwZW50CAUNJHQwNDc0Mzg0NzUzNQJfMwQHbmV3UGFjawkAuQkCCQDMCAIJAJEDAgULY3VycmVudFBhY2sFCmJwSWR4TGV2ZWwJAMwIAgkAkQMCBQtjdXJyZW50UGFjawUIYnBJZHhSZXMJAMwIAgkAuQkCBQZuZXdNYXQCAV8JAMwIAgkAugkCBQduZXdQcm9kAgFfBQNuaWwCAToEBnJlc3VsdAkBCGFzU3RyaW5nAQkA/AcEBQ9zdGFraW5nQ29udHJhY3QCDnVwZGF0ZUJhY2twYWNrCQDMCAIFC2R1Y2tBc3NldElkCQDMCAIFB25ld1BhY2sFA25pbAUDbmlsBAtzdGF0c1Jlc3VsdAkBBWFzSW50AQkA/AcEBQ9zdGFraW5nQ29udHJhY3QCD3VwZGF0ZUR1Y2tTdGF0cwkAzAgCBQtkdWNrQXNzZXRJZAkAzAgCCQBrAwUHeHBDcmFmdAUIbWF0U3BlbnQFBU1VTFQ4BQNuaWwFA25pbAkAlAoCBQNuaWwJAJUKAwUGcmVzdWx0BQxwcm9sb2dSZXN1bHQFC3N0YXRzUmVzdWx0CQACAQIkU3RyaWN0IHZhbHVlIGlzIG5vdCBlcXVhbCB0byBpdHNlbGYuAWkBFmNyYWZ0R29vZHNEdWNrRGVsaXZlcnkDCnByb2R1Y3RJZHgIcXVhbnRpdHkUbWFudWZhY3RvcnlDb250aW5lbnQEDHByb2xvZ1Jlc3VsdAkBBnByb2xvZwADCQAAAgUMcHJvbG9nUmVzdWx0BQxwcm9sb2dSZXN1bHQEC2R1Y2tBc3NldElkCQETdmFsdWVPckVycm9yTWVzc2FnZQIJAJ0IAgUPc3Rha2luZ0NvbnRyYWN0CQEUa2V5U3Rha2VkRHVja0J5T3duZXIBCQClCAEIBQFpBmNhbGxlcgIcWW91IGRvbid0IGhhdmUgYSBkdWNrIHN0YWtlZAMJAQIhPQIJAJADAQgFAWkIcGF5bWVudHMAAQkAAgECImV4YWN0bHkgMSBwYXltZW50IG11c3QgYmUgYXR0YWNoZWQEA3BtdAkAkQMCCAUBaQhwYXltZW50cwAABANhbXQIBQNwbXQGYW1vdW50AwMJAQEhAQkBCWlzRGVmaW5lZAEIBQNwbXQHYXNzZXRJZAYJAQIhPQIJAQV2YWx1ZQEIBQNwbXQHYXNzZXRJZAULdXNkdEFzc2V0SWQJAAIBAhNVU0RUIHBheW1lbnRzIG9ubHkhBAtjdXJyZW50UGFjawkBC2dldEJhY2twYWNrAQkBEWtleUJhY2twYWNrQnlEdWNrAQULZHVja0Fzc2V0SWQEB21hdExpc3QJALUJAgkAkQMCBQtjdXJyZW50UGFjawUIYnBJZHhNYXQCAV8ECHByb2RMaXN0AwkAAAIJAJEDAgULY3VycmVudFBhY2sFCWJwSWR4UHJvZAIABQNuaWwJALwJAgkAkQMCBQtjdXJyZW50UGFjawUJYnBJZHhQcm9kAgFfBA0kdDA0ODY4MzQ4Nzk2CQEQY3JhZnRHb29kc0NvbW1vbgUFB21hdExpc3QFCHByb2RMaXN0BRRtYW51ZmFjdG9yeUNvbnRpbmVudAUKcHJvZHVjdElkeAUIcXVhbnRpdHkEBm5ld01hdAgFDSR0MDQ4NjgzNDg3OTYCXzEEB25ld1Byb2QIBQ0kdDA0ODY4MzQ4Nzk2Al8yBAhtYXRTcGVudAgFDSR0MDQ4NjgzNDg3OTYCXzMEB25ld1BhY2sJALkJAgkAzAgCCQCRAwIFC2N1cnJlbnRQYWNrBQpicElkeExldmVsCQDMCAIJAJEDAgULY3VycmVudFBhY2sFCGJwSWR4UmVzCQDMCAIJALkJAgUGbmV3TWF0AgFfCQDMCAIJALoJAgUHbmV3UHJvZAIBXwUDbmlsAgE6BA5iYWNrcGFja1Jlc3VsdAkBCGFzU3RyaW5nAQkA/AcEBQ9zdGFraW5nQ29udHJhY3QCDnVwZGF0ZUJhY2twYWNrCQDMCAIFC2R1Y2tBc3NldElkCQDMCAIFB25ld1BhY2sFA25pbAUDbmlsBAtzdGF0c1Jlc3VsdAkBBWFzSW50AQkA/AcEBQ9zdGFraW5nQ29udHJhY3QCD3VwZGF0ZUR1Y2tTdGF0cwkAzAgCBQtkdWNrQXNzZXRJZAkAzAgCCQBrAwUHeHBDcmFmdAUIbWF0U3BlbnQFBU1VTFQ4BQNuaWwFA25pbAQHZmVlUGFydAkAawMFCHF1YW50aXR5BRVNSU5fVVNEVF9GRUVfREVMSVZFUlkFFENSQUZUX0RFTElWRVJZX0NPRUZGBANmZWUJAJYDAQkAzAgCBQdmZWVQYXJ0CQDMCAIFFU1JTl9VU0RUX0ZFRV9ERUxJVkVSWQUDbmlsBBB1c2R0U3BlbnRXaXRoRmVlCQBkAgUPQ1JBRlRfVVNEVF9DT1NUBQNmZWUDCQBmAgUQdXNkdFNwZW50V2l0aEZlZQUDYW10CQACAQkArAICCQCsAgIJAKwCAgkArAICCQCsAgIJAKwCAgIfSW5zdWZmaWNpZW50IHBheW1lbnQhIEF0dGFjaGVkPQkBCmZpeGVkUG9pbnQCBQNhbXQABgILLCByZXF1aXJlZD0JAQpmaXhlZFBvaW50AgUPQ1JBRlRfVVNEVF9DT1NUAAYCASsJAQpmaXhlZFBvaW50AgUDZmVlAAYCDihkZWxpdmVyeSBmZWUpBARyZXN0AwkAZgIJAGUCBQNhbXQFEHVzZHRTcGVudFdpdGhGZWUAAAkAzAgCCQEOU2NyaXB0VHJhbnNmZXIDCAUBaQZjYWxsZXIJAGUCBQNhbXQFEHVzZHRTcGVudFdpdGhGZWUFC3VzZHRBc3NldElkBQNuaWwFA25pbAQJZnVuZFRvdGFsCQELdmFsdWVPckVsc2UCCQCfCAEFD2RlbGl2ZXJ5RnVuZEtleQAACQCUCgIJAM0IAgUEcmVzdAkBDEludGVnZXJFbnRyeQIFD2RlbGl2ZXJ5RnVuZEtleQkAZAIFCWZ1bmRUb3RhbAUDZmVlCQCVCgMFDmJhY2twYWNrUmVzdWx0BQxwcm9sb2dSZXN1bHQFC3N0YXRzUmVzdWx0CQACAQIkU3RyaWN0IHZhbHVlIGlzIG5vdCBlcXVhbCB0byBpdHNlbGYuAWkBFmNyYWZ0R29vZHNMYW5kRGVsaXZlcnkECnByb2R1Y3RJZHgIcXVhbnRpdHkLbGFuZEFzc2V0SWQUbWFudWZhY3RvcnlDb250aW5lbnQEDHByb2xvZ1Jlc3VsdAkBBnByb2xvZwADCQAAAgUMcHJvbG9nUmVzdWx0BQxwcm9sb2dSZXN1bHQDCQECIT0CCQCQAwEIBQFpCHBheW1lbnRzAAEJAAIBAiJleGFjdGx5IDEgcGF5bWVudCBtdXN0IGJlIGF0dGFjaGVkBANwbXQJAJEDAggFAWkIcGF5bWVudHMAAAQDYW10CAUDcG10BmFtb3VudAMDCQEBIQEJAQlpc0RlZmluZWQBCAUDcG10B2Fzc2V0SWQGCQECIT0CCQEFdmFsdWUBCAUDcG10B2Fzc2V0SWQFC3VzZHRBc3NldElkCQACAQITVVNEVCBwYXltZW50cyBvbmx5IQQEdXNlcggFAWkGY2FsbGVyBARhZGRyCQClCAEFBHVzZXIEBWFzc2V0CQEFdmFsdWUBCQDsBwEJANkEAQULbGFuZEFzc2V0SWQDCQEBIQEJAQlpc0RlZmluZWQBCQCaCAIFD3N0YWtpbmdDb250cmFjdAkBFmtleVN0YWtlZFRpbWVCeUFzc2V0SWQBBQtsYW5kQXNzZXRJZAkAAgEJAKwCAgkArAICAgRORlQgCAUFYXNzZXQEbmFtZQIOIGlzIG5vdCBzdGFrZWQEBW93bmVyCQETdmFsdWVPckVycm9yTWVzc2FnZQIJAJ0IAgUPc3Rha2luZ0NvbnRyYWN0CQEVa2V5TGFuZEFzc2V0SWRUb093bmVyAQULbGFuZEFzc2V0SWQJAKwCAgkArAICAgRORlQgCAUFYXNzZXQEbmFtZQIMIGlzIG9ycGhhbmVkAwkBAiE9AgUFb3duZXIFBGFkZHIJAAIBCQCsAgIFCkxBTkRQUkVGSVgCDSBpcyBub3QgeW91cnMEAndoCQEIYXNTdHJpbmcBCQD8BwQFD3N0YWtpbmdDb250cmFjdAIUZ2V0V2FyZWhvdXNlUkVBRE9OTFkJAMwIAgULbGFuZEFzc2V0SWQFA25pbAUDbmlsBAljdXJyZW50V2gJALwJAgUCd2gCAToEB21hdExpc3QJALUJAgkAkQMCBQljdXJyZW50V2gFCHdoSWR4TWF0AgFfBAhwcm9kTGlzdAMJAAACCQCRAwIFCWN1cnJlbnRXaAUJd2hJZHhQcm9kAgAFA25pbAkAvAkCCQCRAwIFCWN1cnJlbnRXaAUJd2hJZHhQcm9kAgFfBA0kdDA1MDk2MjUxMDc1CQEQY3JhZnRHb29kc0NvbW1vbgUFB21hdExpc3QFCHByb2RMaXN0BRRtYW51ZmFjdG9yeUNvbnRpbmVudAUKcHJvZHVjdElkeAUIcXVhbnRpdHkEBm5ld01hdAgFDSR0MDUwOTYyNTEwNzUCXzEEB25ld1Byb2QIBQ0kdDA1MDk2MjUxMDc1Al8yBAhtYXRTcGVudAgFDSR0MDUwOTYyNTEwNzUCXzMEBXdoU3RyCQC6CQIJAMwIAgkAkQMCBQljdXJyZW50V2gFC3doSWR4TGV2ZWxzCQDMCAIJAJEDAgUJY3VycmVudFdoBQh3aElkeFJlcwkAzAgCCQC5CQIFBm5ld01hdAIBXwkAzAgCCQC6CQIFB25ld1Byb2QCAV8JAMwIAgkAkQMCBQljdXJyZW50V2gFCXdoSWR4TE9GVAUDbmlsAgE6BAZ3aFNhdmUJAQhhc1N0cmluZwEJAPwHBAUPc3Rha2luZ0NvbnRyYWN0Ag1zYXZlV2FyZWhvdXNlCQDMCAIFBXdoU3RyCQDMCAIFC2xhbmRBc3NldElkBQNuaWwFA25pbAQLc3RhdHNSZXN1bHQJAQVhc0ludAEJAPwHBAUPc3Rha2luZ0NvbnRyYWN0Ag51cGRhdGVBY2NTdGF0cwkAzAgCBQRhZGRyCQDMCAIJAGsDBQd4cENyYWZ0BQhtYXRTcGVudAUFTVVMVDgFA25pbAUDbmlsBAdmZWVQYXJ0CQBrAwUIcXVhbnRpdHkFFU1JTl9VU0RUX0ZFRV9ERUxJVkVSWQUUQ1JBRlRfREVMSVZFUllfQ09FRkYEA2ZlZQkAlgMBCQDMCAIFB2ZlZVBhcnQJAMwIAgUVTUlOX1VTRFRfRkVFX0RFTElWRVJZBQNuaWwEEHVzZHRTcGVudFdpdGhGZWUJAGQCBQ9DUkFGVF9VU0RUX0NPU1QFA2ZlZQMJAGYCBRB1c2R0U3BlbnRXaXRoRmVlBQNhbXQJAAIBCQCsAgIJAKwCAgkArAICCQCsAgIJAKwCAgkArAICAh9JbnN1ZmZpY2llbnQgcGF5bWVudCEgQXR0YWNoZWQ9CQEKZml4ZWRQb2ludAIFA2FtdAAGAgssIHJlcXVpcmVkPQkBCmZpeGVkUG9pbnQCBQ9DUkFGVF9VU0RUX0NPU1QABgIBKwkBCmZpeGVkUG9pbnQCBQNmZWUABgIOKGRlbGl2ZXJ5IGZlZSkEBHJlc3QDCQBmAgkAZQIFA2FtdAUQdXNkdFNwZW50V2l0aEZlZQAACQDMCAIJAQ5TY3JpcHRUcmFuc2ZlcgMIBQFpBmNhbGxlcgkAZQIFA2FtdAUQdXNkdFNwZW50V2l0aEZlZQULdXNkdEFzc2V0SWQFA25pbAUDbmlsBAlmdW5kVG90YWwJAQt2YWx1ZU9yRWxzZQIJAJ8IAQUPZGVsaXZlcnlGdW5kS2V5AAAJAJQKAgkAzQgCBQRyZXN0CQEMSW50ZWdlckVudHJ5AgUPZGVsaXZlcnlGdW5kS2V5CQBkAgUJZnVuZFRvdGFsBQNmZWUJAJUKAwUGd2hTYXZlBQxwcm9sb2dSZXN1bHQFC3N0YXRzUmVzdWx0CQACAQIkU3RyaWN0IHZhbHVlIGlzIG5vdCBlcXVhbCB0byBpdHNlbGYuAWkBEXNldFdhcmVob3VzZU9yZGVyAgtuZXdPcmRlclN0cgtsYW5kQXNzZXRJZAQEdXNlcggFAWkMb3JpZ2luQ2FsbGVyBARhZGRyCQClCAEFBHVzZXIEBnJlc3VsdAMJAQIhPQIFBHVzZXIFDHJlc3RDb250cmFjdAkBDGNoZWNrQmxvY2tlZAAHBAVhc3NldAkBBXZhbHVlAQkA7AcBCQDZBAEFC2xhbmRBc3NldElkAwkBASEBCQEJaXNEZWZpbmVkAQkAmggCBQ9zdGFraW5nQ29udHJhY3QJARZrZXlTdGFrZWRUaW1lQnlBc3NldElkAQULbGFuZEFzc2V0SWQJAAIBCQCsAgIJAKwCAgIETkZUIAgFBWFzc2V0BG5hbWUCDiBpcyBub3Qgc3Rha2VkBAVvd25lcgkBE3ZhbHVlT3JFcnJvck1lc3NhZ2UCCQCdCAIFD3N0YWtpbmdDb250cmFjdAkBFWtleUxhbmRBc3NldElkVG9Pd25lcgEFC2xhbmRBc3NldElkCQCsAgIJAKwCAgIETkZUIAgFBWFzc2V0BG5hbWUCDCBpcyBvcnBoYW5lZAMDCQECIT0CBQR1c2VyBQxyZXN0Q29udHJhY3QJAQIhPQIFBW93bmVyBQRhZGRyBwkAAgEJAKwCAgUKTEFORFBSRUZJWAINIGlzIG5vdCB5b3VycwQIbmV3T3JkZXIJALwJAgULbmV3T3JkZXJTdHICAToEAndoCQEIYXNTdHJpbmcBCQD8BwQFD3N0YWtpbmdDb250cmFjdAIUZ2V0V2FyZWhvdXNlUkVBRE9OTFkJAMwIAgULbGFuZEFzc2V0SWQFA25pbAUDbmlsBAljdXJyZW50V2gJALwJAgUCd2gCAToEBGxvZnQJALUJAgkAkQMCBQljdXJyZW50V2gFCXdoSWR4TE9GVAIBXwQHd2hUb3RhbAkBDXBhcnNlSW50VmFsdWUBCQCRAwIFBGxvZnQFCHZvbFRvdGFsBAZvcmRLZXkJAQ5rZXlPcmRlckJ5TGFuZAEFC2xhbmRBc3NldElkBApjdXJyZW50T3JkCQEIZ2V0T3JkZXIBBQZvcmRLZXkEAXoJAQtzZXRJbnRlcm5hbAMFCWN1cnJlbnRXaAUKY3VycmVudE9yZAUIbmV3T3JkZXIEC2J1eVZvbFNhbGRvCAUBegJfNAQMc2VsbFZvbFNhbGRvCAUBegJfNQQKd2hPY2N1cGllZAgFAXoCXzcECHdoTG9ja2VkCQBkAgULYnV5Vm9sU2FsZG8FDHNlbGxWb2xTYWxkbwQGd2hGcmVlCQBlAgkAZQIFB3doVG90YWwFCndoT2NjdXBpZWQFCHdoTG9ja2VkAwkAZgIAAAUGd2hGcmVlCQACAQkArAICCQCsAgIJAKwCAgkArAICCQCsAgIJAKwCAgITQXR0ZW1wdCB0byByZXNlcnZlIAkApAMBBQtidXlWb2xTYWxkbwIbIHNwYWNlIGZvciBidXkgb3JkZXJzLCBhbmQgCQCkAwEFDHNlbGxWb2xTYWxkbwIlIHNwYWNlIGZvciBzZWxsIG9yZGVycyAoYW5kIG9jY3VwaWVkPQkApAMBBQp3aE9jY3VwaWVkAh8pLCBsZWFkcyB0byBuZWdhdGl2ZSBmcmVlIHNwYWNlBAV3aFN0cgkAugkCCQDMCAIJAJEDAgUJY3VycmVudFdoBQt3aElkeExldmVscwkAzAgCCQC5CQIIBQF6Al8xAgFfCQDMCAIJALkJAggFAXoCXzICAV8JAMwIAgkAugkCCAUBegJfMwIBXwkAzAgCCQCkAwEFCHdoTG9ja2VkBQNuaWwCAToEBndoU2F2ZQkBCGFzU3RyaW5nAQkA/AcEBQ9zdGFraW5nQ29udHJhY3QCDXNhdmVXYXJlaG91c2UJAMwIAgUFd2hTdHIJAMwIAgULbGFuZEFzc2V0SWQFA25pbAUDbmlsBAh1c2RTYWxkbwgFAXoCXzYEB2FjdGlvbnMDCQBmAgUIdXNkU2FsZG8AAAMJAQIhPQIJAJADAQgFAWkIcGF5bWVudHMAAQkAAgECImV4YWN0bHkgMSBwYXltZW50IG11c3QgYmUgYXR0YWNoZWQEA3BtdAkAkQMCCAUBaQhwYXltZW50cwAABANhbXQIBQNwbXQGYW1vdW50BApwbXRBc3NldElkCQETdmFsdWVPckVycm9yTWVzc2FnZQIIBQNwbXQHYXNzZXRJZAIeV0FWRVMgY2FuJ3QgYmUgdXNlZCBhcyBwYXltZW50AwkBAiE9AgUKcG10QXNzZXRJZAULdXNkdEFzc2V0SWQJAAIBAhNVU0RUIHBheW1lbnRzIG9ubHkhAwkBAiE9AgUDYW10BQh1c2RTYWxkbwkAAgEJAKwCAgISUGF5bWVudCBuZWVkZWQgaXMgCQCkAwEFCHVzZFNhbGRvCQDMCAIJAQtTdHJpbmdFbnRyeQIFBm9yZEtleQULbmV3T3JkZXJTdHIFA25pbAMJAAACBQh1c2RTYWxkbwAAAwkBAiE9AgkAkAMBCAUBaQhwYXltZW50cwAACQACAQISTm8gcGF5bWVudHMgbmVlZGVkCQDMCAIJAQtTdHJpbmdFbnRyeQIFBm9yZEtleQULbmV3T3JkZXJTdHIFA25pbAMJAQIhPQIJAJADAQgFAWkIcGF5bWVudHMAAAkAAgECEk5vIHBheW1lbnRzIG5lZWRlZAkAzAgCCQEOU2NyaXB0VHJhbnNmZXIDCQERQGV4dHJOYXRpdmUoMTA2MikBBQVvd25lcgkBAS0BBQh1c2RTYWxkbwULdXNkdEFzc2V0SWQJAMwIAgkBC1N0cmluZ0VudHJ5AgUGb3JkS2V5BQtuZXdPcmRlclN0cgUDbmlsCQCUCgIFB2FjdGlvbnMJAJQKAgUGcmVzdWx0BQZ3aFNhdmUBaQEUYWNjZXB0V2FyZWhvdXNlT3JkZXIDCmJwT3JkZXJTdHIPc2hvcExhbmRBc3NldElkC2R1Y2tBc3NldElkBAxwcm9sb2dSZXN1bHQJAQZwcm9sb2cAAwkAAAIFDHByb2xvZ1Jlc3VsdAUMcHJvbG9nUmVzdWx0BAZjYWxsZXIIBQFpDG9yaWdpbkNhbGxlcgQKY2FsbGVyQWRkcgkApQgBBQZjYWxsZXIEEXN0YWtlZER1Y2tBc3NldElkCQETdmFsdWVPckVycm9yTWVzc2FnZQIJAJ0IAgUPc3Rha2luZ0NvbnRyYWN0CQEUa2V5U3Rha2VkRHVja0J5T3duZXIBBQpjYWxsZXJBZGRyAhxZb3UgZG9uJ3QgaGF2ZSBhIGR1Y2sgc3Rha2VkBAtjdXJMb2NhdGlvbgkBC3ZhbHVlT3JFbHNlAgkAnQgCBQ9zdGFraW5nQ29udHJhY3QJAQ9rZXlEdWNrTG9jYXRpb24BBRFzdGFrZWREdWNrQXNzZXRJZAUPREVGQVVMVExPQ0FUSU9OBANsb2MJALUJAgkBBXZhbHVlAQULY3VyTG9jYXRpb24CAV8DCQECIT0CCQCRAwIFA2xvYwUKbG9jSWR4VHlwZQIBTAkAAgEJAKwCAgkArAICAhZEdWNrIGxvY2F0aW9uIHR5cGUgaXMgCQCRAwIFA2xvYwUKbG9jSWR4VHlwZQIRLCBidXQgc2hvdWxkIGJlIEwDCQECIT0CBRFzdGFrZWREdWNrQXNzZXRJZAULZHVja0Fzc2V0SWQJAAIBCQCsAgIJAKwCAgkArAICAhRZb3VyIHN0YWtlZCBkdWNrIGlzIAURc3Rha2VkRHVja0Fzc2V0SWQCDSwgYnV0IHBhc3NlZCAFC2R1Y2tBc3NldElkBAVicEtleQkBEWtleUJhY2twYWNrQnlEdWNrAQULZHVja0Fzc2V0SWQEC2N1cnJlbnRQYWNrCQELZ2V0QmFja3BhY2sBBQVicEtleQQJYnBSZXNMaXN0CQC1CQIJAJEDAgULY3VycmVudFBhY2sFCGJwSWR4UmVzAgFfBAlicE1hdExpc3QJALUJAgkAkQMCBQtjdXJyZW50UGFjawUIYnBJZHhNYXQCAV8ECmJwUHJvZExpc3QDCQAAAgkAkQMCBQtjdXJyZW50UGFjawUJYnBJZHhQcm9kAgAFA25pbAkAvAkCCQCRAwIFC2N1cnJlbnRQYWNrBQlicElkeFByb2QCAV8EDSR0MDU2OTg4NTcyMjgJARVhY2NlcHRTaG9wT3JkZXJDb21tb24GBQ9zaG9wTGFuZEFzc2V0SWQFCmNhbGxlckFkZHIFCmJwT3JkZXJTdHIFCWJwUmVzTGlzdAUJYnBNYXRMaXN0BQpicFByb2RMaXN0BApzaG9wQWN0aW9uCAUNJHQwNTY5ODg1NzIyOAJfMQQKbmV3VXNlclJlcwgFDSR0MDU2OTg4NTcyMjgCXzIECm5ld1VzZXJNYXQIBQ0kdDA1Njk4ODU3MjI4Al8zBAtuZXdVc2VyUHJvZAgFDSR0MDU2OTg4NTcyMjgCXzQEDXVzZFdoMkJwU2FsZG8IBQ0kdDA1Njk4ODU3MjI4Al81BA11c2RCcDJXaFNhbGRvCAUNJHQwNTY5ODg1NzIyOAJfNgQIeHBBbW91bnQIBQ0kdDA1Njk4ODU3MjI4Al83BA1zaG9wTGFuZE93bmVyCAUNJHQwNTY5ODg1NzIyOAJfOAQKc2hvcFdoU2F2ZQgFDSR0MDU2OTg4NTcyMjgCXzkEDmFjY1N0YXRzUmVzdWx0CAUNJHQwNTY5ODg1NzIyOANfMTAECGFjdGlvbnMxCQDMCAIFCnNob3BBY3Rpb24JARBzaG9wMnVzZXJBY3Rpb25zAwUNdXNkV2gyQnBTYWxkbwUKY2FsbGVyQWRkcgAABAhhY3Rpb25zMgkBEHVzZXIyc2hvcEFjdGlvbnMEBQ11c2RCcDJXaFNhbGRvCAUBaQhwYXltZW50cwUNc2hvcExhbmRPd25lcgAABAhuZXdCcFN0cgkAugkCCQDMCAIJAJEDAgULY3VycmVudFBhY2sFCmJwSWR4TGV2ZWwJAMwIAgkAuQkCBQpuZXdVc2VyUmVzAgFfCQDMCAIJALkJAgUKbmV3VXNlck1hdAIBXwkAzAgCCQC6CQIFC25ld1VzZXJQcm9kAgFfBQNuaWwCAToEBmJwU2F2ZQkBCGFzU3RyaW5nAQkA/AcEBQ9zdGFraW5nQ29udHJhY3QCDnVwZGF0ZUJhY2twYWNrCQDMCAIFC2R1Y2tBc3NldElkCQDMCAIFCG5ld0JwU3RyBQNuaWwFA25pbAQPZHVja1N0YXRzUmVzdWx0CQEFYXNJbnQBCQD8BwQFD3N0YWtpbmdDb250cmFjdAIPdXBkYXRlRHVja1N0YXRzCQDMCAIFC2R1Y2tBc3NldElkCQDMCAIJAGsDBQZ4cFNob3AFCHhwQW1vdW50BQVNVUxUOAUDbmlsBQNuaWwJAJQKAgkAzggCBQhhY3Rpb25zMQUIYWN0aW9uczIJAJcKBQUMcHJvbG9nUmVzdWx0BQpzaG9wV2hTYXZlBQZicFNhdmUFD2R1Y2tTdGF0c1Jlc3VsdAUOYWNjU3RhdHNSZXN1bHQJAAIBAiRTdHJpY3QgdmFsdWUgaXMgbm90IGVxdWFsIHRvIGl0c2VsZi4BaQEbYWNjZXB0U2hvcE9yZGVyRHVja0RlbGl2ZXJ5AghvcmRlclN0cg9zaG9wTGFuZEFzc2V0SWQEDHByb2xvZ1Jlc3VsdAkBBnByb2xvZwADCQAAAgUMcHJvbG9nUmVzdWx0BQxwcm9sb2dSZXN1bHQEBmNhbGxlcggFAWkMb3JpZ2luQ2FsbGVyBApjYWxsZXJBZGRyCQClCAEFBmNhbGxlcgQLZHVja0Fzc2V0SWQJARN2YWx1ZU9yRXJyb3JNZXNzYWdlAgkAnQgCBQ9zdGFraW5nQ29udHJhY3QJARRrZXlTdGFrZWREdWNrQnlPd25lcgEFCmNhbGxlckFkZHICHFlvdSBkb24ndCBoYXZlIGEgZHVjayBzdGFrZWQEBWJwS2V5CQERa2V5QmFja3BhY2tCeUR1Y2sBBQtkdWNrQXNzZXRJZAQLY3VycmVudFBhY2sJAQtnZXRCYWNrcGFjawEFBWJwS2V5BAlicFJlc0xpc3QJALUJAgkAkQMCBQtjdXJyZW50UGFjawUIYnBJZHhSZXMCAV8ECWJwTWF0TGlzdAkAtQkCCQCRAwIFC2N1cnJlbnRQYWNrBQhicElkeE1hdAIBXwQKYnBQcm9kTGlzdAMJAAACCQCRAwIFC2N1cnJlbnRQYWNrBQlicElkeFByb2QCAAUDbmlsCQC8CQIJAJEDAgULY3VycmVudFBhY2sFCWJwSWR4UHJvZAIBXwQNJHQwNTg1OTM1ODgzMQkBFWFjY2VwdFNob3BPcmRlckNvbW1vbgYFD3Nob3BMYW5kQXNzZXRJZAUKY2FsbGVyQWRkcgUIb3JkZXJTdHIFCWJwUmVzTGlzdAUJYnBNYXRMaXN0BQpicFByb2RMaXN0BApzaG9wQWN0aW9uCAUNJHQwNTg1OTM1ODgzMQJfMQQKbmV3VXNlclJlcwgFDSR0MDU4NTkzNTg4MzECXzIECm5ld1VzZXJNYXQIBQ0kdDA1ODU5MzU4ODMxAl8zBAtuZXdVc2VyUHJvZAgFDSR0MDU4NTkzNTg4MzECXzQEDXVzZFdoMkJwU2FsZG8IBQ0kdDA1ODU5MzU4ODMxAl81BA11c2RCcDJXaFNhbGRvCAUNJHQwNTg1OTM1ODgzMQJfNgQIeHBBbW91bnQIBQ0kdDA1ODU5MzU4ODMxAl83BA1zaG9wTGFuZE93bmVyCAUNJHQwNTg1OTM1ODgzMQJfOAQKc2hvcFdoU2F2ZQgFDSR0MDU4NTkzNTg4MzECXzkEDmFjY1N0YXRzUmVzdWx0CAUNJHQwNTg1OTM1ODgzMQNfMTAED2RlbGl2ZXJ5RmVlUGFydAkAawMJAGQCBQ11c2RCcDJXaFNhbGRvBQ11c2RXaDJCcFNhbGRvBQxERUxJVkVSWV9GRUUFBU1VTFQ2BAtkZWxpdmVyeUZlZQkAlgMBCQDMCAIFD2RlbGl2ZXJ5RmVlUGFydAkAzAgCBRVNSU5fVVNEVF9GRUVfREVMSVZFUlkFA25pbAQIc3BlbnRGZWUJAGsDBQtkZWxpdmVyeUZlZQUNdXNkQnAyV2hTYWxkbwkAZAIFDXVzZEJwMldoU2FsZG8FDXVzZFdoMkJwU2FsZG8EC3JlY2VpdmVkRmVlCQBlAgULZGVsaXZlcnlGZWUFCHNwZW50RmVlBAlmdW5kVG90YWwJAQt2YWx1ZU9yRWxzZQIJAJ8IAQUPZGVsaXZlcnlGdW5kS2V5AAAECGFjdGlvbnMxCQDMCAIFCnNob3BBY3Rpb24JARBzaG9wMnVzZXJBY3Rpb25zAwUNdXNkV2gyQnBTYWxkbwUKY2FsbGVyQWRkcgULcmVjZWl2ZWRGZWUECGFjdGlvbnMyCQEQdXNlcjJzaG9wQWN0aW9ucwQFDXVzZEJwMldoU2FsZG8IBQFpCHBheW1lbnRzBQ1zaG9wTGFuZE93bmVyBQhzcGVudEZlZQQIbmV3QnBTdHIJALoJAgkAzAgCCQCRAwIFC2N1cnJlbnRQYWNrBQpicElkeExldmVsCQDMCAIJALkJAgUKbmV3VXNlclJlcwIBXwkAzAgCCQC5CQIFCm5ld1VzZXJNYXQCAV8JAMwIAgkAugkCBQtuZXdVc2VyUHJvZAIBXwUDbmlsAgE6BAZicFNhdmUJAQhhc1N0cmluZwEJAPwHBAUPc3Rha2luZ0NvbnRyYWN0Ag51cGRhdGVCYWNrcGFjawkAzAgCBQtkdWNrQXNzZXRJZAkAzAgCBQhuZXdCcFN0cgUDbmlsBQNuaWwED2R1Y2tTdGF0c1Jlc3VsdAkBBWFzSW50AQkA/AcEBQ9zdGFraW5nQ29udHJhY3QCD3VwZGF0ZUR1Y2tTdGF0cwkAzAgCBQtkdWNrQXNzZXRJZAkAzAgCCQBrAwUGeHBTaG9wBQh4cEFtb3VudAUFTVVMVDgFA25pbAUDbmlsCQCUCgIJAM0IAgkAzggCBQhhY3Rpb25zMQUIYWN0aW9uczIJAQxJbnRlZ2VyRW50cnkCBQ9kZWxpdmVyeUZ1bmRLZXkJAGQCBQlmdW5kVG90YWwFC2RlbGl2ZXJ5RmVlCQCXCgUFDHByb2xvZ1Jlc3VsdAUKc2hvcFdoU2F2ZQUGYnBTYXZlBQ9kdWNrU3RhdHNSZXN1bHQFDmFjY1N0YXRzUmVzdWx0CQACAQIkU3RyaWN0IHZhbHVlIGlzIG5vdCBlcXVhbCB0byBpdHNlbGYuAWkBG2FjY2VwdFNob3BPcmRlckxhbmREZWxpdmVyeQMIb3JkZXJTdHIPc2hvcExhbmRBc3NldElkDW15TGFuZEFzc2V0SWQEDHByb2xvZ1Jlc3VsdAkBBnByb2xvZwADCQAAAgUMcHJvbG9nUmVzdWx0BQxwcm9sb2dSZXN1bHQEBmNhbGxlcggFAWkMb3JpZ2luQ2FsbGVyBApjYWxsZXJBZGRyCQClCAEFBmNhbGxlcgQFYXNzZXQJAQV2YWx1ZQEJAOwHAQkA2QQBBQ1teUxhbmRBc3NldElkAwkBASEBCQEJaXNEZWZpbmVkAQkAmggCBQ9zdGFraW5nQ29udHJhY3QJARZrZXlTdGFrZWRUaW1lQnlBc3NldElkAQUNbXlMYW5kQXNzZXRJZAkAAgEJAKwCAgkArAICAgRORlQgCAUFYXNzZXQEbmFtZQIOIGlzIG5vdCBzdGFrZWQEBW93bmVyCQETdmFsdWVPckVycm9yTWVzc2FnZQIJAJ0IAgUPc3Rha2luZ0NvbnRyYWN0CQEVa2V5TGFuZEFzc2V0SWRUb093bmVyAQUNbXlMYW5kQXNzZXRJZAkArAICCQCsAgICBE5GVCAIBQVhc3NldARuYW1lAgwgaXMgb3JwaGFuZWQDCQECIT0CBQVvd25lcgUKY2FsbGVyQWRkcgkAAgEJAKwCAgUKTEFORFBSRUZJWAINIGlzIG5vdCB5b3VycwQCd2gJAQhhc1N0cmluZwEJAPwHBAUPc3Rha2luZ0NvbnRyYWN0AhRnZXRXYXJlaG91c2VSRUFET05MWQkAzAgCBQ1teUxhbmRBc3NldElkBQNuaWwFA25pbAQJY3VycmVudFdoCQC8CQIFAndoAgE6BAdyZXNMaXN0CQC1CQIJAJEDAgUJY3VycmVudFdoBQh3aElkeFJlcwIBXwQHbWF0TGlzdAkAtQkCCQCRAwIFCWN1cnJlbnRXaAUId2hJZHhNYXQCAV8ECHByb2RMaXN0AwkAAAIJAJEDAgUJY3VycmVudFdoBQl3aElkeFByb2QCAAUDbmlsCQC8CQIJAJEDAgUJY3VycmVudFdoBQl3aElkeFByb2QCAV8EDSR0MDYwOTUyNjExODQJARVhY2NlcHRTaG9wT3JkZXJDb21tb24GBQ9zaG9wTGFuZEFzc2V0SWQFCmNhbGxlckFkZHIFCG9yZGVyU3RyBQdyZXNMaXN0BQdtYXRMaXN0BQhwcm9kTGlzdAQKc2hvcEFjdGlvbggFDSR0MDYwOTUyNjExODQCXzEECm5ld1VzZXJSZXMIBQ0kdDA2MDk1MjYxMTg0Al8yBApuZXdVc2VyTWF0CAUNJHQwNjA5NTI2MTE4NAJfMwQLbmV3VXNlclByb2QIBQ0kdDA2MDk1MjYxMTg0Al80BA11c2RXaDJCcFNhbGRvCAUNJHQwNjA5NTI2MTE4NAJfNQQNdXNkQnAyV2hTYWxkbwgFDSR0MDYwOTUyNjExODQCXzYECHhwQW1vdW50CAUNJHQwNjA5NTI2MTE4NAJfNwQNc2hvcExhbmRPd25lcggFDSR0MDYwOTUyNjExODQCXzgECnNob3BXaFNhdmUIBQ0kdDA2MDk1MjYxMTg0Al85BA5hY2NTdGF0c1Jlc3VsdAgFDSR0MDYwOTUyNjExODQDXzEwBA9kZWxpdmVyeUZlZVBhcnQJAGsDCQBkAgUNdXNkQnAyV2hTYWxkbwUNdXNkV2gyQnBTYWxkbwUMREVMSVZFUllfRkVFBQVNVUxUNgQLZGVsaXZlcnlGZWUJAJYDAQkAzAgCBQ9kZWxpdmVyeUZlZVBhcnQJAMwIAgUVTUlOX1VTRFRfRkVFX0RFTElWRVJZBQNuaWwECHNwZW50RmVlCQBrAwULZGVsaXZlcnlGZWUFDXVzZEJwMldoU2FsZG8JAGQCBQ11c2RCcDJXaFNhbGRvBQ11c2RXaDJCcFNhbGRvBAtyZWNlaXZlZEZlZQkAZQIFC2RlbGl2ZXJ5RmVlBQhzcGVudEZlZQQJZnVuZFRvdGFsCQELdmFsdWVPckVsc2UCCQCfCAEFD2RlbGl2ZXJ5RnVuZEtleQAABAhhY3Rpb25zMQkAzAgCBQpzaG9wQWN0aW9uCQEQc2hvcDJ1c2VyQWN0aW9ucwMFDXVzZFdoMkJwU2FsZG8FCmNhbGxlckFkZHIFC3JlY2VpdmVkRmVlBAhhY3Rpb25zMgkBEHVzZXIyc2hvcEFjdGlvbnMEBQ11c2RCcDJXaFNhbGRvCAUBaQhwYXltZW50cwUNc2hvcExhbmRPd25lcgUIc3BlbnRGZWUEBXdoU3RyCQC6CQIJAMwIAgkAkQMCBQljdXJyZW50V2gFC3doSWR4TGV2ZWxzCQDMCAIJALkJAgUKbmV3VXNlclJlcwIBXwkAzAgCCQC5CQIFCm5ld1VzZXJNYXQCAV8JAMwIAgkAuQkCBQtuZXdVc2VyUHJvZAIBXwkAzAgCCQCRAwIFCWN1cnJlbnRXaAUJd2hJZHhMT0ZUBQNuaWwCAToEBndoU2F2ZQkBCGFzU3RyaW5nAQkA/AcEBQ9zdGFraW5nQ29udHJhY3QCDXNhdmVXYXJlaG91c2UJAMwIAgUFd2hTdHIJAMwIAgUNbXlMYW5kQXNzZXRJZAUDbmlsBQNuaWwEC3N0YXRzUmVzdWx0CQEFYXNJbnQBCQD8BwQFD3N0YWtpbmdDb250cmFjdAIOdXBkYXRlQWNjU3RhdHMJAMwIAgUKY2FsbGVyQWRkcgkAzAgCCQBrAwUGeHBTaG9wBQh4cEFtb3VudAUFTVVMVDgFA25pbAUDbmlsCQCUCgIJAM0IAgkAzggCBQhhY3Rpb25zMQUIYWN0aW9uczIJAQxJbnRlZ2VyRW50cnkCBQ9kZWxpdmVyeUZ1bmRLZXkJAGQCBQlmdW5kVG90YWwFC2RlbGl2ZXJ5RmVlCQCXCgUFDHByb2xvZ1Jlc3VsdAUKc2hvcFdoU2F2ZQUGd2hTYXZlBQtzdGF0c1Jlc3VsdAUOYWNjU3RhdHNSZXN1bHQJAAIBAiRTdHJpY3QgdmFsdWUgaXMgbm90IGVxdWFsIHRvIGl0c2VsZi4BaQEQc2VsbFByb2R1Y3RzVG9FUwEHYW1vdW50cwQMcHJvbG9nUmVzdWx0CQEGcHJvbG9nAAMJAAACBQxwcm9sb2dSZXN1bHQFDHByb2xvZ1Jlc3VsdAMJAQIhPQIJAJADAQgFAWkIcGF5bWVudHMAAAkAAgECEk5vIHBheW1lbnRzIG5lZWRlZAQLZHVja0Fzc2V0SWQJARN2YWx1ZU9yRXJyb3JNZXNzYWdlAgkAnQgCBQ9zdGFraW5nQ29udHJhY3QJARRrZXlTdGFrZWREdWNrQnlPd25lcgEJAKUIAQgFAWkGY2FsbGVyAhxZb3UgZG9uJ3QgaGF2ZSBhIGR1Y2sgc3Rha2VkBAtjdXJMb2NhdGlvbgkAtQkCCQELdmFsdWVPckVsc2UCCQCdCAIFD3N0YWtpbmdDb250cmFjdAkBD2tleUR1Y2tMb2NhdGlvbgEFC2R1Y2tBc3NldElkBQ9ERUZBVUxUTE9DQVRJT04CAV8DCQECIT0CCQCRAwIFC2N1ckxvY2F0aW9uBQpsb2NJZHhUeXBlAgFBCQACAQkArAICAi1EdWNrIGxvY2F0aW9uIHR5cGUgc2hvdWxkIGJlIEFpcnBvcnQsIGJ1dCBpcyAJAJEDAgULY3VyTG9jYXRpb24FCmxvY0lkeFR5cGUEC2N1cnJlbnRQYWNrCQELZ2V0QmFja3BhY2sBCQERa2V5QmFja3BhY2tCeUR1Y2sBBQtkdWNrQXNzZXRJZAQIcHJvZExpc3QDCQAAAgkAkQMCBQtjdXJyZW50UGFjawUJYnBJZHhQcm9kAgAFA25pbAkAvAkCCQCRAwIFC2N1cnJlbnRQYWNrBQlicElkeFByb2QCAV8EBWVzS2V5CQEOa2V5RXNXYXJlaG91c2UABAhleGlzdFN0cgkAoggBBQVlc0tleQQMZXhpc3RBbW91bnRzAwkBCWlzRGVmaW5lZAEFCGV4aXN0U3RyCQC8CQIJAQV2YWx1ZQEFCGV4aXN0U3RyAgFfBQNuaWwKAQhtb3ZlUHJvZAIDYWNjCXJlY2lwZVN0cgQBaggFA2FjYwJfMQQIcXVhbnRpdHkDCQBmAgkAkAMBBQdhbW91bnRzBQFqCQCRAwIFB2Ftb3VudHMFAWoAAAMJAGYCAAAFCHF1YW50aXR5CQACAQIbUXVhbnRpdHkgY2Fubm90IGJlIG5lZ2F0aXZlBAZyZWNpcGUJALUJAgUJcmVjaXBlU3RyAgFfAwkBAiE9AgkAkAMBBQZyZWNpcGUFClJFQ0lQRVNJWkUJAAIBCQCsAgICF0ZhdGFsOiB1bmtub3duIHJlY2lwZTogBQlyZWNpcGVTdHIECW1heEFtb3VudAkAaAIFDUVTTUFYUEFDS0FHRVMFDlBST0RVQ1RQS0dTSVpFBAtleGlzdEFtb3VudAMJAGYCCQCQAwEFDGV4aXN0QW1vdW50cwUBagkBDXBhcnNlSW50VmFsdWUBCQCRAwIFDGV4aXN0QW1vdW50cwUBagAABAZjYW5CdXkJAGUCBQltYXhBbW91bnQFC2V4aXN0QW1vdW50AwkAZgIFCHF1YW50aXR5BQZjYW5CdXkJAAIBCQCsAgIJAKwCAgkArAICAhdXYXJlaG91c2UgY2FuIGJ1eSBvbmx5IAkApAMBBQZjYW5CdXkCBCBvZiAJAJEDAgUJcHJvZFR5cGVzBQFqBAh0b3RhbE1hdAkBEmdldFJlY2lwZU1hdGVyaWFscwEFBnJlY2lwZQQJdW5pdFByaWNlCQBrAwkAaAIFCHRvdGFsTWF0BQlFU0JVWUNPRUYFEFJFU09VUkNFUFJJQ0VNSU4JAGgCBQVNVUxUOAUOUFJPRFVDVFBLR1NJWkUEDGJwUHJvZEFtb3VudAMJAGYCCQCQAwEFCHByb2RMaXN0BQFqCQENcGFyc2VJbnRWYWx1ZQEJAJEDAgUIcHJvZExpc3QFAWoAAAMJAGYCBQhxdWFudGl0eQUMYnBQcm9kQW1vdW50CQACAQkArAICCQCsAgIJAKwCAgIOWW91IGhhdmUgb25seSAJAKQDAQUMYnBQcm9kQW1vdW50AgQgb2YgCQCRAwIFCXByb2RUeXBlcwUBagkAlwoFCQBkAgUBagABCQBkAggFA2FjYwJfMgkAaAIFCXVuaXRQcmljZQUIcXVhbnRpdHkJAM0IAggFA2FjYwJfMwkApAMBCQBlAgUMYnBQcm9kQW1vdW50BQhxdWFudGl0eQkAzQgCCAUDYWNjAl80CQCkAwEJAGQCBQtleGlzdEFtb3VudAUIcXVhbnRpdHkJAGQCCAUDYWNjAl81CQBoAgUIdG90YWxNYXQFCHF1YW50aXR5BAZtZXJnZWQKAAIkbAUQcHJvZHVjdGlvbk1hdHJpeAoAAiRzCQCQAwEFAiRsCgAFJGFjYzAJAJcKBQAAAAAFA25pbAUDbmlsAAAKAQUkZjBfMQICJGECJGkDCQBnAgUCJGkFAiRzBQIkYQkBCG1vdmVQcm9kAgUCJGEJAJEDAgUCJGwFAiRpCgEFJGYwXzICAiRhAiRpAwkAZwIFAiRpBQIkcwUCJGEJAAIBAhRMaXN0IHNpemUgZXhjZWVkcyA1MAkBBSRmMF8yAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgUFJGFjYzAAAAABAAIAAwAEAAUABgAHAAgACQAKAAsADAANAA4ADwAQABEAEgATABQAFQAWABcAGAAZABoAGwAcAB0AHgAfACAAIQAiACMAJAAlACYAJwAoACkAKgArACwALQAuAC8AMAAxADIECG5ld0JwU3RyCQC6CQIJAMwIAgkAkQMCBQtjdXJyZW50UGFjawUKYnBJZHhMZXZlbAkAzAgCCQCRAwIFC2N1cnJlbnRQYWNrBQhicElkeFJlcwkAzAgCCQCRAwIFC2N1cnJlbnRQYWNrBQhicElkeE1hdAkAzAgCCQC6CQIIBQZtZXJnZWQCXzMCAV8FA25pbAIBOgQGYnBTYXZlCQEIYXNTdHJpbmcBCQD8BwQFD3N0YWtpbmdDb250cmFjdAIOdXBkYXRlQmFja3BhY2sJAMwIAgULZHVja0Fzc2V0SWQJAMwIAgUIbmV3QnBTdHIFA25pbAUDbmlsBAtzdGF0c1Jlc3VsdAkBBWFzSW50AQkA/AcEBQ9zdGFraW5nQ29udHJhY3QCD3VwZGF0ZUR1Y2tTdGF0cwkAzAgCBQtkdWNrQXNzZXRJZAkAzAgCCQBrAwUKeHBTZWxsVG9FcwgFBm1lcmdlZAJfNQkAaAIFBU1VTFQ4AAoFA25pbAUDbmlsCQCUCgIJAMwIAgkBC1N0cmluZ0VudHJ5AgUFZXNLZXkJALoJAggFBm1lcmdlZAJfNAIBXwkAzAgCCQEOU2NyaXB0VHJhbnNmZXIDCAUBaQZjYWxsZXIIBQZtZXJnZWQCXzIFC3VzZHRBc3NldElkBQNuaWwJAJUKAwUGYnBTYXZlBQxwcm9sb2dSZXN1bHQFC3N0YXRzUmVzdWx0CQACAQIkU3RyaWN0IHZhbHVlIGlzIG5vdCBlcXVhbCB0byBpdHNlbGYuAWkBD3VwZGF0ZUVzU3RvcmFnZQEKbmV3U3RvcmFnZQMJAQIhPQIIBQFpBmNhbGxlcgUPc3Rha2luZ0NvbnRyYWN0CQACAQIRUGVybWlzc2lvbiBkZW5pZWQJAJQKAgkAzAgCCQELU3RyaW5nRW50cnkCCQEOa2V5RXNXYXJlaG91c2UABQpuZXdTdG9yYWdlBQNuaWwFCm5ld1N0b3JhZ2UBaQEUdXBkYXRlRGVsaXZlcnlMb2NrZWQBCW5ld0Ftb3VudAMJAQIhPQIIBQFpBmNhbGxlcgUPc3Rha2luZ0NvbnRyYWN0CQACAQIRUGVybWlzc2lvbiBkZW5pZWQJAJQKAgkAzAgCCQEMSW50ZWdlckVudHJ5AgURZGVsaXZlcnlMb2NrZWRLZXkFCW5ld0Ftb3VudAUDbmlsBQluZXdBbW91bnQBaQESc2VuZERlbGl2ZXJ5UmV3YXJkAQRhZGRyAwkBAiE9AggFAWkGY2FsbGVyBQ9zdGFraW5nQ29udHJhY3QJAAIBAhFQZXJtaXNzaW9uIGRlbmllZAQJZnVuZFRvdGFsCQELdmFsdWVPckVsc2UCCQCfCAEFD2RlbGl2ZXJ5RnVuZEtleQAABAtsb2NrZWRUb3RhbAkBC3ZhbHVlT3JFbHNlAgkAnwgBBRFkZWxpdmVyeUxvY2tlZEtleQAABAthY3Jlc0Ftb3VudAkAaAIFFU1JTl9VU0RUX0ZFRV9ERUxJVkVSWQUVVVNEVDJBQ1JFU19NVUxUSVBMSUVSBAthY3Jlc1Jlc3VsdAkA/AcEBQ1hY3Jlc0NvbnRyYWN0AglzZW5kQWNyZXMJAMwIAgUEYWRkcgkAzAgCBQthY3Jlc0Ftb3VudAUDbmlsBQNuaWwJAJQKAgkAzAgCCQEMSW50ZWdlckVudHJ5AgUPZGVsaXZlcnlGdW5kS2V5CQBlAgUJZnVuZFRvdGFsBRVNSU5fVVNEVF9GRUVfREVMSVZFUlkJAMwIAgkBDEludGVnZXJFbnRyeQIFEWRlbGl2ZXJ5TG9ja2VkS2V5CQBlAgULbG9ja2VkVG90YWwFFU1JTl9VU0RUX0ZFRV9ERUxJVkVSWQUDbmlsBQthY3Jlc1Jlc3VsdACVyP6M", "height": 2843108, "applicationStatus": "succeeded", "spentComplexity": 0 } View: original | compacted Prev: 6mkTN5Top9xkhR4PSRPWV9P8hhpuYd1s4G1FZSvkfBZz Next: AHeXyfvWsgcqQGRqryEHZ6D16NvmRuK9Q9v66kGGYNUk Diff:
OldNewDifferences
3535
3636 let q = ["Fuel", "Metal", "Plank", "Glass", "Plastic", "Protein"]
3737
38-let r = ["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", "CaboomDog L1", "CaboomDog L2", "CaboomDog L3"]
38+let r = ["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", "KaboomDog L1", "KaboomDog L2", "KaboomDog L3"]
3939
4040 let s = ["Americas", "Europe", "Asia", "Africa", "Oceania"]
4141
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 = 1000000
2929
3030 let n = 10
3131
3232 let o = 10
3333
3434 let p = ["Oil", "Ore", "Wood", "Sand", "Clay", "Organic"]
3535
3636 let q = ["Fuel", "Metal", "Plank", "Glass", "Plastic", "Protein"]
3737
38-let r = ["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", "CaboomDog L1", "CaboomDog L2", "CaboomDog L3"]
38+let r = ["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", "KaboomDog L1", "KaboomDog L2", "KaboomDog L3"]
3939
4040 let s = ["Americas", "Europe", "Asia", "Africa", "Oceania"]
4141
4242 let t = 10000000
4343
4444 let u = ["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_", "23_23_5_20_23_6_35_2_0_0,0,0,0,0,0,0_", "23_23_5_20_23_6_70_2_0_0,0,0,0,0,0,0_", "23_23_5_20_23_6_105_2_0_0,0,0,0,0,0,0_"]
4545
4646 let v = 6
4747
4848 let w = 7
4949
5050 let x = 11
5151
5252 let y = 10
5353
5454 let z = 0
5555
5656 let A = 1
5757
5858 let B = 2
5959
6060 let C = 3
6161
6262 let D = 4
6363
6464 let E = 0
6565
6666 let F = 3
6767
6868 let G = 0
6969
7070 let H = 1
7171
7272 let I = 2
7373
7474 let J = 3
7575
7676 let K = 0
7777
7878 let L = 1
7979
8080 let M = 2
8181
8282 func N (O) = ("no_" + O)
8383
8484
8585 func P (O) = ("st_" + O)
8686
8787
8888 func Q (R) = ("accRefBy_" + R)
8989
9090
9191 func S (T) = ("stakedDuckByOwner_" + T)
9292
9393
9494 func U (V) = ("backPack_" + V)
9595
9696
9797 func W (V) = ("duckLocation_" + V)
9898
9999
100100 func X (Y) = ("landOrder_" + Y)
101101
102102
103103 func Z () = "emergencyWarehouseProducts"
104104
105105
106106 let aa = "deliveryFund"
107107
108108 let ab = "deliveryLocked"
109109
110110 func ac (ad) = (parseIntValue(ad[v]) * t)
111111
112112
113113 let ae = take(drop(this.bytes, 1), 1)
114114
115115 let af = {
116116 let ag = ae
117117 if ((base58'2W' == ag))
118118 then base58'9wc3LXNA4TEBsXyKtoLE9mrbDD7WMHXvXrCjZvabLAsi'
119119 else if ((base58'2T' == ag))
120120 then base58'6mWwf9mZBjVgkC54idpyaZLQfAosD914wT8fGf2iiY63'
121121 else throw("Unknown chain")
122122 }
123123
124124 let ah = {
125125 let ag = ae
126126 if ((base58'2W' == ag))
127127 then "3PQCuvFbvh4LkPUnrnU1z3jnbA1p9m3WNhv"
128128 else if ((base58'2T' == ag))
129129 then "3MumkGGztCKAXpWDqxkddofqXSUbqQkvSJy"
130130 else throw("Unknown chain")
131131 }
132132
133133 let ai = "__"
134134
135135 let aj = 100000
136136
137137 let ak = 1000000
138138
139139 let al = 100000000
140140
141141 let am = 10000000000
142142
143143 let an = 100000
144144
145145 let ao = [0, 1, 2, 3, 4, 5]
146146
147147 func ap (aq,ar) = valueOrErrorMessage(getString(aq, ar), makeString(["mandatory ", toString(aq), ".", ar, " is not defined"], ""))
148148
149149
150150 let as = 1
151151
152152 let at = 6
153153
154154 let au = 8
155155
156156 func av () = "%s__restConfig"
157157
158158
159159 func aw () = "%s__restAddr"
160160
161161
162162 func ax (ay) = split_4C(ap(ay, av()), ai)
163163
164164
165165 func az (aA,aB) = valueOrErrorMessage(addressFromString(aA[aB]), ("Rest cfg doesn't contain address at index " + toString(aB)))
166166
167167
168168 let aC = addressFromStringValue(valueOrElse(getString(this, aw()), ah))
169169
170170 let aA = ax(aC)
171171
172172 let aD = az(aA, as)
173173
174174 let aE = az(aA, at)
175175
176176 let aF = az(aA, au)
177177
178178 func aG (aH) = {
179179 let ag = aH
180180 if ($isInstanceOf(ag, "String"))
181181 then {
182182 let aI = ag
183183 aI
184184 }
185185 else throw("fail to cast into String")
186186 }
187187
188188
189189 func aJ (aH) = {
190190 let ag = aH
191191 if ($isInstanceOf(ag, "Int"))
192192 then {
193193 let aK = ag
194194 aK
195195 }
196196 else throw("fail to cast into Int")
197197 }
198198
199199
200200 func aL () = "contractsBlocked"
201201
202202
203203 func aM (aN,aO) = {
204204 let aP = pow(10, 0, aO, 0, 0, DOWN)
205205 let aQ = toString((aN % aP))
206206 let aR = drop(toString(aP), (1 + size(aQ)))
207207 (((toString((aN / aP)) + ".") + aR) + aQ)
208208 }
209209
210210
211211 let aS = 10000000000
212212
213213 let aT = 200
214214
215215 let aU = 300
216216
217217 let aV = 10000
218218
219219 let aW = 10000
220220
221221 let aX = 15000
222222
223223 func aY (aZ,ba) = ((("factoryWhByContinentAndRes_" + aZ) + "_") + toString(ba))
224224
225225
226226 let bb = 0
227227
228228 let bc = 1
229229
230230 let bd = 2
231231
232232 func be (bf) = {
233233 let bg = split(valueOrElse(getString(bf), "0@0_0@0_0@0_0@0_0@0_0@0:0@0_0@0_0@0_0@0_0@0_0@0:"), ":")
234234 [if ((size(split(bg[bb], "_")) == f))
235235 then bg[bb]
236236 else "0@0_0@0_0@0_0@0_0@0_0@0", if ((size(split(bg[bc], "_")) == f))
237237 then bg[bc]
238238 else "0@0_0@0_0@0_0@0_0@0_0@0", bg[bd]]
239239 }
240240
241241
242242 func bh (bi,bj,bk) = if (bk)
243243 then {
244244 let bl = if ((bi >= 0))
245245 then (((bi + bj) - 1) / bj)
246246 else -((((-(bi) + bj) - 1) / bj))
247247 (bl * al)
248248 }
249249 else bi
250250
251251
252252 func bm (bn,ba,bi,bo) = {
253253 let bp = aY(bn, ba)
254254 let bq = valueOrElse(getInteger(bp), 0)
255255 let br = if ((bq > aS))
256256 then 0
257257 else if (((bq + bi) > aS))
258258 then (aS - bq)
259259 else bi
260260 let bs = (fraction(br, ((aT * h) - fraction(((100 * bq) + (50 * br)), h, aS)), am) + fraction((bi - br), h, al))
261261 let bt = (bo - (bo / 100))
262262 if (((bt * bi) > (bs * al)))
263263 then throw((((((((((("Actual price = " + toString(bs)) + " / ") + toString(bi)) + " < minPrice = ") + toString(bo)) + ", (") + bn) + ", ") + p[ba]) + ")"))
264264 else $Tuple2(IntegerEntry(bp, (bq + bi)), bs)
265265 }
266266
267267
268268 func bu (bn,bv,bi,bw) = {
269269 let bp = aY(bn, bv)
270270 let bq = valueOrElse(getInteger(bp), 0)
271271 let bx = if ((bq > aS))
272272 then min([bi, (bq - aS)])
273273 else 0
274274 let by = min([bq, (bi - bx)])
275275 let bz = (by + bx)
276276 let bA = min([bq, aS])
277277 let bB = (fraction(by, ((aU * h) - fraction(((100 * bA) - (50 * by)), h, aS)), am) + fraction(bx, (2 * h), al))
278278 let bC = (bw + (bw / 100))
279279 if (((bB * al) > (bC * bz)))
280280 then throw((((((((((("Actual price = " + toString(bB)) + " / ") + toString(bz)) + " > maxPrice = ") + toString(bw)) + ", (") + bn) + ", ") + q[bv]) + ")"))
281281 else $Tuple3(IntegerEntry(bp, (bq - bz)), bB, bz)
282282 }
283283
284284
285285 func bD (bE) = {
286286 let bg = split_4C(valueOrElse(getString(aD, bE), "0:0_0_0_0_0_0:0_0_0_0_0_0:"), ":")
287287 [toString(valueOrElse(parseInt(bg[G]), 0)), if ((size(split(bg[H], "_")) == f))
288288 then bg[H]
289289 else "0_0_0_0_0_0", if ((size(split(bg[I], "_")) == f))
290290 then bg[I]
291291 else "0_0_0_0_0_0", bg[J]]
292292 }
293293
294294
295295 func bF () = if (valueOrElse(getBoolean(aD, aL()), false))
296296 then throw("Contracts are under maintenance")
297297 else unit
298298
299299
300300 func bG () = aJ(reentrantInvoke(aD, "saveLastTx", nil, nil))
301301
302302
303303 func bH (bI,bJ) = {
304304 let bK = bI._1
305305 let bL = if ((size(bI._10) > bK))
306306 then bI._10[bK]
307307 else "0@0"
308308 let bM = bI._8
309309 let bN = split(bL, "@")
310310 if ((size(bN) != 2))
311311 then throw("Incorrect order format, should be amount@price")
312312 else {
313313 let bO = parseIntValue(bN[0])
314314 let bP = parseIntValue(bN[1])
315315 let bQ = if (bM)
316316 then (bO * bP)
317317 else fraction(bO, bP, al)
318318 let bR = bh(bO, y, bM)
319319 let bS = if ((size(bI._6) > bK))
320320 then parseIntValue(bI._6[bK])
321321 else 0
322322 let bT = split(if ((size(bI._7) > bK))
323323 then bI._7[bK]
324324 else "0@0", "@")
325325 let bU = parseIntValue(bT[0])
326326 let bV = parseIntValue(bT[1])
327327 if (if ((0 > bV))
328328 then true
329329 else (0 > bP))
330330 then throw("Price can't be negative")
331331 else {
332332 let bW = if (bM)
333333 then (bU * bV)
334334 else fraction(bU, bV, al)
335335 if ((bO == 0))
336336 then if ((bU > 0))
337337 then $Tuple10((bK + 1), (bI._2 :+ toString(bS)), bI._3, bI._4, (bI._5 - bW), bI._6, bI._7, bM, (bI._9 + bh(bS, y, bM)), bI._10)
338338 else $Tuple10((bK + 1), (bI._2 :+ toString((bS - bU))), bI._3, bI._4, bI._5, bI._6, bI._7, bM, (bI._9 + bh((bS - bU), y, bM)), bI._10)
339339 else if ((bO > 0))
340340 then if ((0 > bU))
341341 then $Tuple10((bK + 1), (bI._2 :+ toString((bS - bU))), (bI._3 + bR), bI._4, (bI._5 + bQ), bI._6, bI._7, bM, bh((bS - bU), y, bM), bI._10)
342342 else $Tuple10((bK + 1), (bI._2 :+ toString(bS)), (bI._3 + bR), bI._4, ((bI._5 + bQ) - bW), bI._6, bI._7, bM, bh(bS, y, bM), bI._10)
343343 else if ((0 > bU))
344344 then {
345345 let bX = (bU - bO)
346346 if ((0 > (bS - bX)))
347347 then throw((((("Attempt to take " + toString(bX)) + " from warehouse, but only ") + toString(bS)) + " available"))
348348 else $Tuple10((bK + 1), (bI._2 :+ toString((bS - bX))), bI._3, (bI._4 - bR), bI._5, bI._6, bI._7, bM, bh((bS - bX), y, bM), bI._10)
349349 }
350350 else if ((0 > (bS + bO)))
351351 then throw((((("Attempt to take " + toString(-(bO))) + " from warehouse, but only ") + toString(bS)) + " available"))
352352 else $Tuple10((bK + 1), (bI._2 :+ toString((bS + bO))), bI._3, (bI._4 - bR), (bI._5 - bW), bI._6, bI._7, bM, bh((bS + bO), y, bM), bI._10)
353353 }
354354 }
355355 }
356356
357357
358358 func bY (bZ,ca,cb) = {
359359 let cc = split(bZ[A], "_")
360360 let cd = split(bZ[B], "_")
361361 let ce = if ((bZ[C] == ""))
362362 then nil
363363 else split_4C(bZ[C], "_")
364364 let cf = split(ca[bb], "_")
365365 let cg = split(ca[bc], "_")
366366 let ch = if ((ca[bd] == ""))
367367 then nil
368368 else split_4C(ca[bd], "_")
369369 if ((size(cb) != 3))
370370 then throw("newOrderStr should contain exactly 2 ':' separators")
371371 else {
372372 let ci = split(cb[0], "_")
373373 let cj = split(cb[1], "_")
374374 let ck = if ((cb[2] == ""))
375375 then nil
376376 else split_4C(cb[2], "_")
377377 if ((size(ci) != f))
378378 then throw("All 6 resources should be passed")
379379 else if ((size(cj) != f))
380380 then throw("All 6 materials should be passed")
381381 else {
382382 let cl = {
383383 let cm = p
384384 let cn = size(cm)
385385 let co = $Tuple10(0, nil, 0, 0, 0, cc, cf, false, 0, ci)
386386 func cp (cq,cr) = if ((cr >= cn))
387387 then cq
388388 else bH(cq, cm[cr])
389389
390390 func cs (cq,cr) = if ((cr >= cn))
391391 then cq
392392 else throw("List size exceeds 6")
393393
394394 cs(cp(cp(cp(cp(cp(cp(co, 0), 1), 2), 3), 4), 5), 6)
395395 }
396396 let bz = {
397397 let cm = q
398398 let cn = size(cm)
399399 let co = $Tuple10(0, nil, cl._3, cl._4, cl._5, cd, cg, false, cl._9, cj)
400400 func ct (cq,cr) = if ((cr >= cn))
401401 then cq
402402 else bH(cq, cm[cr])
403403
404404 func cu (cq,cr) = if ((cr >= cn))
405405 then cq
406406 else throw("List size exceeds 6")
407407
408408 cu(ct(ct(ct(ct(ct(ct(co, 0), 1), 2), 3), 4), 5), 6)
409409 }
410410 let bg = {
411411 let cm = r
412412 let cn = size(cm)
413413 let co = $Tuple10(0, nil, bz._3, bz._4, bz._5, ce, ch, true, bz._9, ck)
414414 func cv (cq,cr) = if ((cr >= cn))
415415 then cq
416416 else bH(cq, cm[cr])
417417
418418 func cw (cq,cr) = if ((cr >= cn))
419419 then cq
420420 else throw("List size exceeds 50")
421421
422422 cw(cv(cv(cv(cv(cv(cv(cv(cv(cv(cv(cv(cv(cv(cv(cv(cv(cv(cv(cv(cv(cv(cv(cv(cv(cv(cv(cv(cv(cv(cv(cv(cv(cv(cv(cv(cv(cv(cv(cv(cv(cv(cv(cv(cv(cv(cv(cv(cv(cv(cv(co, 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)
423423 }
424424 $Tuple7(cl._2, bz._2, bg._2, bg._3, bg._4, bg._5, bg._9)
425425 }
426426 }
427427 }
428428
429429
430430 func cx (bI,cy) = {
431431 let bK = bI._7
432432 let bM = bI._12
433433 let cz = split(cy, "@")
434434 if ((size(cz) != 2))
435435 then throw("Incorrect order format, should be amount@price")
436436 else {
437437 let cA = parseIntValue(cz[0])
438438 let cB = parseIntValue(cz[1])
439439 if ((0 > cB))
440440 then throw("Price can't be negative")
441441 else {
442442 let cC = if (bM)
443443 then (cA * cB)
444444 else fraction(cA, cB, al)
445445 let cD = if ((size(bI._8) > bK))
446446 then parseIntValue(bI._8[bK])
447447 else 0
448448 let bS = if ((size(bI._9) > bK))
449449 then parseIntValue(bI._9[bK])
450450 else 0
451451 let cE = if ((size(bI._10) > bK))
452452 then bI._10[bK]
453453 else "0@0"
454454 let cF = split(cE, "@")
455455 let cG = parseIntValue(cF[0])
456456 let cH = parseIntValue(cF[1])
457457 if (if ((cA != 0))
458458 then (cB != cH)
459459 else false)
460460 then throw(((((("Prices of " + bI._11[bK]) + " don't match! WH price=") + toString(cH)) + ", your price=") + toString(cB)))
461461 else {
462462 let cI = if (bM)
463463 then (cG * cH)
464464 else fraction(cG, cH, al)
465465 let cJ = bh(cA, y, bM)
466466 if ((cA == 0))
467467 then $Tuple13((bI._1 :+ toString(bS)), (bI._2 :+ cE), (bI._3 :+ toString(cD)), bI._4, bI._5, bI._6, (bI._7 + 1), bI._8, bI._9, bI._10, bI._11, bM, bI._13)
468468 else if ((cA > 0))
469469 then if ((0 > cG))
470470 then if ((cA > -(cG)))
471471 then throw(((((("Attempt to buy " + toString(cA)) + " of ") + bI._11[bK]) + ", but warehouse only sells ") + toString(-(cG))))
472472 else $Tuple13((bI._1 :+ toString(bS)), (bI._2 :+ ((toString((cG + cA)) + "@") + toString(cH))), (bI._3 :+ toString((cD + cA))), (bI._4 + cJ), bI._5, (bI._6 + cC), (bI._7 + 1), bI._8, bI._9, bI._10, bI._11, bM, (bI._13 + (if (bM)
473473 then (cA * al)
474474 else cA)))
475475 else throw((("Attempt to buy " + bI._11[bK]) + " while warehouse doesn't sell it"))
476476 else if ((cG > 0))
477477 then if ((-(cA) > cG))
478478 then throw(((((("Attempt to sell " + toString(-(cA))) + " of ") + bI._11[bK]) + ", but warehouse only buys ") + toString(cG)))
479479 else if ((-(cA) > cD))
480480 then throw(((((("Attempt to sell " + toString(-(cA))) + ", but you only have ") + toString(cD)) + " of ") + bI._11[bK]))
481481 else $Tuple13((bI._1 :+ toString((bS - cA))), (bI._2 :+ ((toString((cG + cA)) + "@") + toString(cH))), (bI._3 :+ toString((cD + cA))), (bI._4 - cJ), (bI._5 - cC), bI._6, (bI._7 + 1), bI._8, bI._9, bI._10, bI._11, bM, (bI._13 - (if (bM)
482482 then (cA * al)
483483 else cA)))
484484 else throw((("Attempt to sell " + bI._11[bK]) + " while warehouse doesn't buy it"))
485485 }
486486 }
487487 }
488488 }
489489
490490
491491 func cK (cL,cM,cN,cO) = {
492492 func cP (bI,bK) = if ((cN[bK] > parseIntValue(cL[bK])))
493493 then throw(((((("You have " + cL[bK]) + " of ") + p[bK]) + ", but tried to sell ") + toString(cN[bK])))
494494 else if ((0 > cN[bK]))
495495 then throw(((("You tried to sell negative amount of " + p[bK]) + ": ") + toString(cN[bK])))
496496 else if ((cN[bK] > 0))
497497 then {
498498 let cQ = bm(cM, bK, cN[bK], cO[bK])
499499 $Tuple4((bI._1 :+ cQ._1), (bI._2 :+ toString((parseIntValue(cL[bK]) - cN[bK]))), (bI._3 + cQ._2), (bI._4 + cN[bK]))
500500 }
501501 else $Tuple4(bI._1, (bI._2 :+ cL[bK]), bI._3, bI._4)
502502
503503 let cm = ao
504504 let cn = size(cm)
505505 let co = $Tuple4(nil, nil, 0, 0)
506506 func cp (cq,cr) = if ((cr >= cn))
507507 then cq
508508 else cP(cq, cm[cr])
509509
510510 func cs (cq,cr) = if ((cr >= cn))
511511 then cq
512512 else throw("List size exceeds 6")
513513
514514 cs(cp(cp(cp(cp(cp(cp(co, 0), 1), 2), 3), 4), 5), 6)
515515 }
516516
517517
518518 func cR (cS,cM,cN,cT) = {
519519 func cU (bI,bK) = if ((0 > cN[bK]))
520520 then throw(((("You tried to buy negative amount of " + q[bK]) + ": ") + toString(cN[bK])))
521521 else if ((cN[bK] > 0))
522522 then {
523523 let cQ = bu(cM, bK, cN[bK], cT[bK])
524524 $Tuple4((bI._1 :+ cQ._1), (bI._2 :+ toString((parseIntValue(cS[bK]) + cQ._3))), (bI._3 + cQ._2), (bI._4 + cN[bK]))
525525 }
526526 else $Tuple4(bI._1, (bI._2 :+ cS[bK]), bI._3, bI._4)
527527
528528 let cm = ao
529529 let cn = size(cm)
530530 let co = $Tuple4(nil, nil, 0, 0)
531531 func cp (cq,cr) = if ((cr >= cn))
532532 then cq
533533 else cU(cq, cm[cr])
534534
535535 func cs (cq,cr) = if ((cr >= cn))
536536 then cq
537537 else throw("List size exceeds 6")
538538
539539 cs(cp(cp(cp(cp(cp(cp(co, 0), 1), 2), 3), 4), 5), 6)
540540 }
541541
542542
543543 func cV (cL,cS,cN) = {
544544 func cW (bI,bK) = {
545545 let cX = cN[bK]
546546 if ((cX > parseIntValue(cL[bK])))
547547 then throw(((((("You have " + cL[bK]) + " of ") + p[bK]) + ", but tried to exchange ") + toString(cX)))
548548 else if ((0 > cX))
549549 then throw(((("You tried to exchange negative amount of " + p[bK]) + ": ") + toString(cX)))
550550 else if ((cX > 0))
551551 then $Tuple4((bI._1 :+ toString((parseIntValue(cL[bK]) - cX))), (bI._2 :+ toString((parseIntValue(cS[bK]) + cX))), (bI._3 + fraction(cX, h, al)), (bI._4 + cX))
552552 else $Tuple4((bI._1 :+ cL[bK]), (bI._2 :+ cS[bK]), bI._3, bI._4)
553553 }
554554
555555 let cm = ao
556556 let cn = size(cm)
557557 let co = $Tuple4(nil, nil, 0, 0)
558558 func cp (cq,cr) = if ((cr >= cn))
559559 then cq
560560 else cW(cq, cm[cr])
561561
562562 func cs (cq,cr) = if ((cr >= cn))
563563 then cq
564564 else throw("List size exceeds 6")
565565
566566 cs(cp(cp(cp(cp(cp(cp(co, 0), 1), 2), 3), 4), 5), 6)
567567 }
568568
569569
570570 func cY (cZ,da,db) = if ((cZ > 0))
571571 then {
572572 let dc = fraction(cZ, aV, ak)
573573 if ((db >= (cZ - (3 * dc))))
574574 then throw(("This trade does not cover delivery cost of " + aM(db, 6)))
575575 else {
576576 let dd = Q(da)
577577 let de = getString(aD, dd)
578578 let df = addressFromStringValue(da)
579579 (((if (isDefined(de))
580580 then [ScriptTransfer(addressFromStringValue(value(de)), dc, af)]
581581 else nil) :+ ScriptTransfer(df, ((cZ - (3 * dc)) - db), af)) :+ ScriptTransfer(aC, dc, af))
582582 }
583583 }
584584 else nil
585585
586586
587587 func dg (dh,di,dj,dk) = if ((dh > 0))
588588 then if ((size(di) != 1))
589589 then throw("exactly 1 payment must be attached")
590590 else {
591591 let dl = di[0]
592592 let dm = dl.amount
593593 if (if (!(isDefined(dl.assetId)))
594594 then true
595595 else (value(dl.assetId) != af))
596596 then throw("USDT payments only!")
597597 else {
598598 let dn = (dh + dk)
599599 if ((dm != dn))
600600 then throw((((((("Insufficient payment! Attached=" + aM(dm, 6)) + ", required=") + aM(dh, 6)) + "+") + aM(dk, 6)) + "(delivery fee)"))
601601 else if ((an > dh))
602602 then throw(("Min shop trade is " + aM(an, 6)))
603603 else {
604604 let do = fraction(dh, aV, ak)
605605 let dd = Q(dj)
606606 let de = getString(aD, dd)
607607 (((if (isDefined(de))
608608 then [ScriptTransfer(addressFromStringValue(value(de)), do, af)]
609609 else nil) :+ ScriptTransfer(addressFromStringValue(dj), (dh - (3 * do)), af)) :+ ScriptTransfer(aC, do, af))
610610 }
611611 }
612612 }
613613 else if ((size(di) != 0))
614614 then throw("No payments needed")
615615 else nil
616616
617617
618618 func dp (dq,da,dr,ds,dt,du) = {
619619 let dv = value(assetInfo(fromBase58String(dq)))
620620 if (!(isDefined(getInteger(aD, P(dq)))))
621621 then throw((("NFT " + dv.name) + " is not staked"))
622622 else {
623623 let dj = valueOrErrorMessage(getString(aD, N(dq)), (("NFT " + dv.name) + " is orphaned"))
624624 if ((dj == da))
625625 then throw("You cannot trade with yourself")
626626 else {
627627 let dw = split_4C(dr, ":")
628628 if ((size(dw) != 3))
629629 then throw("bpOrderStr should contain exactly 2 ':' separators")
630630 else {
631631 let dx = split(dw[0], "_")
632632 let dy = split(dw[1], "_")
633633 let dz = if ((dw[2] == ""))
634634 then nil
635635 else split_4C(dw[2], "_")
636636 if ((size(dx) != f))
637637 then throw("All 6 resources should be passed")
638638 else if ((size(dy) != f))
639639 then throw("All 6 materials should be passed")
640640 else {
641641 let dA = aG(invoke(aD, "getWarehouseREADONLY", [dq], nil))
642642 let bZ = split_4C(dA, ":")
643643 let cc = split(bZ[A], "_")
644644 let cd = split(bZ[B], "_")
645645 let ce = if ((bZ[C] == ""))
646646 then nil
647647 else split_4C(bZ[C], "_")
648648 let dB = parseIntValue(split(bZ[D], "_")[E])
649649 let bf = X(dq)
650650 let dC = be(bf)
651651 let dD = split(dC[bb], "_")
652652 let dE = split(dC[bc], "_")
653653 let dF = if ((dC[bd] == ""))
654654 then nil
655655 else split_4C(dC[bd], "_")
656656 let cl = {
657657 let cm = dx
658658 let cn = size(cm)
659659 let co = $Tuple13(nil, nil, nil, 0, 0, 0, 0, ds, cc, dD, p, false, 0)
660660 func cp (cq,cr) = if ((cr >= cn))
661661 then cq
662662 else cx(cq, cm[cr])
663663
664664 func cs (cq,cr) = if ((cr >= cn))
665665 then cq
666666 else throw("List size exceeds 6")
667667
668668 cs(cp(cp(cp(cp(cp(cp(co, 0), 1), 2), 3), 4), 5), 6)
669669 }
670670 let bz = {
671671 let cm = dy
672672 let cn = size(cm)
673673 let co = $Tuple13(nil, nil, nil, cl._4, cl._5, cl._6, 0, dt, cd, dE, q, false, cl._13)
674674 func ct (cq,cr) = if ((cr >= cn))
675675 then cq
676676 else cx(cq, cm[cr])
677677
678678 func cu (cq,cr) = if ((cr >= cn))
679679 then cq
680680 else throw("List size exceeds 6")
681681
682682 cu(ct(ct(ct(ct(ct(ct(co, 0), 1), 2), 3), 4), 5), 6)
683683 }
684684 let bg = if ((size(dz) != 0))
685685 then {
686686 let cm = dz
687687 let cn = size(cm)
688688 let co = $Tuple13(nil, nil, nil, bz._4, bz._5, bz._6, 0, du, ce, dF, r, true, bz._13)
689689 func cv (cq,cr) = if ((cr >= cn))
690690 then cq
691691 else cx(cq, cm[cr])
692692
693693 func cw (cq,cr) = if ((cr >= cn))
694694 then cq
695695 else throw("List size exceeds 50")
696696
697697 cw(cv(cv(cv(cv(cv(cv(cv(cv(cv(cv(cv(cv(cv(cv(cv(cv(cv(cv(cv(cv(cv(cv(cv(cv(cv(cv(cv(cv(cv(cv(cv(cv(cv(cv(cv(cv(cv(cv(cv(cv(cv(cv(cv(cv(cv(cv(cv(cv(cv(cv(co, 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)
698698 }
699699 else $Tuple13(ce, dF, du, bz._4, bz._5, bz._6, 0, du, ce, dF, r, true, bz._13)
700700 let dG = bg._4
701701 let dH = if ((0 > (dB - dG)))
702702 then 0
703703 else (dB - dG)
704704 let dI = makeString_2C([bZ[z], makeString(cl._1, "_"), makeString(bz._1, "_"), makeString_2C(bg._1, "_"), toString(dH)], ":")
705705 let dJ = makeString_2C([makeString(cl._2, "_"), makeString(bz._2, "_"), makeString_2C(bg._2, "_")], ":")
706706 let dK = aG(invoke(aD, "saveWarehouse", [dI, dq], nil))
707707 let dL = aJ(invoke(aD, "updateAccStats", [dj, fraction(d, bg._13, al)], nil))
708708 $Tuple10(StringEntry(bf, dJ), cl._3, bz._3, bg._3, bg._5, bg._6, bg._13, dj, dK, dL)
709709 }
710710 }
711711 }
712712 }
713713 }
714714
715715
716716 func dM (bi) = {
717717 let dN = (bi / 30)
718718 let dO = [dN, dN, dN, dN, dN, dN]
719719 let aI = toString(dN)
720720 let cL = [aI, aI, aI, aI, aI, aI]
721721 let cO = [0, 0, 0, 0, 0, 0]
722722 func dP (bI,dQ) = {
723723 let dR = cK(cL, dQ, dO, cO)
724724 $Tuple3((bI._1 ++ dR._1), (bI._2 + dR._3), (bI._3 + dR._4))
725725 }
726726
727727 let dS = {
728728 let cm = s
729729 let cn = size(cm)
730730 let co = $Tuple3(nil, 0, 0)
731731 func cp (cq,cr) = if ((cr >= cn))
732732 then cq
733733 else dP(cq, cm[cr])
734734
735735 func cs (cq,cr) = if ((cr >= cn))
736736 then cq
737737 else throw("List size exceeds 5")
738738
739739 cs(cp(cp(cp(cp(cp(co, 0), 1), 2), 3), 4), 5)
740740 }
741741 let dT = dS._1
742742 let bs = dS._2
743743 let dU = dS._3
744744 let dV = fraction(bs, aW, ak)
745745 let dW = (bs / 100)
746746 let dX = ((bs - dW) - dV)
747747 $Tuple5(dT, dX, dV, dW, dU)
748748 }
749749
750750
751751 func dY (cS,dZ,ea,eb,ec) = if ((0 >= ec))
752752 then throw("Quantity should be positive")
753753 else if (if ((0 > eb))
754754 then true
755755 else (eb >= size(u)))
756756 then throw(("Unknown product idx=" + toString(eb)))
757757 else {
758758 let ad = split(u[eb], "_")
759759 if ((size(ad) != x))
760760 then throw(("Fatal: unknown recipe: " + u[eb]))
761761 else {
762762 let ed = parseIntValue(ad[w])
763763 if ((s[ed] != ea))
764764 then throw(((("This product is available in " + s[ed]) + ", not in ") + ea))
765765 else {
766766 func ee (bI,ef) = {
767767 let aK = bI._2
768768 let eg = if ((size(dZ) > aK))
769769 then dZ[aK]
770770 else "0"
771771 let dR = parseIntValue(eg)
772772 let bi = (ec * y)
773773 let eh = if ((aK == eb))
774774 then toString((dR + bi))
775775 else eg
776776 $Tuple2((bI._1 :+ eh), (aK + 1))
777777 }
778778
779779 let ei = ( let cm = u
780780 let cn = size(cm)
781781 let co = $Tuple2(nil, 0)
782782 func cp (cq,cr) = if ((cr >= cn))
783783 then cq
784784 else ee(cq, cm[cr])
785785
786786 func cs (cq,cr) = if ((cr >= cn))
787787 then cq
788788 else throw("List size exceeds 50")
789789
790790 cs(cp(cp(cp(cp(cp(cp(cp(cp(cp(cp(cp(cp(cp(cp(cp(cp(cp(cp(cp(cp(cp(cp(cp(cp(cp(cp(cp(cp(cp(cp(cp(cp(cp(cp(cp(cp(cp(cp(cp(cp(cp(cp(cp(cp(cp(cp(cp(cp(cp(cp(co, 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
791791 func ej (bI,bK) = {
792792 let ek = (((parseIntValue(ad[bK]) * aj) * ec) * parseIntValue(ad[v]))
793793 let el = parseIntValue(cS[bK])
794794 if ((ek > el))
795795 then throw(((((((("You have " + aM(el, 8)) + " of ") + q[bK]) + ", but recipe requires ") + aM(ek, 8)) + " for quantity ") + toString(ec)))
796796 else if ((ek > 0))
797797 then $Tuple2((bI._1 :+ toString((el - ek))), (bI._2 + ek))
798798 else $Tuple2((bI._1 :+ cS[bK]), bI._2)
799799 }
800800
801801 let em = {
802802 let cm = ao
803803 let cn = size(cm)
804804 let co = $Tuple2(nil, 0)
805805 func ct (cq,cr) = if ((cr >= cn))
806806 then cq
807807 else ej(cq, cm[cr])
808808
809809 func cu (cq,cr) = if ((cr >= cn))
810810 then cq
811811 else throw("List size exceeds 6")
812812
813813 cu(ct(ct(ct(ct(ct(ct(co, 0), 1), 2), 3), 4), 5), 6)
814814 }
815815 $Tuple3(em._1, ei, em._2)
816816 }
817817 }
818818 }
819819
820820
821821 @Callable(en)
822822 func recalcLockedVolumeREADONLY (Y,dA) = {
823823 let ca = be(X(Y))
824824 let eo = bY(dA, ca, ca)
825825 $Tuple2(nil, (eo._4 + eo._5))
826826 }
827827
828828
829829
830830 @Callable(en)
831831 func constructorV1 (ep) = if ((en.caller != this))
832832 then throw("Permission denied")
833833 else [StringEntry(aw(), ep)]
834834
835835
836836
837837 @Callable(en)
838838 func sellResources (cN,cO) = {
839839 let eq = bG()
840840 if ((eq == eq))
841841 then {
842842 let V = valueOrErrorMessage(getString(aD, S(toString(en.caller))), "You don't have a duck staked")
843843 if ((size(en.payments) != 0))
844844 then throw("sellResources doesn't require any payments")
845845 else {
846846 let er = split(valueOrElse(getString(aD, W(V)), g), "_")
847847 if ((er[L] != "F"))
848848 then throw(("Duck location type should be Factory, but is " + er[L]))
849849 else {
850850 let es = bD(U(V))
851851 let cL = split(es[H], "_")
852852 let et = cK(cL, er[M], cN, cO)
853853 let dT = et._1
854854 let eu = et._2
855855 let bs = et._3
856856 let dU = et._4
857857 let dW = (bs / 100)
858858 let ev = makeString_2C([es[G], makeString(eu, "_"), es[I], es[J]], ":")
859859 let ew = aG(invoke(aD, "updateBackpack", [V, ev], nil))
860860 let ex = aJ(invoke(aD, "updateDuckStats", [V, fraction(a, dU, al)], nil))
861861 $Tuple2(((dT :+ ScriptTransfer(en.caller, (bs - dW), af)) :+ ScriptTransfer(aC, dW, af)), $Tuple3(ew, eq, ex))
862862 }
863863 }
864864 }
865865 else throw("Strict value is not equal to itself.")
866866 }
867867
868868
869869
870870 @Callable(en)
871871 func sellResourcesWorld (R,bi) = if ((en.caller != aF))
872872 then throw("Permission denied")
873873 else {
874874 let ey = dM(bi)
875875 let dT = ey._1
876876 let dX = ey._2
877877 let dV = ey._3
878878 let dW = ey._4
879879 let dU = ey._5
880880 if ((0 >= dX))
881881 then throw(("This trade does not cover delivery cost of " + aM(dV, 6)))
882882 else {
883883 let ex = aJ(invoke(aD, "updateAccStats", [R, fraction(a, dU, al)], nil))
884884 $Tuple2((((dT :+ IntegerEntry(aa, (valueOrElse(getInteger(aa), 0) + dV))) :+ ScriptTransfer(aC, dW, af)) :+ ScriptTransfer(aE, dX, af)), $Tuple2(dX, ex))
885885 }
886886 }
887887
888888
889889
890890 @Callable(en)
891891 func sellResourcesWorldREADONLY (bi) = {
892892 let dX = dM(bi)._2
893893 $Tuple2(nil, dX)
894894 }
895895
896896
897897
898898 @Callable(en)
899899 func sellResourcesDuckDelivery (cN,cO,ez) = {
900900 let eq = bG()
901901 if ((eq == eq))
902902 then {
903903 let V = valueOrErrorMessage(getString(aD, S(toString(en.caller))), "You don't have a duck staked")
904904 if ((size(en.payments) != 0))
905905 then throw("sellResources doesn't require any payments")
906906 else {
907907 let es = bD(U(V))
908908 let cL = split(es[H], "_")
909909 let eA = cK(cL, ez, cN, cO)
910910 let dT = eA._1
911911 let eu = eA._2
912912 let bs = eA._3
913913 let dU = eA._4
914914 let ev = makeString_2C([es[G], makeString(eu, "_"), es[I], es[J]], ":")
915915 let ew = aG(invoke(aD, "updateBackpack", [V, ev], nil))
916916 let ex = aJ(invoke(aD, "updateDuckStats", [V, fraction(a, dU, al)], nil))
917917 let eB = fraction(bs, aW, ak)
918918 let dV = max([eB, k])
919919 let dW = (bs / 100)
920920 if ((dV >= (bs - dW)))
921921 then throw(("This trade does not cover delivery cost of " + aM(dV, 6)))
922922 else {
923923 let eC = valueOrElse(getInteger(aa), 0)
924924 $Tuple2((((dT :+ ScriptTransfer(en.caller, ((bs - dW) - dV), af)) :+ IntegerEntry(aa, (eC + dV))) :+ ScriptTransfer(aC, dW, af)), $Tuple3(ew, eq, ex))
925925 }
926926 }
927927 }
928928 else throw("Strict value is not equal to itself.")
929929 }
930930
931931
932932
933933 @Callable(en)
934934 func sellResourcesLandDelivery (cN,cO,Y,ez) = {
935935 let eq = bG()
936936 if ((eq == eq))
937937 then if ((size(en.payments) != 0))
938938 then throw("sellResources doesn't require any payments")
939939 else {
940940 let eD = en.caller
941941 let R = toString(eD)
942942 let eE = value(assetInfo(fromBase58String(Y)))
943943 if (!(isDefined(getInteger(aD, P(Y)))))
944944 then throw((("NFT " + eE.name) + " is not staked"))
945945 else {
946946 let eF = valueOrErrorMessage(getString(aD, N(Y)), (("NFT " + eE.name) + " is orphaned"))
947947 if ((eF != R))
948948 then throw((e + " is not yours"))
949949 else {
950950 let dA = aG(invoke(aD, "getWarehouseREADONLY", [Y], nil))
951951 let bZ = split_4C(dA, ":")
952952 let cL = split(bZ[A], "_")
953953 let eG = cK(cL, ez, cN, cO)
954954 let dT = eG._1
955955 let eu = eG._2
956956 let bs = eG._3
957957 let dU = eG._4
958958 let dI = makeString_2C([bZ[z], makeString(eu, "_"), bZ[B], bZ[C], bZ[D]], ":")
959959 let dK = aG(invoke(aD, "saveWarehouse", [dI, Y], nil))
960960 let ex = aJ(invoke(aD, "updateAccStats", [R, fraction(a, dU, al)], nil))
961961 let eB = fraction(bs, aW, ak)
962962 let dV = max([eB, k])
963963 let dW = (bs / 100)
964964 if ((dV >= (bs - dW)))
965965 then throw(("This trade does not cover delivery cost of " + aM(dV, 6)))
966966 else {
967967 let eC = valueOrElse(getInteger(aa), 0)
968968 $Tuple2((((dT :+ ScriptTransfer(en.caller, ((bs - dW) - dV), af)) :+ IntegerEntry(aa, (eC + dV))) :+ ScriptTransfer(aC, dW, af)), $Tuple3(dK, eq, ex))
969969 }
970970 }
971971 }
972972 }
973973 else throw("Strict value is not equal to itself.")
974974 }
975975
976976
977977
978978 @Callable(en)
979979 func buyMaterials (cN,cT) = {
980980 let eq = bG()
981981 if ((eq == eq))
982982 then {
983983 let V = valueOrErrorMessage(getString(aD, S(toString(en.caller))), "You don't have a duck staked")
984984 if ((size(en.payments) != 1))
985985 then throw("exactly 1 payment must be attached")
986986 else {
987987 let dl = en.payments[0]
988988 let dm = dl.amount
989989 if (if (!(isDefined(dl.assetId)))
990990 then true
991991 else (value(dl.assetId) != af))
992992 then throw("USDT payments only!")
993993 else {
994994 let er = split(valueOrElse(getString(aD, W(V)), g), "_")
995995 if ((er[L] != "F"))
996996 then throw(("Duck location type should be Factory, but is " + er[L]))
997997 else {
998998 let es = bD(U(V))
999999 let cS = split(es[I], "_")
10001000 let eH = cR(cS, er[M], cN, cT)
10011001 let dT = eH._1
10021002 let eI = eH._2
10031003 let bB = eH._3
10041004 let eJ = eH._4
10051005 if ((bB > dm))
10061006 then throw(((("Insufficient payment! Attached=" + aM(dm, 6)) + ", required=") + aM(bB, 6)))
10071007 else {
10081008 let ev = makeString([es[G], es[H], makeString(eI, "_"), es[J]], ":")
10091009 let ew = aG(invoke(aD, "updateBackpack", [V, ev], nil))
10101010 let ay = if (((dm - bB) > 0))
10111011 then [ScriptTransfer(en.caller, (dm - bB), af)]
10121012 else nil
10131013 let dW = (bB / 100)
10141014 let ex = aJ(invoke(aD, "updateDuckStats", [V, fraction(a, eJ, al)], nil))
10151015 $Tuple2(((dT ++ ay) :+ ScriptTransfer(aC, dW, af)), $Tuple3(ew, eq, ex))
10161016 }
10171017 }
10181018 }
10191019 }
10201020 }
10211021 else throw("Strict value is not equal to itself.")
10221022 }
10231023
10241024
10251025
10261026 @Callable(en)
10271027 func buyMaterialsDuckDelivery (cN,cT,ez) = {
10281028 let eq = bG()
10291029 if ((eq == eq))
10301030 then {
10311031 let V = valueOrErrorMessage(getString(aD, S(toString(en.caller))), "You don't have a duck staked")
10321032 if ((size(en.payments) != 1))
10331033 then throw("exactly 1 payment must be attached")
10341034 else {
10351035 let dl = en.payments[0]
10361036 let dm = dl.amount
10371037 if (if (!(isDefined(dl.assetId)))
10381038 then true
10391039 else (value(dl.assetId) != af))
10401040 then throw("USDT payments only!")
10411041 else {
10421042 let es = bD(U(V))
10431043 let cS = split(es[I], "_")
10441044 let eK = cR(cS, ez, cN, cT)
10451045 let dT = eK._1
10461046 let eI = eK._2
10471047 let bB = eK._3
10481048 let eJ = eK._4
10491049 let ev = makeString([es[G], es[H], makeString(eI, "_"), es[J]], ":")
10501050 let ew = aG(invoke(aD, "updateBackpack", [V, ev], nil))
10511051 let ex = aJ(invoke(aD, "updateDuckStats", [V, fraction(a, eJ, al)], nil))
10521052 let eB = fraction(bB, aW, ak)
10531053 let dV = max([eB, k])
10541054 let dn = (bB + dV)
10551055 if ((dn > dm))
10561056 then throw((((((("Insufficient payment! Attached=" + aM(dm, 6)) + ", required=") + aM(bB, 6)) + "+") + aM(dV, 6)) + "(delivery fee)"))
10571057 else {
10581058 let ay = if (((dm - dn) > 0))
10591059 then [ScriptTransfer(en.caller, (dm - dn), af)]
10601060 else nil
10611061 let dW = (bB / 100)
10621062 let eC = valueOrElse(getInteger(aa), 0)
10631063 $Tuple2((((dT ++ ay) :+ ScriptTransfer(aC, dW, af)) :+ IntegerEntry(aa, (eC + dV))), $Tuple3(ew, eq, ex))
10641064 }
10651065 }
10661066 }
10671067 }
10681068 else throw("Strict value is not equal to itself.")
10691069 }
10701070
10711071
10721072
10731073 @Callable(en)
10741074 func buyMaterialsLandDelivery (cN,cT,Y,ez) = {
10751075 let eq = bG()
10761076 if ((eq == eq))
10771077 then if ((size(en.payments) != 1))
10781078 then throw("exactly 1 payment must be attached")
10791079 else {
10801080 let dl = en.payments[0]
10811081 let dm = dl.amount
10821082 if (if (!(isDefined(dl.assetId)))
10831083 then true
10841084 else (value(dl.assetId) != af))
10851085 then throw("USDT payments only!")
10861086 else {
10871087 let eD = en.caller
10881088 let R = toString(eD)
10891089 let eE = value(assetInfo(fromBase58String(Y)))
10901090 if (!(isDefined(getInteger(aD, P(Y)))))
10911091 then throw((("NFT " + eE.name) + " is not staked"))
10921092 else {
10931093 let eF = valueOrErrorMessage(getString(aD, N(Y)), (("NFT " + eE.name) + " is orphaned"))
10941094 if ((eF != R))
10951095 then throw((e + " is not yours"))
10961096 else {
10971097 let dA = aG(invoke(aD, "getWarehouseREADONLY", [Y], nil))
10981098 let bZ = split_4C(dA, ":")
10991099 let cS = split(bZ[B], "_")
11001100 let eL = cR(cS, ez, cN, cT)
11011101 let dT = eL._1
11021102 let eI = eL._2
11031103 let bB = eL._3
11041104 let eJ = eL._4
11051105 let dI = makeString_2C([bZ[z], bZ[A], makeString(eI, "_"), bZ[C], bZ[D]], ":")
11061106 let dK = aG(invoke(aD, "saveWarehouse", [dI, Y], nil))
11071107 let ex = aJ(invoke(aD, "updateAccStats", [R, fraction(a, eJ, al)], nil))
11081108 let eB = fraction(bB, aW, ak)
11091109 let dV = max([eB, k])
11101110 let dn = (bB + dV)
11111111 if ((dn > dm))
11121112 then throw((((((("Insufficient payment! Attached=" + aM(dm, 6)) + ", required=") + aM(bB, 6)) + "+") + aM(dV, 6)) + "(delivery fee)"))
11131113 else {
11141114 let ay = if (((dm - dn) > 0))
11151115 then [ScriptTransfer(en.caller, (dm - dn), af)]
11161116 else nil
11171117 let dW = (bB / 100)
11181118 let eC = valueOrElse(getInteger(aa), 0)
11191119 $Tuple2((((dT ++ ay) :+ ScriptTransfer(aC, dW, af)) :+ IntegerEntry(aa, (eC + dV))), $Tuple3(dK, eq, ex))
11201120 }
11211121 }
11221122 }
11231123 }
11241124 }
11251125 else throw("Strict value is not equal to itself.")
11261126 }
11271127
11281128
11291129
11301130 @Callable(en)
11311131 func exchangeResources (cN) = {
11321132 let eq = bG()
11331133 if ((eq == eq))
11341134 then {
11351135 let V = valueOrErrorMessage(getString(aD, S(toString(en.caller))), "You don't have a duck staked")
11361136 if ((size(en.payments) != 1))
11371137 then throw("exactly 1 payment must be attached")
11381138 else {
11391139 let dl = en.payments[0]
11401140 let dm = dl.amount
11411141 if (if (!(isDefined(dl.assetId)))
11421142 then true
11431143 else (value(dl.assetId) != af))
11441144 then throw("USDT payments only!")
11451145 else {
11461146 let er = split(valueOrElse(getString(aD, W(V)), g), "_")
11471147 if ((er[L] != "F"))
11481148 then throw(("Duck location type should be Factory, but is " + er[L]))
11491149 else {
11501150 let es = bD(U(V))
11511151 let cL = split(es[H], "_")
11521152 let cS = split(es[I], "_")
11531153 let eM = cV(cL, cS, cN)
11541154 let eu = eM._1
11551155 let eI = eM._2
11561156 let bB = eM._3
11571157 let eN = eM._4
11581158 if ((bB > dm))
11591159 then throw(((("Insufficient payment! Attached=" + aM(dm, 6)) + ", required=") + aM(bB, 6)))
11601160 else {
11611161 let ev = makeString([es[G], makeString(eu, "_"), makeString(eI, "_"), es[J]], ":")
11621162 let ew = aG(invoke(aD, "updateBackpack", [V, ev], nil))
11631163 let ay = if (((dm - bB) > 0))
11641164 then [ScriptTransfer(en.caller, (dm - bB), af)]
11651165 else nil
11661166 let dW = (bB / 100)
11671167 let ex = aJ(invoke(aD, "updateDuckStats", [V, fraction(a, eN, al)], nil))
11681168 $Tuple2((ay :+ ScriptTransfer(aC, dW, af)), $Tuple3(ew, eq, ex))
11691169 }
11701170 }
11711171 }
11721172 }
11731173 }
11741174 else throw("Strict value is not equal to itself.")
11751175 }
11761176
11771177
11781178
11791179 @Callable(en)
11801180 func exchangeResourcesDuckDelivery (cN) = {
11811181 let eq = bG()
11821182 if ((eq == eq))
11831183 then {
11841184 let V = valueOrErrorMessage(getString(aD, S(toString(en.caller))), "You don't have a duck staked")
11851185 if ((size(en.payments) != 1))
11861186 then throw("exactly 1 payment must be attached")
11871187 else {
11881188 let dl = en.payments[0]
11891189 let dm = dl.amount
11901190 if (if (!(isDefined(dl.assetId)))
11911191 then true
11921192 else (value(dl.assetId) != af))
11931193 then throw("USDT payments only!")
11941194 else {
11951195 let es = bD(U(V))
11961196 let cL = split(es[H], "_")
11971197 let cS = split(es[I], "_")
11981198 let eO = cV(cL, cS, cN)
11991199 let eu = eO._1
12001200 let eI = eO._2
12011201 let bB = eO._3
12021202 let eN = eO._4
12031203 let eB = fraction(bB, aX, ak)
12041204 let dV = max([eB, l])
12051205 let dn = (bB + dV)
12061206 if ((dn > dm))
12071207 then throw((((((("Insufficient payment! Attached=" + aM(dm, 6)) + ", required=") + aM(bB, 6)) + "+") + aM(dV, 6)) + "(delivery fee)"))
12081208 else {
12091209 let ev = makeString([es[G], makeString(eu, "_"), makeString(eI, "_"), es[J]], ":")
12101210 let ew = aG(invoke(aD, "updateBackpack", [V, ev], nil))
12111211 let ay = if (((dm - dn) > 0))
12121212 then [ScriptTransfer(en.caller, (dm - dn), af)]
12131213 else nil
12141214 let dW = (bB / 100)
12151215 let ex = aJ(invoke(aD, "updateDuckStats", [V, fraction(a, eN, al)], nil))
12161216 let eC = valueOrElse(getInteger(aa), 0)
12171217 $Tuple2(((ay :+ ScriptTransfer(aC, dW, af)) :+ IntegerEntry(aa, (eC + dV))), $Tuple3(ew, eq, ex))
12181218 }
12191219 }
12201220 }
12211221 }
12221222 else throw("Strict value is not equal to itself.")
12231223 }
12241224
12251225
12261226
12271227 @Callable(en)
12281228 func exchangeResourcesLandDelivery (cN,Y) = {
12291229 let eq = bG()
12301230 if ((eq == eq))
12311231 then if ((size(en.payments) != 1))
12321232 then throw("exactly 1 payment must be attached")
12331233 else {
12341234 let dl = en.payments[0]
12351235 let dm = dl.amount
12361236 if (if (!(isDefined(dl.assetId)))
12371237 then true
12381238 else (value(dl.assetId) != af))
12391239 then throw("USDT payments only!")
12401240 else {
12411241 let eD = en.caller
12421242 let R = toString(eD)
12431243 let eE = value(assetInfo(fromBase58String(Y)))
12441244 if (!(isDefined(getInteger(aD, P(Y)))))
12451245 then throw((("NFT " + eE.name) + " is not staked"))
12461246 else {
12471247 let eF = valueOrErrorMessage(getString(aD, N(Y)), (("NFT " + eE.name) + " is orphaned"))
12481248 if ((eF != R))
12491249 then throw((e + " is not yours"))
12501250 else {
12511251 let dA = aG(invoke(aD, "getWarehouseREADONLY", [Y], nil))
12521252 let bZ = split_4C(dA, ":")
12531253 let cL = split(bZ[A], "_")
12541254 let cS = split(bZ[B], "_")
12551255 let eP = cV(cL, cS, cN)
12561256 let eu = eP._1
12571257 let eI = eP._2
12581258 let bB = eP._3
12591259 let eN = eP._4
12601260 let dI = makeString_2C([bZ[z], makeString(eu, "_"), makeString(eI, "_"), bZ[C], bZ[D]], ":")
12611261 let dK = aG(invoke(aD, "saveWarehouse", [dI, Y], nil))
12621262 let ex = aJ(invoke(aD, "updateAccStats", [R, fraction(a, eN, al)], nil))
12631263 let eB = fraction(bB, aX, ak)
12641264 let dV = max([eB, l])
12651265 let dn = (bB + dV)
12661266 if ((dn > dm))
12671267 then throw((((((("Insufficient payment! Attached=" + aM(dm, 6)) + ", required=") + aM(bB, 6)) + "+") + aM(dV, 6)) + "(delivery fee)"))
12681268 else {
12691269 let ay = if (((dm - dn) > 0))
12701270 then [ScriptTransfer(en.caller, (dm - dn), af)]
12711271 else nil
12721272 let dW = (bB / 100)
12731273 let eC = valueOrElse(getInteger(aa), 0)
12741274 $Tuple2(((ay :+ ScriptTransfer(aC, dW, af)) :+ IntegerEntry(aa, (eC + dV))), $Tuple3(dK, eq, ex))
12751275 }
12761276 }
12771277 }
12781278 }
12791279 }
12801280 else throw("Strict value is not equal to itself.")
12811281 }
12821282
12831283
12841284
12851285 @Callable(en)
12861286 func craftGoods (eb,ec) = {
12871287 let eq = bG()
12881288 if ((eq == eq))
12891289 then if ((size(en.payments) != 1))
12901290 then throw("exactly 1 payment must be attached")
12911291 else {
12921292 let dl = en.payments[0]
12931293 let dm = dl.amount
12941294 if (if (!(isDefined(dl.assetId)))
12951295 then true
12961296 else (value(dl.assetId) != af))
12971297 then throw("USDT payments only!")
12981298 else if ((dm != ak))
12991299 then throw((("exactly " + aM(m, 6)) + " USDT must be attached as payment"))
13001300 else {
13011301 let V = valueOrErrorMessage(getString(aD, S(toString(en.caller))), "You don't have a duck staked")
13021302 let er = split(valueOrElse(getString(aD, W(V)), g), "_")
13031303 if ((er[L] != "M"))
13041304 then throw(("Duck location type should be Manufactory, but is " + er[L]))
13051305 else {
13061306 let eQ = er[K]
13071307 let es = bD(U(V))
13081308 let cS = split(es[I], "_")
13091309 let dZ = if ((es[J] == ""))
13101310 then nil
13111311 else split_4C(es[J], "_")
13121312 let eR = dY(cS, dZ, eQ, eb, ec)
13131313 let eI = eR._1
13141314 let ei = eR._2
13151315 let eS = eR._3
13161316 let ev = makeString([es[G], es[H], makeString(eI, "_"), makeString_2C(ei, "_")], ":")
13171317 let eT = aG(invoke(aD, "updateBackpack", [V, ev], nil))
13181318 let ex = aJ(invoke(aD, "updateDuckStats", [V, fraction(b, eS, al)], nil))
13191319 $Tuple2(nil, $Tuple3(eT, eq, ex))
13201320 }
13211321 }
13221322 }
13231323 else throw("Strict value is not equal to itself.")
13241324 }
13251325
13261326
13271327
13281328 @Callable(en)
13291329 func craftGoodsDuckDelivery (eb,ec,ea) = {
13301330 let eq = bG()
13311331 if ((eq == eq))
13321332 then {
13331333 let V = valueOrErrorMessage(getString(aD, S(toString(en.caller))), "You don't have a duck staked")
13341334 if ((size(en.payments) != 1))
13351335 then throw("exactly 1 payment must be attached")
13361336 else {
13371337 let dl = en.payments[0]
13381338 let dm = dl.amount
13391339 if (if (!(isDefined(dl.assetId)))
13401340 then true
13411341 else (value(dl.assetId) != af))
13421342 then throw("USDT payments only!")
13431343 else {
13441344 let es = bD(U(V))
13451345 let cS = split(es[I], "_")
13461346 let dZ = if ((es[J] == ""))
13471347 then nil
13481348 else split_4C(es[J], "_")
13491349 let eU = dY(cS, dZ, ea, eb, ec)
13501350 let eI = eU._1
13511351 let ei = eU._2
13521352 let eS = eU._3
13531353 let ev = makeString([es[G], es[H], makeString(eI, "_"), makeString_2C(ei, "_")], ":")
13541354 let ew = aG(invoke(aD, "updateBackpack", [V, ev], nil))
13551355 let ex = aJ(invoke(aD, "updateDuckStats", [V, fraction(b, eS, al)], nil))
13561356 let eB = fraction(ec, k, n)
13571357 let dV = max([eB, k])
13581358 let dn = (m + dV)
13591359 if ((dn > dm))
13601360 then throw((((((("Insufficient payment! Attached=" + aM(dm, 6)) + ", required=") + aM(m, 6)) + "+") + aM(dV, 6)) + "(delivery fee)"))
13611361 else {
13621362 let ay = if (((dm - dn) > 0))
13631363 then [ScriptTransfer(en.caller, (dm - dn), af)]
13641364 else nil
13651365 let eC = valueOrElse(getInteger(aa), 0)
13661366 $Tuple2((ay :+ IntegerEntry(aa, (eC + dV))), $Tuple3(ew, eq, ex))
13671367 }
13681368 }
13691369 }
13701370 }
13711371 else throw("Strict value is not equal to itself.")
13721372 }
13731373
13741374
13751375
13761376 @Callable(en)
13771377 func craftGoodsLandDelivery (eb,ec,Y,ea) = {
13781378 let eq = bG()
13791379 if ((eq == eq))
13801380 then if ((size(en.payments) != 1))
13811381 then throw("exactly 1 payment must be attached")
13821382 else {
13831383 let dl = en.payments[0]
13841384 let dm = dl.amount
13851385 if (if (!(isDefined(dl.assetId)))
13861386 then true
13871387 else (value(dl.assetId) != af))
13881388 then throw("USDT payments only!")
13891389 else {
13901390 let eD = en.caller
13911391 let R = toString(eD)
13921392 let eE = value(assetInfo(fromBase58String(Y)))
13931393 if (!(isDefined(getInteger(aD, P(Y)))))
13941394 then throw((("NFT " + eE.name) + " is not staked"))
13951395 else {
13961396 let eF = valueOrErrorMessage(getString(aD, N(Y)), (("NFT " + eE.name) + " is orphaned"))
13971397 if ((eF != R))
13981398 then throw((e + " is not yours"))
13991399 else {
14001400 let dA = aG(invoke(aD, "getWarehouseREADONLY", [Y], nil))
14011401 let bZ = split_4C(dA, ":")
14021402 let cS = split(bZ[B], "_")
14031403 let dZ = if ((bZ[C] == ""))
14041404 then nil
14051405 else split_4C(bZ[C], "_")
14061406 let eV = dY(cS, dZ, ea, eb, ec)
14071407 let eI = eV._1
14081408 let ei = eV._2
14091409 let eS = eV._3
14101410 let dI = makeString_2C([bZ[z], bZ[A], makeString(eI, "_"), makeString_2C(ei, "_"), bZ[D]], ":")
14111411 let dK = aG(invoke(aD, "saveWarehouse", [dI, Y], nil))
14121412 let ex = aJ(invoke(aD, "updateAccStats", [R, fraction(b, eS, al)], nil))
14131413 let eB = fraction(ec, k, n)
14141414 let dV = max([eB, k])
14151415 let dn = (m + dV)
14161416 if ((dn > dm))
14171417 then throw((((((("Insufficient payment! Attached=" + aM(dm, 6)) + ", required=") + aM(m, 6)) + "+") + aM(dV, 6)) + "(delivery fee)"))
14181418 else {
14191419 let ay = if (((dm - dn) > 0))
14201420 then [ScriptTransfer(en.caller, (dm - dn), af)]
14211421 else nil
14221422 let eC = valueOrElse(getInteger(aa), 0)
14231423 $Tuple2((ay :+ IntegerEntry(aa, (eC + dV))), $Tuple3(dK, eq, ex))
14241424 }
14251425 }
14261426 }
14271427 }
14281428 }
14291429 else throw("Strict value is not equal to itself.")
14301430 }
14311431
14321432
14331433
14341434 @Callable(en)
14351435 func setWarehouseOrder (eW,Y) = {
14361436 let eD = en.originCaller
14371437 let R = toString(eD)
14381438 let eT = if ((eD != aC))
14391439 then bF()
14401440 else false
14411441 let eE = value(assetInfo(fromBase58String(Y)))
14421442 if (!(isDefined(getInteger(aD, P(Y)))))
14431443 then throw((("NFT " + eE.name) + " is not staked"))
14441444 else {
14451445 let eF = valueOrErrorMessage(getString(aD, N(Y)), (("NFT " + eE.name) + " is orphaned"))
14461446 if (if ((eD != aC))
14471447 then (eF != R)
14481448 else false)
14491449 then throw((e + " is not yours"))
14501450 else {
14511451 let eX = split_4C(eW, ":")
14521452 let dA = aG(invoke(aD, "getWarehouseREADONLY", [Y], nil))
14531453 let bZ = split_4C(dA, ":")
14541454 let eY = split(bZ[D], "_")
14551455 let eZ = parseIntValue(eY[F])
14561456 let bf = X(Y)
14571457 let ca = be(bf)
14581458 let eo = bY(bZ, ca, eX)
14591459 let fa = eo._4
14601460 let fb = eo._5
14611461 let fc = eo._7
14621462 let fd = (fa + fb)
14631463 let fe = ((eZ - fc) - fd)
14641464 if ((0 > fe))
14651465 then throw((((((("Attempt to reserve " + toString(fa)) + " space for buy orders, and ") + toString(fb)) + " space for sell orders (and occupied=") + toString(fc)) + "), leads to negative free space"))
14661466 else {
14671467 let dI = makeString_2C([bZ[z], makeString(eo._1, "_"), makeString(eo._2, "_"), makeString_2C(eo._3, "_"), toString(fd)], ":")
14681468 let dK = aG(invoke(aD, "saveWarehouse", [dI, Y], nil))
14691469 let ff = eo._6
14701470 let fg = if ((ff > 0))
14711471 then if ((size(en.payments) != 1))
14721472 then throw("exactly 1 payment must be attached")
14731473 else {
14741474 let dl = en.payments[0]
14751475 let dm = dl.amount
14761476 let fh = valueOrErrorMessage(dl.assetId, "WAVES can't be used as payment")
14771477 if ((fh != af))
14781478 then throw("USDT payments only!")
14791479 else if ((dm != ff))
14801480 then throw(("Payment needed is " + toString(ff)))
14811481 else [StringEntry(bf, eW)]
14821482 }
14831483 else if ((ff == 0))
14841484 then if ((size(en.payments) != 0))
14851485 then throw("No payments needed")
14861486 else [StringEntry(bf, eW)]
14871487 else if ((size(en.payments) != 0))
14881488 then throw("No payments needed")
14891489 else [ScriptTransfer(addressFromStringValue(eF), -(ff), af), StringEntry(bf, eW)]
14901490 $Tuple2(fg, $Tuple2(eT, dK))
14911491 }
14921492 }
14931493 }
14941494 }
14951495
14961496
14971497
14981498 @Callable(en)
14991499 func acceptWarehouseOrder (dr,dq,V) = {
15001500 let eq = bG()
15011501 if ((eq == eq))
15021502 then {
15031503 let df = en.originCaller
15041504 let da = toString(df)
15051505 let fi = valueOrErrorMessage(getString(aD, S(da)), "You don't have a duck staked")
15061506 let er = valueOrElse(getString(aD, W(fi)), g)
15071507 let fj = split(value(er), "_")
15081508 if ((fj[L] != "L"))
15091509 then throw((("Duck location type is " + fj[L]) + ", but should be L"))
15101510 else if ((fi != V))
15111511 then throw(((("Your staked duck is " + fi) + ", but passed ") + V))
15121512 else {
15131513 let bE = U(V)
15141514 let es = bD(bE)
15151515 let ds = split(es[H], "_")
15161516 let dt = split(es[I], "_")
15171517 let du = if ((es[J] == ""))
15181518 then nil
15191519 else split_4C(es[J], "_")
15201520 let fk = dp(dq, da, dr, ds, dt, du)
15211521 let fl = fk._1
15221522 let fm = fk._2
15231523 let fn = fk._3
15241524 let fo = fk._4
15251525 let cZ = fk._5
15261526 let dh = fk._6
15271527 let fp = fk._7
15281528 let dj = fk._8
15291529 let fq = fk._9
15301530 let dL = fk._10
15311531 let fr = [fl, cY(cZ, da, 0)]
15321532 let fs = dg(dh, en.payments, dj, 0)
15331533 let ft = makeString_2C([es[G], makeString(fm, "_"), makeString(fn, "_"), makeString_2C(fo, "_")], ":")
15341534 let fu = aG(invoke(aD, "updateBackpack", [V, ft], nil))
15351535 let fv = aJ(invoke(aD, "updateDuckStats", [V, fraction(d, fp, al)], nil))
15361536 $Tuple2((fr ++ fs), $Tuple5(eq, fq, fu, fv, dL))
15371537 }
15381538 }
15391539 else throw("Strict value is not equal to itself.")
15401540 }
15411541
15421542
15431543
15441544 @Callable(en)
15451545 func acceptShopOrderDuckDelivery (fw,dq) = {
15461546 let eq = bG()
15471547 if ((eq == eq))
15481548 then {
15491549 let df = en.originCaller
15501550 let da = toString(df)
15511551 let V = valueOrErrorMessage(getString(aD, S(da)), "You don't have a duck staked")
15521552 let bE = U(V)
15531553 let es = bD(bE)
15541554 let ds = split(es[H], "_")
15551555 let dt = split(es[I], "_")
15561556 let du = if ((es[J] == ""))
15571557 then nil
15581558 else split_4C(es[J], "_")
15591559 let fx = dp(dq, da, fw, ds, dt, du)
15601560 let fl = fx._1
15611561 let fm = fx._2
15621562 let fn = fx._3
15631563 let fo = fx._4
15641564 let cZ = fx._5
15651565 let dh = fx._6
15661566 let fp = fx._7
15671567 let dj = fx._8
15681568 let fq = fx._9
15691569 let dL = fx._10
15701570 let fy = fraction((dh + cZ), aW, ak)
15711571 let fz = max([fy, k])
15721572 let dk = fraction(fz, dh, (dh + cZ))
15731573 let db = (fz - dk)
15741574 let eC = valueOrElse(getInteger(aa), 0)
15751575 let fr = [fl, cY(cZ, da, db)]
15761576 let fs = dg(dh, en.payments, dj, dk)
15771577 let ft = makeString_2C([es[G], makeString(fm, "_"), makeString(fn, "_"), makeString_2C(fo, "_")], ":")
15781578 let fu = aG(invoke(aD, "updateBackpack", [V, ft], nil))
15791579 let fv = aJ(invoke(aD, "updateDuckStats", [V, fraction(d, fp, al)], nil))
15801580 $Tuple2(((fr ++ fs) :+ IntegerEntry(aa, (eC + fz))), $Tuple5(eq, fq, fu, fv, dL))
15811581 }
15821582 else throw("Strict value is not equal to itself.")
15831583 }
15841584
15851585
15861586
15871587 @Callable(en)
15881588 func acceptShopOrderLandDelivery (fw,dq,fA) = {
15891589 let eq = bG()
15901590 if ((eq == eq))
15911591 then {
15921592 let df = en.originCaller
15931593 let da = toString(df)
15941594 let eE = value(assetInfo(fromBase58String(fA)))
15951595 if (!(isDefined(getInteger(aD, P(fA)))))
15961596 then throw((("NFT " + eE.name) + " is not staked"))
15971597 else {
15981598 let eF = valueOrErrorMessage(getString(aD, N(fA)), (("NFT " + eE.name) + " is orphaned"))
15991599 if ((eF != da))
16001600 then throw((e + " is not yours"))
16011601 else {
16021602 let dA = aG(invoke(aD, "getWarehouseREADONLY", [fA], nil))
16031603 let bZ = split_4C(dA, ":")
16041604 let cL = split(bZ[A], "_")
16051605 let cS = split(bZ[B], "_")
16061606 let dZ = if ((bZ[C] == ""))
16071607 then nil
16081608 else split_4C(bZ[C], "_")
16091609 let fB = dp(dq, da, fw, cL, cS, dZ)
16101610 let fl = fB._1
16111611 let fm = fB._2
16121612 let fn = fB._3
16131613 let fo = fB._4
16141614 let cZ = fB._5
16151615 let dh = fB._6
16161616 let fp = fB._7
16171617 let dj = fB._8
16181618 let fq = fB._9
16191619 let dL = fB._10
16201620 let fy = fraction((dh + cZ), aW, ak)
16211621 let fz = max([fy, k])
16221622 let dk = fraction(fz, dh, (dh + cZ))
16231623 let db = (fz - dk)
16241624 let eC = valueOrElse(getInteger(aa), 0)
16251625 let fr = [fl, cY(cZ, da, db)]
16261626 let fs = dg(dh, en.payments, dj, dk)
16271627 let dI = makeString_2C([bZ[z], makeString(fm, "_"), makeString(fn, "_"), makeString(fo, "_"), bZ[D]], ":")
16281628 let dK = aG(invoke(aD, "saveWarehouse", [dI, fA], nil))
16291629 let ex = aJ(invoke(aD, "updateAccStats", [da, fraction(d, fp, al)], nil))
16301630 $Tuple2(((fr ++ fs) :+ IntegerEntry(aa, (eC + fz))), $Tuple5(eq, fq, dK, ex, dL))
16311631 }
16321632 }
16331633 }
16341634 else throw("Strict value is not equal to itself.")
16351635 }
16361636
16371637
16381638
16391639 @Callable(en)
16401640 func sellProductsToES (cN) = {
16411641 let eq = bG()
16421642 if ((eq == eq))
16431643 then if ((size(en.payments) != 0))
16441644 then throw("No payments needed")
16451645 else {
16461646 let V = valueOrErrorMessage(getString(aD, S(toString(en.caller))), "You don't have a duck staked")
16471647 let er = split(valueOrElse(getString(aD, W(V)), g), "_")
16481648 if ((er[L] != "A"))
16491649 then throw(("Duck location type should be Airport, but is " + er[L]))
16501650 else {
16511651 let es = bD(U(V))
16521652 let dZ = if ((es[J] == ""))
16531653 then nil
16541654 else split_4C(es[J], "_")
16551655 let fC = Z()
16561656 let fD = getString(fC)
16571657 let fE = if (isDefined(fD))
16581658 then split_4C(value(fD), "_")
16591659 else nil
16601660 func fF (bI,fG) = {
16611661 let bK = bI._1
16621662 let ec = if ((size(cN) > bK))
16631663 then cN[bK]
16641664 else 0
16651665 if ((0 > ec))
16661666 then throw("Quantity cannot be negative")
16671667 else {
16681668 let ad = split(fG, "_")
16691669 if ((size(ad) != x))
16701670 then throw(("Fatal: unknown recipe: " + fG))
16711671 else {
16721672 let fH = (i * y)
16731673 let fI = if ((size(fE) > bK))
16741674 then parseIntValue(fE[bK])
16751675 else 0
16761676 let fJ = (fH - fI)
16771677 if ((ec > fJ))
16781678 then throw(((("Warehouse can buy only " + toString(fJ)) + " of ") + r[bK]))
16791679 else {
16801680 let eJ = ac(ad)
16811681 let fK = fraction((eJ * j), h, (al * y))
16821682 let fL = if ((size(dZ) > bK))
16831683 then parseIntValue(dZ[bK])
16841684 else 0
16851685 if ((ec > fL))
16861686 then throw(((("You have only " + toString(fL)) + " of ") + r[bK]))
16871687 else $Tuple5((bK + 1), (bI._2 + (fK * ec)), (bI._3 :+ toString((fL - ec))), (bI._4 :+ toString((fI + ec))), (bI._5 + (eJ * ec)))
16881688 }
16891689 }
16901690 }
16911691 }
16921692
16931693 let em = {
16941694 let cm = u
16951695 let cn = size(cm)
16961696 let co = $Tuple5(0, 0, nil, nil, 0)
16971697 func cp (cq,cr) = if ((cr >= cn))
16981698 then cq
16991699 else fF(cq, cm[cr])
17001700
17011701 func cs (cq,cr) = if ((cr >= cn))
17021702 then cq
17031703 else throw("List size exceeds 50")
17041704
17051705 cs(cp(cp(cp(cp(cp(cp(cp(cp(cp(cp(cp(cp(cp(cp(cp(cp(cp(cp(cp(cp(cp(cp(cp(cp(cp(cp(cp(cp(cp(cp(cp(cp(cp(cp(cp(cp(cp(cp(cp(cp(cp(cp(cp(cp(cp(cp(cp(cp(cp(cp(co, 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)
17061706 }
17071707 let ft = makeString_2C([es[G], es[H], es[I], makeString_2C(em._3, "_")], ":")
17081708 let fu = aG(invoke(aD, "updateBackpack", [V, ft], nil))
17091709 let ex = aJ(invoke(aD, "updateDuckStats", [V, fraction(c, em._5, (al * 10))], nil))
17101710 $Tuple2([StringEntry(fC, makeString_2C(em._4, "_")), ScriptTransfer(en.caller, em._2, af)], $Tuple3(fu, eq, ex))
17111711 }
17121712 }
17131713 else throw("Strict value is not equal to itself.")
17141714 }
17151715
17161716
17171717
17181718 @Callable(en)
17191719 func updateEsStorage (fM) = if ((en.caller != aD))
17201720 then throw("Permission denied")
17211721 else $Tuple2([StringEntry(Z(), fM)], fM)
17221722
17231723
17241724
17251725 @Callable(en)
17261726 func updateDeliveryLocked (fN) = if ((en.caller != aD))
17271727 then throw("Permission denied")
17281728 else $Tuple2([IntegerEntry(ab, fN)], fN)
17291729
17301730
17311731
17321732 @Callable(en)
17331733 func sendDeliveryReward (R) = if ((en.caller != aD))
17341734 then throw("Permission denied")
17351735 else {
17361736 let eC = valueOrElse(getInteger(aa), 0)
17371737 let fO = valueOrElse(getInteger(ab), 0)
17381738 let fP = (k * o)
17391739 let fQ = invoke(aF, "sendAcres", [R, fP], nil)
17401740 $Tuple2([IntegerEntry(aa, (eC - k)), IntegerEntry(ab, (fO - k))], fQ)
17411741 }
17421742
17431743

github/deemru/w8io/c3f4982 
167.15 ms