tx · CFCvr7Be2F22wqM8hoaisFpj9fxdubE8Kyu98mxqVrAB

3N8y4wxX3JC4TdrCJBXX16SjWf6X256hrep:  -0.05700000 Waves

2023.10.08 19:54 [2789922] smart account 3N8y4wxX3JC4TdrCJBXX16SjWf6X256hrep > SELF 0.00000000 Waves

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

github/deemru/w8io/169f3d6 
161.25 ms