tx · 6Ecs2wULeZs81TzNNQfr3ZVrbyYB4eziHytn8vib6ss2 3NDCyBG5q85JuaRiigUeEtainyjCQT3XpZm: -0.09500000 Waves 2023.12.29 23:12 [2908526] smart account 3NDCyBG5q85JuaRiigUeEtainyjCQT3XpZm > SELF 0.00000000 Waves
{ "type": 13, "id": "6Ecs2wULeZs81TzNNQfr3ZVrbyYB4eziHytn8vib6ss2", "fee": 9500000, "feeAssetId": null, "timestamp": 1703880790712, "version": 2, "chainId": 84, "sender": "3NDCyBG5q85JuaRiigUeEtainyjCQT3XpZm", "senderPublicKey": "EVooykMNV691Venwp1dHUTBd7KWequzUcda57Wd3LQEX", "proofs": [ "4f7DKz1rkqKXEwTaprpeewMxbRZNdNaBjyxEVn9FPapXXTSepnJ1sZkUPSVTTZLin9uc8YLgSZh6m9R392vEjrBg" ], "script": "base64:BgLIAQgCEgMKAQgSBAoCCAESAwoBBBIAEgMKAQgSABIDCgEIEgQKAgEIEgQKAgEIEgQKAgICEgUKAwEBARIAEgQKAggIEgASAwoBARIAEgQKAgICEgASAwoBCBIECgIICBIDCgEYEgQKAggIEgQKAggIEgUKAwgICBIECgIICBIHCgUBAQEBARIDCgEBEgUKAwEBCBIDCgEIEgMKAQgSABIECgIIARIECgIIARIDCgEIEgMKAQgSABIAEgMKAQgSAwoBCBIECgICAhIAmAIACURBWU1JTExJUwCAuJkpARRrZXlMYXN0QXJiVGltZUJ5VXNlcgEEYWRkcgkArAICAhBsYXN0QXJiVGltZVVzZXJfBQRhZGRyARprZXlBY3Jlc1N0YWtlZEFtb3VudEJ5VXNlcgEEYWRkcgkArAICAhhhY3Jlc1N0YWtlZEFtb3VudEJ5VXNlcl8FBGFkZHIABlNDQUxFOACAwtcvAAx4cExldmVsU2NhbGUAgBkAD3hwTGV2ZWxSZWNpcFBvdwCgHwASbnVtUG9pbnRzT25MZXZlbFVwAAMADHJlcXVpcmVtZW50cwkAzAgCAghTdHJlbmd0aAkAzAgCAghBY2N1cmFjeQkAzAgCAglJbnRlbGxlY3QJAMwIAgIJRW5kdXJhbmNlCQDMCAICCURleHRlcml0eQkAzAgCAgVMZXZlbAkAzAgCAgZIZWFsdGgFA25pbAAMY2hhclN0cmVuZ3RoAAAADGNoYXJBY2N1cmFjeQABAA1jaGFySW50ZWxsZWN0AAIADWNoYXJFbmR1cmFuY2UAAwANY2hhckRleHRlcml0eQAEAAtzZWdCYWNrcGFjawAAAAtOVU1TRUdNRU5UUwAGAApOVU1NQUlOQVVYAAIACE1BWFNMT1RTAAIADU1BWFBST0RJTlNMT1QAHgENa2V5RHVja0hlYWx0aAELZHVja0Fzc2V0SWQJAKwCAgILZHVja0hlYWx0aF8FC2R1Y2tBc3NldElkAQxrZXlEdWNrQ2hhcnMBC2R1Y2tBc3NldElkCQCsAgICCmR1Y2tDaGFyc18FC2R1Y2tBc3NldElkAQlrZXlEdWNrWFABC2R1Y2tBc3NldElkCQCsAgICB2R1Y2tYUF8FC2R1Y2tBc3NldElkAQxrZXlEdWNrTGV2ZWwBC2R1Y2tBc3NldElkCQCsAgICCmR1Y2tMZXZlbF8FC2R1Y2tBc3NldElkARFrZXlEdWNrRnJlZVBvaW50cwELZHVja0Fzc2V0SWQJAKwCAgIPZHVja0ZyZWVQb2ludHNfBQtkdWNrQXNzZXRJZAEQa2V5RHVja0VxdWlwbWVudAELZHVja0Fzc2V0SWQJAKwCAgIOZHVja0VxdWlwbWVudF8FC2R1Y2tBc3NldElkAQlrZXlVc2VyWFABBGFkZHIJAKwCAgIHdXNlclhQXwUEYWRkcgEMa2V5VXNlckxldmVsAQRhZGRyCQCsAgICCnVzZXJMZXZlbF8FBGFkZHIBEWtleVVzZXJGcmVlUG9pbnRzAQRhZGRyCQCsAgICD3VzZXJGcmVlUG9pbnRzXwUEYWRkcgEOa2V5U2F2ZWRIZWFsdGgBC2R1Y2tBc3NldElkCQCsAgICDHNhdmVkSGVhbHRoXwULZHVja0Fzc2V0SWQBEGtleVNhdmVkTG9jYXRpb24BC2R1Y2tBc3NldElkCQCsAgICDnNhdmVkTG9jYXRpb25fBQtkdWNrQXNzZXRJZAEMa2V5RHVja0J1ZmZzAQtkdWNrQXNzZXRJZAkArAICAgpkdWNrQnVmZnNfBQtkdWNrQXNzZXRJZAEYa2V5TGFzdFJvYmJlcnlUaW1lQnlEdWNrAQtkdWNrQXNzZXRJZAkArAICAhBsYXN0Um9iYmVyeVRpbWVfBQtkdWNrQXNzZXRJZAETa2V5RHVja1JvYmJlcnlDb3VudAELZHVja0Fzc2V0SWQJAKwCAgIYdG90YWxSb2JiZXJ5Q291bnRCeUR1Y2tfBQtkdWNrQXNzZXRJZAETa2V5VXNlclJvYmJlcnlDb3VudAEEYWRkcgkArAICAhF1c2VyUm9iYmVyeUNvdW50XwUEYWRkcgEVa2V5VXNlckxhc3RSb2JiZXJ5RGF5AQRhZGRyCQCsAgICE3VzZXJMYXN0Um9iYmVyeURheV8FBGFkZHIBFGtleUR1Y2tEZWxpdmVyeUNvdW50AQtkdWNrQXNzZXRJZAkArAICAhl0b3RhbERlbGl2ZXJ5Q291bnRCeUR1Y2tfBQtkdWNrQXNzZXRJZAEUa2V5VXNlckRlbGl2ZXJ5Q291bnQBBGFkZHIJAKwCAgISdXNlckRlbGl2ZXJ5Q291bnRfBQRhZGRyARZrZXlVc2VyTGFzdERlbGl2ZXJ5RGF5AQRhZGRyCQCsAgICFHVzZXJMYXN0RGVsaXZlcnlEYXlfBQRhZGRyAAd4cENsYWltAJBOAA94cFN1Y2Nlc3NGbGlnaHQAkE4ADHhwRmFpbEZsaWdodADQDwAMeHBTdWNjZXNzUm9iAJBOAAl4cEZhaWxSb2IA0A8ACHhwQ2FsbEVTAKCNBgAMeHBDdXN0b21OYW1lAMCEPQAKeHBOZXdTTGFuZADAlrECAA54cFVwZ3JhZGVJbmZyYQCQTgAHeHBNZXJnZQDAhD0ACXhwT25ib2FyZADAhD0ABnhwSGVhbACQTgEJbGV2ZWxCeVhQAQJ4cAkAawMFDHhwTGV2ZWxTY2FsZQkAbAYFAnhwAAQFD3hwTGV2ZWxSZWNpcFBvdwAEAAQFBERPV04FBlNDQUxFOAEJbWF4SGVhbHRoAQVsZXZlbAkAZAIAZAUFbGV2ZWwBB2xldmVsVXACCWN1cnJMZXZlbAVuZXdYUAQIbmV3TGV2ZWwJAQlsZXZlbEJ5WFABBQVuZXdYUAkAzAgCBQhuZXdMZXZlbAkAzAgCCQBoAgUSbnVtUG9pbnRzT25MZXZlbFVwCQBlAgUIbmV3TGV2ZWwFCWN1cnJMZXZlbAUDbmlsAQxnZXREdWNrU3RhdHMED3N0YWtpbmdDb250cmFjdAtkdWNrQXNzZXRJZApidWZmRWZmZWN0CmZvcmNlQnVmZnMEBWNoYXJzCQC1CQIJAQt2YWx1ZU9yRWxzZQIJAJ0IAgUPc3Rha2luZ0NvbnRyYWN0CQEMa2V5RHVja0NoYXJzAQULZHVja0Fzc2V0SWQCCTBfMF8wXzBfMAIBXwQDbHZsCQELdmFsdWVPckVsc2UCCQCaCAIFD3N0YWtpbmdDb250cmFjdAkBDGtleUR1Y2tMZXZlbAEFC2R1Y2tBc3NldElkAAAEBmhlYWx0aAkBC3ZhbHVlT3JFbHNlAgkAmggCBQ9zdGFraW5nQ29udHJhY3QJAQ1rZXlEdWNrSGVhbHRoAQULZHVja0Fzc2V0SWQJAQltYXhIZWFsdGgBBQNsdmwECnN0YXRlQnVmZnMJALUJAgkBC3ZhbHVlT3JFbHNlAgkAnQgCBQ9zdGFraW5nQ29udHJhY3QJAQxrZXlEdWNrQnVmZnMBBQtkdWNrQXNzZXRJZAIJMF8wXzBfMF8wAgFfCQDOCAIJAMwIAgkBDXBhcnNlSW50VmFsdWUBCQCRAwIFBWNoYXJzBQxjaGFyU3RyZW5ndGgJAMwIAgkBDXBhcnNlSW50VmFsdWUBCQCRAwIFBWNoYXJzBQxjaGFyQWNjdXJhY3kJAMwIAgkBDXBhcnNlSW50VmFsdWUBCQCRAwIFBWNoYXJzBQ1jaGFySW50ZWxsZWN0CQDMCAIJAQ1wYXJzZUludFZhbHVlAQkAkQMCBQVjaGFycwUNY2hhckVuZHVyYW5jZQkAzAgCCQENcGFyc2VJbnRWYWx1ZQEJAJEDAgUFY2hhcnMFDWNoYXJEZXh0ZXJpdHkJAMwIAgUDbHZsCQDMCAIFBmhlYWx0aAUDbmlsAwUKZm9yY2VCdWZmcwkAzAgCBQpidWZmRWZmZWN0CQDMCAIFCmJ1ZmZFZmZlY3QJAMwIAgUKYnVmZkVmZmVjdAkAzAgCBQpidWZmRWZmZWN0CQDMCAIFCmJ1ZmZFZmZlY3QFA25pbAkAzAgCCQENcGFyc2VJbnRWYWx1ZQEJAJEDAgUKc3RhdGVCdWZmcwUMY2hhclN0cmVuZ3RoCQDMCAIJAQ1wYXJzZUludFZhbHVlAQkAkQMCBQpzdGF0ZUJ1ZmZzBQxjaGFyQWNjdXJhY3kJAMwIAgkBDXBhcnNlSW50VmFsdWUBCQCRAwIFCnN0YXRlQnVmZnMFDWNoYXJJbnRlbGxlY3QJAMwIAgkBDXBhcnNlSW50VmFsdWUBCQCRAwIFCnN0YXRlQnVmZnMFDWNoYXJFbmR1cmFuY2UJAMwIAgkBDXBhcnNlSW50VmFsdWUBCQCRAwIFCnN0YXRlQnVmZnMFDWNoYXJEZXh0ZXJpdHkFA25pbAAKTEFORFBSRUZJWAIETEFORAAKRFVDS1BSRUZJWAIERFVDSwALUk9CT19QUkVGSVgCBFJPQk8ACkFSVFBSRVNBTEUCB1BSRVNBTEUABk5VTVJFUwAGABhNQVhfTEFORFNfU1RBS0VEX0JZX1VTRVIAGQAPREFJTFlSRVNCWVBJRUNFAID40gEADFdITVVMVElQTElFUgCAyK+gJQAPREVGQVVMVExPQ0FUSU9OAg9BZnJpY2FfRl9BZnJpY2EAEFJFU09VUkNFUFJJQ0VNSU4A1bUCAApFU1NFTExDT0VGAAoAFU1JTl9VU0RUX0ZFRV9ERUxJVkVSWQDQhgMAEk1JTl9XTEdPTERfUk9CQkVSWQCAwtcvABZBTExPV0VEX0ZSRUVfUk9CQkVSSUVTAAAAGUFDUkVTX0ZPUl9ST0JCRVJZX0FUVEVNUFQAgISvXwAXQUxMT1dFRF9GUkVFX0RFTElWRVJJRVMAAAAaQUNSRVNfRk9SX0RFTElWRVJZX0FUVEVNUFQAgISvXwAJcHJvZFR5cGVzCQDMCAICEEZpcnN0IEFpZCBLaXQgTDEJAMwIAgIQRmlyc3QgQWlkIEtpdCBMMgkAzAgCAhBGaXJzdCBBaWQgS2l0IEwzCQDMCAICC0JhY2twYWNrIEwxCQDMCAICC0JhY2twYWNrIEwyCQDMCAICC0JhY2twYWNrIEwzCQDMCAICDkZvb2QgUmF0aW9uIEwxCQDMCAICDkZvb2QgUmF0aW9uIEwyCQDMCAICDkZvb2QgUmF0aW9uIEwzCQDMCAICC0pldCBQYWNrIEwxCQDMCAICC0pldCBQYWNrIEwyCQDMCAICC0pldCBQYWNrIEwzCQDMCAICCVNoaWVsZCBMMQkAzAgCAglTaGllbGQgTDIJAMwIAgIJU2hpZWxkIEwzCQDMCAICB01pbmUgTDEJAMwIAgIHTWluZSBMMgkAzAgCAgdNaW5lIEwzCQDMCAICB1RyYXAgTDEJAMwIAgIHVHJhcCBMMgkAzAgCAgdUcmFwIEwzCQDMCAICC0Jvb20tRG9nIEwxCQDMCAICC0Jvb20tRG9nIEwyCQDMCAICC0Jvb20tRG9nIEwzBQNuaWwACmNvbnRpbmVudHMJAMwIAgIIQW1lcmljYXMJAMwIAgIGRXVyb3BlCQDMCAICBEFzaWEJAMwIAgIGQWZyaWNhCQDMCAICB09jZWFuaWEFA25pbAAJQ09FRkYyTUFUAICt4gQAEHByb2R1Y3Rpb25NYXRyaXgJAMwIAgIlOF84XzhfMTdfMTdfNDJfMTJfMF8zMF8wLDAsMCwwLDAsMCwwXwkAzAgCAiU4XzhfOF8xN18xN180Ml8yNF8wXzYwXzAsMCw1LDIsMCwwLDBfCQDMCAICJzhfOF84XzE3XzE3XzQyXzM2XzBfMTIwXzAsMCwxMCw0LDAsMCwwXwkAzAgCAik4XzE5XzE5XzhfMjdfMTlfMjZfMV8yMF8wLDAsMCwwLDAsMCwwXzAwMQkAzAgCAik4XzE5XzE5XzhfMjdfMTlfNTJfMV80MF8wLDAsMCwwLDAsMCwwXzAwMQkAzAgCAik4XzE5XzE5XzhfMjdfMTlfNzhfMV84MF8wLDAsMCwwLDAsMCwwXzAwMQkAzAgCAiU4XzhfOF84XzhfNjBfMTNfMl8yXzAsMCwwLDAsMCwwLDBfMDExCQDMCAICJThfOF84XzhfOF82MF8yNl8yXzRfMCwwLDAsMCwwLDAsMF8wMTEJAMwIAgIlOF84XzhfOF84XzYwXzM5XzJfOF8wLDAsMCwwLDAsMCwwXzAxMQkAzAgCAikzMF8zMF8zXzE3XzE3XzNfMzBfM18zMF8wLDAsMCwwLDAsMCwwXzExMQkAzAgCAikzMF8zMF8zXzE3XzE3XzNfNjBfM181MF8wLDAsMCwwLDAsMCwwXzExMQkAzAgCAikzMF8zMF8zXzE3XzE3XzNfOTBfM183MF8wLDAsMCwwLDAsMCwwXzExMQkAzAgCAisxOF8xOF8xMF8xOF8xOF8xOF8xMV80XzEwXzAsMCwwLDAsMCwwLDBfMjAxCQDMCAICKzE4XzE4XzEwXzE4XzE4XzE4XzIyXzRfMjBfMCwwLDAsMCwwLDAsMF8yMDEJAMwIAgIrMThfMThfMTBfMThfMThfMThfMzNfNF8zMF8wLDAsMCwwLDAsMCwwXzIwMQkAzAgCAio0XzEzXzIyXzRfMzVfMjJfMjNfMF81MCwxLDBfMCwwLDAsMCwwLDAsMF8JAMwIAgIqNF8xM18yMl80XzM1XzIyXzQ2XzBfNTAsMSwxXzAsMiw1LDAsMCwwLDBfCQDMCAICKzRfMTNfMjJfNF8zNV8yMl82OV8wXzUwLDIsMV8wLDUsMTAsMCwwLDAsMF8JAMwIAgIqNV8yNV80MF81XzEwXzE1XzIwXzFfMzAsMSwxXzAsMCwwLDAsMCwwLDBfCQDMCAICKjVfMjVfNDBfNV8xMF8xNV80MF8xXzMwLDEsMl8yLDEsMywwLDAsMCwwXwkAzAgCAio1XzI1XzQwXzVfMTBfMTVfNjBfMV8zMCwxLDNfNSwyLDgsMCwwLDAsMF8JAMwIAgInMjNfMjNfNV8yMF8yM182XzM1XzJfMTAwXzAsMCwwLDAsMCwwLDBfCQDMCAICJzIzXzIzXzVfMjBfMjNfNl83MF8yXzE1MF8wLDAsMCwwLDAsMCwwXwkAzAgCAigyM18yM181XzIwXzIzXzZfMTA1XzJfMjAwXzAsMCwwLDAsMCwwLDBfBQNuaWwACXJJZHhDb2VmZgAGAApySWR4RWZmZWN0AAgAEHJJZHhSZXF1aXJlbWVudHMACQAJcklkeFNsb3RzAAoADlBST0RVQ1RQS0dTSVpFAAoAC3doSWR4TGV2ZWxzAAAACHdoSWR4UmVzAAEACHdoSWR4TWF0AAIACXdoSWR4UHJvZAADAAl3aElkeExPRlQABAAJdm9sTG9ja2VkAAAAC3ZvbE9jY3VwaWVkAAEAB3ZvbEZyZWUAAgAIdm9sVG90YWwAAwAKYnBJZHhMZXZlbAAAAAhicElkeFJlcwABAAhicElkeE1hdAACAAlicElkeFByb2QAAwAPbG9jSWR4Q29udGluZW50AAAACmxvY0lkeFR5cGUAAQAIbG9jSWR4SWQAAgEVa2V5TGFuZEFzc2V0SWRUb093bmVyAQdhc3NldElkCQCsAgICA25vXwUHYXNzZXRJZAEaa2V5TGFuZEFzc2V0SWRUb0N1c3RvbU5hbWUBB2Fzc2V0SWQJAKwCAgIFbGNuYV8FB2Fzc2V0SWQBFmtleVN0YWtlZFRpbWVCeUFzc2V0SWQBB2Fzc2V0SWQJAKwCAgIDc3RfBQdhc3NldElkASBrZXlMYW5kQXJ0U3RhdHVzQnlUeXBlQW5kQXNzZXRJZAIEdHlwZQdhc3NldElkCQC5CQIJAMwIAgIDbGFzCQDMCAIFBHR5cGUJAMwIAgUHYXNzZXRJZAUDbmlsAgFfASJrZXlTdGFrZWRUaW1lQnlUeXBlQXNzZXRJZEFuZE93bmVyAwduZnRUeXBlB2Fzc2V0SWQJb3duZXJBZGRyCQCsAgIJAKwCAgkArAICCQCsAgIJAKwCAgIGc3R0YW9fBQduZnRUeXBlAgFfBQdhc3NldElkAgFfBQlvd25lckFkZHIBEmtleVdhcmVob3VzZUJ5TGFuZAELbGFuZEFzc2V0SWQJAKwCAgIDd2hfBQtsYW5kQXNzZXRJZAEWa2V5SW5mcmFMZXZlbEJ5QXNzZXRJZAEHYXNzZXRJZAkArAICAgtpbmZyYUxldmVsXwUHYXNzZXRJZAEaa2V5RHVja0Fzc2V0SWRUb0N1c3RvbU5hbWUBB2Fzc2V0SWQJAKwCAgIYZHVja0N1c3RvbU5hbWVCeUFzc2V0SWRfBQdhc3NldElkARZrZXlBZGRyZXNzVG9DdXN0b21OYW1lAQRhZGRyCQCsAgICGGFjY291bnRDdXN0b21OYW1lQnlBZGRyXwUEYWRkcgEPa2V5QWRkcmVzc1JlZkJ5AQRhZGRyCQCsAgICCWFjY1JlZkJ5XwUEYWRkcgEca2V5T25ib2FyZEFydEFjdGl2YXRlZE9uRHVjawELZHVja0Fzc2V0SWQJAKwCAgIab25ib2FyZEFydEFjdGl2YXRlZE9uRHVja18FC2R1Y2tBc3NldElkARxrZXlPbmJvYXJkQXJ0RHVja0FjdGl2YXRlZEJ5AQRhZGRyCQCsAgICGm9uYm9hcmRBcnRBY3RpdmF0ZWREdWNrQnlfBQRhZGRyARNrZXlBZGRyZXNzUmVmZXJyYWxzAQRhZGRyCQCsAgICDWFjY1JlZmVycmFsc18FBGFkZHIBEGtleUR1Y2tJZFRvT3duZXIBB2Fzc2V0SWQJAKwCAgIKZHVja093bmVyXwUHYXNzZXRJZAEUa2V5U3Rha2VkRHVja0J5T3duZXIBCW93bmVyQWRkcgkArAICAhJzdGFrZWREdWNrQnlPd25lcl8FCW93bmVyQWRkcgERa2V5QmFja3BhY2tCeUR1Y2sBC2R1Y2tBc3NldElkCQCsAgICCWJhY2tQYWNrXwULZHVja0Fzc2V0SWQBD2tleUR1Y2tMb2NhdGlvbgELZHVja0Fzc2V0SWQJAKwCAgINZHVja0xvY2F0aW9uXwULZHVja0Fzc2V0SWQBFWtleVVzZXJHd2xSZWxlYXNlVGltZQEIdXNlckFkZHIJAKwCAgIaJXMlc19fdXNlckd3bFJlbGVhc2VUaW1lX18FCHVzZXJBZGRyAQ5rZXlFc1dhcmVob3VzZQACGmVtZXJnZW5jeVdhcmVob3VzZVByb2R1Y3RzAA9kZWxpdmVyeUZ1bmRLZXkCDGRlbGl2ZXJ5RnVuZAANbGFzdFRvdXJJZEtleQIOJXNfX2xhc3RUb3VySWQBFWtleVRvdXJTdGF0aWNEYXRhQnlJZAEDdElkCQCsAgICFiVzJWRfX3RvdXJTdGF0aWNEYXRhX18JAKQDAQUDdElkARZrZXlUb3VyRHluYW1pY0RhdGFCeUlkAQN0SWQJAKwCAgIXJXMlZF9fdG91ckR5bmFtaWNEYXRhX18JAKQDAQUDdElkARprZXlCZXN0UmVzdWx0QnlUb3VyQW5kRHVjawIDdElkC2R1Y2tBc3NldElkCQC5CQIJAMwIAgIfJXMlZCVzX19iZXN0UmVzdWx0QnlUb3VyQW5kRHVjawkAzAgCCQCkAwEFA3RJZAkAzAgCBQtkdWNrQXNzZXRJZAUDbmlsAgJfXwAJaWR4U3RhdGljAAAACmlkeER5bmFtaWMAAQAKdFN0YXRpY0VuZAAGAA50RHluYW1pY1N0YXR1cwABAQtnZXRUb3VyRGF0YQIMdG91ckNvbnRyYWN0A3RJZAQGc3RhdGljCQC1CQIJARN2YWx1ZU9yRXJyb3JNZXNzYWdlAgkAnQgCBQx0b3VyQ29udHJhY3QJARVrZXlUb3VyU3RhdGljRGF0YUJ5SWQBBQN0SWQJAKwCAgkArAICAhlFcnJvciByZWFkaW5nIHRvdXJuYW1lbnQgCQCkAwEFA3RJZAIFIGRhdGECAl9fBAdkeW5hbWljCQC8CQIJARN2YWx1ZU9yRXJyb3JNZXNzYWdlAgkAnQgCBQx0b3VyQ29udHJhY3QJARZrZXlUb3VyRHluYW1pY0RhdGFCeUlkAQUDdElkCQCsAgIJAKwCAgIZRXJyb3IgcmVhZGluZyB0b3VybmFtZW50IAkApAMBBQN0SWQCBSBkYXRhAgJfXwkAzAgCBQZzdGF0aWMJAMwIAgUHZHluYW1pYwUDbmlsAQ5pc0luVG91cm5hbWVudAIMdG91ckNvbnRyYWN0CGxvY2F0aW9uBAZsYXN0SWQJAQt2YWx1ZU9yRWxzZQIJAJoIAgUMdG91ckNvbnRyYWN0BQ1sYXN0VG91cklkS2V5AAAEA2xvYwkAtQkCBQhsb2NhdGlvbgIBXwQDbm93CAUJbGFzdEJsb2NrCXRpbWVzdGFtcAQFdERhdGEJAQtnZXRUb3VyRGF0YQIFDHRvdXJDb250cmFjdAUGbGFzdElkBAZzdGF0aWMJAJEDAgUFdERhdGEFCWlkeFN0YXRpYwQHZHluYW1pYwkAkQMCBQV0RGF0YQUKaWR4RHluYW1pYwMDAwkAAAIJAJEDAgUDbG9jBQpsb2NJZHhUeXBlAgFUCQAAAgkBDXBhcnNlSW50VmFsdWUBCQCRAwIFA2xvYwUPbG9jSWR4Q29udGluZW50BQZsYXN0SWQHCQAAAgkAkQMCBQdkeW5hbWljBQ50RHluYW1pY1N0YXR1cwIKSU5QUk9HUkVTUwcJAGYCCQENcGFyc2VJbnRWYWx1ZQEJAJEDAgUGc3RhdGljBQp0U3RhdGljRW5kBQNub3cHAQlvbk1pc3Npb24CDHRvdXJDb250cmFjdAhsb2NhdGlvbgQGbGFzdElkCQELdmFsdWVPckVsc2UCCQCaCAIFDHRvdXJDb250cmFjdAUNbGFzdFRvdXJJZEtleQAABANsb2MJALUJAgUIbG9jYXRpb24CAV8EA25vdwgFCWxhc3RCbG9jawl0aW1lc3RhbXAEBXREYXRhCQELZ2V0VG91ckRhdGECBQx0b3VyQ29udHJhY3QFBmxhc3RJZAQGc3RhdGljCQCRAwIFBXREYXRhBQlpZHhTdGF0aWMEB2R5bmFtaWMJAJEDAgUFdERhdGEFCmlkeER5bmFtaWMEB2xvY1R5cGUJAJEDAgUDbG9jBQpsb2NJZHhUeXBlAwMDCQAAAgkAkQMCBQNsb2MFCmxvY0lkeFR5cGUCAVQJAAACCQENcGFyc2VJbnRWYWx1ZQEJAJEDAgUDbG9jBQ9sb2NJZHhDb250aW5lbnQFBmxhc3RJZAcJAAACCQCRAwIFB2R5bmFtaWMFDnREeW5hbWljU3RhdHVzAgpJTlBST0dSRVNTBwkAZgIJAQ1wYXJzZUludFZhbHVlAQkAkQMCBQZzdGF0aWMFCnRTdGF0aWNFbmQFA25vdwcBEmdldFJlY2lwZU1hdGVyaWFscwEGcmVjaXBlCQBoAgkBDXBhcnNlSW50VmFsdWUBCQCRAwIFBnJlY2lwZQUJcklkeENvZWZmBQlDT0VGRjJNQVQBDGNoZWF0QXR0ZW1wdAMGb2xkTG9jBm5ld0xvYwljaGVhdENhc2UJAAIBCQCsAgIJAKwCAgkArAICCQCsAgIJAKwCAgIWQ2hlYXQgYXR0ZW1wdDogb2xkTG9jPQUGb2xkTG9jAgksIG5ld0xvYz0FBm5ld0xvYwIHLCBjYXNlPQkApAMBBQljaGVhdENhc2UAFktTX1NFUEFSQVRFX1BVQkxJQ19LRVkHABhLU19BTExPV19CSUdfSU5GUkFfTUVSR0UHABNLU19BTExPV19ST0JPX0RVQ0tTBwAKREFZX01JTExJUwCAuJkpAAVjaGFpbgkAyQECCQDKAQIIBQR0aGlzBWJ5dGVzAAEAAQADcHViBAckbWF0Y2gwBQVjaGFpbgMJAAACAQFXBQckbWF0Y2gwAwUWS1NfU0VQQVJBVEVfUFVCTElDX0tFWQEgqxdXjxVn41lUQbDWcutmm8Sj02Ze1ZmGUN+YNx+yCQgBIE9T4ho/VKjWnVJOEx1GJ1W9s1PzLHvJVFSw/0PBtBQoAwkAAAIBAVQFByRtYXRjaDABIE9T4ho/VKjWnVJOEx1GJ1W9s1PzLHvJVFSw/0PBtBQoCQACAQINVW5rbm93biBjaGFpbgALdXNkdEFzc2V0SWQEByRtYXRjaDAFBWNoYWluAwkAAAIBAVcFByRtYXRjaDABIITaerIIAz9O0bvKju6Lk7zJgt0LXfoHlqjUI/moD/+5AwkAAAIBAVQFByRtYXRjaDABIFWx2J9yh4Lv5eNbjawFq2XemkOhLxa7BfMat4el8cUYCQACAQINVW5rbm93biBjaGFpbgAVZGVmYXVsdFJlc3RBZGRyZXNzU3RyBAckbWF0Y2gwBQVjaGFpbgMJAAACAQFXBQckbWF0Y2gwAiMzUFFDdXZGYnZoNExrUFVucm5VMXozam5iQTFwOW0zV05odgMJAAACAQFUBQckbWF0Y2gwAiMzTXVta0dHenRDS0FYcFdEcXhrZGRvZnFYU1VicVFrdlNKeQkAAgECDVVua25vd24gY2hhaW4AEUluZnJhVXBncmFkZUNvc3RTBAckbWF0Y2gwBQVjaGFpbgMJAAACAQFXBQckbWF0Y2gwAIDIr6AlAwkAAAIBAVQFByRtYXRjaDAAgMLXLwkAAgECDVVua25vd24gY2hhaW4ADmFyYml0cmFnZURlbGF5BAckbWF0Y2gwBQVjaGFpbgMJAAACAQFXBQckbWF0Y2gwBQpEQVlfTUlMTElTAwkAAAIBAVQFByRtYXRjaDAA4NQDCQACAQINVW5rbm93biBjaGFpbgADU0VQAgJfXwAFTVVMVDYAwIQ9AAVNVUxUOACAwtcvAAVTU0laRQAZAAVNU0laRQBkAAVMU0laRQDhAQAGWExTSVpFAJADAAdYWExTSVpFAPEEAAVJVEVSNgkAzAgCAAAJAMwIAgABCQDMCAIAAgkAzAgCAAMJAMwIAgAECQDMCAIABQUDbmlsAQ9nZXRTdHJpbmdPckZhaWwCB2FkZHJlc3MDa2V5CQETdmFsdWVPckVycm9yTWVzc2FnZQIJAJ0IAgUHYWRkcmVzcwUDa2V5CQC5CQIJAMwIAgIKbWFuZGF0b3J5IAkAzAgCCQClCAEFB2FkZHJlc3MJAMwIAgIBLgkAzAgCBQNrZXkJAMwIAgIPIGlzIG5vdCBkZWZpbmVkBQNuaWwCAAARSWR4Q2ZnU3Rha2luZ0RhcHAAAQARSWR4Q2ZnRWNvbm9teURhcHAAAgAUSWR4Q2ZnR292ZXJuYW5jZURhcHAAAwANSWR4Q2ZnV2xnRGFwcAAEABRJZHhDZmdUb3VybmFtZW50RGFwcAAHAA9JZHhDZmdBY3Jlc0RhcHAACAEKa2V5UmVzdENmZwACDiVzX19yZXN0Q29uZmlnAQ5rZXlSZXN0QWRkcmVzcwACDCVzX19yZXN0QWRkcgERcmVhZFJlc3RDZmdPckZhaWwBBHJlc3QJALwJAgkBD2dldFN0cmluZ09yRmFpbAIFBHJlc3QJAQprZXlSZXN0Q2ZnAAUDU0VQARhnZXRDb250cmFjdEFkZHJlc3NPckZhaWwCB3Jlc3RDZmcDaWR4CQETdmFsdWVPckVycm9yTWVzc2FnZQIJAKYIAQkAkQMCBQdyZXN0Q2ZnBQNpZHgJAKwCAgIqUmVzdCBjZmcgZG9lc24ndCBjb250YWluIGFkZHJlc3MgYXQgaW5kZXggCQCkAwEFA2lkeAAMcmVzdENvbnRyYWN0CQERQGV4dHJOYXRpdmUoMTA2MikBCQELdmFsdWVPckVsc2UCCQCdCAIFBHRoaXMJAQ5rZXlSZXN0QWRkcmVzcwAFFWRlZmF1bHRSZXN0QWRkcmVzc1N0cgAHcmVzdENmZwkBEXJlYWRSZXN0Q2ZnT3JGYWlsAQUMcmVzdENvbnRyYWN0AA9zdGFraW5nQ29udHJhY3QJARhnZXRDb250cmFjdEFkZHJlc3NPckZhaWwCBQdyZXN0Q2ZnBRFJZHhDZmdTdGFraW5nRGFwcAAPZWNvbm9teUNvbnRyYWN0CQEYZ2V0Q29udHJhY3RBZGRyZXNzT3JGYWlsAgUHcmVzdENmZwURSWR4Q2ZnRWNvbm9teURhcHAAC2dvdkNvbnRyYWN0CQEYZ2V0Q29udHJhY3RBZGRyZXNzT3JGYWlsAgUHcmVzdENmZwUUSWR4Q2ZnR292ZXJuYW5jZURhcHAAC3dsZ0NvbnRyYWN0CQEYZ2V0Q29udHJhY3RBZGRyZXNzT3JGYWlsAgUHcmVzdENmZwUNSWR4Q2ZnV2xnRGFwcAASdG91cm5hbWVudENvbnRyYWN0CQEYZ2V0Q29udHJhY3RBZGRyZXNzT3JGYWlsAgUHcmVzdENmZwUUSWR4Q2ZnVG91cm5hbWVudERhcHAADWFjcmVzQ29udHJhY3QJARhnZXRDb250cmFjdEFkZHJlc3NPckZhaWwCBQdyZXN0Q2ZnBQ9JZHhDZmdBY3Jlc0RhcHAACnJlY0xhbmROdW0AAAALcmVjTGFuZFNpemUAAQALcmVjVGVycmFpbnMAAgAMcmVjQ29udGluZW50AAMADXdsZ0Fzc2V0SWRLZXkCC3dsZ19hc3NldElkAAp3bGdBc3NldElkCQETdmFsdWVPckVycm9yTWVzc2FnZQIJAJwIAgULd2xnQ29udHJhY3QFDXdsZ0Fzc2V0SWRLZXkCGFdMR09MRCBpcyBub3QgaXNzdWVkIHlldAAPYWNyZXNBc3NldElkS2V5AgxhY3Jlc0Fzc2V0SWQADGFjcmVzQXNzZXRJZAkBE3ZhbHVlT3JFcnJvck1lc3NhZ2UCCQCcCAIFDWFjcmVzQ29udHJhY3QFD2FjcmVzQXNzZXRJZEtleQIXQUNSRVMgaXMgbm90IGlzc3VlZCB5ZXQAC3JhbmRvbURlbGF5AAIBCWtleUNvbW1pdAEHYWRkcmVzcwkArAICAg9maW5pc2hCbG9ja0Zvcl8FB2FkZHJlc3MBEWtleVJlc1Byb3BvcnRpb25zAAITcmVzVHlwZXNQcm9wb3J0aW9ucwEWa2V5UmVzVHlwZXNCeUNvbnRpbmVudAEJY29udGluZW50CQCsAgICFHJlc1R5cGVzQnlDb250aW5lbnRfBQljb250aW5lbnQBFWtleVN0YWtlZExhbmRzQnlPd25lcgEJb3duZXJBZGRyCQCsAgICE3N0YWtlZExhbmRzQnlPd25lcl8FCW93bmVyQWRkcgEWa2V5U3Rha2VkUGllY2VzQnlPd25lcgEJb3duZXJBZGRyCQCsAgICFHN0YWtlZFBpZWNlc0J5T3duZXJfBQlvd25lckFkZHIBCGFzU3RyaW5nAQF2BAckbWF0Y2gwBQF2AwkAAQIFByRtYXRjaDACBlN0cmluZwQBcwUHJG1hdGNoMAUBcwkAAgECGGZhaWwgdG8gY2FzdCBpbnRvIFN0cmluZwEFYXNJbnQBAXYEByRtYXRjaDAFAXYDCQABAgUHJG1hdGNoMAIDSW50BAFuBQckbWF0Y2gwBQFuCQACAQIVZmFpbCB0byBjYXN0IGludG8gSW50AQlhc0FueUxpc3QBAXYEByRtYXRjaDAFAXYDCQABAgUHJG1hdGNoMAIJTGlzdFtBbnldBAFsBQckbWF0Y2gwBQFsCQACAQIbZmFpbCB0byBjYXN0IGludG8gTGlzdFtBbnldAQlhc0Jvb2xlYW4BAXYEByRtYXRjaDAFAXYDCQABAgUHJG1hdGNoMAIHQm9vbGVhbgQBcwUHJG1hdGNoMAUBcwkAAgECGWZhaWwgdG8gY2FzdCBpbnRvIEJvb2xlYW4BD251bVBpZWNlc0J5U2l6ZQEIbGFuZFNpemUEByRtYXRjaDAFCGxhbmRTaXplAwkAAAICAVMFByRtYXRjaDAFBVNTSVpFAwkAAAICAU0FByRtYXRjaDAFBU1TSVpFAwkAAAICAUwFByRtYXRjaDAFBUxTSVpFAwkAAAICAlhMBQckbWF0Y2gwBQZYTFNJWkUDCQAAAgIDWFhMBQckbWF0Y2gwBQdYWExTSVpFCQACAQIRVW5rbm93biBsYW5kIHNpemUBB2lzRGlnaXQBAXMJAQlpc0RlZmluZWQBCQC2CQEFAXMBCmtleUJsb2NrZWQAAhBjb250cmFjdHNCbG9ja2VkARFrZXlMYXN0VHhJZEJ5VXNlcgEEYWRkcgkArAICAg9sYXN0VHhJZEJ5VXNlcl8FBGFkZHIBCmZpeGVkUG9pbnQCA3ZhbAhkZWNpbWFscwQGdGVuUG93CQBsBgAKAAAFCGRlY2ltYWxzAAAAAAUERE9XTgQHbG93UGFydAkApAMBCQBqAgUDdmFsBQZ0ZW5Qb3cEBnplcm9lcwkAsAICCQCkAwEFBnRlblBvdwkAZAIAAQkAsQIBBQdsb3dQYXJ0CQCsAgIJAKwCAgkArAICCQCkAwEJAGkCBQN2YWwFBnRlblBvdwIBLgUGemVyb2VzBQdsb3dQYXJ0AQ9nZXRSYW5kb21OdW1iZXIDCG1heFZhbHVlBHNhbHQHZW50cm9weQMJAGcCAAAFCG1heFZhbHVlCQACAQIWbWF4VmFsdWUgc2hvdWxkIGJlID4gMAQKcmFuZG9tSGFzaAkA9wMBCQDLAQIFBHNhbHQFB2VudHJvcHkJAGoCCQCxCQEFCnJhbmRvbUhhc2gFCG1heFZhbHVlAA1pbmN1YmF0b3JBZGRyBAckbWF0Y2gwBQVjaGFpbgMJAAACAQFXBQckbWF0Y2gwCQERQGV4dHJOYXRpdmUoMTA2MikBAiMzUEVrdFZ1eDJSaGNoU042M0RzRG80YjRtejRRcXpLU2VEdgMJAAACAQFUBQckbWF0Y2gwBQR0aGlzCQACAQINVW5rbm93biBjaGFpbgALYnJlZWRlckFkZHIEByRtYXRjaDAFBWNoYWluAwkAAAIBAVcFByRtYXRjaDAJARFAZXh0ck5hdGl2ZSgxMDYyKQECIzNQRFZ1VTQ1SDdFaDVkbXROYm5STlJTdEd3VUxBN05ZNkhiAwkAAAIBAVQFByRtYXRjaDAFBHRoaXMJAAIBAg1Vbmtub3duIGNoYWluABFGSVZFTUlOVVRFU01JTExJUwDgpxIADFJFTkFNSU5HQ09TVADAlrECAApNQVhOQU1FTEVOADIAFUluZnJhVXBncmFkZUNvc3RTVXNkdACAreIEAAxFWFBNQVRFUklBTFMEByRtYXRjaDAFBWNoYWluAwkAAAIBAVcFByRtYXRjaDAApt2C7asHAwkAAAIBAVQFByRtYXRjaDAAqqeBswkJAAIBAg1Vbmtub3duIGNoYWluAAdFWFBVU0RUBAckbWF0Y2gwBQVjaGFpbgMJAAACAQFXBQckbWF0Y2gwAIDlmncDCQAAAgEBVAUHJG1hdGNoMACA5Zp3CQACAQINVW5rbm93biBjaGFpbgAOUk9CT19EVUNLX1VTRFQAoI0GAAxTX0NPU1RfQUNSRVMAgPKLqAkABUZJVkVYCQC2AgEABQAHVFdFTlRZWAkAtgIBABQACFRXRU5UWTJYCQC2AgEJAGgCABQAFAAIVFdFTlRZM1gJALYCAQkAaAIJAGgCABQAFAAUAAhUV0VOVFk0WAkAtgIBCQBoAgkAaAIJAGgCABQAFAAUABQACFRXRU5UWTVYCQC2AgEJAGgCCQBoAgkAaAIJAGgCABQAFAAUABQAFAAPUFJFU0FMRU5VTUxBTkRTAPQDARJrZXlOZXh0RnJlZUxhbmROdW0AAgtuZXh0TGFuZE51bQEaa2V5TGFuZEN1c3RvbU5hbWVUb0Fzc2V0SWQBBG5hbWUJAKwCAgIEbGNuXwUEbmFtZQEQa2V5TGFuZFRvQXNzZXRJZAEHbGFuZE51bQkArAICAgNsYV8FB2xhbmROdW0BHmtleUluZnJhTGV2ZWxCeUFzc2V0SWRBbmRPd25lcgIHYXNzZXRJZAlvd25lckFkZHIJAKwCAgkArAICCQCsAgICBWlsYW9fBQdhc3NldElkAgFfBQlvd25lckFkZHIBEWtleUxhbmROdW1Ub093bmVyAQdsYW5kTnVtCQCsAgICA2xvXwUHbGFuZE51bQEaa2V5RHVja0N1c3RvbU5hbWVUb0Fzc2V0SWQBBG5hbWUJAKwCAgIRZHVja0J5Q3VzdG9tTmFtZV8FBG5hbWUBFmtleUN1c3RvbU5hbWVUb0FkZHJlc3MBBG5hbWUJAKwCAgIUYWNjb3VudEJ5Q3VzdG9tTmFtZV8FBG5hbWUBCWtleU9sZGllcwACCm9sZGllc0xpc3QBD2tleU5leHRSb2JvRHVjawACDG5leHRSb2JvRHVjawALY2xhaW1Nb2RlV2gAAAANY2xhaW1Nb2RlRHVjawABABNjbGFpbU1vZGVXaFRoZW5EdWNrAAIACGZsSGVhbHRoAAAAC2ZsVGltZXN0YW1wAAUAB2ZsQm9udXMABgALZmxQcm9kc1VzZWQABwAIcmxIZWFsdGgAAAALcmxQcm9kc1VzZWQAAQAGcmxUeXBlAAAACHJsTGFzdFR4AAIAC3JsVGltZXN0YW1wAAMBB25mdE5hbWUCB2xhbmROdW0IbGFuZFNpemUJAKwCAgkArAICBQpMQU5EUFJFRklYBQdsYW5kTnVtBQhsYW5kU2l6ZQEIdG9Wb2x1bWUCBmFtb3VudAdwa2dTaXplBARwa2dzAwkAZwIFBmFtb3VudAAACQBpAgkAZQIJAGQCBQZhbW91bnQFB3BrZ1NpemUAAQUHcGtnU2l6ZQkBAS0BCQBpAgkAZQIJAGQCCQEBLQEFBmFtb3VudAUHcGtnU2l6ZQABBQdwa2dTaXplCQBoAgUEcGtncwUFTVVMVDgBE2Rpc3RyaWJ1dGVCeVdlaWdodHMCBXRvdGFsB3dlaWdodHMEA3N1bQkAZAIJAGQCCQBkAgkAZAIJAGQCCQCRAwIFB3dlaWdodHMAAAkAkQMCBQd3ZWlnaHRzAAEJAJEDAgUHd2VpZ2h0cwACCQCRAwIFB3dlaWdodHMAAwkAkQMCBQd3ZWlnaHRzAAQJAJEDAgUHd2VpZ2h0cwAFAwkAZwIAAAUDc3VtCQACAQIQWmVybyB3ZWlnaHRzIHN1bQQFbm9ybTYJAGsDBQV0b3RhbAUFTVVMVDYFA3N1bQoBCm5vcm1hbGl6ZXICA2FjYwRlbGVtCQDNCAIFA2FjYwkAawMFBGVsZW0FBW5vcm02BQVNVUxUNgoAAiRsBQd3ZWlnaHRzCgACJHMJAJADAQUCJGwKAAUkYWNjMAUDbmlsCgEFJGYwXzECAiRhAiRpAwkAZwIFAiRpBQIkcwUCJGEJAQpub3JtYWxpemVyAgUCJGEJAJEDAgUCJGwFAiRpCgEFJGYwXzICAiRhAiRpAwkAZwIFAiRpBQIkcwUCJGEJAAIBAhNMaXN0IHNpemUgZXhjZWVkcyA2CQEFJGYwXzICCQEFJGYwXzECCQEFJGYwXzECCQEFJGYwXzECCQEFJGYwXzECCQEFJGYwXzECCQEFJGYwXzECBQUkYWNjMAAAAAEAAgADAAQABQAGARJnZXROZWVkZWRNYXRlcmlhbHMBBXRvdGFsBAVwcm9wcwkAtQkCCQEFdmFsdWUBCQCiCAEJARFrZXlSZXNQcm9wb3J0aW9ucwACAV8DCQECIT0CCQCQAwEFBXByb3BzBQZOVU1SRVMJAAIBAhZXcm9uZyBwcm9wb3J0aW9ucyBkYXRhBAFyCQDMCAIJAQ1wYXJzZUludFZhbHVlAQkAkQMCBQVwcm9wcwAACQDMCAIJAQ1wYXJzZUludFZhbHVlAQkAkQMCBQVwcm9wcwABCQDMCAIJAQ1wYXJzZUludFZhbHVlAQkAkQMCBQVwcm9wcwACCQDMCAIJAQ1wYXJzZUludFZhbHVlAQkAkQMCBQVwcm9wcwADCQDMCAIJAQ1wYXJzZUludFZhbHVlAQkAkQMCBQVwcm9wcwAECQDMCAIJAQ1wYXJzZUludFZhbHVlAQkAkQMCBQVwcm9wcwAFBQNuaWwJARNkaXN0cmlidXRlQnlXZWlnaHRzAgUFdG90YWwFAXIBEXN1YnRyYWN0TWF0ZXJpYWxzAwxzaG91bGRVc2VNYXQDaGFzCXRvdGFsTmVlZAQEbmVlZAkBEmdldE5lZWRlZE1hdGVyaWFscwEFCXRvdGFsTmVlZAoBCnN1YnRyYWN0b3ICA2FjYwNpZHgEBnJlc3VsdAkAZQIJAQ1wYXJzZUludFZhbHVlAQkAkQMCBQNoYXMFA2lkeAkAkQMCBQRuZWVkBQNpZHgDCQBmAgAABQZyZXN1bHQJAAIBCQCsAgIJAKwCAgkArAICCQCsAgIJAKwCAgIYTm90IGVub3VnaCBtYXRlcmlhbCBpZHg9CQCkAwEFA2lkeAILLCB5b3UgaGF2ZSAJAJEDAgUDaGFzBQNpZHgCCywgYnV0IG5lZWQgCQCkAwEJAJEDAgUEbmVlZAUDaWR4CQDNCAIFA2FjYwkApAMBBQZyZXN1bHQDBQxzaG91bGRVc2VNYXQKAAIkbAUFSVRFUjYKAAIkcwkAkAMBBQIkbAoABSRhY2MwBQNuaWwKAQUkZjBfMQICJGECJGkDCQBnAgUCJGkFAiRzBQIkYQkBCnN1YnRyYWN0b3ICBQIkYQkAkQMCBQIkbAUCJGkKAQUkZjBfMgICJGECJGkDCQBnAgUCJGkFAiRzBQIkYQkAAgECE0xpc3Qgc2l6ZSBleGNlZWRzIDYJAQUkZjBfMgIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIFBSRhY2MwAAAAAQACAAMABAAFAAYFA2hhcwERc3VidHJhY3RFcXVpcG1lbnQCBW9sZEVxBXBVc2VkAwkAAAIFBXBVc2VkAgAJAJUKAwUFb2xkRXEHBwoBB3N1YlVzZWQCA2FjYwZpZHhBbXQEBXBhcnRzCQC1CQIFBmlkeEFtdAIBLAMJAQIhPQIJAJADAQUFcGFydHMAAgkAAgECKEluY29ycmVjdCBmb3JtYXQsIHNob3VsZCBiZSBpbmRleCxhbW91bnQEA2lkeAkBDXBhcnNlSW50VmFsdWUBCQCRAwIFBXBhcnRzAAADAwkAZgIAAAUDaWR4BgkAZwIFA2lkeAkAkAMBBRBwcm9kdWN0aW9uTWF0cml4CQACAQITVW5rbm93biBwcm9kdWN0IGlkeAQDYW10CQENcGFyc2VJbnRWYWx1ZQEJAJEDAgUFcGFydHMAAQQHZXFQYXJ0cwkAtQkCCAUDYWNjAl8xCQCsAgIJAJEDAgUFcGFydHMAAAIBOgMJAQIhPQIJAJADAQUHZXFQYXJ0cwACCQACAQkArAICCQCsAgICD1lvdSBkb24ndCBoYXZlIAkAkQMCBQlwcm9kVHlwZXMFA2lkeAIJIGVxdWlwcGVkBAN0bXAJAJEDAgUHZXFQYXJ0cwABBAZudW1MZW4DCQEHaXNEaWdpdAEJAK8CAgkAsAICBQN0bXAAAQABAAIAAQQEY3VycgkBDXBhcnNlSW50VmFsdWUBCQCvAgIFA3RtcAUGbnVtTGVuBAR0YWlsCQCwAgIFA3RtcAUGbnVtTGVuBAZuZXdBbXQDCQBnAgUEY3VycgUDYW10CQBlAgUEY3VycgUDYW10CQACAQkArAICCQCsAgIJAKwCAgkArAICCQCsAgICDVlvdSBlcXVpcHBlZCAJAKQDAQUEY3VycgIEIG9mIAkAkQMCBQlwcm9kVHlwZXMFA2lkeAITLCBidXQgdHJpZWQgdG8gdXNlIAkApAMBBQNhbXQJAJUKAwkArAICCQCsAgIJAKwCAgkArAICCQCRAwIFB2VxUGFydHMAAAkAkQMCBQVwYXJ0cwAAAgE6CQCkAwEFBm5ld0FtdAUEdGFpbAMIBQNhY2MCXzIGAwMJAGcCBQNpZHgABgkAZwIACAUDaWR4BwkAAAIFBm5ld0FtdAAABwMIBQNhY2MCXzMGAwMJAGcCBQNpZHgAAwkAZwIABQUDaWR4BwkAZgIFA2FtdAAABwoAAiRsCQC1CQIFBXBVc2VkAgFfCgACJHMJAJADAQUCJGwKAAUkYWNjMAkAlQoDBQVvbGRFcQcHCgEFJGYwXzECAiRhAiRpAwkAZwIFAiRpBQIkcwUCJGEJAQdzdWJVc2VkAgUCJGEJAJEDAgUCJGwFAiRpCgEFJGYwXzICAiRhAiRpAwkAZwIFAiRpBQIkcwUCJGEJAAIBAhRMaXN0IHNpemUgZXhjZWVkcyAxMAkBBSRmMF8yAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgUFJGFjYzAAAAABAAIAAwAEAAUABgAHAAgACQAKAQ5wcm9kU3RyVG9CeXRlcwEHcHJvZFN0cgQFcExpc3QDCQAAAgUHcHJvZFN0cgIABQNuaWwJALwJAgUHcHJvZFN0cgIBXwoBBHRvQlYCA2FjYwZyZWNpcGUEAWoJAGkCCQDIAQEFA2FjYwAIBARjdXJyAwkAZgIJAJADAQUFcExpc3QFAWoJAQ1wYXJzZUludFZhbHVlAQkAkQMCBQVwTGlzdAUBagAACQDLAQIFA2FjYwkAmgMBBQRjdXJyCgACJGwFEHByb2R1Y3Rpb25NYXRyaXgKAAIkcwkAkAMBBQIkbAoABSRhY2MwAQAKAQUkZjBfMQICJGECJGkDCQBnAgUCJGkFAiRzBQIkYQkBBHRvQlYCBQIkYQkAkQMCBQIkbAUCJGkKAQUkZjBfMgICJGECJGkDCQBnAgUCJGkFAiRzBQIkYQkAAgECFExpc3Qgc2l6ZSBleGNlZWRzIDUwCQEFJGYwXzICCQEFJGYwXzECCQEFJGYwXzECCQEFJGYwXzECCQEFJGYwXzECCQEFJGYwXzECCQEFJGYwXzECCQEFJGYwXzECCQEFJGYwXzECCQEFJGYwXzECCQEFJGYwXzECCQEFJGYwXzECCQEFJGYwXzECCQEFJGYwXzECCQEFJGYwXzECCQEFJGYwXzECCQEFJGYwXzECCQEFJGYwXzECCQEFJGYwXzECCQEFJGYwXzECCQEFJGYwXzECCQEFJGYwXzECCQEFJGYwXzECCQEFJGYwXzECCQEFJGYwXzECCQEFJGYwXzECCQEFJGYwXzECCQEFJGYwXzECCQEFJGYwXzECCQEFJGYwXzECCQEFJGYwXzECCQEFJGYwXzECCQEFJGYwXzECCQEFJGYwXzECCQEFJGYwXzECCQEFJGYwXzECCQEFJGYwXzECCQEFJGYwXzECCQEFJGYwXzECCQEFJGYwXzECCQEFJGYwXzECCQEFJGYwXzECCQEFJGYwXzECCQEFJGYwXzECCQEFJGYwXzECCQEFJGYwXzECCQEFJGYwXzECCQEFJGYwXzECCQEFJGYwXzECCQEFJGYwXzECCQEFJGYwXzECBQUkYWNjMAAAAAEAAgADAAQABQAGAAcACAAJAAoACwAMAA0ADgAPABAAEQASABMAFAAVABYAFwAYABkAGgAbABwAHQAeAB8AIAAhACIAIwAkACUAJgAnACgAKQAqACsALAAtAC4ALwAwADEAMgEOYnl0ZXNUb1Byb2RTdHIBAmJ2CgEGZnJvbUJWAgNhY2MGcmVjaXBlBAFqCQCQAwEFA2FjYwQBYgkAyQECCQDKAQIFAmJ2CQBoAgAIBQFqAAgJAM0IAgUDYWNjCQCkAwEJALEJAQUBYgkAugkCCgACJGwFEHByb2R1Y3Rpb25NYXRyaXgKAAIkcwkAkAMBBQIkbAoABSRhY2MwBQNuaWwKAQUkZjBfMQICJGECJGkDCQBnAgUCJGkFAiRzBQIkYQkBBmZyb21CVgIFAiRhCQCRAwIFAiRsBQIkaQoBBSRmMF8yAgIkYQIkaQMJAGcCBQIkaQUCJHMFAiRhCQACAQIUTGlzdCBzaXplIGV4Y2VlZHMgNTAJAQUkZjBfMgIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIFBSRhY2MwAAAAAQACAAMABAAFAAYABwAIAAkACgALAAwADQAOAA8AEAARABIAEwAUABUAFgAXABgAGQAaABsAHAAdAB4AHwAgACEAIgAjACQAJQAmACcAKAApACoAKwAsAC0ALgAvADAAMQAyAgFfARVjaGVja1N0YXRSZXF1aXJlbWVudHMCCWR1Y2tTdGF0cwRyZXFzCgEFY2hlY2sCA2FjYwFqBARidWZmAwkAZgIJAJADAQUJZHVja1N0YXRzCQBkAgAHBQFqCQCRAwIFCWR1Y2tTdGF0cwkAZAIABwUBagAAAwkAZgIJAQ1wYXJzZUludFZhbHVlAQkAkQMCBQRyZXFzBQFqCQBkAgkAkQMCBQlkdWNrU3RhdHMFAWoFBGJ1ZmYJAAIBCQCsAgICG1JlcXVpcmVtZW50IG5vdCBzYXRpc2ZpZWQ6IAkAkQMCBQxyZXF1aXJlbWVudHMFAWoGCgACJGwJAMwIAgAACQDMCAIAAQkAzAgCAAIJAMwIAgADCQDMCAIABAkAzAgCAAUJAMwIAgAGBQNuaWwKAAIkcwkAkAMBBQIkbAoABSRhY2MwBwoBBSRmMF8xAgIkYQIkaQMJAGcCBQIkaQUCJHMFAiRhCQEFY2hlY2sCBQIkYQkAkQMCBQIkbAUCJGkKAQUkZjBfMgICJGECJGkDCQBnAgUCJGkFAiRzBQIkYQkAAgECE0xpc3Qgc2l6ZSBleGNlZWRzIDcJAQUkZjBfMgIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIFBSRhY2MwAAAAAQACAAMABAAFAAYABwEIYWRkUHJvZEIHBmlkeENudAVwTGlzdAppc1Bvc2l0aXZlB3NlZ21lbnQHbWFpbkF1eARzbG90CWR1Y2tTdGF0cwQFcGFydHMJALUJAgUGaWR4Q250AgE6AwkBAiE9AgkAkAMBBQVwYXJ0cwACCQACAQIoSW5jb3JyZWN0IGZvcm1hdCwgc2hvdWxkIGJlIGluZGV4OmFtb3VudAMDCQEBIQEFCmlzUG9zaXRpdmUJAQIhPQIJALECAQkAkQMCBQVwYXJ0cwAAAAIHCQACAQIrUHJvZHVjdCBpZHggc2hvdWxkIGJlIDIgZGlnaXRzLCB6ZXJvIHBhZGRlZAQKcHJvZHVjdElkeAkBDXBhcnNlSW50VmFsdWUBCQCRAwIFBXBhcnRzAAAEBWNvdW50CQENcGFyc2VJbnRWYWx1ZQEJAJEDAgUFcGFydHMAAQMDCQBmAgAABQpwcm9kdWN0SWR4BgkAZwIFCnByb2R1Y3RJZHgJAJADAQUQcHJvZHVjdGlvbk1hdHJpeAkAAgECE1Vua25vd24gcHJvZHVjdCBpZHgDCQBmAgAABQVjb3VudAkAAgECF0NvdW50IGNhbid0IGJlIG5lZ2F0aXZlAwkAZgIFBWNvdW50BQ1NQVhQUk9ESU5TTE9UCQACAQkArAICCQCsAgIJAKwCAgIUQ2FuJ3QgcHV0IG1vcmUgdGhhbiAJAKQDAQUNTUFYUFJPRElOU0xPVAIEIG9mIAkAkQMCBQlwcm9kVHlwZXMFCnByb2R1Y3RJZHgDCQAAAgUFY291bnQAAAkAlAoCBQVwTGlzdAcEBGhlYWQJAMkBAgUFcExpc3QJAGgCAAgFCnByb2R1Y3RJZHgEBGN1cnIJALEJAQkAyQECCQDKAQIFBXBMaXN0CQBoAgAIBQpwcm9kdWN0SWR4AAgEBHRhaWwJAMoBAgUFcExpc3QJAGgCAAgJAGQCBQpwcm9kdWN0SWR4AAEEBnJlY2lwZQkAtQkCCQCRAwIFEHByb2R1Y3Rpb25NYXRyaXgFCnByb2R1Y3RJZHgCAV8DAwkBASEBBQppc1Bvc2l0aXZlCQBmAgUFY291bnQFBGN1cnIHCQACAQkArAICCQCsAgIJAKwCAgkArAICCQCsAgICCVlvdSBoYXZlIAkApAMBBQRjdXJyAgQgb2YgCQCRAwIFCXByb2RUeXBlcwUKcHJvZHVjdElkeAITLCBidXQgdHJpZWQgdG8gdXNlIAkApAMBBQVjb3VudAQJaXNCaWdJdGVtAwMJAQEhAQUKaXNQb3NpdGl2ZQkBFWNoZWNrU3RhdFJlcXVpcmVtZW50cwIFCWR1Y2tTdGF0cwkAtQkCCQCRAwIFBnJlY2lwZQUQcklkeFJlcXVpcmVtZW50cwIBLAcEBmNvbXBhdAkAkQMCBQZyZWNpcGUFCXJJZHhTbG90cwMJAAACBQZjb21wYXQCAAkAAgECF0l0ZW0gY2Fubm90IGJlIGVxdWlwcGVkBAFjCQENcGFyc2VJbnRWYWx1ZQEFBmNvbXBhdAQEY1NlZwkAaQIFAWMAZAMJAQIhPQIFB3NlZ21lbnQFBGNTZWcJAAIBAhRTZWdtZW50IGluY29tcGF0aWJsZQQIY01haW5BdXgJAGkCCQBqAgUBYwBkAAoDCQECIT0CBQdtYWluQXV4BQhjTWFpbkF1eAkAAgECEVNsb3QgaW5jb21wYXRpYmxlBAljTnVtU2xvdHMJAGoCBQFjAAoDAwkBAiE9AgUEc2xvdAAACQBmAgUJY051bVNsb3RzAAEHCQACAQIeQmlnIGl0ZW1zIHNob3VsZCBvY2N1cHkgc2xvdCAwCQBmAgUJY051bVNsb3RzAAEHCQCUCgIJAMsBAgkAywECBQRoZWFkCQCaAwEJAGQCBQRjdXJyAwUKaXNQb3NpdGl2ZQUFY291bnQJAQEtAQUFY291bnQFBHRhaWwFCWlzQmlnSXRlbQELc2xvdHNHcm91cEIGAWcEYnBJbgppc1Bvc2l0aXZlB3NlZ21lbnQHbWFpbkF1eAVzdGF0cwMJAQIhPQIFAWcCAAQFc2xvdHMJALUJAgUBZwIBLAMJAGYCCQCQAwEFBXNsb3RzBQhNQVhTTE9UUwkAAgECEldyb25nIHNsb3RzIGZvcm1hdAQCczAJAJEDAgUFc2xvdHMAAAQCczEDCQBmAgkAkAMBBQVzbG90cwABCQCRAwIFBXNsb3RzAAECAAMDCQAAAgUCczACAAkAAAIFAnMxAgAHBQRicEluBAV0bXBTMAMJAQIhPQIFAnMwAgAJAQhhZGRQcm9kQgcFAnMwBQRicEluBQppc1Bvc2l0aXZlBQdzZWdtZW50BQdtYWluQXV4AAAFBXN0YXRzCQCUCgIFBGJwSW4HAwkBAiE9AgUCczECAAMIBQV0bXBTMAJfMgkAAgECHkJpZyBpdGVtIGFscmVhZHkgb2NjdXBpZXMgc2xvdAgJAQhhZGRQcm9kQgcFAnMxCAUFdG1wUzACXzEFCmlzUG9zaXRpdmUFB3NlZ21lbnQFB21haW5BdXgAAQUFc3RhdHMCXzEIBQV0bXBTMAJfMQUEYnBJbgEGZHJlc3NCBAdzZWdMaXN0BnBCeXRlcwppc1Bvc2l0aXZlBXN0YXRzCgEHc2VnbWVudAIDYWNjA3NlZwQBaggFA2FjYwJfMQQHbWFpbkF1eAkAtQkCBQNzZWcCATsDCQECIT0CCQCQAwEFB21haW5BdXgFCk5VTU1BSU5BVVgJAAIBAhRXcm9uZyBzZWdtZW50IGZvcm1hdAQBbQkAkQMCBQdtYWluQXV4AAAEAWEJAJEDAgUHbWFpbkF1eAABAwMJAAACBQFtAgAJAAACBQFhAgAHCQCUCgIJAGQCBQFqAAEIBQNhY2MCXzIEBHRtcE0JAQtzbG90c0dyb3VwQgYFAW0IBQNhY2MCXzIFCmlzUG9zaXRpdmUFAWoAAAUFc3RhdHMJAJQKAgkAZAIFAWoAAQkBC3Nsb3RzR3JvdXBCBgUBYQUEdG1wTQUKaXNQb3NpdGl2ZQUBagABBQVzdGF0cwgKAAIkbAUHc2VnTGlzdAoAAiRzCQCQAwEFAiRsCgAFJGFjYzAJAJQKAgAABQZwQnl0ZXMKAQUkZjBfMQICJGECJGkDCQBnAgUCJGkFAiRzBQIkYQkBB3NlZ21lbnQCBQIkYQkAkQMCBQIkbAUCJGkKAQUkZjBfMgICJGECJGkDCQBnAgUCJGkFAiRzBQIkYQkAAgECE0xpc3Qgc2l6ZSBleGNlZWRzIDYJAQUkZjBfMgIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIFBSRhY2MwAAAAAQACAAMABAAFAAYCXzIBF2NhbldlYXJDdXJyZW50RXF1aXBtZW50AQtkdWNrQXNzZXRJZAQFZXFLZXkJARBrZXlEdWNrRXF1aXBtZW50AQULZHVja0Fzc2V0SWQEBmN1cnJFcQkAtQkCCQELdmFsdWVPckVsc2UCCQCiCAEFBWVxS2V5AhcsOyxfLDssXyw7LF8sOyxfLDssXyw7LAIBXwQMRU1QVFlfUFJPRDUwAZADAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAQJdGVtcFByb2RCCQEGZHJlc3NCBAUGY3VyckVxBQxFTVBUWV9QUk9ENTAGBQNuaWwECHNlZ0JwQXV4CQCRAwIJALUJAgkAkQMCBQZjdXJyRXEFC3NlZ0JhY2twYWNrAgE7AAEECmJ1ZmZFZmZlY3QDCQAAAgUIc2VnQnBBdXgCAAAABARhdXgwCQCRAwIJALUJAgUIc2VnQnBBdXgCASwAAAMJAAACBQRhdXgwAgAAAAQGaWR4Q250CQC1CQIFBGF1eDACAToEA2lkeAkAkQMCBQZpZHhDbnQAAAQDY250CQCRAwIFBmlkeENudAABAwMDAwMJAAACBQNpZHgCAjA2BgkAAAIFA2lkeAICMDcGCQAAAgUDaWR4AgIwOAkBAiE9AgUDY250AgAHCQBmAgkBDXBhcnNlSW50VmFsdWUBBQNjbnQAAAcJAQ1wYXJzZUludFZhbHVlAQkAkQMCCQC1CQIJAJEDAgUQcHJvZHVjdGlvbk1hdHJpeAkBDXBhcnNlSW50VmFsdWUBBQNpZHgCAV8FCnJJZHhFZmZlY3QAAAQFc3RhdHMJAQxnZXREdWNrU3RhdHMEBQR0aGlzBQtkdWNrQXNzZXRJZAUKYnVmZkVmZmVjdAYECG5ld1Byb2RCCQEGZHJlc3NCBAUGY3VyckVxBQl0ZW1wUHJvZEIHBQVzdGF0cwkAAAIFCG5ld1Byb2RCBQhuZXdQcm9kQgEZdXBkYXRlUHJvcG9ydGlvbnNJbnRlcm5hbAQIcHJvcExpc3QNdGVycmFpbkNvdW50cw1sYW5kU2l6ZUluZGV4BHNpZ24DCQECIT0CCQCQAwEFCHByb3BMaXN0BQZOVU1SRVMJAAIBAhZXcm9uZyBwcm9wb3J0aW9ucyBkYXRhCgEHdXBkYXRlcgIDYWNjAWkEBnJlc3VsdAkAZAIJAQ1wYXJzZUludFZhbHVlAQkAkQMCBQhwcm9wTGlzdAUBaQkAaAIJAGgCBQRzaWduCQCRAwIFDXRlcnJhaW5Db3VudHMFAWkFDWxhbmRTaXplSW5kZXgDCQBmAgAABQZyZXN1bHQJAAIBCQCsAgIJAKwCAgkArAICCQCsAgIJAKwCAgkArAICCQCsAgICFlBhbmljISBQaWVjZXMgb2YgdHlwZT0JAKQDAQUBaQIHLCBzaWduPQkApAMBBQRzaWduAhMsIHRlcnJhaW5Db3VudHNbaV09CQCkAwEJAJEDAgUNdGVycmFpbkNvdW50cwUBaQIQLCBsYW5kU2l6ZUluZGV4PQkApAMBBQ1sYW5kU2l6ZUluZGV4CQDNCAIFA2FjYwkApAMBBQZyZXN1bHQKAAIkbAUFSVRFUjYKAAIkcwkAkAMBBQIkbAoABSRhY2MwBQNuaWwKAQUkZjBfMQICJGECJGkDCQBnAgUCJGkFAiRzBQIkYQkBB3VwZGF0ZXICBQIkYQkAkQMCBQIkbAUCJGkKAQUkZjBfMgICJGECJGkDCQBnAgUCJGkFAiRzBQIkYQkAAgECE0xpc3Qgc2l6ZSBleGNlZWRzIDYJAQUkZjBfMgIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIFBSRhY2MwAAAAAQACAAMABAAFAAYBEXVwZGF0ZVByb3BvcnRpb25zAw10ZXJyYWluQ291bnRzDWxhbmRTaXplSW5kZXgEc2lnbgQIcHJvcExpc3QJALUJAgkBC3ZhbHVlT3JFbHNlAgkAoggBCQERa2V5UmVzUHJvcG9ydGlvbnMAAgswXzBfMF8wXzBfMAIBXwkAuQkCCQEZdXBkYXRlUHJvcG9ydGlvbnNJbnRlcm5hbAQFCHByb3BMaXN0BQ10ZXJyYWluQ291bnRzBQ1sYW5kU2l6ZUluZGV4BQRzaWduAgFfAQ1jb3VudFRlcnJhaW5zAQh0ZXJyYWlucwkAzAgCCQBlAgkAkAMBCQC1CQIFCHRlcnJhaW5zAgFBAAEJAMwIAgkAZQIJAJADAQkAtQkCBQh0ZXJyYWlucwIBQgABCQDMCAIJAGUCCQCQAwEJALUJAgUIdGVycmFpbnMCAUMAAQkAzAgCCQBlAgkAkAMBCQC1CQIFCHRlcnJhaW5zAgFEAAEJAMwIAgkAZQIJAJADAQkAtQkCBQh0ZXJyYWlucwIBRQABCQDMCAIJAGUCCQCQAwEJALUJAgUIdGVycmFpbnMCAUYAAQUDbmlsAQZhZGRSZXMFCmN1cnJlbnRSZXMNdGVycmFpbkNvdW50cwlkZWx0YVRpbWUNbGFuZFNpemVJbmRleBdkYWlseUJ5UGllY2VXaXRoQm9udXNlcwoBBWFkZGVyAgNhY2MBaQQJcmVzT2ZUeXBlCQBoAgkAaAIJAGsDBQlkZWx0YVRpbWUFF2RhaWx5QnlQaWVjZVdpdGhCb251c2VzBQlEQVlNSUxMSVMJAJEDAgUNdGVycmFpbkNvdW50cwUBaQUNbGFuZFNpemVJbmRleAkAzQgCBQNhY2MJAKQDAQkAZAIJAQ1wYXJzZUludFZhbHVlAQkAkQMCBQpjdXJyZW50UmVzBQFpBQlyZXNPZlR5cGUEAXIKAAIkbAUFSVRFUjYKAAIkcwkAkAMBBQIkbAoABSRhY2MwBQNuaWwKAQUkZjBfMQICJGECJGkDCQBnAgUCJGkFAiRzBQIkYQkBBWFkZGVyAgUCJGEJAJEDAgUCJGwFAiRpCgEFJGYwXzICAiRhAiRpAwkAZwIFAiRpBQIkcwUCJGEJAAIBAhNMaXN0IHNpemUgZXhjZWVkcyA2CQEFJGYwXzICCQEFJGYwXzECCQEFJGYwXzECCQEFJGYwXzECCQEFJGYwXzECCQEFJGYwXzECCQEFJGYwXzECBQUkYWNjMAAAAAEAAgADAAQABQAGCQC5CQIFAXICAV8BCXZpcnRDbGFpbQQNdGVycmFpbkNvdW50cwlkZWx0YVRpbWUNbGFuZFNpemVJbmRleBdkYWlseUJ5UGllY2VXaXRoQm9udXNlcwoBBWFkZGVyAgNhY2MBaQQJcmVzT2ZUeXBlCQBoAgkAaAIJAGsDBQlkZWx0YVRpbWUFF2RhaWx5QnlQaWVjZVdpdGhCb251c2VzBQlEQVlNSUxMSVMJAJEDAgUNdGVycmFpbkNvdW50cwUBaQUNbGFuZFNpemVJbmRleAkAlAoCCQDNCAIIBQNhY2MCXzEFCXJlc09mVHlwZQkAZAIIBQNhY2MCXzIFCXJlc09mVHlwZQoAAiRsBQVJVEVSNgoAAiRzCQCQAwEFAiRsCgAFJGFjYzAJAJQKAgUDbmlsAAAKAQUkZjBfMQICJGECJGkDCQBnAgUCJGkFAiRzBQIkYQkBBWFkZGVyAgUCJGEJAJEDAgUCJGwFAiRpCgEFJGYwXzICAiRhAiRpAwkAZwIFAiRpBQIkcwUCJGEJAAIBAhNMaXN0IHNpemUgZXhjZWVkcyA2CQEFJGYwXzICCQEFJGYwXzECCQEFJGYwXzECCQEFJGYwXzECCQEFJGYwXzECCQEFJGYwXzECCQEFJGYwXzECBQUkYWNjMAAAAAEAAgADAAQABQAGAQ1kaXN0cmlidXRlUmVzBAxjdXJyZW50V2hSZXMOY3VycmVudFBhY2tSZXMKcmVzVG9DbGFpbQt3aFNwYWNlTGVmdAQOcmVzTGlzdFRvQ2xhaW0IBQpyZXNUb0NsYWltAl8xBAxyZXNBbVRvQ2xhaW0IBQpyZXNUb0NsYWltAl8yAwkAAAIFDHJlc0FtVG9DbGFpbQAACQCUCgIJALkJAgUMY3VycmVudFdoUmVzAgFfCQC5CQIFDmN1cnJlbnRQYWNrUmVzAgFfAwkAZwIFC3doU3BhY2VMZWZ0BQxyZXNBbVRvQ2xhaW0KAQhhZGRMaXN0cwIDYWNjAWkJAM0IAgUDYWNjCQCkAwEJAGQCCQENcGFyc2VJbnRWYWx1ZQEJAJEDAgUMY3VycmVudFdoUmVzBQFpCQCRAwIFDnJlc0xpc3RUb0NsYWltBQFpBAFyCgACJGwFBUlURVI2CgACJHMJAJADAQUCJGwKAAUkYWNjMAUDbmlsCgEFJGYwXzECAiRhAiRpAwkAZwIFAiRpBQIkcwUCJGEJAQhhZGRMaXN0cwIFAiRhCQCRAwIFAiRsBQIkaQoBBSRmMF8yAgIkYQIkaQMJAGcCBQIkaQUCJHMFAiRhCQACAQITTGlzdCBzaXplIGV4Y2VlZHMgNgkBBSRmMF8yAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgUFJGFjYzAAAAABAAIAAwAEAAUABgkAlAoCCQC5CQIFAXICAV8JALkJAgUOY3VycmVudFBhY2tSZXMCAV8KAQxhZGRQYXJ0TGlzdHMCA2FjYwFpBAZ3aFBhcnQJAGsDCQCRAwIFDnJlc0xpc3RUb0NsYWltBQFpBQt3aFNwYWNlTGVmdAUMcmVzQW1Ub0NsYWltCQCUCgIJAM0IAggFA2FjYwJfMQkApAMBCQBkAgkBDXBhcnNlSW50VmFsdWUBCQCRAwIFDGN1cnJlbnRXaFJlcwUBaQUGd2hQYXJ0CQDNCAIIBQNhY2MCXzIJAKQDAQkAZQIJAGQCCQENcGFyc2VJbnRWYWx1ZQEJAJEDAgUOY3VycmVudFBhY2tSZXMFAWkJAJEDAgUOcmVzTGlzdFRvQ2xhaW0FAWkFBndoUGFydAQBcgoAAiRsBQVJVEVSNgoAAiRzCQCQAwEFAiRsCgAFJGFjYzAJAJQKAgUDbmlsBQNuaWwKAQUkZjBfMQICJGECJGkDCQBnAgUCJGkFAiRzBQIkYQkBDGFkZFBhcnRMaXN0cwIFAiRhCQCRAwIFAiRsBQIkaQoBBSRmMF8yAgIkYQIkaQMJAGcCBQIkaQUCJHMFAiRhCQACAQITTGlzdCBzaXplIGV4Y2VlZHMgNgkBBSRmMF8yAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgUFJGFjYzAAAAABAAIAAwAEAAUABgkAlAoCCQC5CQIIBQFyAl8xAgFfCQC5CQIIBQFyAl8yAgFfAQNhYnMBAXgDCQDAAgIFAXgJALYCAQAABQF4CQC+AgEFAXgABGZyZXEJAMwIAgkAzAgCAAYJAMwIAgAJCQDMCAIADgkAzAgCAA8JAMwIAgAQBQNuaWwJAMwIAgkAzAgCAAUJAMwIAgAICQDMCAIADQkAzAgCAA4JAMwIAgAPBQNuaWwJAMwIAgkAzAgCAAEJAMwIAgAECQDMCAIACQkAzAgCAAoJAMwIAgAPBQNuaWwJAMwIAgkAzAgCAAEJAMwIAgAGCQDMCAIABwkAzAgCAA8JAMwIAgATBQNuaWwJAMwIAgkAzAgCAAQJAMwIAgAHCQDMCAIACAkAzAgCAA0JAMwIAgASBQNuaWwFA25pbAEHZ2VuQ2hhcgIBbgVmcmVxcwQDcmVtCQCgAwEJALsCAgUBbgUHVFdFTlRZWAQGbGV0dGVyAwkAZgIJAJEDAgUFZnJlcXMAAAUDcmVtAgFBAwkAZgIJAJEDAgUFZnJlcXMAAQUDcmVtAgFCAwkAZgIJAJEDAgUFZnJlcXMAAgUDcmVtAgFDAwkAZgIJAJEDAgUFZnJlcXMAAwUDcmVtAgFEAwkAZgIJAJEDAgUFZnJlcXMABAUDcmVtAgFFAgFGBQZsZXR0ZXIBC2dlblRlcnJhaW5zAgRzZWVkDGNvbnRpbmVudElkeAQBZgkAkQMCBQRmcmVxBQxjb250aW5lbnRJZHgKARB0ZXJyYWluR2VuZXJhdG9yAgNhY2MEZWxlbQkAlAoCCQCsAgIJAKwCAgkArAICCQCsAgIJAKwCAggFA2FjYwJfMQkBB2dlbkNoYXICCAUDYWNjAl8yBQFmCQEHZ2VuQ2hhcgIJALoCAggFA2FjYwJfMgUHVFdFTlRZWAUBZgkBB2dlbkNoYXICCQC6AgIIBQNhY2MCXzIFCFRXRU5UWTJYBQFmCQEHZ2VuQ2hhcgIJALoCAggFA2FjYwJfMgUIVFdFTlRZM1gFAWYJAQdnZW5DaGFyAgkAugICCAUDYWNjAl8yBQhUV0VOVFk0WAUBZgkAugICCAUDYWNjAl8yBQhUV0VOVFk1WAQBdAoAAiRsCQDMCAIAAQkAzAgCAAIJAMwIAgADCQDMCAIABAkAzAgCAAUFA25pbAoAAiRzCQCQAwEFAiRsCgAFJGFjYzAJAJQKAgIACQC6AgIFBHNlZWQFBUZJVkVYCgEFJGYwXzECAiRhAiRpAwkAZwIFAiRpBQIkcwUCJGEJARB0ZXJyYWluR2VuZXJhdG9yAgUCJGEJAJEDAgUCJGwFAiRpCgEFJGYwXzICAiRhAiRpAwkAZwIFAiRpBQIkcwUCJGEJAAIBAhNMaXN0IHNpemUgZXhjZWVkcyA1CQEFJGYwXzICCQEFJGYwXzECCQEFJGYwXzECCQEFJGYwXzECCQEFJGYwXzECCQEFJGYwXzECBQUkYWNjMAAAAAEAAgADAAQABQgFAXQCXzEABlBFUk0yNQkAzAgCAAcJAMwIAgACCQDMCAIADwkAzAgCABMJAMwIAgAICQDMCAIAGAkAzAgCAAEJAMwIAgAVCQDMCAIAEAkAzAgCAAUJAMwIAgAACQDMCAIAFgkAzAgCABQJAMwIAgAXCQDMCAIACwkAzAgCAAQJAMwIAgASCQDMCAIADAkAzAgCAAYJAMwIAgAKCQDMCAIAAwkAzAgCABEJAMwIAgANCQDMCAIACQkAzAgCAA4FA25pbAAGVENIQVJTCQDMCAICAUEJAMwIAgIBQgkAzAgCAgFDCQDMCAICAUQJAMwIAgIBRQkAzAgCAgFGBQNuaWwBE2dlblRlcnJhaW5zRm9yTWVyZ2UCC3N1bVRlcnJhaW5zDWxhbmRTaXplSW5kZXgKAQVzdGVwMQIDYWNjAXMEAWoIBQNhY2MCXzIEAmVsCQENcGFyc2VJbnRWYWx1ZQEFAXMEAXgDCQAAAgUCZWwAAAAAAwkAZwIFAmVsCQBoAgAEBQ1sYW5kU2l6ZUluZGV4CQBpAgUCZWwFDWxhbmRTaXplSW5kZXgDCQBmAgUCZWwJAGgCAAMFDWxhbmRTaXplSW5kZXgAAwkAZAIJAGkCCQBlAgUCZWwAAQUNbGFuZFNpemVJbmRleAABCQCVCgMJAM0IAggFA2FjYwJfMQUBeAkAZAIIBQNhY2MCXzIAAQkAZAIIBQNhY2MCXzMFAXgEAXQKAAIkbAULc3VtVGVycmFpbnMKAAIkcwkAkAMBBQIkbAoABSRhY2MwCQCVCgMFA25pbAAAAAAKAQUkZjBfMQICJGECJGkDCQBnAgUCJGkFAiRzBQIkYQkBBXN0ZXAxAgUCJGEJAJEDAgUCJGwFAiRpCgEFJGYwXzICAiRhAiRpAwkAZwIFAiRpBQIkcwUCJGEJAAIBAhNMaXN0IHNpemUgZXhjZWVkcyA2CQEFJGYwXzICCQEFJGYwXzECCQEFJGYwXzECCQEFJGYwXzECCQEFJGYwXzECCQEFJGYwXzECCQEFJGYwXzECBQUkYWNjMAAAAAEAAgADAAQABQAGBANhcnIIBQF0Al8xBAZtYXhJZHgJAQV2YWx1ZQEJAM8IAgUDYXJyCQCWAwEFA2FycgQFZGVsdGEJAGUCCAUBdAJfMwAZCgEGc3ViYmVyAgNhY2MDaWR4BAN2YWwDCQAAAgUDaWR4BQZtYXhJZHgJAGUCCQCRAwIFA2FycgUDaWR4BQVkZWx0YQkAkQMCBQNhcnIFA2lkeAQGemVyb2VzAwkAAAIFA3ZhbAAABQNuaWwJALUJAgkAsAICCQCkAwEJAGwGAAoAAAUDdmFsAAAAAAUERE9XTgABAgAEAWMJAJEDAgUGVENIQVJTBQNpZHgKAQdsaXN0R2VuAgJhYwdpZ25vcmVkCQDNCAIFAmFjBQFjBAF6CgACJGwFBnplcm9lcwoAAiRzCQCQAwEFAiRsCgAFJGFjYzAFA25pbAoBBSRmMV8xAgIkYQIkaQMJAGcCBQIkaQUCJHMFAiRhCQEHbGlzdEdlbgIFAiRhCQCRAwIFAiRsBQIkaQoBBSRmMV8yAgIkYQIkaQMJAGcCBQIkaQUCJHMFAiRhCQACAQIUTGlzdCBzaXplIGV4Y2VlZHMgMjUJAQUkZjFfMgIJAQUkZjFfMQIJAQUkZjFfMQIJAQUkZjFfMQIJAQUkZjFfMQIJAQUkZjFfMQIJAQUkZjFfMQIJAQUkZjFfMQIJAQUkZjFfMQIJAQUkZjFfMQIJAQUkZjFfMQIJAQUkZjFfMQIJAQUkZjFfMQIJAQUkZjFfMQIJAQUkZjFfMQIJAQUkZjFfMQIJAQUkZjFfMQIJAQUkZjFfMQIJAQUkZjFfMQIJAQUkZjFfMQIJAQUkZjFfMQIJAQUkZjFfMQIJAQUkZjFfMQIJAQUkZjFfMQIJAQUkZjFfMQIJAQUkZjFfMQIFBSRhY2MwAAAAAQACAAMABAAFAAYABwAIAAkACgALAAwADQAOAA8AEAARABIAEwAUABUAFgAXABgAGQkAzggCBQNhY2MFAXoEAXIKAAIkbAUFSVRFUjYKAAIkcwkAkAMBBQIkbAoABSRhY2MwBQNuaWwKAQUkZjFfMQICJGECJGkDCQBnAgUCJGkFAiRzBQIkYQkBBnN1YmJlcgIFAiRhCQCRAwIFAiRsBQIkaQoBBSRmMV8yAgIkYQIkaQMJAGcCBQIkaQUCJHMFAiRhCQACAQITTGlzdCBzaXplIGV4Y2VlZHMgNgkBBSRmMV8yAgkBBSRmMV8xAgkBBSRmMV8xAgkBBSRmMV8xAgkBBSRmMV8xAgkBBSRmMV8xAgkBBSRmMV8xAgUFJGFjYzAAAAABAAIAAwAEAAUABgoBBnBlcm11dAIDYWNjAWoJAKwCAgUDYWNjCQCRAwIFAXIFAWoKAAIkbAUGUEVSTTI1CgACJHMJAJADAQUCJGwKAAUkYWNjMAIACgEFJGYyXzECAiRhAiRpAwkAZwIFAiRpBQIkcwUCJGEJAQZwZXJtdXQCBQIkYQkAkQMCBQIkbAUCJGkKAQUkZjJfMgICJGECJGkDCQBnAgUCJGkFAiRzBQIkYQkAAgECFExpc3Qgc2l6ZSBleGNlZWRzIDI1CQEFJGYyXzICCQEFJGYyXzECCQEFJGYyXzECCQEFJGYyXzECCQEFJGYyXzECCQEFJGYyXzECCQEFJGYyXzECCQEFJGYyXzECCQEFJGYyXzECCQEFJGYyXzECCQEFJGYyXzECCQEFJGYyXzECCQEFJGYyXzECCQEFJGYyXzECCQEFJGYyXzECCQEFJGYyXzECCQEFJGYyXzECCQEFJGYyXzECCQEFJGYyXzECCQEFJGYyXzECCQEFJGYyXzECCQEFJGYyXzECCQEFJGYyXzECCQEFJGYyXzECCQEFJGYyXzECCQEFJGYyXzECBQUkYWNjMAAAAAEAAgADAAQABQAGAAcACAAJAAoACwAMAA0ADgAPABAAEQASABMAFAAVABYAFwAYABkBC2dldEJhY2twYWNrAQVicEtleQQBcAkAtQkCCQELdmFsdWVPckVsc2UCCQCiCAEFBWJwS2V5AhowOjBfMF8wXzBfMF8wOjBfMF8wXzBfMF8wOgIBOgkAzAgCCQCkAwEJAQt2YWx1ZU9yRWxzZQIJALYJAQkAkQMCBQFwBQpicElkeExldmVsAAAJAMwIAgMJAAACCQCQAwEJALUJAgkAkQMCBQFwBQhicElkeFJlcwIBXwUGTlVNUkVTCQCRAwIFAXAFCGJwSWR4UmVzAgswXzBfMF8wXzBfMAkAzAgCAwkAAAIJAJADAQkAtQkCCQCRAwIFAXAFCGJwSWR4TWF0AgFfBQZOVU1SRVMJAJEDAgUBcAUIYnBJZHhNYXQCCzBfMF8wXzBfMF8wCQDMCAIJAJEDAgUBcAUJYnBJZHhQcm9kBQNuaWwBF2dldFdhcmVob3VzZVRvdGFsVm9sdW1lAQl2b2xQcmVmaXgEBXBhcnRzCQC1CQIFCXZvbFByZWZpeAIBXwkAaAIJAGgCBQxXSE1VTFRJUExJRVIJAGQCCQENcGFyc2VJbnRWYWx1ZQEJAJEDAgUFcGFydHMAAQABCQENcGFyc2VJbnRWYWx1ZQEJAJEDAgUFcGFydHMAAAEXZ2V0V2FyZWhvdXNlT2NjdXBpZWRWb2wBCWN1cnJlbnRXaAQFZ29vZHMJAJEDAgUJY3VycmVudFdoBQl3aElkeFByb2QKAQlzdW1SZXNNYXQCA2FjYwRpdGVtCQBkAgUDYWNjCQENcGFyc2VJbnRWYWx1ZQEFBGl0ZW0KAQdzdW1Qcm9kAgNhY2MEaXRlbQQDaWR4CAUDYWNjAl8xBARwa2dzCQBpAgkAZQIJAGQCCQENcGFyc2VJbnRWYWx1ZQEFBGl0ZW0FDlBST0RVQ1RQS0dTSVpFAAEFDlBST0RVQ1RQS0dTSVpFCQCUCgIJAGQCBQNpZHgAAQkAZAIIBQNhY2MCXzIJAGgCBQRwa2dzBQVNVUxUOAQId2hSZXNWb2wKAAIkbAkAtQkCCQCRAwIFCWN1cnJlbnRXaAUId2hJZHhSZXMCAV8KAAIkcwkAkAMBBQIkbAoABSRhY2MwAAAKAQUkZjBfMQICJGECJGkDCQBnAgUCJGkFAiRzBQIkYQkBCXN1bVJlc01hdAIFAiRhCQCRAwIFAiRsBQIkaQoBBSRmMF8yAgIkYQIkaQMJAGcCBQIkaQUCJHMFAiRhCQACAQITTGlzdCBzaXplIGV4Y2VlZHMgNgkBBSRmMF8yAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgUFJGFjYzAAAAABAAIAAwAEAAUABgQId2hNYXRWb2wKAAIkbAkAtQkCCQCRAwIFCWN1cnJlbnRXaAUId2hJZHhNYXQCAV8KAAIkcwkAkAMBBQIkbAoABSRhY2MwAAAKAQUkZjFfMQICJGECJGkDCQBnAgUCJGkFAiRzBQIkYQkBCXN1bVJlc01hdAIFAiRhCQCRAwIFAiRsBQIkaQoBBSRmMV8yAgIkYQIkaQMJAGcCBQIkaQUCJHMFAiRhCQACAQITTGlzdCBzaXplIGV4Y2VlZHMgNgkBBSRmMV8yAgkBBSRmMV8xAgkBBSRmMV8xAgkBBSRmMV8xAgkBBSRmMV8xAgkBBSRmMV8xAgkBBSRmMV8xAgUFJGFjYzAAAAABAAIAAwAEAAUABgQKd2hHb29kc1ZvbAMJAAACBQVnb29kcwIAAAAICgACJGwJALwJAgUFZ29vZHMCAV8KAAIkcwkAkAMBBQIkbAoABSRhY2MwCQCUCgIAAAAACgEFJGYyXzECAiRhAiRpAwkAZwIFAiRpBQIkcwUCJGEJAQdzdW1Qcm9kAgUCJGEJAJEDAgUCJGwFAiRpCgEFJGYyXzICAiRhAiRpAwkAZwIFAiRpBQIkcwUCJGEJAAIBAhRMaXN0IHNpemUgZXhjZWVkcyA1MAkBBSRmMl8yAgkBBSRmMl8xAgkBBSRmMl8xAgkBBSRmMl8xAgkBBSRmMl8xAgkBBSRmMl8xAgkBBSRmMl8xAgkBBSRmMl8xAgkBBSRmMl8xAgkBBSRmMl8xAgkBBSRmMl8xAgkBBSRmMl8xAgkBBSRmMl8xAgkBBSRmMl8xAgkBBSRmMl8xAgkBBSRmMl8xAgkBBSRmMl8xAgkBBSRmMl8xAgkBBSRmMl8xAgkBBSRmMl8xAgkBBSRmMl8xAgkBBSRmMl8xAgkBBSRmMl8xAgkBBSRmMl8xAgkBBSRmMl8xAgkBBSRmMl8xAgkBBSRmMl8xAgkBBSRmMl8xAgkBBSRmMl8xAgkBBSRmMl8xAgkBBSRmMl8xAgkBBSRmMl8xAgkBBSRmMl8xAgkBBSRmMl8xAgkBBSRmMl8xAgkBBSRmMl8xAgkBBSRmMl8xAgkBBSRmMl8xAgkBBSRmMl8xAgkBBSRmMl8xAgkBBSRmMl8xAgkBBSRmMl8xAgkBBSRmMl8xAgkBBSRmMl8xAgkBBSRmMl8xAgkBBSRmMl8xAgkBBSRmMl8xAgkBBSRmMl8xAgkBBSRmMl8xAgkBBSRmMl8xAgkBBSRmMl8xAgUFJGFjYzAAAAABAAIAAwAEAAUABgAHAAgACQAKAAsADAANAA4ADwAQABEAEgATABQAFQAWABcAGAAZABoAGwAcAB0AHgAfACAAIQAiACMAJAAlACYAJwAoACkAKgArACwALQAuAC8AMAAxADICXzIJAGQCCQBkAgUId2hSZXNWb2wFCHdoTWF0Vm9sBQp3aEdvb2RzVm9sAQxnZXRXYXJlaG91c2UDBXdoS2V5CWxhbmRJbmRleAppbmZyYUxldmVsBAl2b2xQcmVmaXgJAKwCAgkArAICCQCkAwEFCWxhbmRJbmRleAIBXwkApAMBBQppbmZyYUxldmVsBAd3aFRvdGFsCQEXZ2V0V2FyZWhvdXNlVG90YWxWb2x1bWUBBQl2b2xQcmVmaXgEBXdoU3RyCQELdmFsdWVPckVsc2UCCQCiCAEFBXdoS2V5CQCsAgIFCXZvbFByZWZpeAIbOjBfMF8wXzBfMF8wOjBfMF8wXzBfMF8wOjowBAJ3aAkAvAkCBQV3aFN0cgIBOgQKd2hPY2N1cGllZAkBF2dldFdhcmVob3VzZU9jY3VwaWVkVm9sAQUCd2gEBndoTG9mdAMJAGYCAAUJAJADAQUCd2gJALkJAgkAzAgCAgEwCQDMCAIJAKQDAQUKd2hPY2N1cGllZAkAzAgCCQCkAwEJAGUCBQd3aFRvdGFsBQp3aE9jY3VwaWVkCQDMCAIJAKQDAQUHd2hUb3RhbAUDbmlsAgFfBARsb2Z0CQC1CQIJAJEDAgUCd2gFCXdoSWR4TE9GVAIBXwQId2hMb2NrZWQJAQ1wYXJzZUludFZhbHVlAQkAkQMCBQRsb2Z0BQl2b2xMb2NrZWQEA29jYwMJAGYCCQCQAwEFBGxvZnQAAQkBDXBhcnNlSW50VmFsdWUBCQCRAwIFBGxvZnQFC3ZvbE9jY3VwaWVkBQp3aE9jY3VwaWVkCQC5CQIJAMwIAgkApAMBBQh3aExvY2tlZAkAzAgCCQCkAwEFA29jYwkAzAgCCQCkAwEJAGUCCQBlAgUHd2hUb3RhbAUId2hMb2NrZWQFA29jYwkAzAgCCQCkAwEFB3doVG90YWwFA25pbAIBXwkAzAgCCQCRAwIFAndoBQt3aElkeExldmVscwkAzAgCAwkAAAIJAJADAQkAtQkCCQCRAwIFAndoBQh3aElkeFJlcwIBXwUGTlVNUkVTCQCRAwIFAndoBQh3aElkeFJlcwILMF8wXzBfMF8wXzAJAMwIAgMJAAACCQCQAwEJALUJAgkAkQMCBQJ3aAUId2hJZHhNYXQCAV8FBk5VTVJFUwkAkQMCBQJ3aAUId2hJZHhNYXQCCzBfMF8wXzBfMF8wCQDMCAIJAJEDAgUCd2gFCXdoSWR4UHJvZAkAzAgCBQZ3aExvZnQFA25pbAEVZ2V0V2FyZWhvdXNlU3BhY2VMZWZ0AQljdXJyZW50V2gEC29jY3VwaWVkVm9sCQEXZ2V0V2FyZWhvdXNlT2NjdXBpZWRWb2wBBQljdXJyZW50V2gED2N1cnJXaExvY2tlZFZvbAkBDXBhcnNlSW50VmFsdWUBCQCRAwIJALUJAgkAkQMCBQljdXJyZW50V2gFCXdoSWR4TE9GVAIBXwUJdm9sTG9ja2VkCQBlAgkAZQIJARdnZXRXYXJlaG91c2VUb3RhbFZvbHVtZQEJAJEDAgUJY3VycmVudFdoBQt3aElkeExldmVscwULb2NjdXBpZWRWb2wFD2N1cnJXaExvY2tlZFZvbAEJbW92ZVN0dWZmAwpjYXJnb1BhcnRzCWN1cnJlbnRXaAtjdXJyZW50UGFjawMJAQIhPQIJAJADAQUKY2FyZ29QYXJ0cwADCQACAQI0Y2FyZ29MaXN0U3RyIHNob3VsZCBjb250YWluIGV4YWN0bHkgMiAnOicgc2VwYXJhdG9ycwQIcmVzUGFydHMJALUJAgkAkQMCBQpjYXJnb1BhcnRzAAACAV8ECG1hdFBhcnRzCQC1CQIJAJEDAgUKY2FyZ29QYXJ0cwABAgFfBAlwcm9kUGFydHMDCQAAAgkAkQMCBQpjYXJnb1BhcnRzAAICAAUDbmlsCQC8CQIJAJEDAgUKY2FyZ29QYXJ0cwACAgFfAwkBAiE9AgkAkAMBBQhyZXNQYXJ0cwUGTlVNUkVTCQACAQIgQWxsIDYgcmVzb3VyY2VzIHNob3VsZCBiZSBwYXNzZWQDCQECIT0CCQCQAwEFCG1hdFBhcnRzBQZOVU1SRVMJAAIBAiBBbGwgNiBtYXRlcmlhbHMgc2hvdWxkIGJlIHBhc3NlZAQLd2hTcGFjZUxlZnQJARVnZXRXYXJlaG91c2VTcGFjZUxlZnQBBQljdXJyZW50V2gECWN1cnJXaFJlcwkAtQkCCQCRAwIFCWN1cnJlbnRXaAUId2hJZHhSZXMCAV8ECWN1cnJXaE1hdAkAtQkCCQCRAwIFCWN1cnJlbnRXaAUId2hJZHhNYXQCAV8ECmN1cnJXaFByb2QDCQAAAgkAkQMCBQljdXJyZW50V2gFCXdoSWR4UHJvZAIABQNuaWwJALwJAgkAkQMCBQljdXJyZW50V2gFCXdoSWR4UHJvZAIBXwQOY3VycmVudFBhY2tSZXMJALUJAgkAkQMCBQtjdXJyZW50UGFjawUIYnBJZHhSZXMCAV8EDmN1cnJlbnRQYWNrTWF0CQC1CQIJAJEDAgULY3VycmVudFBhY2sFCGJwSWR4TWF0AgFfBA9jdXJyZW50UGFja1Byb2QDCQAAAgkAkQMCBQtjdXJyZW50UGFjawUJYnBJZHhQcm9kAgAFA25pbAkAvAkCCQCRAwIFC2N1cnJlbnRQYWNrBQlicElkeFByb2QCAV8KAQNtdlICA2FjYwRpdGVtBAFpCAUDYWNjAl8xBAJhbQkBDXBhcnNlSW50VmFsdWUBBQRpdGVtBAN3aHIJAQ1wYXJzZUludFZhbHVlAQkAkQMCBQljdXJyV2hSZXMFAWkEA2JwcgkBDXBhcnNlSW50VmFsdWUBCQCRAwIFDmN1cnJlbnRQYWNrUmVzBQFpAwkAAAIFAmFtAAAJAJYKBAkAZAIFAWkAAQkAzQgCCAUDYWNjAl8yCQCRAwIFCWN1cnJXaFJlcwUBaQkAzQgCCAUDYWNjAl8zCQCRAwIFDmN1cnJlbnRQYWNrUmVzBQFpCAUDYWNjAl80AwkAZgIFAmFtAAADCQBmAgUCYW0FA2JwcgkAAgEJAKwCAgkArAICCQCsAgIJAKwCAgIQQXR0ZW1wdCB0byB0YWtlIAUEaXRlbQIZIGZyb20gYmFja3BhY2ssIGJ1dCBvbmx5IAkApAMBBQNicHICCiBhdmFpbGFibGUJAJYKBAkAZAIFAWkAAQkAzQgCCAUDYWNjAl8yCQCkAwEJAGQCBQN3aHIFAmFtCQDNCAIIBQNhY2MCXzMJAKQDAQkAZQIFA2JwcgUCYW0JAGQCCAUDYWNjAl80BQJhbQMJAGYCCQEBLQEFAmFtBQN3aHIJAAIBCQCsAgIJAKwCAgkArAICCQCsAgICEEF0dGVtcHQgdG8gdGFrZSAJAKQDAQkBAS0BBQJhbQIaIGZyb20gd2FyZWhvdXNlLCBidXQgb25seSAJAKQDAQUDd2hyAgogYXZhaWxhYmxlCQCWCgQJAGQCBQFpAAEJAM0IAggFA2FjYwJfMgkApAMBCQBkAgUDd2hyBQJhbQkAzQgCCAUDYWNjAl8zCQCkAwEJAGUCBQNicHIFAmFtCQBkAggFA2FjYwJfNAUCYW0EAXIKAAIkbAUIcmVzUGFydHMKAAIkcwkAkAMBBQIkbAoABSRhY2MwCQCWCgQAAAUDbmlsBQNuaWwAAAoBBSRmMF8xAgIkYQIkaQMJAGcCBQIkaQUCJHMFAiRhCQEDbXZSAgUCJGEJAJEDAgUCJGwFAiRpCgEFJGYwXzICAiRhAiRpAwkAZwIFAiRpBQIkcwUCJGEJAAIBAhNMaXN0IHNpemUgZXhjZWVkcyA2CQEFJGYwXzICCQEFJGYwXzECCQEFJGYwXzECCQEFJGYwXzECCQEFJGYwXzECCQEFJGYwXzECCQEFJGYwXzECBQUkYWNjMAAAAAEAAgADAAQABQAGCgEDbXZNAgNhY2MEaXRlbQQBaQgFA2FjYwJfMQQCYW0JAQ1wYXJzZUludFZhbHVlAQUEaXRlbQQDd2htCQENcGFyc2VJbnRWYWx1ZQEJAJEDAgUJY3VycldoTWF0BQFpBANicG0JAQ1wYXJzZUludFZhbHVlAQkAkQMCBQ5jdXJyZW50UGFja01hdAUBaQMJAAACBQJhbQAACQCWCgQJAGQCBQFpAAEJAM0IAggFA2FjYwJfMgkAkQMCBQljdXJyV2hNYXQFAWkJAM0IAggFA2FjYwJfMwkAkQMCBQ5jdXJyZW50UGFja01hdAUBaQgFA2FjYwJfNAMJAGYCBQJhbQAAAwkAZgIFAmFtBQNicG0JAAIBCQCsAgIJAKwCAgkArAICCQCsAgICEEF0dGVtcHQgdG8gdGFrZSAFBGl0ZW0CGSBmcm9tIGJhY2twYWNrLCBidXQgb25seSAJAKQDAQUDYnBtAgogYXZhaWxhYmxlCQCWCgQJAGQCBQFpAAEJAM0IAggFA2FjYwJfMgkApAMBCQBkAgUDd2htBQJhbQkAzQgCCAUDYWNjAl8zCQCkAwEJAGUCBQNicG0FAmFtCQBkAggFA2FjYwJfNAUCYW0DCQBmAgkBAS0BBQJhbQUDd2htCQACAQkArAICCQCsAgIJAKwCAgkArAICAhBBdHRlbXB0IHRvIHRha2UgCQCkAwEJAQEtAQUCYW0CGiBmcm9tIHdhcmVob3VzZSwgYnV0IG9ubHkgCQCkAwEFA3dobQIKIGF2YWlsYWJsZQkAlgoECQBkAgUBaQABCQDNCAIIBQNhY2MCXzIJAKQDAQkAZAIFA3dobQUCYW0JAM0IAggFA2FjYwJfMwkApAMBCQBlAgUDYnBtBQJhbQkAZAIIBQNhY2MCXzQFAmFtBAFtCgACJGwFCG1hdFBhcnRzCgACJHMJAJADAQUCJGwKAAUkYWNjMAkAlgoEAAAFA25pbAUDbmlsCAUBcgJfNAoBBSRmMV8xAgIkYQIkaQMJAGcCBQIkaQUCJHMFAiRhCQEDbXZNAgUCJGEJAJEDAgUCJGwFAiRpCgEFJGYxXzICAiRhAiRpAwkAZwIFAiRpBQIkcwUCJGEJAAIBAhNMaXN0IHNpemUgZXhjZWVkcyA2CQEFJGYxXzICCQEFJGYxXzECCQEFJGYxXzECCQEFJGYxXzECCQEFJGYxXzECCQEFJGYxXzECCQEFJGYxXzECBQUkYWNjMAAAAAEAAgADAAQABQAGCgEDbXZQAgNhY2MEaXRlbQQBaQgFA2FjYwJfMQQCYW0JAQ1wYXJzZUludFZhbHVlAQUEaXRlbQQDd2hwAwkAZgIJAJADAQUKY3VycldoUHJvZAUBaQkBDXBhcnNlSW50VmFsdWUBCQCRAwIFCmN1cnJXaFByb2QFAWkAAAQDYnBwAwkAZgIJAJADAQUPY3VycmVudFBhY2tQcm9kBQFpCQENcGFyc2VJbnRWYWx1ZQEJAJEDAgUPY3VycmVudFBhY2tQcm9kBQFpAAADCQAAAgUCYW0AAAkAlgoECQBkAgUBaQABCQDNCAIIBQNhY2MCXzIJAKQDAQUDd2hwCQDNCAIIBQNhY2MCXzMJAKQDAQUDYnBwCAUDYWNjAl80AwkAZgIFAmFtAAADCQBmAgUCYW0FA2JwcAkAAgEJAKwCAgkArAICCQCsAgIJAKwCAgIQQXR0ZW1wdCB0byB0YWtlIAUEaXRlbQIZIGZyb20gYmFja3BhY2ssIGJ1dCBvbmx5IAkApAMBBQNicHACCiBhdmFpbGFibGUECGRlbHRhVm9sCQBlAgkBCHRvVm9sdW1lAgkAZAIFA3docAUCYW0FDlBST0RVQ1RQS0dTSVpFCQEIdG9Wb2x1bWUCBQN3aHAFDlBST0RVQ1RQS0dTSVpFCQCWCgQJAGQCBQFpAAEJAM0IAggFA2FjYwJfMgkApAMBCQBkAgUDd2hwBQJhbQkAzQgCCAUDYWNjAl8zCQCkAwEJAGUCBQNicHAFAmFtCQBkAggFA2FjYwJfNAUIZGVsdGFWb2wDCQBmAgkBAS0BBQJhbQUDd2hwCQACAQkArAICCQCsAgIJAKwCAgkArAICAhBBdHRlbXB0IHRvIHRha2UgCQCkAwEJAQEtAQUCYW0CGiBmcm9tIHdhcmVob3VzZSwgYnV0IG9ubHkgCQCkAwEFA3docAIKIGF2YWlsYWJsZQQIZGVsdGFWb2wJAGUCCQEIdG9Wb2x1bWUCCQBkAgUDd2hwBQJhbQUOUFJPRFVDVFBLR1NJWkUJAQh0b1ZvbHVtZQIFA3docAUOUFJPRFVDVFBLR1NJWkUJAJYKBAkAZAIFAWkAAQkAzQgCCAUDYWNjAl8yCQCkAwEJAGQCBQN3aHAFAmFtCQDNCAIIBQNhY2MCXzMJAKQDAQkAZQIFA2JwcAUCYW0JAGQCCAUDYWNjAl80BQhkZWx0YVZvbAQBcAMJAQIhPQIJAJADAQUJcHJvZFBhcnRzAAAKAAIkbAUJcHJvZFBhcnRzCgACJHMJAJADAQUCJGwKAAUkYWNjMAkAlgoEAAAFA25pbAUDbmlsCAUBbQJfNAoBBSRmMl8xAgIkYQIkaQMJAGcCBQIkaQUCJHMFAiRhCQEDbXZQAgUCJGEJAJEDAgUCJGwFAiRpCgEFJGYyXzICAiRhAiRpAwkAZwIFAiRpBQIkcwUCJGEJAAIBAhRMaXN0IHNpemUgZXhjZWVkcyA1MAkBBSRmMl8yAgkBBSRmMl8xAgkBBSRmMl8xAgkBBSRmMl8xAgkBBSRmMl8xAgkBBSRmMl8xAgkBBSRmMl8xAgkBBSRmMl8xAgkBBSRmMl8xAgkBBSRmMl8xAgkBBSRmMl8xAgkBBSRmMl8xAgkBBSRmMl8xAgkBBSRmMl8xAgkBBSRmMl8xAgkBBSRmMl8xAgkBBSRmMl8xAgkBBSRmMl8xAgkBBSRmMl8xAgkBBSRmMl8xAgkBBSRmMl8xAgkBBSRmMl8xAgkBBSRmMl8xAgkBBSRmMl8xAgkBBSRmMl8xAgkBBSRmMl8xAgkBBSRmMl8xAgkBBSRmMl8xAgkBBSRmMl8xAgkBBSRmMl8xAgkBBSRmMl8xAgkBBSRmMl8xAgkBBSRmMl8xAgkBBSRmMl8xAgkBBSRmMl8xAgkBBSRmMl8xAgkBBSRmMl8xAgkBBSRmMl8xAgkBBSRmMl8xAgkBBSRmMl8xAgkBBSRmMl8xAgkBBSRmMl8xAgkBBSRmMl8xAgkBBSRmMl8xAgkBBSRmMl8xAgkBBSRmMl8xAgkBBSRmMl8xAgkBBSRmMl8xAgkBBSRmMl8xAgkBBSRmMl8xAgkBBSRmMl8xAgUFJGFjYzAAAAABAAIAAwAEAAUABgAHAAgACQAKAAsADAANAA4ADwAQABEAEgATABQAFQAWABcAGAAZABoAGwAcAB0AHgAfACAAIQAiACMAJAAlACYAJwAoACkAKgArACwALQAuAC8AMAAxADIJAJYKBAAABQpjdXJyV2hQcm9kBQ9jdXJyZW50UGFja1Byb2QIBQFtAl80BAh2b2xTYWxkbwgFAXACXzQDCQBmAgUIdm9sU2FsZG8FC3doU3BhY2VMZWZ0CQACAQkArAICCQCsAgIJAKwCAgkArAICAhVBdHRlbXB0IHRvIHB1dCB0b3RhbCAJAKQDAQUIdm9sU2FsZG8CESBzdHVmZiwgYnV0IG9ubHkgCQCkAwEFC3doU3BhY2VMZWZ0AhUgd2FyZWhvdXNlIHNwYWNlIGxlZnQJAJkKBwkAuQkCCAUBcgJfMgIBXwkAuQkCCAUBbQJfMgIBXwkAugkCCAUBcAJfMgIBXwkAuQkCCAUBcgJfMwIBXwkAuQkCCAUBbQJfMwIBXwkAugkCCAUBcAJfMwIBXwUIdm9sU2FsZG8BEmV4cGVkaXRpb25JbnRlcm5hbAIGY2FsbGVyBHR4SWQECHVzZXJBZGRyCQClCAEFBmNhbGxlcgQGYmlnTnVtCQEDYWJzAQkAngMBBQR0eElkBAdmcmVlTnVtCQELdmFsdWVPckVsc2UCCQCfCAEJARJrZXlOZXh0RnJlZUxhbmROdW0ACQBkAgUPUFJFU0FMRU5VTUxBTkRTAAEEB2xhbmROdW0JAKQDAQUHZnJlZU51bQQMY29udGluZW50SWR4CQCgAwEJALsCAgUGYmlnTnVtBQVGSVZFWAQIdGVycmFpbnMJAQtnZW5UZXJyYWlucwIFBmJpZ051bQUMY29udGluZW50SWR4BAljb250aW5lbnQJAJEDAgUKY29udGluZW50cwUMY29udGluZW50SWR4BAVpc3N1ZQkAwggFCQEHbmZ0TmFtZQIFB2xhbmROdW0CAVMJALkJAgkAzAgCBQdsYW5kTnVtCQDMCAICAVMJAMwIAgUIdGVycmFpbnMJAMwIAgUJY29udGluZW50BQNuaWwCAV8AAQAABwQHYXNzZXRJZAkAuAgBBQVpc3N1ZQQCaWQJANgEAQUHYXNzZXRJZAkAlAoCCQDMCAIJAQxJbnRlZ2VyRW50cnkCCQESa2V5TmV4dEZyZWVMYW5kTnVtAAkAZAIFB2ZyZWVOdW0AAQkAzAgCBQVpc3N1ZQkAzAgCCQELU3RyaW5nRW50cnkCCQEQa2V5TGFuZFRvQXNzZXRJZAEFB2xhbmROdW0FAmlkCQDMCAIJAQtTdHJpbmdFbnRyeQIJARVrZXlMYW5kQXNzZXRJZFRvT3duZXIBBQJpZAUIdXNlckFkZHIJAMwIAgkBC1N0cmluZ0VudHJ5AgkBEWtleUxhbmROdW1Ub093bmVyAQUHbGFuZE51bQUIdXNlckFkZHIJAMwIAgkBDEludGVnZXJFbnRyeQIJARZrZXlJbmZyYUxldmVsQnlBc3NldElkAQUCaWQAAAkAzAgCCQEMSW50ZWdlckVudHJ5AgkBHmtleUluZnJhTGV2ZWxCeUFzc2V0SWRBbmRPd25lcgIFAmlkBQh1c2VyQWRkcgAACQDMCAIJAQ5TY3JpcHRUcmFuc2ZlcgMFBmNhbGxlcgABBQdhc3NldElkBQNuaWwJAJQKAgUCaWQFCWNvbnRpbmVudAEMZmxpZ2h0Q29tbW9uAwh1c2VyQWRkcgdtZXNzYWdlA3NpZwMJAQEhAQkAxBMDBQdtZXNzYWdlBQNzaWcFA3B1YgkAAgECGHNpZ25hdHVyZSBkb2VzIG5vdCBtYXRjaAQFcGFydHMJALwJAgkAsAkBBQdtZXNzYWdlAgE7BAlmbGlnaHRMb2cJALwJAgkAkQMCBQVwYXJ0cwAAAgF8BAJocAkAtQkCCQCRAwIFCWZsaWdodExvZwUIZmxIZWFsdGgCAV8EBWN1ckhQCQENcGFyc2VJbnRWYWx1ZQEJAJEDAgUCaHAAAAQFbmV3SFAJAQ1wYXJzZUludFZhbHVlAQkAkQMCBQJocAABBAtuZXdMb2NUeFZlcgkAtQkCCQCRAwIFBXBhcnRzAAECAToEC25ld0xvY2F0aW9uCQCRAwIFC25ld0xvY1R4VmVyAAAEBHRpbWUJAQ1wYXJzZUludFZhbHVlAQkAkQMCBQlmbGlnaHRMb2cFC2ZsVGltZXN0YW1wAwMJAGYCBQR0aW1lCQBkAggFCWxhc3RCbG9jawl0aW1lc3RhbXAFEUZJVkVNSU5VVEVTTUlMTElTBgkAZgIJAGUCCAUJbGFzdEJsb2NrCXRpbWVzdGFtcAURRklWRU1JTlVURVNNSUxMSVMFBHRpbWUJAAIBCQCsAgIJAKwCAgkArAICAhxzaWduYXR1cmUgb3V0ZGF0ZWQ6IGxvZ1RpbWU9CQCkAwEFBHRpbWUCCSwgYmNUaW1lPQkApAMBCAUJbGFzdEJsb2NrCXRpbWVzdGFtcAQJdHhGcm9tTXNnCQCRAwIFC25ld0xvY1R4VmVyAAEEBmxhc3RUeAkBC3ZhbHVlT3JFbHNlAgkAoggBCQERa2V5TGFzdFR4SWRCeVVzZXIBBQh1c2VyQWRkcgIAAwkBAiE9AgUGbGFzdFR4BQl0eEZyb21Nc2cJAAIBCQCsAgIJAKwCAgkArAICAh5UeCBpZHMgZG9uJ3QgbWF0Y2ghIEluIHN0YXRlOiAFBmxhc3RUeAIKLCBpbiBtc2c6IAUJdHhGcm9tTXNnBAtkdWNrQXNzZXRJZAkBE3ZhbHVlT3JFcnJvck1lc3NhZ2UCCQCiCAEJARRrZXlTdGFrZWREdWNrQnlPd25lcgEFCHVzZXJBZGRyAhxZb3UgZG9uJ3QgaGF2ZSBhIGR1Y2sgc3Rha2VkBAlrZXlIZWFsdGgJAQ1rZXlEdWNrSGVhbHRoAQULZHVja0Fzc2V0SWQEBW1heEhQCQEJbWF4SGVhbHRoAQkBC3ZhbHVlT3JFbHNlAgkAnwgBCQEMa2V5RHVja0xldmVsAQULZHVja0Fzc2V0SWQAAAQMb2xkRnJvbVN0YXRlCQELdmFsdWVPckVsc2UCCQCfCAEFCWtleUhlYWx0aAUFbWF4SFADCQECIT0CBQxvbGRGcm9tU3RhdGUFBWN1ckhQCQACAQkArAICCQCsAgIJAKwCAgIKb2xkSGVhbHRoPQkApAMBBQxvbGRGcm9tU3RhdGUCLyBmcm9tIHN0YXRlIGRvZXMgbm90IG1hdGNoIG9uZSBmcm9tIGZsaWdodCBsb2c9CQCkAwEFBWN1ckhQAwkAZwIAAAUFY3VySFAJAAIBAh5Zb3UgY2FuJ3QgZmx5IHdpdGggemVybyBoZWFsdGgDCQEBIQEJARdjYW5XZWFyQ3VycmVudEVxdWlwbWVudAEFC2R1Y2tBc3NldElkCQACAQIWRXF1aXBtZW50IGluY29tcGF0aWJsZQQFYm9udXMDCQBmAgkAkAMBBQlmbGlnaHRMb2cFB2ZsQm9udXMJAJEDAgUJZmxpZ2h0TG9nBQdmbEJvbnVzAgAECHByb2RVc2VkAwkAZgIJAJADAQUJZmxpZ2h0TG9nBQtmbFByb2RzVXNlZAkAkQMCBQlmbGlnaHRMb2cFC2ZsUHJvZHNVc2VkAgAECnNlbnRBbW91bnQDAwkAZgIFBW5ld0hQAAAJAAACBQVib251cwIBJAcJAQVhc0ludAEJAPwHBAUMcmVzdENvbnRyYWN0Ag1zZW5kVXNkdFByaXplCQDMCAIFCHVzZXJBZGRyBQNuaWwFA25pbAAACQCXCgUFBW5ld0hQBQtkdWNrQXNzZXRJZAUKc2VudEFtb3VudAULbmV3TG9jYXRpb24FCHByb2RVc2VkAQxhcHBseUJvbnVzZXMCC2xhbmRBc3NldElkBnBpZWNlcwQKaW5mcmFMZXZlbAkBC3ZhbHVlT3JFbHNlAgkAnwgBCQEWa2V5SW5mcmFMZXZlbEJ5QXNzZXRJZAEFC2xhbmRBc3NldElkAAAECWFydFBpZWNlcwkBC3ZhbHVlT3JFbHNlAgkAnwgBCQEga2V5TGFuZEFydFN0YXR1c0J5VHlwZUFuZEFzc2V0SWQCBQpBUlRQUkVTQUxFBQtsYW5kQXNzZXRJZAAABARhZGQ2CQBpAgUKaW5mcmFMZXZlbAAGBARhZGQ3CQBpAgUKaW5mcmFMZXZlbAAHCQBkAgkAZAIFD0RBSUxZUkVTQllQSUVDRQkAawMFD0RBSUxZUkVTQllQSUVDRQkAZAIJAGQCBQppbmZyYUxldmVsBQRhZGQ2CQBoAgACBQRhZGQ3AAUJAGsDBQ9EQUlMWVJFU0JZUElFQ0UFCWFydFBpZWNlcwkAaAIFBnBpZWNlcwAFARRjaGVja0NsYWltQ29uZGl0aW9ucwMEYWRkcgljbGFpbU1vZGUNbGFuZEFzc2V0SWRJbgQNJHQwMzM2NzgzNDIxNwMJAAACBQljbGFpbU1vZGUFC2NsYWltTW9kZVdoCQCUCgIFDWxhbmRBc3NldElkSW4JAQt2YWx1ZU9yRWxzZQIJAKIIAQkBFGtleVN0YWtlZER1Y2tCeU93bmVyAQUEYWRkcgIABAtkdWNrQXNzZXRJZAkBE3ZhbHVlT3JFcnJvck1lc3NhZ2UCCQCiCAEJARRrZXlTdGFrZWREdWNrQnlPd25lcgEFBGFkZHICHFlvdSBkb24ndCBoYXZlIGEgZHVjayBzdGFrZWQEC2N1ckxvY2F0aW9uCQELdmFsdWVPckVsc2UCCQCiCAEJAQ9rZXlEdWNrTG9jYXRpb24BBQtkdWNrQXNzZXRJZAUPREVGQVVMVExPQ0FUSU9OBANsb2MJALUJAgkBBXZhbHVlAQULY3VyTG9jYXRpb24CAV8DCQECIT0CCQCRAwIFA2xvYwUKbG9jSWR4VHlwZQIBTAkAAgEJAKwCAgkArAICAhZEdWNrIGxvY2F0aW9uIHR5cGUgaXMgCQCRAwIFA2xvYwUKbG9jSWR4VHlwZQIRLCBidXQgc2hvdWxkIGJlIEwJAJQKAgkAkQMCBQNsb2MFCGxvY0lkeElkBQtkdWNrQXNzZXRJZAQLbGFuZEFzc2V0SWQIBQ0kdDAzMzY3ODM0MjE3Al8xBAZkdWNrSWQIBQ0kdDAzMzY3ODM0MjE3Al8yBAVhc3NldAkBBXZhbHVlAQkA7AcBCQDZBAEFC2xhbmRBc3NldElkBAd0aW1lS2V5CQEWa2V5U3Rha2VkVGltZUJ5QXNzZXRJZAEFC2xhbmRBc3NldElkBAlzYXZlZFRpbWUJARN2YWx1ZU9yRXJyb3JNZXNzYWdlAgkAnwgBBQd0aW1lS2V5CQCsAgIJAKwCAgIFTGFuZCAIBQVhc3NldARuYW1lAg4gaXMgbm90IHN0YWtlZAQFb3duZXIJARN2YWx1ZU9yRXJyb3JNZXNzYWdlAgkAoggBCQEVa2V5TGFuZEFzc2V0SWRUb093bmVyAQULbGFuZEFzc2V0SWQJAKwCAgkArAICAgRORlQgCAUFYXNzZXQEbmFtZQIMIGlzIG9ycGhhbmVkAwkBAiE9AgUFb3duZXIFBGFkZHIJAAIBCQCsAgIFCkxBTkRQUkVGSVgCDSBpcyBub3QgeW91cnMEAWQJALUJAggFBWFzc2V0C2Rlc2NyaXB0aW9uAgFfCQCWCgQFBmR1Y2tJZAULbGFuZEFzc2V0SWQFAWQFCXNhdmVkVGltZQEQY2xhaW1SZXNJbnRlcm5hbAQEYWRkcgZhbW91bnQJY2xhaW1Nb2RlDWxhbmRBc3NldElkSW4DCQBmAgAABQZhbW91bnQJAAIBAg9OZWdhdGl2ZSBhbW91bnQEAWMJARRjaGVja0NsYWltQ29uZGl0aW9ucwMFBGFkZHIFCWNsYWltTW9kZQUNbGFuZEFzc2V0SWRJbgQIbGFuZFNpemUJAJEDAggFAWMCXzMFC3JlY0xhbmRTaXplBA10ZXJyYWluQ291bnRzCQENY291bnRUZXJyYWlucwEJAJEDAggFAWMCXzMFC3JlY1RlcnJhaW5zBAlkZWx0YVRpbWUJAGUCCAUJbGFzdEJsb2NrCXRpbWVzdGFtcAgFAWMCXzQDCQBmAgAABQlkZWx0YVRpbWUJAAIBCQCsAgIJAKwCAgkArAICAiZTYXZlZCB0aW1lc3RhbXAgaXMgaW4gZnV0dXJlLCBzYXZlZCA9IAkApAMBCAUBYwJfNAIMLCBjdXJyZW50ID0gCQCkAwEIBQlsYXN0QmxvY2sJdGltZXN0YW1wBAZwaWVjZXMJAQ9udW1QaWVjZXNCeVNpemUBBQhsYW5kU2l6ZQQWZGFpbHlQcm9kdWN0aW9uQnlQaWVjZQkBDGFwcGx5Qm9udXNlcwIIBQFjAl8yBQZwaWVjZXMECGF2YWlsUmVzCQBrAwUJZGVsdGFUaW1lCQBoAgUWZGFpbHlQcm9kdWN0aW9uQnlQaWVjZQUGcGllY2VzBQlEQVlNSUxMSVMDCQBmAgUGYW1vdW50BQhhdmFpbFJlcwkAAgEJAKwCAgkArAICCQCsAgICIk5vdCBlbm91Z2ggcmVzb3VyY2VzLCBhdmFpbGFibGUgPSAJAKQDAQUIYXZhaWxSZXMCDiwgcmVxdWVzdGVkID0gCQCkAwEFBmFtb3VudAQMbmV3RGVsdGFUaW1lCQBrAwkAZQIFCGF2YWlsUmVzBQZhbW91bnQFCURBWU1JTExJUwkAaAIFFmRhaWx5UHJvZHVjdGlvbkJ5UGllY2UFBnBpZWNlcwQMbmV3VGltZXN0YW1wCQBlAggFCWxhc3RCbG9jawl0aW1lc3RhbXAFDG5ld0RlbHRhVGltZQQJbGFuZEluZGV4CQBpAgUGcGllY2VzBQVTU0laRQQKcmVzVG9DbGFpbQkBCXZpcnRDbGFpbQQFDXRlcnJhaW5Db3VudHMJAGUCBQlkZWx0YVRpbWUFDG5ld0RlbHRhVGltZQUJbGFuZEluZGV4BRZkYWlseVByb2R1Y3Rpb25CeVBpZWNlBAV3aEtleQkBEmtleVdhcmVob3VzZUJ5TGFuZAEIBQFjAl8yBAppbmZyYUxldmVsCQELdmFsdWVPckVsc2UCCQCfCAEJARZrZXlJbmZyYUxldmVsQnlBc3NldElkAQgFAWMCXzIAAAQJY3VycmVudFdoCQEMZ2V0V2FyZWhvdXNlAwUFd2hLZXkFCWxhbmRJbmRleAUKaW5mcmFMZXZlbAQEbG9mdAkAtQkCCQCRAwIFCWN1cnJlbnRXaAUJd2hJZHhMT0ZUAgFfBAt3aFNwYWNlTGVmdAkBDXBhcnNlSW50VmFsdWUBCQCRAwIFBGxvZnQFB3ZvbEZyZWUDAwkAAAIFCWNsYWltTW9kZQULY2xhaW1Nb2RlV2gJAGYCBQZhbW91bnQFC3doU3BhY2VMZWZ0BwkAAgEJAKwCAgkArAICAgVPbmx5IAkApAMBBQt3aFNwYWNlTGVmdAIYIHNwYWNlIGxlZnQgaW4gd2FyZWhvdXNlBAVicEtleQkBEWtleUJhY2twYWNrQnlEdWNrAQgFAWMCXzEEC2N1cnJlbnRQYWNrCQELZ2V0QmFja3BhY2sBBQVicEtleQQOY3VycmVudFBhY2tSZXMJALUJAgkAkQMCBQtjdXJyZW50UGFjawUIYnBJZHhSZXMCAV8EDGN1cnJlbnRXaFJlcwkAtQkCCQCRAwIFCWN1cnJlbnRXaAUId2hJZHhSZXMCAV8EDSR0MDM2NTkxMzc0NjIDCQAAAgUJY2xhaW1Nb2RlBQtjbGFpbU1vZGVXaAkAlgoECQEGYWRkUmVzBQUMY3VycmVudFdoUmVzBQ10ZXJyYWluQ291bnRzCQBlAgUJZGVsdGFUaW1lBQxuZXdEZWx0YVRpbWUFCWxhbmRJbmRleAUWZGFpbHlQcm9kdWN0aW9uQnlQaWVjZQkAkQMCBQtjdXJyZW50UGFjawUIYnBJZHhSZXMJAGQCCQENcGFyc2VJbnRWYWx1ZQEJAJEDAgUEbG9mdAULdm9sT2NjdXBpZWQIBQpyZXNUb0NsYWltAl8yCQBlAgkBDXBhcnNlSW50VmFsdWUBCQCRAwIFBGxvZnQFB3ZvbEZyZWUIBQpyZXNUb0NsYWltAl8yAwkAAAIFCWNsYWltTW9kZQUNY2xhaW1Nb2RlRHVjawkAlgoECQCRAwIFCWN1cnJlbnRXaAUId2hJZHhSZXMJAQZhZGRSZXMFBQ5jdXJyZW50UGFja1JlcwUNdGVycmFpbkNvdW50cwkAZQIFCWRlbHRhVGltZQUMbmV3RGVsdGFUaW1lBQlsYW5kSW5kZXgFFmRhaWx5UHJvZHVjdGlvbkJ5UGllY2UJAQ1wYXJzZUludFZhbHVlAQkAkQMCBQRsb2Z0BQt2b2xPY2N1cGllZAkBDXBhcnNlSW50VmFsdWUBCQCRAwIFBGxvZnQFB3ZvbEZyZWUEBWRpc3RyCQENZGlzdHJpYnV0ZVJlcwQFDGN1cnJlbnRXaFJlcwUOY3VycmVudFBhY2tSZXMFCnJlc1RvQ2xhaW0FC3doU3BhY2VMZWZ0BAR3aEFtCQCXAwEJAMwIAgkBDXBhcnNlSW50VmFsdWUBCQCRAwIFBGxvZnQFB3ZvbEZyZWUJAMwIAggFCnJlc1RvQ2xhaW0CXzIFA25pbAkAlgoECAUFZGlzdHICXzEIBQVkaXN0cgJfMgkAZAIJAQ1wYXJzZUludFZhbHVlAQkAkQMCBQRsb2Z0BQt2b2xPY2N1cGllZAUEd2hBbQkAZQIJAQ1wYXJzZUludFZhbHVlAQkAkQMCBQRsb2Z0BQd2b2xGcmVlBQR3aEFtBAV3aFJlcwgFDSR0MDM2NTkxMzc0NjICXzEEBWJwUmVzCAUNJHQwMzY1OTEzNzQ2MgJfMgQFbG9mdE8IBQ0kdDAzNjU5MTM3NDYyAl8zBAVsb2Z0RggFDSR0MDM2NTkxMzc0NjICXzQJAJcKBQkAzAgCCQEMSW50ZWdlckVudHJ5AgkBFmtleVN0YWtlZFRpbWVCeUFzc2V0SWQBCAUBYwJfMgUMbmV3VGltZXN0YW1wCQDMCAIJAQxJbnRlZ2VyRW50cnkCCQEia2V5U3Rha2VkVGltZUJ5VHlwZUFzc2V0SWRBbmRPd25lcgMFCkxBTkRQUkVGSVgIBQFjAl8yBQRhZGRyBQxuZXdUaW1lc3RhbXAFA25pbAUFYnBLZXkJAMwIAgkAkQMCBQtjdXJyZW50UGFjawUKYnBJZHhMZXZlbAkAzAgCBQVicFJlcwkAzAgCCQCRAwIFC2N1cnJlbnRQYWNrBQhicElkeE1hdAkAzAgCCQCRAwIFC2N1cnJlbnRQYWNrBQlicElkeFByb2QFA25pbAUFd2hLZXkJAMwIAgkAkQMCBQljdXJyZW50V2gFC3doSWR4TGV2ZWxzCQDMCAIFBXdoUmVzCQDMCAIJAJEDAgUJY3VycmVudFdoBQh3aElkeE1hdAkAzAgCCQCRAwIFCWN1cnJlbnRXaAUJd2hJZHhQcm9kCQDMCAIJALkJAgkAzAgCCQCRAwIFBGxvZnQFCXZvbExvY2tlZAkAzAgCCQCkAwEFBWxvZnRPCQDMCAIJAKQDAQUFbG9mdEYJAMwIAgkAkQMCBQRsb2Z0BQh2b2xUb3RhbAUDbmlsAgFfBQNuaWwBCGNsYWltQWxsBARhZGRyC2xhbmRBc3NldElkBnBpZWNlcwljbGFpbU1vZGUEB3RpbWVLZXkJARZrZXlTdGFrZWRUaW1lQnlBc3NldElkAQULbGFuZEFzc2V0SWQECXNhdmVkVGltZQkBBXZhbHVlAQkAnwgBBQd0aW1lS2V5BAhhdmFpbFJlcwkAaAIJAGsDCQBlAggFCWxhc3RCbG9jawl0aW1lc3RhbXAFCXNhdmVkVGltZQkBDGFwcGx5Qm9udXNlcwIFC2xhbmRBc3NldElkBQZwaWVjZXMFCURBWU1JTExJUwUGcGllY2VzCQEQY2xhaW1SZXNJbnRlcm5hbAQFBGFkZHIFCGF2YWlsUmVzBQljbGFpbU1vZGUFC2xhbmRBc3NldElkAQ11cEluZnJhQ29tbW9uBAxzaG91bGRVc2VNYXQGY2FsbGVyDXBheW1lbnRBbW91bnQLbGFuZEFzc2V0SWQEBGFkZHIJAKUIAQUGY2FsbGVyBAFjCQEUY2hlY2tDbGFpbUNvbmRpdGlvbnMDBQRhZGRyBRNjbGFpbU1vZGVXaFRoZW5EdWNrBQtsYW5kQXNzZXRJZAQGcGllY2VzCQEPbnVtUGllY2VzQnlTaXplAQkAkQMCCAUBYwJfMwULcmVjTGFuZFNpemUECGluZnJhS2V5CQEWa2V5SW5mcmFMZXZlbEJ5QXNzZXRJZAEIBQFjAl8yBAhjdXJMZXZlbAkBC3ZhbHVlT3JFbHNlAgkAnwgBBQhpbmZyYUtleQAAAwMJAQEhAQUYS1NfQUxMT1dfQklHX0lORlJBX01FUkdFCQBnAgUIY3VyTGV2ZWwAAwcJAAIBAiZDdXJyZW50bHkgbWF4IGluZnJhc3RydWN0dXJlIGxldmVsID0gMwQIbWF4SW5mcmEJAGQCCQBpAgkBBHNxcnQEBQZwaWVjZXMAAAAABQRET1dOAAUAAgQIbmV3TGV2ZWwJAGQCBQhjdXJMZXZlbAABAwMFGEtTX0FMTE9XX0JJR19JTkZSQV9NRVJHRQkAZgIFCG5ld0xldmVsBQhtYXhJbmZyYQcJAAIBCQCsAgICJUN1cnJlbnRseSBtYXggaW5mcmFzdHJ1Y3R1cmUgbGV2ZWwgPSAJAKQDAQUIbWF4SW5mcmEEBGNvc3QJAGsDBRVJbmZyYVVwZ3JhZGVDb3N0U1VzZHQJAGgCBQZwaWVjZXMFCG5ld0xldmVsBQVTU0laRQMDCQEBIQEFDHNob3VsZFVzZU1hdAkBAiE9AgUNcGF5bWVudEFtb3VudAUEY29zdAcJAAIBCQCsAgICG1BheW1lbnQgYXR0YWNoZWQgc2hvdWxkIGJlIAkApAMBBQRjb3N0BAVicEtleQkBEWtleUJhY2twYWNrQnlEdWNrAQgFAWMCXzEEC2N1cnJlbnRQYWNrCQELZ2V0QmFja3BhY2sBBQVicEtleQQFbUxpc3QJALUJAgkAkQMCBQtjdXJyZW50UGFjawUIYnBJZHhNYXQCAV8EB21hdFVzZWQJAGsDBRFJbmZyYVVwZ3JhZGVDb3N0UwkAaAIFBnBpZWNlcwUIbmV3TGV2ZWwFBVNTSVpFBAZuZXdNYXQJALkJAgkBEXN1YnRyYWN0TWF0ZXJpYWxzAwUMc2hvdWxkVXNlTWF0BQVtTGlzdAUHbWF0VXNlZAIBXwQLY2xhaW1SZXN1bHQJAQhjbGFpbUFsbAQFBGFkZHIIBQFjAl8yBQZwaWVjZXMFE2NsYWltTW9kZVdoVGhlbkR1Y2sEBndoRGF0YQgFC2NsYWltUmVzdWx0Al81BAZvbGRWb2wJARdnZXRXYXJlaG91c2VUb3RhbFZvbHVtZQEJAJEDAgUGd2hEYXRhBQt3aElkeExldmVscwQKbmV3Vm9sRGF0YQkAuQkCCQDMCAIJAJEDAgkAtQkCCQCRAwIFBndoRGF0YQULd2hJZHhMZXZlbHMCAV8AAAkAzAgCCQCkAwEFCG5ld0xldmVsBQNuaWwCAV8EBm5ld1ZvbAkBF2dldFdhcmVob3VzZVRvdGFsVm9sdW1lAQUKbmV3Vm9sRGF0YQQEbG9mdAkAtQkCCQCRAwIFBndoRGF0YQUJd2hJZHhMT0ZUAgFfBApuZXdMb2Z0U3RyCQC5CQIJAMwIAgkAkQMCBQRsb2Z0BQl2b2xMb2NrZWQJAMwIAgkAkQMCBQRsb2Z0BQt2b2xPY2N1cGllZAkAzAgCCQCkAwEJAGUCCQBkAgkBDXBhcnNlSW50VmFsdWUBCQCRAwIFBGxvZnQFB3ZvbEZyZWUFBm5ld1ZvbAUGb2xkVm9sCQDMCAIJAKQDAQUGbmV3Vm9sBQNuaWwCAV8JAJUKAwkAzggCCQDMCAIJAQxJbnRlZ2VyRW50cnkCBQhpbmZyYUtleQUIbmV3TGV2ZWwJAMwIAgkBDEludGVnZXJFbnRyeQIJAR5rZXlJbmZyYUxldmVsQnlBc3NldElkQW5kT3duZXICCAUBYwJfMgUEYWRkcgUIbmV3TGV2ZWwJAMwIAgkBC1N0cmluZ0VudHJ5AgUFYnBLZXkJALkJAgkAzAgCCQCRAwIFC2N1cnJlbnRQYWNrBQpicElkeExldmVsCQDMCAIJAJEDAggFC2NsYWltUmVzdWx0Al8zBQhicElkeFJlcwkAzAgCBQZuZXdNYXQJAMwIAgkAkQMCBQtjdXJyZW50UGFjawUJYnBJZHhQcm9kBQNuaWwCAToJAMwIAgkBC1N0cmluZ0VudHJ5AggFC2NsYWltUmVzdWx0Al80CQC5CQIJAMwIAgUKbmV3Vm9sRGF0YQkAzAgCCQCRAwIFBndoRGF0YQUId2hJZHhSZXMJAMwIAgkAkQMCBQZ3aERhdGEFCHdoSWR4TWF0CQDMCAIJAJEDAgUGd2hEYXRhBQl3aElkeFByb2QJAMwIAgUKbmV3TG9mdFN0cgUDbmlsAgE6BQNuaWwIBQtjbGFpbVJlc3VsdAJfMQUIbmV3TGV2ZWwFB21hdFVzZWQBE3VwZGF0ZVN0YXRzSW50ZXJuYWwEBmx2bEtleQV4cEtleQlwb2ludHNLZXkHZGVsdGFYUAQCeHAJAQt2YWx1ZU9yRWxzZQIJAJ8IAQUFeHBLZXkAAAQFbmV3WFAJAGQCBQJ4cAUHZGVsdGFYUAQJbHZsUG9pbnRzCQEHbGV2ZWxVcAIJAQt2YWx1ZU9yRWxzZQIJAJ8IAQUGbHZsS2V5AAAFBW5ld1hQCQCUCgIJAMwIAgkBDEludGVnZXJFbnRyeQIFBmx2bEtleQkAkQMCBQlsdmxQb2ludHMAAAkAzAgCCQEMSW50ZWdlckVudHJ5AgUFeHBLZXkFBW5ld1hQCQDMCAIJAQxJbnRlZ2VyRW50cnkCBQlwb2ludHNLZXkJAGQCCQELdmFsdWVPckVsc2UCCQCfCAEFCXBvaW50c0tleQAACQCRAwIFCWx2bFBvaW50cwABBQNuaWwFBW5ld1hQARd1cGRhdGVEdWNrU3RhdHNJbnRlcm5hbAILZHVja0Fzc2V0SWQHZGVsdGFYUAQFYXNzZXQJAQV2YWx1ZQEJAOwHAQkA2QQBBQtkdWNrQXNzZXRJZAQEYWRkcgkBE3ZhbHVlT3JFcnJvck1lc3NhZ2UCCQCiCAEJARBrZXlEdWNrSWRUb093bmVyAQULZHVja0Fzc2V0SWQJAKwCAgkArAICAgRORlQgCAUFYXNzZXQEbmFtZQIMIGlzIG9ycGhhbmVkAwMDBRNLU19BTExPV19ST0JPX0RVQ0tTCQAAAggFBWFzc2V0Bmlzc3VlcgUEdGhpcwcJAQhjb250YWlucwIIBQVhc3NldARuYW1lBQtST0JPX1BSRUZJWAcJARN1cGRhdGVTdGF0c0ludGVybmFsBAkBDGtleVVzZXJMZXZlbAEFBGFkZHIJAQlrZXlVc2VyWFABBQRhZGRyCQERa2V5VXNlckZyZWVQb2ludHMBBQRhZGRyBQdkZWx0YVhQCQETdXBkYXRlU3RhdHNJbnRlcm5hbAQJAQxrZXlEdWNrTGV2ZWwBBQtkdWNrQXNzZXRJZAkBCWtleUR1Y2tYUAEFC2R1Y2tBc3NldElkCQERa2V5RHVja0ZyZWVQb2ludHMBBQtkdWNrQXNzZXRJZAUHZGVsdGFYUAEWdXBkYXRlQWNjU3RhdHNJbnRlcm5hbAIEYWRkcgdkZWx0YVhQCQETdXBkYXRlU3RhdHNJbnRlcm5hbAQJAQxrZXlVc2VyTGV2ZWwBBQRhZGRyCQEJa2V5VXNlclhQAQUEYWRkcgkBEWtleVVzZXJGcmVlUG9pbnRzAQUEYWRkcgUHZGVsdGFYUAESYWN0aXZhdGVPbmJvYXJkQXJ0AQRhZGRyBAtkdWNrQXNzZXRJZAkBE3ZhbHVlT3JFcnJvck1lc3NhZ2UCCQCiCAEJARRrZXlTdGFrZWREdWNrQnlPd25lcgEFBGFkZHICHFlvdSBkb24ndCBoYXZlIGEgZHVjayBzdGFrZWQECHJlZkJ5S2V5CQEPa2V5QWRkcmVzc1JlZkJ5AQUEYWRkcgQFcmVmQnkJAKIIAQUIcmVmQnlLZXkDCQEBIQEJAQlpc0RlZmluZWQBBQVyZWZCeQkAAgECKVlvdSBhcmUgbm90IGVsaWdpYmxlIGZvciBPTkJPQVJEIGFydGlmYWN0BAZhcnRLZXkJARxrZXlPbmJvYXJkQXJ0RHVja0FjdGl2YXRlZEJ5AQUEYWRkcgQHYXJ0RHVjawkAoggBBQZhcnRLZXkDCQEJaXNEZWZpbmVkAQUHYXJ0RHVjawkAAgEJAKwCAgIvWW91IGFscmVhZHkgdXNlZCB5b3VyIE9OQk9BUkQgYXJ0aWZhY3Qgb24gZHVjayAJAQV2YWx1ZQEFB2FydER1Y2sEEGR1Y2tBY3RpdmF0b3JLZXkJARxrZXlPbmJvYXJkQXJ0QWN0aXZhdGVkT25EdWNrAQULZHVja0Fzc2V0SWQEDWR1Y2tBY3RpdmF0b3IJAKIIAQUQZHVja0FjdGl2YXRvcktleQMJAQlpc0RlZmluZWQBBQ1kdWNrQWN0aXZhdG9yCQACAQkArAICCQCsAgIJAKwCAgIJVGhlIGR1Y2sgBQtkdWNrQXNzZXRJZAI0IGFscmVhZHkgZ290IHBvaW50cyBmcm9tIE9OQk9BUkQgYXJ0aWZhY3QgZnJvbSB1c2VyIAkBBXZhbHVlAQUNZHVja0FjdGl2YXRvcgkAzggCCQDMCAIJAQtTdHJpbmdFbnRyeQIFBmFydEtleQULZHVja0Fzc2V0SWQJAMwIAgkBC1N0cmluZ0VudHJ5AgUQZHVja0FjdGl2YXRvcktleQUEYWRkcgUDbmlsCAkBF3VwZGF0ZUR1Y2tTdGF0c0ludGVybmFsAgULZHVja0Fzc2V0SWQFCXhwT25ib2FyZAJfMQESYWN0aXZhdGVQcmVzYWxlQXJ0AgRhZGRyDWxhbmRBc3NldElkSW4EAWMJARRjaGVja0NsYWltQ29uZGl0aW9ucwMFBGFkZHIFE2NsYWltTW9kZVdoVGhlbkR1Y2sFDWxhbmRBc3NldElkSW4EC2xhbmRBc3NldElkCAUBYwJfMgQGcGllY2VzCQEPbnVtUGllY2VzQnlTaXplAQkAkQMCCAUBYwJfMwULcmVjTGFuZFNpemUEDWFjdGl2YXRpb25LZXkJASBrZXlMYW5kQXJ0U3RhdHVzQnlUeXBlQW5kQXNzZXRJZAIFCkFSVFBSRVNBTEUFC2xhbmRBc3NldElkAwkAZgIJAQt2YWx1ZU9yRWxzZQIJAJ8IAQUNYWN0aXZhdGlvbktleQAAAAAJAAIBAiVQcmVzYWxlIGFydGlmYWN0IGlzIGFscmVhZHkgYWN0aXZhdGVkAwkAZgIJAQ1wYXJzZUludFZhbHVlAQkAkQMCCAUBYwJfMwUKcmVjTGFuZE51bQUPUFJFU0FMRU5VTUxBTkRTCQACAQkArAICCQCsAgIJAKwCAgUKTEFORFBSRUZJWAIBIAULbGFuZEFzc2V0SWQCJSBpcyBub3QgZWxpZ2libGUgZm9yIHByZXNhbGUgYXJ0aWZhY3QEC2NsYWltUmVzdWx0CQEIY2xhaW1BbGwEBQRhZGRyBQtsYW5kQXNzZXRJZAUGcGllY2VzBRNjbGFpbU1vZGVXaFRoZW5EdWNrCQDNCAIJAM0IAgkAzQgCCAULY2xhaW1SZXN1bHQCXzEJAQxJbnRlZ2VyRW50cnkCBQ1hY3RpdmF0aW9uS2V5BQZwaWVjZXMJAQtTdHJpbmdFbnRyeQIIBQtjbGFpbVJlc3VsdAJfMgkAuQkCCAULY2xhaW1SZXN1bHQCXzMCAToJAQtTdHJpbmdFbnRyeQIIBQtjbGFpbVJlc3VsdAJfNAkAuQkCCAULY2xhaW1SZXN1bHQCXzUCAToBD2NoZWNrVG91cm5hbWVudAELZHVja0Fzc2V0SWQEBmxhc3RJZAkBC3ZhbHVlT3JFbHNlAgkAmggCBRJ0b3VybmFtZW50Q29udHJhY3QFDWxhc3RUb3VySWRLZXkAAAQLY3VyTG9jYXRpb24JALUJAgkBC3ZhbHVlT3JFbHNlAgkAoggBCQEPa2V5RHVja0xvY2F0aW9uAQULZHVja0Fzc2V0SWQFD0RFRkFVTFRMT0NBVElPTgIBXwQDbm93CAUJbGFzdEJsb2NrCXRpbWVzdGFtcAQFdERhdGEJAQtnZXRUb3VyRGF0YQIFEnRvdXJuYW1lbnRDb250cmFjdAUGbGFzdElkBAZzdGF0aWMJAJEDAgUFdERhdGEFCWlkeFN0YXRpYwQHZHluYW1pYwkAkQMCBQV0RGF0YQUKaWR4RHluYW1pYwMJAQIhPQIJAJEDAgULY3VyTG9jYXRpb24FCmxvY0lkeFR5cGUCAVQHAwMDCQAAAgkBDXBhcnNlSW50VmFsdWUBCQCRAwIFC2N1ckxvY2F0aW9uBQ9sb2NJZHhDb250aW5lbnQFBmxhc3RJZAkAAAIJAJEDAgUHZHluYW1pYwUOdER5bmFtaWNTdGF0dXMCCklOUFJPR1JFU1MHCQBmAgkBDXBhcnNlSW50VmFsdWUBCQCRAwIFBnN0YXRpYwUKdFN0YXRpY0VuZAUDbm93BwkAAgECKllvdXIgZHVjayBpcyB0YWtpbmcgcGFydCBpbiB0aGUgdG91cm5hbWVudAkBCWFzQm9vbGVhbgEJAPwHBAUEdGhpcwIWZXhpdFRvdXJuYW1lbnRJbnRlcm5hbAkAzAgCBQtkdWNrQXNzZXRJZAUDbmlsBQNuaWwBDW1lcmdlSW50ZXJuYWwGC25ld0xhbmRTaXplCG5ld0xldmVsB2Zvcm11bGEEYWRkcgxsYW5kQXNzZXRJZHMHbmVlZE1hdAQLZHVja0Fzc2V0SWQJARN2YWx1ZU9yRXJyb3JNZXNzYWdlAgkAoggBCQEUa2V5U3Rha2VkRHVja0J5T3duZXIBBQRhZGRyAhxZb3UgZG9uJ3QgaGF2ZSBhIGR1Y2sgc3Rha2VkAwkBD2NoZWNrVG91cm5hbWVudAEFC2R1Y2tBc3NldElkCQACAQIdbWVyZ2VJbnRlcm5hbF9jaGVja1RvdXJuYW1lbnQKAQpjaGVja01lcmdlAgNhY2MLbGFuZEFzc2V0SWQEBWFzc2V0CQEFdmFsdWUBCQDsBwEJANkEAQULbGFuZEFzc2V0SWQEB3RpbWVLZXkJARZrZXlTdGFrZWRUaW1lQnlBc3NldElkAQULbGFuZEFzc2V0SWQECXNhdmVkVGltZQkBE3ZhbHVlT3JFcnJvck1lc3NhZ2UCCQCfCAEFB3RpbWVLZXkJAKwCAgkArAICAgRORlQgCAUFYXNzZXQEbmFtZQIOIGlzIG5vdCBzdGFrZWQEBW93bmVyCQETdmFsdWVPckVycm9yTWVzc2FnZQIJAKIIAQkBFWtleUxhbmRBc3NldElkVG9Pd25lcgEFC2xhbmRBc3NldElkCQCsAgIJAKwCAgIETkZUIAgFBWFzc2V0BG5hbWUCDCBpcyBvcnBoYW5lZAMJAQIhPQIFBW93bmVyBQRhZGRyCQACAQkArAICBQpMQU5EUFJFRklYAg0gaXMgbm90IHlvdXJzBAFkCQC1CQIIBQVhc3NldAtkZXNjcmlwdGlvbgIBXwQJY29udGluZW50CQCRAwIFAWQFDHJlY0NvbnRpbmVudAMDCQECIT0CCAUDYWNjAl8zAgAJAQIhPQIIBQNhY2MCXzMFCWNvbnRpbmVudAcJAAIBAi5MYW5kcyBzaG91bGQgYmUgb24gdGhlIHNhbWUgY29udGluZW50IHRvIG1lcmdlBAhsYW5kU2l6ZQkAkQMCBQFkBQtyZWNMYW5kU2l6ZQQHc2l6ZXNJbggFA2FjYwJfMQQBaQkBE3ZhbHVlT3JFcnJvck1lc3NhZ2UCCQCzCQIFB3NpemVzSW4FCGxhbmRTaXplAidZb3UgaGF2ZW4ndCBwYXNzZWQgYWxsIHRoZSBsYW5kcyBuZWVkZWQECHNpemVzT3V0CQCsAgIJAK8CAgUHc2l6ZXNJbgUBaQkAsAICBQdzaXplc0luCQBkAgUBaQABBAZwaWVjZXMJAQ9udW1QaWVjZXNCeVNpemUBBQhsYW5kU2l6ZQQEYXJ0cwkAZAIIBQNhY2MCXzIJAQt2YWx1ZU9yRWxzZQIJAJ8IAQkBIGtleUxhbmRBcnRTdGF0dXNCeVR5cGVBbmRBc3NldElkAgUKQVJUUFJFU0FMRQULbGFuZEFzc2V0SWQAAAQKaW5mcmFMZXZlbAkBC3ZhbHVlT3JFbHNlAgkAnwgBCQEWa2V5SW5mcmFMZXZlbEJ5QXNzZXRJZAEFC2xhbmRBc3NldElkAAAECHJlcUxldmVsBAckbWF0Y2gwBQhsYW5kU2l6ZQMJAAACAgFTBQckbWF0Y2gwAAMDCQAAAgIBTQUHJG1hdGNoMAAEAwkAAAICAUwFByRtYXRjaDAABQMJAAACAgJYTAUHJG1hdGNoMAAGCQACAQIaT25seSBTLCBNLCBMLCBYTCBjYW4gbWVyZ2UDCQECIT0CBQppbmZyYUxldmVsBQhyZXFMZXZlbAkAAgECIkFsbCBsYW5kcyBzaG91bGQgYmUgbWF4ZWQgdG8gbWVyZ2UEB2xhbmROdW0JAJEDAgUBZAUKcmVjTGFuZE51bQQNdGVycmFpbkNvdW50cwkBDWNvdW50VGVycmFpbnMBCQCRAwIFAWQFC3JlY1RlcnJhaW5zBAlkZWx0YVRpbWUJAGUCCAUJbGFzdEJsb2NrCXRpbWVzdGFtcAUJc2F2ZWRUaW1lAwkAZgIAAAUJZGVsdGFUaW1lCQACAQkArAICCQCsAgIJAKwCAgImU2F2ZWQgdGltZXN0YW1wIGlzIGluIGZ1dHVyZSwgc2F2ZWQgPSAJAKQDAQUJc2F2ZWRUaW1lAgwsIGN1cnJlbnQgPSAJAKQDAQgFCWxhc3RCbG9jawl0aW1lc3RhbXAEFmRhaWx5UHJvZHVjdGlvbkJ5UGllY2UJAQxhcHBseUJvbnVzZXMCBQtsYW5kQXNzZXRJZAUGcGllY2VzBAlsYW5kSW5kZXgJAGkCBQZwaWVjZXMFBVNTSVpFBAVicFJlcwkBBmFkZFJlcwUJALUJAggFA2FjYwJfNAIBXwUNdGVycmFpbkNvdW50cwUJZGVsdGFUaW1lBQlsYW5kSW5kZXgFFmRhaWx5UHJvZHVjdGlvbkJ5UGllY2UEBXByb3BzCQEZdXBkYXRlUHJvcG9ydGlvbnNJbnRlcm5hbAQIBQNhY2MCXzYFDXRlcnJhaW5Db3VudHMFCWxhbmRJbmRleAD///////////8BBAZjUHJvcHMJARl1cGRhdGVQcm9wb3J0aW9uc0ludGVybmFsBAgFA2FjYwNfMTAFDXRlcnJhaW5Db3VudHMFCWxhbmRJbmRleAD///////////8BBAtzdW1UZXJyYWlucwkBGXVwZGF0ZVByb3BvcnRpb25zSW50ZXJuYWwECAUDYWNjAl85BQ10ZXJyYWluQ291bnRzBQlsYW5kSW5kZXgAAQQFbGFuZHMIBQNhY2MCXzcEA2lkeAkAzwgCBQVsYW5kcwULbGFuZEFzc2V0SWQDCQEBIQEJAQlpc0RlZmluZWQBBQNpZHgJAAIBCQCsAgICIFlvdXIgc3Rha2VkIGxhbmRzIGRvbid0IGNvbnRhaW4gBQtsYW5kQXNzZXRJZAQJY3VzdG9tS2V5CQEaa2V5TGFuZEFzc2V0SWRUb0N1c3RvbU5hbWUBBQtsYW5kQXNzZXRJZAQKY3VzdG9tTmFtZQkBC3ZhbHVlT3JFbHNlAgkAoggBBQljdXN0b21LZXkCAAkAnAoKBQhzaXplc091dAUEYXJ0cwUJY29udGluZW50BQVicFJlcwkAzggCCQDNCAIJAM0IAgkAzQgCCQDNCAIJAM0IAgkAzQgCCQDNCAIJAM0IAgkAzQgCCQDNCAIJAM0IAggFA2FjYwJfNQkBC0RlbGV0ZUVudHJ5AQkBFmtleVN0YWtlZFRpbWVCeUFzc2V0SWQBBQtsYW5kQXNzZXRJZAkBC0RlbGV0ZUVudHJ5AQkBImtleVN0YWtlZFRpbWVCeVR5cGVBc3NldElkQW5kT3duZXIDBQpMQU5EUFJFRklYBQtsYW5kQXNzZXRJZAUEYWRkcgkBC0RlbGV0ZUVudHJ5AQkBEGtleUxhbmRUb0Fzc2V0SWQBBQdsYW5kTnVtCQELRGVsZXRlRW50cnkBCQEVa2V5TGFuZEFzc2V0SWRUb093bmVyAQULbGFuZEFzc2V0SWQJAQtEZWxldGVFbnRyeQEJARZrZXlJbmZyYUxldmVsQnlBc3NldElkAQULbGFuZEFzc2V0SWQJAQtEZWxldGVFbnRyeQEJAR5rZXlJbmZyYUxldmVsQnlBc3NldElkQW5kT3duZXICBQtsYW5kQXNzZXRJZAUEYWRkcgkBC0RlbGV0ZUVudHJ5AQkBIGtleUxhbmRBcnRTdGF0dXNCeVR5cGVBbmRBc3NldElkAgUKQVJUUFJFU0FMRQULbGFuZEFzc2V0SWQJAQtEZWxldGVFbnRyeQEJARFrZXlMYW5kTnVtVG9Pd25lcgEFB2xhbmROdW0JAQtEZWxldGVFbnRyeQEJARJrZXlXYXJlaG91c2VCeUxhbmQBBQtsYW5kQXNzZXRJZAkBC0RlbGV0ZUVudHJ5AQUJY3VzdG9tS2V5CQEEQnVybgIJANkEAQULbGFuZEFzc2V0SWQAAQMJAQIhPQIFCmN1c3RvbU5hbWUCAAkAzAgCCQELRGVsZXRlRW50cnkBCQEaa2V5TGFuZEN1c3RvbU5hbWVUb0Fzc2V0SWQBBQpjdXN0b21OYW1lBQNuaWwFA25pbAUFcHJvcHMJANEIAgUFbGFuZHMJAQV2YWx1ZQEFA2lkeAkAZAIIBQNhY2MCXzgFBnBpZWNlcwULc3VtVGVycmFpbnMFBmNQcm9wcwQFYnBLZXkJARFrZXlCYWNrcGFja0J5RHVjawEFC2R1Y2tBc3NldElkBAtjdXJyZW50UGFjawkBC2dldEJhY2twYWNrAQUFYnBLZXkECHByb3BMaXN0CQC1CQIJAQt2YWx1ZU9yRWxzZQIJAKIIAQkBEWtleVJlc1Byb3BvcnRpb25zAAILMF8wXzBfMF8wXzACAV8ECGxhbmRzS2V5CQEVa2V5U3Rha2VkTGFuZHNCeU93bmVyAQUEYWRkcgQIbGFuZHNTdHIJAKIIAQUIbGFuZHNLZXkEB2xhbmRzSW4DCQEJaXNEZWZpbmVkAQUIbGFuZHNTdHIJAL0JAgkBBXZhbHVlAQUIbGFuZHNTdHICAV8FA25pbAQFY29udDAJAJEDAgkAtQkCCAkBBXZhbHVlAQkA7AcBCQDZBAEJAJEDAgUMbGFuZEFzc2V0SWRzAAALZGVzY3JpcHRpb24CAV8FDHJlY0NvbnRpbmVudAQJY29udFByb3BzCQC1CQIJAQt2YWx1ZU9yRWxzZQIJAKIIAQkBFmtleVJlc1R5cGVzQnlDb250aW5lbnQBBQVjb250MAILMF8wXzBfMF8wXzACAV8EAXIKAAIkbAUMbGFuZEFzc2V0SWRzCgACJHMJAJADAQUCJGwKAAUkYWNjMAkAnAoKBQdmb3JtdWxhAAACAAkAkQMCBQtjdXJyZW50UGFjawUIYnBJZHhSZXMFA25pbAUIcHJvcExpc3QFB2xhbmRzSW4AAAkAtQkCAgswXzBfMF8wXzBfMAIBXwUJY29udFByb3BzCgEFJGYwXzECAiRhAiRpAwkAZwIFAiRpBQIkcwUCJGEJAQpjaGVja01lcmdlAgUCJGEJAJEDAgUCJGwFAiRpCgEFJGYwXzICAiRhAiRpAwkAZwIFAiRpBQIkcwUCJGEJAAIBAhNMaXN0IHNpemUgZXhjZWVkcyA1CQEFJGYwXzICCQEFJGYwXzECCQEFJGYwXzECCQEFJGYwXzECCQEFJGYwXzECCQEFJGYwXzECBQUkYWNjMAAAAAEAAgADAAQABQQJY29udGluZW50CAUBcgJfMwQMY29udGluZW50SWR4CQETdmFsdWVPckVycm9yTWVzc2FnZQIJAM8IAgUKY29udGluZW50cwUJY29udGluZW50CQCsAgICE1Vua25vd24gY29udGluZW50OiAFCWNvbnRpbmVudAQIdGVycmFpbnMJARNnZW5UZXJyYWluc0Zvck1lcmdlAggFAXICXzkJAGkCCQEPbnVtUGllY2VzQnlTaXplAQULbmV3TGFuZFNpemUFBVNTSVpFBAdmcmVlTnVtCQELdmFsdWVPckVsc2UCCQCfCAEJARJrZXlOZXh0RnJlZUxhbmROdW0ACQBkAgUPUFJFU0FMRU5VTUxBTkRTAAEECm5ld0xhbmROdW0JAKQDAQUHZnJlZU51bQQFaXNzdWUJAMIIBQkBB25mdE5hbWUCBQpuZXdMYW5kTnVtBQtuZXdMYW5kU2l6ZQkAuQkCCQDMCAIFCm5ld0xhbmROdW0JAMwIAgULbmV3TGFuZFNpemUJAMwIAgUIdGVycmFpbnMJAMwIAgUJY29udGluZW50BQNuaWwCAV8AAQAABwQHYXNzZXRJZAkAuAgBBQVpc3N1ZQQObmV3TGFuZEFzc2V0SWQJANgEAQUHYXNzZXRJZAQGbmV3TWF0CQC5CQIJARFzdWJ0cmFjdE1hdGVyaWFscwMJAGYCBQduZWVkTWF0AAAJALUJAgkAkQMCBQtjdXJyZW50UGFjawUIYnBJZHhNYXQCAV8FB25lZWRNYXQCAV8ECXBpZWNlc0tleQkBFmtleVN0YWtlZFBpZWNlc0J5T3duZXIBBQRhZGRyBAxzdGFrZWRQaWVjZXMJAQt2YWx1ZU9yRWxzZQIJAJ8IAQUJcGllY2VzS2V5AAAJAJQKAgkAzQgCCQDNCAIJAM0IAgkAzQgCCQDNCAIJAM0IAgkAzQgCCQDNCAIJAM0IAgkAzQgCCQDNCAIJAM0IAgkAzQgCCQDNCAIJAM0IAggFAXICXzUDCQBmAgkAkAMBCAUBcgJfNwAACQELU3RyaW5nRW50cnkCBQhsYW5kc0tleQkAuwkCCAUBcgJfNwIBXwkBC0RlbGV0ZUVudHJ5AQUIbGFuZHNLZXkJAQxJbnRlZ2VyRW50cnkCBQlwaWVjZXNLZXkDCQBmAggFAXICXzgFDHN0YWtlZFBpZWNlcwAACQBlAgUMc3Rha2VkUGllY2VzCAUBcgJfOAkBDEludGVnZXJFbnRyeQIJARJrZXlOZXh0RnJlZUxhbmROdW0ACQBkAgUHZnJlZU51bQABBQVpc3N1ZQkBC1N0cmluZ0VudHJ5AgkBEGtleUxhbmRUb0Fzc2V0SWQBBQpuZXdMYW5kTnVtBQ5uZXdMYW5kQXNzZXRJZAkBC1N0cmluZ0VudHJ5AgkBFWtleUxhbmRBc3NldElkVG9Pd25lcgEFDm5ld0xhbmRBc3NldElkBQRhZGRyCQELU3RyaW5nRW50cnkCCQERa2V5TGFuZE51bVRvT3duZXIBBQpuZXdMYW5kTnVtBQRhZGRyCQEMSW50ZWdlckVudHJ5AgkBIGtleUxhbmRBcnRTdGF0dXNCeVR5cGVBbmRBc3NldElkAgUKQVJUUFJFU0FMRQUObmV3TGFuZEFzc2V0SWQIBQFyAl8yCQEMSW50ZWdlckVudHJ5AgkBFmtleUluZnJhTGV2ZWxCeUFzc2V0SWQBBQ5uZXdMYW5kQXNzZXRJZAUIbmV3TGV2ZWwJAQxJbnRlZ2VyRW50cnkCCQEea2V5SW5mcmFMZXZlbEJ5QXNzZXRJZEFuZE93bmVyAgUObmV3TGFuZEFzc2V0SWQFBGFkZHIFCG5ld0xldmVsCQELU3RyaW5nRW50cnkCBQVicEtleQkAuQkCCQDMCAIJAJEDAgULY3VycmVudFBhY2sFCmJwSWR4TGV2ZWwJAMwIAggFAXICXzQJAMwIAgUGbmV3TWF0CQDMCAIJAJEDAgULY3VycmVudFBhY2sFCWJwSWR4UHJvZAUDbmlsAgE6CQELU3RyaW5nRW50cnkCCQERa2V5UmVzUHJvcG9ydGlvbnMACQC5CQIIBQFyAl82AgFfCQELU3RyaW5nRW50cnkCCQEWa2V5UmVzVHlwZXNCeUNvbnRpbmVudAEFCWNvbnRpbmVudAkAuQkCCAUBcgNfMTACAV8JAQtTdHJpbmdFbnRyeQIJAQ9rZXlEdWNrTG9jYXRpb24BBQtkdWNrQXNzZXRJZAkAuQkCCQDMCAIFCWNvbnRpbmVudAkAzAgCAgFMCQDMCAIFDm5ld0xhbmRBc3NldElkBQNuaWwCAV8JAQ5TY3JpcHRUcmFuc2ZlcgMJARFAZXh0ck5hdGl2ZSgxMDYyKQEFBGFkZHIAAQUHYXNzZXRJZAUObmV3TGFuZEFzc2V0SWQBA3MybQIEYWRkcgxsYW5kQXNzZXRJZHMJAQ1tZXJnZUludGVybmFsBgIBTQADAgRTU1NTBQRhZGRyBQxsYW5kQXNzZXRJZHMAAAEDbTJsAgRhZGRyDGxhbmRBc3NldElkcwkBDW1lcmdlSW50ZXJuYWwGAgFMAAQCA1NNTQUEYWRkcgUMbGFuZEFzc2V0SWRzCQBoAgURSW5mcmFVcGdyYWRlQ29zdFMABAEEbDJ4bAIEYWRkcgxsYW5kQXNzZXRJZHMJAQ1tZXJnZUludGVybmFsBgICWEwABQIFU1NTTUwFBGFkZHIFDGxhbmRBc3NldElkcwkAaAIFEUluZnJhVXBncmFkZUNvc3RTAC8BBnhsMnh4bAIEYWRkcgxsYW5kQXNzZXRJZHMJAQ1tZXJnZUludGVybmFsBgIDWFhMAAYCA0xYTAUEYWRkcgUMbGFuZEFzc2V0SWRzCQBoAgURSW5mcmFVcGdyYWRlQ29zdFMANgELbWVyZ2VDb21tb24CBGFkZHIMbGFuZEFzc2V0SWRzBAckbWF0Y2gwCQCQAwEFDGxhbmRBc3NldElkcwMJAAACAAQFByRtYXRjaDAJAQNzMm0CBQRhZGRyBQxsYW5kQXNzZXRJZHMDCQAAAgADBQckbWF0Y2gwCQEDbTJsAgUEYWRkcgUMbGFuZEFzc2V0SWRzAwkAAAIABQUHJG1hdGNoMAkBBGwyeGwCBQRhZGRyBQxsYW5kQXNzZXRJZHMDCQAAAgACBQckbWF0Y2gwCQEGeGwyeHhsAgUEYWRkcgUMbGFuZEFzc2V0SWRzCQACAQINVW5rbm93biBtZXJnZQEGcHJvbG9nAQFpAwMJAQIhPQIIBQFpDG9yaWdpbkNhbGxlcgUMcmVzdENvbnRyYWN0CQELdmFsdWVPckVsc2UCCQCgCAEJAQprZXlCbG9ja2VkAAcHCQACAQIfQ29udHJhY3RzIGFyZSB1bmRlciBtYWludGVuYW5jZQkAzAgCCQELU3RyaW5nRW50cnkCCQERa2V5TGFzdFR4SWRCeVVzZXIBCQClCAEIBQFpDG9yaWdpbkNhbGxlcgkA2AQBCAUBaQ10cmFuc2FjdGlvbklkBQNuaWwpAWkBDWNvbnN0cnVjdG9yVjEBCHJlc3RBZGRyAwkBAiE9AggFAWkGY2FsbGVyBQR0aGlzCQACAQIRUGVybWlzc2lvbiBkZW5pZWQJAMwIAgkBC1N0cmluZ0VudHJ5AgkBDmtleVJlc3RBZGRyZXNzAAUIcmVzdEFkZHIFA25pbAFpAQtzYXZlSW50ZWdlcgIDa2V5BmFtb3VudAMJAQIhPQIIBQFpBmNhbGxlcgUEdGhpcwkAAgECIHNhdmVJbnRlZ2VyIGlzIG5vdCBwdWJsaWMgbWV0aG9kCQDMCAIJAQxJbnRlZ2VyRW50cnkCBQNrZXkFBmFtb3VudAUDbmlsAWkBCnNldEJsb2NrZWQBCWlzQmxvY2tlZAMJAQIhPQIIBQFpBmNhbGxlcgUEdGhpcwkAAgECEXBlcm1pc3Npb24gZGVuaWVkCQDMCAIJAQxCb29sZWFuRW50cnkCCQEKa2V5QmxvY2tlZAAFCWlzQmxvY2tlZAUDbmlsAWkBCXN0YWtlTGFuZAAEDXByb2xvZ0FjdGlvbnMJAQZwcm9sb2cBBQFpAwkBAiE9AgkAkAMBCAUBaQhwYXltZW50cwABCQACAQIcRXhhY3RseSBvbmUgcGF5bWVudCByZXF1aXJlZAQDcG10CQEFdmFsdWUBCQCRAwIIBQFpCHBheW1lbnRzAAAEB2Fzc2V0SWQJAQV2YWx1ZQEIBQNwbXQHYXNzZXRJZAQHYWRkcmVzcwkApQgBCAUBaQZjYWxsZXIDCQECIT0CCAUDcG10BmFtb3VudAABCQACAQkArAICCQCsAgICBE5GVCAFCkxBTkRQUkVGSVgCJCB0b2tlbiBzaG91bGQgYmUgYXR0YWNoZWQgYXMgcGF5bWVudAQFYXNzZXQJAQV2YWx1ZQEJAOwHAQUHYXNzZXRJZAMJAQIhPQIIBQVhc3NldAZpc3N1ZXIFBHRoaXMJAAIBAhdVbmtub3duIGlzc3VlciBvZiB0b2tlbgMJAQEhAQkBCGNvbnRhaW5zAggFBWFzc2V0BG5hbWUFCkxBTkRQUkVGSVgJAAIBCQCsAgIJAKwCAgIJT25seSBORlQgBQpMQU5EUFJFRklYAhQgdG9rZW5zIGFyZSBhY2NlcHRlZAQLbGFuZE51bVNpemUJALACAggFBWFzc2V0BG5hbWUABAQHbGFuZE51bQMJAQhjb250YWlucwIFC2xhbmROdW1TaXplAgNYWEwJALMCAgULbGFuZE51bVNpemUAAwMJAQhjb250YWlucwIFC2xhbmROdW1TaXplAgJYTAkAswICBQtsYW5kTnVtU2l6ZQACCQCzAgIFC2xhbmROdW1TaXplAAEDCQEBIQEJAQlpc0RlZmluZWQBCQC2CQEFB2xhbmROdW0JAAIBCQCsAgICHkNhbm5vdCBwYXJzZSBsYW5kIG51bWJlciBmcm9tIAgFBWFzc2V0BG5hbWUEC2xhbmRBc3NldElkCQDYBAEFB2Fzc2V0SWQEB3RpbWVLZXkJARZrZXlTdGFrZWRUaW1lQnlBc3NldElkAQULbGFuZEFzc2V0SWQDCQEJaXNEZWZpbmVkAQkAnwgBBQd0aW1lS2V5CQACAQkArAICCQCsAgICBE5GVCAIBQVhc3NldARuYW1lAhIgaXMgYWxyZWFkeSBzdGFrZWQEAWQJALUJAggFBWFzc2V0C2Rlc2NyaXB0aW9uAgFfBA10ZXJyYWluQ291bnRzCQENY291bnRUZXJyYWlucwEJAJEDAgUBZAULcmVjVGVycmFpbnMEBnBpZWNlcwkBD251bVBpZWNlc0J5U2l6ZQEJAJEDAgUBZAULcmVjTGFuZFNpemUECWxhbmRJbmRleAkAaQIFBnBpZWNlcwUFU1NJWkUEBXByb3BzCQERdXBkYXRlUHJvcG9ydGlvbnMDBQ10ZXJyYWluQ291bnRzBQlsYW5kSW5kZXgAAQQMcmVzQnlDb250S2V5CQEWa2V5UmVzVHlwZXNCeUNvbnRpbmVudAEJAJEDAgUBZAUMcmVjQ29udGluZW50BAljb250UHJvcHMJALUJAgkBC3ZhbHVlT3JFbHNlAgkAoggBBQxyZXNCeUNvbnRLZXkCCzBfMF8wXzBfMF8wAgFfBBB1cGRhdGVkQ29udFByb3BzCQC5CQIJARl1cGRhdGVQcm9wb3J0aW9uc0ludGVybmFsBAUJY29udFByb3BzBQ10ZXJyYWluQ291bnRzBQlsYW5kSW5kZXgAAQIBXwQIbGFuZHNLZXkJARVrZXlTdGFrZWRMYW5kc0J5T3duZXIBBQdhZGRyZXNzBAhsYW5kc1N0cgkAoggBBQhsYW5kc0tleQQFbGFuZHMDCQEJaXNEZWZpbmVkAQUIbGFuZHNTdHIJAL0JAgkBBXZhbHVlAQUIbGFuZHNTdHICAV8FA25pbAMJAQ9jb250YWluc0VsZW1lbnQCBQVsYW5kcwULbGFuZEFzc2V0SWQJAAIBCQCsAgICIllvdXIgc3Rha2VkIGxhbmRzIGFscmVhZHkgY29udGFpbiAFC2xhbmRBc3NldElkAwkAZwIJAJADAQUFbGFuZHMFGE1BWF9MQU5EU19TVEFLRURfQllfVVNFUgkAAgEJAKwCAgkArAICAhlZb3VyIGFscmVhZHkgc3Rha2VkIG1heCAoCQCkAwEFGE1BWF9MQU5EU19TVEFLRURfQllfVVNFUgIHKSBsYW5kcwQKaW5mcmFMZXZlbAkBC3ZhbHVlT3JFbHNlAgkAnwgBCQEWa2V5SW5mcmFMZXZlbEJ5QXNzZXRJZAEFC2xhbmRBc3NldElkAAAECXBpZWNlc0tleQkBFmtleVN0YWtlZFBpZWNlc0J5T3duZXIBBQdhZGRyZXNzBAlvbGRQaWVjZXMJAQt2YWx1ZU9yRWxzZQIJAJ8IAQUJcGllY2VzS2V5AAAECXdsZ1Jlc3VsdAkA/AcEBQt3bGdDb250cmFjdAISb25TdGFrZVVuc3Rha2VMYW5kCQDMCAIFB2FkZHJlc3MFA25pbAUDbmlsCQCUCgIJAM4IAgkAzAgCCQEMSW50ZWdlckVudHJ5AgUHdGltZUtleQgFCWxhc3RCbG9jawl0aW1lc3RhbXAJAMwIAgkBDEludGVnZXJFbnRyeQIJASJrZXlTdGFrZWRUaW1lQnlUeXBlQXNzZXRJZEFuZE93bmVyAwUKTEFORFBSRUZJWAULbGFuZEFzc2V0SWQFB2FkZHJlc3MIBQlsYXN0QmxvY2sJdGltZXN0YW1wCQDMCAIJAQtTdHJpbmdFbnRyeQIFCGxhbmRzS2V5CQC7CQIJAM0IAgUFbGFuZHMFC2xhbmRBc3NldElkAgFfCQDMCAIJAQxJbnRlZ2VyRW50cnkCBQlwaWVjZXNLZXkJAGQCBQlvbGRQaWVjZXMFBnBpZWNlcwkAzAgCCQELU3RyaW5nRW50cnkCCQEVa2V5TGFuZEFzc2V0SWRUb093bmVyAQULbGFuZEFzc2V0SWQFB2FkZHJlc3MJAMwIAgkBC1N0cmluZ0VudHJ5AgkBEWtleUxhbmROdW1Ub093bmVyAQUHbGFuZE51bQUHYWRkcmVzcwkAzAgCCQEMSW50ZWdlckVudHJ5AgkBHmtleUluZnJhTGV2ZWxCeUFzc2V0SWRBbmRPd25lcgIFC2xhbmRBc3NldElkBQdhZGRyZXNzBQppbmZyYUxldmVsCQDMCAIJAQtTdHJpbmdFbnRyeQIJARFrZXlSZXNQcm9wb3J0aW9ucwAFBXByb3BzCQDMCAIJAQtTdHJpbmdFbnRyeQIFDHJlc0J5Q29udEtleQUQdXBkYXRlZENvbnRQcm9wcwUDbmlsBQ1wcm9sb2dBY3Rpb25zBQl3bGdSZXN1bHQBaQELdW5zdGFrZUxhbmQBDWxhbmRBc3NldElkSW4EDXByb2xvZ0FjdGlvbnMJAQZwcm9sb2cBBQFpAwkBAiE9AgkAkAMBCAUBaQhwYXltZW50cwAACQACAQIUTm8gcGF5bWVudHMgcmVxdWlyZWQEBGFkZHIJAKUIAQgFAWkGY2FsbGVyBAFjCQEUY2hlY2tDbGFpbUNvbmRpdGlvbnMDBQRhZGRyBQ1jbGFpbU1vZGVEdWNrBQ1sYW5kQXNzZXRJZEluBAtsYW5kQXNzZXRJZAgFAWMCXzIEAWQIBQFjAl8zBAhsYW5kc0tleQkBFWtleVN0YWtlZExhbmRzQnlPd25lcgEFBGFkZHIEDXRlcnJhaW5Db3VudHMJAQ1jb3VudFRlcnJhaW5zAQkAkQMCBQFkBQtyZWNUZXJyYWlucwQGcGllY2VzCQEPbnVtUGllY2VzQnlTaXplAQkAkQMCBQFkBQtyZWNMYW5kU2l6ZQQJbGFuZEluZGV4CQBpAgUGcGllY2VzBQVTU0laRQQFcHJvcHMJARF1cGRhdGVQcm9wb3J0aW9ucwMFDXRlcnJhaW5Db3VudHMFCWxhbmRJbmRleAD///////////8BBAxyZXNCeUNvbnRLZXkJARZrZXlSZXNUeXBlc0J5Q29udGluZW50AQkAkQMCBQFkBQxyZWNDb250aW5lbnQECWNvbnRQcm9wcwkAtQkCCQELdmFsdWVPckVsc2UCCQCiCAEFDHJlc0J5Q29udEtleQILMF8wXzBfMF8wXzACAV8EEHVwZGF0ZWRDb250UHJvcHMJALkJAgkBGXVwZGF0ZVByb3BvcnRpb25zSW50ZXJuYWwEBQljb250UHJvcHMFDXRlcnJhaW5Db3VudHMFCWxhbmRJbmRleAD///////////8BAgFfBAtjbGFpbVJlc3VsdAkBCGNsYWltQWxsBAUEYWRkcgULbGFuZEFzc2V0SWQFBnBpZWNlcwUNY2xhaW1Nb2RlRHVjawQFbGFuZHMJAL0JAgkBC3ZhbHVlT3JFbHNlAgkAoggBBQhsYW5kc0tleQIAAgFfBANpZHgJAM8IAgUFbGFuZHMFC2xhbmRBc3NldElkAwkBASEBCQEJaXNEZWZpbmVkAQUDaWR4CQACAQkArAICAiBZb3VyIHN0YWtlZCBsYW5kcyBkb24ndCBjb250YWluIAULbGFuZEFzc2V0SWQEA25vdwgFCWxhc3RCbG9jawl0aW1lc3RhbXAEDmdvdlJlbGVhc2VUaW1lCQELdmFsdWVPckVsc2UCCQCaCAIFC2dvdkNvbnRyYWN0CQEVa2V5VXNlckd3bFJlbGVhc2VUaW1lAQUEYWRkcgAAAwkAZwIFDmdvdlJlbGVhc2VUaW1lBQNub3cJAAIBCQCsAgICOVlvdXIgZ1dMIGFyZSB0YWtpbmcgcGFydCBpbiB2b3RpbmcsIGNhbm5vdCB1bnN0YWtlIHVudGlsIAkApAMBBQ5nb3ZSZWxlYXNlVGltZQQOYXJiUmVsZWFzZVRpbWUJAGQCCQELdmFsdWVPckVsc2UCCQCaCAIFC3dsZ0NvbnRyYWN0CQEUa2V5TGFzdEFyYlRpbWVCeVVzZXIBBQRhZGRyAAAFDmFyYml0cmFnZURlbGF5AwkAZgIFDmFyYlJlbGVhc2VUaW1lBQNub3cJAAIBCQCsAgICP1lvdXIgc3Rha2VkIGxhbmRzIHRvb2sgcGFydCBpbiBhcmJpdHJhZ2UsIGNhbm5vdCB1bnN0YWtlIHVudGlsIAkApAMBBQ5hcmJSZWxlYXNlVGltZQQJcGllY2VzS2V5CQEWa2V5U3Rha2VkUGllY2VzQnlPd25lcgEFBGFkZHIEDHN0YWtlZFBpZWNlcwkBC3ZhbHVlT3JFbHNlAgkAnwgBBQlwaWVjZXNLZXkAAAQJbmV3UGllY2VzAwkAZgIFBnBpZWNlcwUMc3Rha2VkUGllY2VzAAAJAGUCBQxzdGFrZWRQaWVjZXMFBnBpZWNlcwQJd2xnUmVzdWx0CQD8BwQFC3dsZ0NvbnRyYWN0AhJvblN0YWtlVW5zdGFrZUxhbmQJAMwIAgUEYWRkcgUDbmlsBQNuaWwJAJQKAgkAzggCCQDMCAIJAQ5TY3JpcHRUcmFuc2ZlcgMIBQFpBmNhbGxlcgABCQDZBAEFC2xhbmRBc3NldElkCQDMCAIJAQtEZWxldGVFbnRyeQEJARZrZXlTdGFrZWRUaW1lQnlBc3NldElkAQULbGFuZEFzc2V0SWQJAMwIAgkBC0RlbGV0ZUVudHJ5AQkBImtleVN0YWtlZFRpbWVCeVR5cGVBc3NldElkQW5kT3duZXIDBQpMQU5EUFJFRklYBQtsYW5kQXNzZXRJZAUEYWRkcgkAzAgCCQELU3RyaW5nRW50cnkCCQERa2V5UmVzUHJvcG9ydGlvbnMABQVwcm9wcwkAzAgCCQELU3RyaW5nRW50cnkCBQxyZXNCeUNvbnRLZXkFEHVwZGF0ZWRDb250UHJvcHMJAMwIAgkBC1N0cmluZ0VudHJ5AggFC2NsYWltUmVzdWx0Al8yCQC5CQIIBQtjbGFpbVJlc3VsdAJfMwIBOgkAzAgCAwkAZgIJAJADAQUFbGFuZHMAAQkBC1N0cmluZ0VudHJ5AgUIbGFuZHNLZXkJALsJAgkA0QgCBQVsYW5kcwkBBXZhbHVlAQUDaWR4AgFfCQELRGVsZXRlRW50cnkBBQhsYW5kc0tleQkAzAgCCQEMSW50ZWdlckVudHJ5AgUJcGllY2VzS2V5BQluZXdQaWVjZXMFA25pbAUNcHJvbG9nQWN0aW9ucwUJd2xnUmVzdWx0AWkBCXN0YWtlRHVjawAEDXByb2xvZ0FjdGlvbnMJAQZwcm9sb2cBBQFpAwkBAiE9AgkAkAMBCAUBaQhwYXltZW50cwABCQACAQIcRXhhY3RseSBvbmUgcGF5bWVudCByZXF1aXJlZAQDcG10CQEFdmFsdWUBCQCRAwIIBQFpCHBheW1lbnRzAAAEB2Fzc2V0SWQJAQV2YWx1ZQEIBQNwbXQHYXNzZXRJZAQHYWRkcmVzcwkApQgBCAUBaQZjYWxsZXIDCQECIT0CCAUDcG10BmFtb3VudAABCQACAQkArAICCQCsAgICBE5GVCAFCkRVQ0tQUkVGSVgCJCB0b2tlbiBzaG91bGQgYmUgYXR0YWNoZWQgYXMgcGF5bWVudAQFYXNzZXQJAQV2YWx1ZQEJAOwHAQUHYXNzZXRJZAQGaXNSb2JvAwMFE0tTX0FMTE9XX1JPQk9fRFVDS1MJAAACCAUFYXNzZXQGaXNzdWVyBQR0aGlzBwkBCGNvbnRhaW5zAggFBWFzc2V0BG5hbWUFC1JPQk9fUFJFRklYBwMDAwkBAiE9AggFBWFzc2V0Bmlzc3VlcgUNaW5jdWJhdG9yQWRkcgkBAiE9AggFBWFzc2V0Bmlzc3VlcgULYnJlZWRlckFkZHIHCQEBIQEFBmlzUm9ibwcJAAIBCQCsAgIJAKwCAgkArAICCQCsAgICElVua25vd24gaXNzdWVyIG9mIAUKRFVDS1BSRUZJWAIEIG9yIAULUk9CT19QUkVGSVgCBiB0b2tlbgMDCQEBIQEJAQhjb250YWlucwIIBQVhc3NldARuYW1lBQpEVUNLUFJFRklYCQEBIQEFBmlzUm9ibwcJAAIBCQCsAgIJAKwCAgkArAICCQCsAgICCU9ubHkgTkZUIAUKRFVDS1BSRUZJWAIEIG9yIAULUk9CT19QUkVGSVgCFCB0b2tlbnMgYXJlIGFjY2VwdGVkBAphc3NldElkU3RyCQDYBAEFB2Fzc2V0SWQEB3RpbWVLZXkJARZrZXlTdGFrZWRUaW1lQnlBc3NldElkAQUKYXNzZXRJZFN0cgMJAQlpc0RlZmluZWQBCQCfCAEFB3RpbWVLZXkJAAIBCQCsAgIJAKwCAgIETkZUIAgFBWFzc2V0BG5hbWUCEiBpcyBhbHJlYWR5IHN0YWtlZAMJAQlpc0RlZmluZWQBCQCiCAEJARRrZXlTdGFrZWREdWNrQnlPd25lcgEFB2FkZHJlc3MJAAIBCQCsAgICHVlvdSBhbHJlYWR5IHN0YWtlZCBvbmUgZHVjazogCAUFYXNzZXQEbmFtZQQGbG9jS2V5CQEPa2V5RHVja0xvY2F0aW9uAQUKYXNzZXRJZFN0cgQIbG9jYXRpb24JAKIIAQUGbG9jS2V5BAVicEtleQkBEWtleUJhY2twYWNrQnlEdWNrAQUKYXNzZXRJZFN0cgQIYmFja3BhY2sJAKIIAQUFYnBLZXkECWtleUhlYWx0aAkBDWtleUR1Y2tIZWFsdGgBBQphc3NldElkU3RyBAVtYXhIUAkBCW1heEhlYWx0aAEJAQt2YWx1ZU9yRWxzZQIJAJ8IAQkBDGtleUR1Y2tMZXZlbAEFCmFzc2V0SWRTdHIAAAQJY3VySGVhbHRoCQELdmFsdWVPckVsc2UCCQCfCAEFCWtleUhlYWx0aAUFbWF4SFAJAM4IAgkAzAgCCQEMSW50ZWdlckVudHJ5AgUHdGltZUtleQgFCWxhc3RCbG9jawl0aW1lc3RhbXAJAMwIAgkBDEludGVnZXJFbnRyeQIJASJrZXlTdGFrZWRUaW1lQnlUeXBlQXNzZXRJZEFuZE93bmVyAwUKRFVDS1BSRUZJWAkA2AQBBQdhc3NldElkBQdhZGRyZXNzCAUJbGFzdEJsb2NrCXRpbWVzdGFtcAkAzAgCCQELU3RyaW5nRW50cnkCCQEQa2V5RHVja0lkVG9Pd25lcgEFCmFzc2V0SWRTdHIFB2FkZHJlc3MJAMwIAgkBC1N0cmluZ0VudHJ5AgkBFGtleVN0YWtlZER1Y2tCeU93bmVyAQUHYWRkcmVzcwUKYXNzZXRJZFN0cgUDbmlsAwkBCWlzRGVmaW5lZAEFCGxvY2F0aW9uBQNuaWwJAM4IAgkAzAgCCQELU3RyaW5nRW50cnkCBQZsb2NLZXkFD0RFRkFVTFRMT0NBVElPTgUDbmlsAwkBCWlzRGVmaW5lZAEFCGJhY2twYWNrBQNuaWwJAM4IAgkAzQgCCQDMCAIJAQtTdHJpbmdFbnRyeQIFBWJwS2V5AhowOjBfMF8wXzBfMF8wOjBfMF8wXzBfMF8wOgUDbmlsCQEMSW50ZWdlckVudHJ5AgUJa2V5SGVhbHRoBQljdXJIZWFsdGgFDXByb2xvZ0FjdGlvbnMBaQELdW5zdGFrZUR1Y2sBCmFzc2V0SWRTdHIEDXByb2xvZ0FjdGlvbnMJAQZwcm9sb2cBBQFpAwkBAiE9AgkAkAMBCAUBaQhwYXltZW50cwAACQACAQIUTm8gcGF5bWVudHMgcmVxdWlyZWQEB2Fzc2V0SWQJANkEAQUKYXNzZXRJZFN0cgQHYWRkcmVzcwkApQgBCAUBaQZjYWxsZXIEBWFzc2V0CQEFdmFsdWUBCQDsBwEFB2Fzc2V0SWQEB3RpbWVLZXkJARZrZXlTdGFrZWRUaW1lQnlBc3NldElkAQUKYXNzZXRJZFN0cgMJAQEhAQkBCWlzRGVmaW5lZAEJAJ8IAQUHdGltZUtleQkAAgEJAKwCAgkArAICAgRORlQgCAUFYXNzZXQEbmFtZQIOIGlzIG5vdCBzdGFrZWQDCQEBIQEJAQlpc0RlZmluZWQBCQCiCAEJARRrZXlTdGFrZWREdWNrQnlPd25lcgEFB2FkZHJlc3MJAAIBCQCsAgIJAKwCAgIJVGhlIGR1Y2sgCAUFYXNzZXQEbmFtZQIOIGlzIG5vdCBzdGFrZWQEBW93bmVyCQETdmFsdWVPckVycm9yTWVzc2FnZQIJAKIIAQkBEGtleUR1Y2tJZFRvT3duZXIBBQphc3NldElkU3RyCQCsAgIJAKwCAgIETkZUIAgFBWFzc2V0BG5hbWUCDCBpcyBvcnBoYW5lZAMJAQIhPQIFBW93bmVyBQdhZGRyZXNzCQACAQIXU3Rha2VkIE5GVCBpcyBub3QgeW91cnMDCQEPY2hlY2tUb3VybmFtZW50AQUKYXNzZXRJZFN0cgkAAgECG3Vuc3Rha2VEdWNrX2NoZWNrVG91cm5hbWVudAQJa2V5SGVhbHRoCQENa2V5RHVja0hlYWx0aAEFCmFzc2V0SWRTdHIEBW1heEhQCQEJbWF4SGVhbHRoAQkBC3ZhbHVlT3JFbHNlAgkAnwgBCQEMa2V5RHVja0xldmVsAQUKYXNzZXRJZFN0cgAABAZoZWFsdGgJAQt2YWx1ZU9yRWxzZQIJAJ8IAQUJa2V5SGVhbHRoBQVtYXhIUAMJAGYCBQVtYXhIUAUGaGVhbHRoCQACAQkArAICCQCsAgICGVBsZWFzZSBoZWFsIHlvdXIgZHVjayB0byAJAKQDAQUFbWF4SFACE2hwIGJlZm9yZSB1bnN0YWtpbmcJAM4IAgkAzAgCCQEOU2NyaXB0VHJhbnNmZXIDCAUBaQZjYWxsZXIAAQUHYXNzZXRJZAkAzAgCCQELRGVsZXRlRW50cnkBBQd0aW1lS2V5CQDMCAIJAQtEZWxldGVFbnRyeQEFCWtleUhlYWx0aAkAzAgCCQELRGVsZXRlRW50cnkBCQEPa2V5RHVja0xvY2F0aW9uAQUKYXNzZXRJZFN0cgkAzAgCCQELRGVsZXRlRW50cnkBCQEQa2V5RHVja0lkVG9Pd25lcgEFCmFzc2V0SWRTdHIJAMwIAgkBC0RlbGV0ZUVudHJ5AQkBImtleVN0YWtlZFRpbWVCeVR5cGVBc3NldElkQW5kT3duZXIDBQpEVUNLUFJFRklYBQphc3NldElkU3RyBQdhZGRyZXNzCQDMCAIJAQtEZWxldGVFbnRyeQEJARRrZXlTdGFrZWREdWNrQnlPd25lcgEFB2FkZHJlc3MFA25pbAUNcHJvbG9nQWN0aW9ucwFpAQhjbGFpbVJlcwIGYW1vdW50DmxhbmRBc3NldElkU3RyBA1wcm9sb2dBY3Rpb25zCQEGcHJvbG9nAQUBaQMJAQIhPQIJAJADAQgFAWkIcGF5bWVudHMAAAkAAgECFE5vIHBheW1lbnRzIHJlcXVpcmVkBARhZGRyCQClCAEIBQFpDG9yaWdpbkNhbGxlcgQGcmVzdWx0CQEQY2xhaW1SZXNJbnRlcm5hbAQFBGFkZHIFBmFtb3VudAUNY2xhaW1Nb2RlRHVjawUObGFuZEFzc2V0SWRTdHIEC2R1Y2tBc3NldElkCQETdmFsdWVPckVycm9yTWVzc2FnZQIJAKIIAQkBFGtleVN0YWtlZER1Y2tCeU93bmVyAQUEYWRkcgIcWW91IGRvbid0IGhhdmUgYSBkdWNrIHN0YWtlZAkAlAoCCQDOCAIJAM0IAgkAzQgCCQDOCAIIBQZyZXN1bHQCXzEICQEXdXBkYXRlRHVja1N0YXRzSW50ZXJuYWwCBQtkdWNrQXNzZXRJZAkAawMFB3hwQ2xhaW0FBmFtb3VudAUFTVVMVDgCXzEJAQtTdHJpbmdFbnRyeQIIBQZyZXN1bHQCXzIJALkJAggFBnJlc3VsdAJfMwIBOgkBC1N0cmluZ0VudHJ5AggFBnJlc3VsdAJfNAkAuQkCCAUGcmVzdWx0Al81AgE6BQ1wcm9sb2dBY3Rpb25zCQCRAwIIBQZyZXN1bHQCXzMFCGJwSWR4UmVzAWkBDGNsYWltUmVzVG9XSAIGYW1vdW50DmxhbmRBc3NldElkU3RyBA1wcm9sb2dBY3Rpb25zCQEGcHJvbG9nAQUBaQMJAQIhPQIJAJADAQgFAWkIcGF5bWVudHMAAAkAAgECFE5vIHBheW1lbnRzIHJlcXVpcmVkBARhZGRyCQClCAEIBQFpDG9yaWdpbkNhbGxlcgQGcmVzdWx0CQEQY2xhaW1SZXNJbnRlcm5hbAQFBGFkZHIFBmFtb3VudAULY2xhaW1Nb2RlV2gFDmxhbmRBc3NldElkU3RyCQCUCgIJAM4IAgkAzQgCCQDNCAIJAM4IAggFBnJlc3VsdAJfMQgJARZ1cGRhdGVBY2NTdGF0c0ludGVybmFsAgUEYWRkcgkAawMFB3hwQ2xhaW0FBmFtb3VudAUFTVVMVDgCXzEJAQtTdHJpbmdFbnRyeQIIBQZyZXN1bHQCXzIJALkJAggFBnJlc3VsdAJfMwIBOgkBC1N0cmluZ0VudHJ5AggFBnJlc3VsdAJfNAkAuQkCCAUGcmVzdWx0Al81AgE6BQ1wcm9sb2dBY3Rpb25zCQCRAwIIBQZyZXN1bHQCXzUFCHdoSWR4UmVzAWkBBmZsaWdodAIHbWVzc2FnZQNzaWcEDXByb2xvZ0FjdGlvbnMJAQZwcm9sb2cBBQFpAwkBAiE9AgkAkAMBCAUBaQhwYXltZW50cwAACQACAQIUTm8gcGF5bWVudHMgcmVxdWlyZWQECHVzZXJBZGRyCQClCAEIBQFpBmNhbGxlcgQBZgkBDGZsaWdodENvbW1vbgMFCHVzZXJBZGRyBQdtZXNzYWdlBQNzaWcEBW5ld0hQCAUBZgJfMQQLZHVja0Fzc2V0SWQIBQFmAl8yBAZsb2NLZXkJAQ9rZXlEdWNrTG9jYXRpb24BBQtkdWNrQXNzZXRJZAQLY3VyTG9jYXRpb24JAQt2YWx1ZU9yRWxzZQIJAKIIAQUGbG9jS2V5BQ9ERUZBVUxUTE9DQVRJT04EC25ld0xvY2F0aW9uCAUBZgJfNAMJAAACBQtuZXdMb2NhdGlvbgULY3VyTG9jYXRpb24JAAIBAiJZb3UgY2FuJ3QgZmx5IHRvIHRoZSBzYW1lIGxvY2F0aW9uBAZuZXdMb2MJALUJAgULbmV3TG9jYXRpb24CAV8EBmlzVG91cgkAAAIJAJEDAgUGbmV3TG9jBQpsb2NJZHhUeXBlAgFUBAdpc0RlbGl2CQAAAgkAkQMCBQZuZXdMb2MFCmxvY0lkeFR5cGUCAUQEBWVxS2V5CQEQa2V5RHVja0VxdWlwbWVudAEFC2R1Y2tBc3NldElkBAljdXJyZW50RXEJAQt2YWx1ZU9yRWxzZQIJAKIIAQUFZXFLZXkCFyw7LF8sOyxfLDssXyw7LF8sOyxfLDssBA0kdDA2NjM3MDY2NDc2CQERc3VidHJhY3RFcXVpcG1lbnQCBQljdXJyZW50RXEIBQFmAl81BAVuZXdFcQgFDSR0MDY2MzcwNjY0NzYCXzEED3Nob3VsZFplcm9CdWZmcwgFDSR0MDY2MzcwNjY0NzYCXzIEB2lnbm9yZWQIBQ0kdDA2NjM3MDY2NDc2Al8zBA0kdDA2NjQ3OTY4MzExAwkBASEBCQEJb25NaXNzaW9uAgUSdG91cm5hbWVudENvbnRyYWN0BQtjdXJMb2NhdGlvbgMFBmlzVG91cgkBDGNoZWF0QXR0ZW1wdAMFC2N1ckxvY2F0aW9uBQtuZXdMb2NhdGlvbgAFAwkBASEBBQdpc0RlbGl2AwkAZgIFBW5ld0hQAAAJAJQKAgULbmV3TG9jYXRpb24FBW5ld0hQCQCUCgIFC2N1ckxvY2F0aW9uAAADCQBmAgUFbmV3SFAAAAQBcwkA/AcEBQR0aGlzAg9wcm9jZXNzRGVsaXZlcnkJAMwIAgULZHVja0Fzc2V0SWQFA25pbAUDbmlsAwkAAAIFAXMFAXMJAJQKAgULY3VyTG9jYXRpb24FBW5ld0hQCQACAQIkU3RyaWN0IHZhbHVlIGlzIG5vdCBlcXVhbCB0byBpdHNlbGYuCQCUCgIFC2N1ckxvY2F0aW9uAAADCQEOaXNJblRvdXJuYW1lbnQCBRJ0b3VybmFtZW50Q29udHJhY3QFC2N1ckxvY2F0aW9uAwkBASEBCQEOaXNJblRvdXJuYW1lbnQCBRJ0b3VybmFtZW50Q29udHJhY3QFC25ld0xvY2F0aW9uCQACAQIqWW91ciBkdWNrIGlzIHRha2luZyBwYXJ0IGluIHRoZSB0b3VybmFtZW50BAVzY29yZQkBDXBhcnNlSW50VmFsdWUBCQCRAwIFBm5ld0xvYwUIbG9jSWR4SWQEBmN1ckxvYwkAtQkCBQtjdXJMb2NhdGlvbgIBXwQGbGFzdElkCQELdmFsdWVPckVsc2UCCQCaCAIFEnRvdXJuYW1lbnRDb250cmFjdAUNbGFzdFRvdXJJZEtleQAAAwkBAiE9AgUFc2NvcmUJAGQCCQENcGFyc2VJbnRWYWx1ZQEJAJEDAgUGY3VyTG9jBQhsb2NJZHhJZAABCQEMY2hlYXRBdHRlbXB0AwULY3VyTG9jYXRpb24FC25ld0xvY2F0aW9uAAcDCQBmAgUFbmV3SFAAAAQJbG9jYWxCZXN0CQELdmFsdWVPckVsc2UCCQCaCAIFEnRvdXJuYW1lbnRDb250cmFjdAkBGmtleUJlc3RSZXN1bHRCeVRvdXJBbmREdWNrAgUGbGFzdElkBQtkdWNrQXNzZXRJZAAABAh1cGRMb2NhbAMJAGYCBQVzY29yZQUJbG9jYWxCZXN0CQD8BwQFEnRvdXJuYW1lbnRDb250cmFjdAIOc2F2ZUR1Y2tSZXN1bHQJAMwIAgULZHVja0Fzc2V0SWQJAMwIAgUFc2NvcmUFA25pbAUDbmlsBQR1bml0AwkAAAIFCHVwZExvY2FsBQh1cGRMb2NhbAkAlAoCBQtuZXdMb2NhdGlvbgUFbmV3SFAJAAIBAiRTdHJpY3QgdmFsdWUgaXMgbm90IGVxdWFsIHRvIGl0c2VsZi4JAJQKAgULY3VyTG9jYXRpb24AAAkAAgEJAKwCAgIUVW5rbm93biBjdXJMb2NhdGlvbjoFC2N1ckxvY2F0aW9uBAlsb2NUb1NhdmUIBQ0kdDA2NjQ3OTY4MzExAl8xBAhocFRvU2F2ZQgFDSR0MDY2NDc5NjgzMTECXzIJAJQKAgkAzggCCQDOCAIJAM4IAgkAzAgCCQELU3RyaW5nRW50cnkCBQZsb2NLZXkFCWxvY1RvU2F2ZQkAzAgCCQELU3RyaW5nRW50cnkCBQVlcUtleQUFbmV3RXEJAMwIAgkBDEludGVnZXJFbnRyeQIJAQ1rZXlEdWNrSGVhbHRoAQULZHVja0Fzc2V0SWQFCGhwVG9TYXZlBQNuaWwFDXByb2xvZ0FjdGlvbnMDBQ9zaG91bGRaZXJvQnVmZnMJAMwIAgkBC1N0cmluZ0VudHJ5AgkBDGtleUR1Y2tCdWZmcwEFC2R1Y2tBc3NldElkAgkwXzBfMF8wXzAFA25pbAUDbmlsCAkBF3VwZGF0ZUR1Y2tTdGF0c0ludGVybmFsAgULZHVja0Fzc2V0SWQDCQBmAgUFbmV3SFAAAAUPeHBTdWNjZXNzRmxpZ2h0BQx4cEZhaWxGbGlnaHQCXzEIBQFmAl8zAWkBBGhlYWwDCnF1YW50aXR5TDEKcXVhbnRpdHlMMgpxdWFudGl0eUwzBA1wcm9sb2dBY3Rpb25zCQEGcHJvbG9nAQUBaQMDAwkAZgIAAAUKcXVhbnRpdHlMMQYJAGYCAAAFCnF1YW50aXR5TDIGCQBmAgAABQpxdWFudGl0eUwzCQACAQIbUXVhbnRpdHkgY2Fubm90IGJlIG5lZ2F0aXZlBAtkdWNrQXNzZXRJZAkBE3ZhbHVlT3JFcnJvck1lc3NhZ2UCCQCiCAEJARRrZXlTdGFrZWREdWNrQnlPd25lcgEJAKUIAQgFAWkGY2FsbGVyAhxZb3UgZG9uJ3QgaGF2ZSBhIGR1Y2sgc3Rha2VkAwkBD2NoZWNrVG91cm5hbWVudAEFC2R1Y2tBc3NldElkCQACAQIUaGVhbF9jaGVja1RvdXJuYW1lbnQEA3F0cwkAzAgCBQpxdWFudGl0eUwxCQDMCAIFCnF1YW50aXR5TDIJAMwIAgUKcXVhbnRpdHlMMwUDbmlsBAlrZXlIZWFsdGgJAQ1rZXlEdWNrSGVhbHRoAQULZHVja0Fzc2V0SWQEBW1heEhQCQEJbWF4SGVhbHRoAQkBC3ZhbHVlT3JFbHNlAgkAnwgBCQEMa2V5RHVja0xldmVsAQULZHVja0Fzc2V0SWQAAAQJb2xkSGVhbHRoCQELdmFsdWVPckVsc2UCCQCfCAEFCWtleUhlYWx0aAUFbWF4SFADCQBnAgUJb2xkSGVhbHRoBQVtYXhIUAkAAgEJAKwCAgkArAICAg9IUCBzaG91bGQgYmUgPCAJAKQDAQUFbWF4SFACCCB0byBoZWFsBAVicEtleQkBEWtleUJhY2twYWNrQnlEdWNrAQULZHVja0Fzc2V0SWQEC2N1cnJlbnRQYWNrCQELZ2V0QmFja3BhY2sBBQVicEtleQQIcHJvZExpc3QDCQAAAgkAkQMCBQtjdXJyZW50UGFjawUJYnBJZHhQcm9kAgAFA25pbAkAvAkCCQCRAwIFC2N1cnJlbnRQYWNrBQlicElkeFByb2QCAV8KAQtpdGVyYXRlUHJvZAIDYWNjBnJlY2lwZQQBbggFA2FjYwJfMgQBeAMJAGYCCQCQAwEFCHByb2RMaXN0BQFuCQENcGFyc2VJbnRWYWx1ZQEJAJEDAgUIcHJvZExpc3QFAW4AAAMJAGYCAAMFAW4EAXEJAJEDAgUDcXRzBQFuAwkAZgIFAXEFAXgJAAIBCQCsAgIJAKwCAgkArAICAg5Zb3UgaGF2ZSBvbmx5IAkApAMBBQF4AgQgb2YgCQCRAwIFCXByb2RUeXBlcwUBbgkAlQoDCQDNCAIIBQNhY2MCXzEJAKQDAQkAZQIFAXgFAXEJAGQCBQFuAAEJAGQCCAUDYWNjAl8zCQBoAgkBDXBhcnNlSW50VmFsdWUBCQCRAwIJALUJAgUGcmVjaXBlAgFfBQpySWR4RWZmZWN0BQFxCQCVCgMJAM0IAggFA2FjYwJfMQkApAMBBQF4CQBkAgUBbgABCAUDYWNjAl8zBAZyZXN1bHQKAAIkbAUQcHJvZHVjdGlvbk1hdHJpeAoAAiRzCQCQAwEFAiRsCgAFJGFjYzAJAJUKAwUDbmlsAAAAAAoBBSRmMF8xAgIkYQIkaQMJAGcCBQIkaQUCJHMFAiRhCQELaXRlcmF0ZVByb2QCBQIkYQkAkQMCBQIkbAUCJGkKAQUkZjBfMgICJGECJGkDCQBnAgUCJGkFAiRzBQIkYQkAAgECFExpc3Qgc2l6ZSBleGNlZWRzIDUwCQEFJGYwXzICCQEFJGYwXzECCQEFJGYwXzECCQEFJGYwXzECCQEFJGYwXzECCQEFJGYwXzECCQEFJGYwXzECCQEFJGYwXzECCQEFJGYwXzECCQEFJGYwXzECCQEFJGYwXzECCQEFJGYwXzECCQEFJGYwXzECCQEFJGYwXzECCQEFJGYwXzECCQEFJGYwXzECCQEFJGYwXzECCQEFJGYwXzECCQEFJGYwXzECCQEFJGYwXzECCQEFJGYwXzECCQEFJGYwXzECCQEFJGYwXzECCQEFJGYwXzECCQEFJGYwXzECCQEFJGYwXzECCQEFJGYwXzECCQEFJGYwXzECCQEFJGYwXzECCQEFJGYwXzECCQEFJGYwXzECCQEFJGYwXzECCQEFJGYwXzECCQEFJGYwXzECCQEFJGYwXzECCQEFJGYwXzECCQEFJGYwXzECCQEFJGYwXzECCQEFJGYwXzECCQEFJGYwXzECCQEFJGYwXzECCQEFJGYwXzECCQEFJGYwXzECCQEFJGYwXzECCQEFJGYwXzECCQEFJGYwXzECCQEFJGYwXzECCQEFJGYwXzECCQEFJGYwXzECCQEFJGYwXzECCQEFJGYwXzECBQUkYWNjMAAAAAEAAgADAAQABQAGAAcACAAJAAoACwAMAA0ADgAPABAAEQASABMAFAAVABYAFwAYABkAGgAbABwAHQAeAB8AIAAhACIAIwAkACUAJgAnACgAKQAqACsALAAtAC4ALwAwADEAMgQJbmV3SGVhbHRoCQCXAwEJAMwIAgUFbWF4SFAJAMwIAgkAZAIFCW9sZEhlYWx0aAgFBnJlc3VsdAJfMwUDbmlsCQCUCgIJAM4IAgkAzggCCQDMCAIJAQxJbnRlZ2VyRW50cnkCBQlrZXlIZWFsdGgFCW5ld0hlYWx0aAkAzAgCCQELU3RyaW5nRW50cnkCBQVicEtleQkAugkCCQDMCAIJAJEDAgULY3VycmVudFBhY2sFCmJwSWR4TGV2ZWwJAMwIAgkAkQMCBQtjdXJyZW50UGFjawUIYnBJZHhSZXMJAMwIAgkAkQMCBQtjdXJyZW50UGFjawUIYnBJZHhNYXQJAMwIAgkAuQkCCAUGcmVzdWx0Al8xAgFfBQNuaWwCAToFA25pbAUNcHJvbG9nQWN0aW9ucwgJARd1cGRhdGVEdWNrU3RhdHNJbnRlcm5hbAIFC2R1Y2tBc3NldElkCQBoAgUGeHBIZWFsCQBkAgkAZAIFCnF1YW50aXR5TDEFCnF1YW50aXR5TDIFCnF1YW50aXR5TDMCXzEFCW5ld0hlYWx0aAFpAQZoZWFsRVMABA1wcm9sb2dBY3Rpb25zCQEGcHJvbG9nAQUBaQMJAQIhPQIJAJADAQgFAWkIcGF5bWVudHMAAQkAAgECHEV4YWN0bHkgb25lIHBheW1lbnQgcmVxdWlyZWQEA3BtdAkBBXZhbHVlAQkAkQMCCAUBaQhwYXltZW50cwAAAwkBAiE9AggFA3BtdAdhc3NldElkBQt1c2R0QXNzZXRJZAkAAgECGkFsbG93ZWQgVVNEVCBwYXltZW50IG9ubHkhBAtkdWNrQXNzZXRJZAkBE3ZhbHVlT3JFcnJvck1lc3NhZ2UCCQCiCAEJARRrZXlTdGFrZWREdWNrQnlPd25lcgEJAKUIAQgFAWkGY2FsbGVyAhxZb3UgZG9uJ3QgaGF2ZSBhIGR1Y2sgc3Rha2VkAwkBD2NoZWNrVG91cm5hbWVudAEFC2R1Y2tBc3NldElkCQACAQIWaGVhbEVTX2NoZWNrVG91cm5hbWVudAQJa2V5SGVhbHRoCQENa2V5RHVja0hlYWx0aAEFC2R1Y2tBc3NldElkBAVtYXhIUAkBCW1heEhlYWx0aAEJAQt2YWx1ZU9yRWxzZQIJAJ8IAQkBDGtleUR1Y2tMZXZlbAEFC2R1Y2tBc3NldElkAAAECW9sZEhlYWx0aAkBC3ZhbHVlT3JFbHNlAgkAnwgBBQlrZXlIZWFsdGgFBW1heEhQAwkAZgIFCW9sZEhlYWx0aAAACQACAQIoSFAgc2hvdWxkIGJlIDAgdG8gY2FsbCBFbWVyZ2VuY3kgU2VydmljZQQFYnBLZXkJARFrZXlCYWNrcGFja0J5RHVjawEFC2R1Y2tBc3NldElkBAtjdXJyZW50UGFjawkBC2dldEJhY2twYWNrAQUFYnBLZXkECHByb2RMaXN0AwkAAAIJAJEDAgULY3VycmVudFBhY2sFCWJwSWR4UHJvZAIABQNuaWwJALwJAgkAkQMCBQtjdXJyZW50UGFjawUJYnBJZHhQcm9kAgFfBA1tZWRLaXRBbW91bnQxAwkAZgIJAJADAQUIcHJvZExpc3QAAAkBDXBhcnNlSW50VmFsdWUBCQCRAwIFCHByb2RMaXN0AAAAAAQNbWVkS2l0QW1vdW50MgMJAGYCCQCQAwEFCHByb2RMaXN0AAEJAQ1wYXJzZUludFZhbHVlAQkAkQMCBQhwcm9kTGlzdAABAAAEDW1lZEtpdEFtb3VudDMDCQBmAgkAkAMBBQhwcm9kTGlzdAACCQENcGFyc2VJbnRWYWx1ZQEJAJEDAgUIcHJvZExpc3QAAgAAAwMDCQBmAgUNbWVkS2l0QW1vdW50MQAABgkAZgIFDW1lZEtpdEFtb3VudDIAAAYJAGYCBQ1tZWRLaXRBbW91bnQzAAAJAAIBAh9Zb3UgaGF2ZSB0byB1c2Ugb3duIE1lZGljYWwgS2l0BAhleGlzdFN0cgkAnQgCBQ9lY29ub215Q29udHJhY3QJAQ5rZXlFc1dhcmVob3VzZQAEDGV4aXN0QW1vdW50cwMJAQlpc0RlZmluZWQBBQhleGlzdFN0cgkAvAkCCQEFdmFsdWUBBQhleGlzdFN0cgIBXwUDbmlsBAtleGlzdEFtb3VudAMJAGYCCQCQAwEFDGV4aXN0QW1vdW50cwAACQENcGFyc2VJbnRWYWx1ZQEJAJEDAgUMZXhpc3RBbW91bnRzAAAAAAMJAGcCAAAFC2V4aXN0QW1vdW50CQACAQI5VGhlcmUgYXJlIG5vIE1lZGljYWwgS2l0cyBMMSBhdCBFbWVyZ2VuY3kgU2VydmljZSBzdG9yYWdlBAluZXdIZWFsdGgJAGQCBQlvbGRIZWFsdGgJAQ1wYXJzZUludFZhbHVlAQkAkQMCCQC1CQIJAJEDAgUQcHJvZHVjdGlvbk1hdHJpeAAAAgFfBQpySWR4RWZmZWN0BAVuZXdFUwkAuQkCCQDMCAIJAKQDAQkAZQIFC2V4aXN0QW1vdW50AAEJANEIAgUMZXhpc3RBbW91bnRzAAACAV8EBnJlY2lwZQkAtQkCCQCRAwIFEHByb2R1Y3Rpb25NYXRyaXgAAAIBXwQIdG90YWxNYXQJARJnZXRSZWNpcGVNYXRlcmlhbHMBBQZyZWNpcGUECXNlbGxQcmljZQkAawMJAGgCBQh0b3RhbE1hdAUKRVNTRUxMQ09FRgUQUkVTT1VSQ0VQUklDRU1JTgkAaAIFBU1VTFQ4BQ5QUk9EVUNUUEtHU0laRQMJAQIhPQIIBQNwbXQGYW1vdW50BQlzZWxsUHJpY2UJAAIBCQCsAgICG1BheW1lbnQgYXR0YWNoZWQgc2hvdWxkIGJlIAkApAMBBQlzZWxsUHJpY2UEBnJlc3VsdAkBCGFzU3RyaW5nAQkA/AcEBQ9lY29ub215Q29udHJhY3QCD3VwZGF0ZUVzU3RvcmFnZQkAzAgCBQVuZXdFUwUDbmlsCQDMCAIJAQ9BdHRhY2hlZFBheW1lbnQCBQt1c2R0QXNzZXRJZAUJc2VsbFByaWNlBQNuaWwJAJQKAgkAzggCCQDNCAIFDXByb2xvZ0FjdGlvbnMJAQxJbnRlZ2VyRW50cnkCBQlrZXlIZWFsdGgFCW5ld0hlYWx0aAgJARd1cGRhdGVEdWNrU3RhdHNJbnRlcm5hbAIFC2R1Y2tBc3NldElkBQh4cENhbGxFUwJfMQUGcmVzdWx0AWkBDnVwZGF0ZUJhY2twYWNrAgtkdWNrQXNzZXRJZAduZXdQYWNrAwkBAiE9AggFAWkGY2FsbGVyBQ9lY29ub215Q29udHJhY3QJAAIBAhFwZXJtaXNzaW9uIGRlbmllZAkAlAoCCQDMCAIJAQtTdHJpbmdFbnRyeQIJARFrZXlCYWNrcGFja0J5RHVjawEFC2R1Y2tBc3NldElkBQduZXdQYWNrBQNuaWwFB25ld1BhY2sBaQEPY29tbWl0Rm9yUmFuZG9tAAQNcHJvbG9nQWN0aW9ucwkBBnByb2xvZwEFAWkEC2ZpbmlzaEJsb2NrCQBkAgUGaGVpZ2h0BQtyYW5kb21EZWxheQQEYWRkcgkApQgBCAUBaQZjYWxsZXIJAJQKAgkAzggCCQDMCAIJAQxJbnRlZ2VyRW50cnkCCQEJa2V5Q29tbWl0AQUEYWRkcgULZmluaXNoQmxvY2sFA25pbAUNcHJvbG9nQWN0aW9ucwULZmluaXNoQmxvY2sBaQEMcmV2ZWFsUmFuZG9tAQhtYXhWYWx1ZQQNcHJvbG9nQWN0aW9ucwkBBnByb2xvZwEFAWkEBGFkZHIJAKUIAQgFAWkGY2FsbGVyBAlmaW5pc2hLZXkJAQlrZXlDb21taXQBBQRhZGRyBAtmaW5pc2hCbG9jawkBE3ZhbHVlT3JFcnJvck1lc3NhZ2UCCQCfCAEFCWZpbmlzaEtleQIkWW91IGhhdmUgdG8gY29tbWl0Rm9yUmFuZG9tKCkgZmlyc3QhAwkAZgIFC2ZpbmlzaEJsb2NrBQZoZWlnaHQJAAIBCQCsAgICNFJhbmRvbSBudW1iZXIgaXMgbm90IHJlYWR5IHlldCwgd2FpdCB1bnRpbCBoZWlnaHQgPSAJAKQDAQULZmluaXNoQmxvY2sEB2VudHJvcHkJAQV2YWx1ZQEICQEFdmFsdWUBCQDtBwEFC2ZpbmlzaEJsb2NrA3ZyZgQEc2FsdAkAmwMBCQELdmFsdWVPckVsc2UCCQCiCAEJARFrZXlMYXN0VHhJZEJ5VXNlcgEFBGFkZHICAAQEcmFuZAkBD2dldFJhbmRvbU51bWJlcgMFCG1heFZhbHVlBQRzYWx0BQdlbnRyb3B5CQCUCgIJAM4IAgkAzAgCCQELRGVsZXRlRW50cnkBBQlmaW5pc2hLZXkFA25pbAUNcHJvbG9nQWN0aW9ucwUEcmFuZAFpAQhidXlTTGFuZAAEDXByb2xvZ0FjdGlvbnMJAQZwcm9sb2cBBQFpAwkBAiE9AgkAkAMBCAUBaQhwYXltZW50cwABCQACAQIcRXhhY3RseSBvbmUgcGF5bWVudCByZXF1aXJlZAQDcG10CQEFdmFsdWUBCQCRAwIIBQFpCHBheW1lbnRzAAADCQECIT0CCAUDcG10B2Fzc2V0SWQFC3VzZHRBc3NldElkCQACAQIaQWxsb3dlZCBVU0RUIHBheW1lbnQgb25seSEDCQECIT0CCAUDcG10BmFtb3VudAUHRVhQVVNEVAkAAgEJAKwCAgIbUGF5bWVudCBhdHRhY2hlZCBzaG91bGQgYmUgCQCkAwEFB0VYUFVTRFQEBnJlc3VsdAkBEmV4cGVkaXRpb25JbnRlcm5hbAIIBQFpBmNhbGxlcggFAWkNdHJhbnNhY3Rpb25JZAQLYWNyZXNSZXN1bHQJAQVhc0ludAEJAPwHBAUNYWNyZXNDb250cmFjdAIJYnVybkFjcmVzCQDMCAIFDFNfQ09TVF9BQ1JFUwUDbmlsBQNuaWwJAJQKAgkAzggCCQDOCAIJAM0IAggFBnJlc3VsdAJfMQkBDlNjcmlwdFRyYW5zZmVyAwUPZWNvbm9teUNvbnRyYWN0CAUDcG10BmFtb3VudAULdXNkdEFzc2V0SWQICQEWdXBkYXRlQWNjU3RhdHNJbnRlcm5hbAIJAKUIAQgFAWkGY2FsbGVyBQp4cE5ld1NMYW5kAl8xBQ1wcm9sb2dBY3Rpb25zCQCUCgIICAUGcmVzdWx0Al8yAl8xBQthY3Jlc1Jlc3VsdAFpAQpleHBlZGl0aW9uAgdtZXNzYWdlA3NpZwQNcHJvbG9nQWN0aW9ucwkBBnByb2xvZwEFAWkDCQECIT0CCQCQAwEIBQFpCHBheW1lbnRzAAAJAAIBAhRObyBwYXltZW50cyByZXF1aXJlZAQIdXNlckFkZHIJAKUIAQgFAWkGY2FsbGVyBAFmCQEMZmxpZ2h0Q29tbW9uAwUIdXNlckFkZHIFB21lc3NhZ2UFA3NpZwQLZHVja0Fzc2V0SWQIBQFmAl8yBAlrZXlIZWFsdGgJAQ1rZXlEdWNrSGVhbHRoAQULZHVja0Fzc2V0SWQEBWJwS2V5CQERa2V5QmFja3BhY2tCeUR1Y2sBBQtkdWNrQXNzZXRJZAQLY3VycmVudFBhY2sJAQtnZXRCYWNrcGFjawEFBWJwS2V5BAVtTGlzdAkAtQkCCQCRAwIFC2N1cnJlbnRQYWNrBQhicElkeE1hdAIBXwQGbmV3TWF0CQC5CQIJARFzdWJ0cmFjdE1hdGVyaWFscwMGBQVtTGlzdAUMRVhQTUFURVJJQUxTAgFfBAVlcUtleQkBEGtleUR1Y2tFcXVpcG1lbnQBBQtkdWNrQXNzZXRJZAQJY3VycmVudEVxCQELdmFsdWVPckVsc2UCCQCiCAEFBWVxS2V5AhcsOyxfLDssXyw7LF8sOyxfLDssXyw7LAQNJHQwNzYyMzE3NjMzNwkBEXN1YnRyYWN0RXF1aXBtZW50AgUJY3VycmVudEVxCAUBZgJfNQQFbmV3RXEIBQ0kdDA3NjIzMTc2MzM3Al8xBA9zaG91bGRaZXJvQnVmZnMIBQ0kdDA3NjIzMTc2MzM3Al8yBAdpZ25vcmVkCAUNJHQwNzYyMzE3NjMzNwJfMwQBZQkBEmV4cGVkaXRpb25JbnRlcm5hbAIIBQFpBmNhbGxlcggFAWkNdHJhbnNhY3Rpb25JZAQCaWQICAUBZQJfMgJfMQQGcmVzdWx0AwkAZwIAAAgFAWYCXzEJAJUKAwkAzAgCCQEMSW50ZWdlckVudHJ5AgUJa2V5SGVhbHRoAAAJAMwIAgkBC1N0cmluZ0VudHJ5AgUFZXFLZXkFBW5ld0VxBQNuaWwCAAAACQCVCgMJAM4IAggFAWUCXzEDBQ9zaG91bGRaZXJvQnVmZnMJAMwIAgkBC1N0cmluZ0VudHJ5AgkBDGtleUR1Y2tCdWZmcwEFC2R1Y2tBc3NldElkAgkwXzBfMF8wXzAFA25pbAkAzQgCCQDNCAIJAM0IAgkAzQgCBQNuaWwJAQtTdHJpbmdFbnRyeQIJAQ9rZXlEdWNrTG9jYXRpb24BBQtkdWNrQXNzZXRJZAkAuQkCCQDMCAIICAUBZQJfMgJfMgkAzAgCAgFMCQDMCAIFAmlkBQNuaWwCAV8JAQxJbnRlZ2VyRW50cnkCBQlrZXlIZWFsdGgIBQFmAl8xCQELU3RyaW5nRW50cnkCBQVlcUtleQUFbmV3RXEJAQtTdHJpbmdFbnRyeQIFBWJwS2V5CQC5CQIJAMwIAgkAkQMCBQtjdXJyZW50UGFjawUKYnBJZHhMZXZlbAkAzAgCCQCRAwIFC2N1cnJlbnRQYWNrBQhicElkeFJlcwkAzAgCBQZuZXdNYXQJAMwIAgkAkQMCBQtjdXJyZW50UGFjawUJYnBJZHhQcm9kBQNuaWwCAToFAmlkCAUBZgJfMwMJAQ9jaGVja1RvdXJuYW1lbnQBBQtkdWNrQXNzZXRJZAkAAgECGmV4cGVkaXRpb25fY2hlY2tUb3VybmFtZW50BAthY3Jlc1Jlc3VsdAkBBWFzSW50AQkA/AcEBQ1hY3Jlc0NvbnRyYWN0AglidXJuQWNyZXMJAMwIAgUMU19DT1NUX0FDUkVTBQNuaWwFA25pbAkAlAoCCQDOCAIJAM4IAggFBnJlc3VsdAJfMQgJARd1cGRhdGVEdWNrU3RhdHNJbnRlcm5hbAIFC2R1Y2tBc3NldElkBQp4cE5ld1NMYW5kAl8xBQ1wcm9sb2dBY3Rpb25zCQCVCgMIBQZyZXN1bHQCXzIIBQZyZXN1bHQCXzMFC2FjcmVzUmVzdWx0AWkBEGJ1eVNMYW5kRm9yQWNyZXMABA1wcm9sb2dBY3Rpb25zCQEGcHJvbG9nAQUBaQMJAQIhPQIJAJADAQgFAWkIcGF5bWVudHMAAQkAAgECImV4YWN0bHkgMSBwYXltZW50IG11c3QgYmUgYXR0YWNoZWQEA3BtdAkAkQMCCAUBaQhwYXltZW50cwAABANhbXQIBQNwbXQGYW1vdW50AwMJAQEhAQkBCWlzRGVmaW5lZAEIBQNwbXQHYXNzZXRJZAYJAQIhPQIJAQV2YWx1ZQEIBQNwbXQHYXNzZXRJZAUMYWNyZXNBc3NldElkCQACAQIUQUNSRVMgcGF5bWVudHMgb25seSEDCQECIT0CBQNhbXQFDFNfQ09TVF9BQ1JFUwkAAgEJAKwCAgIbUGF5bWVudCBhdHRhY2hlZCBzaG91bGQgYmUgCQCkAwEFDFNfQ09TVF9BQ1JFUwQGcmVzdWx0CQESZXhwZWRpdGlvbkludGVybmFsAggFAWkGY2FsbGVyCAUBaQ10cmFuc2FjdGlvbklkBAthY3Jlc1Jlc3VsdAkBBWFzSW50AQkA/AcEBQ1hY3Jlc0NvbnRyYWN0AglidXJuQWNyZXMJAMwIAgUMU19DT1NUX0FDUkVTBQNuaWwJAMwIAgkBD0F0dGFjaGVkUGF5bWVudAIFDGFjcmVzQXNzZXRJZAUDYW10BQNuaWwJAJQKAgkAzggCCQDOCAIIBQZyZXN1bHQCXzEICQEWdXBkYXRlQWNjU3RhdHNJbnRlcm5hbAIJAKUIAQgFAWkGY2FsbGVyBQp4cE5ld1NMYW5kAl8xBQ1wcm9sb2dBY3Rpb25zCQCUCgIICAUGcmVzdWx0Al8yAl8xBQthY3Jlc1Jlc3VsdAFpAQx1cGdyYWRlSW5mcmEBC2xhbmRBc3NldElkBA1wcm9sb2dBY3Rpb25zCQEGcHJvbG9nAQUBaQMJAQIhPQIJAJADAQgFAWkIcGF5bWVudHMAAAkAAgECFE5vIHBheW1lbnRzIHJlcXVpcmVkBAZyZXN1bHQJAQ11cEluZnJhQ29tbW9uBAYIBQFpBmNhbGxlcgAABQtsYW5kQXNzZXRJZAQLZHVja0Fzc2V0SWQJARN2YWx1ZU9yRXJyb3JNZXNzYWdlAgkAoggBCQEUa2V5U3Rha2VkRHVja0J5T3duZXIBCQClCAEIBQFpBmNhbGxlcgIcWW91IGRvbid0IGhhdmUgYSBkdWNrIHN0YWtlZAkAlAoCCQDOCAIJAM4IAggFBnJlc3VsdAJfMQUNcHJvbG9nQWN0aW9ucwgJARd1cGRhdGVEdWNrU3RhdHNJbnRlcm5hbAIFC2R1Y2tBc3NldElkCQBrAwUOeHBVcGdyYWRlSW5mcmEIBQZyZXN1bHQCXzMFBU1VTFQ4Al8xCAUGcmVzdWx0Al8yAWkBEGFjdGl2YXRlQXJ0aWZhY3QCB2FydE5hbWUObGFuZEFzc2V0SWRPcHQEDXByb2xvZ0FjdGlvbnMJAQZwcm9sb2cBBQFpAwkBAiE9AgkAkAMBCAUBaQhwYXltZW50cwAACQACAQIUTm8gcGF5bWVudHMgcmVxdWlyZWQEBGFkZHIJAKUIAQgFAWkGY2FsbGVyBAZyZXN1bHQEByRtYXRjaDAFB2FydE5hbWUDCQAAAgIHUFJFU0FMRQUHJG1hdGNoMAkBEmFjdGl2YXRlUHJlc2FsZUFydAIFBGFkZHIFDmxhbmRBc3NldElkT3B0AwkAAAICB09OQk9BUkQFByRtYXRjaDAJARJhY3RpdmF0ZU9uYm9hcmRBcnQBBQRhZGRyCQACAQIQVW5rbm93biBhcnRpZmFjdAkAzggCBQZyZXN1bHQFDXByb2xvZ0FjdGlvbnMBaQEKbWVyZ2VMYW5kcwEMbGFuZEFzc2V0SWRzBA1wcm9sb2dBY3Rpb25zCQEGcHJvbG9nAQUBaQMJAQIhPQIJAJADAQgFAWkIcGF5bWVudHMAAAkAAgECFE5vIHBheW1lbnRzIHJlcXVpcmVkBAZyZXN1bHQJAQttZXJnZUNvbW1vbgIJAKUIAQgFAWkGY2FsbGVyBQxsYW5kQXNzZXRJZHMJAJQKAgkAzggCCQDOCAIIBQZyZXN1bHQCXzEFDXByb2xvZ0FjdGlvbnMICQEWdXBkYXRlQWNjU3RhdHNJbnRlcm5hbAIJAKUIAQgFAWkGY2FsbGVyBQd4cE1lcmdlAl8xCAUGcmVzdWx0Al8yAWkBDWNhcmdvRXhjaGFuZ2UCDGNhcmdvTGlzdFN0cgtsYW5kQXNzZXRJZAQNcHJvbG9nQWN0aW9ucwkBBnByb2xvZwEFAWkDCQECIT0CCQCQAwEIBQFpCHBheW1lbnRzAAAJAAIBAhRObyBwYXltZW50cyByZXF1aXJlZAQKY2FyZ29QYXJ0cwkAvAkCBQxjYXJnb0xpc3RTdHICAToEBGFkZHIJAKUIAQgFAWkMb3JpZ2luQ2FsbGVyBAVhc3NldAkBBXZhbHVlAQkA7AcBCQDZBAEFC2xhbmRBc3NldElkBAd0aW1lS2V5CQEWa2V5U3Rha2VkVGltZUJ5QXNzZXRJZAEFC2xhbmRBc3NldElkAwkBASEBCQEJaXNEZWZpbmVkAQkAnwgBBQd0aW1lS2V5CQACAQkArAICCAUFYXNzZXQEbmFtZQIOIGlzIG5vdCBzdGFrZWQEBW93bmVyCQETdmFsdWVPckVycm9yTWVzc2FnZQIJAKIIAQkBFWtleUxhbmRBc3NldElkVG9Pd25lcgEFC2xhbmRBc3NldElkCQCsAgIJAKwCAgIETkZUIAgFBWFzc2V0BG5hbWUCDCBpcyBvcnBoYW5lZAMJAQIhPQIFBW93bmVyBQRhZGRyCQACAQkArAICBQpMQU5EUFJFRklYAg0gaXMgbm90IHlvdXJzBAlsYW5kSW5kZXgJAGkCCQEPbnVtUGllY2VzQnlTaXplAQkAkQMCCQC1CQIIBQVhc3NldAtkZXNjcmlwdGlvbgIBXwULcmVjTGFuZFNpemUFBVNTSVpFBAppbmZyYUxldmVsCQELdmFsdWVPckVsc2UCCQCfCAEJARZrZXlJbmZyYUxldmVsQnlBc3NldElkAQULbGFuZEFzc2V0SWQAAAQLZHVja0Fzc2V0SWQJARN2YWx1ZU9yRXJyb3JNZXNzYWdlAgkAoggBCQEUa2V5U3Rha2VkRHVja0J5T3duZXIBBQRhZGRyAhxZb3UgZG9uJ3QgaGF2ZSBhIGR1Y2sgc3Rha2VkBAtjdXJMb2NhdGlvbgkBC3ZhbHVlT3JFbHNlAgkAoggBCQEPa2V5RHVja0xvY2F0aW9uAQULZHVja0Fzc2V0SWQFD0RFRkFVTFRMT0NBVElPTgQDbG9jCQC1CQIJAQV2YWx1ZQEFC2N1ckxvY2F0aW9uAgFfAwkBAiE9AgkAkQMCBQNsb2MFCmxvY0lkeFR5cGUCAUwJAAIBCQCsAgIJAKwCAgIWRHVjayBsb2NhdGlvbiB0eXBlIGlzIAkAkQMCBQNsb2MFCmxvY0lkeFR5cGUCESwgYnV0IHNob3VsZCBiZSBMAwkBAiE9AgkAkQMCBQNsb2MFCGxvY0lkeElkBQtsYW5kQXNzZXRJZAkAAgEJAKwCAgIbRHVjayBzaG91bGQgYmUgb24gdGhlIGxhbmQgBQtsYW5kQXNzZXRJZAQFd2hLZXkJARJrZXlXYXJlaG91c2VCeUxhbmQBBQtsYW5kQXNzZXRJZAQJY3VycmVudFdoCQEMZ2V0V2FyZWhvdXNlAwUFd2hLZXkFCWxhbmRJbmRleAUKaW5mcmFMZXZlbAQFYnBLZXkJARFrZXlCYWNrcGFja0J5RHVjawEFC2R1Y2tBc3NldElkBAtjdXJyZW50UGFjawkBC2dldEJhY2twYWNrAQUFYnBLZXkEBnJlc3VsdAkBCW1vdmVTdHVmZgMFCmNhcmdvUGFydHMFCWN1cnJlbnRXaAULY3VycmVudFBhY2sEBGxvZnQJALUJAgkAkQMCBQljdXJyZW50V2gFCXdoSWR4TE9GVAIBXwQFbG9mdE8JAGQCCQENcGFyc2VJbnRWYWx1ZQEJAJEDAgUEbG9mdAULdm9sT2NjdXBpZWQIBQZyZXN1bHQCXzcEBWxvZnRGCQBlAgkBDXBhcnNlSW50VmFsdWUBCQCRAwIFBGxvZnQFB3ZvbEZyZWUIBQZyZXN1bHQCXzcJAM4IAgkAzAgCCQELU3RyaW5nRW50cnkCBQVicEtleQkAugkCCQDMCAIJAJEDAgULY3VycmVudFBhY2sFCmJwSWR4TGV2ZWwJAMwIAggFBnJlc3VsdAJfNAkAzAgCCAUGcmVzdWx0Al81CQDMCAIIBQZyZXN1bHQCXzYFA25pbAIBOgkAzAgCCQELU3RyaW5nRW50cnkCBQV3aEtleQkAugkCCQDMCAIJAJEDAgUJY3VycmVudFdoBQt3aElkeExldmVscwkAzAgCCAUGcmVzdWx0Al8xCQDMCAIIBQZyZXN1bHQCXzIJAMwIAggFBnJlc3VsdAJfMwkAzAgCCQC5CQIJAMwIAgkAkQMCBQRsb2Z0BQl2b2xMb2NrZWQJAMwIAgkApAMBBQVsb2Z0TwkAzAgCCQCkAwEFBWxvZnRGCQDMCAIJAJEDAgUEbG9mdAUIdm9sVG90YWwFA25pbAIBXwUDbmlsAgE6BQNuaWwFDXByb2xvZ0FjdGlvbnMBaQENc2F2ZVdhcmVob3VzZQIFd2hTdHILbGFuZEFzc2V0SWQDCQECIT0CCAUBaQZjYWxsZXIFD2Vjb25vbXlDb250cmFjdAkAAgECDUFjY2VzcyBkZW5pZWQEBXdoS2V5CQESa2V5V2FyZWhvdXNlQnlMYW5kAQULbGFuZEFzc2V0SWQEAndoCQC8CQIFBXdoU3RyAgE6AwkBAiE9AgkAkAMBBQJ3aAAFCQACAQIwd2FyZWhvdXNlIHN0cmluZyBzaG91bGQgY29udGFpbiA0ICc6JyBzZXBhcmF0b3JzBAVsb2Z0TAkAkQMCCQC1CQIJAJEDAgUCd2gFCXdoSWR4TE9GVAIBXwUJdm9sTG9ja2VkBAVsb2Z0TwkBF2dldFdhcmVob3VzZU9jY3VwaWVkVm9sAQUCd2gEBWxvZnRUCQEXZ2V0V2FyZWhvdXNlVG90YWxWb2x1bWUBCQCRAwIFAndoBQt3aElkeExldmVscwQFbG9mdEYJAGUCCQBlAgUFbG9mdFQJAQ1wYXJzZUludFZhbHVlAQUFbG9mdEwFBWxvZnRPAwkAZgIAAAUFbG9mdEYJAAIBAjBPcGVyYXRpb24gbGVhZHMgdG8gbmVnYXRpdmUgZnJlZSB3YXJlaG91c2Ugc3BhY2UECG5ld1doU3RyCQC6CQIJAMwIAgkAkQMCBQJ3aAULd2hJZHhMZXZlbHMJAMwIAgkAkQMCBQJ3aAUId2hJZHhSZXMJAMwIAgkAkQMCBQJ3aAUId2hJZHhNYXQJAMwIAgkAkQMCBQJ3aAUJd2hJZHhQcm9kCQDMCAIJALkJAgkAzAgCBQVsb2Z0TAkAzAgCCQCkAwEFBWxvZnRPCQDMCAIJAKQDAQUFbG9mdEYJAMwIAgkApAMBBQVsb2Z0VAUDbmlsAgFfBQNuaWwCAToJAJQKAgkAzAgCCQELU3RyaW5nRW50cnkCBQV3aEtleQUIbmV3V2hTdHIFA25pbAUIbmV3V2hTdHIBaQENc2V0Q3VzdG9tTmFtZQMHYXNzZXRJZApjdXN0b21OYW1lBHR5cGUEDXByb2xvZ0FjdGlvbnMJAQZwcm9sb2cBBQFpAwkBAiE9AgkAkAMBCAUBaQhwYXltZW50cwABCQACAQIcRXhhY3RseSBvbmUgcGF5bWVudCByZXF1aXJlZAQDcG10CQEFdmFsdWUBCQCRAwIIBQFpCHBheW1lbnRzAAADCQECIT0CCAUDcG10B2Fzc2V0SWQFC3VzZHRBc3NldElkCQACAQIaQWxsb3dlZCBVU0RUIHBheW1lbnQgb25seSEDCQECIT0CCAUDcG10BmFtb3VudAUMUkVOQU1JTkdDT1NUCQACAQkArAICAhJQYXltZW50IHNob3VsZCBiZSAJAKQDAQUMUkVOQU1JTkdDT1NUAwkBCGNvbnRhaW5zAgUKY3VzdG9tTmFtZQICX18JAAIBCQCsAgICHk5hbWUgc2hvdWxkIG5vdCBjb250YWluICdfXyc6IAUKY3VzdG9tTmFtZQMJAGYCCQCxAgEFCmN1c3RvbU5hbWUFCk1BWE5BTUVMRU4JAAIBCQCsAgICGU5hbWUgdG9vIGxvbmcsIG1heExlbmd0aD0JAKQDAQUKTUFYTkFNRUxFTgQEYWRkcgkApQgBCAUBaQxvcmlnaW5DYWxsZXIEB2FjdGlvbnMEByRtYXRjaDAFBHR5cGUDCQAAAgIHQUNDT1VOVAUHJG1hdGNoMAQKcmV2ZXJzZUtleQkBFmtleUN1c3RvbU5hbWVUb0FkZHJlc3MBBQpjdXN0b21OYW1lBAluYW1lT3duZXIJAKIIAQUKcmV2ZXJzZUtleQMJAQlpc0RlZmluZWQBBQluYW1lT3duZXIJAAIBCQCsAgICGU5hbWUgYWxyZWFkeSByZWdpc3RlcmVkOiAFCmN1c3RvbU5hbWUEDWFkZHJUb05hbWVLZXkJARZrZXlBZGRyZXNzVG9DdXN0b21OYW1lAQUEYWRkcgQHb2xkTmFtZQkAoggBBQ1hZGRyVG9OYW1lS2V5BAdmcmVlT2xkAwkBCWlzRGVmaW5lZAEFB29sZE5hbWUJAMwIAgkBC0RlbGV0ZUVudHJ5AQkBFmtleUN1c3RvbU5hbWVUb0FkZHJlc3MBCQEFdmFsdWUBBQdvbGROYW1lBQNuaWwFA25pbAkAzggCCQDNCAIJAM0IAgUHZnJlZU9sZAkBC1N0cmluZ0VudHJ5AgUNYWRkclRvTmFtZUtleQUKY3VzdG9tTmFtZQkBC1N0cmluZ0VudHJ5AgUKcmV2ZXJzZUtleQUEYWRkcggJARZ1cGRhdGVBY2NTdGF0c0ludGVybmFsAgUEYWRkcgUMeHBDdXN0b21OYW1lAl8xAwkAAAICBExBTkQFByRtYXRjaDAEBWFzc2V0CQEFdmFsdWUBCQDsBwEJANkEAQUHYXNzZXRJZAQHdGltZUtleQkBFmtleVN0YWtlZFRpbWVCeUFzc2V0SWQBBQdhc3NldElkAwkBASEBCQEJaXNEZWZpbmVkAQkAnwgBBQd0aW1lS2V5CQACAQkArAICCAUFYXNzZXQEbmFtZQIOIGlzIG5vdCBzdGFrZWQEBW93bmVyCQETdmFsdWVPckVycm9yTWVzc2FnZQIJAKIIAQkBFWtleUxhbmRBc3NldElkVG9Pd25lcgEFB2Fzc2V0SWQJAKwCAgkArAICAgRORlQgCAUFYXNzZXQEbmFtZQIMIGlzIG9ycGhhbmVkAwkBAiE9AgUFb3duZXIFBGFkZHIJAAIBCQCsAgIFCkxBTkRQUkVGSVgCDSBpcyBub3QgeW91cnMECnJldmVyc2VLZXkJARprZXlMYW5kQ3VzdG9tTmFtZVRvQXNzZXRJZAEFCmN1c3RvbU5hbWUECW5hbWVPd25lcgkAoggBBQpyZXZlcnNlS2V5AwkBCWlzRGVmaW5lZAEFCW5hbWVPd25lcgkAAgEJAKwCAgIZTmFtZSBhbHJlYWR5IHJlZ2lzdGVyZWQ6IAUKY3VzdG9tTmFtZQQOYXNzZXRUb05hbWVLZXkJARprZXlMYW5kQXNzZXRJZFRvQ3VzdG9tTmFtZQEFB2Fzc2V0SWQEB29sZE5hbWUJAKIIAQUOYXNzZXRUb05hbWVLZXkEB2ZyZWVPbGQDCQEJaXNEZWZpbmVkAQUHb2xkTmFtZQkAzAgCCQELRGVsZXRlRW50cnkBCQEaa2V5TGFuZEN1c3RvbU5hbWVUb0Fzc2V0SWQBCQEFdmFsdWUBBQdvbGROYW1lBQNuaWwFA25pbAkAzggCCQDNCAIJAM0IAgUHZnJlZU9sZAkBC1N0cmluZ0VudHJ5AgUOYXNzZXRUb05hbWVLZXkFCmN1c3RvbU5hbWUJAQtTdHJpbmdFbnRyeQIFCnJldmVyc2VLZXkFB2Fzc2V0SWQICQEWdXBkYXRlQWNjU3RhdHNJbnRlcm5hbAIFBGFkZHIFDHhwQ3VzdG9tTmFtZQJfMQMJAAACAgREVUNLBQckbWF0Y2gwBAVhc3NldAkBBXZhbHVlAQkA7AcBCQDZBAEFB2Fzc2V0SWQEB3RpbWVLZXkJARZrZXlTdGFrZWRUaW1lQnlBc3NldElkAQUHYXNzZXRJZAMDCQEBIQEJAQlpc0RlZmluZWQBCQCfCAEFB3RpbWVLZXkGCQEBIQEJAQlpc0RlZmluZWQBCQCiCAEJARRrZXlTdGFrZWREdWNrQnlPd25lcgEFBGFkZHIJAAIBCQCsAgIIBQVhc3NldARuYW1lAg4gaXMgbm90IHN0YWtlZAQFb3duZXIJARN2YWx1ZU9yRXJyb3JNZXNzYWdlAgkAoggBCQEQa2V5RHVja0lkVG9Pd25lcgEFB2Fzc2V0SWQJAKwCAgkArAICAgRORlQgCAUFYXNzZXQEbmFtZQIMIGlzIG9ycGhhbmVkAwkBAiE9AgUFb3duZXIFBGFkZHIJAAIBCQCsAgIFCkRVQ0tQUkVGSVgCDSBpcyBub3QgeW91cnMECnJldmVyc2VLZXkJARprZXlEdWNrQ3VzdG9tTmFtZVRvQXNzZXRJZAEFCmN1c3RvbU5hbWUECW5hbWVPd25lcgkAoggBBQpyZXZlcnNlS2V5AwkBCWlzRGVmaW5lZAEFCW5hbWVPd25lcgkAAgEJAKwCAgIZTmFtZSBhbHJlYWR5IHJlZ2lzdGVyZWQ6IAUKY3VzdG9tTmFtZQQOYXNzZXRUb05hbWVLZXkJARprZXlEdWNrQXNzZXRJZFRvQ3VzdG9tTmFtZQEFB2Fzc2V0SWQEB29sZE5hbWUJAKIIAQUOYXNzZXRUb05hbWVLZXkEB2ZyZWVPbGQDCQEJaXNEZWZpbmVkAQUHb2xkTmFtZQkAzAgCCQELRGVsZXRlRW50cnkBCQEaa2V5RHVja0N1c3RvbU5hbWVUb0Fzc2V0SWQBCQEFdmFsdWUBBQdvbGROYW1lBQNuaWwFA25pbAkAzggCCQDNCAIJAM0IAgUHZnJlZU9sZAkBC1N0cmluZ0VudHJ5AgUOYXNzZXRUb05hbWVLZXkFCmN1c3RvbU5hbWUJAQtTdHJpbmdFbnRyeQIFCnJldmVyc2VLZXkFB2Fzc2V0SWQICQEXdXBkYXRlRHVja1N0YXRzSW50ZXJuYWwCBQdhc3NldElkBQx4cEN1c3RvbU5hbWUCXzEJAAIBAhNVbmtub3duIGVudGl0eSB0eXBlCQCUCgIJAM4IAgkAzQgCBQdhY3Rpb25zCQEOU2NyaXB0VHJhbnNmZXIDBQ9lY29ub215Q29udHJhY3QIBQNwbXQGYW1vdW50BQt1c2R0QXNzZXRJZAUNcHJvbG9nQWN0aW9ucwAAAWkBDHNldFJlZmVycmFscwIJb2xkUGxheWVyCW5ld1BsYXllcgMJAQIhPQIIBQFpD2NhbGxlclB1YmxpY0tleQUDcHViCQACAQIRUGVybWlzc2lvbiBkZW5pZWQEDXByb2xvZ0FjdGlvbnMJAQZwcm9sb2cBBQFpAwkBAiE9AgkAkAMBCAUBaQhwYXltZW50cwAACQACAQIUTm8gcGF5bWVudHMgcmVxdWlyZWQDCQEBIQEJAQlpc0RlZmluZWQBCQCmCAEFCW9sZFBsYXllcgkAAgEJAKwCAgIRSW52YWxpZCBhZGRyZXNzOiAFCW9sZFBsYXllcgQKbmV3YmllQWRkcgkApggBBQluZXdQbGF5ZXIDCQEBIQEJAQlpc0RlZmluZWQBBQpuZXdiaWVBZGRyCQACAQkArAICAhFJbnZhbGlkIGFkZHJlc3M6IAUJbmV3UGxheWVyBAlvbGRMYXN0VHgJAKIIAQkBEWtleUxhc3RUeElkQnlVc2VyAQUJb2xkUGxheWVyAwkBASEBCQEJaXNEZWZpbmVkAQUJb2xkTGFzdFR4CQACAQIib2xkUGxheWVyIGRpZG4ndCBkbyBhbnkgdHggaW4gZ2FtZQMJAGcCAAAICQDvBwEJAQV2YWx1ZQEFCm5ld2JpZUFkZHIJYXZhaWxhYmxlCQACAQIWbmV3UGxheWVyIGhhcyBubyBXQVZFUwQHb2xkc0tleQkBCWtleU9sZGllcwAEBG9sZHMJAKIIAQUHb2xkc0tleQQGb2xkaWVzAwkBCWlzRGVmaW5lZAEFBG9sZHMJALwJAgkBBXZhbHVlAQUEb2xkcwIBXwUDbmlsAwkBD2NvbnRhaW5zRWxlbWVudAIFBm9sZGllcwUJbmV3UGxheWVyCQACAQkArAICBQluZXdQbGF5ZXICJiBpcyBub3QgbmV3YmllIChhbHJlYWR5IGhhcyByZWZlcnJhbHMpBAhyZWZCeUtleQkBD2tleUFkZHJlc3NSZWZCeQEFCW5ld1BsYXllcgQFcmVmQnkJAKIIAQUIcmVmQnlLZXkDAwkBCWlzRGVmaW5lZAEFBXJlZkJ5CQEJaXNEZWZpbmVkAQkApggBCQEFdmFsdWUBBQVyZWZCeQcJAAIBCQCsAgIJAKwCAgUJbmV3UGxheWVyAhQgYWxyZWFkeSBoYXMgcmVmQnk6IAkBBXZhbHVlAQUFcmVmQnkEB3JlZnNLZXkJARNrZXlBZGRyZXNzUmVmZXJyYWxzAQUJb2xkUGxheWVyBARyZWZzCQCiCAEFB3JlZnNLZXkECXJlZnNBcnJheQMJAQlpc0RlZmluZWQBBQRyZWZzCQC8CQIJAQV2YWx1ZQEFBHJlZnMCAV8FA25pbAMJAQ9jb250YWluc0VsZW1lbnQCBQlyZWZzQXJyYXkFCW5ld1BsYXllcgkAAgEJAKwCAgkArAICCQCsAgIFCW9sZFBsYXllcgISIGFscmVhZHkgY29udGFpbnMgBQluZXdQbGF5ZXICESB3aXRoaW4gcmVmZXJyYWxzBAduZXdSZWZzCQC6CQIJAM0IAgUJcmVmc0FycmF5BQluZXdQbGF5ZXICAV8EB25ld09sZHMDCQEPY29udGFpbnNFbGVtZW50AgUGb2xkaWVzBQlvbGRQbGF5ZXIJAQV2YWx1ZQEFBG9sZHMJALoJAgkAzQgCBQZvbGRpZXMFCW9sZFBsYXllcgIBXwkAlAoCCQDOCAIJAMwIAgkBC1N0cmluZ0VudHJ5AgUIcmVmQnlLZXkFCW9sZFBsYXllcgkAzAgCCQELU3RyaW5nRW50cnkCBQdyZWZzS2V5BQduZXdSZWZzCQDMCAIJAQtTdHJpbmdFbnRyeQIFB29sZHNLZXkFB25ld09sZHMFA25pbAUNcHJvbG9nQWN0aW9ucwAAAWkBEGRpc3RyaWJ1dGVQb2ludHMFCHN0cmVuZ3RoCGFjY3VyYWN5CWludGVsbGVjdAllbmR1cmFuY2UJZGV4dGVyaXR5BA1wcm9sb2dBY3Rpb25zCQEGcHJvbG9nAQUBaQMJAQIhPQIJAJADAQgFAWkIcGF5bWVudHMAAAkAAgECFE5vIHBheW1lbnRzIHJlcXVpcmVkBARhZGRyCQClCAEIBQFpDG9yaWdpbkNhbGxlcgQLdmlydFdsZ0RhdGEJAQlhc0FueUxpc3QBCQD8BwQFC3dsZ0NvbnRyYWN0AhJjaGVja1dsZ1hwUkVBRE9OTFkJAMwIAgUEYWRkcgUDbmlsBQNuaWwEDXZpcnRXbGdQb2ludHMJAQVhc0ludAEJAJEDAgULdmlydFdsZ0RhdGEAAQQNJHQwOTIxNDk5MjUzOQMJAGcCAAAFDXZpcnRXbGdQb2ludHMJAJQKAgAABQNuaWwEB2RlbHRhWFAJAQVhc0ludAEJAPwHBAULd2xnQ29udHJhY3QCCXRha2VXbGdYcAkAzAgCBQRhZGRyBQNuaWwFA25pbAMJAAACBQdkZWx0YVhQBQdkZWx0YVhQCQCUCgIFDXZpcnRXbGdQb2ludHMJAMwIAgkBDEludGVnZXJFbnRyeQIJAQxrZXlVc2VyTGV2ZWwBBQRhZGRyCQEFYXNJbnQBCQCRAwIFC3ZpcnRXbGdEYXRhAAAJAMwIAgkBDEludGVnZXJFbnRyeQIJAQlrZXlVc2VyWFABBQRhZGRyCQEFYXNJbnQBCQCRAwIFC3ZpcnRXbGdEYXRhAAIFA25pbAkAAgECJFN0cmljdCB2YWx1ZSBpcyBub3QgZXF1YWwgdG8gaXRzZWxmLgQJd2xnUG9pbnRzCAUNJHQwOTIxNDk5MjUzOQJfMQQKd2xnQWN0aW9ucwgFDSR0MDkyMTQ5OTI1MzkCXzIEC2R1Y2tBc3NldElkCQETdmFsdWVPckVycm9yTWVzc2FnZQIJAKIIAQkBFGtleVN0YWtlZER1Y2tCeU93bmVyAQUEYWRkcgIcWW91IGRvbid0IGhhdmUgYSBkdWNrIHN0YWtlZAQKZnJlZUtleUFjYwkBEWtleVVzZXJGcmVlUG9pbnRzAQUEYWRkcgQNZnJlZVBvaW50c0FjYwkAZAIJAQt2YWx1ZU9yRWxzZQIJAJ8IAQUKZnJlZUtleUFjYwAABQl3bGdQb2ludHMEC2ZyZWVLZXlEdWNrCQERa2V5RHVja0ZyZWVQb2ludHMBBQtkdWNrQXNzZXRJZAQOZnJlZVBvaW50c0R1Y2sJAQt2YWx1ZU9yRWxzZQIJAJ8IAQULZnJlZUtleUR1Y2sAAAQHc3VtRnJlZQkAZAIFDWZyZWVQb2ludHNBY2MFDmZyZWVQb2ludHNEdWNrBA9zdW1Ub0Rpc3RyaWJ1dGUJAGQCCQBkAgkAZAIJAGQCBQhzdHJlbmd0aAUIYWNjdXJhY3kFCWludGVsbGVjdAUJZW5kdXJhbmNlBQlkZXh0ZXJpdHkDCQBmAgUPc3VtVG9EaXN0cmlidXRlBQdzdW1GcmVlCQACAQkArAICCQCsAgICD1RoZXJlIGFyZSBvbmx5IAkApAMBBQdzdW1GcmVlAhogZnJlZSBwb2ludHMgdG8gZGlzdHJpYnV0ZQQIY2hhcnNLZXkJAQxrZXlEdWNrQ2hhcnMBBQtkdWNrQXNzZXRJZAQFY2hhcnMJALUJAgkBC3ZhbHVlT3JFbHNlAgkAoggBBQhjaGFyc0tleQIJMF8wXzBfMF8wAgFfBAZuZXdBY2MJAGUCBQ1mcmVlUG9pbnRzQWNjBQ9zdW1Ub0Rpc3RyaWJ1dGUJAJQKAgkAzggCCQDOCAIJAMwIAgkBDEludGVnZXJFbnRyeQIFCmZyZWVLZXlBY2MDCQBmAgAABQZuZXdBY2MAAAUGbmV3QWNjCQDMCAIJAQxJbnRlZ2VyRW50cnkCBQtmcmVlS2V5RHVjawMJAGYCAAAFBm5ld0FjYwkAZAIFDmZyZWVQb2ludHNEdWNrBQZuZXdBY2MFDmZyZWVQb2ludHNEdWNrCQDMCAIJAQtTdHJpbmdFbnRyeQIFCGNoYXJzS2V5CQC5CQIJAMwIAgkApAMBCQBkAgkBDXBhcnNlSW50VmFsdWUBCQCRAwIFBWNoYXJzBQxjaGFyU3RyZW5ndGgFCHN0cmVuZ3RoCQDMCAIJAKQDAQkAZAIJAQ1wYXJzZUludFZhbHVlAQkAkQMCBQVjaGFycwUMY2hhckFjY3VyYWN5BQhhY2N1cmFjeQkAzAgCCQCkAwEJAGQCCQENcGFyc2VJbnRWYWx1ZQEJAJEDAgUFY2hhcnMFDWNoYXJJbnRlbGxlY3QFCWludGVsbGVjdAkAzAgCCQCkAwEJAGQCCQENcGFyc2VJbnRWYWx1ZQEJAJEDAgUFY2hhcnMFDWNoYXJFbmR1cmFuY2UFCWVuZHVyYW5jZQkAzAgCCQCkAwEJAGQCCQENcGFyc2VJbnRWYWx1ZQEJAJEDAgUFY2hhcnMFDWNoYXJEZXh0ZXJpdHkFCWRleHRlcml0eQUDbmlsAgFfBQNuaWwFDXByb2xvZ0FjdGlvbnMFCndsZ0FjdGlvbnMAAAFpARxzcGxpdEJ5R2xvYmFsV2VpZ2h0c1JFQURPTkxZAQZhbW91bnQJAJQKAgUDbmlsCQESZ2V0TmVlZGVkTWF0ZXJpYWxzAQUGYW1vdW50AWkBJHNwbGl0QnlHbG9iYWxBbmRMb2NhbFdlaWdodHNSRUFET05MWQMJbWF0QW1vdW50CXJlc0Ftb3VudAh0ZXJyYWlucwQNdGVycmFpbkNvdW50cwkBDWNvdW50VGVycmFpbnMBBQh0ZXJyYWlucwkAlAoCBQNuaWwJAJQKAgkBEmdldE5lZWRlZE1hdGVyaWFscwEFCW1hdEFtb3VudAkBE2Rpc3RyaWJ1dGVCeVdlaWdodHMCBQlyZXNBbW91bnQFDXRlcnJhaW5Db3VudHMBaQETZ2V0QmFja3BhY2tSRUFET05MWQELZHVja0Fzc2V0SWQJAJQKAgUDbmlsCQC5CQIJAQtnZXRCYWNrcGFjawEJARFrZXlCYWNrcGFja0J5RHVjawEFC2R1Y2tBc3NldElkAgE6AWkBFGdldFdhcmVob3VzZVJFQURPTkxZAQtsYW5kQXNzZXRJZAQFYXNzZXQJAQV2YWx1ZQEJAOwHAQkA2QQBBQtsYW5kQXNzZXRJZAQJbGFuZEluZGV4CQBpAgkBD251bVBpZWNlc0J5U2l6ZQEJAJEDAgkAtQkCCAUFYXNzZXQLZGVzY3JpcHRpb24CAV8FC3JlY0xhbmRTaXplBQVTU0laRQQKaW5mcmFMZXZlbAkBC3ZhbHVlT3JFbHNlAgkAnwgBCQEWa2V5SW5mcmFMZXZlbEJ5QXNzZXRJZAEFC2xhbmRBc3NldElkAAAJAJQKAgUDbmlsCQC6CQIJAQxnZXRXYXJlaG91c2UDCQESa2V5V2FyZWhvdXNlQnlMYW5kAQULbGFuZEFzc2V0SWQFCWxhbmRJbmRleAUKaW5mcmFMZXZlbAIBOgFpAQpzYXZlTGFzdFR4AAMJAQEhAQkBD2NvbnRhaW5zRWxlbWVudAIJAMwIAgULd2xnQ29udHJhY3QJAMwIAgUPZWNvbm9teUNvbnRyYWN0CQDMCAIFEnRvdXJuYW1lbnRDb250cmFjdAkAzAgCBQ1hY3Jlc0NvbnRyYWN0BQNuaWwIBQFpBmNhbGxlcgkAAgECDUFjY2VzcyBkZW5pZWQJAJQKAgkBBnByb2xvZwEFAWkAKgFpAQ91cGRhdGVEdWNrU3RhdHMCC2R1Y2tBc3NldElkB2RlbHRhWFADCQECIT0CCAUBaQZjYWxsZXIFD2Vjb25vbXlDb250cmFjdAkAAgECDUFjY2VzcyBkZW5pZWQJARd1cGRhdGVEdWNrU3RhdHNJbnRlcm5hbAIFC2R1Y2tBc3NldElkBQdkZWx0YVhQAWkBDnVwZGF0ZUFjY1N0YXRzAgRhZGRyB2RlbHRhWFADCQEBIQEJAQ9jb250YWluc0VsZW1lbnQCCQDMCAIFC3dsZ0NvbnRyYWN0CQDMCAIFD2Vjb25vbXlDb250cmFjdAkAzAgCBQ1hY3Jlc0NvbnRyYWN0BQNuaWwIBQFpBmNhbGxlcgkAAgECDUFjY2VzcyBkZW5pZWQJARZ1cGRhdGVBY2NTdGF0c0ludGVybmFsAgUEYWRkcgUHZGVsdGFYUAFpAQllcXVpcER1Y2sBCWVxdWlwbWVudAQNcHJvbG9nQWN0aW9ucwkBBnByb2xvZwEFAWkDCQECIT0CCQCQAwEIBQFpCHBheW1lbnRzAAAJAAIBAhRObyBwYXltZW50cyByZXF1aXJlZAQEYWRkcgkApQgBCAUBaQxvcmlnaW5DYWxsZXIEC2R1Y2tBc3NldElkCQETdmFsdWVPckVycm9yTWVzc2FnZQIJAKIIAQkBFGtleVN0YWtlZER1Y2tCeU93bmVyAQUEYWRkcgIcWW91IGRvbid0IGhhdmUgYSBkdWNrIHN0YWtlZAMJAQ9jaGVja1RvdXJuYW1lbnQBBQtkdWNrQXNzZXRJZAkAAgECGWVxdWlwRHVja19jaGVja1RvdXJuYW1lbnQEBWVxS2V5CQEQa2V5RHVja0VxdWlwbWVudAEFC2R1Y2tBc3NldElkBAtjdXJyZW50U2VncwkAtQkCCQELdmFsdWVPckVsc2UCCQCiCAEFBWVxS2V5AhcsOyxfLDssXyw7LF8sOyxfLDssXyw7LAIBXwQFYnBLZXkJARFrZXlCYWNrcGFja0J5RHVjawEFC2R1Y2tBc3NldElkBAtjdXJyZW50UGFjawkBC2dldEJhY2twYWNrAQUFYnBLZXkEBW5ld0VxCQC1CQIFCWVxdWlwbWVudAIBXwMJAQIhPQIJAJADAQUFbmV3RXEFC05VTVNFR01FTlRTCQACAQIWV3JvbmcgZXF1aXBtZW50IHN0cmluZwQJdGVtcFByb2RCCQEGZHJlc3NCBAULY3VycmVudFNlZ3MJAQ5wcm9kU3RyVG9CeXRlcwEJAJEDAgULY3VycmVudFBhY2sFCWJwSWR4UHJvZAYFA25pbAQIc2VnQnBBdXgJAJEDAgkAtQkCCQCRAwIFBW5ld0VxBQtzZWdCYWNrcGFjawIBOwABBApidWZmRWZmZWN0AwkAAAIFCHNlZ0JwQXV4AgAAAAQEYXV4MAkAkQMCCQC1CQIFCHNlZ0JwQXV4AgEsAAADCQAAAgUEYXV4MAIAAAAEBmlkeENudAkAtQkCBQRhdXgwAgE6BANpZHgJAJEDAgUGaWR4Q250AAAEA2NudAkAkQMCBQZpZHhDbnQAAQMDAwMDCQAAAgUDaWR4AgIwNgYJAAACBQNpZHgCAjA3BgkAAAIFA2lkeAICMDgJAQIhPQIFA2NudAIABwkAZgIJAQ1wYXJzZUludFZhbHVlAQUDY250AAAHCQENcGFyc2VJbnRWYWx1ZQEJAJEDAgkAtQkCCQCRAwIFEHByb2R1Y3Rpb25NYXRyaXgJAQ1wYXJzZUludFZhbHVlAQUDaWR4AgFfBQpySWR4RWZmZWN0AAAEBXN0YXRzCQEMZ2V0RHVja1N0YXRzBAUEdGhpcwULZHVja0Fzc2V0SWQFCmJ1ZmZFZmZlY3QGBAhuZXdQcm9kQgkBBmRyZXNzQgQFBW5ld0VxBQl0ZW1wUHJvZEIHBQVzdGF0cwQKbmV3UHJvZFN0cgkBDmJ5dGVzVG9Qcm9kU3RyAQUIbmV3UHJvZEIJAJQKAgkAzggCCQDMCAIJAQtTdHJpbmdFbnRyeQIFBWVxS2V5BQllcXVpcG1lbnQJAMwIAgkBC1N0cmluZ0VudHJ5AgUFYnBLZXkJALoJAgkAzAgCCQCRAwIFC2N1cnJlbnRQYWNrBQpicElkeExldmVsCQDMCAIJAJEDAgULY3VycmVudFBhY2sFCGJwSWR4UmVzCQDMCAIJAJEDAgULY3VycmVudFBhY2sFCGJwSWR4TWF0CQDMCAIFCm5ld1Byb2RTdHIFA25pbAIBOgkAzAgCCQELU3RyaW5nRW50cnkCCQEMa2V5RHVja0J1ZmZzAQULZHVja0Fzc2V0SWQJALkJAgkAzAgCCQCkAwEJAJEDAgUFc3RhdHMABwkAzAgCCQCkAwEJAJEDAgUFc3RhdHMACAkAzAgCCQCkAwEJAJEDAgUFc3RhdHMACQkAzAgCCQCkAwEJAJEDAgUFc3RhdHMACgkAzAgCCQCkAwEJAJEDAgUFc3RhdHMACwUDbmlsAgFfBQNuaWwFDXByb2xvZ0FjdGlvbnMAAAFpARNpbml0RHVja1RvdXJBdHRlbXB0AQtkdWNrQXNzZXRJZAMJAQIhPQIIBQFpBmNhbGxlcgUSdG91cm5hbWVudENvbnRyYWN0CQACAQINQWNjZXNzIGRlbmllZAQJa2V5SGVhbHRoCQENa2V5RHVja0hlYWx0aAEFC2R1Y2tBc3NldElkBAVtYXhIUAkBCW1heEhlYWx0aAEJAQt2YWx1ZU9yRWxzZQIJAJ8IAQkBDGtleUR1Y2tMZXZlbAEFC2R1Y2tBc3NldElkAAAECWN1ckhlYWx0aAkBC3ZhbHVlT3JFbHNlAgkAnwgBBQlrZXlIZWFsdGgFBW1heEhQBAljdXJMb2NLZXkJAQ9rZXlEdWNrTG9jYXRpb24BBQtkdWNrQXNzZXRJZAQLY3VyTG9jYXRpb24JAQt2YWx1ZU9yRWxzZQIJAKIIAQUJY3VyTG9jS2V5BQ9ERUZBVUxUTE9DQVRJT04EBmxhc3RJZAkBC3ZhbHVlT3JFbHNlAgkAmggCBRJ0b3VybmFtZW50Q29udHJhY3QFDWxhc3RUb3VySWRLZXkAAAQMdG91ckxvY2F0aW9uCQCsAgIJAKQDAQUGbGFzdElkAgRfVF8wCQCUCgIJAMwIAgkBDEludGVnZXJFbnRyeQIJAQ5rZXlTYXZlZEhlYWx0aAEFC2R1Y2tBc3NldElkBQljdXJIZWFsdGgJAMwIAgkBDEludGVnZXJFbnRyeQIFCWtleUhlYWx0aAUFbWF4SFAJAMwIAgkBC1N0cmluZ0VudHJ5AgkBEGtleVNhdmVkTG9jYXRpb24BBQtkdWNrQXNzZXRJZAULY3VyTG9jYXRpb24JAMwIAgkBC1N0cmluZ0VudHJ5AgUJY3VyTG9jS2V5BQx0b3VyTG9jYXRpb24FA25pbAUMdG91ckxvY2F0aW9uAWkBDGJyZWFrQXR0ZW1wdAAEDXByb2xvZ0FjdGlvbnMJAQZwcm9sb2cBBQFpBAtkdWNrQXNzZXRJZAkBE3ZhbHVlT3JFcnJvck1lc3NhZ2UCCQCiCAEJARRrZXlTdGFrZWREdWNrQnlPd25lcgEJAKUIAQgFAWkGY2FsbGVyAhxZb3UgZG9uJ3QgaGF2ZSBhIGR1Y2sgc3Rha2VkBAljdXJMb2NLZXkJAQ9rZXlEdWNrTG9jYXRpb24BBQtkdWNrQXNzZXRJZAQLY3VyTG9jYXRpb24JAQt2YWx1ZU9yRWxzZQIJAKIIAQUJY3VyTG9jS2V5BQ9ERUZBVUxUTE9DQVRJT04DCQECIT0CCQCRAwIJALUJAgULY3VyTG9jYXRpb24CAV8FCmxvY0lkeFR5cGUCAVQJAAIBAiJZb3VyIGR1Y2sgaXMgbm90IGluIHRoZSB0b3VybmFtZW50BAtzYXZlZEhlYWx0aAkBEUBleHRyTmF0aXZlKDEwNTUpAQkBDmtleVNhdmVkSGVhbHRoAQULZHVja0Fzc2V0SWQEDXNhdmVkTG9jYXRpb24JARFAZXh0ck5hdGl2ZSgxMDU4KQEJARBrZXlTYXZlZExvY2F0aW9uAQULZHVja0Fzc2V0SWQJAJQKAgkAzQgCCQDNCAIFDXByb2xvZ0FjdGlvbnMJAQxJbnRlZ2VyRW50cnkCCQENa2V5RHVja0hlYWx0aAEFC2R1Y2tBc3NldElkBQtzYXZlZEhlYWx0aAkBC1N0cmluZ0VudHJ5AgUJY3VyTG9jS2V5BQ1zYXZlZExvY2F0aW9uBQtjdXJMb2NhdGlvbgFpARRicmVha0F0dGVtcHRDYWxsYmFjawADCQECIT0CCAUBaQZjYWxsZXIFEnRvdXJuYW1lbnRDb250cmFjdAkAAgECDUFjY2VzcyBkZW5pZWQEC2R1Y2tBc3NldElkCQETdmFsdWVPckVycm9yTWVzc2FnZQIJAKIIAQkBFGtleVN0YWtlZER1Y2tCeU93bmVyAQkApQgBCAUBaQxvcmlnaW5DYWxsZXICHFlvdSBkb24ndCBoYXZlIGEgZHVjayBzdGFrZWQJAJQKAgkAzAgCCQEMSW50ZWdlckVudHJ5AgkBDWtleUR1Y2tIZWFsdGgBBQtkdWNrQXNzZXRJZAkBEUBleHRyTmF0aXZlKDEwNTUpAQkBDmtleVNhdmVkSGVhbHRoAQULZHVja0Fzc2V0SWQJAMwIAgkBC1N0cmluZ0VudHJ5AgkBD2tleUR1Y2tMb2NhdGlvbgEFC2R1Y2tBc3NldElkCQERQGV4dHJOYXRpdmUoMTA1OCkBCQEQa2V5U2F2ZWRMb2NhdGlvbgEFC2R1Y2tBc3NldElkBQNuaWwCFGJyZWFrQXR0ZW1wdENhbGxiYWNrAWkBFmV4aXRUb3VybmFtZW50SW50ZXJuYWwBC2R1Y2tBc3NldElkAwkBAiE9AggFAWkGY2FsbGVyBQR0aGlzCQACAQINQWNjZXNzIGRlbmllZAQLc2F2ZWRIZWFsdGgJARFAZXh0ck5hdGl2ZSgxMDU1KQEJAQ5rZXlTYXZlZEhlYWx0aAEFC2R1Y2tBc3NldElkBA1zYXZlZExvY2F0aW9uCQERQGV4dHJOYXRpdmUoMTA1OCkBCQEQa2V5U2F2ZWRMb2NhdGlvbgEFC2R1Y2tBc3NldElkCQCUCgIJAMwIAgkBDEludGVnZXJFbnRyeQIJAQ1rZXlEdWNrSGVhbHRoAQULZHVja0Fzc2V0SWQFC3NhdmVkSGVhbHRoCQDMCAIJAQtTdHJpbmdFbnRyeQIJAQ9rZXlEdWNrTG9jYXRpb24BBQtkdWNrQXNzZXRJZAUNc2F2ZWRMb2NhdGlvbgUDbmlsBwFpAQ9wcm9jZXNzRGVsaXZlcnkBC2R1Y2tBc3NldElkAwkBAiE9AggFAWkGY2FsbGVyBQR0aGlzCQACAQINQWNjZXNzIGRlbmllZAQEYWRkcgkApQgBCAUBaQxvcmlnaW5DYWxsZXIECWZ1bmRUb3RhbAkBC3ZhbHVlT3JFbHNlAgkAmggCBQ9lY29ub215Q29udHJhY3QFD2RlbGl2ZXJ5RnVuZEtleQAAAwkAZgIFFU1JTl9VU0RUX0ZFRV9ERUxJVkVSWQUJZnVuZFRvdGFsCQACAQkArAICAiBEZWxpdmVyeSBpcyBub3QgYXZhaWxhYmxlLCBmdW5kPQkBCmZpeGVkUG9pbnQCBQlmdW5kVG90YWwABgQDbm93CAUJbGFzdEJsb2NrCXRpbWVzdGFtcAQIY291bnRLZXkJARRrZXlVc2VyRGVsaXZlcnlDb3VudAEFBGFkZHIEB2xhc3REYXkJAQt2YWx1ZU9yRWxzZQIJAJ8IAQkBFmtleVVzZXJMYXN0RGVsaXZlcnlEYXkBBQRhZGRyAAAEBXRvZGF5CQBpAgUDbm93BQlEQVlNSUxMSVMEBWNvdW50AwkAAAIFB2xhc3REYXkFBXRvZGF5CQELdmFsdWVPckVsc2UCCQCfCAEFCGNvdW50S2V5AAAAAAQFYWNyZXMJAQt2YWx1ZU9yRWxzZQIJAJoIAgUNYWNyZXNDb250cmFjdAkBGmtleUFjcmVzU3Rha2VkQW1vdW50QnlVc2VyAQUEYWRkcgAABBFhbGxvd2VkRGVsaXZlcmllcwkAZAIFF0FMTE9XRURfRlJFRV9ERUxJVkVSSUVTCQBpAgUFYWNyZXMFGkFDUkVTX0ZPUl9ERUxJVkVSWV9BVFRFTVBUAwkAZwIFBWNvdW50BRFhbGxvd2VkRGVsaXZlcmllcwkAAgEJAKwCAgkArAICAhFZb3UgYWxyZWFkeSB1c2VkIAkApAMBBRFhbGxvd2VkRGVsaXZlcmllcwIcIGRlbGl2ZXJ5IGF0dGVtcHRzIGZvciB0b2RheQQOZ2xvYmFsQ291bnRLZXkJARRrZXlEdWNrRGVsaXZlcnlDb3VudAEFC2R1Y2tBc3NldElkBAZyZXdhcmQJAPwHBAUPZWNvbm9teUNvbnRyYWN0AhJzZW5kRGVsaXZlcnlSZXdhcmQJAMwIAgUEYWRkcgUDbmlsBQNuaWwJAJQKAgkAzAgCCQEMSW50ZWdlckVudHJ5AgUIY291bnRLZXkJAGQCBQVjb3VudAABCQDMCAIJAQxJbnRlZ2VyRW50cnkCCQEWa2V5VXNlckxhc3REZWxpdmVyeURheQEFBGFkZHIFBXRvZGF5CQDMCAIJAQxJbnRlZ2VyRW50cnkCBQ5nbG9iYWxDb3VudEtleQkAZAIJAQt2YWx1ZU9yRWxzZQIJAJ8IAQUOZ2xvYmFsQ291bnRLZXkAAAABBQNuaWwFBnJld2FyZAFpAQdyb2JMYW5kAgdtZXNzYWdlA3NpZwQNcHJvbG9nQWN0aW9ucwkBBnByb2xvZwEFAWkDCQECIT0CCQCQAwEIBQFpCHBheW1lbnRzAAEJAAIBAiJleGFjdGx5IDEgcGF5bWVudCBtdXN0IGJlIGF0dGFjaGVkBANwbXQJAJEDAggFAWkIcGF5bWVudHMAAAQGd2xnQW10CAUDcG10BmFtb3VudAMDCQEBIQEJAQlpc0RlZmluZWQBCAUDcG10B2Fzc2V0SWQGCQECIT0CCQEFdmFsdWUBCAUDcG10B2Fzc2V0SWQFCndsZ0Fzc2V0SWQJAAIBAhVXTEdPTEQgcGF5bWVudHMgb25seSEDCQECIT0CBQZ3bGdBbXQFEk1JTl9XTEdPTERfUk9CQkVSWQkAAgEJAKwCAgkArAICAhJQYXltZW50IHNob3VsZCBiZSAJAQpmaXhlZFBvaW50AgUSTUlOX1dMR09MRF9ST0JCRVJZAAgCByBXTEdPTEQEBGFkZHIJAKUIAQgFAWkGY2FsbGVyAwkBASEBCQDEEwMFB21lc3NhZ2UFA3NpZwUDcHViCQACAQIYc2lnbmF0dXJlIGRvZXMgbm90IG1hdGNoBAVwYXJ0cwkAvAkCCQCwCQEFB21lc3NhZ2UCATsEBnJvYkxvZwkAvAkCCQCRAwIFBXBhcnRzAAACAXwEAmhwCQC1CQIJAJEDAgUGcm9iTG9nBQhybEhlYWx0aAIBXwQFY3VySFAJAQ1wYXJzZUludFZhbHVlAQkAkQMCBQJocAAABAVuZXdIUAkBDXBhcnNlSW50VmFsdWUBCQCRAwIFAmhwAAEECHByb2RVc2VkCQCRAwIFBnJvYkxvZwULcmxQcm9kc1VzZWQECGxhc3RQYXJ0CQC1CQIJAJEDAgUFcGFydHMAAQIBfAQHcm9iVHlwZQkAkQMCBQhsYXN0UGFydAUGcmxUeXBlAwkBAiE9AgUHcm9iVHlwZQIBQgkAAgECHk9ubHkgYmFuayByb2JiZXJ5IGlzIHN1cHBvcnRlZAQEdGltZQkBDXBhcnNlSW50VmFsdWUBCQCRAwIFCGxhc3RQYXJ0BQtybFRpbWVzdGFtcAMDCQBmAgUEdGltZQkAZAIIBQlsYXN0QmxvY2sJdGltZXN0YW1wBRFGSVZFTUlOVVRFU01JTExJUwYJAGYCCQBlAggFCWxhc3RCbG9jawl0aW1lc3RhbXAFEUZJVkVNSU5VVEVTTUlMTElTBQR0aW1lCQACAQkArAICCQCsAgIJAKwCAgIcc2lnbmF0dXJlIG91dGRhdGVkOiBsb2dUaW1lPQkApAMBBQR0aW1lAgksIGJjVGltZT0JAKQDAQgFCWxhc3RCbG9jawl0aW1lc3RhbXAECXR4RnJvbU1zZwkAkQMCBQhsYXN0UGFydAUIcmxMYXN0VHgEBmxhc3RUeAkBC3ZhbHVlT3JFbHNlAgkAoggBCQERa2V5TGFzdFR4SWRCeVVzZXIBBQRhZGRyAgADCQECIT0CBQZsYXN0VHgFCXR4RnJvbU1zZwkAAgEJAKwCAgkArAICCQCsAgICHlR4IGlkcyBkb24ndCBtYXRjaCEgSW4gc3RhdGU6IAUGbGFzdFR4AgosIGluIG1zZzogBQl0eEZyb21Nc2cEC2R1Y2tBc3NldElkCQETdmFsdWVPckVycm9yTWVzc2FnZQIJAKIIAQkBFGtleVN0YWtlZER1Y2tCeU93bmVyAQUEYWRkcgIcWW91IGRvbid0IGhhdmUgYSBkdWNrIHN0YWtlZAQFZXFLZXkJARBrZXlEdWNrRXF1aXBtZW50AQULZHVja0Fzc2V0SWQECWN1cnJlbnRFcQkBC3ZhbHVlT3JFbHNlAgkAoggBBQVlcUtleQIXLDssXyw7LF8sOyxfLDssXyw7LF8sOywEDyR0MDEwOTcxNzEwOTgyOAkBEXN1YnRyYWN0RXF1aXBtZW50AgUJY3VycmVudEVxBQhwcm9kVXNlZAQFbmV3RXEIBQ8kdDAxMDk3MTcxMDk4MjgCXzEED3Nob3VsZFplcm9CdWZmcwgFDyR0MDEwOTcxNzEwOTgyOAJfMgQIaXNCcFVzZWQIBQ8kdDAxMDk3MTcxMDk4MjgCXzMEC2N1ckxvY2F0aW9uCQELdmFsdWVPckVsc2UCCQCiCAEJAQ9rZXlEdWNrTG9jYXRpb24BBQtkdWNrQXNzZXRJZAUPREVGQVVMVExPQ0FUSU9OAwkBDmlzSW5Ub3VybmFtZW50AgUSdG91cm5hbWVudENvbnRyYWN0BQtjdXJMb2NhdGlvbgkAAgECKllvdXIgZHVjayBpcyB0YWtpbmcgcGFydCBpbiB0aGUgdG91cm5hbWVudAQDbm93CAUJbGFzdEJsb2NrCXRpbWVzdGFtcAQIY291bnRLZXkJARNrZXlVc2VyUm9iYmVyeUNvdW50AQUEYWRkcgQHbGFzdERheQkBC3ZhbHVlT3JFbHNlAgkAnwgBCQEVa2V5VXNlckxhc3RSb2JiZXJ5RGF5AQUEYWRkcgAABAV0b2RheQkAaQIFA25vdwUJREFZTUlMTElTBAVjb3VudAMJAAACBQdsYXN0RGF5BQV0b2RheQkBC3ZhbHVlT3JFbHNlAgkAnwgBBQhjb3VudEtleQAAAAAEBWFjcmVzCQELdmFsdWVPckVsc2UCCQCaCAIFDWFjcmVzQ29udHJhY3QJARprZXlBY3Jlc1N0YWtlZEFtb3VudEJ5VXNlcgEFBGFkZHIAAAQQYWxsb3dlZFJvYmJlcmllcwkAZAIFFkFMTE9XRURfRlJFRV9ST0JCRVJJRVMJAGkCBQVhY3JlcwUZQUNSRVNfRk9SX1JPQkJFUllfQVRURU1QVAMJAGcCBQVjb3VudAUQYWxsb3dlZFJvYmJlcmllcwkAAgEJAKwCAgkArAICAhFZb3UgYWxyZWFkeSB1c2VkIAkApAMBBRBhbGxvd2VkUm9iYmVyaWVzAhsgcm9iYmVyeSBhdHRlbXB0cyBmb3IgdG9kYXkEDmdsb2JhbENvdW50S2V5CQETa2V5RHVja1JvYmJlcnlDb3VudAEFC2R1Y2tBc3NldElkBARsb290AwkAZgIFBW5ld0hQAAAECWZ1bmRUb3RhbAkA8AcCBQR0aGlzBQp3bGdBc3NldElkBAVwcml6ZQMFCGlzQnBVc2VkCQBoAgACBRJNSU5fV0xHT0xEX1JPQkJFUlkJAGgCAAUFEk1JTl9XTEdPTERfUk9CQkVSWQMJAGYCBQVwcml6ZQUJZnVuZFRvdGFsCQACAQkArAICCQCsAgIJAKwCAgIiUm9iYmVyeSBpcyBub3QgYXZhaWxhYmxlLCBmdW5kcyA9IAkBCmZpeGVkUG9pbnQCBQlmdW5kVG90YWwACAIUIFdMR09MRCwgcmVxdWlyZWQgPSAJAQpmaXhlZFBvaW50AgUFcHJpemUACAkAzAgCCQEOU2NyaXB0VHJhbnNmZXIDCAUBaQZjYWxsZXIFBXByaXplBQp3bGdBc3NldElkBQNuaWwFA25pbAkAlAoCCQDNCAIJAM0IAgkAzQgCCQDNCAIJAM0IAgkAzQgCCQDOCAIJAM4IAgkAzggCBQ1wcm9sb2dBY3Rpb25zBQRsb290AwUPc2hvdWxkWmVyb0J1ZmZzCQDMCAIJAQtTdHJpbmdFbnRyeQIJAQxrZXlEdWNrQnVmZnMBBQtkdWNrQXNzZXRJZAIJMF8wXzBfMF8wBQNuaWwFA25pbAgJARd1cGRhdGVEdWNrU3RhdHNJbnRlcm5hbAIFC2R1Y2tBc3NldElkAwkAZgIFBW5ld0hQAAAFDHhwU3VjY2Vzc1JvYgUJeHBGYWlsUm9iAl8xCQEMSW50ZWdlckVudHJ5AgkBGGtleUxhc3RSb2JiZXJ5VGltZUJ5RHVjawEFC2R1Y2tBc3NldElkBQNub3cJAQxJbnRlZ2VyRW50cnkCBQhjb3VudEtleQkAZAIFBWNvdW50AAEJAQxJbnRlZ2VyRW50cnkCCQEVa2V5VXNlckxhc3RSb2JiZXJ5RGF5AQUEYWRkcgUFdG9kYXkJAQxJbnRlZ2VyRW50cnkCBQ5nbG9iYWxDb3VudEtleQkAZAIJAQt2YWx1ZU9yRWxzZQIJAJ8IAQUOZ2xvYmFsQ291bnRLZXkAAAABCQELU3RyaW5nRW50cnkCBQVlcUtleQUFbmV3RXEJAQxJbnRlZ2VyRW50cnkCCQENa2V5RHVja0hlYWx0aAEFC2R1Y2tBc3NldElkCQCWAwEJAMwIAgUFbmV3SFAJAMwIAgAABQNuaWwAAAFpAQtidXlSb2JvRHVjawADCQEBIQEFE0tTX0FMTE9XX1JPQk9fRFVDS1MJAAIBAhVGZWF0dXJlIGlzIHR1cm5lZCBvZmYEDXByb2xvZ0FjdGlvbnMJAQZwcm9sb2cBBQFpAwkBAiE9AgkAkAMBCAUBaQhwYXltZW50cwABCQACAQIcRXhhY3RseSBvbmUgcGF5bWVudCByZXF1aXJlZAQDcG10CQEFdmFsdWUBCQCRAwIIBQFpCHBheW1lbnRzAAADCQECIT0CCAUDcG10B2Fzc2V0SWQFC3VzZHRBc3NldElkCQACAQIaQWxsb3dlZCBVU0RUIHBheW1lbnQgb25seSEDCQECIT0CCAUDcG10BmFtb3VudAUOUk9CT19EVUNLX1VTRFQJAAIBCQCsAgIJAKwCAgIbUGF5bWVudCBhdHRhY2hlZCBzaG91bGQgYmUgCQEKZml4ZWRQb2ludAIFDlJPQk9fRFVDS19VU0RUAAYCBSBVU0RUBAduZXh0TnVtCQELdmFsdWVPckVsc2UCCQCfCAEJAQ9rZXlOZXh0Um9ib0R1Y2sAAAAEBWJ5dGV6CQCaAwEFB25leHROdW0EBG5hbWUJAKwCAgkArAICBQtST0JPX1BSRUZJWAIBLQkAsgICCQDcBAEFBWJ5dGV6AAgEBWNvbG9yCQCyAgIJANwEAQkA1BYBBQVieXRlegAGBAVpc3N1ZQkAwggFBQRuYW1lCQCsAgICN1JvYm8gRHVjayBORlQgZm9yIFdhdmVzTGFuZHMgZ2FtZSwgYmFja2dyb3VuZCBjb2xvciA9ICMFBWNvbG9yAAEAAAcEB2Fzc2V0SWQJALgIAQUFaXNzdWUJAJQKAgkAzQgCCQDNCAIJAM0IAgkAzQgCBQ1wcm9sb2dBY3Rpb25zCQEMSW50ZWdlckVudHJ5AgkBD2tleU5leHRSb2JvRHVjawAJAGQCBQduZXh0TnVtAAEFBWlzc3VlCQEOU2NyaXB0VHJhbnNmZXIDCAUBaQxvcmlnaW5DYWxsZXIAAQUHYXNzZXRJZAkBDlNjcmlwdFRyYW5zZmVyAwUPZWNvbm9teUNvbnRyYWN0CAUDcG10BmFtb3VudAULdXNkdEFzc2V0SWQJAJQKAgkA2AQBBQdhc3NldElkBQVjb2xvcgBQdjGR", "height": 2908526, "applicationStatus": "succeeded", "spentComplexity": 0 } View: original | compacted Prev: 3SQXtVVxLUUN5jytAaq6AuXuiUGHmAhFhVTyCv3v6nCW Next: 7YtfLVRpbiGN3Dc1uuTqV9RS47mUbvj6fWrGgoCDQrSV Diff:
Old | New | Differences | |
---|---|---|---|
17 | 17 | ||
18 | 18 | let h = 3 | |
19 | 19 | ||
20 | - | let i = | |
21 | - | ||
22 | - | let j = | |
23 | - | ||
24 | - | let k = | |
25 | - | ||
26 | - | let l = | |
27 | - | ||
28 | - | let m = | |
29 | - | ||
30 | - | let n = | |
31 | - | ||
32 | - | let o = | |
33 | - | ||
34 | - | let p = | |
35 | - | ||
36 | - | let q = | |
37 | - | ||
38 | - | let r = | |
39 | - | ||
40 | - | let s = | |
41 | - | ||
42 | - | ||
43 | - | ||
44 | - | ||
45 | - | ||
46 | - | ||
47 | - | ||
48 | - | ||
49 | - | ||
50 | - | ||
51 | - | ||
52 | - | ||
53 | - | ||
54 | - | ||
55 | - | ||
56 | - | ||
57 | - | ||
58 | - | ||
59 | - | ||
60 | - | ||
61 | - | ||
62 | - | ||
63 | - | ||
64 | - | ||
65 | - | ||
66 | - | ||
67 | - | ||
68 | - | ||
69 | - | ||
70 | - | ||
71 | - | ||
72 | - | ||
73 | - | ||
74 | - | ||
75 | - | ||
76 | - | ||
77 | - | ||
78 | - | ||
79 | - | ||
80 | - | ||
81 | - | ||
82 | - | ||
83 | - | ||
84 | - | ||
85 | - | ||
86 | - | ||
87 | - | ||
88 | - | ||
89 | - | ||
90 | - | ||
91 | - | ||
92 | - | ||
93 | - | ||
94 | - | ||
95 | - | ||
96 | - | ||
97 | - | ||
98 | - | ||
99 | - | ||
100 | - | ||
101 | - | ||
102 | - | ||
103 | - | ||
104 | - | ||
105 | - | ||
106 | - | ||
107 | - | ||
108 | - | ||
109 | - | ||
110 | - | ||
111 | - | ||
112 | - | ||
113 | - | ||
114 | - | ||
115 | - | ||
116 | - | ||
117 | - | ||
118 | - | ||
119 | - | let X = | |
20 | + | let i = ["Strength", "Accuracy", "Intellect", "Endurance", "Dexterity", "Level", "Health"] | |
21 | + | ||
22 | + | let j = 0 | |
23 | + | ||
24 | + | let k = 1 | |
25 | + | ||
26 | + | let l = 2 | |
27 | + | ||
28 | + | let m = 3 | |
29 | + | ||
30 | + | let n = 4 | |
31 | + | ||
32 | + | let o = 0 | |
33 | + | ||
34 | + | let p = 6 | |
35 | + | ||
36 | + | let q = 2 | |
37 | + | ||
38 | + | let r = 2 | |
39 | + | ||
40 | + | let s = 30 | |
41 | + | ||
42 | + | func t (u) = ("duckHealth_" + u) | |
43 | + | ||
44 | + | ||
45 | + | func v (u) = ("duckChars_" + u) | |
46 | + | ||
47 | + | ||
48 | + | func w (u) = ("duckXP_" + u) | |
49 | + | ||
50 | + | ||
51 | + | func x (u) = ("duckLevel_" + u) | |
52 | + | ||
53 | + | ||
54 | + | func y (u) = ("duckFreePoints_" + u) | |
55 | + | ||
56 | + | ||
57 | + | func z (u) = ("duckEquipment_" + u) | |
58 | + | ||
59 | + | ||
60 | + | func A (c) = ("userXP_" + c) | |
61 | + | ||
62 | + | ||
63 | + | func B (c) = ("userLevel_" + c) | |
64 | + | ||
65 | + | ||
66 | + | func C (c) = ("userFreePoints_" + c) | |
67 | + | ||
68 | + | ||
69 | + | func D (u) = ("savedHealth_" + u) | |
70 | + | ||
71 | + | ||
72 | + | func E (u) = ("savedLocation_" + u) | |
73 | + | ||
74 | + | ||
75 | + | func F (u) = ("duckBuffs_" + u) | |
76 | + | ||
77 | + | ||
78 | + | func G (u) = ("lastRobberyTime_" + u) | |
79 | + | ||
80 | + | ||
81 | + | func H (u) = ("totalRobberyCountByDuck_" + u) | |
82 | + | ||
83 | + | ||
84 | + | func I (c) = ("userRobberyCount_" + c) | |
85 | + | ||
86 | + | ||
87 | + | func J (c) = ("userLastRobberyDay_" + c) | |
88 | + | ||
89 | + | ||
90 | + | func K (u) = ("totalDeliveryCountByDuck_" + u) | |
91 | + | ||
92 | + | ||
93 | + | func L (c) = ("userDeliveryCount_" + c) | |
94 | + | ||
95 | + | ||
96 | + | func M (c) = ("userLastDeliveryDay_" + c) | |
97 | + | ||
98 | + | ||
99 | + | let N = 10000 | |
100 | + | ||
101 | + | let O = 10000 | |
102 | + | ||
103 | + | let P = 2000 | |
104 | + | ||
105 | + | let Q = 10000 | |
106 | + | ||
107 | + | let R = 2000 | |
108 | + | ||
109 | + | let S = 100000 | |
110 | + | ||
111 | + | let T = 1000000 | |
112 | + | ||
113 | + | let U = 5000000 | |
114 | + | ||
115 | + | let V = 10000 | |
116 | + | ||
117 | + | let W = 1000000 | |
118 | + | ||
119 | + | let X = 1000000 | |
120 | 120 | ||
121 | 121 | let Y = 10000 | |
122 | 122 | ||
123 | - | let Z = 2000 | |
124 | - | ||
125 | - | let aa = 100000 | |
126 | - | ||
127 | - | let ab = 1000000 | |
128 | - | ||
129 | - | let ac = 5000000 | |
130 | - | ||
131 | - | let ad = 10000 | |
132 | - | ||
133 | - | let ae = 1000000 | |
134 | - | ||
135 | - | let af = 1000000 | |
136 | - | ||
137 | - | let ag = 10000 | |
138 | - | ||
139 | - | func ah (ai) = fraction(f, pow(ai, 4, g, 4, 4, DOWN), e) | |
140 | - | ||
141 | - | ||
142 | - | func aj (ak) = (100 + ak) | |
143 | - | ||
144 | - | ||
145 | - | func al (am,an) = { | |
146 | - | let ao = ah(an) | |
147 | - | [ao, (h * (ao - am))] | |
148 | - | } | |
149 | - | ||
150 | - | ||
151 | - | func ap (aq,B,ar,as) = { | |
152 | - | let at = split(valueOrElse(getString(aq, C(B)), "0_0_0_0_0"), "_") | |
153 | - | let au = valueOrElse(getInteger(aq, E(B)), 0) | |
154 | - | let av = valueOrElse(getInteger(aq, A(B)), aj(au)) | |
155 | - | let aw = split(valueOrElse(getString(aq, M(B)), "0_0_0_0_0"), "_") | |
156 | - | ([parseIntValue(at[l]), parseIntValue(at[m]), parseIntValue(at[n]), parseIntValue(at[o]), parseIntValue(at[p]), au, av] ++ (if (as) | |
157 | - | then [ar, ar, ar, ar, ar] | |
158 | - | else [parseIntValue(aw[l]), parseIntValue(aw[m]), parseIntValue(aw[n]), parseIntValue(aw[o]), parseIntValue(aw[p])])) | |
159 | - | } | |
160 | - | ||
161 | - | ||
162 | - | func ax (aq,B) = { | |
163 | - | let ay = valueOrElse(getInteger(aq, O(B)), 0) | |
164 | - | let az = valueOrElse(getInteger(aq, N(B)), 0) | |
165 | - | let aA = lastBlock.timestamp | |
166 | - | let aB = max([i, (ay - (j * (aA - az)))]) | |
167 | - | let aC = valueOrElse(getInteger(aq, S(B)), 0) | |
168 | - | let aD = valueOrElse(getString(aq, T(B)), "") | |
169 | - | let aE = valueOrElse(getInteger(aq, R(aD)), 0) | |
170 | - | $Tuple5(aB, az, aC, aD, aE) | |
171 | - | } | |
172 | - | ||
173 | - | ||
174 | - | let aF = "LAND" | |
175 | - | ||
176 | - | let aG = "DUCK" | |
177 | - | ||
178 | - | let aH = "ROBO" | |
179 | - | ||
180 | - | let aI = "PRESALE" | |
181 | - | ||
182 | - | let aJ = 6 | |
183 | - | ||
184 | - | let aK = 25 | |
185 | - | ||
186 | - | let aL = 3456000 | |
187 | - | ||
188 | - | let aM = 10000000000 | |
189 | - | ||
190 | - | let aN = "Africa_F_Africa" | |
191 | - | ||
192 | - | let aO = 39637 | |
193 | - | ||
194 | - | let aP = 10 | |
195 | - | ||
196 | - | let aQ = 50000 | |
197 | - | ||
198 | - | let aR = 0 | |
199 | - | ||
200 | - | let aS = 200000000 | |
201 | - | ||
202 | - | let aT = ["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", "Boom-Dog L1", "Boom-Dog L2", "Boom-Dog L3"] | |
203 | - | ||
204 | - | let aU = ["Americas", "Europe", "Asia", "Africa", "Oceania"] | |
205 | - | ||
206 | - | let aV = 10000000 | |
207 | - | ||
208 | - | let aW = [15, 16, 17, 18, 19, 20, 21, 22, 23] | |
209 | - | ||
210 | - | let aX = ["8_8_8_17_17_42_12_0_30_0,0,0,0,0,0,0_", "8_8_8_17_17_42_24_0_60_0,0,5,2,0,0,0_", "8_8_8_17_17_42_36_0_120_0,0,10,4,0,0,0_", "8_19_19_8_27_19_26_1_20_0,0,0,0,0,0,0_001", "8_19_19_8_27_19_52_1_40_0,0,0,0,0,0,0_001", "8_19_19_8_27_19_78_1_80_0,0,0,0,0,0,0_001", "8_8_8_8_8_60_13_2_2_0,0,0,0,0,0,0_011", "8_8_8_8_8_60_26_2_4_0,0,0,0,0,0,0_011", "8_8_8_8_8_60_39_2_8_0,0,0,0,0,0,0_011", "30_30_3_17_17_3_30_3_30_0,0,0,0,0,0,0_111", "30_30_3_17_17_3_60_3_50_0,0,0,0,0,0,0_111", "30_30_3_17_17_3_90_3_70_0,0,0,0,0,0,0_111", "18_18_10_18_18_18_11_4_10_0,0,0,0,0,0,0_201", "18_18_10_18_18_18_22_4_20_0,0,0,0,0,0,0_201", "18_18_10_18_18_18_33_4_30_0,0,0,0,0,0,0_201", "4_13_22_4_35_22_23_0_50,1,0_0,0,0,0,0,0,0_", "4_13_22_4_35_22_46_0_50,1,1_0,2,5,0,0,0,0_", "4_13_22_4_35_22_69_0_50,2,1_0,5,10,0,0,0,0_", "5_25_40_5_10_15_20_1_30,1,1_0,0,0,0,0,0,0_", "5_25_40_5_10_15_40_1_30,1,2_2,1,3,0,0,0,0_", "5_25_40_5_10_15_60_1_30,1,3_5,2,8,0,0,0,0_", "23_23_5_20_23_6_35_2_100_0,0,0,0,0,0,0_", "23_23_5_20_23_6_70_2_150_0,0,0,0,0,0,0_", "23_23_5_20_23_6_105_2_200_0,0,0,0,0,0,0_"] | |
211 | - | ||
212 | - | let aY = 6 | |
213 | - | ||
214 | - | let aZ = 8 | |
215 | - | ||
216 | - | let ba = 9 | |
217 | - | ||
218 | - | let bb = 10 | |
219 | - | ||
220 | - | let bc = 10 | |
221 | - | ||
222 | - | let bd = 0 | |
223 | - | ||
224 | - | let be = 1 | |
225 | - | ||
226 | - | let bf = 2 | |
227 | - | ||
228 | - | let bg = 3 | |
229 | - | ||
230 | - | let bh = 4 | |
231 | - | ||
232 | - | let bi = 0 | |
233 | - | ||
234 | - | let bj = 1 | |
235 | - | ||
236 | - | let bk = 2 | |
237 | - | ||
238 | - | let bl = 3 | |
239 | - | ||
240 | - | let bm = 0 | |
241 | - | ||
242 | - | let bn = 1 | |
243 | - | ||
244 | - | let bo = 2 | |
245 | - | ||
246 | - | let bp = 3 | |
247 | - | ||
248 | - | let bq = 0 | |
249 | - | ||
250 | - | let br = 1 | |
251 | - | ||
252 | - | let bs = 2 | |
253 | - | ||
254 | - | func bt (bu) = ("no_" + bu) | |
255 | - | ||
256 | - | ||
257 | - | func bv (bu) = ("lcna_" + bu) | |
258 | - | ||
259 | - | ||
260 | - | func bw (bu) = ("st_" + bu) | |
261 | - | ||
262 | - | ||
263 | - | func bx (by,bu) = makeString(["las", by, bu], "_") | |
264 | - | ||
265 | - | ||
266 | - | func bz (bA,bu,bB) = ((((("sttao_" + bA) + "_") + bu) + "_") + bB) | |
267 | - | ||
268 | - | ||
269 | - | func bC (Q) = ("wh_" + Q) | |
270 | - | ||
271 | - | ||
272 | - | func bD (bu) = ("infraLevel_" + bu) | |
273 | - | ||
274 | - | ||
275 | - | func bE (Q) = ("fortifications_" + Q) | |
276 | - | ||
277 | - | ||
278 | - | func bF (bu) = ("duckCustomNameByAssetId_" + bu) | |
279 | - | ||
280 | - | ||
281 | - | func bG (c) = ("accountCustomNameByAddr_" + c) | |
282 | - | ||
283 | - | ||
284 | - | func bH (c) = ("accRefBy_" + c) | |
285 | - | ||
286 | - | ||
287 | - | func bI (B) = ("onboardArtActivatedOnDuck_" + B) | |
288 | - | ||
289 | - | ||
290 | - | func bJ (c) = ("onboardArtActivatedDuckBy_" + c) | |
291 | - | ||
292 | - | ||
293 | - | func bK (c) = ("accReferrals_" + c) | |
294 | - | ||
295 | - | ||
296 | - | func bL (bu) = ("duckOwner_" + bu) | |
297 | - | ||
298 | - | ||
299 | - | func bM (bB) = ("stakedDuckByOwner_" + bB) | |
300 | - | ||
301 | - | ||
302 | - | func bN (B) = ("backPack_" + B) | |
303 | - | ||
304 | - | ||
305 | - | func bO (B) = ("duckLocation_" + B) | |
306 | - | ||
307 | - | ||
308 | - | func bP (bQ) = ("%s%s__userGwlReleaseTime__" + bQ) | |
309 | - | ||
310 | - | ||
311 | - | func bR () = "emergencyWarehouseProducts" | |
312 | - | ||
313 | - | ||
314 | - | let bS = "deliveryFund" | |
315 | - | ||
316 | - | let bT = "%s__lastTourId" | |
317 | - | ||
318 | - | func bU (bV) = ("%s%d__tourStaticData__" + toString(bV)) | |
319 | - | ||
320 | - | ||
321 | - | func bW (bV) = ("%s%d__tourDynamicData__" + toString(bV)) | |
322 | - | ||
323 | - | ||
324 | - | func bX (bV,B) = makeString(["%s%d%s__bestResultByTourAndDuck", toString(bV), B], "__") | |
325 | - | ||
326 | - | ||
327 | - | let bY = 0 | |
328 | - | ||
329 | - | let bZ = 1 | |
330 | - | ||
331 | - | let ca = 6 | |
332 | - | ||
333 | - | let cb = 1 | |
334 | - | ||
335 | - | func cc (cd,bV) = { | |
336 | - | let ce = split(valueOrErrorMessage(getString(cd, bU(bV)), (("Error reading tournament " + toString(bV)) + " data")), "__") | |
337 | - | let cf = split_4C(valueOrErrorMessage(getString(cd, bW(bV)), (("Error reading tournament " + toString(bV)) + " data")), "__") | |
338 | - | [ce, cf] | |
339 | - | } | |
340 | - | ||
341 | - | ||
342 | - | func cg (cd,ch) = { | |
343 | - | let ci = valueOrElse(getInteger(cd, bT), 0) | |
344 | - | let cj = split(ch, "_") | |
345 | - | let aA = lastBlock.timestamp | |
346 | - | let ck = cc(cd, ci) | |
347 | - | let ce = ck[bY] | |
348 | - | let cf = ck[bZ] | |
349 | - | if (if (if ((cj[br] == "T")) | |
350 | - | then (parseIntValue(cj[bq]) == ci) | |
123 | + | func Z (aa) = fraction(f, pow(aa, 4, g, 4, 4, DOWN), e) | |
124 | + | ||
125 | + | ||
126 | + | func ab (ac) = (100 + ac) | |
127 | + | ||
128 | + | ||
129 | + | func ad (ae,af) = { | |
130 | + | let ag = Z(af) | |
131 | + | [ag, (h * (ag - ae))] | |
132 | + | } | |
133 | + | ||
134 | + | ||
135 | + | func ah (ai,u,aj,ak) = { | |
136 | + | let al = split(valueOrElse(getString(ai, v(u)), "0_0_0_0_0"), "_") | |
137 | + | let am = valueOrElse(getInteger(ai, x(u)), 0) | |
138 | + | let an = valueOrElse(getInteger(ai, t(u)), ab(am)) | |
139 | + | let ao = split(valueOrElse(getString(ai, F(u)), "0_0_0_0_0"), "_") | |
140 | + | ([parseIntValue(al[j]), parseIntValue(al[k]), parseIntValue(al[l]), parseIntValue(al[m]), parseIntValue(al[n]), am, an] ++ (if (ak) | |
141 | + | then [aj, aj, aj, aj, aj] | |
142 | + | else [parseIntValue(ao[j]), parseIntValue(ao[k]), parseIntValue(ao[l]), parseIntValue(ao[m]), parseIntValue(ao[n])])) | |
143 | + | } | |
144 | + | ||
145 | + | ||
146 | + | let ap = "LAND" | |
147 | + | ||
148 | + | let aq = "DUCK" | |
149 | + | ||
150 | + | let ar = "ROBO" | |
151 | + | ||
152 | + | let as = "PRESALE" | |
153 | + | ||
154 | + | let at = 6 | |
155 | + | ||
156 | + | let au = 25 | |
157 | + | ||
158 | + | let av = 3456000 | |
159 | + | ||
160 | + | let aw = 10000000000 | |
161 | + | ||
162 | + | let ax = "Africa_F_Africa" | |
163 | + | ||
164 | + | let ay = 39637 | |
165 | + | ||
166 | + | let az = 10 | |
167 | + | ||
168 | + | let aA = 50000 | |
169 | + | ||
170 | + | let aB = 100000000 | |
171 | + | ||
172 | + | let aC = 0 | |
173 | + | ||
174 | + | let aD = 200000000 | |
175 | + | ||
176 | + | let aE = 0 | |
177 | + | ||
178 | + | let aF = 200000000 | |
179 | + | ||
180 | + | let aG = ["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", "Boom-Dog L1", "Boom-Dog L2", "Boom-Dog L3"] | |
181 | + | ||
182 | + | let aH = ["Americas", "Europe", "Asia", "Africa", "Oceania"] | |
183 | + | ||
184 | + | let aI = 10000000 | |
185 | + | ||
186 | + | let aJ = ["8_8_8_17_17_42_12_0_30_0,0,0,0,0,0,0_", "8_8_8_17_17_42_24_0_60_0,0,5,2,0,0,0_", "8_8_8_17_17_42_36_0_120_0,0,10,4,0,0,0_", "8_19_19_8_27_19_26_1_20_0,0,0,0,0,0,0_001", "8_19_19_8_27_19_52_1_40_0,0,0,0,0,0,0_001", "8_19_19_8_27_19_78_1_80_0,0,0,0,0,0,0_001", "8_8_8_8_8_60_13_2_2_0,0,0,0,0,0,0_011", "8_8_8_8_8_60_26_2_4_0,0,0,0,0,0,0_011", "8_8_8_8_8_60_39_2_8_0,0,0,0,0,0,0_011", "30_30_3_17_17_3_30_3_30_0,0,0,0,0,0,0_111", "30_30_3_17_17_3_60_3_50_0,0,0,0,0,0,0_111", "30_30_3_17_17_3_90_3_70_0,0,0,0,0,0,0_111", "18_18_10_18_18_18_11_4_10_0,0,0,0,0,0,0_201", "18_18_10_18_18_18_22_4_20_0,0,0,0,0,0,0_201", "18_18_10_18_18_18_33_4_30_0,0,0,0,0,0,0_201", "4_13_22_4_35_22_23_0_50,1,0_0,0,0,0,0,0,0_", "4_13_22_4_35_22_46_0_50,1,1_0,2,5,0,0,0,0_", "4_13_22_4_35_22_69_0_50,2,1_0,5,10,0,0,0,0_", "5_25_40_5_10_15_20_1_30,1,1_0,0,0,0,0,0,0_", "5_25_40_5_10_15_40_1_30,1,2_2,1,3,0,0,0,0_", "5_25_40_5_10_15_60_1_30,1,3_5,2,8,0,0,0,0_", "23_23_5_20_23_6_35_2_100_0,0,0,0,0,0,0_", "23_23_5_20_23_6_70_2_150_0,0,0,0,0,0,0_", "23_23_5_20_23_6_105_2_200_0,0,0,0,0,0,0_"] | |
187 | + | ||
188 | + | let aK = 6 | |
189 | + | ||
190 | + | let aL = 8 | |
191 | + | ||
192 | + | let aM = 9 | |
193 | + | ||
194 | + | let aN = 10 | |
195 | + | ||
196 | + | let aO = 10 | |
197 | + | ||
198 | + | let aP = 0 | |
199 | + | ||
200 | + | let aQ = 1 | |
201 | + | ||
202 | + | let aR = 2 | |
203 | + | ||
204 | + | let aS = 3 | |
205 | + | ||
206 | + | let aT = 4 | |
207 | + | ||
208 | + | let aU = 0 | |
209 | + | ||
210 | + | let aV = 1 | |
211 | + | ||
212 | + | let aW = 2 | |
213 | + | ||
214 | + | let aX = 3 | |
215 | + | ||
216 | + | let aY = 0 | |
217 | + | ||
218 | + | let aZ = 1 | |
219 | + | ||
220 | + | let ba = 2 | |
221 | + | ||
222 | + | let bb = 3 | |
223 | + | ||
224 | + | let bc = 0 | |
225 | + | ||
226 | + | let bd = 1 | |
227 | + | ||
228 | + | let be = 2 | |
229 | + | ||
230 | + | func bf (bg) = ("no_" + bg) | |
231 | + | ||
232 | + | ||
233 | + | func bh (bg) = ("lcna_" + bg) | |
234 | + | ||
235 | + | ||
236 | + | func bi (bg) = ("st_" + bg) | |
237 | + | ||
238 | + | ||
239 | + | func bj (bk,bg) = makeString(["las", bk, bg], "_") | |
240 | + | ||
241 | + | ||
242 | + | func bl (bm,bg,bn) = ((((("sttao_" + bm) + "_") + bg) + "_") + bn) | |
243 | + | ||
244 | + | ||
245 | + | func bo (bp) = ("wh_" + bp) | |
246 | + | ||
247 | + | ||
248 | + | func bq (bg) = ("infraLevel_" + bg) | |
249 | + | ||
250 | + | ||
251 | + | func br (bg) = ("duckCustomNameByAssetId_" + bg) | |
252 | + | ||
253 | + | ||
254 | + | func bs (c) = ("accountCustomNameByAddr_" + c) | |
255 | + | ||
256 | + | ||
257 | + | func bt (c) = ("accRefBy_" + c) | |
258 | + | ||
259 | + | ||
260 | + | func bu (u) = ("onboardArtActivatedOnDuck_" + u) | |
261 | + | ||
262 | + | ||
263 | + | func bv (c) = ("onboardArtActivatedDuckBy_" + c) | |
264 | + | ||
265 | + | ||
266 | + | func bw (c) = ("accReferrals_" + c) | |
267 | + | ||
268 | + | ||
269 | + | func bx (bg) = ("duckOwner_" + bg) | |
270 | + | ||
271 | + | ||
272 | + | func by (bn) = ("stakedDuckByOwner_" + bn) | |
273 | + | ||
274 | + | ||
275 | + | func bz (u) = ("backPack_" + u) | |
276 | + | ||
277 | + | ||
278 | + | func bA (u) = ("duckLocation_" + u) | |
279 | + | ||
280 | + | ||
281 | + | func bB (bC) = ("%s%s__userGwlReleaseTime__" + bC) | |
282 | + | ||
283 | + | ||
284 | + | func bD () = "emergencyWarehouseProducts" | |
285 | + | ||
286 | + | ||
287 | + | let bE = "deliveryFund" | |
288 | + | ||
289 | + | let bF = "%s__lastTourId" | |
290 | + | ||
291 | + | func bG (bH) = ("%s%d__tourStaticData__" + toString(bH)) | |
292 | + | ||
293 | + | ||
294 | + | func bI (bH) = ("%s%d__tourDynamicData__" + toString(bH)) | |
295 | + | ||
296 | + | ||
297 | + | func bJ (bH,u) = makeString(["%s%d%s__bestResultByTourAndDuck", toString(bH), u], "__") | |
298 | + | ||
299 | + | ||
300 | + | let bK = 0 | |
301 | + | ||
302 | + | let bL = 1 | |
303 | + | ||
304 | + | let bM = 6 | |
305 | + | ||
306 | + | let bN = 1 | |
307 | + | ||
308 | + | func bO (bP,bH) = { | |
309 | + | let bQ = split(valueOrErrorMessage(getString(bP, bG(bH)), (("Error reading tournament " + toString(bH)) + " data")), "__") | |
310 | + | let bR = split_4C(valueOrErrorMessage(getString(bP, bI(bH)), (("Error reading tournament " + toString(bH)) + " data")), "__") | |
311 | + | [bQ, bR] | |
312 | + | } | |
313 | + | ||
314 | + | ||
315 | + | func bS (bP,bT) = { | |
316 | + | let bU = valueOrElse(getInteger(bP, bF), 0) | |
317 | + | let bV = split(bT, "_") | |
318 | + | let bW = lastBlock.timestamp | |
319 | + | let bX = bO(bP, bU) | |
320 | + | let bQ = bX[bK] | |
321 | + | let bR = bX[bL] | |
322 | + | if (if (if ((bV[bd] == "T")) | |
323 | + | then (parseIntValue(bV[bc]) == bU) | |
351 | 324 | else false) | |
352 | - | then ( | |
325 | + | then (bR[bN] == "INPROGRESS") | |
353 | 326 | else false) | |
354 | - | then (parseIntValue( | |
327 | + | then (parseIntValue(bQ[bM]) > bW) | |
355 | 328 | else false | |
356 | 329 | } | |
357 | 330 | ||
358 | 331 | ||
359 | - | func | |
360 | - | let | |
361 | - | let | |
362 | - | let | |
363 | - | let | |
364 | - | let | |
365 | - | let | |
366 | - | let | |
367 | - | if (if (if (( | |
368 | - | then (parseIntValue( | |
332 | + | func bY (bP,bT) = { | |
333 | + | let bU = valueOrElse(getInteger(bP, bF), 0) | |
334 | + | let bV = split(bT, "_") | |
335 | + | let bW = lastBlock.timestamp | |
336 | + | let bX = bO(bP, bU) | |
337 | + | let bQ = bX[bK] | |
338 | + | let bR = bX[bL] | |
339 | + | let bZ = bV[bd] | |
340 | + | if (if (if ((bV[bd] == "T")) | |
341 | + | then (parseIntValue(bV[bc]) == bU) | |
369 | 342 | else false) | |
370 | - | then ( | |
343 | + | then (bR[bN] == "INPROGRESS") | |
371 | 344 | else false) | |
372 | - | then (parseIntValue( | |
345 | + | then (parseIntValue(bQ[bM]) > bW) | |
373 | 346 | else false | |
374 | 347 | } | |
375 | 348 | ||
376 | 349 | ||
377 | - | func | |
378 | - | ||
379 | - | ||
380 | - | func | |
381 | - | ||
382 | - | ||
383 | - | let | |
384 | - | ||
385 | - | let | |
386 | - | ||
387 | - | let | |
388 | - | ||
389 | - | let | |
390 | - | ||
391 | - | let | |
392 | - | ||
393 | - | let | |
394 | - | let | |
395 | - | if ((base58'2W' == | |
396 | - | then if ( | |
350 | + | func ca (cb) = (parseIntValue(cb[aK]) * aI) | |
351 | + | ||
352 | + | ||
353 | + | func cc (cd,ce,cf) = throw(((((("Cheat attempt: oldLoc=" + cd) + ", newLoc=") + ce) + ", case=") + toString(cf))) | |
354 | + | ||
355 | + | ||
356 | + | let cg = false | |
357 | + | ||
358 | + | let ch = false | |
359 | + | ||
360 | + | let ci = false | |
361 | + | ||
362 | + | let cj = 86400000 | |
363 | + | ||
364 | + | let ck = take(drop(this.bytes, 1), 1) | |
365 | + | ||
366 | + | let cl = { | |
367 | + | let cm = ck | |
368 | + | if ((base58'2W' == cm)) | |
369 | + | then if (cg) | |
397 | 370 | then base58'CWsMtTZC5BjjoL4Q1ayW4Wwb1ehGACQB6DrKyPgotKfm' | |
398 | 371 | else base58'6LfPuKJjLgekmncBhMg2LZyMTNVzZBccXR28ySXm9uXD' | |
399 | - | else if ((base58'2T' == | |
372 | + | else if ((base58'2T' == cm)) | |
400 | 373 | then base58'6LfPuKJjLgekmncBhMg2LZyMTNVzZBccXR28ySXm9uXD' | |
401 | 374 | else throw("Unknown chain") | |
402 | 375 | } | |
403 | 376 | ||
404 | - | let | |
405 | - | let | |
406 | - | if ((base58'2W' == | |
377 | + | let cn = { | |
378 | + | let cm = ck | |
379 | + | if ((base58'2W' == cm)) | |
407 | 380 | then base58'9wc3LXNA4TEBsXyKtoLE9mrbDD7WMHXvXrCjZvabLAsi' | |
408 | - | else if ((base58'2T' == | |
381 | + | else if ((base58'2T' == cm)) | |
409 | 382 | then base58'6mWwf9mZBjVgkC54idpyaZLQfAosD914wT8fGf2iiY63' | |
410 | 383 | else throw("Unknown chain") | |
411 | 384 | } | |
412 | 385 | ||
413 | - | let | |
414 | - | let | |
415 | - | if ((base58'2W' == | |
386 | + | let co = { | |
387 | + | let cm = ck | |
388 | + | if ((base58'2W' == cm)) | |
416 | 389 | then "3PQCuvFbvh4LkPUnrnU1z3jnbA1p9m3WNhv" | |
417 | - | else if ((base58'2T' == | |
390 | + | else if ((base58'2T' == cm)) | |
418 | 391 | then "3MumkGGztCKAXpWDqxkddofqXSUbqQkvSJy" | |
419 | 392 | else throw("Unknown chain") | |
420 | 393 | } | |
421 | 394 | ||
422 | - | let | |
423 | - | let | |
424 | - | if ((base58'2W' == | |
395 | + | let cp = { | |
396 | + | let cm = ck | |
397 | + | if ((base58'2W' == cm)) | |
425 | 398 | then 10000000000 | |
426 | - | else if ((base58'2T' == | |
399 | + | else if ((base58'2T' == cm)) | |
427 | 400 | then 100000000 | |
428 | 401 | else throw("Unknown chain") | |
429 | 402 | } | |
430 | 403 | ||
431 | - | let | |
432 | - | let | |
433 | - | if ((base58'2W' == | |
434 | - | then | |
435 | - | else if ((base58'2T' == | |
404 | + | let cq = { | |
405 | + | let cm = ck | |
406 | + | if ((base58'2W' == cm)) | |
407 | + | then cj | |
408 | + | else if ((base58'2T' == cm)) | |
436 | 409 | then 60000 | |
437 | 410 | else throw("Unknown chain") | |
438 | 411 | } | |
439 | 412 | ||
440 | - | let | |
441 | - | ||
442 | - | let | |
443 | - | ||
444 | - | let | |
445 | - | ||
446 | - | let | |
447 | - | ||
448 | - | let | |
449 | - | ||
450 | - | let | |
451 | - | ||
452 | - | let | |
453 | - | ||
454 | - | let | |
455 | - | ||
456 | - | let | |
457 | - | ||
458 | - | func | |
459 | - | ||
460 | - | ||
461 | - | let | |
462 | - | ||
463 | - | let | |
464 | - | ||
465 | - | let | |
466 | - | ||
467 | - | let | |
468 | - | ||
469 | - | let | |
470 | - | ||
471 | - | let | |
472 | - | ||
473 | - | func | |
474 | - | ||
475 | - | ||
476 | - | func | |
477 | - | ||
478 | - | ||
479 | - | func | |
480 | - | ||
481 | - | ||
482 | - | func | |
483 | - | ||
484 | - | ||
485 | - | let | |
486 | - | ||
487 | - | let | |
488 | - | ||
489 | - | let | |
490 | - | ||
491 | - | let | |
492 | - | ||
493 | - | let | |
494 | - | ||
495 | - | let | |
496 | - | ||
497 | - | let | |
498 | - | ||
499 | - | let | |
500 | - | ||
501 | - | let | |
502 | - | ||
503 | - | let | |
504 | - | ||
505 | - | let | |
506 | - | ||
507 | - | let | |
508 | - | ||
509 | - | let | |
510 | - | ||
511 | - | let | |
512 | - | ||
513 | - | let | |
514 | - | ||
515 | - | let | |
516 | - | ||
517 | - | let | |
518 | - | ||
519 | - | func | |
520 | - | ||
521 | - | ||
522 | - | func | |
523 | - | ||
524 | - | ||
525 | - | func | |
526 | - | ||
527 | - | ||
528 | - | func | |
529 | - | ||
530 | - | ||
531 | - | func | |
532 | - | ||
533 | - | ||
534 | - | func | |
535 | - | let | |
536 | - | if ($isInstanceOf( | |
413 | + | let cr = "__" | |
414 | + | ||
415 | + | let cs = 1000000 | |
416 | + | ||
417 | + | let ct = 100000000 | |
418 | + | ||
419 | + | let cu = 25 | |
420 | + | ||
421 | + | let cv = 100 | |
422 | + | ||
423 | + | let cw = 225 | |
424 | + | ||
425 | + | let cx = 400 | |
426 | + | ||
427 | + | let cy = 625 | |
428 | + | ||
429 | + | let cz = [0, 1, 2, 3, 4, 5] | |
430 | + | ||
431 | + | func cA (cB,cC) = valueOrErrorMessage(getString(cB, cC), makeString(["mandatory ", toString(cB), ".", cC, " is not defined"], "")) | |
432 | + | ||
433 | + | ||
434 | + | let cD = 1 | |
435 | + | ||
436 | + | let cE = 2 | |
437 | + | ||
438 | + | let cF = 3 | |
439 | + | ||
440 | + | let cG = 4 | |
441 | + | ||
442 | + | let cH = 7 | |
443 | + | ||
444 | + | let cI = 8 | |
445 | + | ||
446 | + | func cJ () = "%s__restConfig" | |
447 | + | ||
448 | + | ||
449 | + | func cK () = "%s__restAddr" | |
450 | + | ||
451 | + | ||
452 | + | func cL (cM) = split_4C(cA(cM, cJ()), cr) | |
453 | + | ||
454 | + | ||
455 | + | func cN (cO,cP) = valueOrErrorMessage(addressFromString(cO[cP]), ("Rest cfg doesn't contain address at index " + toString(cP))) | |
456 | + | ||
457 | + | ||
458 | + | let cQ = addressFromStringValue(valueOrElse(getString(this, cK()), co)) | |
459 | + | ||
460 | + | let cO = cL(cQ) | |
461 | + | ||
462 | + | let ai = cN(cO, cD) | |
463 | + | ||
464 | + | let cR = cN(cO, cE) | |
465 | + | ||
466 | + | let cS = cN(cO, cF) | |
467 | + | ||
468 | + | let cT = cN(cO, cG) | |
469 | + | ||
470 | + | let cU = cN(cO, cH) | |
471 | + | ||
472 | + | let cV = cN(cO, cI) | |
473 | + | ||
474 | + | let cW = 0 | |
475 | + | ||
476 | + | let cX = 1 | |
477 | + | ||
478 | + | let cY = 2 | |
479 | + | ||
480 | + | let cZ = 3 | |
481 | + | ||
482 | + | let da = "wlg_assetId" | |
483 | + | ||
484 | + | let db = valueOrErrorMessage(getBinary(cT, da), "WLGOLD is not issued yet") | |
485 | + | ||
486 | + | let dc = "acresAssetId" | |
487 | + | ||
488 | + | let dd = valueOrErrorMessage(getBinary(cV, dc), "ACRES is not issued yet") | |
489 | + | ||
490 | + | let de = 2 | |
491 | + | ||
492 | + | func df (cB) = ("finishBlockFor_" + cB) | |
493 | + | ||
494 | + | ||
495 | + | func dg () = "resTypesProportions" | |
496 | + | ||
497 | + | ||
498 | + | func dh (di) = ("resTypesByContinent_" + di) | |
499 | + | ||
500 | + | ||
501 | + | func dj (bn) = ("stakedLandsByOwner_" + bn) | |
502 | + | ||
503 | + | ||
504 | + | func dk (bn) = ("stakedPiecesByOwner_" + bn) | |
505 | + | ||
506 | + | ||
507 | + | func dl (dm) = { | |
508 | + | let cm = dm | |
509 | + | if ($isInstanceOf(cm, "String")) | |
537 | 510 | then { | |
538 | - | let | |
539 | - | | |
511 | + | let dn = cm | |
512 | + | dn | |
540 | 513 | } | |
541 | 514 | else throw("fail to cast into String") | |
542 | 515 | } | |
543 | 516 | ||
544 | 517 | ||
545 | - | func | |
546 | - | let | |
547 | - | if ($isInstanceOf( | |
518 | + | func do (dm) = { | |
519 | + | let cm = dm | |
520 | + | if ($isInstanceOf(cm, "Int")) | |
548 | 521 | then { | |
549 | - | let | |
550 | - | | |
522 | + | let dp = cm | |
523 | + | dp | |
551 | 524 | } | |
552 | 525 | else throw("fail to cast into Int") | |
553 | 526 | } | |
554 | 527 | ||
555 | 528 | ||
556 | - | func | |
557 | - | let | |
558 | - | if ($isInstanceOf( | |
529 | + | func dq (dm) = { | |
530 | + | let cm = dm | |
531 | + | if ($isInstanceOf(cm, "List[Any]")) | |
559 | 532 | then { | |
560 | - | let | |
561 | - | | |
533 | + | let dr = cm | |
534 | + | dr | |
562 | 535 | } | |
563 | 536 | else throw("fail to cast into List[Any]") | |
564 | 537 | } | |
565 | 538 | ||
566 | 539 | ||
567 | - | func | |
568 | - | let | |
569 | - | if ($isInstanceOf( | |
540 | + | func ds (dm) = { | |
541 | + | let cm = dm | |
542 | + | if ($isInstanceOf(cm, "Boolean")) | |
570 | 543 | then { | |
571 | - | let | |
572 | - | | |
544 | + | let dn = cm | |
545 | + | dn | |
573 | 546 | } | |
574 | 547 | else throw("fail to cast into Boolean") | |
575 | 548 | } | |
576 | 549 | ||
577 | 550 | ||
578 | - | func | |
579 | - | let | |
580 | - | if (("S" == | |
581 | - | then | |
582 | - | else if (("M" == | |
583 | - | then | |
584 | - | else if (("L" == | |
585 | - | then | |
586 | - | else if (("XL" == | |
587 | - | then | |
588 | - | else if (("XXL" == | |
589 | - | then | |
551 | + | func dt (du) = { | |
552 | + | let cm = du | |
553 | + | if (("S" == cm)) | |
554 | + | then cu | |
555 | + | else if (("M" == cm)) | |
556 | + | then cv | |
557 | + | else if (("L" == cm)) | |
558 | + | then cw | |
559 | + | else if (("XL" == cm)) | |
560 | + | then cx | |
561 | + | else if (("XXL" == cm)) | |
562 | + | then cy | |
590 | 563 | else throw("Unknown land size") | |
591 | 564 | } | |
592 | 565 | ||
593 | 566 | ||
594 | - | func | |
595 | - | ||
596 | - | ||
597 | - | func | |
598 | - | ||
599 | - | ||
600 | - | func | |
601 | - | ||
602 | - | ||
603 | - | func | |
604 | - | let | |
605 | - | let | |
606 | - | let | |
607 | - | (((toString(( | |
608 | - | } | |
609 | - | ||
610 | - | ||
611 | - | func | |
567 | + | func dv (dn) = isDefined(parseInt(dn)) | |
568 | + | ||
569 | + | ||
570 | + | func dw () = "contractsBlocked" | |
571 | + | ||
572 | + | ||
573 | + | func dx (c) = ("lastTxIdByUser_" + c) | |
574 | + | ||
575 | + | ||
576 | + | func dy (dz,dA) = { | |
577 | + | let dB = pow(10, 0, dA, 0, 0, DOWN) | |
578 | + | let dC = toString((dz % dB)) | |
579 | + | let dD = drop(toString(dB), (1 + size(dC))) | |
580 | + | (((toString((dz / dB)) + ".") + dD) + dC) | |
581 | + | } | |
582 | + | ||
583 | + | ||
584 | + | func dE (dF,dG,dH) = if ((0 >= dF)) | |
612 | 585 | then throw("maxValue should be > 0") | |
613 | 586 | else { | |
614 | - | let | |
615 | - | (toInt( | |
587 | + | let dI = sha256((dG + dH)) | |
588 | + | (toInt(dI) % dF) | |
616 | 589 | } | |
617 | 590 | ||
618 | 591 | ||
619 | - | let | |
620 | - | let | |
621 | - | if ((base58'2W' == | |
592 | + | let dJ = { | |
593 | + | let cm = ck | |
594 | + | if ((base58'2W' == cm)) | |
622 | 595 | then addressFromStringValue("3PEktVux2RhchSN63DsDo4b4mz4QqzKSeDv") | |
623 | - | else if ((base58'2T' == | |
596 | + | else if ((base58'2T' == cm)) | |
624 | 597 | then this | |
625 | 598 | else throw("Unknown chain") | |
626 | 599 | } | |
627 | 600 | ||
628 | - | let | |
629 | - | let | |
630 | - | if ((base58'2W' == | |
601 | + | let dK = { | |
602 | + | let cm = ck | |
603 | + | if ((base58'2W' == cm)) | |
631 | 604 | then addressFromStringValue("3PDVuU45H7Eh5dmtNbnRNRStGwULA7NY6Hb") | |
632 | - | else if ((base58'2T' == | |
605 | + | else if ((base58'2T' == cm)) | |
633 | 606 | then this | |
634 | 607 | else throw("Unknown chain") | |
635 | 608 | } | |
636 | 609 | ||
637 | - | let dY = base64'AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA==' | |
638 | - | ||
639 | - | let dZ = 300000 | |
640 | - | ||
641 | - | let ea = 5000000 | |
642 | - | ||
643 | - | let eb = 50 | |
644 | - | ||
645 | - | let ec = 10000000 | |
646 | - | ||
647 | - | let ed = { | |
648 | - | let cz = cx | |
649 | - | if ((base58'2W' == cz)) | |
610 | + | let dL = 300000 | |
611 | + | ||
612 | + | let dM = 5000000 | |
613 | + | ||
614 | + | let dN = 50 | |
615 | + | ||
616 | + | let dO = 10000000 | |
617 | + | ||
618 | + | let dP = { | |
619 | + | let cm = ck | |
620 | + | if ((base58'2W' == cm)) | |
650 | 621 | then 252289527462 | |
651 | - | else if ((base58'2T' == | |
622 | + | else if ((base58'2T' == cm)) | |
652 | 623 | then 2522895274 | |
653 | 624 | else throw("Unknown chain") | |
654 | 625 | } | |
655 | 626 | ||
656 | - | let | |
657 | - | let | |
658 | - | if ((base58'2W' == | |
627 | + | let dQ = { | |
628 | + | let cm = ck | |
629 | + | if ((base58'2W' == cm)) | |
659 | 630 | then 250000000 | |
660 | - | else if ((base58'2T' == | |
631 | + | else if ((base58'2T' == cm)) | |
661 | 632 | then 250000000 | |
662 | 633 | else throw("Unknown chain") | |
663 | 634 | } | |
664 | 635 | ||
665 | - | let ef = 100000 | |
666 | - | ||
667 | - | let eg = 2500000000 | |
668 | - | ||
669 | - | let eh = toBigInt(5) | |
670 | - | ||
671 | - | let ei = toBigInt(20) | |
672 | - | ||
673 | - | let ej = toBigInt((20 * 20)) | |
674 | - | ||
675 | - | let ek = toBigInt(((20 * 20) * 20)) | |
676 | - | ||
677 | - | let el = toBigInt((((20 * 20) * 20) * 20)) | |
678 | - | ||
679 | - | let em = toBigInt(((((20 * 20) * 20) * 20) * 20)) | |
680 | - | ||
681 | - | let en = 500 | |
682 | - | ||
683 | - | func eo () = "nextLandNum" | |
684 | - | ||
685 | - | ||
686 | - | func ep (eq) = ("lcn_" + eq) | |
687 | - | ||
688 | - | ||
689 | - | func er (es) = ("la_" + es) | |
690 | - | ||
691 | - | ||
692 | - | func et (bu,bB) = ((("ilao_" + bu) + "_") + bB) | |
693 | - | ||
694 | - | ||
695 | - | func eu (es) = ("lo_" + es) | |
696 | - | ||
697 | - | ||
698 | - | func ev (eq) = ("duckByCustomName_" + eq) | |
699 | - | ||
700 | - | ||
701 | - | func ew (eq) = ("accountByCustomName_" + eq) | |
702 | - | ||
703 | - | ||
704 | - | func ex () = "oldiesList" | |
705 | - | ||
706 | - | ||
707 | - | func ey () = "nextRoboDuck" | |
708 | - | ||
709 | - | ||
710 | - | let ez = 0 | |
711 | - | ||
712 | - | let eA = 1 | |
713 | - | ||
714 | - | let eB = 2 | |
715 | - | ||
716 | - | let eC = 0 | |
717 | - | ||
718 | - | let eD = 5 | |
719 | - | ||
720 | - | let eE = 6 | |
721 | - | ||
722 | - | let eF = 7 | |
723 | - | ||
724 | - | func eG (es,dH) = ((aF + es) + dH) | |
725 | - | ||
726 | - | ||
727 | - | func eH (eI,eJ) = { | |
728 | - | let eK = if ((eI >= 0)) | |
729 | - | then (((eI + eJ) - 1) / eJ) | |
730 | - | else -((((-(eI) + eJ) - 1) / eJ)) | |
731 | - | (eK * cG) | |
732 | - | } | |
733 | - | ||
734 | - | ||
735 | - | func eL (eM,eN) = { | |
736 | - | let eO = (((((eN[0] + eN[1]) + eN[2]) + eN[3]) + eN[4]) + eN[5]) | |
737 | - | if ((0 >= eO)) | |
636 | + | let dR = 100000 | |
637 | + | ||
638 | + | let dS = 2500000000 | |
639 | + | ||
640 | + | let dT = toBigInt(5) | |
641 | + | ||
642 | + | let dU = toBigInt(20) | |
643 | + | ||
644 | + | let dV = toBigInt((20 * 20)) | |
645 | + | ||
646 | + | let dW = toBigInt(((20 * 20) * 20)) | |
647 | + | ||
648 | + | let dX = toBigInt((((20 * 20) * 20) * 20)) | |
649 | + | ||
650 | + | let dY = toBigInt(((((20 * 20) * 20) * 20) * 20)) | |
651 | + | ||
652 | + | let dZ = 500 | |
653 | + | ||
654 | + | func ea () = "nextLandNum" | |
655 | + | ||
656 | + | ||
657 | + | func eb (ec) = ("lcn_" + ec) | |
658 | + | ||
659 | + | ||
660 | + | func ed (ee) = ("la_" + ee) | |
661 | + | ||
662 | + | ||
663 | + | func ef (bg,bn) = ((("ilao_" + bg) + "_") + bn) | |
664 | + | ||
665 | + | ||
666 | + | func eg (ee) = ("lo_" + ee) | |
667 | + | ||
668 | + | ||
669 | + | func eh (ec) = ("duckByCustomName_" + ec) | |
670 | + | ||
671 | + | ||
672 | + | func ei (ec) = ("accountByCustomName_" + ec) | |
673 | + | ||
674 | + | ||
675 | + | func ej () = "oldiesList" | |
676 | + | ||
677 | + | ||
678 | + | func ek () = "nextRoboDuck" | |
679 | + | ||
680 | + | ||
681 | + | let el = 0 | |
682 | + | ||
683 | + | let em = 1 | |
684 | + | ||
685 | + | let en = 2 | |
686 | + | ||
687 | + | let eo = 0 | |
688 | + | ||
689 | + | let ep = 5 | |
690 | + | ||
691 | + | let eq = 6 | |
692 | + | ||
693 | + | let er = 7 | |
694 | + | ||
695 | + | let es = 0 | |
696 | + | ||
697 | + | let et = 1 | |
698 | + | ||
699 | + | let eu = 0 | |
700 | + | ||
701 | + | let ev = 2 | |
702 | + | ||
703 | + | let ew = 3 | |
704 | + | ||
705 | + | func ex (ee,du) = ((ap + ee) + du) | |
706 | + | ||
707 | + | ||
708 | + | func ey (ez,eA) = { | |
709 | + | let eB = if ((ez >= 0)) | |
710 | + | then (((ez + eA) - 1) / eA) | |
711 | + | else -((((-(ez) + eA) - 1) / eA)) | |
712 | + | (eB * ct) | |
713 | + | } | |
714 | + | ||
715 | + | ||
716 | + | func eC (eD,eE) = { | |
717 | + | let eF = (((((eE[0] + eE[1]) + eE[2]) + eE[3]) + eE[4]) + eE[5]) | |
718 | + | if ((0 >= eF)) | |
738 | 719 | then throw("Zero weights sum") | |
739 | 720 | else { | |
740 | - | let | |
741 | - | func | |
742 | - | ||
743 | - | let | |
744 | - | let | |
745 | - | let | |
746 | - | func | |
747 | - | then | |
748 | - | else | |
749 | - | ||
750 | - | func | |
751 | - | then | |
721 | + | let eG = fraction(eD, cs, eF) | |
722 | + | func eH (eI,eJ) = (eI :+ fraction(eJ, eG, cs)) | |
723 | + | ||
724 | + | let eK = eE | |
725 | + | let eL = size(eK) | |
726 | + | let eM = nil | |
727 | + | func eN (eO,eP) = if ((eP >= eL)) | |
728 | + | then eO | |
729 | + | else eH(eO, eK[eP]) | |
730 | + | ||
731 | + | func eQ (eO,eP) = if ((eP >= eL)) | |
732 | + | then eO | |
752 | 733 | else throw("List size exceeds 6") | |
753 | 734 | ||
754 | - | | |
755 | - | } | |
756 | - | } | |
757 | - | ||
758 | - | ||
759 | - | func | |
760 | - | let | |
761 | - | if ((size( | |
735 | + | eQ(eN(eN(eN(eN(eN(eN(eM, 0), 1), 2), 3), 4), 5), 6) | |
736 | + | } | |
737 | + | } | |
738 | + | ||
739 | + | ||
740 | + | func eR (eD) = { | |
741 | + | let eS = split(value(getString(dg())), "_") | |
742 | + | if ((size(eS) != at)) | |
762 | 743 | then throw("Wrong proportions data") | |
763 | 744 | else { | |
764 | - | let | |
765 | - | | |
766 | - | } | |
767 | - | } | |
768 | - | ||
769 | - | ||
770 | - | func | |
771 | - | let | |
772 | - | func | |
773 | - | let | |
774 | - | if ((0 > | |
775 | - | then throw(((((("Not enough material idx=" + toString( | |
776 | - | else ( | |
745 | + | let eT = [parseIntValue(eS[0]), parseIntValue(eS[1]), parseIntValue(eS[2]), parseIntValue(eS[3]), parseIntValue(eS[4]), parseIntValue(eS[5])] | |
746 | + | eC(eD, eT) | |
747 | + | } | |
748 | + | } | |
749 | + | ||
750 | + | ||
751 | + | func eU (eV,eW,eX) = { | |
752 | + | let eY = eR(eX) | |
753 | + | func eZ (eI,cP) = { | |
754 | + | let fa = (parseIntValue(eW[cP]) - eY[cP]) | |
755 | + | if ((0 > fa)) | |
756 | + | then throw(((((("Not enough material idx=" + toString(cP)) + ", you have ") + eW[cP]) + ", but need ") + toString(eY[cP]))) | |
757 | + | else (eI :+ toString(fa)) | |
777 | 758 | } | |
778 | 759 | ||
779 | - | if ( | |
760 | + | if (eV) | |
780 | 761 | then { | |
781 | - | let | |
782 | - | let | |
783 | - | let | |
784 | - | func | |
785 | - | then | |
786 | - | else | |
787 | - | ||
788 | - | func | |
789 | - | then | |
762 | + | let eK = cz | |
763 | + | let eL = size(eK) | |
764 | + | let eM = nil | |
765 | + | func eN (eO,eP) = if ((eP >= eL)) | |
766 | + | then eO | |
767 | + | else eZ(eO, eK[eP]) | |
768 | + | ||
769 | + | func eQ (eO,eP) = if ((eP >= eL)) | |
770 | + | then eO | |
790 | 771 | else throw("List size exceeds 6") | |
791 | 772 | ||
792 | - | | |
793 | - | } | |
794 | - | else | |
795 | - | } | |
796 | - | ||
797 | - | ||
798 | - | func | |
799 | - | then $ | |
773 | + | eQ(eN(eN(eN(eN(eN(eN(eM, 0), 1), 2), 3), 4), 5), 6) | |
774 | + | } | |
775 | + | else eW | |
776 | + | } | |
777 | + | ||
778 | + | ||
779 | + | func fb (fc,fd) = if ((fd == "")) | |
780 | + | then $Tuple3(fc, false, false) | |
800 | 781 | else { | |
801 | - | func | |
802 | - | let | |
803 | - | if ((size( | |
782 | + | func fe (eI,ff) = { | |
783 | + | let fg = split(ff, ",") | |
784 | + | if ((size(fg) != 2)) | |
804 | 785 | then throw("Incorrect format, should be index,amount") | |
805 | 786 | else { | |
806 | - | let | |
807 | - | if (if ((0 > | |
787 | + | let cP = parseIntValue(fg[0]) | |
788 | + | if (if ((0 > cP)) | |
808 | 789 | then true | |
809 | - | else ( | |
790 | + | else (cP >= size(aJ))) | |
810 | 791 | then throw("Unknown product idx") | |
811 | 792 | else { | |
812 | - | let | |
813 | - | let | |
814 | - | if ((size( | |
815 | - | then throw((("You don't have " + | |
793 | + | let fh = parseIntValue(fg[1]) | |
794 | + | let fi = split(eI._1, (fg[0] + ":")) | |
795 | + | if ((size(fi) != 2)) | |
796 | + | then throw((("You don't have " + aG[cP]) + " equipped")) | |
816 | 797 | else { | |
817 | - | let | |
818 | - | let | |
798 | + | let fj = fi[1] | |
799 | + | let fk = if (dv(take(drop(fj, 1), 1))) | |
819 | 800 | then 2 | |
820 | 801 | else 1 | |
821 | - | let | |
822 | - | let | |
823 | - | let | |
824 | - | then ( | |
825 | - | else throw(((((("You equipped " + toString( | |
826 | - | $ | |
802 | + | let fl = parseIntValue(take(fj, fk)) | |
803 | + | let fm = drop(fj, fk) | |
804 | + | let fn = if ((fl >= fh)) | |
805 | + | then (fl - fh) | |
806 | + | else throw(((((("You equipped " + toString(fl)) + " of ") + aG[cP]) + ", but tried to use ") + toString(fh))) | |
807 | + | $Tuple3(((((fi[0] + fg[0]) + ":") + toString(fn)) + fm), if (eI._2) | |
827 | 808 | then true | |
828 | - | else if (if (( | |
829 | - | then (8 >= | |
809 | + | else if (if ((cP >= 6)) | |
810 | + | then (8 >= cP) | |
830 | 811 | else false) | |
831 | - | then (fw == 0) | |
812 | + | then (fn == 0) | |
813 | + | else false, if (eI._3) | |
814 | + | then true | |
815 | + | else if (if ((cP >= 3)) | |
816 | + | then (5 >= cP) | |
817 | + | else false) | |
818 | + | then (fh > 0) | |
832 | 819 | else false) | |
833 | 820 | } | |
834 | 821 | } | |
835 | 822 | } | |
836 | 823 | } | |
837 | 824 | ||
838 | - | let | |
839 | - | let | |
840 | - | let | |
841 | - | func | |
842 | - | then | |
843 | - | else | |
844 | - | ||
845 | - | func | |
846 | - | then | |
825 | + | let eK = split(fd, "_") | |
826 | + | let eL = size(eK) | |
827 | + | let eM = $Tuple3(fc, false, false) | |
828 | + | func eN (eO,eP) = if ((eP >= eL)) | |
829 | + | then eO | |
830 | + | else fe(eO, eK[eP]) | |
831 | + | ||
832 | + | func eQ (eO,eP) = if ((eP >= eL)) | |
833 | + | then eO | |
847 | 834 | else throw("List size exceeds 10") | |
848 | 835 | ||
849 | - | | |
836 | + | eQ(eN(eN(eN(eN(eN(eN(eN(eN(eN(eN(eM, 0), 1), 2), 3), 4), 5), 6), 7), 8), 9), 10) | |
850 | 837 | } | |
851 | 838 | ||
852 | 839 | ||
853 | - | func | |
854 | - | let | |
840 | + | func fo (fp) = { | |
841 | + | let fq = if ((fp == "")) | |
855 | 842 | then nil | |
856 | - | else split_4C( | |
857 | - | func | |
858 | - | let | |
859 | - | let | |
860 | - | then parseIntValue( | |
843 | + | else split_4C(fp, "_") | |
844 | + | func fr (eI,cb) = { | |
845 | + | let fs = (size(eI) / 8) | |
846 | + | let fl = if ((size(fq) > fs)) | |
847 | + | then parseIntValue(fq[fs]) | |
861 | 848 | else 0 | |
862 | - | ( | |
849 | + | (eI + toBytes(fl)) | |
863 | 850 | } | |
864 | 851 | ||
865 | - | let | |
866 | - | let | |
867 | - | let | |
868 | - | func | |
869 | - | then | |
870 | - | else | |
871 | - | ||
872 | - | func | |
873 | - | then | |
852 | + | let eK = aJ | |
853 | + | let eL = size(eK) | |
854 | + | let eM = base58'' | |
855 | + | func eN (eO,eP) = if ((eP >= eL)) | |
856 | + | then eO | |
857 | + | else fr(eO, eK[eP]) | |
858 | + | ||
859 | + | func eQ (eO,eP) = if ((eP >= eL)) | |
860 | + | then eO | |
874 | 861 | else throw("List size exceeds 50") | |
875 | 862 | ||
876 | - | | |
877 | - | } | |
878 | - | ||
879 | - | ||
880 | - | func | |
881 | - | func | |
882 | - | let | |
883 | - | let | |
884 | - | ( | |
863 | + | eQ(eN(eN(eN(eN(eN(eN(eN(eN(eN(eN(eN(eN(eN(eN(eN(eN(eN(eN(eN(eN(eN(eN(eN(eN(eN(eN(eN(eN(eN(eN(eN(eN(eN(eN(eN(eN(eN(eN(eN(eN(eN(eN(eN(eN(eN(eN(eN(eN(eN(eN(eM, 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) | |
864 | + | } | |
865 | + | ||
866 | + | ||
867 | + | func ft (fu) = { | |
868 | + | func fv (eI,cb) = { | |
869 | + | let fs = size(eI) | |
870 | + | let fw = take(drop(fu, (8 * fs)), 8) | |
871 | + | (eI :+ toString(toInt(fw))) | |
885 | 872 | } | |
886 | 873 | ||
887 | 874 | makeString_2C({ | |
888 | - | let | |
889 | - | let | |
890 | - | let | |
891 | - | func | |
892 | - | then | |
893 | - | else | |
894 | - | ||
895 | - | func | |
896 | - | then | |
875 | + | let eK = aJ | |
876 | + | let eL = size(eK) | |
877 | + | let eM = nil | |
878 | + | func eN (eO,eP) = if ((eP >= eL)) | |
879 | + | then eO | |
880 | + | else fv(eO, eK[eP]) | |
881 | + | ||
882 | + | func eQ (eO,eP) = if ((eP >= eL)) | |
883 | + | then eO | |
897 | 884 | else throw("List size exceeds 50") | |
898 | 885 | ||
899 | - | | |
886 | + | eQ(eN(eN(eN(eN(eN(eN(eN(eN(eN(eN(eN(eN(eN(eN(eN(eN(eN(eN(eN(eN(eN(eN(eN(eN(eN(eN(eN(eN(eN(eN(eN(eN(eN(eN(eN(eN(eN(eN(eN(eN(eN(eN(eN(eN(eN(eN(eN(eN(eN(eN(eM, 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) | |
900 | 887 | }, "_") | |
901 | 888 | } | |
902 | 889 | ||
903 | 890 | ||
904 | - | func | |
905 | - | func | |
906 | - | let | |
907 | - | then | |
891 | + | func fx (fy,fz) = { | |
892 | + | func fA (eI,fs) = { | |
893 | + | let fB = if ((size(fy) > (7 + fs))) | |
894 | + | then fy[(7 + fs)] | |
908 | 895 | else 0 | |
909 | - | if ((parseIntValue( | |
910 | - | then throw(("Requirement not satisfied: " + | |
896 | + | if ((parseIntValue(fz[fs]) > (fy[fs] + fB))) | |
897 | + | then throw(("Requirement not satisfied: " + i[fs])) | |
911 | 898 | else true | |
912 | 899 | } | |
913 | 900 | ||
914 | - | let | |
915 | - | let | |
916 | - | let | |
917 | - | func | |
918 | - | then | |
919 | - | else | |
920 | - | ||
921 | - | func | |
922 | - | then | |
901 | + | let eK = [0, 1, 2, 3, 4, 5, 6] | |
902 | + | let eL = size(eK) | |
903 | + | let eM = false | |
904 | + | func eN (eO,eP) = if ((eP >= eL)) | |
905 | + | then eO | |
906 | + | else fA(eO, eK[eP]) | |
907 | + | ||
908 | + | func eQ (eO,eP) = if ((eP >= eL)) | |
909 | + | then eO | |
923 | 910 | else throw("List size exceeds 7") | |
924 | 911 | ||
925 | - | | |
926 | - | } | |
927 | - | ||
928 | - | ||
929 | - | func | |
930 | - | let | |
931 | - | if ((size( | |
912 | + | eQ(eN(eN(eN(eN(eN(eN(eN(eM, 0), 1), 2), 3), 4), 5), 6), 7) | |
913 | + | } | |
914 | + | ||
915 | + | ||
916 | + | func fC (fD,fq,fE,fF,fG,fH,fy) = { | |
917 | + | let fg = split(fD, ":") | |
918 | + | if ((size(fg) != 2)) | |
932 | 919 | then throw("Incorrect format, should be index:amount") | |
933 | - | else if (if (!( | |
934 | - | then (size( | |
920 | + | else if (if (!(fE)) | |
921 | + | then (size(fg[0]) != 2) | |
935 | 922 | else false) | |
936 | 923 | then throw("Product idx should be 2 digits, zero padded") | |
937 | 924 | else { | |
938 | - | let fQ = parseIntValue(fp[0]) | |
939 | - | let fR = parseIntValue(fp[1]) | |
940 | - | if (!(containsElement(aW, fQ))) | |
941 | - | then throw((("Product '" + aT[fQ]) + "' cannot be used for land defense")) | |
942 | - | else if ((0 > fR)) | |
925 | + | let fI = parseIntValue(fg[0]) | |
926 | + | let fJ = parseIntValue(fg[1]) | |
927 | + | if (if ((0 > fI)) | |
928 | + | then true | |
929 | + | else (fI >= size(aJ))) | |
930 | + | then throw("Unknown product idx") | |
931 | + | else if ((0 > fJ)) | |
943 | 932 | then throw("Count can't be negative") | |
944 | - | else if (( | |
945 | - | then throw(((("Can't put more than " + toString( | |
946 | - | else if (( | |
947 | - | then $ | |
933 | + | else if ((fJ > s)) | |
934 | + | then throw(((("Can't put more than " + toString(s)) + " of ") + aG[fI])) | |
935 | + | else if ((fJ == 0)) | |
936 | + | then $Tuple2(fq, false) | |
948 | 937 | else { | |
949 | - | let | |
950 | - | let | |
951 | - | let | |
952 | - | let | |
953 | - | if (if (!( | |
954 | - | then ( | |
938 | + | let fK = take(fq, (8 * fI)) | |
939 | + | let fl = toInt(take(drop(fq, (8 * fI)), 8)) | |
940 | + | let fm = drop(fq, (8 * (fI + 1))) | |
941 | + | let cb = split(aJ[fI], "_") | |
942 | + | if (if (!(fE)) | |
943 | + | then (fJ > fl) | |
955 | 944 | else false) | |
956 | - | then throw(((((("You have " + toString( | |
945 | + | then throw(((((("You have " + toString(fl)) + " of ") + aG[fI]) + ", but tried to use ") + toString(fJ))) | |
957 | 946 | else { | |
958 | - | let fw = if (if (!(fN)) | |
959 | - | then fG(fH, split(co[ba], ",")) | |
960 | - | else false) | |
961 | - | then (fu - fR) | |
962 | - | else (fu + fR) | |
963 | - | let fT = (eH(fw, bc) - eH(fu, bc)) | |
964 | - | $Tuple3(((fS + toBytes(fw)) + fv), (fO + fT), (fP - fT)) | |
965 | - | } | |
966 | - | } | |
967 | - | } | |
968 | - | } | |
969 | - | ||
970 | - | ||
971 | - | func fU (fM,fz,fN,fV,fW,fX,fH) = { | |
972 | - | let fp = split(fM, ":") | |
973 | - | if ((size(fp) != 2)) | |
974 | - | then throw("Incorrect format, should be index:amount") | |
975 | - | else if (if (!(fN)) | |
976 | - | then (size(fp[0]) != 2) | |
977 | - | else false) | |
978 | - | then throw("Product idx should be 2 digits, zero padded") | |
979 | - | else { | |
980 | - | let fQ = parseIntValue(fp[0]) | |
981 | - | let fR = parseIntValue(fp[1]) | |
982 | - | if (if ((0 > fQ)) | |
983 | - | then true | |
984 | - | else (fQ >= size(aX))) | |
985 | - | then throw("Unknown product idx") | |
986 | - | else if ((0 > fR)) | |
987 | - | then throw("Count can't be negative") | |
988 | - | else if ((fR > u)) | |
989 | - | then throw(((("Can't put more than " + toString(u)) + " of ") + aT[fQ])) | |
990 | - | else if ((fR == 0)) | |
991 | - | then $Tuple2(fz, false) | |
992 | - | else { | |
993 | - | let fS = take(fz, (8 * fQ)) | |
994 | - | let fu = toInt(take(drop(fz, (8 * fQ)), 8)) | |
995 | - | let fv = drop(fz, (8 * (fQ + 1))) | |
996 | - | let co = split(aX[fQ], "_") | |
997 | - | if (if (!(fN)) | |
998 | - | then (fR > fu) | |
999 | - | else false) | |
1000 | - | then throw(((((("You have " + toString(fu)) + " of ") + aT[fQ]) + ", but tried to use ") + toString(fR))) | |
1001 | - | else { | |
1002 | - | let fY = if (if (!(fN)) | |
1003 | - | then fG(fH, split(co[ba], ",")) | |
947 | + | let fL = if (if (!(fE)) | |
948 | + | then fx(fy, split(cb[aM], ",")) | |
1004 | 949 | else false) | |
1005 | 950 | then { | |
1006 | - | let | |
1007 | - | if (( | |
951 | + | let fM = cb[aN] | |
952 | + | if ((fM == "")) | |
1008 | 953 | then throw("Item cannot be equipped") | |
1009 | 954 | else { | |
1010 | - | let | |
1011 | - | let | |
1012 | - | if (( | |
955 | + | let fN = parseIntValue(fM) | |
956 | + | let fO = (fN / 100) | |
957 | + | if ((fF != fO)) | |
1013 | 958 | then throw("Segment incompatible") | |
1014 | 959 | else { | |
1015 | - | let | |
1016 | - | if (( | |
960 | + | let fP = ((fN % 100) / 10) | |
961 | + | if ((fG != fP)) | |
1017 | 962 | then throw("Slot incompatible") | |
1018 | 963 | else { | |
1019 | - | let | |
1020 | - | if (if (( | |
1021 | - | then ( | |
964 | + | let fQ = (fN % 10) | |
965 | + | if (if ((fH != 0)) | |
966 | + | then (fQ > 1) | |
1022 | 967 | else false) | |
1023 | 968 | then throw("Big items should occupy slot 0") | |
1024 | - | else ( | |
969 | + | else (fQ > 1) | |
1025 | 970 | } | |
1026 | 971 | } | |
1027 | 972 | } | |
1028 | 973 | } | |
1029 | 974 | else false | |
1030 | - | $Tuple2((( | |
1031 | - | then | |
1032 | - | else -( | |
975 | + | $Tuple2(((fK + toBytes((fl + (if (fE) | |
976 | + | then fJ | |
977 | + | else -(fJ))))) + fm), fL) | |
1033 | 978 | } | |
1034 | 979 | } | |
1035 | 980 | } | |
1036 | 981 | } | |
1037 | 982 | ||
1038 | 983 | ||
1039 | - | func | |
984 | + | func fR (fS,fT,fE,fF,fG,fU) = if ((fS != "")) | |
1040 | 985 | then { | |
1041 | - | let | |
1042 | - | if ((size( | |
986 | + | let fV = split(fS, ",") | |
987 | + | if ((size(fV) > r)) | |
1043 | 988 | then throw("Wrong slots format") | |
1044 | 989 | else { | |
1045 | - | let | |
1046 | - | let | |
1047 | - | then | |
990 | + | let fW = fV[0] | |
991 | + | let fX = if ((size(fV) > 1)) | |
992 | + | then fV[1] | |
1048 | 993 | else "" | |
1049 | - | if (if (( | |
1050 | - | then ( | |
994 | + | if (if ((fW == "")) | |
995 | + | then (fX == "") | |
1051 | 996 | else false) | |
1052 | - | then | |
997 | + | then fT | |
1053 | 998 | else { | |
1054 | - | let | |
1055 | - | then | |
1056 | - | else $Tuple2( | |
1057 | - | if (( | |
1058 | - | then if ( | |
999 | + | let fY = if ((fW != "")) | |
1000 | + | then fC(fW, fT, fE, fF, fG, 0, fU) | |
1001 | + | else $Tuple2(fT, false) | |
1002 | + | if ((fX != "")) | |
1003 | + | then if (fY._2) | |
1059 | 1004 | then throw("Big item already occupies slot") | |
1060 | - | else | |
1061 | - | else | |
1005 | + | else fC(fX, fY._1, fE, fF, fG, 1, fU)._1 | |
1006 | + | else fY._1 | |
1062 | 1007 | } | |
1063 | 1008 | } | |
1064 | 1009 | } | |
1065 | - | else | |
1066 | - | ||
1067 | - | ||
1068 | - | func | |
1069 | - | func | |
1070 | - | let | |
1071 | - | let | |
1072 | - | if ((size( | |
1010 | + | else fT | |
1011 | + | ||
1012 | + | ||
1013 | + | func fZ (ga,gb,fE,fU) = { | |
1014 | + | func fF (eI,gc) = { | |
1015 | + | let fs = eI._1 | |
1016 | + | let fG = split(gc, ";") | |
1017 | + | if ((size(fG) != q)) | |
1073 | 1018 | then throw("Wrong segment format") | |
1074 | 1019 | else { | |
1075 | - | let | |
1076 | - | let | |
1077 | - | if (if (( | |
1078 | - | then ( | |
1020 | + | let gd = fG[0] | |
1021 | + | let ge = fG[1] | |
1022 | + | if (if ((gd == "")) | |
1023 | + | then (ge == "") | |
1079 | 1024 | else false) | |
1080 | - | then $Tuple2(( | |
1025 | + | then $Tuple2((fs + 1), eI._2) | |
1081 | 1026 | else { | |
1082 | - | let | |
1083 | - | $Tuple2(( | |
1027 | + | let gf = fR(gd, eI._2, fE, fs, 0, fU) | |
1028 | + | $Tuple2((fs + 1), fR(ge, gf, fE, fs, 1, fU)) | |
1084 | 1029 | } | |
1085 | 1030 | } | |
1086 | 1031 | } | |
1087 | 1032 | ||
1088 | - | ( let | |
1089 | - | let | |
1090 | - | let | |
1091 | - | func | |
1092 | - | then | |
1093 | - | else | |
1094 | - | ||
1095 | - | func | |
1096 | - | then | |
1033 | + | ( let eK = ga | |
1034 | + | let eL = size(eK) | |
1035 | + | let eM = $Tuple2(0, gb) | |
1036 | + | func eN (eO,eP) = if ((eP >= eL)) | |
1037 | + | then eO | |
1038 | + | else fF(eO, eK[eP]) | |
1039 | + | ||
1040 | + | func eQ (eO,eP) = if ((eP >= eL)) | |
1041 | + | then eO | |
1097 | 1042 | else throw("List size exceeds 6") | |
1098 | 1043 | ||
1099 | - | eZ(eW(eW(eW(eW(eW(eW(eV, 0), 1), 2), 3), 4), 5), 6))._2 | |
1100 | - | } | |
1101 | - | ||
1102 | - | ||
1103 | - | func gt (gn,go,fO,fP,fN,fH) = if ((3 > size(gn))) | |
1104 | - | then throw("At least duck, mines and traps parts are required") | |
1105 | - | else { | |
1106 | - | func fV (eR,gp) = { | |
1107 | - | let fB = eR._1 | |
1108 | - | if ((fB == 0)) | |
1109 | - | then $Tuple4((fB + 1), eR._2, eR._3, eR._4) | |
1110 | - | else { | |
1111 | - | let gu = fL(gp, eR._2, fN, fH, eR._3, eR._4) | |
1112 | - | $Tuple4((fB + 1), gu._1, gu._2, gu._3) | |
1113 | - | } | |
1114 | - | } | |
1115 | - | ||
1116 | - | let gv = { | |
1117 | - | let eT = gn | |
1118 | - | let eU = size(eT) | |
1119 | - | let eV = $Tuple4(0, go, fO, fP) | |
1120 | - | func eW (eX,eY) = if ((eY >= eU)) | |
1121 | - | then eX | |
1122 | - | else fV(eX, eT[eY]) | |
1123 | - | ||
1124 | - | func eZ (eX,eY) = if ((eY >= eU)) | |
1125 | - | then eX | |
1126 | - | else throw("List size exceeds 10") | |
1127 | - | ||
1128 | - | eZ(eW(eW(eW(eW(eW(eW(eW(eW(eW(eW(eV, 0), 1), 2), 3), 4), 5), 6), 7), 8), 9), 10) | |
1129 | - | } | |
1130 | - | $Tuple3(gv._2, gv._3, gv._4) | |
1131 | - | } | |
1132 | - | ||
1133 | - | ||
1134 | - | func gw (B) = { | |
1135 | - | let gx = G(B) | |
1136 | - | let gy = split(valueOrElse(getString(gx), ",;,_,;,_,;,_,;,_,;,_,;,"), "_") | |
1137 | - | let gz = gm(gy, dY, true, nil) | |
1138 | - | let gA = split(gy[q], ";")[1] | |
1139 | - | let ar = if ((gA == "")) | |
1044 | + | eQ(eN(eN(eN(eN(eN(eN(eM, 0), 1), 2), 3), 4), 5), 6))._2 | |
1045 | + | } | |
1046 | + | ||
1047 | + | ||
1048 | + | func gg (u) = { | |
1049 | + | let gh = z(u) | |
1050 | + | let gi = split(valueOrElse(getString(gh), ",;,_,;,_,;,_,;,_,;,_,;,"), "_") | |
1051 | + | let gj = base64'AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA==' | |
1052 | + | let gk = fZ(gi, gj, true, nil) | |
1053 | + | let gl = split(gi[o], ";")[1] | |
1054 | + | let aj = if ((gl == "")) | |
1140 | 1055 | then 0 | |
1141 | 1056 | else { | |
1142 | - | let | |
1143 | - | if (( | |
1057 | + | let gm = split(gl, ",")[0] | |
1058 | + | if ((gm == "")) | |
1144 | 1059 | then 0 | |
1145 | 1060 | else { | |
1146 | - | let | |
1147 | - | let | |
1148 | - | let | |
1149 | - | if (if (if (if (if (( | |
1061 | + | let fD = split(gm, ":") | |
1062 | + | let cP = fD[0] | |
1063 | + | let gn = fD[1] | |
1064 | + | if (if (if (if (if ((cP == "06")) | |
1150 | 1065 | then true | |
1151 | - | else ( | |
1066 | + | else (cP == "07")) | |
1152 | 1067 | then true | |
1153 | - | else ( | |
1154 | - | then ( | |
1068 | + | else (cP == "08")) | |
1069 | + | then (gn != "") | |
1155 | 1070 | else false) | |
1156 | - | then (parseIntValue( | |
1071 | + | then (parseIntValue(gn) > 0) | |
1157 | 1072 | else false) | |
1158 | - | then parseIntValue(split( | |
1073 | + | then parseIntValue(split(aJ[parseIntValue(cP)], "_")[aL]) | |
1159 | 1074 | else 0 | |
1160 | 1075 | } | |
1161 | 1076 | } | |
1162 | - | let | |
1163 | - | let | |
1164 | - | ( | |
1165 | - | } | |
1166 | - | ||
1167 | - | ||
1168 | - | func | |
1077 | + | let fU = ah(this, u, aj, true) | |
1078 | + | let go = fZ(gi, gk, false, fU) | |
1079 | + | (go == go) | |
1080 | + | } | |
1081 | + | ||
1082 | + | ||
1083 | + | func gp (gq,gr,gs,gt) = if ((size(gq) != at)) | |
1169 | 1084 | then throw("Wrong proportions data") | |
1170 | 1085 | else { | |
1171 | - | func | |
1172 | - | let | |
1173 | - | if ((0 > | |
1174 | - | then throw(((((((("Panic! Pieces of type=" + toString( | |
1175 | - | else ( | |
1176 | - | } | |
1177 | - | ||
1178 | - | let | |
1179 | - | let | |
1180 | - | let | |
1181 | - | func | |
1182 | - | then | |
1183 | - | else | |
1184 | - | ||
1185 | - | func | |
1186 | - | then | |
1086 | + | func gu (eI,gv) = { | |
1087 | + | let fa = (parseIntValue(gq[gv]) + ((gt * gr[gv]) * gs)) | |
1088 | + | if ((0 > fa)) | |
1089 | + | then throw(((((((("Panic! Pieces of type=" + toString(gv)) + ", sign=") + toString(gt)) + ", terrainCounts[i]=") + toString(gr[gv])) + ", landSizeIndex=") + toString(gs))) | |
1090 | + | else (eI :+ toString(fa)) | |
1091 | + | } | |
1092 | + | ||
1093 | + | let eK = cz | |
1094 | + | let eL = size(eK) | |
1095 | + | let eM = nil | |
1096 | + | func eN (eO,eP) = if ((eP >= eL)) | |
1097 | + | then eO | |
1098 | + | else gu(eO, eK[eP]) | |
1099 | + | ||
1100 | + | func eQ (eO,eP) = if ((eP >= eL)) | |
1101 | + | then eO | |
1187 | 1102 | else throw("List size exceeds 6") | |
1188 | 1103 | ||
1189 | - | | |
1104 | + | eQ(eN(eN(eN(eN(eN(eN(eM, 0), 1), 2), 3), 4), 5), 6) | |
1190 | 1105 | } | |
1191 | 1106 | ||
1192 | 1107 | ||
1193 | - | func | |
1194 | - | let | |
1195 | - | makeString( | |
1196 | - | } | |
1197 | - | ||
1198 | - | ||
1199 | - | func | |
1200 | - | ||
1201 | - | ||
1202 | - | func | |
1203 | - | func | |
1204 | - | let | |
1205 | - | ( | |
1108 | + | func gw (gr,gs,gt) = { | |
1109 | + | let gq = split(valueOrElse(getString(dg()), "0_0_0_0_0_0"), "_") | |
1110 | + | makeString(gp(gq, gr, gs, gt), "_") | |
1111 | + | } | |
1112 | + | ||
1113 | + | ||
1114 | + | func gx (gy) = [(size(split(gy, "A")) - 1), (size(split(gy, "B")) - 1), (size(split(gy, "C")) - 1), (size(split(gy, "D")) - 1), (size(split(gy, "E")) - 1), (size(split(gy, "F")) - 1)] | |
1115 | + | ||
1116 | + | ||
1117 | + | func gz (gA,gr,gB,gs,gC) = { | |
1118 | + | func gD (eI,gv) = { | |
1119 | + | let gE = ((fraction(gB, gC, a) * gr[gv]) * gs) | |
1120 | + | (eI :+ toString((parseIntValue(gA[gv]) + gE))) | |
1206 | 1121 | } | |
1207 | 1122 | ||
1208 | - | let | |
1209 | - | let | |
1210 | - | let | |
1211 | - | let | |
1212 | - | func | |
1213 | - | then | |
1214 | - | else | |
1215 | - | ||
1216 | - | func | |
1217 | - | then | |
1123 | + | let eT = { | |
1124 | + | let eK = cz | |
1125 | + | let eL = size(eK) | |
1126 | + | let eM = nil | |
1127 | + | func eN (eO,eP) = if ((eP >= eL)) | |
1128 | + | then eO | |
1129 | + | else gD(eO, eK[eP]) | |
1130 | + | ||
1131 | + | func eQ (eO,eP) = if ((eP >= eL)) | |
1132 | + | then eO | |
1218 | 1133 | else throw("List size exceeds 6") | |
1219 | 1134 | ||
1220 | - | | |
1135 | + | eQ(eN(eN(eN(eN(eN(eN(eM, 0), 1), 2), 3), 4), 5), 6) | |
1221 | 1136 | } | |
1222 | - | makeString( | |
1223 | - | } | |
1224 | - | ||
1225 | - | ||
1226 | - | func | |
1227 | - | func | |
1228 | - | let | |
1229 | - | $Tuple2(( | |
1137 | + | makeString(eT, "_") | |
1138 | + | } | |
1139 | + | ||
1140 | + | ||
1141 | + | func gF (gr,gB,gs,gC) = { | |
1142 | + | func gD (eI,gv) = { | |
1143 | + | let gE = ((fraction(gB, gC, a) * gr[gv]) * gs) | |
1144 | + | $Tuple2((eI._1 :+ gE), (eI._2 + gE)) | |
1230 | 1145 | } | |
1231 | 1146 | ||
1232 | - | let | |
1233 | - | let | |
1234 | - | let | |
1235 | - | func | |
1236 | - | then | |
1237 | - | else | |
1238 | - | ||
1239 | - | func | |
1240 | - | then | |
1147 | + | let eK = cz | |
1148 | + | let eL = size(eK) | |
1149 | + | let eM = $Tuple2(nil, 0) | |
1150 | + | func eN (eO,eP) = if ((eP >= eL)) | |
1151 | + | then eO | |
1152 | + | else gD(eO, eK[eP]) | |
1153 | + | ||
1154 | + | func eQ (eO,eP) = if ((eP >= eL)) | |
1155 | + | then eO | |
1241 | 1156 | else throw("List size exceeds 6") | |
1242 | 1157 | ||
1243 | - | | |
1244 | - | } | |
1245 | - | ||
1246 | - | ||
1247 | - | func | |
1248 | - | let | |
1249 | - | let | |
1250 | - | if (( | |
1251 | - | then $Tuple2(makeString( | |
1252 | - | else if (( | |
1158 | + | eQ(eN(eN(eN(eN(eN(eN(eM, 0), 1), 2), 3), 4), 5), 6) | |
1159 | + | } | |
1160 | + | ||
1161 | + | ||
1162 | + | func gG (gH,gI,gJ,gK) = { | |
1163 | + | let gL = gJ._1 | |
1164 | + | let gM = gJ._2 | |
1165 | + | if ((gM == 0)) | |
1166 | + | then $Tuple2(makeString(gH, "_"), makeString(gI, "_")) | |
1167 | + | else if ((gK >= gM)) | |
1253 | 1168 | then { | |
1254 | - | func | |
1255 | - | ||
1256 | - | let | |
1257 | - | let | |
1258 | - | let | |
1259 | - | let | |
1260 | - | func | |
1261 | - | then | |
1262 | - | else | |
1263 | - | ||
1264 | - | func | |
1265 | - | then | |
1169 | + | func gN (eI,gv) = (eI :+ toString((parseIntValue(gH[gv]) + gL[gv]))) | |
1170 | + | ||
1171 | + | let eT = { | |
1172 | + | let eK = cz | |
1173 | + | let eL = size(eK) | |
1174 | + | let eM = nil | |
1175 | + | func eN (eO,eP) = if ((eP >= eL)) | |
1176 | + | then eO | |
1177 | + | else gN(eO, eK[eP]) | |
1178 | + | ||
1179 | + | func eQ (eO,eP) = if ((eP >= eL)) | |
1180 | + | then eO | |
1266 | 1181 | else throw("List size exceeds 6") | |
1267 | 1182 | ||
1268 | - | | |
1183 | + | eQ(eN(eN(eN(eN(eN(eN(eM, 0), 1), 2), 3), 4), 5), 6) | |
1269 | 1184 | } | |
1270 | - | $Tuple2(makeString( | |
1185 | + | $Tuple2(makeString(eT, "_"), makeString(gI, "_")) | |
1271 | 1186 | } | |
1272 | 1187 | else { | |
1273 | - | func | |
1274 | - | let | |
1275 | - | $Tuple2(( | |
1188 | + | func gO (eI,gv) = { | |
1189 | + | let gP = fraction(gL[gv], gK, gM) | |
1190 | + | $Tuple2((eI._1 :+ toString((parseIntValue(gH[gv]) + gP))), (eI._2 :+ toString(((parseIntValue(gI[gv]) + gL[gv]) - gP)))) | |
1276 | 1191 | } | |
1277 | 1192 | ||
1278 | - | let | |
1279 | - | let | |
1280 | - | let | |
1281 | - | let | |
1282 | - | func | |
1283 | - | then | |
1284 | - | else | |
1285 | - | ||
1286 | - | func | |
1287 | - | then | |
1193 | + | let eT = { | |
1194 | + | let eK = cz | |
1195 | + | let eL = size(eK) | |
1196 | + | let eM = $Tuple2(nil, nil) | |
1197 | + | func eN (eO,eP) = if ((eP >= eL)) | |
1198 | + | then eO | |
1199 | + | else gO(eO, eK[eP]) | |
1200 | + | ||
1201 | + | func eQ (eO,eP) = if ((eP >= eL)) | |
1202 | + | then eO | |
1288 | 1203 | else throw("List size exceeds 6") | |
1289 | 1204 | ||
1290 | - | | |
1205 | + | eQ(eN(eN(eN(eN(eN(eN(eM, 0), 1), 2), 3), 4), 5), 6) | |
1291 | 1206 | } | |
1292 | - | $Tuple2(makeString( | |
1207 | + | $Tuple2(makeString(eT._1, "_"), makeString(eT._2, "_")) | |
1293 | 1208 | } | |
1294 | 1209 | } | |
1295 | 1210 | ||
1296 | 1211 | ||
1297 | - | func | |
1298 | - | then | |
1299 | - | else -( | |
1300 | - | ||
1301 | - | ||
1302 | - | let | |
1303 | - | ||
1304 | - | func | |
1305 | - | let | |
1306 | - | let | |
1212 | + | func gQ (gR) = if ((gR >= toBigInt(0))) | |
1213 | + | then gR | |
1214 | + | else -(gR) | |
1215 | + | ||
1216 | + | ||
1217 | + | let gS = [[6, 9, 14, 15, 16], [5, 8, 13, 14, 15], [1, 4, 9, 10, 15], [1, 6, 7, 15, 19], [4, 7, 8, 13, 18]] | |
1218 | + | ||
1219 | + | func gT (dp,gU) = { | |
1220 | + | let gV = toInt((dp % dU)) | |
1221 | + | let gW = if ((gU[0] > gV)) | |
1307 | 1222 | then "A" | |
1308 | - | else if (( | |
1223 | + | else if ((gU[1] > gV)) | |
1309 | 1224 | then "B" | |
1310 | - | else if (( | |
1225 | + | else if ((gU[2] > gV)) | |
1311 | 1226 | then "C" | |
1312 | - | else if (( | |
1227 | + | else if ((gU[3] > gV)) | |
1313 | 1228 | then "D" | |
1314 | - | else if (( | |
1229 | + | else if ((gU[4] > gV)) | |
1315 | 1230 | then "E" | |
1316 | 1231 | else "F" | |
1317 | - | | |
1318 | - | } | |
1319 | - | ||
1320 | - | ||
1321 | - | func | |
1322 | - | let | |
1323 | - | func | |
1324 | - | ||
1325 | - | let | |
1326 | - | let | |
1327 | - | let | |
1328 | - | let | |
1329 | - | func | |
1330 | - | then | |
1331 | - | else | |
1332 | - | ||
1333 | - | func | |
1334 | - | then | |
1232 | + | gW | |
1233 | + | } | |
1234 | + | ||
1235 | + | ||
1236 | + | func gX (gY,gZ) = { | |
1237 | + | let ha = gS[gZ] | |
1238 | + | func hb (eI,eJ) = $Tuple2((((((eI._1 + gT(eI._2, ha)) + gT((eI._2 / dU), ha)) + gT((eI._2 / dV), ha)) + gT((eI._2 / dW), ha)) + gT((eI._2 / dX), ha)), (eI._2 / dY)) | |
1239 | + | ||
1240 | + | let hc = { | |
1241 | + | let eK = [1, 2, 3, 4, 5] | |
1242 | + | let eL = size(eK) | |
1243 | + | let eM = $Tuple2("", (gY / dT)) | |
1244 | + | func eN (eO,eP) = if ((eP >= eL)) | |
1245 | + | then eO | |
1246 | + | else hb(eO, eK[eP]) | |
1247 | + | ||
1248 | + | func eQ (eO,eP) = if ((eP >= eL)) | |
1249 | + | then eO | |
1335 | 1250 | else throw("List size exceeds 5") | |
1336 | 1251 | ||
1337 | - | | |
1252 | + | eQ(eN(eN(eN(eN(eN(eM, 0), 1), 2), 3), 4), 5) | |
1338 | 1253 | } | |
1339 | - | | |
1340 | - | } | |
1341 | - | ||
1342 | - | ||
1343 | - | let | |
1344 | - | ||
1345 | - | let | |
1346 | - | ||
1347 | - | func | |
1348 | - | func | |
1349 | - | let | |
1350 | - | let | |
1351 | - | let | |
1254 | + | hc._1 | |
1255 | + | } | |
1256 | + | ||
1257 | + | ||
1258 | + | let hd = [7, 2, 15, 19, 8, 24, 1, 21, 16, 5, 0, 22, 20, 23, 11, 4, 18, 12, 6, 10, 3, 17, 13, 9, 14] | |
1259 | + | ||
1260 | + | let he = ["A", "B", "C", "D", "E", "F"] | |
1261 | + | ||
1262 | + | func hf (hg,gs) = { | |
1263 | + | func hh (eI,dn) = { | |
1264 | + | let fs = eI._2 | |
1265 | + | let hi = parseIntValue(dn) | |
1266 | + | let gR = if ((hi == 0)) | |
1352 | 1267 | then 0 | |
1353 | - | else if (( | |
1354 | - | then ( | |
1355 | - | else if (( | |
1268 | + | else if ((hi >= (4 * gs))) | |
1269 | + | then (hi / gs) | |
1270 | + | else if ((hi > (3 * gs))) | |
1356 | 1271 | then 3 | |
1357 | - | else ((( | |
1358 | - | $Tuple3(( | |
1272 | + | else (((hi - 1) / gs) + 1) | |
1273 | + | $Tuple3((eI._1 :+ gR), (eI._2 + 1), (eI._3 + gR)) | |
1359 | 1274 | } | |
1360 | 1275 | ||
1361 | - | let | |
1362 | - | let | |
1363 | - | let | |
1364 | - | let | |
1365 | - | func | |
1366 | - | then | |
1367 | - | else | |
1368 | - | ||
1369 | - | func | |
1370 | - | then | |
1276 | + | let hc = { | |
1277 | + | let eK = hg | |
1278 | + | let eL = size(eK) | |
1279 | + | let eM = $Tuple3(nil, 0, 0) | |
1280 | + | func eN (eO,eP) = if ((eP >= eL)) | |
1281 | + | then eO | |
1282 | + | else hh(eO, eK[eP]) | |
1283 | + | ||
1284 | + | func eQ (eO,eP) = if ((eP >= eL)) | |
1285 | + | then eO | |
1371 | 1286 | else throw("List size exceeds 6") | |
1372 | 1287 | ||
1373 | - | | |
1288 | + | eQ(eN(eN(eN(eN(eN(eN(eM, 0), 1), 2), 3), 4), 5), 6) | |
1374 | 1289 | } | |
1375 | - | let | |
1376 | - | let | |
1377 | - | let | |
1378 | - | func | |
1379 | - | let | |
1380 | - | then ( | |
1381 | - | else | |
1382 | - | let | |
1290 | + | let hj = hc._1 | |
1291 | + | let hk = value(indexOf(hj, max(hj))) | |
1292 | + | let hl = (hc._3 - 25) | |
1293 | + | func hm (eI,cP) = { | |
1294 | + | let dz = if ((cP == hk)) | |
1295 | + | then (hj[cP] - hl) | |
1296 | + | else hj[cP] | |
1297 | + | let dD = if ((dz == 0)) | |
1383 | 1298 | then nil | |
1384 | - | else split(drop(toString(pow(10, 0, | |
1385 | - | let | |
1386 | - | func | |
1387 | - | ||
1388 | - | let | |
1389 | - | let | |
1390 | - | let | |
1391 | - | let | |
1392 | - | func | |
1393 | - | then | |
1394 | - | else | |
1395 | - | ||
1396 | - | func | |
1397 | - | then | |
1299 | + | else split(drop(toString(pow(10, 0, dz, 0, 0, DOWN)), 1), "") | |
1300 | + | let fN = he[cP] | |
1301 | + | func hn (ho,hp) = (ho :+ fN) | |
1302 | + | ||
1303 | + | let hq = { | |
1304 | + | let eK = dD | |
1305 | + | let eL = size(eK) | |
1306 | + | let eM = nil | |
1307 | + | func hr (eO,eP) = if ((eP >= eL)) | |
1308 | + | then eO | |
1309 | + | else hn(eO, eK[eP]) | |
1310 | + | ||
1311 | + | func hs (eO,eP) = if ((eP >= eL)) | |
1312 | + | then eO | |
1398 | 1313 | else throw("List size exceeds 25") | |
1399 | 1314 | ||
1400 | - | | |
1401 | - | } | |
1402 | - | ( | |
1315 | + | hs(hr(hr(hr(hr(hr(hr(hr(hr(hr(hr(hr(hr(hr(hr(hr(hr(hr(hr(hr(hr(hr(hr(hr(hr(hr(eM, 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) | |
1316 | + | } | |
1317 | + | (eI ++ hq) | |
1403 | 1318 | } | |
1404 | 1319 | ||
1405 | - | let | |
1406 | - | let | |
1407 | - | let | |
1408 | - | let | |
1409 | - | func | |
1410 | - | then | |
1411 | - | else | |
1412 | - | ||
1413 | - | func | |
1414 | - | then | |
1320 | + | let eT = { | |
1321 | + | let eK = cz | |
1322 | + | let eL = size(eK) | |
1323 | + | let eM = nil | |
1324 | + | func hr (eO,eP) = if ((eP >= eL)) | |
1325 | + | then eO | |
1326 | + | else hm(eO, eK[eP]) | |
1327 | + | ||
1328 | + | func hs (eO,eP) = if ((eP >= eL)) | |
1329 | + | then eO | |
1415 | 1330 | else throw("List size exceeds 6") | |
1416 | 1331 | ||
1417 | - | | |
1332 | + | hs(hr(hr(hr(hr(hr(hr(eM, 0), 1), 2), 3), 4), 5), 6) | |
1418 | 1333 | } | |
1419 | - | func | |
1420 | - | ||
1421 | - | let | |
1422 | - | let | |
1423 | - | let | |
1424 | - | func | |
1425 | - | then | |
1426 | - | else | |
1427 | - | ||
1428 | - | func | |
1429 | - | then | |
1334 | + | func ht (eI,fs) = (eI + eT[fs]) | |
1335 | + | ||
1336 | + | let eK = hd | |
1337 | + | let eL = size(eK) | |
1338 | + | let eM = "" | |
1339 | + | func hu (eO,eP) = if ((eP >= eL)) | |
1340 | + | then eO | |
1341 | + | else ht(eO, eK[eP]) | |
1342 | + | ||
1343 | + | func hv (eO,eP) = if ((eP >= eL)) | |
1344 | + | then eO | |
1430 | 1345 | else throw("List size exceeds 25") | |
1431 | 1346 | ||
1432 | - | | |
1433 | - | } | |
1434 | - | ||
1435 | - | ||
1436 | - | func | |
1437 | - | let | |
1438 | - | [toString(valueOrElse(parseInt( | |
1439 | - | then | |
1440 | - | else "0_0_0_0_0_0", if ((size(split( | |
1441 | - | then | |
1442 | - | else "0_0_0_0_0_0", | |
1443 | - | } | |
1444 | - | ||
1445 | - | ||
1446 | - | func | |
1447 | - | let | |
1448 | - | (( | |
1449 | - | } | |
1450 | - | ||
1451 | - | ||
1452 | - | func | |
1453 | - | let | |
1454 | - | func | |
1455 | - | ||
1456 | - | func | |
1457 | - | let | |
1458 | - | let | |
1459 | - | $Tuple2(( | |
1347 | + | hv(hu(hu(hu(hu(hu(hu(hu(hu(hu(hu(hu(hu(hu(hu(hu(hu(hu(hu(hu(hu(hu(hu(hu(hu(hu(eM, 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) | |
1348 | + | } | |
1349 | + | ||
1350 | + | ||
1351 | + | func hw (hx) = { | |
1352 | + | let hy = split(valueOrElse(getString(hx), "0:0_0_0_0_0_0:0_0_0_0_0_0:"), ":") | |
1353 | + | [toString(valueOrElse(parseInt(hy[aY]), 0)), if ((size(split(hy[aZ], "_")) == at)) | |
1354 | + | then hy[aZ] | |
1355 | + | else "0_0_0_0_0_0", if ((size(split(hy[ba], "_")) == at)) | |
1356 | + | then hy[ba] | |
1357 | + | else "0_0_0_0_0_0", hy[bb]] | |
1358 | + | } | |
1359 | + | ||
1360 | + | ||
1361 | + | func hz (hA) = { | |
1362 | + | let fg = split(hA, "_") | |
1363 | + | ((aw * (parseIntValue(fg[1]) + 1)) * parseIntValue(fg[0])) | |
1364 | + | } | |
1365 | + | ||
1366 | + | ||
1367 | + | func hB (hC) = { | |
1368 | + | let hD = hC[aS] | |
1369 | + | func hE (eI,hF) = (eI + parseIntValue(hF)) | |
1370 | + | ||
1371 | + | func hG (eI,hF) = { | |
1372 | + | let cP = eI._1 | |
1373 | + | let eB = (((parseIntValue(hF) + aO) - 1) / aO) | |
1374 | + | $Tuple2((cP + 1), (eI._2 + (eB * ct))) | |
1460 | 1375 | } | |
1461 | 1376 | ||
1462 | - | let | |
1463 | - | let | |
1464 | - | let | |
1465 | - | let | |
1466 | - | func | |
1467 | - | then | |
1468 | - | else | |
1469 | - | ||
1470 | - | func | |
1471 | - | then | |
1377 | + | let hH = { | |
1378 | + | let eK = split(hC[aQ], "_") | |
1379 | + | let eL = size(eK) | |
1380 | + | let eM = 0 | |
1381 | + | func eN (eO,eP) = if ((eP >= eL)) | |
1382 | + | then eO | |
1383 | + | else hE(eO, eK[eP]) | |
1384 | + | ||
1385 | + | func eQ (eO,eP) = if ((eP >= eL)) | |
1386 | + | then eO | |
1472 | 1387 | else throw("List size exceeds 6") | |
1473 | 1388 | ||
1474 | - | | |
1389 | + | eQ(eN(eN(eN(eN(eN(eN(eM, 0), 1), 2), 3), 4), 5), 6) | |
1475 | 1390 | } | |
1476 | - | let | |
1477 | - | let | |
1478 | - | let | |
1479 | - | let | |
1480 | - | func | |
1481 | - | then | |
1482 | - | else | |
1483 | - | ||
1484 | - | func | |
1485 | - | then | |
1391 | + | let hI = { | |
1392 | + | let eK = split(hC[aR], "_") | |
1393 | + | let eL = size(eK) | |
1394 | + | let eM = 0 | |
1395 | + | func hr (eO,eP) = if ((eP >= eL)) | |
1396 | + | then eO | |
1397 | + | else hE(eO, eK[eP]) | |
1398 | + | ||
1399 | + | func hs (eO,eP) = if ((eP >= eL)) | |
1400 | + | then eO | |
1486 | 1401 | else throw("List size exceeds 6") | |
1487 | 1402 | ||
1488 | - | | |
1403 | + | hs(hr(hr(hr(hr(hr(hr(eM, 0), 1), 2), 3), 4), 5), 6) | |
1489 | 1404 | } | |
1490 | - | let | |
1405 | + | let hJ = if ((hD == "")) | |
1491 | 1406 | then 0 | |
1492 | - | else ( let | |
1493 | - | let | |
1494 | - | let | |
1495 | - | func | |
1496 | - | then | |
1497 | - | else | |
1498 | - | ||
1499 | - | func | |
1500 | - | then | |
1407 | + | else ( let eK = split_4C(hD, "_") | |
1408 | + | let eL = size(eK) | |
1409 | + | let eM = $Tuple2(0, 0) | |
1410 | + | func hu (eO,eP) = if ((eP >= eL)) | |
1411 | + | then eO | |
1412 | + | else hG(eO, eK[eP]) | |
1413 | + | ||
1414 | + | func hv (eO,eP) = if ((eP >= eL)) | |
1415 | + | then eO | |
1501 | 1416 | else throw("List size exceeds 50") | |
1502 | 1417 | ||
1503 | - | | |
1504 | - | (( | |
1505 | - | } | |
1506 | - | ||
1507 | - | ||
1508 | - | func | |
1509 | - | let | |
1510 | - | let | |
1511 | - | let | |
1512 | - | let | |
1513 | - | let | |
1514 | - | let | |
1515 | - | then makeString(["0", toString( | |
1418 | + | hv(hu(hu(hu(hu(hu(hu(hu(hu(hu(hu(hu(hu(hu(hu(hu(hu(hu(hu(hu(hu(hu(hu(hu(hu(hu(hu(hu(hu(hu(hu(hu(hu(hu(hu(hu(hu(hu(hu(hu(hu(hu(hu(hu(hu(hu(hu(hu(hu(hu(hu(eM, 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))._2 | |
1419 | + | ((hH + hI) + hJ) | |
1420 | + | } | |
1421 | + | ||
1422 | + | ||
1423 | + | func hK (hL,hM,hN) = { | |
1424 | + | let hA = ((toString(hM) + "_") + toString(hN)) | |
1425 | + | let hO = hz(hA) | |
1426 | + | let hP = valueOrElse(getString(hL), (hA + ":0_0_0_0_0_0:0_0_0_0_0_0::0")) | |
1427 | + | let hQ = split_4C(hP, ":") | |
1428 | + | let hR = hB(hQ) | |
1429 | + | let hS = if ((5 > size(hQ))) | |
1430 | + | then makeString(["0", toString(hR), toString((hO - hR)), toString(hO)], "_") | |
1516 | 1431 | else { | |
1517 | - | let | |
1518 | - | let | |
1519 | - | let | |
1520 | - | then parseIntValue( | |
1521 | - | else | |
1522 | - | makeString([toString( | |
1523 | - | } | |
1524 | - | [ | |
1525 | - | then | |
1526 | - | else "0_0_0_0_0_0", if ((size(split( | |
1527 | - | then | |
1528 | - | else "0_0_0_0_0_0", | |
1529 | - | } | |
1530 | - | ||
1531 | - | ||
1532 | - | func | |
1533 | - | let | |
1534 | - | let | |
1535 | - | (( | |
1536 | - | } | |
1537 | - | ||
1538 | - | ||
1539 | - | func | |
1432 | + | let hT = split(hQ[aT], "_") | |
1433 | + | let hU = parseIntValue(hT[aU]) | |
1434 | + | let hV = if ((size(hT) > 1)) | |
1435 | + | then parseIntValue(hT[aV]) | |
1436 | + | else hR | |
1437 | + | makeString([toString(hU), toString(hV), toString(((hO - hU) - hV)), toString(hO)], "_") | |
1438 | + | } | |
1439 | + | [hQ[aP], if ((size(split(hQ[aQ], "_")) == at)) | |
1440 | + | then hQ[aQ] | |
1441 | + | else "0_0_0_0_0_0", if ((size(split(hQ[aR], "_")) == at)) | |
1442 | + | then hQ[aR] | |
1443 | + | else "0_0_0_0_0_0", hQ[aS], hS] | |
1444 | + | } | |
1445 | + | ||
1446 | + | ||
1447 | + | func hW (hC) = { | |
1448 | + | let hX = hB(hC) | |
1449 | + | let hY = parseIntValue(split(hC[aT], "_")[aU]) | |
1450 | + | ((hz(hC[aP]) - hX) - hY) | |
1451 | + | } | |
1452 | + | ||
1453 | + | ||
1454 | + | func hZ (ia,hC,ib) = if ((size(ia) != 3)) | |
1540 | 1455 | then throw("cargoListStr should contain exactly 2 ':' separators") | |
1541 | 1456 | else { | |
1542 | - | let | |
1543 | - | let | |
1544 | - | let | |
1457 | + | let ic = split(ia[0], "_") | |
1458 | + | let id = split(ia[1], "_") | |
1459 | + | let ie = if ((ia[2] == "")) | |
1545 | 1460 | then nil | |
1546 | - | else split_4C( | |
1547 | - | if ((size( | |
1461 | + | else split_4C(ia[2], "_") | |
1462 | + | if ((size(ic) != at)) | |
1548 | 1463 | then throw("All 6 resources should be passed") | |
1549 | - | else if ((size( | |
1464 | + | else if ((size(id) != at)) | |
1550 | 1465 | then throw("All 6 materials should be passed") | |
1551 | 1466 | else { | |
1552 | - | let | |
1553 | - | let | |
1554 | - | let | |
1555 | - | let | |
1467 | + | let gK = hW(hC) | |
1468 | + | let if = split(hC[aQ], "_") | |
1469 | + | let ig = split(hC[aR], "_") | |
1470 | + | let ih = if ((hC[aS] == "")) | |
1556 | 1471 | then nil | |
1557 | - | else split_4C( | |
1558 | - | let | |
1559 | - | let | |
1560 | - | let | |
1472 | + | else split_4C(hC[aS], "_") | |
1473 | + | let gI = split(ib[aZ], "_") | |
1474 | + | let ii = split(ib[ba], "_") | |
1475 | + | let ij = if ((ib[bb] == "")) | |
1561 | 1476 | then nil | |
1562 | - | else split_4C( | |
1563 | - | func | |
1564 | - | let | |
1565 | - | let | |
1566 | - | let | |
1567 | - | let | |
1568 | - | if (( | |
1569 | - | then $Tuple4(( | |
1570 | - | else if (( | |
1571 | - | then if (( | |
1572 | - | then throw((((("Attempt to take " + | |
1573 | - | else $Tuple4(( | |
1574 | - | else if ((-( | |
1575 | - | then throw((((("Attempt to take " + toString(-( | |
1576 | - | else $Tuple4(( | |
1477 | + | else split_4C(ib[bb], "_") | |
1478 | + | func ik (eI,hF) = { | |
1479 | + | let gv = eI._1 | |
1480 | + | let il = parseIntValue(hF) | |
1481 | + | let im = parseIntValue(if[gv]) | |
1482 | + | let in = parseIntValue(gI[gv]) | |
1483 | + | if ((il == 0)) | |
1484 | + | then $Tuple4((gv + 1), (eI._2 :+ if[gv]), (eI._3 :+ gI[gv]), eI._4) | |
1485 | + | else if ((il > 0)) | |
1486 | + | then if ((il > in)) | |
1487 | + | then throw((((("Attempt to take " + hF) + " from backpack, but only ") + toString(in)) + " available")) | |
1488 | + | else $Tuple4((gv + 1), (eI._2 :+ toString((im + il))), (eI._3 :+ toString((in - il))), (eI._4 + il)) | |
1489 | + | else if ((-(il) > im)) | |
1490 | + | then throw((((("Attempt to take " + toString(-(il))) + " from warehouse, but only ") + toString(im)) + " available")) | |
1491 | + | else $Tuple4((gv + 1), (eI._2 :+ toString((im + il))), (eI._3 :+ toString((in - il))), (eI._4 + il)) | |
1577 | 1492 | } | |
1578 | 1493 | ||
1579 | - | let | |
1580 | - | let | |
1581 | - | let | |
1582 | - | let | |
1583 | - | func | |
1584 | - | then | |
1585 | - | else | |
1586 | - | ||
1587 | - | func | |
1588 | - | then | |
1494 | + | let eT = { | |
1495 | + | let eK = ic | |
1496 | + | let eL = size(eK) | |
1497 | + | let eM = $Tuple4(0, nil, nil, 0) | |
1498 | + | func eN (eO,eP) = if ((eP >= eL)) | |
1499 | + | then eO | |
1500 | + | else ik(eO, eK[eP]) | |
1501 | + | ||
1502 | + | func eQ (eO,eP) = if ((eP >= eL)) | |
1503 | + | then eO | |
1589 | 1504 | else throw("List size exceeds 6") | |
1590 | 1505 | ||
1591 | - | | |
1506 | + | eQ(eN(eN(eN(eN(eN(eN(eM, 0), 1), 2), 3), 4), 5), 6) | |
1592 | 1507 | } | |
1593 | - | func | |
1594 | - | let | |
1595 | - | let | |
1596 | - | let | |
1597 | - | let | |
1598 | - | if (( | |
1599 | - | then $Tuple4(( | |
1600 | - | else if (( | |
1601 | - | then if (( | |
1602 | - | then throw((((("Attempt to take " + | |
1603 | - | else $Tuple4(( | |
1604 | - | else if ((-( | |
1605 | - | then throw((((("Attempt to take " + toString(-( | |
1606 | - | else $Tuple4(( | |
1508 | + | func io (eI,hF) = { | |
1509 | + | let gv = eI._1 | |
1510 | + | let il = parseIntValue(hF) | |
1511 | + | let ip = parseIntValue(ig[gv]) | |
1512 | + | let iq = parseIntValue(ii[gv]) | |
1513 | + | if ((il == 0)) | |
1514 | + | then $Tuple4((gv + 1), (eI._2 :+ ig[gv]), (eI._3 :+ ii[gv]), eI._4) | |
1515 | + | else if ((il > 0)) | |
1516 | + | then if ((il > iq)) | |
1517 | + | then throw((((("Attempt to take " + hF) + " from backpack, but only ") + toString(iq)) + " available")) | |
1518 | + | else $Tuple4((gv + 1), (eI._2 :+ toString((ip + il))), (eI._3 :+ toString((iq - il))), (eI._4 + il)) | |
1519 | + | else if ((-(il) > ip)) | |
1520 | + | then throw((((("Attempt to take " + toString(-(il))) + " from warehouse, but only ") + toString(ip)) + " available")) | |
1521 | + | else $Tuple4((gv + 1), (eI._2 :+ toString((ip + il))), (eI._3 :+ toString((iq - il))), (eI._4 + il)) | |
1607 | 1522 | } | |
1608 | 1523 | ||
1609 | - | let | |
1610 | - | let | |
1611 | - | let | |
1612 | - | let | |
1613 | - | func | |
1614 | - | then | |
1615 | - | else | |
1616 | - | ||
1617 | - | func | |
1618 | - | then | |
1524 | + | let gd = { | |
1525 | + | let eK = id | |
1526 | + | let eL = size(eK) | |
1527 | + | let eM = $Tuple4(0, nil, nil, eT._4) | |
1528 | + | func hr (eO,eP) = if ((eP >= eL)) | |
1529 | + | then eO | |
1530 | + | else io(eO, eK[eP]) | |
1531 | + | ||
1532 | + | func hs (eO,eP) = if ((eP >= eL)) | |
1533 | + | then eO | |
1619 | 1534 | else throw("List size exceeds 6") | |
1620 | 1535 | ||
1621 | - | | |
1536 | + | hs(hr(hr(hr(hr(hr(hr(eM, 0), 1), 2), 3), 4), 5), 6) | |
1622 | 1537 | } | |
1623 | - | func | |
1624 | - | let | |
1625 | - | let | |
1626 | - | let | |
1627 | - | then parseIntValue( | |
1538 | + | func ir (eI,hF) = { | |
1539 | + | let gv = eI._1 | |
1540 | + | let il = parseIntValue(hF) | |
1541 | + | let is = if ((size(ih) > gv)) | |
1542 | + | then parseIntValue(ih[gv]) | |
1628 | 1543 | else 0 | |
1629 | - | let | |
1630 | - | then parseIntValue( | |
1544 | + | let it = if ((size(ij) > gv)) | |
1545 | + | then parseIntValue(ij[gv]) | |
1631 | 1546 | else 0 | |
1632 | - | if (( | |
1633 | - | then $Tuple4(( | |
1634 | - | else if (( | |
1635 | - | then if (( | |
1636 | - | then throw((((("Attempt to take " + | |
1547 | + | if ((il == 0)) | |
1548 | + | then $Tuple4((gv + 1), (eI._2 :+ toString(is)), (eI._3 :+ toString(it)), eI._4) | |
1549 | + | else if ((il > 0)) | |
1550 | + | then if ((il > it)) | |
1551 | + | then throw((((("Attempt to take " + hF) + " from backpack, but only ") + toString(it)) + " available")) | |
1637 | 1552 | else { | |
1638 | - | let | |
1639 | - | $Tuple4(( | |
1553 | + | let iu = (ey((is + il), aO) - ey(is, aO)) | |
1554 | + | $Tuple4((gv + 1), (eI._2 :+ toString((is + il))), (eI._3 :+ toString((it - il))), (eI._4 + iu)) | |
1640 | 1555 | } | |
1641 | - | else if ((-( | |
1642 | - | then throw((((("Attempt to take " + toString(-( | |
1556 | + | else if ((-(il) > is)) | |
1557 | + | then throw((((("Attempt to take " + toString(-(il))) + " from warehouse, but only ") + toString(is)) + " available")) | |
1643 | 1558 | else { | |
1644 | - | let | |
1645 | - | $Tuple4(( | |
1559 | + | let iu = (ey((is + il), aO) - ey(is, aO)) | |
1560 | + | $Tuple4((gv + 1), (eI._2 :+ toString((is + il))), (eI._3 :+ toString((it - il))), (eI._4 + iu)) | |
1646 | 1561 | } | |
1647 | 1562 | } | |
1648 | 1563 | ||
1649 | - | let | |
1564 | + | let hy = if ((size(ie) != 0)) | |
1650 | 1565 | then { | |
1651 | - | let | |
1652 | - | let | |
1653 | - | let | |
1654 | - | func | |
1655 | - | then | |
1656 | - | else | |
1657 | - | ||
1658 | - | func | |
1659 | - | then | |
1566 | + | let eK = ie | |
1567 | + | let eL = size(eK) | |
1568 | + | let eM = $Tuple4(0, nil, nil, gd._4) | |
1569 | + | func hu (eO,eP) = if ((eP >= eL)) | |
1570 | + | then eO | |
1571 | + | else ir(eO, eK[eP]) | |
1572 | + | ||
1573 | + | func hv (eO,eP) = if ((eP >= eL)) | |
1574 | + | then eO | |
1660 | 1575 | else throw("List size exceeds 50") | |
1661 | 1576 | ||
1662 | - | | |
1577 | + | hv(hu(hu(hu(hu(hu(hu(hu(hu(hu(hu(hu(hu(hu(hu(hu(hu(hu(hu(hu(hu(hu(hu(hu(hu(hu(hu(hu(hu(hu(hu(hu(hu(hu(hu(hu(hu(hu(hu(hu(hu(hu(hu(hu(hu(hu(hu(hu(hu(hu(hu(eM, 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) | |
1663 | 1578 | } | |
1664 | - | else $Tuple4(0, | |
1665 | - | let | |
1666 | - | if (( | |
1667 | - | then throw((((("Attempt to put total " + toString( | |
1668 | - | else $Tuple7(makeString( | |
1579 | + | else $Tuple4(0, ih, ij, gd._4) | |
1580 | + | let iv = hy._4 | |
1581 | + | if ((iv > gK)) | |
1582 | + | then throw((((("Attempt to put total " + toString(iv)) + " stuff, but only ") + toString(gK)) + " warehouse space left")) | |
1583 | + | else $Tuple7(makeString(eT._2, "_"), makeString(gd._2, "_"), makeString_2C(hy._2, "_"), makeString(eT._3, "_"), makeString(gd._3, "_"), makeString_2C(hy._3, "_"), iv) | |
1669 | 1584 | } | |
1670 | 1585 | } | |
1671 | 1586 | ||
1672 | 1587 | ||
1673 | - | func | |
1674 | - | let | |
1675 | - | let | |
1676 | - | let | |
1677 | - | let | |
1678 | - | let | |
1679 | - | let | |
1680 | - | let | |
1681 | - | let | |
1682 | - | let | |
1683 | - | let | |
1684 | - | $Tuple2([IntegerEntry( | |
1685 | - | } | |
1686 | - | ||
1687 | - | ||
1688 | - | func | |
1588 | + | func iw (ix,iy) = { | |
1589 | + | let bC = toString(ix) | |
1590 | + | let iz = gQ(toBigInt(iy)) | |
1591 | + | let iA = valueOrElse(getInteger(ea()), (dZ + 1)) | |
1592 | + | let ee = toString(iA) | |
1593 | + | let gZ = toInt((iz % dT)) | |
1594 | + | let gy = gX(iz, gZ) | |
1595 | + | let di = aH[gZ] | |
1596 | + | let iB = Issue(ex(ee, "S"), makeString([ee, "S", gy, di], "_"), 1, 0, false) | |
1597 | + | let bg = calculateAssetId(iB) | |
1598 | + | let iC = toBase58String(bg) | |
1599 | + | $Tuple2([IntegerEntry(ea(), (iA + 1)), iB, StringEntry(ed(ee), iC), StringEntry(bf(iC), bC), StringEntry(eg(ee), bC), IntegerEntry(bq(iC), 0), IntegerEntry(ef(iC, bC), 0), ScriptTransfer(ix, 1, bg)], $Tuple2(iC, di)) | |
1600 | + | } | |
1601 | + | ||
1602 | + | ||
1603 | + | func iD (bC,iE,iF) = if (!(sigVerify_8Kb(iE, iF, cl))) | |
1689 | 1604 | then throw("signature does not match") | |
1690 | 1605 | else { | |
1691 | - | let | |
1692 | - | let | |
1693 | - | let | |
1694 | - | let | |
1695 | - | let | |
1696 | - | let | |
1697 | - | let | |
1698 | - | let | |
1699 | - | if (if (( | |
1606 | + | let fg = split_4C(toUtf8String(iE), ";") | |
1607 | + | let iG = split_4C(fg[0], "|") | |
1608 | + | let iH = split(iG[eo], "_") | |
1609 | + | let iI = parseIntValue(iH[0]) | |
1610 | + | let iJ = parseIntValue(iH[1]) | |
1611 | + | let iK = split(fg[1], ":") | |
1612 | + | let iL = iK[0] | |
1613 | + | let iM = parseIntValue(iG[ep]) | |
1614 | + | if (if ((iM > (lastBlock.timestamp + dL))) | |
1700 | 1615 | then true | |
1701 | - | else ((lastBlock.timestamp - | |
1702 | - | then throw(((("signature outdated: logTime=" + toString( | |
1616 | + | else ((lastBlock.timestamp - dL) > iM)) | |
1617 | + | then throw(((("signature outdated: logTime=" + toString(iM)) + ", bcTime=") + toString(lastBlock.timestamp))) | |
1703 | 1618 | else { | |
1704 | - | let | |
1705 | - | let | |
1706 | - | if (( | |
1707 | - | then throw(((("Tx ids don't match! In state: " + | |
1619 | + | let iN = iK[1] | |
1620 | + | let iO = valueOrElse(getString(dx(bC)), "") | |
1621 | + | if ((iO != iN)) | |
1622 | + | then throw(((("Tx ids don't match! In state: " + iO) + ", in msg: ") + iN)) | |
1708 | 1623 | else { | |
1709 | - | let | |
1710 | - | let | |
1711 | - | let | |
1712 | - | let | |
1713 | - | if (( | |
1714 | - | then throw(((("oldHealth=" + toString( | |
1715 | - | else if ((0 >= | |
1624 | + | let u = valueOrErrorMessage(getString(by(bC)), "You don't have a duck staked") | |
1625 | + | let iP = t(u) | |
1626 | + | let iQ = ab(valueOrElse(getInteger(x(u)), 0)) | |
1627 | + | let iR = valueOrElse(getInteger(iP), iQ) | |
1628 | + | if ((iR != iI)) | |
1629 | + | then throw(((("oldHealth=" + toString(iR)) + " from state does not match one from flight log=") + toString(iI))) | |
1630 | + | else if ((0 >= iI)) | |
1716 | 1631 | then throw("You can't fly with zero health") | |
1717 | - | else if (!( | |
1632 | + | else if (!(gg(u))) | |
1718 | 1633 | then throw("Equipment incompatible") | |
1719 | 1634 | else { | |
1720 | - | let | |
1721 | - | then | |
1635 | + | let iS = if ((size(iG) > eq)) | |
1636 | + | then iG[eq] | |
1722 | 1637 | else "" | |
1723 | - | let | |
1724 | - | then | |
1638 | + | let iT = if ((size(iG) > er)) | |
1639 | + | then iG[er] | |
1725 | 1640 | else "" | |
1726 | - | let | |
1727 | - | then ( | |
1641 | + | let iU = if (if ((iJ > 0)) | |
1642 | + | then (iS == "$") | |
1728 | 1643 | else false) | |
1729 | - | then | |
1644 | + | then do(invoke(cQ, "sendUsdtPrize", [bC], nil)) | |
1730 | 1645 | else 0 | |
1731 | - | $Tuple5( | |
1646 | + | $Tuple5(iJ, u, iU, iL, iT) | |
1732 | 1647 | } | |
1733 | 1648 | } | |
1734 | 1649 | } | |
1735 | 1650 | } | |
1736 | 1651 | ||
1737 | 1652 | ||
1738 | - | func | |
1739 | - | let | |
1740 | - | let | |
1741 | - | let | |
1742 | - | let | |
1743 | - | (( | |
1744 | - | } | |
1745 | - | ||
1746 | - | ||
1747 | - | func | |
1748 | - | let | |
1749 | - | then $Tuple2( | |
1653 | + | func iV (bp,iW) = { | |
1654 | + | let hN = valueOrElse(getInteger(bq(bp)), 0) | |
1655 | + | let iX = valueOrElse(getInteger(bj(as, bp)), 0) | |
1656 | + | let iY = (hN / 6) | |
1657 | + | let iZ = (hN / 7) | |
1658 | + | ((av + fraction(av, ((hN + iY) + (2 * iZ)), 5)) + fraction(av, iX, (iW * 5))) | |
1659 | + | } | |
1660 | + | ||
1661 | + | ||
1662 | + | func ja (c,jb,jc) = { | |
1663 | + | let jd = if ((jb == el)) | |
1664 | + | then $Tuple2(jc, valueOrElse(getString(by(c)), "")) | |
1750 | 1665 | else { | |
1751 | - | let | |
1752 | - | let | |
1753 | - | let | |
1754 | - | if (( | |
1755 | - | then throw((("Duck location type is " + | |
1756 | - | else $Tuple2( | |
1757 | - | } | |
1758 | - | let | |
1759 | - | let | |
1760 | - | let | |
1761 | - | let | |
1762 | - | let | |
1763 | - | let | |
1764 | - | if (( | |
1765 | - | then throw(( | |
1666 | + | let u = valueOrErrorMessage(getString(by(c)), "You don't have a duck staked") | |
1667 | + | let je = valueOrElse(getString(bA(u)), ax) | |
1668 | + | let bV = split(value(je), "_") | |
1669 | + | if ((bV[bd] != "L")) | |
1670 | + | then throw((("Duck location type is " + bV[bd]) + ", but should be L")) | |
1671 | + | else $Tuple2(bV[be], u) | |
1672 | + | } | |
1673 | + | let bp = jd._1 | |
1674 | + | let jf = jd._2 | |
1675 | + | let jg = value(assetInfo(fromBase58String(bp))) | |
1676 | + | let jh = bi(bp) | |
1677 | + | let ji = valueOrErrorMessage(getInteger(jh), (("Land " + jg.name) + " is not staked")) | |
1678 | + | let jj = valueOrErrorMessage(getString(bf(bp)), (("NFT " + jg.name) + " is orphaned")) | |
1679 | + | if ((jj != c)) | |
1680 | + | then throw((ap + " is not yours")) | |
1766 | 1681 | else { | |
1767 | - | let | |
1768 | - | $Tuple4( | |
1769 | - | } | |
1770 | - | } | |
1771 | - | ||
1772 | - | ||
1773 | - | func | |
1682 | + | let jk = split(jg.description, "_") | |
1683 | + | $Tuple4(jf, bp, jk, ji) | |
1684 | + | } | |
1685 | + | } | |
1686 | + | ||
1687 | + | ||
1688 | + | func jl (c,ez,jb,jc) = if ((0 > ez)) | |
1774 | 1689 | then throw("Negative amount") | |
1775 | 1690 | else { | |
1776 | - | let | |
1777 | - | let | |
1778 | - | let | |
1779 | - | let | |
1780 | - | if ((0 > | |
1781 | - | then throw(((("Saved timestamp is in future, saved = " + toString( | |
1691 | + | let fN = ja(c, jb, jc) | |
1692 | + | let du = fN._3[cX] | |
1693 | + | let gr = gx(fN._3[cY]) | |
1694 | + | let gB = (lastBlock.timestamp - fN._4) | |
1695 | + | if ((0 > gB)) | |
1696 | + | then throw(((("Saved timestamp is in future, saved = " + toString(fN._4)) + ", current = ") + toString(lastBlock.timestamp))) | |
1782 | 1697 | else { | |
1783 | - | let | |
1784 | - | let | |
1785 | - | let | |
1786 | - | if (( | |
1787 | - | then throw(((("Not enough resources, available = " + toString( | |
1698 | + | let iW = dt(du) | |
1699 | + | let jm = iV(fN._2, iW) | |
1700 | + | let jn = fraction(gB, (jm * iW), a) | |
1701 | + | if ((ez > jn)) | |
1702 | + | then throw(((("Not enough resources, available = " + toString(jn)) + ", requested = ") + toString(ez))) | |
1788 | 1703 | else { | |
1789 | - | let | |
1790 | - | let | |
1791 | - | let | |
1792 | - | let | |
1793 | - | let | |
1794 | - | let | |
1795 | - | let | |
1796 | - | let | |
1797 | - | let | |
1798 | - | if (if (( | |
1799 | - | then ( | |
1704 | + | let jo = fraction((jn - ez), a, (jm * iW)) | |
1705 | + | let jp = (lastBlock.timestamp - jo) | |
1706 | + | let hM = (iW / cu) | |
1707 | + | let gJ = gF(gr, (gB - jo), hM, jm) | |
1708 | + | let hL = bo(fN._2) | |
1709 | + | let hN = valueOrElse(getInteger(bq(fN._2)), 0) | |
1710 | + | let hC = hK(hL, hM, hN) | |
1711 | + | let hT = split(hC[aT], "_") | |
1712 | + | let gK = parseIntValue(hT[aW]) | |
1713 | + | if (if ((jb == el)) | |
1714 | + | then (ez > gK) | |
1800 | 1715 | else false) | |
1801 | - | then throw((("Only " + toString( | |
1716 | + | then throw((("Only " + toString(gK)) + " space left in warehouse")) | |
1802 | 1717 | else { | |
1803 | - | let | |
1804 | - | let | |
1805 | - | let | |
1806 | - | let | |
1807 | - | let | |
1808 | - | then $Tuple4( | |
1809 | - | else if (( | |
1810 | - | then $Tuple4( | |
1718 | + | let hx = bz(fN._1) | |
1719 | + | let ib = hw(hx) | |
1720 | + | let gI = split(ib[aZ], "_") | |
1721 | + | let gH = split(hC[aQ], "_") | |
1722 | + | let jq = if ((jb == el)) | |
1723 | + | then $Tuple4(gz(gH, gr, (gB - jo), hM, jm), ib[aZ], (parseIntValue(hT[aV]) + gJ._2), (parseIntValue(hT[aW]) - gJ._2)) | |
1724 | + | else if ((jb == em)) | |
1725 | + | then $Tuple4(hC[aQ], gz(gI, gr, (gB - jo), hM, jm), parseIntValue(hT[aV]), parseIntValue(hT[aW])) | |
1811 | 1726 | else { | |
1812 | - | let | |
1813 | - | let | |
1814 | - | $Tuple4( | |
1727 | + | let jr = gG(gH, gI, gJ, gK) | |
1728 | + | let js = min([parseIntValue(hT[aW]), gJ._2]) | |
1729 | + | $Tuple4(jr._1, jr._2, (parseIntValue(hT[aV]) + js), (parseIntValue(hT[aW]) - js)) | |
1815 | 1730 | } | |
1816 | - | let | |
1817 | - | let | |
1818 | - | let | |
1819 | - | let | |
1820 | - | $Tuple5([IntegerEntry( | |
1731 | + | let jt = jq._1 | |
1732 | + | let ju = jq._2 | |
1733 | + | let jv = jq._3 | |
1734 | + | let jw = jq._4 | |
1735 | + | $Tuple5([IntegerEntry(bi(fN._2), jp), IntegerEntry(bl(ap, fN._2, c), jp)], hx, [ib[aY], ju, ib[ba], ib[bb]], hL, [hC[aP], jt, hC[aR], hC[aS], makeString([hT[aU], toString(jv), toString(jw), hT[aX]], "_")]) | |
1821 | 1736 | } | |
1822 | 1737 | } | |
1823 | 1738 | } | |
1824 | 1739 | } | |
1825 | 1740 | ||
1826 | 1741 | ||
1827 | - | func | |
1828 | - | let | |
1829 | - | let | |
1830 | - | let | |
1831 | - | | |
1832 | - | } | |
1833 | - | ||
1834 | - | ||
1835 | - | func | |
1836 | - | let c = toString( | |
1837 | - | let | |
1838 | - | let | |
1839 | - | let | |
1840 | - | let | |
1841 | - | if (if (!( | |
1842 | - | then ( | |
1742 | + | func jx (c,bp,iW,jb) = { | |
1743 | + | let jh = bi(bp) | |
1744 | + | let ji = value(getInteger(jh)) | |
1745 | + | let jn = (fraction((lastBlock.timestamp - ji), iV(bp, iW), a) * iW) | |
1746 | + | jl(c, jn, jb, bp) | |
1747 | + | } | |
1748 | + | ||
1749 | + | ||
1750 | + | func jy (eV,ix,jz,bp) = { | |
1751 | + | let c = toString(ix) | |
1752 | + | let fN = ja(c, en, bp) | |
1753 | + | let iW = dt(fN._3[cX]) | |
1754 | + | let jA = bq(fN._2) | |
1755 | + | let jB = valueOrElse(getInteger(jA), 0) | |
1756 | + | if (if (!(ch)) | |
1757 | + | then (jB >= 3) | |
1843 | 1758 | else false) | |
1844 | 1759 | then throw("Currently max infrastructure level = 3") | |
1845 | 1760 | else { | |
1846 | - | let | |
1847 | - | let | |
1848 | - | if (if ( | |
1849 | - | then ( | |
1761 | + | let jC = ((sqrt(iW, 0, 0, DOWN) / 5) + 2) | |
1762 | + | let ag = (jB + 1) | |
1763 | + | if (if (ch) | |
1764 | + | then (ag > jC) | |
1850 | 1765 | else false) | |
1851 | - | then throw(("Currently max infrastructure level = " + toString( | |
1766 | + | then throw(("Currently max infrastructure level = " + toString(jC))) | |
1852 | 1767 | else { | |
1853 | - | let | |
1854 | - | if (if (!( | |
1855 | - | then ( | |
1768 | + | let jD = fraction(dO, (iW * ag), cu) | |
1769 | + | if (if (!(eV)) | |
1770 | + | then (jz != jD) | |
1856 | 1771 | else false) | |
1857 | - | then throw(("Payment attached should be " + toString( | |
1772 | + | then throw(("Payment attached should be " + toString(jD))) | |
1858 | 1773 | else { | |
1859 | - | let | |
1860 | - | let | |
1861 | - | let | |
1862 | - | let | |
1863 | - | let | |
1864 | - | let | |
1865 | - | let | |
1866 | - | let | |
1867 | - | let | |
1868 | - | let | |
1869 | - | let | |
1870 | - | let | |
1871 | - | $Tuple3(([IntegerEntry( | |
1774 | + | let hx = bz(fN._1) | |
1775 | + | let ib = hw(hx) | |
1776 | + | let jE = split(ib[ba], "_") | |
1777 | + | let jF = fraction(cp, (iW * ag), cu) | |
1778 | + | let jG = makeString(eU(eV, jE, jF), "_") | |
1779 | + | let jH = jx(c, fN._2, iW, en) | |
1780 | + | let jI = jH._5 | |
1781 | + | let jJ = hz(jI[aP]) | |
1782 | + | let jK = makeString([split(jI[aP], "_")[0], toString(ag)], "_") | |
1783 | + | let jL = hz(jK) | |
1784 | + | let hT = split(jI[aT], "_") | |
1785 | + | let jM = makeString([hT[aU], hT[aV], toString(((parseIntValue(hT[aW]) + jL) - jJ)), toString(jL)], "_") | |
1786 | + | $Tuple3(([IntegerEntry(jA, ag), IntegerEntry(ef(fN._2, c), ag), StringEntry(hx, makeString([ib[aY], jH._3[aZ], jG, ib[bb]], ":")), StringEntry(jH._4, makeString([jK, jI[aQ], jI[aR], jI[aS], jM], ":"))] ++ jH._1), ag, jF) | |
1872 | 1787 | } | |
1873 | 1788 | } | |
1874 | 1789 | } | |
1875 | 1790 | } | |
1876 | 1791 | ||
1877 | 1792 | ||
1878 | - | func | |
1879 | - | let | |
1880 | - | let | |
1881 | - | let | |
1882 | - | $Tuple2([IntegerEntry( | |
1883 | - | } | |
1884 | - | ||
1885 | - | ||
1886 | - | func | |
1887 | - | let | |
1888 | - | let c = valueOrErrorMessage(getString( | |
1889 | - | if (if (if ( | |
1890 | - | then ( | |
1793 | + | func jN (jO,jP,jQ,jR) = { | |
1794 | + | let aa = valueOrElse(getInteger(jP), 0) | |
1795 | + | let af = (aa + jR) | |
1796 | + | let jS = ad(valueOrElse(getInteger(jO), 0), af) | |
1797 | + | $Tuple2([IntegerEntry(jO, jS[0]), IntegerEntry(jP, af), IntegerEntry(jQ, (valueOrElse(getInteger(jQ), 0) + jS[1]))], af) | |
1798 | + | } | |
1799 | + | ||
1800 | + | ||
1801 | + | func jT (u,jR) = { | |
1802 | + | let jg = value(assetInfo(fromBase58String(u))) | |
1803 | + | let c = valueOrErrorMessage(getString(bx(u)), (("NFT " + jg.name) + " is orphaned")) | |
1804 | + | if (if (if (ci) | |
1805 | + | then (jg.issuer == this) | |
1891 | 1806 | else false) | |
1892 | - | then contains( | |
1807 | + | then contains(jg.name, ar) | |
1893 | 1808 | else false) | |
1894 | - | then | |
1895 | - | else | |
1896 | - | } | |
1897 | - | ||
1898 | - | ||
1899 | - | func | |
1900 | - | ||
1901 | - | ||
1902 | - | func | |
1903 | - | let | |
1904 | - | let | |
1905 | - | let | |
1906 | - | if (!(isDefined( | |
1809 | + | then jN(B(c), A(c), C(c), jR) | |
1810 | + | else jN(x(u), w(u), y(u), jR) | |
1811 | + | } | |
1812 | + | ||
1813 | + | ||
1814 | + | func jU (c,jR) = jN(B(c), A(c), C(c), jR) | |
1815 | + | ||
1816 | + | ||
1817 | + | func jV (c) = { | |
1818 | + | let u = valueOrErrorMessage(getString(by(c)), "You don't have a duck staked") | |
1819 | + | let jW = bt(c) | |
1820 | + | let jX = getString(jW) | |
1821 | + | if (!(isDefined(jX))) | |
1907 | 1822 | then throw("You are not eligible for ONBOARD artifact") | |
1908 | 1823 | else { | |
1909 | - | let | |
1910 | - | let | |
1911 | - | if (isDefined( | |
1912 | - | then throw(("You already used your ONBOARD artifact on duck " + value( | |
1824 | + | let jY = bv(c) | |
1825 | + | let jZ = getString(jY) | |
1826 | + | if (isDefined(jZ)) | |
1827 | + | then throw(("You already used your ONBOARD artifact on duck " + value(jZ))) | |
1913 | 1828 | else { | |
1914 | - | let | |
1915 | - | let | |
1916 | - | if (isDefined( | |
1917 | - | then throw(((("The duck " + | |
1918 | - | else ([StringEntry( | |
1829 | + | let ka = bu(u) | |
1830 | + | let kb = getString(ka) | |
1831 | + | if (isDefined(kb)) | |
1832 | + | then throw(((("The duck " + u) + " already got points from ONBOARD artifact from user ") + value(kb))) | |
1833 | + | else ([StringEntry(jY, u), StringEntry(ka, c)] ++ jT(u, X)._1) | |
1919 | 1834 | } | |
1920 | 1835 | } | |
1921 | 1836 | } | |
1922 | 1837 | ||
1923 | 1838 | ||
1924 | - | func | |
1925 | - | let | |
1926 | - | let | |
1927 | - | let | |
1928 | - | let | |
1929 | - | if ((valueOrElse(getInteger( | |
1839 | + | func kc (c,jc) = { | |
1840 | + | let fN = ja(c, en, jc) | |
1841 | + | let bp = fN._2 | |
1842 | + | let iW = dt(fN._3[cX]) | |
1843 | + | let kd = bj(as, bp) | |
1844 | + | if ((valueOrElse(getInteger(kd), 0) > 0)) | |
1930 | 1845 | then throw("Presale artifact is already activated") | |
1931 | - | else if ((parseIntValue( | |
1932 | - | then throw(((( | |
1846 | + | else if ((parseIntValue(fN._3[cW]) > dZ)) | |
1847 | + | then throw((((ap + " ") + bp) + " is not eligible for presale artifact")) | |
1933 | 1848 | else { | |
1934 | - | let | |
1935 | - | ((( | |
1849 | + | let jH = jx(c, bp, iW, en) | |
1850 | + | (((jH._1 :+ IntegerEntry(kd, iW)) :+ StringEntry(jH._2, makeString(jH._3, ":"))) :+ StringEntry(jH._4, makeString(jH._5, ":"))) | |
1936 | 1851 | } | |
1937 | 1852 | } | |
1938 | 1853 | ||
1939 | 1854 | ||
1940 | - | func | |
1941 | - | let | |
1942 | - | let | |
1943 | - | let | |
1944 | - | let | |
1945 | - | let | |
1946 | - | let | |
1947 | - | if (( | |
1855 | + | func ke (u) = { | |
1856 | + | let bU = valueOrElse(getInteger(cU, bF), 0) | |
1857 | + | let je = split(valueOrElse(getString(bA(u)), ax), "_") | |
1858 | + | let bW = lastBlock.timestamp | |
1859 | + | let bX = bO(cU, bU) | |
1860 | + | let bQ = bX[bK] | |
1861 | + | let bR = bX[bL] | |
1862 | + | if ((je[bd] != "T")) | |
1948 | 1863 | then false | |
1949 | - | else if (if (if ((parseIntValue( | |
1950 | - | then ( | |
1864 | + | else if (if (if ((parseIntValue(je[bc]) == bU)) | |
1865 | + | then (bR[bN] == "INPROGRESS") | |
1951 | 1866 | else false) | |
1952 | - | then (parseIntValue( | |
1867 | + | then (parseIntValue(bQ[bM]) > bW) | |
1953 | 1868 | else false) | |
1954 | 1869 | then throw("Your duck is taking part in the tournament") | |
1955 | - | else | |
1956 | - | } | |
1957 | - | ||
1958 | - | ||
1959 | - | func | |
1960 | - | let | |
1961 | - | if ( | |
1870 | + | else ds(invoke(this, "exitTournamentInternal", [u], nil)) | |
1871 | + | } | |
1872 | + | ||
1873 | + | ||
1874 | + | func kf (kg,ag,kh,c,ki,kj) = { | |
1875 | + | let u = valueOrErrorMessage(getString(by(c)), "You don't have a duck staked") | |
1876 | + | if (ke(u)) | |
1962 | 1877 | then throw("mergeInternal_checkTournament") | |
1963 | 1878 | else { | |
1964 | - | func | |
1965 | - | let | |
1966 | - | let | |
1967 | - | let | |
1968 | - | let | |
1969 | - | if (( | |
1970 | - | then throw(( | |
1879 | + | func kk (eI,bp) = { | |
1880 | + | let jg = value(assetInfo(fromBase58String(bp))) | |
1881 | + | let jh = bi(bp) | |
1882 | + | let ji = valueOrErrorMessage(getInteger(jh), (("NFT " + jg.name) + " is not staked")) | |
1883 | + | let jj = valueOrErrorMessage(getString(bf(bp)), (("NFT " + jg.name) + " is orphaned")) | |
1884 | + | if ((jj != c)) | |
1885 | + | then throw((ap + " is not yours")) | |
1971 | 1886 | else { | |
1972 | - | let | |
1973 | - | let | |
1974 | - | if (if (( | |
1975 | - | then ( | |
1887 | + | let jk = split(jg.description, "_") | |
1888 | + | let di = jk[cZ] | |
1889 | + | if (if ((eI._3 != "")) | |
1890 | + | then (eI._3 != di) | |
1976 | 1891 | else false) | |
1977 | 1892 | then throw("Lands should be on the same continent to merge") | |
1978 | 1893 | else { | |
1979 | - | let | |
1980 | - | let | |
1981 | - | let | |
1982 | - | let | |
1983 | - | let | |
1984 | - | let | |
1985 | - | let | |
1986 | - | let | |
1987 | - | let | |
1988 | - | if (("S" == | |
1894 | + | let du = jk[cX] | |
1895 | + | let kl = eI._1 | |
1896 | + | let gv = valueOrErrorMessage(indexOf(kl, du), "You haven't passed all the lands needed") | |
1897 | + | let km = (take(kl, gv) + drop(kl, (gv + 1))) | |
1898 | + | let iW = dt(du) | |
1899 | + | let kn = (eI._2 + valueOrElse(getInteger(bj(as, bp)), 0)) | |
1900 | + | let hN = valueOrElse(getInteger(bq(bp)), 0) | |
1901 | + | let ko = { | |
1902 | + | let cm = du | |
1903 | + | if (("S" == cm)) | |
1989 | 1904 | then 3 | |
1990 | - | else if (("M" == | |
1905 | + | else if (("M" == cm)) | |
1991 | 1906 | then 4 | |
1992 | - | else if (("L" == | |
1907 | + | else if (("L" == cm)) | |
1993 | 1908 | then 5 | |
1994 | - | else if (("XL" == | |
1909 | + | else if (("XL" == cm)) | |
1995 | 1910 | then 6 | |
1996 | 1911 | else throw("Only S, M, L, XL can merge") | |
1997 | 1912 | } | |
1998 | - | if (( | |
1913 | + | if ((hN != ko)) | |
1999 | 1914 | then throw("All lands should be maxed to merge") | |
2000 | 1915 | else { | |
2001 | - | let | |
2002 | - | let | |
2003 | - | let | |
2004 | - | if ((0 > | |
2005 | - | then throw(((("Saved timestamp is in future, saved = " + toString( | |
1916 | + | let ee = jk[cW] | |
1917 | + | let gr = gx(jk[cY]) | |
1918 | + | let gB = (lastBlock.timestamp - ji) | |
1919 | + | if ((0 > gB)) | |
1920 | + | then throw(((("Saved timestamp is in future, saved = " + toString(ji)) + ", current = ") + toString(lastBlock.timestamp))) | |
2006 | 1921 | else { | |
2007 | - | let | |
2008 | - | let | |
2009 | - | let | |
2010 | - | let | |
2011 | - | let | |
2012 | - | let | |
2013 | - | let | |
2014 | - | let | |
2015 | - | if (!(isDefined( | |
2016 | - | then throw(("Your staked lands don't contain " + | |
1922 | + | let jm = iV(bp, iW) | |
1923 | + | let hM = (iW / cu) | |
1924 | + | let ju = gz(split(eI._4, "_"), gr, gB, hM, jm) | |
1925 | + | let eS = gp(eI._6, gr, hM, -1) | |
1926 | + | let kp = gp(eI._10, gr, hM, -1) | |
1927 | + | let hg = gp(eI._9, gr, hM, 1) | |
1928 | + | let kq = eI._7 | |
1929 | + | let cP = indexOf(kq, bp) | |
1930 | + | if (!(isDefined(cP))) | |
1931 | + | then throw(("Your staked lands don't contain " + bp)) | |
2017 | 1932 | else { | |
2018 | - | let | |
2019 | - | let | |
2020 | - | $Tuple10( | |
2021 | - | then [DeleteEntry( | |
2022 | - | else nil)), | |
1933 | + | let kr = bh(bp) | |
1934 | + | let ks = valueOrElse(getString(kr), "") | |
1935 | + | $Tuple10(km, kn, di, ju, ((((((((((((eI._5 :+ DeleteEntry(bi(bp))) :+ DeleteEntry(bl(ap, bp, c))) :+ DeleteEntry(ed(ee))) :+ DeleteEntry(bf(bp))) :+ DeleteEntry(bq(bp))) :+ DeleteEntry(ef(bp, c))) :+ DeleteEntry(bj(as, bp))) :+ DeleteEntry(eg(ee))) :+ DeleteEntry(bo(bp))) :+ DeleteEntry(kr)) :+ Burn(fromBase58String(bp), 1)) ++ (if ((ks != "")) | |
1936 | + | then [DeleteEntry(eb(ks))] | |
1937 | + | else nil)), eS, removeByIndex(kq, value(cP)), (eI._8 + iW), hg, kp) | |
2023 | 1938 | } | |
2024 | 1939 | } | |
2025 | 1940 | } | |
2027 | 1942 | } | |
2028 | 1943 | } | |
2029 | 1944 | ||
2030 | - | let | |
2031 | - | let | |
2032 | - | let | |
2033 | - | let | |
2034 | - | let | |
2035 | - | let | |
2036 | - | then split_51C(value( | |
1945 | + | let hx = bz(u) | |
1946 | + | let ib = hw(hx) | |
1947 | + | let gq = split(valueOrElse(getString(dg()), "0_0_0_0_0_0"), "_") | |
1948 | + | let kt = dj(c) | |
1949 | + | let ku = getString(kt) | |
1950 | + | let kv = if (isDefined(ku)) | |
1951 | + | then split_51C(value(ku), "_") | |
2037 | 1952 | else nil | |
2038 | - | let | |
2039 | - | let | |
2040 | - | let | |
2041 | - | let | |
2042 | - | let | |
2043 | - | let | |
2044 | - | func | |
2045 | - | then | |
2046 | - | else | |
2047 | - | ||
2048 | - | func | |
2049 | - | then | |
1953 | + | let kw = split(value(assetInfo(fromBase58String(ki[0]))).description, "_")[cZ] | |
1954 | + | let kx = split(valueOrElse(getString(dh(kw)), "0_0_0_0_0_0"), "_") | |
1955 | + | let eT = { | |
1956 | + | let eK = ki | |
1957 | + | let eL = size(eK) | |
1958 | + | let eM = $Tuple10(kh, 0, "", ib[aZ], nil, gq, kv, 0, split("0_0_0_0_0_0", "_"), kx) | |
1959 | + | func eN (eO,eP) = if ((eP >= eL)) | |
1960 | + | then eO | |
1961 | + | else kk(eO, eK[eP]) | |
1962 | + | ||
1963 | + | func eQ (eO,eP) = if ((eP >= eL)) | |
1964 | + | then eO | |
2050 | 1965 | else throw("List size exceeds 5") | |
2051 | 1966 | ||
2052 | - | | |
1967 | + | eQ(eN(eN(eN(eN(eN(eM, 0), 1), 2), 3), 4), 5) | |
2053 | 1968 | } | |
2054 | - | let | |
2055 | - | let | |
2056 | - | let | |
2057 | - | let | |
2058 | - | let | |
2059 | - | let | |
2060 | - | let | |
2061 | - | let | |
2062 | - | let | |
2063 | - | let | |
2064 | - | let | |
2065 | - | $Tuple2(((((((((((((((( | |
2066 | - | then StringEntry( | |
2067 | - | else DeleteEntry( | |
1969 | + | let di = eT._3 | |
1970 | + | let gZ = valueOrErrorMessage(indexOf(aH, di), ("Unknown continent: " + di)) | |
1971 | + | let gy = hf(eT._9, (dt(kg) / cu)) | |
1972 | + | let iA = valueOrElse(getInteger(ea()), (dZ + 1)) | |
1973 | + | let ky = toString(iA) | |
1974 | + | let iB = Issue(ex(ky, kg), makeString([ky, kg, gy, di], "_"), 1, 0, false) | |
1975 | + | let bg = calculateAssetId(iB) | |
1976 | + | let kz = toBase58String(bg) | |
1977 | + | let jG = makeString(eU((kj > 0), split(ib[ba], "_"), kj), "_") | |
1978 | + | let kA = dk(c) | |
1979 | + | let kB = valueOrElse(getInteger(kA), 0) | |
1980 | + | $Tuple2((((((((((((((((eT._5 :+ (if ((size(eT._7) > 0)) | |
1981 | + | then StringEntry(kt, makeString_11C(eT._7, "_")) | |
1982 | + | else DeleteEntry(kt))) :+ IntegerEntry(kA, if ((eT._8 > kB)) | |
2068 | 1983 | then 0 | |
2069 | - | else ( | |
2070 | - | } | |
2071 | - | } | |
2072 | - | ||
2073 | - | ||
2074 | - | func | |
2075 | - | ||
2076 | - | ||
2077 | - | func | |
2078 | - | ||
2079 | - | ||
2080 | - | func | |
2081 | - | ||
2082 | - | ||
2083 | - | func | |
2084 | - | ||
2085 | - | ||
2086 | - | func | |
2087 | - | let | |
2088 | - | if ((4 == | |
2089 | - | then | |
2090 | - | else if ((3 == | |
2091 | - | then | |
2092 | - | else if ((5 == | |
2093 | - | then | |
2094 | - | else if ((2 == | |
2095 | - | then | |
1984 | + | else (kB - eT._8))) :+ IntegerEntry(ea(), (iA + 1))) :+ iB) :+ StringEntry(ed(ky), kz)) :+ StringEntry(bf(kz), c)) :+ StringEntry(eg(ky), c)) :+ IntegerEntry(bj(as, kz), eT._2)) :+ IntegerEntry(bq(kz), ag)) :+ IntegerEntry(ef(kz, c), ag)) :+ StringEntry(hx, makeString([ib[aY], eT._4, jG, ib[bb]], ":"))) :+ StringEntry(dg(), makeString(eT._6, "_"))) :+ StringEntry(dh(di), makeString(eT._10, "_"))) :+ StringEntry(bA(u), makeString([di, "L", kz], "_"))) :+ ScriptTransfer(addressFromStringValue(c), 1, bg)), kz) | |
1985 | + | } | |
1986 | + | } | |
1987 | + | ||
1988 | + | ||
1989 | + | func kC (c,ki) = kf("M", 3, "SSSS", c, ki, 0) | |
1990 | + | ||
1991 | + | ||
1992 | + | func kD (c,ki) = kf("L", 4, "SMM", c, ki, (cp * 4)) | |
1993 | + | ||
1994 | + | ||
1995 | + | func kE (c,ki) = kf("XL", 5, "SSSML", c, ki, (cp * 47)) | |
1996 | + | ||
1997 | + | ||
1998 | + | func kF (c,ki) = kf("XXL", 6, "LXL", c, ki, (cp * 54)) | |
1999 | + | ||
2000 | + | ||
2001 | + | func kG (c,ki) = { | |
2002 | + | let cm = size(ki) | |
2003 | + | if ((4 == cm)) | |
2004 | + | then kC(c, ki) | |
2005 | + | else if ((3 == cm)) | |
2006 | + | then kD(c, ki) | |
2007 | + | else if ((5 == cm)) | |
2008 | + | then kE(c, ki) | |
2009 | + | else if ((2 == cm)) | |
2010 | + | then kF(c, ki) | |
2096 | 2011 | else throw("Unknown merge") | |
2097 | 2012 | } | |
2098 | 2013 | ||
2099 | 2014 | ||
2100 | - | func | |
2101 | - | then valueOrElse(getBoolean( | |
2015 | + | func kH (gv) = if (if ((gv.originCaller != cQ)) | |
2016 | + | then valueOrElse(getBoolean(dw()), false) | |
2102 | 2017 | else false) | |
2103 | 2018 | then throw("Contracts are under maintenance") | |
2104 | - | else [StringEntry( | |
2105 | - | ||
2106 | - | ||
2107 | - | @Callable( | |
2108 | - | func constructorV1 ( | |
2019 | + | else [StringEntry(dx(toString(gv.originCaller)), toBase58String(gv.transactionId))] | |
2020 | + | ||
2021 | + | ||
2022 | + | @Callable(gv) | |
2023 | + | func constructorV1 (kI) = if ((gv.caller != this)) | |
2109 | 2024 | then throw("Permission denied") | |
2110 | - | else [StringEntry( | |
2111 | - | ||
2112 | - | ||
2113 | - | ||
2114 | - | @Callable( | |
2115 | - | func saveInteger ( | |
2025 | + | else [StringEntry(cK(), kI)] | |
2026 | + | ||
2027 | + | ||
2028 | + | ||
2029 | + | @Callable(gv) | |
2030 | + | func saveInteger (cC,ez) = if ((gv.caller != this)) | |
2116 | 2031 | then throw("saveInteger is not public method") | |
2117 | - | else [IntegerEntry( | |
2118 | - | ||
2119 | - | ||
2120 | - | ||
2121 | - | @Callable( | |
2122 | - | func setBlocked ( | |
2032 | + | else [IntegerEntry(cC, ez)] | |
2033 | + | ||
2034 | + | ||
2035 | + | ||
2036 | + | @Callable(gv) | |
2037 | + | func setBlocked (kJ) = if ((gv.caller != this)) | |
2123 | 2038 | then throw("permission denied") | |
2124 | - | else [BooleanEntry( | |
2125 | - | ||
2126 | - | ||
2127 | - | ||
2128 | - | @Callable( | |
2039 | + | else [BooleanEntry(dw(), kJ)] | |
2040 | + | ||
2041 | + | ||
2042 | + | ||
2043 | + | @Callable(gv) | |
2129 | 2044 | func stakeLand () = { | |
2130 | - | let | |
2131 | - | if ((size( | |
2045 | + | let kK = kH(gv) | |
2046 | + | if ((size(gv.payments) != 1)) | |
2132 | 2047 | then throw("Exactly one payment required") | |
2133 | 2048 | else { | |
2134 | - | let | |
2135 | - | let | |
2136 | - | let | |
2137 | - | if (( | |
2138 | - | then throw((("NFT " + | |
2049 | + | let kL = value(gv.payments[0]) | |
2050 | + | let bg = value(kL.assetId) | |
2051 | + | let cB = toString(gv.caller) | |
2052 | + | if ((kL.amount != 1)) | |
2053 | + | then throw((("NFT " + ap) + " token should be attached as payment")) | |
2139 | 2054 | else { | |
2140 | - | let | |
2141 | - | if (( | |
2055 | + | let jg = value(assetInfo(bg)) | |
2056 | + | if ((jg.issuer != this)) | |
2142 | 2057 | then throw("Unknown issuer of token") | |
2143 | - | else if (!(contains( | |
2144 | - | then throw((("Only NFT " + | |
2058 | + | else if (!(contains(jg.name, ap))) | |
2059 | + | then throw((("Only NFT " + ap) + " tokens are accepted")) | |
2145 | 2060 | else { | |
2146 | - | let | |
2147 | - | let | |
2148 | - | then dropRight( | |
2149 | - | else if (contains( | |
2150 | - | then dropRight( | |
2151 | - | else dropRight( | |
2152 | - | if (!(isDefined(parseInt( | |
2153 | - | then throw(("Cannot parse land number from " + | |
2061 | + | let kM = drop(jg.name, 4) | |
2062 | + | let ee = if (contains(kM, "XXL")) | |
2063 | + | then dropRight(kM, 3) | |
2064 | + | else if (contains(kM, "XL")) | |
2065 | + | then dropRight(kM, 2) | |
2066 | + | else dropRight(kM, 1) | |
2067 | + | if (!(isDefined(parseInt(ee)))) | |
2068 | + | then throw(("Cannot parse land number from " + jg.name)) | |
2154 | 2069 | else { | |
2155 | - | let | |
2156 | - | let | |
2157 | - | if (isDefined(getInteger( | |
2158 | - | then throw((("NFT " + | |
2070 | + | let bp = toBase58String(bg) | |
2071 | + | let jh = bi(bp) | |
2072 | + | if (isDefined(getInteger(jh))) | |
2073 | + | then throw((("NFT " + jg.name) + " is already staked")) | |
2159 | 2074 | else { | |
2160 | - | let | |
2161 | - | let | |
2162 | - | let | |
2163 | - | let | |
2164 | - | let | |
2165 | - | let | |
2166 | - | let | |
2167 | - | let | |
2168 | - | let | |
2169 | - | let | |
2170 | - | let | |
2171 | - | then split_51C(value( | |
2075 | + | let jk = split(jg.description, "_") | |
2076 | + | let gr = gx(jk[cY]) | |
2077 | + | let iW = dt(jk[cX]) | |
2078 | + | let hM = (iW / cu) | |
2079 | + | let eS = gw(gr, hM, 1) | |
2080 | + | let kN = dh(jk[cZ]) | |
2081 | + | let kx = split(valueOrElse(getString(kN), "0_0_0_0_0_0"), "_") | |
2082 | + | let kO = makeString(gp(kx, gr, hM, 1), "_") | |
2083 | + | let kt = dj(cB) | |
2084 | + | let ku = getString(kt) | |
2085 | + | let kq = if (isDefined(ku)) | |
2086 | + | then split_51C(value(ku), "_") | |
2172 | 2087 | else nil | |
2173 | - | if (containsElement( | |
2174 | - | then throw(("Your staked lands already contain " + | |
2175 | - | else if ((size( | |
2176 | - | then throw((("Your already staked max (" + toString( | |
2088 | + | if (containsElement(kq, bp)) | |
2089 | + | then throw(("Your staked lands already contain " + bp)) | |
2090 | + | else if ((size(kq) >= au)) | |
2091 | + | then throw((("Your already staked max (" + toString(au)) + ") lands")) | |
2177 | 2092 | else { | |
2178 | - | let | |
2179 | - | let | |
2180 | - | let | |
2181 | - | let | |
2182 | - | $Tuple2(([IntegerEntry( | |
2093 | + | let hN = valueOrElse(getInteger(bq(bp)), 0) | |
2094 | + | let kA = dk(cB) | |
2095 | + | let kP = valueOrElse(getInteger(kA), 0) | |
2096 | + | let kQ = invoke(cT, "onStakeUnstakeLand", [cB], nil) | |
2097 | + | $Tuple2(([IntegerEntry(jh, lastBlock.timestamp), IntegerEntry(bl(ap, bp, cB), lastBlock.timestamp), StringEntry(kt, makeString_11C((kq :+ bp), "_")), IntegerEntry(kA, (kP + iW)), StringEntry(bf(bp), cB), StringEntry(eg(ee), cB), IntegerEntry(ef(bp, cB), hN), StringEntry(dg(), eS), StringEntry(kN, kO)] ++ kK), kQ) | |
2183 | 2098 | } | |
2184 | 2099 | } | |
2185 | 2100 | } | |
2190 | 2105 | ||
2191 | 2106 | ||
2192 | 2107 | ||
2193 | - | @Callable( | |
2194 | - | func unstakeLand ( | |
2195 | - | let | |
2196 | - | if ((size( | |
2108 | + | @Callable(gv) | |
2109 | + | func unstakeLand (jc) = { | |
2110 | + | let kK = kH(gv) | |
2111 | + | if ((size(gv.payments) != 0)) | |
2197 | 2112 | then throw("No payments required") | |
2198 | 2113 | else { | |
2199 | - | let c = toString( | |
2200 | - | let | |
2201 | - | let | |
2202 | - | let | |
2203 | - | let | |
2204 | - | let | |
2205 | - | let | |
2206 | - | let | |
2207 | - | let | |
2208 | - | let | |
2209 | - | let | |
2210 | - | let | |
2211 | - | let | |
2212 | - | let | |
2213 | - | let | |
2214 | - | if (!(isDefined( | |
2215 | - | then throw(("Your staked lands don't contain " + | |
2114 | + | let c = toString(gv.caller) | |
2115 | + | let fN = ja(c, em, jc) | |
2116 | + | let bp = fN._2 | |
2117 | + | let jk = fN._3 | |
2118 | + | let kt = dj(c) | |
2119 | + | let gr = gx(jk[cY]) | |
2120 | + | let iW = dt(jk[cX]) | |
2121 | + | let hM = (iW / cu) | |
2122 | + | let eS = gw(gr, hM, -1) | |
2123 | + | let kN = dh(jk[cZ]) | |
2124 | + | let kx = split(valueOrElse(getString(kN), "0_0_0_0_0_0"), "_") | |
2125 | + | let kO = makeString(gp(kx, gr, hM, -1), "_") | |
2126 | + | let jH = jx(c, bp, iW, em) | |
2127 | + | let kq = split_51C(valueOrElse(getString(kt), ""), "_") | |
2128 | + | let cP = indexOf(kq, bp) | |
2129 | + | if (!(isDefined(cP))) | |
2130 | + | then throw(("Your staked lands don't contain " + bp)) | |
2216 | 2131 | else { | |
2217 | - | let | |
2218 | - | let | |
2219 | - | if (( | |
2220 | - | then throw(("Your gWL are taking part in voting, cannot unstake until " + toString( | |
2132 | + | let bW = lastBlock.timestamp | |
2133 | + | let kR = valueOrElse(getInteger(cS, bB(c)), 0) | |
2134 | + | if ((kR >= bW)) | |
2135 | + | then throw(("Your gWL are taking part in voting, cannot unstake until " + toString(kR))) | |
2221 | 2136 | else { | |
2222 | - | let | |
2223 | - | if (( | |
2224 | - | then throw(("Your staked lands took part in arbitrage, cannot unstake until " + toString( | |
2137 | + | let kS = (valueOrElse(getInteger(cT, b(c)), 0) + cq) | |
2138 | + | if ((kS > bW)) | |
2139 | + | then throw(("Your staked lands took part in arbitrage, cannot unstake until " + toString(kS))) | |
2225 | 2140 | else { | |
2226 | - | let | |
2227 | - | let | |
2228 | - | let | |
2141 | + | let kA = dk(c) | |
2142 | + | let kB = valueOrElse(getInteger(kA), 0) | |
2143 | + | let kT = if ((iW > kB)) | |
2229 | 2144 | then 0 | |
2230 | - | else ( | |
2231 | - | let | |
2232 | - | $Tuple2(([ScriptTransfer( | |
2233 | - | then StringEntry( | |
2234 | - | else DeleteEntry( | |
2145 | + | else (kB - iW) | |
2146 | + | let kQ = invoke(cT, "onStakeUnstakeLand", [c], nil) | |
2147 | + | $Tuple2(([ScriptTransfer(gv.caller, 1, fromBase58String(bp)), DeleteEntry(bi(bp)), DeleteEntry(bl(ap, bp, c)), StringEntry(dg(), eS), StringEntry(kN, kO), StringEntry(jH._2, makeString(jH._3, ":")), if ((size(kq) > 1)) | |
2148 | + | then StringEntry(kt, makeString_11C(removeByIndex(kq, value(cP)), "_")) | |
2149 | + | else DeleteEntry(kt), IntegerEntry(kA, kT)] ++ kK), kQ) | |
2235 | 2150 | } | |
2236 | 2151 | } | |
2237 | 2152 | } | |
2240 | 2155 | ||
2241 | 2156 | ||
2242 | 2157 | ||
2243 | - | @Callable( | |
2158 | + | @Callable(gv) | |
2244 | 2159 | func stakeDuck () = { | |
2245 | - | let | |
2246 | - | if ((size( | |
2160 | + | let kK = kH(gv) | |
2161 | + | if ((size(gv.payments) != 1)) | |
2247 | 2162 | then throw("Exactly one payment required") | |
2248 | 2163 | else { | |
2249 | - | let | |
2250 | - | let | |
2251 | - | let | |
2252 | - | if (( | |
2253 | - | then throw((("NFT " + | |
2164 | + | let kL = value(gv.payments[0]) | |
2165 | + | let bg = value(kL.assetId) | |
2166 | + | let cB = toString(gv.caller) | |
2167 | + | if ((kL.amount != 1)) | |
2168 | + | then throw((("NFT " + aq) + " token should be attached as payment")) | |
2254 | 2169 | else { | |
2255 | - | let | |
2256 | - | let | |
2257 | - | then ( | |
2170 | + | let jg = value(assetInfo(bg)) | |
2171 | + | let kU = if (if (ci) | |
2172 | + | then (jg.issuer == this) | |
2258 | 2173 | else false) | |
2259 | - | then contains( | |
2174 | + | then contains(jg.name, ar) | |
2260 | 2175 | else false | |
2261 | - | if (if (if (( | |
2262 | - | then ( | |
2176 | + | if (if (if ((jg.issuer != dJ)) | |
2177 | + | then (jg.issuer != dK) | |
2263 | 2178 | else false) | |
2264 | - | then !( | |
2179 | + | then !(kU) | |
2265 | 2180 | else false) | |
2266 | - | then throw((((("Unknown issuer of " + | |
2267 | - | else if (if (!(contains( | |
2268 | - | then !( | |
2181 | + | then throw((((("Unknown issuer of " + aq) + " or ") + ar) + " token")) | |
2182 | + | else if (if (!(contains(jg.name, aq))) | |
2183 | + | then !(kU) | |
2269 | 2184 | else false) | |
2270 | - | then throw((((("Only NFT " + | |
2185 | + | then throw((((("Only NFT " + aq) + " or ") + ar) + " tokens are accepted")) | |
2271 | 2186 | else { | |
2272 | - | let | |
2273 | - | let | |
2274 | - | if (isDefined(getInteger( | |
2275 | - | then throw((("NFT " + | |
2276 | - | else if (isDefined(getString( | |
2277 | - | then throw(("You already staked one duck: " + | |
2187 | + | let kV = toBase58String(bg) | |
2188 | + | let jh = bi(kV) | |
2189 | + | if (isDefined(getInteger(jh))) | |
2190 | + | then throw((("NFT " + jg.name) + " is already staked")) | |
2191 | + | else if (isDefined(getString(by(cB)))) | |
2192 | + | then throw(("You already staked one duck: " + jg.name)) | |
2278 | 2193 | else { | |
2279 | - | let | |
2280 | - | let | |
2281 | - | let | |
2282 | - | let | |
2283 | - | let | |
2284 | - | let | |
2285 | - | let | |
2286 | - | ([IntegerEntry( | |
2194 | + | let kW = bA(kV) | |
2195 | + | let bT = getString(kW) | |
2196 | + | let hx = bz(kV) | |
2197 | + | let kX = getString(hx) | |
2198 | + | let iP = t(kV) | |
2199 | + | let iQ = ab(valueOrElse(getInteger(x(kV)), 0)) | |
2200 | + | let kY = valueOrElse(getInteger(iP), iQ) | |
2201 | + | ([IntegerEntry(jh, lastBlock.timestamp), IntegerEntry(bl(aq, toBase58String(bg), cB), lastBlock.timestamp), StringEntry(bx(kV), cB), StringEntry(by(cB), kV)] ++ (if (isDefined(bT)) | |
2287 | 2202 | then nil | |
2288 | - | else ([StringEntry( | |
2203 | + | else ([StringEntry(kW, ax)] ++ (if (isDefined(kX)) | |
2289 | 2204 | then nil | |
2290 | - | else (([StringEntry( | |
2205 | + | else (([StringEntry(hx, "0:0_0_0_0_0_0:0_0_0_0_0_0:")] :+ IntegerEntry(iP, kY)) ++ kK))))) | |
2291 | 2206 | } | |
2292 | 2207 | } | |
2293 | 2208 | } | |
2296 | 2211 | ||
2297 | 2212 | ||
2298 | 2213 | ||
2299 | - | @Callable( | |
2300 | - | func unstakeDuck ( | |
2301 | - | let | |
2302 | - | if ((size( | |
2214 | + | @Callable(gv) | |
2215 | + | func unstakeDuck (kV) = { | |
2216 | + | let kK = kH(gv) | |
2217 | + | if ((size(gv.payments) != 0)) | |
2303 | 2218 | then throw("No payments required") | |
2304 | 2219 | else { | |
2305 | - | let | |
2306 | - | let | |
2307 | - | let | |
2308 | - | let | |
2309 | - | if (!(isDefined(getInteger( | |
2310 | - | then throw((("NFT " + | |
2311 | - | else if (!(isDefined(getString( | |
2312 | - | then throw((("The duck " + | |
2220 | + | let bg = fromBase58String(kV) | |
2221 | + | let cB = toString(gv.caller) | |
2222 | + | let jg = value(assetInfo(bg)) | |
2223 | + | let jh = bi(kV) | |
2224 | + | if (!(isDefined(getInteger(jh)))) | |
2225 | + | then throw((("NFT " + jg.name) + " is not staked")) | |
2226 | + | else if (!(isDefined(getString(by(cB))))) | |
2227 | + | then throw((("The duck " + jg.name) + " is not staked")) | |
2313 | 2228 | else { | |
2314 | - | let | |
2315 | - | if (( | |
2229 | + | let jj = valueOrErrorMessage(getString(bx(kV)), (("NFT " + jg.name) + " is orphaned")) | |
2230 | + | if ((jj != cB)) | |
2316 | 2231 | then throw("Staked NFT is not yours") | |
2317 | - | else if ( | |
2232 | + | else if (ke(kV)) | |
2318 | 2233 | then throw("unstakeDuck_checkTournament") | |
2319 | 2234 | else { | |
2320 | - | let | |
2321 | - | let | |
2322 | - | let | |
2323 | - | if (( | |
2324 | - | then throw((("Please heal your duck to " + toString( | |
2325 | - | else ([ScriptTransfer( | |
2235 | + | let iP = t(kV) | |
2236 | + | let iQ = ab(valueOrElse(getInteger(x(kV)), 0)) | |
2237 | + | let an = valueOrElse(getInteger(iP), iQ) | |
2238 | + | if ((iQ > an)) | |
2239 | + | then throw((("Please heal your duck to " + toString(iQ)) + "hp before unstaking")) | |
2240 | + | else ([ScriptTransfer(gv.caller, 1, bg), DeleteEntry(jh), DeleteEntry(iP), DeleteEntry(bA(kV)), DeleteEntry(bx(kV)), DeleteEntry(bl(aq, kV, cB)), DeleteEntry(by(cB))] ++ kK) | |
2326 | 2241 | } | |
2327 | 2242 | } | |
2328 | 2243 | } | |
2330 | 2245 | ||
2331 | 2246 | ||
2332 | 2247 | ||
2333 | - | @Callable( | |
2334 | - | func claimRes ( | |
2335 | - | let | |
2336 | - | if ((size( | |
2248 | + | @Callable(gv) | |
2249 | + | func claimRes (ez,kZ) = { | |
2250 | + | let kK = kH(gv) | |
2251 | + | if ((size(gv.payments) != 0)) | |
2337 | 2252 | then throw("No payments required") | |
2338 | 2253 | else { | |
2339 | - | let c = toString( | |
2340 | - | let | |
2341 | - | let | |
2342 | - | $Tuple2((((( | |
2343 | - | } | |
2344 | - | } | |
2345 | - | ||
2346 | - | ||
2347 | - | ||
2348 | - | @Callable( | |
2349 | - | func claimResToWH ( | |
2350 | - | let | |
2351 | - | if ((size( | |
2254 | + | let c = toString(gv.originCaller) | |
2255 | + | let fa = jl(c, ez, em, kZ) | |
2256 | + | let u = valueOrErrorMessage(getString(by(c)), "You don't have a duck staked") | |
2257 | + | $Tuple2(((((fa._1 ++ jT(u, fraction(N, ez, ct))._1) :+ StringEntry(fa._2, makeString(fa._3, ":"))) :+ StringEntry(fa._4, makeString(fa._5, ":"))) ++ kK), fa._3[aZ]) | |
2258 | + | } | |
2259 | + | } | |
2260 | + | ||
2261 | + | ||
2262 | + | ||
2263 | + | @Callable(gv) | |
2264 | + | func claimResToWH (ez,kZ) = { | |
2265 | + | let kK = kH(gv) | |
2266 | + | if ((size(gv.payments) != 0)) | |
2352 | 2267 | then throw("No payments required") | |
2353 | 2268 | else { | |
2354 | - | let c = toString( | |
2355 | - | let | |
2356 | - | $Tuple2((((( | |
2357 | - | } | |
2358 | - | } | |
2359 | - | ||
2360 | - | ||
2361 | - | ||
2362 | - | @Callable( | |
2363 | - | func flight ( | |
2364 | - | let | |
2365 | - | if ((size( | |
2269 | + | let c = toString(gv.originCaller) | |
2270 | + | let fa = jl(c, ez, el, kZ) | |
2271 | + | $Tuple2(((((fa._1 ++ jU(c, fraction(N, ez, ct))._1) :+ StringEntry(fa._2, makeString(fa._3, ":"))) :+ StringEntry(fa._4, makeString(fa._5, ":"))) ++ kK), fa._5[aQ]) | |
2272 | + | } | |
2273 | + | } | |
2274 | + | ||
2275 | + | ||
2276 | + | ||
2277 | + | @Callable(gv) | |
2278 | + | func flight (iE,iF) = { | |
2279 | + | let kK = kH(gv) | |
2280 | + | if ((size(gv.payments) != 0)) | |
2366 | 2281 | then throw("No payments required") | |
2367 | 2282 | else { | |
2368 | - | let | |
2369 | - | let | |
2370 | - | let | |
2371 | - | let | |
2372 | - | let | |
2373 | - | let | |
2374 | - | let | |
2375 | - | if (( | |
2283 | + | let bC = toString(gv.caller) | |
2284 | + | let ha = iD(bC, iE, iF) | |
2285 | + | let iJ = ha._1 | |
2286 | + | let u = ha._2 | |
2287 | + | let kW = bA(u) | |
2288 | + | let je = valueOrElse(getString(kW), ax) | |
2289 | + | let iL = ha._4 | |
2290 | + | if ((iL == je)) | |
2376 | 2291 | then throw("You can't fly to the same location") | |
2377 | 2292 | else { | |
2378 | - | let cr = split(iX, "_") | |
2379 | - | let lm = (cr[br] == "T") | |
2380 | - | let ln = (cr[br] == "D") | |
2381 | - | let gx = G(B) | |
2382 | - | let lo = valueOrElse(getString(gx), ",;,_,;,_,;,_,;,_,;,_,;,") | |
2383 | - | let lp = fk(lo, hp._5) | |
2384 | - | let lq = lp._1 | |
2385 | - | let lr = lp._2 | |
2386 | - | let ls = if (!(cl(dh, jq))) | |
2387 | - | then if (lm) | |
2388 | - | then cp(jq, iX, 5) | |
2389 | - | else if (!(ln)) | |
2390 | - | then if ((iV > 0)) | |
2391 | - | then $Tuple2(iX, iV) | |
2392 | - | else $Tuple2(jq, 0) | |
2393 | - | else if ((iV > 0)) | |
2293 | + | let ce = split(iL, "_") | |
2294 | + | let la = (ce[bd] == "T") | |
2295 | + | let lb = (ce[bd] == "D") | |
2296 | + | let gh = z(u) | |
2297 | + | let lc = valueOrElse(getString(gh), ",;,_,;,_,;,_,;,_,;,_,;,") | |
2298 | + | let ld = fb(lc, ha._5) | |
2299 | + | let le = ld._1 | |
2300 | + | let lf = ld._2 | |
2301 | + | let hp = ld._3 | |
2302 | + | let lg = if (!(bY(cU, je))) | |
2303 | + | then if (la) | |
2304 | + | then cc(je, iL, 5) | |
2305 | + | else if (!(lb)) | |
2306 | + | then if ((iJ > 0)) | |
2307 | + | then $Tuple2(iL, iJ) | |
2308 | + | else $Tuple2(je, 0) | |
2309 | + | else if ((iJ > 0)) | |
2394 | 2310 | then { | |
2395 | - | let | |
2396 | - | if (( | |
2397 | - | then $Tuple2( | |
2311 | + | let dn = invoke(this, "processDelivery", [u], nil) | |
2312 | + | if ((dn == dn)) | |
2313 | + | then $Tuple2(je, iJ) | |
2398 | 2314 | else throw("Strict value is not equal to itself.") | |
2399 | 2315 | } | |
2400 | - | else $Tuple2( | |
2401 | - | else if ( | |
2402 | - | then if (!( | |
2316 | + | else $Tuple2(je, 0) | |
2317 | + | else if (bS(cU, je)) | |
2318 | + | then if (!(bS(cU, iL))) | |
2403 | 2319 | then throw("Your duck is taking part in the tournament") | |
2404 | 2320 | else { | |
2405 | - | let | |
2406 | - | let | |
2407 | - | let | |
2408 | - | if (( | |
2409 | - | then | |
2410 | - | else if (( | |
2321 | + | let lh = parseIntValue(ce[be]) | |
2322 | + | let li = split(je, "_") | |
2323 | + | let bU = valueOrElse(getInteger(cU, bF), 0) | |
2324 | + | if ((lh != (parseIntValue(li[be]) + 1))) | |
2325 | + | then cc(je, iL, 7) | |
2326 | + | else if ((iJ > 0)) | |
2411 | 2327 | then { | |
2412 | - | let | |
2413 | - | let | |
2414 | - | then invoke( | |
2328 | + | let lj = valueOrElse(getInteger(cU, bJ(bU, u)), 0) | |
2329 | + | let lk = if ((lh > lj)) | |
2330 | + | then invoke(cU, "saveDuckResult", [u, lh], nil) | |
2415 | 2331 | else unit | |
2416 | - | if (( | |
2417 | - | then $Tuple2( | |
2332 | + | if ((lk == lk)) | |
2333 | + | then $Tuple2(iL, iJ) | |
2418 | 2334 | else throw("Strict value is not equal to itself.") | |
2419 | 2335 | } | |
2420 | - | else $Tuple2( | |
2336 | + | else $Tuple2(je, 0) | |
2421 | 2337 | } | |
2422 | - | else throw(("Unknown curLocation:" + | |
2423 | - | let | |
2424 | - | let | |
2425 | - | $Tuple2(((([StringEntry( | |
2426 | - | then [StringEntry( | |
2427 | - | else nil)) ++ | |
2428 | - | then | |
2429 | - | else | |
2338 | + | else throw(("Unknown curLocation:" + je)) | |
2339 | + | let ll = lg._1 | |
2340 | + | let lm = lg._2 | |
2341 | + | $Tuple2(((([StringEntry(kW, ll), StringEntry(gh, le), IntegerEntry(t(u), lm)] ++ kK) ++ (if (lf) | |
2342 | + | then [StringEntry(F(u), "0_0_0_0_0")] | |
2343 | + | else nil)) ++ jT(u, if ((iJ > 0)) | |
2344 | + | then O | |
2345 | + | else P)._1), ha._3) | |
2430 | 2346 | } | |
2431 | 2347 | } | |
2432 | 2348 | } | |
2433 | 2349 | ||
2434 | 2350 | ||
2435 | 2351 | ||
2436 | - | @Callable( | |
2437 | - | func heal ( | |
2438 | - | let | |
2439 | - | if (if (if ((0 > | |
2352 | + | @Callable(gv) | |
2353 | + | func heal (ln,lo,lp) = { | |
2354 | + | let kK = kH(gv) | |
2355 | + | if (if (if ((0 > ln)) | |
2440 | 2356 | then true | |
2441 | - | else (0 > | |
2357 | + | else (0 > lo)) | |
2442 | 2358 | then true | |
2443 | - | else (0 > | |
2359 | + | else (0 > lp)) | |
2444 | 2360 | then throw("Quantity cannot be negative") | |
2445 | 2361 | else { | |
2446 | - | let | |
2447 | - | if ( | |
2362 | + | let u = valueOrErrorMessage(getString(by(toString(gv.caller))), "You don't have a duck staked") | |
2363 | + | if (ke(u)) | |
2448 | 2364 | then throw("heal_checkTournament") | |
2449 | 2365 | else { | |
2450 | - | let | |
2451 | - | let | |
2452 | - | let | |
2453 | - | let | |
2454 | - | if (( | |
2455 | - | then throw((("HP should be < " + toString( | |
2366 | + | let lq = [ln, lo, lp] | |
2367 | + | let iP = t(u) | |
2368 | + | let iQ = ab(valueOrElse(getInteger(x(u)), 0)) | |
2369 | + | let lr = valueOrElse(getInteger(iP), iQ) | |
2370 | + | if ((lr >= iQ)) | |
2371 | + | then throw((("HP should be < " + toString(iQ)) + " to heal")) | |
2456 | 2372 | else { | |
2457 | - | let | |
2458 | - | let | |
2459 | - | let | |
2373 | + | let hx = bz(u) | |
2374 | + | let ib = hw(hx) | |
2375 | + | let ls = if ((ib[bb] == "")) | |
2460 | 2376 | then nil | |
2461 | - | else split_4C( | |
2462 | - | func | |
2463 | - | let | |
2464 | - | let | |
2465 | - | then parseIntValue( | |
2377 | + | else split_4C(ib[bb], "_") | |
2378 | + | func lt (eI,cb) = { | |
2379 | + | let dp = eI._2 | |
2380 | + | let gR = if ((size(ls) > dp)) | |
2381 | + | then parseIntValue(ls[dp]) | |
2466 | 2382 | else 0 | |
2467 | - | if ((3 > | |
2383 | + | if ((3 > dp)) | |
2468 | 2384 | then { | |
2469 | - | let | |
2470 | - | if (( | |
2471 | - | then throw(((("You have only " + toString( | |
2472 | - | else $Tuple3(( | |
2385 | + | let lu = lq[dp] | |
2386 | + | if ((lu > gR)) | |
2387 | + | then throw(((("You have only " + toString(gR)) + " of ") + aG[dp])) | |
2388 | + | else $Tuple3((eI._1 :+ toString((gR - lu))), (dp + 1), (eI._3 + (parseIntValue(split(cb, "_")[aL]) * lu))) | |
2473 | 2389 | } | |
2474 | - | else $Tuple3(( | |
2390 | + | else $Tuple3((eI._1 :+ toString(gR)), (dp + 1), eI._3) | |
2475 | 2391 | } | |
2476 | 2392 | ||
2477 | - | let | |
2478 | - | let | |
2479 | - | let | |
2480 | - | let | |
2481 | - | func | |
2482 | - | then | |
2483 | - | else | |
2484 | - | ||
2485 | - | func | |
2486 | - | then | |
2393 | + | let fa = { | |
2394 | + | let eK = aJ | |
2395 | + | let eL = size(eK) | |
2396 | + | let eM = $Tuple3(nil, 0, 0) | |
2397 | + | func eN (eO,eP) = if ((eP >= eL)) | |
2398 | + | then eO | |
2399 | + | else lt(eO, eK[eP]) | |
2400 | + | ||
2401 | + | func eQ (eO,eP) = if ((eP >= eL)) | |
2402 | + | then eO | |
2487 | 2403 | else throw("List size exceeds 50") | |
2488 | 2404 | ||
2489 | - | | |
2405 | + | eQ(eN(eN(eN(eN(eN(eN(eN(eN(eN(eN(eN(eN(eN(eN(eN(eN(eN(eN(eN(eN(eN(eN(eN(eN(eN(eN(eN(eN(eN(eN(eN(eN(eN(eN(eN(eN(eN(eN(eN(eN(eN(eN(eN(eN(eN(eN(eN(eN(eN(eN(eM, 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) | |
2490 | 2406 | } | |
2491 | - | let | |
2492 | - | $Tuple2((([IntegerEntry( | |
2407 | + | let lv = min([iQ, (lr + fa._3)]) | |
2408 | + | $Tuple2((([IntegerEntry(iP, lv), StringEntry(hx, makeString_2C([ib[aY], ib[aZ], ib[ba], makeString(fa._1, "_")], ":"))] ++ kK) ++ jT(u, (Y * ((ln + lo) + lp)))._1), lv) | |
2493 | 2409 | } | |
2494 | 2410 | } | |
2495 | 2411 | } | |
2497 | 2413 | ||
2498 | 2414 | ||
2499 | 2415 | ||
2500 | - | @Callable( | |
2416 | + | @Callable(gv) | |
2501 | 2417 | func healES () = { | |
2502 | - | let | |
2503 | - | if ((size( | |
2418 | + | let kK = kH(gv) | |
2419 | + | if ((size(gv.payments) != 1)) | |
2504 | 2420 | then throw("Exactly one payment required") | |
2505 | 2421 | else { | |
2506 | - | let | |
2507 | - | if (( | |
2422 | + | let kL = value(gv.payments[0]) | |
2423 | + | if ((kL.assetId != cn)) | |
2508 | 2424 | then throw("Allowed USDT payment only!") | |
2509 | 2425 | else { | |
2510 | - | let | |
2511 | - | if ( | |
2426 | + | let u = valueOrErrorMessage(getString(by(toString(gv.caller))), "You don't have a duck staked") | |
2427 | + | if (ke(u)) | |
2512 | 2428 | then throw("healES_checkTournament") | |
2513 | 2429 | else { | |
2514 | - | let | |
2515 | - | let | |
2516 | - | let | |
2517 | - | if (( | |
2430 | + | let iP = t(u) | |
2431 | + | let iQ = ab(valueOrElse(getInteger(x(u)), 0)) | |
2432 | + | let lr = valueOrElse(getInteger(iP), iQ) | |
2433 | + | if ((lr > 0)) | |
2518 | 2434 | then throw("HP should be 0 to call Emergency Service") | |
2519 | 2435 | else { | |
2520 | - | let | |
2521 | - | let | |
2522 | - | let | |
2436 | + | let hx = bz(u) | |
2437 | + | let ib = hw(hx) | |
2438 | + | let ls = if ((ib[bb] == "")) | |
2523 | 2439 | then nil | |
2524 | - | else split_4C( | |
2525 | - | let | |
2526 | - | then parseIntValue( | |
2440 | + | else split_4C(ib[bb], "_") | |
2441 | + | let lw = if ((size(ls) > 0)) | |
2442 | + | then parseIntValue(ls[0]) | |
2527 | 2443 | else 0 | |
2528 | - | let | |
2529 | - | then parseIntValue( | |
2444 | + | let lx = if ((size(ls) > 1)) | |
2445 | + | then parseIntValue(ls[1]) | |
2530 | 2446 | else 0 | |
2531 | - | let | |
2532 | - | then parseIntValue( | |
2447 | + | let ly = if ((size(ls) > 2)) | |
2448 | + | then parseIntValue(ls[2]) | |
2533 | 2449 | else 0 | |
2534 | - | if (if (if (( | |
2450 | + | if (if (if ((lw > 0)) | |
2535 | 2451 | then true | |
2536 | - | else ( | |
2452 | + | else (lx > 0)) | |
2537 | 2453 | then true | |
2538 | - | else ( | |
2454 | + | else (ly > 0)) | |
2539 | 2455 | then throw("You have to use own Medical Kit") | |
2540 | 2456 | else { | |
2541 | - | let | |
2542 | - | let | |
2543 | - | then split_4C(value( | |
2457 | + | let lz = getString(cR, bD()) | |
2458 | + | let lA = if (isDefined(lz)) | |
2459 | + | then split_4C(value(lz), "_") | |
2544 | 2460 | else nil | |
2545 | - | let | |
2546 | - | then parseIntValue( | |
2461 | + | let lB = if ((size(lA) > 0)) | |
2462 | + | then parseIntValue(lA[0]) | |
2547 | 2463 | else 0 | |
2548 | - | if ((0 >= | |
2464 | + | if ((0 >= lB)) | |
2549 | 2465 | then throw("There are no Medical Kits L1 at Emergency Service storage") | |
2550 | 2466 | else { | |
2551 | - | let | |
2552 | - | let | |
2553 | - | let | |
2554 | - | let | |
2555 | - | let | |
2556 | - | if (( | |
2557 | - | then throw(("Payment attached should be " + toString( | |
2467 | + | let lv = (lr + parseIntValue(split(aJ[0], "_")[aL])) | |
2468 | + | let lC = makeString([toString((lB - 1)), removeByIndex(lA, 0)], "_") | |
2469 | + | let cb = split(aJ[0], "_") | |
2470 | + | let lD = ca(cb) | |
2471 | + | let lE = fraction((lD * az), ay, (ct * aO)) | |
2472 | + | if ((kL.amount != lE)) | |
2473 | + | then throw(("Payment attached should be " + toString(lE))) | |
2558 | 2474 | else { | |
2559 | - | let | |
2560 | - | $Tuple2((( | |
2475 | + | let fa = dl(invoke(cR, "updateEsStorage", [lC], [AttachedPayment(cn, lE)])) | |
2476 | + | $Tuple2(((kK :+ IntegerEntry(iP, lv)) ++ jT(u, S)._1), fa) | |
2561 | 2477 | } | |
2562 | 2478 | } | |
2563 | 2479 | } | |
2569 | 2485 | ||
2570 | 2486 | ||
2571 | 2487 | ||
2572 | - | @Callable( | |
2573 | - | func updateBackpack ( | |
2488 | + | @Callable(gv) | |
2489 | + | func updateBackpack (u,lF) = if ((gv.caller != cR)) | |
2574 | 2490 | then throw("permission denied") | |
2575 | - | else $Tuple2([StringEntry( | |
2576 | - | ||
2577 | - | ||
2578 | - | ||
2579 | - | @Callable( | |
2491 | + | else $Tuple2([StringEntry(bz(u), lF)], lF) | |
2492 | + | ||
2493 | + | ||
2494 | + | ||
2495 | + | @Callable(gv) | |
2580 | 2496 | func commitForRandom () = { | |
2581 | - | let | |
2582 | - | let | |
2583 | - | let c = toString( | |
2584 | - | $Tuple2(([IntegerEntry( | |
2585 | - | } | |
2586 | - | ||
2587 | - | ||
2588 | - | ||
2589 | - | @Callable( | |
2590 | - | func revealRandom ( | |
2591 | - | let | |
2592 | - | let c = toString( | |
2593 | - | let | |
2594 | - | let | |
2595 | - | if (( | |
2596 | - | then throw(("Random number is not ready yet, wait until height = " + toString( | |
2497 | + | let kK = kH(gv) | |
2498 | + | let lG = (height + de) | |
2499 | + | let c = toString(gv.caller) | |
2500 | + | $Tuple2(([IntegerEntry(df(c), lG)] ++ kK), lG) | |
2501 | + | } | |
2502 | + | ||
2503 | + | ||
2504 | + | ||
2505 | + | @Callable(gv) | |
2506 | + | func revealRandom (dF) = { | |
2507 | + | let kK = kH(gv) | |
2508 | + | let c = toString(gv.caller) | |
2509 | + | let lH = df(c) | |
2510 | + | let lG = valueOrErrorMessage(getInteger(lH), "You have to commitForRandom() first!") | |
2511 | + | if ((lG > height)) | |
2512 | + | then throw(("Random number is not ready yet, wait until height = " + toString(lG))) | |
2597 | 2513 | else { | |
2598 | - | let | |
2599 | - | let | |
2600 | - | let | |
2601 | - | $Tuple2(([DeleteEntry( | |
2602 | - | } | |
2603 | - | } | |
2604 | - | ||
2605 | - | ||
2606 | - | ||
2607 | - | @Callable( | |
2514 | + | let dH = value(value(blockInfoByHeight(lG)).vrf) | |
2515 | + | let dG = toBytes(valueOrElse(getString(dx(c)), "")) | |
2516 | + | let lI = dE(dF, dG, dH) | |
2517 | + | $Tuple2(([DeleteEntry(lH)] ++ kK), lI) | |
2518 | + | } | |
2519 | + | } | |
2520 | + | ||
2521 | + | ||
2522 | + | ||
2523 | + | @Callable(gv) | |
2608 | 2524 | func buySLand () = { | |
2609 | - | let | |
2610 | - | if ((size( | |
2525 | + | let kK = kH(gv) | |
2526 | + | if ((size(gv.payments) != 1)) | |
2611 | 2527 | then throw("Exactly one payment required") | |
2612 | 2528 | else { | |
2613 | - | let | |
2614 | - | if (( | |
2529 | + | let kL = value(gv.payments[0]) | |
2530 | + | if ((kL.assetId != cn)) | |
2615 | 2531 | then throw("Allowed USDT payment only!") | |
2616 | - | else if (( | |
2617 | - | then throw(("Payment attached should be " + toString( | |
2532 | + | else if ((kL.amount != dQ)) | |
2533 | + | then throw(("Payment attached should be " + toString(dQ))) | |
2618 | 2534 | else { | |
2619 | - | let | |
2620 | - | let | |
2621 | - | $Tuple2(((( | |
2535 | + | let fa = iw(gv.caller, gv.transactionId) | |
2536 | + | let lJ = do(invoke(cV, "burnAcres", [dS], nil)) | |
2537 | + | $Tuple2((((fa._1 :+ ScriptTransfer(cR, kL.amount, cn)) ++ jU(toString(gv.caller), U)._1) ++ kK), $Tuple2(fa._2._1, lJ)) | |
2622 | 2538 | } | |
2623 | 2539 | } | |
2624 | 2540 | } | |
2625 | 2541 | ||
2626 | 2542 | ||
2627 | 2543 | ||
2628 | - | @Callable( | |
2629 | - | func expedition ( | |
2630 | - | let | |
2631 | - | if ((size( | |
2544 | + | @Callable(gv) | |
2545 | + | func expedition (iE,iF) = { | |
2546 | + | let kK = kH(gv) | |
2547 | + | if ((size(gv.payments) != 0)) | |
2632 | 2548 | then throw("No payments required") | |
2633 | 2549 | else { | |
2634 | - | let bQ = toString(gK.caller) | |
2635 | - | let hp = iP(bQ, iQ, iR) | |
2636 | - | let B = hp._2 | |
2637 | - | let jb = A(B) | |
2638 | - | let hL = bN(B) | |
2639 | - | let io = hK(hL) | |
2640 | - | let jQ = split(io[bo], "_") | |
2641 | - | let jS = makeString(fd(true, jQ, ed), "_") | |
2642 | - | let gx = G(B) | |
2643 | - | let lo = valueOrElse(getString(gx), ",;,_,;,_,;,_,;,_,;,_,;,") | |
2644 | - | let lW = fk(lo, hp._5) | |
2645 | - | let lq = lW._1 | |
2646 | - | let lr = lW._2 | |
2647 | - | let lX = iI(gK.caller, gK.transactionId) | |
2648 | - | let iO = lX._2._1 | |
2649 | - | let fj = if ((0 >= hp._1)) | |
2650 | - | then $Tuple3([IntegerEntry(jb, 0), StringEntry(gx, lq)], "", 0) | |
2651 | - | else $Tuple3((lX._1 ++ (if (lr) | |
2652 | - | then [StringEntry(M(B), "0_0_0_0_0")] | |
2653 | - | else ((((nil :+ StringEntry(bO(B), makeString([lX._2._2, "L", iO], "_"))) :+ IntegerEntry(jb, hp._1)) :+ StringEntry(gx, lq)) :+ StringEntry(hL, makeString([io[bm], io[bn], jS, io[bp]], ":"))))), iO, hp._3) | |
2654 | - | if (kq(B)) | |
2550 | + | let bC = toString(gv.caller) | |
2551 | + | let ha = iD(bC, iE, iF) | |
2552 | + | let u = ha._2 | |
2553 | + | let iP = t(u) | |
2554 | + | let hx = bz(u) | |
2555 | + | let ib = hw(hx) | |
2556 | + | let jE = split(ib[ba], "_") | |
2557 | + | let jG = makeString(eU(true, jE, dP), "_") | |
2558 | + | let gh = z(u) | |
2559 | + | let lc = valueOrElse(getString(gh), ",;,_,;,_,;,_,;,_,;,_,;,") | |
2560 | + | let lK = fb(lc, ha._5) | |
2561 | + | let le = lK._1 | |
2562 | + | let lf = lK._2 | |
2563 | + | let hp = lK._3 | |
2564 | + | let lL = iw(gv.caller, gv.transactionId) | |
2565 | + | let iC = lL._2._1 | |
2566 | + | let fa = if ((0 >= ha._1)) | |
2567 | + | then $Tuple3([IntegerEntry(iP, 0), StringEntry(gh, le)], "", 0) | |
2568 | + | else $Tuple3((lL._1 ++ (if (lf) | |
2569 | + | then [StringEntry(F(u), "0_0_0_0_0")] | |
2570 | + | else ((((nil :+ StringEntry(bA(u), makeString([lL._2._2, "L", iC], "_"))) :+ IntegerEntry(iP, ha._1)) :+ StringEntry(gh, le)) :+ StringEntry(hx, makeString([ib[aY], ib[aZ], jG, ib[bb]], ":"))))), iC, ha._3) | |
2571 | + | if (ke(u)) | |
2655 | 2572 | then throw("expedition_checkTournament") | |
2656 | 2573 | else { | |
2657 | - | let | |
2658 | - | $Tuple2((( | |
2574 | + | let lJ = do(invoke(cV, "burnAcres", [dS], nil)) | |
2575 | + | $Tuple2(((fa._1 ++ jT(u, U)._1) ++ kK), $Tuple3(fa._2, fa._3, lJ)) | |
2659 | 2576 | } | |
2660 | 2577 | } | |
2661 | 2578 | } | |
2662 | 2579 | ||
2663 | 2580 | ||
2664 | 2581 | ||
2665 | - | @Callable( | |
2582 | + | @Callable(gv) | |
2666 | 2583 | func buySLandForAcres () = { | |
2667 | - | let | |
2668 | - | if ((size( | |
2584 | + | let kK = kH(gv) | |
2585 | + | if ((size(gv.payments) != 1)) | |
2669 | 2586 | then throw("exactly 1 payment must be attached") | |
2670 | 2587 | else { | |
2671 | - | let | |
2672 | - | let | |
2673 | - | if (if (!(isDefined( | |
2588 | + | let kL = gv.payments[0] | |
2589 | + | let fh = kL.amount | |
2590 | + | if (if (!(isDefined(kL.assetId))) | |
2674 | 2591 | then true | |
2675 | - | else (value( | |
2592 | + | else (value(kL.assetId) != dd)) | |
2676 | 2593 | then throw("ACRES payments only!") | |
2677 | - | else if (( | |
2678 | - | then throw(("Payment attached should be " + toString( | |
2594 | + | else if ((fh != dS)) | |
2595 | + | then throw(("Payment attached should be " + toString(dS))) | |
2679 | 2596 | else { | |
2680 | - | let | |
2681 | - | let | |
2682 | - | $Tuple2((( | |
2597 | + | let fa = iw(gv.caller, gv.transactionId) | |
2598 | + | let lJ = do(invoke(cV, "burnAcres", [dS], [AttachedPayment(dd, fh)])) | |
2599 | + | $Tuple2(((fa._1 ++ jU(toString(gv.caller), U)._1) ++ kK), $Tuple2(fa._2._1, lJ)) | |
2683 | 2600 | } | |
2684 | 2601 | } | |
2685 | 2602 | } | |
2686 | 2603 | ||
2687 | 2604 | ||
2688 | 2605 | ||
2689 | - | @Callable( | |
2690 | - | func upgradeInfra ( | |
2691 | - | let | |
2692 | - | if ((size( | |
2606 | + | @Callable(gv) | |
2607 | + | func upgradeInfra (bp) = { | |
2608 | + | let kK = kH(gv) | |
2609 | + | if ((size(gv.payments) != 0)) | |
2693 | 2610 | then throw("No payments required") | |
2694 | 2611 | else { | |
2695 | - | let | |
2696 | - | let | |
2697 | - | $Tuple2((( | |
2698 | - | } | |
2699 | - | } | |
2700 | - | ||
2701 | - | ||
2702 | - | ||
2703 | - | @Callable( | |
2704 | - | func activateArtifact ( | |
2705 | - | let | |
2706 | - | if ((size( | |
2612 | + | let fa = jy(true, gv.caller, 0, bp) | |
2613 | + | let u = valueOrErrorMessage(getString(by(toString(gv.caller))), "You don't have a duck staked") | |
2614 | + | $Tuple2(((fa._1 ++ kK) ++ jT(u, fraction(V, fa._3, ct))._1), fa._2) | |
2615 | + | } | |
2616 | + | } | |
2617 | + | ||
2618 | + | ||
2619 | + | ||
2620 | + | @Callable(gv) | |
2621 | + | func activateArtifact (lM,lN) = { | |
2622 | + | let kK = kH(gv) | |
2623 | + | if ((size(gv.payments) != 0)) | |
2707 | 2624 | then throw("No payments required") | |
2708 | 2625 | else { | |
2709 | - | let c = toString( | |
2710 | - | let | |
2711 | - | let | |
2712 | - | if (("PRESALE" == | |
2713 | - | then | |
2714 | - | else if (("ONBOARD" == | |
2715 | - | then | |
2626 | + | let c = toString(gv.caller) | |
2627 | + | let fa = { | |
2628 | + | let cm = lM | |
2629 | + | if (("PRESALE" == cm)) | |
2630 | + | then kc(c, lN) | |
2631 | + | else if (("ONBOARD" == cm)) | |
2632 | + | then jV(c) | |
2716 | 2633 | else throw("Unknown artifact") | |
2717 | 2634 | } | |
2718 | - | ( | |
2719 | - | } | |
2720 | - | } | |
2721 | - | ||
2722 | - | ||
2723 | - | ||
2724 | - | @Callable( | |
2725 | - | func mergeLands ( | |
2726 | - | let | |
2727 | - | if ((size( | |
2635 | + | (fa ++ kK) | |
2636 | + | } | |
2637 | + | } | |
2638 | + | ||
2639 | + | ||
2640 | + | ||
2641 | + | @Callable(gv) | |
2642 | + | func mergeLands (ki) = { | |
2643 | + | let kK = kH(gv) | |
2644 | + | if ((size(gv.payments) != 0)) | |
2728 | 2645 | then throw("No payments required") | |
2729 | 2646 | else { | |
2730 | - | let | |
2731 | - | $Tuple2((( | |
2732 | - | } | |
2733 | - | } | |
2734 | - | ||
2735 | - | ||
2736 | - | ||
2737 | - | @Callable( | |
2738 | - | func cargoExchange ( | |
2739 | - | let | |
2740 | - | if ((size( | |
2647 | + | let fa = kG(toString(gv.caller), ki) | |
2648 | + | $Tuple2(((fa._1 ++ kK) ++ jU(toString(gv.caller), W)._1), fa._2) | |
2649 | + | } | |
2650 | + | } | |
2651 | + | ||
2652 | + | ||
2653 | + | ||
2654 | + | @Callable(gv) | |
2655 | + | func cargoExchange (lO,bp) = { | |
2656 | + | let kK = kH(gv) | |
2657 | + | if ((size(gv.payments) != 0)) | |
2741 | 2658 | then throw("No payments required") | |
2742 | 2659 | else { | |
2743 | - | let | |
2744 | - | let c = toString( | |
2745 | - | let | |
2746 | - | let | |
2747 | - | if (!(isDefined(getInteger( | |
2748 | - | then throw(( | |
2660 | + | let ia = split_4C(lO, ":") | |
2661 | + | let c = toString(gv.originCaller) | |
2662 | + | let jg = value(assetInfo(fromBase58String(bp))) | |
2663 | + | let jh = bi(bp) | |
2664 | + | if (!(isDefined(getInteger(jh)))) | |
2665 | + | then throw((jg.name + " is not staked")) | |
2749 | 2666 | else { | |
2750 | - | let | |
2751 | - | if (( | |
2752 | - | then throw(( | |
2667 | + | let jj = valueOrErrorMessage(getString(bf(bp)), (("NFT " + jg.name) + " is orphaned")) | |
2668 | + | if ((jj != c)) | |
2669 | + | then throw((ap + " is not yours")) | |
2753 | 2670 | else { | |
2754 | - | let | |
2755 | - | let | |
2756 | - | let | |
2757 | - | let | |
2758 | - | let | |
2759 | - | if (( | |
2760 | - | then throw((("Duck location type is " + | |
2761 | - | else if (( | |
2762 | - | then throw(("Duck should be on the land " + | |
2671 | + | let hM = (dt(split(jg.description, "_")[cX]) / cu) | |
2672 | + | let hN = valueOrElse(getInteger(bq(bp)), 0) | |
2673 | + | let u = valueOrErrorMessage(getString(by(c)), "You don't have a duck staked") | |
2674 | + | let je = valueOrElse(getString(bA(u)), ax) | |
2675 | + | let bV = split(value(je), "_") | |
2676 | + | if ((bV[bd] != "L")) | |
2677 | + | then throw((("Duck location type is " + bV[bd]) + ", but should be L")) | |
2678 | + | else if ((bV[be] != bp)) | |
2679 | + | then throw(("Duck should be on the land " + bp)) | |
2763 | 2680 | else { | |
2764 | - | let | |
2765 | - | let | |
2766 | - | let | |
2767 | - | let | |
2768 | - | let | |
2769 | - | let | |
2770 | - | let | |
2771 | - | let | |
2772 | - | ([StringEntry( | |
2681 | + | let hL = bo(bp) | |
2682 | + | let hC = hK(hL, hM, hN) | |
2683 | + | let hx = bz(u) | |
2684 | + | let ib = hw(hx) | |
2685 | + | let fa = hZ(ia, hC, ib) | |
2686 | + | let hT = split(hC[aT], "_") | |
2687 | + | let jv = (parseIntValue(hT[aV]) + fa._7) | |
2688 | + | let jw = (parseIntValue(hT[aW]) - fa._7) | |
2689 | + | ([StringEntry(hx, makeString_2C([ib[aY], fa._4, fa._5, fa._6], ":")), StringEntry(hL, makeString_2C([hC[aP], fa._1, fa._2, fa._3, makeString([hT[aU], toString(jv), toString(jw), hT[aX]], "_")], ":"))] ++ kK) | |
2773 | 2690 | } | |
2774 | 2691 | } | |
2775 | 2692 | } | |
2778 | 2695 | ||
2779 | 2696 | ||
2780 | 2697 | ||
2781 | - | @Callable( | |
2782 | - | func saveWarehouse ( | |
2698 | + | @Callable(gv) | |
2699 | + | func saveWarehouse (hP,bp) = if ((gv.caller != cR)) | |
2783 | 2700 | then throw("Access denied") | |
2784 | 2701 | else { | |
2785 | - | let | |
2786 | - | let | |
2787 | - | if ((size( | |
2702 | + | let hL = bo(bp) | |
2703 | + | let hQ = split_4C(hP, ":") | |
2704 | + | if ((size(hQ) != 5)) | |
2788 | 2705 | then throw("warehouse string should contain 4 ':' separators") | |
2789 | 2706 | else { | |
2790 | - | let | |
2791 | - | let | |
2792 | - | let | |
2793 | - | let | |
2794 | - | if ((0 > | |
2707 | + | let lP = split(hQ[aT], "_")[aU] | |
2708 | + | let jv = hB(hQ) | |
2709 | + | let lQ = hz(hQ[aP]) | |
2710 | + | let jw = ((lQ - parseIntValue(lP)) - jv) | |
2711 | + | if ((0 > jw)) | |
2795 | 2712 | then throw("Operation leads to negative free warehouse space") | |
2796 | 2713 | else { | |
2797 | - | let | |
2798 | - | $Tuple2([StringEntry( | |
2714 | + | let lR = makeString_2C([hQ[aP], hQ[aQ], hQ[aR], hQ[aS], makeString([lP, toString(jv), toString(jw), toString(lQ)], "_")], ":") | |
2715 | + | $Tuple2([StringEntry(hL, lR)], lR) | |
2799 | 2716 | } | |
2800 | 2717 | } | |
2801 | 2718 | } | |
2802 | 2719 | ||
2803 | 2720 | ||
2804 | 2721 | ||
2805 | - | @Callable( | |
2806 | - | func setCustomName ( | |
2807 | - | let | |
2808 | - | if ((size( | |
2722 | + | @Callable(gv) | |
2723 | + | func setCustomName (bg,ks,bk) = { | |
2724 | + | let kK = kH(gv) | |
2725 | + | if ((size(gv.payments) != 1)) | |
2809 | 2726 | then throw("Exactly one payment required") | |
2810 | 2727 | else { | |
2811 | - | let | |
2812 | - | if (( | |
2728 | + | let kL = value(gv.payments[0]) | |
2729 | + | if ((kL.assetId != cn)) | |
2813 | 2730 | then throw("Allowed USDT payment only!") | |
2814 | - | else if (( | |
2815 | - | then throw(("Payment should be " + toString( | |
2816 | - | else if (contains( | |
2817 | - | then throw(("Name should not contain '__': " + | |
2818 | - | else if ((size( | |
2819 | - | then throw(("Name too long, maxLength=" + toString( | |
2731 | + | else if ((kL.amount != dM)) | |
2732 | + | then throw(("Payment should be " + toString(dM))) | |
2733 | + | else if (contains(ks, "__")) | |
2734 | + | then throw(("Name should not contain '__': " + ks)) | |
2735 | + | else if ((size(ks) > dN)) | |
2736 | + | then throw(("Name too long, maxLength=" + toString(dN))) | |
2820 | 2737 | else { | |
2821 | - | let c = toString( | |
2822 | - | let | |
2823 | - | let | |
2824 | - | if (("ACCOUNT" == | |
2738 | + | let c = toString(gv.originCaller) | |
2739 | + | let lS = { | |
2740 | + | let cm = bk | |
2741 | + | if (("ACCOUNT" == cm)) | |
2825 | 2742 | then { | |
2826 | - | let | |
2827 | - | let | |
2828 | - | if (isDefined( | |
2829 | - | then throw(("Name already registered: " + | |
2743 | + | let lT = ei(ks) | |
2744 | + | let lU = getString(lT) | |
2745 | + | if (isDefined(lU)) | |
2746 | + | then throw(("Name already registered: " + ks)) | |
2830 | 2747 | else { | |
2831 | - | let | |
2832 | - | let | |
2833 | - | let | |
2834 | - | then [DeleteEntry( | |
2748 | + | let lV = bs(c) | |
2749 | + | let lW = getString(lV) | |
2750 | + | let lX = if (isDefined(lW)) | |
2751 | + | then [DeleteEntry(ei(value(lW)))] | |
2835 | 2752 | else nil | |
2836 | - | ((( | |
2753 | + | (((lX :+ StringEntry(lV, ks)) :+ StringEntry(lT, c)) ++ jU(c, T)._1) | |
2837 | 2754 | } | |
2838 | 2755 | } | |
2839 | - | else if (("LAND" == | |
2756 | + | else if (("LAND" == cm)) | |
2840 | 2757 | then { | |
2841 | - | let | |
2842 | - | let | |
2843 | - | if (!(isDefined(getInteger( | |
2844 | - | then throw(( | |
2758 | + | let jg = value(assetInfo(fromBase58String(bg))) | |
2759 | + | let jh = bi(bg) | |
2760 | + | if (!(isDefined(getInteger(jh)))) | |
2761 | + | then throw((jg.name + " is not staked")) | |
2845 | 2762 | else { | |
2846 | - | let | |
2847 | - | if (( | |
2848 | - | then throw(( | |
2763 | + | let jj = valueOrErrorMessage(getString(bf(bg)), (("NFT " + jg.name) + " is orphaned")) | |
2764 | + | if ((jj != c)) | |
2765 | + | then throw((ap + " is not yours")) | |
2849 | 2766 | else { | |
2850 | - | let | |
2851 | - | let | |
2852 | - | if (isDefined( | |
2853 | - | then throw(("Name already registered: " + | |
2767 | + | let lT = eb(ks) | |
2768 | + | let lU = getString(lT) | |
2769 | + | if (isDefined(lU)) | |
2770 | + | then throw(("Name already registered: " + ks)) | |
2854 | 2771 | else { | |
2855 | - | let | |
2856 | - | let | |
2857 | - | let | |
2858 | - | then [DeleteEntry( | |
2772 | + | let lY = bh(bg) | |
2773 | + | let lW = getString(lY) | |
2774 | + | let lX = if (isDefined(lW)) | |
2775 | + | then [DeleteEntry(eb(value(lW)))] | |
2859 | 2776 | else nil | |
2860 | - | ((( | |
2777 | + | (((lX :+ StringEntry(lY, ks)) :+ StringEntry(lT, bg)) ++ jU(c, T)._1) | |
2861 | 2778 | } | |
2862 | 2779 | } | |
2863 | 2780 | } | |
2864 | 2781 | } | |
2865 | - | else if (("DUCK" == | |
2782 | + | else if (("DUCK" == cm)) | |
2866 | 2783 | then { | |
2867 | - | let | |
2868 | - | let | |
2869 | - | if (if (!(isDefined(getInteger( | |
2784 | + | let jg = value(assetInfo(fromBase58String(bg))) | |
2785 | + | let jh = bi(bg) | |
2786 | + | if (if (!(isDefined(getInteger(jh)))) | |
2870 | 2787 | then true | |
2871 | - | else !(isDefined(getString( | |
2872 | - | then throw(( | |
2788 | + | else !(isDefined(getString(by(c))))) | |
2789 | + | then throw((jg.name + " is not staked")) | |
2873 | 2790 | else { | |
2874 | - | let | |
2875 | - | if (( | |
2876 | - | then throw(( | |
2791 | + | let jj = valueOrErrorMessage(getString(bx(bg)), (("NFT " + jg.name) + " is orphaned")) | |
2792 | + | if ((jj != c)) | |
2793 | + | then throw((aq + " is not yours")) | |
2877 | 2794 | else { | |
2878 | - | let | |
2879 | - | let | |
2880 | - | if (isDefined( | |
2881 | - | then throw(("Name already registered: " + | |
2795 | + | let lT = eh(ks) | |
2796 | + | let lU = getString(lT) | |
2797 | + | if (isDefined(lU)) | |
2798 | + | then throw(("Name already registered: " + ks)) | |
2882 | 2799 | else { | |
2883 | - | let | |
2884 | - | let | |
2885 | - | let | |
2886 | - | then [DeleteEntry( | |
2800 | + | let lY = br(bg) | |
2801 | + | let lW = getString(lY) | |
2802 | + | let lX = if (isDefined(lW)) | |
2803 | + | then [DeleteEntry(eh(value(lW)))] | |
2887 | 2804 | else nil | |
2888 | - | ((( | |
2805 | + | (((lX :+ StringEntry(lY, ks)) :+ StringEntry(lT, bg)) ++ jT(bg, T)._1) | |
2889 | 2806 | } | |
2890 | 2807 | } | |
2891 | 2808 | } | |
2892 | 2809 | } | |
2893 | 2810 | else throw("Unknown entity type") | |
2894 | 2811 | } | |
2895 | - | $Tuple2((( | |
2812 | + | $Tuple2(((lS :+ ScriptTransfer(cR, kL.amount, cn)) ++ kK), 0) | |
2896 | 2813 | } | |
2897 | 2814 | } | |
2898 | 2815 | } | |
2899 | 2816 | ||
2900 | 2817 | ||
2901 | 2818 | ||
2902 | - | @Callable( | |
2903 | - | func setReferrals ( | |
2819 | + | @Callable(gv) | |
2820 | + | func setReferrals (lZ,ma) = if ((gv.callerPublicKey != cl)) | |
2904 | 2821 | then throw("Permission denied") | |
2905 | 2822 | else { | |
2906 | - | let | |
2907 | - | if ((size( | |
2823 | + | let kK = kH(gv) | |
2824 | + | if ((size(gv.payments) != 0)) | |
2908 | 2825 | then throw("No payments required") | |
2909 | - | else if (!(isDefined(addressFromString( | |
2910 | - | then throw(("Invalid address: " + | |
2826 | + | else if (!(isDefined(addressFromString(lZ)))) | |
2827 | + | then throw(("Invalid address: " + lZ)) | |
2911 | 2828 | else { | |
2912 | - | let | |
2913 | - | if (!(isDefined( | |
2914 | - | then throw(("Invalid address: " + | |
2829 | + | let mb = addressFromString(ma) | |
2830 | + | if (!(isDefined(mb))) | |
2831 | + | then throw(("Invalid address: " + ma)) | |
2915 | 2832 | else { | |
2916 | - | let | |
2917 | - | if (!(isDefined( | |
2833 | + | let mc = getString(dx(lZ)) | |
2834 | + | if (!(isDefined(mc))) | |
2918 | 2835 | then throw("oldPlayer didn't do any tx in game") | |
2919 | - | else if ((0 >= wavesBalance(value( | |
2836 | + | else if ((0 >= wavesBalance(value(mb)).available)) | |
2920 | 2837 | then throw("newPlayer has no WAVES") | |
2921 | 2838 | else { | |
2922 | - | let | |
2923 | - | let | |
2924 | - | let | |
2925 | - | then split_4C(value( | |
2839 | + | let md = ej() | |
2840 | + | let me = getString(md) | |
2841 | + | let mf = if (isDefined(me)) | |
2842 | + | then split_4C(value(me), "_") | |
2926 | 2843 | else nil | |
2927 | - | if (containsElement( | |
2928 | - | then throw(( | |
2844 | + | if (containsElement(mf, ma)) | |
2845 | + | then throw((ma + " is not newbie (already has referrals)")) | |
2929 | 2846 | else { | |
2930 | - | let | |
2931 | - | let | |
2932 | - | if (if (isDefined( | |
2933 | - | then isDefined(addressFromString(value( | |
2847 | + | let jW = bt(ma) | |
2848 | + | let jX = getString(jW) | |
2849 | + | if (if (isDefined(jX)) | |
2850 | + | then isDefined(addressFromString(value(jX))) | |
2934 | 2851 | else false) | |
2935 | - | then throw((( | |
2852 | + | then throw(((ma + " already has refBy: ") + value(jX))) | |
2936 | 2853 | else { | |
2937 | - | let | |
2938 | - | let | |
2939 | - | let | |
2940 | - | then split_4C(value( | |
2854 | + | let mg = bw(lZ) | |
2855 | + | let mh = getString(mg) | |
2856 | + | let mi = if (isDefined(mh)) | |
2857 | + | then split_4C(value(mh), "_") | |
2941 | 2858 | else nil | |
2942 | - | if (containsElement( | |
2943 | - | then throw(((( | |
2859 | + | if (containsElement(mi, ma)) | |
2860 | + | then throw((((lZ + " already contains ") + ma) + " within referrals")) | |
2944 | 2861 | else { | |
2945 | - | let | |
2946 | - | let | |
2947 | - | then value( | |
2948 | - | else makeString_2C(( | |
2949 | - | $Tuple2(([StringEntry( | |
2862 | + | let mj = makeString_2C((mi :+ ma), "_") | |
2863 | + | let mk = if (containsElement(mf, lZ)) | |
2864 | + | then value(me) | |
2865 | + | else makeString_2C((mf :+ lZ), "_") | |
2866 | + | $Tuple2(([StringEntry(jW, lZ), StringEntry(mg, mj), StringEntry(md, mk)] ++ kK), 0) | |
2950 | 2867 | } | |
2951 | 2868 | } | |
2952 | 2869 | } | |
2957 | 2874 | ||
2958 | 2875 | ||
2959 | 2876 | ||
2960 | - | @Callable( | |
2961 | - | func distributePoints ( | |
2962 | - | let | |
2963 | - | if ((size( | |
2877 | + | @Callable(gv) | |
2878 | + | func distributePoints (ml,mm,mn,mo,mp) = { | |
2879 | + | let kK = kH(gv) | |
2880 | + | if ((size(gv.payments) != 0)) | |
2964 | 2881 | then throw("No payments required") | |
2965 | 2882 | else { | |
2966 | - | let c = toString( | |
2967 | - | let | |
2968 | - | let | |
2969 | - | let | |
2883 | + | let c = toString(gv.originCaller) | |
2884 | + | let mq = dq(invoke(cT, "checkWlgXpREADONLY", [c], nil)) | |
2885 | + | let mr = do(mq[1]) | |
2886 | + | let ms = if ((0 >= mr)) | |
2970 | 2887 | then $Tuple2(0, nil) | |
2971 | 2888 | else { | |
2972 | - | let | |
2973 | - | if (( | |
2974 | - | then $Tuple2( | |
2889 | + | let jR = do(invoke(cT, "takeWlgXp", [c], nil)) | |
2890 | + | if ((jR == jR)) | |
2891 | + | then $Tuple2(mr, [IntegerEntry(B(c), do(mq[0])), IntegerEntry(A(c), do(mq[2]))]) | |
2975 | 2892 | else throw("Strict value is not equal to itself.") | |
2976 | 2893 | } | |
2977 | - | let | |
2978 | - | let | |
2979 | - | let | |
2980 | - | let | |
2981 | - | let | |
2982 | - | let | |
2983 | - | let | |
2984 | - | let | |
2985 | - | let | |
2986 | - | if (( | |
2987 | - | then throw((("There are only " + toString( | |
2894 | + | let mt = ms._1 | |
2895 | + | let mu = ms._2 | |
2896 | + | let u = valueOrErrorMessage(getString(by(c)), "You don't have a duck staked") | |
2897 | + | let mv = C(c) | |
2898 | + | let mw = (valueOrElse(getInteger(mv), 0) + mt) | |
2899 | + | let mx = y(u) | |
2900 | + | let my = valueOrElse(getInteger(mx), 0) | |
2901 | + | let mz = (mw + my) | |
2902 | + | let mA = ((((ml + mm) + mn) + mo) + mp) | |
2903 | + | if ((mA > mz)) | |
2904 | + | then throw((("There are only " + toString(mz)) + " free points to distribute")) | |
2988 | 2905 | else { | |
2989 | - | let | |
2990 | - | let | |
2991 | - | let | |
2992 | - | $Tuple2((([IntegerEntry( | |
2906 | + | let mB = v(u) | |
2907 | + | let al = split(valueOrElse(getString(mB), "0_0_0_0_0"), "_") | |
2908 | + | let mC = (mw - mA) | |
2909 | + | $Tuple2((([IntegerEntry(mv, if ((0 > mC)) | |
2993 | 2910 | then 0 | |
2994 | - | else | |
2995 | - | then ( | |
2996 | - | else | |
2911 | + | else mC), IntegerEntry(mx, if ((0 > mC)) | |
2912 | + | then (my + mC) | |
2913 | + | else my), StringEntry(mB, makeString([toString((parseIntValue(al[j]) + ml)), toString((parseIntValue(al[k]) + mm)), toString((parseIntValue(al[l]) + mn)), toString((parseIntValue(al[m]) + mo)), toString((parseIntValue(al[n]) + mp))], "_"))] ++ kK) ++ mu), 0) | |
2997 | 2914 | } | |
2998 | 2915 | } | |
2999 | 2916 | } | |
3000 | 2917 | ||
3001 | 2918 | ||
3002 | 2919 | ||
3003 | - | @Callable( | |
3004 | - | func splitByGlobalWeightsREADONLY ( | |
3005 | - | ||
3006 | - | ||
3007 | - | ||
3008 | - | @Callable( | |
3009 | - | func splitByGlobalAndLocalWeightsREADONLY ( | |
3010 | - | let | |
3011 | - | $Tuple2(nil, $Tuple2( | |
3012 | - | } | |
3013 | - | ||
3014 | - | ||
3015 | - | ||
3016 | - | @Callable( | |
3017 | - | func getBackpackREADONLY ( | |
3018 | - | ||
3019 | - | ||
3020 | - | ||
3021 | - | @Callable( | |
3022 | - | func getWarehouseREADONLY ( | |
3023 | - | let | |
3024 | - | let | |
3025 | - | let | |
3026 | - | $Tuple2(nil, makeString_2C( | |
3027 | - | } | |
3028 | - | ||
3029 | - | ||
3030 | - | ||
3031 | - | @Callable( | |
3032 | - | func saveLastTx () = if (!(containsElement([ | |
2920 | + | @Callable(gv) | |
2921 | + | func splitByGlobalWeightsREADONLY (ez) = $Tuple2(nil, eR(ez)) | |
2922 | + | ||
2923 | + | ||
2924 | + | ||
2925 | + | @Callable(gv) | |
2926 | + | func splitByGlobalAndLocalWeightsREADONLY (mD,mE,gy) = { | |
2927 | + | let gr = gx(gy) | |
2928 | + | $Tuple2(nil, $Tuple2(eR(mD), eC(mE, gr))) | |
2929 | + | } | |
2930 | + | ||
2931 | + | ||
2932 | + | ||
2933 | + | @Callable(gv) | |
2934 | + | func getBackpackREADONLY (u) = $Tuple2(nil, makeString(hw(bz(u)), ":")) | |
2935 | + | ||
2936 | + | ||
2937 | + | ||
2938 | + | @Callable(gv) | |
2939 | + | func getWarehouseREADONLY (bp) = { | |
2940 | + | let jg = value(assetInfo(fromBase58String(bp))) | |
2941 | + | let hM = (dt(split(jg.description, "_")[cX]) / cu) | |
2942 | + | let hN = valueOrElse(getInteger(bq(bp)), 0) | |
2943 | + | $Tuple2(nil, makeString_2C(hK(bo(bp), hM, hN), ":")) | |
2944 | + | } | |
2945 | + | ||
2946 | + | ||
2947 | + | ||
2948 | + | @Callable(gv) | |
2949 | + | func saveLastTx () = if (!(containsElement([cT, cR, cU, cV], gv.caller))) | |
3033 | 2950 | then throw("Access denied") | |
3034 | - | else $Tuple2( | |
3035 | - | ||
3036 | - | ||
3037 | - | ||
3038 | - | @Callable( | |
3039 | - | func updateDuckStats ( | |
2951 | + | else $Tuple2(kH(gv), 42) | |
2952 | + | ||
2953 | + | ||
2954 | + | ||
2955 | + | @Callable(gv) | |
2956 | + | func updateDuckStats (u,jR) = if ((gv.caller != cR)) | |
3040 | 2957 | then throw("Access denied") | |
3041 | - | else | |
3042 | - | ||
3043 | - | ||
3044 | - | ||
3045 | - | @Callable( | |
3046 | - | func updateAccStats (c, | |
2958 | + | else jT(u, jR) | |
2959 | + | ||
2960 | + | ||
2961 | + | ||
2962 | + | @Callable(gv) | |
2963 | + | func updateAccStats (c,jR) = if (!(containsElement([cT, cR, cV], gv.caller))) | |
3047 | 2964 | then throw("Access denied") | |
3048 | - | else | |
3049 | - | ||
3050 | - | ||
3051 | - | ||
3052 | - | @Callable( | |
3053 | - | func equipDuck ( | |
3054 | - | let | |
3055 | - | if ((size( | |
2965 | + | else jU(c, jR) | |
2966 | + | ||
2967 | + | ||
2968 | + | ||
2969 | + | @Callable(gv) | |
2970 | + | func equipDuck (mF) = { | |
2971 | + | let kK = kH(gv) | |
2972 | + | if ((size(gv.payments) != 0)) | |
3056 | 2973 | then throw("No payments required") | |
3057 | 2974 | else { | |
3058 | - | let c = toString( | |
3059 | - | let | |
3060 | - | if ( | |
2975 | + | let c = toString(gv.originCaller) | |
2976 | + | let u = valueOrErrorMessage(getString(by(c)), "You don't have a duck staked") | |
2977 | + | if (ke(u)) | |
3061 | 2978 | then throw("equipDuck_checkTournament") | |
3062 | 2979 | else { | |
3063 | - | let | |
3064 | - | let | |
3065 | - | let | |
3066 | - | let | |
3067 | - | let | |
3068 | - | if ((size( | |
2980 | + | let gh = z(u) | |
2981 | + | let mG = split(valueOrElse(getString(gh), ",;,_,;,_,;,_,;,_,;,_,;,"), "_") | |
2982 | + | let hx = bz(u) | |
2983 | + | let ib = hw(hx) | |
2984 | + | let le = split(mF, "_") | |
2985 | + | if ((size(le) != p)) | |
3069 | 2986 | then throw("Wrong equipment string") | |
3070 | 2987 | else { | |
3071 | - | let | |
3072 | - | let | |
3073 | - | let | |
2988 | + | let gk = fZ(mG, fo(ib[bb]), true, nil) | |
2989 | + | let gl = split(le[o], ";")[1] | |
2990 | + | let aj = if ((gl == "")) | |
3074 | 2991 | then 0 | |
3075 | 2992 | else { | |
3076 | - | let | |
3077 | - | if (( | |
2993 | + | let gm = split(gl, ",")[0] | |
2994 | + | if ((gm == "")) | |
3078 | 2995 | then 0 | |
3079 | 2996 | else { | |
3080 | - | let | |
3081 | - | let | |
3082 | - | let | |
3083 | - | if (if (if (if (if (( | |
2997 | + | let fD = split(gm, ":") | |
2998 | + | let cP = fD[0] | |
2999 | + | let gn = fD[1] | |
3000 | + | if (if (if (if (if ((cP == "06")) | |
3084 | 3001 | then true | |
3085 | - | else ( | |
3002 | + | else (cP == "07")) | |
3086 | 3003 | then true | |
3087 | - | else ( | |
3088 | - | then ( | |
3004 | + | else (cP == "08")) | |
3005 | + | then (gn != "") | |
3089 | 3006 | else false) | |
3090 | - | then (parseIntValue( | |
3007 | + | then (parseIntValue(gn) > 0) | |
3091 | 3008 | else false) | |
3092 | - | then parseIntValue(split( | |
3009 | + | then parseIntValue(split(aJ[parseIntValue(cP)], "_")[aL]) | |
3093 | 3010 | else 0 | |
3094 | 3011 | } | |
3095 | 3012 | } | |
3096 | - | let | |
3097 | - | let | |
3098 | - | let | |
3099 | - | $Tuple2(([StringEntry( | |
3013 | + | let fU = ah(this, u, aj, true) | |
3014 | + | let go = fZ(le, gk, false, fU) | |
3015 | + | let mH = ft(go) | |
3016 | + | $Tuple2(([StringEntry(gh, mF), StringEntry(hx, makeString_2C([ib[aY], ib[aZ], ib[ba], mH], ":")), StringEntry(F(u), makeString([toString(fU[7]), toString(fU[8]), toString(fU[9]), toString(fU[10]), toString(fU[11])], "_"))] ++ kK), 0) | |
3100 | 3017 | } | |
3101 | 3018 | } | |
3102 | 3019 | } | |
3104 | 3021 | ||
3105 | 3022 | ||
3106 | 3023 | ||
3107 | - | @Callable(gK) | |
3108 | - | func fortificateLand (Q,mU) = { | |
3109 | - | let kW = kT(gK) | |
3110 | - | if ((size(gK.payments) != 0)) | |
3111 | - | then throw("No payments required") | |
3112 | - | else { | |
3113 | - | let c = toString(gK.originCaller) | |
3114 | - | let B = valueOrElse(getString(bM(c)), "") | |
3115 | - | let fH = ap(this, B, 0, false) | |
3116 | - | let mV = bE(Q) | |
3117 | - | let mW = split(valueOrElse(getString(mV), ":0_15:0_18:0"), "_") | |
3118 | - | let js = value(assetInfo(fromBase58String(Q))) | |
3119 | - | let hZ = (dG(split(js.description, "_")[dk]) / cH) | |
3120 | - | let ia = valueOrElse(getInteger(bD(Q)), 0) | |
3121 | - | let hY = bC(Q) | |
3122 | - | let id = hX(hY, hZ, ia) | |
3123 | - | let mX = split(id[bh], "_") | |
3124 | - | let mY = parseIntValue(mX[bj]) | |
3125 | - | let mZ = parseIntValue(mX[bk]) | |
3126 | - | let na = split(mU, "_") | |
3127 | - | let nb = gt(mW, fx(id[bg]), mY, mZ, true, nil) | |
3128 | - | let gz = nb._1 | |
3129 | - | let nc = nb._2 | |
3130 | - | let nd = nb._3 | |
3131 | - | let ne = gt(na, gz, nc, nd, false, fH) | |
3132 | - | let gD = ne._1 | |
3133 | - | let nf = ne._2 | |
3134 | - | let ng = ne._3 | |
3135 | - | let mT = fC(gD) | |
3136 | - | let jY = makeString([mX[bi], toString(nf), toString(ng), mX[bl]], "_") | |
3137 | - | $Tuple2(([StringEntry(mV, mU), StringEntry(hY, makeString_2C([id[bd], id[be], id[bf], mT, jY], ":"))] ++ kW), 0) | |
3138 | - | } | |
3139 | - | } | |
3140 | - | ||
3141 | - | ||
3142 | - | ||
3143 | - | @Callable(gK) | |
3144 | - | func initDuckTourAttempt (B) = if ((gK.caller != dh)) | |
3024 | + | @Callable(gv) | |
3025 | + | func initDuckTourAttempt (u) = if ((gv.caller != cU)) | |
3145 | 3026 | then throw("Access denied") | |
3146 | 3027 | else { | |
3147 | - | let | |
3148 | - | let | |
3149 | - | let | |
3150 | - | let | |
3151 | - | let | |
3152 | - | let | |
3153 | - | let | |
3154 | - | $Tuple2([IntegerEntry( | |
3028 | + | let iP = t(u) | |
3029 | + | let iQ = ab(valueOrElse(getInteger(x(u)), 0)) | |
3030 | + | let kY = valueOrElse(getInteger(iP), iQ) | |
3031 | + | let mI = bA(u) | |
3032 | + | let je = valueOrElse(getString(mI), ax) | |
3033 | + | let bU = valueOrElse(getInteger(cU, bF), 0) | |
3034 | + | let mJ = (toString(bU) + "_T_0") | |
3035 | + | $Tuple2([IntegerEntry(D(u), kY), IntegerEntry(iP, iQ), StringEntry(E(u), je), StringEntry(mI, mJ)], mJ) | |
3155 | 3036 | } | |
3156 | 3037 | ||
3157 | 3038 | ||
3158 | 3039 | ||
3159 | - | @Callable( | |
3040 | + | @Callable(gv) | |
3160 | 3041 | func breakAttempt () = { | |
3161 | - | let | |
3162 | - | let | |
3163 | - | let | |
3164 | - | let | |
3165 | - | if ((split( | |
3042 | + | let kK = kH(gv) | |
3043 | + | let u = valueOrErrorMessage(getString(by(toString(gv.caller))), "You don't have a duck staked") | |
3044 | + | let mI = bA(u) | |
3045 | + | let je = valueOrElse(getString(mI), ax) | |
3046 | + | if ((split(je, "_")[bd] != "T")) | |
3166 | 3047 | then throw("Your duck is not in the tournament") | |
3167 | 3048 | else { | |
3168 | - | let | |
3169 | - | let | |
3170 | - | $Tuple2((( | |
3171 | - | } | |
3172 | - | } | |
3173 | - | ||
3174 | - | ||
3175 | - | ||
3176 | - | @Callable( | |
3177 | - | func breakAttemptCallback () = if (( | |
3049 | + | let mK = getIntegerValue(D(u)) | |
3050 | + | let mL = getStringValue(E(u)) | |
3051 | + | $Tuple2(((kK :+ IntegerEntry(t(u), mK)) :+ StringEntry(mI, mL)), je) | |
3052 | + | } | |
3053 | + | } | |
3054 | + | ||
3055 | + | ||
3056 | + | ||
3057 | + | @Callable(gv) | |
3058 | + | func breakAttemptCallback () = if ((gv.caller != cU)) | |
3178 | 3059 | then throw("Access denied") | |
3179 | 3060 | else { | |
3180 | - | let | |
3181 | - | $Tuple2([IntegerEntry( | |
3061 | + | let u = valueOrErrorMessage(getString(by(toString(gv.originCaller))), "You don't have a duck staked") | |
3062 | + | $Tuple2([IntegerEntry(t(u), getIntegerValue(D(u))), StringEntry(bA(u), getStringValue(E(u)))], "breakAttemptCallback") | |
3182 | 3063 | } | |
3183 | 3064 | ||
3184 | 3065 | ||
3185 | 3066 | ||
3186 | - | @Callable( | |
3187 | - | func exitTournamentInternal ( | |
3067 | + | @Callable(gv) | |
3068 | + | func exitTournamentInternal (u) = if ((gv.caller != this)) | |
3188 | 3069 | then throw("Access denied") | |
3189 | 3070 | else { | |
3190 | - | let | |
3191 | - | let | |
3192 | - | $Tuple2([IntegerEntry( | |
3071 | + | let mK = getIntegerValue(D(u)) | |
3072 | + | let mL = getStringValue(E(u)) | |
3073 | + | $Tuple2([IntegerEntry(t(u), mK), StringEntry(bA(u), mL)], false) | |
3193 | 3074 | } | |
3194 | 3075 | ||
3195 | 3076 | ||
3196 | 3077 | ||
3197 | - | @Callable( | |
3198 | - | func processDelivery ( | |
3078 | + | @Callable(gv) | |
3079 | + | func processDelivery (u) = if ((gv.caller != this)) | |
3199 | 3080 | then throw("Access denied") | |
3200 | 3081 | else { | |
3201 | - | let c = toString( | |
3202 | - | let | |
3203 | - | if (( | |
3204 | - | then throw(("Delivery is not available, fund=" + | |
3082 | + | let c = toString(gv.originCaller) | |
3083 | + | let mM = valueOrElse(getInteger(cR, bE), 0) | |
3084 | + | if ((aA > mM)) | |
3085 | + | then throw(("Delivery is not available, fund=" + dy(mM, 6))) | |
3205 | 3086 | else { | |
3206 | - | let | |
3207 | - | let | |
3208 | - | let | |
3209 | - | let | |
3210 | - | let | |
3211 | - | then valueOrElse(getInteger( | |
3087 | + | let bW = lastBlock.timestamp | |
3088 | + | let mN = L(c) | |
3089 | + | let mO = valueOrElse(getInteger(M(c)), 0) | |
3090 | + | let mP = (bW / a) | |
3091 | + | let fJ = if ((mO == mP)) | |
3092 | + | then valueOrElse(getInteger(mN), 0) | |
3212 | 3093 | else 0 | |
3213 | - | let | |
3214 | - | let | |
3215 | - | if (( | |
3216 | - | then throw((("You already used " + toString( | |
3094 | + | let mQ = valueOrElse(getInteger(cV, d(c)), 0) | |
3095 | + | let mR = (aE + (mQ / aF)) | |
3096 | + | if ((fJ >= mR)) | |
3097 | + | then throw((("You already used " + toString(mR)) + " delivery attempts for today")) | |
3217 | 3098 | else { | |
3218 | - | let | |
3219 | - | let | |
3220 | - | $Tuple2([IntegerEntry( | |
3099 | + | let mS = K(u) | |
3100 | + | let mT = invoke(cR, "sendDeliveryReward", [c], nil) | |
3101 | + | $Tuple2([IntegerEntry(mN, (fJ + 1)), IntegerEntry(M(c), mP), IntegerEntry(mS, (valueOrElse(getInteger(mS), 0) + 1))], mT) | |
3221 | 3102 | } | |
3222 | 3103 | } | |
3223 | 3104 | } | |
3224 | 3105 | ||
3225 | 3106 | ||
3226 | 3107 | ||
3227 | - | @Callable( | |
3228 | - | func | |
3229 | - | let | |
3230 | - | if (! | |
3231 | - | then throw(" | |
3232 | - | else | |
3233 | - | | |
3234 | - | | |
3235 | - | | |
3236 | - | | |
3237 | - | | |
3238 | - | ||
3239 | - | ||
3240 | - | then throw("WLGOLD | |
3108 | + | @Callable(gv) | |
3109 | + | func robLand (iE,iF) = { | |
3110 | + | let kK = kH(gv) | |
3111 | + | if ((size(gv.payments) != 1)) | |
3112 | + | then throw("exactly 1 payment must be attached") | |
3113 | + | else { | |
3114 | + | let kL = gv.payments[0] | |
3115 | + | let mU = kL.amount | |
3116 | + | if (if (!(isDefined(kL.assetId))) | |
3117 | + | then true | |
3118 | + | else (value(kL.assetId) != db)) | |
3119 | + | then throw("WLGOLD payments only!") | |
3120 | + | else if ((mU != aB)) | |
3121 | + | then throw((("Payment should be " + dy(aB, 8)) + " WLGOLD")) | |
3241 | 3122 | else { | |
3242 | - | let | |
3243 | - | if (( | |
3244 | - | then throw(" | |
3123 | + | let c = toString(gv.caller) | |
3124 | + | if (!(sigVerify_8Kb(iE, iF, cl))) | |
3125 | + | then throw("signature does not match") | |
3245 | 3126 | else { | |
3246 | - | let iZ = if ((size(fp) >= 2)) | |
3247 | - | then fp[2] | |
3248 | - | else "" | |
3249 | - | let bQ = toString(gK.caller) | |
3250 | - | let ja = valueOrElse(getString(dK(bQ)), "") | |
3251 | - | if ((ja != iZ)) | |
3252 | - | then throw(((("Tx ids don't match! In state: " + ja) + ", in msg: ") + iZ)) | |
3127 | + | let fg = split_4C(toUtf8String(iE), ";") | |
3128 | + | let mV = split_4C(fg[0], "|") | |
3129 | + | let iH = split(mV[es], "_") | |
3130 | + | let iI = parseIntValue(iH[0]) | |
3131 | + | let iJ = parseIntValue(iH[1]) | |
3132 | + | let iT = mV[et] | |
3133 | + | let mW = split(fg[1], "|") | |
3134 | + | let mX = mW[eu] | |
3135 | + | if ((mX != "B")) | |
3136 | + | then throw("Only bank robbery is supported") | |
3253 | 3137 | else { | |
3254 | - | let B = fp[0] | |
3255 | - | if (kq(B)) | |
3256 | - | then throw("prepareRobbery_checkTournament") | |
3138 | + | let iM = parseIntValue(mW[ew]) | |
3139 | + | if (if ((iM > (lastBlock.timestamp + dL))) | |
3140 | + | then true | |
3141 | + | else ((lastBlock.timestamp - dL) > iM)) | |
3142 | + | then throw(((("signature outdated: logTime=" + toString(iM)) + ", bcTime=") + toString(lastBlock.timestamp))) | |
3257 | 3143 | else { | |
3258 | - | let aB = ax(this, B)._1 | |
3259 | - | if ((aB > nt)) | |
3260 | - | then throw(((("Payment " + toString(nt)) + " < required ") + toString(aB))) | |
3144 | + | let iN = mW[ev] | |
3145 | + | let iO = valueOrElse(getString(dx(c)), "") | |
3146 | + | if ((iO != iN)) | |
3147 | + | then throw(((("Tx ids don't match! In state: " + iO) + ", in msg: ") + iN)) | |
3261 | 3148 | else { | |
3262 | - | let nu = split(fp[1], "_") | |
3263 | - | let aA = lastBlock.timestamp | |
3264 | - | let aC = valueOrElse(getInteger(S(B)), 0) | |
3265 | - | let aD = valueOrElse(getString(T(B)), "") | |
3266 | - | let aE = valueOrElse(getInteger(R(aD)), 0) | |
3267 | - | if (if ((aC != y)) | |
3268 | - | then (aE > aA) | |
3269 | - | else false) | |
3270 | - | then throw(("You already started robbing, wait till " + toString(aE))) | |
3149 | + | let u = valueOrErrorMessage(getString(by(c)), "You don't have a duck staked") | |
3150 | + | let gh = z(u) | |
3151 | + | let lc = valueOrElse(getString(gh), ",;,_,;,_,;,_,;,_,;,_,;,") | |
3152 | + | let mY = fb(lc, iT) | |
3153 | + | let le = mY._1 | |
3154 | + | let lf = mY._2 | |
3155 | + | let mZ = mY._3 | |
3156 | + | let je = valueOrElse(getString(bA(u)), ax) | |
3157 | + | if (bS(cU, je)) | |
3158 | + | then throw("Your duck is taking part in the tournament") | |
3271 | 3159 | else { | |
3272 | - | func nv (eR,Q) = { | |
3273 | - | let nw = valueOrElse(getInteger(P(Q)), 0) | |
3274 | - | let nx = valueOrElse(getInteger(R(Q)), 0) | |
3275 | - | if ((nw > size(v))) | |
3276 | - | then throw("Invalid state") | |
3277 | - | else if ((aA > nx)) | |
3160 | + | let bW = lastBlock.timestamp | |
3161 | + | let mN = I(c) | |
3162 | + | let mO = valueOrElse(getInteger(J(c)), 0) | |
3163 | + | let mP = (bW / a) | |
3164 | + | let fJ = if ((mO == mP)) | |
3165 | + | then valueOrElse(getInteger(mN), 0) | |
3166 | + | else 0 | |
3167 | + | let mQ = valueOrElse(getInteger(cV, d(c)), 0) | |
3168 | + | let na = (aC + (mQ / aD)) | |
3169 | + | if ((fJ >= na)) | |
3170 | + | then throw((("You already used " + toString(na)) + " robbery attempts for today")) | |
3171 | + | else { | |
3172 | + | let mS = H(u) | |
3173 | + | let nb = if ((iJ > 0)) | |
3278 | 3174 | then { | |
3279 | - | let ny = valueOrElse(getInteger(bw(Q)), 0) | |
3280 | - | if ((0 >= ny)) | |
3281 | - | then eR | |
3282 | - | else { | |
3283 | - | let gr = value(assetInfo(fromBase58String(Q))) | |
3284 | - | let jw = split(gr.description, "_") | |
3285 | - | let ji = dG(jw[dk]) | |
3286 | - | let nz = jh(Q, ji) | |
3287 | - | let gQ = (aA - ny) | |
3288 | - | let jz = fraction(gQ, (nz * ji), a) | |
3289 | - | if ((w > jz)) | |
3290 | - | then eR | |
3291 | - | else (eR :+ Q) | |
3292 | - | } | |
3175 | + | let mM = assetBalance(this, db) | |
3176 | + | let nc = if (mZ) | |
3177 | + | then (2 * aB) | |
3178 | + | else (5 * aB) | |
3179 | + | if ((nc > mM)) | |
3180 | + | then throw(((("Robbery is not available, funds = " + dy(mM, 8)) + " WLGOLD, required = ") + dy(nc, 8))) | |
3181 | + | else [ScriptTransfer(gv.caller, nc, db)] | |
3293 | 3182 | } | |
3294 | - | else eR | |
3295 | - | } | |
3296 | - | ||
3297 | - | let nA = { | |
3298 | - | let eT = nu | |
3299 | - | let eU = size(eT) | |
3300 | - | let eV = nil | |
3301 | - | func eW (eX,eY) = if ((eY >= eU)) | |
3302 | - | then eX | |
3303 | - | else nv(eX, eT[eY]) | |
3304 | - | ||
3305 | - | func eZ (eX,eY) = if ((eY >= eU)) | |
3306 | - | then eX | |
3307 | - | else throw("List size exceeds 10") | |
3308 | - | ||
3309 | - | eZ(eW(eW(eW(eW(eW(eW(eW(eW(eW(eW(eV, 0), 1), 2), 3), 4), 5), 6), 7), 8), 9), 10) | |
3310 | - | } | |
3311 | - | if ((size(nA) == 0)) | |
3312 | - | then throw("No candidates for robbery") | |
3313 | - | else { | |
3314 | - | let nB = dR(size(nA), iQ, iR) | |
3315 | - | let Q = nA[nB] | |
3316 | - | $Tuple2(([IntegerEntry(P(Q), x), IntegerEntry(R(Q), (aA + v[x])), IntegerEntry(S(B), z), StringEntry(T(B), Q)] ++ kW), Q) | |
3183 | + | else nil | |
3184 | + | $Tuple2((((((((((kK ++ nb) ++ (if (lf) | |
3185 | + | then [StringEntry(F(u), "0_0_0_0_0")] | |
3186 | + | else nil)) ++ jT(u, if ((iJ > 0)) | |
3187 | + | then Q | |
3188 | + | else R)._1) :+ IntegerEntry(G(u), bW)) :+ IntegerEntry(mN, (fJ + 1))) :+ IntegerEntry(J(c), mP)) :+ IntegerEntry(mS, (valueOrElse(getInteger(mS), 0) + 1))) :+ StringEntry(gh, le)) :+ IntegerEntry(t(u), max([iJ, 0]))), 0) | |
3317 | 3189 | } | |
3318 | 3190 | } | |
3319 | 3191 | } | |
3321 | 3193 | } | |
3322 | 3194 | } | |
3323 | 3195 | } | |
3324 | - | } | |
3325 | - | } | |
3326 | - | ||
3327 | - | ||
3328 | - | ||
3329 | - | @Callable(gK) | |
3330 | - | func robLand (iQ,iR) = { | |
3331 | - | let kW = kT(gK) | |
3332 | - | if (!(sigVerify_8Kb(iQ, iR, cy))) | |
3333 | - | then throw("signature does not match") | |
3334 | - | else { | |
3335 | - | let bQ = toString(gK.caller) | |
3336 | - | let B = valueOrErrorMessage(getString(bM(bQ)), "You don't have a duck staked") | |
3337 | - | let aA = lastBlock.timestamp | |
3338 | - | $Tuple2((kW :+ IntegerEntry(N(B), aA)), 0) | |
3339 | - | } | |
3340 | - | } | |
3341 | - | ||
3342 | - | ||
3343 | - | ||
3344 | - | @Callable(gK) | |
3345 | - | func buyRoboDuck () = if (!(cv)) | |
3196 | + | } | |
3197 | + | } | |
3198 | + | ||
3199 | + | ||
3200 | + | ||
3201 | + | @Callable(gv) | |
3202 | + | func buyRoboDuck () = if (!(ci)) | |
3346 | 3203 | then throw("Feature is turned off") | |
3347 | 3204 | else { | |
3348 | - | let | |
3349 | - | if ((size( | |
3205 | + | let kK = kH(gv) | |
3206 | + | if ((size(gv.payments) != 1)) | |
3350 | 3207 | then throw("Exactly one payment required") | |
3351 | 3208 | else { | |
3352 | - | let | |
3353 | - | if (( | |
3209 | + | let kL = value(gv.payments[0]) | |
3210 | + | if ((kL.assetId != cn)) | |
3354 | 3211 | then throw("Allowed USDT payment only!") | |
3355 | - | else if (( | |
3356 | - | then throw((("Payment attached should be " + | |
3212 | + | else if ((kL.amount != dR)) | |
3213 | + | then throw((("Payment attached should be " + dy(dR, 6)) + " USDT")) | |
3357 | 3214 | else { | |
3358 | - | let | |
3359 | - | let | |
3360 | - | let | |
3361 | - | let | |
3362 | - | let | |
3363 | - | let | |
3364 | - | $Tuple2((((( | |
3215 | + | let nd = valueOrElse(getInteger(ek()), 0) | |
3216 | + | let ne = toBytes(nd) | |
3217 | + | let ec = ((ar + "-") + takeRight(toBase16String(ne), 8)) | |
3218 | + | let nf = takeRight(toBase16String(sha256_16Kb(ne)), 6) | |
3219 | + | let iB = Issue(ec, ("Robo Duck NFT for WavesLands game, background color = #" + nf), 1, 0, false) | |
3220 | + | let bg = calculateAssetId(iB) | |
3221 | + | $Tuple2(((((kK :+ IntegerEntry(ek(), (nd + 1))) :+ iB) :+ ScriptTransfer(gv.originCaller, 1, bg)) :+ ScriptTransfer(cR, kL.amount, cn)), $Tuple2(toBase58String(bg), nf)) | |
3365 | 3222 | } | |
3366 | 3223 | } | |
3367 | 3224 | } |
Old | New | Differences | |
---|---|---|---|
1 | 1 | {-# STDLIB_VERSION 6 #-} | |
2 | 2 | {-# SCRIPT_TYPE ACCOUNT #-} | |
3 | 3 | {-# CONTENT_TYPE DAPP #-} | |
4 | 4 | let a = 86400000 | |
5 | 5 | ||
6 | 6 | func b (c) = ("lastArbTimeUser_" + c) | |
7 | 7 | ||
8 | 8 | ||
9 | 9 | func d (c) = ("acresStakedAmountByUser_" + c) | |
10 | 10 | ||
11 | 11 | ||
12 | 12 | let e = 100000000 | |
13 | 13 | ||
14 | 14 | let f = 3200 | |
15 | 15 | ||
16 | 16 | let g = 4000 | |
17 | 17 | ||
18 | 18 | let h = 3 | |
19 | 19 | ||
20 | - | let i = | |
21 | - | ||
22 | - | let j = | |
23 | - | ||
24 | - | let k = | |
25 | - | ||
26 | - | let l = | |
27 | - | ||
28 | - | let m = | |
29 | - | ||
30 | - | let n = | |
31 | - | ||
32 | - | let o = | |
33 | - | ||
34 | - | let p = | |
35 | - | ||
36 | - | let q = | |
37 | - | ||
38 | - | let r = | |
39 | - | ||
40 | - | let s = | |
41 | - | ||
42 | - | ||
43 | - | ||
44 | - | ||
45 | - | ||
46 | - | ||
47 | - | ||
48 | - | ||
49 | - | ||
50 | - | ||
51 | - | ||
52 | - | ||
53 | - | ||
54 | - | ||
55 | - | ||
56 | - | ||
57 | - | ||
58 | - | ||
59 | - | ||
60 | - | ||
61 | - | ||
62 | - | ||
63 | - | ||
64 | - | ||
65 | - | ||
66 | - | ||
67 | - | ||
68 | - | ||
69 | - | ||
70 | - | ||
71 | - | ||
72 | - | ||
73 | - | ||
74 | - | ||
75 | - | ||
76 | - | ||
77 | - | ||
78 | - | ||
79 | - | ||
80 | - | ||
81 | - | ||
82 | - | ||
83 | - | ||
84 | - | ||
85 | - | ||
86 | - | ||
87 | - | ||
88 | - | ||
89 | - | ||
90 | - | ||
91 | - | ||
92 | - | ||
93 | - | ||
94 | - | ||
95 | - | ||
96 | - | ||
97 | - | ||
98 | - | ||
99 | - | ||
100 | - | ||
101 | - | ||
102 | - | ||
103 | - | ||
104 | - | ||
105 | - | ||
106 | - | ||
107 | - | ||
108 | - | ||
109 | - | ||
110 | - | ||
111 | - | ||
112 | - | ||
113 | - | ||
114 | - | ||
115 | - | ||
116 | - | ||
117 | - | ||
118 | - | ||
119 | - | let X = | |
20 | + | let i = ["Strength", "Accuracy", "Intellect", "Endurance", "Dexterity", "Level", "Health"] | |
21 | + | ||
22 | + | let j = 0 | |
23 | + | ||
24 | + | let k = 1 | |
25 | + | ||
26 | + | let l = 2 | |
27 | + | ||
28 | + | let m = 3 | |
29 | + | ||
30 | + | let n = 4 | |
31 | + | ||
32 | + | let o = 0 | |
33 | + | ||
34 | + | let p = 6 | |
35 | + | ||
36 | + | let q = 2 | |
37 | + | ||
38 | + | let r = 2 | |
39 | + | ||
40 | + | let s = 30 | |
41 | + | ||
42 | + | func t (u) = ("duckHealth_" + u) | |
43 | + | ||
44 | + | ||
45 | + | func v (u) = ("duckChars_" + u) | |
46 | + | ||
47 | + | ||
48 | + | func w (u) = ("duckXP_" + u) | |
49 | + | ||
50 | + | ||
51 | + | func x (u) = ("duckLevel_" + u) | |
52 | + | ||
53 | + | ||
54 | + | func y (u) = ("duckFreePoints_" + u) | |
55 | + | ||
56 | + | ||
57 | + | func z (u) = ("duckEquipment_" + u) | |
58 | + | ||
59 | + | ||
60 | + | func A (c) = ("userXP_" + c) | |
61 | + | ||
62 | + | ||
63 | + | func B (c) = ("userLevel_" + c) | |
64 | + | ||
65 | + | ||
66 | + | func C (c) = ("userFreePoints_" + c) | |
67 | + | ||
68 | + | ||
69 | + | func D (u) = ("savedHealth_" + u) | |
70 | + | ||
71 | + | ||
72 | + | func E (u) = ("savedLocation_" + u) | |
73 | + | ||
74 | + | ||
75 | + | func F (u) = ("duckBuffs_" + u) | |
76 | + | ||
77 | + | ||
78 | + | func G (u) = ("lastRobberyTime_" + u) | |
79 | + | ||
80 | + | ||
81 | + | func H (u) = ("totalRobberyCountByDuck_" + u) | |
82 | + | ||
83 | + | ||
84 | + | func I (c) = ("userRobberyCount_" + c) | |
85 | + | ||
86 | + | ||
87 | + | func J (c) = ("userLastRobberyDay_" + c) | |
88 | + | ||
89 | + | ||
90 | + | func K (u) = ("totalDeliveryCountByDuck_" + u) | |
91 | + | ||
92 | + | ||
93 | + | func L (c) = ("userDeliveryCount_" + c) | |
94 | + | ||
95 | + | ||
96 | + | func M (c) = ("userLastDeliveryDay_" + c) | |
97 | + | ||
98 | + | ||
99 | + | let N = 10000 | |
100 | + | ||
101 | + | let O = 10000 | |
102 | + | ||
103 | + | let P = 2000 | |
104 | + | ||
105 | + | let Q = 10000 | |
106 | + | ||
107 | + | let R = 2000 | |
108 | + | ||
109 | + | let S = 100000 | |
110 | + | ||
111 | + | let T = 1000000 | |
112 | + | ||
113 | + | let U = 5000000 | |
114 | + | ||
115 | + | let V = 10000 | |
116 | + | ||
117 | + | let W = 1000000 | |
118 | + | ||
119 | + | let X = 1000000 | |
120 | 120 | ||
121 | 121 | let Y = 10000 | |
122 | 122 | ||
123 | - | let Z = 2000 | |
124 | - | ||
125 | - | let aa = 100000 | |
126 | - | ||
127 | - | let ab = 1000000 | |
128 | - | ||
129 | - | let ac = 5000000 | |
130 | - | ||
131 | - | let ad = 10000 | |
132 | - | ||
133 | - | let ae = 1000000 | |
134 | - | ||
135 | - | let af = 1000000 | |
136 | - | ||
137 | - | let ag = 10000 | |
138 | - | ||
139 | - | func ah (ai) = fraction(f, pow(ai, 4, g, 4, 4, DOWN), e) | |
140 | - | ||
141 | - | ||
142 | - | func aj (ak) = (100 + ak) | |
143 | - | ||
144 | - | ||
145 | - | func al (am,an) = { | |
146 | - | let ao = ah(an) | |
147 | - | [ao, (h * (ao - am))] | |
148 | - | } | |
149 | - | ||
150 | - | ||
151 | - | func ap (aq,B,ar,as) = { | |
152 | - | let at = split(valueOrElse(getString(aq, C(B)), "0_0_0_0_0"), "_") | |
153 | - | let au = valueOrElse(getInteger(aq, E(B)), 0) | |
154 | - | let av = valueOrElse(getInteger(aq, A(B)), aj(au)) | |
155 | - | let aw = split(valueOrElse(getString(aq, M(B)), "0_0_0_0_0"), "_") | |
156 | - | ([parseIntValue(at[l]), parseIntValue(at[m]), parseIntValue(at[n]), parseIntValue(at[o]), parseIntValue(at[p]), au, av] ++ (if (as) | |
157 | - | then [ar, ar, ar, ar, ar] | |
158 | - | else [parseIntValue(aw[l]), parseIntValue(aw[m]), parseIntValue(aw[n]), parseIntValue(aw[o]), parseIntValue(aw[p])])) | |
159 | - | } | |
160 | - | ||
161 | - | ||
162 | - | func ax (aq,B) = { | |
163 | - | let ay = valueOrElse(getInteger(aq, O(B)), 0) | |
164 | - | let az = valueOrElse(getInteger(aq, N(B)), 0) | |
165 | - | let aA = lastBlock.timestamp | |
166 | - | let aB = max([i, (ay - (j * (aA - az)))]) | |
167 | - | let aC = valueOrElse(getInteger(aq, S(B)), 0) | |
168 | - | let aD = valueOrElse(getString(aq, T(B)), "") | |
169 | - | let aE = valueOrElse(getInteger(aq, R(aD)), 0) | |
170 | - | $Tuple5(aB, az, aC, aD, aE) | |
171 | - | } | |
172 | - | ||
173 | - | ||
174 | - | let aF = "LAND" | |
175 | - | ||
176 | - | let aG = "DUCK" | |
177 | - | ||
178 | - | let aH = "ROBO" | |
179 | - | ||
180 | - | let aI = "PRESALE" | |
181 | - | ||
182 | - | let aJ = 6 | |
183 | - | ||
184 | - | let aK = 25 | |
185 | - | ||
186 | - | let aL = 3456000 | |
187 | - | ||
188 | - | let aM = 10000000000 | |
189 | - | ||
190 | - | let aN = "Africa_F_Africa" | |
191 | - | ||
192 | - | let aO = 39637 | |
193 | - | ||
194 | - | let aP = 10 | |
195 | - | ||
196 | - | let aQ = 50000 | |
197 | - | ||
198 | - | let aR = 0 | |
199 | - | ||
200 | - | let aS = 200000000 | |
201 | - | ||
202 | - | let aT = ["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", "Boom-Dog L1", "Boom-Dog L2", "Boom-Dog L3"] | |
203 | - | ||
204 | - | let aU = ["Americas", "Europe", "Asia", "Africa", "Oceania"] | |
205 | - | ||
206 | - | let aV = 10000000 | |
207 | - | ||
208 | - | let aW = [15, 16, 17, 18, 19, 20, 21, 22, 23] | |
209 | - | ||
210 | - | let aX = ["8_8_8_17_17_42_12_0_30_0,0,0,0,0,0,0_", "8_8_8_17_17_42_24_0_60_0,0,5,2,0,0,0_", "8_8_8_17_17_42_36_0_120_0,0,10,4,0,0,0_", "8_19_19_8_27_19_26_1_20_0,0,0,0,0,0,0_001", "8_19_19_8_27_19_52_1_40_0,0,0,0,0,0,0_001", "8_19_19_8_27_19_78_1_80_0,0,0,0,0,0,0_001", "8_8_8_8_8_60_13_2_2_0,0,0,0,0,0,0_011", "8_8_8_8_8_60_26_2_4_0,0,0,0,0,0,0_011", "8_8_8_8_8_60_39_2_8_0,0,0,0,0,0,0_011", "30_30_3_17_17_3_30_3_30_0,0,0,0,0,0,0_111", "30_30_3_17_17_3_60_3_50_0,0,0,0,0,0,0_111", "30_30_3_17_17_3_90_3_70_0,0,0,0,0,0,0_111", "18_18_10_18_18_18_11_4_10_0,0,0,0,0,0,0_201", "18_18_10_18_18_18_22_4_20_0,0,0,0,0,0,0_201", "18_18_10_18_18_18_33_4_30_0,0,0,0,0,0,0_201", "4_13_22_4_35_22_23_0_50,1,0_0,0,0,0,0,0,0_", "4_13_22_4_35_22_46_0_50,1,1_0,2,5,0,0,0,0_", "4_13_22_4_35_22_69_0_50,2,1_0,5,10,0,0,0,0_", "5_25_40_5_10_15_20_1_30,1,1_0,0,0,0,0,0,0_", "5_25_40_5_10_15_40_1_30,1,2_2,1,3,0,0,0,0_", "5_25_40_5_10_15_60_1_30,1,3_5,2,8,0,0,0,0_", "23_23_5_20_23_6_35_2_100_0,0,0,0,0,0,0_", "23_23_5_20_23_6_70_2_150_0,0,0,0,0,0,0_", "23_23_5_20_23_6_105_2_200_0,0,0,0,0,0,0_"] | |
211 | - | ||
212 | - | let aY = 6 | |
213 | - | ||
214 | - | let aZ = 8 | |
215 | - | ||
216 | - | let ba = 9 | |
217 | - | ||
218 | - | let bb = 10 | |
219 | - | ||
220 | - | let bc = 10 | |
221 | - | ||
222 | - | let bd = 0 | |
223 | - | ||
224 | - | let be = 1 | |
225 | - | ||
226 | - | let bf = 2 | |
227 | - | ||
228 | - | let bg = 3 | |
229 | - | ||
230 | - | let bh = 4 | |
231 | - | ||
232 | - | let bi = 0 | |
233 | - | ||
234 | - | let bj = 1 | |
235 | - | ||
236 | - | let bk = 2 | |
237 | - | ||
238 | - | let bl = 3 | |
239 | - | ||
240 | - | let bm = 0 | |
241 | - | ||
242 | - | let bn = 1 | |
243 | - | ||
244 | - | let bo = 2 | |
245 | - | ||
246 | - | let bp = 3 | |
247 | - | ||
248 | - | let bq = 0 | |
249 | - | ||
250 | - | let br = 1 | |
251 | - | ||
252 | - | let bs = 2 | |
253 | - | ||
254 | - | func bt (bu) = ("no_" + bu) | |
255 | - | ||
256 | - | ||
257 | - | func bv (bu) = ("lcna_" + bu) | |
258 | - | ||
259 | - | ||
260 | - | func bw (bu) = ("st_" + bu) | |
261 | - | ||
262 | - | ||
263 | - | func bx (by,bu) = makeString(["las", by, bu], "_") | |
264 | - | ||
265 | - | ||
266 | - | func bz (bA,bu,bB) = ((((("sttao_" + bA) + "_") + bu) + "_") + bB) | |
267 | - | ||
268 | - | ||
269 | - | func bC (Q) = ("wh_" + Q) | |
270 | - | ||
271 | - | ||
272 | - | func bD (bu) = ("infraLevel_" + bu) | |
273 | - | ||
274 | - | ||
275 | - | func bE (Q) = ("fortifications_" + Q) | |
276 | - | ||
277 | - | ||
278 | - | func bF (bu) = ("duckCustomNameByAssetId_" + bu) | |
279 | - | ||
280 | - | ||
281 | - | func bG (c) = ("accountCustomNameByAddr_" + c) | |
282 | - | ||
283 | - | ||
284 | - | func bH (c) = ("accRefBy_" + c) | |
285 | - | ||
286 | - | ||
287 | - | func bI (B) = ("onboardArtActivatedOnDuck_" + B) | |
288 | - | ||
289 | - | ||
290 | - | func bJ (c) = ("onboardArtActivatedDuckBy_" + c) | |
291 | - | ||
292 | - | ||
293 | - | func bK (c) = ("accReferrals_" + c) | |
294 | - | ||
295 | - | ||
296 | - | func bL (bu) = ("duckOwner_" + bu) | |
297 | - | ||
298 | - | ||
299 | - | func bM (bB) = ("stakedDuckByOwner_" + bB) | |
300 | - | ||
301 | - | ||
302 | - | func bN (B) = ("backPack_" + B) | |
303 | - | ||
304 | - | ||
305 | - | func bO (B) = ("duckLocation_" + B) | |
306 | - | ||
307 | - | ||
308 | - | func bP (bQ) = ("%s%s__userGwlReleaseTime__" + bQ) | |
309 | - | ||
310 | - | ||
311 | - | func bR () = "emergencyWarehouseProducts" | |
312 | - | ||
313 | - | ||
314 | - | let bS = "deliveryFund" | |
315 | - | ||
316 | - | let bT = "%s__lastTourId" | |
317 | - | ||
318 | - | func bU (bV) = ("%s%d__tourStaticData__" + toString(bV)) | |
319 | - | ||
320 | - | ||
321 | - | func bW (bV) = ("%s%d__tourDynamicData__" + toString(bV)) | |
322 | - | ||
323 | - | ||
324 | - | func bX (bV,B) = makeString(["%s%d%s__bestResultByTourAndDuck", toString(bV), B], "__") | |
325 | - | ||
326 | - | ||
327 | - | let bY = 0 | |
328 | - | ||
329 | - | let bZ = 1 | |
330 | - | ||
331 | - | let ca = 6 | |
332 | - | ||
333 | - | let cb = 1 | |
334 | - | ||
335 | - | func cc (cd,bV) = { | |
336 | - | let ce = split(valueOrErrorMessage(getString(cd, bU(bV)), (("Error reading tournament " + toString(bV)) + " data")), "__") | |
337 | - | let cf = split_4C(valueOrErrorMessage(getString(cd, bW(bV)), (("Error reading tournament " + toString(bV)) + " data")), "__") | |
338 | - | [ce, cf] | |
339 | - | } | |
340 | - | ||
341 | - | ||
342 | - | func cg (cd,ch) = { | |
343 | - | let ci = valueOrElse(getInteger(cd, bT), 0) | |
344 | - | let cj = split(ch, "_") | |
345 | - | let aA = lastBlock.timestamp | |
346 | - | let ck = cc(cd, ci) | |
347 | - | let ce = ck[bY] | |
348 | - | let cf = ck[bZ] | |
349 | - | if (if (if ((cj[br] == "T")) | |
350 | - | then (parseIntValue(cj[bq]) == ci) | |
123 | + | func Z (aa) = fraction(f, pow(aa, 4, g, 4, 4, DOWN), e) | |
124 | + | ||
125 | + | ||
126 | + | func ab (ac) = (100 + ac) | |
127 | + | ||
128 | + | ||
129 | + | func ad (ae,af) = { | |
130 | + | let ag = Z(af) | |
131 | + | [ag, (h * (ag - ae))] | |
132 | + | } | |
133 | + | ||
134 | + | ||
135 | + | func ah (ai,u,aj,ak) = { | |
136 | + | let al = split(valueOrElse(getString(ai, v(u)), "0_0_0_0_0"), "_") | |
137 | + | let am = valueOrElse(getInteger(ai, x(u)), 0) | |
138 | + | let an = valueOrElse(getInteger(ai, t(u)), ab(am)) | |
139 | + | let ao = split(valueOrElse(getString(ai, F(u)), "0_0_0_0_0"), "_") | |
140 | + | ([parseIntValue(al[j]), parseIntValue(al[k]), parseIntValue(al[l]), parseIntValue(al[m]), parseIntValue(al[n]), am, an] ++ (if (ak) | |
141 | + | then [aj, aj, aj, aj, aj] | |
142 | + | else [parseIntValue(ao[j]), parseIntValue(ao[k]), parseIntValue(ao[l]), parseIntValue(ao[m]), parseIntValue(ao[n])])) | |
143 | + | } | |
144 | + | ||
145 | + | ||
146 | + | let ap = "LAND" | |
147 | + | ||
148 | + | let aq = "DUCK" | |
149 | + | ||
150 | + | let ar = "ROBO" | |
151 | + | ||
152 | + | let as = "PRESALE" | |
153 | + | ||
154 | + | let at = 6 | |
155 | + | ||
156 | + | let au = 25 | |
157 | + | ||
158 | + | let av = 3456000 | |
159 | + | ||
160 | + | let aw = 10000000000 | |
161 | + | ||
162 | + | let ax = "Africa_F_Africa" | |
163 | + | ||
164 | + | let ay = 39637 | |
165 | + | ||
166 | + | let az = 10 | |
167 | + | ||
168 | + | let aA = 50000 | |
169 | + | ||
170 | + | let aB = 100000000 | |
171 | + | ||
172 | + | let aC = 0 | |
173 | + | ||
174 | + | let aD = 200000000 | |
175 | + | ||
176 | + | let aE = 0 | |
177 | + | ||
178 | + | let aF = 200000000 | |
179 | + | ||
180 | + | let aG = ["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", "Boom-Dog L1", "Boom-Dog L2", "Boom-Dog L3"] | |
181 | + | ||
182 | + | let aH = ["Americas", "Europe", "Asia", "Africa", "Oceania"] | |
183 | + | ||
184 | + | let aI = 10000000 | |
185 | + | ||
186 | + | let aJ = ["8_8_8_17_17_42_12_0_30_0,0,0,0,0,0,0_", "8_8_8_17_17_42_24_0_60_0,0,5,2,0,0,0_", "8_8_8_17_17_42_36_0_120_0,0,10,4,0,0,0_", "8_19_19_8_27_19_26_1_20_0,0,0,0,0,0,0_001", "8_19_19_8_27_19_52_1_40_0,0,0,0,0,0,0_001", "8_19_19_8_27_19_78_1_80_0,0,0,0,0,0,0_001", "8_8_8_8_8_60_13_2_2_0,0,0,0,0,0,0_011", "8_8_8_8_8_60_26_2_4_0,0,0,0,0,0,0_011", "8_8_8_8_8_60_39_2_8_0,0,0,0,0,0,0_011", "30_30_3_17_17_3_30_3_30_0,0,0,0,0,0,0_111", "30_30_3_17_17_3_60_3_50_0,0,0,0,0,0,0_111", "30_30_3_17_17_3_90_3_70_0,0,0,0,0,0,0_111", "18_18_10_18_18_18_11_4_10_0,0,0,0,0,0,0_201", "18_18_10_18_18_18_22_4_20_0,0,0,0,0,0,0_201", "18_18_10_18_18_18_33_4_30_0,0,0,0,0,0,0_201", "4_13_22_4_35_22_23_0_50,1,0_0,0,0,0,0,0,0_", "4_13_22_4_35_22_46_0_50,1,1_0,2,5,0,0,0,0_", "4_13_22_4_35_22_69_0_50,2,1_0,5,10,0,0,0,0_", "5_25_40_5_10_15_20_1_30,1,1_0,0,0,0,0,0,0_", "5_25_40_5_10_15_40_1_30,1,2_2,1,3,0,0,0,0_", "5_25_40_5_10_15_60_1_30,1,3_5,2,8,0,0,0,0_", "23_23_5_20_23_6_35_2_100_0,0,0,0,0,0,0_", "23_23_5_20_23_6_70_2_150_0,0,0,0,0,0,0_", "23_23_5_20_23_6_105_2_200_0,0,0,0,0,0,0_"] | |
187 | + | ||
188 | + | let aK = 6 | |
189 | + | ||
190 | + | let aL = 8 | |
191 | + | ||
192 | + | let aM = 9 | |
193 | + | ||
194 | + | let aN = 10 | |
195 | + | ||
196 | + | let aO = 10 | |
197 | + | ||
198 | + | let aP = 0 | |
199 | + | ||
200 | + | let aQ = 1 | |
201 | + | ||
202 | + | let aR = 2 | |
203 | + | ||
204 | + | let aS = 3 | |
205 | + | ||
206 | + | let aT = 4 | |
207 | + | ||
208 | + | let aU = 0 | |
209 | + | ||
210 | + | let aV = 1 | |
211 | + | ||
212 | + | let aW = 2 | |
213 | + | ||
214 | + | let aX = 3 | |
215 | + | ||
216 | + | let aY = 0 | |
217 | + | ||
218 | + | let aZ = 1 | |
219 | + | ||
220 | + | let ba = 2 | |
221 | + | ||
222 | + | let bb = 3 | |
223 | + | ||
224 | + | let bc = 0 | |
225 | + | ||
226 | + | let bd = 1 | |
227 | + | ||
228 | + | let be = 2 | |
229 | + | ||
230 | + | func bf (bg) = ("no_" + bg) | |
231 | + | ||
232 | + | ||
233 | + | func bh (bg) = ("lcna_" + bg) | |
234 | + | ||
235 | + | ||
236 | + | func bi (bg) = ("st_" + bg) | |
237 | + | ||
238 | + | ||
239 | + | func bj (bk,bg) = makeString(["las", bk, bg], "_") | |
240 | + | ||
241 | + | ||
242 | + | func bl (bm,bg,bn) = ((((("sttao_" + bm) + "_") + bg) + "_") + bn) | |
243 | + | ||
244 | + | ||
245 | + | func bo (bp) = ("wh_" + bp) | |
246 | + | ||
247 | + | ||
248 | + | func bq (bg) = ("infraLevel_" + bg) | |
249 | + | ||
250 | + | ||
251 | + | func br (bg) = ("duckCustomNameByAssetId_" + bg) | |
252 | + | ||
253 | + | ||
254 | + | func bs (c) = ("accountCustomNameByAddr_" + c) | |
255 | + | ||
256 | + | ||
257 | + | func bt (c) = ("accRefBy_" + c) | |
258 | + | ||
259 | + | ||
260 | + | func bu (u) = ("onboardArtActivatedOnDuck_" + u) | |
261 | + | ||
262 | + | ||
263 | + | func bv (c) = ("onboardArtActivatedDuckBy_" + c) | |
264 | + | ||
265 | + | ||
266 | + | func bw (c) = ("accReferrals_" + c) | |
267 | + | ||
268 | + | ||
269 | + | func bx (bg) = ("duckOwner_" + bg) | |
270 | + | ||
271 | + | ||
272 | + | func by (bn) = ("stakedDuckByOwner_" + bn) | |
273 | + | ||
274 | + | ||
275 | + | func bz (u) = ("backPack_" + u) | |
276 | + | ||
277 | + | ||
278 | + | func bA (u) = ("duckLocation_" + u) | |
279 | + | ||
280 | + | ||
281 | + | func bB (bC) = ("%s%s__userGwlReleaseTime__" + bC) | |
282 | + | ||
283 | + | ||
284 | + | func bD () = "emergencyWarehouseProducts" | |
285 | + | ||
286 | + | ||
287 | + | let bE = "deliveryFund" | |
288 | + | ||
289 | + | let bF = "%s__lastTourId" | |
290 | + | ||
291 | + | func bG (bH) = ("%s%d__tourStaticData__" + toString(bH)) | |
292 | + | ||
293 | + | ||
294 | + | func bI (bH) = ("%s%d__tourDynamicData__" + toString(bH)) | |
295 | + | ||
296 | + | ||
297 | + | func bJ (bH,u) = makeString(["%s%d%s__bestResultByTourAndDuck", toString(bH), u], "__") | |
298 | + | ||
299 | + | ||
300 | + | let bK = 0 | |
301 | + | ||
302 | + | let bL = 1 | |
303 | + | ||
304 | + | let bM = 6 | |
305 | + | ||
306 | + | let bN = 1 | |
307 | + | ||
308 | + | func bO (bP,bH) = { | |
309 | + | let bQ = split(valueOrErrorMessage(getString(bP, bG(bH)), (("Error reading tournament " + toString(bH)) + " data")), "__") | |
310 | + | let bR = split_4C(valueOrErrorMessage(getString(bP, bI(bH)), (("Error reading tournament " + toString(bH)) + " data")), "__") | |
311 | + | [bQ, bR] | |
312 | + | } | |
313 | + | ||
314 | + | ||
315 | + | func bS (bP,bT) = { | |
316 | + | let bU = valueOrElse(getInteger(bP, bF), 0) | |
317 | + | let bV = split(bT, "_") | |
318 | + | let bW = lastBlock.timestamp | |
319 | + | let bX = bO(bP, bU) | |
320 | + | let bQ = bX[bK] | |
321 | + | let bR = bX[bL] | |
322 | + | if (if (if ((bV[bd] == "T")) | |
323 | + | then (parseIntValue(bV[bc]) == bU) | |
351 | 324 | else false) | |
352 | - | then ( | |
325 | + | then (bR[bN] == "INPROGRESS") | |
353 | 326 | else false) | |
354 | - | then (parseIntValue( | |
327 | + | then (parseIntValue(bQ[bM]) > bW) | |
355 | 328 | else false | |
356 | 329 | } | |
357 | 330 | ||
358 | 331 | ||
359 | - | func | |
360 | - | let | |
361 | - | let | |
362 | - | let | |
363 | - | let | |
364 | - | let | |
365 | - | let | |
366 | - | let | |
367 | - | if (if (if (( | |
368 | - | then (parseIntValue( | |
332 | + | func bY (bP,bT) = { | |
333 | + | let bU = valueOrElse(getInteger(bP, bF), 0) | |
334 | + | let bV = split(bT, "_") | |
335 | + | let bW = lastBlock.timestamp | |
336 | + | let bX = bO(bP, bU) | |
337 | + | let bQ = bX[bK] | |
338 | + | let bR = bX[bL] | |
339 | + | let bZ = bV[bd] | |
340 | + | if (if (if ((bV[bd] == "T")) | |
341 | + | then (parseIntValue(bV[bc]) == bU) | |
369 | 342 | else false) | |
370 | - | then ( | |
343 | + | then (bR[bN] == "INPROGRESS") | |
371 | 344 | else false) | |
372 | - | then (parseIntValue( | |
345 | + | then (parseIntValue(bQ[bM]) > bW) | |
373 | 346 | else false | |
374 | 347 | } | |
375 | 348 | ||
376 | 349 | ||
377 | - | func | |
378 | - | ||
379 | - | ||
380 | - | func | |
381 | - | ||
382 | - | ||
383 | - | let | |
384 | - | ||
385 | - | let | |
386 | - | ||
387 | - | let | |
388 | - | ||
389 | - | let | |
390 | - | ||
391 | - | let | |
392 | - | ||
393 | - | let | |
394 | - | let | |
395 | - | if ((base58'2W' == | |
396 | - | then if ( | |
350 | + | func ca (cb) = (parseIntValue(cb[aK]) * aI) | |
351 | + | ||
352 | + | ||
353 | + | func cc (cd,ce,cf) = throw(((((("Cheat attempt: oldLoc=" + cd) + ", newLoc=") + ce) + ", case=") + toString(cf))) | |
354 | + | ||
355 | + | ||
356 | + | let cg = false | |
357 | + | ||
358 | + | let ch = false | |
359 | + | ||
360 | + | let ci = false | |
361 | + | ||
362 | + | let cj = 86400000 | |
363 | + | ||
364 | + | let ck = take(drop(this.bytes, 1), 1) | |
365 | + | ||
366 | + | let cl = { | |
367 | + | let cm = ck | |
368 | + | if ((base58'2W' == cm)) | |
369 | + | then if (cg) | |
397 | 370 | then base58'CWsMtTZC5BjjoL4Q1ayW4Wwb1ehGACQB6DrKyPgotKfm' | |
398 | 371 | else base58'6LfPuKJjLgekmncBhMg2LZyMTNVzZBccXR28ySXm9uXD' | |
399 | - | else if ((base58'2T' == | |
372 | + | else if ((base58'2T' == cm)) | |
400 | 373 | then base58'6LfPuKJjLgekmncBhMg2LZyMTNVzZBccXR28ySXm9uXD' | |
401 | 374 | else throw("Unknown chain") | |
402 | 375 | } | |
403 | 376 | ||
404 | - | let | |
405 | - | let | |
406 | - | if ((base58'2W' == | |
377 | + | let cn = { | |
378 | + | let cm = ck | |
379 | + | if ((base58'2W' == cm)) | |
407 | 380 | then base58'9wc3LXNA4TEBsXyKtoLE9mrbDD7WMHXvXrCjZvabLAsi' | |
408 | - | else if ((base58'2T' == | |
381 | + | else if ((base58'2T' == cm)) | |
409 | 382 | then base58'6mWwf9mZBjVgkC54idpyaZLQfAosD914wT8fGf2iiY63' | |
410 | 383 | else throw("Unknown chain") | |
411 | 384 | } | |
412 | 385 | ||
413 | - | let | |
414 | - | let | |
415 | - | if ((base58'2W' == | |
386 | + | let co = { | |
387 | + | let cm = ck | |
388 | + | if ((base58'2W' == cm)) | |
416 | 389 | then "3PQCuvFbvh4LkPUnrnU1z3jnbA1p9m3WNhv" | |
417 | - | else if ((base58'2T' == | |
390 | + | else if ((base58'2T' == cm)) | |
418 | 391 | then "3MumkGGztCKAXpWDqxkddofqXSUbqQkvSJy" | |
419 | 392 | else throw("Unknown chain") | |
420 | 393 | } | |
421 | 394 | ||
422 | - | let | |
423 | - | let | |
424 | - | if ((base58'2W' == | |
395 | + | let cp = { | |
396 | + | let cm = ck | |
397 | + | if ((base58'2W' == cm)) | |
425 | 398 | then 10000000000 | |
426 | - | else if ((base58'2T' == | |
399 | + | else if ((base58'2T' == cm)) | |
427 | 400 | then 100000000 | |
428 | 401 | else throw("Unknown chain") | |
429 | 402 | } | |
430 | 403 | ||
431 | - | let | |
432 | - | let | |
433 | - | if ((base58'2W' == | |
434 | - | then | |
435 | - | else if ((base58'2T' == | |
404 | + | let cq = { | |
405 | + | let cm = ck | |
406 | + | if ((base58'2W' == cm)) | |
407 | + | then cj | |
408 | + | else if ((base58'2T' == cm)) | |
436 | 409 | then 60000 | |
437 | 410 | else throw("Unknown chain") | |
438 | 411 | } | |
439 | 412 | ||
440 | - | let | |
441 | - | ||
442 | - | let | |
443 | - | ||
444 | - | let | |
445 | - | ||
446 | - | let | |
447 | - | ||
448 | - | let | |
449 | - | ||
450 | - | let | |
451 | - | ||
452 | - | let | |
453 | - | ||
454 | - | let | |
455 | - | ||
456 | - | let | |
457 | - | ||
458 | - | func | |
459 | - | ||
460 | - | ||
461 | - | let | |
462 | - | ||
463 | - | let | |
464 | - | ||
465 | - | let | |
466 | - | ||
467 | - | let | |
468 | - | ||
469 | - | let | |
470 | - | ||
471 | - | let | |
472 | - | ||
473 | - | func | |
474 | - | ||
475 | - | ||
476 | - | func | |
477 | - | ||
478 | - | ||
479 | - | func | |
480 | - | ||
481 | - | ||
482 | - | func | |
483 | - | ||
484 | - | ||
485 | - | let | |
486 | - | ||
487 | - | let | |
488 | - | ||
489 | - | let | |
490 | - | ||
491 | - | let | |
492 | - | ||
493 | - | let | |
494 | - | ||
495 | - | let | |
496 | - | ||
497 | - | let | |
498 | - | ||
499 | - | let | |
500 | - | ||
501 | - | let | |
502 | - | ||
503 | - | let | |
504 | - | ||
505 | - | let | |
506 | - | ||
507 | - | let | |
508 | - | ||
509 | - | let | |
510 | - | ||
511 | - | let | |
512 | - | ||
513 | - | let | |
514 | - | ||
515 | - | let | |
516 | - | ||
517 | - | let | |
518 | - | ||
519 | - | func | |
520 | - | ||
521 | - | ||
522 | - | func | |
523 | - | ||
524 | - | ||
525 | - | func | |
526 | - | ||
527 | - | ||
528 | - | func | |
529 | - | ||
530 | - | ||
531 | - | func | |
532 | - | ||
533 | - | ||
534 | - | func | |
535 | - | let | |
536 | - | if ($isInstanceOf( | |
413 | + | let cr = "__" | |
414 | + | ||
415 | + | let cs = 1000000 | |
416 | + | ||
417 | + | let ct = 100000000 | |
418 | + | ||
419 | + | let cu = 25 | |
420 | + | ||
421 | + | let cv = 100 | |
422 | + | ||
423 | + | let cw = 225 | |
424 | + | ||
425 | + | let cx = 400 | |
426 | + | ||
427 | + | let cy = 625 | |
428 | + | ||
429 | + | let cz = [0, 1, 2, 3, 4, 5] | |
430 | + | ||
431 | + | func cA (cB,cC) = valueOrErrorMessage(getString(cB, cC), makeString(["mandatory ", toString(cB), ".", cC, " is not defined"], "")) | |
432 | + | ||
433 | + | ||
434 | + | let cD = 1 | |
435 | + | ||
436 | + | let cE = 2 | |
437 | + | ||
438 | + | let cF = 3 | |
439 | + | ||
440 | + | let cG = 4 | |
441 | + | ||
442 | + | let cH = 7 | |
443 | + | ||
444 | + | let cI = 8 | |
445 | + | ||
446 | + | func cJ () = "%s__restConfig" | |
447 | + | ||
448 | + | ||
449 | + | func cK () = "%s__restAddr" | |
450 | + | ||
451 | + | ||
452 | + | func cL (cM) = split_4C(cA(cM, cJ()), cr) | |
453 | + | ||
454 | + | ||
455 | + | func cN (cO,cP) = valueOrErrorMessage(addressFromString(cO[cP]), ("Rest cfg doesn't contain address at index " + toString(cP))) | |
456 | + | ||
457 | + | ||
458 | + | let cQ = addressFromStringValue(valueOrElse(getString(this, cK()), co)) | |
459 | + | ||
460 | + | let cO = cL(cQ) | |
461 | + | ||
462 | + | let ai = cN(cO, cD) | |
463 | + | ||
464 | + | let cR = cN(cO, cE) | |
465 | + | ||
466 | + | let cS = cN(cO, cF) | |
467 | + | ||
468 | + | let cT = cN(cO, cG) | |
469 | + | ||
470 | + | let cU = cN(cO, cH) | |
471 | + | ||
472 | + | let cV = cN(cO, cI) | |
473 | + | ||
474 | + | let cW = 0 | |
475 | + | ||
476 | + | let cX = 1 | |
477 | + | ||
478 | + | let cY = 2 | |
479 | + | ||
480 | + | let cZ = 3 | |
481 | + | ||
482 | + | let da = "wlg_assetId" | |
483 | + | ||
484 | + | let db = valueOrErrorMessage(getBinary(cT, da), "WLGOLD is not issued yet") | |
485 | + | ||
486 | + | let dc = "acresAssetId" | |
487 | + | ||
488 | + | let dd = valueOrErrorMessage(getBinary(cV, dc), "ACRES is not issued yet") | |
489 | + | ||
490 | + | let de = 2 | |
491 | + | ||
492 | + | func df (cB) = ("finishBlockFor_" + cB) | |
493 | + | ||
494 | + | ||
495 | + | func dg () = "resTypesProportions" | |
496 | + | ||
497 | + | ||
498 | + | func dh (di) = ("resTypesByContinent_" + di) | |
499 | + | ||
500 | + | ||
501 | + | func dj (bn) = ("stakedLandsByOwner_" + bn) | |
502 | + | ||
503 | + | ||
504 | + | func dk (bn) = ("stakedPiecesByOwner_" + bn) | |
505 | + | ||
506 | + | ||
507 | + | func dl (dm) = { | |
508 | + | let cm = dm | |
509 | + | if ($isInstanceOf(cm, "String")) | |
537 | 510 | then { | |
538 | - | let | |
539 | - | | |
511 | + | let dn = cm | |
512 | + | dn | |
540 | 513 | } | |
541 | 514 | else throw("fail to cast into String") | |
542 | 515 | } | |
543 | 516 | ||
544 | 517 | ||
545 | - | func | |
546 | - | let | |
547 | - | if ($isInstanceOf( | |
518 | + | func do (dm) = { | |
519 | + | let cm = dm | |
520 | + | if ($isInstanceOf(cm, "Int")) | |
548 | 521 | then { | |
549 | - | let | |
550 | - | | |
522 | + | let dp = cm | |
523 | + | dp | |
551 | 524 | } | |
552 | 525 | else throw("fail to cast into Int") | |
553 | 526 | } | |
554 | 527 | ||
555 | 528 | ||
556 | - | func | |
557 | - | let | |
558 | - | if ($isInstanceOf( | |
529 | + | func dq (dm) = { | |
530 | + | let cm = dm | |
531 | + | if ($isInstanceOf(cm, "List[Any]")) | |
559 | 532 | then { | |
560 | - | let | |
561 | - | | |
533 | + | let dr = cm | |
534 | + | dr | |
562 | 535 | } | |
563 | 536 | else throw("fail to cast into List[Any]") | |
564 | 537 | } | |
565 | 538 | ||
566 | 539 | ||
567 | - | func | |
568 | - | let | |
569 | - | if ($isInstanceOf( | |
540 | + | func ds (dm) = { | |
541 | + | let cm = dm | |
542 | + | if ($isInstanceOf(cm, "Boolean")) | |
570 | 543 | then { | |
571 | - | let | |
572 | - | | |
544 | + | let dn = cm | |
545 | + | dn | |
573 | 546 | } | |
574 | 547 | else throw("fail to cast into Boolean") | |
575 | 548 | } | |
576 | 549 | ||
577 | 550 | ||
578 | - | func | |
579 | - | let | |
580 | - | if (("S" == | |
581 | - | then | |
582 | - | else if (("M" == | |
583 | - | then | |
584 | - | else if (("L" == | |
585 | - | then | |
586 | - | else if (("XL" == | |
587 | - | then | |
588 | - | else if (("XXL" == | |
589 | - | then | |
551 | + | func dt (du) = { | |
552 | + | let cm = du | |
553 | + | if (("S" == cm)) | |
554 | + | then cu | |
555 | + | else if (("M" == cm)) | |
556 | + | then cv | |
557 | + | else if (("L" == cm)) | |
558 | + | then cw | |
559 | + | else if (("XL" == cm)) | |
560 | + | then cx | |
561 | + | else if (("XXL" == cm)) | |
562 | + | then cy | |
590 | 563 | else throw("Unknown land size") | |
591 | 564 | } | |
592 | 565 | ||
593 | 566 | ||
594 | - | func | |
595 | - | ||
596 | - | ||
597 | - | func | |
598 | - | ||
599 | - | ||
600 | - | func | |
601 | - | ||
602 | - | ||
603 | - | func | |
604 | - | let | |
605 | - | let | |
606 | - | let | |
607 | - | (((toString(( | |
608 | - | } | |
609 | - | ||
610 | - | ||
611 | - | func | |
567 | + | func dv (dn) = isDefined(parseInt(dn)) | |
568 | + | ||
569 | + | ||
570 | + | func dw () = "contractsBlocked" | |
571 | + | ||
572 | + | ||
573 | + | func dx (c) = ("lastTxIdByUser_" + c) | |
574 | + | ||
575 | + | ||
576 | + | func dy (dz,dA) = { | |
577 | + | let dB = pow(10, 0, dA, 0, 0, DOWN) | |
578 | + | let dC = toString((dz % dB)) | |
579 | + | let dD = drop(toString(dB), (1 + size(dC))) | |
580 | + | (((toString((dz / dB)) + ".") + dD) + dC) | |
581 | + | } | |
582 | + | ||
583 | + | ||
584 | + | func dE (dF,dG,dH) = if ((0 >= dF)) | |
612 | 585 | then throw("maxValue should be > 0") | |
613 | 586 | else { | |
614 | - | let | |
615 | - | (toInt( | |
587 | + | let dI = sha256((dG + dH)) | |
588 | + | (toInt(dI) % dF) | |
616 | 589 | } | |
617 | 590 | ||
618 | 591 | ||
619 | - | let | |
620 | - | let | |
621 | - | if ((base58'2W' == | |
592 | + | let dJ = { | |
593 | + | let cm = ck | |
594 | + | if ((base58'2W' == cm)) | |
622 | 595 | then addressFromStringValue("3PEktVux2RhchSN63DsDo4b4mz4QqzKSeDv") | |
623 | - | else if ((base58'2T' == | |
596 | + | else if ((base58'2T' == cm)) | |
624 | 597 | then this | |
625 | 598 | else throw("Unknown chain") | |
626 | 599 | } | |
627 | 600 | ||
628 | - | let | |
629 | - | let | |
630 | - | if ((base58'2W' == | |
601 | + | let dK = { | |
602 | + | let cm = ck | |
603 | + | if ((base58'2W' == cm)) | |
631 | 604 | then addressFromStringValue("3PDVuU45H7Eh5dmtNbnRNRStGwULA7NY6Hb") | |
632 | - | else if ((base58'2T' == | |
605 | + | else if ((base58'2T' == cm)) | |
633 | 606 | then this | |
634 | 607 | else throw("Unknown chain") | |
635 | 608 | } | |
636 | 609 | ||
637 | - | let dY = base64'AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA==' | |
638 | - | ||
639 | - | let dZ = 300000 | |
640 | - | ||
641 | - | let ea = 5000000 | |
642 | - | ||
643 | - | let eb = 50 | |
644 | - | ||
645 | - | let ec = 10000000 | |
646 | - | ||
647 | - | let ed = { | |
648 | - | let cz = cx | |
649 | - | if ((base58'2W' == cz)) | |
610 | + | let dL = 300000 | |
611 | + | ||
612 | + | let dM = 5000000 | |
613 | + | ||
614 | + | let dN = 50 | |
615 | + | ||
616 | + | let dO = 10000000 | |
617 | + | ||
618 | + | let dP = { | |
619 | + | let cm = ck | |
620 | + | if ((base58'2W' == cm)) | |
650 | 621 | then 252289527462 | |
651 | - | else if ((base58'2T' == | |
622 | + | else if ((base58'2T' == cm)) | |
652 | 623 | then 2522895274 | |
653 | 624 | else throw("Unknown chain") | |
654 | 625 | } | |
655 | 626 | ||
656 | - | let | |
657 | - | let | |
658 | - | if ((base58'2W' == | |
627 | + | let dQ = { | |
628 | + | let cm = ck | |
629 | + | if ((base58'2W' == cm)) | |
659 | 630 | then 250000000 | |
660 | - | else if ((base58'2T' == | |
631 | + | else if ((base58'2T' == cm)) | |
661 | 632 | then 250000000 | |
662 | 633 | else throw("Unknown chain") | |
663 | 634 | } | |
664 | 635 | ||
665 | - | let ef = 100000 | |
666 | - | ||
667 | - | let eg = 2500000000 | |
668 | - | ||
669 | - | let eh = toBigInt(5) | |
670 | - | ||
671 | - | let ei = toBigInt(20) | |
672 | - | ||
673 | - | let ej = toBigInt((20 * 20)) | |
674 | - | ||
675 | - | let ek = toBigInt(((20 * 20) * 20)) | |
676 | - | ||
677 | - | let el = toBigInt((((20 * 20) * 20) * 20)) | |
678 | - | ||
679 | - | let em = toBigInt(((((20 * 20) * 20) * 20) * 20)) | |
680 | - | ||
681 | - | let en = 500 | |
682 | - | ||
683 | - | func eo () = "nextLandNum" | |
684 | - | ||
685 | - | ||
686 | - | func ep (eq) = ("lcn_" + eq) | |
687 | - | ||
688 | - | ||
689 | - | func er (es) = ("la_" + es) | |
690 | - | ||
691 | - | ||
692 | - | func et (bu,bB) = ((("ilao_" + bu) + "_") + bB) | |
693 | - | ||
694 | - | ||
695 | - | func eu (es) = ("lo_" + es) | |
696 | - | ||
697 | - | ||
698 | - | func ev (eq) = ("duckByCustomName_" + eq) | |
699 | - | ||
700 | - | ||
701 | - | func ew (eq) = ("accountByCustomName_" + eq) | |
702 | - | ||
703 | - | ||
704 | - | func ex () = "oldiesList" | |
705 | - | ||
706 | - | ||
707 | - | func ey () = "nextRoboDuck" | |
708 | - | ||
709 | - | ||
710 | - | let ez = 0 | |
711 | - | ||
712 | - | let eA = 1 | |
713 | - | ||
714 | - | let eB = 2 | |
715 | - | ||
716 | - | let eC = 0 | |
717 | - | ||
718 | - | let eD = 5 | |
719 | - | ||
720 | - | let eE = 6 | |
721 | - | ||
722 | - | let eF = 7 | |
723 | - | ||
724 | - | func eG (es,dH) = ((aF + es) + dH) | |
725 | - | ||
726 | - | ||
727 | - | func eH (eI,eJ) = { | |
728 | - | let eK = if ((eI >= 0)) | |
729 | - | then (((eI + eJ) - 1) / eJ) | |
730 | - | else -((((-(eI) + eJ) - 1) / eJ)) | |
731 | - | (eK * cG) | |
732 | - | } | |
733 | - | ||
734 | - | ||
735 | - | func eL (eM,eN) = { | |
736 | - | let eO = (((((eN[0] + eN[1]) + eN[2]) + eN[3]) + eN[4]) + eN[5]) | |
737 | - | if ((0 >= eO)) | |
636 | + | let dR = 100000 | |
637 | + | ||
638 | + | let dS = 2500000000 | |
639 | + | ||
640 | + | let dT = toBigInt(5) | |
641 | + | ||
642 | + | let dU = toBigInt(20) | |
643 | + | ||
644 | + | let dV = toBigInt((20 * 20)) | |
645 | + | ||
646 | + | let dW = toBigInt(((20 * 20) * 20)) | |
647 | + | ||
648 | + | let dX = toBigInt((((20 * 20) * 20) * 20)) | |
649 | + | ||
650 | + | let dY = toBigInt(((((20 * 20) * 20) * 20) * 20)) | |
651 | + | ||
652 | + | let dZ = 500 | |
653 | + | ||
654 | + | func ea () = "nextLandNum" | |
655 | + | ||
656 | + | ||
657 | + | func eb (ec) = ("lcn_" + ec) | |
658 | + | ||
659 | + | ||
660 | + | func ed (ee) = ("la_" + ee) | |
661 | + | ||
662 | + | ||
663 | + | func ef (bg,bn) = ((("ilao_" + bg) + "_") + bn) | |
664 | + | ||
665 | + | ||
666 | + | func eg (ee) = ("lo_" + ee) | |
667 | + | ||
668 | + | ||
669 | + | func eh (ec) = ("duckByCustomName_" + ec) | |
670 | + | ||
671 | + | ||
672 | + | func ei (ec) = ("accountByCustomName_" + ec) | |
673 | + | ||
674 | + | ||
675 | + | func ej () = "oldiesList" | |
676 | + | ||
677 | + | ||
678 | + | func ek () = "nextRoboDuck" | |
679 | + | ||
680 | + | ||
681 | + | let el = 0 | |
682 | + | ||
683 | + | let em = 1 | |
684 | + | ||
685 | + | let en = 2 | |
686 | + | ||
687 | + | let eo = 0 | |
688 | + | ||
689 | + | let ep = 5 | |
690 | + | ||
691 | + | let eq = 6 | |
692 | + | ||
693 | + | let er = 7 | |
694 | + | ||
695 | + | let es = 0 | |
696 | + | ||
697 | + | let et = 1 | |
698 | + | ||
699 | + | let eu = 0 | |
700 | + | ||
701 | + | let ev = 2 | |
702 | + | ||
703 | + | let ew = 3 | |
704 | + | ||
705 | + | func ex (ee,du) = ((ap + ee) + du) | |
706 | + | ||
707 | + | ||
708 | + | func ey (ez,eA) = { | |
709 | + | let eB = if ((ez >= 0)) | |
710 | + | then (((ez + eA) - 1) / eA) | |
711 | + | else -((((-(ez) + eA) - 1) / eA)) | |
712 | + | (eB * ct) | |
713 | + | } | |
714 | + | ||
715 | + | ||
716 | + | func eC (eD,eE) = { | |
717 | + | let eF = (((((eE[0] + eE[1]) + eE[2]) + eE[3]) + eE[4]) + eE[5]) | |
718 | + | if ((0 >= eF)) | |
738 | 719 | then throw("Zero weights sum") | |
739 | 720 | else { | |
740 | - | let | |
741 | - | func | |
742 | - | ||
743 | - | let | |
744 | - | let | |
745 | - | let | |
746 | - | func | |
747 | - | then | |
748 | - | else | |
749 | - | ||
750 | - | func | |
751 | - | then | |
721 | + | let eG = fraction(eD, cs, eF) | |
722 | + | func eH (eI,eJ) = (eI :+ fraction(eJ, eG, cs)) | |
723 | + | ||
724 | + | let eK = eE | |
725 | + | let eL = size(eK) | |
726 | + | let eM = nil | |
727 | + | func eN (eO,eP) = if ((eP >= eL)) | |
728 | + | then eO | |
729 | + | else eH(eO, eK[eP]) | |
730 | + | ||
731 | + | func eQ (eO,eP) = if ((eP >= eL)) | |
732 | + | then eO | |
752 | 733 | else throw("List size exceeds 6") | |
753 | 734 | ||
754 | - | | |
755 | - | } | |
756 | - | } | |
757 | - | ||
758 | - | ||
759 | - | func | |
760 | - | let | |
761 | - | if ((size( | |
735 | + | eQ(eN(eN(eN(eN(eN(eN(eM, 0), 1), 2), 3), 4), 5), 6) | |
736 | + | } | |
737 | + | } | |
738 | + | ||
739 | + | ||
740 | + | func eR (eD) = { | |
741 | + | let eS = split(value(getString(dg())), "_") | |
742 | + | if ((size(eS) != at)) | |
762 | 743 | then throw("Wrong proportions data") | |
763 | 744 | else { | |
764 | - | let | |
765 | - | | |
766 | - | } | |
767 | - | } | |
768 | - | ||
769 | - | ||
770 | - | func | |
771 | - | let | |
772 | - | func | |
773 | - | let | |
774 | - | if ((0 > | |
775 | - | then throw(((((("Not enough material idx=" + toString( | |
776 | - | else ( | |
745 | + | let eT = [parseIntValue(eS[0]), parseIntValue(eS[1]), parseIntValue(eS[2]), parseIntValue(eS[3]), parseIntValue(eS[4]), parseIntValue(eS[5])] | |
746 | + | eC(eD, eT) | |
747 | + | } | |
748 | + | } | |
749 | + | ||
750 | + | ||
751 | + | func eU (eV,eW,eX) = { | |
752 | + | let eY = eR(eX) | |
753 | + | func eZ (eI,cP) = { | |
754 | + | let fa = (parseIntValue(eW[cP]) - eY[cP]) | |
755 | + | if ((0 > fa)) | |
756 | + | then throw(((((("Not enough material idx=" + toString(cP)) + ", you have ") + eW[cP]) + ", but need ") + toString(eY[cP]))) | |
757 | + | else (eI :+ toString(fa)) | |
777 | 758 | } | |
778 | 759 | ||
779 | - | if ( | |
760 | + | if (eV) | |
780 | 761 | then { | |
781 | - | let | |
782 | - | let | |
783 | - | let | |
784 | - | func | |
785 | - | then | |
786 | - | else | |
787 | - | ||
788 | - | func | |
789 | - | then | |
762 | + | let eK = cz | |
763 | + | let eL = size(eK) | |
764 | + | let eM = nil | |
765 | + | func eN (eO,eP) = if ((eP >= eL)) | |
766 | + | then eO | |
767 | + | else eZ(eO, eK[eP]) | |
768 | + | ||
769 | + | func eQ (eO,eP) = if ((eP >= eL)) | |
770 | + | then eO | |
790 | 771 | else throw("List size exceeds 6") | |
791 | 772 | ||
792 | - | | |
793 | - | } | |
794 | - | else | |
795 | - | } | |
796 | - | ||
797 | - | ||
798 | - | func | |
799 | - | then $ | |
773 | + | eQ(eN(eN(eN(eN(eN(eN(eM, 0), 1), 2), 3), 4), 5), 6) | |
774 | + | } | |
775 | + | else eW | |
776 | + | } | |
777 | + | ||
778 | + | ||
779 | + | func fb (fc,fd) = if ((fd == "")) | |
780 | + | then $Tuple3(fc, false, false) | |
800 | 781 | else { | |
801 | - | func | |
802 | - | let | |
803 | - | if ((size( | |
782 | + | func fe (eI,ff) = { | |
783 | + | let fg = split(ff, ",") | |
784 | + | if ((size(fg) != 2)) | |
804 | 785 | then throw("Incorrect format, should be index,amount") | |
805 | 786 | else { | |
806 | - | let | |
807 | - | if (if ((0 > | |
787 | + | let cP = parseIntValue(fg[0]) | |
788 | + | if (if ((0 > cP)) | |
808 | 789 | then true | |
809 | - | else ( | |
790 | + | else (cP >= size(aJ))) | |
810 | 791 | then throw("Unknown product idx") | |
811 | 792 | else { | |
812 | - | let | |
813 | - | let | |
814 | - | if ((size( | |
815 | - | then throw((("You don't have " + | |
793 | + | let fh = parseIntValue(fg[1]) | |
794 | + | let fi = split(eI._1, (fg[0] + ":")) | |
795 | + | if ((size(fi) != 2)) | |
796 | + | then throw((("You don't have " + aG[cP]) + " equipped")) | |
816 | 797 | else { | |
817 | - | let | |
818 | - | let | |
798 | + | let fj = fi[1] | |
799 | + | let fk = if (dv(take(drop(fj, 1), 1))) | |
819 | 800 | then 2 | |
820 | 801 | else 1 | |
821 | - | let | |
822 | - | let | |
823 | - | let | |
824 | - | then ( | |
825 | - | else throw(((((("You equipped " + toString( | |
826 | - | $ | |
802 | + | let fl = parseIntValue(take(fj, fk)) | |
803 | + | let fm = drop(fj, fk) | |
804 | + | let fn = if ((fl >= fh)) | |
805 | + | then (fl - fh) | |
806 | + | else throw(((((("You equipped " + toString(fl)) + " of ") + aG[cP]) + ", but tried to use ") + toString(fh))) | |
807 | + | $Tuple3(((((fi[0] + fg[0]) + ":") + toString(fn)) + fm), if (eI._2) | |
827 | 808 | then true | |
828 | - | else if (if (( | |
829 | - | then (8 >= | |
809 | + | else if (if ((cP >= 6)) | |
810 | + | then (8 >= cP) | |
830 | 811 | else false) | |
831 | - | then (fw == 0) | |
812 | + | then (fn == 0) | |
813 | + | else false, if (eI._3) | |
814 | + | then true | |
815 | + | else if (if ((cP >= 3)) | |
816 | + | then (5 >= cP) | |
817 | + | else false) | |
818 | + | then (fh > 0) | |
832 | 819 | else false) | |
833 | 820 | } | |
834 | 821 | } | |
835 | 822 | } | |
836 | 823 | } | |
837 | 824 | ||
838 | - | let | |
839 | - | let | |
840 | - | let | |
841 | - | func | |
842 | - | then | |
843 | - | else | |
844 | - | ||
845 | - | func | |
846 | - | then | |
825 | + | let eK = split(fd, "_") | |
826 | + | let eL = size(eK) | |
827 | + | let eM = $Tuple3(fc, false, false) | |
828 | + | func eN (eO,eP) = if ((eP >= eL)) | |
829 | + | then eO | |
830 | + | else fe(eO, eK[eP]) | |
831 | + | ||
832 | + | func eQ (eO,eP) = if ((eP >= eL)) | |
833 | + | then eO | |
847 | 834 | else throw("List size exceeds 10") | |
848 | 835 | ||
849 | - | | |
836 | + | eQ(eN(eN(eN(eN(eN(eN(eN(eN(eN(eN(eM, 0), 1), 2), 3), 4), 5), 6), 7), 8), 9), 10) | |
850 | 837 | } | |
851 | 838 | ||
852 | 839 | ||
853 | - | func | |
854 | - | let | |
840 | + | func fo (fp) = { | |
841 | + | let fq = if ((fp == "")) | |
855 | 842 | then nil | |
856 | - | else split_4C( | |
857 | - | func | |
858 | - | let | |
859 | - | let | |
860 | - | then parseIntValue( | |
843 | + | else split_4C(fp, "_") | |
844 | + | func fr (eI,cb) = { | |
845 | + | let fs = (size(eI) / 8) | |
846 | + | let fl = if ((size(fq) > fs)) | |
847 | + | then parseIntValue(fq[fs]) | |
861 | 848 | else 0 | |
862 | - | ( | |
849 | + | (eI + toBytes(fl)) | |
863 | 850 | } | |
864 | 851 | ||
865 | - | let | |
866 | - | let | |
867 | - | let | |
868 | - | func | |
869 | - | then | |
870 | - | else | |
871 | - | ||
872 | - | func | |
873 | - | then | |
852 | + | let eK = aJ | |
853 | + | let eL = size(eK) | |
854 | + | let eM = base58'' | |
855 | + | func eN (eO,eP) = if ((eP >= eL)) | |
856 | + | then eO | |
857 | + | else fr(eO, eK[eP]) | |
858 | + | ||
859 | + | func eQ (eO,eP) = if ((eP >= eL)) | |
860 | + | then eO | |
874 | 861 | else throw("List size exceeds 50") | |
875 | 862 | ||
876 | - | | |
877 | - | } | |
878 | - | ||
879 | - | ||
880 | - | func | |
881 | - | func | |
882 | - | let | |
883 | - | let | |
884 | - | ( | |
863 | + | eQ(eN(eN(eN(eN(eN(eN(eN(eN(eN(eN(eN(eN(eN(eN(eN(eN(eN(eN(eN(eN(eN(eN(eN(eN(eN(eN(eN(eN(eN(eN(eN(eN(eN(eN(eN(eN(eN(eN(eN(eN(eN(eN(eN(eN(eN(eN(eN(eN(eN(eN(eM, 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) | |
864 | + | } | |
865 | + | ||
866 | + | ||
867 | + | func ft (fu) = { | |
868 | + | func fv (eI,cb) = { | |
869 | + | let fs = size(eI) | |
870 | + | let fw = take(drop(fu, (8 * fs)), 8) | |
871 | + | (eI :+ toString(toInt(fw))) | |
885 | 872 | } | |
886 | 873 | ||
887 | 874 | makeString_2C({ | |
888 | - | let | |
889 | - | let | |
890 | - | let | |
891 | - | func | |
892 | - | then | |
893 | - | else | |
894 | - | ||
895 | - | func | |
896 | - | then | |
875 | + | let eK = aJ | |
876 | + | let eL = size(eK) | |
877 | + | let eM = nil | |
878 | + | func eN (eO,eP) = if ((eP >= eL)) | |
879 | + | then eO | |
880 | + | else fv(eO, eK[eP]) | |
881 | + | ||
882 | + | func eQ (eO,eP) = if ((eP >= eL)) | |
883 | + | then eO | |
897 | 884 | else throw("List size exceeds 50") | |
898 | 885 | ||
899 | - | | |
886 | + | eQ(eN(eN(eN(eN(eN(eN(eN(eN(eN(eN(eN(eN(eN(eN(eN(eN(eN(eN(eN(eN(eN(eN(eN(eN(eN(eN(eN(eN(eN(eN(eN(eN(eN(eN(eN(eN(eN(eN(eN(eN(eN(eN(eN(eN(eN(eN(eN(eN(eN(eN(eM, 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) | |
900 | 887 | }, "_") | |
901 | 888 | } | |
902 | 889 | ||
903 | 890 | ||
904 | - | func | |
905 | - | func | |
906 | - | let | |
907 | - | then | |
891 | + | func fx (fy,fz) = { | |
892 | + | func fA (eI,fs) = { | |
893 | + | let fB = if ((size(fy) > (7 + fs))) | |
894 | + | then fy[(7 + fs)] | |
908 | 895 | else 0 | |
909 | - | if ((parseIntValue( | |
910 | - | then throw(("Requirement not satisfied: " + | |
896 | + | if ((parseIntValue(fz[fs]) > (fy[fs] + fB))) | |
897 | + | then throw(("Requirement not satisfied: " + i[fs])) | |
911 | 898 | else true | |
912 | 899 | } | |
913 | 900 | ||
914 | - | let | |
915 | - | let | |
916 | - | let | |
917 | - | func | |
918 | - | then | |
919 | - | else | |
920 | - | ||
921 | - | func | |
922 | - | then | |
901 | + | let eK = [0, 1, 2, 3, 4, 5, 6] | |
902 | + | let eL = size(eK) | |
903 | + | let eM = false | |
904 | + | func eN (eO,eP) = if ((eP >= eL)) | |
905 | + | then eO | |
906 | + | else fA(eO, eK[eP]) | |
907 | + | ||
908 | + | func eQ (eO,eP) = if ((eP >= eL)) | |
909 | + | then eO | |
923 | 910 | else throw("List size exceeds 7") | |
924 | 911 | ||
925 | - | | |
926 | - | } | |
927 | - | ||
928 | - | ||
929 | - | func | |
930 | - | let | |
931 | - | if ((size( | |
912 | + | eQ(eN(eN(eN(eN(eN(eN(eN(eM, 0), 1), 2), 3), 4), 5), 6), 7) | |
913 | + | } | |
914 | + | ||
915 | + | ||
916 | + | func fC (fD,fq,fE,fF,fG,fH,fy) = { | |
917 | + | let fg = split(fD, ":") | |
918 | + | if ((size(fg) != 2)) | |
932 | 919 | then throw("Incorrect format, should be index:amount") | |
933 | - | else if (if (!( | |
934 | - | then (size( | |
920 | + | else if (if (!(fE)) | |
921 | + | then (size(fg[0]) != 2) | |
935 | 922 | else false) | |
936 | 923 | then throw("Product idx should be 2 digits, zero padded") | |
937 | 924 | else { | |
938 | - | let fQ = parseIntValue(fp[0]) | |
939 | - | let fR = parseIntValue(fp[1]) | |
940 | - | if (!(containsElement(aW, fQ))) | |
941 | - | then throw((("Product '" + aT[fQ]) + "' cannot be used for land defense")) | |
942 | - | else if ((0 > fR)) | |
925 | + | let fI = parseIntValue(fg[0]) | |
926 | + | let fJ = parseIntValue(fg[1]) | |
927 | + | if (if ((0 > fI)) | |
928 | + | then true | |
929 | + | else (fI >= size(aJ))) | |
930 | + | then throw("Unknown product idx") | |
931 | + | else if ((0 > fJ)) | |
943 | 932 | then throw("Count can't be negative") | |
944 | - | else if (( | |
945 | - | then throw(((("Can't put more than " + toString( | |
946 | - | else if (( | |
947 | - | then $ | |
933 | + | else if ((fJ > s)) | |
934 | + | then throw(((("Can't put more than " + toString(s)) + " of ") + aG[fI])) | |
935 | + | else if ((fJ == 0)) | |
936 | + | then $Tuple2(fq, false) | |
948 | 937 | else { | |
949 | - | let | |
950 | - | let | |
951 | - | let | |
952 | - | let | |
953 | - | if (if (!( | |
954 | - | then ( | |
938 | + | let fK = take(fq, (8 * fI)) | |
939 | + | let fl = toInt(take(drop(fq, (8 * fI)), 8)) | |
940 | + | let fm = drop(fq, (8 * (fI + 1))) | |
941 | + | let cb = split(aJ[fI], "_") | |
942 | + | if (if (!(fE)) | |
943 | + | then (fJ > fl) | |
955 | 944 | else false) | |
956 | - | then throw(((((("You have " + toString( | |
945 | + | then throw(((((("You have " + toString(fl)) + " of ") + aG[fI]) + ", but tried to use ") + toString(fJ))) | |
957 | 946 | else { | |
958 | - | let fw = if (if (!(fN)) | |
959 | - | then fG(fH, split(co[ba], ",")) | |
960 | - | else false) | |
961 | - | then (fu - fR) | |
962 | - | else (fu + fR) | |
963 | - | let fT = (eH(fw, bc) - eH(fu, bc)) | |
964 | - | $Tuple3(((fS + toBytes(fw)) + fv), (fO + fT), (fP - fT)) | |
965 | - | } | |
966 | - | } | |
967 | - | } | |
968 | - | } | |
969 | - | ||
970 | - | ||
971 | - | func fU (fM,fz,fN,fV,fW,fX,fH) = { | |
972 | - | let fp = split(fM, ":") | |
973 | - | if ((size(fp) != 2)) | |
974 | - | then throw("Incorrect format, should be index:amount") | |
975 | - | else if (if (!(fN)) | |
976 | - | then (size(fp[0]) != 2) | |
977 | - | else false) | |
978 | - | then throw("Product idx should be 2 digits, zero padded") | |
979 | - | else { | |
980 | - | let fQ = parseIntValue(fp[0]) | |
981 | - | let fR = parseIntValue(fp[1]) | |
982 | - | if (if ((0 > fQ)) | |
983 | - | then true | |
984 | - | else (fQ >= size(aX))) | |
985 | - | then throw("Unknown product idx") | |
986 | - | else if ((0 > fR)) | |
987 | - | then throw("Count can't be negative") | |
988 | - | else if ((fR > u)) | |
989 | - | then throw(((("Can't put more than " + toString(u)) + " of ") + aT[fQ])) | |
990 | - | else if ((fR == 0)) | |
991 | - | then $Tuple2(fz, false) | |
992 | - | else { | |
993 | - | let fS = take(fz, (8 * fQ)) | |
994 | - | let fu = toInt(take(drop(fz, (8 * fQ)), 8)) | |
995 | - | let fv = drop(fz, (8 * (fQ + 1))) | |
996 | - | let co = split(aX[fQ], "_") | |
997 | - | if (if (!(fN)) | |
998 | - | then (fR > fu) | |
999 | - | else false) | |
1000 | - | then throw(((((("You have " + toString(fu)) + " of ") + aT[fQ]) + ", but tried to use ") + toString(fR))) | |
1001 | - | else { | |
1002 | - | let fY = if (if (!(fN)) | |
1003 | - | then fG(fH, split(co[ba], ",")) | |
947 | + | let fL = if (if (!(fE)) | |
948 | + | then fx(fy, split(cb[aM], ",")) | |
1004 | 949 | else false) | |
1005 | 950 | then { | |
1006 | - | let | |
1007 | - | if (( | |
951 | + | let fM = cb[aN] | |
952 | + | if ((fM == "")) | |
1008 | 953 | then throw("Item cannot be equipped") | |
1009 | 954 | else { | |
1010 | - | let | |
1011 | - | let | |
1012 | - | if (( | |
955 | + | let fN = parseIntValue(fM) | |
956 | + | let fO = (fN / 100) | |
957 | + | if ((fF != fO)) | |
1013 | 958 | then throw("Segment incompatible") | |
1014 | 959 | else { | |
1015 | - | let | |
1016 | - | if (( | |
960 | + | let fP = ((fN % 100) / 10) | |
961 | + | if ((fG != fP)) | |
1017 | 962 | then throw("Slot incompatible") | |
1018 | 963 | else { | |
1019 | - | let | |
1020 | - | if (if (( | |
1021 | - | then ( | |
964 | + | let fQ = (fN % 10) | |
965 | + | if (if ((fH != 0)) | |
966 | + | then (fQ > 1) | |
1022 | 967 | else false) | |
1023 | 968 | then throw("Big items should occupy slot 0") | |
1024 | - | else ( | |
969 | + | else (fQ > 1) | |
1025 | 970 | } | |
1026 | 971 | } | |
1027 | 972 | } | |
1028 | 973 | } | |
1029 | 974 | else false | |
1030 | - | $Tuple2((( | |
1031 | - | then | |
1032 | - | else -( | |
975 | + | $Tuple2(((fK + toBytes((fl + (if (fE) | |
976 | + | then fJ | |
977 | + | else -(fJ))))) + fm), fL) | |
1033 | 978 | } | |
1034 | 979 | } | |
1035 | 980 | } | |
1036 | 981 | } | |
1037 | 982 | ||
1038 | 983 | ||
1039 | - | func | |
984 | + | func fR (fS,fT,fE,fF,fG,fU) = if ((fS != "")) | |
1040 | 985 | then { | |
1041 | - | let | |
1042 | - | if ((size( | |
986 | + | let fV = split(fS, ",") | |
987 | + | if ((size(fV) > r)) | |
1043 | 988 | then throw("Wrong slots format") | |
1044 | 989 | else { | |
1045 | - | let | |
1046 | - | let | |
1047 | - | then | |
990 | + | let fW = fV[0] | |
991 | + | let fX = if ((size(fV) > 1)) | |
992 | + | then fV[1] | |
1048 | 993 | else "" | |
1049 | - | if (if (( | |
1050 | - | then ( | |
994 | + | if (if ((fW == "")) | |
995 | + | then (fX == "") | |
1051 | 996 | else false) | |
1052 | - | then | |
997 | + | then fT | |
1053 | 998 | else { | |
1054 | - | let | |
1055 | - | then | |
1056 | - | else $Tuple2( | |
1057 | - | if (( | |
1058 | - | then if ( | |
999 | + | let fY = if ((fW != "")) | |
1000 | + | then fC(fW, fT, fE, fF, fG, 0, fU) | |
1001 | + | else $Tuple2(fT, false) | |
1002 | + | if ((fX != "")) | |
1003 | + | then if (fY._2) | |
1059 | 1004 | then throw("Big item already occupies slot") | |
1060 | - | else | |
1061 | - | else | |
1005 | + | else fC(fX, fY._1, fE, fF, fG, 1, fU)._1 | |
1006 | + | else fY._1 | |
1062 | 1007 | } | |
1063 | 1008 | } | |
1064 | 1009 | } | |
1065 | - | else | |
1066 | - | ||
1067 | - | ||
1068 | - | func | |
1069 | - | func | |
1070 | - | let | |
1071 | - | let | |
1072 | - | if ((size( | |
1010 | + | else fT | |
1011 | + | ||
1012 | + | ||
1013 | + | func fZ (ga,gb,fE,fU) = { | |
1014 | + | func fF (eI,gc) = { | |
1015 | + | let fs = eI._1 | |
1016 | + | let fG = split(gc, ";") | |
1017 | + | if ((size(fG) != q)) | |
1073 | 1018 | then throw("Wrong segment format") | |
1074 | 1019 | else { | |
1075 | - | let | |
1076 | - | let | |
1077 | - | if (if (( | |
1078 | - | then ( | |
1020 | + | let gd = fG[0] | |
1021 | + | let ge = fG[1] | |
1022 | + | if (if ((gd == "")) | |
1023 | + | then (ge == "") | |
1079 | 1024 | else false) | |
1080 | - | then $Tuple2(( | |
1025 | + | then $Tuple2((fs + 1), eI._2) | |
1081 | 1026 | else { | |
1082 | - | let | |
1083 | - | $Tuple2(( | |
1027 | + | let gf = fR(gd, eI._2, fE, fs, 0, fU) | |
1028 | + | $Tuple2((fs + 1), fR(ge, gf, fE, fs, 1, fU)) | |
1084 | 1029 | } | |
1085 | 1030 | } | |
1086 | 1031 | } | |
1087 | 1032 | ||
1088 | - | ( let | |
1089 | - | let | |
1090 | - | let | |
1091 | - | func | |
1092 | - | then | |
1093 | - | else | |
1094 | - | ||
1095 | - | func | |
1096 | - | then | |
1033 | + | ( let eK = ga | |
1034 | + | let eL = size(eK) | |
1035 | + | let eM = $Tuple2(0, gb) | |
1036 | + | func eN (eO,eP) = if ((eP >= eL)) | |
1037 | + | then eO | |
1038 | + | else fF(eO, eK[eP]) | |
1039 | + | ||
1040 | + | func eQ (eO,eP) = if ((eP >= eL)) | |
1041 | + | then eO | |
1097 | 1042 | else throw("List size exceeds 6") | |
1098 | 1043 | ||
1099 | - | eZ(eW(eW(eW(eW(eW(eW(eV, 0), 1), 2), 3), 4), 5), 6))._2 | |
1100 | - | } | |
1101 | - | ||
1102 | - | ||
1103 | - | func gt (gn,go,fO,fP,fN,fH) = if ((3 > size(gn))) | |
1104 | - | then throw("At least duck, mines and traps parts are required") | |
1105 | - | else { | |
1106 | - | func fV (eR,gp) = { | |
1107 | - | let fB = eR._1 | |
1108 | - | if ((fB == 0)) | |
1109 | - | then $Tuple4((fB + 1), eR._2, eR._3, eR._4) | |
1110 | - | else { | |
1111 | - | let gu = fL(gp, eR._2, fN, fH, eR._3, eR._4) | |
1112 | - | $Tuple4((fB + 1), gu._1, gu._2, gu._3) | |
1113 | - | } | |
1114 | - | } | |
1115 | - | ||
1116 | - | let gv = { | |
1117 | - | let eT = gn | |
1118 | - | let eU = size(eT) | |
1119 | - | let eV = $Tuple4(0, go, fO, fP) | |
1120 | - | func eW (eX,eY) = if ((eY >= eU)) | |
1121 | - | then eX | |
1122 | - | else fV(eX, eT[eY]) | |
1123 | - | ||
1124 | - | func eZ (eX,eY) = if ((eY >= eU)) | |
1125 | - | then eX | |
1126 | - | else throw("List size exceeds 10") | |
1127 | - | ||
1128 | - | eZ(eW(eW(eW(eW(eW(eW(eW(eW(eW(eW(eV, 0), 1), 2), 3), 4), 5), 6), 7), 8), 9), 10) | |
1129 | - | } | |
1130 | - | $Tuple3(gv._2, gv._3, gv._4) | |
1131 | - | } | |
1132 | - | ||
1133 | - | ||
1134 | - | func gw (B) = { | |
1135 | - | let gx = G(B) | |
1136 | - | let gy = split(valueOrElse(getString(gx), ",;,_,;,_,;,_,;,_,;,_,;,"), "_") | |
1137 | - | let gz = gm(gy, dY, true, nil) | |
1138 | - | let gA = split(gy[q], ";")[1] | |
1139 | - | let ar = if ((gA == "")) | |
1044 | + | eQ(eN(eN(eN(eN(eN(eN(eM, 0), 1), 2), 3), 4), 5), 6))._2 | |
1045 | + | } | |
1046 | + | ||
1047 | + | ||
1048 | + | func gg (u) = { | |
1049 | + | let gh = z(u) | |
1050 | + | let gi = split(valueOrElse(getString(gh), ",;,_,;,_,;,_,;,_,;,_,;,"), "_") | |
1051 | + | let gj = base64'AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA==' | |
1052 | + | let gk = fZ(gi, gj, true, nil) | |
1053 | + | let gl = split(gi[o], ";")[1] | |
1054 | + | let aj = if ((gl == "")) | |
1140 | 1055 | then 0 | |
1141 | 1056 | else { | |
1142 | - | let | |
1143 | - | if (( | |
1057 | + | let gm = split(gl, ",")[0] | |
1058 | + | if ((gm == "")) | |
1144 | 1059 | then 0 | |
1145 | 1060 | else { | |
1146 | - | let | |
1147 | - | let | |
1148 | - | let | |
1149 | - | if (if (if (if (if (( | |
1061 | + | let fD = split(gm, ":") | |
1062 | + | let cP = fD[0] | |
1063 | + | let gn = fD[1] | |
1064 | + | if (if (if (if (if ((cP == "06")) | |
1150 | 1065 | then true | |
1151 | - | else ( | |
1066 | + | else (cP == "07")) | |
1152 | 1067 | then true | |
1153 | - | else ( | |
1154 | - | then ( | |
1068 | + | else (cP == "08")) | |
1069 | + | then (gn != "") | |
1155 | 1070 | else false) | |
1156 | - | then (parseIntValue( | |
1071 | + | then (parseIntValue(gn) > 0) | |
1157 | 1072 | else false) | |
1158 | - | then parseIntValue(split( | |
1073 | + | then parseIntValue(split(aJ[parseIntValue(cP)], "_")[aL]) | |
1159 | 1074 | else 0 | |
1160 | 1075 | } | |
1161 | 1076 | } | |
1162 | - | let | |
1163 | - | let | |
1164 | - | ( | |
1165 | - | } | |
1166 | - | ||
1167 | - | ||
1168 | - | func | |
1077 | + | let fU = ah(this, u, aj, true) | |
1078 | + | let go = fZ(gi, gk, false, fU) | |
1079 | + | (go == go) | |
1080 | + | } | |
1081 | + | ||
1082 | + | ||
1083 | + | func gp (gq,gr,gs,gt) = if ((size(gq) != at)) | |
1169 | 1084 | then throw("Wrong proportions data") | |
1170 | 1085 | else { | |
1171 | - | func | |
1172 | - | let | |
1173 | - | if ((0 > | |
1174 | - | then throw(((((((("Panic! Pieces of type=" + toString( | |
1175 | - | else ( | |
1176 | - | } | |
1177 | - | ||
1178 | - | let | |
1179 | - | let | |
1180 | - | let | |
1181 | - | func | |
1182 | - | then | |
1183 | - | else | |
1184 | - | ||
1185 | - | func | |
1186 | - | then | |
1086 | + | func gu (eI,gv) = { | |
1087 | + | let fa = (parseIntValue(gq[gv]) + ((gt * gr[gv]) * gs)) | |
1088 | + | if ((0 > fa)) | |
1089 | + | then throw(((((((("Panic! Pieces of type=" + toString(gv)) + ", sign=") + toString(gt)) + ", terrainCounts[i]=") + toString(gr[gv])) + ", landSizeIndex=") + toString(gs))) | |
1090 | + | else (eI :+ toString(fa)) | |
1091 | + | } | |
1092 | + | ||
1093 | + | let eK = cz | |
1094 | + | let eL = size(eK) | |
1095 | + | let eM = nil | |
1096 | + | func eN (eO,eP) = if ((eP >= eL)) | |
1097 | + | then eO | |
1098 | + | else gu(eO, eK[eP]) | |
1099 | + | ||
1100 | + | func eQ (eO,eP) = if ((eP >= eL)) | |
1101 | + | then eO | |
1187 | 1102 | else throw("List size exceeds 6") | |
1188 | 1103 | ||
1189 | - | | |
1104 | + | eQ(eN(eN(eN(eN(eN(eN(eM, 0), 1), 2), 3), 4), 5), 6) | |
1190 | 1105 | } | |
1191 | 1106 | ||
1192 | 1107 | ||
1193 | - | func | |
1194 | - | let | |
1195 | - | makeString( | |
1196 | - | } | |
1197 | - | ||
1198 | - | ||
1199 | - | func | |
1200 | - | ||
1201 | - | ||
1202 | - | func | |
1203 | - | func | |
1204 | - | let | |
1205 | - | ( | |
1108 | + | func gw (gr,gs,gt) = { | |
1109 | + | let gq = split(valueOrElse(getString(dg()), "0_0_0_0_0_0"), "_") | |
1110 | + | makeString(gp(gq, gr, gs, gt), "_") | |
1111 | + | } | |
1112 | + | ||
1113 | + | ||
1114 | + | func gx (gy) = [(size(split(gy, "A")) - 1), (size(split(gy, "B")) - 1), (size(split(gy, "C")) - 1), (size(split(gy, "D")) - 1), (size(split(gy, "E")) - 1), (size(split(gy, "F")) - 1)] | |
1115 | + | ||
1116 | + | ||
1117 | + | func gz (gA,gr,gB,gs,gC) = { | |
1118 | + | func gD (eI,gv) = { | |
1119 | + | let gE = ((fraction(gB, gC, a) * gr[gv]) * gs) | |
1120 | + | (eI :+ toString((parseIntValue(gA[gv]) + gE))) | |
1206 | 1121 | } | |
1207 | 1122 | ||
1208 | - | let | |
1209 | - | let | |
1210 | - | let | |
1211 | - | let | |
1212 | - | func | |
1213 | - | then | |
1214 | - | else | |
1215 | - | ||
1216 | - | func | |
1217 | - | then | |
1123 | + | let eT = { | |
1124 | + | let eK = cz | |
1125 | + | let eL = size(eK) | |
1126 | + | let eM = nil | |
1127 | + | func eN (eO,eP) = if ((eP >= eL)) | |
1128 | + | then eO | |
1129 | + | else gD(eO, eK[eP]) | |
1130 | + | ||
1131 | + | func eQ (eO,eP) = if ((eP >= eL)) | |
1132 | + | then eO | |
1218 | 1133 | else throw("List size exceeds 6") | |
1219 | 1134 | ||
1220 | - | | |
1135 | + | eQ(eN(eN(eN(eN(eN(eN(eM, 0), 1), 2), 3), 4), 5), 6) | |
1221 | 1136 | } | |
1222 | - | makeString( | |
1223 | - | } | |
1224 | - | ||
1225 | - | ||
1226 | - | func | |
1227 | - | func | |
1228 | - | let | |
1229 | - | $Tuple2(( | |
1137 | + | makeString(eT, "_") | |
1138 | + | } | |
1139 | + | ||
1140 | + | ||
1141 | + | func gF (gr,gB,gs,gC) = { | |
1142 | + | func gD (eI,gv) = { | |
1143 | + | let gE = ((fraction(gB, gC, a) * gr[gv]) * gs) | |
1144 | + | $Tuple2((eI._1 :+ gE), (eI._2 + gE)) | |
1230 | 1145 | } | |
1231 | 1146 | ||
1232 | - | let | |
1233 | - | let | |
1234 | - | let | |
1235 | - | func | |
1236 | - | then | |
1237 | - | else | |
1238 | - | ||
1239 | - | func | |
1240 | - | then | |
1147 | + | let eK = cz | |
1148 | + | let eL = size(eK) | |
1149 | + | let eM = $Tuple2(nil, 0) | |
1150 | + | func eN (eO,eP) = if ((eP >= eL)) | |
1151 | + | then eO | |
1152 | + | else gD(eO, eK[eP]) | |
1153 | + | ||
1154 | + | func eQ (eO,eP) = if ((eP >= eL)) | |
1155 | + | then eO | |
1241 | 1156 | else throw("List size exceeds 6") | |
1242 | 1157 | ||
1243 | - | | |
1244 | - | } | |
1245 | - | ||
1246 | - | ||
1247 | - | func | |
1248 | - | let | |
1249 | - | let | |
1250 | - | if (( | |
1251 | - | then $Tuple2(makeString( | |
1252 | - | else if (( | |
1158 | + | eQ(eN(eN(eN(eN(eN(eN(eM, 0), 1), 2), 3), 4), 5), 6) | |
1159 | + | } | |
1160 | + | ||
1161 | + | ||
1162 | + | func gG (gH,gI,gJ,gK) = { | |
1163 | + | let gL = gJ._1 | |
1164 | + | let gM = gJ._2 | |
1165 | + | if ((gM == 0)) | |
1166 | + | then $Tuple2(makeString(gH, "_"), makeString(gI, "_")) | |
1167 | + | else if ((gK >= gM)) | |
1253 | 1168 | then { | |
1254 | - | func | |
1255 | - | ||
1256 | - | let | |
1257 | - | let | |
1258 | - | let | |
1259 | - | let | |
1260 | - | func | |
1261 | - | then | |
1262 | - | else | |
1263 | - | ||
1264 | - | func | |
1265 | - | then | |
1169 | + | func gN (eI,gv) = (eI :+ toString((parseIntValue(gH[gv]) + gL[gv]))) | |
1170 | + | ||
1171 | + | let eT = { | |
1172 | + | let eK = cz | |
1173 | + | let eL = size(eK) | |
1174 | + | let eM = nil | |
1175 | + | func eN (eO,eP) = if ((eP >= eL)) | |
1176 | + | then eO | |
1177 | + | else gN(eO, eK[eP]) | |
1178 | + | ||
1179 | + | func eQ (eO,eP) = if ((eP >= eL)) | |
1180 | + | then eO | |
1266 | 1181 | else throw("List size exceeds 6") | |
1267 | 1182 | ||
1268 | - | | |
1183 | + | eQ(eN(eN(eN(eN(eN(eN(eM, 0), 1), 2), 3), 4), 5), 6) | |
1269 | 1184 | } | |
1270 | - | $Tuple2(makeString( | |
1185 | + | $Tuple2(makeString(eT, "_"), makeString(gI, "_")) | |
1271 | 1186 | } | |
1272 | 1187 | else { | |
1273 | - | func | |
1274 | - | let | |
1275 | - | $Tuple2(( | |
1188 | + | func gO (eI,gv) = { | |
1189 | + | let gP = fraction(gL[gv], gK, gM) | |
1190 | + | $Tuple2((eI._1 :+ toString((parseIntValue(gH[gv]) + gP))), (eI._2 :+ toString(((parseIntValue(gI[gv]) + gL[gv]) - gP)))) | |
1276 | 1191 | } | |
1277 | 1192 | ||
1278 | - | let | |
1279 | - | let | |
1280 | - | let | |
1281 | - | let | |
1282 | - | func | |
1283 | - | then | |
1284 | - | else | |
1285 | - | ||
1286 | - | func | |
1287 | - | then | |
1193 | + | let eT = { | |
1194 | + | let eK = cz | |
1195 | + | let eL = size(eK) | |
1196 | + | let eM = $Tuple2(nil, nil) | |
1197 | + | func eN (eO,eP) = if ((eP >= eL)) | |
1198 | + | then eO | |
1199 | + | else gO(eO, eK[eP]) | |
1200 | + | ||
1201 | + | func eQ (eO,eP) = if ((eP >= eL)) | |
1202 | + | then eO | |
1288 | 1203 | else throw("List size exceeds 6") | |
1289 | 1204 | ||
1290 | - | | |
1205 | + | eQ(eN(eN(eN(eN(eN(eN(eM, 0), 1), 2), 3), 4), 5), 6) | |
1291 | 1206 | } | |
1292 | - | $Tuple2(makeString( | |
1207 | + | $Tuple2(makeString(eT._1, "_"), makeString(eT._2, "_")) | |
1293 | 1208 | } | |
1294 | 1209 | } | |
1295 | 1210 | ||
1296 | 1211 | ||
1297 | - | func | |
1298 | - | then | |
1299 | - | else -( | |
1300 | - | ||
1301 | - | ||
1302 | - | let | |
1303 | - | ||
1304 | - | func | |
1305 | - | let | |
1306 | - | let | |
1212 | + | func gQ (gR) = if ((gR >= toBigInt(0))) | |
1213 | + | then gR | |
1214 | + | else -(gR) | |
1215 | + | ||
1216 | + | ||
1217 | + | let gS = [[6, 9, 14, 15, 16], [5, 8, 13, 14, 15], [1, 4, 9, 10, 15], [1, 6, 7, 15, 19], [4, 7, 8, 13, 18]] | |
1218 | + | ||
1219 | + | func gT (dp,gU) = { | |
1220 | + | let gV = toInt((dp % dU)) | |
1221 | + | let gW = if ((gU[0] > gV)) | |
1307 | 1222 | then "A" | |
1308 | - | else if (( | |
1223 | + | else if ((gU[1] > gV)) | |
1309 | 1224 | then "B" | |
1310 | - | else if (( | |
1225 | + | else if ((gU[2] > gV)) | |
1311 | 1226 | then "C" | |
1312 | - | else if (( | |
1227 | + | else if ((gU[3] > gV)) | |
1313 | 1228 | then "D" | |
1314 | - | else if (( | |
1229 | + | else if ((gU[4] > gV)) | |
1315 | 1230 | then "E" | |
1316 | 1231 | else "F" | |
1317 | - | | |
1318 | - | } | |
1319 | - | ||
1320 | - | ||
1321 | - | func | |
1322 | - | let | |
1323 | - | func | |
1324 | - | ||
1325 | - | let | |
1326 | - | let | |
1327 | - | let | |
1328 | - | let | |
1329 | - | func | |
1330 | - | then | |
1331 | - | else | |
1332 | - | ||
1333 | - | func | |
1334 | - | then | |
1232 | + | gW | |
1233 | + | } | |
1234 | + | ||
1235 | + | ||
1236 | + | func gX (gY,gZ) = { | |
1237 | + | let ha = gS[gZ] | |
1238 | + | func hb (eI,eJ) = $Tuple2((((((eI._1 + gT(eI._2, ha)) + gT((eI._2 / dU), ha)) + gT((eI._2 / dV), ha)) + gT((eI._2 / dW), ha)) + gT((eI._2 / dX), ha)), (eI._2 / dY)) | |
1239 | + | ||
1240 | + | let hc = { | |
1241 | + | let eK = [1, 2, 3, 4, 5] | |
1242 | + | let eL = size(eK) | |
1243 | + | let eM = $Tuple2("", (gY / dT)) | |
1244 | + | func eN (eO,eP) = if ((eP >= eL)) | |
1245 | + | then eO | |
1246 | + | else hb(eO, eK[eP]) | |
1247 | + | ||
1248 | + | func eQ (eO,eP) = if ((eP >= eL)) | |
1249 | + | then eO | |
1335 | 1250 | else throw("List size exceeds 5") | |
1336 | 1251 | ||
1337 | - | | |
1252 | + | eQ(eN(eN(eN(eN(eN(eM, 0), 1), 2), 3), 4), 5) | |
1338 | 1253 | } | |
1339 | - | | |
1340 | - | } | |
1341 | - | ||
1342 | - | ||
1343 | - | let | |
1344 | - | ||
1345 | - | let | |
1346 | - | ||
1347 | - | func | |
1348 | - | func | |
1349 | - | let | |
1350 | - | let | |
1351 | - | let | |
1254 | + | hc._1 | |
1255 | + | } | |
1256 | + | ||
1257 | + | ||
1258 | + | let hd = [7, 2, 15, 19, 8, 24, 1, 21, 16, 5, 0, 22, 20, 23, 11, 4, 18, 12, 6, 10, 3, 17, 13, 9, 14] | |
1259 | + | ||
1260 | + | let he = ["A", "B", "C", "D", "E", "F"] | |
1261 | + | ||
1262 | + | func hf (hg,gs) = { | |
1263 | + | func hh (eI,dn) = { | |
1264 | + | let fs = eI._2 | |
1265 | + | let hi = parseIntValue(dn) | |
1266 | + | let gR = if ((hi == 0)) | |
1352 | 1267 | then 0 | |
1353 | - | else if (( | |
1354 | - | then ( | |
1355 | - | else if (( | |
1268 | + | else if ((hi >= (4 * gs))) | |
1269 | + | then (hi / gs) | |
1270 | + | else if ((hi > (3 * gs))) | |
1356 | 1271 | then 3 | |
1357 | - | else ((( | |
1358 | - | $Tuple3(( | |
1272 | + | else (((hi - 1) / gs) + 1) | |
1273 | + | $Tuple3((eI._1 :+ gR), (eI._2 + 1), (eI._3 + gR)) | |
1359 | 1274 | } | |
1360 | 1275 | ||
1361 | - | let | |
1362 | - | let | |
1363 | - | let | |
1364 | - | let | |
1365 | - | func | |
1366 | - | then | |
1367 | - | else | |
1368 | - | ||
1369 | - | func | |
1370 | - | then | |
1276 | + | let hc = { | |
1277 | + | let eK = hg | |
1278 | + | let eL = size(eK) | |
1279 | + | let eM = $Tuple3(nil, 0, 0) | |
1280 | + | func eN (eO,eP) = if ((eP >= eL)) | |
1281 | + | then eO | |
1282 | + | else hh(eO, eK[eP]) | |
1283 | + | ||
1284 | + | func eQ (eO,eP) = if ((eP >= eL)) | |
1285 | + | then eO | |
1371 | 1286 | else throw("List size exceeds 6") | |
1372 | 1287 | ||
1373 | - | | |
1288 | + | eQ(eN(eN(eN(eN(eN(eN(eM, 0), 1), 2), 3), 4), 5), 6) | |
1374 | 1289 | } | |
1375 | - | let | |
1376 | - | let | |
1377 | - | let | |
1378 | - | func | |
1379 | - | let | |
1380 | - | then ( | |
1381 | - | else | |
1382 | - | let | |
1290 | + | let hj = hc._1 | |
1291 | + | let hk = value(indexOf(hj, max(hj))) | |
1292 | + | let hl = (hc._3 - 25) | |
1293 | + | func hm (eI,cP) = { | |
1294 | + | let dz = if ((cP == hk)) | |
1295 | + | then (hj[cP] - hl) | |
1296 | + | else hj[cP] | |
1297 | + | let dD = if ((dz == 0)) | |
1383 | 1298 | then nil | |
1384 | - | else split(drop(toString(pow(10, 0, | |
1385 | - | let | |
1386 | - | func | |
1387 | - | ||
1388 | - | let | |
1389 | - | let | |
1390 | - | let | |
1391 | - | let | |
1392 | - | func | |
1393 | - | then | |
1394 | - | else | |
1395 | - | ||
1396 | - | func | |
1397 | - | then | |
1299 | + | else split(drop(toString(pow(10, 0, dz, 0, 0, DOWN)), 1), "") | |
1300 | + | let fN = he[cP] | |
1301 | + | func hn (ho,hp) = (ho :+ fN) | |
1302 | + | ||
1303 | + | let hq = { | |
1304 | + | let eK = dD | |
1305 | + | let eL = size(eK) | |
1306 | + | let eM = nil | |
1307 | + | func hr (eO,eP) = if ((eP >= eL)) | |
1308 | + | then eO | |
1309 | + | else hn(eO, eK[eP]) | |
1310 | + | ||
1311 | + | func hs (eO,eP) = if ((eP >= eL)) | |
1312 | + | then eO | |
1398 | 1313 | else throw("List size exceeds 25") | |
1399 | 1314 | ||
1400 | - | | |
1401 | - | } | |
1402 | - | ( | |
1315 | + | hs(hr(hr(hr(hr(hr(hr(hr(hr(hr(hr(hr(hr(hr(hr(hr(hr(hr(hr(hr(hr(hr(hr(hr(hr(hr(eM, 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) | |
1316 | + | } | |
1317 | + | (eI ++ hq) | |
1403 | 1318 | } | |
1404 | 1319 | ||
1405 | - | let | |
1406 | - | let | |
1407 | - | let | |
1408 | - | let | |
1409 | - | func | |
1410 | - | then | |
1411 | - | else | |
1412 | - | ||
1413 | - | func | |
1414 | - | then | |
1320 | + | let eT = { | |
1321 | + | let eK = cz | |
1322 | + | let eL = size(eK) | |
1323 | + | let eM = nil | |
1324 | + | func hr (eO,eP) = if ((eP >= eL)) | |
1325 | + | then eO | |
1326 | + | else hm(eO, eK[eP]) | |
1327 | + | ||
1328 | + | func hs (eO,eP) = if ((eP >= eL)) | |
1329 | + | then eO | |
1415 | 1330 | else throw("List size exceeds 6") | |
1416 | 1331 | ||
1417 | - | | |
1332 | + | hs(hr(hr(hr(hr(hr(hr(eM, 0), 1), 2), 3), 4), 5), 6) | |
1418 | 1333 | } | |
1419 | - | func | |
1420 | - | ||
1421 | - | let | |
1422 | - | let | |
1423 | - | let | |
1424 | - | func | |
1425 | - | then | |
1426 | - | else | |
1427 | - | ||
1428 | - | func | |
1429 | - | then | |
1334 | + | func ht (eI,fs) = (eI + eT[fs]) | |
1335 | + | ||
1336 | + | let eK = hd | |
1337 | + | let eL = size(eK) | |
1338 | + | let eM = "" | |
1339 | + | func hu (eO,eP) = if ((eP >= eL)) | |
1340 | + | then eO | |
1341 | + | else ht(eO, eK[eP]) | |
1342 | + | ||
1343 | + | func hv (eO,eP) = if ((eP >= eL)) | |
1344 | + | then eO | |
1430 | 1345 | else throw("List size exceeds 25") | |
1431 | 1346 | ||
1432 | - | | |
1433 | - | } | |
1434 | - | ||
1435 | - | ||
1436 | - | func | |
1437 | - | let | |
1438 | - | [toString(valueOrElse(parseInt( | |
1439 | - | then | |
1440 | - | else "0_0_0_0_0_0", if ((size(split( | |
1441 | - | then | |
1442 | - | else "0_0_0_0_0_0", | |
1443 | - | } | |
1444 | - | ||
1445 | - | ||
1446 | - | func | |
1447 | - | let | |
1448 | - | (( | |
1449 | - | } | |
1450 | - | ||
1451 | - | ||
1452 | - | func | |
1453 | - | let | |
1454 | - | func | |
1455 | - | ||
1456 | - | func | |
1457 | - | let | |
1458 | - | let | |
1459 | - | $Tuple2(( | |
1347 | + | hv(hu(hu(hu(hu(hu(hu(hu(hu(hu(hu(hu(hu(hu(hu(hu(hu(hu(hu(hu(hu(hu(hu(hu(hu(hu(eM, 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) | |
1348 | + | } | |
1349 | + | ||
1350 | + | ||
1351 | + | func hw (hx) = { | |
1352 | + | let hy = split(valueOrElse(getString(hx), "0:0_0_0_0_0_0:0_0_0_0_0_0:"), ":") | |
1353 | + | [toString(valueOrElse(parseInt(hy[aY]), 0)), if ((size(split(hy[aZ], "_")) == at)) | |
1354 | + | then hy[aZ] | |
1355 | + | else "0_0_0_0_0_0", if ((size(split(hy[ba], "_")) == at)) | |
1356 | + | then hy[ba] | |
1357 | + | else "0_0_0_0_0_0", hy[bb]] | |
1358 | + | } | |
1359 | + | ||
1360 | + | ||
1361 | + | func hz (hA) = { | |
1362 | + | let fg = split(hA, "_") | |
1363 | + | ((aw * (parseIntValue(fg[1]) + 1)) * parseIntValue(fg[0])) | |
1364 | + | } | |
1365 | + | ||
1366 | + | ||
1367 | + | func hB (hC) = { | |
1368 | + | let hD = hC[aS] | |
1369 | + | func hE (eI,hF) = (eI + parseIntValue(hF)) | |
1370 | + | ||
1371 | + | func hG (eI,hF) = { | |
1372 | + | let cP = eI._1 | |
1373 | + | let eB = (((parseIntValue(hF) + aO) - 1) / aO) | |
1374 | + | $Tuple2((cP + 1), (eI._2 + (eB * ct))) | |
1460 | 1375 | } | |
1461 | 1376 | ||
1462 | - | let | |
1463 | - | let | |
1464 | - | let | |
1465 | - | let | |
1466 | - | func | |
1467 | - | then | |
1468 | - | else | |
1469 | - | ||
1470 | - | func | |
1471 | - | then | |
1377 | + | let hH = { | |
1378 | + | let eK = split(hC[aQ], "_") | |
1379 | + | let eL = size(eK) | |
1380 | + | let eM = 0 | |
1381 | + | func eN (eO,eP) = if ((eP >= eL)) | |
1382 | + | then eO | |
1383 | + | else hE(eO, eK[eP]) | |
1384 | + | ||
1385 | + | func eQ (eO,eP) = if ((eP >= eL)) | |
1386 | + | then eO | |
1472 | 1387 | else throw("List size exceeds 6") | |
1473 | 1388 | ||
1474 | - | | |
1389 | + | eQ(eN(eN(eN(eN(eN(eN(eM, 0), 1), 2), 3), 4), 5), 6) | |
1475 | 1390 | } | |
1476 | - | let | |
1477 | - | let | |
1478 | - | let | |
1479 | - | let | |
1480 | - | func | |
1481 | - | then | |
1482 | - | else | |
1483 | - | ||
1484 | - | func | |
1485 | - | then | |
1391 | + | let hI = { | |
1392 | + | let eK = split(hC[aR], "_") | |
1393 | + | let eL = size(eK) | |
1394 | + | let eM = 0 | |
1395 | + | func hr (eO,eP) = if ((eP >= eL)) | |
1396 | + | then eO | |
1397 | + | else hE(eO, eK[eP]) | |
1398 | + | ||
1399 | + | func hs (eO,eP) = if ((eP >= eL)) | |
1400 | + | then eO | |
1486 | 1401 | else throw("List size exceeds 6") | |
1487 | 1402 | ||
1488 | - | | |
1403 | + | hs(hr(hr(hr(hr(hr(hr(eM, 0), 1), 2), 3), 4), 5), 6) | |
1489 | 1404 | } | |
1490 | - | let | |
1405 | + | let hJ = if ((hD == "")) | |
1491 | 1406 | then 0 | |
1492 | - | else ( let | |
1493 | - | let | |
1494 | - | let | |
1495 | - | func | |
1496 | - | then | |
1497 | - | else | |
1498 | - | ||
1499 | - | func | |
1500 | - | then | |
1407 | + | else ( let eK = split_4C(hD, "_") | |
1408 | + | let eL = size(eK) | |
1409 | + | let eM = $Tuple2(0, 0) | |
1410 | + | func hu (eO,eP) = if ((eP >= eL)) | |
1411 | + | then eO | |
1412 | + | else hG(eO, eK[eP]) | |
1413 | + | ||
1414 | + | func hv (eO,eP) = if ((eP >= eL)) | |
1415 | + | then eO | |
1501 | 1416 | else throw("List size exceeds 50") | |
1502 | 1417 | ||
1503 | - | | |
1504 | - | (( | |
1505 | - | } | |
1506 | - | ||
1507 | - | ||
1508 | - | func | |
1509 | - | let | |
1510 | - | let | |
1511 | - | let | |
1512 | - | let | |
1513 | - | let | |
1514 | - | let | |
1515 | - | then makeString(["0", toString( | |
1418 | + | hv(hu(hu(hu(hu(hu(hu(hu(hu(hu(hu(hu(hu(hu(hu(hu(hu(hu(hu(hu(hu(hu(hu(hu(hu(hu(hu(hu(hu(hu(hu(hu(hu(hu(hu(hu(hu(hu(hu(hu(hu(hu(hu(hu(hu(hu(hu(hu(hu(hu(hu(eM, 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))._2 | |
1419 | + | ((hH + hI) + hJ) | |
1420 | + | } | |
1421 | + | ||
1422 | + | ||
1423 | + | func hK (hL,hM,hN) = { | |
1424 | + | let hA = ((toString(hM) + "_") + toString(hN)) | |
1425 | + | let hO = hz(hA) | |
1426 | + | let hP = valueOrElse(getString(hL), (hA + ":0_0_0_0_0_0:0_0_0_0_0_0::0")) | |
1427 | + | let hQ = split_4C(hP, ":") | |
1428 | + | let hR = hB(hQ) | |
1429 | + | let hS = if ((5 > size(hQ))) | |
1430 | + | then makeString(["0", toString(hR), toString((hO - hR)), toString(hO)], "_") | |
1516 | 1431 | else { | |
1517 | - | let | |
1518 | - | let | |
1519 | - | let | |
1520 | - | then parseIntValue( | |
1521 | - | else | |
1522 | - | makeString([toString( | |
1523 | - | } | |
1524 | - | [ | |
1525 | - | then | |
1526 | - | else "0_0_0_0_0_0", if ((size(split( | |
1527 | - | then | |
1528 | - | else "0_0_0_0_0_0", | |
1529 | - | } | |
1530 | - | ||
1531 | - | ||
1532 | - | func | |
1533 | - | let | |
1534 | - | let | |
1535 | - | (( | |
1536 | - | } | |
1537 | - | ||
1538 | - | ||
1539 | - | func | |
1432 | + | let hT = split(hQ[aT], "_") | |
1433 | + | let hU = parseIntValue(hT[aU]) | |
1434 | + | let hV = if ((size(hT) > 1)) | |
1435 | + | then parseIntValue(hT[aV]) | |
1436 | + | else hR | |
1437 | + | makeString([toString(hU), toString(hV), toString(((hO - hU) - hV)), toString(hO)], "_") | |
1438 | + | } | |
1439 | + | [hQ[aP], if ((size(split(hQ[aQ], "_")) == at)) | |
1440 | + | then hQ[aQ] | |
1441 | + | else "0_0_0_0_0_0", if ((size(split(hQ[aR], "_")) == at)) | |
1442 | + | then hQ[aR] | |
1443 | + | else "0_0_0_0_0_0", hQ[aS], hS] | |
1444 | + | } | |
1445 | + | ||
1446 | + | ||
1447 | + | func hW (hC) = { | |
1448 | + | let hX = hB(hC) | |
1449 | + | let hY = parseIntValue(split(hC[aT], "_")[aU]) | |
1450 | + | ((hz(hC[aP]) - hX) - hY) | |
1451 | + | } | |
1452 | + | ||
1453 | + | ||
1454 | + | func hZ (ia,hC,ib) = if ((size(ia) != 3)) | |
1540 | 1455 | then throw("cargoListStr should contain exactly 2 ':' separators") | |
1541 | 1456 | else { | |
1542 | - | let | |
1543 | - | let | |
1544 | - | let | |
1457 | + | let ic = split(ia[0], "_") | |
1458 | + | let id = split(ia[1], "_") | |
1459 | + | let ie = if ((ia[2] == "")) | |
1545 | 1460 | then nil | |
1546 | - | else split_4C( | |
1547 | - | if ((size( | |
1461 | + | else split_4C(ia[2], "_") | |
1462 | + | if ((size(ic) != at)) | |
1548 | 1463 | then throw("All 6 resources should be passed") | |
1549 | - | else if ((size( | |
1464 | + | else if ((size(id) != at)) | |
1550 | 1465 | then throw("All 6 materials should be passed") | |
1551 | 1466 | else { | |
1552 | - | let | |
1553 | - | let | |
1554 | - | let | |
1555 | - | let | |
1467 | + | let gK = hW(hC) | |
1468 | + | let if = split(hC[aQ], "_") | |
1469 | + | let ig = split(hC[aR], "_") | |
1470 | + | let ih = if ((hC[aS] == "")) | |
1556 | 1471 | then nil | |
1557 | - | else split_4C( | |
1558 | - | let | |
1559 | - | let | |
1560 | - | let | |
1472 | + | else split_4C(hC[aS], "_") | |
1473 | + | let gI = split(ib[aZ], "_") | |
1474 | + | let ii = split(ib[ba], "_") | |
1475 | + | let ij = if ((ib[bb] == "")) | |
1561 | 1476 | then nil | |
1562 | - | else split_4C( | |
1563 | - | func | |
1564 | - | let | |
1565 | - | let | |
1566 | - | let | |
1567 | - | let | |
1568 | - | if (( | |
1569 | - | then $Tuple4(( | |
1570 | - | else if (( | |
1571 | - | then if (( | |
1572 | - | then throw((((("Attempt to take " + | |
1573 | - | else $Tuple4(( | |
1574 | - | else if ((-( | |
1575 | - | then throw((((("Attempt to take " + toString(-( | |
1576 | - | else $Tuple4(( | |
1477 | + | else split_4C(ib[bb], "_") | |
1478 | + | func ik (eI,hF) = { | |
1479 | + | let gv = eI._1 | |
1480 | + | let il = parseIntValue(hF) | |
1481 | + | let im = parseIntValue(if[gv]) | |
1482 | + | let in = parseIntValue(gI[gv]) | |
1483 | + | if ((il == 0)) | |
1484 | + | then $Tuple4((gv + 1), (eI._2 :+ if[gv]), (eI._3 :+ gI[gv]), eI._4) | |
1485 | + | else if ((il > 0)) | |
1486 | + | then if ((il > in)) | |
1487 | + | then throw((((("Attempt to take " + hF) + " from backpack, but only ") + toString(in)) + " available")) | |
1488 | + | else $Tuple4((gv + 1), (eI._2 :+ toString((im + il))), (eI._3 :+ toString((in - il))), (eI._4 + il)) | |
1489 | + | else if ((-(il) > im)) | |
1490 | + | then throw((((("Attempt to take " + toString(-(il))) + " from warehouse, but only ") + toString(im)) + " available")) | |
1491 | + | else $Tuple4((gv + 1), (eI._2 :+ toString((im + il))), (eI._3 :+ toString((in - il))), (eI._4 + il)) | |
1577 | 1492 | } | |
1578 | 1493 | ||
1579 | - | let | |
1580 | - | let | |
1581 | - | let | |
1582 | - | let | |
1583 | - | func | |
1584 | - | then | |
1585 | - | else | |
1586 | - | ||
1587 | - | func | |
1588 | - | then | |
1494 | + | let eT = { | |
1495 | + | let eK = ic | |
1496 | + | let eL = size(eK) | |
1497 | + | let eM = $Tuple4(0, nil, nil, 0) | |
1498 | + | func eN (eO,eP) = if ((eP >= eL)) | |
1499 | + | then eO | |
1500 | + | else ik(eO, eK[eP]) | |
1501 | + | ||
1502 | + | func eQ (eO,eP) = if ((eP >= eL)) | |
1503 | + | then eO | |
1589 | 1504 | else throw("List size exceeds 6") | |
1590 | 1505 | ||
1591 | - | | |
1506 | + | eQ(eN(eN(eN(eN(eN(eN(eM, 0), 1), 2), 3), 4), 5), 6) | |
1592 | 1507 | } | |
1593 | - | func | |
1594 | - | let | |
1595 | - | let | |
1596 | - | let | |
1597 | - | let | |
1598 | - | if (( | |
1599 | - | then $Tuple4(( | |
1600 | - | else if (( | |
1601 | - | then if (( | |
1602 | - | then throw((((("Attempt to take " + | |
1603 | - | else $Tuple4(( | |
1604 | - | else if ((-( | |
1605 | - | then throw((((("Attempt to take " + toString(-( | |
1606 | - | else $Tuple4(( | |
1508 | + | func io (eI,hF) = { | |
1509 | + | let gv = eI._1 | |
1510 | + | let il = parseIntValue(hF) | |
1511 | + | let ip = parseIntValue(ig[gv]) | |
1512 | + | let iq = parseIntValue(ii[gv]) | |
1513 | + | if ((il == 0)) | |
1514 | + | then $Tuple4((gv + 1), (eI._2 :+ ig[gv]), (eI._3 :+ ii[gv]), eI._4) | |
1515 | + | else if ((il > 0)) | |
1516 | + | then if ((il > iq)) | |
1517 | + | then throw((((("Attempt to take " + hF) + " from backpack, but only ") + toString(iq)) + " available")) | |
1518 | + | else $Tuple4((gv + 1), (eI._2 :+ toString((ip + il))), (eI._3 :+ toString((iq - il))), (eI._4 + il)) | |
1519 | + | else if ((-(il) > ip)) | |
1520 | + | then throw((((("Attempt to take " + toString(-(il))) + " from warehouse, but only ") + toString(ip)) + " available")) | |
1521 | + | else $Tuple4((gv + 1), (eI._2 :+ toString((ip + il))), (eI._3 :+ toString((iq - il))), (eI._4 + il)) | |
1607 | 1522 | } | |
1608 | 1523 | ||
1609 | - | let | |
1610 | - | let | |
1611 | - | let | |
1612 | - | let | |
1613 | - | func | |
1614 | - | then | |
1615 | - | else | |
1616 | - | ||
1617 | - | func | |
1618 | - | then | |
1524 | + | let gd = { | |
1525 | + | let eK = id | |
1526 | + | let eL = size(eK) | |
1527 | + | let eM = $Tuple4(0, nil, nil, eT._4) | |
1528 | + | func hr (eO,eP) = if ((eP >= eL)) | |
1529 | + | then eO | |
1530 | + | else io(eO, eK[eP]) | |
1531 | + | ||
1532 | + | func hs (eO,eP) = if ((eP >= eL)) | |
1533 | + | then eO | |
1619 | 1534 | else throw("List size exceeds 6") | |
1620 | 1535 | ||
1621 | - | | |
1536 | + | hs(hr(hr(hr(hr(hr(hr(eM, 0), 1), 2), 3), 4), 5), 6) | |
1622 | 1537 | } | |
1623 | - | func | |
1624 | - | let | |
1625 | - | let | |
1626 | - | let | |
1627 | - | then parseIntValue( | |
1538 | + | func ir (eI,hF) = { | |
1539 | + | let gv = eI._1 | |
1540 | + | let il = parseIntValue(hF) | |
1541 | + | let is = if ((size(ih) > gv)) | |
1542 | + | then parseIntValue(ih[gv]) | |
1628 | 1543 | else 0 | |
1629 | - | let | |
1630 | - | then parseIntValue( | |
1544 | + | let it = if ((size(ij) > gv)) | |
1545 | + | then parseIntValue(ij[gv]) | |
1631 | 1546 | else 0 | |
1632 | - | if (( | |
1633 | - | then $Tuple4(( | |
1634 | - | else if (( | |
1635 | - | then if (( | |
1636 | - | then throw((((("Attempt to take " + | |
1547 | + | if ((il == 0)) | |
1548 | + | then $Tuple4((gv + 1), (eI._2 :+ toString(is)), (eI._3 :+ toString(it)), eI._4) | |
1549 | + | else if ((il > 0)) | |
1550 | + | then if ((il > it)) | |
1551 | + | then throw((((("Attempt to take " + hF) + " from backpack, but only ") + toString(it)) + " available")) | |
1637 | 1552 | else { | |
1638 | - | let | |
1639 | - | $Tuple4(( | |
1553 | + | let iu = (ey((is + il), aO) - ey(is, aO)) | |
1554 | + | $Tuple4((gv + 1), (eI._2 :+ toString((is + il))), (eI._3 :+ toString((it - il))), (eI._4 + iu)) | |
1640 | 1555 | } | |
1641 | - | else if ((-( | |
1642 | - | then throw((((("Attempt to take " + toString(-( | |
1556 | + | else if ((-(il) > is)) | |
1557 | + | then throw((((("Attempt to take " + toString(-(il))) + " from warehouse, but only ") + toString(is)) + " available")) | |
1643 | 1558 | else { | |
1644 | - | let | |
1645 | - | $Tuple4(( | |
1559 | + | let iu = (ey((is + il), aO) - ey(is, aO)) | |
1560 | + | $Tuple4((gv + 1), (eI._2 :+ toString((is + il))), (eI._3 :+ toString((it - il))), (eI._4 + iu)) | |
1646 | 1561 | } | |
1647 | 1562 | } | |
1648 | 1563 | ||
1649 | - | let | |
1564 | + | let hy = if ((size(ie) != 0)) | |
1650 | 1565 | then { | |
1651 | - | let | |
1652 | - | let | |
1653 | - | let | |
1654 | - | func | |
1655 | - | then | |
1656 | - | else | |
1657 | - | ||
1658 | - | func | |
1659 | - | then | |
1566 | + | let eK = ie | |
1567 | + | let eL = size(eK) | |
1568 | + | let eM = $Tuple4(0, nil, nil, gd._4) | |
1569 | + | func hu (eO,eP) = if ((eP >= eL)) | |
1570 | + | then eO | |
1571 | + | else ir(eO, eK[eP]) | |
1572 | + | ||
1573 | + | func hv (eO,eP) = if ((eP >= eL)) | |
1574 | + | then eO | |
1660 | 1575 | else throw("List size exceeds 50") | |
1661 | 1576 | ||
1662 | - | | |
1577 | + | hv(hu(hu(hu(hu(hu(hu(hu(hu(hu(hu(hu(hu(hu(hu(hu(hu(hu(hu(hu(hu(hu(hu(hu(hu(hu(hu(hu(hu(hu(hu(hu(hu(hu(hu(hu(hu(hu(hu(hu(hu(hu(hu(hu(hu(hu(hu(hu(hu(hu(hu(eM, 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) | |
1663 | 1578 | } | |
1664 | - | else $Tuple4(0, | |
1665 | - | let | |
1666 | - | if (( | |
1667 | - | then throw((((("Attempt to put total " + toString( | |
1668 | - | else $Tuple7(makeString( | |
1579 | + | else $Tuple4(0, ih, ij, gd._4) | |
1580 | + | let iv = hy._4 | |
1581 | + | if ((iv > gK)) | |
1582 | + | then throw((((("Attempt to put total " + toString(iv)) + " stuff, but only ") + toString(gK)) + " warehouse space left")) | |
1583 | + | else $Tuple7(makeString(eT._2, "_"), makeString(gd._2, "_"), makeString_2C(hy._2, "_"), makeString(eT._3, "_"), makeString(gd._3, "_"), makeString_2C(hy._3, "_"), iv) | |
1669 | 1584 | } | |
1670 | 1585 | } | |
1671 | 1586 | ||
1672 | 1587 | ||
1673 | - | func | |
1674 | - | let | |
1675 | - | let | |
1676 | - | let | |
1677 | - | let | |
1678 | - | let | |
1679 | - | let | |
1680 | - | let | |
1681 | - | let | |
1682 | - | let | |
1683 | - | let | |
1684 | - | $Tuple2([IntegerEntry( | |
1685 | - | } | |
1686 | - | ||
1687 | - | ||
1688 | - | func | |
1588 | + | func iw (ix,iy) = { | |
1589 | + | let bC = toString(ix) | |
1590 | + | let iz = gQ(toBigInt(iy)) | |
1591 | + | let iA = valueOrElse(getInteger(ea()), (dZ + 1)) | |
1592 | + | let ee = toString(iA) | |
1593 | + | let gZ = toInt((iz % dT)) | |
1594 | + | let gy = gX(iz, gZ) | |
1595 | + | let di = aH[gZ] | |
1596 | + | let iB = Issue(ex(ee, "S"), makeString([ee, "S", gy, di], "_"), 1, 0, false) | |
1597 | + | let bg = calculateAssetId(iB) | |
1598 | + | let iC = toBase58String(bg) | |
1599 | + | $Tuple2([IntegerEntry(ea(), (iA + 1)), iB, StringEntry(ed(ee), iC), StringEntry(bf(iC), bC), StringEntry(eg(ee), bC), IntegerEntry(bq(iC), 0), IntegerEntry(ef(iC, bC), 0), ScriptTransfer(ix, 1, bg)], $Tuple2(iC, di)) | |
1600 | + | } | |
1601 | + | ||
1602 | + | ||
1603 | + | func iD (bC,iE,iF) = if (!(sigVerify_8Kb(iE, iF, cl))) | |
1689 | 1604 | then throw("signature does not match") | |
1690 | 1605 | else { | |
1691 | - | let | |
1692 | - | let | |
1693 | - | let | |
1694 | - | let | |
1695 | - | let | |
1696 | - | let | |
1697 | - | let | |
1698 | - | let | |
1699 | - | if (if (( | |
1606 | + | let fg = split_4C(toUtf8String(iE), ";") | |
1607 | + | let iG = split_4C(fg[0], "|") | |
1608 | + | let iH = split(iG[eo], "_") | |
1609 | + | let iI = parseIntValue(iH[0]) | |
1610 | + | let iJ = parseIntValue(iH[1]) | |
1611 | + | let iK = split(fg[1], ":") | |
1612 | + | let iL = iK[0] | |
1613 | + | let iM = parseIntValue(iG[ep]) | |
1614 | + | if (if ((iM > (lastBlock.timestamp + dL))) | |
1700 | 1615 | then true | |
1701 | - | else ((lastBlock.timestamp - | |
1702 | - | then throw(((("signature outdated: logTime=" + toString( | |
1616 | + | else ((lastBlock.timestamp - dL) > iM)) | |
1617 | + | then throw(((("signature outdated: logTime=" + toString(iM)) + ", bcTime=") + toString(lastBlock.timestamp))) | |
1703 | 1618 | else { | |
1704 | - | let | |
1705 | - | let | |
1706 | - | if (( | |
1707 | - | then throw(((("Tx ids don't match! In state: " + | |
1619 | + | let iN = iK[1] | |
1620 | + | let iO = valueOrElse(getString(dx(bC)), "") | |
1621 | + | if ((iO != iN)) | |
1622 | + | then throw(((("Tx ids don't match! In state: " + iO) + ", in msg: ") + iN)) | |
1708 | 1623 | else { | |
1709 | - | let | |
1710 | - | let | |
1711 | - | let | |
1712 | - | let | |
1713 | - | if (( | |
1714 | - | then throw(((("oldHealth=" + toString( | |
1715 | - | else if ((0 >= | |
1624 | + | let u = valueOrErrorMessage(getString(by(bC)), "You don't have a duck staked") | |
1625 | + | let iP = t(u) | |
1626 | + | let iQ = ab(valueOrElse(getInteger(x(u)), 0)) | |
1627 | + | let iR = valueOrElse(getInteger(iP), iQ) | |
1628 | + | if ((iR != iI)) | |
1629 | + | then throw(((("oldHealth=" + toString(iR)) + " from state does not match one from flight log=") + toString(iI))) | |
1630 | + | else if ((0 >= iI)) | |
1716 | 1631 | then throw("You can't fly with zero health") | |
1717 | - | else if (!( | |
1632 | + | else if (!(gg(u))) | |
1718 | 1633 | then throw("Equipment incompatible") | |
1719 | 1634 | else { | |
1720 | - | let | |
1721 | - | then | |
1635 | + | let iS = if ((size(iG) > eq)) | |
1636 | + | then iG[eq] | |
1722 | 1637 | else "" | |
1723 | - | let | |
1724 | - | then | |
1638 | + | let iT = if ((size(iG) > er)) | |
1639 | + | then iG[er] | |
1725 | 1640 | else "" | |
1726 | - | let | |
1727 | - | then ( | |
1641 | + | let iU = if (if ((iJ > 0)) | |
1642 | + | then (iS == "$") | |
1728 | 1643 | else false) | |
1729 | - | then | |
1644 | + | then do(invoke(cQ, "sendUsdtPrize", [bC], nil)) | |
1730 | 1645 | else 0 | |
1731 | - | $Tuple5( | |
1646 | + | $Tuple5(iJ, u, iU, iL, iT) | |
1732 | 1647 | } | |
1733 | 1648 | } | |
1734 | 1649 | } | |
1735 | 1650 | } | |
1736 | 1651 | ||
1737 | 1652 | ||
1738 | - | func | |
1739 | - | let | |
1740 | - | let | |
1741 | - | let | |
1742 | - | let | |
1743 | - | (( | |
1744 | - | } | |
1745 | - | ||
1746 | - | ||
1747 | - | func | |
1748 | - | let | |
1749 | - | then $Tuple2( | |
1653 | + | func iV (bp,iW) = { | |
1654 | + | let hN = valueOrElse(getInteger(bq(bp)), 0) | |
1655 | + | let iX = valueOrElse(getInteger(bj(as, bp)), 0) | |
1656 | + | let iY = (hN / 6) | |
1657 | + | let iZ = (hN / 7) | |
1658 | + | ((av + fraction(av, ((hN + iY) + (2 * iZ)), 5)) + fraction(av, iX, (iW * 5))) | |
1659 | + | } | |
1660 | + | ||
1661 | + | ||
1662 | + | func ja (c,jb,jc) = { | |
1663 | + | let jd = if ((jb == el)) | |
1664 | + | then $Tuple2(jc, valueOrElse(getString(by(c)), "")) | |
1750 | 1665 | else { | |
1751 | - | let | |
1752 | - | let | |
1753 | - | let | |
1754 | - | if (( | |
1755 | - | then throw((("Duck location type is " + | |
1756 | - | else $Tuple2( | |
1757 | - | } | |
1758 | - | let | |
1759 | - | let | |
1760 | - | let | |
1761 | - | let | |
1762 | - | let | |
1763 | - | let | |
1764 | - | if (( | |
1765 | - | then throw(( | |
1666 | + | let u = valueOrErrorMessage(getString(by(c)), "You don't have a duck staked") | |
1667 | + | let je = valueOrElse(getString(bA(u)), ax) | |
1668 | + | let bV = split(value(je), "_") | |
1669 | + | if ((bV[bd] != "L")) | |
1670 | + | then throw((("Duck location type is " + bV[bd]) + ", but should be L")) | |
1671 | + | else $Tuple2(bV[be], u) | |
1672 | + | } | |
1673 | + | let bp = jd._1 | |
1674 | + | let jf = jd._2 | |
1675 | + | let jg = value(assetInfo(fromBase58String(bp))) | |
1676 | + | let jh = bi(bp) | |
1677 | + | let ji = valueOrErrorMessage(getInteger(jh), (("Land " + jg.name) + " is not staked")) | |
1678 | + | let jj = valueOrErrorMessage(getString(bf(bp)), (("NFT " + jg.name) + " is orphaned")) | |
1679 | + | if ((jj != c)) | |
1680 | + | then throw((ap + " is not yours")) | |
1766 | 1681 | else { | |
1767 | - | let | |
1768 | - | $Tuple4( | |
1769 | - | } | |
1770 | - | } | |
1771 | - | ||
1772 | - | ||
1773 | - | func | |
1682 | + | let jk = split(jg.description, "_") | |
1683 | + | $Tuple4(jf, bp, jk, ji) | |
1684 | + | } | |
1685 | + | } | |
1686 | + | ||
1687 | + | ||
1688 | + | func jl (c,ez,jb,jc) = if ((0 > ez)) | |
1774 | 1689 | then throw("Negative amount") | |
1775 | 1690 | else { | |
1776 | - | let | |
1777 | - | let | |
1778 | - | let | |
1779 | - | let | |
1780 | - | if ((0 > | |
1781 | - | then throw(((("Saved timestamp is in future, saved = " + toString( | |
1691 | + | let fN = ja(c, jb, jc) | |
1692 | + | let du = fN._3[cX] | |
1693 | + | let gr = gx(fN._3[cY]) | |
1694 | + | let gB = (lastBlock.timestamp - fN._4) | |
1695 | + | if ((0 > gB)) | |
1696 | + | then throw(((("Saved timestamp is in future, saved = " + toString(fN._4)) + ", current = ") + toString(lastBlock.timestamp))) | |
1782 | 1697 | else { | |
1783 | - | let | |
1784 | - | let | |
1785 | - | let | |
1786 | - | if (( | |
1787 | - | then throw(((("Not enough resources, available = " + toString( | |
1698 | + | let iW = dt(du) | |
1699 | + | let jm = iV(fN._2, iW) | |
1700 | + | let jn = fraction(gB, (jm * iW), a) | |
1701 | + | if ((ez > jn)) | |
1702 | + | then throw(((("Not enough resources, available = " + toString(jn)) + ", requested = ") + toString(ez))) | |
1788 | 1703 | else { | |
1789 | - | let | |
1790 | - | let | |
1791 | - | let | |
1792 | - | let | |
1793 | - | let | |
1794 | - | let | |
1795 | - | let | |
1796 | - | let | |
1797 | - | let | |
1798 | - | if (if (( | |
1799 | - | then ( | |
1704 | + | let jo = fraction((jn - ez), a, (jm * iW)) | |
1705 | + | let jp = (lastBlock.timestamp - jo) | |
1706 | + | let hM = (iW / cu) | |
1707 | + | let gJ = gF(gr, (gB - jo), hM, jm) | |
1708 | + | let hL = bo(fN._2) | |
1709 | + | let hN = valueOrElse(getInteger(bq(fN._2)), 0) | |
1710 | + | let hC = hK(hL, hM, hN) | |
1711 | + | let hT = split(hC[aT], "_") | |
1712 | + | let gK = parseIntValue(hT[aW]) | |
1713 | + | if (if ((jb == el)) | |
1714 | + | then (ez > gK) | |
1800 | 1715 | else false) | |
1801 | - | then throw((("Only " + toString( | |
1716 | + | then throw((("Only " + toString(gK)) + " space left in warehouse")) | |
1802 | 1717 | else { | |
1803 | - | let | |
1804 | - | let | |
1805 | - | let | |
1806 | - | let | |
1807 | - | let | |
1808 | - | then $Tuple4( | |
1809 | - | else if (( | |
1810 | - | then $Tuple4( | |
1718 | + | let hx = bz(fN._1) | |
1719 | + | let ib = hw(hx) | |
1720 | + | let gI = split(ib[aZ], "_") | |
1721 | + | let gH = split(hC[aQ], "_") | |
1722 | + | let jq = if ((jb == el)) | |
1723 | + | then $Tuple4(gz(gH, gr, (gB - jo), hM, jm), ib[aZ], (parseIntValue(hT[aV]) + gJ._2), (parseIntValue(hT[aW]) - gJ._2)) | |
1724 | + | else if ((jb == em)) | |
1725 | + | then $Tuple4(hC[aQ], gz(gI, gr, (gB - jo), hM, jm), parseIntValue(hT[aV]), parseIntValue(hT[aW])) | |
1811 | 1726 | else { | |
1812 | - | let | |
1813 | - | let | |
1814 | - | $Tuple4( | |
1727 | + | let jr = gG(gH, gI, gJ, gK) | |
1728 | + | let js = min([parseIntValue(hT[aW]), gJ._2]) | |
1729 | + | $Tuple4(jr._1, jr._2, (parseIntValue(hT[aV]) + js), (parseIntValue(hT[aW]) - js)) | |
1815 | 1730 | } | |
1816 | - | let | |
1817 | - | let | |
1818 | - | let | |
1819 | - | let | |
1820 | - | $Tuple5([IntegerEntry( | |
1731 | + | let jt = jq._1 | |
1732 | + | let ju = jq._2 | |
1733 | + | let jv = jq._3 | |
1734 | + | let jw = jq._4 | |
1735 | + | $Tuple5([IntegerEntry(bi(fN._2), jp), IntegerEntry(bl(ap, fN._2, c), jp)], hx, [ib[aY], ju, ib[ba], ib[bb]], hL, [hC[aP], jt, hC[aR], hC[aS], makeString([hT[aU], toString(jv), toString(jw), hT[aX]], "_")]) | |
1821 | 1736 | } | |
1822 | 1737 | } | |
1823 | 1738 | } | |
1824 | 1739 | } | |
1825 | 1740 | ||
1826 | 1741 | ||
1827 | - | func | |
1828 | - | let | |
1829 | - | let | |
1830 | - | let | |
1831 | - | | |
1832 | - | } | |
1833 | - | ||
1834 | - | ||
1835 | - | func | |
1836 | - | let c = toString( | |
1837 | - | let | |
1838 | - | let | |
1839 | - | let | |
1840 | - | let | |
1841 | - | if (if (!( | |
1842 | - | then ( | |
1742 | + | func jx (c,bp,iW,jb) = { | |
1743 | + | let jh = bi(bp) | |
1744 | + | let ji = value(getInteger(jh)) | |
1745 | + | let jn = (fraction((lastBlock.timestamp - ji), iV(bp, iW), a) * iW) | |
1746 | + | jl(c, jn, jb, bp) | |
1747 | + | } | |
1748 | + | ||
1749 | + | ||
1750 | + | func jy (eV,ix,jz,bp) = { | |
1751 | + | let c = toString(ix) | |
1752 | + | let fN = ja(c, en, bp) | |
1753 | + | let iW = dt(fN._3[cX]) | |
1754 | + | let jA = bq(fN._2) | |
1755 | + | let jB = valueOrElse(getInteger(jA), 0) | |
1756 | + | if (if (!(ch)) | |
1757 | + | then (jB >= 3) | |
1843 | 1758 | else false) | |
1844 | 1759 | then throw("Currently max infrastructure level = 3") | |
1845 | 1760 | else { | |
1846 | - | let | |
1847 | - | let | |
1848 | - | if (if ( | |
1849 | - | then ( | |
1761 | + | let jC = ((sqrt(iW, 0, 0, DOWN) / 5) + 2) | |
1762 | + | let ag = (jB + 1) | |
1763 | + | if (if (ch) | |
1764 | + | then (ag > jC) | |
1850 | 1765 | else false) | |
1851 | - | then throw(("Currently max infrastructure level = " + toString( | |
1766 | + | then throw(("Currently max infrastructure level = " + toString(jC))) | |
1852 | 1767 | else { | |
1853 | - | let | |
1854 | - | if (if (!( | |
1855 | - | then ( | |
1768 | + | let jD = fraction(dO, (iW * ag), cu) | |
1769 | + | if (if (!(eV)) | |
1770 | + | then (jz != jD) | |
1856 | 1771 | else false) | |
1857 | - | then throw(("Payment attached should be " + toString( | |
1772 | + | then throw(("Payment attached should be " + toString(jD))) | |
1858 | 1773 | else { | |
1859 | - | let | |
1860 | - | let | |
1861 | - | let | |
1862 | - | let | |
1863 | - | let | |
1864 | - | let | |
1865 | - | let | |
1866 | - | let | |
1867 | - | let | |
1868 | - | let | |
1869 | - | let | |
1870 | - | let | |
1871 | - | $Tuple3(([IntegerEntry( | |
1774 | + | let hx = bz(fN._1) | |
1775 | + | let ib = hw(hx) | |
1776 | + | let jE = split(ib[ba], "_") | |
1777 | + | let jF = fraction(cp, (iW * ag), cu) | |
1778 | + | let jG = makeString(eU(eV, jE, jF), "_") | |
1779 | + | let jH = jx(c, fN._2, iW, en) | |
1780 | + | let jI = jH._5 | |
1781 | + | let jJ = hz(jI[aP]) | |
1782 | + | let jK = makeString([split(jI[aP], "_")[0], toString(ag)], "_") | |
1783 | + | let jL = hz(jK) | |
1784 | + | let hT = split(jI[aT], "_") | |
1785 | + | let jM = makeString([hT[aU], hT[aV], toString(((parseIntValue(hT[aW]) + jL) - jJ)), toString(jL)], "_") | |
1786 | + | $Tuple3(([IntegerEntry(jA, ag), IntegerEntry(ef(fN._2, c), ag), StringEntry(hx, makeString([ib[aY], jH._3[aZ], jG, ib[bb]], ":")), StringEntry(jH._4, makeString([jK, jI[aQ], jI[aR], jI[aS], jM], ":"))] ++ jH._1), ag, jF) | |
1872 | 1787 | } | |
1873 | 1788 | } | |
1874 | 1789 | } | |
1875 | 1790 | } | |
1876 | 1791 | ||
1877 | 1792 | ||
1878 | - | func | |
1879 | - | let | |
1880 | - | let | |
1881 | - | let | |
1882 | - | $Tuple2([IntegerEntry( | |
1883 | - | } | |
1884 | - | ||
1885 | - | ||
1886 | - | func | |
1887 | - | let | |
1888 | - | let c = valueOrErrorMessage(getString( | |
1889 | - | if (if (if ( | |
1890 | - | then ( | |
1793 | + | func jN (jO,jP,jQ,jR) = { | |
1794 | + | let aa = valueOrElse(getInteger(jP), 0) | |
1795 | + | let af = (aa + jR) | |
1796 | + | let jS = ad(valueOrElse(getInteger(jO), 0), af) | |
1797 | + | $Tuple2([IntegerEntry(jO, jS[0]), IntegerEntry(jP, af), IntegerEntry(jQ, (valueOrElse(getInteger(jQ), 0) + jS[1]))], af) | |
1798 | + | } | |
1799 | + | ||
1800 | + | ||
1801 | + | func jT (u,jR) = { | |
1802 | + | let jg = value(assetInfo(fromBase58String(u))) | |
1803 | + | let c = valueOrErrorMessage(getString(bx(u)), (("NFT " + jg.name) + " is orphaned")) | |
1804 | + | if (if (if (ci) | |
1805 | + | then (jg.issuer == this) | |
1891 | 1806 | else false) | |
1892 | - | then contains( | |
1807 | + | then contains(jg.name, ar) | |
1893 | 1808 | else false) | |
1894 | - | then | |
1895 | - | else | |
1896 | - | } | |
1897 | - | ||
1898 | - | ||
1899 | - | func | |
1900 | - | ||
1901 | - | ||
1902 | - | func | |
1903 | - | let | |
1904 | - | let | |
1905 | - | let | |
1906 | - | if (!(isDefined( | |
1809 | + | then jN(B(c), A(c), C(c), jR) | |
1810 | + | else jN(x(u), w(u), y(u), jR) | |
1811 | + | } | |
1812 | + | ||
1813 | + | ||
1814 | + | func jU (c,jR) = jN(B(c), A(c), C(c), jR) | |
1815 | + | ||
1816 | + | ||
1817 | + | func jV (c) = { | |
1818 | + | let u = valueOrErrorMessage(getString(by(c)), "You don't have a duck staked") | |
1819 | + | let jW = bt(c) | |
1820 | + | let jX = getString(jW) | |
1821 | + | if (!(isDefined(jX))) | |
1907 | 1822 | then throw("You are not eligible for ONBOARD artifact") | |
1908 | 1823 | else { | |
1909 | - | let | |
1910 | - | let | |
1911 | - | if (isDefined( | |
1912 | - | then throw(("You already used your ONBOARD artifact on duck " + value( | |
1824 | + | let jY = bv(c) | |
1825 | + | let jZ = getString(jY) | |
1826 | + | if (isDefined(jZ)) | |
1827 | + | then throw(("You already used your ONBOARD artifact on duck " + value(jZ))) | |
1913 | 1828 | else { | |
1914 | - | let | |
1915 | - | let | |
1916 | - | if (isDefined( | |
1917 | - | then throw(((("The duck " + | |
1918 | - | else ([StringEntry( | |
1829 | + | let ka = bu(u) | |
1830 | + | let kb = getString(ka) | |
1831 | + | if (isDefined(kb)) | |
1832 | + | then throw(((("The duck " + u) + " already got points from ONBOARD artifact from user ") + value(kb))) | |
1833 | + | else ([StringEntry(jY, u), StringEntry(ka, c)] ++ jT(u, X)._1) | |
1919 | 1834 | } | |
1920 | 1835 | } | |
1921 | 1836 | } | |
1922 | 1837 | ||
1923 | 1838 | ||
1924 | - | func | |
1925 | - | let | |
1926 | - | let | |
1927 | - | let | |
1928 | - | let | |
1929 | - | if ((valueOrElse(getInteger( | |
1839 | + | func kc (c,jc) = { | |
1840 | + | let fN = ja(c, en, jc) | |
1841 | + | let bp = fN._2 | |
1842 | + | let iW = dt(fN._3[cX]) | |
1843 | + | let kd = bj(as, bp) | |
1844 | + | if ((valueOrElse(getInteger(kd), 0) > 0)) | |
1930 | 1845 | then throw("Presale artifact is already activated") | |
1931 | - | else if ((parseIntValue( | |
1932 | - | then throw(((( | |
1846 | + | else if ((parseIntValue(fN._3[cW]) > dZ)) | |
1847 | + | then throw((((ap + " ") + bp) + " is not eligible for presale artifact")) | |
1933 | 1848 | else { | |
1934 | - | let | |
1935 | - | ((( | |
1849 | + | let jH = jx(c, bp, iW, en) | |
1850 | + | (((jH._1 :+ IntegerEntry(kd, iW)) :+ StringEntry(jH._2, makeString(jH._3, ":"))) :+ StringEntry(jH._4, makeString(jH._5, ":"))) | |
1936 | 1851 | } | |
1937 | 1852 | } | |
1938 | 1853 | ||
1939 | 1854 | ||
1940 | - | func | |
1941 | - | let | |
1942 | - | let | |
1943 | - | let | |
1944 | - | let | |
1945 | - | let | |
1946 | - | let | |
1947 | - | if (( | |
1855 | + | func ke (u) = { | |
1856 | + | let bU = valueOrElse(getInteger(cU, bF), 0) | |
1857 | + | let je = split(valueOrElse(getString(bA(u)), ax), "_") | |
1858 | + | let bW = lastBlock.timestamp | |
1859 | + | let bX = bO(cU, bU) | |
1860 | + | let bQ = bX[bK] | |
1861 | + | let bR = bX[bL] | |
1862 | + | if ((je[bd] != "T")) | |
1948 | 1863 | then false | |
1949 | - | else if (if (if ((parseIntValue( | |
1950 | - | then ( | |
1864 | + | else if (if (if ((parseIntValue(je[bc]) == bU)) | |
1865 | + | then (bR[bN] == "INPROGRESS") | |
1951 | 1866 | else false) | |
1952 | - | then (parseIntValue( | |
1867 | + | then (parseIntValue(bQ[bM]) > bW) | |
1953 | 1868 | else false) | |
1954 | 1869 | then throw("Your duck is taking part in the tournament") | |
1955 | - | else | |
1956 | - | } | |
1957 | - | ||
1958 | - | ||
1959 | - | func | |
1960 | - | let | |
1961 | - | if ( | |
1870 | + | else ds(invoke(this, "exitTournamentInternal", [u], nil)) | |
1871 | + | } | |
1872 | + | ||
1873 | + | ||
1874 | + | func kf (kg,ag,kh,c,ki,kj) = { | |
1875 | + | let u = valueOrErrorMessage(getString(by(c)), "You don't have a duck staked") | |
1876 | + | if (ke(u)) | |
1962 | 1877 | then throw("mergeInternal_checkTournament") | |
1963 | 1878 | else { | |
1964 | - | func | |
1965 | - | let | |
1966 | - | let | |
1967 | - | let | |
1968 | - | let | |
1969 | - | if (( | |
1970 | - | then throw(( | |
1879 | + | func kk (eI,bp) = { | |
1880 | + | let jg = value(assetInfo(fromBase58String(bp))) | |
1881 | + | let jh = bi(bp) | |
1882 | + | let ji = valueOrErrorMessage(getInteger(jh), (("NFT " + jg.name) + " is not staked")) | |
1883 | + | let jj = valueOrErrorMessage(getString(bf(bp)), (("NFT " + jg.name) + " is orphaned")) | |
1884 | + | if ((jj != c)) | |
1885 | + | then throw((ap + " is not yours")) | |
1971 | 1886 | else { | |
1972 | - | let | |
1973 | - | let | |
1974 | - | if (if (( | |
1975 | - | then ( | |
1887 | + | let jk = split(jg.description, "_") | |
1888 | + | let di = jk[cZ] | |
1889 | + | if (if ((eI._3 != "")) | |
1890 | + | then (eI._3 != di) | |
1976 | 1891 | else false) | |
1977 | 1892 | then throw("Lands should be on the same continent to merge") | |
1978 | 1893 | else { | |
1979 | - | let | |
1980 | - | let | |
1981 | - | let | |
1982 | - | let | |
1983 | - | let | |
1984 | - | let | |
1985 | - | let | |
1986 | - | let | |
1987 | - | let | |
1988 | - | if (("S" == | |
1894 | + | let du = jk[cX] | |
1895 | + | let kl = eI._1 | |
1896 | + | let gv = valueOrErrorMessage(indexOf(kl, du), "You haven't passed all the lands needed") | |
1897 | + | let km = (take(kl, gv) + drop(kl, (gv + 1))) | |
1898 | + | let iW = dt(du) | |
1899 | + | let kn = (eI._2 + valueOrElse(getInteger(bj(as, bp)), 0)) | |
1900 | + | let hN = valueOrElse(getInteger(bq(bp)), 0) | |
1901 | + | let ko = { | |
1902 | + | let cm = du | |
1903 | + | if (("S" == cm)) | |
1989 | 1904 | then 3 | |
1990 | - | else if (("M" == | |
1905 | + | else if (("M" == cm)) | |
1991 | 1906 | then 4 | |
1992 | - | else if (("L" == | |
1907 | + | else if (("L" == cm)) | |
1993 | 1908 | then 5 | |
1994 | - | else if (("XL" == | |
1909 | + | else if (("XL" == cm)) | |
1995 | 1910 | then 6 | |
1996 | 1911 | else throw("Only S, M, L, XL can merge") | |
1997 | 1912 | } | |
1998 | - | if (( | |
1913 | + | if ((hN != ko)) | |
1999 | 1914 | then throw("All lands should be maxed to merge") | |
2000 | 1915 | else { | |
2001 | - | let | |
2002 | - | let | |
2003 | - | let | |
2004 | - | if ((0 > | |
2005 | - | then throw(((("Saved timestamp is in future, saved = " + toString( | |
1916 | + | let ee = jk[cW] | |
1917 | + | let gr = gx(jk[cY]) | |
1918 | + | let gB = (lastBlock.timestamp - ji) | |
1919 | + | if ((0 > gB)) | |
1920 | + | then throw(((("Saved timestamp is in future, saved = " + toString(ji)) + ", current = ") + toString(lastBlock.timestamp))) | |
2006 | 1921 | else { | |
2007 | - | let | |
2008 | - | let | |
2009 | - | let | |
2010 | - | let | |
2011 | - | let | |
2012 | - | let | |
2013 | - | let | |
2014 | - | let | |
2015 | - | if (!(isDefined( | |
2016 | - | then throw(("Your staked lands don't contain " + | |
1922 | + | let jm = iV(bp, iW) | |
1923 | + | let hM = (iW / cu) | |
1924 | + | let ju = gz(split(eI._4, "_"), gr, gB, hM, jm) | |
1925 | + | let eS = gp(eI._6, gr, hM, -1) | |
1926 | + | let kp = gp(eI._10, gr, hM, -1) | |
1927 | + | let hg = gp(eI._9, gr, hM, 1) | |
1928 | + | let kq = eI._7 | |
1929 | + | let cP = indexOf(kq, bp) | |
1930 | + | if (!(isDefined(cP))) | |
1931 | + | then throw(("Your staked lands don't contain " + bp)) | |
2017 | 1932 | else { | |
2018 | - | let | |
2019 | - | let | |
2020 | - | $Tuple10( | |
2021 | - | then [DeleteEntry( | |
2022 | - | else nil)), | |
1933 | + | let kr = bh(bp) | |
1934 | + | let ks = valueOrElse(getString(kr), "") | |
1935 | + | $Tuple10(km, kn, di, ju, ((((((((((((eI._5 :+ DeleteEntry(bi(bp))) :+ DeleteEntry(bl(ap, bp, c))) :+ DeleteEntry(ed(ee))) :+ DeleteEntry(bf(bp))) :+ DeleteEntry(bq(bp))) :+ DeleteEntry(ef(bp, c))) :+ DeleteEntry(bj(as, bp))) :+ DeleteEntry(eg(ee))) :+ DeleteEntry(bo(bp))) :+ DeleteEntry(kr)) :+ Burn(fromBase58String(bp), 1)) ++ (if ((ks != "")) | |
1936 | + | then [DeleteEntry(eb(ks))] | |
1937 | + | else nil)), eS, removeByIndex(kq, value(cP)), (eI._8 + iW), hg, kp) | |
2023 | 1938 | } | |
2024 | 1939 | } | |
2025 | 1940 | } | |
2026 | 1941 | } | |
2027 | 1942 | } | |
2028 | 1943 | } | |
2029 | 1944 | ||
2030 | - | let | |
2031 | - | let | |
2032 | - | let | |
2033 | - | let | |
2034 | - | let | |
2035 | - | let | |
2036 | - | then split_51C(value( | |
1945 | + | let hx = bz(u) | |
1946 | + | let ib = hw(hx) | |
1947 | + | let gq = split(valueOrElse(getString(dg()), "0_0_0_0_0_0"), "_") | |
1948 | + | let kt = dj(c) | |
1949 | + | let ku = getString(kt) | |
1950 | + | let kv = if (isDefined(ku)) | |
1951 | + | then split_51C(value(ku), "_") | |
2037 | 1952 | else nil | |
2038 | - | let | |
2039 | - | let | |
2040 | - | let | |
2041 | - | let | |
2042 | - | let | |
2043 | - | let | |
2044 | - | func | |
2045 | - | then | |
2046 | - | else | |
2047 | - | ||
2048 | - | func | |
2049 | - | then | |
1953 | + | let kw = split(value(assetInfo(fromBase58String(ki[0]))).description, "_")[cZ] | |
1954 | + | let kx = split(valueOrElse(getString(dh(kw)), "0_0_0_0_0_0"), "_") | |
1955 | + | let eT = { | |
1956 | + | let eK = ki | |
1957 | + | let eL = size(eK) | |
1958 | + | let eM = $Tuple10(kh, 0, "", ib[aZ], nil, gq, kv, 0, split("0_0_0_0_0_0", "_"), kx) | |
1959 | + | func eN (eO,eP) = if ((eP >= eL)) | |
1960 | + | then eO | |
1961 | + | else kk(eO, eK[eP]) | |
1962 | + | ||
1963 | + | func eQ (eO,eP) = if ((eP >= eL)) | |
1964 | + | then eO | |
2050 | 1965 | else throw("List size exceeds 5") | |
2051 | 1966 | ||
2052 | - | | |
1967 | + | eQ(eN(eN(eN(eN(eN(eM, 0), 1), 2), 3), 4), 5) | |
2053 | 1968 | } | |
2054 | - | let | |
2055 | - | let | |
2056 | - | let | |
2057 | - | let | |
2058 | - | let | |
2059 | - | let | |
2060 | - | let | |
2061 | - | let | |
2062 | - | let | |
2063 | - | let | |
2064 | - | let | |
2065 | - | $Tuple2(((((((((((((((( | |
2066 | - | then StringEntry( | |
2067 | - | else DeleteEntry( | |
1969 | + | let di = eT._3 | |
1970 | + | let gZ = valueOrErrorMessage(indexOf(aH, di), ("Unknown continent: " + di)) | |
1971 | + | let gy = hf(eT._9, (dt(kg) / cu)) | |
1972 | + | let iA = valueOrElse(getInteger(ea()), (dZ + 1)) | |
1973 | + | let ky = toString(iA) | |
1974 | + | let iB = Issue(ex(ky, kg), makeString([ky, kg, gy, di], "_"), 1, 0, false) | |
1975 | + | let bg = calculateAssetId(iB) | |
1976 | + | let kz = toBase58String(bg) | |
1977 | + | let jG = makeString(eU((kj > 0), split(ib[ba], "_"), kj), "_") | |
1978 | + | let kA = dk(c) | |
1979 | + | let kB = valueOrElse(getInteger(kA), 0) | |
1980 | + | $Tuple2((((((((((((((((eT._5 :+ (if ((size(eT._7) > 0)) | |
1981 | + | then StringEntry(kt, makeString_11C(eT._7, "_")) | |
1982 | + | else DeleteEntry(kt))) :+ IntegerEntry(kA, if ((eT._8 > kB)) | |
2068 | 1983 | then 0 | |
2069 | - | else ( | |
2070 | - | } | |
2071 | - | } | |
2072 | - | ||
2073 | - | ||
2074 | - | func | |
2075 | - | ||
2076 | - | ||
2077 | - | func | |
2078 | - | ||
2079 | - | ||
2080 | - | func | |
2081 | - | ||
2082 | - | ||
2083 | - | func | |
2084 | - | ||
2085 | - | ||
2086 | - | func | |
2087 | - | let | |
2088 | - | if ((4 == | |
2089 | - | then | |
2090 | - | else if ((3 == | |
2091 | - | then | |
2092 | - | else if ((5 == | |
2093 | - | then | |
2094 | - | else if ((2 == | |
2095 | - | then | |
1984 | + | else (kB - eT._8))) :+ IntegerEntry(ea(), (iA + 1))) :+ iB) :+ StringEntry(ed(ky), kz)) :+ StringEntry(bf(kz), c)) :+ StringEntry(eg(ky), c)) :+ IntegerEntry(bj(as, kz), eT._2)) :+ IntegerEntry(bq(kz), ag)) :+ IntegerEntry(ef(kz, c), ag)) :+ StringEntry(hx, makeString([ib[aY], eT._4, jG, ib[bb]], ":"))) :+ StringEntry(dg(), makeString(eT._6, "_"))) :+ StringEntry(dh(di), makeString(eT._10, "_"))) :+ StringEntry(bA(u), makeString([di, "L", kz], "_"))) :+ ScriptTransfer(addressFromStringValue(c), 1, bg)), kz) | |
1985 | + | } | |
1986 | + | } | |
1987 | + | ||
1988 | + | ||
1989 | + | func kC (c,ki) = kf("M", 3, "SSSS", c, ki, 0) | |
1990 | + | ||
1991 | + | ||
1992 | + | func kD (c,ki) = kf("L", 4, "SMM", c, ki, (cp * 4)) | |
1993 | + | ||
1994 | + | ||
1995 | + | func kE (c,ki) = kf("XL", 5, "SSSML", c, ki, (cp * 47)) | |
1996 | + | ||
1997 | + | ||
1998 | + | func kF (c,ki) = kf("XXL", 6, "LXL", c, ki, (cp * 54)) | |
1999 | + | ||
2000 | + | ||
2001 | + | func kG (c,ki) = { | |
2002 | + | let cm = size(ki) | |
2003 | + | if ((4 == cm)) | |
2004 | + | then kC(c, ki) | |
2005 | + | else if ((3 == cm)) | |
2006 | + | then kD(c, ki) | |
2007 | + | else if ((5 == cm)) | |
2008 | + | then kE(c, ki) | |
2009 | + | else if ((2 == cm)) | |
2010 | + | then kF(c, ki) | |
2096 | 2011 | else throw("Unknown merge") | |
2097 | 2012 | } | |
2098 | 2013 | ||
2099 | 2014 | ||
2100 | - | func | |
2101 | - | then valueOrElse(getBoolean( | |
2015 | + | func kH (gv) = if (if ((gv.originCaller != cQ)) | |
2016 | + | then valueOrElse(getBoolean(dw()), false) | |
2102 | 2017 | else false) | |
2103 | 2018 | then throw("Contracts are under maintenance") | |
2104 | - | else [StringEntry( | |
2105 | - | ||
2106 | - | ||
2107 | - | @Callable( | |
2108 | - | func constructorV1 ( | |
2019 | + | else [StringEntry(dx(toString(gv.originCaller)), toBase58String(gv.transactionId))] | |
2020 | + | ||
2021 | + | ||
2022 | + | @Callable(gv) | |
2023 | + | func constructorV1 (kI) = if ((gv.caller != this)) | |
2109 | 2024 | then throw("Permission denied") | |
2110 | - | else [StringEntry( | |
2111 | - | ||
2112 | - | ||
2113 | - | ||
2114 | - | @Callable( | |
2115 | - | func saveInteger ( | |
2025 | + | else [StringEntry(cK(), kI)] | |
2026 | + | ||
2027 | + | ||
2028 | + | ||
2029 | + | @Callable(gv) | |
2030 | + | func saveInteger (cC,ez) = if ((gv.caller != this)) | |
2116 | 2031 | then throw("saveInteger is not public method") | |
2117 | - | else [IntegerEntry( | |
2118 | - | ||
2119 | - | ||
2120 | - | ||
2121 | - | @Callable( | |
2122 | - | func setBlocked ( | |
2032 | + | else [IntegerEntry(cC, ez)] | |
2033 | + | ||
2034 | + | ||
2035 | + | ||
2036 | + | @Callable(gv) | |
2037 | + | func setBlocked (kJ) = if ((gv.caller != this)) | |
2123 | 2038 | then throw("permission denied") | |
2124 | - | else [BooleanEntry( | |
2125 | - | ||
2126 | - | ||
2127 | - | ||
2128 | - | @Callable( | |
2039 | + | else [BooleanEntry(dw(), kJ)] | |
2040 | + | ||
2041 | + | ||
2042 | + | ||
2043 | + | @Callable(gv) | |
2129 | 2044 | func stakeLand () = { | |
2130 | - | let | |
2131 | - | if ((size( | |
2045 | + | let kK = kH(gv) | |
2046 | + | if ((size(gv.payments) != 1)) | |
2132 | 2047 | then throw("Exactly one payment required") | |
2133 | 2048 | else { | |
2134 | - | let | |
2135 | - | let | |
2136 | - | let | |
2137 | - | if (( | |
2138 | - | then throw((("NFT " + | |
2049 | + | let kL = value(gv.payments[0]) | |
2050 | + | let bg = value(kL.assetId) | |
2051 | + | let cB = toString(gv.caller) | |
2052 | + | if ((kL.amount != 1)) | |
2053 | + | then throw((("NFT " + ap) + " token should be attached as payment")) | |
2139 | 2054 | else { | |
2140 | - | let | |
2141 | - | if (( | |
2055 | + | let jg = value(assetInfo(bg)) | |
2056 | + | if ((jg.issuer != this)) | |
2142 | 2057 | then throw("Unknown issuer of token") | |
2143 | - | else if (!(contains( | |
2144 | - | then throw((("Only NFT " + | |
2058 | + | else if (!(contains(jg.name, ap))) | |
2059 | + | then throw((("Only NFT " + ap) + " tokens are accepted")) | |
2145 | 2060 | else { | |
2146 | - | let | |
2147 | - | let | |
2148 | - | then dropRight( | |
2149 | - | else if (contains( | |
2150 | - | then dropRight( | |
2151 | - | else dropRight( | |
2152 | - | if (!(isDefined(parseInt( | |
2153 | - | then throw(("Cannot parse land number from " + | |
2061 | + | let kM = drop(jg.name, 4) | |
2062 | + | let ee = if (contains(kM, "XXL")) | |
2063 | + | then dropRight(kM, 3) | |
2064 | + | else if (contains(kM, "XL")) | |
2065 | + | then dropRight(kM, 2) | |
2066 | + | else dropRight(kM, 1) | |
2067 | + | if (!(isDefined(parseInt(ee)))) | |
2068 | + | then throw(("Cannot parse land number from " + jg.name)) | |
2154 | 2069 | else { | |
2155 | - | let | |
2156 | - | let | |
2157 | - | if (isDefined(getInteger( | |
2158 | - | then throw((("NFT " + | |
2070 | + | let bp = toBase58String(bg) | |
2071 | + | let jh = bi(bp) | |
2072 | + | if (isDefined(getInteger(jh))) | |
2073 | + | then throw((("NFT " + jg.name) + " is already staked")) | |
2159 | 2074 | else { | |
2160 | - | let | |
2161 | - | let | |
2162 | - | let | |
2163 | - | let | |
2164 | - | let | |
2165 | - | let | |
2166 | - | let | |
2167 | - | let | |
2168 | - | let | |
2169 | - | let | |
2170 | - | let | |
2171 | - | then split_51C(value( | |
2075 | + | let jk = split(jg.description, "_") | |
2076 | + | let gr = gx(jk[cY]) | |
2077 | + | let iW = dt(jk[cX]) | |
2078 | + | let hM = (iW / cu) | |
2079 | + | let eS = gw(gr, hM, 1) | |
2080 | + | let kN = dh(jk[cZ]) | |
2081 | + | let kx = split(valueOrElse(getString(kN), "0_0_0_0_0_0"), "_") | |
2082 | + | let kO = makeString(gp(kx, gr, hM, 1), "_") | |
2083 | + | let kt = dj(cB) | |
2084 | + | let ku = getString(kt) | |
2085 | + | let kq = if (isDefined(ku)) | |
2086 | + | then split_51C(value(ku), "_") | |
2172 | 2087 | else nil | |
2173 | - | if (containsElement( | |
2174 | - | then throw(("Your staked lands already contain " + | |
2175 | - | else if ((size( | |
2176 | - | then throw((("Your already staked max (" + toString( | |
2088 | + | if (containsElement(kq, bp)) | |
2089 | + | then throw(("Your staked lands already contain " + bp)) | |
2090 | + | else if ((size(kq) >= au)) | |
2091 | + | then throw((("Your already staked max (" + toString(au)) + ") lands")) | |
2177 | 2092 | else { | |
2178 | - | let | |
2179 | - | let | |
2180 | - | let | |
2181 | - | let | |
2182 | - | $Tuple2(([IntegerEntry( | |
2093 | + | let hN = valueOrElse(getInteger(bq(bp)), 0) | |
2094 | + | let kA = dk(cB) | |
2095 | + | let kP = valueOrElse(getInteger(kA), 0) | |
2096 | + | let kQ = invoke(cT, "onStakeUnstakeLand", [cB], nil) | |
2097 | + | $Tuple2(([IntegerEntry(jh, lastBlock.timestamp), IntegerEntry(bl(ap, bp, cB), lastBlock.timestamp), StringEntry(kt, makeString_11C((kq :+ bp), "_")), IntegerEntry(kA, (kP + iW)), StringEntry(bf(bp), cB), StringEntry(eg(ee), cB), IntegerEntry(ef(bp, cB), hN), StringEntry(dg(), eS), StringEntry(kN, kO)] ++ kK), kQ) | |
2183 | 2098 | } | |
2184 | 2099 | } | |
2185 | 2100 | } | |
2186 | 2101 | } | |
2187 | 2102 | } | |
2188 | 2103 | } | |
2189 | 2104 | } | |
2190 | 2105 | ||
2191 | 2106 | ||
2192 | 2107 | ||
2193 | - | @Callable( | |
2194 | - | func unstakeLand ( | |
2195 | - | let | |
2196 | - | if ((size( | |
2108 | + | @Callable(gv) | |
2109 | + | func unstakeLand (jc) = { | |
2110 | + | let kK = kH(gv) | |
2111 | + | if ((size(gv.payments) != 0)) | |
2197 | 2112 | then throw("No payments required") | |
2198 | 2113 | else { | |
2199 | - | let c = toString( | |
2200 | - | let | |
2201 | - | let | |
2202 | - | let | |
2203 | - | let | |
2204 | - | let | |
2205 | - | let | |
2206 | - | let | |
2207 | - | let | |
2208 | - | let | |
2209 | - | let | |
2210 | - | let | |
2211 | - | let | |
2212 | - | let | |
2213 | - | let | |
2214 | - | if (!(isDefined( | |
2215 | - | then throw(("Your staked lands don't contain " + | |
2114 | + | let c = toString(gv.caller) | |
2115 | + | let fN = ja(c, em, jc) | |
2116 | + | let bp = fN._2 | |
2117 | + | let jk = fN._3 | |
2118 | + | let kt = dj(c) | |
2119 | + | let gr = gx(jk[cY]) | |
2120 | + | let iW = dt(jk[cX]) | |
2121 | + | let hM = (iW / cu) | |
2122 | + | let eS = gw(gr, hM, -1) | |
2123 | + | let kN = dh(jk[cZ]) | |
2124 | + | let kx = split(valueOrElse(getString(kN), "0_0_0_0_0_0"), "_") | |
2125 | + | let kO = makeString(gp(kx, gr, hM, -1), "_") | |
2126 | + | let jH = jx(c, bp, iW, em) | |
2127 | + | let kq = split_51C(valueOrElse(getString(kt), ""), "_") | |
2128 | + | let cP = indexOf(kq, bp) | |
2129 | + | if (!(isDefined(cP))) | |
2130 | + | then throw(("Your staked lands don't contain " + bp)) | |
2216 | 2131 | else { | |
2217 | - | let | |
2218 | - | let | |
2219 | - | if (( | |
2220 | - | then throw(("Your gWL are taking part in voting, cannot unstake until " + toString( | |
2132 | + | let bW = lastBlock.timestamp | |
2133 | + | let kR = valueOrElse(getInteger(cS, bB(c)), 0) | |
2134 | + | if ((kR >= bW)) | |
2135 | + | then throw(("Your gWL are taking part in voting, cannot unstake until " + toString(kR))) | |
2221 | 2136 | else { | |
2222 | - | let | |
2223 | - | if (( | |
2224 | - | then throw(("Your staked lands took part in arbitrage, cannot unstake until " + toString( | |
2137 | + | let kS = (valueOrElse(getInteger(cT, b(c)), 0) + cq) | |
2138 | + | if ((kS > bW)) | |
2139 | + | then throw(("Your staked lands took part in arbitrage, cannot unstake until " + toString(kS))) | |
2225 | 2140 | else { | |
2226 | - | let | |
2227 | - | let | |
2228 | - | let | |
2141 | + | let kA = dk(c) | |
2142 | + | let kB = valueOrElse(getInteger(kA), 0) | |
2143 | + | let kT = if ((iW > kB)) | |
2229 | 2144 | then 0 | |
2230 | - | else ( | |
2231 | - | let | |
2232 | - | $Tuple2(([ScriptTransfer( | |
2233 | - | then StringEntry( | |
2234 | - | else DeleteEntry( | |
2145 | + | else (kB - iW) | |
2146 | + | let kQ = invoke(cT, "onStakeUnstakeLand", [c], nil) | |
2147 | + | $Tuple2(([ScriptTransfer(gv.caller, 1, fromBase58String(bp)), DeleteEntry(bi(bp)), DeleteEntry(bl(ap, bp, c)), StringEntry(dg(), eS), StringEntry(kN, kO), StringEntry(jH._2, makeString(jH._3, ":")), if ((size(kq) > 1)) | |
2148 | + | then StringEntry(kt, makeString_11C(removeByIndex(kq, value(cP)), "_")) | |
2149 | + | else DeleteEntry(kt), IntegerEntry(kA, kT)] ++ kK), kQ) | |
2235 | 2150 | } | |
2236 | 2151 | } | |
2237 | 2152 | } | |
2238 | 2153 | } | |
2239 | 2154 | } | |
2240 | 2155 | ||
2241 | 2156 | ||
2242 | 2157 | ||
2243 | - | @Callable( | |
2158 | + | @Callable(gv) | |
2244 | 2159 | func stakeDuck () = { | |
2245 | - | let | |
2246 | - | if ((size( | |
2160 | + | let kK = kH(gv) | |
2161 | + | if ((size(gv.payments) != 1)) | |
2247 | 2162 | then throw("Exactly one payment required") | |
2248 | 2163 | else { | |
2249 | - | let | |
2250 | - | let | |
2251 | - | let | |
2252 | - | if (( | |
2253 | - | then throw((("NFT " + | |
2164 | + | let kL = value(gv.payments[0]) | |
2165 | + | let bg = value(kL.assetId) | |
2166 | + | let cB = toString(gv.caller) | |
2167 | + | if ((kL.amount != 1)) | |
2168 | + | then throw((("NFT " + aq) + " token should be attached as payment")) | |
2254 | 2169 | else { | |
2255 | - | let | |
2256 | - | let | |
2257 | - | then ( | |
2170 | + | let jg = value(assetInfo(bg)) | |
2171 | + | let kU = if (if (ci) | |
2172 | + | then (jg.issuer == this) | |
2258 | 2173 | else false) | |
2259 | - | then contains( | |
2174 | + | then contains(jg.name, ar) | |
2260 | 2175 | else false | |
2261 | - | if (if (if (( | |
2262 | - | then ( | |
2176 | + | if (if (if ((jg.issuer != dJ)) | |
2177 | + | then (jg.issuer != dK) | |
2263 | 2178 | else false) | |
2264 | - | then !( | |
2179 | + | then !(kU) | |
2265 | 2180 | else false) | |
2266 | - | then throw((((("Unknown issuer of " + | |
2267 | - | else if (if (!(contains( | |
2268 | - | then !( | |
2181 | + | then throw((((("Unknown issuer of " + aq) + " or ") + ar) + " token")) | |
2182 | + | else if (if (!(contains(jg.name, aq))) | |
2183 | + | then !(kU) | |
2269 | 2184 | else false) | |
2270 | - | then throw((((("Only NFT " + | |
2185 | + | then throw((((("Only NFT " + aq) + " or ") + ar) + " tokens are accepted")) | |
2271 | 2186 | else { | |
2272 | - | let | |
2273 | - | let | |
2274 | - | if (isDefined(getInteger( | |
2275 | - | then throw((("NFT " + | |
2276 | - | else if (isDefined(getString( | |
2277 | - | then throw(("You already staked one duck: " + | |
2187 | + | let kV = toBase58String(bg) | |
2188 | + | let jh = bi(kV) | |
2189 | + | if (isDefined(getInteger(jh))) | |
2190 | + | then throw((("NFT " + jg.name) + " is already staked")) | |
2191 | + | else if (isDefined(getString(by(cB)))) | |
2192 | + | then throw(("You already staked one duck: " + jg.name)) | |
2278 | 2193 | else { | |
2279 | - | let | |
2280 | - | let | |
2281 | - | let | |
2282 | - | let | |
2283 | - | let | |
2284 | - | let | |
2285 | - | let | |
2286 | - | ([IntegerEntry( | |
2194 | + | let kW = bA(kV) | |
2195 | + | let bT = getString(kW) | |
2196 | + | let hx = bz(kV) | |
2197 | + | let kX = getString(hx) | |
2198 | + | let iP = t(kV) | |
2199 | + | let iQ = ab(valueOrElse(getInteger(x(kV)), 0)) | |
2200 | + | let kY = valueOrElse(getInteger(iP), iQ) | |
2201 | + | ([IntegerEntry(jh, lastBlock.timestamp), IntegerEntry(bl(aq, toBase58String(bg), cB), lastBlock.timestamp), StringEntry(bx(kV), cB), StringEntry(by(cB), kV)] ++ (if (isDefined(bT)) | |
2287 | 2202 | then nil | |
2288 | - | else ([StringEntry( | |
2203 | + | else ([StringEntry(kW, ax)] ++ (if (isDefined(kX)) | |
2289 | 2204 | then nil | |
2290 | - | else (([StringEntry( | |
2205 | + | else (([StringEntry(hx, "0:0_0_0_0_0_0:0_0_0_0_0_0:")] :+ IntegerEntry(iP, kY)) ++ kK))))) | |
2291 | 2206 | } | |
2292 | 2207 | } | |
2293 | 2208 | } | |
2294 | 2209 | } | |
2295 | 2210 | } | |
2296 | 2211 | ||
2297 | 2212 | ||
2298 | 2213 | ||
2299 | - | @Callable( | |
2300 | - | func unstakeDuck ( | |
2301 | - | let | |
2302 | - | if ((size( | |
2214 | + | @Callable(gv) | |
2215 | + | func unstakeDuck (kV) = { | |
2216 | + | let kK = kH(gv) | |
2217 | + | if ((size(gv.payments) != 0)) | |
2303 | 2218 | then throw("No payments required") | |
2304 | 2219 | else { | |
2305 | - | let | |
2306 | - | let | |
2307 | - | let | |
2308 | - | let | |
2309 | - | if (!(isDefined(getInteger( | |
2310 | - | then throw((("NFT " + | |
2311 | - | else if (!(isDefined(getString( | |
2312 | - | then throw((("The duck " + | |
2220 | + | let bg = fromBase58String(kV) | |
2221 | + | let cB = toString(gv.caller) | |
2222 | + | let jg = value(assetInfo(bg)) | |
2223 | + | let jh = bi(kV) | |
2224 | + | if (!(isDefined(getInteger(jh)))) | |
2225 | + | then throw((("NFT " + jg.name) + " is not staked")) | |
2226 | + | else if (!(isDefined(getString(by(cB))))) | |
2227 | + | then throw((("The duck " + jg.name) + " is not staked")) | |
2313 | 2228 | else { | |
2314 | - | let | |
2315 | - | if (( | |
2229 | + | let jj = valueOrErrorMessage(getString(bx(kV)), (("NFT " + jg.name) + " is orphaned")) | |
2230 | + | if ((jj != cB)) | |
2316 | 2231 | then throw("Staked NFT is not yours") | |
2317 | - | else if ( | |
2232 | + | else if (ke(kV)) | |
2318 | 2233 | then throw("unstakeDuck_checkTournament") | |
2319 | 2234 | else { | |
2320 | - | let | |
2321 | - | let | |
2322 | - | let | |
2323 | - | if (( | |
2324 | - | then throw((("Please heal your duck to " + toString( | |
2325 | - | else ([ScriptTransfer( | |
2235 | + | let iP = t(kV) | |
2236 | + | let iQ = ab(valueOrElse(getInteger(x(kV)), 0)) | |
2237 | + | let an = valueOrElse(getInteger(iP), iQ) | |
2238 | + | if ((iQ > an)) | |
2239 | + | then throw((("Please heal your duck to " + toString(iQ)) + "hp before unstaking")) | |
2240 | + | else ([ScriptTransfer(gv.caller, 1, bg), DeleteEntry(jh), DeleteEntry(iP), DeleteEntry(bA(kV)), DeleteEntry(bx(kV)), DeleteEntry(bl(aq, kV, cB)), DeleteEntry(by(cB))] ++ kK) | |
2326 | 2241 | } | |
2327 | 2242 | } | |
2328 | 2243 | } | |
2329 | 2244 | } | |
2330 | 2245 | ||
2331 | 2246 | ||
2332 | 2247 | ||
2333 | - | @Callable( | |
2334 | - | func claimRes ( | |
2335 | - | let | |
2336 | - | if ((size( | |
2248 | + | @Callable(gv) | |
2249 | + | func claimRes (ez,kZ) = { | |
2250 | + | let kK = kH(gv) | |
2251 | + | if ((size(gv.payments) != 0)) | |
2337 | 2252 | then throw("No payments required") | |
2338 | 2253 | else { | |
2339 | - | let c = toString( | |
2340 | - | let | |
2341 | - | let | |
2342 | - | $Tuple2((((( | |
2343 | - | } | |
2344 | - | } | |
2345 | - | ||
2346 | - | ||
2347 | - | ||
2348 | - | @Callable( | |
2349 | - | func claimResToWH ( | |
2350 | - | let | |
2351 | - | if ((size( | |
2254 | + | let c = toString(gv.originCaller) | |
2255 | + | let fa = jl(c, ez, em, kZ) | |
2256 | + | let u = valueOrErrorMessage(getString(by(c)), "You don't have a duck staked") | |
2257 | + | $Tuple2(((((fa._1 ++ jT(u, fraction(N, ez, ct))._1) :+ StringEntry(fa._2, makeString(fa._3, ":"))) :+ StringEntry(fa._4, makeString(fa._5, ":"))) ++ kK), fa._3[aZ]) | |
2258 | + | } | |
2259 | + | } | |
2260 | + | ||
2261 | + | ||
2262 | + | ||
2263 | + | @Callable(gv) | |
2264 | + | func claimResToWH (ez,kZ) = { | |
2265 | + | let kK = kH(gv) | |
2266 | + | if ((size(gv.payments) != 0)) | |
2352 | 2267 | then throw("No payments required") | |
2353 | 2268 | else { | |
2354 | - | let c = toString( | |
2355 | - | let | |
2356 | - | $Tuple2((((( | |
2357 | - | } | |
2358 | - | } | |
2359 | - | ||
2360 | - | ||
2361 | - | ||
2362 | - | @Callable( | |
2363 | - | func flight ( | |
2364 | - | let | |
2365 | - | if ((size( | |
2269 | + | let c = toString(gv.originCaller) | |
2270 | + | let fa = jl(c, ez, el, kZ) | |
2271 | + | $Tuple2(((((fa._1 ++ jU(c, fraction(N, ez, ct))._1) :+ StringEntry(fa._2, makeString(fa._3, ":"))) :+ StringEntry(fa._4, makeString(fa._5, ":"))) ++ kK), fa._5[aQ]) | |
2272 | + | } | |
2273 | + | } | |
2274 | + | ||
2275 | + | ||
2276 | + | ||
2277 | + | @Callable(gv) | |
2278 | + | func flight (iE,iF) = { | |
2279 | + | let kK = kH(gv) | |
2280 | + | if ((size(gv.payments) != 0)) | |
2366 | 2281 | then throw("No payments required") | |
2367 | 2282 | else { | |
2368 | - | let | |
2369 | - | let | |
2370 | - | let | |
2371 | - | let | |
2372 | - | let | |
2373 | - | let | |
2374 | - | let | |
2375 | - | if (( | |
2283 | + | let bC = toString(gv.caller) | |
2284 | + | let ha = iD(bC, iE, iF) | |
2285 | + | let iJ = ha._1 | |
2286 | + | let u = ha._2 | |
2287 | + | let kW = bA(u) | |
2288 | + | let je = valueOrElse(getString(kW), ax) | |
2289 | + | let iL = ha._4 | |
2290 | + | if ((iL == je)) | |
2376 | 2291 | then throw("You can't fly to the same location") | |
2377 | 2292 | else { | |
2378 | - | let cr = split(iX, "_") | |
2379 | - | let lm = (cr[br] == "T") | |
2380 | - | let ln = (cr[br] == "D") | |
2381 | - | let gx = G(B) | |
2382 | - | let lo = valueOrElse(getString(gx), ",;,_,;,_,;,_,;,_,;,_,;,") | |
2383 | - | let lp = fk(lo, hp._5) | |
2384 | - | let lq = lp._1 | |
2385 | - | let lr = lp._2 | |
2386 | - | let ls = if (!(cl(dh, jq))) | |
2387 | - | then if (lm) | |
2388 | - | then cp(jq, iX, 5) | |
2389 | - | else if (!(ln)) | |
2390 | - | then if ((iV > 0)) | |
2391 | - | then $Tuple2(iX, iV) | |
2392 | - | else $Tuple2(jq, 0) | |
2393 | - | else if ((iV > 0)) | |
2293 | + | let ce = split(iL, "_") | |
2294 | + | let la = (ce[bd] == "T") | |
2295 | + | let lb = (ce[bd] == "D") | |
2296 | + | let gh = z(u) | |
2297 | + | let lc = valueOrElse(getString(gh), ",;,_,;,_,;,_,;,_,;,_,;,") | |
2298 | + | let ld = fb(lc, ha._5) | |
2299 | + | let le = ld._1 | |
2300 | + | let lf = ld._2 | |
2301 | + | let hp = ld._3 | |
2302 | + | let lg = if (!(bY(cU, je))) | |
2303 | + | then if (la) | |
2304 | + | then cc(je, iL, 5) | |
2305 | + | else if (!(lb)) | |
2306 | + | then if ((iJ > 0)) | |
2307 | + | then $Tuple2(iL, iJ) | |
2308 | + | else $Tuple2(je, 0) | |
2309 | + | else if ((iJ > 0)) | |
2394 | 2310 | then { | |
2395 | - | let | |
2396 | - | if (( | |
2397 | - | then $Tuple2( | |
2311 | + | let dn = invoke(this, "processDelivery", [u], nil) | |
2312 | + | if ((dn == dn)) | |
2313 | + | then $Tuple2(je, iJ) | |
2398 | 2314 | else throw("Strict value is not equal to itself.") | |
2399 | 2315 | } | |
2400 | - | else $Tuple2( | |
2401 | - | else if ( | |
2402 | - | then if (!( | |
2316 | + | else $Tuple2(je, 0) | |
2317 | + | else if (bS(cU, je)) | |
2318 | + | then if (!(bS(cU, iL))) | |
2403 | 2319 | then throw("Your duck is taking part in the tournament") | |
2404 | 2320 | else { | |
2405 | - | let | |
2406 | - | let | |
2407 | - | let | |
2408 | - | if (( | |
2409 | - | then | |
2410 | - | else if (( | |
2321 | + | let lh = parseIntValue(ce[be]) | |
2322 | + | let li = split(je, "_") | |
2323 | + | let bU = valueOrElse(getInteger(cU, bF), 0) | |
2324 | + | if ((lh != (parseIntValue(li[be]) + 1))) | |
2325 | + | then cc(je, iL, 7) | |
2326 | + | else if ((iJ > 0)) | |
2411 | 2327 | then { | |
2412 | - | let | |
2413 | - | let | |
2414 | - | then invoke( | |
2328 | + | let lj = valueOrElse(getInteger(cU, bJ(bU, u)), 0) | |
2329 | + | let lk = if ((lh > lj)) | |
2330 | + | then invoke(cU, "saveDuckResult", [u, lh], nil) | |
2415 | 2331 | else unit | |
2416 | - | if (( | |
2417 | - | then $Tuple2( | |
2332 | + | if ((lk == lk)) | |
2333 | + | then $Tuple2(iL, iJ) | |
2418 | 2334 | else throw("Strict value is not equal to itself.") | |
2419 | 2335 | } | |
2420 | - | else $Tuple2( | |
2336 | + | else $Tuple2(je, 0) | |
2421 | 2337 | } | |
2422 | - | else throw(("Unknown curLocation:" + | |
2423 | - | let | |
2424 | - | let | |
2425 | - | $Tuple2(((([StringEntry( | |
2426 | - | then [StringEntry( | |
2427 | - | else nil)) ++ | |
2428 | - | then | |
2429 | - | else | |
2338 | + | else throw(("Unknown curLocation:" + je)) | |
2339 | + | let ll = lg._1 | |
2340 | + | let lm = lg._2 | |
2341 | + | $Tuple2(((([StringEntry(kW, ll), StringEntry(gh, le), IntegerEntry(t(u), lm)] ++ kK) ++ (if (lf) | |
2342 | + | then [StringEntry(F(u), "0_0_0_0_0")] | |
2343 | + | else nil)) ++ jT(u, if ((iJ > 0)) | |
2344 | + | then O | |
2345 | + | else P)._1), ha._3) | |
2430 | 2346 | } | |
2431 | 2347 | } | |
2432 | 2348 | } | |
2433 | 2349 | ||
2434 | 2350 | ||
2435 | 2351 | ||
2436 | - | @Callable( | |
2437 | - | func heal ( | |
2438 | - | let | |
2439 | - | if (if (if ((0 > | |
2352 | + | @Callable(gv) | |
2353 | + | func heal (ln,lo,lp) = { | |
2354 | + | let kK = kH(gv) | |
2355 | + | if (if (if ((0 > ln)) | |
2440 | 2356 | then true | |
2441 | - | else (0 > | |
2357 | + | else (0 > lo)) | |
2442 | 2358 | then true | |
2443 | - | else (0 > | |
2359 | + | else (0 > lp)) | |
2444 | 2360 | then throw("Quantity cannot be negative") | |
2445 | 2361 | else { | |
2446 | - | let | |
2447 | - | if ( | |
2362 | + | let u = valueOrErrorMessage(getString(by(toString(gv.caller))), "You don't have a duck staked") | |
2363 | + | if (ke(u)) | |
2448 | 2364 | then throw("heal_checkTournament") | |
2449 | 2365 | else { | |
2450 | - | let | |
2451 | - | let | |
2452 | - | let | |
2453 | - | let | |
2454 | - | if (( | |
2455 | - | then throw((("HP should be < " + toString( | |
2366 | + | let lq = [ln, lo, lp] | |
2367 | + | let iP = t(u) | |
2368 | + | let iQ = ab(valueOrElse(getInteger(x(u)), 0)) | |
2369 | + | let lr = valueOrElse(getInteger(iP), iQ) | |
2370 | + | if ((lr >= iQ)) | |
2371 | + | then throw((("HP should be < " + toString(iQ)) + " to heal")) | |
2456 | 2372 | else { | |
2457 | - | let | |
2458 | - | let | |
2459 | - | let | |
2373 | + | let hx = bz(u) | |
2374 | + | let ib = hw(hx) | |
2375 | + | let ls = if ((ib[bb] == "")) | |
2460 | 2376 | then nil | |
2461 | - | else split_4C( | |
2462 | - | func | |
2463 | - | let | |
2464 | - | let | |
2465 | - | then parseIntValue( | |
2377 | + | else split_4C(ib[bb], "_") | |
2378 | + | func lt (eI,cb) = { | |
2379 | + | let dp = eI._2 | |
2380 | + | let gR = if ((size(ls) > dp)) | |
2381 | + | then parseIntValue(ls[dp]) | |
2466 | 2382 | else 0 | |
2467 | - | if ((3 > | |
2383 | + | if ((3 > dp)) | |
2468 | 2384 | then { | |
2469 | - | let | |
2470 | - | if (( | |
2471 | - | then throw(((("You have only " + toString( | |
2472 | - | else $Tuple3(( | |
2385 | + | let lu = lq[dp] | |
2386 | + | if ((lu > gR)) | |
2387 | + | then throw(((("You have only " + toString(gR)) + " of ") + aG[dp])) | |
2388 | + | else $Tuple3((eI._1 :+ toString((gR - lu))), (dp + 1), (eI._3 + (parseIntValue(split(cb, "_")[aL]) * lu))) | |
2473 | 2389 | } | |
2474 | - | else $Tuple3(( | |
2390 | + | else $Tuple3((eI._1 :+ toString(gR)), (dp + 1), eI._3) | |
2475 | 2391 | } | |
2476 | 2392 | ||
2477 | - | let | |
2478 | - | let | |
2479 | - | let | |
2480 | - | let | |
2481 | - | func | |
2482 | - | then | |
2483 | - | else | |
2484 | - | ||
2485 | - | func | |
2486 | - | then | |
2393 | + | let fa = { | |
2394 | + | let eK = aJ | |
2395 | + | let eL = size(eK) | |
2396 | + | let eM = $Tuple3(nil, 0, 0) | |
2397 | + | func eN (eO,eP) = if ((eP >= eL)) | |
2398 | + | then eO | |
2399 | + | else lt(eO, eK[eP]) | |
2400 | + | ||
2401 | + | func eQ (eO,eP) = if ((eP >= eL)) | |
2402 | + | then eO | |
2487 | 2403 | else throw("List size exceeds 50") | |
2488 | 2404 | ||
2489 | - | | |
2405 | + | eQ(eN(eN(eN(eN(eN(eN(eN(eN(eN(eN(eN(eN(eN(eN(eN(eN(eN(eN(eN(eN(eN(eN(eN(eN(eN(eN(eN(eN(eN(eN(eN(eN(eN(eN(eN(eN(eN(eN(eN(eN(eN(eN(eN(eN(eN(eN(eN(eN(eN(eN(eM, 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) | |
2490 | 2406 | } | |
2491 | - | let | |
2492 | - | $Tuple2((([IntegerEntry( | |
2407 | + | let lv = min([iQ, (lr + fa._3)]) | |
2408 | + | $Tuple2((([IntegerEntry(iP, lv), StringEntry(hx, makeString_2C([ib[aY], ib[aZ], ib[ba], makeString(fa._1, "_")], ":"))] ++ kK) ++ jT(u, (Y * ((ln + lo) + lp)))._1), lv) | |
2493 | 2409 | } | |
2494 | 2410 | } | |
2495 | 2411 | } | |
2496 | 2412 | } | |
2497 | 2413 | ||
2498 | 2414 | ||
2499 | 2415 | ||
2500 | - | @Callable( | |
2416 | + | @Callable(gv) | |
2501 | 2417 | func healES () = { | |
2502 | - | let | |
2503 | - | if ((size( | |
2418 | + | let kK = kH(gv) | |
2419 | + | if ((size(gv.payments) != 1)) | |
2504 | 2420 | then throw("Exactly one payment required") | |
2505 | 2421 | else { | |
2506 | - | let | |
2507 | - | if (( | |
2422 | + | let kL = value(gv.payments[0]) | |
2423 | + | if ((kL.assetId != cn)) | |
2508 | 2424 | then throw("Allowed USDT payment only!") | |
2509 | 2425 | else { | |
2510 | - | let | |
2511 | - | if ( | |
2426 | + | let u = valueOrErrorMessage(getString(by(toString(gv.caller))), "You don't have a duck staked") | |
2427 | + | if (ke(u)) | |
2512 | 2428 | then throw("healES_checkTournament") | |
2513 | 2429 | else { | |
2514 | - | let | |
2515 | - | let | |
2516 | - | let | |
2517 | - | if (( | |
2430 | + | let iP = t(u) | |
2431 | + | let iQ = ab(valueOrElse(getInteger(x(u)), 0)) | |
2432 | + | let lr = valueOrElse(getInteger(iP), iQ) | |
2433 | + | if ((lr > 0)) | |
2518 | 2434 | then throw("HP should be 0 to call Emergency Service") | |
2519 | 2435 | else { | |
2520 | - | let | |
2521 | - | let | |
2522 | - | let | |
2436 | + | let hx = bz(u) | |
2437 | + | let ib = hw(hx) | |
2438 | + | let ls = if ((ib[bb] == "")) | |
2523 | 2439 | then nil | |
2524 | - | else split_4C( | |
2525 | - | let | |
2526 | - | then parseIntValue( | |
2440 | + | else split_4C(ib[bb], "_") | |
2441 | + | let lw = if ((size(ls) > 0)) | |
2442 | + | then parseIntValue(ls[0]) | |
2527 | 2443 | else 0 | |
2528 | - | let | |
2529 | - | then parseIntValue( | |
2444 | + | let lx = if ((size(ls) > 1)) | |
2445 | + | then parseIntValue(ls[1]) | |
2530 | 2446 | else 0 | |
2531 | - | let | |
2532 | - | then parseIntValue( | |
2447 | + | let ly = if ((size(ls) > 2)) | |
2448 | + | then parseIntValue(ls[2]) | |
2533 | 2449 | else 0 | |
2534 | - | if (if (if (( | |
2450 | + | if (if (if ((lw > 0)) | |
2535 | 2451 | then true | |
2536 | - | else ( | |
2452 | + | else (lx > 0)) | |
2537 | 2453 | then true | |
2538 | - | else ( | |
2454 | + | else (ly > 0)) | |
2539 | 2455 | then throw("You have to use own Medical Kit") | |
2540 | 2456 | else { | |
2541 | - | let | |
2542 | - | let | |
2543 | - | then split_4C(value( | |
2457 | + | let lz = getString(cR, bD()) | |
2458 | + | let lA = if (isDefined(lz)) | |
2459 | + | then split_4C(value(lz), "_") | |
2544 | 2460 | else nil | |
2545 | - | let | |
2546 | - | then parseIntValue( | |
2461 | + | let lB = if ((size(lA) > 0)) | |
2462 | + | then parseIntValue(lA[0]) | |
2547 | 2463 | else 0 | |
2548 | - | if ((0 >= | |
2464 | + | if ((0 >= lB)) | |
2549 | 2465 | then throw("There are no Medical Kits L1 at Emergency Service storage") | |
2550 | 2466 | else { | |
2551 | - | let | |
2552 | - | let | |
2553 | - | let | |
2554 | - | let | |
2555 | - | let | |
2556 | - | if (( | |
2557 | - | then throw(("Payment attached should be " + toString( | |
2467 | + | let lv = (lr + parseIntValue(split(aJ[0], "_")[aL])) | |
2468 | + | let lC = makeString([toString((lB - 1)), removeByIndex(lA, 0)], "_") | |
2469 | + | let cb = split(aJ[0], "_") | |
2470 | + | let lD = ca(cb) | |
2471 | + | let lE = fraction((lD * az), ay, (ct * aO)) | |
2472 | + | if ((kL.amount != lE)) | |
2473 | + | then throw(("Payment attached should be " + toString(lE))) | |
2558 | 2474 | else { | |
2559 | - | let | |
2560 | - | $Tuple2((( | |
2475 | + | let fa = dl(invoke(cR, "updateEsStorage", [lC], [AttachedPayment(cn, lE)])) | |
2476 | + | $Tuple2(((kK :+ IntegerEntry(iP, lv)) ++ jT(u, S)._1), fa) | |
2561 | 2477 | } | |
2562 | 2478 | } | |
2563 | 2479 | } | |
2564 | 2480 | } | |
2565 | 2481 | } | |
2566 | 2482 | } | |
2567 | 2483 | } | |
2568 | 2484 | } | |
2569 | 2485 | ||
2570 | 2486 | ||
2571 | 2487 | ||
2572 | - | @Callable( | |
2573 | - | func updateBackpack ( | |
2488 | + | @Callable(gv) | |
2489 | + | func updateBackpack (u,lF) = if ((gv.caller != cR)) | |
2574 | 2490 | then throw("permission denied") | |
2575 | - | else $Tuple2([StringEntry( | |
2576 | - | ||
2577 | - | ||
2578 | - | ||
2579 | - | @Callable( | |
2491 | + | else $Tuple2([StringEntry(bz(u), lF)], lF) | |
2492 | + | ||
2493 | + | ||
2494 | + | ||
2495 | + | @Callable(gv) | |
2580 | 2496 | func commitForRandom () = { | |
2581 | - | let | |
2582 | - | let | |
2583 | - | let c = toString( | |
2584 | - | $Tuple2(([IntegerEntry( | |
2585 | - | } | |
2586 | - | ||
2587 | - | ||
2588 | - | ||
2589 | - | @Callable( | |
2590 | - | func revealRandom ( | |
2591 | - | let | |
2592 | - | let c = toString( | |
2593 | - | let | |
2594 | - | let | |
2595 | - | if (( | |
2596 | - | then throw(("Random number is not ready yet, wait until height = " + toString( | |
2497 | + | let kK = kH(gv) | |
2498 | + | let lG = (height + de) | |
2499 | + | let c = toString(gv.caller) | |
2500 | + | $Tuple2(([IntegerEntry(df(c), lG)] ++ kK), lG) | |
2501 | + | } | |
2502 | + | ||
2503 | + | ||
2504 | + | ||
2505 | + | @Callable(gv) | |
2506 | + | func revealRandom (dF) = { | |
2507 | + | let kK = kH(gv) | |
2508 | + | let c = toString(gv.caller) | |
2509 | + | let lH = df(c) | |
2510 | + | let lG = valueOrErrorMessage(getInteger(lH), "You have to commitForRandom() first!") | |
2511 | + | if ((lG > height)) | |
2512 | + | then throw(("Random number is not ready yet, wait until height = " + toString(lG))) | |
2597 | 2513 | else { | |
2598 | - | let | |
2599 | - | let | |
2600 | - | let | |
2601 | - | $Tuple2(([DeleteEntry( | |
2602 | - | } | |
2603 | - | } | |
2604 | - | ||
2605 | - | ||
2606 | - | ||
2607 | - | @Callable( | |
2514 | + | let dH = value(value(blockInfoByHeight(lG)).vrf) | |
2515 | + | let dG = toBytes(valueOrElse(getString(dx(c)), "")) | |
2516 | + | let lI = dE(dF, dG, dH) | |
2517 | + | $Tuple2(([DeleteEntry(lH)] ++ kK), lI) | |
2518 | + | } | |
2519 | + | } | |
2520 | + | ||
2521 | + | ||
2522 | + | ||
2523 | + | @Callable(gv) | |
2608 | 2524 | func buySLand () = { | |
2609 | - | let | |
2610 | - | if ((size( | |
2525 | + | let kK = kH(gv) | |
2526 | + | if ((size(gv.payments) != 1)) | |
2611 | 2527 | then throw("Exactly one payment required") | |
2612 | 2528 | else { | |
2613 | - | let | |
2614 | - | if (( | |
2529 | + | let kL = value(gv.payments[0]) | |
2530 | + | if ((kL.assetId != cn)) | |
2615 | 2531 | then throw("Allowed USDT payment only!") | |
2616 | - | else if (( | |
2617 | - | then throw(("Payment attached should be " + toString( | |
2532 | + | else if ((kL.amount != dQ)) | |
2533 | + | then throw(("Payment attached should be " + toString(dQ))) | |
2618 | 2534 | else { | |
2619 | - | let | |
2620 | - | let | |
2621 | - | $Tuple2(((( | |
2535 | + | let fa = iw(gv.caller, gv.transactionId) | |
2536 | + | let lJ = do(invoke(cV, "burnAcres", [dS], nil)) | |
2537 | + | $Tuple2((((fa._1 :+ ScriptTransfer(cR, kL.amount, cn)) ++ jU(toString(gv.caller), U)._1) ++ kK), $Tuple2(fa._2._1, lJ)) | |
2622 | 2538 | } | |
2623 | 2539 | } | |
2624 | 2540 | } | |
2625 | 2541 | ||
2626 | 2542 | ||
2627 | 2543 | ||
2628 | - | @Callable( | |
2629 | - | func expedition ( | |
2630 | - | let | |
2631 | - | if ((size( | |
2544 | + | @Callable(gv) | |
2545 | + | func expedition (iE,iF) = { | |
2546 | + | let kK = kH(gv) | |
2547 | + | if ((size(gv.payments) != 0)) | |
2632 | 2548 | then throw("No payments required") | |
2633 | 2549 | else { | |
2634 | - | let bQ = toString(gK.caller) | |
2635 | - | let hp = iP(bQ, iQ, iR) | |
2636 | - | let B = hp._2 | |
2637 | - | let jb = A(B) | |
2638 | - | let hL = bN(B) | |
2639 | - | let io = hK(hL) | |
2640 | - | let jQ = split(io[bo], "_") | |
2641 | - | let jS = makeString(fd(true, jQ, ed), "_") | |
2642 | - | let gx = G(B) | |
2643 | - | let lo = valueOrElse(getString(gx), ",;,_,;,_,;,_,;,_,;,_,;,") | |
2644 | - | let lW = fk(lo, hp._5) | |
2645 | - | let lq = lW._1 | |
2646 | - | let lr = lW._2 | |
2647 | - | let lX = iI(gK.caller, gK.transactionId) | |
2648 | - | let iO = lX._2._1 | |
2649 | - | let fj = if ((0 >= hp._1)) | |
2650 | - | then $Tuple3([IntegerEntry(jb, 0), StringEntry(gx, lq)], "", 0) | |
2651 | - | else $Tuple3((lX._1 ++ (if (lr) | |
2652 | - | then [StringEntry(M(B), "0_0_0_0_0")] | |
2653 | - | else ((((nil :+ StringEntry(bO(B), makeString([lX._2._2, "L", iO], "_"))) :+ IntegerEntry(jb, hp._1)) :+ StringEntry(gx, lq)) :+ StringEntry(hL, makeString([io[bm], io[bn], jS, io[bp]], ":"))))), iO, hp._3) | |
2654 | - | if (kq(B)) | |
2550 | + | let bC = toString(gv.caller) | |
2551 | + | let ha = iD(bC, iE, iF) | |
2552 | + | let u = ha._2 | |
2553 | + | let iP = t(u) | |
2554 | + | let hx = bz(u) | |
2555 | + | let ib = hw(hx) | |
2556 | + | let jE = split(ib[ba], "_") | |
2557 | + | let jG = makeString(eU(true, jE, dP), "_") | |
2558 | + | let gh = z(u) | |
2559 | + | let lc = valueOrElse(getString(gh), ",;,_,;,_,;,_,;,_,;,_,;,") | |
2560 | + | let lK = fb(lc, ha._5) | |
2561 | + | let le = lK._1 | |
2562 | + | let lf = lK._2 | |
2563 | + | let hp = lK._3 | |
2564 | + | let lL = iw(gv.caller, gv.transactionId) | |
2565 | + | let iC = lL._2._1 | |
2566 | + | let fa = if ((0 >= ha._1)) | |
2567 | + | then $Tuple3([IntegerEntry(iP, 0), StringEntry(gh, le)], "", 0) | |
2568 | + | else $Tuple3((lL._1 ++ (if (lf) | |
2569 | + | then [StringEntry(F(u), "0_0_0_0_0")] | |
2570 | + | else ((((nil :+ StringEntry(bA(u), makeString([lL._2._2, "L", iC], "_"))) :+ IntegerEntry(iP, ha._1)) :+ StringEntry(gh, le)) :+ StringEntry(hx, makeString([ib[aY], ib[aZ], jG, ib[bb]], ":"))))), iC, ha._3) | |
2571 | + | if (ke(u)) | |
2655 | 2572 | then throw("expedition_checkTournament") | |
2656 | 2573 | else { | |
2657 | - | let | |
2658 | - | $Tuple2((( | |
2574 | + | let lJ = do(invoke(cV, "burnAcres", [dS], nil)) | |
2575 | + | $Tuple2(((fa._1 ++ jT(u, U)._1) ++ kK), $Tuple3(fa._2, fa._3, lJ)) | |
2659 | 2576 | } | |
2660 | 2577 | } | |
2661 | 2578 | } | |
2662 | 2579 | ||
2663 | 2580 | ||
2664 | 2581 | ||
2665 | - | @Callable( | |
2582 | + | @Callable(gv) | |
2666 | 2583 | func buySLandForAcres () = { | |
2667 | - | let | |
2668 | - | if ((size( | |
2584 | + | let kK = kH(gv) | |
2585 | + | if ((size(gv.payments) != 1)) | |
2669 | 2586 | then throw("exactly 1 payment must be attached") | |
2670 | 2587 | else { | |
2671 | - | let | |
2672 | - | let | |
2673 | - | if (if (!(isDefined( | |
2588 | + | let kL = gv.payments[0] | |
2589 | + | let fh = kL.amount | |
2590 | + | if (if (!(isDefined(kL.assetId))) | |
2674 | 2591 | then true | |
2675 | - | else (value( | |
2592 | + | else (value(kL.assetId) != dd)) | |
2676 | 2593 | then throw("ACRES payments only!") | |
2677 | - | else if (( | |
2678 | - | then throw(("Payment attached should be " + toString( | |
2594 | + | else if ((fh != dS)) | |
2595 | + | then throw(("Payment attached should be " + toString(dS))) | |
2679 | 2596 | else { | |
2680 | - | let | |
2681 | - | let | |
2682 | - | $Tuple2((( | |
2597 | + | let fa = iw(gv.caller, gv.transactionId) | |
2598 | + | let lJ = do(invoke(cV, "burnAcres", [dS], [AttachedPayment(dd, fh)])) | |
2599 | + | $Tuple2(((fa._1 ++ jU(toString(gv.caller), U)._1) ++ kK), $Tuple2(fa._2._1, lJ)) | |
2683 | 2600 | } | |
2684 | 2601 | } | |
2685 | 2602 | } | |
2686 | 2603 | ||
2687 | 2604 | ||
2688 | 2605 | ||
2689 | - | @Callable( | |
2690 | - | func upgradeInfra ( | |
2691 | - | let | |
2692 | - | if ((size( | |
2606 | + | @Callable(gv) | |
2607 | + | func upgradeInfra (bp) = { | |
2608 | + | let kK = kH(gv) | |
2609 | + | if ((size(gv.payments) != 0)) | |
2693 | 2610 | then throw("No payments required") | |
2694 | 2611 | else { | |
2695 | - | let | |
2696 | - | let | |
2697 | - | $Tuple2((( | |
2698 | - | } | |
2699 | - | } | |
2700 | - | ||
2701 | - | ||
2702 | - | ||
2703 | - | @Callable( | |
2704 | - | func activateArtifact ( | |
2705 | - | let | |
2706 | - | if ((size( | |
2612 | + | let fa = jy(true, gv.caller, 0, bp) | |
2613 | + | let u = valueOrErrorMessage(getString(by(toString(gv.caller))), "You don't have a duck staked") | |
2614 | + | $Tuple2(((fa._1 ++ kK) ++ jT(u, fraction(V, fa._3, ct))._1), fa._2) | |
2615 | + | } | |
2616 | + | } | |
2617 | + | ||
2618 | + | ||
2619 | + | ||
2620 | + | @Callable(gv) | |
2621 | + | func activateArtifact (lM,lN) = { | |
2622 | + | let kK = kH(gv) | |
2623 | + | if ((size(gv.payments) != 0)) | |
2707 | 2624 | then throw("No payments required") | |
2708 | 2625 | else { | |
2709 | - | let c = toString( | |
2710 | - | let | |
2711 | - | let | |
2712 | - | if (("PRESALE" == | |
2713 | - | then | |
2714 | - | else if (("ONBOARD" == | |
2715 | - | then | |
2626 | + | let c = toString(gv.caller) | |
2627 | + | let fa = { | |
2628 | + | let cm = lM | |
2629 | + | if (("PRESALE" == cm)) | |
2630 | + | then kc(c, lN) | |
2631 | + | else if (("ONBOARD" == cm)) | |
2632 | + | then jV(c) | |
2716 | 2633 | else throw("Unknown artifact") | |
2717 | 2634 | } | |
2718 | - | ( | |
2719 | - | } | |
2720 | - | } | |
2721 | - | ||
2722 | - | ||
2723 | - | ||
2724 | - | @Callable( | |
2725 | - | func mergeLands ( | |
2726 | - | let | |
2727 | - | if ((size( | |
2635 | + | (fa ++ kK) | |
2636 | + | } | |
2637 | + | } | |
2638 | + | ||
2639 | + | ||
2640 | + | ||
2641 | + | @Callable(gv) | |
2642 | + | func mergeLands (ki) = { | |
2643 | + | let kK = kH(gv) | |
2644 | + | if ((size(gv.payments) != 0)) | |
2728 | 2645 | then throw("No payments required") | |
2729 | 2646 | else { | |
2730 | - | let | |
2731 | - | $Tuple2((( | |
2732 | - | } | |
2733 | - | } | |
2734 | - | ||
2735 | - | ||
2736 | - | ||
2737 | - | @Callable( | |
2738 | - | func cargoExchange ( | |
2739 | - | let | |
2740 | - | if ((size( | |
2647 | + | let fa = kG(toString(gv.caller), ki) | |
2648 | + | $Tuple2(((fa._1 ++ kK) ++ jU(toString(gv.caller), W)._1), fa._2) | |
2649 | + | } | |
2650 | + | } | |
2651 | + | ||
2652 | + | ||
2653 | + | ||
2654 | + | @Callable(gv) | |
2655 | + | func cargoExchange (lO,bp) = { | |
2656 | + | let kK = kH(gv) | |
2657 | + | if ((size(gv.payments) != 0)) | |
2741 | 2658 | then throw("No payments required") | |
2742 | 2659 | else { | |
2743 | - | let | |
2744 | - | let c = toString( | |
2745 | - | let | |
2746 | - | let | |
2747 | - | if (!(isDefined(getInteger( | |
2748 | - | then throw(( | |
2660 | + | let ia = split_4C(lO, ":") | |
2661 | + | let c = toString(gv.originCaller) | |
2662 | + | let jg = value(assetInfo(fromBase58String(bp))) | |
2663 | + | let jh = bi(bp) | |
2664 | + | if (!(isDefined(getInteger(jh)))) | |
2665 | + | then throw((jg.name + " is not staked")) | |
2749 | 2666 | else { | |
2750 | - | let | |
2751 | - | if (( | |
2752 | - | then throw(( | |
2667 | + | let jj = valueOrErrorMessage(getString(bf(bp)), (("NFT " + jg.name) + " is orphaned")) | |
2668 | + | if ((jj != c)) | |
2669 | + | then throw((ap + " is not yours")) | |
2753 | 2670 | else { | |
2754 | - | let | |
2755 | - | let | |
2756 | - | let | |
2757 | - | let | |
2758 | - | let | |
2759 | - | if (( | |
2760 | - | then throw((("Duck location type is " + | |
2761 | - | else if (( | |
2762 | - | then throw(("Duck should be on the land " + | |
2671 | + | let hM = (dt(split(jg.description, "_")[cX]) / cu) | |
2672 | + | let hN = valueOrElse(getInteger(bq(bp)), 0) | |
2673 | + | let u = valueOrErrorMessage(getString(by(c)), "You don't have a duck staked") | |
2674 | + | let je = valueOrElse(getString(bA(u)), ax) | |
2675 | + | let bV = split(value(je), "_") | |
2676 | + | if ((bV[bd] != "L")) | |
2677 | + | then throw((("Duck location type is " + bV[bd]) + ", but should be L")) | |
2678 | + | else if ((bV[be] != bp)) | |
2679 | + | then throw(("Duck should be on the land " + bp)) | |
2763 | 2680 | else { | |
2764 | - | let | |
2765 | - | let | |
2766 | - | let | |
2767 | - | let | |
2768 | - | let | |
2769 | - | let | |
2770 | - | let | |
2771 | - | let | |
2772 | - | ([StringEntry( | |
2681 | + | let hL = bo(bp) | |
2682 | + | let hC = hK(hL, hM, hN) | |
2683 | + | let hx = bz(u) | |
2684 | + | let ib = hw(hx) | |
2685 | + | let fa = hZ(ia, hC, ib) | |
2686 | + | let hT = split(hC[aT], "_") | |
2687 | + | let jv = (parseIntValue(hT[aV]) + fa._7) | |
2688 | + | let jw = (parseIntValue(hT[aW]) - fa._7) | |
2689 | + | ([StringEntry(hx, makeString_2C([ib[aY], fa._4, fa._5, fa._6], ":")), StringEntry(hL, makeString_2C([hC[aP], fa._1, fa._2, fa._3, makeString([hT[aU], toString(jv), toString(jw), hT[aX]], "_")], ":"))] ++ kK) | |
2773 | 2690 | } | |
2774 | 2691 | } | |
2775 | 2692 | } | |
2776 | 2693 | } | |
2777 | 2694 | } | |
2778 | 2695 | ||
2779 | 2696 | ||
2780 | 2697 | ||
2781 | - | @Callable( | |
2782 | - | func saveWarehouse ( | |
2698 | + | @Callable(gv) | |
2699 | + | func saveWarehouse (hP,bp) = if ((gv.caller != cR)) | |
2783 | 2700 | then throw("Access denied") | |
2784 | 2701 | else { | |
2785 | - | let | |
2786 | - | let | |
2787 | - | if ((size( | |
2702 | + | let hL = bo(bp) | |
2703 | + | let hQ = split_4C(hP, ":") | |
2704 | + | if ((size(hQ) != 5)) | |
2788 | 2705 | then throw("warehouse string should contain 4 ':' separators") | |
2789 | 2706 | else { | |
2790 | - | let | |
2791 | - | let | |
2792 | - | let | |
2793 | - | let | |
2794 | - | if ((0 > | |
2707 | + | let lP = split(hQ[aT], "_")[aU] | |
2708 | + | let jv = hB(hQ) | |
2709 | + | let lQ = hz(hQ[aP]) | |
2710 | + | let jw = ((lQ - parseIntValue(lP)) - jv) | |
2711 | + | if ((0 > jw)) | |
2795 | 2712 | then throw("Operation leads to negative free warehouse space") | |
2796 | 2713 | else { | |
2797 | - | let | |
2798 | - | $Tuple2([StringEntry( | |
2714 | + | let lR = makeString_2C([hQ[aP], hQ[aQ], hQ[aR], hQ[aS], makeString([lP, toString(jv), toString(jw), toString(lQ)], "_")], ":") | |
2715 | + | $Tuple2([StringEntry(hL, lR)], lR) | |
2799 | 2716 | } | |
2800 | 2717 | } | |
2801 | 2718 | } | |
2802 | 2719 | ||
2803 | 2720 | ||
2804 | 2721 | ||
2805 | - | @Callable( | |
2806 | - | func setCustomName ( | |
2807 | - | let | |
2808 | - | if ((size( | |
2722 | + | @Callable(gv) | |
2723 | + | func setCustomName (bg,ks,bk) = { | |
2724 | + | let kK = kH(gv) | |
2725 | + | if ((size(gv.payments) != 1)) | |
2809 | 2726 | then throw("Exactly one payment required") | |
2810 | 2727 | else { | |
2811 | - | let | |
2812 | - | if (( | |
2728 | + | let kL = value(gv.payments[0]) | |
2729 | + | if ((kL.assetId != cn)) | |
2813 | 2730 | then throw("Allowed USDT payment only!") | |
2814 | - | else if (( | |
2815 | - | then throw(("Payment should be " + toString( | |
2816 | - | else if (contains( | |
2817 | - | then throw(("Name should not contain '__': " + | |
2818 | - | else if ((size( | |
2819 | - | then throw(("Name too long, maxLength=" + toString( | |
2731 | + | else if ((kL.amount != dM)) | |
2732 | + | then throw(("Payment should be " + toString(dM))) | |
2733 | + | else if (contains(ks, "__")) | |
2734 | + | then throw(("Name should not contain '__': " + ks)) | |
2735 | + | else if ((size(ks) > dN)) | |
2736 | + | then throw(("Name too long, maxLength=" + toString(dN))) | |
2820 | 2737 | else { | |
2821 | - | let c = toString( | |
2822 | - | let | |
2823 | - | let | |
2824 | - | if (("ACCOUNT" == | |
2738 | + | let c = toString(gv.originCaller) | |
2739 | + | let lS = { | |
2740 | + | let cm = bk | |
2741 | + | if (("ACCOUNT" == cm)) | |
2825 | 2742 | then { | |
2826 | - | let | |
2827 | - | let | |
2828 | - | if (isDefined( | |
2829 | - | then throw(("Name already registered: " + | |
2743 | + | let lT = ei(ks) | |
2744 | + | let lU = getString(lT) | |
2745 | + | if (isDefined(lU)) | |
2746 | + | then throw(("Name already registered: " + ks)) | |
2830 | 2747 | else { | |
2831 | - | let | |
2832 | - | let | |
2833 | - | let | |
2834 | - | then [DeleteEntry( | |
2748 | + | let lV = bs(c) | |
2749 | + | let lW = getString(lV) | |
2750 | + | let lX = if (isDefined(lW)) | |
2751 | + | then [DeleteEntry(ei(value(lW)))] | |
2835 | 2752 | else nil | |
2836 | - | ((( | |
2753 | + | (((lX :+ StringEntry(lV, ks)) :+ StringEntry(lT, c)) ++ jU(c, T)._1) | |
2837 | 2754 | } | |
2838 | 2755 | } | |
2839 | - | else if (("LAND" == | |
2756 | + | else if (("LAND" == cm)) | |
2840 | 2757 | then { | |
2841 | - | let | |
2842 | - | let | |
2843 | - | if (!(isDefined(getInteger( | |
2844 | - | then throw(( | |
2758 | + | let jg = value(assetInfo(fromBase58String(bg))) | |
2759 | + | let jh = bi(bg) | |
2760 | + | if (!(isDefined(getInteger(jh)))) | |
2761 | + | then throw((jg.name + " is not staked")) | |
2845 | 2762 | else { | |
2846 | - | let | |
2847 | - | if (( | |
2848 | - | then throw(( | |
2763 | + | let jj = valueOrErrorMessage(getString(bf(bg)), (("NFT " + jg.name) + " is orphaned")) | |
2764 | + | if ((jj != c)) | |
2765 | + | then throw((ap + " is not yours")) | |
2849 | 2766 | else { | |
2850 | - | let | |
2851 | - | let | |
2852 | - | if (isDefined( | |
2853 | - | then throw(("Name already registered: " + | |
2767 | + | let lT = eb(ks) | |
2768 | + | let lU = getString(lT) | |
2769 | + | if (isDefined(lU)) | |
2770 | + | then throw(("Name already registered: " + ks)) | |
2854 | 2771 | else { | |
2855 | - | let | |
2856 | - | let | |
2857 | - | let | |
2858 | - | then [DeleteEntry( | |
2772 | + | let lY = bh(bg) | |
2773 | + | let lW = getString(lY) | |
2774 | + | let lX = if (isDefined(lW)) | |
2775 | + | then [DeleteEntry(eb(value(lW)))] | |
2859 | 2776 | else nil | |
2860 | - | ((( | |
2777 | + | (((lX :+ StringEntry(lY, ks)) :+ StringEntry(lT, bg)) ++ jU(c, T)._1) | |
2861 | 2778 | } | |
2862 | 2779 | } | |
2863 | 2780 | } | |
2864 | 2781 | } | |
2865 | - | else if (("DUCK" == | |
2782 | + | else if (("DUCK" == cm)) | |
2866 | 2783 | then { | |
2867 | - | let | |
2868 | - | let | |
2869 | - | if (if (!(isDefined(getInteger( | |
2784 | + | let jg = value(assetInfo(fromBase58String(bg))) | |
2785 | + | let jh = bi(bg) | |
2786 | + | if (if (!(isDefined(getInteger(jh)))) | |
2870 | 2787 | then true | |
2871 | - | else !(isDefined(getString( | |
2872 | - | then throw(( | |
2788 | + | else !(isDefined(getString(by(c))))) | |
2789 | + | then throw((jg.name + " is not staked")) | |
2873 | 2790 | else { | |
2874 | - | let | |
2875 | - | if (( | |
2876 | - | then throw(( | |
2791 | + | let jj = valueOrErrorMessage(getString(bx(bg)), (("NFT " + jg.name) + " is orphaned")) | |
2792 | + | if ((jj != c)) | |
2793 | + | then throw((aq + " is not yours")) | |
2877 | 2794 | else { | |
2878 | - | let | |
2879 | - | let | |
2880 | - | if (isDefined( | |
2881 | - | then throw(("Name already registered: " + | |
2795 | + | let lT = eh(ks) | |
2796 | + | let lU = getString(lT) | |
2797 | + | if (isDefined(lU)) | |
2798 | + | then throw(("Name already registered: " + ks)) | |
2882 | 2799 | else { | |
2883 | - | let | |
2884 | - | let | |
2885 | - | let | |
2886 | - | then [DeleteEntry( | |
2800 | + | let lY = br(bg) | |
2801 | + | let lW = getString(lY) | |
2802 | + | let lX = if (isDefined(lW)) | |
2803 | + | then [DeleteEntry(eh(value(lW)))] | |
2887 | 2804 | else nil | |
2888 | - | ((( | |
2805 | + | (((lX :+ StringEntry(lY, ks)) :+ StringEntry(lT, bg)) ++ jT(bg, T)._1) | |
2889 | 2806 | } | |
2890 | 2807 | } | |
2891 | 2808 | } | |
2892 | 2809 | } | |
2893 | 2810 | else throw("Unknown entity type") | |
2894 | 2811 | } | |
2895 | - | $Tuple2((( | |
2812 | + | $Tuple2(((lS :+ ScriptTransfer(cR, kL.amount, cn)) ++ kK), 0) | |
2896 | 2813 | } | |
2897 | 2814 | } | |
2898 | 2815 | } | |
2899 | 2816 | ||
2900 | 2817 | ||
2901 | 2818 | ||
2902 | - | @Callable( | |
2903 | - | func setReferrals ( | |
2819 | + | @Callable(gv) | |
2820 | + | func setReferrals (lZ,ma) = if ((gv.callerPublicKey != cl)) | |
2904 | 2821 | then throw("Permission denied") | |
2905 | 2822 | else { | |
2906 | - | let | |
2907 | - | if ((size( | |
2823 | + | let kK = kH(gv) | |
2824 | + | if ((size(gv.payments) != 0)) | |
2908 | 2825 | then throw("No payments required") | |
2909 | - | else if (!(isDefined(addressFromString( | |
2910 | - | then throw(("Invalid address: " + | |
2826 | + | else if (!(isDefined(addressFromString(lZ)))) | |
2827 | + | then throw(("Invalid address: " + lZ)) | |
2911 | 2828 | else { | |
2912 | - | let | |
2913 | - | if (!(isDefined( | |
2914 | - | then throw(("Invalid address: " + | |
2829 | + | let mb = addressFromString(ma) | |
2830 | + | if (!(isDefined(mb))) | |
2831 | + | then throw(("Invalid address: " + ma)) | |
2915 | 2832 | else { | |
2916 | - | let | |
2917 | - | if (!(isDefined( | |
2833 | + | let mc = getString(dx(lZ)) | |
2834 | + | if (!(isDefined(mc))) | |
2918 | 2835 | then throw("oldPlayer didn't do any tx in game") | |
2919 | - | else if ((0 >= wavesBalance(value( | |
2836 | + | else if ((0 >= wavesBalance(value(mb)).available)) | |
2920 | 2837 | then throw("newPlayer has no WAVES") | |
2921 | 2838 | else { | |
2922 | - | let | |
2923 | - | let | |
2924 | - | let | |
2925 | - | then split_4C(value( | |
2839 | + | let md = ej() | |
2840 | + | let me = getString(md) | |
2841 | + | let mf = if (isDefined(me)) | |
2842 | + | then split_4C(value(me), "_") | |
2926 | 2843 | else nil | |
2927 | - | if (containsElement( | |
2928 | - | then throw(( | |
2844 | + | if (containsElement(mf, ma)) | |
2845 | + | then throw((ma + " is not newbie (already has referrals)")) | |
2929 | 2846 | else { | |
2930 | - | let | |
2931 | - | let | |
2932 | - | if (if (isDefined( | |
2933 | - | then isDefined(addressFromString(value( | |
2847 | + | let jW = bt(ma) | |
2848 | + | let jX = getString(jW) | |
2849 | + | if (if (isDefined(jX)) | |
2850 | + | then isDefined(addressFromString(value(jX))) | |
2934 | 2851 | else false) | |
2935 | - | then throw((( | |
2852 | + | then throw(((ma + " already has refBy: ") + value(jX))) | |
2936 | 2853 | else { | |
2937 | - | let | |
2938 | - | let | |
2939 | - | let | |
2940 | - | then split_4C(value( | |
2854 | + | let mg = bw(lZ) | |
2855 | + | let mh = getString(mg) | |
2856 | + | let mi = if (isDefined(mh)) | |
2857 | + | then split_4C(value(mh), "_") | |
2941 | 2858 | else nil | |
2942 | - | if (containsElement( | |
2943 | - | then throw(((( | |
2859 | + | if (containsElement(mi, ma)) | |
2860 | + | then throw((((lZ + " already contains ") + ma) + " within referrals")) | |
2944 | 2861 | else { | |
2945 | - | let | |
2946 | - | let | |
2947 | - | then value( | |
2948 | - | else makeString_2C(( | |
2949 | - | $Tuple2(([StringEntry( | |
2862 | + | let mj = makeString_2C((mi :+ ma), "_") | |
2863 | + | let mk = if (containsElement(mf, lZ)) | |
2864 | + | then value(me) | |
2865 | + | else makeString_2C((mf :+ lZ), "_") | |
2866 | + | $Tuple2(([StringEntry(jW, lZ), StringEntry(mg, mj), StringEntry(md, mk)] ++ kK), 0) | |
2950 | 2867 | } | |
2951 | 2868 | } | |
2952 | 2869 | } | |
2953 | 2870 | } | |
2954 | 2871 | } | |
2955 | 2872 | } | |
2956 | 2873 | } | |
2957 | 2874 | ||
2958 | 2875 | ||
2959 | 2876 | ||
2960 | - | @Callable( | |
2961 | - | func distributePoints ( | |
2962 | - | let | |
2963 | - | if ((size( | |
2877 | + | @Callable(gv) | |
2878 | + | func distributePoints (ml,mm,mn,mo,mp) = { | |
2879 | + | let kK = kH(gv) | |
2880 | + | if ((size(gv.payments) != 0)) | |
2964 | 2881 | then throw("No payments required") | |
2965 | 2882 | else { | |
2966 | - | let c = toString( | |
2967 | - | let | |
2968 | - | let | |
2969 | - | let | |
2883 | + | let c = toString(gv.originCaller) | |
2884 | + | let mq = dq(invoke(cT, "checkWlgXpREADONLY", [c], nil)) | |
2885 | + | let mr = do(mq[1]) | |
2886 | + | let ms = if ((0 >= mr)) | |
2970 | 2887 | then $Tuple2(0, nil) | |
2971 | 2888 | else { | |
2972 | - | let | |
2973 | - | if (( | |
2974 | - | then $Tuple2( | |
2889 | + | let jR = do(invoke(cT, "takeWlgXp", [c], nil)) | |
2890 | + | if ((jR == jR)) | |
2891 | + | then $Tuple2(mr, [IntegerEntry(B(c), do(mq[0])), IntegerEntry(A(c), do(mq[2]))]) | |
2975 | 2892 | else throw("Strict value is not equal to itself.") | |
2976 | 2893 | } | |
2977 | - | let | |
2978 | - | let | |
2979 | - | let | |
2980 | - | let | |
2981 | - | let | |
2982 | - | let | |
2983 | - | let | |
2984 | - | let | |
2985 | - | let | |
2986 | - | if (( | |
2987 | - | then throw((("There are only " + toString( | |
2894 | + | let mt = ms._1 | |
2895 | + | let mu = ms._2 | |
2896 | + | let u = valueOrErrorMessage(getString(by(c)), "You don't have a duck staked") | |
2897 | + | let mv = C(c) | |
2898 | + | let mw = (valueOrElse(getInteger(mv), 0) + mt) | |
2899 | + | let mx = y(u) | |
2900 | + | let my = valueOrElse(getInteger(mx), 0) | |
2901 | + | let mz = (mw + my) | |
2902 | + | let mA = ((((ml + mm) + mn) + mo) + mp) | |
2903 | + | if ((mA > mz)) | |
2904 | + | then throw((("There are only " + toString(mz)) + " free points to distribute")) | |
2988 | 2905 | else { | |
2989 | - | let | |
2990 | - | let | |
2991 | - | let | |
2992 | - | $Tuple2((([IntegerEntry( | |
2906 | + | let mB = v(u) | |
2907 | + | let al = split(valueOrElse(getString(mB), "0_0_0_0_0"), "_") | |
2908 | + | let mC = (mw - mA) | |
2909 | + | $Tuple2((([IntegerEntry(mv, if ((0 > mC)) | |
2993 | 2910 | then 0 | |
2994 | - | else | |
2995 | - | then ( | |
2996 | - | else | |
2911 | + | else mC), IntegerEntry(mx, if ((0 > mC)) | |
2912 | + | then (my + mC) | |
2913 | + | else my), StringEntry(mB, makeString([toString((parseIntValue(al[j]) + ml)), toString((parseIntValue(al[k]) + mm)), toString((parseIntValue(al[l]) + mn)), toString((parseIntValue(al[m]) + mo)), toString((parseIntValue(al[n]) + mp))], "_"))] ++ kK) ++ mu), 0) | |
2997 | 2914 | } | |
2998 | 2915 | } | |
2999 | 2916 | } | |
3000 | 2917 | ||
3001 | 2918 | ||
3002 | 2919 | ||
3003 | - | @Callable( | |
3004 | - | func splitByGlobalWeightsREADONLY ( | |
3005 | - | ||
3006 | - | ||
3007 | - | ||
3008 | - | @Callable( | |
3009 | - | func splitByGlobalAndLocalWeightsREADONLY ( | |
3010 | - | let | |
3011 | - | $Tuple2(nil, $Tuple2( | |
3012 | - | } | |
3013 | - | ||
3014 | - | ||
3015 | - | ||
3016 | - | @Callable( | |
3017 | - | func getBackpackREADONLY ( | |
3018 | - | ||
3019 | - | ||
3020 | - | ||
3021 | - | @Callable( | |
3022 | - | func getWarehouseREADONLY ( | |
3023 | - | let | |
3024 | - | let | |
3025 | - | let | |
3026 | - | $Tuple2(nil, makeString_2C( | |
3027 | - | } | |
3028 | - | ||
3029 | - | ||
3030 | - | ||
3031 | - | @Callable( | |
3032 | - | func saveLastTx () = if (!(containsElement([ | |
2920 | + | @Callable(gv) | |
2921 | + | func splitByGlobalWeightsREADONLY (ez) = $Tuple2(nil, eR(ez)) | |
2922 | + | ||
2923 | + | ||
2924 | + | ||
2925 | + | @Callable(gv) | |
2926 | + | func splitByGlobalAndLocalWeightsREADONLY (mD,mE,gy) = { | |
2927 | + | let gr = gx(gy) | |
2928 | + | $Tuple2(nil, $Tuple2(eR(mD), eC(mE, gr))) | |
2929 | + | } | |
2930 | + | ||
2931 | + | ||
2932 | + | ||
2933 | + | @Callable(gv) | |
2934 | + | func getBackpackREADONLY (u) = $Tuple2(nil, makeString(hw(bz(u)), ":")) | |
2935 | + | ||
2936 | + | ||
2937 | + | ||
2938 | + | @Callable(gv) | |
2939 | + | func getWarehouseREADONLY (bp) = { | |
2940 | + | let jg = value(assetInfo(fromBase58String(bp))) | |
2941 | + | let hM = (dt(split(jg.description, "_")[cX]) / cu) | |
2942 | + | let hN = valueOrElse(getInteger(bq(bp)), 0) | |
2943 | + | $Tuple2(nil, makeString_2C(hK(bo(bp), hM, hN), ":")) | |
2944 | + | } | |
2945 | + | ||
2946 | + | ||
2947 | + | ||
2948 | + | @Callable(gv) | |
2949 | + | func saveLastTx () = if (!(containsElement([cT, cR, cU, cV], gv.caller))) | |
3033 | 2950 | then throw("Access denied") | |
3034 | - | else $Tuple2( | |
3035 | - | ||
3036 | - | ||
3037 | - | ||
3038 | - | @Callable( | |
3039 | - | func updateDuckStats ( | |
2951 | + | else $Tuple2(kH(gv), 42) | |
2952 | + | ||
2953 | + | ||
2954 | + | ||
2955 | + | @Callable(gv) | |
2956 | + | func updateDuckStats (u,jR) = if ((gv.caller != cR)) | |
3040 | 2957 | then throw("Access denied") | |
3041 | - | else | |
3042 | - | ||
3043 | - | ||
3044 | - | ||
3045 | - | @Callable( | |
3046 | - | func updateAccStats (c, | |
2958 | + | else jT(u, jR) | |
2959 | + | ||
2960 | + | ||
2961 | + | ||
2962 | + | @Callable(gv) | |
2963 | + | func updateAccStats (c,jR) = if (!(containsElement([cT, cR, cV], gv.caller))) | |
3047 | 2964 | then throw("Access denied") | |
3048 | - | else | |
3049 | - | ||
3050 | - | ||
3051 | - | ||
3052 | - | @Callable( | |
3053 | - | func equipDuck ( | |
3054 | - | let | |
3055 | - | if ((size( | |
2965 | + | else jU(c, jR) | |
2966 | + | ||
2967 | + | ||
2968 | + | ||
2969 | + | @Callable(gv) | |
2970 | + | func equipDuck (mF) = { | |
2971 | + | let kK = kH(gv) | |
2972 | + | if ((size(gv.payments) != 0)) | |
3056 | 2973 | then throw("No payments required") | |
3057 | 2974 | else { | |
3058 | - | let c = toString( | |
3059 | - | let | |
3060 | - | if ( | |
2975 | + | let c = toString(gv.originCaller) | |
2976 | + | let u = valueOrErrorMessage(getString(by(c)), "You don't have a duck staked") | |
2977 | + | if (ke(u)) | |
3061 | 2978 | then throw("equipDuck_checkTournament") | |
3062 | 2979 | else { | |
3063 | - | let | |
3064 | - | let | |
3065 | - | let | |
3066 | - | let | |
3067 | - | let | |
3068 | - | if ((size( | |
2980 | + | let gh = z(u) | |
2981 | + | let mG = split(valueOrElse(getString(gh), ",;,_,;,_,;,_,;,_,;,_,;,"), "_") | |
2982 | + | let hx = bz(u) | |
2983 | + | let ib = hw(hx) | |
2984 | + | let le = split(mF, "_") | |
2985 | + | if ((size(le) != p)) | |
3069 | 2986 | then throw("Wrong equipment string") | |
3070 | 2987 | else { | |
3071 | - | let | |
3072 | - | let | |
3073 | - | let | |
2988 | + | let gk = fZ(mG, fo(ib[bb]), true, nil) | |
2989 | + | let gl = split(le[o], ";")[1] | |
2990 | + | let aj = if ((gl == "")) | |
3074 | 2991 | then 0 | |
3075 | 2992 | else { | |
3076 | - | let | |
3077 | - | if (( | |
2993 | + | let gm = split(gl, ",")[0] | |
2994 | + | if ((gm == "")) | |
3078 | 2995 | then 0 | |
3079 | 2996 | else { | |
3080 | - | let | |
3081 | - | let | |
3082 | - | let | |
3083 | - | if (if (if (if (if (( | |
2997 | + | let fD = split(gm, ":") | |
2998 | + | let cP = fD[0] | |
2999 | + | let gn = fD[1] | |
3000 | + | if (if (if (if (if ((cP == "06")) | |
3084 | 3001 | then true | |
3085 | - | else ( | |
3002 | + | else (cP == "07")) | |
3086 | 3003 | then true | |
3087 | - | else ( | |
3088 | - | then ( | |
3004 | + | else (cP == "08")) | |
3005 | + | then (gn != "") | |
3089 | 3006 | else false) | |
3090 | - | then (parseIntValue( | |
3007 | + | then (parseIntValue(gn) > 0) | |
3091 | 3008 | else false) | |
3092 | - | then parseIntValue(split( | |
3009 | + | then parseIntValue(split(aJ[parseIntValue(cP)], "_")[aL]) | |
3093 | 3010 | else 0 | |
3094 | 3011 | } | |
3095 | 3012 | } | |
3096 | - | let | |
3097 | - | let | |
3098 | - | let | |
3099 | - | $Tuple2(([StringEntry( | |
3013 | + | let fU = ah(this, u, aj, true) | |
3014 | + | let go = fZ(le, gk, false, fU) | |
3015 | + | let mH = ft(go) | |
3016 | + | $Tuple2(([StringEntry(gh, mF), StringEntry(hx, makeString_2C([ib[aY], ib[aZ], ib[ba], mH], ":")), StringEntry(F(u), makeString([toString(fU[7]), toString(fU[8]), toString(fU[9]), toString(fU[10]), toString(fU[11])], "_"))] ++ kK), 0) | |
3100 | 3017 | } | |
3101 | 3018 | } | |
3102 | 3019 | } | |
3103 | 3020 | } | |
3104 | 3021 | ||
3105 | 3022 | ||
3106 | 3023 | ||
3107 | - | @Callable(gK) | |
3108 | - | func fortificateLand (Q,mU) = { | |
3109 | - | let kW = kT(gK) | |
3110 | - | if ((size(gK.payments) != 0)) | |
3111 | - | then throw("No payments required") | |
3112 | - | else { | |
3113 | - | let c = toString(gK.originCaller) | |
3114 | - | let B = valueOrElse(getString(bM(c)), "") | |
3115 | - | let fH = ap(this, B, 0, false) | |
3116 | - | let mV = bE(Q) | |
3117 | - | let mW = split(valueOrElse(getString(mV), ":0_15:0_18:0"), "_") | |
3118 | - | let js = value(assetInfo(fromBase58String(Q))) | |
3119 | - | let hZ = (dG(split(js.description, "_")[dk]) / cH) | |
3120 | - | let ia = valueOrElse(getInteger(bD(Q)), 0) | |
3121 | - | let hY = bC(Q) | |
3122 | - | let id = hX(hY, hZ, ia) | |
3123 | - | let mX = split(id[bh], "_") | |
3124 | - | let mY = parseIntValue(mX[bj]) | |
3125 | - | let mZ = parseIntValue(mX[bk]) | |
3126 | - | let na = split(mU, "_") | |
3127 | - | let nb = gt(mW, fx(id[bg]), mY, mZ, true, nil) | |
3128 | - | let gz = nb._1 | |
3129 | - | let nc = nb._2 | |
3130 | - | let nd = nb._3 | |
3131 | - | let ne = gt(na, gz, nc, nd, false, fH) | |
3132 | - | let gD = ne._1 | |
3133 | - | let nf = ne._2 | |
3134 | - | let ng = ne._3 | |
3135 | - | let mT = fC(gD) | |
3136 | - | let jY = makeString([mX[bi], toString(nf), toString(ng), mX[bl]], "_") | |
3137 | - | $Tuple2(([StringEntry(mV, mU), StringEntry(hY, makeString_2C([id[bd], id[be], id[bf], mT, jY], ":"))] ++ kW), 0) | |
3138 | - | } | |
3139 | - | } | |
3140 | - | ||
3141 | - | ||
3142 | - | ||
3143 | - | @Callable(gK) | |
3144 | - | func initDuckTourAttempt (B) = if ((gK.caller != dh)) | |
3024 | + | @Callable(gv) | |
3025 | + | func initDuckTourAttempt (u) = if ((gv.caller != cU)) | |
3145 | 3026 | then throw("Access denied") | |
3146 | 3027 | else { | |
3147 | - | let | |
3148 | - | let | |
3149 | - | let | |
3150 | - | let | |
3151 | - | let | |
3152 | - | let | |
3153 | - | let | |
3154 | - | $Tuple2([IntegerEntry( | |
3028 | + | let iP = t(u) | |
3029 | + | let iQ = ab(valueOrElse(getInteger(x(u)), 0)) | |
3030 | + | let kY = valueOrElse(getInteger(iP), iQ) | |
3031 | + | let mI = bA(u) | |
3032 | + | let je = valueOrElse(getString(mI), ax) | |
3033 | + | let bU = valueOrElse(getInteger(cU, bF), 0) | |
3034 | + | let mJ = (toString(bU) + "_T_0") | |
3035 | + | $Tuple2([IntegerEntry(D(u), kY), IntegerEntry(iP, iQ), StringEntry(E(u), je), StringEntry(mI, mJ)], mJ) | |
3155 | 3036 | } | |
3156 | 3037 | ||
3157 | 3038 | ||
3158 | 3039 | ||
3159 | - | @Callable( | |
3040 | + | @Callable(gv) | |
3160 | 3041 | func breakAttempt () = { | |
3161 | - | let | |
3162 | - | let | |
3163 | - | let | |
3164 | - | let | |
3165 | - | if ((split( | |
3042 | + | let kK = kH(gv) | |
3043 | + | let u = valueOrErrorMessage(getString(by(toString(gv.caller))), "You don't have a duck staked") | |
3044 | + | let mI = bA(u) | |
3045 | + | let je = valueOrElse(getString(mI), ax) | |
3046 | + | if ((split(je, "_")[bd] != "T")) | |
3166 | 3047 | then throw("Your duck is not in the tournament") | |
3167 | 3048 | else { | |
3168 | - | let | |
3169 | - | let | |
3170 | - | $Tuple2((( | |
3171 | - | } | |
3172 | - | } | |
3173 | - | ||
3174 | - | ||
3175 | - | ||
3176 | - | @Callable( | |
3177 | - | func breakAttemptCallback () = if (( | |
3049 | + | let mK = getIntegerValue(D(u)) | |
3050 | + | let mL = getStringValue(E(u)) | |
3051 | + | $Tuple2(((kK :+ IntegerEntry(t(u), mK)) :+ StringEntry(mI, mL)), je) | |
3052 | + | } | |
3053 | + | } | |
3054 | + | ||
3055 | + | ||
3056 | + | ||
3057 | + | @Callable(gv) | |
3058 | + | func breakAttemptCallback () = if ((gv.caller != cU)) | |
3178 | 3059 | then throw("Access denied") | |
3179 | 3060 | else { | |
3180 | - | let | |
3181 | - | $Tuple2([IntegerEntry( | |
3061 | + | let u = valueOrErrorMessage(getString(by(toString(gv.originCaller))), "You don't have a duck staked") | |
3062 | + | $Tuple2([IntegerEntry(t(u), getIntegerValue(D(u))), StringEntry(bA(u), getStringValue(E(u)))], "breakAttemptCallback") | |
3182 | 3063 | } | |
3183 | 3064 | ||
3184 | 3065 | ||
3185 | 3066 | ||
3186 | - | @Callable( | |
3187 | - | func exitTournamentInternal ( | |
3067 | + | @Callable(gv) | |
3068 | + | func exitTournamentInternal (u) = if ((gv.caller != this)) | |
3188 | 3069 | then throw("Access denied") | |
3189 | 3070 | else { | |
3190 | - | let | |
3191 | - | let | |
3192 | - | $Tuple2([IntegerEntry( | |
3071 | + | let mK = getIntegerValue(D(u)) | |
3072 | + | let mL = getStringValue(E(u)) | |
3073 | + | $Tuple2([IntegerEntry(t(u), mK), StringEntry(bA(u), mL)], false) | |
3193 | 3074 | } | |
3194 | 3075 | ||
3195 | 3076 | ||
3196 | 3077 | ||
3197 | - | @Callable( | |
3198 | - | func processDelivery ( | |
3078 | + | @Callable(gv) | |
3079 | + | func processDelivery (u) = if ((gv.caller != this)) | |
3199 | 3080 | then throw("Access denied") | |
3200 | 3081 | else { | |
3201 | - | let c = toString( | |
3202 | - | let | |
3203 | - | if (( | |
3204 | - | then throw(("Delivery is not available, fund=" + | |
3082 | + | let c = toString(gv.originCaller) | |
3083 | + | let mM = valueOrElse(getInteger(cR, bE), 0) | |
3084 | + | if ((aA > mM)) | |
3085 | + | then throw(("Delivery is not available, fund=" + dy(mM, 6))) | |
3205 | 3086 | else { | |
3206 | - | let | |
3207 | - | let | |
3208 | - | let | |
3209 | - | let | |
3210 | - | let | |
3211 | - | then valueOrElse(getInteger( | |
3087 | + | let bW = lastBlock.timestamp | |
3088 | + | let mN = L(c) | |
3089 | + | let mO = valueOrElse(getInteger(M(c)), 0) | |
3090 | + | let mP = (bW / a) | |
3091 | + | let fJ = if ((mO == mP)) | |
3092 | + | then valueOrElse(getInteger(mN), 0) | |
3212 | 3093 | else 0 | |
3213 | - | let | |
3214 | - | let | |
3215 | - | if (( | |
3216 | - | then throw((("You already used " + toString( | |
3094 | + | let mQ = valueOrElse(getInteger(cV, d(c)), 0) | |
3095 | + | let mR = (aE + (mQ / aF)) | |
3096 | + | if ((fJ >= mR)) | |
3097 | + | then throw((("You already used " + toString(mR)) + " delivery attempts for today")) | |
3217 | 3098 | else { | |
3218 | - | let | |
3219 | - | let | |
3220 | - | $Tuple2([IntegerEntry( | |
3099 | + | let mS = K(u) | |
3100 | + | let mT = invoke(cR, "sendDeliveryReward", [c], nil) | |
3101 | + | $Tuple2([IntegerEntry(mN, (fJ + 1)), IntegerEntry(M(c), mP), IntegerEntry(mS, (valueOrElse(getInteger(mS), 0) + 1))], mT) | |
3221 | 3102 | } | |
3222 | 3103 | } | |
3223 | 3104 | } | |
3224 | 3105 | ||
3225 | 3106 | ||
3226 | 3107 | ||
3227 | - | @Callable( | |
3228 | - | func | |
3229 | - | let | |
3230 | - | if (! | |
3231 | - | then throw(" | |
3232 | - | else | |
3233 | - | | |
3234 | - | | |
3235 | - | | |
3236 | - | | |
3237 | - | | |
3238 | - | ||
3239 | - | ||
3240 | - | then throw("WLGOLD | |
3108 | + | @Callable(gv) | |
3109 | + | func robLand (iE,iF) = { | |
3110 | + | let kK = kH(gv) | |
3111 | + | if ((size(gv.payments) != 1)) | |
3112 | + | then throw("exactly 1 payment must be attached") | |
3113 | + | else { | |
3114 | + | let kL = gv.payments[0] | |
3115 | + | let mU = kL.amount | |
3116 | + | if (if (!(isDefined(kL.assetId))) | |
3117 | + | then true | |
3118 | + | else (value(kL.assetId) != db)) | |
3119 | + | then throw("WLGOLD payments only!") | |
3120 | + | else if ((mU != aB)) | |
3121 | + | then throw((("Payment should be " + dy(aB, 8)) + " WLGOLD")) | |
3241 | 3122 | else { | |
3242 | - | let | |
3243 | - | if (( | |
3244 | - | then throw(" | |
3123 | + | let c = toString(gv.caller) | |
3124 | + | if (!(sigVerify_8Kb(iE, iF, cl))) | |
3125 | + | then throw("signature does not match") | |
3245 | 3126 | else { | |
3246 | - | let iZ = if ((size(fp) >= 2)) | |
3247 | - | then fp[2] | |
3248 | - | else "" | |
3249 | - | let bQ = toString(gK.caller) | |
3250 | - | let ja = valueOrElse(getString(dK(bQ)), "") | |
3251 | - | if ((ja != iZ)) | |
3252 | - | then throw(((("Tx ids don't match! In state: " + ja) + ", in msg: ") + iZ)) | |
3127 | + | let fg = split_4C(toUtf8String(iE), ";") | |
3128 | + | let mV = split_4C(fg[0], "|") | |
3129 | + | let iH = split(mV[es], "_") | |
3130 | + | let iI = parseIntValue(iH[0]) | |
3131 | + | let iJ = parseIntValue(iH[1]) | |
3132 | + | let iT = mV[et] | |
3133 | + | let mW = split(fg[1], "|") | |
3134 | + | let mX = mW[eu] | |
3135 | + | if ((mX != "B")) | |
3136 | + | then throw("Only bank robbery is supported") | |
3253 | 3137 | else { | |
3254 | - | let B = fp[0] | |
3255 | - | if (kq(B)) | |
3256 | - | then throw("prepareRobbery_checkTournament") | |
3138 | + | let iM = parseIntValue(mW[ew]) | |
3139 | + | if (if ((iM > (lastBlock.timestamp + dL))) | |
3140 | + | then true | |
3141 | + | else ((lastBlock.timestamp - dL) > iM)) | |
3142 | + | then throw(((("signature outdated: logTime=" + toString(iM)) + ", bcTime=") + toString(lastBlock.timestamp))) | |
3257 | 3143 | else { | |
3258 | - | let aB = ax(this, B)._1 | |
3259 | - | if ((aB > nt)) | |
3260 | - | then throw(((("Payment " + toString(nt)) + " < required ") + toString(aB))) | |
3144 | + | let iN = mW[ev] | |
3145 | + | let iO = valueOrElse(getString(dx(c)), "") | |
3146 | + | if ((iO != iN)) | |
3147 | + | then throw(((("Tx ids don't match! In state: " + iO) + ", in msg: ") + iN)) | |
3261 | 3148 | else { | |
3262 | - | let nu = split(fp[1], "_") | |
3263 | - | let aA = lastBlock.timestamp | |
3264 | - | let aC = valueOrElse(getInteger(S(B)), 0) | |
3265 | - | let aD = valueOrElse(getString(T(B)), "") | |
3266 | - | let aE = valueOrElse(getInteger(R(aD)), 0) | |
3267 | - | if (if ((aC != y)) | |
3268 | - | then (aE > aA) | |
3269 | - | else false) | |
3270 | - | then throw(("You already started robbing, wait till " + toString(aE))) | |
3149 | + | let u = valueOrErrorMessage(getString(by(c)), "You don't have a duck staked") | |
3150 | + | let gh = z(u) | |
3151 | + | let lc = valueOrElse(getString(gh), ",;,_,;,_,;,_,;,_,;,_,;,") | |
3152 | + | let mY = fb(lc, iT) | |
3153 | + | let le = mY._1 | |
3154 | + | let lf = mY._2 | |
3155 | + | let mZ = mY._3 | |
3156 | + | let je = valueOrElse(getString(bA(u)), ax) | |
3157 | + | if (bS(cU, je)) | |
3158 | + | then throw("Your duck is taking part in the tournament") | |
3271 | 3159 | else { | |
3272 | - | func nv (eR,Q) = { | |
3273 | - | let nw = valueOrElse(getInteger(P(Q)), 0) | |
3274 | - | let nx = valueOrElse(getInteger(R(Q)), 0) | |
3275 | - | if ((nw > size(v))) | |
3276 | - | then throw("Invalid state") | |
3277 | - | else if ((aA > nx)) | |
3160 | + | let bW = lastBlock.timestamp | |
3161 | + | let mN = I(c) | |
3162 | + | let mO = valueOrElse(getInteger(J(c)), 0) | |
3163 | + | let mP = (bW / a) | |
3164 | + | let fJ = if ((mO == mP)) | |
3165 | + | then valueOrElse(getInteger(mN), 0) | |
3166 | + | else 0 | |
3167 | + | let mQ = valueOrElse(getInteger(cV, d(c)), 0) | |
3168 | + | let na = (aC + (mQ / aD)) | |
3169 | + | if ((fJ >= na)) | |
3170 | + | then throw((("You already used " + toString(na)) + " robbery attempts for today")) | |
3171 | + | else { | |
3172 | + | let mS = H(u) | |
3173 | + | let nb = if ((iJ > 0)) | |
3278 | 3174 | then { | |
3279 | - | let ny = valueOrElse(getInteger(bw(Q)), 0) | |
3280 | - | if ((0 >= ny)) | |
3281 | - | then eR | |
3282 | - | else { | |
3283 | - | let gr = value(assetInfo(fromBase58String(Q))) | |
3284 | - | let jw = split(gr.description, "_") | |
3285 | - | let ji = dG(jw[dk]) | |
3286 | - | let nz = jh(Q, ji) | |
3287 | - | let gQ = (aA - ny) | |
3288 | - | let jz = fraction(gQ, (nz * ji), a) | |
3289 | - | if ((w > jz)) | |
3290 | - | then eR | |
3291 | - | else (eR :+ Q) | |
3292 | - | } | |
3175 | + | let mM = assetBalance(this, db) | |
3176 | + | let nc = if (mZ) | |
3177 | + | then (2 * aB) | |
3178 | + | else (5 * aB) | |
3179 | + | if ((nc > mM)) | |
3180 | + | then throw(((("Robbery is not available, funds = " + dy(mM, 8)) + " WLGOLD, required = ") + dy(nc, 8))) | |
3181 | + | else [ScriptTransfer(gv.caller, nc, db)] | |
3293 | 3182 | } | |
3294 | - | else eR | |
3295 | - | } | |
3296 | - | ||
3297 | - | let nA = { | |
3298 | - | let eT = nu | |
3299 | - | let eU = size(eT) | |
3300 | - | let eV = nil | |
3301 | - | func eW (eX,eY) = if ((eY >= eU)) | |
3302 | - | then eX | |
3303 | - | else nv(eX, eT[eY]) | |
3304 | - | ||
3305 | - | func eZ (eX,eY) = if ((eY >= eU)) | |
3306 | - | then eX | |
3307 | - | else throw("List size exceeds 10") | |
3308 | - | ||
3309 | - | eZ(eW(eW(eW(eW(eW(eW(eW(eW(eW(eW(eV, 0), 1), 2), 3), 4), 5), 6), 7), 8), 9), 10) | |
3310 | - | } | |
3311 | - | if ((size(nA) == 0)) | |
3312 | - | then throw("No candidates for robbery") | |
3313 | - | else { | |
3314 | - | let nB = dR(size(nA), iQ, iR) | |
3315 | - | let Q = nA[nB] | |
3316 | - | $Tuple2(([IntegerEntry(P(Q), x), IntegerEntry(R(Q), (aA + v[x])), IntegerEntry(S(B), z), StringEntry(T(B), Q)] ++ kW), Q) | |
3183 | + | else nil | |
3184 | + | $Tuple2((((((((((kK ++ nb) ++ (if (lf) | |
3185 | + | then [StringEntry(F(u), "0_0_0_0_0")] | |
3186 | + | else nil)) ++ jT(u, if ((iJ > 0)) | |
3187 | + | then Q | |
3188 | + | else R)._1) :+ IntegerEntry(G(u), bW)) :+ IntegerEntry(mN, (fJ + 1))) :+ IntegerEntry(J(c), mP)) :+ IntegerEntry(mS, (valueOrElse(getInteger(mS), 0) + 1))) :+ StringEntry(gh, le)) :+ IntegerEntry(t(u), max([iJ, 0]))), 0) | |
3317 | 3189 | } | |
3318 | 3190 | } | |
3319 | 3191 | } | |
3320 | 3192 | } | |
3321 | 3193 | } | |
3322 | 3194 | } | |
3323 | 3195 | } | |
3324 | - | } | |
3325 | - | } | |
3326 | - | ||
3327 | - | ||
3328 | - | ||
3329 | - | @Callable(gK) | |
3330 | - | func robLand (iQ,iR) = { | |
3331 | - | let kW = kT(gK) | |
3332 | - | if (!(sigVerify_8Kb(iQ, iR, cy))) | |
3333 | - | then throw("signature does not match") | |
3334 | - | else { | |
3335 | - | let bQ = toString(gK.caller) | |
3336 | - | let B = valueOrErrorMessage(getString(bM(bQ)), "You don't have a duck staked") | |
3337 | - | let aA = lastBlock.timestamp | |
3338 | - | $Tuple2((kW :+ IntegerEntry(N(B), aA)), 0) | |
3339 | - | } | |
3340 | - | } | |
3341 | - | ||
3342 | - | ||
3343 | - | ||
3344 | - | @Callable(gK) | |
3345 | - | func buyRoboDuck () = if (!(cv)) | |
3196 | + | } | |
3197 | + | } | |
3198 | + | ||
3199 | + | ||
3200 | + | ||
3201 | + | @Callable(gv) | |
3202 | + | func buyRoboDuck () = if (!(ci)) | |
3346 | 3203 | then throw("Feature is turned off") | |
3347 | 3204 | else { | |
3348 | - | let | |
3349 | - | if ((size( | |
3205 | + | let kK = kH(gv) | |
3206 | + | if ((size(gv.payments) != 1)) | |
3350 | 3207 | then throw("Exactly one payment required") | |
3351 | 3208 | else { | |
3352 | - | let | |
3353 | - | if (( | |
3209 | + | let kL = value(gv.payments[0]) | |
3210 | + | if ((kL.assetId != cn)) | |
3354 | 3211 | then throw("Allowed USDT payment only!") | |
3355 | - | else if (( | |
3356 | - | then throw((("Payment attached should be " + | |
3212 | + | else if ((kL.amount != dR)) | |
3213 | + | then throw((("Payment attached should be " + dy(dR, 6)) + " USDT")) | |
3357 | 3214 | else { | |
3358 | - | let | |
3359 | - | let | |
3360 | - | let | |
3361 | - | let | |
3362 | - | let | |
3363 | - | let | |
3364 | - | $Tuple2((((( | |
3215 | + | let nd = valueOrElse(getInteger(ek()), 0) | |
3216 | + | let ne = toBytes(nd) | |
3217 | + | let ec = ((ar + "-") + takeRight(toBase16String(ne), 8)) | |
3218 | + | let nf = takeRight(toBase16String(sha256_16Kb(ne)), 6) | |
3219 | + | let iB = Issue(ec, ("Robo Duck NFT for WavesLands game, background color = #" + nf), 1, 0, false) | |
3220 | + | let bg = calculateAssetId(iB) | |
3221 | + | $Tuple2(((((kK :+ IntegerEntry(ek(), (nd + 1))) :+ iB) :+ ScriptTransfer(gv.originCaller, 1, bg)) :+ ScriptTransfer(cR, kL.amount, cn)), $Tuple2(toBase58String(bg), nf)) | |
3365 | 3222 | } | |
3366 | 3223 | } | |
3367 | 3224 | } | |
3368 | 3225 | ||
3369 | 3226 |
github/deemru/w8io/169f3d6 1351.17 ms ◑![]()